taggedjs 0.0.14 → 2.1.1

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.
Files changed (2) hide show
  1. package/index.js +1 -1
  2. package/package.json +1 -1
package/index.js CHANGED
@@ -1 +1 @@
1
- var t={d:(e,r)=>{for(var n in r)t.o(r,n)&&!t.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:r[n]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e)},e={};t.d(e,{xQ:()=>r,Vp:()=>V,dy:()=>O,a:()=>m,TF:()=>$,SB:()=>C,_q:()=>B,Dc:()=>N});class r{subscribers=[];value;subscribe(t){this.subscribers.push(t),r.globalSubs.push(t),++r.globalSubCount;const e=()=>{n(this.subscribers,t),n(r.globalSubs,t),--r.globalSubCount};return e.unsubscribe=e,e}set(t){this.value=t,this.subscribers.forEach((e=>{e.value=t,e(t)}))}next=this.set}function n(t,e){const r=t.indexOf(e);-1!==r&&t.splice(r,1)}r.globalSubCount=0,r.globalSubs=[];class o extends r{value;constructor(t){super(),this.value=t}subscribe(t){const e=super.subscribe(t);return t(this.value),e}}function s(t,e=new WeakMap){if(null===t||"object"!=typeof t)return t;if(e.has(t))return e.get(t);if(t instanceof Date)return new Date(t);if(t instanceof RegExp)return new RegExp(t);const r=Array.isArray(t)?[]:Object.create(Object.getPrototypeOf(t));if(e.set(t,r),Array.isArray(t))for(let n=0;n<t.length;n++)r[n]=s(t[n],e);else for(const n in t)t.hasOwnProperty(n)&&(r[n]=s(t[n],e));return r}function a(t,e){if(t===e)return!0;if("object"!=typeof t||"object"!=typeof e||null===t||null===e)return!1;const r=Object.keys(t),n=Object.keys(e);if(r.length!==n.length)return!1;for(const o of r)if(!n.includes(o)||!a(t[o],e[o])){if(t[o]instanceof Function&&e[o]instanceof Function&&t[o].toString()===e[o].toString())continue;return!1}if(Array.isArray(t)&&Array.isArray(e)){if(t.length!==e.length)return!1;for(let r=0;r<t.length;r++)if(!a(t[r],e[r]))return!1}else if(Array.isArray(t)||Array.isArray(e))return!1;return!0}function i(t,e,r){const n=t.split(".");if("style"===n[0]&&(r.style[n[1]]=e),"class"===n[0])return n.pop(),void(e?n.forEach((t=>r.classList.remove(t))):n.forEach((t=>r.classList.add(t))))}const u=/^\s*{/,c=/}\s*$/;function l(t,e,n){t.getAttributeNames().forEach((o=>{const s=t.getAttribute(o),a=function(t){return t.search(/^(class|style)(\.)/)>=0}(o);if(s&&s.search(u)>=0&&s.search(c)>=0){const u=s.replace("{","").split("").reverse().join("").replace("}","").split("").reverse().join(""),c=e[u];if(c instanceof Function)return void(t[o]=function(...e){c(t,e)});if(c instanceof r){t.removeAttribute(o);const e=e=>{if(e instanceof Function)return t[o]=function(...r){e(t,r)},void(t[o].tagFunction=e);a&&i(o,e,t),e&&t.setAttribute(o,e),void 0===e||!1===e||null===e?t.removeAttribute(o):t.setAttribute(o,e)},r=c.subscribe(e);return void n.cloneSubs.push(r)}t.setAttribute(o,c.value)}else if(a)return i(o,s,t)}))}const p=/(?:<[^>]*>)|({__tagVar[^}]+})/g;function d(t,e,n){if(!t.children||"TEMPLATE"===t.tagName)return;const o={added:0,removed:0},i=new Array(...t.children);function u(t,i,u){u.forEach(((t,e)=>{if(!(e<i)&&"TEMPLATE"===t.tagName&&void 0!==t.getAttribute("interpolate")&&void 0!==t.getAttribute("end"))return t})),function(t,e,n,o){if(!t.hasAttribute("end"))return;const i=t.getAttribute("id");if(i?.substring(0,x.length)!==x)return;const u=e[i];if(u instanceof r){const e=e=>{!function(t,e,r,n,o){if(t instanceof V)return t.tagSupport||(t.tagSupport=v(),t.tagSupport.mutatingRender=n.tagSupport.mutatingRender,t.tagSupport.oldest=t.tagSupport.oldest||t,n.children.push(t),t.ownerTag=n),void S(t,e,r,{counts:o});if(t instanceof Array&&t.every((t=>t instanceof V)))return function(t,e,r,n,o){t.lastArray=t.lastArray||[];let s=0;return t.lastArray=t.lastArray.filter(((r,n)=>{const a=e.length-1<n-s,i=e[n-s],u=i?.arrayValue;return!a&&u===r.tag.arrayValue||(t.lastArray[n].tag.destroy(o.removed,!1),++s,++o.removed,!1)})),void e.forEach(((e,s)=>{if(e.tagSupport=n.tagSupport,e.ownerTag=n,n.children.push(e),void 0===e.arrayValue&&!Object.keys(e).includes("arrayValue")){const t=new Error("Use html`...`.key(item) instead of html`...` to template an Array");throw t.code="add-array-key",t}const a=t.lastArray[s];if(a)return void(a.tag.arrayValue===e.arrayValue&&a.tag.updateValues(e.values));const i=r||r.clone;S(e,t,i,{index:s,counts:o})}))}(e,t,r,n,o);if(T(t))return function(t,e,r,n,o){if(!0!==t.tagged){let e=t.name||t.constructor?.name;throw"Function"===e&&(e=void 0),new Error(`Not a tag component. Wrap your function with tag(). Example tag(props => html\`\`) on component:\n\n${e||t.toString().substring(0,120)}\n\n`)}const i=e.tagSupport||v(t);t.setCallback(n.tagSupport.async),i.mutatingRender=()=>{const r=i.renderCount;if(e.tag){if(function(t){t.providers.filter((t=>!a(t.instance,t.clone))).forEach((e=>{!function(t,e){E(t,e).forEach((({tag:t,renderCount:e,provider:r})=>{e===t.tagSupport.renderCount&&(r.clone=s(r.instance),t.tagSupport.render())}))}(t.getAppElement(),e),e.clone=s(e.instance)}))}(e.tag),r!==i.renderCount)return i.newest;if(!i.hasPropChanges(t.props,t.newProps,e.tag.tagSupport.templater.props))return i.newest=t.redraw(t.newProps),i.newest}return i.newest=n.tagSupport.render()};const u=t;let c=u.newest;y.ownerTag=n;return!c&&(c=u(i),c.afterRender(),u.oldest=c,i.oldest=c,t.oldest=c),u.newest=c,c.ownerTag=n,c.ownerTag=n,n.children.push(c),c.setSupport(i),void S(c,e,r,{counts:o})}(t,e,r,n,o);if(e.tag){const n=r.clone||r;n.parentNode.insertBefore(r,n);const s=o.removed,a=e.tag.destroy(s);o.removed=s+a,delete e.tag;const i=w(t,n);return void(r.clone=i)}const i=r.clone||r,u=w(t,i);r.clone=u;const c=n.clones.indexOf(i);c>=0&&!n.clones.includes(u)&&!i.parentNode&&(n.clones.splice(c,1),n.clones.push(u))}(e,u,t,n,o),setTimeout((()=>{o.added=0,o.removed=0}),0)},r=u.subscribe(e);return void n.cloneSubs.push(r)}const c=w(u,t.clone||t);n.clones.push(c),t.clone=c}(t,e,n,o)}i.forEach(((t,r)=>{if(u(t,r,i),t.children){const r=new Array(...t.children);r.forEach(((t,o)=>{(function(t){return"TEMPLATE"===t.tagName&&void 0!==t.getAttribute("interpolate")&&void 0!==t.getAttribute("end")})(t)&&u(t,o,r),d(t,e,n)}))}}))}function g(t,e,r){(function(t){const e=function(t){const e=[];return{string:t.replace(p,((t,r)=>{if(t.startsWith("<"))return t;const n=r.substring(1,r.length-1);return e.push(n),`<template interpolate end id="${n}"></template>`})),keys:e}}(t.innerHTML);return e.string=e.string.replace(j,x),t.innerHTML=e.string,e})(t).keys.length&&d(t,e,r),l(t,e,r),function t(n){new Array(...n).forEach((n=>{l(n,e,r),n.children&&t(n.children)}))}(t.children)}function f(t,e,r,n){const o=document.createElement("div");o.id="tag-temp-holder",o.innerHTML="<div></div>"+e.string,g(o,t.update(),t);const s=function(t,e,r){const n=[],o=t.children[0];let s=o.nextSibling;for(t.removeChild(o);s;){const t=s.nextSibling;h(s,e),n.push(s),s=t}return n}(o,r);return t.clones.push(...s),s}function h(t,e){e.parentNode.insertBefore(t,e)}function v(t){const e={templater:t,renderCount:0,mutatingRender:()=>{throw new Error('Tag function "render()" was called in sync but can only be called async')},render:()=>(++e.renderCount,e.mutatingRender()),hasPropChanges:(t,r,n)=>{const o=e.templater.cloneProps;return!(void 0===t&&t===n||a(r,o))},init:t=>{t(),e.init=()=>{}},async:t=>(...r)=>{const n=t(...r);e.render(),n instanceof Promise&&n.then((()=>{e.render()}))}};return e}const y={providers:[],currentTag:void 0,ownerTag:void 0};function b(t){return y.providers.find((e=>e.constructMethod===t))}const m={create:t=>{const e=b(t);if(e)return e.clone=s(e.instance),e.instance;const r=t.constructor?new t:t();return y.providers.push({constructMethod:t,instance:r,clone:s(r)}),r},inject:t=>{const e=b(t);if(e)return e.instance;let r={ownerTag:y.ownerTag};for(;r.ownerTag;){const e=r.ownerTag.providers.find((e=>{if(e.constructMethod===t)return!0}));if(e)return e.clone=s(e.instance),y.providers.push(e),e.instance;r=r.ownerTag}const n=`Could not inject provider: ${t}`;throw console.warn(`${n}. Available providers`,y.providers),new Error(n)}};function w(t,e){const r=e.parentNode;void 0!==t&&!1!==t&&null!==t||(t="");const n=document.createTextNode(t);return r.insertBefore(n,e),r.removeChild(e),n}function S(t,e,r,{index:n,counts:o}){const s=t.getTemplate();if(void 0!==n){const a=e.lastArray[n];return a?.tag.isLikeTag(t)?void a.tag.updateByTag(t):(f(t,s,r).forEach((t=>A(t,o))),void e.lastArray.push({tag:t,index:n}))}if(e.tag&&e.tag.isLikeTag(t)){if(e instanceof Function){const t=e(e.tag.tagSupport);return void e.tag.updateByTag(t)}e.tag.updateByTag(t)}else f(t,s,r.clone||r).forEach((t=>A(t,o))),e.tag=t}function T(t){return t instanceof Function&&t.toString().includes("html`")}function A(t,e){t.getAttribute&&(function(t,e){const r=t.oninit;if(!r)return;const n=r.tagFunction;if(!n)return;const o=n.tagFunction;o&&(o({target:t,stagger:e.added}),++e.added)}(t,e),t.children&&new Array(...t.children).forEach((t=>A(t,e))))}function E(t,e,r=[]){const n=t.providers.find((t=>t.constructMethod===e.constructMethod));return n&&r.push({tag:t,renderCount:t.tagSupport.renderCount,provider:n}),t.children.forEach((t=>E(t,e,r))),r}const R={array:[],rearray:[],currentTag:void 0};function C(t,e){const r=R.rearray[R.array.length];if(r){const[t]=r();return r(t),R.array.push(e),t}return R.array.push(e),t}const x="__tagVar",F="--"+x+"--",P=new RegExp(x,"g"),j=new RegExp(F,"g"),k=[{beforeRedraw:t=>{R.currentTag=t,t.states.length&&R.rearray.push(...t.states)},afterRender:t=>{if(R.rearray.length&&R.rearray.length!==R.array.length)throw new Error(`States lengths mismatched ${R.rearray.length} !== ${R.array.length}`);R.rearray.length=0,t.states=[...R.array],R.array.length=0}},{beforeRedraw:t=>{y.currentTag=t,y.ownerTag=t.ownerTag,t.providers.length&&(y.providers.length=0,y.providers.push(...t.providers))},afterRender:t=>{t.providers=[...y.providers],y.providers.length=0}}];class V{strings;values;context={};clones=[];cloneSubs=[];children=[];tagSupport;ownerTag;arrayValue;constructor(t,e){this.strings=t,this.values=e}states=[];providers=[];beforeRedraw(){k.forEach((t=>t.beforeRedraw(this)))}afterRender(){k.forEach((t=>t.afterRender(this)))}key(t){return this.arrayValue=t,this}destroy(t=0,e=!1){return this.children.forEach(((t,e)=>t.destroy(0,!0))),this.destroySubscriptions(),e||(t=this.destroyClones(t)),t}destroySubscriptions(){this.cloneSubs.forEach((t=>t.unsubscribe())),this.cloneSubs.length=0}destroyClones(t=0){return this.clones.reverse().forEach(((e,r)=>{let n=Promise.resolve();e.ondestroy&&(n=function(t,e){const r=t.ondestroy;if(!r)return;const n=r.tagFunction;if(!n)return;const o=n.tagFunction;if(!o)return;return o({target:t,stagger:e})}(e,t)),n.then((()=>e.parentNode.removeChild(e)))})),this.clones.length=0,t}updateByTag(t){this.updateConfig(t.strings,t.values),this.tagSupport.templater=t.tagSupport.templater}lastTemplateString=void 0;setSupport(t){this.tagSupport=this.tagSupport||t,this.tagSupport.mutatingRender=this.tagSupport.mutatingRender||t.mutatingRender,this.children.forEach((e=>e.setSupport(t)))}updateConfig(t,e){this.strings=t,this.updateValues(e)}getTemplate(){return{string:this.lastTemplateString=this.strings.map(((t,e)=>t.replace(P,F)+(this.values.length>e?`{${x}${e}}`:""))).join(""),strings:this.strings,values:this.values,context:this.context}}isLikeTag(t){return t.lastTemplateString===this.lastTemplateString&&(t.values.length===this.values.length&&!!t.values.every(((t,e)=>{const r=this.values[e];return t instanceof Function&&r instanceof Function?!(t.toString()!==r.toString()):!(t instanceof V&&r instanceof V&&(t.ownerTag=this,this.children.push(t),t.lastTemplateString||t.getTemplate().string,!t.isLikeTag(r)))})))}update(){return this.updateContext(this.context)}updateValues(t){return this.values=t,this.updateContext(this.context)}updateContext(t){return this.strings.map(((e,r)=>{const n=x+r,s=this.values.length>r,i=this.values[r],u=t[n];if(u){const t=u.value?.tag;if(T(i)){const t=i.cloneProps,e=u.tag;if(!u.tag)return M(i,u,this),void i.redraw(t);const r=e.tagSupport,n=i.tagSupport||r||v(i),o=n.templater?.cloneProps,s=n.templater?.props;if(e&&(void 0===s&&s===t||a(o,t)))return;return M(i,u,this),r.templater=i,void(u.value.tag=r.newest=i.redraw(t))}if(t){const e=t.tagSupport,r=i;e.oldest.beforeRedraw();const n=r(e);return r.newest=n,e.oldest.afterRender(),t.updateByTag(n),void u.set(i)}return i instanceof Function?void u.set(L(i,this)):void u.set(i)}T(i)?M(i,t[n]=new o(i),this):i instanceof Function?t[n]=function(t,e){return new o(L(t,e))}(i,this):s&&(i instanceof V&&(i.ownerTag=this,this.children.push(i)),t[n]=new o(i))})),t}getAppElement(){let t=this;for(;t.ownerTag;)t=t.ownerTag;return t}}function L(t,e){function r(r,n){const o=e.tagSupport.renderCount,s=t.bind(r)(...n);if(o===e.tagSupport.renderCount)return e.tagSupport.render(),s instanceof Promise&&s.then((()=>{e.tagSupport.render()})),s}return r.tagFunction=t,r}function M(t,e,r){t.redraw=()=>{const n=e.tag,o=n?.tagSupport||v(t);++o.renderCount,e.tagSupport=o;const s=t;o.mutatingRender=o.mutatingRender||e.tagSupport?.mutatingRender||s.tagSupport.mutatingRender;const a=n?.ownerTag||r;o.oldest?o.oldest.beforeRedraw():y.ownerTag=a;const i=t(o);o.oldest?o.oldest.afterRender():i.afterRender(),t.newest=i,i.ownerTag=a,o.oldest=o.oldest||i,o.newest=i;const u=o.oldest.tagSupport;if(o.oldest.tagSupport=u||o,o.oldest.tagSupport.templater=t,i.setSupport(o),!n||!n.isLikeTag(i))return e.set(t),i;o.oldest.updateByTag(i)}}function O(t,...e){return new V(t,e)}function B(t){return(e,r)=>{const n=e instanceof V,o=function(t,e){if("object"!=typeof t)return t;const r={...t};return Object.entries(r).forEach((([t,e])=>{r[t]=e instanceof Function?(...t)=>((t,e)=>{const r=t(...e);return a.newest?.ownerTag?.tagSupport.render(),r})(e,t):e})),r}(n?0:e),a=t(n?e:o,r);return a.tagged=!0,a.props=e,a.newProps=o,a.cloneProps=s(o),a.setCallback=t=>t,a}}function N(t){return new Promise((e=>{setTimeout((()=>{e(0)}),t)}))}function $(t,e,r){const n=t(r),o=function(t){const e=v(t),r=t(e);return r.afterRender(),r.tagSupport=e,{tag:r,tagSupport:e}}(n),{tag:s,tagSupport:a}=o;let i;a.mutatingRender=()=>{s.beforeRedraw();const t=i=n(s.tagSupport);return s.afterRender(),t.setSupport(s.tagSupport),s.updateByTag(t),i&&i.destroy(0),i};const u=s.updateValues(s.values),c=s.getTemplate();e.innerHTML=c.string,g(e,u,s)}var _=e.xQ,D=e.Vp,H=e.dy,W=e.a,q=e.TF,Q=e.SB,U=e._q,z=e.Dc;export{_ as Subject,D as Tag,H as html,W as providers,q as renderAppToElement,Q as state,U as tag,z as wait};
1
+ var t={d:(e,r)=>{for(var n in r)t.o(r,n)&&!t.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:r[n]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e)},e={};function r(t,e=new WeakMap){if(null===t||"object"!=typeof t)return t;if(e.has(t))return e.get(t);if(t instanceof Date)return new Date(t);if(t instanceof RegExp)return new RegExp(t);const n=Array.isArray(t)?[]:Object.create(Object.getPrototypeOf(t));if(e.set(t,n),Array.isArray(t))for(let o=0;o<t.length;o++)n[o]=r(t[o],e);else for(const o in t)t.hasOwnProperty(o)&&(n[o]=r(t[o],e));return n}function n(t,e){if(t===e)return!0;if("object"!=typeof t||"object"!=typeof e||null===t||null===e)return!1;const r=Object.keys(t),o=Object.keys(e);if(r.length!==o.length)return!1;for(const s of r)if(!o.includes(s)||!n(t[s],e[s])){if(t[s]instanceof Function&&e[s]instanceof Function&&t[s].toString()===e[s].toString())continue;return!1}if(Array.isArray(t)&&Array.isArray(e)){if(t.length!==e.length)return!1;for(let r=0;r<t.length;r++)if(!n(t[r],e[r]))return!1}else if(Array.isArray(t)||Array.isArray(e))return!1;return!0}function o(t){const e={templater:t,renderCount:0,mutatingRender:()=>{throw new Error('Tag function "render()" was called in sync but can only be called async')},render:()=>(++e.renderCount,e.mutatingRender()),hasPropChanges:(t,r,o)=>{const s=e.templater.cloneProps;return!(void 0===t&&t===o||n(r,s))}};return e}t.d(e,{xQ:()=>p,Vp:()=>B,RN:()=>z,dy:()=>$,ey:()=>H,nc:()=>q,a:()=>l,TF:()=>D,Je:()=>W,SB:()=>J,_q:()=>C,Dc:()=>_});const s=[];function a(t,e){s.forEach((r=>r.beforeRender(t,e)))}function i(t){const e={beforeRender:t.beforeRender||(()=>{}),beforeRedraw:t.beforeRedraw||(()=>{}),afterRender:t.afterRender||(()=>{})};s.push(e)}const u={providers:[],currentTag:void 0,ownerTag:void 0};function c(t){return u.providers.find((e=>e.constructMethod===t))}const l={create:t=>{const e=c(t);if(e)return e.clone=r(e.instance),e.instance;const n=t.constructor?new t:t();return u.providers.push({constructMethod:t,instance:n,clone:r(n)}),n},inject:t=>{const e=c(t);if(e)return e.instance;let n={ownerTag:u.ownerTag};for(;n.ownerTag;){const e=n.ownerTag.providers.find((e=>{if(e.constructMethod===t)return!0}));if(e)return e.clone=r(e.instance),u.providers.push(e),e.instance;n=n.ownerTag}const o=`Could not inject provider: ${t}`;throw console.warn(`${o}. Available providers`,u.providers),new Error(o)}};i({beforeRedraw:(t,e)=>{u.currentTag=e,u.ownerTag=e.ownerTag,e.providers.length&&(u.providers.length=0,u.providers.push(...e.providers))},afterRender:(t,e)=>{e.providers=[...u.providers],u.providers.length=0}});class p{subscribers=[];value;subscribe(t){this.subscribers.push(t),p.globalSubs.push(t),++p.globalSubCount;const e=()=>{d(this.subscribers,t),d(p.globalSubs,t),--p.globalSubCount};return e.unsubscribe=e,e}set(t){this.value=t,this.subscribers.forEach((e=>{e.value=t,e(t)}))}next=this.set}function d(t,e){const r=t.indexOf(e);-1!==r&&t.splice(r,1)}p.globalSubCount=0,p.globalSubs=[];class g extends p{value;constructor(t){super(),this.value=t}subscribe(t){const e=super.subscribe(t);return t(this.value),e}}function f(t,e){function r(r,n){const o=e.tagSupport.renderCount,s=t.bind(r)(...n);if(o===e.tagSupport.renderCount)return e.tagSupport.render(),s instanceof Promise&&s.then((()=>{e.tagSupport.render()})),s}return r.tagFunction=t,r}function h(t,e,r){t.redraw=()=>{const n=e.tag,s=n?.tagSupport||o(t);++s.renderCount,e.tagSupport=s;const i=t;s.mutatingRender=s.mutatingRender||e.tagSupport?.mutatingRender||i.tagSupport.mutatingRender;const c=n?.ownerTag||r;a(s,s.oldest),s.oldest?s.oldest.beforeRedraw():u.ownerTag=c;const l=t.wrapper();l.tagSupport=s,s.oldest?s.oldest.afterRender():l.afterRender(),t.newest=l,l.ownerTag=c;const p=s.oldest=s.oldest||l;s.newest=l;const d=p.tagSupport;if(p.tagSupport=d||s,p.tagSupport.templater=t,l.setSupport(s),!n||!n.isLikeTag(l))return e.set(t),l;p.updateByTag(l)}}function v(t,e,r){const n=t.split(".");if("style"===n[0]&&(r.style[n[1]]=e),"class"===n[0])return n.pop(),void(e?n.forEach((t=>r.classList.remove(t))):n.forEach((t=>r.classList.add(t))))}const w=/^\s*{/,y=/}\s*$/;function b(t,e,r){t.getAttributeNames().forEach((n=>{const o=t.getAttribute(n),s=function(t){return t.search(/^(class|style)(\.)/)>=0}(n);if(o&&o.search(w)>=0&&o.search(y)>=0){const a=o.replace("{","").split("").reverse().join("").replace("}","").split("").reverse().join(""),i=e[a];if(i instanceof Function)return void(t[n]=function(...e){i(t,e)});if(i instanceof p){t.removeAttribute(n);const e=e=>{if(e instanceof Function)return t[n]=function(...r){e(t,r)},void(t[n].tagFunction=e);s&&v(n,e,t),e&&t.setAttribute(n,e),void 0===e||!1===e||null===e?t.removeAttribute(n):t.setAttribute(n,e)},o=i.subscribe(e);return void r.cloneSubs.push(o)}t.setAttribute(n,i.value)}else if(s)return v(n,o,t)}))}const m=/(?:<[^>]*>)|({__tagVar[^}]+})/g;function S(t,e,s){if(!t.children||"TEMPLATE"===t.tagName)return;const i={added:0,removed:0},c=new Array(...t.children);function l(t,c,l){l.forEach(((t,e)=>{if(!(e<c)&&"TEMPLATE"===t.tagName&&void 0!==t.getAttribute("interpolate")&&void 0!==t.getAttribute("end"))return t})),function(t,e,s,i){if(!t.hasAttribute("end"))return;const c=t.getAttribute("id");if(c?.substring(0,L.length)!==L)return;const l=e[c];if(l instanceof p){const e=e=>{!function(t,e,s,i,c){if(t instanceof B)return t.tagSupport||(t.tagSupport=o(),t.tagSupport.mutatingRender=i.tagSupport.mutatingRender,t.tagSupport.oldest=t.tagSupport.oldest||t,i.children.push(t),t.ownerTag=i),void F(t,e,s,{counts:c});if(t instanceof Array&&t.every((t=>t instanceof B)))return function(t,e,r,n,o){t.lastArray=t.lastArray||[];let s=0;return t.lastArray=t.lastArray.filter(((r,n)=>{const a=e.length-1<n-s,i=e[n-s],u=i?.arrayValue;return!a&&u===r.tag.arrayValue||(t.lastArray[n].tag.destroy(o.removed,!1),++s,++o.removed,!1)})),void e.forEach(((e,s)=>{if(e.tagSupport=n.tagSupport,e.ownerTag=n,n.children.push(e),void 0===e.arrayValue&&!Object.keys(e).includes("arrayValue")){const t=new Error("Use html`...`.key(item) instead of html`...` to template an Array");throw t.code="add-array-key",t}const a=t.lastArray[s];if(a)return void(a.tag.arrayValue===e.arrayValue&&a.tag.updateValues(e.values));const i=r||r.clone;F(e,t,i,{index:s,counts:o})}))}(e,t,s,i,c);if(k(t))return function(t,e,s,i,c){if(!0!==t.tagged){let e=t.name||t.constructor?.name;throw"Function"===e&&(e=void 0),new Error(`Not a tag component. Wrap your function with tag(). Example tag(props => html\`\`) on component:\n\n${e||t.toString().substring(0,120)}\n\n`)}const l=e.tagSupport||o(t);l.mutatingRender=()=>{const o=l.renderCount;if(e.tag){if(function(t){t.providers.filter((t=>!n(t.instance,t.clone))).forEach((e=>{!function(t,e){V(t,e).forEach((({tag:t,renderCount:e,provider:n})=>{e===t.tagSupport.renderCount&&(n.clone=r(n.instance),t.tagSupport.render())}))}(t.getAppElement(),e),e.clone=r(e.instance)}))}(e.tag),o!==l.renderCount)return l.newest;if(!l.hasPropChanges(t.props,t.newProps,e.tag.tagSupport.templater.props))return l.newest=t.redraw(t.newProps),l.newest}return l.newest=i.tagSupport.render()};const p=t;let d=p.newest;u.ownerTag=i;const g=!d;return a(l,d),g&&(d=p.wrapper(),d.tagSupport=l,d.afterRender(),p.oldest=d,l.oldest=d,t.oldest=d),p.newest=d,d.ownerTag=i,d.ownerTag=i,i.children.push(d),d.setSupport(l),void F(d,e,s,{counts:c})}(t,e,s,i,c);if(e.tag){const r=s.clone||s;r.parentNode.insertBefore(s,r);const n=c.removed,o=e.tag.destroy(n);c.removed=n+o,delete e.tag;const a=P(t,r);return void(s.clone=a)}const l=s.clone||s,p=P(t,l);s.clone=p;const d=i.clones.indexOf(l);d>=0&&!i.clones.includes(p)&&!l.parentNode&&(i.clones.splice(d,1),i.clones.push(p))}(e,l,t,s,i),setTimeout((()=>{i.added=0,i.removed=0}),0)},c=l.subscribe(e);return void s.cloneSubs.push(c)}const d=P(l,t.clone||t);s.clones.push(d),t.clone=d}(t,e,s,i)}c.forEach(((t,r)=>{if(l(t,r,c),t.children){const r=new Array(...t.children);r.forEach(((t,n)=>{(function(t){return"TEMPLATE"===t.tagName&&void 0!==t.getAttribute("interpolate")&&void 0!==t.getAttribute("end")})(t)&&l(t,n,r),S(t,e,s)}))}}))}function T(t,e,r){(function(t){const e=function(t){const e=[];return{string:t.replace(m,((t,r)=>{if(t.startsWith("<"))return t;const n=r.substring(1,r.length-1);return e.push(n),`<template interpolate end id="${n}"></template>`})),keys:e}}(t.innerHTML);return e.string=e.string.replace(O,L),t.innerHTML=e.string,e})(t).keys.length&&S(t,e,r),b(t,e,r),function t(n){new Array(...n).forEach((n=>{b(n,e,r),n.children&&t(n.children)}))}(t.children)}function A(t,e,r){const n=document.createElement("div");n.id="tag-temp-holder",n.innerHTML="<div></div>"+e.string,T(n,t.update(),t);const o=function(t,e){const r=[],n=t.children[0];let o=n.nextSibling;for(t.removeChild(n);o;){const t=o.nextSibling;E(o,e),r.push(o),o=t}return r}(n,r);return t.clones.push(...o),o}function E(t,e){e.parentNode.insertBefore(t,e)}class R{props;newProps;cloneProps;tagged;wrapper;newest;oldest;redraw}function C(t){return(e,n)=>{const o=e instanceof B,s=function(t,e){if("object"!=typeof t)return t;const r={...t};return Object.entries(r).forEach((([t,e])=>{r[t]=e instanceof Function?(...t)=>((t,e)=>{const r=t(...e);return i.newest?.ownerTag?.tagSupport.render(),r})(e,t):e})),r}(o?0:e);let a=s;o&&(n=e,a=x);const i=new R;return i.tagged=!0,i.props=e,i.newProps=s,i.cloneProps=r(s),i.wrapper=()=>t(a,n),i}}const x=new class{};function P(t,e){const r=e.parentNode;void 0!==t&&!1!==t&&null!==t||(t="");const n=document.createTextNode(t);return r.insertBefore(n,e),r.removeChild(e),n}function F(t,e,r,{index:n,counts:o}){const s=t.getTemplate();if(void 0!==n){const a=e.lastArray[n];return a?.tag.isLikeTag(t)?void a.tag.updateByTag(t):(A(t,s,r).forEach((t=>j(t,o))),void e.lastArray.push({tag:t,index:n}))}if(e.tag&&e.tag.isLikeTag(t)){if(e instanceof Function){const t=e(e.tag.tagSupport);return void e.tag.updateByTag(t)}e.tag.updateByTag(t)}else A(t,s,r.clone||r).forEach((t=>j(t,o))),e.tag=t}function k(t){return t instanceof R}function j(t,e){t.getAttribute&&(function(t,e){const r=t.oninit;if(!r)return;const n=r.tagFunction;if(!n)return;const o=n.tagFunction;o&&(o({target:t,stagger:e.added}),++e.added)}(t,e),t.children&&new Array(...t.children).forEach((t=>j(t,e))))}function V(t,e,r=[]){const n=t.providers.find((t=>t.constructMethod===e.constructMethod));return n&&r.push({tag:t,renderCount:t.tagSupport.renderCount,provider:n}),t.children.forEach((t=>V(t,e,r))),r}const L="__tagVar",M="--"+L+"--",N=new RegExp(L,"g"),O=new RegExp(M,"g");class B{strings;values;context={};clones=[];cloneSubs=[];children=[];tagSupport;ownerTag;arrayValue;constructor(t,e){this.strings=t,this.values=e}providers=[];beforeRedraw(){!function(t,e){s.forEach((r=>r.beforeRedraw(t,e)))}(this.tagSupport,this)}afterRender(){!function(t,e){s.forEach((r=>r.afterRender(t,e)))}(this.tagSupport,this)}key(t){return this.arrayValue=t,this}destroy(t=0,e=!1){return this.children.forEach(((t,e)=>t.destroy(0,!0))),this.destroySubscriptions(),e||(t=this.destroyClones(t)),t}destroySubscriptions(){this.cloneSubs.forEach((t=>t.unsubscribe())),this.cloneSubs.length=0}destroyClones(t=0){return this.clones.reverse().forEach(((e,r)=>{let n=Promise.resolve();e.ondestroy&&(n=function(t,e){const r=t.ondestroy;if(!r)return;const n=r.tagFunction;if(!n)return;const o=n.tagFunction;return o?o({target:t,stagger:e}):void 0}(e,t)),n.then((()=>e.parentNode.removeChild(e)))})),this.clones.length=0,t}updateByTag(t){this.updateConfig(t.strings,t.values),this.tagSupport.templater=t.tagSupport.templater}lastTemplateString=void 0;setSupport(t){this.tagSupport=this.tagSupport||t,this.tagSupport.mutatingRender=this.tagSupport.mutatingRender||t.mutatingRender,this.children.forEach((e=>e.setSupport(t)))}updateConfig(t,e){this.strings=t,this.updateValues(e)}getTemplate(){return{string:this.lastTemplateString=this.strings.map(((t,e)=>t.replace(N,M)+(this.values.length>e?`{${L}${e}}`:""))).join(""),strings:this.strings,values:this.values,context:this.context}}isLikeTag(t){return t.lastTemplateString===this.lastTemplateString&&(t.values.length===this.values.length&&!!t.values.every(((t,e)=>{const r=this.values[e];return t instanceof Function&&r instanceof Function?!(t.toString()!==r.toString()):!(t instanceof B&&r instanceof B&&(t.ownerTag=this,this.children.push(t),t.lastTemplateString||t.getTemplate().string,!t.isLikeTag(r)))})))}update(){return this.updateContext(this.context)}updateValues(t){return this.values=t,this.updateContext(this.context)}updateContext(t){return this.strings.map(((e,r)=>{const s=L+r,i=this.values.length>r,u=this.values[r],c=t[s];if(c){const t=c.value?.tag;if(k(u)){const t=u.cloneProps,e=c.tag;if(!c.tag)return h(u,c,this),void u.redraw(t);const r=e.tagSupport,s=u.tagSupport||r||o(u),a=s.templater?.cloneProps,i=s.templater?.props;if(e&&(void 0===i&&i===t||n(a,t)))return;return h(u,c,this),r.templater=u,void(c.value.tag=r.newest=u.redraw(t))}if(t){const e=t.tagSupport,r=u;a(e,t),e.oldest.beforeRedraw();const n=r.wrapper();return n.tagSupport=e,r.newest=n,e.oldest.afterRender(),t.updateByTag(n),void c.set(u)}return u instanceof Function?void c.set(f(u,this)):void c.set(u)}k(u)?h(u,t[s]=new g(u),this):u instanceof Function?t[s]=function(t,e){return new g(f(t,e))}(u,this):i&&(u instanceof B&&(u.ownerTag=this,this.children.push(u)),t[s]=new g(u))})),t}getAppElement(){let t=this;for(;t.ownerTag;)t=t.ownerTag;return t}}function $(t,...e){return new B(t,e)}function _(t){return new Promise((e=>{setTimeout((()=>{e(0)}),t)}))}function D(t,e,r){const n=t(r),s=function(t){const e=o(t);a(e);const r=e.templater.wrapper();return r.tagSupport=e,r.afterRender(),{tag:r,tagSupport:e}}(n),{tag:i,tagSupport:u}=s;let c;u.mutatingRender=()=>{a(u,i),i.beforeRedraw();const t=c=n.wrapper();return t.setSupport(i.tagSupport),i.afterRender(),i.updateByTag(t),c&&c.destroy(0),c};const l=i.updateValues(i.values),p=i.getTemplate();e.innerHTML=p.string,T(e,l,i)}let H;function W(t){H=t}function q(t){H||t()}i({beforeRender:(t,e)=>{W(e)}});const I={array:[],rearray:[]};function J(t,e){const r=I.rearray[I.array.length];if(r){const t=Q(r);return I.array.push(e),t}return I.array.push(e),t}function Q(t){const[e]=t(U),[r]=t(e);if(r!==U)throw new Error('State property not used correctly.\n\nFor "let" state use `let name = state(default, x => [name, name = x])`\n\nFor "const" state use `const name = state(default)`\n\nProblem function:\n'+t+"\n");return e}i({beforeRender:t=>{t.state=t.state||{newest:[]}},beforeRedraw:t=>{const e=t.state;I.rearray.length=0,e?.newest.length&&I.rearray.push(...e.newest)},afterRender:t=>{if(I.rearray.length&&I.rearray.length!==I.array.length)throw new Error(`States lengths mismatched ${I.rearray.length} !== ${I.array.length}`);I.rearray.length=0;const e=t.state;e.newest.length=0,e.newest.push(...I.array),e.oldest=e.oldest||[...I.array],I.array.length=0}});class U{}let z=()=>t=>()=>{throw new Error("The real callback function was called and that should never occur")};function G(t,e){t.forEach(((t,r)=>{const n=Q(t),[o]=e[r](n)}))}i({beforeRender:t=>{t.callbacks=[],z=()=>{const e=r=>{const n=()=>{const n=t.state,o=e.state,s=n.newest;G(s,o);const a=r();G(o,s),t.render(),a instanceof Promise&&a.finally((()=>{G(o,s),t.render()}))},o=t.state;return n.state=o,n};return t.callbacks.push(e),e}},afterRender:t=>{t.callbacks.forEach((e=>{const r=t.state;e.state=[...r.newest]}))}});var K=e.xQ,X=e.Vp,Y=e.RN,Z=e.dy,tt=e.ey,et=e.nc,rt=e.a,nt=e.TF,ot=e.Je,st=e.SB,at=e._q,it=e.Dc;export{K as Subject,X as Tag,Y as getCallback,Z as html,tt as initCurrentTag,et as onInit,rt as providers,nt as renderAppToElement,ot as setCurrentInitTag,st as state,at as tag,it as wait};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "taggedjs",
3
- "version": "0.0.14",
3
+ "version": "2.1.1",
4
4
  "description": "tagged template reactive html",
5
5
  "main": "js/index.js",
6
6
  "type": "module",