spikijs 1.1.8 → 1.1.9

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.8",
4
+ "version": "1.1.9",
5
5
  "type": "module",
6
6
  "repository": {
7
7
  "type": "git",
package/spiki.esm.js CHANGED
@@ -214,12 +214,11 @@ var spiki = (() => {
214
214
  };
215
215
 
216
216
  var mount = (rootElement, parentScope) => {
217
- if (rootElement._m) return;
217
+ if (rootElement._m) return rootElement._m;
218
218
 
219
219
  var name = rootElement.getAttribute('s-data');
220
220
  if (!cmpReg[name]) return;
221
221
 
222
- rootElement._m = true;
223
222
  var data = cmpReg[name]();
224
223
  if (parentScope) Object.setPrototypeOf(data, parentScope);
225
224
 
@@ -418,7 +417,12 @@ var spiki = (() => {
418
417
  ((type, path) => {
419
418
  var result = evalPath(scope, path);
420
419
  if (typeof result.val === 'function') {
421
- if (type === 'init') nextTick(() => result.val.call(result.ctx, el));
420
+ if (type === 'init') {
421
+ nextTick(() => {
422
+ var cleanupFn = result.val.call(result.ctx, el);
423
+ if (typeof cleanupFn === 'function') parentCleanups.push(cleanupFn);
424
+ });
425
+ }
422
426
  else parentCleanups.push(() => result.val.call(result.ctx, el));
423
427
  }
424
428
  })(type, p);
@@ -484,14 +488,16 @@ var spiki = (() => {
484
488
  walk(rootElement, state, cleanups);
485
489
  if (state.init) state.init();
486
490
 
487
- return {
491
+ var instance = {
488
492
  unmount: () => {
489
493
  if (state.destroy) state.destroy.call(state);
490
494
  cleanups.forEach(c => c());
491
495
  for(var k in listeners) rootElement.removeEventListener(k, handle);
492
- rootElement._m = false;
496
+ rootElement._m = null;
493
497
  }
494
498
  };
499
+ rootElement._m = instance;
500
+ return instance;
495
501
  };
496
502
 
497
503
  return {
@@ -502,7 +508,9 @@ var spiki = (() => {
502
508
  while (i--) mount(els[i]);
503
509
  },
504
510
  store: (k, v) => v === undefined ? globalStore[k] : (globalStore[k] = v),
505
- raw: (o) => (o && o._p) || o
511
+ raw: (o) => (o && o._p) || o,
512
+ mount: (el) => mount(el),
513
+ unmount: (el) => { if (el && el._m) el._m.unmount(); }
506
514
  };
507
515
  })();
508
516
 
package/spiki.esm.min.js CHANGED
@@ -1 +1 @@
1
- var spiki=(()=>{var L=Object,$=Array,s=Reflect,r=Promise,o=Node,q=document,j="length",D="value",F="push",K="forEach",M="indexOf",B="split",H="slice",R="call",i="get",W="prototype",f="hasOwnProperty",p="getPrototypeOf",t="defineProperty",z="create",G="isArray",I="getAttribute",J="removeAttribute",Q="hasAttribute",U="tagName",V="type",X="name",c="checked",Y="parentNode",Z="nextSibling",a="textContent",n="innerHTML",rr="replaceWith",er="insertBefore",tr="cloneNode",ar="remove",nr="createTextNode",or="addEventListener",ir="input",lr="checkbox",vr="function",sr="class",fr="object",pr="unshift",ur="trim",cr="cleanups",dr="nodes",l="deps",_r="className",yr="destroy",hr="init",mr="charCodeAt",v="sched",u=L[z](null),d=[],_=!1,y=null,h=!1,e=r.resolve(),gr=r=>{r._q||(r._q=!0,d[F](r),_||(_=!0,e.then(()=>{var r=d;_=!(d=[]);for(var e=r[j];e--;)r[e]._q=!1,r[e]()})))},br=(r,e)=>{if("string"==typeof e)return{ctx:r,val:r?r[e]:void 0};for(var t=0,a=e[j];t<a-1&&r;)r=r[e[t++]];return{ctx:r,val:r?r[e[a-1]]:void 0}},m={};[F,"pop","shift",pr,"splice","sort","reverse"][K](r=>{m[r]=function(){h=!0;try{return $[W][r].apply(this,arguments)}finally{h=!1,g(this,j)}}});var xr=(r,e)=>{!y||-1===(e=(r=r._d||(L[t](r,"_d",{value:L[z](null),writable:!0}),r._d))[e]||(r[e]=[]))[M](y)&&(e[F](y),y[l][F](e))},g=(r,e)=>{if(!h&&r._d&&r._d[e])for(var t=r._d[e][H](),a=0,n=t[j];a<n;a++){var o=t[a];o[v]?o[v](o):o()}},b=r=>{for(var e=r[l][j];e--;){var t=r[l][e],a=t[M](r);-1!==a&&(t[a]=t[t[j]-1],t.pop())}r[l]=[]},Ar=(e,r)=>{var t=()=>{b(t);var r=y;y=t;try{e()}finally{y=r}};return t[l]=[],t[v]=r,t(),()=>b(t)},Pr=r=>{if(!r||typeof r!=fr||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($[G](r)&&m[f](e))return m[e];var a=L.getOwnPropertyDescriptor(r,e);if(a&&a[i]){var n="_"+e;return n in r||Ar(()=>t[n]=a[i][R](t)),t[n]}return xr(r,e),!(e=s[i](r,e,t))||typeof e!=fr||e instanceof o?e:Pr(e)},set:(r,e,t,a)=>{var n=r[e],o=$[G](r),i=o?Number(e)<r[j]:L[W][f][R](r,e);if(!o&&!i)for(var l=L[p](r);l&&l!==L[W];){if(L[W][f][R](l,e)){var v=s.set(l,e,t);return h||t===n||g(r,e),v}l=L[p](l)}return v=s.set(r,e,t,a),!h&&v&&(i&&t===n||(g(r,e),o?g(r,j):i||g(r,"_k"))),v},deleteProperty:(r,e)=>{var t=L[W][f][R](r,e),a=s.deleteProperty(r,e);return a&&t&&(g(r,e),$[G](r)?g(r,j):g(r,"_k")),a},ownKeys:r=>(xr(r,"_k"),s.ownKeys(r))});return L[t](r,"_p",{value:e,enumerable:!1}),e},x=Pr({}),wr=L[z](null);wr.text=(r,e)=>{e=null==e?"":e,r[a]!==String(e)&&(r[a]=e)},wr.html=(r,e)=>{r[n]!=e&&(r[n]=null==e?"":e)},wr[D]=(r,e)=>{r[V]===lr?r[c]=!!e:"radio"===r[V]?r[c]=r[D]==e:r[D]!=e&&(r[D]=null==e?"":e)},wr.attr=(r,e,t)=>{null==e||!1===e?r[J](t):(e=!0===e?"":String(e),r[I](t)!==e&&r.setAttribute(t,e))},wr[sr]=(r,e)=>{var t=r._n||"",a="";if("string"==typeof e)a=e;else if(e)for(var n in e)e[n]&&(a+=(a?" ":"")+n);t=t+(t&&a?" ":"")+a,r[_r]!==t&&(r[_r]=t)};var Nr=(E,r)=>{if(!E._m){var e=E[I]("s-data");if(u[e]){E._m=!0,e=u[e](),r&&L.setPrototypeOf(e,r);var S=Pr(e);S.$refs={},S.$root=E,S.$store=x,S.$parent=r;var t=[],a=L[z](null),O=r=>{var e=r.target;if(r[V]!==ir||!e._c)for(var t=E[Y],a=r[V];e&&e!==t;){var n=e._h&&e._h[a];if(n)for(var o=e._s,i=n[j];i--;){var l=n[i],v=l.p;if(l.model){var s=e[V]===lr?e[c]:e[D];if("string"!=typeof s||(l=s[ur]())&&isFinite(l)&&(48===l[mr](0)&&1!==l[j]&&46!==l[mr](1)||(s=Number(l))),"string"==typeof v)o&&(o[v]=s);else{for(var f=o,p=0,u=v[j]-1;p<u&&f;)f=f[v[p++]];f&&(f[v[u]]=s)}}else typeof(s=br(o,v)).val==vr&&s.val[R](s.ctx,r)}e=e[Y]}},T=r=>{a[r]||(a[r]=!0,E[or](r,O))},C=(h,m,t)=>{if(1===h.nodeType&&!h[Q]("s-ignore"))if(h!==E&&h[Q]("s-data"))(r=Nr(h,m))&&t[F](r.unmount);else{var r=!(v=h[I]("s-if"))&&"TEMPLATE"===h[U]&&h[I]("s-for"),a=[];if(h[Q](sr)&&!h._n&&(h._n=h[_r]),v){var g=q[nr](""),e=null,n=[];h[rr](g);var o="!"===v[0],i=-1===(l=o?v[H](1):v)[M](".")?l:l[B](".");return t[F](()=>{n[K](r=>r())}),t[F](Ar(()=>{var r=br(m,i).val;o&&(r=!r),r?e||((e=h[tr](!0))[J]("s-if"),C(e,m,n),g[Y][er](e,g)):e&&(n[K](r=>r()),n=[],e[ar](),e=null)},gr))}if(r&&-1!==(v=r[M](" in "))){var b,l=r[H](0,v)[ur](),v=r[H](v+4)[ur](),x=(l=l.replace(/[()]/g,"")[B](","))[0][ur](),A=l[1]?l[1][ur]():null,P=-1===v[M](".")?v:v[B]("."),w=(v=h[I]("s-key"))?-1===v[M](".")?v:v[B]("."):null,g=q[nr](""),N=L[z](null);return h[rr](g),t[F](()=>{for(var r in N)N[r][cr][K](r=>r())}),t[F](Ar(()=>{var r=br(m,P).val||[];$[G](r)&&xr(r,j);var e=q.createDocumentFragment(),t=g;b=L[z](null);for(var a,n=$[G](r),o=n?r:L.keys(r),i=(n?r:o)[j],l=0;l<i;l++){var v=n?l:o[l],s=n?r[l]:r[v],f=null==s||typeof s!=fr?String(s):w?br(s,w).val:String(v)+"_o";b[f]&&(f+="_"+l);var p=N[f];if(p)p.scope[x]=s,A&&(p.scope[A]=v);else{var u=h.content[tr](!0),c=Pr(L[z](m));c[x]=s,A&&(c[A]=v);for(var d=$[W][H][R](u.childNodes),_=[],y=0;y<d[j];y++)C(d[y],c,_);p={nodes:d,scope:c,cleanups:_},N[f]=p}if(p[dr][0]!==t[Z]){for(y=0;y<p[dr][j];y++)e.appendChild(p[dr][y]);t[Y][er](e,t[Z])}t=p[dr][p[dr][j]-1],b[f]=!0}for(a in N)b[a]||(N[a][cr][K](r=>r()),N[a][dr][K](r=>r[ar]()),delete N[a])},gr))}if(h.hasAttributes())for(var s=h.attributes,f=s[j];f--;){var p,u,c=s[f],d=c[X],_=c[D];58===d[mr](0)?(p=d[H](1),c=(u=33===_[mr](0))?_[H](1):_,i=-1===c[M](".")?c:c[B]("."),a[F]({type:"attr",name:p,path:i,neg:u})):115===d[mr](0)&&45===d[mr](1)&&(u=d[H](2),i=-1===_[M](".")?_:_[B]("."),u===hr||u===yr?(r=>{var e=br(m,i);typeof e.val==vr&&(r===hr?gr(()=>e.val[R](e.ctx,h)):t[F](()=>e.val[R](e.ctx,h)))})(u):"effect"===u?t[F](Ar(()=>{var r=br(m,i);typeof r.val==vr&&r.val[R](r.ctx,h)},gr)):"model"===u?(a[F]({type:D,path:i}),h._s=m,h._h=h._h||{},(d=h[V]===lr||"radio"===h[V]||"SELECT"===h[U]?"change":ir)==ir&&(h[or]("compositionstart",()=>h._c=!0),h[or]("compositionend",()=>{h._c=!1,O({target:h,type:ir})})),(h._h[d]=h._h[d]||[])[pr]({model:!0,p:i}),T(d)):"ref"===u?S.$refs[_]=h:wr[u]?a[F]({type:u,path:i}):(h._s=m,h._h=h._h||{},(h._h[u]=h._h[u]||[])[F]({p:i}),T(u)))}a[j]&&t[F](Ar(()=>{for(var r=a[j];r--;){var e=a[r],t=(t=br(m,e.path)).val&&typeof t.val==vr?t.val[R](t.ctx,h):t.val;"attr"===e[V]?(e.neg&&(t=!t),e[X]===sr?wr[sr](h,t):wr.attr(h,t,e[X])):wr[e[V]](h,t)}},gr));for(var y=h.firstChild;y;){var k=y[Z];C(y,m,t),y=k}}};return C(E,S,t),S[hr]&&S[hr](),{unmount:()=>{for(var r in S[yr]&&S[yr][R](S),t[K](r=>r()),a)E.removeEventListener(r,O);E._m=!1}}}}};return{data:(r,e)=>{u[r]=e},start:()=>{for(var r=q.querySelectorAll("[s-data]"),e=r[j];e--;)Nr(r[e])},store:(r,e)=>void 0===e?x[r]:x[r]=e,raw:r=>r&&r._p||r}})();export default spiki;
1
+ var spiki=(()=>{var L=Object,$=Array,f=Reflect,r=Promise,o=Node,q=document,j="length",D="value",F="push",K="forEach",M="indexOf",B="split",H="slice",R="call",i="get",W="prototype",s="hasOwnProperty",u="getPrototypeOf",t="defineProperty",z="create",G="isArray",I="getAttribute",J="removeAttribute",Q="hasAttribute",U="tagName",V="type",X="name",c="checked",Y="parentNode",Z="nextSibling",a="textContent",n="innerHTML",rr="replaceWith",er="insertBefore",tr="cloneNode",ar="remove",nr="createTextNode",or="addEventListener",ir="input",lr="checkbox",vr="function",fr="class",sr="object",ur="unshift",pr="trim",cr="cleanups",_r="nodes",l="deps",dr="className",yr="destroy",hr="init",mr="charCodeAt",v="sched",p=L[z](null),_=[],d=!1,y=null,h=!1,e=r.resolve(),gr=r=>{r._q||(r._q=!0,_[F](r),d||(d=!0,e.then(()=>{var r=_;d=!(_=[]);for(var e=r[j];e--;)r[e]._q=!1,r[e]()})))},br=(r,e)=>{if("string"==typeof e)return{ctx:r,val:r?r[e]:void 0};for(var t=0,a=e[j];t<a-1&&r;)r=r[e[t++]];return{ctx:r,val:r?r[e[a-1]]:void 0}},m={};[F,"pop","shift",ur,"splice","sort","reverse"][K](r=>{m[r]=function(...args){h=!0;try{return $[W][r].apply(this,...args)}finally{h=!1,g(this,j)}}});var xr=(r,e)=>{!y||-1===(e=(r=r._d||(L[t](r,"_d",{value:L[z](null),writable:!0}),r._d))[e]||(r[e]=[]))[M](y)&&(e[F](y),y[l][F](e))},g=(r,e)=>{if(!h&&r._d&&r._d[e])for(var t=r._d[e][H](),a=0,n=t[j];a<n;a++){var o=t[a];o[v]?o[v](o):o()}},b=r=>{for(var e=r[l][j];e--;){var t=r[l][e],a=t[M](r);-1!==a&&(t[a]=t[t[j]-1],t.pop())}r[l]=[]},Ar=(e,r)=>{var t=()=>{b(t);var r=y;y=t;try{e()}finally{y=r}};return t[l]=[],t[v]=r,t(),()=>b(t)},Pr=r=>{if(!r||typeof r!=sr||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($[G](r)&&m[s](e))return m[e];var a=L.getOwnPropertyDescriptor(r,e);if(a&&a[i]){var n="_"+e;return n in r||Ar(()=>t[n]=a[i][R](t)),t[n]}return xr(r,e),!(e=f[i](r,e,t))||typeof e!=sr||e instanceof o?e:Pr(e)},set:(r,e,t,a)=>{var n=r[e],o=$[G](r),i=o?Number(e)<r[j]:L[W][s][R](r,e);if(!o&&!i)for(var l=L[u](r);l&&l!==L[W];){if(L[W][s][R](l,e)){var v=f.set(l,e,t);return h||t===n||g(r,e),v}l=L[u](l)}return v=f.set(r,e,t,a),!h&&v&&(i&&t===n||(g(r,e),o?g(r,j):i||g(r,"_k"))),v},deleteProperty:(r,e)=>{var t=L[W][s][R](r,e),a=f.deleteProperty(r,e);return a&&t&&(g(r,e),$[G](r)?g(r,j):g(r,"_k")),a},ownKeys:r=>(xr(r,"_k"),f.ownKeys(r))});return L[t](r,"_p",{value:e,enumerable:!1}),e},x=Pr({}),wr=L[z](null);wr.text=(r,e)=>{e=null==e?"":e,r[a]!==String(e)&&(r[a]=e)},wr.html=(r,e)=>{r[n]!=e&&(r[n]=null==e?"":e)},wr[D]=(r,e)=>{r[V]===lr?r[c]=!!e:"radio"===r[V]?r[c]=r[D]==e:r[D]!=e&&(r[D]=null==e?"":e)},wr.attr=(r,e,t)=>{null==e||!1===e?r[J](t):(e=!0===e?"":String(e),r[I](t)!==e&&r.setAttribute(t,e))},wr[fr]=(r,e)=>{var t=r._n||"",a="";if("string"==typeof e)a=e;else if(e)for(var n in e)e[n]&&(a+=(a?" ":"")+n);t=t+(t&&a?" ":"")+a,r[dr]!==t&&(r[dr]=t)};var Nr=(E,r)=>{if(E._m)return E._m;var e=E[I]("s-data");if(p[e]){e=p[e](),r&&L.setPrototypeOf(e,r);var S=Pr(e);S.$refs={},S.$root=E,S.$store=x,S.$parent=r;var t=[],a=L[z](null),O=r=>{var e=r.target;if(r[V]!==ir||!e._c)for(var t=E[Y],a=r[V];e&&e!==t;){var n=e._h&&e._h[a];if(n)for(var o=e._s,i=n[j];i--;){var l=n[i],v=l.p;if(l.model){var f=e[V]===lr?e[c]:e[D];if("string"!=typeof f||(l=f[pr]())&&isFinite(l)&&(48===l[mr](0)&&1!==l[j]&&46!==l[mr](1)||(f=Number(l))),"string"==typeof v)o&&(o[v]=f);else{for(var s=o,u=0,p=v[j]-1;u<p&&s;)s=s[v[u++]];s&&(s[v[p]]=f)}}else typeof(f=br(o,v)).val==vr&&f.val[R](f.ctx,r)}e=e[Y]}},T=r=>{a[r]||(a[r]=!0,E[or](r,O))},C=(h,m,t)=>{if(1===h.nodeType&&!h[Q]("s-ignore"))if(h!==E&&h[Q]("s-data"))(r=Nr(h,m))&&t[F](r.unmount);else{var r=!(v=h[I]("s-if"))&&"TEMPLATE"===h[U]&&h[I]("s-for"),a=[];if(h[Q](fr)&&!h._n&&(h._n=h[dr]),v){var g=q[nr](""),e=null,n=[];h[rr](g);var o="!"===v[0],i=-1===(l=o?v[H](1):v)[M](".")?l:l[B](".");return t[F](()=>{n[K](r=>r())}),t[F](Ar(()=>{var r=br(m,i).val;o&&(r=!r),r?e||((e=h[tr](!0))[J]("s-if"),C(e,m,n),g[Y][er](e,g)):e&&(n[K](r=>r()),n=[],e[ar](),e=null)},gr))}if(r&&-1!==(v=r[M](" in "))){var b,l=r[H](0,v)[pr](),v=r[H](v+4)[pr](),x=(l=l.replace(/[()]/g,"")[B](","))[0][pr](),A=l[1]?l[1][pr]():null,P=-1===v[M](".")?v:v[B]("."),w=(v=h[I]("s-key"))?-1===v[M](".")?v:v[B]("."):null,g=q[nr](""),N=L[z](null);return h[rr](g),t[F](()=>{for(var r in N)N[r][cr][K](r=>r())}),t[F](Ar(()=>{var r=br(m,P).val||[];$[G](r)&&xr(r,j);var e=q.createDocumentFragment(),t=g;b=L[z](null);for(var a,n=$[G](r),o=n?r:L.keys(r),i=(n?r:o)[j],l=0;l<i;l++){var v=n?l:o[l],f=n?r[l]:r[v],s=null==f||typeof f!=sr?String(f):w?br(f,w).val:String(v)+"_o";b[s]&&(s+="_"+l);var u=N[s];if(u)u.scope[x]=f,A&&(u.scope[A]=v);else{var p=h.content[tr](!0),c=Pr(L[z](m));c[x]=f,A&&(c[A]=v);for(var _=$[W][H][R](p.childNodes),d=[],y=0;y<_[j];y++)C(_[y],c,d);u={nodes:_,scope:c,cleanups:d},N[s]=u}if(u[_r][0]!==t[Z]){for(y=0;y<u[_r][j];y++)e.appendChild(u[_r][y]);t[Y][er](e,t[Z])}t=u[_r][u[_r][j]-1],b[s]=!0}for(a in N)b[a]||(N[a][cr][K](r=>r()),N[a][_r][K](r=>r[ar]()),delete N[a])},gr))}if(h.hasAttributes())for(var f=h.attributes,s=f[j];s--;){var u,p,c=f[s],_=c[X],d=c[D];58===_[mr](0)?(u=_[H](1),c=(p=33===d[mr](0))?d[H](1):d,i=-1===c[M](".")?c:c[B]("."),a[F]({type:"attr",name:u,path:i,neg:p})):115===_[mr](0)&&45===_[mr](1)&&(p=_[H](2),i=-1===d[M](".")?d:d[B]("."),p===hr||p===yr?(r=>{var e=br(m,i);typeof e.val==vr&&(r===hr?gr(()=>{var r=e.val[R](e.ctx,h);typeof r==vr&&t[F](r)}):t[F](()=>e.val[R](e.ctx,h)))})(p):"effect"===p?t[F](Ar(()=>{var r=br(m,i);typeof r.val==vr&&r.val[R](r.ctx,h)},gr)):"model"===p?(a[F]({type:D,path:i}),h._s=m,h._h=h._h||{},(_=h[V]===lr||"radio"===h[V]||"SELECT"===h[U]?"change":ir)==ir&&(h[or]("compositionstart",()=>h._c=!0),h[or]("compositionend",()=>{h._c=!1,O({target:h,type:ir})})),(h._h[_]=h._h[_]||[])[ur]({model:!0,p:i}),T(_)):"ref"===p?S.$refs[d]=h:wr[p]?a[F]({type:p,path:i}):(h._s=m,h._h=h._h||{},(h._h[p]=h._h[p]||[])[F]({p:i}),T(p)))}a[j]&&t[F](Ar(()=>{for(var r=a[j];r--;){var e=a[r],t=(t=br(m,e.path)).val&&typeof t.val==vr?t.val[R](t.ctx,h):t.val;"attr"===e[V]?(e.neg&&(t=!t),e[X]===fr?wr[fr](h,t):wr.attr(h,t,e[X])):wr[e[V]](h,t)}},gr));for(var y=h.firstChild;y;){var k=y[Z];C(y,m,t),y=k}}};return C(E,S,t),S[hr]&&S[hr](),r={unmount:()=>{for(var r in S[yr]&&S[yr][R](S),t[K](r=>r()),a)E.removeEventListener(r,O);E._m=null}},E._m=r}};return{data:(r,e)=>{p[r]=e},start:()=>{for(var r=q.querySelectorAll("[s-data]"),e=r[j];e--;)Nr(r[e])},store:(r,e)=>void 0===e?x[r]:x[r]=e,raw:r=>r&&r._p||r,mount:r=>Nr(r),unmount:r=>{r&&r._m&&r._m.unmount()}}})();export default spiki;
package/spiki.js CHANGED
@@ -217,12 +217,11 @@ var spiki = (() => {
217
217
  };
218
218
 
219
219
  var mount = (rootElement, parentScope) => {
220
- if (rootElement._m) return;
220
+ if (rootElement._m) return rootElement._m;
221
221
 
222
222
  var name = rootElement.getAttribute('s-data');
223
223
  if (!cmpReg[name]) return;
224
224
 
225
- rootElement._m = true;
226
225
  var data = cmpReg[name]();
227
226
  if (parentScope) Object.setPrototypeOf(data, parentScope);
228
227
 
@@ -421,7 +420,12 @@ var spiki = (() => {
421
420
  ((type, path) => {
422
421
  var result = evalPath(scope, path);
423
422
  if (typeof result.val === 'function') {
424
- if (type === 'init') nextTick(() => result.val.call(result.ctx, el));
423
+ if (type === 'init') {
424
+ nextTick(() => {
425
+ var cleanupFn = result.val.call(result.ctx, el);
426
+ if (typeof cleanupFn === 'function') parentCleanups.push(cleanupFn);
427
+ });
428
+ }
425
429
  else parentCleanups.push(() => result.val.call(result.ctx, el));
426
430
  }
427
431
  })(type, p);
@@ -487,14 +491,16 @@ var spiki = (() => {
487
491
  walk(rootElement, state, cleanups);
488
492
  if (state.init) state.init();
489
493
 
490
- return {
494
+ var instance = {
491
495
  unmount: () => {
492
496
  if (state.destroy) state.destroy.call(state);
493
497
  cleanups.forEach(c => c());
494
498
  for(var k in listeners) rootElement.removeEventListener(k, handle);
495
- rootElement._m = false;
499
+ rootElement._m = null;
496
500
  }
497
501
  };
502
+ rootElement._m = instance;
503
+ return instance;
498
504
  };
499
505
 
500
506
  return {
@@ -505,7 +511,9 @@ var spiki = (() => {
505
511
  while (i--) mount(els[i]);
506
512
  },
507
513
  store: (k, v) => v === undefined ? globalStore[k] : (globalStore[k] = v),
508
- raw: (o) => (o && o._p) || o
514
+ raw: (o) => (o && o._p) || o,
515
+ mount: (el) => mount(el),
516
+ unmount: (el) => { if (el && el._m) el._m.unmount(); }
509
517
  };
510
518
  })();
511
519
 
package/spiki.min.js CHANGED
@@ -1 +1 @@
1
- (()=>{"use strict";var r=(()=>{var L=Object,$=Array,s=Reflect,r=Promise,o=Node,q=document,j="length",D="value",F="push",K="forEach",M="indexOf",B="split",H="slice",R="call",i="get",W="prototype",f="hasOwnProperty",p="getPrototypeOf",t="defineProperty",z="create",G="isArray",I="getAttribute",J="removeAttribute",Q="hasAttribute",U="tagName",V="type",X="name",c="checked",Y="parentNode",Z="nextSibling",a="textContent",n="innerHTML",rr="replaceWith",er="insertBefore",tr="cloneNode",ar="remove",nr="createTextNode",or="addEventListener",ir="input",lr="checkbox",vr="function",sr="class",fr="object",pr="unshift",ur="trim",cr="cleanups",dr="nodes",l="deps",_r="className",yr="destroy",hr="init",mr="charCodeAt",v="sched",u=L[z](null),d=[],_=!1,y=null,h=!1,e=r.resolve(),gr=r=>{r._q||(r._q=!0,d[F](r),_||(_=!0,e.then(()=>{var r=d;_=!(d=[]);for(var e=r[j];e--;)r[e]._q=!1,r[e]()})))},br=(r,e)=>{if("string"==typeof e)return{ctx:r,val:r?r[e]:void 0};for(var t=0,a=e[j];t<a-1&&r;)r=r[e[t++]];return{ctx:r,val:r?r[e[a-1]]:void 0}},m={};[F,"pop","shift",pr,"splice","sort","reverse"][K](r=>{m[r]=function(){h=!0;try{return $[W][r].apply(this,arguments)}finally{h=!1,g(this,j)}}});var xr=(r,e)=>{!y||-1===(e=(r=r._d||(L[t](r,"_d",{value:L[z](null),writable:!0}),r._d))[e]||(r[e]=[]))[M](y)&&(e[F](y),y[l][F](e))},g=(r,e)=>{if(!h&&r._d&&r._d[e])for(var t=r._d[e][H](),a=0,n=t[j];a<n;a++){var o=t[a];o[v]?o[v](o):o()}},b=r=>{for(var e=r[l][j];e--;){var t=r[l][e],a=t[M](r);-1!==a&&(t[a]=t[t[j]-1],t.pop())}r[l]=[]},Ar=(e,r)=>{var t=()=>{b(t);var r=y;y=t;try{e()}finally{y=r}};return t[l]=[],t[v]=r,t(),()=>b(t)},Pr=r=>{if(!r||typeof r!=fr||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($[G](r)&&m[f](e))return m[e];var a=L.getOwnPropertyDescriptor(r,e);if(a&&a[i]){var n="_"+e;return n in r||Ar(()=>t[n]=a[i][R](t)),t[n]}return xr(r,e),!(e=s[i](r,e,t))||typeof e!=fr||e instanceof o?e:Pr(e)},set:(r,e,t,a)=>{var n=r[e],o=$[G](r),i=o?Number(e)<r[j]:L[W][f][R](r,e);if(!o&&!i)for(var l=L[p](r);l&&l!==L[W];){if(L[W][f][R](l,e)){var v=s.set(l,e,t);return h||t===n||g(r,e),v}l=L[p](l)}return v=s.set(r,e,t,a),!h&&v&&(i&&t===n||(g(r,e),o?g(r,j):i||g(r,"_k"))),v},deleteProperty:(r,e)=>{var t=L[W][f][R](r,e),a=s.deleteProperty(r,e);return a&&t&&(g(r,e),$[G](r)?g(r,j):g(r,"_k")),a},ownKeys:r=>(xr(r,"_k"),s.ownKeys(r))});return L[t](r,"_p",{value:e,enumerable:!1}),e},x=Pr({}),wr=L[z](null);wr.text=(r,e)=>{e=null==e?"":e,r[a]!==String(e)&&(r[a]=e)},wr.html=(r,e)=>{r[n]!=e&&(r[n]=null==e?"":e)},wr[D]=(r,e)=>{r[V]===lr?r[c]=!!e:"radio"===r[V]?r[c]=r[D]==e:r[D]!=e&&(r[D]=null==e?"":e)},wr.attr=(r,e,t)=>{null==e||!1===e?r[J](t):(e=!0===e?"":String(e),r[I](t)!==e&&r.setAttribute(t,e))},wr[sr]=(r,e)=>{var t=r._n||"",a="";if("string"==typeof e)a=e;else if(e)for(var n in e)e[n]&&(a+=(a?" ":"")+n);t=t+(t&&a?" ":"")+a,r[_r]!==t&&(r[_r]=t)};var Nr=(E,r)=>{if(!E._m){var e=E[I]("s-data");if(u[e]){E._m=!0,e=u[e](),r&&L.setPrototypeOf(e,r);var S=Pr(e);S.$refs={},S.$root=E,S.$store=x,S.$parent=r;var t=[],a=L[z](null),O=r=>{var e=r.target;if(r[V]!==ir||!e._c)for(var t=E[Y],a=r[V];e&&e!==t;){var n=e._h&&e._h[a];if(n)for(var o=e._s,i=n[j];i--;){var l=n[i],v=l.p;if(l.model){var s=e[V]===lr?e[c]:e[D];if("string"!=typeof s||(l=s[ur]())&&isFinite(l)&&(48===l[mr](0)&&1!==l[j]&&46!==l[mr](1)||(s=Number(l))),"string"==typeof v)o&&(o[v]=s);else{for(var f=o,p=0,u=v[j]-1;p<u&&f;)f=f[v[p++]];f&&(f[v[u]]=s)}}else typeof(s=br(o,v)).val==vr&&s.val[R](s.ctx,r)}e=e[Y]}},T=r=>{a[r]||(a[r]=!0,E[or](r,O))},C=(h,m,t)=>{if(1===h.nodeType&&!h[Q]("s-ignore"))if(h!==E&&h[Q]("s-data"))(r=Nr(h,m))&&t[F](r.unmount);else{var r=!(v=h[I]("s-if"))&&"TEMPLATE"===h[U]&&h[I]("s-for"),a=[];if(h[Q](sr)&&!h._n&&(h._n=h[_r]),v){var g=q[nr](""),e=null,n=[];h[rr](g);var o="!"===v[0],i=-1===(l=o?v[H](1):v)[M](".")?l:l[B](".");return t[F](()=>{n[K](r=>r())}),t[F](Ar(()=>{var r=br(m,i).val;o&&(r=!r),r?e||((e=h[tr](!0))[J]("s-if"),C(e,m,n),g[Y][er](e,g)):e&&(n[K](r=>r()),n=[],e[ar](),e=null)},gr))}if(r&&-1!==(v=r[M](" in "))){var b,l=r[H](0,v)[ur](),v=r[H](v+4)[ur](),x=(l=l.replace(/[()]/g,"")[B](","))[0][ur](),A=l[1]?l[1][ur]():null,P=-1===v[M](".")?v:v[B]("."),w=(v=h[I]("s-key"))?-1===v[M](".")?v:v[B]("."):null,g=q[nr](""),N=L[z](null);return h[rr](g),t[F](()=>{for(var r in N)N[r][cr][K](r=>r())}),t[F](Ar(()=>{var r=br(m,P).val||[];$[G](r)&&xr(r,j);var e=q.createDocumentFragment(),t=g;b=L[z](null);for(var a,n=$[G](r),o=n?r:L.keys(r),i=(n?r:o)[j],l=0;l<i;l++){var v=n?l:o[l],s=n?r[l]:r[v],f=null==s||typeof s!=fr?String(s):w?br(s,w).val:String(v)+"_o";b[f]&&(f+="_"+l);var p=N[f];if(p)p.scope[x]=s,A&&(p.scope[A]=v);else{var u=h.content[tr](!0),c=Pr(L[z](m));c[x]=s,A&&(c[A]=v);for(var d=$[W][H][R](u.childNodes),_=[],y=0;y<d[j];y++)C(d[y],c,_);p={nodes:d,scope:c,cleanups:_},N[f]=p}if(p[dr][0]!==t[Z]){for(y=0;y<p[dr][j];y++)e.appendChild(p[dr][y]);t[Y][er](e,t[Z])}t=p[dr][p[dr][j]-1],b[f]=!0}for(a in N)b[a]||(N[a][cr][K](r=>r()),N[a][dr][K](r=>r[ar]()),delete N[a])},gr))}if(h.hasAttributes())for(var s=h.attributes,f=s[j];f--;){var p,u,c=s[f],d=c[X],_=c[D];58===d[mr](0)?(p=d[H](1),c=(u=33===_[mr](0))?_[H](1):_,i=-1===c[M](".")?c:c[B]("."),a[F]({type:"attr",name:p,path:i,neg:u})):115===d[mr](0)&&45===d[mr](1)&&(u=d[H](2),i=-1===_[M](".")?_:_[B]("."),u===hr||u===yr?(r=>{var e=br(m,i);typeof e.val==vr&&(r===hr?gr(()=>e.val[R](e.ctx,h)):t[F](()=>e.val[R](e.ctx,h)))})(u):"effect"===u?t[F](Ar(()=>{var r=br(m,i);typeof r.val==vr&&r.val[R](r.ctx,h)},gr)):"model"===u?(a[F]({type:D,path:i}),h._s=m,h._h=h._h||{},(d=h[V]===lr||"radio"===h[V]||"SELECT"===h[U]?"change":ir)==ir&&(h[or]("compositionstart",()=>h._c=!0),h[or]("compositionend",()=>{h._c=!1,O({target:h,type:ir})})),(h._h[d]=h._h[d]||[])[pr]({model:!0,p:i}),T(d)):"ref"===u?S.$refs[_]=h:wr[u]?a[F]({type:u,path:i}):(h._s=m,h._h=h._h||{},(h._h[u]=h._h[u]||[])[F]({p:i}),T(u)))}a[j]&&t[F](Ar(()=>{for(var r=a[j];r--;){var e=a[r],t=(t=br(m,e.path)).val&&typeof t.val==vr?t.val[R](t.ctx,h):t.val;"attr"===e[V]?(e.neg&&(t=!t),e[X]===sr?wr[sr](h,t):wr.attr(h,t,e[X])):wr[e[V]](h,t)}},gr));for(var y=h.firstChild;y;){var k=y[Z];C(y,m,t),y=k}}};return C(E,S,t),S[hr]&&S[hr](),{unmount:()=>{for(var r in S[yr]&&S[yr][R](S),t[K](r=>r()),a)E.removeEventListener(r,O);E._m=!1}}}}};return{data:(r,e)=>{u[r]=e},start:()=>{for(var r=q.querySelectorAll("[s-data]"),e=r[j];e--;)Nr(r[e])},store:(r,e)=>void 0===e?x[r]:x[r]=e,raw:r=>r&&r._p||r}})();window.spiki=r})();
1
+ (()=>{"use strict";var r=(()=>{var L=Object,$=Array,f=Reflect,r=Promise,o=Node,q=document,j="length",D="value",F="push",K="forEach",M="indexOf",B="split",H="slice",R="call",i="get",W="prototype",s="hasOwnProperty",u="getPrototypeOf",t="defineProperty",z="create",G="isArray",I="getAttribute",J="removeAttribute",Q="hasAttribute",U="tagName",V="type",X="name",c="checked",Y="parentNode",Z="nextSibling",a="textContent",n="innerHTML",rr="replaceWith",er="insertBefore",tr="cloneNode",ar="remove",nr="createTextNode",or="addEventListener",ir="input",lr="checkbox",vr="function",fr="class",sr="object",ur="unshift",pr="trim",cr="cleanups",_r="nodes",l="deps",dr="className",yr="destroy",hr="init",mr="charCodeAt",v="sched",p=L[z](null),_=[],d=!1,y=null,h=!1,e=r.resolve(),gr=r=>{r._q||(r._q=!0,_[F](r),d||(d=!0,e.then(()=>{var r=_;d=!(_=[]);for(var e=r[j];e--;)r[e]._q=!1,r[e]()})))},br=(r,e)=>{if("string"==typeof e)return{ctx:r,val:r?r[e]:void 0};for(var t=0,a=e[j];t<a-1&&r;)r=r[e[t++]];return{ctx:r,val:r?r[e[a-1]]:void 0}},m={};[F,"pop","shift",ur,"splice","sort","reverse"][K](r=>{m[r]=function(...args){h=!0;try{return $[W][r].apply(this,...args)}finally{h=!1,g(this,j)}}});var xr=(r,e)=>{!y||-1===(e=(r=r._d||(L[t](r,"_d",{value:L[z](null),writable:!0}),r._d))[e]||(r[e]=[]))[M](y)&&(e[F](y),y[l][F](e))},g=(r,e)=>{if(!h&&r._d&&r._d[e])for(var t=r._d[e][H](),a=0,n=t[j];a<n;a++){var o=t[a];o[v]?o[v](o):o()}},b=r=>{for(var e=r[l][j];e--;){var t=r[l][e],a=t[M](r);-1!==a&&(t[a]=t[t[j]-1],t.pop())}r[l]=[]},Ar=(e,r)=>{var t=()=>{b(t);var r=y;y=t;try{e()}finally{y=r}};return t[l]=[],t[v]=r,t(),()=>b(t)},Pr=r=>{if(!r||typeof r!=sr||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($[G](r)&&m[s](e))return m[e];var a=L.getOwnPropertyDescriptor(r,e);if(a&&a[i]){var n="_"+e;return n in r||Ar(()=>t[n]=a[i][R](t)),t[n]}return xr(r,e),!(e=f[i](r,e,t))||typeof e!=sr||e instanceof o?e:Pr(e)},set:(r,e,t,a)=>{var n=r[e],o=$[G](r),i=o?Number(e)<r[j]:L[W][s][R](r,e);if(!o&&!i)for(var l=L[u](r);l&&l!==L[W];){if(L[W][s][R](l,e)){var v=f.set(l,e,t);return h||t===n||g(r,e),v}l=L[u](l)}return v=f.set(r,e,t,a),!h&&v&&(i&&t===n||(g(r,e),o?g(r,j):i||g(r,"_k"))),v},deleteProperty:(r,e)=>{var t=L[W][s][R](r,e),a=f.deleteProperty(r,e);return a&&t&&(g(r,e),$[G](r)?g(r,j):g(r,"_k")),a},ownKeys:r=>(xr(r,"_k"),f.ownKeys(r))});return L[t](r,"_p",{value:e,enumerable:!1}),e},x=Pr({}),wr=L[z](null);wr.text=(r,e)=>{e=null==e?"":e,r[a]!==String(e)&&(r[a]=e)},wr.html=(r,e)=>{r[n]!=e&&(r[n]=null==e?"":e)},wr[D]=(r,e)=>{r[V]===lr?r[c]=!!e:"radio"===r[V]?r[c]=r[D]==e:r[D]!=e&&(r[D]=null==e?"":e)},wr.attr=(r,e,t)=>{null==e||!1===e?r[J](t):(e=!0===e?"":String(e),r[I](t)!==e&&r.setAttribute(t,e))},wr[fr]=(r,e)=>{var t=r._n||"",a="";if("string"==typeof e)a=e;else if(e)for(var n in e)e[n]&&(a+=(a?" ":"")+n);t=t+(t&&a?" ":"")+a,r[dr]!==t&&(r[dr]=t)};var Nr=(E,r)=>{if(E._m)return E._m;var e=E[I]("s-data");if(p[e]){e=p[e](),r&&L.setPrototypeOf(e,r);var S=Pr(e);S.$refs={},S.$root=E,S.$store=x,S.$parent=r;var t=[],a=L[z](null),O=r=>{var e=r.target;if(r[V]!==ir||!e._c)for(var t=E[Y],a=r[V];e&&e!==t;){var n=e._h&&e._h[a];if(n)for(var o=e._s,i=n[j];i--;){var l=n[i],v=l.p;if(l.model){var f=e[V]===lr?e[c]:e[D];if("string"!=typeof f||(l=f[pr]())&&isFinite(l)&&(48===l[mr](0)&&1!==l[j]&&46!==l[mr](1)||(f=Number(l))),"string"==typeof v)o&&(o[v]=f);else{for(var s=o,u=0,p=v[j]-1;u<p&&s;)s=s[v[u++]];s&&(s[v[p]]=f)}}else typeof(f=br(o,v)).val==vr&&f.val[R](f.ctx,r)}e=e[Y]}},T=r=>{a[r]||(a[r]=!0,E[or](r,O))},C=(h,m,t)=>{if(1===h.nodeType&&!h[Q]("s-ignore"))if(h!==E&&h[Q]("s-data"))(r=Nr(h,m))&&t[F](r.unmount);else{var r=!(v=h[I]("s-if"))&&"TEMPLATE"===h[U]&&h[I]("s-for"),a=[];if(h[Q](fr)&&!h._n&&(h._n=h[dr]),v){var g=q[nr](""),e=null,n=[];h[rr](g);var o="!"===v[0],i=-1===(l=o?v[H](1):v)[M](".")?l:l[B](".");return t[F](()=>{n[K](r=>r())}),t[F](Ar(()=>{var r=br(m,i).val;o&&(r=!r),r?e||((e=h[tr](!0))[J]("s-if"),C(e,m,n),g[Y][er](e,g)):e&&(n[K](r=>r()),n=[],e[ar](),e=null)},gr))}if(r&&-1!==(v=r[M](" in "))){var b,l=r[H](0,v)[pr](),v=r[H](v+4)[pr](),x=(l=l.replace(/[()]/g,"")[B](","))[0][pr](),A=l[1]?l[1][pr]():null,P=-1===v[M](".")?v:v[B]("."),w=(v=h[I]("s-key"))?-1===v[M](".")?v:v[B]("."):null,g=q[nr](""),N=L[z](null);return h[rr](g),t[F](()=>{for(var r in N)N[r][cr][K](r=>r())}),t[F](Ar(()=>{var r=br(m,P).val||[];$[G](r)&&xr(r,j);var e=q.createDocumentFragment(),t=g;b=L[z](null);for(var a,n=$[G](r),o=n?r:L.keys(r),i=(n?r:o)[j],l=0;l<i;l++){var v=n?l:o[l],f=n?r[l]:r[v],s=null==f||typeof f!=sr?String(f):w?br(f,w).val:String(v)+"_o";b[s]&&(s+="_"+l);var u=N[s];if(u)u.scope[x]=f,A&&(u.scope[A]=v);else{var p=h.content[tr](!0),c=Pr(L[z](m));c[x]=f,A&&(c[A]=v);for(var _=$[W][H][R](p.childNodes),d=[],y=0;y<_[j];y++)C(_[y],c,d);u={nodes:_,scope:c,cleanups:d},N[s]=u}if(u[_r][0]!==t[Z]){for(y=0;y<u[_r][j];y++)e.appendChild(u[_r][y]);t[Y][er](e,t[Z])}t=u[_r][u[_r][j]-1],b[s]=!0}for(a in N)b[a]||(N[a][cr][K](r=>r()),N[a][_r][K](r=>r[ar]()),delete N[a])},gr))}if(h.hasAttributes())for(var f=h.attributes,s=f[j];s--;){var u,p,c=f[s],_=c[X],d=c[D];58===_[mr](0)?(u=_[H](1),c=(p=33===d[mr](0))?d[H](1):d,i=-1===c[M](".")?c:c[B]("."),a[F]({type:"attr",name:u,path:i,neg:p})):115===_[mr](0)&&45===_[mr](1)&&(p=_[H](2),i=-1===d[M](".")?d:d[B]("."),p===hr||p===yr?(r=>{var e=br(m,i);typeof e.val==vr&&(r===hr?gr(()=>{var r=e.val[R](e.ctx,h);typeof r==vr&&t[F](r)}):t[F](()=>e.val[R](e.ctx,h)))})(p):"effect"===p?t[F](Ar(()=>{var r=br(m,i);typeof r.val==vr&&r.val[R](r.ctx,h)},gr)):"model"===p?(a[F]({type:D,path:i}),h._s=m,h._h=h._h||{},(_=h[V]===lr||"radio"===h[V]||"SELECT"===h[U]?"change":ir)==ir&&(h[or]("compositionstart",()=>h._c=!0),h[or]("compositionend",()=>{h._c=!1,O({target:h,type:ir})})),(h._h[_]=h._h[_]||[])[ur]({model:!0,p:i}),T(_)):"ref"===p?S.$refs[d]=h:wr[p]?a[F]({type:p,path:i}):(h._s=m,h._h=h._h||{},(h._h[p]=h._h[p]||[])[F]({p:i}),T(p)))}a[j]&&t[F](Ar(()=>{for(var r=a[j];r--;){var e=a[r],t=(t=br(m,e.path)).val&&typeof t.val==vr?t.val[R](t.ctx,h):t.val;"attr"===e[V]?(e.neg&&(t=!t),e[X]===fr?wr[fr](h,t):wr.attr(h,t,e[X])):wr[e[V]](h,t)}},gr));for(var y=h.firstChild;y;){var k=y[Z];C(y,m,t),y=k}}};return C(E,S,t),S[hr]&&S[hr](),r={unmount:()=>{for(var r in S[yr]&&S[yr][R](S),t[K](r=>r()),a)E.removeEventListener(r,O);E._m=null}},E._m=r}};return{data:(r,e)=>{p[r]=e},start:()=>{for(var r=q.querySelectorAll("[s-data]"),e=r[j];e--;)Nr(r[e])},store:(r,e)=>void 0===e?x[r]:x[r]=e,raw:r=>r&&r._p||r,mount:r=>Nr(r),unmount:r=>{r&&r._m&&r._m.unmount()}}})();window.spiki=r})();