spikijs 1.1.5 → 1.1.7

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/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "spikijs",
3
3
  "license": "MIT",
4
- "version": "1.1.5",
4
+ "version": "1.1.7",
5
5
  "type": "module",
6
6
  "repository": {
7
7
  "type": "git",
package/spiki.esm.js CHANGED
@@ -45,7 +45,10 @@ var spiki = (() => {
45
45
  var ctx = scope;
46
46
 
47
47
  for (var i = 0; i < parts.length; i++) {
48
- if (val == null) return { val: undefined, ctx: null };
48
+ if (val == null) {
49
+ console.warn('Property undefined: ' + path);
50
+ return { val: undefined, ctx: null };
51
+ }
49
52
  ctx = val;
50
53
  val = val[parts[i]];
51
54
  }
@@ -133,6 +136,15 @@ var spiki = (() => {
133
136
  if (key === '_y') return true;
134
137
  if (key === '_d') return target._d;
135
138
  if (Array.isArray(target) && arrInst.hasOwnProperty(key)) return arrInst[key];
139
+
140
+ var desc = Object.getOwnPropertyDescriptor(target, key);
141
+ if (desc && desc.get) {
142
+ var cacheKey = '_' + key;
143
+ if (!(cacheKey in target)) {
144
+ effect(() => receiver[cacheKey] = desc.get.call(receiver));
145
+ }
146
+ return receiver[cacheKey];
147
+ }
136
148
 
137
149
  track(target, key);
138
150
  var res = Reflect.get(target, key, receiver);
@@ -240,11 +252,7 @@ var spiki = (() => {
240
252
  }
241
253
  }
242
254
  },
243
- effect: () => {},
244
- init: () => {},
245
- destroy: () => {},
246
- model: () => {},
247
- ref: () => {}
255
+ effect: () => {}
248
256
  };
249
257
 
250
258
  var mount = (rootElement, parentScope) => {
@@ -275,6 +283,7 @@ var spiki = (() => {
275
283
  var handler = handlers[i];
276
284
  if (handler.model) {
277
285
  var val = target.type === 'checkbox' ? target.checked : target.value;
286
+ if (isFinite(val)) val = Number(val);
278
287
  var result = evalPath(target._s, handler.path);
279
288
  if (result.ctx) {
280
289
  result.ctx[result.ctx === target._s ? handler.path : handler.path.split('.').pop()] = val;
@@ -436,8 +445,6 @@ var spiki = (() => {
436
445
  bindings.push({ type: 'attr', name: realName, path: neg ? attrValue.slice(1) : attrValue, neg: neg });
437
446
  } else if (attrName.indexOf('s-') === 0) {
438
447
  var type = attrName.slice(2);
439
- if (type === 'data') continue;
440
-
441
448
  if (type === 'init' || type === 'destroy') {
442
449
  ((type, path) => {
443
450
  var result = evalPath(scope, path);
@@ -484,8 +491,6 @@ var spiki = (() => {
484
491
  if (binding.neg) val = !val;
485
492
  if (binding.name === 'class') {
486
493
  domOps.class(el, val);
487
- } else if (binding.name === 'hidden' && binding.neg) {
488
- domOps.attr(el, val, 'hidden');
489
494
  } else {
490
495
  domOps.attr(el, val, binding.name);
491
496
  }
@@ -524,8 +529,8 @@ var spiki = (() => {
524
529
  for(var i=0; i<els.length; i++) mount(els[i]);
525
530
  },
526
531
  store: (k, v) => v === undefined ? globalStore[k] : (globalStore[k] = v),
527
- raw: (o) => (o && o._r) || o
532
+ raw: (o) => (o && o._p) || o
528
533
  };
529
534
  })();
530
535
 
531
- export default spiki;
536
+ export default spiki;
package/spiki.esm.min.js CHANGED
@@ -1 +1 @@
1
- var spiki=(()=>{var S=Object,T=Array,v=Reflect,e=Promise,a=Node,$=document,O="length",q="value",C="push",j="forEach",K="indexOf",M="split",B="slice",D="call",F="prototype",f="hasOwnProperty",p="getPrototypeOf",t="defineProperty",H="create",R="isArray",W="getAttribute",z="removeAttribute",G="hasAttribute",i="classList",I="tagName",J="type",Q="name",s="checked",U="parentNode",V="nextSibling",n="innerHTML",X="replaceWith",Y="insertBefore",Z="cloneNode",ee="remove",re="createTextNode",te="checkbox",ae="function",ne="object",oe="unshift",le="cleanups",se="nodes",o="deps",ie="destroy",ve="init",l=S[H](null),u=[],d=!1,c=null,h=!1,r=e.resolve(),fe=e=>{e._q||(e._q=!0,u[C](e),d||(d=!0,r.then(()=>{var e=u[B]();d=!(u=[]);for(var r=0;r<e[O];r++)e[r]._q=!1,e[r]()})))},pe=(e,r)=>{if(-1===r[K]("."))return{val:e[r],ctx:e};for(var t=r[M]("."),a=e,n=e,o=0;o<t[O];o++){if(null==a)return{val:void 0,ctx:null};a=(n=a)[t[o]]}return{val:a,ctx:n}},_={};[C,"pop","shift",oe,"splice","sort","reverse"][j](e=>{_[e]=function(){h=!0;try{return T[F][e].apply(this,arguments)}finally{h=!1,y(this,O)}}});var ue=(e,r)=>{!c||-1===(r=(e=e._d||(S[t](e,"_d",{value:S[H](null),writable:!0}),e._d))[r]||(e[r]=[]))[K](c)&&(r[C](c),c[o][C](r))},y=(e,r)=>{if(!h&&e._d&&e._d[r])for(var t=e._d[r][B](),a=0;a<t[O];a++){var n=t[a];n.sched?n.sched(n):n()}},m=e=>{for(var r=0;r<e[o][O];r++){var t=e[o][r],a=t[K](e);-1!==a&&(t[a]=t[t[O]-1],t.pop())}e[o]=[]},de=(r,e)=>{var t=()=>{m(t);var e=c;c=t;try{r()}finally{c=e}};return t[o]=[],t.sched=e,t(),()=>m(t)},ce=e=>{if(!e||typeof e!=ne||e._y||e instanceof a)return e;if(e._p)return e._p;var r=new Proxy(e,{get:(e,r,t)=>"_y"===r||("_d"===r?e._d:T[R](e)&&_[f](r)?_[r]:(ue(e,r),!(t=v.get(e,r,t))||typeof t!=ne||t instanceof a?t:ce(t))),set:(e,r,t,a)=>{var n=e[r],o=T[R](e),l=o?Number(r)<e[O]:S[F][f][D](e,r);if(!o&&!l)for(var s=S[p](e);s&&s!==S[F];){if(S[F][f][D](s,r)){var i=v.set(s,r,t);return h||t===n||y(e,r),i}s=S[p](s)}return i=v.set(e,r,t,a),!h&&i&&(l&&t===n||(y(e,r),o?y(e,O):l||y(e,"_k"))),i},deleteProperty:(e,r)=>{var t=S[F][f][D](e,r),a=v.deleteProperty(e,r);return a&&t&&(y(e,r),T[R](e)?y(e,O):y(e,"_k")),a},ownKeys:e=>(ue(e,"_k"),v.ownKeys(e))});return S[t](e,"_p",{value:r,enumerable:!1}),r},g=ce({}),he={text:(e,r)=>{e.textContent=null==r?"":r},html:(e,r)=>{e[n]!=r&&(e[n]=null==r?"":r)},value:(e,r)=>{e[J]===te?e[s]=!!r:"radio"===e[J]?e[s]=e[q]==r:e[q]!=r&&(e[q]=null==r?"":r)},attr:(e,r,t)=>{null==r||!1===r?e[z](t):e.setAttribute(t,!0===r?"":r)},class:(e,r)=>{if("string"==typeof r)for(var t=r.match(/\S+/g)||[],a=0;a<t[O];a++){var n=t[a];"!"===n[0]?e[i][ee](n[B](1)):e[i].add(n)}else if(r)for(var o in r){var l=!!r[o];if(-1!==o[K](" "))for(var t=o[M](/\s+/),s=0;s<t[O];s++)t[s]&&e[i].toggle(t[s],l);else e[i].toggle(o,l)}},effect:()=>{},init:()=>{},destroy:()=>{},model:()=>{},ref:()=>{}},_e=(w,e)=>{if(!w._m){var r=w[W]("s-data");if(l[r]){w._m=!0,r=l[r](),e&&S.setPrototypeOf(r,e);var E=ce(r);E.$refs={},E.$root=w,E.$store=g,E.$parent=e;var t=[],a=S[H](null),n=e=>{for(var r=e.target;r&&r!==w[U];){var t=r._h&&r._h[e[J]];if(t)for(var a=0;a<t[O];a++){var n,o,l=t[a];l.model?(n=r[J]===te?r[s]:r[q],(o=pe(r._s,l.path)).ctx&&(o.ctx[o.ctx===r._s?l.path:l.path[M](".").pop()]=n)):typeof(o=pe(r._s,l.path)).val==ae&&o.val[D](o.ctx,e)}r=r[U]}},N=e=>{a[e]||(a[e]=!0,w.addEventListener(e,n))},L=(_,y,t)=>{if(1===_.nodeType&&!_[G]("s-ignore"))if(_!==w&&_[G]("s-data"))(r=_e(_,y))&&t[C](r.unmount);else{var e=_[W]("s-if"),r=!e&&"TEMPLATE"===_[I]&&_[W]("s-for"),a=[];if(e){var m=$[re](""),n=null,o=[];_[X](m);var l="!"===e[0],s=l?e[B](1):e;return t[C](()=>{o[j](e=>e())}),t[C](de(()=>{var e=pe(y,s).val;l&&(e=!e),e?n||((n=_[Z](!0))[z]("s-if"),L(n,y,o),m[U][Y](n,m)):n&&(o[j](e=>e()),o=[],n[ee](),n=null)},fe))}if(r&&(e=r.match(/^\s*(.*?)\s+in\s+(.+)\s*$/))){var g,x=(r=e[1][M](",").map(e=>e.trim().replace(/[()]/g,"")))[0],b=r[1],A=e[2].trim(),P=_[W]("s-key"),m=$[re](""),k=S[H](null);return _[X](m),t[C](()=>{for(var e in k)k[e][le][j](e=>e())}),t[C](de(()=>{var e=pe(y,A).val||[];T[R](e)&&ue(e,O);var r=$.createDocumentFragment(),t=m;g=S[H](null);for(var a=T[R](e),n=a?e:S.keys(e),o=(a?e:n)[O],l=0;l<o;l++){var s=a?l:n[l],i=a?e[l]:e[s],v=null==i||typeof i!=ne?String(i):P?pe(i,P).val:String(s)+"_o";g[v]&&(v+="_"+l);var f=k[v];if(f)f.scope[x]=i,b&&(f.scope[b]=s);else{var p=_.content[Z](!0),u=ce(S[H](y));u[x]=i,b&&(u[b]=s);for(var d=T[F][B][D](p.childNodes),c=[],h=0;h<d[O];h++)L(d[h],u,c);f={nodes:d,scope:u,cleanups:c},k[v]=f}if(f[se][0]!==t[V]){for(h=0;h<f[se][O];h++)r.appendChild(f[se][h]);t[U][Y](r,t[V])}t=f[se][f[se][O]-1],g[v]=!0}for(s in k)if(!g[s]){for(k[s][le][j](e=>e()),h=0;h<k[s][se][O];h++)k[s][se][h][ee]();delete k[s]}},fe))}if(_.hasAttributes())for(var i=_.attributes,v=0;v<i[O];v++){var f,p,u=i[v][Q],d=i[v][q];":"===u[0]?(f=u[B](1),p="!"===d[0],a[C]({type:"attr",name:f,path:p?d[B](1):d,neg:p})):0!==u[K]("s-")||"data"!==(p=u[B](2))&&(p===ve||p===ie?(e=>{var r=pe(y,d);typeof r.val==ae&&(e===ve?fe(()=>r.val[D](r.ctx,_)):t[C](()=>r.val[D](r.ctx,_)))})(p):"model"===p?(a[C]({type:q,path:d}),_._s=y,_._h=_._h||{},u=_[J]===te||"radio"===_[J]||"SELECT"===_[I]?"change":"input",(_._h[u]=_._h[u]||[])[oe]({model:!0,path:d}),N(u)):"ref"===p?E.$refs[d]=_:he[p]?a[C]({type:p,path:d}):(_._s=y,_._h=_._h||{},(_._h[p]=_._h[p]||[])[C]({path:d}),N(p)))}a[O]&&t[C](de(()=>{for(var e=0;e<a[O];e++){var r=a[e],t=(t=pe(y,r.path)).val&&typeof t.val==ae?t.val[D](t.ctx,_):t.val;"attr"===r[J]?(r.neg&&(t=!t),"class"===r[Q]?he.class(_,t):"hidden"===r[Q]&&r.neg?he.attr(_,t,"hidden"):he.attr(_,t,r[Q])):he[r[J]](_,t)}},fe));for(var c=_.firstChild;c;){var h=c[V];L(c,y,t),c=h}}};return L(w,E,t),E[ve]&&E[ve](),{unmount:()=>{for(var e in E[ie]&&E[ie][D](E),t[j](e=>e()),a)w.removeEventListener(e,n);w._m=!1}}}}};return{data:(e,r)=>{l[e]=r},start:()=>{for(var e=$.querySelectorAll("[s-data]"),r=0;r<e[O];r++)_e(e[r])},store:(e,r)=>void 0===r?g[e]:g[e]=r,raw:e=>e&&e._r||e}})();export default spiki;
1
+ var spiki=(()=>{var O=Object,S=Array,v=Reflect,r=Promise,o=Node,T=document,l=console,$="length",q="value",C="push",j="forEach",D="indexOf",F="split",K="slice",M="call",i="get",B="prototype",f="hasOwnProperty",u="getPrototypeOf",t="defineProperty",H="create",R="isArray",W="getAttribute",z="removeAttribute",G="hasAttribute",s="classList",I="tagName",J="type",Q="name",p="checked",U="parentNode",V="nextSibling",a="innerHTML",X="replaceWith",Y="insertBefore",Z="cloneNode",rr="remove",er="createTextNode",tr="checkbox",ar="function",nr="object",or="unshift",lr="cleanups",ir="nodes",n="deps",sr="destroy",vr="init",c=O[H](null),d=[],h=!1,_=null,y=!1,e=r.resolve(),fr=r=>{r._q||(r._q=!0,d[C](r),h||(h=!0,e.then(()=>{var r=d[K]();h=!(d=[]);for(var e=0;e<r[$];e++)r[e]._q=!1,r[e]()})))},ur=(r,e)=>{if(-1===e[D]("."))return{val:r[e],ctx:r};for(var t=e[F]("."),a=r,n=r,o=0;o<t[$];o++){if(null==a)return l.warn("Property undefined: "+e),{val:void 0,ctx:null};a=(n=a)[t[o]]}return{val:a,ctx:n}},m={};[C,"pop","shift",or,"splice","sort","reverse"][j](r=>{m[r]=function(){y=!0;try{return S[B][r].apply(this,arguments)}finally{y=!1,g(this,$)}}});var pr=(r,e)=>{!_||-1===(e=(r=r._d||(O[t](r,"_d",{value:O[H](null),writable:!0}),r._d))[e]||(r[e]=[]))[D](_)&&(e[C](_),_[n][C](e))},g=(r,e)=>{if(!y&&r._d&&r._d[e])for(var t=r._d[e][K](),a=0;a<t[$];a++){var n=t[a];n.sched?n.sched(n):n()}},x=r=>{for(var e=0;e<r[n][$];e++){var t=r[n][e],a=t[D](r);-1!==a&&(t[a]=t[t[$]-1],t.pop())}r[n]=[]},cr=(e,r)=>{var t=()=>{x(t);var r=_;_=t;try{e()}finally{_=r}};return t[n]=[],t.sched=r,t(),()=>x(t)},dr=r=>{if(!r||typeof r!=nr||r._y||r instanceof o)return r;if(r._p)return r._p;var e=new Proxy(r,{get:(r,e,t)=>{if("_y"===e)return!0;if("_d"===e)return r._d;if(S[R](r)&&m[f](e))return m[e];var a=O.getOwnPropertyDescriptor(r,e);if(a&&a[i]){var n="_"+e;return n in r||cr(()=>t[n]=a[i][M](t)),t[n]}return pr(r,e),!(e=v[i](r,e,t))||typeof e!=nr||e instanceof o?e:dr(e)},set:(r,e,t,a)=>{var n=r[e],o=S[R](r),l=o?Number(e)<r[$]:O[B][f][M](r,e);if(!o&&!l)for(var i=O[u](r);i&&i!==O[B];){if(O[B][f][M](i,e)){var s=v.set(i,e,t);return y||t===n||g(r,e),s}i=O[u](i)}return s=v.set(r,e,t,a),!y&&s&&(l&&t===n||(g(r,e),o?g(r,$):l||g(r,"_k"))),s},deleteProperty:(r,e)=>{var t=O[B][f][M](r,e),a=v.deleteProperty(r,e);return a&&t&&(g(r,e),S[R](r)?g(r,$):g(r,"_k")),a},ownKeys:r=>(pr(r,"_k"),v.ownKeys(r))});return O[t](r,"_p",{value:e,enumerable:!1}),e},b=dr({}),hr={text:(r,e)=>{r.textContent=null==e?"":e},html:(r,e)=>{r[a]!=e&&(r[a]=null==e?"":e)},value:(r,e)=>{r[J]===tr?r[p]=!!e:"radio"===r[J]?r[p]=r[q]==e:r[q]!=e&&(r[q]=null==e?"":e)},attr:(r,e,t)=>{null==e||!1===e?r[z](t):r.setAttribute(t,!0===e?"":e)},class:(r,e)=>{if("string"==typeof e)for(var t=e.match(/\S+/g)||[],a=0;a<t[$];a++){var n=t[a];"!"===n[0]?r[s][rr](n[K](1)):r[s].add(n)}else if(e)for(var o in e){var l=!!e[o];if(-1!==o[D](" "))for(var t=o[F](/\s+/),i=0;i<t[$];i++)t[i]&&r[s].toggle(t[i],l);else r[s].toggle(o,l)}},effect:()=>{}},_r=(k,r)=>{if(!k._m){var e=k[W]("s-data");if(c[e]){k._m=!0,e=c[e](),r&&O.setPrototypeOf(e,r);var N=dr(e);N.$refs={},N.$root=k,N.$store=b,N.$parent=r;var t=[],a=O[H](null),n=r=>{for(var e=r.target;e&&e!==k[U];){var t=e._h&&e._h[r[J]];if(t)for(var a=0;a<t[$];a++){var n,o,l=t[a];l.model?(n=e[J]===tr?e[p]:e[q],isFinite(n)&&(n=Number(n)),(o=ur(e._s,l.path)).ctx&&(o.ctx[o.ctx===e._s?l.path:l.path[F](".").pop()]=n)):typeof(o=ur(e._s,l.path)).val==ar&&o.val[M](o.ctx,r)}e=e[U]}},E=r=>{a[r]||(a[r]=!0,k.addEventListener(r,n))},L=(_,y,t)=>{if(1===_.nodeType&&!_[G]("s-ignore"))if(_!==k&&_[G]("s-data"))(e=_r(_,y))&&t[C](e.unmount);else{var r=_[W]("s-if"),e=!r&&"TEMPLATE"===_[I]&&_[W]("s-for"),a=[];if(r){var m=T[er](""),n=null,o=[];_[X](m);var l="!"===r[0],i=l?r[K](1):r;return t[C](()=>{o[j](r=>r())}),t[C](cr(()=>{var r=ur(y,i).val;l&&(r=!r),r?n||((n=_[Z](!0))[z]("s-if"),L(n,y,o),m[U][Y](n,m)):n&&(o[j](r=>r()),o=[],n[rr](),n=null)},fr))}if(e&&(r=e.match(/^\s*(.*?)\s+in\s+(.+)\s*$/))){var g,x=(e=r[1][F](",").map(r=>r.trim().replace(/[()]/g,"")))[0],b=e[1],P=r[2].trim(),w=_[W]("s-key"),m=T[er](""),A=O[H](null);return _[X](m),t[C](()=>{for(var r in A)A[r][lr][j](r=>r())}),t[C](cr(()=>{var r=ur(y,P).val||[];S[R](r)&&pr(r,$);var e=T.createDocumentFragment(),t=m;g=O[H](null);for(var a=S[R](r),n=a?r:O.keys(r),o=(a?r:n)[$],l=0;l<o;l++){var i=a?l:n[l],s=a?r[l]:r[i],v=null==s||typeof s!=nr?String(s):w?ur(s,w).val:String(i)+"_o";g[v]&&(v+="_"+l);var f=A[v];if(f)f.scope[x]=s,b&&(f.scope[b]=i);else{var u=_.content[Z](!0),p=dr(O[H](y));p[x]=s,b&&(p[b]=i);for(var c=S[B][K][M](u.childNodes),d=[],h=0;h<c[$];h++)L(c[h],p,d);f={nodes:c,scope:p,cleanups:d},A[v]=f}if(f[ir][0]!==t[V]){for(h=0;h<f[ir][$];h++)e.appendChild(f[ir][h]);t[U][Y](e,t[V])}t=f[ir][f[ir][$]-1],g[v]=!0}for(i in A)if(!g[i]){for(A[i][lr][j](r=>r()),h=0;h<A[i][ir][$];h++)A[i][ir][h][rr]();delete A[i]}},fr))}if(_.hasAttributes())for(var s=_.attributes,v=0;v<s[$];v++){var f,u,p=s[v][Q],c=s[v][q];":"===p[0]?(f=p[K](1),u="!"===c[0],a[C]({type:"attr",name:f,path:u?c[K](1):c,neg:u})):0===p[D]("s-")&&((u=p[K](2))===vr||u===sr?(r=>{var e=ur(y,c);typeof e.val==ar&&(r===vr?fr(()=>e.val[M](e.ctx,_)):t[C](()=>e.val[M](e.ctx,_)))})(u):"model"===u?(a[C]({type:q,path:c}),_._s=y,_._h=_._h||{},p=_[J]===tr||"radio"===_[J]||"SELECT"===_[I]?"change":"input",(_._h[p]=_._h[p]||[])[or]({model:!0,path:c}),E(p)):"ref"===u?N.$refs[c]=_:hr[u]?a[C]({type:u,path:c}):(_._s=y,_._h=_._h||{},(_._h[u]=_._h[u]||[])[C]({path:c}),E(u)))}a[$]&&t[C](cr(()=>{for(var r=0;r<a[$];r++){var e=a[r],t=(t=ur(y,e.path)).val&&typeof t.val==ar?t.val[M](t.ctx,_):t.val;"attr"===e[J]?(e.neg&&(t=!t),"class"===e[Q]?hr.class(_,t):hr.attr(_,t,e[Q])):hr[e[J]](_,t)}},fr));for(var d=_.firstChild;d;){var h=d[V];L(d,y,t),d=h}}};return L(k,N,t),N[vr]&&N[vr](),{unmount:()=>{for(var r in N[sr]&&N[sr][M](N),t[j](r=>r()),a)k.removeEventListener(r,n);k._m=!1}}}}};return{data:(r,e)=>{c[r]=e},start:()=>{for(var r=T.querySelectorAll("[s-data]"),e=0;e<r[$];e++)_r(r[e])},store:(r,e)=>void 0===e?b[r]:b[r]=e,raw:r=>r&&r._p||r}})();export default spiki;
package/spiki.js CHANGED
@@ -48,7 +48,10 @@ var spiki = (() => {
48
48
  var ctx = scope;
49
49
 
50
50
  for (var i = 0; i < parts.length; i++) {
51
- if (val == null) return { val: undefined, ctx: null };
51
+ if (val == null) {
52
+ console.warn('Property undefined: ' + path);
53
+ return { val: undefined, ctx: null };
54
+ }
52
55
  ctx = val;
53
56
  val = val[parts[i]];
54
57
  }
@@ -136,6 +139,15 @@ var spiki = (() => {
136
139
  if (key === '_y') return true;
137
140
  if (key === '_d') return target._d;
138
141
  if (Array.isArray(target) && arrInst.hasOwnProperty(key)) return arrInst[key];
142
+
143
+ var desc = Object.getOwnPropertyDescriptor(target, key);
144
+ if (desc && desc.get) {
145
+ var cacheKey = '_' + key;
146
+ if (!(cacheKey in target)) {
147
+ effect(() => receiver[cacheKey] = desc.get.call(receiver));
148
+ }
149
+ return receiver[cacheKey];
150
+ }
139
151
 
140
152
  track(target, key);
141
153
  var res = Reflect.get(target, key, receiver);
@@ -243,11 +255,7 @@ var spiki = (() => {
243
255
  }
244
256
  }
245
257
  },
246
- effect: () => {},
247
- init: () => {},
248
- destroy: () => {},
249
- model: () => {},
250
- ref: () => {}
258
+ effect: () => {}
251
259
  };
252
260
 
253
261
  var mount = (rootElement, parentScope) => {
@@ -278,6 +286,7 @@ var spiki = (() => {
278
286
  var handler = handlers[i];
279
287
  if (handler.model) {
280
288
  var val = target.type === 'checkbox' ? target.checked : target.value;
289
+ if (isFinite(val)) val = Number(val);
281
290
  var result = evalPath(target._s, handler.path);
282
291
  if (result.ctx) {
283
292
  result.ctx[result.ctx === target._s ? handler.path : handler.path.split('.').pop()] = val;
@@ -439,8 +448,6 @@ var spiki = (() => {
439
448
  bindings.push({ type: 'attr', name: realName, path: neg ? attrValue.slice(1) : attrValue, neg: neg });
440
449
  } else if (attrName.indexOf('s-') === 0) {
441
450
  var type = attrName.slice(2);
442
- if (type === 'data') continue;
443
-
444
451
  if (type === 'init' || type === 'destroy') {
445
452
  ((type, path) => {
446
453
  var result = evalPath(scope, path);
@@ -487,8 +494,6 @@ var spiki = (() => {
487
494
  if (binding.neg) val = !val;
488
495
  if (binding.name === 'class') {
489
496
  domOps.class(el, val);
490
- } else if (binding.name === 'hidden' && binding.neg) {
491
- domOps.attr(el, val, 'hidden');
492
497
  } else {
493
498
  domOps.attr(el, val, binding.name);
494
499
  }
@@ -527,7 +532,7 @@ var spiki = (() => {
527
532
  for(var i=0; i<els.length; i++) mount(els[i]);
528
533
  },
529
534
  store: (k, v) => v === undefined ? globalStore[k] : (globalStore[k] = v),
530
- raw: (o) => (o && o._r) || o
535
+ raw: (o) => (o && o._p) || o
531
536
  };
532
537
  })();
533
538
 
package/spiki.min.js CHANGED
@@ -1 +1 @@
1
- (()=>{"use strict";var e=(()=>{var S=Object,T=Array,v=Reflect,e=Promise,a=Node,$=document,O="length",q="value",C="push",j="forEach",K="indexOf",M="split",B="slice",D="call",F="prototype",f="hasOwnProperty",p="getPrototypeOf",t="defineProperty",H="create",R="isArray",W="getAttribute",z="removeAttribute",G="hasAttribute",i="classList",I="tagName",J="type",Q="name",s="checked",U="parentNode",V="nextSibling",n="innerHTML",X="replaceWith",Y="insertBefore",Z="cloneNode",ee="remove",re="createTextNode",te="checkbox",ae="function",ne="object",oe="unshift",le="cleanups",se="nodes",o="deps",ie="destroy",ve="init",l=S[H](null),u=[],d=!1,c=null,h=!1,r=e.resolve(),fe=e=>{e._q||(e._q=!0,u[C](e),d||(d=!0,r.then(()=>{var e=u[B]();d=!(u=[]);for(var r=0;r<e[O];r++)e[r]._q=!1,e[r]()})))},pe=(e,r)=>{if(-1===r[K]("."))return{val:e[r],ctx:e};for(var t=r[M]("."),a=e,n=e,o=0;o<t[O];o++){if(null==a)return{val:void 0,ctx:null};a=(n=a)[t[o]]}return{val:a,ctx:n}},_={};[C,"pop","shift",oe,"splice","sort","reverse"][j](e=>{_[e]=function(){h=!0;try{return T[F][e].apply(this,arguments)}finally{h=!1,y(this,O)}}});var ue=(e,r)=>{!c||-1===(r=(e=e._d||(S[t](e,"_d",{value:S[H](null),writable:!0}),e._d))[r]||(e[r]=[]))[K](c)&&(r[C](c),c[o][C](r))},y=(e,r)=>{if(!h&&e._d&&e._d[r])for(var t=e._d[r][B](),a=0;a<t[O];a++){var n=t[a];n.sched?n.sched(n):n()}},m=e=>{for(var r=0;r<e[o][O];r++){var t=e[o][r],a=t[K](e);-1!==a&&(t[a]=t[t[O]-1],t.pop())}e[o]=[]},de=(r,e)=>{var t=()=>{m(t);var e=c;c=t;try{r()}finally{c=e}};return t[o]=[],t.sched=e,t(),()=>m(t)},ce=e=>{if(!e||typeof e!=ne||e._y||e instanceof a)return e;if(e._p)return e._p;var r=new Proxy(e,{get:(e,r,t)=>"_y"===r||("_d"===r?e._d:T[R](e)&&_[f](r)?_[r]:(ue(e,r),!(t=v.get(e,r,t))||typeof t!=ne||t instanceof a?t:ce(t))),set:(e,r,t,a)=>{var n=e[r],o=T[R](e),l=o?Number(r)<e[O]:S[F][f][D](e,r);if(!o&&!l)for(var s=S[p](e);s&&s!==S[F];){if(S[F][f][D](s,r)){var i=v.set(s,r,t);return h||t===n||y(e,r),i}s=S[p](s)}return i=v.set(e,r,t,a),!h&&i&&(l&&t===n||(y(e,r),o?y(e,O):l||y(e,"_k"))),i},deleteProperty:(e,r)=>{var t=S[F][f][D](e,r),a=v.deleteProperty(e,r);return a&&t&&(y(e,r),T[R](e)?y(e,O):y(e,"_k")),a},ownKeys:e=>(ue(e,"_k"),v.ownKeys(e))});return S[t](e,"_p",{value:r,enumerable:!1}),r},g=ce({}),he={text:(e,r)=>{e.textContent=null==r?"":r},html:(e,r)=>{e[n]!=r&&(e[n]=null==r?"":r)},value:(e,r)=>{e[J]===te?e[s]=!!r:"radio"===e[J]?e[s]=e[q]==r:e[q]!=r&&(e[q]=null==r?"":r)},attr:(e,r,t)=>{null==r||!1===r?e[z](t):e.setAttribute(t,!0===r?"":r)},class:(e,r)=>{if("string"==typeof r)for(var t=r.match(/\S+/g)||[],a=0;a<t[O];a++){var n=t[a];"!"===n[0]?e[i][ee](n[B](1)):e[i].add(n)}else if(r)for(var o in r){var l=!!r[o];if(-1!==o[K](" "))for(var t=o[M](/\s+/),s=0;s<t[O];s++)t[s]&&e[i].toggle(t[s],l);else e[i].toggle(o,l)}},effect:()=>{},init:()=>{},destroy:()=>{},model:()=>{},ref:()=>{}},_e=(w,e)=>{if(!w._m){var r=w[W]("s-data");if(l[r]){w._m=!0,r=l[r](),e&&S.setPrototypeOf(r,e);var E=ce(r);E.$refs={},E.$root=w,E.$store=g,E.$parent=e;var t=[],a=S[H](null),n=e=>{for(var r=e.target;r&&r!==w[U];){var t=r._h&&r._h[e[J]];if(t)for(var a=0;a<t[O];a++){var n,o,l=t[a];l.model?(n=r[J]===te?r[s]:r[q],(o=pe(r._s,l.path)).ctx&&(o.ctx[o.ctx===r._s?l.path:l.path[M](".").pop()]=n)):typeof(o=pe(r._s,l.path)).val==ae&&o.val[D](o.ctx,e)}r=r[U]}},N=e=>{a[e]||(a[e]=!0,w.addEventListener(e,n))},L=(_,y,t)=>{if(1===_.nodeType&&!_[G]("s-ignore"))if(_!==w&&_[G]("s-data"))(r=_e(_,y))&&t[C](r.unmount);else{var e=_[W]("s-if"),r=!e&&"TEMPLATE"===_[I]&&_[W]("s-for"),a=[];if(e){var m=$[re](""),n=null,o=[];_[X](m);var l="!"===e[0],s=l?e[B](1):e;return t[C](()=>{o[j](e=>e())}),t[C](de(()=>{var e=pe(y,s).val;l&&(e=!e),e?n||((n=_[Z](!0))[z]("s-if"),L(n,y,o),m[U][Y](n,m)):n&&(o[j](e=>e()),o=[],n[ee](),n=null)},fe))}if(r&&(e=r.match(/^\s*(.*?)\s+in\s+(.+)\s*$/))){var g,x=(r=e[1][M](",").map(e=>e.trim().replace(/[()]/g,"")))[0],b=r[1],A=e[2].trim(),P=_[W]("s-key"),m=$[re](""),k=S[H](null);return _[X](m),t[C](()=>{for(var e in k)k[e][le][j](e=>e())}),t[C](de(()=>{var e=pe(y,A).val||[];T[R](e)&&ue(e,O);var r=$.createDocumentFragment(),t=m;g=S[H](null);for(var a=T[R](e),n=a?e:S.keys(e),o=(a?e:n)[O],l=0;l<o;l++){var s=a?l:n[l],i=a?e[l]:e[s],v=null==i||typeof i!=ne?String(i):P?pe(i,P).val:String(s)+"_o";g[v]&&(v+="_"+l);var f=k[v];if(f)f.scope[x]=i,b&&(f.scope[b]=s);else{var p=_.content[Z](!0),u=ce(S[H](y));u[x]=i,b&&(u[b]=s);for(var d=T[F][B][D](p.childNodes),c=[],h=0;h<d[O];h++)L(d[h],u,c);f={nodes:d,scope:u,cleanups:c},k[v]=f}if(f[se][0]!==t[V]){for(h=0;h<f[se][O];h++)r.appendChild(f[se][h]);t[U][Y](r,t[V])}t=f[se][f[se][O]-1],g[v]=!0}for(s in k)if(!g[s]){for(k[s][le][j](e=>e()),h=0;h<k[s][se][O];h++)k[s][se][h][ee]();delete k[s]}},fe))}if(_.hasAttributes())for(var i=_.attributes,v=0;v<i[O];v++){var f,p,u=i[v][Q],d=i[v][q];":"===u[0]?(f=u[B](1),p="!"===d[0],a[C]({type:"attr",name:f,path:p?d[B](1):d,neg:p})):0!==u[K]("s-")||"data"!==(p=u[B](2))&&(p===ve||p===ie?(e=>{var r=pe(y,d);typeof r.val==ae&&(e===ve?fe(()=>r.val[D](r.ctx,_)):t[C](()=>r.val[D](r.ctx,_)))})(p):"model"===p?(a[C]({type:q,path:d}),_._s=y,_._h=_._h||{},u=_[J]===te||"radio"===_[J]||"SELECT"===_[I]?"change":"input",(_._h[u]=_._h[u]||[])[oe]({model:!0,path:d}),N(u)):"ref"===p?E.$refs[d]=_:he[p]?a[C]({type:p,path:d}):(_._s=y,_._h=_._h||{},(_._h[p]=_._h[p]||[])[C]({path:d}),N(p)))}a[O]&&t[C](de(()=>{for(var e=0;e<a[O];e++){var r=a[e],t=(t=pe(y,r.path)).val&&typeof t.val==ae?t.val[D](t.ctx,_):t.val;"attr"===r[J]?(r.neg&&(t=!t),"class"===r[Q]?he.class(_,t):"hidden"===r[Q]&&r.neg?he.attr(_,t,"hidden"):he.attr(_,t,r[Q])):he[r[J]](_,t)}},fe));for(var c=_.firstChild;c;){var h=c[V];L(c,y,t),c=h}}};return L(w,E,t),E[ve]&&E[ve](),{unmount:()=>{for(var e in E[ie]&&E[ie][D](E),t[j](e=>e()),a)w.removeEventListener(e,n);w._m=!1}}}}};return{data:(e,r)=>{l[e]=r},start:()=>{for(var e=$.querySelectorAll("[s-data]"),r=0;r<e[O];r++)_e(e[r])},store:(e,r)=>void 0===r?g[e]:g[e]=r,raw:e=>e&&e._r||e}})();window.spiki=e})();
1
+ (()=>{"use strict";var r=(()=>{var O=Object,S=Array,v=Reflect,r=Promise,o=Node,T=document,l=console,$="length",q="value",C="push",j="forEach",D="indexOf",F="split",K="slice",M="call",i="get",B="prototype",f="hasOwnProperty",u="getPrototypeOf",t="defineProperty",H="create",R="isArray",W="getAttribute",z="removeAttribute",G="hasAttribute",s="classList",I="tagName",J="type",Q="name",p="checked",U="parentNode",V="nextSibling",a="innerHTML",X="replaceWith",Y="insertBefore",Z="cloneNode",rr="remove",er="createTextNode",tr="checkbox",ar="function",nr="object",or="unshift",lr="cleanups",ir="nodes",n="deps",sr="destroy",vr="init",c=O[H](null),d=[],h=!1,_=null,y=!1,e=r.resolve(),fr=r=>{r._q||(r._q=!0,d[C](r),h||(h=!0,e.then(()=>{var r=d[K]();h=!(d=[]);for(var e=0;e<r[$];e++)r[e]._q=!1,r[e]()})))},ur=(r,e)=>{if(-1===e[D]("."))return{val:r[e],ctx:r};for(var t=e[F]("."),a=r,n=r,o=0;o<t[$];o++){if(null==a)return l.warn("Property undefined: "+e),{val:void 0,ctx:null};a=(n=a)[t[o]]}return{val:a,ctx:n}},m={};[C,"pop","shift",or,"splice","sort","reverse"][j](r=>{m[r]=function(){y=!0;try{return S[B][r].apply(this,arguments)}finally{y=!1,g(this,$)}}});var pr=(r,e)=>{!_||-1===(e=(r=r._d||(O[t](r,"_d",{value:O[H](null),writable:!0}),r._d))[e]||(r[e]=[]))[D](_)&&(e[C](_),_[n][C](e))},g=(r,e)=>{if(!y&&r._d&&r._d[e])for(var t=r._d[e][K](),a=0;a<t[$];a++){var n=t[a];n.sched?n.sched(n):n()}},x=r=>{for(var e=0;e<r[n][$];e++){var t=r[n][e],a=t[D](r);-1!==a&&(t[a]=t[t[$]-1],t.pop())}r[n]=[]},cr=(e,r)=>{var t=()=>{x(t);var r=_;_=t;try{e()}finally{_=r}};return t[n]=[],t.sched=r,t(),()=>x(t)},dr=r=>{if(!r||typeof r!=nr||r._y||r instanceof o)return r;if(r._p)return r._p;var e=new Proxy(r,{get:(r,e,t)=>{if("_y"===e)return!0;if("_d"===e)return r._d;if(S[R](r)&&m[f](e))return m[e];var a=O.getOwnPropertyDescriptor(r,e);if(a&&a[i]){var n="_"+e;return n in r||cr(()=>t[n]=a[i][M](t)),t[n]}return pr(r,e),!(e=v[i](r,e,t))||typeof e!=nr||e instanceof o?e:dr(e)},set:(r,e,t,a)=>{var n=r[e],o=S[R](r),l=o?Number(e)<r[$]:O[B][f][M](r,e);if(!o&&!l)for(var i=O[u](r);i&&i!==O[B];){if(O[B][f][M](i,e)){var s=v.set(i,e,t);return y||t===n||g(r,e),s}i=O[u](i)}return s=v.set(r,e,t,a),!y&&s&&(l&&t===n||(g(r,e),o?g(r,$):l||g(r,"_k"))),s},deleteProperty:(r,e)=>{var t=O[B][f][M](r,e),a=v.deleteProperty(r,e);return a&&t&&(g(r,e),S[R](r)?g(r,$):g(r,"_k")),a},ownKeys:r=>(pr(r,"_k"),v.ownKeys(r))});return O[t](r,"_p",{value:e,enumerable:!1}),e},b=dr({}),hr={text:(r,e)=>{r.textContent=null==e?"":e},html:(r,e)=>{r[a]!=e&&(r[a]=null==e?"":e)},value:(r,e)=>{r[J]===tr?r[p]=!!e:"radio"===r[J]?r[p]=r[q]==e:r[q]!=e&&(r[q]=null==e?"":e)},attr:(r,e,t)=>{null==e||!1===e?r[z](t):r.setAttribute(t,!0===e?"":e)},class:(r,e)=>{if("string"==typeof e)for(var t=e.match(/\S+/g)||[],a=0;a<t[$];a++){var n=t[a];"!"===n[0]?r[s][rr](n[K](1)):r[s].add(n)}else if(e)for(var o in e){var l=!!e[o];if(-1!==o[D](" "))for(var t=o[F](/\s+/),i=0;i<t[$];i++)t[i]&&r[s].toggle(t[i],l);else r[s].toggle(o,l)}},effect:()=>{}},_r=(k,r)=>{if(!k._m){var e=k[W]("s-data");if(c[e]){k._m=!0,e=c[e](),r&&O.setPrototypeOf(e,r);var N=dr(e);N.$refs={},N.$root=k,N.$store=b,N.$parent=r;var t=[],a=O[H](null),n=r=>{for(var e=r.target;e&&e!==k[U];){var t=e._h&&e._h[r[J]];if(t)for(var a=0;a<t[$];a++){var n,o,l=t[a];l.model?(n=e[J]===tr?e[p]:e[q],isFinite(n)&&(n=Number(n)),(o=ur(e._s,l.path)).ctx&&(o.ctx[o.ctx===e._s?l.path:l.path[F](".").pop()]=n)):typeof(o=ur(e._s,l.path)).val==ar&&o.val[M](o.ctx,r)}e=e[U]}},E=r=>{a[r]||(a[r]=!0,k.addEventListener(r,n))},L=(_,y,t)=>{if(1===_.nodeType&&!_[G]("s-ignore"))if(_!==k&&_[G]("s-data"))(e=_r(_,y))&&t[C](e.unmount);else{var r=_[W]("s-if"),e=!r&&"TEMPLATE"===_[I]&&_[W]("s-for"),a=[];if(r){var m=T[er](""),n=null,o=[];_[X](m);var l="!"===r[0],i=l?r[K](1):r;return t[C](()=>{o[j](r=>r())}),t[C](cr(()=>{var r=ur(y,i).val;l&&(r=!r),r?n||((n=_[Z](!0))[z]("s-if"),L(n,y,o),m[U][Y](n,m)):n&&(o[j](r=>r()),o=[],n[rr](),n=null)},fr))}if(e&&(r=e.match(/^\s*(.*?)\s+in\s+(.+)\s*$/))){var g,x=(e=r[1][F](",").map(r=>r.trim().replace(/[()]/g,"")))[0],b=e[1],P=r[2].trim(),w=_[W]("s-key"),m=T[er](""),A=O[H](null);return _[X](m),t[C](()=>{for(var r in A)A[r][lr][j](r=>r())}),t[C](cr(()=>{var r=ur(y,P).val||[];S[R](r)&&pr(r,$);var e=T.createDocumentFragment(),t=m;g=O[H](null);for(var a=S[R](r),n=a?r:O.keys(r),o=(a?r:n)[$],l=0;l<o;l++){var i=a?l:n[l],s=a?r[l]:r[i],v=null==s||typeof s!=nr?String(s):w?ur(s,w).val:String(i)+"_o";g[v]&&(v+="_"+l);var f=A[v];if(f)f.scope[x]=s,b&&(f.scope[b]=i);else{var u=_.content[Z](!0),p=dr(O[H](y));p[x]=s,b&&(p[b]=i);for(var c=S[B][K][M](u.childNodes),d=[],h=0;h<c[$];h++)L(c[h],p,d);f={nodes:c,scope:p,cleanups:d},A[v]=f}if(f[ir][0]!==t[V]){for(h=0;h<f[ir][$];h++)e.appendChild(f[ir][h]);t[U][Y](e,t[V])}t=f[ir][f[ir][$]-1],g[v]=!0}for(i in A)if(!g[i]){for(A[i][lr][j](r=>r()),h=0;h<A[i][ir][$];h++)A[i][ir][h][rr]();delete A[i]}},fr))}if(_.hasAttributes())for(var s=_.attributes,v=0;v<s[$];v++){var f,u,p=s[v][Q],c=s[v][q];":"===p[0]?(f=p[K](1),u="!"===c[0],a[C]({type:"attr",name:f,path:u?c[K](1):c,neg:u})):0===p[D]("s-")&&((u=p[K](2))===vr||u===sr?(r=>{var e=ur(y,c);typeof e.val==ar&&(r===vr?fr(()=>e.val[M](e.ctx,_)):t[C](()=>e.val[M](e.ctx,_)))})(u):"model"===u?(a[C]({type:q,path:c}),_._s=y,_._h=_._h||{},p=_[J]===tr||"radio"===_[J]||"SELECT"===_[I]?"change":"input",(_._h[p]=_._h[p]||[])[or]({model:!0,path:c}),E(p)):"ref"===u?N.$refs[c]=_:hr[u]?a[C]({type:u,path:c}):(_._s=y,_._h=_._h||{},(_._h[u]=_._h[u]||[])[C]({path:c}),E(u)))}a[$]&&t[C](cr(()=>{for(var r=0;r<a[$];r++){var e=a[r],t=(t=ur(y,e.path)).val&&typeof t.val==ar?t.val[M](t.ctx,_):t.val;"attr"===e[J]?(e.neg&&(t=!t),"class"===e[Q]?hr.class(_,t):hr.attr(_,t,e[Q])):hr[e[J]](_,t)}},fr));for(var d=_.firstChild;d;){var h=d[V];L(d,y,t),d=h}}};return L(k,N,t),N[vr]&&N[vr](),{unmount:()=>{for(var r in N[sr]&&N[sr][M](N),t[j](r=>r()),a)k.removeEventListener(r,n);k._m=!1}}}}};return{data:(r,e)=>{c[r]=e},start:()=>{for(var r=T.querySelectorAll("[s-data]"),e=0;e<r[$];e++)_r(r[e])},store:(r,e)=>void 0===e?b[r]:b[r]=e,raw:r=>r&&r._p||r}})();window.spiki=r})();