lithent 1.11.1 → 1.12.0
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 +15 -15
- package/examples/dist/assets/index-BBugEsmo.js +2 -0
- package/examples/dist/assets/index-BBugEsmo.js.map +1 -0
- package/examples/dist/index.html +1 -1
- package/helper/dist/hook/store.d.ts +4 -2
- package/helper/dist/lithentHelper.mjs +91 -84
- package/helper/dist/lithentHelper.mjs.map +1 -1
- package/helper/dist/lithentHelper.umd.js +1 -1
- package/helper/dist/lithentHelper.umd.js.map +1 -1
- package/helper/src/hook/store.ts +110 -88
- package/helper/src/tests/store.tsx +6 -0
- package/helper/src/tests/storeOneValue.tsx +9 -3
- package/package.json +1 -1
- package/examples/dist/assets/index-CXFxitnO.js +0 -2
- package/examples/dist/assets/index-CXFxitnO.js.map +0 -1
package/README.md
CHANGED
|
@@ -78,14 +78,14 @@ pnpm add lithent
|
|
|
78
78
|
|
|
79
79
|
#### Or Use CDN
|
|
80
80
|
|
|
81
|
-
* UMD : https://cdn.jsdelivr.net/npm/lithent@1.
|
|
82
|
-
* UMD-HELPER: https://cdn.jsdelivr.net/npm/lithent@1.
|
|
83
|
-
* UMD-FTAGS: https://cdn.jsdelivr.net/npm/lithent@1.
|
|
84
|
-
* UMD-TAG: https://cdn.jsdelivr.net/npm/lithent@1.
|
|
85
|
-
* ESM : https://cdn.jsdelivr.net/npm/lithent@1.
|
|
86
|
-
* ESM-HELPER: https://cdn.jsdelivr.net/npm/lithent@1.
|
|
87
|
-
* ESM-FTAGS: https://cdn.jsdelivr.net/npm/lithent@1.
|
|
88
|
-
* ESM-TAG: https://cdn.jsdelivr.net/npm/lithent@1.
|
|
81
|
+
* UMD : https://cdn.jsdelivr.net/npm/lithent@1.12.0/dist/lithent.umd.js
|
|
82
|
+
* UMD-HELPER: https://cdn.jsdelivr.net/npm/lithent@1.12.0/helper/dist/lithentHelper.umd.js
|
|
83
|
+
* UMD-FTAGS: https://cdn.jsdelivr.net/npm/lithent@1.12.0/ftags/dist/lithentFTags.umd.js
|
|
84
|
+
* UMD-TAG: https://cdn.jsdelivr.net/npm/lithent@1.12.0/tag/dist/lithentTag.umd.js
|
|
85
|
+
* ESM : https://cdn.jsdelivr.net/npm/lithent@1.12.0/dist/lithent.mjs
|
|
86
|
+
* ESM-HELPER: https://cdn.jsdelivr.net/npm/lithent@1.12.0/helper/dist/lithentHelper.mjs
|
|
87
|
+
* ESM-FTAGS: https://cdn.jsdelivr.net/npm/lithent@1.12.0/ftags/dist/lithentFTags.mjs
|
|
88
|
+
* ESM-TAG: https://cdn.jsdelivr.net/npm/lithent@1.12.0/tag/dist/lithentTag.mjs
|
|
89
89
|
|
|
90
90
|
|
|
91
91
|
It's easier to use lithent with JSX or HTM.
|
|
@@ -110,9 +110,9 @@ import { fTags, fFragment, fMount } from 'lithent/ftags';
|
|
|
110
110
|
const { section, div, p, br, strong } = fTags;
|
|
111
111
|
|
|
112
112
|
/* UMD
|
|
113
|
-
<script src="https://cdn.jsdelivr.net/npm/lithent@1.
|
|
114
|
-
<script src="https://cdn.jsdelivr.net/npm/lithent@1.
|
|
115
|
-
<script src="https://cdn.jsdelivr.net/npm/lithent@1.
|
|
113
|
+
<script src="https://cdn.jsdelivr.net/npm/lithent@1.12.0/dist/lithent.umd.js"></script>
|
|
114
|
+
<script src="https://cdn.jsdelivr.net/npm/lithent@1.12.0/helper/dist/lithentHelper.umd.js"></script>
|
|
115
|
+
<script src="https://cdn.jsdelivr.net/npm/lithent@1.12.0/ftags/dist/lithentFTags.umd.js"></script>
|
|
116
116
|
|
|
117
117
|
const { render } = lithent;
|
|
118
118
|
const { fTags, fMount, fFragment } = lithentFTags;
|
|
@@ -184,10 +184,10 @@ const destroy = render(lTag`<${Component} />`, document.getElementById('root'),
|
|
|
184
184
|
#### With UMD
|
|
185
185
|
|
|
186
186
|
```html
|
|
187
|
-
<script src="https://cdn.jsdelivr.net/npm/lithent@1.
|
|
188
|
-
<!--script src="https://cdn.jsdelivr.net/npm/lithent@1.
|
|
189
|
-
<script src="https://cdn.jsdelivr.net/npm/lithent@1.
|
|
190
|
-
<!--script src="https://cdn.jsdelivr.net/npm/lithent@1.
|
|
187
|
+
<script src="https://cdn.jsdelivr.net/npm/lithent@1.12.0/dist/lithent.umd.js"></script>
|
|
188
|
+
<!--script src="https://cdn.jsdelivr.net/npm/lithent@1.12.0/helper/dist/lithentHelper.umd.js"></script-->
|
|
189
|
+
<script src="https://cdn.jsdelivr.net/npm/lithent@1.12.0/tag/dist/lithentTag.umd.js"></script>
|
|
190
|
+
<!--script src="https://cdn.jsdelivr.net/npm/lithent@1.12.0/ftags/dist/lithentFTags.umd.js"></script-->
|
|
191
191
|
|
|
192
192
|
<div id="root"></div>
|
|
193
193
|
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const r of document.querySelectorAll('link[rel="modulepreload"]'))l(r);new MutationObserver(r=>{for(const o of r)if(o.type==="childList")for(const u of o.addedNodes)u.tagName==="LINK"&&u.rel==="modulepreload"&&l(u)}).observe(document,{childList:!0,subtree:!0});function n(r){const o={};return r.integrity&&(o.integrity=r.integrity),r.referrerPolicy&&(o.referrerPolicy=r.referrerPolicy),r.crossOrigin==="use-credentials"?o.credentials="include":r.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function l(r){if(r.ep)return;r.ep=!0;const o=n(r);fetch(r.href,o)}})();const y=e=>typeof e=="object"&&!("resolve"in e),x=(e,t)=>y(e)&&e.type===t,Se=(e,t)=>"ctor"in e?e.ctor===(t==null?void 0:t.ctor):e===(t==null?void 0:t.ctor),be=(e,t)=>{var n,l;return y(e)&&(t==null?void 0:t.type)==="fragment"&&((n=t==null?void 0:t.children)==null?void 0:n.length)===((l=e==null?void 0:e.children)==null?void 0:l.length)},xe=(e,t)=>{var n,l;return y(e)&&(t==null?void 0:t.type)==="element"&&(t==null?void 0:t.tag)===e.tag&&((n=t==null?void 0:t.children)==null?void 0:n.length)===((l=e==null?void 0:e.children)==null?void 0:l.length)},W=(e,t)=>y(e)&&(t==null?void 0:t.type)===e.type,Ne=(e,t)=>{var n,l;return y(e)&&(t==null?void 0:t.type)===e.type&&(C(h((e.children||[])[0]))&&C(h(((t==null?void 0:t.children)||[])[0]))||((n=t==null?void 0:t.children)==null?void 0:n.length)===((l=e==null?void 0:e.children)==null?void 0:l.length))},h=e=>{var t,n;return((t=e==null?void 0:e.compProps)==null?void 0:t.key)??((n=e==null?void 0:e.props)==null?void 0:n.key)},g=e=>e&&["fragment","loop"].includes(e),N=e=>typeof e=="function"&&!Q(e)||typeof e=="object"&&"resolve"in e,Q=e=>typeof e=="function"&&e===b,Z=e=>y(e)&&!e.type,C=e=>e!=null,Y=(e,t)=>e==="style"&&typeof t=="object",we=(e,t)=>e==="ref"&&typeof t=="object",Te=e=>e.nodeType===1&&e.tagName==="OPTION",Ue=e=>e.nodeType===1&&e.tagName==="TEXTAREA",Oe=e=>e.nodeType===1&&["radio","checkbox"].includes(e.type),Ae=e=>{let t="et";return N(e)?t="c":x(e,"fragment")?t="f":x(e,"element")?t="e":x(e,"loop")?t="l":x(e,"text")?t="t":Z(e)&&(t="et"),t},Ve={c:Se,l:Ne,t:W,e:xe,f:be,et:W},m=e=>e.getParent&&e.getParent(),P=Object.entries,ee=Object.keys,w=Object.assign,E={value:""},R={value:{}},k={value:!1},v=new WeakMap,Le=e=>{v.set(e,{vd:{value:null},up:()=>{},upR:[],upS:{value:0},upD:[],upCB:[],mts:[],umts:[]})},S=()=>R.value,te=(e,t)=>v.get(e)[t],ke=e=>R.value=e,De=e=>{R.value=e,Le(e)},je=e=>{v.get(S()).umts.push(e)},T=e=>{const{compKey:t}=e;t&&Me(t),ne(e)},ne=e=>{(e.children||[]).forEach(t=>{t.compKey?T(t):ne(t)})},Me=e=>{const t=v.get(e);t&&(t.umts.forEach(n=>n()),t.umts=[],v.delete(e))};let D=[];const K=()=>{D.forEach(e=>Fe(e)),D=[]},$e=e=>{e.compKey&&D.push(e)},le=e=>v.get(S()).mts.push(e),Fe=e=>{const{compKey:t}=e;if(t){const n=v.get(t),l=n==null?void 0:n.mts,r=n==null?void 0:n.upS;R.value=t,r&&(r.value=0),l&&(n.mts=[],l.forEach(o=>{const u=o();u&&je(u)}))}},J=(e,t=()=>[])=>{const n=v.get(S()),{upD:l,upS:r}=n,o=l[r.value];if(o&&Ke(o,t())){const u=e();u&&n.upCB.push(u)}l[r.value]=t(),r.value+=1},Ie=e=>{const{compKey:t}=e;if(t){const n=v.get(t),l=n==null?void 0:n.upCB,r=n==null?void 0:n.upS;R.value=t,r&&(r.value=0),e.ctor&&l&&(n.upCB=[],l.forEach(o=>o()))}},Ke=(e,t)=>e.length?e.some((n,l)=>n!==t[l]):!0,Be=e=>e==="className"?"class":e,re=e=>e.replace(/^on(.*)/,(t,n)=>n.toLowerCase()),B=()=>new DocumentFragment,X=e=>document.createElement(e),qe=(e,t,n)=>{t??(t=document.body),e.isRoot=!0,e.wrapElement=t;const l=O(e);return t.appendChild(l),K(),()=>{var r;const o=(r=v.get(e.compProps||{}))==null?void 0:r.vd.value;o&&T(o),U(o||e),He(o||e)}},oe=e=>{const{needRerender:t}=e;t&&t!=="N"&&({A:H,D:q,R:Ye,U:M,CNSU:M,SR:ae,SU:We}[t](e),delete e.needRerender,delete e.oldChildren,delete e.oldProps)},U=e=>{e.props&&e.el&&se(e.props,e.el),(e.children||[]).forEach(t=>{U(t)})},He=e=>{ue(e,e.wrapElement)},q=e=>{e.oldProps&&e.el&&se(e.oldProps,e.el),ue(e,A(m(e)))},ue=(e,t)=>{var n,l;t&&e.el&&([1,3].includes((n=e.el)==null?void 0:n.nodeType)?t.removeChild(e.el):((l=e.el)==null?void 0:l.nodeType)===11&&ce(e,t),delete e.el)},ce=(e,t)=>{((e==null?void 0:e.oldChildren)||(e==null?void 0:e.children)||[]).forEach(n=>{var l;const r=(l=n.el)==null?void 0:l.nodeType;r&&([1,3].includes(r)?t.removeChild(n==null?void 0:n.el):r===11&&ce(n,t))})},ae=e=>{q(e),H(e)},We=e=>{if(M(e),m(e).needRerender!=="CNSU"){const t=ie(e);H(e,t)}},H=(e,t)=>{t||(t=O(e));const n=m(e);if(n.type){const l=A(n),r=n.type==="loop"&&n.needRerender&&n.needRerender!=="CNSU"?j(n,m(n)):j(e,n);t&&l&&(r?l.insertBefore(t,r):l.appendChild(t),K())}},ie=e=>g(e.type)?((e==null?void 0:e.children)||[]).reduce((t,n)=>{const l=ie(n);return l&&t.appendChild(l),t},B()):e.el,j=(e,t)=>{const n=t.children||[],l=n.indexOf(e)+1,r=n.slice(l),o=de(r),u=t.type||"";if(o)return o;if(!t.isRoot&&g(u))return j(t,m(t));if(t.isRoot&&g(u)&&t.afterElement)return t.afterElement},de=e=>e.reduce((t,n)=>{const l=n.type,r=n.el,o=l&&g(l);return t||(o?de(n.children||[]):r&&r.nodeType!==11?r:t)},void 0),Ye=e=>{const t=m(e),n=e.el;if(t.type&&n)if(n.nodeType===11)ae(e);else{const l=A(t),r=O(e);l&&l.replaceChild(r,n),K()}},se=(e,t)=>{P(e||{}).forEach(([n,l])=>{n.match(/^on/)&&t.removeEventListener(re(n),l)})},M=e=>{var t;const n=e.el;if(e.type==="text"){Je(e);return}if(n){const{oldProps:l,props:r}=e;pe(r,n,l),delete e.oldProps,e.tag==="input"&&(n.value=String(((t=e==null?void 0:e.props)==null?void 0:t.value)||""))}(e.children||[]).forEach(l=>oe(l)),Ie(e)},Je=e=>{const t=e.el;t&&(t.nodeValue=String(e.text))},pe=(e,t,n)=>{const l={...n};P(e||{}).forEach(([r,o])=>{let u=!0;r==="key"||o===l[r]||(r==="innerHTML"&&typeof o=="string"?t.innerHTML=o:Y(r,o)?Qe(o,Y(r,l.style)?l.style:{},t):we(r,o)?o.value=t:r.match(/^on/)?Ge(t,r,o,l[r]):Oe(t)&&r==="checked"?t.checked=!!o:Ue(t)&&r==="value"?t.value=o:Te(t)&&r==="selected"?t.selected=!!o:r&&([u,o]=_e(o),u&&Xe(Be(r),t,o))),u&&delete l[r]}),ee(l).forEach(r=>t.removeAttribute(r))},Xe=(e,t,n)=>{E.value&&e!=="xmlns"?t.setAttributeNS(null,e,n):t.setAttribute(e,n)},_e=e=>{let t=!0;return typeof e=="boolean"&&(e||(t=!1),e=""),[t,String(e)]},O=e=>{let t;const{type:n,tag:l,text:r,props:o,children:u=[]}=e,a=g(n);return l==="svg"&&(E.value=String(o==null?void 0:o.xmlns)),a?t=B():n==="element"&&l?t=E.value?document.createElementNS(E.value,l):X(l):n==="text"&&C(r)?t=document.createTextNode(String(r)):t=X("e"),ze(u,t),pe(o,t),e.el=t,$e(e),l==="svg"&&(E.value=""),t},ze=(e,t)=>{const n=e.reduce((l,r)=>(r.type&&l.appendChild(O(r)),l),B());t&&n.hasChildNodes()&&t.appendChild(n)},Ge=(e,t,n,l)=>{const r=re(t);l!==n&&(l&&e.removeEventListener(r,l),n&&e.addEventListener(r,n))},Qe=(e,t,n)=>{const l={...t},r=n==null?void 0:n.style;r&&(P(e).forEach(([o,u])=>{r[o]=u,delete l[o]}),P(l).forEach(([o])=>r[o]=""))},A=e=>{const t=g(e.type);return e.isRoot&&t?e.wrapElement:t?A(m(e)):e.el},V=(e,t)=>Ze(e,Ve[Ae(e)](e,t),t),Ze=(e,t,n)=>{const l=ut(e,t,n),r=[l,t,n],o=tt(...r),u=o==="N";return u||(l.children=ct(...r)),l.needRerender=o,et(l,n,o),!u&&n&&(n.isLegacy=!0,delete n.children),l},et=(e,t,n)=>{n!=="A"&&t&&(e.el=t.el),n&&["D","R","SR"].includes(n)&&(t&&(T(t),U(t)),e.oldChildren=t==null?void 0:t.children),e.oldProps=t==null?void 0:t.props},tt=(e,t,n)=>{const l=n&&n.type,r=Z(e),o=e.isRoot,u=n&&m(n),a=!o&&(u==null?void 0:u.type),c=h(e),s=a==="loop"&&C(c),f=e.type==="text"&&t&&e.text===(n==null?void 0:n.text),p=e===n;let d;return r?d="D":f||p?d="N":l?t?d=s?"SU":"U":d=s?"SR":"R":d="A",e.type==="loop"&&d==="U"&&n&&nt(e,n)&&(d="CNSU"),d},nt=(e,t)=>{const n=[...(t==null?void 0:t.children)||[]],l=[...(e==null?void 0:e.children)||[]].filter(u=>n.find(a=>h(u)===h(a))),r=n.filter(u=>l.find(a=>h(u)===h(a)));let o=r.length===l.length;return o&&(o=r.every((u,a)=>h(u)===h(l[a]))),o},lt=(e,t)=>{e&&t!==e&&(ee(e).forEach(n=>delete e[n]),P(t||{}).forEach(([n,l])=>e[n]=l))},rt=(e,t)=>{e&&t!==e&&(e.splice(0,e.length),t&&t.forEach(n=>e.push(n)))},ot=(e,t)=>{const{compProps:n,compChild:l}=e,{props:r,children:o}=t;return n&<(n,r),l&&rt(l,o),e.reRender&&e.reRender()},ut=(e,t,n)=>N(e)?t&&n?ot(n,e):e.resolve():e,ct=(e,t,n)=>t&&n?it(e,n):at(e),at=e=>(e.children||[]).map(t=>w(V(t),{getParent:()=>e})),it=(e,t)=>e.type==="loop"&&C(h((e.children||[])[0]))?dt(e,t):(e.children||[]).map((n,l)=>w(V(n,(t.children||[])[l]),{getParent:()=>e})),dt=(e,t)=>{const[n,l]=st(e,t);return l.forEach(r=>{T(r),U(r),q(r)}),n},st=(e,t)=>{const n=[...e.children||[]],l=[...t.children||[]];return[n.map(r=>{const o=pt(r,l),u=V(r,o);return o&&l.splice(l.indexOf(o),1),u.getParent=()=>e,u}),l]},pt=(e,t)=>t.find(n=>h(n)===h(e));let $=[],F=!1;const ve=(e,t)=>{v.get(e).up=()=>{$.push({compKey:e,exec:t}),F||(F=!0,queueMicrotask(ht))}},vt=e=>()=>{var t;const n=(t=v.get(e))==null?void 0:t.up;let l=!1;return n&&(n(),l=!0),l},ht=()=>{$.forEach(e=>{e.exec()}),$=[],F=!1},he=(e,t=()=>[])=>{v.get(S()).upR.push(()=>J(e,t)),J(e,t)},ft=()=>{var e;const t=(e=v.get(S()))==null?void 0:e.upR;t!=null&&t.length&&t.forEach(n=>n())},b=(e,...t)=>({type:"fragment",children:t}),i=(e,t,...n)=>{const l={value:void 0},r=t||{},o=Ee(l,n),u=Et(e,r,o);return N(u)||(l.value=u),u},fe=e=>(t,n)=>e,me=(e,t,n,l)=>{var r;if(l.isLegacy)return;k.value=!0;const o=ge(e,t,n),u=V(o,l),{isRoot:a,getParent:c,wrapElement:s,afterElement:f}=l;if(u.getParent=c,!a&&c){const p=((r=c())==null?void 0:r.children)||[],d=p.indexOf(l);p.splice(d,1,u)}else u.isRoot=!0,u.wrapElement=s,u.afterElement=f;k.value=!1,oe(u)},ge=(e,t,n)=>({tagName:e.name,ctor:e,props:t,children:n,resolve:(l=t)=>{De(l);const r=e(t,n)(vt(l),t,n),o=mt(r,l,e,t,n),u=o;return ve(l,()=>me(e,t,n,u)),te(l,"vd").value=o,o}}),mt=(e,t,n,l,r)=>{let o=e,u=e(l);return u.reRender&&(o=a=>{const c=e(a),s=b({},c);return c.getParent=()=>s,s},u=o(l)),ye(u,t,n,l,r,gt(o,t,n,l,r)),u},gt=(e,t,n,l,r)=>{const o=()=>yt(e,t,n,l,r,o);return o},yt=(e,t,n,l,r,o)=>{ke(t),ft();const u=e(l);return ve(t,()=>me(n,l,r,u)),ye(u,t,n,l,r,o),te(t,"vd").value=u,u},ye=(e,t,n,l,r,o)=>{w(e,{compProps:l,compChild:r,ctor:n,tagName:n.name,compKey:t,reRender:o})},Et=(e,t,n)=>{if(Q(e))return b(t,...n);if(N(e)){const l=ge(e,t,n);return k.value?l:l.resolve()}return{type:"element",tag:e,props:t,children:n}},Ee=(e,t)=>t.map(n=>w(Ct(n),{getParent:()=>e.value})),Ct=e=>{if(e==null||e===!1)return{type:null};if(Array.isArray(e)){const t={value:void 0},n={type:"loop",children:Ee(t,e)};return t.value=n,n}else if(typeof e=="string"||typeof e=="number")return{type:"text",text:e};return e},Pt=e=>({value:e}),I=(e,t)=>{let n=e;return{get value(){return n},get v(){return n},set value(l){n=l,t()},set v(l){n=l,t()}}},Rt=e=>{let t=e;return{get value(){return t()},get v(){return t()},set value(n){throw new Error("You can't change 'computed'")},set v(n){throw new Error("You can't change 'computed'")}}},St=(e,t=()=>{},n=()=>[])=>{le(()=>(e(),t)),he(()=>(t&&t(),e),n)},bt={cache:!0},xt=e=>{const t={value:!1},n=!Array.isArray(e)&&typeof e=="object"&&e!==null?e:{value:e},l=new Set,r=[],o=new WeakMap;return(u,a,c)=>{const{cache:s}=Object.assign({},bt,c||{});if(s&&u&&o.has(u))return o.get(u);const f={};let p={value:null},d=()=>{};return r.push(f),u&&a&&(d=()=>u(p.value),p.value=_(n,t,l,d,f,r),t.value=!0,a(p.value),t.value=!1),p.value||(p.value=_(n,t,l),u&&(d=()=>u(p.value),l.add(d))),u&&(wt(d,l,f),o.set(u,p.value)),p.value}},_=(e,t,n,l,r,o)=>{const u=[];return new Proxy(e,{get(a,c){return l&&r&&t.value&&(r[c]??(r[c]=new Set),r[c].has(l)||(r[c].add(l),u.push(c))),u.includes(c)||!l?a[c]:null},set(a,c,s){if(a[c]===s)return!0;if(u.includes(c)||!l)a[c]=s;else return!0;return Nt(n,o,c,l),!0}})},Nt=(e,t=[],n,l)=>{const r=[];r.push(...G(e)),(t||[]).forEach(o=>{const u=l?o[n]||new Set:new Set;r.push(...G(u)),z(r,[...u.values()])}),z(r,[...e.values()])},z=(e,t)=>{e.forEach(n=>{t.splice(t.indexOf(n),1)})},G=e=>{const t=[];return e.forEach(n=>{n()===!1&&t.push(n)}),t},wt=(e,t,n)=>{const l=e();l instanceof AbortSignal&&l.addEventListener("abort",()=>{const r=n||{};t.delete(e),Object.values(r).forEach(o=>{o.delete(e)})})},Tt=fe((e,t,n)=>{const l=I(1,e),r=I('"destructuring" the "props" value directly from the mount function will cause referencing issues, so if you want to use it, you need to "destructuring" it from the internal function (updater).',e),o=()=>t.parentValue,u=t.parentValue,a=Rt(()=>l.v+s+t.parentValue),c=xt({text:"s",count:0})(e);let s=t.parentValue;const f=Pt(null),p=()=>{l.v=l.v+1,s+=1},d=L=>{r.v=L.target.value},Ce=()=>{c.count+=1,c.text+="1"},Pe=()=>(console.log("MOUNTED",f),()=>console.log("UNMOUNT")),Re=()=>(console.log("UPDATE - parentValue"),()=>console.log("UPDATED"));return le(Pe),he(Re,()=>[t.parentValue]),St(()=>console.log("INJECT"),()=>console.log("CLEAN_UP"),()=>[l.v]),({parentValue:L})=>i(b,null,i("div",null,i("textarea",{value:r.v,onInput:d,style:{width:"300px",height:"100px"}})),i("div",null,r.v),i("div",null,i("div",{style:{color:"blue"}},"parentValueFromRef: ",t.parentValue," (working)"),i("div",{style:{color:"blue"}},"parentValueFromFunction: ",o()," (working)"),i("div",{style:{color:"blue"}},"parentValueFromUpdaterDestructuring: ",L," (working)"),i("div",{style:{color:"red"}},"parentValueFromMounterDestructuring: ",u," (not working)")),i("div",null,i("div",{ref:f},"count: ",l.v),i("div",null,"sum: ",l.v+s+t.parentValue),i("div",null,"sum(computed): ",a.v),i("div",null,"notRefValue: ",s),i("div",null,"localStore(text): ",c.text),i("div",null,"localStore(count): ",c.count)),i("button",{onClick:p},"Increase"),i("button",{onClick:Ce},"localStoreUpdate"),n)}),Ut=fe(e=>{const t=I(7,e),n=()=>{t.v=t.v+1},l=()=>{t.v=t.v-1};return()=>i(b,null,i(Tt,{parentValue:t.v},i("button",{onClick:n},"Increase - Parent")),i("button",{onClick:l},"Decrease - Parent"))}),Ot=i(Ut,null);qe(Ot,document.getElementById("root"));
|
|
2
|
+
//# sourceMappingURL=index-BBugEsmo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-BBugEsmo.js","sources":["../../../dist/lithent.mjs","../../../helper/dist/lithentHelper.mjs","../../src/index.tsx"],"sourcesContent":["const C = (e) => typeof e == \"object\" && !(\"resolve\" in e), N = (e, t) => C(e) && e.type === t, pe = (e, t) => \"ctor\" in e ? e.ctor === (t == null ? void 0 : t.ctor) : e === (t == null ? void 0 : t.ctor), he = (e, t) => {\n var s, c;\n return C(e) && (t == null ? void 0 : t.type) === \"fragment\" && ((s = t == null ? void 0 : t.children) == null ? void 0 : s.length) === ((c = e == null ? void 0 : e.children) == null ? void 0 : c.length);\n}, ie = (e, t) => {\n var s, c;\n return C(e) && (t == null ? void 0 : t.type) === \"element\" && (t == null ? void 0 : t.tag) === e.tag && ((s = t == null ? void 0 : t.children) == null ? void 0 : s.length) === ((c = e == null ? void 0 : e.children) == null ? void 0 : c.length);\n}, G = (e, t) => C(e) && (t == null ? void 0 : t.type) === e.type, ye = (e, t) => {\n var s, c;\n return C(e) && (t == null ? void 0 : t.type) === e.type && (R(d((e.children || [])[0])) && R(d(((t == null ? void 0 : t.children) || [])[0])) || ((s = t == null ? void 0 : t.children) == null ? void 0 : s.length) === ((c = e == null ? void 0 : e.children) == null ? void 0 : c.length));\n}, d = (e) => {\n var t, s;\n return ((t = e == null ? void 0 : e.compProps) == null ? void 0 : t.key) ?? ((s = e == null ? void 0 : e.props) == null ? void 0 : s.key);\n}, v = (e) => e && [\"fragment\", \"loop\"].includes(e), T = (e) => typeof e == \"function\" && !Z(e) || typeof e == \"object\" && \"resolve\" in e, Z = (e) => typeof e == \"function\" && e === $, V = (e) => C(e) && !e.type, R = (e) => e != null, H = (e, t) => e === \"style\" && typeof t == \"object\", ve = (e, t) => e === \"ref\" && typeof t == \"object\", Ce = (e) => e.nodeType === 1 && e.tagName === \"OPTION\", ke = (e) => e.nodeType === 1 && e.tagName === \"TEXTAREA\", Re = (e) => e.nodeType === 1 && [\"radio\", \"checkbox\"].includes(e.type), Ee = (e) => {\n let t = \"et\";\n return T(e) ? t = \"c\" : N(e, \"fragment\") ? t = \"f\" : N(e, \"element\") ? t = \"e\" : N(e, \"loop\") ? t = \"l\" : N(e, \"text\") ? t = \"t\" : V(e) && (t = \"et\"), t;\n}, Pe = {\n c: pe,\n l: ye,\n t: G,\n e: ie,\n f: he,\n et: G\n}, i = (e) => e.getParent && e.getParent(), E = Object.entries, K = Object.keys, a = Object.assign, k = { value: \"\" }, P = { value: {} }, O = { value: !1 }, f = /* @__PURE__ */ new WeakMap(), xe = (e) => {\n f.set(e, {\n vd: { value: null },\n up: () => {\n },\n upR: [],\n upS: { value: 0 },\n upD: [],\n upCB: [],\n mts: [],\n umts: []\n });\n}, x = () => P.value, g = (e, t) => f.get(e)[t], Se = (e) => P.value = e, Ne = (e) => {\n P.value = e, xe(e);\n}, Te = (e) => {\n f.get(x()).umts.push(e);\n}, U = (e) => {\n const { compKey: t } = e;\n t && ae(t), m(e);\n}, m = (e) => {\n (e.children || []).forEach((t) => {\n t.compKey ? U(t) : m(t);\n });\n}, ae = (e) => {\n const t = f.get(e);\n t && (t.umts.forEach((s) => s()), t.umts = [], f.delete(e));\n};\nlet M = [];\nconst I = () => {\n M.forEach((e) => be(e)), M = [];\n}, Ue = (e) => {\n e.compKey && M.push(e);\n}, ft = (e) => f.get(x()).mts.push(e), be = (e) => {\n const { compKey: t } = e;\n if (t) {\n const s = f.get(t), c = s == null ? void 0 : s.mts, n = s == null ? void 0 : s.upS;\n P.value = t, n && (n.value = 0), c && (s.mts = [], c.forEach((r) => {\n const u = r();\n u && Te(u);\n }));\n }\n}, J = (e, t = () => []) => {\n const s = f.get(x()), { upD: c, upS: n } = s, r = c[n.value];\n if (r && Ae(r, t())) {\n const u = e();\n u && s.upCB.push(u);\n }\n c[n.value] = t(), n.value += 1;\n}, Fe = (e) => {\n const { compKey: t } = e;\n if (t) {\n const s = f.get(t), c = s == null ? void 0 : s.upCB, n = s == null ? void 0 : s.upS;\n P.value = t, n && (n.value = 0), e.ctor && c && (s.upCB = [], c.forEach((r) => r()));\n }\n}, Ae = (e, t) => e.length ? e.some((s, c) => s !== t[c]) : !0, Le = (e) => e === \"className\" ? \"class\" : e, w = (e) => e.replace(/^on(.*)/, (t, s) => s.toLowerCase()), _ = () => new DocumentFragment(), Y = (e) => document.createElement(e), dt = (e, t, s) => {\n t ?? (t = document.body), e.isRoot = !0, e.wrapElement = t;\n const c = F(e);\n return s ? (e.afterElement = s, t.insertBefore(c, s)) : t.appendChild(c), I(), () => {\n var r;\n const n = (r = f.get(e.compProps || {})) == null ? void 0 : r.vd.value;\n n && U(n), b(n || e), Oe(n || e);\n };\n}, W = (e) => {\n const { needRerender: t } = e;\n t && t !== \"N\" && ({\n A: X,\n D: z,\n R: Qe,\n U: B,\n CNSU: B,\n SR: te,\n SU: Me\n }[t](e), delete e.needRerender, delete e.oldChildren, delete e.oldProps);\n}, b = (e) => {\n e.props && e.el && ne(e.props, e.el), (e.children || []).forEach((t) => {\n b(t);\n });\n}, Oe = (e) => {\n D(e, e.wrapElement);\n}, z = (e) => {\n e.oldProps && e.el && ne(e.oldProps, e.el), D(\n e,\n A(i(e))\n );\n}, D = (e, t) => {\n var s, c;\n t && e.el && ([1, 3].includes((s = e.el) == null ? void 0 : s.nodeType) ? t.removeChild(e.el) : ((c = e.el) == null ? void 0 : c.nodeType) === 11 && ee(e, t), delete e.el);\n}, ee = (e, t) => {\n ((e == null ? void 0 : e.oldChildren) || (e == null ? void 0 : e.children) || []).forEach((s) => {\n var n;\n const c = (n = s.el) == null ? void 0 : n.nodeType;\n c && ([1, 3].includes(c) ? t.removeChild(s == null ? void 0 : s.el) : c === 11 && ee(s, t));\n });\n}, te = (e) => {\n z(e), X(e);\n}, Me = (e) => {\n if (B(e), i(e).needRerender !== \"CNSU\") {\n const s = se(e);\n X(e, s);\n }\n}, X = (e, t) => {\n t || (t = F(e));\n const s = i(e);\n if (s.type) {\n const c = A(s), r = s.type === \"loop\" && s.needRerender && s.needRerender !== \"CNSU\" ? Q(s, i(s)) : Q(e, s);\n t && c && (r ? c.insertBefore(t, r) : c.appendChild(t), I());\n }\n}, se = (e) => v(e.type) ? ((e == null ? void 0 : e.children) || []).reduce((t, s) => {\n const c = se(s);\n return c && t.appendChild(c), t;\n}, _()) : e.el, Q = (e, t) => {\n const s = t.children || [], n = s.indexOf(e) + 1, r = s.slice(n), u = ce(r), l = t.type || \"\";\n if (u)\n return u;\n if (!t.isRoot && v(l))\n return Q(t, i(t));\n if (t.isRoot && v(l) && t.afterElement)\n return t.afterElement;\n}, ce = (e) => e.reduce(\n (t, s) => {\n const c = s.type, n = s.el, r = c && v(c);\n return t || (r ? ce(s.children || []) : n && n.nodeType !== 11 ? n : t);\n },\n void 0\n), Qe = (e) => {\n const t = i(e), s = e.el;\n if (t.type && s)\n if (s.nodeType === 11)\n te(e);\n else {\n const c = A(t), n = F(e);\n c && c.replaceChild(n, s), I();\n }\n}, ne = (e, t) => {\n E(e || {}).forEach(([s, c]) => {\n s.match(/^on/) && t.removeEventListener(\n w(s),\n c\n );\n });\n}, B = (e) => {\n var s;\n const t = e.el;\n if (e.type === \"text\") {\n Be(e);\n return;\n }\n if (t) {\n const { oldProps: c, props: n } = e;\n re(n, t, c), delete e.oldProps, e.tag === \"input\" && (t.value = String(((s = e == null ? void 0 : e.props) == null ? void 0 : s.value) || \"\"));\n }\n (e.children || []).forEach((c) => W(c)), Fe(e);\n}, Be = (e) => {\n const t = e.el;\n t && (t.nodeValue = String(e.text));\n}, re = (e, t, s) => {\n const c = { ...s };\n E(e || {}).forEach(([n, r]) => {\n let u = !0;\n n === \"key\" || r === c[n] || (n === \"innerHTML\" && typeof r == \"string\" ? t.innerHTML = r : H(n, r) ? ze(\n r,\n H(n, c.style) ? c.style : {},\n t\n ) : ve(n, r) ? r.value = t : n.match(/^on/) ? _e(\n t,\n n,\n r,\n c[n]\n ) : Re(t) && n === \"checked\" ? t.checked = !!r : ke(t) && n === \"value\" ? t.value = r : Ce(t) && n === \"selected\" ? t.selected = !!r : n && ([u, r] = qe(r), u && je(\n Le(n),\n t,\n r\n ))), u && delete c[n];\n }), K(c).forEach(\n (n) => t.removeAttribute(n)\n );\n}, je = (e, t, s) => {\n k.value && e !== \"xmlns\" ? t.setAttributeNS(null, e, s) : t.setAttribute(e, s);\n}, qe = (e) => {\n let t = !0;\n return typeof e == \"boolean\" && (e || (t = !1), e = \"\"), [t, String(e)];\n}, F = (e) => {\n let t;\n const { type: s, tag: c, text: n, props: r, children: u = [] } = e, l = v(s);\n return c === \"svg\" && (k.value = String(r == null ? void 0 : r.xmlns)), l ? t = _() : s === \"element\" && c ? t = k.value ? document.createElementNS(k.value, c) : Y(c) : s === \"text\" && R(n) ? t = document.createTextNode(String(n)) : t = Y(\"e\"), Ie(u, t), re(r, t), e.el = t, Ue(e), c === \"svg\" && (k.value = \"\"), t;\n}, Ie = (e, t) => {\n const s = e.reduce(\n (c, n) => (n.type && c.appendChild(F(n)), c),\n _()\n );\n t && s.hasChildNodes() && t.appendChild(s);\n}, _e = (e, t, s, c) => {\n const n = w(t);\n c !== s && (c && e.removeEventListener(n, c), s && e.addEventListener(n, s));\n}, ze = (e, t, s) => {\n const c = { ...t }, n = s == null ? void 0 : s.style;\n n && (E(e).forEach(([r, u]) => {\n n[r] = u, delete c[r];\n }), E(c).forEach(\n ([r]) => n[r] = \"\"\n ));\n}, A = (e) => {\n const t = v(e.type);\n return e.isRoot && t ? e.wrapElement : t ? A(i(e)) : e.el;\n}, L = (e, t) => Xe(\n e,\n Pe[Ee(e)](e, t),\n t\n), Xe = (e, t, s) => {\n const c = Ve(e, t, s), n = [\n c,\n t,\n s\n ], r = Ge(...n), u = r === \"N\";\n return u || (c.children = Ke(...n)), c.needRerender = r, $e(c, s, r), !u && s && (s.isLegacy = !0, delete s.children), c;\n}, $e = (e, t, s) => {\n s !== \"A\" && t && (e.el = t.el), s && [\"D\", \"R\", \"SR\"].includes(s) && (t && (U(t), b(t)), e.oldChildren = t == null ? void 0 : t.children), e.oldProps = t == null ? void 0 : t.props;\n}, Ge = (e, t, s) => {\n const c = s && s.type, n = V(e), r = e.isRoot, u = s && i(s), l = !r && (u == null ? void 0 : u.type), h = d(e), o = l === \"loop\" && R(h), y = e.type === \"text\" && t && e.text === (s == null ? void 0 : s.text), S = e === s;\n let p;\n return n ? p = \"D\" : y || S ? p = \"N\" : c ? t ? p = o ? \"SU\" : \"U\" : p = o ? \"SR\" : \"R\" : p = \"A\", e.type === \"loop\" && p === \"U\" && s && He(e, s) && (p = \"CNSU\"), p;\n}, He = (e, t) => {\n const s = [...(t == null ? void 0 : t.children) || []], c = [...(e == null ? void 0 : e.children) || []].filter(\n (u) => s.find((l) => d(u) === d(l))\n ), n = s.filter(\n (u) => c.find((l) => d(u) === d(l))\n );\n let r = n.length === c.length;\n return r && (r = n.every(\n (u, l) => d(u) === d(c[l])\n )), r;\n}, Je = (e, t) => {\n e && t !== e && (K(e).forEach((s) => delete e[s]), E(t || {}).forEach(([s, c]) => e[s] = c));\n}, Ye = (e, t) => {\n e && t !== e && (e.splice(0, e.length), t && t.forEach((s) => e.push(s)));\n}, Ze = (e, t) => {\n const { compProps: s, compChild: c } = e, { props: n, children: r } = t;\n return s && Je(s, n), c && Ye(c, r), e.reRender && e.reRender();\n}, Ve = (e, t, s) => T(e) ? t && s ? Ze(s, e) : e.resolve() : e, Ke = (e, t, s) => t && s ? me(e, s) : ge(e), ge = (e) => (e.children || []).map(\n (t) => a(L(t), { getParent: () => e })\n), me = (e, t) => e.type === \"loop\" && R(d((e.children || [])[0])) ? we(e, t) : (e.children || []).map(\n (s, c) => a(L(s, (t.children || [])[c]), {\n getParent: () => e\n })\n), we = (e, t) => {\n const [s, c] = We(\n e,\n t\n );\n return c.forEach((n) => {\n U(n), b(n), z(n);\n }), s;\n}, We = (e, t) => {\n const s = [...e.children || []], c = [...t.children || []];\n return [s.map((r) => {\n const u = De(r, c), l = L(r, u);\n return u && c.splice(c.indexOf(u), 1), l.getParent = () => e, l;\n }), c];\n}, De = (e, t) => t.find(\n (s) => d(s) === d(e)\n);\nlet j = [], q = !1;\nconst ue = (e, t) => {\n f.get(e).up = () => {\n j.push({\n compKey: e,\n exec: t\n }), q || (q = !0, queueMicrotask(tt));\n };\n}, et = (e) => () => {\n var c;\n const t = (c = f.get(e)) == null ? void 0 : c.up;\n let s = !1;\n return t && (t(), s = !0), s;\n}, tt = () => {\n j.forEach((e) => {\n e.exec();\n }), j = [], q = !1;\n}, ot = (e, t = () => []) => {\n f.get(x()).upR.push(() => J(e, t)), J(e, t);\n}, st = () => {\n var t;\n const e = (t = f.get(x())) == null ? void 0 : t.upR;\n e != null && e.length && e.forEach((s) => s());\n}, $ = (e, ...t) => ({\n type: \"fragment\",\n children: t\n}), pt = (e, t, ...s) => {\n const c = { value: void 0 }, n = t || {}, r = oe(c, s), u = ut(e, n, r);\n return T(u) || (c.value = u), u;\n}, ht = (e) => (t, s) => e, le = (e, t, s, c) => {\n var y;\n if (c.isLegacy)\n return;\n O.value = !0;\n const n = fe(e, t, s), r = L(n, c), { isRoot: u, getParent: l, wrapElement: h, afterElement: o } = c;\n if (r.getParent = l, !u && l) {\n const S = ((y = l()) == null ? void 0 : y.children) || [], p = S.indexOf(c);\n S.splice(p, 1, r);\n } else\n r.isRoot = !0, r.wrapElement = h, r.afterElement = o;\n O.value = !1, W(r);\n}, fe = (e, t, s) => ({ tagName: e.name, ctor: e, props: t, children: s, resolve: (u = t) => {\n Ne(u);\n const h = e(t, s)(et(u), t, s), o = ct(\n h,\n u,\n e,\n t,\n s\n ), y = o;\n return ue(\n u,\n () => le(e, t, s, y)\n ), g(u, \"vd\").value = o, o;\n} }), ct = (e, t, s, c, n) => {\n let r = e, u = e(c);\n return u.reRender && (r = (l) => {\n const h = e(l), o = $({}, h);\n return h.getParent = () => o, o;\n }, u = r(c)), de(\n u,\n t,\n s,\n c,\n n,\n nt(r, t, s, c, n)\n ), u;\n}, nt = (e, t, s, c, n) => {\n const r = () => rt(e, t, s, c, n, r);\n return r;\n}, rt = (e, t, s, c, n, r) => {\n Se(t), st();\n const u = e(c);\n return ue(\n t,\n () => le(s, c, n, u)\n ), de(u, t, s, c, n, r), g(t, \"vd\").value = u, u;\n}, de = (e, t, s, c, n, r) => {\n a(e, {\n compProps: c,\n compChild: n,\n ctor: s,\n tagName: s.name,\n compKey: t,\n reRender: r\n });\n}, ut = (e, t, s) => {\n if (Z(e))\n return $(t, ...s);\n if (T(e)) {\n const c = fe(e, t, s);\n return O.value ? c : c.resolve();\n }\n return {\n type: \"element\",\n tag: e,\n props: t,\n children: s\n };\n}, oe = (e, t) => t.map(\n (s) => a(lt(s), { getParent: () => e.value })\n), lt = (e) => {\n if (e == null || e === !1)\n return { type: null };\n if (Array.isArray(e)) {\n const t = { value: void 0 }, c = {\n type: \"loop\",\n children: oe(t, e)\n };\n return t.value = c, c;\n } else if (typeof e == \"string\" || typeof e == \"number\")\n return { type: \"text\", text: e };\n return e;\n}, it = (e) => ({ value: e }), yt = () => Promise.resolve();\nexport {\n $ as Fragment,\n pt as h,\n ht as mount,\n ft as mountCallback,\n yt as nextTick,\n it as ref,\n dt as render,\n ot as updateCallback\n};\n//# sourceMappingURL=lithent.mjs.map\n","import { mountCallback as y, updateCallback as E, nextTick as x, render as S } from \"lithent\";\nconst A = (t, e) => {\n let n = t;\n return {\n get value() {\n return n;\n },\n get v() {\n return n;\n },\n set value(s) {\n n = s, e();\n },\n set v(s) {\n n = s, e();\n }\n };\n}, U = (t) => {\n let e = t;\n return {\n get value() {\n return e();\n },\n get v() {\n return e();\n },\n set value(n) {\n throw new Error(\"You can't change 'computed'\");\n },\n set v(n) {\n throw new Error(\"You can't change 'computed'\");\n }\n };\n}, b = (t, e = () => {\n}, n = () => []) => {\n y(() => (t(), e)), E(() => (e && e(), t), n);\n}, T = { cache: !0 }, k = (t) => {\n const e = { value: !1 }, s = !Array.isArray(t) && typeof t == \"object\" && t !== null ? t : { value: t }, c = /* @__PURE__ */ new Set(), r = [], a = /* @__PURE__ */ new WeakMap();\n return (l, o, u) => {\n const { cache: h } = Object.assign({}, T, u || {});\n if (h && l && a.has(l))\n return a.get(l);\n const v = {};\n let i = { value: null }, f = () => {\n };\n return r.push(v), l && o && (f = () => l(i.value), i.value = d(\n s,\n e,\n c,\n f,\n v,\n r\n ), e.value = !0, o(i.value), e.value = !1), i.value || (i.value = d(s, e, c), l && (f = () => l(i.value), c.add(f))), l && (j(f, c, v), a.set(l, i.value)), i.value;\n };\n}, d = (t, e, n, s, c, r) => {\n const a = [];\n return new Proxy(t, {\n get(o, u) {\n return s && c && e.value && (c[u] ?? (c[u] = /* @__PURE__ */ new Set()), c[u].has(s) || (c[u].add(s), a.push(u))), a.includes(u) || !s ? o[u] : null;\n },\n set(o, u, h) {\n if (o[u] === h)\n return !0;\n if (a.includes(u) || !s)\n o[u] = h;\n else\n return !0;\n return C(\n n,\n r,\n u,\n s\n ), !0;\n }\n });\n}, C = (t, e = [], n, s) => {\n const c = [];\n c.push(...m(t)), (e || []).forEach((r) => {\n const a = s ? r[n] || /* @__PURE__ */ new Set() : /* @__PURE__ */ new Set();\n c.push(...m(a)), g(c, [...a.values()]);\n }), g(c, [...t.values()]);\n}, g = (t, e) => {\n t.forEach((n) => {\n e.splice(e.indexOf(n), 1);\n });\n}, m = (t) => {\n const e = [];\n return t.forEach((n) => {\n n() === !1 && e.push(n);\n }), e;\n}, j = (t, e, n) => {\n const s = t();\n s instanceof AbortSignal && s.addEventListener(\"abort\", () => {\n const c = n || {};\n e.delete(t), Object.values(c).forEach((r) => {\n r.delete(t);\n });\n });\n}, D = (t, e) => {\n let n = [], s = null;\n return (c) => {\n const r = t(), a = n.every((o, u) => o === r[u]);\n if (n = r, a && s)\n return s;\n const l = e(c);\n return s = l, l;\n };\n}, L = (t, e, n) => {\n let s = () => {\n };\n return x().then(() => {\n s = S(t(), e, n);\n }), () => s();\n};\nexport {\n D as cacheUpdate,\n U as computed,\n b as effect,\n L as nextTickRender,\n A as state,\n k as store\n};\n//# sourceMappingURL=lithentHelper.mjs.map\n","// example.jsx\nimport {\n h,\n Fragment,\n render,\n ref,\n mountCallback,\n updateCallback,\n mount,\n} from 'lithent';\nimport { state, computed, effect, store } from 'lithent/helper';\n\n// This is the \"mount\" function.\n// This function is only executed on mount, and on update, only updates `props` and then executes the internal return function.\n// childen is passed as the second argument.\nconst ChildComponent = mount<{ parentValue: number }>(\n (renew, props, children) => {\n // The value is used as a \"getter\" to make it easy to get and write to in the higher-order functions it returns\n const count = state<number>(1, renew);\n const text = state<string>(\n '\"destructuring\" the \"props\" value directly from the mount function will cause referencing issues, so if you want to use it, you need to \"destructuring\" it from the internal function (updater).',\n renew\n );\n const getParentValue = () => props.parentValue;\n const parentValueFromMount = props.parentValue;\n const summ = computed<number>(\n () => count.v + notRefValue + props.parentValue\n );\n\n const localStore = store<{ text: string; count: number }>({\n text: 's',\n count: 0,\n })(renew);\n /*\n // To share a store, make it externally and use `asign`.\n const asignStore = store<{ text: string; count: number }>({ text: 's', count: 0 });\n\n const sharedStore = asignStore(nenew);\n */\n\n // Even if you don't use a ref, the private value is always maintained as a regular variable.\n let notRefValue = props.parentValue;\n\n // Ref is only used to reference the DOM.\n const domRef = ref(null);\n\n const increase = () => {\n count.v = count.v + 1;\n notRefValue += 1;\n };\n\n const handleInputChane = (event: InputEvent) => {\n text.v = (event.target as HTMLInputElement).value;\n };\n\n const localStoreUpdate = () => {\n localStore.count += 1;\n localStore.text += '1';\n };\n\n const handleMounted = () => {\n console.log('MOUNTED', domRef);\n\n return () => console.log('UNMOUNT');\n };\n const handleUpdated = () => {\n console.log('UPDATE - parentValue');\n\n return () => console.log('UPDATED');\n };\n\n mountCallback(handleMounted);\n updateCallback(handleUpdated, () => [props.parentValue]); // Only Defs Updated (using a closure to update a value)\n\n // Behaves like `react`'s `useEffect`\n effect(\n () => console.log('INJECT'),\n () => console.log('CLEAN_UP'),\n () => [count.v]\n );\n\n // Wrap in a function and return (using a closure to hold the value)\n // This is the \"update\" function.\n return ({ parentValue }) => (\n <Fragment>\n {/* Note that the event is onInput (we use the native event name to avoid confusion). */}\n <div>\n <textarea\n value={text.v}\n onInput={handleInputChane}\n style={{ width: '300px', height: '100px' }}\n />\n </div>\n <div>{text.v}</div>\n <div>\n <div style={{ color: 'blue' }}>\n parentValueFromRef: {props.parentValue} (working)\n </div>\n <div style={{ color: 'blue' }}>\n parentValueFromFunction: {getParentValue()} (working)\n </div>\n <div style={{ color: 'blue' }}>\n parentValueFromUpdaterDestructuring: {parentValue} (working)\n </div>\n <div style={{ color: 'red' }}>\n parentValueFromMounterDestructuring: {parentValueFromMount} (not\n working)\n </div>\n </div>\n <div>\n <div ref={domRef}>count: {count.v}</div>\n <div>sum: {count.v + notRefValue + props.parentValue}</div>\n <div>sum(computed): {summ.v}</div>\n {/* It doesn't pull it out from under the reference, it uses the value directly, so you can just use it. */}\n <div>notRefValue: {notRefValue}</div>\n <div>localStore(text): {localStore.text}</div>\n <div>localStore(count): {localStore.count}</div>\n </div>\n <button onClick={increase}>Increase</button>\n <button onClick={localStoreUpdate}>localStoreUpdate</button>\n {children}\n </Fragment>\n );\n }\n);\n\nconst Root = mount(renew => {\n const parentNumber = state<number>(7, renew);\n\n const increaseParent = () => {\n parentNumber.v = parentNumber.v + 1;\n };\n\n const decreaseParent = () => {\n parentNumber.v = parentNumber.v - 1;\n };\n\n return () => (\n <Fragment>\n <ChildComponent parentValue={parentNumber.v}>\n <button onClick={increaseParent}>Increase - Parent</button>\n </ChildComponent>\n <button onClick={decreaseParent}>Decrease - Parent</button>\n </Fragment>\n );\n});\nconst root = <Root />;\n\nrender(root, document.getElementById('root'));\n"],"names":["C","N","pe","he","s","c","ie","G","ye","R","d","v","T","Z","$","V","H","ve","Ce","ke","Re","Ee","Pe","i","E","K","a","k","P","O","f","xe","x","g","Se","Ne","Te","U","ae","m","M","I","be","Ue","ft","n","r","Ae","Fe","Le","w","_","Y","dt","F","b","Oe","W","X","z","Qe","B","te","Me","ne","D","A","ee","se","Q","u","ce","l","t","Be","re","ze","_e","qe","je","Ie","L","Xe","Ve","Ge","Ke","$e","h","o","y","S","p","He","Je","Ye","Ze","me","ge","we","We","De","j","q","ue","tt","et","ot","st","e","pt","oe","ut","ht","le","fe","ct","de","nt","rt","lt","it","ChildComponent","mount","renew","props","children","count","state","text","getParentValue","parentValueFromMount","summ","computed","notRefValue","localStore","store","domRef","ref","increase","handleInputChane","event","localStoreUpdate","handleMounted","handleUpdated","mountCallback","updateCallback","effect","parentValue","Fragment","Root","parentNumber","increaseParent","decreaseParent","root","render"],"mappings":"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"}
|
package/examples/dist/index.html
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
<meta charset="UTF-8" />
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
6
|
<title>lithent</title>
|
|
7
|
-
<script type="module" crossorigin src="/assets/index-
|
|
7
|
+
<script type="module" crossorigin src="/assets/index-BBugEsmo.js"></script>
|
|
8
8
|
</head>
|
|
9
9
|
<body>
|
|
10
10
|
<section id="root"></section>
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* DataStore
|
|
3
3
|
*/
|
|
4
|
+
type Renew<T> = (store: T) => boolean | AbortSignal | void;
|
|
4
5
|
type StoreType<V> = V extends {
|
|
5
6
|
[key: string]: unknown;
|
|
6
7
|
} ? V : {
|
|
7
8
|
value: V;
|
|
8
9
|
};
|
|
9
|
-
|
|
10
|
-
|
|
10
|
+
export declare const store: <V>(initialValue: V) => (renew?: Renew<StoreType<V>> | undefined, makeObserver?: ((store: StoreType<V>) => unknown[]) | null | undefined, userOption?: {
|
|
11
|
+
cache?: boolean;
|
|
12
|
+
}) => StoreType<V>;
|
|
11
13
|
export {};
|
|
@@ -1,116 +1,123 @@
|
|
|
1
|
-
import { mountCallback as
|
|
2
|
-
const
|
|
3
|
-
let
|
|
1
|
+
import { mountCallback as y, updateCallback as E, nextTick as x, render as S } from "lithent";
|
|
2
|
+
const A = (t, e) => {
|
|
3
|
+
let n = t;
|
|
4
4
|
return {
|
|
5
5
|
get value() {
|
|
6
|
-
return
|
|
6
|
+
return n;
|
|
7
7
|
},
|
|
8
8
|
get v() {
|
|
9
|
-
return
|
|
9
|
+
return n;
|
|
10
10
|
},
|
|
11
|
-
set value(
|
|
12
|
-
|
|
11
|
+
set value(s) {
|
|
12
|
+
n = s, e();
|
|
13
13
|
},
|
|
14
|
-
set v(
|
|
15
|
-
|
|
14
|
+
set v(s) {
|
|
15
|
+
n = s, e();
|
|
16
16
|
}
|
|
17
17
|
};
|
|
18
|
-
},
|
|
19
|
-
let
|
|
18
|
+
}, U = (t) => {
|
|
19
|
+
let e = t;
|
|
20
20
|
return {
|
|
21
21
|
get value() {
|
|
22
|
-
return
|
|
22
|
+
return e();
|
|
23
23
|
},
|
|
24
24
|
get v() {
|
|
25
|
-
return
|
|
25
|
+
return e();
|
|
26
26
|
},
|
|
27
|
-
set value(
|
|
27
|
+
set value(n) {
|
|
28
28
|
throw new Error("You can't change 'computed'");
|
|
29
29
|
},
|
|
30
|
-
set v(
|
|
30
|
+
set v(n) {
|
|
31
31
|
throw new Error("You can't change 'computed'");
|
|
32
32
|
}
|
|
33
33
|
};
|
|
34
|
-
},
|
|
35
|
-
},
|
|
36
|
-
|
|
37
|
-
},
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
() => u(l),
|
|
34
|
+
}, b = (t, e = () => {
|
|
35
|
+
}, n = () => []) => {
|
|
36
|
+
y(() => (t(), e)), E(() => (e && e(), t), n);
|
|
37
|
+
}, T = { cache: !0 }, k = (t) => {
|
|
38
|
+
const e = { value: !1 }, s = !Array.isArray(t) && typeof t == "object" && t !== null ? t : { value: t }, c = /* @__PURE__ */ new Set(), r = [], a = /* @__PURE__ */ new WeakMap();
|
|
39
|
+
return (l, o, u) => {
|
|
40
|
+
const { cache: h } = Object.assign({}, T, u || {});
|
|
41
|
+
if (h && l && a.has(l))
|
|
42
|
+
return a.get(l);
|
|
43
|
+
const v = {};
|
|
44
|
+
let i = { value: null }, f = () => {
|
|
45
|
+
};
|
|
46
|
+
return r.push(v), l && o && (f = () => l(i.value), i.value = d(
|
|
48
47
|
s,
|
|
49
|
-
i
|
|
50
|
-
), v.value = !0, f(l), v.value = !1) : u && (e[t] ?? (e[t] = [])), l || (l = x(t, e), u && e[t].push(() => u(l))), u && P(
|
|
51
|
-
() => u(l),
|
|
52
|
-
t,
|
|
53
48
|
e,
|
|
54
|
-
|
|
55
|
-
|
|
49
|
+
c,
|
|
50
|
+
f,
|
|
51
|
+
v,
|
|
52
|
+
r
|
|
53
|
+
), e.value = !0, o(i.value), e.value = !1), i.value || (i.value = d(s, e, c), l && (f = () => l(i.value), c.add(f))), l && (j(f, c, v), a.set(l, i.value)), i.value;
|
|
56
54
|
};
|
|
57
|
-
},
|
|
58
|
-
const
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
return
|
|
55
|
+
}, d = (t, e, n, s, c, r) => {
|
|
56
|
+
const a = [];
|
|
57
|
+
return new Proxy(t, {
|
|
58
|
+
get(o, u) {
|
|
59
|
+
return s && c && e.value && (c[u] ?? (c[u] = /* @__PURE__ */ new Set()), c[u].has(s) || (c[u].add(s), a.push(u))), a.includes(u) || !s ? o[u] : null;
|
|
62
60
|
},
|
|
63
|
-
set(
|
|
64
|
-
if (u
|
|
65
|
-
|
|
61
|
+
set(o, u, h) {
|
|
62
|
+
if (o[u] === h)
|
|
63
|
+
return !0;
|
|
64
|
+
if (a.includes(u) || !s)
|
|
65
|
+
o[u] = h;
|
|
66
66
|
else
|
|
67
67
|
return !0;
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
h(f) === !1 && r.push(h);
|
|
75
|
-
}), r.forEach((h) => {
|
|
76
|
-
g.splice(g.indexOf(h), 1);
|
|
77
|
-
});
|
|
78
|
-
}), r.forEach((a) => {
|
|
79
|
-
d.splice(d.indexOf(a), 1);
|
|
80
|
-
}), !0;
|
|
68
|
+
return C(
|
|
69
|
+
n,
|
|
70
|
+
r,
|
|
71
|
+
u,
|
|
72
|
+
s
|
|
73
|
+
), !0;
|
|
81
74
|
}
|
|
82
75
|
});
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
76
|
+
}, C = (t, e = [], n, s) => {
|
|
77
|
+
const c = [];
|
|
78
|
+
c.push(...m(t)), (e || []).forEach((r) => {
|
|
79
|
+
const a = s ? r[n] || /* @__PURE__ */ new Set() : /* @__PURE__ */ new Set();
|
|
80
|
+
c.push(...m(a)), g(c, [...a.values()]);
|
|
81
|
+
}), g(c, [...t.values()]);
|
|
82
|
+
}, g = (t, e) => {
|
|
83
|
+
t.forEach((n) => {
|
|
84
|
+
e.splice(e.indexOf(n), 1);
|
|
85
|
+
});
|
|
86
|
+
}, m = (t) => {
|
|
87
|
+
const e = [];
|
|
88
|
+
return t.forEach((n) => {
|
|
89
|
+
n() === !1 && e.push(n);
|
|
90
|
+
}), e;
|
|
91
|
+
}, j = (t, e, n) => {
|
|
92
|
+
const s = t();
|
|
93
|
+
s instanceof AbortSignal && s.addEventListener("abort", () => {
|
|
94
|
+
const c = n || {};
|
|
95
|
+
e.delete(t), Object.values(c).forEach((r) => {
|
|
96
|
+
r.delete(t);
|
|
97
|
+
});
|
|
98
|
+
});
|
|
99
|
+
}, D = (t, e) => {
|
|
100
|
+
let n = [], s = null;
|
|
101
|
+
return (c) => {
|
|
102
|
+
const r = t(), a = n.every((o, u) => o === r[u]);
|
|
103
|
+
if (n = r, a && s)
|
|
104
|
+
return s;
|
|
105
|
+
const l = e(c);
|
|
106
|
+
return s = l, l;
|
|
100
107
|
};
|
|
101
|
-
},
|
|
102
|
-
let
|
|
108
|
+
}, L = (t, e, n) => {
|
|
109
|
+
let s = () => {
|
|
103
110
|
};
|
|
104
|
-
return
|
|
105
|
-
|
|
106
|
-
}), () =>
|
|
111
|
+
return x().then(() => {
|
|
112
|
+
s = S(t(), e, n);
|
|
113
|
+
}), () => s();
|
|
107
114
|
};
|
|
108
115
|
export {
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
116
|
+
D as cacheUpdate,
|
|
117
|
+
U as computed,
|
|
118
|
+
b as effect,
|
|
119
|
+
L as nextTickRender,
|
|
120
|
+
A as state,
|
|
121
|
+
k as store
|
|
115
122
|
};
|
|
116
123
|
//# sourceMappingURL=lithentHelper.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lithentHelper.mjs","sources":["../src/hook/state.ts","../src/hook/computed.ts","../src/hook/effect.ts","../src/hook/store.ts","../src/hook/cacheUpdate.ts","../src/hook/nextTickRender.ts"],"sourcesContent":["export const state = <T>(\n value: T,\n renew: () => boolean\n): {\n value: T;\n v: T;\n} => {\n let result = value;\n\n return {\n get value() {\n return result;\n },\n get v() {\n return result;\n },\n set value(newValue: T) {\n result = newValue;\n renew();\n },\n set v(newValue: T) {\n result = newValue;\n renew();\n },\n };\n};\n","export const computed = <T>(\n value: () => T\n): {\n value: T;\n v: T;\n} => {\n let result = value;\n\n return {\n get value() {\n return result();\n },\n get v() {\n return result();\n },\n set value(_newValue: T) {\n throw new Error(`You can't change 'computed'`);\n },\n set v(_newValue: T) {\n throw new Error(`You can't change 'computed'`);\n },\n };\n};\n","import { updateCallback, mountCallback } from 'lithent';\n\nexport const effect = (\n forward: () => (() => void) | void,\n backward: () => (() => void) | void = () => {},\n dependencies: () => any[] = () => []\n) => {\n mountCallback(() => {\n forward();\n\n return backward;\n });\n\n updateCallback(() => {\n if (backward) {\n backward();\n }\n\n return forward;\n }, dependencies);\n};\n","/**\n * DataStore\n */\ntype StoreType<V> = V extends { [key: string]: unknown } ? V : { value: V };\n\ntype Renew<T> = (store: T) => boolean | AbortSignal | void;\ntype StoreValue<T> = {\n [key: string | symbol]: Renew<T>[];\n};\ntype StoreRenderObserveMap<T> = { [key: string | symbol]: StoreValue<T> };\nconst storeGroup = new Map<string | symbol, unknown>();\nconst abortSignalSets = new WeakSet<AbortSignal>();\nconst allowInitSetting = { value: false };\n\nexport const store = <V>(initialValue: V) => {\n type T = StoreType<V>;\n\n let value = null;\n if (typeof initialValue === 'object' && initialValue !== null) {\n value = initialValue;\n } else {\n value = { value: initialValue };\n }\n\n const storeKey = Symbol();\n const storeRenderList: StoreValue<T> = {};\n const storeRenderObserveList: StoreRenderObserveMap<T>[] = [];\n\n storeGroup.set(storeKey, value);\n\n return (renew?: Renew<T>, makeObserver?: (store: T) => unknown[]) => {\n const storeRenderObserveMap: StoreRenderObserveMap<T> = {};\n let makedProxy: null | T = null;\n\n storeRenderObserveList.push(storeRenderObserveMap);\n\n if (renew && makeObserver) {\n makedProxy = updater<T>(\n storeKey,\n storeRenderList,\n () => renew(makedProxy!),\n storeRenderObserveMap,\n storeRenderObserveList\n );\n allowInitSetting.value = true;\n makeObserver(makedProxy);\n allowInitSetting.value = false;\n } else if (renew) {\n storeRenderList[storeKey] ??= [];\n }\n\n if (!makedProxy) {\n makedProxy = updater<T>(storeKey, storeRenderList);\n\n if (renew) {\n storeRenderList[storeKey].push(() => renew(makedProxy!));\n }\n }\n\n if (renew) {\n runFirstEmit<T>(\n () => renew(makedProxy!),\n storeKey,\n storeRenderList,\n storeRenderObserveMap\n );\n }\n\n return makedProxy;\n };\n};\n\nconst updater = <T extends { [key: string | symbol]: unknown }>(\n storeKey: string | symbol,\n storeRenderList: StoreValue<T>,\n run?: () => boolean | AbortSignal | void,\n storeRenderObserveMap?: { [key: string | symbol]: StoreValue<T> },\n storeRenderObserveList?: StoreRenderObserveMap<T>[]\n) => {\n const allowedAccessProp: (keyof T)[] = [];\n\n const result = new Proxy(storeGroup.get(storeKey) as T, {\n get(target: T, prop: keyof T) {\n if (run && storeRenderObserveMap && allowInitSetting.value) {\n storeRenderObserveMap[storeKey] ??= {};\n storeRenderObserveMap[storeKey][prop] ??= [];\n\n if (!storeRenderObserveMap[storeKey][prop].includes(run)) {\n storeRenderObserveMap[storeKey][prop].push(run);\n allowedAccessProp.push(prop);\n }\n }\n\n if (allowedAccessProp.includes(prop) || !run) {\n return target[prop];\n }\n\n return null;\n },\n set(target, prop: keyof T, value) {\n if (allowedAccessProp.includes(prop) || !run) {\n target[prop] = value;\n } else {\n return true;\n }\n\n const renderList = storeRenderList[storeKey] || [];\n const trashCollections: Renew<T>[] = [];\n\n renderList.forEach(renew => {\n if (renew(result) === false) {\n trashCollections.push(renew);\n }\n });\n\n (storeRenderObserveList || []).forEach(storeRenderObserveMap => {\n const renderObserveList: Renew<T>[] = run\n ? (storeRenderObserveMap && storeRenderObserveMap[storeKey][prop]) ||\n []\n : [];\n renderObserveList.forEach(renew => {\n if (renew(result) === false) {\n trashCollections.push(renew);\n }\n });\n trashCollections.forEach(deleteTarget => {\n renderObserveList.splice(renderObserveList.indexOf(deleteTarget), 1);\n });\n });\n\n trashCollections.forEach(deleteTarget => {\n renderList.splice(renderList.indexOf(deleteTarget), 1);\n });\n\n return true;\n },\n });\n\n return result;\n};\n\nconst runFirstEmit = <T>(\n run: () => boolean | void | AbortSignal,\n storeKey: symbol,\n storeRenderList: StoreValue<T>,\n storeRenderObserveMap: { [key: string | symbol]: StoreValue<T> }\n) => {\n const renewResult = run();\n\n if (renewResult instanceof AbortSignal) {\n renewResult.addEventListener('abort', () => {\n const renderList = storeRenderList[storeKey] || [];\n const renderObserveList: StoreValue<T> =\n storeRenderObserveMap[storeKey] || {};\n\n renderList.splice(renderList.indexOf(run), 1);\n Object.values(renderObserveList).forEach(item => {\n item.splice(item.indexOf(run), 1);\n });\n abortSignalSets.delete(renewResult);\n });\n abortSignalSets.add(renewResult);\n }\n};\n","import { WDom, Props } from 'lithent';\n\nexport const cacheUpdate = (\n checkFunction: () => unknown[],\n updater: (props: Props) => WDom\n) => {\n let originalDefs: unknown[] = [];\n let originalUpdater: WDom | null = null;\n\n return (props: Props) => {\n const newDefs = checkFunction();\n const isSame = originalDefs.every((def, index) => def === newDefs[index]);\n\n originalDefs = newDefs;\n\n if (isSame && originalUpdater) {\n return originalUpdater;\n }\n\n const newUpdater = updater(props);\n originalUpdater = newUpdater;\n\n return newUpdater;\n };\n};\n","import { render, WDom, nextTick } from 'lithent';\n\nexport const nextTickRender = (\n wDomMaker: () => WDom,\n wrapElement: HTMLElement | null,\n afterElement?: HTMLElement | null\n) => {\n let destroy = () => {};\n\n nextTick().then(() => {\n destroy = render(wDomMaker(), wrapElement, afterElement);\n });\n\n return () => destroy();\n};\n"],"names":["state","value","renew","result","newValue","computed","_newValue","effect","forward","backward","dependencies","mountCallback","updateCallback","storeGroup","abortSignalSets","allowInitSetting","store","initialValue","storeKey","storeRenderList","storeRenderObserveList","makeObserver","storeRenderObserveMap","makedProxy","updater","runFirstEmit","run","allowedAccessProp","target","prop","_a","renderList","trashCollections","renderObserveList","deleteTarget","renewResult","item","cacheUpdate","checkFunction","originalDefs","originalUpdater","props","newDefs","isSame","def","index","newUpdater","nextTickRender","wDomMaker","wrapElement","afterElement","destroy","nextTick","render"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"lithentHelper.mjs","sources":["../src/hook/state.ts","../src/hook/computed.ts","../src/hook/effect.ts","../src/hook/store.ts","../src/hook/cacheUpdate.ts","../src/hook/nextTickRender.ts"],"sourcesContent":["export const state = <T>(\n value: T,\n renew: () => boolean\n): {\n value: T;\n v: T;\n} => {\n let result = value;\n\n return {\n get value() {\n return result;\n },\n get v() {\n return result;\n },\n set value(newValue: T) {\n result = newValue;\n renew();\n },\n set v(newValue: T) {\n result = newValue;\n renew();\n },\n };\n};\n","export const computed = <T>(\n value: () => T\n): {\n value: T;\n v: T;\n} => {\n let result = value;\n\n return {\n get value() {\n return result();\n },\n get v() {\n return result();\n },\n set value(_newValue: T) {\n throw new Error(`You can't change 'computed'`);\n },\n set v(_newValue: T) {\n throw new Error(`You can't change 'computed'`);\n },\n };\n};\n","import { updateCallback, mountCallback } from 'lithent';\n\nexport const effect = (\n forward: () => (() => void) | void,\n backward: () => (() => void) | void = () => {},\n dependencies: () => any[] = () => []\n) => {\n mountCallback(() => {\n forward();\n\n return backward;\n });\n\n updateCallback(() => {\n if (backward) {\n backward();\n }\n\n return forward;\n }, dependencies);\n};\n","/**\n * DataStore\n */\ntype Renew<T> = (store: T) => boolean | AbortSignal | void;\ntype Run = () => boolean | AbortSignal | void;\ntype StoreType<V> = V extends { [key: string]: unknown } ? V : { value: V };\ntype StoreValue = {\n [key: string | symbol]: Set<Run>;\n};\n\nconst DEFAULT_OPTION = { cache: true };\n\nexport const store = <V>(initialValue: V) => {\n type T = StoreType<V>;\n\n const allowInitSetting = { value: false };\n const isObjectTypeValue =\n !Array.isArray(initialValue) &&\n typeof initialValue === 'object' &&\n initialValue !== null;\n const value: T = isObjectTypeValue\n ? (initialValue as T)\n : ({ value: initialValue } as T);\n\n const storeRenderList: Set<Run> = new Set();\n const storeRenderObserveList: StoreValue[] = [];\n const cacheMap = new WeakMap<Renew<T>, T>();\n\n return (\n renew?: Renew<T>,\n makeObserver?: ((store: T) => unknown[]) | null,\n userOption?: { cache?: boolean }\n ) => {\n const { cache } = Object.assign({}, DEFAULT_OPTION, userOption || {});\n\n if (cache && renew && cacheMap.has(renew)) {\n return cacheMap.get(renew)!;\n }\n\n const storeRenderObserveMap: StoreValue = {};\n let makedProxy: { value: null | T } = { value: null };\n let run: Run = () => {};\n\n storeRenderObserveList.push(storeRenderObserveMap);\n\n if (renew && makeObserver) {\n run = () => renew(makedProxy.value!);\n makedProxy.value = updater<T>(\n value,\n allowInitSetting,\n storeRenderList,\n run,\n storeRenderObserveMap,\n storeRenderObserveList\n );\n allowInitSetting.value = true;\n makeObserver(makedProxy.value);\n allowInitSetting.value = false;\n }\n\n if (!makedProxy.value) {\n makedProxy.value = updater<T>(value, allowInitSetting, storeRenderList);\n\n if (renew) {\n run = () => renew(makedProxy.value!);\n storeRenderList.add(run);\n }\n }\n\n if (renew) {\n runFirstEmit(run, storeRenderList, storeRenderObserveMap);\n cacheMap.set(renew, makedProxy.value);\n }\n\n return makedProxy.value;\n };\n};\n\nconst updater = <T extends { [key: string | symbol]: unknown }>(\n value: T,\n allowInitSetting: { value: boolean },\n storeRenderList: Set<Run>,\n run?: Run,\n storeRenderObserveMap?: StoreValue,\n storeRenderObserveList?: StoreValue[]\n) => {\n const allowedAccessProp: (keyof T)[] = [];\n\n const result = new Proxy(value, {\n get(target: T, prop: keyof T) {\n if (run && storeRenderObserveMap && allowInitSetting.value) {\n storeRenderObserveMap[prop] ??= new Set();\n\n if (!storeRenderObserveMap[prop].has(run)) {\n storeRenderObserveMap[prop].add(run);\n allowedAccessProp.push(prop);\n }\n }\n\n if (allowedAccessProp.includes(prop) || !run) {\n return target[prop];\n }\n\n return null;\n },\n set(target, prop: keyof T, value) {\n if (target[prop] === value) {\n return true;\n } else if (allowedAccessProp.includes(prop) || !run) {\n target[prop] = value;\n } else {\n return true;\n }\n\n execDependentCallbacks(\n storeRenderList,\n storeRenderObserveList,\n prop,\n run\n );\n\n return true;\n },\n });\n\n return result;\n};\n\nconst execDependentCallbacks = <T>(\n storeRenderList: Set<Run>,\n storeRenderObserveList: StoreValue[] = [],\n prop: keyof T,\n run?: () => boolean | AbortSignal | void\n) => {\n const trashCollections: Run[] = [];\n\n trashCollections.push(...runWithtrashCollectUnit(storeRenderList));\n\n (storeRenderObserveList || []).forEach(storeRenderObserveMap => {\n const renderObserveList: Set<Run> = run\n ? storeRenderObserveMap[prop] || new Set<Run>()\n : new Set<Run>();\n\n trashCollections.push(...runWithtrashCollectUnit(renderObserveList));\n\n removeTrashCollect(trashCollections, [...renderObserveList.values()]);\n });\n\n removeTrashCollect(trashCollections, [...storeRenderList.values()]);\n};\n\nconst removeTrashCollect = (trashCollections: Run[], targetList: Run[]) => {\n trashCollections.forEach(deleteTarget => {\n targetList.splice(targetList.indexOf(deleteTarget), 1);\n });\n};\n\nconst runWithtrashCollectUnit = (storeRenderList: Set<Run>) => {\n const trashes: Run[] = [];\n storeRenderList.forEach(run => {\n if (run() === false) {\n trashes.push(run);\n }\n });\n return trashes;\n};\n\nconst runFirstEmit = (\n run: () => boolean | void | AbortSignal,\n storeRenderList: Set<Run>,\n storeRenderObserveMap: StoreValue\n) => {\n const renewResult = run();\n\n if (renewResult instanceof AbortSignal) {\n renewResult.addEventListener('abort', () => {\n const renderObserveList: StoreValue = storeRenderObserveMap || {};\n\n storeRenderList.delete(run);\n\n Object.values(renderObserveList).forEach(item => {\n item.delete(run);\n });\n });\n }\n};\n","import { WDom, Props } from 'lithent';\n\nexport const cacheUpdate = (\n checkFunction: () => unknown[],\n updater: (props: Props) => WDom\n) => {\n let originalDefs: unknown[] = [];\n let originalUpdater: WDom | null = null;\n\n return (props: Props) => {\n const newDefs = checkFunction();\n const isSame = originalDefs.every((def, index) => def === newDefs[index]);\n\n originalDefs = newDefs;\n\n if (isSame && originalUpdater) {\n return originalUpdater;\n }\n\n const newUpdater = updater(props);\n originalUpdater = newUpdater;\n\n return newUpdater;\n };\n};\n","import { render, WDom, nextTick } from 'lithent';\n\nexport const nextTickRender = (\n wDomMaker: () => WDom,\n wrapElement: HTMLElement | null,\n afterElement?: HTMLElement | null\n) => {\n let destroy = () => {};\n\n nextTick().then(() => {\n destroy = render(wDomMaker(), wrapElement, afterElement);\n });\n\n return () => destroy();\n};\n"],"names":["state","value","renew","result","newValue","computed","_newValue","effect","forward","backward","dependencies","mountCallback","updateCallback","DEFAULT_OPTION","store","initialValue","allowInitSetting","storeRenderList","storeRenderObserveList","cacheMap","makeObserver","userOption","cache","storeRenderObserveMap","makedProxy","run","updater","runFirstEmit","allowedAccessProp","target","prop","execDependentCallbacks","trashCollections","runWithtrashCollectUnit","renderObserveList","removeTrashCollect","targetList","deleteTarget","trashes","renewResult","item","cacheUpdate","checkFunction","originalDefs","originalUpdater","props","newDefs","isSame","def","index","newUpdater","nextTickRender","wDomMaker","wrapElement","afterElement","destroy","nextTick","render"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
(function(a,f){typeof exports=="object"&&typeof module<"u"?f(exports,require("lithent")):typeof define=="function"&&define.amd?define(["exports","lithent"],f):(a=typeof globalThis<"u"?globalThis:a||self,f(a.lithentHelper={},a.lithent))})(this,function(a,f){"use strict";const E=(t,e)=>{let n=t;return{get value(){return n},get v(){return n},set value(s){n=s,e()},set v(s){n=s,e()}}},S=t=>{let e=t;return{get value(){return e()},get v(){return e()},set value(n){throw new Error("You can't change 'computed'")},set v(n){throw new Error("You can't change 'computed'")}}},j=(t,e=()=>{},n=()=>[])=>{f.mountCallback(()=>(t(),e)),f.updateCallback(()=>(e&&e(),t),n)},b={cache:!0},C=t=>{const e={value:!1},s=!Array.isArray(t)&&typeof t=="object"&&t!==null?t:{value:t},u=new Set,r=[],o=new WeakMap;return(l,i,c)=>{const{cache:v}=Object.assign({},b,c||{});if(v&&l&&o.has(l))return o.get(l);const y={};let d={value:null},h=()=>{};return r.push(y),l&&i&&(h=()=>l(d.value),d.value=g(s,e,u,h,y,r),e.value=!0,i(d.value),e.value=!1),d.value||(d.value=g(s,e,u),l&&(h=()=>l(d.value),u.add(h))),l&&(k(h,u,y),o.set(l,d.value)),d.value}},g=(t,e,n,s,u,r)=>{const o=[];return new Proxy(t,{get(i,c){return s&&u&&e.value&&(u[c]??(u[c]=new Set),u[c].has(s)||(u[c].add(s),o.push(c))),o.includes(c)||!s?i[c]:null},set(i,c,v){if(i[c]===v)return!0;if(o.includes(c)||!s)i[c]=v;else return!0;return U(n,r,c,s),!0}})},U=(t,e=[],n,s)=>{const u=[];u.push(...T(t)),(e||[]).forEach(r=>{const o=s?r[n]||new Set:new Set;u.push(...T(o)),m(u,[...o.values()])}),m(u,[...t.values()])},m=(t,e)=>{t.forEach(n=>{e.splice(e.indexOf(n),1)})},T=t=>{const e=[];return t.forEach(n=>{n()===!1&&e.push(n)}),e},k=(t,e,n)=>{const s=t();s instanceof AbortSignal&&s.addEventListener("abort",()=>{const u=n||{};e.delete(t),Object.values(u).forEach(r=>{r.delete(t)})})},w=(t,e)=>{let n=[],s=null;return u=>{const r=t(),o=n.every((i,c)=>i===r[c]);if(n=r,o&&s)return s;const l=e(u);return s=l,l}},A=(t,e,n)=>{let s=()=>{};return f.nextTick().then(()=>{s=f.render(t(),e,n)}),()=>s()};a.cacheUpdate=w,a.computed=S,a.effect=j,a.nextTickRender=A,a.state=E,a.store=C,Object.defineProperty(a,Symbol.toStringTag,{value:"Module"})});
|
|
2
2
|
//# sourceMappingURL=lithentHelper.umd.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lithentHelper.umd.js","sources":["../src/hook/state.ts","../src/hook/computed.ts","../src/hook/effect.ts","../src/hook/store.ts","../src/hook/cacheUpdate.ts","../src/hook/nextTickRender.ts"],"sourcesContent":["export const state = <T>(\n value: T,\n renew: () => boolean\n): {\n value: T;\n v: T;\n} => {\n let result = value;\n\n return {\n get value() {\n return result;\n },\n get v() {\n return result;\n },\n set value(newValue: T) {\n result = newValue;\n renew();\n },\n set v(newValue: T) {\n result = newValue;\n renew();\n },\n };\n};\n","export const computed = <T>(\n value: () => T\n): {\n value: T;\n v: T;\n} => {\n let result = value;\n\n return {\n get value() {\n return result();\n },\n get v() {\n return result();\n },\n set value(_newValue: T) {\n throw new Error(`You can't change 'computed'`);\n },\n set v(_newValue: T) {\n throw new Error(`You can't change 'computed'`);\n },\n };\n};\n","import { updateCallback, mountCallback } from 'lithent';\n\nexport const effect = (\n forward: () => (() => void) | void,\n backward: () => (() => void) | void = () => {},\n dependencies: () => any[] = () => []\n) => {\n mountCallback(() => {\n forward();\n\n return backward;\n });\n\n updateCallback(() => {\n if (backward) {\n backward();\n }\n\n return forward;\n }, dependencies);\n};\n","/**\n * DataStore\n */\ntype StoreType<V> = V extends { [key: string]: unknown } ? V : { value: V };\n\ntype Renew<T> = (store: T) => boolean | AbortSignal | void;\ntype StoreValue<T> = {\n [key: string | symbol]: Renew<T>[];\n};\ntype StoreRenderObserveMap<T> = { [key: string | symbol]: StoreValue<T> };\nconst storeGroup = new Map<string | symbol, unknown>();\nconst abortSignalSets = new WeakSet<AbortSignal>();\nconst allowInitSetting = { value: false };\n\nexport const store = <V>(initialValue: V) => {\n type T = StoreType<V>;\n\n let value = null;\n if (typeof initialValue === 'object' && initialValue !== null) {\n value = initialValue;\n } else {\n value = { value: initialValue };\n }\n\n const storeKey = Symbol();\n const storeRenderList: StoreValue<T> = {};\n const storeRenderObserveList: StoreRenderObserveMap<T>[] = [];\n\n storeGroup.set(storeKey, value);\n\n return (renew?: Renew<T>, makeObserver?: (store: T) => unknown[]) => {\n const storeRenderObserveMap: StoreRenderObserveMap<T> = {};\n let makedProxy: null | T = null;\n\n storeRenderObserveList.push(storeRenderObserveMap);\n\n if (renew && makeObserver) {\n makedProxy = updater<T>(\n storeKey,\n storeRenderList,\n () => renew(makedProxy!),\n storeRenderObserveMap,\n storeRenderObserveList\n );\n allowInitSetting.value = true;\n makeObserver(makedProxy);\n allowInitSetting.value = false;\n } else if (renew) {\n storeRenderList[storeKey] ??= [];\n }\n\n if (!makedProxy) {\n makedProxy = updater<T>(storeKey, storeRenderList);\n\n if (renew) {\n storeRenderList[storeKey].push(() => renew(makedProxy!));\n }\n }\n\n if (renew) {\n runFirstEmit<T>(\n () => renew(makedProxy!),\n storeKey,\n storeRenderList,\n storeRenderObserveMap\n );\n }\n\n return makedProxy;\n };\n};\n\nconst updater = <T extends { [key: string | symbol]: unknown }>(\n storeKey: string | symbol,\n storeRenderList: StoreValue<T>,\n run?: () => boolean | AbortSignal | void,\n storeRenderObserveMap?: { [key: string | symbol]: StoreValue<T> },\n storeRenderObserveList?: StoreRenderObserveMap<T>[]\n) => {\n const allowedAccessProp: (keyof T)[] = [];\n\n const result = new Proxy(storeGroup.get(storeKey) as T, {\n get(target: T, prop: keyof T) {\n if (run && storeRenderObserveMap && allowInitSetting.value) {\n storeRenderObserveMap[storeKey] ??= {};\n storeRenderObserveMap[storeKey][prop] ??= [];\n\n if (!storeRenderObserveMap[storeKey][prop].includes(run)) {\n storeRenderObserveMap[storeKey][prop].push(run);\n allowedAccessProp.push(prop);\n }\n }\n\n if (allowedAccessProp.includes(prop) || !run) {\n return target[prop];\n }\n\n return null;\n },\n set(target, prop: keyof T, value) {\n if (allowedAccessProp.includes(prop) || !run) {\n target[prop] = value;\n } else {\n return true;\n }\n\n const renderList = storeRenderList[storeKey] || [];\n const trashCollections: Renew<T>[] = [];\n\n renderList.forEach(renew => {\n if (renew(result) === false) {\n trashCollections.push(renew);\n }\n });\n\n (storeRenderObserveList || []).forEach(storeRenderObserveMap => {\n const renderObserveList: Renew<T>[] = run\n ? (storeRenderObserveMap && storeRenderObserveMap[storeKey][prop]) ||\n []\n : [];\n renderObserveList.forEach(renew => {\n if (renew(result) === false) {\n trashCollections.push(renew);\n }\n });\n trashCollections.forEach(deleteTarget => {\n renderObserveList.splice(renderObserveList.indexOf(deleteTarget), 1);\n });\n });\n\n trashCollections.forEach(deleteTarget => {\n renderList.splice(renderList.indexOf(deleteTarget), 1);\n });\n\n return true;\n },\n });\n\n return result;\n};\n\nconst runFirstEmit = <T>(\n run: () => boolean | void | AbortSignal,\n storeKey: symbol,\n storeRenderList: StoreValue<T>,\n storeRenderObserveMap: { [key: string | symbol]: StoreValue<T> }\n) => {\n const renewResult = run();\n\n if (renewResult instanceof AbortSignal) {\n renewResult.addEventListener('abort', () => {\n const renderList = storeRenderList[storeKey] || [];\n const renderObserveList: StoreValue<T> =\n storeRenderObserveMap[storeKey] || {};\n\n renderList.splice(renderList.indexOf(run), 1);\n Object.values(renderObserveList).forEach(item => {\n item.splice(item.indexOf(run), 1);\n });\n abortSignalSets.delete(renewResult);\n });\n abortSignalSets.add(renewResult);\n }\n};\n","import { WDom, Props } from 'lithent';\n\nexport const cacheUpdate = (\n checkFunction: () => unknown[],\n updater: (props: Props) => WDom\n) => {\n let originalDefs: unknown[] = [];\n let originalUpdater: WDom | null = null;\n\n return (props: Props) => {\n const newDefs = checkFunction();\n const isSame = originalDefs.every((def, index) => def === newDefs[index]);\n\n originalDefs = newDefs;\n\n if (isSame && originalUpdater) {\n return originalUpdater;\n }\n\n const newUpdater = updater(props);\n originalUpdater = newUpdater;\n\n return newUpdater;\n };\n};\n","import { render, WDom, nextTick } from 'lithent';\n\nexport const nextTickRender = (\n wDomMaker: () => WDom,\n wrapElement: HTMLElement | null,\n afterElement?: HTMLElement | null\n) => {\n let destroy = () => {};\n\n nextTick().then(() => {\n destroy = render(wDomMaker(), wrapElement, afterElement);\n });\n\n return () => destroy();\n};\n"],"names":["state","value","renew","result","newValue","computed","_newValue","effect","forward","backward","dependencies","mountCallback","updateCallback","storeGroup","abortSignalSets","allowInitSetting","store","initialValue","storeKey","storeRenderList","storeRenderObserveList","makeObserver","storeRenderObserveMap","makedProxy","updater","runFirstEmit","run","allowedAccessProp","target","prop","_a","renderList","trashCollections","renderObserveList","deleteTarget","renewResult","item","cacheUpdate","checkFunction","originalDefs","originalUpdater","props","newDefs","isSame","def","index","newUpdater","nextTickRender","wDomMaker","wrapElement","afterElement","destroy","nextTick","render"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"lithentHelper.umd.js","sources":["../src/hook/state.ts","../src/hook/computed.ts","../src/hook/effect.ts","../src/hook/store.ts","../src/hook/cacheUpdate.ts","../src/hook/nextTickRender.ts"],"sourcesContent":["export const state = <T>(\n value: T,\n renew: () => boolean\n): {\n value: T;\n v: T;\n} => {\n let result = value;\n\n return {\n get value() {\n return result;\n },\n get v() {\n return result;\n },\n set value(newValue: T) {\n result = newValue;\n renew();\n },\n set v(newValue: T) {\n result = newValue;\n renew();\n },\n };\n};\n","export const computed = <T>(\n value: () => T\n): {\n value: T;\n v: T;\n} => {\n let result = value;\n\n return {\n get value() {\n return result();\n },\n get v() {\n return result();\n },\n set value(_newValue: T) {\n throw new Error(`You can't change 'computed'`);\n },\n set v(_newValue: T) {\n throw new Error(`You can't change 'computed'`);\n },\n };\n};\n","import { updateCallback, mountCallback } from 'lithent';\n\nexport const effect = (\n forward: () => (() => void) | void,\n backward: () => (() => void) | void = () => {},\n dependencies: () => any[] = () => []\n) => {\n mountCallback(() => {\n forward();\n\n return backward;\n });\n\n updateCallback(() => {\n if (backward) {\n backward();\n }\n\n return forward;\n }, dependencies);\n};\n","/**\n * DataStore\n */\ntype Renew<T> = (store: T) => boolean | AbortSignal | void;\ntype Run = () => boolean | AbortSignal | void;\ntype StoreType<V> = V extends { [key: string]: unknown } ? V : { value: V };\ntype StoreValue = {\n [key: string | symbol]: Set<Run>;\n};\n\nconst DEFAULT_OPTION = { cache: true };\n\nexport const store = <V>(initialValue: V) => {\n type T = StoreType<V>;\n\n const allowInitSetting = { value: false };\n const isObjectTypeValue =\n !Array.isArray(initialValue) &&\n typeof initialValue === 'object' &&\n initialValue !== null;\n const value: T = isObjectTypeValue\n ? (initialValue as T)\n : ({ value: initialValue } as T);\n\n const storeRenderList: Set<Run> = new Set();\n const storeRenderObserveList: StoreValue[] = [];\n const cacheMap = new WeakMap<Renew<T>, T>();\n\n return (\n renew?: Renew<T>,\n makeObserver?: ((store: T) => unknown[]) | null,\n userOption?: { cache?: boolean }\n ) => {\n const { cache } = Object.assign({}, DEFAULT_OPTION, userOption || {});\n\n if (cache && renew && cacheMap.has(renew)) {\n return cacheMap.get(renew)!;\n }\n\n const storeRenderObserveMap: StoreValue = {};\n let makedProxy: { value: null | T } = { value: null };\n let run: Run = () => {};\n\n storeRenderObserveList.push(storeRenderObserveMap);\n\n if (renew && makeObserver) {\n run = () => renew(makedProxy.value!);\n makedProxy.value = updater<T>(\n value,\n allowInitSetting,\n storeRenderList,\n run,\n storeRenderObserveMap,\n storeRenderObserveList\n );\n allowInitSetting.value = true;\n makeObserver(makedProxy.value);\n allowInitSetting.value = false;\n }\n\n if (!makedProxy.value) {\n makedProxy.value = updater<T>(value, allowInitSetting, storeRenderList);\n\n if (renew) {\n run = () => renew(makedProxy.value!);\n storeRenderList.add(run);\n }\n }\n\n if (renew) {\n runFirstEmit(run, storeRenderList, storeRenderObserveMap);\n cacheMap.set(renew, makedProxy.value);\n }\n\n return makedProxy.value;\n };\n};\n\nconst updater = <T extends { [key: string | symbol]: unknown }>(\n value: T,\n allowInitSetting: { value: boolean },\n storeRenderList: Set<Run>,\n run?: Run,\n storeRenderObserveMap?: StoreValue,\n storeRenderObserveList?: StoreValue[]\n) => {\n const allowedAccessProp: (keyof T)[] = [];\n\n const result = new Proxy(value, {\n get(target: T, prop: keyof T) {\n if (run && storeRenderObserveMap && allowInitSetting.value) {\n storeRenderObserveMap[prop] ??= new Set();\n\n if (!storeRenderObserveMap[prop].has(run)) {\n storeRenderObserveMap[prop].add(run);\n allowedAccessProp.push(prop);\n }\n }\n\n if (allowedAccessProp.includes(prop) || !run) {\n return target[prop];\n }\n\n return null;\n },\n set(target, prop: keyof T, value) {\n if (target[prop] === value) {\n return true;\n } else if (allowedAccessProp.includes(prop) || !run) {\n target[prop] = value;\n } else {\n return true;\n }\n\n execDependentCallbacks(\n storeRenderList,\n storeRenderObserveList,\n prop,\n run\n );\n\n return true;\n },\n });\n\n return result;\n};\n\nconst execDependentCallbacks = <T>(\n storeRenderList: Set<Run>,\n storeRenderObserveList: StoreValue[] = [],\n prop: keyof T,\n run?: () => boolean | AbortSignal | void\n) => {\n const trashCollections: Run[] = [];\n\n trashCollections.push(...runWithtrashCollectUnit(storeRenderList));\n\n (storeRenderObserveList || []).forEach(storeRenderObserveMap => {\n const renderObserveList: Set<Run> = run\n ? storeRenderObserveMap[prop] || new Set<Run>()\n : new Set<Run>();\n\n trashCollections.push(...runWithtrashCollectUnit(renderObserveList));\n\n removeTrashCollect(trashCollections, [...renderObserveList.values()]);\n });\n\n removeTrashCollect(trashCollections, [...storeRenderList.values()]);\n};\n\nconst removeTrashCollect = (trashCollections: Run[], targetList: Run[]) => {\n trashCollections.forEach(deleteTarget => {\n targetList.splice(targetList.indexOf(deleteTarget), 1);\n });\n};\n\nconst runWithtrashCollectUnit = (storeRenderList: Set<Run>) => {\n const trashes: Run[] = [];\n storeRenderList.forEach(run => {\n if (run() === false) {\n trashes.push(run);\n }\n });\n return trashes;\n};\n\nconst runFirstEmit = (\n run: () => boolean | void | AbortSignal,\n storeRenderList: Set<Run>,\n storeRenderObserveMap: StoreValue\n) => {\n const renewResult = run();\n\n if (renewResult instanceof AbortSignal) {\n renewResult.addEventListener('abort', () => {\n const renderObserveList: StoreValue = storeRenderObserveMap || {};\n\n storeRenderList.delete(run);\n\n Object.values(renderObserveList).forEach(item => {\n item.delete(run);\n });\n });\n }\n};\n","import { WDom, Props } from 'lithent';\n\nexport const cacheUpdate = (\n checkFunction: () => unknown[],\n updater: (props: Props) => WDom\n) => {\n let originalDefs: unknown[] = [];\n let originalUpdater: WDom | null = null;\n\n return (props: Props) => {\n const newDefs = checkFunction();\n const isSame = originalDefs.every((def, index) => def === newDefs[index]);\n\n originalDefs = newDefs;\n\n if (isSame && originalUpdater) {\n return originalUpdater;\n }\n\n const newUpdater = updater(props);\n originalUpdater = newUpdater;\n\n return newUpdater;\n };\n};\n","import { render, WDom, nextTick } from 'lithent';\n\nexport const nextTickRender = (\n wDomMaker: () => WDom,\n wrapElement: HTMLElement | null,\n afterElement?: HTMLElement | null\n) => {\n let destroy = () => {};\n\n nextTick().then(() => {\n destroy = render(wDomMaker(), wrapElement, afterElement);\n });\n\n return () => destroy();\n};\n"],"names":["state","value","renew","result","newValue","computed","_newValue","effect","forward","backward","dependencies","mountCallback","updateCallback","DEFAULT_OPTION","store","initialValue","allowInitSetting","storeRenderList","storeRenderObserveList","cacheMap","makeObserver","userOption","cache","storeRenderObserveMap","makedProxy","run","updater","runFirstEmit","allowedAccessProp","target","prop","execDependentCallbacks","trashCollections","runWithtrashCollectUnit","renderObserveList","removeTrashCollect","targetList","deleteTarget","trashes","renewResult","item","cacheUpdate","checkFunction","originalDefs","originalUpdater","props","newDefs","isSame","def","index","newUpdater","nextTickRender","wDomMaker","wrapElement","afterElement","destroy","nextTick","render"],"mappings":"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"}
|
package/helper/src/hook/store.ts
CHANGED
|
@@ -1,92 +1,98 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* DataStore
|
|
3
3
|
*/
|
|
4
|
-
type StoreType<V> = V extends { [key: string]: unknown } ? V : { value: V };
|
|
5
|
-
|
|
6
4
|
type Renew<T> = (store: T) => boolean | AbortSignal | void;
|
|
7
|
-
type
|
|
8
|
-
|
|
5
|
+
type Run = () => boolean | AbortSignal | void;
|
|
6
|
+
type StoreType<V> = V extends { [key: string]: unknown } ? V : { value: V };
|
|
7
|
+
type StoreValue = {
|
|
8
|
+
[key: string | symbol]: Set<Run>;
|
|
9
9
|
};
|
|
10
|
-
|
|
11
|
-
const
|
|
12
|
-
const abortSignalSets = new WeakSet<AbortSignal>();
|
|
13
|
-
const allowInitSetting = { value: false };
|
|
10
|
+
|
|
11
|
+
const DEFAULT_OPTION = { cache: true };
|
|
14
12
|
|
|
15
13
|
export const store = <V>(initialValue: V) => {
|
|
16
14
|
type T = StoreType<V>;
|
|
17
15
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
const
|
|
28
|
-
|
|
29
|
-
|
|
16
|
+
const allowInitSetting = { value: false };
|
|
17
|
+
const isObjectTypeValue =
|
|
18
|
+
!Array.isArray(initialValue) &&
|
|
19
|
+
typeof initialValue === 'object' &&
|
|
20
|
+
initialValue !== null;
|
|
21
|
+
const value: T = isObjectTypeValue
|
|
22
|
+
? (initialValue as T)
|
|
23
|
+
: ({ value: initialValue } as T);
|
|
24
|
+
|
|
25
|
+
const storeRenderList: Set<Run> = new Set();
|
|
26
|
+
const storeRenderObserveList: StoreValue[] = [];
|
|
27
|
+
const cacheMap = new WeakMap<Renew<T>, T>();
|
|
28
|
+
|
|
29
|
+
return (
|
|
30
|
+
renew?: Renew<T>,
|
|
31
|
+
makeObserver?: ((store: T) => unknown[]) | null,
|
|
32
|
+
userOption?: { cache?: boolean }
|
|
33
|
+
) => {
|
|
34
|
+
const { cache } = Object.assign({}, DEFAULT_OPTION, userOption || {});
|
|
35
|
+
|
|
36
|
+
if (cache && renew && cacheMap.has(renew)) {
|
|
37
|
+
return cacheMap.get(renew)!;
|
|
38
|
+
}
|
|
30
39
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
let
|
|
40
|
+
const storeRenderObserveMap: StoreValue = {};
|
|
41
|
+
let makedProxy: { value: null | T } = { value: null };
|
|
42
|
+
let run: Run = () => {};
|
|
34
43
|
|
|
35
44
|
storeRenderObserveList.push(storeRenderObserveMap);
|
|
36
45
|
|
|
37
46
|
if (renew && makeObserver) {
|
|
38
|
-
|
|
39
|
-
|
|
47
|
+
run = () => renew(makedProxy.value!);
|
|
48
|
+
makedProxy.value = updater<T>(
|
|
49
|
+
value,
|
|
50
|
+
allowInitSetting,
|
|
40
51
|
storeRenderList,
|
|
41
|
-
|
|
52
|
+
run,
|
|
42
53
|
storeRenderObserveMap,
|
|
43
54
|
storeRenderObserveList
|
|
44
55
|
);
|
|
45
56
|
allowInitSetting.value = true;
|
|
46
|
-
makeObserver(makedProxy);
|
|
57
|
+
makeObserver(makedProxy.value);
|
|
47
58
|
allowInitSetting.value = false;
|
|
48
|
-
} else if (renew) {
|
|
49
|
-
storeRenderList[storeKey] ??= [];
|
|
50
59
|
}
|
|
51
60
|
|
|
52
|
-
if (!makedProxy) {
|
|
53
|
-
makedProxy = updater<T>(
|
|
61
|
+
if (!makedProxy.value) {
|
|
62
|
+
makedProxy.value = updater<T>(value, allowInitSetting, storeRenderList);
|
|
54
63
|
|
|
55
64
|
if (renew) {
|
|
56
|
-
|
|
65
|
+
run = () => renew(makedProxy.value!);
|
|
66
|
+
storeRenderList.add(run);
|
|
57
67
|
}
|
|
58
68
|
}
|
|
59
69
|
|
|
60
70
|
if (renew) {
|
|
61
|
-
runFirstEmit
|
|
62
|
-
|
|
63
|
-
storeKey,
|
|
64
|
-
storeRenderList,
|
|
65
|
-
storeRenderObserveMap
|
|
66
|
-
);
|
|
71
|
+
runFirstEmit(run, storeRenderList, storeRenderObserveMap);
|
|
72
|
+
cacheMap.set(renew, makedProxy.value);
|
|
67
73
|
}
|
|
68
74
|
|
|
69
|
-
return makedProxy;
|
|
75
|
+
return makedProxy.value;
|
|
70
76
|
};
|
|
71
77
|
};
|
|
72
78
|
|
|
73
79
|
const updater = <T extends { [key: string | symbol]: unknown }>(
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
80
|
+
value: T,
|
|
81
|
+
allowInitSetting: { value: boolean },
|
|
82
|
+
storeRenderList: Set<Run>,
|
|
83
|
+
run?: Run,
|
|
84
|
+
storeRenderObserveMap?: StoreValue,
|
|
85
|
+
storeRenderObserveList?: StoreValue[]
|
|
79
86
|
) => {
|
|
80
87
|
const allowedAccessProp: (keyof T)[] = [];
|
|
81
88
|
|
|
82
|
-
const result = new Proxy(
|
|
89
|
+
const result = new Proxy(value, {
|
|
83
90
|
get(target: T, prop: keyof T) {
|
|
84
91
|
if (run && storeRenderObserveMap && allowInitSetting.value) {
|
|
85
|
-
storeRenderObserveMap[
|
|
86
|
-
storeRenderObserveMap[storeKey][prop] ??= [];
|
|
92
|
+
storeRenderObserveMap[prop] ??= new Set();
|
|
87
93
|
|
|
88
|
-
if (!storeRenderObserveMap[
|
|
89
|
-
storeRenderObserveMap[
|
|
94
|
+
if (!storeRenderObserveMap[prop].has(run)) {
|
|
95
|
+
storeRenderObserveMap[prop].add(run);
|
|
90
96
|
allowedAccessProp.push(prop);
|
|
91
97
|
}
|
|
92
98
|
}
|
|
@@ -98,39 +104,20 @@ const updater = <T extends { [key: string | symbol]: unknown }>(
|
|
|
98
104
|
return null;
|
|
99
105
|
},
|
|
100
106
|
set(target, prop: keyof T, value) {
|
|
101
|
-
if (
|
|
107
|
+
if (target[prop] === value) {
|
|
108
|
+
return true;
|
|
109
|
+
} else if (allowedAccessProp.includes(prop) || !run) {
|
|
102
110
|
target[prop] = value;
|
|
103
111
|
} else {
|
|
104
112
|
return true;
|
|
105
113
|
}
|
|
106
114
|
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
}
|
|
114
|
-
});
|
|
115
|
-
|
|
116
|
-
(storeRenderObserveList || []).forEach(storeRenderObserveMap => {
|
|
117
|
-
const renderObserveList: Renew<T>[] = run
|
|
118
|
-
? (storeRenderObserveMap && storeRenderObserveMap[storeKey][prop]) ||
|
|
119
|
-
[]
|
|
120
|
-
: [];
|
|
121
|
-
renderObserveList.forEach(renew => {
|
|
122
|
-
if (renew(result) === false) {
|
|
123
|
-
trashCollections.push(renew);
|
|
124
|
-
}
|
|
125
|
-
});
|
|
126
|
-
trashCollections.forEach(deleteTarget => {
|
|
127
|
-
renderObserveList.splice(renderObserveList.indexOf(deleteTarget), 1);
|
|
128
|
-
});
|
|
129
|
-
});
|
|
130
|
-
|
|
131
|
-
trashCollections.forEach(deleteTarget => {
|
|
132
|
-
renderList.splice(renderList.indexOf(deleteTarget), 1);
|
|
133
|
-
});
|
|
115
|
+
execDependentCallbacks(
|
|
116
|
+
storeRenderList,
|
|
117
|
+
storeRenderObserveList,
|
|
118
|
+
prop,
|
|
119
|
+
run
|
|
120
|
+
);
|
|
134
121
|
|
|
135
122
|
return true;
|
|
136
123
|
},
|
|
@@ -139,26 +126,61 @@ const updater = <T extends { [key: string | symbol]: unknown }>(
|
|
|
139
126
|
return result;
|
|
140
127
|
};
|
|
141
128
|
|
|
142
|
-
const
|
|
129
|
+
const execDependentCallbacks = <T>(
|
|
130
|
+
storeRenderList: Set<Run>,
|
|
131
|
+
storeRenderObserveList: StoreValue[] = [],
|
|
132
|
+
prop: keyof T,
|
|
133
|
+
run?: () => boolean | AbortSignal | void
|
|
134
|
+
) => {
|
|
135
|
+
const trashCollections: Run[] = [];
|
|
136
|
+
|
|
137
|
+
trashCollections.push(...runWithtrashCollectUnit(storeRenderList));
|
|
138
|
+
|
|
139
|
+
(storeRenderObserveList || []).forEach(storeRenderObserveMap => {
|
|
140
|
+
const renderObserveList: Set<Run> = run
|
|
141
|
+
? storeRenderObserveMap[prop] || new Set<Run>()
|
|
142
|
+
: new Set<Run>();
|
|
143
|
+
|
|
144
|
+
trashCollections.push(...runWithtrashCollectUnit(renderObserveList));
|
|
145
|
+
|
|
146
|
+
removeTrashCollect(trashCollections, [...renderObserveList.values()]);
|
|
147
|
+
});
|
|
148
|
+
|
|
149
|
+
removeTrashCollect(trashCollections, [...storeRenderList.values()]);
|
|
150
|
+
};
|
|
151
|
+
|
|
152
|
+
const removeTrashCollect = (trashCollections: Run[], targetList: Run[]) => {
|
|
153
|
+
trashCollections.forEach(deleteTarget => {
|
|
154
|
+
targetList.splice(targetList.indexOf(deleteTarget), 1);
|
|
155
|
+
});
|
|
156
|
+
};
|
|
157
|
+
|
|
158
|
+
const runWithtrashCollectUnit = (storeRenderList: Set<Run>) => {
|
|
159
|
+
const trashes: Run[] = [];
|
|
160
|
+
storeRenderList.forEach(run => {
|
|
161
|
+
if (run() === false) {
|
|
162
|
+
trashes.push(run);
|
|
163
|
+
}
|
|
164
|
+
});
|
|
165
|
+
return trashes;
|
|
166
|
+
};
|
|
167
|
+
|
|
168
|
+
const runFirstEmit = (
|
|
143
169
|
run: () => boolean | void | AbortSignal,
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
storeRenderObserveMap: { [key: string | symbol]: StoreValue<T> }
|
|
170
|
+
storeRenderList: Set<Run>,
|
|
171
|
+
storeRenderObserveMap: StoreValue
|
|
147
172
|
) => {
|
|
148
173
|
const renewResult = run();
|
|
149
174
|
|
|
150
175
|
if (renewResult instanceof AbortSignal) {
|
|
151
176
|
renewResult.addEventListener('abort', () => {
|
|
152
|
-
const
|
|
153
|
-
|
|
154
|
-
|
|
177
|
+
const renderObserveList: StoreValue = storeRenderObserveMap || {};
|
|
178
|
+
|
|
179
|
+
storeRenderList.delete(run);
|
|
155
180
|
|
|
156
|
-
renderList.splice(renderList.indexOf(run), 1);
|
|
157
181
|
Object.values(renderObserveList).forEach(item => {
|
|
158
|
-
item.
|
|
182
|
+
item.delete(run);
|
|
159
183
|
});
|
|
160
|
-
abortSignalSets.delete(renewResult);
|
|
161
184
|
});
|
|
162
|
-
abortSignalSets.add(renewResult);
|
|
163
185
|
}
|
|
164
186
|
};
|
|
@@ -11,6 +11,10 @@ const subscribe = store<{ count1: number; count2: number; count3: number }>({
|
|
|
11
11
|
let proxySubscribeChkValue: number = 0;
|
|
12
12
|
|
|
13
13
|
const abortControl = new AbortController();
|
|
14
|
+
// @ts-ignore
|
|
15
|
+
window.abort = abortControl;
|
|
16
|
+
|
|
17
|
+
console.log(abortControl);
|
|
14
18
|
const proxyFirst = subscribe(
|
|
15
19
|
store => {
|
|
16
20
|
proxySubscribeChkValue = store.count1;
|
|
@@ -23,6 +27,8 @@ const proxyFirst = subscribe(
|
|
|
23
27
|
);
|
|
24
28
|
|
|
25
29
|
console.log(proxyFirst);
|
|
30
|
+
// @ts-ignore
|
|
31
|
+
window.proxyFirst = proxyFirst;
|
|
26
32
|
|
|
27
33
|
const Component = mount(r => {
|
|
28
34
|
const local = subscribe(r, store => [store.count3]);
|
|
@@ -3,6 +3,7 @@ import { store } from '@/hook/store';
|
|
|
3
3
|
const testChangeRef = ref<null | (() => void)>(null);
|
|
4
4
|
|
|
5
5
|
const subscribe = store<number>(0);
|
|
6
|
+
const subscribeArr = store<number[]>([1]);
|
|
6
7
|
|
|
7
8
|
let proxySubscribeChkValue = 0;
|
|
8
9
|
const abortControl = new AbortController();
|
|
@@ -16,16 +17,21 @@ const proxyFirst = subscribe(store => {
|
|
|
16
17
|
console.log(proxyFirst);
|
|
17
18
|
|
|
18
19
|
const Component = mount(r => {
|
|
19
|
-
const local = subscribe(r);
|
|
20
|
+
const local = subscribe(r, null, { cache: false });
|
|
21
|
+
const localArr = subscribeArr(r);
|
|
20
22
|
|
|
21
23
|
const click = () => {
|
|
22
24
|
local.value += 1;
|
|
25
|
+
localArr.value = [...localArr.value, localArr.value.length + 1];
|
|
23
26
|
};
|
|
24
27
|
testChangeRef.value = click;
|
|
25
28
|
|
|
26
29
|
return () => (
|
|
27
30
|
<>
|
|
28
31
|
<div>value: {local.value}</div>
|
|
32
|
+
{localArr.value.map(item => (
|
|
33
|
+
<span>{item}</span>
|
|
34
|
+
))}
|
|
29
35
|
<button type="text" onClick={click}>
|
|
30
36
|
change count
|
|
31
37
|
</button>
|
|
@@ -43,7 +49,7 @@ if (import.meta.vitest) {
|
|
|
43
49
|
|
|
44
50
|
it('If the value is not an object, it is expanded to value and processed.', () => {
|
|
45
51
|
expect(testWrap.outerHTML).toBe(
|
|
46
|
-
'<div><div>value: 0</div><button type="text">change count</button></div>'
|
|
52
|
+
'<div><div>value: 0</div><span>1</span><button type="text">change count</button></div>'
|
|
47
53
|
);
|
|
48
54
|
if (testChangeRef.value) {
|
|
49
55
|
testChangeRef.value();
|
|
@@ -55,7 +61,7 @@ if (import.meta.vitest) {
|
|
|
55
61
|
it('If the value is not an object, the event operates normally and the value increases.', () => {
|
|
56
62
|
nextTick().then(() => {
|
|
57
63
|
expect(testWrap.outerHTML).toBe(
|
|
58
|
-
'<div><div>value: 3</div><button type="text">change count</button></div>'
|
|
64
|
+
'<div><div>value: 3</div><span>1</span><span>2</span><span>3</span><span>4</span><button type="text">change count</button></div>'
|
|
59
65
|
);
|
|
60
66
|
expect(proxySubscribeChkValue).toBe(3);
|
|
61
67
|
});
|
package/package.json
CHANGED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const o of document.querySelectorAll('link[rel="modulepreload"]'))l(o);new MutationObserver(o=>{for(const r of o)if(r.type==="childList")for(const u of r.addedNodes)u.tagName==="LINK"&&u.rel==="modulepreload"&&l(u)}).observe(document,{childList:!0,subtree:!0});function n(o){const r={};return o.integrity&&(r.integrity=o.integrity),o.referrerPolicy&&(r.referrerPolicy=o.referrerPolicy),o.crossOrigin==="use-credentials"?r.credentials="include":o.crossOrigin==="anonymous"?r.credentials="omit":r.credentials="same-origin",r}function l(o){if(o.ep)return;o.ep=!0;const r=n(o);fetch(o.href,r)}})();const E=e=>typeof e=="object"&&!("resolve"in e),w=(e,t)=>E(e)&&e.type===t,be=(e,t)=>"ctor"in e?e.ctor===(t==null?void 0:t.ctor):e===(t==null?void 0:t.ctor),Se=(e,t)=>{var n,l;return E(e)&&(t==null?void 0:t.type)==="fragment"&&((n=t==null?void 0:t.children)==null?void 0:n.length)===((l=e==null?void 0:e.children)==null?void 0:l.length)},Ne=(e,t)=>{var n,l;return E(e)&&(t==null?void 0:t.type)==="element"&&(t==null?void 0:t.tag)===e.tag&&((n=t==null?void 0:t.children)==null?void 0:n.length)===((l=e==null?void 0:e.children)==null?void 0:l.length)},X=(e,t)=>E(e)&&(t==null?void 0:t.type)===e.type,we=(e,t)=>{var n,l;return E(e)&&(t==null?void 0:t.type)===e.type&&(C(v((e.children||[])[0]))&&C(v(((t==null?void 0:t.children)||[])[0]))||((n=t==null?void 0:t.children)==null?void 0:n.length)===((l=e==null?void 0:e.children)==null?void 0:l.length))},v=e=>{var t,n;return((t=e==null?void 0:e.compProps)==null?void 0:t.key)??((n=e==null?void 0:e.props)==null?void 0:n.key)},y=e=>e&&["fragment","loop"].includes(e),O=e=>typeof e=="function"&&!ee(e)||typeof e=="object"&&"resolve"in e,ee=e=>typeof e=="function"&&e===N,te=e=>E(e)&&!e.type,C=e=>e!=null,_=(e,t)=>e==="style"&&typeof t=="object",Oe=(e,t)=>e==="ref"&&typeof t=="object",Te=e=>e.nodeType===1&&e.tagName==="OPTION",Ue=e=>e.nodeType===1&&e.tagName==="TEXTAREA",Ve=e=>e.nodeType===1&&["radio","checkbox"].includes(e.type),Ae=e=>{let t="et";return O(e)?t="c":w(e,"fragment")?t="f":w(e,"element")?t="e":w(e,"loop")?t="l":w(e,"text")?t="t":te(e)&&(t="et"),t},Le={c:be,l:we,t:X,e:Ne,f:Se,et:X},m=e=>e.getParent&&e.getParent(),R=Object.entries,ne=Object.keys,T=Object.assign,x={value:""},b={value:{}},M={value:!1},p=new WeakMap,De=e=>{p.set(e,{vd:{value:null},up:()=>{},upR:[],upS:{value:0},upD:[],upCB:[],mts:[],umts:[]})},S=()=>b.value,le=(e,t)=>p.get(e)[t],ke=e=>b.value=e,Me=e=>{b.value=e,De(e)},je=e=>{p.get(S()).umts.push(e)},U=e=>{const{compKey:t}=e;t&&$e(t),oe(e)},oe=e=>{(e.children||[]).forEach(t=>{t.compKey?U(t):oe(t)})},$e=e=>{const t=p.get(e);t&&(t.umts.forEach(n=>n()),t.umts=[],p.delete(e))};let j=[];const H=()=>{j.forEach(e=>Ie(e)),j=[]},Fe=e=>{e.compKey&&j.push(e)},re=e=>p.get(S()).mts.push(e),Ie=e=>{const{compKey:t}=e;if(t){const n=p.get(t),l=n==null?void 0:n.mts,o=n==null?void 0:n.upS;b.value=t,o&&(o.value=0),l&&(n.mts=[],l.forEach(r=>{const u=r();u&&je(u)}))}},z=(e,t=()=>[])=>{const n=p.get(S()),{upD:l,upS:o}=n,r=l[o.value];if(r&&Be(r,t())){const u=e();u&&n.upCB.push(u)}l[o.value]=t(),o.value+=1},Ke=e=>{const{compKey:t}=e;if(t){const n=p.get(t),l=n==null?void 0:n.upCB,o=n==null?void 0:n.upS;b.value=t,o&&(o.value=0),e.ctor&&l&&(n.upCB=[],l.forEach(r=>r()))}},Be=(e,t)=>e.length?e.some((n,l)=>n!==t[l]):!0,qe=e=>e==="className"?"class":e,ue=e=>e.replace(/^on(.*)/,(t,n)=>n.toLowerCase()),W=()=>new DocumentFragment,G=e=>document.createElement(e),He=(e,t,n)=>{t??(t=document.body),e.isRoot=!0,e.wrapElement=t;const l=A(e);return t.appendChild(l),H(),()=>{var o;const r=(o=p.get(e.compProps||{}))==null?void 0:o.vd.value;r&&U(r),V(r||e),We(r||e)}},ce=e=>{const{needRerender:t}=e;t&&t!=="N"&&({A:J,D:Y,R:Je,U:F,CNSU:F,SR:ae,SU:Ye}[t](e),delete e.needRerender,delete e.oldChildren,delete e.oldProps)},V=e=>{e.props&&e.el&&ve(e.props,e.el),(e.children||[]).forEach(t=>{V(t)})},We=e=>{ie(e,e.wrapElement)},Y=e=>{e.oldProps&&e.el&&ve(e.oldProps,e.el),ie(e,L(m(e)))},ie=(e,t)=>{var n,l;t&&e.el&&([1,3].includes((n=e.el)==null?void 0:n.nodeType)?t.removeChild(e.el):((l=e.el)==null?void 0:l.nodeType)===11&&de(e,t),delete e.el)},de=(e,t)=>{((e==null?void 0:e.oldChildren)||(e==null?void 0:e.children)||[]).forEach(n=>{var l;const o=(l=n.el)==null?void 0:l.nodeType;o&&([1,3].includes(o)?t.removeChild(n==null?void 0:n.el):o===11&&de(n,t))})},ae=e=>{Y(e),J(e)},Ye=e=>{if(F(e),m(e).needRerender!=="CNSU"){const t=se(e);J(e,t)}},J=(e,t)=>{t||(t=A(e));const n=m(e);if(n.type){const l=L(n),o=n.type==="loop"&&n.needRerender&&n.needRerender!=="CNSU"?$(n,m(n)):$(e,n);t&&l&&(o?l.insertBefore(t,o):l.appendChild(t),H())}},se=e=>y(e.type)?((e==null?void 0:e.children)||[]).reduce((t,n)=>{const l=se(n);return l&&t.appendChild(l),t},W()):e.el,$=(e,t)=>{const n=t.children||[],l=n.indexOf(e)+1,o=n.slice(l),r=pe(o),u=t.type||"";if(r)return r;if(!t.isRoot&&y(u))return $(t,m(t));if(t.isRoot&&y(u)&&t.afterElement)return t.afterElement},pe=e=>e.reduce((t,n)=>{const l=n.type,o=n.el,r=l&&y(l);return t||(r?pe(n.children||[]):o&&o.nodeType!==11?o:t)},void 0),Je=e=>{const t=m(e),n=e.el;if(t.type&&n)if(n.nodeType===11)ae(e);else{const l=L(t),o=A(e);l&&l.replaceChild(o,n),H()}},ve=(e,t)=>{R(e||{}).forEach(([n,l])=>{n.match(/^on/)&&t.removeEventListener(ue(n),l)})},F=e=>{var t;const n=e.el;if(e.type==="text"){Xe(e);return}if(n){const{oldProps:l,props:o}=e;he(o,n,l),delete e.oldProps,e.tag==="input"&&(n.value=String(((t=e==null?void 0:e.props)==null?void 0:t.value)||""))}(e.children||[]).forEach(l=>ce(l)),Ke(e)},Xe=e=>{const t=e.el;t&&(t.nodeValue=String(e.text))},he=(e,t,n)=>{const l={...n};R(e||{}).forEach(([o,r])=>{let u=!0;o==="key"||r===l[o]||(o==="innerHTML"&&typeof r=="string"?t.innerHTML=r:_(o,r)?Ze(r,_(o,l.style)?l.style:{},t):Oe(o,r)?r.value=t:o.match(/^on/)?Qe(t,o,r,l[o]):Ve(t)&&o==="checked"?t.checked=!!r:Ue(t)&&o==="value"?t.value=r:Te(t)&&o==="selected"?t.selected=!!r:o&&([u,r]=ze(r),u&&_e(qe(o),t,r))),u&&delete l[o]}),ne(l).forEach(o=>t.removeAttribute(o))},_e=(e,t,n)=>{x.value&&e!=="xmlns"?t.setAttributeNS(null,e,n):t.setAttribute(e,n)},ze=e=>{let t=!0;return typeof e=="boolean"&&(e||(t=!1),e=""),[t,String(e)]},A=e=>{let t;const{type:n,tag:l,text:o,props:r,children:u=[]}=e,i=y(n);return l==="svg"&&(x.value=String(r==null?void 0:r.xmlns)),i?t=W():n==="element"&&l?t=x.value?document.createElementNS(x.value,l):G(l):n==="text"&&C(o)?t=document.createTextNode(String(o)):t=G("e"),Ge(u,t),he(r,t),e.el=t,Fe(e),l==="svg"&&(x.value=""),t},Ge=(e,t)=>{const n=e.reduce((l,o)=>(o.type&&l.appendChild(A(o)),l),W());t&&n.hasChildNodes()&&t.appendChild(n)},Qe=(e,t,n,l)=>{const o=ue(t);l!==n&&(l&&e.removeEventListener(o,l),n&&e.addEventListener(o,n))},Ze=(e,t,n)=>{const l={...t},o=n==null?void 0:n.style;o&&(R(e).forEach(([r,u])=>{o[r]=u,delete l[r]}),R(l).forEach(([r])=>o[r]=""))},L=e=>{const t=y(e.type);return e.isRoot&&t?e.wrapElement:t?L(m(e)):e.el},D=(e,t)=>et(e,Le[Ae(e)](e,t),t),et=(e,t,n)=>{const l=ct(e,t,n),o=[l,t,n],r=nt(...o),u=r==="N";return u||(l.children=it(...o)),l.needRerender=r,tt(l,n,r),!u&&n&&(n.isLegacy=!0,delete n.children),l},tt=(e,t,n)=>{n!=="A"&&t&&(e.el=t.el),n&&["D","R","SR"].includes(n)&&(t&&(U(t),V(t)),e.oldChildren=t==null?void 0:t.children),e.oldProps=t==null?void 0:t.props},nt=(e,t,n)=>{const l=n&&n.type,o=te(e),r=e.isRoot,u=n&&m(n),i=!r&&(u==null?void 0:u.type),c=v(e),s=i==="loop"&&C(c),f=e.type==="text"&&t&&e.text===(n==null?void 0:n.text),h=e===n;let a;return o?a="D":f||h?a="N":l?t?a=s?"SU":"U":a=s?"SR":"R":a="A",e.type==="loop"&&a==="U"&&n&<(e,n)&&(a="CNSU"),a},lt=(e,t)=>{const n=[...(t==null?void 0:t.children)||[]],l=[...(e==null?void 0:e.children)||[]].filter(u=>n.find(i=>v(u)===v(i))),o=n.filter(u=>l.find(i=>v(u)===v(i)));let r=o.length===l.length;return r&&(r=o.every((u,i)=>v(u)===v(l[i]))),r},ot=(e,t)=>{e&&t!==e&&(ne(e).forEach(n=>delete e[n]),R(t||{}).forEach(([n,l])=>e[n]=l))},rt=(e,t)=>{e&&t!==e&&(e.splice(0,e.length),t&&t.forEach(n=>e.push(n)))},ut=(e,t)=>{const{compProps:n,compChild:l}=e,{props:o,children:r}=t;return n&&ot(n,o),l&&rt(l,r),e.reRender&&e.reRender()},ct=(e,t,n)=>O(e)?t&&n?ut(n,e):e.resolve():e,it=(e,t,n)=>t&&n?at(e,n):dt(e),dt=e=>(e.children||[]).map(t=>T(D(t),{getParent:()=>e})),at=(e,t)=>e.type==="loop"&&C(v((e.children||[])[0]))?st(e,t):(e.children||[]).map((n,l)=>T(D(n,(t.children||[])[l]),{getParent:()=>e})),st=(e,t)=>{const[n,l]=pt(e,t);return l.forEach(o=>{U(o),V(o),Y(o)}),n},pt=(e,t)=>{const n=[...e.children||[]],l=[...t.children||[]];return[n.map(o=>{const r=vt(o,l),u=D(o,r);return r&&l.splice(l.indexOf(r),1),u.getParent=()=>e,u}),l]},vt=(e,t)=>t.find(n=>v(n)===v(e));let I=[],K=!1;const fe=(e,t)=>{p.get(e).up=()=>{I.push({compKey:e,exec:t}),K||(K=!0,queueMicrotask(ft))}},ht=e=>()=>{var t;const n=(t=p.get(e))==null?void 0:t.up;let l=!1;return n&&(n(),l=!0),l},ft=()=>{I.forEach(e=>{e.exec()}),I=[],K=!1},me=(e,t=()=>[])=>{p.get(S()).upR.push(()=>z(e,t)),z(e,t)},mt=()=>{var e;const t=(e=p.get(S()))==null?void 0:e.upR;t!=null&&t.length&&t.forEach(n=>n())},N=(e,...t)=>({type:"fragment",children:t}),d=(e,t,...n)=>{const l={value:void 0},o=t||{},r=xe(l,n),u=Pt(e,o,r);return O(u)||(l.value=u),u},ge=e=>(t,n)=>e,ye=(e,t,n,l)=>{var o;if(l.isLegacy)return;M.value=!0;const r=Ee(e,t,n),u=D(r,l),{isRoot:i,getParent:c,wrapElement:s,afterElement:f}=l;if(u.getParent=c,!i&&c){const h=((o=c())==null?void 0:o.children)||[],a=h.indexOf(l);h.splice(a,1,u)}else u.isRoot=!0,u.wrapElement=s,u.afterElement=f;M.value=!1,ce(u)},Ee=(e,t,n)=>({tagName:e.name,ctor:e,props:t,children:n,resolve:(l=t)=>{Me(l);const o=e(t,n)(ht(l),t,n),r=gt(o,l,e,t,n),u=r;return fe(l,()=>ye(e,t,n,u)),le(l,"vd").value=r,r}}),gt=(e,t,n,l,o)=>{let r=e,u=e(l);return u.reRender&&(r=i=>{const c=e(i),s=N({},c);return c.getParent=()=>s,s},u=r(l)),Pe(u,t,n,l,o,yt(r,t,n,l,o)),u},yt=(e,t,n,l,o)=>{const r=()=>Et(e,t,n,l,o,r);return r},Et=(e,t,n,l,o,r)=>{ke(t),mt();const u=e(l);return fe(t,()=>ye(n,l,o,u)),Pe(u,t,n,l,o,r),le(t,"vd").value=u,u},Pe=(e,t,n,l,o,r)=>{T(e,{compProps:l,compChild:o,ctor:n,tagName:n.name,compKey:t,reRender:r})},Pt=(e,t,n)=>{if(ee(e))return N(t,...n);if(O(e)){const l=Ee(e,t,n);return M.value?l:l.resolve()}return{type:"element",tag:e,props:t,children:n}},xe=(e,t)=>t.map(n=>T(xt(n),{getParent:()=>e.value})),xt=e=>{if(e==null||e===!1)return{type:null};if(Array.isArray(e)){const t={value:void 0},n={type:"loop",children:xe(t,e)};return t.value=n,n}else if(typeof e=="string"||typeof e=="number")return{type:"text",text:e};return e},Ct=e=>({value:e}),B=(e,t)=>{let n=e;return{get value(){return n},get v(){return n},set value(l){n=l,t()},set v(l){n=l,t()}}},Rt=e=>{let t=e;return{get value(){return t()},get v(){return t()},set value(n){throw new Error("You can't change 'computed'")},set v(n){throw new Error("You can't change 'computed'")}}},bt=(e,t=()=>{},n=()=>[])=>{re(()=>(e(),t)),me(()=>(t&&t(),e),n)},Ce=new Map,Q=new WeakSet,q={value:!1},St=e=>{let t=null;typeof e=="object"&&e!==null?t=e:t={value:e};const n=Symbol(),l={},o=[];return Ce.set(n,t),(r,u)=>{const i={};let c=null;return o.push(i),r&&u?(c=Z(n,l,()=>r(c),i,o),q.value=!0,u(c),q.value=!1):r&&(l[n]??(l[n]=[])),c||(c=Z(n,l),r&&l[n].push(()=>r(c))),r&&Nt(()=>r(c),n,l,i),c}},Z=(e,t,n,l,o)=>{const r=[],u=new Proxy(Ce.get(e),{get(i,c){var s;return n&&l&&q.value&&(l[e]??(l[e]={}),(s=l[e])[c]??(s[c]=[]),l[e][c].includes(n)||(l[e][c].push(n),r.push(c))),r.includes(c)||!n?i[c]:null},set(i,c,s){if(r.includes(c)||!n)i[c]=s;else return!0;const f=t[e]||[],h=[];return f.forEach(a=>{a(u)===!1&&h.push(a)}),(o||[]).forEach(a=>{const P=n?a&&a[e][c]||[]:[];P.forEach(g=>{g(u)===!1&&h.push(g)}),h.forEach(g=>{P.splice(P.indexOf(g),1)})}),h.forEach(a=>{f.splice(f.indexOf(a),1)}),!0}});return u},Nt=(e,t,n,l)=>{const o=e();o instanceof AbortSignal&&(o.addEventListener("abort",()=>{const r=n[t]||[],u=l[t]||{};r.splice(r.indexOf(e),1),Object.values(u).forEach(i=>{i.splice(i.indexOf(e),1)}),Q.delete(o)}),Q.add(o))},wt=ge((e,t,n)=>{const l=B(1,e),o=B('"destructuring" the "props" value directly from the mount function will cause referencing issues, so if you want to use it, you need to "destructuring" it from the internal function (updater).',e),r=()=>t.parentValue,u=t.parentValue,i=Rt(()=>l.v+s+t.parentValue),c=St({text:"s",count:0})(e);let s=t.parentValue;const f=Ct(null),h=()=>{l.v=l.v+1,s+=1},a=k=>{o.v=k.target.value},P=()=>{c.count+=1,c.text+="1"},g=()=>(console.log("MOUNTED",f),()=>console.log("UNMOUNT")),Re=()=>(console.log("UPDATE - parentValue"),()=>console.log("UPDATED"));return re(g),me(Re,()=>[t.parentValue]),bt(()=>console.log("INJECT"),()=>console.log("CLEAN_UP"),()=>[l.v]),({parentValue:k})=>d(N,null,d("div",null,d("textarea",{value:o.v,onInput:a,style:{width:"300px",height:"100px"}})),d("div",null,o.v),d("div",null,d("div",{style:{color:"blue"}},"parentValueFromRef: ",t.parentValue," (working)"),d("div",{style:{color:"blue"}},"parentValueFromFunction: ",r()," (working)"),d("div",{style:{color:"blue"}},"parentValueFromUpdaterDestructuring: ",k," (working)"),d("div",{style:{color:"red"}},"parentValueFromMounterDestructuring: ",u," (not working)")),d("div",null,d("div",{ref:f},"count: ",l.v),d("div",null,"sum: ",l.v+s+t.parentValue),d("div",null,"sum(computed): ",i.v),d("div",null,"notRefValue: ",s),d("div",null,"localStore(text): ",c.text),d("div",null,"localStore(count): ",c.count)),d("button",{onClick:h},"Increase"),d("button",{onClick:P},"localStoreUpdate"),n)}),Ot=ge(e=>{const t=B(7,e),n=()=>{t.v=t.v+1},l=()=>{t.v=t.v-1};return()=>d(N,null,d(wt,{parentValue:t.v},d("button",{onClick:n},"Increase - Parent")),d("button",{onClick:l},"Decrease - Parent"))}),Tt=d(Ot,null);He(Tt,document.getElementById("root"));
|
|
2
|
-
//# sourceMappingURL=index-CXFxitnO.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index-CXFxitnO.js","sources":["../../../dist/lithent.mjs","../../../helper/dist/lithentHelper.mjs","../../src/index.tsx"],"sourcesContent":["const C = (e) => typeof e == \"object\" && !(\"resolve\" in e), N = (e, t) => C(e) && e.type === t, pe = (e, t) => \"ctor\" in e ? e.ctor === (t == null ? void 0 : t.ctor) : e === (t == null ? void 0 : t.ctor), he = (e, t) => {\n var s, c;\n return C(e) && (t == null ? void 0 : t.type) === \"fragment\" && ((s = t == null ? void 0 : t.children) == null ? void 0 : s.length) === ((c = e == null ? void 0 : e.children) == null ? void 0 : c.length);\n}, ie = (e, t) => {\n var s, c;\n return C(e) && (t == null ? void 0 : t.type) === \"element\" && (t == null ? void 0 : t.tag) === e.tag && ((s = t == null ? void 0 : t.children) == null ? void 0 : s.length) === ((c = e == null ? void 0 : e.children) == null ? void 0 : c.length);\n}, G = (e, t) => C(e) && (t == null ? void 0 : t.type) === e.type, ye = (e, t) => {\n var s, c;\n return C(e) && (t == null ? void 0 : t.type) === e.type && (R(d((e.children || [])[0])) && R(d(((t == null ? void 0 : t.children) || [])[0])) || ((s = t == null ? void 0 : t.children) == null ? void 0 : s.length) === ((c = e == null ? void 0 : e.children) == null ? void 0 : c.length));\n}, d = (e) => {\n var t, s;\n return ((t = e == null ? void 0 : e.compProps) == null ? void 0 : t.key) ?? ((s = e == null ? void 0 : e.props) == null ? void 0 : s.key);\n}, v = (e) => e && [\"fragment\", \"loop\"].includes(e), T = (e) => typeof e == \"function\" && !Z(e) || typeof e == \"object\" && \"resolve\" in e, Z = (e) => typeof e == \"function\" && e === $, V = (e) => C(e) && !e.type, R = (e) => e != null, H = (e, t) => e === \"style\" && typeof t == \"object\", ve = (e, t) => e === \"ref\" && typeof t == \"object\", Ce = (e) => e.nodeType === 1 && e.tagName === \"OPTION\", ke = (e) => e.nodeType === 1 && e.tagName === \"TEXTAREA\", Re = (e) => e.nodeType === 1 && [\"radio\", \"checkbox\"].includes(e.type), Ee = (e) => {\n let t = \"et\";\n return T(e) ? t = \"c\" : N(e, \"fragment\") ? t = \"f\" : N(e, \"element\") ? t = \"e\" : N(e, \"loop\") ? t = \"l\" : N(e, \"text\") ? t = \"t\" : V(e) && (t = \"et\"), t;\n}, Pe = {\n c: pe,\n l: ye,\n t: G,\n e: ie,\n f: he,\n et: G\n}, i = (e) => e.getParent && e.getParent(), E = Object.entries, K = Object.keys, a = Object.assign, k = { value: \"\" }, P = { value: {} }, O = { value: !1 }, f = /* @__PURE__ */ new WeakMap(), xe = (e) => {\n f.set(e, {\n vd: { value: null },\n up: () => {\n },\n upR: [],\n upS: { value: 0 },\n upD: [],\n upCB: [],\n mts: [],\n umts: []\n });\n}, x = () => P.value, g = (e, t) => f.get(e)[t], Se = (e) => P.value = e, Ne = (e) => {\n P.value = e, xe(e);\n}, Te = (e) => {\n f.get(x()).umts.push(e);\n}, U = (e) => {\n const { compKey: t } = e;\n t && ae(t), m(e);\n}, m = (e) => {\n (e.children || []).forEach((t) => {\n t.compKey ? U(t) : m(t);\n });\n}, ae = (e) => {\n const t = f.get(e);\n t && (t.umts.forEach((s) => s()), t.umts = [], f.delete(e));\n};\nlet M = [];\nconst I = () => {\n M.forEach((e) => be(e)), M = [];\n}, Ue = (e) => {\n e.compKey && M.push(e);\n}, ft = (e) => f.get(x()).mts.push(e), be = (e) => {\n const { compKey: t } = e;\n if (t) {\n const s = f.get(t), c = s == null ? void 0 : s.mts, n = s == null ? void 0 : s.upS;\n P.value = t, n && (n.value = 0), c && (s.mts = [], c.forEach((r) => {\n const u = r();\n u && Te(u);\n }));\n }\n}, J = (e, t = () => []) => {\n const s = f.get(x()), { upD: c, upS: n } = s, r = c[n.value];\n if (r && Ae(r, t())) {\n const u = e();\n u && s.upCB.push(u);\n }\n c[n.value] = t(), n.value += 1;\n}, Fe = (e) => {\n const { compKey: t } = e;\n if (t) {\n const s = f.get(t), c = s == null ? void 0 : s.upCB, n = s == null ? void 0 : s.upS;\n P.value = t, n && (n.value = 0), e.ctor && c && (s.upCB = [], c.forEach((r) => r()));\n }\n}, Ae = (e, t) => e.length ? e.some((s, c) => s !== t[c]) : !0, Le = (e) => e === \"className\" ? \"class\" : e, w = (e) => e.replace(/^on(.*)/, (t, s) => s.toLowerCase()), _ = () => new DocumentFragment(), Y = (e) => document.createElement(e), dt = (e, t, s) => {\n t ?? (t = document.body), e.isRoot = !0, e.wrapElement = t;\n const c = F(e);\n return s ? (e.afterElement = s, t.insertBefore(c, s)) : t.appendChild(c), I(), () => {\n var r;\n const n = (r = f.get(e.compProps || {})) == null ? void 0 : r.vd.value;\n n && U(n), b(n || e), Oe(n || e);\n };\n}, W = (e) => {\n const { needRerender: t } = e;\n t && t !== \"N\" && ({\n A: X,\n D: z,\n R: Qe,\n U: B,\n CNSU: B,\n SR: te,\n SU: Me\n }[t](e), delete e.needRerender, delete e.oldChildren, delete e.oldProps);\n}, b = (e) => {\n e.props && e.el && ne(e.props, e.el), (e.children || []).forEach((t) => {\n b(t);\n });\n}, Oe = (e) => {\n D(e, e.wrapElement);\n}, z = (e) => {\n e.oldProps && e.el && ne(e.oldProps, e.el), D(\n e,\n A(i(e))\n );\n}, D = (e, t) => {\n var s, c;\n t && e.el && ([1, 3].includes((s = e.el) == null ? void 0 : s.nodeType) ? t.removeChild(e.el) : ((c = e.el) == null ? void 0 : c.nodeType) === 11 && ee(e, t), delete e.el);\n}, ee = (e, t) => {\n ((e == null ? void 0 : e.oldChildren) || (e == null ? void 0 : e.children) || []).forEach((s) => {\n var n;\n const c = (n = s.el) == null ? void 0 : n.nodeType;\n c && ([1, 3].includes(c) ? t.removeChild(s == null ? void 0 : s.el) : c === 11 && ee(s, t));\n });\n}, te = (e) => {\n z(e), X(e);\n}, Me = (e) => {\n if (B(e), i(e).needRerender !== \"CNSU\") {\n const s = se(e);\n X(e, s);\n }\n}, X = (e, t) => {\n t || (t = F(e));\n const s = i(e);\n if (s.type) {\n const c = A(s), r = s.type === \"loop\" && s.needRerender && s.needRerender !== \"CNSU\" ? Q(s, i(s)) : Q(e, s);\n t && c && (r ? c.insertBefore(t, r) : c.appendChild(t), I());\n }\n}, se = (e) => v(e.type) ? ((e == null ? void 0 : e.children) || []).reduce((t, s) => {\n const c = se(s);\n return c && t.appendChild(c), t;\n}, _()) : e.el, Q = (e, t) => {\n const s = t.children || [], n = s.indexOf(e) + 1, r = s.slice(n), u = ce(r), l = t.type || \"\";\n if (u)\n return u;\n if (!t.isRoot && v(l))\n return Q(t, i(t));\n if (t.isRoot && v(l) && t.afterElement)\n return t.afterElement;\n}, ce = (e) => e.reduce(\n (t, s) => {\n const c = s.type, n = s.el, r = c && v(c);\n return t || (r ? ce(s.children || []) : n && n.nodeType !== 11 ? n : t);\n },\n void 0\n), Qe = (e) => {\n const t = i(e), s = e.el;\n if (t.type && s)\n if (s.nodeType === 11)\n te(e);\n else {\n const c = A(t), n = F(e);\n c && c.replaceChild(n, s), I();\n }\n}, ne = (e, t) => {\n E(e || {}).forEach(([s, c]) => {\n s.match(/^on/) && t.removeEventListener(\n w(s),\n c\n );\n });\n}, B = (e) => {\n var s;\n const t = e.el;\n if (e.type === \"text\") {\n Be(e);\n return;\n }\n if (t) {\n const { oldProps: c, props: n } = e;\n re(n, t, c), delete e.oldProps, e.tag === \"input\" && (t.value = String(((s = e == null ? void 0 : e.props) == null ? void 0 : s.value) || \"\"));\n }\n (e.children || []).forEach((c) => W(c)), Fe(e);\n}, Be = (e) => {\n const t = e.el;\n t && (t.nodeValue = String(e.text));\n}, re = (e, t, s) => {\n const c = { ...s };\n E(e || {}).forEach(([n, r]) => {\n let u = !0;\n n === \"key\" || r === c[n] || (n === \"innerHTML\" && typeof r == \"string\" ? t.innerHTML = r : H(n, r) ? ze(\n r,\n H(n, c.style) ? c.style : {},\n t\n ) : ve(n, r) ? r.value = t : n.match(/^on/) ? _e(\n t,\n n,\n r,\n c[n]\n ) : Re(t) && n === \"checked\" ? t.checked = !!r : ke(t) && n === \"value\" ? t.value = r : Ce(t) && n === \"selected\" ? t.selected = !!r : n && ([u, r] = qe(r), u && je(\n Le(n),\n t,\n r\n ))), u && delete c[n];\n }), K(c).forEach(\n (n) => t.removeAttribute(n)\n );\n}, je = (e, t, s) => {\n k.value && e !== \"xmlns\" ? t.setAttributeNS(null, e, s) : t.setAttribute(e, s);\n}, qe = (e) => {\n let t = !0;\n return typeof e == \"boolean\" && (e || (t = !1), e = \"\"), [t, String(e)];\n}, F = (e) => {\n let t;\n const { type: s, tag: c, text: n, props: r, children: u = [] } = e, l = v(s);\n return c === \"svg\" && (k.value = String(r == null ? void 0 : r.xmlns)), l ? t = _() : s === \"element\" && c ? t = k.value ? document.createElementNS(k.value, c) : Y(c) : s === \"text\" && R(n) ? t = document.createTextNode(String(n)) : t = Y(\"e\"), Ie(u, t), re(r, t), e.el = t, Ue(e), c === \"svg\" && (k.value = \"\"), t;\n}, Ie = (e, t) => {\n const s = e.reduce(\n (c, n) => (n.type && c.appendChild(F(n)), c),\n _()\n );\n t && s.hasChildNodes() && t.appendChild(s);\n}, _e = (e, t, s, c) => {\n const n = w(t);\n c !== s && (c && e.removeEventListener(n, c), s && e.addEventListener(n, s));\n}, ze = (e, t, s) => {\n const c = { ...t }, n = s == null ? void 0 : s.style;\n n && (E(e).forEach(([r, u]) => {\n n[r] = u, delete c[r];\n }), E(c).forEach(\n ([r]) => n[r] = \"\"\n ));\n}, A = (e) => {\n const t = v(e.type);\n return e.isRoot && t ? e.wrapElement : t ? A(i(e)) : e.el;\n}, L = (e, t) => Xe(\n e,\n Pe[Ee(e)](e, t),\n t\n), Xe = (e, t, s) => {\n const c = Ve(e, t, s), n = [\n c,\n t,\n s\n ], r = Ge(...n), u = r === \"N\";\n return u || (c.children = Ke(...n)), c.needRerender = r, $e(c, s, r), !u && s && (s.isLegacy = !0, delete s.children), c;\n}, $e = (e, t, s) => {\n s !== \"A\" && t && (e.el = t.el), s && [\"D\", \"R\", \"SR\"].includes(s) && (t && (U(t), b(t)), e.oldChildren = t == null ? void 0 : t.children), e.oldProps = t == null ? void 0 : t.props;\n}, Ge = (e, t, s) => {\n const c = s && s.type, n = V(e), r = e.isRoot, u = s && i(s), l = !r && (u == null ? void 0 : u.type), h = d(e), o = l === \"loop\" && R(h), y = e.type === \"text\" && t && e.text === (s == null ? void 0 : s.text), S = e === s;\n let p;\n return n ? p = \"D\" : y || S ? p = \"N\" : c ? t ? p = o ? \"SU\" : \"U\" : p = o ? \"SR\" : \"R\" : p = \"A\", e.type === \"loop\" && p === \"U\" && s && He(e, s) && (p = \"CNSU\"), p;\n}, He = (e, t) => {\n const s = [...(t == null ? void 0 : t.children) || []], c = [...(e == null ? void 0 : e.children) || []].filter(\n (u) => s.find((l) => d(u) === d(l))\n ), n = s.filter(\n (u) => c.find((l) => d(u) === d(l))\n );\n let r = n.length === c.length;\n return r && (r = n.every(\n (u, l) => d(u) === d(c[l])\n )), r;\n}, Je = (e, t) => {\n e && t !== e && (K(e).forEach((s) => delete e[s]), E(t || {}).forEach(([s, c]) => e[s] = c));\n}, Ye = (e, t) => {\n e && t !== e && (e.splice(0, e.length), t && t.forEach((s) => e.push(s)));\n}, Ze = (e, t) => {\n const { compProps: s, compChild: c } = e, { props: n, children: r } = t;\n return s && Je(s, n), c && Ye(c, r), e.reRender && e.reRender();\n}, Ve = (e, t, s) => T(e) ? t && s ? Ze(s, e) : e.resolve() : e, Ke = (e, t, s) => t && s ? me(e, s) : ge(e), ge = (e) => (e.children || []).map(\n (t) => a(L(t), { getParent: () => e })\n), me = (e, t) => e.type === \"loop\" && R(d((e.children || [])[0])) ? we(e, t) : (e.children || []).map(\n (s, c) => a(L(s, (t.children || [])[c]), {\n getParent: () => e\n })\n), we = (e, t) => {\n const [s, c] = We(\n e,\n t\n );\n return c.forEach((n) => {\n U(n), b(n), z(n);\n }), s;\n}, We = (e, t) => {\n const s = [...e.children || []], c = [...t.children || []];\n return [s.map((r) => {\n const u = De(r, c), l = L(r, u);\n return u && c.splice(c.indexOf(u), 1), l.getParent = () => e, l;\n }), c];\n}, De = (e, t) => t.find(\n (s) => d(s) === d(e)\n);\nlet j = [], q = !1;\nconst ue = (e, t) => {\n f.get(e).up = () => {\n j.push({\n compKey: e,\n exec: t\n }), q || (q = !0, queueMicrotask(tt));\n };\n}, et = (e) => () => {\n var c;\n const t = (c = f.get(e)) == null ? void 0 : c.up;\n let s = !1;\n return t && (t(), s = !0), s;\n}, tt = () => {\n j.forEach((e) => {\n e.exec();\n }), j = [], q = !1;\n}, ot = (e, t = () => []) => {\n f.get(x()).upR.push(() => J(e, t)), J(e, t);\n}, st = () => {\n var t;\n const e = (t = f.get(x())) == null ? void 0 : t.upR;\n e != null && e.length && e.forEach((s) => s());\n}, $ = (e, ...t) => ({\n type: \"fragment\",\n children: t\n}), pt = (e, t, ...s) => {\n const c = { value: void 0 }, n = t || {}, r = oe(c, s), u = ut(e, n, r);\n return T(u) || (c.value = u), u;\n}, ht = (e) => (t, s) => e, le = (e, t, s, c) => {\n var y;\n if (c.isLegacy)\n return;\n O.value = !0;\n const n = fe(e, t, s), r = L(n, c), { isRoot: u, getParent: l, wrapElement: h, afterElement: o } = c;\n if (r.getParent = l, !u && l) {\n const S = ((y = l()) == null ? void 0 : y.children) || [], p = S.indexOf(c);\n S.splice(p, 1, r);\n } else\n r.isRoot = !0, r.wrapElement = h, r.afterElement = o;\n O.value = !1, W(r);\n}, fe = (e, t, s) => ({ tagName: e.name, ctor: e, props: t, children: s, resolve: (u = t) => {\n Ne(u);\n const h = e(t, s)(et(u), t, s), o = ct(\n h,\n u,\n e,\n t,\n s\n ), y = o;\n return ue(\n u,\n () => le(e, t, s, y)\n ), g(u, \"vd\").value = o, o;\n} }), ct = (e, t, s, c, n) => {\n let r = e, u = e(c);\n return u.reRender && (r = (l) => {\n const h = e(l), o = $({}, h);\n return h.getParent = () => o, o;\n }, u = r(c)), de(\n u,\n t,\n s,\n c,\n n,\n nt(r, t, s, c, n)\n ), u;\n}, nt = (e, t, s, c, n) => {\n const r = () => rt(e, t, s, c, n, r);\n return r;\n}, rt = (e, t, s, c, n, r) => {\n Se(t), st();\n const u = e(c);\n return ue(\n t,\n () => le(s, c, n, u)\n ), de(u, t, s, c, n, r), g(t, \"vd\").value = u, u;\n}, de = (e, t, s, c, n, r) => {\n a(e, {\n compProps: c,\n compChild: n,\n ctor: s,\n tagName: s.name,\n compKey: t,\n reRender: r\n });\n}, ut = (e, t, s) => {\n if (Z(e))\n return $(t, ...s);\n if (T(e)) {\n const c = fe(e, t, s);\n return O.value ? c : c.resolve();\n }\n return {\n type: \"element\",\n tag: e,\n props: t,\n children: s\n };\n}, oe = (e, t) => t.map(\n (s) => a(lt(s), { getParent: () => e.value })\n), lt = (e) => {\n if (e == null || e === !1)\n return { type: null };\n if (Array.isArray(e)) {\n const t = { value: void 0 }, c = {\n type: \"loop\",\n children: oe(t, e)\n };\n return t.value = c, c;\n } else if (typeof e == \"string\" || typeof e == \"number\")\n return { type: \"text\", text: e };\n return e;\n}, it = (e) => ({ value: e }), yt = () => Promise.resolve();\nexport {\n $ as Fragment,\n pt as h,\n ht as mount,\n ft as mountCallback,\n yt as nextTick,\n it as ref,\n dt as render,\n ot as updateCallback\n};\n//# sourceMappingURL=lithent.mjs.map\n","import { mountCallback as S, updateCallback as L, nextTick as k, render as C } from \"lithent\";\nconst j = (n, c) => {\n let t = n;\n return {\n get value() {\n return t;\n },\n get v() {\n return t;\n },\n set value(e) {\n t = e, c();\n },\n set v(e) {\n t = e, c();\n }\n };\n}, w = (n) => {\n let c = n;\n return {\n get value() {\n return c();\n },\n get v() {\n return c();\n },\n set value(t) {\n throw new Error(\"You can't change 'computed'\");\n },\n set v(t) {\n throw new Error(\"You can't change 'computed'\");\n }\n };\n}, A = (n, c = () => {\n}, t = () => []) => {\n S(() => (n(), c)), L(() => (c && c(), n), t);\n}, m = /* @__PURE__ */ new Map(), E = /* @__PURE__ */ new WeakSet(), v = { value: !1 }, D = (n) => {\n let c = null;\n typeof n == \"object\" && n !== null ? c = n : c = { value: n };\n const t = Symbol(), e = {}, i = [];\n return m.set(t, c), (u, f) => {\n const s = {};\n let l = null;\n return i.push(s), u && f ? (l = x(\n t,\n e,\n () => u(l),\n s,\n i\n ), v.value = !0, f(l), v.value = !1) : u && (e[t] ?? (e[t] = [])), l || (l = x(t, e), u && e[t].push(() => u(l))), u && P(\n () => u(l),\n t,\n e,\n s\n ), l;\n };\n}, x = (n, c, t, e, i) => {\n const u = [], f = new Proxy(m.get(n), {\n get(s, l) {\n var o;\n return t && e && v.value && (e[n] ?? (e[n] = {}), (o = e[n])[l] ?? (o[l] = []), e[n][l].includes(t) || (e[n][l].push(t), u.push(l))), u.includes(l) || !t ? s[l] : null;\n },\n set(s, l, o) {\n if (u.includes(l) || !t)\n s[l] = o;\n else\n return !0;\n const d = c[n] || [], r = [];\n return d.forEach((a) => {\n a(f) === !1 && r.push(a);\n }), (i || []).forEach((a) => {\n const g = t ? a && a[n][l] || [] : [];\n g.forEach((h) => {\n h(f) === !1 && r.push(h);\n }), r.forEach((h) => {\n g.splice(g.indexOf(h), 1);\n });\n }), r.forEach((a) => {\n d.splice(d.indexOf(a), 1);\n }), !0;\n }\n });\n return f;\n}, P = (n, c, t, e) => {\n const i = n();\n i instanceof AbortSignal && (i.addEventListener(\"abort\", () => {\n const u = t[c] || [], f = e[c] || {};\n u.splice(u.indexOf(n), 1), Object.values(f).forEach((s) => {\n s.splice(s.indexOf(n), 1);\n }), E.delete(i);\n }), E.add(i));\n}, T = (n, c) => {\n let t = [], e = null;\n return (i) => {\n const u = n(), f = t.every((l, o) => l === u[o]);\n if (t = u, f && e)\n return e;\n const s = c(i);\n return e = s, s;\n };\n}, Y = (n, c, t) => {\n let e = () => {\n };\n return k().then(() => {\n e = C(n(), c, t);\n }), () => e();\n};\nexport {\n T as cacheUpdate,\n w as computed,\n A as effect,\n Y as nextTickRender,\n j as state,\n D as store\n};\n//# sourceMappingURL=lithentHelper.mjs.map\n","// example.jsx\nimport {\n h,\n Fragment,\n render,\n ref,\n mountCallback,\n updateCallback,\n mount,\n} from 'lithent';\nimport { state, computed, effect, store } from 'lithent/helper';\n\n// This is the \"mount\" function.\n// This function is only executed on mount, and on update, only updates `props` and then executes the internal return function.\n// childen is passed as the second argument.\nconst ChildComponent = mount<{ parentValue: number }>(\n (renew, props, children) => {\n // The value is used as a \"getter\" to make it easy to get and write to in the higher-order functions it returns\n const count = state<number>(1, renew);\n const text = state<string>(\n '\"destructuring\" the \"props\" value directly from the mount function will cause referencing issues, so if you want to use it, you need to \"destructuring\" it from the internal function (updater).',\n renew\n );\n const getParentValue = () => props.parentValue;\n const parentValueFromMount = props.parentValue;\n const summ = computed<number>(\n () => count.v + notRefValue + props.parentValue\n );\n\n const localStore = store<{ text: string; count: number }>({\n text: 's',\n count: 0,\n })(renew);\n /*\n // To share a store, make it externally and use `asign`.\n const asignStore = store<{ text: string; count: number }>({ text: 's', count: 0 });\n\n const sharedStore = asignStore(nenew);\n */\n\n // Even if you don't use a ref, the private value is always maintained as a regular variable.\n let notRefValue = props.parentValue;\n\n // Ref is only used to reference the DOM.\n const domRef = ref(null);\n\n const increase = () => {\n count.v = count.v + 1;\n notRefValue += 1;\n };\n\n const handleInputChane = (event: InputEvent) => {\n text.v = (event.target as HTMLInputElement).value;\n };\n\n const localStoreUpdate = () => {\n localStore.count += 1;\n localStore.text += '1';\n };\n\n const handleMounted = () => {\n console.log('MOUNTED', domRef);\n\n return () => console.log('UNMOUNT');\n };\n const handleUpdated = () => {\n console.log('UPDATE - parentValue');\n\n return () => console.log('UPDATED');\n };\n\n mountCallback(handleMounted);\n updateCallback(handleUpdated, () => [props.parentValue]); // Only Defs Updated (using a closure to update a value)\n\n // Behaves like `react`'s `useEffect`\n effect(\n () => console.log('INJECT'),\n () => console.log('CLEAN_UP'),\n () => [count.v]\n );\n\n // Wrap in a function and return (using a closure to hold the value)\n // This is the \"update\" function.\n return ({ parentValue }) => (\n <Fragment>\n {/* Note that the event is onInput (we use the native event name to avoid confusion). */}\n <div>\n <textarea\n value={text.v}\n onInput={handleInputChane}\n style={{ width: '300px', height: '100px' }}\n />\n </div>\n <div>{text.v}</div>\n <div>\n <div style={{ color: 'blue' }}>\n parentValueFromRef: {props.parentValue} (working)\n </div>\n <div style={{ color: 'blue' }}>\n parentValueFromFunction: {getParentValue()} (working)\n </div>\n <div style={{ color: 'blue' }}>\n parentValueFromUpdaterDestructuring: {parentValue} (working)\n </div>\n <div style={{ color: 'red' }}>\n parentValueFromMounterDestructuring: {parentValueFromMount} (not\n working)\n </div>\n </div>\n <div>\n <div ref={domRef}>count: {count.v}</div>\n <div>sum: {count.v + notRefValue + props.parentValue}</div>\n <div>sum(computed): {summ.v}</div>\n {/* It doesn't pull it out from under the reference, it uses the value directly, so you can just use it. */}\n <div>notRefValue: {notRefValue}</div>\n <div>localStore(text): {localStore.text}</div>\n <div>localStore(count): {localStore.count}</div>\n </div>\n <button onClick={increase}>Increase</button>\n <button onClick={localStoreUpdate}>localStoreUpdate</button>\n {children}\n </Fragment>\n );\n }\n);\n\nconst Root = mount(renew => {\n const parentNumber = state<number>(7, renew);\n\n const increaseParent = () => {\n parentNumber.v = parentNumber.v + 1;\n };\n\n const decreaseParent = () => {\n parentNumber.v = parentNumber.v - 1;\n };\n\n return () => (\n <Fragment>\n <ChildComponent parentValue={parentNumber.v}>\n <button onClick={increaseParent}>Increase - Parent</button>\n </ChildComponent>\n <button onClick={decreaseParent}>Decrease - Parent</button>\n </Fragment>\n );\n});\nconst root = <Root />;\n\nrender(root, document.getElementById('root'));\n"],"names":["C","N","pe","he","s","c","ie","G","ye","R","d","v","T","Z","$","V","H","ve","Ce","ke","Re","Ee","Pe","i","E","K","a","k","P","O","f","xe","x","g","Se","Ne","Te","ae","m","M","I","be","Ue","ft","n","J","Ae","Fe","Le","w","_","Y","dt","F","r","b","Oe","W","X","z","Qe","B","te","Me","ne","D","A","ee","Q","u","ce","l","t","Be","re","ze","_e","qe","je","Ie","L","Xe","Ve","Ge","Ke","$e","h","o","y","S","p","He","Je","Ye","Ze","me","ge","we","We","De","j","q","ue","tt","et","ot","st","e","pt","oe","ut","ht","le","fe","ct","de","nt","rt","lt","it","ChildComponent","mount","renew","props","children","count","state","text","getParentValue","parentValueFromMount","summ","computed","notRefValue","localStore","store","domRef","ref","increase","handleInputChane","event","localStoreUpdate","handleMounted","handleUpdated","mountCallback","updateCallback","effect","parentValue","Fragment","Root","parentNumber","increaseParent","decreaseParent","root","render"],"mappings":"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"}
|