lithent 1.10.2 → 1.11.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 +18 -16
- package/examples/dist/assets/index-gAvzjQ3v.js +2 -0
- package/examples/dist/assets/index-gAvzjQ3v.js.map +1 -0
- package/examples/dist/index.html +1 -1
- package/helper/dist/hook/store.d.ts +11 -1
- package/helper/dist/lithentHelper.mjs +87 -62
- 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/package.json +1 -0
- package/helper/src/hook/store.ts +108 -37
- package/helper/src/tests/store.tsx +94 -0
- package/helper/src/tests/storeOneValue.tsx +63 -0
- package/package.json +8 -4
- package/examples/dist/assets/index-B5wgGeyV.js +0 -2
- package/examples/dist/assets/index-B5wgGeyV.js.map +0 -1
package/README.md
CHANGED
|
@@ -2,12 +2,14 @@
|
|
|
2
2
|
## ➿ lithent
|
|
3
3
|
> An extensible JSX-based virtual DOM library for lightweight use in a variety of environments.
|
|
4
4
|
|
|
5
|
+
|
|
6
|
+

|
|
7
|
+
|
|
5
8
|

|
|
6
9
|

|
|
7
10
|

|
|
8
11
|

|
|
9
12
|
|
|
10
|
-

|
|
11
13
|
|
|
12
14
|
|
|
13
15
|
|
|
@@ -76,14 +78,14 @@ pnpm add lithent
|
|
|
76
78
|
|
|
77
79
|
#### Or Use CDN
|
|
78
80
|
|
|
79
|
-
* UMD : https://cdn.jsdelivr.net/npm/lithent@1.
|
|
80
|
-
* UMD-HELPER: https://cdn.jsdelivr.net/npm/lithent@1.
|
|
81
|
-
* UMD-FTAGS: https://cdn.jsdelivr.net/npm/lithent@1.
|
|
82
|
-
* UMD-TAG: https://cdn.jsdelivr.net/npm/lithent@1.
|
|
83
|
-
* ESM : https://cdn.jsdelivr.net/npm/lithent@1.
|
|
84
|
-
* ESM-HELPER: https://cdn.jsdelivr.net/npm/lithent@1.
|
|
85
|
-
* ESM-FTAGS: https://cdn.jsdelivr.net/npm/lithent@1.
|
|
86
|
-
* ESM-TAG: https://cdn.jsdelivr.net/npm/lithent@1.
|
|
81
|
+
* UMD : https://cdn.jsdelivr.net/npm/lithent@1.11.0/dist/lithent.umd.js
|
|
82
|
+
* UMD-HELPER: https://cdn.jsdelivr.net/npm/lithent@1.11.0/helper/dist/lithentHelper.umd.js
|
|
83
|
+
* UMD-FTAGS: https://cdn.jsdelivr.net/npm/lithent@1.11.0/ftags/dist/lithentFTags.umd.js
|
|
84
|
+
* UMD-TAG: https://cdn.jsdelivr.net/npm/lithent@1.11.0/tag/dist/lithentTag.umd.js
|
|
85
|
+
* ESM : https://cdn.jsdelivr.net/npm/lithent@1.11.0/dist/lithent.mjs
|
|
86
|
+
* ESM-HELPER: https://cdn.jsdelivr.net/npm/lithent@1.11.0/helper/dist/lithentHelper.mjs
|
|
87
|
+
* ESM-FTAGS: https://cdn.jsdelivr.net/npm/lithent@1.11.0/ftags/dist/lithentFTags.mjs
|
|
88
|
+
* ESM-TAG: https://cdn.jsdelivr.net/npm/lithent@1.11.0/tag/dist/lithentTag.mjs
|
|
87
89
|
|
|
88
90
|
|
|
89
91
|
It's easier to use lithent with JSX or HTM.
|
|
@@ -108,9 +110,9 @@ import { fTags, fFragment, fMount } from 'lithent/ftags';
|
|
|
108
110
|
const { section, div, p, br, strong } = fTags;
|
|
109
111
|
|
|
110
112
|
/* UMD
|
|
111
|
-
<script src="https://cdn.jsdelivr.net/npm/lithent@1.
|
|
112
|
-
<script src="https://cdn.jsdelivr.net/npm/lithent@1.
|
|
113
|
-
<script src="https://cdn.jsdelivr.net/npm/lithent@1.
|
|
113
|
+
<script src="https://cdn.jsdelivr.net/npm/lithent@1.11.0/dist/lithent.umd.js"></script>
|
|
114
|
+
<script src="https://cdn.jsdelivr.net/npm/lithent@1.11.0/helper/dist/lithentHelper.umd.js"></script>
|
|
115
|
+
<script src="https://cdn.jsdelivr.net/npm/lithent@1.11.0/ftags/dist/lithentFTags.umd.js"></script>
|
|
114
116
|
|
|
115
117
|
const { render } = lithent;
|
|
116
118
|
const { fTags, fMount, fFragment } = lithentFTags;
|
|
@@ -182,10 +184,10 @@ const destroy = render(lTag`<${Component} />`, document.getElementById('root'),
|
|
|
182
184
|
#### With UMD
|
|
183
185
|
|
|
184
186
|
```html
|
|
185
|
-
<script src="https://cdn.jsdelivr.net/npm/lithent@1.
|
|
186
|
-
<!--script src="https://cdn.jsdelivr.net/npm/lithent@1.
|
|
187
|
-
<script src="https://cdn.jsdelivr.net/npm/lithent@1.
|
|
188
|
-
<!--script src="https://cdn.jsdelivr.net/npm/lithent@1.
|
|
187
|
+
<script src="https://cdn.jsdelivr.net/npm/lithent@1.11.0/dist/lithent.umd.js"></script>
|
|
188
|
+
<!--script src="https://cdn.jsdelivr.net/npm/lithent@1.11.0/helper/dist/lithentHelper.umd.js"></script-->
|
|
189
|
+
<script src="https://cdn.jsdelivr.net/npm/lithent@1.11.0/tag/dist/lithentTag.umd.js"></script>
|
|
190
|
+
<!--script src="https://cdn.jsdelivr.net/npm/lithent@1.11.0/ftags/dist/lithentFTags.umd.js"></script-->
|
|
189
191
|
|
|
190
192
|
<div id="root"></div>
|
|
191
193
|
|
|
@@ -0,0 +1,2 @@
|
|
|
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)||h.push(a)}),(o||[]).forEach(a=>{const P=n?a&&a[e][c]||[]:[];P.forEach(g=>{g(u)||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-gAvzjQ3v.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-gAvzjQ3v.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, l) => {\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, l();\n },\n set v(e) {\n t = e, l();\n }\n };\n}, w = (n) => {\n let l = n;\n return {\n get value() {\n return l();\n },\n get v() {\n return l();\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, l = () => {\n}, t = () => []) => {\n S(() => (n(), l)), L(() => (l && l(), n), t);\n}, m = /* @__PURE__ */ new Map(), E = /* @__PURE__ */ new WeakSet(), v = { value: !1 }, D = (n) => {\n let l = null;\n typeof n == \"object\" && n !== null ? l = n : l = { value: n };\n const t = Symbol(), e = {}, i = [];\n return m.set(t, l), (u, f) => {\n const s = {};\n let c = null;\n return i.push(s), u && f ? (c = x(\n t,\n e,\n () => u(c),\n s,\n i\n ), v.value = !0, f(c), v.value = !1) : u && (e[t] ?? (e[t] = [])), c || (c = x(t, e), u && e[t].push(() => u(c))), u && P(\n () => u(c),\n t,\n e,\n s\n ), c;\n };\n}, x = (n, l, t, e, i) => {\n const u = [], f = new Proxy(m.get(n), {\n get(s, c) {\n var a;\n return t && e && v.value && (e[n] ?? (e[n] = {}), (a = e[n])[c] ?? (a[c] = []), e[n][c].includes(t) || (e[n][c].push(t), u.push(c))), u.includes(c) || !t ? s[c] : null;\n },\n set(s, c, a) {\n if (u.includes(c) || !t)\n s[c] = a;\n else\n return !0;\n const d = l[n] || [], r = [];\n return d.forEach((o) => {\n o(f) || r.push(o);\n }), (i || []).forEach((o) => {\n const g = t ? o && o[n][c] || [] : [];\n g.forEach((h) => {\n h(f) || r.push(h);\n }), r.forEach((h) => {\n g.splice(g.indexOf(h), 1);\n });\n }), r.forEach((o) => {\n d.splice(d.indexOf(o), 1);\n }), !0;\n }\n });\n return f;\n}, P = (n, l, t, e) => {\n const i = n();\n i instanceof AbortSignal && (i.addEventListener(\"abort\", () => {\n const u = t[l] || [], f = e[l] || {};\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, l) => {\n let t = [], e = null;\n return (i) => {\n const u = n(), f = t.every((c, a) => c === u[a]);\n if (t = u, f && e)\n return e;\n const s = l(i);\n return e = s, s;\n };\n}, Y = (n, l, t) => {\n let e = () => {\n };\n return k().then(() => {\n e = C(n(), l, 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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"}
|
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-gAvzjQ3v.js"></script>
|
|
8
8
|
</head>
|
|
9
9
|
<body>
|
|
10
10
|
<section id="root"></section>
|
|
@@ -1 +1,11 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* DataStore
|
|
3
|
+
*/
|
|
4
|
+
type StoreType<V> = V extends {
|
|
5
|
+
[key: string]: unknown;
|
|
6
|
+
} ? V : {
|
|
7
|
+
value: V;
|
|
8
|
+
};
|
|
9
|
+
type Renew<T> = (store: T) => boolean | AbortSignal | void;
|
|
10
|
+
export declare const store: <V>(initialValue: V) => (renew?: Renew<StoreType<V>> | undefined, makeObserver?: ((store: StoreType<V>) => unknown[]) | undefined) => StoreType<V>;
|
|
11
|
+
export {};
|
|
@@ -1,91 +1,116 @@
|
|
|
1
|
-
import { mountCallback as
|
|
2
|
-
const
|
|
3
|
-
let
|
|
1
|
+
import { mountCallback as S, updateCallback as L, nextTick as k, render as C } from "lithent";
|
|
2
|
+
const j = (n, l) => {
|
|
3
|
+
let t = n;
|
|
4
4
|
return {
|
|
5
5
|
get value() {
|
|
6
|
-
return
|
|
6
|
+
return t;
|
|
7
7
|
},
|
|
8
8
|
get v() {
|
|
9
|
-
return
|
|
9
|
+
return t;
|
|
10
10
|
},
|
|
11
|
-
set value(
|
|
12
|
-
|
|
11
|
+
set value(e) {
|
|
12
|
+
t = e, l();
|
|
13
13
|
},
|
|
14
|
-
set v(
|
|
15
|
-
|
|
14
|
+
set v(e) {
|
|
15
|
+
t = e, l();
|
|
16
16
|
}
|
|
17
17
|
};
|
|
18
|
-
},
|
|
19
|
-
let
|
|
18
|
+
}, w = (n) => {
|
|
19
|
+
let l = n;
|
|
20
20
|
return {
|
|
21
21
|
get value() {
|
|
22
|
-
return
|
|
22
|
+
return l();
|
|
23
23
|
},
|
|
24
24
|
get v() {
|
|
25
|
-
return
|
|
25
|
+
return l();
|
|
26
26
|
},
|
|
27
|
-
set value(
|
|
27
|
+
set value(t) {
|
|
28
28
|
throw new Error("You can't change 'computed'");
|
|
29
29
|
},
|
|
30
|
-
set v(
|
|
30
|
+
set v(t) {
|
|
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
|
-
|
|
34
|
+
}, A = (n, l = () => {
|
|
35
|
+
}, t = () => []) => {
|
|
36
|
+
S(() => (n(), l)), L(() => (l && l(), n), t);
|
|
37
|
+
}, m = /* @__PURE__ */ new Map(), E = /* @__PURE__ */ new WeakSet(), v = { value: !1 }, D = (n) => {
|
|
38
|
+
let l = null;
|
|
39
|
+
typeof n == "object" && n !== null ? l = n : l = { value: n };
|
|
40
|
+
const t = Symbol(), e = {}, i = [];
|
|
41
|
+
return m.set(t, l), (u, f) => {
|
|
42
|
+
const s = {};
|
|
43
|
+
let c = null;
|
|
44
|
+
return i.push(s), u && f ? (c = x(
|
|
45
|
+
t,
|
|
46
|
+
e,
|
|
47
|
+
() => u(c),
|
|
48
|
+
s,
|
|
49
|
+
i
|
|
50
|
+
), v.value = !0, f(c), v.value = !1) : u && (e[t] ?? (e[t] = [])), c || (c = x(t, e), u && e[t].push(() => u(c))), u && P(
|
|
51
|
+
() => u(c),
|
|
52
|
+
t,
|
|
53
|
+
e,
|
|
54
|
+
s
|
|
55
|
+
), c;
|
|
47
56
|
};
|
|
48
|
-
},
|
|
49
|
-
const u = []
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
return t != null && t.value && (r[n] ?? (r[n] = {}), (s = r[n])[l] ?? (s[l] = []), r[n][l].includes(t.value) || (r[n][l].push(t.value), u.push(l))), u.includes(l) || !t ? c[l] : null;
|
|
57
|
+
}, x = (n, l, t, e, i) => {
|
|
58
|
+
const u = [], f = new Proxy(m.get(n), {
|
|
59
|
+
get(s, c) {
|
|
60
|
+
var a;
|
|
61
|
+
return t && e && v.value && (e[n] ?? (e[n] = {}), (a = e[n])[c] ?? (a[c] = []), e[n][c].includes(t) || (e[n][c].push(t), u.push(c))), u.includes(c) || !t ? s[c] : null;
|
|
54
62
|
},
|
|
55
|
-
set(
|
|
56
|
-
(u.includes(
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
63
|
+
set(s, c, a) {
|
|
64
|
+
if (u.includes(c) || !t)
|
|
65
|
+
s[c] = a;
|
|
66
|
+
else
|
|
67
|
+
return !0;
|
|
68
|
+
const d = l[n] || [], r = [];
|
|
69
|
+
return d.forEach((o) => {
|
|
70
|
+
o(f) || r.push(o);
|
|
71
|
+
}), (i || []).forEach((o) => {
|
|
72
|
+
const g = t ? o && o[n][c] || [] : [];
|
|
73
|
+
g.forEach((h) => {
|
|
74
|
+
h(f) || r.push(h);
|
|
75
|
+
}), r.forEach((h) => {
|
|
76
|
+
g.splice(g.indexOf(h), 1);
|
|
77
|
+
});
|
|
78
|
+
}), r.forEach((o) => {
|
|
79
|
+
d.splice(d.indexOf(o), 1);
|
|
64
80
|
}), !0;
|
|
65
81
|
}
|
|
66
82
|
});
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
83
|
+
return f;
|
|
84
|
+
}, P = (n, l, t, e) => {
|
|
85
|
+
const i = n();
|
|
86
|
+
i instanceof AbortSignal && (i.addEventListener("abort", () => {
|
|
87
|
+
const u = t[l] || [], f = e[l] || {};
|
|
88
|
+
u.splice(u.indexOf(n), 1), Object.values(f).forEach((s) => {
|
|
89
|
+
s.splice(s.indexOf(n), 1);
|
|
90
|
+
}), E.delete(i);
|
|
91
|
+
}), E.add(i));
|
|
92
|
+
}, T = (n, l) => {
|
|
93
|
+
let t = [], e = null;
|
|
94
|
+
return (i) => {
|
|
95
|
+
const u = n(), f = t.every((c, a) => c === u[a]);
|
|
96
|
+
if (t = u, f && e)
|
|
97
|
+
return e;
|
|
98
|
+
const s = l(i);
|
|
99
|
+
return e = s, s;
|
|
75
100
|
};
|
|
76
|
-
},
|
|
77
|
-
let
|
|
101
|
+
}, Y = (n, l, t) => {
|
|
102
|
+
let e = () => {
|
|
78
103
|
};
|
|
79
|
-
return
|
|
80
|
-
|
|
81
|
-
}), () =>
|
|
104
|
+
return k().then(() => {
|
|
105
|
+
e = C(n(), l, t);
|
|
106
|
+
}), () => e();
|
|
82
107
|
};
|
|
83
108
|
export {
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
109
|
+
T as cacheUpdate,
|
|
110
|
+
w as computed,
|
|
111
|
+
A as effect,
|
|
112
|
+
Y as nextTickRender,
|
|
113
|
+
j as state,
|
|
114
|
+
D as store
|
|
90
115
|
};
|
|
91
116
|
//# 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 StoreValue = {\n [key: string | symbol]: (() => boolean)[];\n};\n\nconst storeGroup = new Map<string | symbol, unknown>();\nconst storeRenderList: StoreValue = {};\nconst storeRenderObserveMap: {\n [key: string | symbol]: StoreValue;\n} = {};\n\nexport const store = <T extends {}>(value: T) => {\n const storeKey = Symbol();\n storeGroup.set(storeKey, value);\n\n return (renew?: () => boolean, makeObserver?: (store: T) => unknown[]) => {\n if (renew) {\n if (makeObserver) {\n const renewRef: { value: (() => boolean) | null } = { value: renew };\n const makedProxy = updater<T>(storeKey, renewRef);\n\n makeObserver(makedProxy);\n renewRef.value = null;\n\n return makedProxy;\n } else {\n storeRenderList[storeKey] ??= [];\n storeRenderList[storeKey].push(renew);\n }\n }\n\n return updater<T>(storeKey);\n };\n};\n\nconst updater = <T extends { [key: string | symbol]: unknown }>(\n storeKey: string | symbol,\n renewRef?: { value: (() => boolean) | null }\n) => {\n const allowedAccessProp: (keyof T)[] = [];\n\n return new Proxy(storeGroup.get(storeKey) as T, {\n get(target: T, prop: keyof T) {\n if (renewRef?.value) {\n storeRenderObserveMap[storeKey] ??= {};\n storeRenderObserveMap[storeKey][prop] ??= [];\n\n if (!storeRenderObserveMap[storeKey][prop].includes(renewRef.value)) {\n storeRenderObserveMap[storeKey][prop].push(renewRef.value);\n allowedAccessProp.push(prop);\n }\n }\n\n if (allowedAccessProp.includes(prop) || !renewRef) {\n return target[prop];\n }\n\n return null;\n },\n set(target, prop: keyof T, value) {\n if (allowedAccessProp.includes(prop) || !renewRef) {\n target[prop] = value;\n }\n\n const renderList = storeRenderList[storeKey] || [];\n const renderObserveList: (() => boolean)[] = renewRef\n ? storeRenderObserveMap[storeKey][prop] || []\n : [];\n const trashCollections: (() => boolean)[] = [];\n\n renderList.forEach(renew => {\n if (!renew()) {\n trashCollections.push(renew);\n }\n });\n\n renderObserveList.forEach(renew => {\n if (!renew()) {\n trashCollections.push(renew);\n }\n });\n\n trashCollections.forEach(deleteTarget => {\n renderList.splice(renderList.indexOf(deleteTarget), 1);\n renderObserveList.splice(renderObserveList.indexOf(deleteTarget), 1);\n });\n\n return true;\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","storeGroup","storeRenderList","storeRenderObserveMap","store","storeKey","makeObserver","renewRef","makedProxy","updater","allowedAccessProp","target","prop","_a","renderList","renderObserveList","trashCollections","deleteTarget","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 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)) {\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)) {\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,2 +1,2 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
(function(s,a){typeof exports=="object"&&typeof module<"u"?a(exports,require("lithent")):typeof define=="function"&&define.amd?define(["exports","lithent"],a):(s=typeof globalThis<"u"?globalThis:s||self,a(s.lithentHelper={},s.lithent))})(this,function(s,a){"use strict";const L=(e,u)=>{let t=e;return{get value(){return t},get v(){return t},set value(n){t=n,u()},set v(n){t=n,u()}}},j=e=>{let u=e;return{get value(){return u()},get v(){return u()},set value(t){throw new Error("You can't change 'computed'")},set v(t){throw new Error("You can't change 'computed'")}}},k=(e,u=()=>{},t=()=>[])=>{a.mountCallback(()=>(e(),u)),a.updateCallback(()=>(u&&u(),e),t)},S=new Map,x=new WeakSet,v={value:!1},P=e=>{let u=null;typeof e=="object"&&e!==null?u=e:u={value:e};const t=Symbol(),n={},f=[];return S.set(t,u),(l,o)=>{const i={};let c=null;return f.push(i),l&&o?(c=T(t,n,()=>l(c),i,f),v.value=!0,o(c),v.value=!1):l&&(n[t]??(n[t]=[])),c||(c=T(t,n),l&&n[t].push(()=>l(c))),l&&U(()=>l(c),t,n,i),c}},T=(e,u,t,n,f)=>{const l=[],o=new Proxy(S.get(e),{get(i,c){var r;return t&&n&&v.value&&(n[e]??(n[e]={}),(r=n[e])[c]??(r[c]=[]),n[e][c].includes(t)||(n[e][c].push(t),l.push(c))),l.includes(c)||!t?i[c]:null},set(i,c,r){if(l.includes(c)||!t)i[c]=r;else return!0;const m=u[e]||[],h=[];return m.forEach(d=>{d(o)||h.push(d)}),(f||[]).forEach(d=>{const E=t?d&&d[e][c]||[]:[];E.forEach(g=>{g(o)||h.push(g)}),h.forEach(g=>{E.splice(E.indexOf(g),1)})}),h.forEach(d=>{m.splice(m.indexOf(d),1)}),!0}});return o},U=(e,u,t,n)=>{const f=e();f instanceof AbortSignal&&(f.addEventListener("abort",()=>{const l=t[u]||[],o=n[u]||{};l.splice(l.indexOf(e),1),Object.values(o).forEach(i=>{i.splice(i.indexOf(e),1)}),x.delete(f)}),x.add(f))},C=(e,u)=>{let t=[],n=null;return f=>{const l=e(),o=t.every((c,r)=>c===l[r]);if(t=l,o&&n)return n;const i=u(f);return n=i,i}},b=(e,u,t)=>{let n=()=>{};return a.nextTick().then(()=>{n=a.render(e(),u,t)}),()=>n()};s.cacheUpdate=C,s.computed=j,s.effect=k,s.nextTickRender=b,s.state=L,s.store=P,Object.defineProperty(s,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 StoreValue = {\n [key: string | symbol]: (() => boolean)[];\n};\n\nconst storeGroup = new Map<string | symbol, unknown>();\nconst storeRenderList: StoreValue = {};\nconst storeRenderObserveMap: {\n [key: string | symbol]: StoreValue;\n} = {};\n\nexport const store = <T extends {}>(value: T) => {\n const storeKey = Symbol();\n storeGroup.set(storeKey, value);\n\n return (renew?: () => boolean, makeObserver?: (store: T) => unknown[]) => {\n if (renew) {\n if (makeObserver) {\n const renewRef: { value: (() => boolean) | null } = { value: renew };\n const makedProxy = updater<T>(storeKey, renewRef);\n\n makeObserver(makedProxy);\n renewRef.value = null;\n\n return makedProxy;\n } else {\n storeRenderList[storeKey] ??= [];\n storeRenderList[storeKey].push(renew);\n }\n }\n\n return updater<T>(storeKey);\n };\n};\n\nconst updater = <T extends { [key: string | symbol]: unknown }>(\n storeKey: string | symbol,\n renewRef?: { value: (() => boolean) | null }\n) => {\n const allowedAccessProp: (keyof T)[] = [];\n\n return new Proxy(storeGroup.get(storeKey) as T, {\n get(target: T, prop: keyof T) {\n if (renewRef?.value) {\n storeRenderObserveMap[storeKey] ??= {};\n storeRenderObserveMap[storeKey][prop] ??= [];\n\n if (!storeRenderObserveMap[storeKey][prop].includes(renewRef.value)) {\n storeRenderObserveMap[storeKey][prop].push(renewRef.value);\n allowedAccessProp.push(prop);\n }\n }\n\n if (allowedAccessProp.includes(prop) || !renewRef) {\n return target[prop];\n }\n\n return null;\n },\n set(target, prop: keyof T, value) {\n if (allowedAccessProp.includes(prop) || !renewRef) {\n target[prop] = value;\n }\n\n const renderList = storeRenderList[storeKey] || [];\n const renderObserveList: (() => boolean)[] = renewRef\n ? storeRenderObserveMap[storeKey][prop] || []\n : [];\n const trashCollections: (() => boolean)[] = [];\n\n renderList.forEach(renew => {\n if (!renew()) {\n trashCollections.push(renew);\n }\n });\n\n renderObserveList.forEach(renew => {\n if (!renew()) {\n trashCollections.push(renew);\n }\n });\n\n trashCollections.forEach(deleteTarget => {\n renderList.splice(renderList.indexOf(deleteTarget), 1);\n renderObserveList.splice(renderObserveList.indexOf(deleteTarget), 1);\n });\n\n return true;\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","storeGroup","storeRenderList","storeRenderObserveMap","store","storeKey","makeObserver","renewRef","makedProxy","updater","allowedAccessProp","target","prop","_a","renderList","renderObserveList","trashCollections","deleteTarget","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 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)) {\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)) {\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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"}
|
package/helper/package.json
CHANGED
package/helper/src/hook/store.ts
CHANGED
|
@@ -1,93 +1,164 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* DataStore
|
|
3
3
|
*/
|
|
4
|
-
type
|
|
5
|
-
[key: string | symbol]: (() => boolean)[];
|
|
6
|
-
};
|
|
4
|
+
type StoreType<V> = V extends { [key: string]: unknown } ? V : { value: V };
|
|
7
5
|
|
|
6
|
+
type Renew<T> = (store: T) => boolean | AbortSignal | void;
|
|
7
|
+
type StoreValue<T> = {
|
|
8
|
+
[key: string | symbol]: Renew<T>[];
|
|
9
|
+
};
|
|
10
|
+
type StoreRenderObserveMap<T> = { [key: string | symbol]: StoreValue<T> };
|
|
8
11
|
const storeGroup = new Map<string | symbol, unknown>();
|
|
9
|
-
const
|
|
10
|
-
const
|
|
11
|
-
|
|
12
|
-
|
|
12
|
+
const abortSignalSets = new WeakSet<AbortSignal>();
|
|
13
|
+
const allowInitSetting = { value: false };
|
|
14
|
+
|
|
15
|
+
export const store = <V>(initialValue: V) => {
|
|
16
|
+
type T = StoreType<V>;
|
|
17
|
+
|
|
18
|
+
let value = null;
|
|
19
|
+
if (typeof initialValue === 'object' && initialValue !== null) {
|
|
20
|
+
value = initialValue;
|
|
21
|
+
} else {
|
|
22
|
+
value = { value: initialValue };
|
|
23
|
+
}
|
|
13
24
|
|
|
14
|
-
export const store = <T extends {}>(value: T) => {
|
|
15
25
|
const storeKey = Symbol();
|
|
26
|
+
const storeRenderList: StoreValue<T> = {};
|
|
27
|
+
const storeRenderObserveList: StoreRenderObserveMap<T>[] = [];
|
|
28
|
+
|
|
16
29
|
storeGroup.set(storeKey, value);
|
|
17
30
|
|
|
18
|
-
return (renew?:
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
31
|
+
return (renew?: Renew<T>, makeObserver?: (store: T) => unknown[]) => {
|
|
32
|
+
const storeRenderObserveMap: StoreRenderObserveMap<T> = {};
|
|
33
|
+
let makedProxy: null | T = null;
|
|
34
|
+
|
|
35
|
+
storeRenderObserveList.push(storeRenderObserveMap);
|
|
36
|
+
|
|
37
|
+
if (renew && makeObserver) {
|
|
38
|
+
makedProxy = updater<T>(
|
|
39
|
+
storeKey,
|
|
40
|
+
storeRenderList,
|
|
41
|
+
() => renew(makedProxy!),
|
|
42
|
+
storeRenderObserveMap,
|
|
43
|
+
storeRenderObserveList
|
|
44
|
+
);
|
|
45
|
+
allowInitSetting.value = true;
|
|
46
|
+
makeObserver(makedProxy);
|
|
47
|
+
allowInitSetting.value = false;
|
|
48
|
+
} else if (renew) {
|
|
49
|
+
storeRenderList[storeKey] ??= [];
|
|
50
|
+
}
|
|
23
51
|
|
|
24
|
-
|
|
25
|
-
|
|
52
|
+
if (!makedProxy) {
|
|
53
|
+
makedProxy = updater<T>(storeKey, storeRenderList);
|
|
26
54
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
storeRenderList[storeKey] ??= [];
|
|
30
|
-
storeRenderList[storeKey].push(renew);
|
|
55
|
+
if (renew) {
|
|
56
|
+
storeRenderList[storeKey].push(() => renew(makedProxy!));
|
|
31
57
|
}
|
|
32
58
|
}
|
|
33
59
|
|
|
34
|
-
|
|
60
|
+
if (renew) {
|
|
61
|
+
runFirstEmit<T>(
|
|
62
|
+
() => renew(makedProxy!),
|
|
63
|
+
storeKey,
|
|
64
|
+
storeRenderList,
|
|
65
|
+
storeRenderObserveMap
|
|
66
|
+
);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
return makedProxy;
|
|
35
70
|
};
|
|
36
71
|
};
|
|
37
72
|
|
|
38
73
|
const updater = <T extends { [key: string | symbol]: unknown }>(
|
|
39
74
|
storeKey: string | symbol,
|
|
40
|
-
|
|
75
|
+
storeRenderList: StoreValue<T>,
|
|
76
|
+
run?: () => boolean | AbortSignal | void,
|
|
77
|
+
storeRenderObserveMap?: { [key: string | symbol]: StoreValue<T> },
|
|
78
|
+
storeRenderObserveList?: StoreRenderObserveMap<T>[]
|
|
41
79
|
) => {
|
|
42
80
|
const allowedAccessProp: (keyof T)[] = [];
|
|
43
81
|
|
|
44
|
-
|
|
82
|
+
const result = new Proxy(storeGroup.get(storeKey) as T, {
|
|
45
83
|
get(target: T, prop: keyof T) {
|
|
46
|
-
if (
|
|
84
|
+
if (run && storeRenderObserveMap && allowInitSetting.value) {
|
|
47
85
|
storeRenderObserveMap[storeKey] ??= {};
|
|
48
86
|
storeRenderObserveMap[storeKey][prop] ??= [];
|
|
49
87
|
|
|
50
|
-
if (!storeRenderObserveMap[storeKey][prop].includes(
|
|
51
|
-
storeRenderObserveMap[storeKey][prop].push(
|
|
88
|
+
if (!storeRenderObserveMap[storeKey][prop].includes(run)) {
|
|
89
|
+
storeRenderObserveMap[storeKey][prop].push(run);
|
|
52
90
|
allowedAccessProp.push(prop);
|
|
53
91
|
}
|
|
54
92
|
}
|
|
55
93
|
|
|
56
|
-
if (allowedAccessProp.includes(prop) || !
|
|
94
|
+
if (allowedAccessProp.includes(prop) || !run) {
|
|
57
95
|
return target[prop];
|
|
58
96
|
}
|
|
59
97
|
|
|
60
98
|
return null;
|
|
61
99
|
},
|
|
62
100
|
set(target, prop: keyof T, value) {
|
|
63
|
-
if (allowedAccessProp.includes(prop) || !
|
|
101
|
+
if (allowedAccessProp.includes(prop) || !run) {
|
|
64
102
|
target[prop] = value;
|
|
103
|
+
} else {
|
|
104
|
+
return true;
|
|
65
105
|
}
|
|
66
106
|
|
|
67
107
|
const renderList = storeRenderList[storeKey] || [];
|
|
68
|
-
const
|
|
69
|
-
? storeRenderObserveMap[storeKey][prop] || []
|
|
70
|
-
: [];
|
|
71
|
-
const trashCollections: (() => boolean)[] = [];
|
|
108
|
+
const trashCollections: Renew<T>[] = [];
|
|
72
109
|
|
|
73
110
|
renderList.forEach(renew => {
|
|
74
|
-
if (!renew()) {
|
|
111
|
+
if (!renew(result)) {
|
|
75
112
|
trashCollections.push(renew);
|
|
76
113
|
}
|
|
77
114
|
});
|
|
78
115
|
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
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)) {
|
|
123
|
+
trashCollections.push(renew);
|
|
124
|
+
}
|
|
125
|
+
});
|
|
126
|
+
trashCollections.forEach(deleteTarget => {
|
|
127
|
+
renderObserveList.splice(renderObserveList.indexOf(deleteTarget), 1);
|
|
128
|
+
});
|
|
83
129
|
});
|
|
84
130
|
|
|
85
131
|
trashCollections.forEach(deleteTarget => {
|
|
86
132
|
renderList.splice(renderList.indexOf(deleteTarget), 1);
|
|
87
|
-
renderObserveList.splice(renderObserveList.indexOf(deleteTarget), 1);
|
|
88
133
|
});
|
|
89
134
|
|
|
90
135
|
return true;
|
|
91
136
|
},
|
|
92
137
|
});
|
|
138
|
+
|
|
139
|
+
return result;
|
|
140
|
+
};
|
|
141
|
+
|
|
142
|
+
const runFirstEmit = <T>(
|
|
143
|
+
run: () => boolean | void | AbortSignal,
|
|
144
|
+
storeKey: symbol,
|
|
145
|
+
storeRenderList: StoreValue<T>,
|
|
146
|
+
storeRenderObserveMap: { [key: string | symbol]: StoreValue<T> }
|
|
147
|
+
) => {
|
|
148
|
+
const renewResult = run();
|
|
149
|
+
|
|
150
|
+
if (renewResult instanceof AbortSignal) {
|
|
151
|
+
renewResult.addEventListener('abort', () => {
|
|
152
|
+
const renderList = storeRenderList[storeKey] || [];
|
|
153
|
+
const renderObserveList: StoreValue<T> =
|
|
154
|
+
storeRenderObserveMap[storeKey] || {};
|
|
155
|
+
|
|
156
|
+
renderList.splice(renderList.indexOf(run), 1);
|
|
157
|
+
Object.values(renderObserveList).forEach(item => {
|
|
158
|
+
item.splice(item.indexOf(run), 1);
|
|
159
|
+
});
|
|
160
|
+
abortSignalSets.delete(renewResult);
|
|
161
|
+
});
|
|
162
|
+
abortSignalSets.add(renewResult);
|
|
163
|
+
}
|
|
93
164
|
};
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { h, Fragment, render, mount, ref, nextTick } from 'lithent';
|
|
2
|
+
import { store } from '@/hook/store';
|
|
3
|
+
const testChangeRef = ref<null | (() => void)>(null);
|
|
4
|
+
|
|
5
|
+
const subscribe = store<{ count1: number; count2: number; count3: number }>({
|
|
6
|
+
count1: 1,
|
|
7
|
+
count2: 1,
|
|
8
|
+
count3: 1,
|
|
9
|
+
});
|
|
10
|
+
|
|
11
|
+
let proxySubscribeChkValue: number = 0;
|
|
12
|
+
|
|
13
|
+
const abortControl = new AbortController();
|
|
14
|
+
const proxyFirst = subscribe(
|
|
15
|
+
store => {
|
|
16
|
+
proxySubscribeChkValue = store.count1;
|
|
17
|
+
|
|
18
|
+
console.log(store);
|
|
19
|
+
|
|
20
|
+
return abortControl.signal;
|
|
21
|
+
},
|
|
22
|
+
store => [store.count1, store.count2]
|
|
23
|
+
);
|
|
24
|
+
|
|
25
|
+
console.log(proxyFirst);
|
|
26
|
+
|
|
27
|
+
const Component = mount(r => {
|
|
28
|
+
const local = subscribe(r, store => [store.count3]);
|
|
29
|
+
|
|
30
|
+
const click = () => {
|
|
31
|
+
local.count1 += 1;
|
|
32
|
+
local.count2 -= 1;
|
|
33
|
+
local.count3 *= 2;
|
|
34
|
+
};
|
|
35
|
+
testChangeRef.value = click;
|
|
36
|
+
|
|
37
|
+
return () => (
|
|
38
|
+
<>
|
|
39
|
+
<div>count1: {local.count1}</div>
|
|
40
|
+
<div>count2: {local.count2}</div>
|
|
41
|
+
<div>count3: {local.count3}</div>
|
|
42
|
+
<button type="text" onClick={click}>
|
|
43
|
+
change count
|
|
44
|
+
</button>
|
|
45
|
+
</>
|
|
46
|
+
);
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
const testWrap =
|
|
50
|
+
document.getElementById('root') || document.createElement('div');
|
|
51
|
+
|
|
52
|
+
render(<Component />, testWrap);
|
|
53
|
+
|
|
54
|
+
if (import.meta.vitest) {
|
|
55
|
+
console.log('3234235');
|
|
56
|
+
const { it, expect } = import.meta.vitest;
|
|
57
|
+
it('A DOM should be created that reflects the initial values of your store.', () => {
|
|
58
|
+
expect(testWrap.outerHTML).toBe(
|
|
59
|
+
'<div><div>count1: </div><div>count2: </div><div>count3: 1</div><button type="text">change count</button></div>'
|
|
60
|
+
);
|
|
61
|
+
if (testChangeRef.value) {
|
|
62
|
+
testChangeRef.value();
|
|
63
|
+
testChangeRef.value();
|
|
64
|
+
testChangeRef.value();
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
it('You should see a DOM that reflects the changed store values.', () => {
|
|
68
|
+
nextTick().then(() => {
|
|
69
|
+
expect(testWrap.outerHTML).toBe(
|
|
70
|
+
'<div><div>count1: </div><div>count2: </div><div>count3: 8</div><button type="text">change count</button></div>'
|
|
71
|
+
);
|
|
72
|
+
});
|
|
73
|
+
});
|
|
74
|
+
it('For subscriptions that did not request a value, the value is null.', () => {
|
|
75
|
+
expect(proxyFirst.count3).toBe(null);
|
|
76
|
+
});
|
|
77
|
+
it('For subscriptions that did not request a value, the value is null - 2', () => {
|
|
78
|
+
proxyFirst.count1 = 777;
|
|
79
|
+
|
|
80
|
+
nextTick().then(() => {
|
|
81
|
+
expect(testWrap.outerHTML).toBe(
|
|
82
|
+
'<div><div>count1: </div><div>count2: </div><div>count3: 8</div><button type="text">change count</button></div>'
|
|
83
|
+
);
|
|
84
|
+
expect(proxySubscribeChkValue).toBe(777);
|
|
85
|
+
});
|
|
86
|
+
});
|
|
87
|
+
it('abort test', () => {
|
|
88
|
+
abortControl.abort();
|
|
89
|
+
proxyFirst.count1 = 999;
|
|
90
|
+
nextTick().then(() => {
|
|
91
|
+
expect(proxySubscribeChkValue).toBe(777);
|
|
92
|
+
});
|
|
93
|
+
});
|
|
94
|
+
}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { h, Fragment, render, mount, ref, nextTick } from 'lithent';
|
|
2
|
+
import { store } from '@/hook/store';
|
|
3
|
+
const testChangeRef = ref<null | (() => void)>(null);
|
|
4
|
+
|
|
5
|
+
const subscribe = store<number>(0);
|
|
6
|
+
|
|
7
|
+
let proxySubscribeChkValue = 0;
|
|
8
|
+
const abortControl = new AbortController();
|
|
9
|
+
const proxyFirst = subscribe(store => {
|
|
10
|
+
proxySubscribeChkValue = store.value;
|
|
11
|
+
console.log(store);
|
|
12
|
+
|
|
13
|
+
return abortControl.signal;
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
console.log(proxyFirst);
|
|
17
|
+
|
|
18
|
+
const Component = mount(r => {
|
|
19
|
+
const local = subscribe(r);
|
|
20
|
+
|
|
21
|
+
const click = () => {
|
|
22
|
+
local.value += 1;
|
|
23
|
+
};
|
|
24
|
+
testChangeRef.value = click;
|
|
25
|
+
|
|
26
|
+
return () => (
|
|
27
|
+
<>
|
|
28
|
+
<div>value: {local.value}</div>
|
|
29
|
+
<button type="text" onClick={click}>
|
|
30
|
+
change count
|
|
31
|
+
</button>
|
|
32
|
+
</>
|
|
33
|
+
);
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
const testWrap =
|
|
37
|
+
document.getElementById('root') || document.createElement('div');
|
|
38
|
+
|
|
39
|
+
render(<Component />, testWrap);
|
|
40
|
+
|
|
41
|
+
if (import.meta.vitest) {
|
|
42
|
+
const { it, expect } = import.meta.vitest;
|
|
43
|
+
|
|
44
|
+
it('If the value is not an object, it is expanded to value and processed.', () => {
|
|
45
|
+
expect(testWrap.outerHTML).toBe(
|
|
46
|
+
'<div><div>value: 0</div><button type="text">change count</button></div>'
|
|
47
|
+
);
|
|
48
|
+
if (testChangeRef.value) {
|
|
49
|
+
testChangeRef.value();
|
|
50
|
+
testChangeRef.value();
|
|
51
|
+
testChangeRef.value();
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
it('If the value is not an object, the event operates normally and the value increases.', () => {
|
|
56
|
+
nextTick().then(() => {
|
|
57
|
+
expect(testWrap.outerHTML).toBe(
|
|
58
|
+
'<div><div>value: 3</div><button type="text">change count</button></div>'
|
|
59
|
+
);
|
|
60
|
+
expect(proxySubscribeChkValue).toBe(3);
|
|
61
|
+
});
|
|
62
|
+
});
|
|
63
|
+
}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"type": "module",
|
|
3
3
|
"name": "lithent",
|
|
4
|
-
"version": "1.
|
|
4
|
+
"version": "1.11.0",
|
|
5
5
|
"description": "An extensible virtual DOM library for lightweight use in a variety of environments.",
|
|
6
6
|
"packageManager": "pnpm@7.6.0",
|
|
7
7
|
"main": "./dist/lithent.umd.js",
|
|
@@ -10,18 +10,22 @@
|
|
|
10
10
|
"dev:core": "vite",
|
|
11
11
|
"dev": "vite",
|
|
12
12
|
"dev:examples": "pnpm watch:core & pnpm watch:helper & pnpm --filter lithent-examples dev",
|
|
13
|
+
"dev:helper": "pnpm watch:core & pnpm --filter lithent-helper dev",
|
|
13
14
|
"dev:docs": "pnpm watch:core & pnpm watch:helper & pnpm --filter lithent-docs dev",
|
|
14
15
|
"build:core": "vite build",
|
|
15
16
|
"build:helper": "pnpm --filter lithent-helper build",
|
|
17
|
+
"build:!helper": "pnpm --filter '!lithent-helper' build",
|
|
16
18
|
"build:tag": "pnpm --filter lithent-tag build",
|
|
17
19
|
"build:ftags": "pnpm --filter lithent-ftags build",
|
|
18
20
|
"build:examples": "pnpm --filter lithent-examples build",
|
|
19
21
|
"build:docs": "pnpm --filter lithent-docs build",
|
|
20
22
|
"watch:core": "vite build --watch",
|
|
21
23
|
"watch:helper": "pnpm --filter lithent-helper watch",
|
|
22
|
-
"build": "pnpm build:core && pnpm build:helper
|
|
23
|
-
"build:
|
|
24
|
-
"
|
|
24
|
+
"build:sequence": "pnpm build:core && pnpm build:helper",
|
|
25
|
+
"build:parallel": "pnpm build:!helper",
|
|
26
|
+
"build": "pnpm run build:sequence && pnpm run build:parallel",
|
|
27
|
+
"test:core": "vitest run --reporter verbose",
|
|
28
|
+
"test": "pnpm test:core && pnpm --filter lithent-helper test",
|
|
25
29
|
"test:dev": "vitest",
|
|
26
30
|
"coverage": "vitest run --coverage",
|
|
27
31
|
"clean": "pnpm clean:dist && pnpm clean:module",
|
|
@@ -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),N=(e,t)=>E(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 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)},W=(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),U=e=>typeof e=="function"&&!Q(e)||typeof e=="object"&&"resolve"in e,Q=e=>typeof e=="function"&&e===b,Z=e=>E(e)&&!e.type,C=e=>e!=null,X=(e,t)=>e==="style"&&typeof t=="object",Ue=(e,t)=>e==="ref"&&typeof t=="object",Te=e=>e.nodeType===1&&e.tagName==="OPTION",Oe=e=>e.nodeType===1&&e.tagName==="TEXTAREA",Ve=e=>e.nodeType===1&&["radio","checkbox"].includes(e.type),Ae=e=>{let t="et";return U(e)?t="c":N(e,"fragment")?t="f":N(e,"element")?t="e":N(e,"loop")?t="l":N(e,"text")?t="t":Z(e)&&(t="et"),t},Le={c:Se,l:we,t:W,e:Ne,f:be,et:W},h=e=>e.getParent&&e.getParent(),R=Object.entries,ee=Object.keys,T=Object.assign,P={value:""},x={value:{}},M={value:!1},s=new WeakMap,ke=e=>{s.set(e,{vd:{value:null},up:()=>{},upR:[],upS:{value:0},upD:[],upCB:[],mts:[],umts:[]})},S=()=>x.value,te=(e,t)=>s.get(e)[t],De=e=>x.value=e,Me=e=>{x.value=e,ke(e)},Fe=e=>{s.get(S()).umts.push(e)},O=e=>{const{compKey:t}=e;t&&Ie(t),ne(e)},ne=e=>{(e.children||[]).forEach(t=>{t.compKey?O(t):ne(t)})},Ie=e=>{const t=s.get(e);t&&(t.umts.forEach(n=>n()),t.umts=[],s.delete(e))};let F=[];const q=()=>{F.forEach(e=>je(e)),F=[]},Ke=e=>{e.compKey&&F.push(e)},le=e=>s.get(S()).mts.push(e),je=e=>{const{compKey:t}=e;if(t){const n=s.get(t),l=n==null?void 0:n.mts,o=n==null?void 0:n.upS;x.value=t,o&&(o.value=0),l&&(n.mts=[],l.forEach(r=>{const u=r();u&&Fe(u)}))}},_=(e,t=()=>[])=>{const n=s.get(S()),{upD:l,upS:o}=n,r=l[o.value];if(r&&$e(r,t())){const u=e();u&&n.upCB.push(u)}l[o.value]=t(),o.value+=1},Be=e=>{const{compKey:t}=e;if(t){const n=s.get(t),l=n==null?void 0:n.upCB,o=n==null?void 0:n.upS;x.value=t,o&&(o.value=0),e.ctor&&l&&(n.upCB=[],l.forEach(r=>r()))}},$e=(e,t)=>e.length?e.some((n,l)=>n!==t[l]):!0,qe=e=>e==="className"?"class":e,oe=e=>e.replace(/^on(.*)/,(t,n)=>n.toLowerCase()),H=()=>new DocumentFragment,z=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),q(),()=>{var o;const r=(o=s.get(e.compProps||{}))==null?void 0:o.vd.value;r&&O(r),V(r||e),Ye(r||e)}},re=e=>{const{needRerender:t}=e;t&&t!=="N"&&({A:J,D:Y,R:We,U:K,CNSU:K,SR:ie,SU:Je}[t](e),delete e.needRerender,delete e.oldChildren,delete e.oldProps)},V=e=>{e.props&&e.el&&se(e.props,e.el),(e.children||[]).forEach(t=>{V(t)})},Ye=e=>{ue(e,e.wrapElement)},Y=e=>{e.oldProps&&e.el&&se(e.oldProps,e.el),ue(e,L(h(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 o=(l=n.el)==null?void 0:l.nodeType;o&&([1,3].includes(o)?t.removeChild(n==null?void 0:n.el):o===11&&ce(n,t))})},ie=e=>{Y(e),J(e)},Je=e=>{if(K(e),h(e).needRerender!=="CNSU"){const t=de(e);J(e,t)}},J=(e,t)=>{t||(t=A(e));const n=h(e);if(n.type){const l=L(n),o=n.type==="loop"&&n.needRerender&&n.needRerender!=="CNSU"?I(n,h(n)):I(e,n);t&&l&&(o?l.insertBefore(t,o):l.appendChild(t),q())}},de=e=>y(e.type)?((e==null?void 0:e.children)||[]).reduce((t,n)=>{const l=de(n);return l&&t.appendChild(l),t},H()):e.el,I=(e,t)=>{const n=t.children||[],l=n.indexOf(e)+1,o=n.slice(l),r=ae(o),u=t.type||"";if(r)return r;if(!t.isRoot&&y(u))return I(t,h(t));if(t.isRoot&&y(u)&&t.afterElement)return t.afterElement},ae=e=>e.reduce((t,n)=>{const l=n.type,o=n.el,r=l&&y(l);return t||(r?ae(n.children||[]):o&&o.nodeType!==11?o:t)},void 0),We=e=>{const t=h(e),n=e.el;if(t.type&&n)if(n.nodeType===11)ie(e);else{const l=L(t),o=A(e);l&&l.replaceChild(o,n),q()}},se=(e,t)=>{R(e||{}).forEach(([n,l])=>{n.match(/^on/)&&t.removeEventListener(oe(n),l)})},K=e=>{var t;const n=e.el;if(e.type==="text"){Xe(e);return}if(n){const{oldProps:l,props:o}=e;pe(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=>re(l)),Be(e)},Xe=e=>{const t=e.el;t&&(t.nodeValue=String(e.text))},pe=(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:X(o,r)?Ze(r,X(o,l.style)?l.style:{},t):Ue(o,r)?r.value=t:o.match(/^on/)?Qe(t,o,r,l[o]):Ve(t)&&o==="checked"?t.checked=!!r:Oe(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]}),ee(l).forEach(o=>t.removeAttribute(o))},_e=(e,t,n)=>{P.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,d=y(n);return l==="svg"&&(P.value=String(r==null?void 0:r.xmlns)),d?t=H():n==="element"&&l?t=P.value?document.createElementNS(P.value,l):z(l):n==="text"&&C(o)?t=document.createTextNode(String(o)):t=z("e"),Ge(u,t),pe(r,t),e.el=t,Ke(e),l==="svg"&&(P.value=""),t},Ge=(e,t)=>{const n=e.reduce((l,o)=>(o.type&&l.appendChild(A(o)),l),H());t&&n.hasChildNodes()&&t.appendChild(n)},Qe=(e,t,n,l)=>{const o=oe(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(h(e)):e.el},k=(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&&(O(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=Z(e),r=e.isRoot,u=n&&h(n),d=!r&&(u==null?void 0:u.type),a=v(e),i=d==="loop"&&C(a),f=e.type==="text"&&t&&e.text===(n==null?void 0:n.text),m=e===n;let p;return o?p="D":f||m?p="N":l?t?p=i?"SU":"U":p=i?"SR":"R":p="A",e.type==="loop"&&p==="U"&&n&<(e,n)&&(p="CNSU"),p},lt=(e,t)=>{const n=[...(t==null?void 0:t.children)||[]],l=[...(e==null?void 0:e.children)||[]].filter(u=>n.find(d=>v(u)===v(d))),o=n.filter(u=>l.find(d=>v(u)===v(d)));let r=o.length===l.length;return r&&(r=o.every((u,d)=>v(u)===v(l[d]))),r},ot=(e,t)=>{e&&t!==e&&(ee(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)=>U(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(k(t),{getParent:()=>e})),at=(e,t)=>e.type==="loop"&&C(v((e.children||[])[0]))?st(e,t):(e.children||[]).map((n,l)=>T(k(n,(t.children||[])[l]),{getParent:()=>e})),st=(e,t)=>{const[n,l]=pt(e,t);return l.forEach(o=>{O(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=k(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 j=[],B=!1;const ve=(e,t)=>{s.get(e).up=()=>{j.push({compKey:e,exec:t}),B||(B=!0,queueMicrotask(ft))}},ht=e=>()=>{var t;const n=(t=s.get(e))==null?void 0:t.up;let l=!1;return n&&(n(),l=!0),l},ft=()=>{j.forEach(e=>{e.exec()}),j=[],B=!1},he=(e,t=()=>[])=>{s.get(S()).upR.push(()=>_(e,t)),_(e,t)},mt=()=>{var e;const t=(e=s.get(S()))==null?void 0:e.upR;t!=null&&t.length&&t.forEach(n=>n())},b=(e,...t)=>({type:"fragment",children:t}),c=(e,t,...n)=>{const l={value:void 0},o=t||{},r=Ee(l,n),u=Pt(e,o,r);return U(u)||(l.value=u),u},fe=e=>(t,n)=>e,me=(e,t,n,l)=>{var o;if(l.isLegacy)return;M.value=!0;const r=ge(e,t,n),u=k(r,l),{isRoot:d,getParent:a,wrapElement:i,afterElement:f}=l;if(u.getParent=a,!d&&a){const m=((o=a())==null?void 0:o.children)||[],p=m.indexOf(l);m.splice(p,1,u)}else u.isRoot=!0,u.wrapElement=i,u.afterElement=f;M.value=!1,re(u)},ge=(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 ve(l,()=>me(e,t,n,u)),te(l,"vd").value=r,r}}),gt=(e,t,n,l,o)=>{let r=e,u=e(l);return u.reRender&&(r=d=>{const a=e(d),i=b({},a);return a.getParent=()=>i,i},u=r(l)),ye(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)=>{De(t),mt();const u=e(l);return ve(t,()=>me(n,l,o,u)),ye(u,t,n,l,o,r),te(t,"vd").value=u,u},ye=(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(Q(e))return b(t,...n);if(U(e)){const l=ge(e,t,n);return M.value?l:l.resolve()}return{type:"element",tag:e,props:t,children:n}},Ee=(e,t)=>t.map(n=>T(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},Rt=e=>({value:e}),$=(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()}}},xt=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)},Pe=new Map,w={},g={},bt=e=>{const t=Symbol();return Pe.set(t,e),(n,l)=>{if(n)if(l){const o={value:n},r=G(t,o);return l(r),o.value=null,r}else w[t]??(w[t]=[]),w[t].push(n);return G(t)}},G=(e,t)=>{const n=[];return new Proxy(Pe.get(e),{get(l,o){var r;return t!=null&&t.value&&(g[e]??(g[e]={}),(r=g[e])[o]??(r[o]=[]),g[e][o].includes(t.value)||(g[e][o].push(t.value),n.push(o))),n.includes(o)||!t?l[o]:null},set(l,o,r){(n.includes(o)||!t)&&(l[o]=r);const u=w[e]||[],d=t?g[e][o]||[]:[],a=[];return u.forEach(i=>{i()||a.push(i)}),d.forEach(i=>{i()||a.push(i)}),a.forEach(i=>{u.splice(u.indexOf(i),1),d.splice(d.indexOf(i),1)}),!0}})},Nt=fe((e,t,n)=>{const l=$(1,e),o=$('"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,d=xt(()=>l.v+i+t.parentValue),a=bt({text:"s",count:0})(e);let i=t.parentValue;const f=Rt(null),m=()=>{l.v=l.v+1,i+=1},p=D=>{o.v=D.target.value},Ce=()=>{a.count+=1,a.text+="1"},Re=()=>(console.log("MOUNTED",f),()=>console.log("UNMOUNT")),xe=()=>(console.log("UPDATE - parentValue"),()=>console.log("UPDATED"));return le(Re),he(xe,()=>[t.parentValue]),St(()=>console.log("INJECT"),()=>console.log("CLEAN_UP"),()=>[l.v]),({parentValue:D})=>c(b,null,c("div",null,c("textarea",{value:o.v,onInput:p,style:{width:"300px",height:"100px"}})),c("div",null,o.v),c("div",null,c("div",{style:{color:"blue"}},"parentValueFromRef: ",t.parentValue," (working)"),c("div",{style:{color:"blue"}},"parentValueFromFunction: ",r()," (working)"),c("div",{style:{color:"blue"}},"parentValueFromUpdaterDestructuring: ",D," (working)"),c("div",{style:{color:"red"}},"parentValueFromMounterDestructuring: ",u," (not working)")),c("div",null,c("div",{ref:f},"count: ",l.v),c("div",null,"sum: ",l.v+i+t.parentValue),c("div",null,"sum(computed): ",d.v),c("div",null,"notRefValue: ",i),c("div",null,"localStore(text): ",a.text),c("div",null,"localStore(count): ",a.count)),c("button",{onClick:m},"Increase"),c("button",{onClick:Ce},"localStoreUpdate"),n)}),wt=fe(e=>{const t=$(7,e),n=()=>{t.v=t.v+1},l=()=>{t.v=t.v-1};return()=>c(b,null,c(Nt,{parentValue:t.v},c("button",{onClick:n},"Increase - Parent")),c("button",{onClick:l},"Decrease - Parent"))}),Ut=c(wt,null);He(Ut,document.getElementById("root"));
|
|
2
|
-
//# sourceMappingURL=index-B5wgGeyV.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index-B5wgGeyV.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 f, updateCallback as g, nextTick as m, render as x } from \"lithent\";\nconst C = (n, t) => {\n let u = n;\n return {\n get value() {\n return u;\n },\n get v() {\n return u;\n },\n set value(c) {\n u = c, t();\n },\n set v(c) {\n u = c, t();\n }\n };\n}, P = (n) => {\n let t = n;\n return {\n get value() {\n return t();\n },\n get v() {\n return t();\n },\n set value(u) {\n throw new Error(\"You can't change 'computed'\");\n },\n set v(u) {\n throw new Error(\"You can't change 'computed'\");\n }\n };\n}, U = (n, t = () => {\n}, u = () => []) => {\n f(() => (n(), t)), g(() => (t && t(), n), u);\n}, v = /* @__PURE__ */ new Map(), h = {}, r = {}, k = (n) => {\n const t = Symbol();\n return v.set(t, n), (u, c) => {\n if (u)\n if (c) {\n const l = { value: u }, s = d(t, l);\n return c(s), l.value = null, s;\n } else\n h[t] ?? (h[t] = []), h[t].push(u);\n return d(t);\n };\n}, d = (n, t) => {\n const u = [];\n return new Proxy(v.get(n), {\n get(c, l) {\n var s;\n return t != null && t.value && (r[n] ?? (r[n] = {}), (s = r[n])[l] ?? (s[l] = []), r[n][l].includes(t.value) || (r[n][l].push(t.value), u.push(l))), u.includes(l) || !t ? c[l] : null;\n },\n set(c, l, s) {\n (u.includes(l) || !t) && (c[l] = s);\n const i = h[n] || [], a = t ? r[n][l] || [] : [], o = [];\n return i.forEach((e) => {\n e() || o.push(e);\n }), a.forEach((e) => {\n e() || o.push(e);\n }), o.forEach((e) => {\n i.splice(i.indexOf(e), 1), a.splice(a.indexOf(e), 1);\n }), !0;\n }\n });\n}, D = (n, t) => {\n let u = [], c = null;\n return (l) => {\n const s = n(), i = u.every((o, e) => o === s[e]);\n if (u = s, i && c)\n return c;\n const a = t(l);\n return c = a, a;\n };\n}, S = (n, t, u) => {\n let c = () => {\n };\n return m().then(() => {\n c = x(n(), t, u);\n }), () => c();\n};\nexport {\n D as cacheUpdate,\n P as computed,\n U as effect,\n S as nextTickRender,\n C 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","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","J","Ae","Fe","Le","w","_","Y","dt","F","r","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","He","Je","Ye","Ze","me","ge","we","We","De","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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"}
|