lithent 1.0.5 → 1.0.6
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 +7 -7
- package/dist/lithent.mjs +7 -10
- package/dist/lithent.mjs.map +1 -1
- package/dist/lithent.umd.js +1 -1
- package/dist/lithent.umd.js.map +1 -1
- package/examples/dist/assets/index-6f85ca2a.js +2 -0
- package/examples/dist/assets/index-6f85ca2a.js.map +1 -0
- package/examples/dist/index.html +1 -1
- package/package.json +1 -1
- package/src/tests/test5.tsx +2 -1
- package/src/utils/predicator.ts +1 -1
- package/examples/dist/assets/index-a93b0638.js +0 -2
- package/examples/dist/assets/index-a93b0638.js.map +0 -1
package/README.md
CHANGED
|
@@ -9,7 +9,7 @@ used lightly in a variety of situations.
|
|
|
9
9
|
- https://superlucky84.github.io/lithent
|
|
10
10
|
- (This guide page is written in lithent.)
|
|
11
11
|
|
|
12
|
-
`(9.
|
|
12
|
+
`(9.86 kB / gzip: 3.93 kB)`
|
|
13
13
|
|
|
14
14
|
## 🚩 Table of Contents
|
|
15
15
|
|
|
@@ -60,10 +60,10 @@ pnpm add lithent
|
|
|
60
60
|
|
|
61
61
|
#### Or Use CDN
|
|
62
62
|
|
|
63
|
-
* UMD : https://cdn.jsdelivr.net/npm/lithent@1.0.
|
|
64
|
-
* UMD-HELPER: https://cdn.jsdelivr.net/npm/lithent@1.0.
|
|
65
|
-
* ESM : https://cdn.jsdelivr.net/npm/lithent@1.0.
|
|
66
|
-
* ESM-HELPER: https://cdn.jsdelivr.net/npm/lithent@1.0.
|
|
63
|
+
* UMD : https://cdn.jsdelivr.net/npm/lithent@1.0.6/dist/lithent.umd.js
|
|
64
|
+
* UMD-HELPER: https://cdn.jsdelivr.net/npm/lithent@1.0.6/helper/dist/lithentHelper.umd.js
|
|
65
|
+
* ESM : https://cdn.jsdelivr.net/npm/lithent@1.0.6/dist/lithent.mjs
|
|
66
|
+
* ESM-HELPER: https://cdn.jsdelivr.net/npm/lithent@1.0.6/helper/dist/lithentHelper.mjs
|
|
67
67
|
|
|
68
68
|
|
|
69
69
|
It's easier to use lithent with JSX or HTM.
|
|
@@ -121,8 +121,8 @@ const destroy = render(html`<${Component} />`, document.getElementById('root'),
|
|
|
121
121
|
#### With UMD
|
|
122
122
|
|
|
123
123
|
```html
|
|
124
|
-
<script src="https://cdn.jsdelivr.net/npm/lithent@1.0.
|
|
125
|
-
<!--script src="https://cdn.jsdelivr.net/npm/lithent@1.0.
|
|
124
|
+
<script src="https://cdn.jsdelivr.net/npm/lithent@1.0.6/dist/lithent.umd.js"></script>
|
|
125
|
+
<!--script src="https://cdn.jsdelivr.net/npm/lithent@1.0.6/helper/dist/lithentHelper.umd.js"></script-->
|
|
126
126
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/htm/3.1.1/htm.js"></script>
|
|
127
127
|
|
|
128
128
|
<div id="root"></div>
|
package/dist/lithent.mjs
CHANGED
|
@@ -4,13 +4,10 @@ const C = (e) => typeof e == "object" && !("resolve" in e), E = (e, t) => C(e) &
|
|
|
4
4
|
}, pe = (e, t) => {
|
|
5
5
|
var s, c;
|
|
6
6
|
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);
|
|
7
|
-
}, U = (e, t) => {
|
|
8
|
-
var s, c;
|
|
9
|
-
return C(e) && (t == null ? void 0 : t.type) === e.type && (((s = t == null ? void 0 : t.children) == null ? void 0 : s.length) === ((c = e == null ? void 0 : e.children) == null ? void 0 : c.length) || e.type === "loop" && y(i((e.children || [])[0])) && y(i((t.children || [])[0])));
|
|
10
|
-
}, i = (e) => {
|
|
7
|
+
}, U = (e, t) => C(e) && (t == null ? void 0 : t.type) === e.type && (e.type !== "loop" || e.type === "loop" && v(i((e.children || [])[0])) && v(i((t.children || [])[0]))), i = (e) => {
|
|
11
8
|
var t, s;
|
|
12
9
|
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);
|
|
13
|
-
}, P = (e) => e && ["fragment", "loop"].includes(e), T = (e) => typeof e == "function" && !$(e) || typeof e == "object" && "resolve" in e, $ = (e) => typeof e == "function" && e === ce, H = (e) => C(e) && !e.type,
|
|
10
|
+
}, P = (e) => e && ["fragment", "loop"].includes(e), T = (e) => typeof e == "function" && !$(e) || typeof e == "object" && "resolve" in e, $ = (e) => typeof e == "function" && e === ce, H = (e) => C(e) && !e.type, v = (e) => e != null, z = (e, t) => e === "style" && typeof t == "object", he = (e, t) => e === "ref" && typeof t == "object", ie = (e) => e.nodeType === 1 && e.tagName === "OPTION", ye = (e) => e.nodeType === 1 && e.tagName === "TEXTAREA", ve = (e) => e.nodeType === 1 && ["radio", "checkbox"].includes(e.type), ke = (e) => {
|
|
14
11
|
let t = "et";
|
|
15
12
|
return T(e) ? t = "c" : E(e, "fragment") ? t = "f" : E(e, "element") ? t = "e" : E(e, "loop") ? t = "l" : E(e, "text") ? t = "t" : H(e) && (t = "et"), t;
|
|
16
13
|
}, Ce = {
|
|
@@ -29,7 +26,7 @@ const C = (e) => typeof e == "object" && !("resolve" in e), E = (e, t) => C(e) &
|
|
|
29
26
|
e && t !== e && (e.splice(0, e.length), t && t.forEach((s) => e.push(s)));
|
|
30
27
|
};
|
|
31
28
|
let x = [], A = !1;
|
|
32
|
-
const
|
|
29
|
+
const y = { value: "" }, a = { value: {} }, O = { value: !1 }, u = /* @__PURE__ */ new WeakMap(), xe = (e) => () => {
|
|
33
30
|
var c;
|
|
34
31
|
const t = (c = u.get(e)) == null ? void 0 : c.up;
|
|
35
32
|
let s = !1;
|
|
@@ -222,7 +219,7 @@ const B = () => {
|
|
|
222
219
|
n,
|
|
223
220
|
r,
|
|
224
221
|
c[n]
|
|
225
|
-
) :
|
|
222
|
+
) : ve(t) && n === "checked" ? t.checked = !!r : ye(t) && n === "value" ? t.value = r : ie(t) && n === "selected" ? t.selected = !!r : n && ([o, r] = qe(r), o && (y.value && n !== "xmlns" ? t.setAttributeNS(
|
|
226
223
|
null,
|
|
227
224
|
G(n),
|
|
228
225
|
r
|
|
@@ -239,7 +236,7 @@ const B = () => {
|
|
|
239
236
|
}, N = (e) => {
|
|
240
237
|
let t;
|
|
241
238
|
const { type: s, tag: c, text: n, props: r, children: o = [] } = e, l = P(s);
|
|
242
|
-
return c === "svg" && (
|
|
239
|
+
return c === "svg" && (y.value = String(r == null ? void 0 : r.xmlns)), l ? t = new DocumentFragment() : s === "element" && c ? t = y.value ? document.createElementNS(y.value, c) : document.createElement(c) : s === "text" && v(n) ? t = document.createTextNode(String(n)) : t = document.createElement("e"), _e(o, t), se(r, t), e.el = t, Ue(e), c === "svg" && (y.value = ""), t;
|
|
243
240
|
}, _e = (e, t) => {
|
|
244
241
|
const s = e.reduce(
|
|
245
242
|
(c, n) => (n.type && c.appendChild(N(n)), c),
|
|
@@ -273,12 +270,12 @@ const B = () => {
|
|
|
273
270
|
}, $e = (e, t, s) => {
|
|
274
271
|
s !== "A" && t && (e.el = t.el), s && ["D", "R", "SR"].includes(s) && (t != null && t.compKey && (Q(t), j(t)), e.oldChildren = t == null ? void 0 : t.children), e.oldProps = t == null ? void 0 : t.props;
|
|
275
272
|
}, He = (e, t, s) => {
|
|
276
|
-
const c = s && s.type, n = H(e), o = !!e.getParent && p(e).type, l = i(e), h = o === "loop" &&
|
|
273
|
+
const c = s && s.type, n = H(e), o = !!e.getParent && p(e).type, l = i(e), h = o === "loop" && v(l), d = e.type === "text" && t && e.text === (s == null ? void 0 : s.text);
|
|
277
274
|
let f;
|
|
278
275
|
return n ? f = "D" : d ? f = "N" : c ? t ? f = h ? "SU" : "U" : f = h ? "SR" : "R" : f = "A", f;
|
|
279
276
|
}, Je = (e, t, s) => T(e) ? t && s ? ae(s, e) : e.resolve() : e, Ye = (e, t, s) => t && s ? Ve(e, s) : Ze(e), Ze = (e) => (e.children || []).map(
|
|
280
277
|
(t) => S(F(t), { getParent: () => e })
|
|
281
|
-
), Ve = (e, t) => e.type === "loop" &&
|
|
278
|
+
), Ve = (e, t) => e.type === "loop" && v(i((e.children || [])[0])) ? Ke(e, t) : (e.children || []).map(
|
|
282
279
|
(s, c) => S(F(s, (t.children || [])[c]), {
|
|
283
280
|
getParent: () => e
|
|
284
281
|
})
|
package/dist/lithent.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lithent.mjs","sources":["../src/utils/predicator.ts","../src/utils/index.ts","../src/utils/universalRef.ts","../src/hook/unmount.ts","../src/hook/mountCallback.ts","../src/hook/useUpdate.ts","../src/render.ts","../src/diff.ts","../src/hook/updateCallback.ts","../src/wDom.ts","../src/hook/ref.ts"],"sourcesContent":["import { Fragment } from '@/wDom';\nimport {\n WDom,\n TagFunction,\n TagFunctionResolver,\n FragmentFunction,\n WDomType,\n} from '@/types';\n\ntype WDomParam =\n | string\n | WDom\n | TagFunction\n | TagFunctionResolver\n | FragmentFunction;\n\n/**\n * Predicator\n */\n\nconst checkPlainWDomType = (wDom: WDomParam): wDom is WDom =>\n typeof wDom === 'object' && !('resolve' in wDom);\n\nconst checkPlainType = (wDom: WDomParam, typeName: string) =>\n checkPlainWDomType(wDom) && wDom.type === typeName;\n\nconst checkSameCustomComponent = (\n newWDom: WDom | TagFunction | TagFunctionResolver,\n originalWDom?: WDom\n) =>\n 'ctor' in newWDom\n ? newWDom.ctor === originalWDom?.ctor\n : newWDom === originalWDom?.ctor;\n\nconst checkSameFragment = (\n newWDom: WDom | TagFunction | TagFunctionResolver,\n originalWDom?: WDom\n) =>\n checkPlainWDomType(newWDom) &&\n originalWDom?.type === 'fragment' &&\n originalWDom?.children?.length === newWDom?.children?.length;\n\nconst checkSameTagElement = (\n newWDom: WDom | TagFunction | TagFunctionResolver,\n originalWDom?: WDom\n) =>\n checkPlainWDomType(newWDom) &&\n originalWDom?.type === 'element' &&\n originalWDom?.tag === newWDom.tag &&\n originalWDom?.children?.length === newWDom?.children?.length;\n\nconst checkNormalTypeElement = (\n newWDom: WDom | TagFunction | TagFunctionResolver,\n originalWDom?: WDom\n) =>\n checkPlainWDomType(newWDom) &&\n originalWDom?.type === newWDom.type &&\n (originalWDom?.children?.length === newWDom?.children?.length ||\n (newWDom.type === 'loop' &&\n checkExisty(getKey((newWDom.children || [])[0])) &&\n checkExisty(getKey((originalWDom.children || [])[0]))));\n\nexport const getKey = (target: WDom) =>\n target?.compProps?.key ?? target?.props?.key;\n\nexport const checkVirtualType = (type: string | null) =>\n type && ['fragment', 'loop'].includes(type);\n\nexport const checkCustemComponentFunction = (\n target: WDomParam\n): target is TagFunction | TagFunctionResolver =>\n (typeof target === 'function' && !checkFragmentFunction(target)) ||\n (typeof target === 'object' && 'resolve' in target);\n\nexport const checkFragmentFunction = (\n target: unknown\n): target is FragmentFunction =>\n typeof target === 'function' && target === Fragment;\n\nexport const checkEmptyElement = (wDom: WDomParam) =>\n checkPlainWDomType(wDom) && !wDom.type;\n\nexport const checkExisty = (value: unknown) =>\n value !== null && value !== undefined;\n\nexport const checkStyleData = (\n dataKey: string,\n dataValue: unknown\n): dataValue is Record<string, string> =>\n dataKey === 'style' && typeof dataValue === 'object';\n\nexport const checkRefData = (\n dataKey: string,\n dataValue: unknown\n): dataValue is {\n value: HTMLElement | Element | DocumentFragment | Text | undefined;\n} => dataKey === 'ref' && typeof dataValue === 'object';\n\nexport const checkOptionElement = (element: any): element is HTMLElement =>\n element.nodeType === 1 && element.tagName === 'OPTION';\n\nexport const checkTextareaElement = (element: any): element is HTMLElement =>\n element.nodeType === 1 && element.tagName === 'TEXTAREA';\n\nexport const checkCheckableElement = (element: any): element is HTMLElement =>\n element.nodeType === 1 && ['radio', 'checkbox'].includes(element.type);\n\nexport const getWDomType = (\n wDom: WDom | TagFunction | TagFunctionResolver\n): WDomType => {\n let result: WDomType = 'et';\n\n if (checkCustemComponentFunction(wDom)) {\n result = 'c';\n } else if (checkPlainType(wDom, 'fragment')) {\n result = 'f';\n } else if (checkPlainType(wDom, 'element')) {\n result = 'e';\n } else if (checkPlainType(wDom, 'loop')) {\n result = 'l';\n } else if (checkPlainType(wDom, 'text')) {\n result = 't';\n } else if (checkEmptyElement(wDom)) {\n result = 'et';\n }\n\n return result;\n};\n\nexport const checkSameWDomWithOriginal = {\n c: checkSameCustomComponent,\n l: checkNormalTypeElement,\n t: checkNormalTypeElement,\n e: checkSameTagElement,\n f: checkSameFragment,\n et: checkNormalTypeElement,\n};\n","import { WDom, TagFunctionResolver, Props } from '@/types';\n\nexport const getParent = (vDom: WDom) => {\n const parentVDom = vDom.getParent && vDom.getParent();\n\n return parentVDom as WDom;\n};\n\nexport const reRender = (vDom: WDom, infoVdom: TagFunctionResolver) => {\n const { compProps: props, compChild: children } = vDom;\n const { props: infoProps, children: infoChidren } = infoVdom;\n\n if (props) {\n updateProps(props, infoProps);\n }\n\n if (children) {\n updateChildren(children, infoChidren);\n }\n\n const newVDom = vDom.reRender && vDom.reRender();\n\n return newVDom as WDom;\n};\n\nexport const getEventName = (eventKey: string) =>\n eventKey.replace(/^on(.*)/, (_match, p1) => p1.toLowerCase());\n\nexport const getAttrKey = (keyName: string) =>\n keyName === 'className' ? 'class' : keyName;\n\nexport const entries = Object.entries;\nexport const keys = Object.keys;\nexport const assign = Object.assign;\n\nconst updateProps = (props: Props, infoProps: Props) => {\n if (props && infoProps !== props) {\n keys(props).forEach(key => delete props[key]);\n\n entries(infoProps || {}).forEach(([key, value]) => (props[key] = value));\n }\n};\n\nconst updateChildren = (children: WDom[], infoChidren: WDom[]) => {\n if (children && infoChidren !== children) {\n children.splice(0, children.length);\n\n if (infoChidren) {\n infoChidren.forEach(childrenItem => children.push(childrenItem));\n }\n }\n};\n","import { ComponentRef, ComponentSubKey, Props, WDom } from '@/types';\n\ntype RedrawQueueList = {\n compKey: Props;\n exec: () => void;\n}[];\n\nlet redrawQueue: { compKey: Props; exec: () => void }[] = [];\nlet redrawQueueTimeout: boolean = false;\n\n/**\n * Common\n */\nexport const xmlnsRef: { value: string } = { value: '' };\nexport const compKeyRef: { value: Props } = { value: {} };\nexport const needDiffRef: { value: boolean } = { value: false };\nexport const componentRef: ComponentRef = new WeakMap();\n\nexport const componentRender = (compKey: Props) => () => {\n const up = componentRef.get(compKey)?.up;\n let result = false;\n if (up) {\n up();\n result = true;\n }\n\n return result;\n};\n\nconst setComponetRef = (compKey: Props) => {\n componentRef.set(compKey, {\n vd: { value: null },\n up: () => {},\n upR: [],\n upS: { value: 0 },\n upD: [],\n upCB: [],\n mts: [],\n umts: [],\n });\n};\n\nexport const getComponentKey = () => compKeyRef.value;\n\nexport const getComponentSubInfo = (compKey: Props, subKey: ComponentSubKey) =>\n componentRef.get(compKey)![subKey];\n\nexport const setRedrawAction = (compKey: Props, exec: () => void) => {\n componentRef.get(compKey)!.up = () => {\n redrawQueue.push({\n compKey,\n exec,\n });\n\n if (!redrawQueueTimeout) {\n redrawQueueTimeout = true;\n queueMicrotask(execRedrawQueue);\n }\n };\n};\n\nexport const initUpdateHookState = (compKey: Props) =>\n (compKeyRef.value = compKey);\n\nexport const initMountHookState = (compKey: Props) => {\n compKeyRef.value = compKey;\n setComponetRef(compKey);\n};\n\nconst recursiveGetChildKeys = (wDom: WDom, result: Props[]) => {\n (wDom.children || []).forEach(item => {\n const childComKey = item.compKey;\n if (childComKey) {\n result.push(childComKey);\n }\n\n recursiveGetChildKeys(item, result);\n });\n};\n\nconst execRedrawQueue = () => {\n let childItemList: Props[] = [];\n\n redrawQueue.forEach(item => {\n const childVd = componentRef.get(item.compKey)?.vd?.value;\n if (childVd) {\n recursiveGetChildKeys(childVd, childItemList);\n }\n });\n\n const addedKey: Props[] = [];\n const result = redrawQueue.reduce((acc, item) => {\n const { compKey } = item;\n\n if (childItemList.includes(compKey) || addedKey.includes(compKey)) {\n return acc;\n }\n\n addedKey.push(compKey);\n acc.push(item);\n\n return acc;\n }, [] as RedrawQueueList);\n\n while (result.length) {\n const action = result.shift();\n if (action) {\n action.exec();\n }\n }\n\n redrawQueue = [];\n redrawQueueTimeout = false;\n};\n","import { WDom, Props } from '@/types';\nimport { componentRef, getComponentKey } from '@/utils/universalRef';\n\nexport const unmount = (effectAction: () => void) => {\n componentRef.get(getComponentKey())!.umts.push(effectAction);\n};\n\nexport const runUnmountQueueFromWDom = (newWDom: WDom) => {\n const { compKey } = newWDom;\n\n if (compKey) {\n removeItem(compKey);\n }\n recursiveRunUnmount(newWDom);\n};\n\nconst recursiveRunUnmount = (wDom: WDom) => {\n (wDom.children || []).forEach(item => {\n const childComKey = item.compKey;\n if (childComKey) {\n runUnmountQueueFromWDom(item);\n } else {\n recursiveRunUnmount(item);\n }\n });\n};\n\nconst removeItem = (compKey: Props) => {\n const subInfo = componentRef.get(compKey);\n if (subInfo) {\n subInfo!.umts.forEach(effect => effect());\n subInfo!.umts = [];\n componentRef.delete(compKey);\n }\n};\n","import { WDom } from '@/types';\nimport {\n compKeyRef,\n componentRef,\n getComponentKey,\n} from '@/utils/universalRef';\nimport { unmount } from '@/hook/unmount';\n\nlet mountedQueue: WDom[] = [];\n\nexport const execMountedQueue = () => {\n mountedQueue.forEach(item => runMountedQueueFromWDom(item));\n mountedQueue = [];\n};\nexport const addMountedQueue = (wDom: WDom) => {\n if (wDom.compKey) {\n mountedQueue.push(wDom);\n }\n};\nexport const mountCallback = (effectAction: () => void) =>\n componentRef.get(getComponentKey())!.mts.push(effectAction);\n\nexport const runMountedQueueFromWDom = (newWDom: WDom) => {\n const { compKey } = newWDom;\n\n if (compKey) {\n const component = componentRef.get(compKey);\n const queue = component?.mts;\n const sequence = component?.upS;\n\n compKeyRef.value = compKey;\n\n if (sequence) {\n sequence.value = 0;\n }\n\n if (queue) {\n component.mts = [];\n\n queue.forEach((effect: Function) => {\n const callback = effect();\n if (callback) {\n unmount(callback);\n }\n });\n }\n }\n};\n","import { WDom } from '@/types';\nimport {\n compKeyRef,\n componentRef,\n getComponentKey,\n} from '@/utils/universalRef';\n\nexport const useUpdated = (\n effectAction: () => (() => void) | void,\n dependencies: () => any[] = () => []\n) => {\n const component = componentRef.get(getComponentKey());\n const { upD, upS } = component!;\n const def = upD[upS.value];\n\n if (def && checkNeedPushQueue(def, dependencies())) {\n const callback = effectAction();\n if (callback) {\n component!.upCB.push(callback);\n }\n }\n\n upD[upS.value] = dependencies();\n upS.value += 1;\n};\n\nexport const runUpdatedQueueFromWDom = (newWDom: WDom) => {\n const { compKey } = newWDom;\n\n if (compKey) {\n const component = componentRef.get(compKey);\n const queue = component?.upCB;\n const sequence = component?.upS;\n\n compKeyRef.value = compKey;\n\n if (sequence) {\n sequence.value = 0;\n }\n\n if (newWDom.ctor && queue) {\n component.upCB = [];\n queue.forEach((effect: Function) => effect());\n }\n }\n};\n\nconst checkNeedPushQueue = (originalDefs: unknown[], newDefs: unknown[]) =>\n !originalDefs.length && !originalDefs.length\n ? true\n : originalDefs.some((def, index) => def !== newDefs[index]);\n","import { WDom, Props } from '@/types';\nimport {\n checkStyleData,\n checkRefData,\n checkExisty,\n checkOptionElement,\n checkTextareaElement,\n checkCheckableElement,\n checkVirtualType,\n} from '@/utils/predicator';\n\nimport { componentRef, xmlnsRef } from '@/utils/universalRef';\nimport { runUnmountQueueFromWDom } from '@/hook/unmount';\nimport { execMountedQueue, addMountedQueue } from '@/hook/mountCallback';\nimport { runUpdatedQueueFromWDom } from '@/hook/useUpdate';\nimport { getParent, getEventName, getAttrKey, entries, keys } from '@/utils';\n\nexport const render = (\n wDom: WDom,\n wrapElement: HTMLElement | null,\n afterElement?: HTMLElement | null\n) => {\n wrapElement ??= document.body;\n wDom.isRoot = true;\n wDom.wrapElement = wrapElement;\n\n const Dom = wDomToDom(wDom);\n\n if (afterElement) {\n wDom.afterElement = afterElement;\n wrapElement.insertBefore(Dom, afterElement);\n } else {\n wrapElement.appendChild(Dom);\n }\n\n execMountedQueue();\n\n return () => {\n const component = componentRef.get(wDom.compProps || {})?.vd.value;\n if (component) {\n runUnmountQueueFromWDom(component);\n recursiveRemoveEvent(component);\n rootDelete(component);\n }\n };\n};\n\nexport const wDomUpdate = (newWDomTree: WDom) => {\n const { needRerender } = newWDomTree;\n\n if (needRerender && needRerender !== 'N') {\n ({\n A: typeAdd,\n D: typeDelete,\n R: typeReplace,\n U: typeUpdate,\n SR: typeSortedReplace,\n SU: typeSortedUpdate,\n })[needRerender](newWDomTree);\n }\n};\n\nexport const recursiveRemoveEvent = (originalWDom: WDom) => {\n if (originalWDom.props && originalWDom.el) {\n removeEvent(originalWDom.props, originalWDom.el);\n }\n\n (originalWDom.children || []).forEach((childItem: WDom) => {\n recursiveRemoveEvent(childItem);\n });\n};\n\nconst rootDelete = (newWDom: WDom) => {\n deleteRealDom(newWDom, newWDom.wrapElement as HTMLElement);\n};\n\nconst typeDelete = (newWDom: WDom) => {\n if (newWDom.oldProps && newWDom.el) {\n removeEvent(newWDom.oldProps, newWDom.el);\n }\n\n deleteRealDom(\n newWDom,\n findRealParentElement(getParent(newWDom)) as HTMLElement\n );\n};\n\nconst deleteRealDom = (newWDom: WDom, parent: HTMLElement) => {\n if (parent && newWDom.el) {\n if (newWDom.el?.nodeType === 1) {\n parent.removeChild(newWDom.el);\n } else if (newWDom.el?.nodeType === 11) {\n findChildWithRemoveElement(newWDom, parent as HTMLElement);\n }\n delete newWDom.el;\n }\n};\n\nconst findChildWithRemoveElement = (newWDom: WDom, parent: HTMLElement) => {\n (newWDom?.oldChildren || newWDom?.children || []).forEach(item => {\n if (item.el?.nodeType === 1) {\n parent.removeChild(item?.el);\n } else if (item.el?.nodeType === 11) {\n findChildWithRemoveElement(item, parent);\n }\n });\n};\n\nconst typeSortedReplace = (newWDom: WDom) => {\n typeDelete(newWDom);\n typeAdd(newWDom);\n};\n\nconst typeSortedUpdate = (newWDom: WDom) => {\n typeDelete(newWDom);\n typeAdd(newWDom, newWDom.el);\n};\n\nconst typeAdd = (\n newWDom: WDom,\n newElement?: HTMLElement | DocumentFragment | Text\n) => {\n if (!newElement) {\n newElement = wDomToDom(newWDom) as HTMLElement;\n }\n\n const parentWDom = getParent(newWDom);\n if (parentWDom.type) {\n const parentEl = findRealParentElement(parentWDom);\n const isLoop = parentWDom.type === 'loop';\n const nextEl = isLoop\n ? startFindNextBrotherElement(parentWDom, getParent(parentWDom))\n : startFindNextBrotherElement(newWDom, parentWDom);\n\n if (newElement && parentEl) {\n if (nextEl) {\n parentEl.insertBefore(newElement, nextEl);\n } else {\n parentEl.appendChild(newElement);\n }\n\n execMountedQueue();\n }\n }\n};\n\nconst startFindNextBrotherElement = (\n wDom: WDom,\n parentWDom: WDom\n): HTMLElement | DocumentFragment | Text | undefined => {\n const brothers = parentWDom.children || [];\n const index = brothers.indexOf(wDom);\n const nextIndex = index + 1;\n const candidiateBrothers = brothers.slice(nextIndex);\n\n const finedNextEl = findChildFragmentNextElement(candidiateBrothers);\n const parentType = parentWDom.type || '';\n\n if (finedNextEl) {\n return finedNextEl;\n }\n\n if (!parentWDom.isRoot && checkVirtualType(parentType)) {\n return startFindNextBrotherElement(parentWDom, getParent(parentWDom));\n } else if (parentWDom.isRoot && parentWDom.afterElement) {\n return parentWDom.afterElement;\n }\n\n return undefined;\n};\n\nconst findChildFragmentNextElement = (\n candidiateBrothers: WDom[]\n): HTMLElement | DocumentFragment | Text | undefined =>\n candidiateBrothers.reduce(\n (\n targetEl: HTMLElement | DocumentFragment | Text | undefined,\n bItem: WDom\n ) => {\n const type = bItem.type;\n const el = bItem.el;\n const isFragment = type && checkVirtualType(type);\n\n if (targetEl) {\n return targetEl;\n } else if (isFragment) {\n return findChildFragmentNextElement(bItem.children || []);\n } else if (el && el.nodeType !== 11) {\n return el;\n }\n\n return targetEl;\n },\n undefined\n );\n\nconst typeReplace = (newWDom: WDom) => {\n const parentWDom = getParent(newWDom);\n const orignalElement = newWDom.el;\n\n if (parentWDom.type && orignalElement) {\n if (orignalElement.nodeType === 11) {\n typeSortedReplace(newWDom);\n } else {\n const parentElement = findRealParentElement(parentWDom);\n const newElement = wDomToDom(newWDom);\n\n if (parentElement) {\n parentElement.replaceChild(newElement, orignalElement);\n }\n execMountedQueue();\n }\n }\n};\n\nconst removeEvent = (\n oldProps: Props,\n element: HTMLElement | DocumentFragment | Text\n) => {\n entries(oldProps || {}).forEach(([dataKey, dataValue]: [string, unknown]) => {\n if (dataKey.match(/^on/)) {\n element.removeEventListener(\n getEventName(dataKey),\n dataValue as (e: Event) => void\n );\n }\n });\n};\n\nconst typeUpdate = (newWDom: WDom) => {\n const element = newWDom.el;\n\n if (newWDom.type === 'text') {\n updateText(newWDom);\n\n return;\n }\n\n if (element) {\n const { oldProps, props } = newWDom;\n\n updateProps(props, element, oldProps);\n\n delete newWDom.oldProps;\n\n if (newWDom.tag === 'input') {\n (element as HTMLInputElement).value = String(newWDom?.props?.value || '');\n }\n }\n\n (newWDom.children || []).forEach((childItem: WDom) => wDomUpdate(childItem));\n\n runUpdatedQueueFromWDom(newWDom);\n};\n\nconst updateText = (newWDom: WDom) => {\n const element = newWDom.el;\n\n if (element) {\n element.nodeValue = String(newWDom.text);\n }\n};\n\nconst updateProps = (\n props?: Props,\n element?: HTMLElement | Element | DocumentFragment | Text,\n oldProps?: Props\n) => {\n const originalProps = { ...oldProps };\n\n entries(props || {}).forEach(([dataKey, dataValue]: [string, unknown]) => {\n let chkRemoveProp = true;\n if (dataKey === 'key') {\n // Do nothing\n } else if (dataKey === 'innerHTML' && typeof dataValue === 'string') {\n (element as HTMLElement).innerHTML = dataValue;\n } else if (checkStyleData(dataKey, dataValue)) {\n updateStyle(\n dataValue,\n checkStyleData(dataKey, originalProps.style) ? originalProps.style : {},\n element\n );\n } else if (checkRefData(dataKey, dataValue)) {\n dataValue.value = element;\n } else if (dataKey.match(/^on/)) {\n updateEvent(\n element as HTMLElement,\n dataKey,\n dataValue as (e: Event) => void,\n originalProps[dataKey] as (e: Event) => void\n );\n } else if (checkCheckableElement(element) && dataKey === 'checked') {\n (element as HTMLInputElement).checked = !!dataValue;\n } else if (checkTextareaElement(element) && dataKey === 'value') {\n (element as HTMLInputElement).value = dataValue as string;\n } else if (checkOptionElement(element) && dataKey === 'selected') {\n (element as HTMLOptionElement).selected = !!dataValue;\n } else if (dataKey) {\n [chkRemoveProp, dataValue] = makeAttrDataValue(dataValue);\n\n if (chkRemoveProp) {\n if (xmlnsRef.value && dataKey !== 'xmlns') {\n (element as HTMLElement).setAttributeNS(\n null,\n getAttrKey(dataKey),\n <string>dataValue\n );\n } else {\n (element as HTMLElement).setAttribute(\n getAttrKey(dataKey),\n <string>dataValue\n );\n }\n }\n }\n\n if (chkRemoveProp) {\n delete originalProps[dataKey];\n }\n });\n\n keys(originalProps).forEach(dataKey =>\n (element as HTMLElement).removeAttribute(dataKey)\n );\n};\n\nconst makeAttrDataValue = (dataValue: unknown): [boolean, string] => {\n let allowSetAttr = true;\n if (typeof dataValue === 'boolean') {\n if (!dataValue) {\n allowSetAttr = false;\n }\n\n dataValue = '';\n }\n\n return [allowSetAttr, String(dataValue)];\n};\n\nconst wDomToDom = (wDom: WDom) => {\n let element;\n const { type, tag, text, props, children = [] } = wDom;\n const isVirtualType = checkVirtualType(type);\n\n if (tag === 'svg') {\n xmlnsRef.value = String(props?.xmlns);\n }\n\n if (isVirtualType) {\n element = new DocumentFragment();\n } else if (type === 'element' && tag) {\n element = xmlnsRef.value\n ? document.createElementNS(xmlnsRef.value, tag)\n : document.createElement(tag);\n } else if (type === 'text' && checkExisty(text)) {\n element = document.createTextNode(String(text));\n } else {\n element = document.createElement('e');\n }\n\n wDomChildrenToDom(children, element);\n updateProps(props, element);\n\n wDom.el = element as HTMLElement;\n\n addMountedQueue(wDom);\n\n if (tag === 'svg') {\n xmlnsRef.value = '';\n }\n\n return element;\n};\n\nconst wDomChildrenToDom = (\n children: WDom[],\n parentElement?: HTMLElement | Element | DocumentFragment | Text\n) => {\n const elementChildren = children.reduce(\n (acc: DocumentFragment, childItem: WDom) => {\n if (childItem.type) {\n acc.appendChild(wDomToDom(childItem));\n }\n\n return acc;\n },\n new DocumentFragment()\n );\n\n if (parentElement && elementChildren.hasChildNodes()) {\n parentElement.appendChild(elementChildren);\n }\n};\n\nconst updateEvent = (\n element: HTMLElement,\n eventKey: string,\n newEventHandler: (e: Event) => void,\n oldEventHandler: (e: Event) => void\n) => {\n const eventName = getEventName(eventKey);\n\n if (oldEventHandler !== newEventHandler) {\n if (oldEventHandler) {\n element.removeEventListener(eventName, oldEventHandler);\n }\n\n if (newEventHandler) {\n element.addEventListener(eventName, newEventHandler);\n }\n }\n};\n\nconst updateStyle = (\n style: Record<string, string>,\n oldStyle: Record<string, string>,\n element?: HTMLElement | Element | DocumentFragment | Text\n) => {\n const originalStyle = { ...oldStyle };\n const elementStyle = (element as HTMLElement)?.style;\n\n if (elementStyle) {\n entries(style).forEach(([styleKey, dataValue]) => {\n (elementStyle as any)[styleKey] = dataValue;\n delete originalStyle[styleKey];\n });\n\n entries(originalStyle).forEach(\n ([styleKey]) => ((elementStyle as any)[styleKey] = '')\n );\n }\n};\n\nconst findRealParentElement = (\n vDom: WDom\n): HTMLElement | DocumentFragment | Text | undefined => {\n const isVirtualType = checkVirtualType(vDom.type);\n if (vDom.isRoot && isVirtualType) {\n return vDom.wrapElement;\n }\n\n if (!isVirtualType) {\n return vDom.el as HTMLElement;\n }\n\n return findRealParentElement(getParent(vDom));\n};\n","import { WDom, TagFunctionResolver, RenderType } from '@/types';\nimport { checkCustemComponentFunction, getKey } from '@/utils/predicator';\nimport { getParent, reRender } from '@/utils';\nimport { recursiveRemoveEvent } from '@/render';\nimport {\n checkEmptyElement,\n checkSameWDomWithOriginal,\n getWDomType,\n checkExisty,\n} from '@/utils/predicator';\n\nimport { runUnmountQueueFromWDom } from '@/hook/unmount';\nimport { assign } from '@/utils';\n\nexport const makeNewWDomTree = (\n newWDom: WDom | TagFunctionResolver,\n originalWDom?: WDom\n) =>\n remakeNewWDom(\n newWDom,\n checkSameWDomWithOriginal[getWDomType(newWDom)](newWDom, originalWDom),\n originalWDom\n );\n\nconst remakeNewWDom = (\n newWDom: WDom | TagFunctionResolver,\n isSameType: boolean,\n originalWDom?: WDom\n) => {\n const remakeWDom = generalize(newWDom, isSameType, originalWDom);\n const param: [newWDom: WDom, isSameType: boolean, originalWDom?: WDom] = [\n remakeWDom,\n isSameType,\n originalWDom,\n ];\n const needRerender = addReRenderTypeProperty(...param);\n\n remakeWDom.children = remakeChildrenForDiff(...param);\n remakeWDom.needRerender = needRerender;\n\n inheritPropForRender(remakeWDom, originalWDom, needRerender);\n\n return remakeWDom;\n};\n\nconst inheritPropForRender = (\n remakeWDom: WDom,\n originalWDom?: WDom,\n needRerender?: RenderType\n) => {\n if (needRerender !== 'A' && originalWDom) {\n remakeWDom.el = originalWDom.el;\n }\n\n if (needRerender && ['D', 'R', 'SR'].includes(needRerender)) {\n if (originalWDom?.compKey) {\n runUnmountQueueFromWDom(originalWDom);\n recursiveRemoveEvent(originalWDom);\n }\n remakeWDom.oldChildren = originalWDom?.children;\n }\n\n remakeWDom.oldProps = originalWDom?.props;\n};\n\nconst addReRenderTypeProperty = (\n newWDom: WDom,\n isSameType: boolean,\n originalWDom?: WDom\n): RenderType | undefined => {\n const existOriginalWDom = originalWDom && originalWDom.type;\n const isEmptyElement = checkEmptyElement(newWDom);\n const isRoot = !newWDom.getParent;\n const parentType = !isRoot && getParent(newWDom).type;\n const key = getKey(newWDom);\n const isKeyCheckedWDom = parentType === 'loop' && checkExisty(key);\n const isSameText =\n newWDom.type === 'text' &&\n isSameType &&\n newWDom.text === originalWDom?.text;\n\n let result: RenderType | undefined;\n if (isEmptyElement) {\n result = 'D';\n } else if (isSameText) {\n result = 'N';\n } else if (!existOriginalWDom) {\n result = 'A';\n } else if (isSameType) {\n result = isKeyCheckedWDom ? 'SU' : 'U';\n } else {\n result = isKeyCheckedWDom ? 'SR' : 'R';\n }\n\n return result;\n};\n\nconst generalize = (\n newWDom: WDom | TagFunctionResolver,\n isSameType: boolean,\n originalWDom?: WDom\n): WDom => {\n if (checkCustemComponentFunction(newWDom)) {\n return isSameType && originalWDom\n ? reRender(originalWDom, newWDom)\n : newWDom.resolve();\n }\n\n return newWDom;\n};\n\nconst remakeChildrenForDiff = (\n newWDom: WDom,\n isSameType: boolean,\n originalWDom?: WDom\n) =>\n isSameType && originalWDom\n ? remakeChildrenForUpdate(newWDom, originalWDom)\n : remakeChildrenForAdd(newWDom);\n\nconst remakeChildrenForAdd = (newWDom: WDom) =>\n (newWDom.children || []).map((item: WDom) =>\n assign(makeNewWDomTree(item), { getParent: () => newWDom })\n );\n\nconst remakeChildrenForUpdate = (newWDom: WDom, originalWDom: WDom) =>\n newWDom.type === 'loop' && checkExisty(getKey((newWDom.children || [])[0]))\n ? remakeChildrenForLoopUpdate(newWDom, originalWDom)\n : (newWDom.children || []).map((item: WDom, index: number) =>\n assign(makeNewWDomTree(item, (originalWDom.children || [])[index]), {\n getParent: () => newWDom,\n })\n );\n\nconst remakeChildrenForLoopUpdate = (newWDom: WDom, originalWDom: WDom) => {\n const [remakedChildren, unUsedChildren] = diffLoopChildren(\n newWDom,\n originalWDom\n );\n\n unUsedChildren.map(unusedItem => {\n const el = unusedItem.el;\n\n if (el?.parentNode) {\n el.parentNode.removeChild(el);\n }\n });\n\n return remakedChildren;\n};\n\nconst diffLoopChildren = (newWDom: WDom, originalWDom: WDom) => {\n const newChildren = [...(newWDom.children || [])];\n const originalChildren = [...(originalWDom.children || [])];\n const remakedChildren = newChildren.map(item => {\n const originalItem = findSameKeyOriginalItem(item, originalChildren);\n const childItem = makeNewWDomTree(item, originalItem);\n\n if (originalItem) {\n originalChildren.splice(originalChildren.indexOf(originalItem), 1);\n }\n\n childItem.getParent = () => newWDom;\n\n return childItem;\n });\n\n return [remakedChildren, originalChildren];\n};\n\nconst findSameKeyOriginalItem = (item: WDom, originalChildren: WDom[]) =>\n originalChildren.find(\n orignalChildItem => getKey(orignalChildItem) === getKey(item)\n );\n","import { componentRef, getComponentKey } from '@/utils/universalRef';\n\nimport { useUpdated } from '@/hook/useUpdate';\n\nexport const updateCallback = (\n effectAction: () => (() => void) | void,\n dependencies: () => any[] = () => []\n) => {\n const updateReqs = componentRef.get(getComponentKey())!.upR;\n\n updateReqs.push(() => useUpdated(effectAction, dependencies));\n useUpdated(effectAction, dependencies);\n};\n\nexport const runUpdateCallback = () => {\n const updateReqs = componentRef.get(getComponentKey())?.upR;\n\n if (updateReqs?.length) {\n updateReqs.forEach(callback => callback());\n }\n};\n","import {\n WDom,\n TagFunction,\n FragmentFunction,\n Props,\n MiddleStateWDomChildren,\n MiddleStateWDom,\n NodePointer,\n Component,\n} from '@/types';\n\nimport { makeNewWDomTree } from '@/diff';\nimport { wDomUpdate } from '@/render';\nimport {\n initUpdateHookState,\n initMountHookState,\n setRedrawAction,\n needDiffRef,\n componentRender,\n getComponentSubInfo,\n} from '@/utils/universalRef';\nimport { runUpdateCallback } from '@/hook/updateCallback';\nimport {\n checkFragmentFunction,\n checkCustemComponentFunction,\n} from '@/utils/predicator';\nimport { assign } from '@/utils';\n\nexport const Fragment = (_props: Props, ...children: WDom[]) => ({\n type: 'fragment',\n children,\n});\n\nexport const h = (\n tag: TagFunction | FragmentFunction | string,\n props: Props,\n ...children: MiddleStateWDomChildren\n) => {\n const nodeParentPointer: NodePointer = { value: undefined };\n const newProps = props || {};\n const newChildren = remakeChildren(nodeParentPointer, children);\n const node = makeNode(tag, newProps, newChildren);\n\n if (!checkCustemComponentFunction(node)) {\n nodeParentPointer.value = node;\n }\n\n return node;\n};\n\nexport const mount =\n <T>(component: Component<T>) =>\n (_props: T, _children: WDom[]) =>\n component;\n\nconst reRenderCustomComponent = (\n tag: TagFunction,\n props: Props,\n children: WDom[],\n originalWDom: WDom\n) => {\n needDiffRef.value = true;\n\n const newWDom = makeWDomResolver(tag, props, children);\n const newWDomTree = makeNewWDomTree(newWDom, originalWDom);\n const { isRoot, getParent, wrapElement, afterElement } = originalWDom;\n\n newWDomTree.getParent = getParent;\n\n if (!isRoot && getParent) {\n const brothers = getParent()?.children || [];\n const index = brothers.indexOf(originalWDom);\n\n brothers.splice(index, 1, newWDomTree);\n } else {\n newWDomTree.isRoot = true;\n newWDomTree.wrapElement = wrapElement;\n newWDomTree.afterElement = afterElement;\n }\n\n needDiffRef.value = false;\n wDomUpdate(newWDomTree);\n};\n\nconst makeWDomResolver = (tag: TagFunction, props: Props, children: WDom[]) => {\n const tagName = tag.name;\n const ctor = tag;\n // 리졸브는 컴포넌트를 새로 만든다.\n const resolve = (compKey = props) => {\n initMountHookState(compKey);\n\n const component = tag(props, children);\n const componentMaker = component(componentRender(compKey), props, children);\n\n const customNode = makeCustomNode(\n componentMaker,\n compKey,\n tag,\n props,\n children\n );\n\n const originalWDom = customNode;\n\n setRedrawAction(compKey, () =>\n reRenderCustomComponent(tag, props, children, originalWDom)\n );\n\n (getComponentSubInfo(compKey, 'vd') as { value: WDom }).value = customNode;\n\n return customNode;\n };\n\n return { tagName, ctor, props, children, resolve };\n};\n\nconst makeCustomNode = (\n componentMaker: (props: Props) => WDom,\n compKey: Props,\n tag: TagFunction,\n props: Props,\n children: WDom[]\n) => {\n const customNode = componentMaker(props);\n if (customNode.reRender) {\n throw new Error(\n 'The root of a component must not be a component, use \"Fragment\"'\n );\n }\n\n addComponentProps(\n customNode,\n compKey,\n tag,\n props,\n children,\n makeReRender(componentMaker, compKey, tag, props, children)\n );\n\n return customNode;\n};\n\nconst makeReRender = (\n componentMaker: (props: Props) => WDom,\n compKey: Props,\n tag: TagFunction,\n props: Props,\n children: WDom[]\n) => {\n const reRender = () =>\n wDomMaker(componentMaker, compKey, tag, props, children, reRender);\n return reRender;\n};\n\nconst wDomMaker = (\n componentMaker: (props: Props) => WDom,\n compKey: Props,\n tag: TagFunction,\n props: Props,\n children: WDom[],\n reRender: () => WDom\n) => {\n initUpdateHookState(compKey);\n runUpdateCallback();\n\n const originalWDom = componentMaker(props);\n\n setRedrawAction(compKey, () =>\n reRenderCustomComponent(tag, props, children, originalWDom)\n );\n\n addComponentProps(originalWDom, compKey, tag, props, children, reRender);\n\n (getComponentSubInfo(compKey, 'vd') as { value: WDom }).value = originalWDom;\n\n return originalWDom;\n};\n\nconst addComponentProps = (\n wDom: WDom,\n compKey: Props,\n tag: TagFunction,\n props: Props,\n children: WDom[],\n reRender: () => WDom\n) => {\n assign(wDom, {\n compProps: props,\n compChild: children,\n ctor: tag,\n tagName: tag.name,\n compKey,\n reRender,\n });\n};\n\nconst makeNode = (\n tag: TagFunction | FragmentFunction | string,\n props: Props,\n children: WDom[]\n) => {\n if (checkFragmentFunction(tag)) {\n return Fragment(props, ...children);\n } else if (checkCustemComponentFunction(tag)) {\n const componetMakeResolver = makeWDomResolver(tag, props, children);\n\n return needDiffRef.value\n ? componetMakeResolver\n : componetMakeResolver.resolve();\n }\n\n return {\n type: 'element',\n tag,\n props,\n children,\n };\n};\n\nconst remakeChildren = (\n nodeParentPointer: NodePointer,\n children: MiddleStateWDomChildren\n): WDom[] =>\n children.map((item: MiddleStateWDom) =>\n assign(makeChildrenItem(item), { getParent: () => nodeParentPointer.value })\n );\n\nconst makeChildrenItem = (item: MiddleStateWDom): WDom => {\n if (item === null || item === undefined || item === false) {\n return { type: null };\n } else if (Array.isArray(item)) {\n const nodeParentPointer: NodePointer = { value: undefined };\n const children = remakeChildren(nodeParentPointer, item);\n const node = {\n type: 'loop',\n children,\n };\n nodeParentPointer.value = node;\n\n return node;\n } else if (typeof item === 'string' || typeof item === 'number') {\n return { type: 'text', text: item };\n }\n\n return item;\n};\n","export const ref = <T>(initValue: T) => ({ value: initValue });\nexport const nextTick = () => Promise.resolve();\n"],"names":["checkPlainWDomType","wDom","checkPlainType","typeName","checkSameCustomComponent","newWDom","originalWDom","checkSameFragment","_a","_b","checkSameTagElement","checkNormalTypeElement","checkExisty","getKey","target","checkVirtualType","type","checkCustemComponentFunction","checkFragmentFunction","Fragment","checkEmptyElement","value","checkStyleData","dataKey","dataValue","checkRefData","checkOptionElement","element","checkTextareaElement","checkCheckableElement","getWDomType","result","checkSameWDomWithOriginal","getParent","vDom","reRender","infoVdom","props","children","infoProps","infoChidren","updateProps","updateChildren","getEventName","eventKey","_match","p1","getAttrKey","keyName","entries","keys","assign","key","childrenItem","redrawQueue","redrawQueueTimeout","xmlnsRef","compKeyRef","needDiffRef","componentRef","componentRender","compKey","up","setComponetRef","getComponentKey","getComponentSubInfo","subKey","setRedrawAction","exec","execRedrawQueue","initUpdateHookState","initMountHookState","recursiveGetChildKeys","item","childComKey","childItemList","childVd","addedKey","acc","action","unmount","effectAction","runUnmountQueueFromWDom","removeItem","recursiveRunUnmount","subInfo","effect","mountedQueue","execMountedQueue","runMountedQueueFromWDom","addMountedQueue","mountCallback","component","queue","sequence","callback","useUpdated","dependencies","upD","upS","def","checkNeedPushQueue","runUpdatedQueueFromWDom","originalDefs","newDefs","index","render","wrapElement","afterElement","Dom","wDomToDom","recursiveRemoveEvent","rootDelete","wDomUpdate","newWDomTree","needRerender","typeAdd","typeDelete","typeReplace","typeUpdate","typeSortedReplace","typeSortedUpdate","removeEvent","childItem","deleteRealDom","findRealParentElement","parent","findChildWithRemoveElement","newElement","parentWDom","parentEl","nextEl","startFindNextBrotherElement","brothers","nextIndex","candidiateBrothers","finedNextEl","findChildFragmentNextElement","parentType","targetEl","bItem","el","isFragment","orignalElement","parentElement","oldProps","updateText","originalProps","chkRemoveProp","updateStyle","updateEvent","makeAttrDataValue","allowSetAttr","tag","text","isVirtualType","wDomChildrenToDom","elementChildren","newEventHandler","oldEventHandler","eventName","style","oldStyle","originalStyle","elementStyle","styleKey","makeNewWDomTree","remakeNewWDom","isSameType","remakeWDom","generalize","param","addReRenderTypeProperty","remakeChildrenForDiff","inheritPropForRender","existOriginalWDom","isEmptyElement","isKeyCheckedWDom","isSameText","remakeChildrenForUpdate","remakeChildrenForAdd","remakeChildrenForLoopUpdate","remakedChildren","unUsedChildren","diffLoopChildren","unusedItem","newChildren","originalChildren","originalItem","findSameKeyOriginalItem","orignalChildItem","updateCallback","runUpdateCallback","updateReqs","_props","h","nodeParentPointer","newProps","remakeChildren","node","makeNode","mount","_children","reRenderCustomComponent","makeWDomResolver","isRoot","componentMaker","customNode","makeCustomNode","addComponentProps","makeReRender","wDomMaker","componetMakeResolver","makeChildrenItem","ref","initValue","nextTick"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"lithent.mjs","sources":["../src/utils/predicator.ts","../src/utils/index.ts","../src/utils/universalRef.ts","../src/hook/unmount.ts","../src/hook/mountCallback.ts","../src/hook/useUpdate.ts","../src/render.ts","../src/diff.ts","../src/hook/updateCallback.ts","../src/wDom.ts","../src/hook/ref.ts"],"sourcesContent":["import { Fragment } from '@/wDom';\nimport {\n WDom,\n TagFunction,\n TagFunctionResolver,\n FragmentFunction,\n WDomType,\n} from '@/types';\n\ntype WDomParam =\n | string\n | WDom\n | TagFunction\n | TagFunctionResolver\n | FragmentFunction;\n\n/**\n * Predicator\n */\n\nconst checkPlainWDomType = (wDom: WDomParam): wDom is WDom =>\n typeof wDom === 'object' && !('resolve' in wDom);\n\nconst checkPlainType = (wDom: WDomParam, typeName: string) =>\n checkPlainWDomType(wDom) && wDom.type === typeName;\n\nconst checkSameCustomComponent = (\n newWDom: WDom | TagFunction | TagFunctionResolver,\n originalWDom?: WDom\n) =>\n 'ctor' in newWDom\n ? newWDom.ctor === originalWDom?.ctor\n : newWDom === originalWDom?.ctor;\n\nconst checkSameFragment = (\n newWDom: WDom | TagFunction | TagFunctionResolver,\n originalWDom?: WDom\n) =>\n checkPlainWDomType(newWDom) &&\n originalWDom?.type === 'fragment' &&\n originalWDom?.children?.length === newWDom?.children?.length;\n\nconst checkSameTagElement = (\n newWDom: WDom | TagFunction | TagFunctionResolver,\n originalWDom?: WDom\n) =>\n checkPlainWDomType(newWDom) &&\n originalWDom?.type === 'element' &&\n originalWDom?.tag === newWDom.tag &&\n originalWDom?.children?.length === newWDom?.children?.length;\n\nconst checkNormalTypeElement = (\n newWDom: WDom | TagFunction | TagFunctionResolver,\n originalWDom?: WDom\n) =>\n checkPlainWDomType(newWDom) &&\n originalWDom?.type === newWDom.type &&\n (newWDom.type !== 'loop' ||\n (newWDom.type === 'loop' &&\n checkExisty(getKey((newWDom.children || [])[0])) &&\n checkExisty(getKey((originalWDom.children || [])[0]))));\n\nexport const getKey = (target: WDom) =>\n target?.compProps?.key ?? target?.props?.key;\n\nexport const checkVirtualType = (type: string | null) =>\n type && ['fragment', 'loop'].includes(type);\n\nexport const checkCustemComponentFunction = (\n target: WDomParam\n): target is TagFunction | TagFunctionResolver =>\n (typeof target === 'function' && !checkFragmentFunction(target)) ||\n (typeof target === 'object' && 'resolve' in target);\n\nexport const checkFragmentFunction = (\n target: unknown\n): target is FragmentFunction =>\n typeof target === 'function' && target === Fragment;\n\nexport const checkEmptyElement = (wDom: WDomParam) =>\n checkPlainWDomType(wDom) && !wDom.type;\n\nexport const checkExisty = (value: unknown) =>\n value !== null && value !== undefined;\n\nexport const checkStyleData = (\n dataKey: string,\n dataValue: unknown\n): dataValue is Record<string, string> =>\n dataKey === 'style' && typeof dataValue === 'object';\n\nexport const checkRefData = (\n dataKey: string,\n dataValue: unknown\n): dataValue is {\n value: HTMLElement | Element | DocumentFragment | Text | undefined;\n} => dataKey === 'ref' && typeof dataValue === 'object';\n\nexport const checkOptionElement = (element: any): element is HTMLElement =>\n element.nodeType === 1 && element.tagName === 'OPTION';\n\nexport const checkTextareaElement = (element: any): element is HTMLElement =>\n element.nodeType === 1 && element.tagName === 'TEXTAREA';\n\nexport const checkCheckableElement = (element: any): element is HTMLElement =>\n element.nodeType === 1 && ['radio', 'checkbox'].includes(element.type);\n\nexport const getWDomType = (\n wDom: WDom | TagFunction | TagFunctionResolver\n): WDomType => {\n let result: WDomType = 'et';\n\n if (checkCustemComponentFunction(wDom)) {\n result = 'c';\n } else if (checkPlainType(wDom, 'fragment')) {\n result = 'f';\n } else if (checkPlainType(wDom, 'element')) {\n result = 'e';\n } else if (checkPlainType(wDom, 'loop')) {\n result = 'l';\n } else if (checkPlainType(wDom, 'text')) {\n result = 't';\n } else if (checkEmptyElement(wDom)) {\n result = 'et';\n }\n\n return result;\n};\n\nexport const checkSameWDomWithOriginal = {\n c: checkSameCustomComponent,\n l: checkNormalTypeElement,\n t: checkNormalTypeElement,\n e: checkSameTagElement,\n f: checkSameFragment,\n et: checkNormalTypeElement,\n};\n","import { WDom, TagFunctionResolver, Props } from '@/types';\n\nexport const getParent = (vDom: WDom) => {\n const parentVDom = vDom.getParent && vDom.getParent();\n\n return parentVDom as WDom;\n};\n\nexport const reRender = (vDom: WDom, infoVdom: TagFunctionResolver) => {\n const { compProps: props, compChild: children } = vDom;\n const { props: infoProps, children: infoChidren } = infoVdom;\n\n if (props) {\n updateProps(props, infoProps);\n }\n\n if (children) {\n updateChildren(children, infoChidren);\n }\n\n const newVDom = vDom.reRender && vDom.reRender();\n\n return newVDom as WDom;\n};\n\nexport const getEventName = (eventKey: string) =>\n eventKey.replace(/^on(.*)/, (_match, p1) => p1.toLowerCase());\n\nexport const getAttrKey = (keyName: string) =>\n keyName === 'className' ? 'class' : keyName;\n\nexport const entries = Object.entries;\nexport const keys = Object.keys;\nexport const assign = Object.assign;\n\nconst updateProps = (props: Props, infoProps: Props) => {\n if (props && infoProps !== props) {\n keys(props).forEach(key => delete props[key]);\n\n entries(infoProps || {}).forEach(([key, value]) => (props[key] = value));\n }\n};\n\nconst updateChildren = (children: WDom[], infoChidren: WDom[]) => {\n if (children && infoChidren !== children) {\n children.splice(0, children.length);\n\n if (infoChidren) {\n infoChidren.forEach(childrenItem => children.push(childrenItem));\n }\n }\n};\n","import { ComponentRef, ComponentSubKey, Props, WDom } from '@/types';\n\ntype RedrawQueueList = {\n compKey: Props;\n exec: () => void;\n}[];\n\nlet redrawQueue: { compKey: Props; exec: () => void }[] = [];\nlet redrawQueueTimeout: boolean = false;\n\n/**\n * Common\n */\nexport const xmlnsRef: { value: string } = { value: '' };\nexport const compKeyRef: { value: Props } = { value: {} };\nexport const needDiffRef: { value: boolean } = { value: false };\nexport const componentRef: ComponentRef = new WeakMap();\n\nexport const componentRender = (compKey: Props) => () => {\n const up = componentRef.get(compKey)?.up;\n let result = false;\n if (up) {\n up();\n result = true;\n }\n\n return result;\n};\n\nconst setComponetRef = (compKey: Props) => {\n componentRef.set(compKey, {\n vd: { value: null },\n up: () => {},\n upR: [],\n upS: { value: 0 },\n upD: [],\n upCB: [],\n mts: [],\n umts: [],\n });\n};\n\nexport const getComponentKey = () => compKeyRef.value;\n\nexport const getComponentSubInfo = (compKey: Props, subKey: ComponentSubKey) =>\n componentRef.get(compKey)![subKey];\n\nexport const setRedrawAction = (compKey: Props, exec: () => void) => {\n componentRef.get(compKey)!.up = () => {\n redrawQueue.push({\n compKey,\n exec,\n });\n\n if (!redrawQueueTimeout) {\n redrawQueueTimeout = true;\n queueMicrotask(execRedrawQueue);\n }\n };\n};\n\nexport const initUpdateHookState = (compKey: Props) =>\n (compKeyRef.value = compKey);\n\nexport const initMountHookState = (compKey: Props) => {\n compKeyRef.value = compKey;\n setComponetRef(compKey);\n};\n\nconst recursiveGetChildKeys = (wDom: WDom, result: Props[]) => {\n (wDom.children || []).forEach(item => {\n const childComKey = item.compKey;\n if (childComKey) {\n result.push(childComKey);\n }\n\n recursiveGetChildKeys(item, result);\n });\n};\n\nconst execRedrawQueue = () => {\n let childItemList: Props[] = [];\n\n redrawQueue.forEach(item => {\n const childVd = componentRef.get(item.compKey)?.vd?.value;\n if (childVd) {\n recursiveGetChildKeys(childVd, childItemList);\n }\n });\n\n const addedKey: Props[] = [];\n const result = redrawQueue.reduce((acc, item) => {\n const { compKey } = item;\n\n if (childItemList.includes(compKey) || addedKey.includes(compKey)) {\n return acc;\n }\n\n addedKey.push(compKey);\n acc.push(item);\n\n return acc;\n }, [] as RedrawQueueList);\n\n while (result.length) {\n const action = result.shift();\n if (action) {\n action.exec();\n }\n }\n\n redrawQueue = [];\n redrawQueueTimeout = false;\n};\n","import { WDom, Props } from '@/types';\nimport { componentRef, getComponentKey } from '@/utils/universalRef';\n\nexport const unmount = (effectAction: () => void) => {\n componentRef.get(getComponentKey())!.umts.push(effectAction);\n};\n\nexport const runUnmountQueueFromWDom = (newWDom: WDom) => {\n const { compKey } = newWDom;\n\n if (compKey) {\n removeItem(compKey);\n }\n recursiveRunUnmount(newWDom);\n};\n\nconst recursiveRunUnmount = (wDom: WDom) => {\n (wDom.children || []).forEach(item => {\n const childComKey = item.compKey;\n if (childComKey) {\n runUnmountQueueFromWDom(item);\n } else {\n recursiveRunUnmount(item);\n }\n });\n};\n\nconst removeItem = (compKey: Props) => {\n const subInfo = componentRef.get(compKey);\n if (subInfo) {\n subInfo!.umts.forEach(effect => effect());\n subInfo!.umts = [];\n componentRef.delete(compKey);\n }\n};\n","import { WDom } from '@/types';\nimport {\n compKeyRef,\n componentRef,\n getComponentKey,\n} from '@/utils/universalRef';\nimport { unmount } from '@/hook/unmount';\n\nlet mountedQueue: WDom[] = [];\n\nexport const execMountedQueue = () => {\n mountedQueue.forEach(item => runMountedQueueFromWDom(item));\n mountedQueue = [];\n};\nexport const addMountedQueue = (wDom: WDom) => {\n if (wDom.compKey) {\n mountedQueue.push(wDom);\n }\n};\nexport const mountCallback = (effectAction: () => void) =>\n componentRef.get(getComponentKey())!.mts.push(effectAction);\n\nexport const runMountedQueueFromWDom = (newWDom: WDom) => {\n const { compKey } = newWDom;\n\n if (compKey) {\n const component = componentRef.get(compKey);\n const queue = component?.mts;\n const sequence = component?.upS;\n\n compKeyRef.value = compKey;\n\n if (sequence) {\n sequence.value = 0;\n }\n\n if (queue) {\n component.mts = [];\n\n queue.forEach((effect: Function) => {\n const callback = effect();\n if (callback) {\n unmount(callback);\n }\n });\n }\n }\n};\n","import { WDom } from '@/types';\nimport {\n compKeyRef,\n componentRef,\n getComponentKey,\n} from '@/utils/universalRef';\n\nexport const useUpdated = (\n effectAction: () => (() => void) | void,\n dependencies: () => any[] = () => []\n) => {\n const component = componentRef.get(getComponentKey());\n const { upD, upS } = component!;\n const def = upD[upS.value];\n\n if (def && checkNeedPushQueue(def, dependencies())) {\n const callback = effectAction();\n if (callback) {\n component!.upCB.push(callback);\n }\n }\n\n upD[upS.value] = dependencies();\n upS.value += 1;\n};\n\nexport const runUpdatedQueueFromWDom = (newWDom: WDom) => {\n const { compKey } = newWDom;\n\n if (compKey) {\n const component = componentRef.get(compKey);\n const queue = component?.upCB;\n const sequence = component?.upS;\n\n compKeyRef.value = compKey;\n\n if (sequence) {\n sequence.value = 0;\n }\n\n if (newWDom.ctor && queue) {\n component.upCB = [];\n queue.forEach((effect: Function) => effect());\n }\n }\n};\n\nconst checkNeedPushQueue = (originalDefs: unknown[], newDefs: unknown[]) =>\n !originalDefs.length && !originalDefs.length\n ? true\n : originalDefs.some((def, index) => def !== newDefs[index]);\n","import { WDom, Props } from '@/types';\nimport {\n checkStyleData,\n checkRefData,\n checkExisty,\n checkOptionElement,\n checkTextareaElement,\n checkCheckableElement,\n checkVirtualType,\n} from '@/utils/predicator';\n\nimport { componentRef, xmlnsRef } from '@/utils/universalRef';\nimport { runUnmountQueueFromWDom } from '@/hook/unmount';\nimport { execMountedQueue, addMountedQueue } from '@/hook/mountCallback';\nimport { runUpdatedQueueFromWDom } from '@/hook/useUpdate';\nimport { getParent, getEventName, getAttrKey, entries, keys } from '@/utils';\n\nexport const render = (\n wDom: WDom,\n wrapElement: HTMLElement | null,\n afterElement?: HTMLElement | null\n) => {\n wrapElement ??= document.body;\n wDom.isRoot = true;\n wDom.wrapElement = wrapElement;\n\n const Dom = wDomToDom(wDom);\n\n if (afterElement) {\n wDom.afterElement = afterElement;\n wrapElement.insertBefore(Dom, afterElement);\n } else {\n wrapElement.appendChild(Dom);\n }\n\n execMountedQueue();\n\n return () => {\n const component = componentRef.get(wDom.compProps || {})?.vd.value;\n if (component) {\n runUnmountQueueFromWDom(component);\n recursiveRemoveEvent(component);\n rootDelete(component);\n }\n };\n};\n\nexport const wDomUpdate = (newWDomTree: WDom) => {\n const { needRerender } = newWDomTree;\n\n if (needRerender && needRerender !== 'N') {\n ({\n A: typeAdd,\n D: typeDelete,\n R: typeReplace,\n U: typeUpdate,\n SR: typeSortedReplace,\n SU: typeSortedUpdate,\n })[needRerender](newWDomTree);\n }\n};\n\nexport const recursiveRemoveEvent = (originalWDom: WDom) => {\n if (originalWDom.props && originalWDom.el) {\n removeEvent(originalWDom.props, originalWDom.el);\n }\n\n (originalWDom.children || []).forEach((childItem: WDom) => {\n recursiveRemoveEvent(childItem);\n });\n};\n\nconst rootDelete = (newWDom: WDom) => {\n deleteRealDom(newWDom, newWDom.wrapElement as HTMLElement);\n};\n\nconst typeDelete = (newWDom: WDom) => {\n if (newWDom.oldProps && newWDom.el) {\n removeEvent(newWDom.oldProps, newWDom.el);\n }\n\n deleteRealDom(\n newWDom,\n findRealParentElement(getParent(newWDom)) as HTMLElement\n );\n};\n\nconst deleteRealDom = (newWDom: WDom, parent: HTMLElement) => {\n if (parent && newWDom.el) {\n if (newWDom.el?.nodeType === 1) {\n parent.removeChild(newWDom.el);\n } else if (newWDom.el?.nodeType === 11) {\n findChildWithRemoveElement(newWDom, parent as HTMLElement);\n }\n delete newWDom.el;\n }\n};\n\nconst findChildWithRemoveElement = (newWDom: WDom, parent: HTMLElement) => {\n (newWDom?.oldChildren || newWDom?.children || []).forEach(item => {\n if (item.el?.nodeType === 1) {\n parent.removeChild(item?.el);\n } else if (item.el?.nodeType === 11) {\n findChildWithRemoveElement(item, parent);\n }\n });\n};\n\nconst typeSortedReplace = (newWDom: WDom) => {\n typeDelete(newWDom);\n typeAdd(newWDom);\n};\n\nconst typeSortedUpdate = (newWDom: WDom) => {\n typeDelete(newWDom);\n typeAdd(newWDom, newWDom.el);\n};\n\nconst typeAdd = (\n newWDom: WDom,\n newElement?: HTMLElement | DocumentFragment | Text\n) => {\n if (!newElement) {\n newElement = wDomToDom(newWDom) as HTMLElement;\n }\n\n const parentWDom = getParent(newWDom);\n if (parentWDom.type) {\n const parentEl = findRealParentElement(parentWDom);\n const isLoop = parentWDom.type === 'loop';\n const nextEl = isLoop\n ? startFindNextBrotherElement(parentWDom, getParent(parentWDom))\n : startFindNextBrotherElement(newWDom, parentWDom);\n\n if (newElement && parentEl) {\n if (nextEl) {\n parentEl.insertBefore(newElement, nextEl);\n } else {\n parentEl.appendChild(newElement);\n }\n\n execMountedQueue();\n }\n }\n};\n\nconst startFindNextBrotherElement = (\n wDom: WDom,\n parentWDom: WDom\n): HTMLElement | DocumentFragment | Text | undefined => {\n const brothers = parentWDom.children || [];\n const index = brothers.indexOf(wDom);\n const nextIndex = index + 1;\n const candidiateBrothers = brothers.slice(nextIndex);\n\n const finedNextEl = findChildFragmentNextElement(candidiateBrothers);\n const parentType = parentWDom.type || '';\n\n if (finedNextEl) {\n return finedNextEl;\n }\n\n if (!parentWDom.isRoot && checkVirtualType(parentType)) {\n return startFindNextBrotherElement(parentWDom, getParent(parentWDom));\n } else if (parentWDom.isRoot && parentWDom.afterElement) {\n return parentWDom.afterElement;\n }\n\n return undefined;\n};\n\nconst findChildFragmentNextElement = (\n candidiateBrothers: WDom[]\n): HTMLElement | DocumentFragment | Text | undefined =>\n candidiateBrothers.reduce(\n (\n targetEl: HTMLElement | DocumentFragment | Text | undefined,\n bItem: WDom\n ) => {\n const type = bItem.type;\n const el = bItem.el;\n const isFragment = type && checkVirtualType(type);\n\n if (targetEl) {\n return targetEl;\n } else if (isFragment) {\n return findChildFragmentNextElement(bItem.children || []);\n } else if (el && el.nodeType !== 11) {\n return el;\n }\n\n return targetEl;\n },\n undefined\n );\n\nconst typeReplace = (newWDom: WDom) => {\n const parentWDom = getParent(newWDom);\n const orignalElement = newWDom.el;\n\n if (parentWDom.type && orignalElement) {\n if (orignalElement.nodeType === 11) {\n typeSortedReplace(newWDom);\n } else {\n const parentElement = findRealParentElement(parentWDom);\n const newElement = wDomToDom(newWDom);\n\n if (parentElement) {\n parentElement.replaceChild(newElement, orignalElement);\n }\n execMountedQueue();\n }\n }\n};\n\nconst removeEvent = (\n oldProps: Props,\n element: HTMLElement | DocumentFragment | Text\n) => {\n entries(oldProps || {}).forEach(([dataKey, dataValue]: [string, unknown]) => {\n if (dataKey.match(/^on/)) {\n element.removeEventListener(\n getEventName(dataKey),\n dataValue as (e: Event) => void\n );\n }\n });\n};\n\nconst typeUpdate = (newWDom: WDom) => {\n const element = newWDom.el;\n\n if (newWDom.type === 'text') {\n updateText(newWDom);\n\n return;\n }\n\n if (element) {\n const { oldProps, props } = newWDom;\n\n updateProps(props, element, oldProps);\n\n delete newWDom.oldProps;\n\n if (newWDom.tag === 'input') {\n (element as HTMLInputElement).value = String(newWDom?.props?.value || '');\n }\n }\n\n (newWDom.children || []).forEach((childItem: WDom) => wDomUpdate(childItem));\n\n runUpdatedQueueFromWDom(newWDom);\n};\n\nconst updateText = (newWDom: WDom) => {\n const element = newWDom.el;\n\n if (element) {\n element.nodeValue = String(newWDom.text);\n }\n};\n\nconst updateProps = (\n props?: Props,\n element?: HTMLElement | Element | DocumentFragment | Text,\n oldProps?: Props\n) => {\n const originalProps = { ...oldProps };\n\n entries(props || {}).forEach(([dataKey, dataValue]: [string, unknown]) => {\n let chkRemoveProp = true;\n if (dataKey === 'key') {\n // Do nothing\n } else if (dataKey === 'innerHTML' && typeof dataValue === 'string') {\n (element as HTMLElement).innerHTML = dataValue;\n } else if (checkStyleData(dataKey, dataValue)) {\n updateStyle(\n dataValue,\n checkStyleData(dataKey, originalProps.style) ? originalProps.style : {},\n element\n );\n } else if (checkRefData(dataKey, dataValue)) {\n dataValue.value = element;\n } else if (dataKey.match(/^on/)) {\n updateEvent(\n element as HTMLElement,\n dataKey,\n dataValue as (e: Event) => void,\n originalProps[dataKey] as (e: Event) => void\n );\n } else if (checkCheckableElement(element) && dataKey === 'checked') {\n (element as HTMLInputElement).checked = !!dataValue;\n } else if (checkTextareaElement(element) && dataKey === 'value') {\n (element as HTMLInputElement).value = dataValue as string;\n } else if (checkOptionElement(element) && dataKey === 'selected') {\n (element as HTMLOptionElement).selected = !!dataValue;\n } else if (dataKey) {\n [chkRemoveProp, dataValue] = makeAttrDataValue(dataValue);\n\n if (chkRemoveProp) {\n if (xmlnsRef.value && dataKey !== 'xmlns') {\n (element as HTMLElement).setAttributeNS(\n null,\n getAttrKey(dataKey),\n <string>dataValue\n );\n } else {\n (element as HTMLElement).setAttribute(\n getAttrKey(dataKey),\n <string>dataValue\n );\n }\n }\n }\n\n if (chkRemoveProp) {\n delete originalProps[dataKey];\n }\n });\n\n keys(originalProps).forEach(dataKey =>\n (element as HTMLElement).removeAttribute(dataKey)\n );\n};\n\nconst makeAttrDataValue = (dataValue: unknown): [boolean, string] => {\n let allowSetAttr = true;\n if (typeof dataValue === 'boolean') {\n if (!dataValue) {\n allowSetAttr = false;\n }\n\n dataValue = '';\n }\n\n return [allowSetAttr, String(dataValue)];\n};\n\nconst wDomToDom = (wDom: WDom) => {\n let element;\n const { type, tag, text, props, children = [] } = wDom;\n const isVirtualType = checkVirtualType(type);\n\n if (tag === 'svg') {\n xmlnsRef.value = String(props?.xmlns);\n }\n\n if (isVirtualType) {\n element = new DocumentFragment();\n } else if (type === 'element' && tag) {\n element = xmlnsRef.value\n ? document.createElementNS(xmlnsRef.value, tag)\n : document.createElement(tag);\n } else if (type === 'text' && checkExisty(text)) {\n element = document.createTextNode(String(text));\n } else {\n element = document.createElement('e');\n }\n\n wDomChildrenToDom(children, element);\n updateProps(props, element);\n\n wDom.el = element as HTMLElement;\n\n addMountedQueue(wDom);\n\n if (tag === 'svg') {\n xmlnsRef.value = '';\n }\n\n return element;\n};\n\nconst wDomChildrenToDom = (\n children: WDom[],\n parentElement?: HTMLElement | Element | DocumentFragment | Text\n) => {\n const elementChildren = children.reduce(\n (acc: DocumentFragment, childItem: WDom) => {\n if (childItem.type) {\n acc.appendChild(wDomToDom(childItem));\n }\n\n return acc;\n },\n new DocumentFragment()\n );\n\n if (parentElement && elementChildren.hasChildNodes()) {\n parentElement.appendChild(elementChildren);\n }\n};\n\nconst updateEvent = (\n element: HTMLElement,\n eventKey: string,\n newEventHandler: (e: Event) => void,\n oldEventHandler: (e: Event) => void\n) => {\n const eventName = getEventName(eventKey);\n\n if (oldEventHandler !== newEventHandler) {\n if (oldEventHandler) {\n element.removeEventListener(eventName, oldEventHandler);\n }\n\n if (newEventHandler) {\n element.addEventListener(eventName, newEventHandler);\n }\n }\n};\n\nconst updateStyle = (\n style: Record<string, string>,\n oldStyle: Record<string, string>,\n element?: HTMLElement | Element | DocumentFragment | Text\n) => {\n const originalStyle = { ...oldStyle };\n const elementStyle = (element as HTMLElement)?.style;\n\n if (elementStyle) {\n entries(style).forEach(([styleKey, dataValue]) => {\n (elementStyle as any)[styleKey] = dataValue;\n delete originalStyle[styleKey];\n });\n\n entries(originalStyle).forEach(\n ([styleKey]) => ((elementStyle as any)[styleKey] = '')\n );\n }\n};\n\nconst findRealParentElement = (\n vDom: WDom\n): HTMLElement | DocumentFragment | Text | undefined => {\n const isVirtualType = checkVirtualType(vDom.type);\n if (vDom.isRoot && isVirtualType) {\n return vDom.wrapElement;\n }\n\n if (!isVirtualType) {\n return vDom.el as HTMLElement;\n }\n\n return findRealParentElement(getParent(vDom));\n};\n","import { WDom, TagFunctionResolver, RenderType } from '@/types';\nimport { checkCustemComponentFunction, getKey } from '@/utils/predicator';\nimport { getParent, reRender } from '@/utils';\nimport { recursiveRemoveEvent } from '@/render';\nimport {\n checkEmptyElement,\n checkSameWDomWithOriginal,\n getWDomType,\n checkExisty,\n} from '@/utils/predicator';\n\nimport { runUnmountQueueFromWDom } from '@/hook/unmount';\nimport { assign } from '@/utils';\n\nexport const makeNewWDomTree = (\n newWDom: WDom | TagFunctionResolver,\n originalWDom?: WDom\n) =>\n remakeNewWDom(\n newWDom,\n checkSameWDomWithOriginal[getWDomType(newWDom)](newWDom, originalWDom),\n originalWDom\n );\n\nconst remakeNewWDom = (\n newWDom: WDom | TagFunctionResolver,\n isSameType: boolean,\n originalWDom?: WDom\n) => {\n const remakeWDom = generalize(newWDom, isSameType, originalWDom);\n const param: [newWDom: WDom, isSameType: boolean, originalWDom?: WDom] = [\n remakeWDom,\n isSameType,\n originalWDom,\n ];\n const needRerender = addReRenderTypeProperty(...param);\n\n remakeWDom.children = remakeChildrenForDiff(...param);\n remakeWDom.needRerender = needRerender;\n\n inheritPropForRender(remakeWDom, originalWDom, needRerender);\n\n return remakeWDom;\n};\n\nconst inheritPropForRender = (\n remakeWDom: WDom,\n originalWDom?: WDom,\n needRerender?: RenderType\n) => {\n if (needRerender !== 'A' && originalWDom) {\n remakeWDom.el = originalWDom.el;\n }\n\n if (needRerender && ['D', 'R', 'SR'].includes(needRerender)) {\n if (originalWDom?.compKey) {\n runUnmountQueueFromWDom(originalWDom);\n recursiveRemoveEvent(originalWDom);\n }\n remakeWDom.oldChildren = originalWDom?.children;\n }\n\n remakeWDom.oldProps = originalWDom?.props;\n};\n\nconst addReRenderTypeProperty = (\n newWDom: WDom,\n isSameType: boolean,\n originalWDom?: WDom\n): RenderType | undefined => {\n const existOriginalWDom = originalWDom && originalWDom.type;\n const isEmptyElement = checkEmptyElement(newWDom);\n const isRoot = !newWDom.getParent;\n const parentType = !isRoot && getParent(newWDom).type;\n const key = getKey(newWDom);\n const isKeyCheckedWDom = parentType === 'loop' && checkExisty(key);\n const isSameText =\n newWDom.type === 'text' &&\n isSameType &&\n newWDom.text === originalWDom?.text;\n\n let result: RenderType | undefined;\n if (isEmptyElement) {\n result = 'D';\n } else if (isSameText) {\n result = 'N';\n } else if (!existOriginalWDom) {\n result = 'A';\n } else if (isSameType) {\n result = isKeyCheckedWDom ? 'SU' : 'U';\n } else {\n result = isKeyCheckedWDom ? 'SR' : 'R';\n }\n\n return result;\n};\n\nconst generalize = (\n newWDom: WDom | TagFunctionResolver,\n isSameType: boolean,\n originalWDom?: WDom\n): WDom => {\n if (checkCustemComponentFunction(newWDom)) {\n return isSameType && originalWDom\n ? reRender(originalWDom, newWDom)\n : newWDom.resolve();\n }\n\n return newWDom;\n};\n\nconst remakeChildrenForDiff = (\n newWDom: WDom,\n isSameType: boolean,\n originalWDom?: WDom\n) =>\n isSameType && originalWDom\n ? remakeChildrenForUpdate(newWDom, originalWDom)\n : remakeChildrenForAdd(newWDom);\n\nconst remakeChildrenForAdd = (newWDom: WDom) =>\n (newWDom.children || []).map((item: WDom) =>\n assign(makeNewWDomTree(item), { getParent: () => newWDom })\n );\n\nconst remakeChildrenForUpdate = (newWDom: WDom, originalWDom: WDom) =>\n newWDom.type === 'loop' && checkExisty(getKey((newWDom.children || [])[0]))\n ? remakeChildrenForLoopUpdate(newWDom, originalWDom)\n : (newWDom.children || []).map((item: WDom, index: number) =>\n assign(makeNewWDomTree(item, (originalWDom.children || [])[index]), {\n getParent: () => newWDom,\n })\n );\n\nconst remakeChildrenForLoopUpdate = (newWDom: WDom, originalWDom: WDom) => {\n const [remakedChildren, unUsedChildren] = diffLoopChildren(\n newWDom,\n originalWDom\n );\n\n unUsedChildren.map(unusedItem => {\n const el = unusedItem.el;\n\n if (el?.parentNode) {\n el.parentNode.removeChild(el);\n }\n });\n\n return remakedChildren;\n};\n\nconst diffLoopChildren = (newWDom: WDom, originalWDom: WDom) => {\n const newChildren = [...(newWDom.children || [])];\n const originalChildren = [...(originalWDom.children || [])];\n const remakedChildren = newChildren.map(item => {\n const originalItem = findSameKeyOriginalItem(item, originalChildren);\n const childItem = makeNewWDomTree(item, originalItem);\n\n if (originalItem) {\n originalChildren.splice(originalChildren.indexOf(originalItem), 1);\n }\n\n childItem.getParent = () => newWDom;\n\n return childItem;\n });\n\n return [remakedChildren, originalChildren];\n};\n\nconst findSameKeyOriginalItem = (item: WDom, originalChildren: WDom[]) =>\n originalChildren.find(\n orignalChildItem => getKey(orignalChildItem) === getKey(item)\n );\n","import { componentRef, getComponentKey } from '@/utils/universalRef';\n\nimport { useUpdated } from '@/hook/useUpdate';\n\nexport const updateCallback = (\n effectAction: () => (() => void) | void,\n dependencies: () => any[] = () => []\n) => {\n const updateReqs = componentRef.get(getComponentKey())!.upR;\n\n updateReqs.push(() => useUpdated(effectAction, dependencies));\n useUpdated(effectAction, dependencies);\n};\n\nexport const runUpdateCallback = () => {\n const updateReqs = componentRef.get(getComponentKey())?.upR;\n\n if (updateReqs?.length) {\n updateReqs.forEach(callback => callback());\n }\n};\n","import {\n WDom,\n TagFunction,\n FragmentFunction,\n Props,\n MiddleStateWDomChildren,\n MiddleStateWDom,\n NodePointer,\n Component,\n} from '@/types';\n\nimport { makeNewWDomTree } from '@/diff';\nimport { wDomUpdate } from '@/render';\nimport {\n initUpdateHookState,\n initMountHookState,\n setRedrawAction,\n needDiffRef,\n componentRender,\n getComponentSubInfo,\n} from '@/utils/universalRef';\nimport { runUpdateCallback } from '@/hook/updateCallback';\nimport {\n checkFragmentFunction,\n checkCustemComponentFunction,\n} from '@/utils/predicator';\nimport { assign } from '@/utils';\n\nexport const Fragment = (_props: Props, ...children: WDom[]) => ({\n type: 'fragment',\n children,\n});\n\nexport const h = (\n tag: TagFunction | FragmentFunction | string,\n props: Props,\n ...children: MiddleStateWDomChildren\n) => {\n const nodeParentPointer: NodePointer = { value: undefined };\n const newProps = props || {};\n const newChildren = remakeChildren(nodeParentPointer, children);\n const node = makeNode(tag, newProps, newChildren);\n\n if (!checkCustemComponentFunction(node)) {\n nodeParentPointer.value = node;\n }\n\n return node;\n};\n\nexport const mount =\n <T>(component: Component<T>) =>\n (_props: T, _children: WDom[]) =>\n component;\n\nconst reRenderCustomComponent = (\n tag: TagFunction,\n props: Props,\n children: WDom[],\n originalWDom: WDom\n) => {\n needDiffRef.value = true;\n\n const newWDom = makeWDomResolver(tag, props, children);\n const newWDomTree = makeNewWDomTree(newWDom, originalWDom);\n const { isRoot, getParent, wrapElement, afterElement } = originalWDom;\n\n newWDomTree.getParent = getParent;\n\n if (!isRoot && getParent) {\n const brothers = getParent()?.children || [];\n const index = brothers.indexOf(originalWDom);\n\n brothers.splice(index, 1, newWDomTree);\n } else {\n newWDomTree.isRoot = true;\n newWDomTree.wrapElement = wrapElement;\n newWDomTree.afterElement = afterElement;\n }\n\n needDiffRef.value = false;\n wDomUpdate(newWDomTree);\n};\n\nconst makeWDomResolver = (tag: TagFunction, props: Props, children: WDom[]) => {\n const tagName = tag.name;\n const ctor = tag;\n // 리졸브는 컴포넌트를 새로 만든다.\n const resolve = (compKey = props) => {\n initMountHookState(compKey);\n\n const component = tag(props, children);\n const componentMaker = component(componentRender(compKey), props, children);\n\n const customNode = makeCustomNode(\n componentMaker,\n compKey,\n tag,\n props,\n children\n );\n\n const originalWDom = customNode;\n\n setRedrawAction(compKey, () =>\n reRenderCustomComponent(tag, props, children, originalWDom)\n );\n\n (getComponentSubInfo(compKey, 'vd') as { value: WDom }).value = customNode;\n\n return customNode;\n };\n\n return { tagName, ctor, props, children, resolve };\n};\n\nconst makeCustomNode = (\n componentMaker: (props: Props) => WDom,\n compKey: Props,\n tag: TagFunction,\n props: Props,\n children: WDom[]\n) => {\n const customNode = componentMaker(props);\n if (customNode.reRender) {\n throw new Error(\n 'The root of a component must not be a component, use \"Fragment\"'\n );\n }\n\n addComponentProps(\n customNode,\n compKey,\n tag,\n props,\n children,\n makeReRender(componentMaker, compKey, tag, props, children)\n );\n\n return customNode;\n};\n\nconst makeReRender = (\n componentMaker: (props: Props) => WDom,\n compKey: Props,\n tag: TagFunction,\n props: Props,\n children: WDom[]\n) => {\n const reRender = () =>\n wDomMaker(componentMaker, compKey, tag, props, children, reRender);\n return reRender;\n};\n\nconst wDomMaker = (\n componentMaker: (props: Props) => WDom,\n compKey: Props,\n tag: TagFunction,\n props: Props,\n children: WDom[],\n reRender: () => WDom\n) => {\n initUpdateHookState(compKey);\n runUpdateCallback();\n\n const originalWDom = componentMaker(props);\n\n setRedrawAction(compKey, () =>\n reRenderCustomComponent(tag, props, children, originalWDom)\n );\n\n addComponentProps(originalWDom, compKey, tag, props, children, reRender);\n\n (getComponentSubInfo(compKey, 'vd') as { value: WDom }).value = originalWDom;\n\n return originalWDom;\n};\n\nconst addComponentProps = (\n wDom: WDom,\n compKey: Props,\n tag: TagFunction,\n props: Props,\n children: WDom[],\n reRender: () => WDom\n) => {\n assign(wDom, {\n compProps: props,\n compChild: children,\n ctor: tag,\n tagName: tag.name,\n compKey,\n reRender,\n });\n};\n\nconst makeNode = (\n tag: TagFunction | FragmentFunction | string,\n props: Props,\n children: WDom[]\n) => {\n if (checkFragmentFunction(tag)) {\n return Fragment(props, ...children);\n } else if (checkCustemComponentFunction(tag)) {\n const componetMakeResolver = makeWDomResolver(tag, props, children);\n\n return needDiffRef.value\n ? componetMakeResolver\n : componetMakeResolver.resolve();\n }\n\n return {\n type: 'element',\n tag,\n props,\n children,\n };\n};\n\nconst remakeChildren = (\n nodeParentPointer: NodePointer,\n children: MiddleStateWDomChildren\n): WDom[] =>\n children.map((item: MiddleStateWDom) =>\n assign(makeChildrenItem(item), { getParent: () => nodeParentPointer.value })\n );\n\nconst makeChildrenItem = (item: MiddleStateWDom): WDom => {\n if (item === null || item === undefined || item === false) {\n return { type: null };\n } else if (Array.isArray(item)) {\n const nodeParentPointer: NodePointer = { value: undefined };\n const children = remakeChildren(nodeParentPointer, item);\n const node = {\n type: 'loop',\n children,\n };\n nodeParentPointer.value = node;\n\n return node;\n } else if (typeof item === 'string' || typeof item === 'number') {\n return { type: 'text', text: item };\n }\n\n return item;\n};\n","export const ref = <T>(initValue: T) => ({ value: initValue });\nexport const nextTick = () => Promise.resolve();\n"],"names":["checkPlainWDomType","wDom","checkPlainType","typeName","checkSameCustomComponent","newWDom","originalWDom","checkSameFragment","_a","_b","checkSameTagElement","checkNormalTypeElement","checkExisty","getKey","target","checkVirtualType","type","checkCustemComponentFunction","checkFragmentFunction","Fragment","checkEmptyElement","value","checkStyleData","dataKey","dataValue","checkRefData","checkOptionElement","element","checkTextareaElement","checkCheckableElement","getWDomType","result","checkSameWDomWithOriginal","getParent","vDom","reRender","infoVdom","props","children","infoProps","infoChidren","updateProps","updateChildren","getEventName","eventKey","_match","p1","getAttrKey","keyName","entries","keys","assign","key","childrenItem","redrawQueue","redrawQueueTimeout","xmlnsRef","compKeyRef","needDiffRef","componentRef","componentRender","compKey","up","setComponetRef","getComponentKey","getComponentSubInfo","subKey","setRedrawAction","exec","execRedrawQueue","initUpdateHookState","initMountHookState","recursiveGetChildKeys","item","childComKey","childItemList","childVd","addedKey","acc","action","unmount","effectAction","runUnmountQueueFromWDom","removeItem","recursiveRunUnmount","subInfo","effect","mountedQueue","execMountedQueue","runMountedQueueFromWDom","addMountedQueue","mountCallback","component","queue","sequence","callback","useUpdated","dependencies","upD","upS","def","checkNeedPushQueue","runUpdatedQueueFromWDom","originalDefs","newDefs","index","render","wrapElement","afterElement","Dom","wDomToDom","recursiveRemoveEvent","rootDelete","wDomUpdate","newWDomTree","needRerender","typeAdd","typeDelete","typeReplace","typeUpdate","typeSortedReplace","typeSortedUpdate","removeEvent","childItem","deleteRealDom","findRealParentElement","parent","findChildWithRemoveElement","newElement","parentWDom","parentEl","nextEl","startFindNextBrotherElement","brothers","nextIndex","candidiateBrothers","finedNextEl","findChildFragmentNextElement","parentType","targetEl","bItem","el","isFragment","orignalElement","parentElement","oldProps","updateText","originalProps","chkRemoveProp","updateStyle","updateEvent","makeAttrDataValue","allowSetAttr","tag","text","isVirtualType","wDomChildrenToDom","elementChildren","newEventHandler","oldEventHandler","eventName","style","oldStyle","originalStyle","elementStyle","styleKey","makeNewWDomTree","remakeNewWDom","isSameType","remakeWDom","generalize","param","addReRenderTypeProperty","remakeChildrenForDiff","inheritPropForRender","existOriginalWDom","isEmptyElement","isKeyCheckedWDom","isSameText","remakeChildrenForUpdate","remakeChildrenForAdd","remakeChildrenForLoopUpdate","remakedChildren","unUsedChildren","diffLoopChildren","unusedItem","newChildren","originalChildren","originalItem","findSameKeyOriginalItem","orignalChildItem","updateCallback","runUpdateCallback","updateReqs","_props","h","nodeParentPointer","newProps","remakeChildren","node","makeNode","mount","_children","reRenderCustomComponent","makeWDomResolver","isRoot","componentMaker","customNode","makeCustomNode","addComponentProps","makeReRender","wDomMaker","componetMakeResolver","makeChildrenItem","ref","initValue","nextTick"],"mappings":"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"}
|
package/dist/lithent.umd.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
(function(l,p){typeof exports=="object"&&typeof module<"u"?p(exports):typeof define=="function"&&define.amd?define(["exports"],p):(l=typeof globalThis<"u"?globalThis:l||self,p(l.lithent={}))})(this,function(l){"use strict";const p=e=>typeof e=="object"&&!("resolve"in e),P=(e,t)=>p(e)&&e.type===t,fe=(e,t)=>"ctor"in e?e.ctor===(t==null?void 0:t.ctor):e===(t==null?void 0:t.ctor),de=(e,t)=>{var c,s;return p(e)&&(t==null?void 0:t.type)==="fragment"&&((c=t==null?void 0:t.children)==null?void 0:c.length)===((s=e==null?void 0:e.children)==null?void 0:s.length)},pe=(e,t)=>{var c,s;return p(e)&&(t==null?void 0:t.type)==="element"&&(t==null?void 0:t.tag)===e.tag&&((c=t==null?void 0:t.children)==null?void 0:c.length)===((s=e==null?void 0:e.children)==null?void 0:s.length)},A=(e,t)=>
|
|
1
|
+
(function(l,p){typeof exports=="object"&&typeof module<"u"?p(exports):typeof define=="function"&&define.amd?define(["exports"],p):(l=typeof globalThis<"u"?globalThis:l||self,p(l.lithent={}))})(this,function(l){"use strict";const p=e=>typeof e=="object"&&!("resolve"in e),P=(e,t)=>p(e)&&e.type===t,fe=(e,t)=>"ctor"in e?e.ctor===(t==null?void 0:t.ctor):e===(t==null?void 0:t.ctor),de=(e,t)=>{var c,s;return p(e)&&(t==null?void 0:t.type)==="fragment"&&((c=t==null?void 0:t.children)==null?void 0:c.length)===((s=e==null?void 0:e.children)==null?void 0:s.length)},pe=(e,t)=>{var c,s;return p(e)&&(t==null?void 0:t.type)==="element"&&(t==null?void 0:t.tag)===e.tag&&((c=t==null?void 0:t.children)==null?void 0:c.length)===((s=e==null?void 0:e.children)==null?void 0:s.length)},A=(e,t)=>p(e)&&(t==null?void 0:t.type)===e.type&&(e.type!=="loop"||e.type==="loop"&&a(y((e.children||[])[0]))&&a(y((t.children||[])[0]))),y=e=>{var t,c;return((t=e==null?void 0:e.compProps)==null?void 0:t.key)??((c=e==null?void 0:e.props)==null?void 0:c.key)},T=e=>e&&["fragment","loop"].includes(e),x=e=>typeof e=="function"&&!G(e)||typeof e=="object"&&"resolve"in e,G=e=>typeof e=="function"&&e===z,X=e=>p(e)&&!e.type,a=e=>e!=null,$=(e,t)=>e==="style"&&typeof t=="object",he=(e,t)=>e==="ref"&&typeof t=="object",ie=e=>e.nodeType===1&&e.tagName==="OPTION",ye=e=>e.nodeType===1&&e.tagName==="TEXTAREA",ve=e=>e.nodeType===1&&["radio","checkbox"].includes(e.type),ae=e=>{let t="et";return x(e)?t="c":P(e,"fragment")?t="f":P(e,"element")?t="e":P(e,"loop")?t="l":P(e,"text")?t="t":X(e)&&(t="et"),t},ke={c:fe,l:A,t:A,e:pe,f:de,et:A},h=e=>e.getParent&&e.getParent(),Ce=(e,t)=>{const{compProps:c,compChild:s}=e,{props:n,children:r}=t;return c&&Re(c,n),s&&Ee(s,r),e.reRender&&e.reRender()},H=e=>e.replace(/^on(.*)/,(t,c)=>c.toLowerCase()),J=e=>e==="className"?"class":e,k=Object.entries,Y=Object.keys,S=Object.assign,Re=(e,t)=>{e&&t!==e&&(Y(e).forEach(c=>delete e[c]),k(t||{}).forEach(([c,s])=>e[c]=s))},Ee=(e,t)=>{e&&t!==e&&(e.splice(0,e.length),t&&t.forEach(c=>e.push(c)))};let b=[],O=!1;const C={value:""},R={value:{}},L={value:!1},u=new WeakMap,Pe=e=>()=>{var s;const t=(s=u.get(e))==null?void 0:s.up;let c=!1;return t&&(t(),c=!0),c},Te=e=>{u.set(e,{vd:{value:null},up:()=>{},upR:[],upS:{value:0},upD:[],upCB:[],mts:[],umts:[]})},E=()=>R.value,Z=(e,t)=>u.get(e)[t],V=(e,t)=>{u.get(e).up=()=>{b.push({compKey:e,exec:t}),O||(O=!0,queueMicrotask(be))}},xe=e=>R.value=e,Se=e=>{R.value=e,Te(e)},K=(e,t)=>{(e.children||[]).forEach(c=>{const s=c.compKey;s&&t.push(s),K(c,t)})},be=()=>{let e=[];b.forEach(s=>{var r,o;const n=(o=(r=u.get(s.compKey))==null?void 0:r.vd)==null?void 0:o.value;n&&K(n,e)});const t=[],c=b.reduce((s,n)=>{const{compKey:r}=n;return e.includes(r)||t.includes(r)||(t.push(r),s.push(n)),s},[]);for(;c.length;){const s=c.shift();s&&s.exec()}b=[],O=!1},Ne=e=>{u.get(E()).umts.push(e)},M=e=>{const{compKey:t}=e;t&&Fe(t),g(e)},g=e=>{(e.children||[]).forEach(t=>{t.compKey?M(t):g(t)})},Fe=e=>{const t=u.get(e);t&&(t.umts.forEach(c=>c()),t.umts=[],u.delete(e))};let Q=[];const j=()=>{Q.forEach(e=>Oe(e)),Q=[]},Ue=e=>{e.compKey&&Q.push(e)},Ae=e=>u.get(E()).mts.push(e),Oe=e=>{const{compKey:t}=e;if(t){const c=u.get(t),s=c==null?void 0:c.mts,n=c==null?void 0:c.upS;R.value=t,n&&(n.value=0),s&&(c.mts=[],s.forEach(r=>{const o=r();o&&Ne(o)}))}},m=(e,t=()=>[])=>{const c=u.get(E()),{upD:s,upS:n}=c,r=s[n.value];if(r&&Me(r,t())){const o=e();o&&c.upCB.push(o)}s[n.value]=t(),n.value+=1},Le=e=>{const{compKey:t}=e;if(t){const c=u.get(t),s=c==null?void 0:c.upCB,n=c==null?void 0:c.upS;R.value=t,n&&(n.value=0),e.ctor&&s&&(c.upCB=[],s.forEach(r=>r()))}},Me=(e,t)=>!e.length&&!e.length?!0:e.some((c,s)=>c!==t[s]),Qe=(e,t,c)=>{t??(t=document.body),e.isRoot=!0,e.wrapElement=t;const s=N(e);return c?(e.afterElement=c,t.insertBefore(s,c)):t.appendChild(s),j(),()=>{var r;const n=(r=u.get(e.compProps||{}))==null?void 0:r.vd.value;n&&(M(n),B(n),je(n))}},w=e=>{const{needRerender:t}=e;t&&t!=="N"&&{A:q,D:I,R:Ie,U:qe,SR:ee,SU:Be}[t](e)},B=e=>{e.props&&e.el&&ce(e.props,e.el),(e.children||[]).forEach(t=>{B(t)})},je=e=>{W(e,e.wrapElement)},I=e=>{e.oldProps&&e.el&&ce(e.oldProps,e.el),W(e,F(h(e)))},W=(e,t)=>{var c,s;t&&e.el&&(((c=e.el)==null?void 0:c.nodeType)===1?t.removeChild(e.el):((s=e.el)==null?void 0:s.nodeType)===11&&D(e,t),delete e.el)},D=(e,t)=>{((e==null?void 0:e.oldChildren)||(e==null?void 0:e.children)||[]).forEach(c=>{var s,n;((s=c.el)==null?void 0:s.nodeType)===1?t.removeChild(c==null?void 0:c.el):((n=c.el)==null?void 0:n.nodeType)===11&&D(c,t)})},ee=e=>{I(e),q(e)},Be=e=>{I(e),q(e,e.el)},q=(e,t)=>{t||(t=N(e));const c=h(e);if(c.type){const s=F(c),r=c.type==="loop"?_(c,h(c)):_(e,c);t&&s&&(r?s.insertBefore(t,r):s.appendChild(t),j())}},_=(e,t)=>{const c=t.children||[],n=c.indexOf(e)+1,r=c.slice(n),o=te(r),f=t.type||"";if(o)return o;if(!t.isRoot&&T(f))return _(t,h(t));if(t.isRoot&&t.afterElement)return t.afterElement},te=e=>e.reduce((t,c)=>{const s=c.type,n=c.el,r=s&&T(s);return t||(r?te(c.children||[]):n&&n.nodeType!==11?n:t)},void 0),Ie=e=>{const t=h(e),c=e.el;if(t.type&&c)if(c.nodeType===11)ee(e);else{const s=F(t),n=N(e);s&&s.replaceChild(n,c),j()}},ce=(e,t)=>{k(e||{}).forEach(([c,s])=>{c.match(/^on/)&&t.removeEventListener(H(c),s)})},qe=e=>{var c;const t=e.el;if(e.type==="text"){_e(e);return}if(t){const{oldProps:s,props:n}=e;se(n,t,s),delete e.oldProps,e.tag==="input"&&(t.value=String(((c=e==null?void 0:e.props)==null?void 0:c.value)||""))}(e.children||[]).forEach(s=>w(s)),Le(e)},_e=e=>{const t=e.el;t&&(t.nodeValue=String(e.text))},se=(e,t,c)=>{const s={...c};k(e||{}).forEach(([n,r])=>{let o=!0;n==="key"||(n==="innerHTML"&&typeof r=="string"?t.innerHTML=r:$(n,r)?$e(r,$(n,s.style)?s.style:{},t):he(n,r)?r.value=t:n.match(/^on/)?Xe(t,n,r,s[n]):ve(t)&&n==="checked"?t.checked=!!r:ye(t)&&n==="value"?t.value=r:ie(t)&&n==="selected"?t.selected=!!r:n&&([o,r]=ze(r),o&&(C.value&&n!=="xmlns"?t.setAttributeNS(null,J(n),r):t.setAttribute(J(n),r)))),o&&delete s[n]}),Y(s).forEach(n=>t.removeAttribute(n))},ze=e=>{let t=!0;return typeof e=="boolean"&&(e||(t=!1),e=""),[t,String(e)]},N=e=>{let t;const{type:c,tag:s,text:n,props:r,children:o=[]}=e,f=T(c);return s==="svg"&&(C.value=String(r==null?void 0:r.xmlns)),f?t=new DocumentFragment:c==="element"&&s?t=C.value?document.createElementNS(C.value,s):document.createElement(s):c==="text"&&a(n)?t=document.createTextNode(String(n)):t=document.createElement("e"),Ge(o,t),se(r,t),e.el=t,Ue(e),s==="svg"&&(C.value=""),t},Ge=(e,t)=>{const c=e.reduce((s,n)=>(n.type&&s.appendChild(N(n)),s),new DocumentFragment);t&&c.hasChildNodes()&&t.appendChild(c)},Xe=(e,t,c,s)=>{const n=H(t);s!==c&&(s&&e.removeEventListener(n,s),c&&e.addEventListener(n,c))},$e=(e,t,c)=>{const s={...t},n=c==null?void 0:c.style;n&&(k(e).forEach(([r,o])=>{n[r]=o,delete s[r]}),k(s).forEach(([r])=>n[r]=""))},F=e=>{const t=T(e.type);return e.isRoot&&t?e.wrapElement:t?F(h(e)):e.el},U=(e,t)=>He(e,ke[ae(e)](e,t),t),He=(e,t,c)=>{const s=Ze(e,t,c),n=[s,t,c],r=Ye(...n);return s.children=Ve(...n),s.needRerender=r,Je(s,c,r),s},Je=(e,t,c)=>{c!=="A"&&t&&(e.el=t.el),c&&["D","R","SR"].includes(c)&&(t!=null&&t.compKey&&(M(t),B(t)),e.oldChildren=t==null?void 0:t.children),e.oldProps=t==null?void 0:t.props},Ye=(e,t,c)=>{const s=c&&c.type,n=X(e),o=!!e.getParent&&h(e).type,f=y(e),v=o==="loop"&&a(f),i=e.type==="text"&&t&&e.text===(c==null?void 0:c.text);let d;return n?d="D":i?d="N":s?t?d=v?"SU":"U":d=v?"SR":"R":d="A",d},Ze=(e,t,c)=>x(e)?t&&c?Ce(c,e):e.resolve():e,Ve=(e,t,c)=>t&&c?ge(e,c):Ke(e),Ke=e=>(e.children||[]).map(t=>S(U(t),{getParent:()=>e})),ge=(e,t)=>e.type==="loop"&&a(y((e.children||[])[0]))?me(e,t):(e.children||[]).map((c,s)=>S(U(c,(t.children||[])[s]),{getParent:()=>e})),me=(e,t)=>{const[c,s]=we(e,t);return s.map(n=>{const r=n.el;r!=null&&r.parentNode&&r.parentNode.removeChild(r)}),c},we=(e,t)=>{const c=[...e.children||[]],s=[...t.children||[]];return[c.map(r=>{const o=We(r,s),f=U(r,o);return o&&s.splice(s.indexOf(o),1),f.getParent=()=>e,f}),s]},We=(e,t)=>t.find(c=>y(c)===y(e)),De=(e,t=()=>[])=>{u.get(E()).upR.push(()=>m(e,t)),m(e,t)},et=()=>{var t;const e=(t=u.get(E()))==null?void 0:t.upR;e!=null&&e.length&&e.forEach(c=>c())},z=(e,...t)=>({type:"fragment",children:t}),tt=(e,t,...c)=>{const s={value:void 0},n=t||{},r=ue(s,c),o=ot(e,n,r);return x(o)||(s.value=o),o},ct=e=>(t,c)=>e,ne=(e,t,c,s)=>{var d;L.value=!0;const n=re(e,t,c),r=U(n,s),{isRoot:o,getParent:f,wrapElement:v,afterElement:i}=s;if(r.getParent=f,!o&&f){const le=((d=f())==null?void 0:d.children)||[],dt=le.indexOf(s);le.splice(dt,1,r)}else r.isRoot=!0,r.wrapElement=v,r.afterElement=i;L.value=!1,w(r)},re=(e,t,c)=>({tagName:e.name,ctor:e,props:t,children:c,resolve:(o=t)=>{Se(o);const v=e(t,c)(Pe(o),t,c),i=st(v,o,e,t,c),d=i;return V(o,()=>ne(e,t,c,d)),Z(o,"vd").value=i,i}}),st=(e,t,c,s,n)=>{const r=e(s);if(r.reRender)throw new Error('The root of a component must not be a component, use "Fragment"');return oe(r,t,c,s,n,nt(e,t,c,s,n)),r},nt=(e,t,c,s,n)=>{const r=()=>rt(e,t,c,s,n,r);return r},rt=(e,t,c,s,n,r)=>{xe(t),et();const o=e(s);return V(t,()=>ne(c,s,n,o)),oe(o,t,c,s,n,r),Z(t,"vd").value=o,o},oe=(e,t,c,s,n,r)=>{S(e,{compProps:s,compChild:n,ctor:c,tagName:c.name,compKey:t,reRender:r})},ot=(e,t,c)=>{if(G(e))return z(t,...c);if(x(e)){const s=re(e,t,c);return L.value?s:s.resolve()}return{type:"element",tag:e,props:t,children:c}},ue=(e,t)=>t.map(c=>S(ut(c),{getParent:()=>e.value})),ut=e=>{if(e==null||e===!1)return{type:null};if(Array.isArray(e)){const t={value:void 0},s={type:"loop",children:ue(t,e)};return t.value=s,s}else if(typeof e=="string"||typeof e=="number")return{type:"text",text:e};return e},lt=e=>({value:e}),ft=()=>Promise.resolve();l.Fragment=z,l.h=tt,l.mount=ct,l.mountCallback=Ae,l.nextTick=ft,l.ref=lt,l.render=Qe,l.updateCallback=De,Object.defineProperty(l,Symbol.toStringTag,{value:"Module"})});
|
|
2
2
|
//# sourceMappingURL=lithent.umd.js.map
|
package/dist/lithent.umd.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lithent.umd.js","sources":["../src/utils/predicator.ts","../src/utils/index.ts","../src/utils/universalRef.ts","../src/hook/unmount.ts","../src/hook/mountCallback.ts","../src/hook/useUpdate.ts","../src/render.ts","../src/diff.ts","../src/hook/updateCallback.ts","../src/wDom.ts","../src/hook/ref.ts"],"sourcesContent":["import { Fragment } from '@/wDom';\nimport {\n WDom,\n TagFunction,\n TagFunctionResolver,\n FragmentFunction,\n WDomType,\n} from '@/types';\n\ntype WDomParam =\n | string\n | WDom\n | TagFunction\n | TagFunctionResolver\n | FragmentFunction;\n\n/**\n * Predicator\n */\n\nconst checkPlainWDomType = (wDom: WDomParam): wDom is WDom =>\n typeof wDom === 'object' && !('resolve' in wDom);\n\nconst checkPlainType = (wDom: WDomParam, typeName: string) =>\n checkPlainWDomType(wDom) && wDom.type === typeName;\n\nconst checkSameCustomComponent = (\n newWDom: WDom | TagFunction | TagFunctionResolver,\n originalWDom?: WDom\n) =>\n 'ctor' in newWDom\n ? newWDom.ctor === originalWDom?.ctor\n : newWDom === originalWDom?.ctor;\n\nconst checkSameFragment = (\n newWDom: WDom | TagFunction | TagFunctionResolver,\n originalWDom?: WDom\n) =>\n checkPlainWDomType(newWDom) &&\n originalWDom?.type === 'fragment' &&\n originalWDom?.children?.length === newWDom?.children?.length;\n\nconst checkSameTagElement = (\n newWDom: WDom | TagFunction | TagFunctionResolver,\n originalWDom?: WDom\n) =>\n checkPlainWDomType(newWDom) &&\n originalWDom?.type === 'element' &&\n originalWDom?.tag === newWDom.tag &&\n originalWDom?.children?.length === newWDom?.children?.length;\n\nconst checkNormalTypeElement = (\n newWDom: WDom | TagFunction | TagFunctionResolver,\n originalWDom?: WDom\n) =>\n checkPlainWDomType(newWDom) &&\n originalWDom?.type === newWDom.type &&\n (originalWDom?.children?.length === newWDom?.children?.length ||\n (newWDom.type === 'loop' &&\n checkExisty(getKey((newWDom.children || [])[0])) &&\n checkExisty(getKey((originalWDom.children || [])[0]))));\n\nexport const getKey = (target: WDom) =>\n target?.compProps?.key ?? target?.props?.key;\n\nexport const checkVirtualType = (type: string | null) =>\n type && ['fragment', 'loop'].includes(type);\n\nexport const checkCustemComponentFunction = (\n target: WDomParam\n): target is TagFunction | TagFunctionResolver =>\n (typeof target === 'function' && !checkFragmentFunction(target)) ||\n (typeof target === 'object' && 'resolve' in target);\n\nexport const checkFragmentFunction = (\n target: unknown\n): target is FragmentFunction =>\n typeof target === 'function' && target === Fragment;\n\nexport const checkEmptyElement = (wDom: WDomParam) =>\n checkPlainWDomType(wDom) && !wDom.type;\n\nexport const checkExisty = (value: unknown) =>\n value !== null && value !== undefined;\n\nexport const checkStyleData = (\n dataKey: string,\n dataValue: unknown\n): dataValue is Record<string, string> =>\n dataKey === 'style' && typeof dataValue === 'object';\n\nexport const checkRefData = (\n dataKey: string,\n dataValue: unknown\n): dataValue is {\n value: HTMLElement | Element | DocumentFragment | Text | undefined;\n} => dataKey === 'ref' && typeof dataValue === 'object';\n\nexport const checkOptionElement = (element: any): element is HTMLElement =>\n element.nodeType === 1 && element.tagName === 'OPTION';\n\nexport const checkTextareaElement = (element: any): element is HTMLElement =>\n element.nodeType === 1 && element.tagName === 'TEXTAREA';\n\nexport const checkCheckableElement = (element: any): element is HTMLElement =>\n element.nodeType === 1 && ['radio', 'checkbox'].includes(element.type);\n\nexport const getWDomType = (\n wDom: WDom | TagFunction | TagFunctionResolver\n): WDomType => {\n let result: WDomType = 'et';\n\n if (checkCustemComponentFunction(wDom)) {\n result = 'c';\n } else if (checkPlainType(wDom, 'fragment')) {\n result = 'f';\n } else if (checkPlainType(wDom, 'element')) {\n result = 'e';\n } else if (checkPlainType(wDom, 'loop')) {\n result = 'l';\n } else if (checkPlainType(wDom, 'text')) {\n result = 't';\n } else if (checkEmptyElement(wDom)) {\n result = 'et';\n }\n\n return result;\n};\n\nexport const checkSameWDomWithOriginal = {\n c: checkSameCustomComponent,\n l: checkNormalTypeElement,\n t: checkNormalTypeElement,\n e: checkSameTagElement,\n f: checkSameFragment,\n et: checkNormalTypeElement,\n};\n","import { WDom, TagFunctionResolver, Props } from '@/types';\n\nexport const getParent = (vDom: WDom) => {\n const parentVDom = vDom.getParent && vDom.getParent();\n\n return parentVDom as WDom;\n};\n\nexport const reRender = (vDom: WDom, infoVdom: TagFunctionResolver) => {\n const { compProps: props, compChild: children } = vDom;\n const { props: infoProps, children: infoChidren } = infoVdom;\n\n if (props) {\n updateProps(props, infoProps);\n }\n\n if (children) {\n updateChildren(children, infoChidren);\n }\n\n const newVDom = vDom.reRender && vDom.reRender();\n\n return newVDom as WDom;\n};\n\nexport const getEventName = (eventKey: string) =>\n eventKey.replace(/^on(.*)/, (_match, p1) => p1.toLowerCase());\n\nexport const getAttrKey = (keyName: string) =>\n keyName === 'className' ? 'class' : keyName;\n\nexport const entries = Object.entries;\nexport const keys = Object.keys;\nexport const assign = Object.assign;\n\nconst updateProps = (props: Props, infoProps: Props) => {\n if (props && infoProps !== props) {\n keys(props).forEach(key => delete props[key]);\n\n entries(infoProps || {}).forEach(([key, value]) => (props[key] = value));\n }\n};\n\nconst updateChildren = (children: WDom[], infoChidren: WDom[]) => {\n if (children && infoChidren !== children) {\n children.splice(0, children.length);\n\n if (infoChidren) {\n infoChidren.forEach(childrenItem => children.push(childrenItem));\n }\n }\n};\n","import { ComponentRef, ComponentSubKey, Props, WDom } from '@/types';\n\ntype RedrawQueueList = {\n compKey: Props;\n exec: () => void;\n}[];\n\nlet redrawQueue: { compKey: Props; exec: () => void }[] = [];\nlet redrawQueueTimeout: boolean = false;\n\n/**\n * Common\n */\nexport const xmlnsRef: { value: string } = { value: '' };\nexport const compKeyRef: { value: Props } = { value: {} };\nexport const needDiffRef: { value: boolean } = { value: false };\nexport const componentRef: ComponentRef = new WeakMap();\n\nexport const componentRender = (compKey: Props) => () => {\n const up = componentRef.get(compKey)?.up;\n let result = false;\n if (up) {\n up();\n result = true;\n }\n\n return result;\n};\n\nconst setComponetRef = (compKey: Props) => {\n componentRef.set(compKey, {\n vd: { value: null },\n up: () => {},\n upR: [],\n upS: { value: 0 },\n upD: [],\n upCB: [],\n mts: [],\n umts: [],\n });\n};\n\nexport const getComponentKey = () => compKeyRef.value;\n\nexport const getComponentSubInfo = (compKey: Props, subKey: ComponentSubKey) =>\n componentRef.get(compKey)![subKey];\n\nexport const setRedrawAction = (compKey: Props, exec: () => void) => {\n componentRef.get(compKey)!.up = () => {\n redrawQueue.push({\n compKey,\n exec,\n });\n\n if (!redrawQueueTimeout) {\n redrawQueueTimeout = true;\n queueMicrotask(execRedrawQueue);\n }\n };\n};\n\nexport const initUpdateHookState = (compKey: Props) =>\n (compKeyRef.value = compKey);\n\nexport const initMountHookState = (compKey: Props) => {\n compKeyRef.value = compKey;\n setComponetRef(compKey);\n};\n\nconst recursiveGetChildKeys = (wDom: WDom, result: Props[]) => {\n (wDom.children || []).forEach(item => {\n const childComKey = item.compKey;\n if (childComKey) {\n result.push(childComKey);\n }\n\n recursiveGetChildKeys(item, result);\n });\n};\n\nconst execRedrawQueue = () => {\n let childItemList: Props[] = [];\n\n redrawQueue.forEach(item => {\n const childVd = componentRef.get(item.compKey)?.vd?.value;\n if (childVd) {\n recursiveGetChildKeys(childVd, childItemList);\n }\n });\n\n const addedKey: Props[] = [];\n const result = redrawQueue.reduce((acc, item) => {\n const { compKey } = item;\n\n if (childItemList.includes(compKey) || addedKey.includes(compKey)) {\n return acc;\n }\n\n addedKey.push(compKey);\n acc.push(item);\n\n return acc;\n }, [] as RedrawQueueList);\n\n while (result.length) {\n const action = result.shift();\n if (action) {\n action.exec();\n }\n }\n\n redrawQueue = [];\n redrawQueueTimeout = false;\n};\n","import { WDom, Props } from '@/types';\nimport { componentRef, getComponentKey } from '@/utils/universalRef';\n\nexport const unmount = (effectAction: () => void) => {\n componentRef.get(getComponentKey())!.umts.push(effectAction);\n};\n\nexport const runUnmountQueueFromWDom = (newWDom: WDom) => {\n const { compKey } = newWDom;\n\n if (compKey) {\n removeItem(compKey);\n }\n recursiveRunUnmount(newWDom);\n};\n\nconst recursiveRunUnmount = (wDom: WDom) => {\n (wDom.children || []).forEach(item => {\n const childComKey = item.compKey;\n if (childComKey) {\n runUnmountQueueFromWDom(item);\n } else {\n recursiveRunUnmount(item);\n }\n });\n};\n\nconst removeItem = (compKey: Props) => {\n const subInfo = componentRef.get(compKey);\n if (subInfo) {\n subInfo!.umts.forEach(effect => effect());\n subInfo!.umts = [];\n componentRef.delete(compKey);\n }\n};\n","import { WDom } from '@/types';\nimport {\n compKeyRef,\n componentRef,\n getComponentKey,\n} from '@/utils/universalRef';\nimport { unmount } from '@/hook/unmount';\n\nlet mountedQueue: WDom[] = [];\n\nexport const execMountedQueue = () => {\n mountedQueue.forEach(item => runMountedQueueFromWDom(item));\n mountedQueue = [];\n};\nexport const addMountedQueue = (wDom: WDom) => {\n if (wDom.compKey) {\n mountedQueue.push(wDom);\n }\n};\nexport const mountCallback = (effectAction: () => void) =>\n componentRef.get(getComponentKey())!.mts.push(effectAction);\n\nexport const runMountedQueueFromWDom = (newWDom: WDom) => {\n const { compKey } = newWDom;\n\n if (compKey) {\n const component = componentRef.get(compKey);\n const queue = component?.mts;\n const sequence = component?.upS;\n\n compKeyRef.value = compKey;\n\n if (sequence) {\n sequence.value = 0;\n }\n\n if (queue) {\n component.mts = [];\n\n queue.forEach((effect: Function) => {\n const callback = effect();\n if (callback) {\n unmount(callback);\n }\n });\n }\n }\n};\n","import { WDom } from '@/types';\nimport {\n compKeyRef,\n componentRef,\n getComponentKey,\n} from '@/utils/universalRef';\n\nexport const useUpdated = (\n effectAction: () => (() => void) | void,\n dependencies: () => any[] = () => []\n) => {\n const component = componentRef.get(getComponentKey());\n const { upD, upS } = component!;\n const def = upD[upS.value];\n\n if (def && checkNeedPushQueue(def, dependencies())) {\n const callback = effectAction();\n if (callback) {\n component!.upCB.push(callback);\n }\n }\n\n upD[upS.value] = dependencies();\n upS.value += 1;\n};\n\nexport const runUpdatedQueueFromWDom = (newWDom: WDom) => {\n const { compKey } = newWDom;\n\n if (compKey) {\n const component = componentRef.get(compKey);\n const queue = component?.upCB;\n const sequence = component?.upS;\n\n compKeyRef.value = compKey;\n\n if (sequence) {\n sequence.value = 0;\n }\n\n if (newWDom.ctor && queue) {\n component.upCB = [];\n queue.forEach((effect: Function) => effect());\n }\n }\n};\n\nconst checkNeedPushQueue = (originalDefs: unknown[], newDefs: unknown[]) =>\n !originalDefs.length && !originalDefs.length\n ? true\n : originalDefs.some((def, index) => def !== newDefs[index]);\n","import { WDom, Props } from '@/types';\nimport {\n checkStyleData,\n checkRefData,\n checkExisty,\n checkOptionElement,\n checkTextareaElement,\n checkCheckableElement,\n checkVirtualType,\n} from '@/utils/predicator';\n\nimport { componentRef, xmlnsRef } from '@/utils/universalRef';\nimport { runUnmountQueueFromWDom } from '@/hook/unmount';\nimport { execMountedQueue, addMountedQueue } from '@/hook/mountCallback';\nimport { runUpdatedQueueFromWDom } from '@/hook/useUpdate';\nimport { getParent, getEventName, getAttrKey, entries, keys } from '@/utils';\n\nexport const render = (\n wDom: WDom,\n wrapElement: HTMLElement | null,\n afterElement?: HTMLElement | null\n) => {\n wrapElement ??= document.body;\n wDom.isRoot = true;\n wDom.wrapElement = wrapElement;\n\n const Dom = wDomToDom(wDom);\n\n if (afterElement) {\n wDom.afterElement = afterElement;\n wrapElement.insertBefore(Dom, afterElement);\n } else {\n wrapElement.appendChild(Dom);\n }\n\n execMountedQueue();\n\n return () => {\n const component = componentRef.get(wDom.compProps || {})?.vd.value;\n if (component) {\n runUnmountQueueFromWDom(component);\n recursiveRemoveEvent(component);\n rootDelete(component);\n }\n };\n};\n\nexport const wDomUpdate = (newWDomTree: WDom) => {\n const { needRerender } = newWDomTree;\n\n if (needRerender && needRerender !== 'N') {\n ({\n A: typeAdd,\n D: typeDelete,\n R: typeReplace,\n U: typeUpdate,\n SR: typeSortedReplace,\n SU: typeSortedUpdate,\n })[needRerender](newWDomTree);\n }\n};\n\nexport const recursiveRemoveEvent = (originalWDom: WDom) => {\n if (originalWDom.props && originalWDom.el) {\n removeEvent(originalWDom.props, originalWDom.el);\n }\n\n (originalWDom.children || []).forEach((childItem: WDom) => {\n recursiveRemoveEvent(childItem);\n });\n};\n\nconst rootDelete = (newWDom: WDom) => {\n deleteRealDom(newWDom, newWDom.wrapElement as HTMLElement);\n};\n\nconst typeDelete = (newWDom: WDom) => {\n if (newWDom.oldProps && newWDom.el) {\n removeEvent(newWDom.oldProps, newWDom.el);\n }\n\n deleteRealDom(\n newWDom,\n findRealParentElement(getParent(newWDom)) as HTMLElement\n );\n};\n\nconst deleteRealDom = (newWDom: WDom, parent: HTMLElement) => {\n if (parent && newWDom.el) {\n if (newWDom.el?.nodeType === 1) {\n parent.removeChild(newWDom.el);\n } else if (newWDom.el?.nodeType === 11) {\n findChildWithRemoveElement(newWDom, parent as HTMLElement);\n }\n delete newWDom.el;\n }\n};\n\nconst findChildWithRemoveElement = (newWDom: WDom, parent: HTMLElement) => {\n (newWDom?.oldChildren || newWDom?.children || []).forEach(item => {\n if (item.el?.nodeType === 1) {\n parent.removeChild(item?.el);\n } else if (item.el?.nodeType === 11) {\n findChildWithRemoveElement(item, parent);\n }\n });\n};\n\nconst typeSortedReplace = (newWDom: WDom) => {\n typeDelete(newWDom);\n typeAdd(newWDom);\n};\n\nconst typeSortedUpdate = (newWDom: WDom) => {\n typeDelete(newWDom);\n typeAdd(newWDom, newWDom.el);\n};\n\nconst typeAdd = (\n newWDom: WDom,\n newElement?: HTMLElement | DocumentFragment | Text\n) => {\n if (!newElement) {\n newElement = wDomToDom(newWDom) as HTMLElement;\n }\n\n const parentWDom = getParent(newWDom);\n if (parentWDom.type) {\n const parentEl = findRealParentElement(parentWDom);\n const isLoop = parentWDom.type === 'loop';\n const nextEl = isLoop\n ? startFindNextBrotherElement(parentWDom, getParent(parentWDom))\n : startFindNextBrotherElement(newWDom, parentWDom);\n\n if (newElement && parentEl) {\n if (nextEl) {\n parentEl.insertBefore(newElement, nextEl);\n } else {\n parentEl.appendChild(newElement);\n }\n\n execMountedQueue();\n }\n }\n};\n\nconst startFindNextBrotherElement = (\n wDom: WDom,\n parentWDom: WDom\n): HTMLElement | DocumentFragment | Text | undefined => {\n const brothers = parentWDom.children || [];\n const index = brothers.indexOf(wDom);\n const nextIndex = index + 1;\n const candidiateBrothers = brothers.slice(nextIndex);\n\n const finedNextEl = findChildFragmentNextElement(candidiateBrothers);\n const parentType = parentWDom.type || '';\n\n if (finedNextEl) {\n return finedNextEl;\n }\n\n if (!parentWDom.isRoot && checkVirtualType(parentType)) {\n return startFindNextBrotherElement(parentWDom, getParent(parentWDom));\n } else if (parentWDom.isRoot && parentWDom.afterElement) {\n return parentWDom.afterElement;\n }\n\n return undefined;\n};\n\nconst findChildFragmentNextElement = (\n candidiateBrothers: WDom[]\n): HTMLElement | DocumentFragment | Text | undefined =>\n candidiateBrothers.reduce(\n (\n targetEl: HTMLElement | DocumentFragment | Text | undefined,\n bItem: WDom\n ) => {\n const type = bItem.type;\n const el = bItem.el;\n const isFragment = type && checkVirtualType(type);\n\n if (targetEl) {\n return targetEl;\n } else if (isFragment) {\n return findChildFragmentNextElement(bItem.children || []);\n } else if (el && el.nodeType !== 11) {\n return el;\n }\n\n return targetEl;\n },\n undefined\n );\n\nconst typeReplace = (newWDom: WDom) => {\n const parentWDom = getParent(newWDom);\n const orignalElement = newWDom.el;\n\n if (parentWDom.type && orignalElement) {\n if (orignalElement.nodeType === 11) {\n typeSortedReplace(newWDom);\n } else {\n const parentElement = findRealParentElement(parentWDom);\n const newElement = wDomToDom(newWDom);\n\n if (parentElement) {\n parentElement.replaceChild(newElement, orignalElement);\n }\n execMountedQueue();\n }\n }\n};\n\nconst removeEvent = (\n oldProps: Props,\n element: HTMLElement | DocumentFragment | Text\n) => {\n entries(oldProps || {}).forEach(([dataKey, dataValue]: [string, unknown]) => {\n if (dataKey.match(/^on/)) {\n element.removeEventListener(\n getEventName(dataKey),\n dataValue as (e: Event) => void\n );\n }\n });\n};\n\nconst typeUpdate = (newWDom: WDom) => {\n const element = newWDom.el;\n\n if (newWDom.type === 'text') {\n updateText(newWDom);\n\n return;\n }\n\n if (element) {\n const { oldProps, props } = newWDom;\n\n updateProps(props, element, oldProps);\n\n delete newWDom.oldProps;\n\n if (newWDom.tag === 'input') {\n (element as HTMLInputElement).value = String(newWDom?.props?.value || '');\n }\n }\n\n (newWDom.children || []).forEach((childItem: WDom) => wDomUpdate(childItem));\n\n runUpdatedQueueFromWDom(newWDom);\n};\n\nconst updateText = (newWDom: WDom) => {\n const element = newWDom.el;\n\n if (element) {\n element.nodeValue = String(newWDom.text);\n }\n};\n\nconst updateProps = (\n props?: Props,\n element?: HTMLElement | Element | DocumentFragment | Text,\n oldProps?: Props\n) => {\n const originalProps = { ...oldProps };\n\n entries(props || {}).forEach(([dataKey, dataValue]: [string, unknown]) => {\n let chkRemoveProp = true;\n if (dataKey === 'key') {\n // Do nothing\n } else if (dataKey === 'innerHTML' && typeof dataValue === 'string') {\n (element as HTMLElement).innerHTML = dataValue;\n } else if (checkStyleData(dataKey, dataValue)) {\n updateStyle(\n dataValue,\n checkStyleData(dataKey, originalProps.style) ? originalProps.style : {},\n element\n );\n } else if (checkRefData(dataKey, dataValue)) {\n dataValue.value = element;\n } else if (dataKey.match(/^on/)) {\n updateEvent(\n element as HTMLElement,\n dataKey,\n dataValue as (e: Event) => void,\n originalProps[dataKey] as (e: Event) => void\n );\n } else if (checkCheckableElement(element) && dataKey === 'checked') {\n (element as HTMLInputElement).checked = !!dataValue;\n } else if (checkTextareaElement(element) && dataKey === 'value') {\n (element as HTMLInputElement).value = dataValue as string;\n } else if (checkOptionElement(element) && dataKey === 'selected') {\n (element as HTMLOptionElement).selected = !!dataValue;\n } else if (dataKey) {\n [chkRemoveProp, dataValue] = makeAttrDataValue(dataValue);\n\n if (chkRemoveProp) {\n if (xmlnsRef.value && dataKey !== 'xmlns') {\n (element as HTMLElement).setAttributeNS(\n null,\n getAttrKey(dataKey),\n <string>dataValue\n );\n } else {\n (element as HTMLElement).setAttribute(\n getAttrKey(dataKey),\n <string>dataValue\n );\n }\n }\n }\n\n if (chkRemoveProp) {\n delete originalProps[dataKey];\n }\n });\n\n keys(originalProps).forEach(dataKey =>\n (element as HTMLElement).removeAttribute(dataKey)\n );\n};\n\nconst makeAttrDataValue = (dataValue: unknown): [boolean, string] => {\n let allowSetAttr = true;\n if (typeof dataValue === 'boolean') {\n if (!dataValue) {\n allowSetAttr = false;\n }\n\n dataValue = '';\n }\n\n return [allowSetAttr, String(dataValue)];\n};\n\nconst wDomToDom = (wDom: WDom) => {\n let element;\n const { type, tag, text, props, children = [] } = wDom;\n const isVirtualType = checkVirtualType(type);\n\n if (tag === 'svg') {\n xmlnsRef.value = String(props?.xmlns);\n }\n\n if (isVirtualType) {\n element = new DocumentFragment();\n } else if (type === 'element' && tag) {\n element = xmlnsRef.value\n ? document.createElementNS(xmlnsRef.value, tag)\n : document.createElement(tag);\n } else if (type === 'text' && checkExisty(text)) {\n element = document.createTextNode(String(text));\n } else {\n element = document.createElement('e');\n }\n\n wDomChildrenToDom(children, element);\n updateProps(props, element);\n\n wDom.el = element as HTMLElement;\n\n addMountedQueue(wDom);\n\n if (tag === 'svg') {\n xmlnsRef.value = '';\n }\n\n return element;\n};\n\nconst wDomChildrenToDom = (\n children: WDom[],\n parentElement?: HTMLElement | Element | DocumentFragment | Text\n) => {\n const elementChildren = children.reduce(\n (acc: DocumentFragment, childItem: WDom) => {\n if (childItem.type) {\n acc.appendChild(wDomToDom(childItem));\n }\n\n return acc;\n },\n new DocumentFragment()\n );\n\n if (parentElement && elementChildren.hasChildNodes()) {\n parentElement.appendChild(elementChildren);\n }\n};\n\nconst updateEvent = (\n element: HTMLElement,\n eventKey: string,\n newEventHandler: (e: Event) => void,\n oldEventHandler: (e: Event) => void\n) => {\n const eventName = getEventName(eventKey);\n\n if (oldEventHandler !== newEventHandler) {\n if (oldEventHandler) {\n element.removeEventListener(eventName, oldEventHandler);\n }\n\n if (newEventHandler) {\n element.addEventListener(eventName, newEventHandler);\n }\n }\n};\n\nconst updateStyle = (\n style: Record<string, string>,\n oldStyle: Record<string, string>,\n element?: HTMLElement | Element | DocumentFragment | Text\n) => {\n const originalStyle = { ...oldStyle };\n const elementStyle = (element as HTMLElement)?.style;\n\n if (elementStyle) {\n entries(style).forEach(([styleKey, dataValue]) => {\n (elementStyle as any)[styleKey] = dataValue;\n delete originalStyle[styleKey];\n });\n\n entries(originalStyle).forEach(\n ([styleKey]) => ((elementStyle as any)[styleKey] = '')\n );\n }\n};\n\nconst findRealParentElement = (\n vDom: WDom\n): HTMLElement | DocumentFragment | Text | undefined => {\n const isVirtualType = checkVirtualType(vDom.type);\n if (vDom.isRoot && isVirtualType) {\n return vDom.wrapElement;\n }\n\n if (!isVirtualType) {\n return vDom.el as HTMLElement;\n }\n\n return findRealParentElement(getParent(vDom));\n};\n","import { WDom, TagFunctionResolver, RenderType } from '@/types';\nimport { checkCustemComponentFunction, getKey } from '@/utils/predicator';\nimport { getParent, reRender } from '@/utils';\nimport { recursiveRemoveEvent } from '@/render';\nimport {\n checkEmptyElement,\n checkSameWDomWithOriginal,\n getWDomType,\n checkExisty,\n} from '@/utils/predicator';\n\nimport { runUnmountQueueFromWDom } from '@/hook/unmount';\nimport { assign } from '@/utils';\n\nexport const makeNewWDomTree = (\n newWDom: WDom | TagFunctionResolver,\n originalWDom?: WDom\n) =>\n remakeNewWDom(\n newWDom,\n checkSameWDomWithOriginal[getWDomType(newWDom)](newWDom, originalWDom),\n originalWDom\n );\n\nconst remakeNewWDom = (\n newWDom: WDom | TagFunctionResolver,\n isSameType: boolean,\n originalWDom?: WDom\n) => {\n const remakeWDom = generalize(newWDom, isSameType, originalWDom);\n const param: [newWDom: WDom, isSameType: boolean, originalWDom?: WDom] = [\n remakeWDom,\n isSameType,\n originalWDom,\n ];\n const needRerender = addReRenderTypeProperty(...param);\n\n remakeWDom.children = remakeChildrenForDiff(...param);\n remakeWDom.needRerender = needRerender;\n\n inheritPropForRender(remakeWDom, originalWDom, needRerender);\n\n return remakeWDom;\n};\n\nconst inheritPropForRender = (\n remakeWDom: WDom,\n originalWDom?: WDom,\n needRerender?: RenderType\n) => {\n if (needRerender !== 'A' && originalWDom) {\n remakeWDom.el = originalWDom.el;\n }\n\n if (needRerender && ['D', 'R', 'SR'].includes(needRerender)) {\n if (originalWDom?.compKey) {\n runUnmountQueueFromWDom(originalWDom);\n recursiveRemoveEvent(originalWDom);\n }\n remakeWDom.oldChildren = originalWDom?.children;\n }\n\n remakeWDom.oldProps = originalWDom?.props;\n};\n\nconst addReRenderTypeProperty = (\n newWDom: WDom,\n isSameType: boolean,\n originalWDom?: WDom\n): RenderType | undefined => {\n const existOriginalWDom = originalWDom && originalWDom.type;\n const isEmptyElement = checkEmptyElement(newWDom);\n const isRoot = !newWDom.getParent;\n const parentType = !isRoot && getParent(newWDom).type;\n const key = getKey(newWDom);\n const isKeyCheckedWDom = parentType === 'loop' && checkExisty(key);\n const isSameText =\n newWDom.type === 'text' &&\n isSameType &&\n newWDom.text === originalWDom?.text;\n\n let result: RenderType | undefined;\n if (isEmptyElement) {\n result = 'D';\n } else if (isSameText) {\n result = 'N';\n } else if (!existOriginalWDom) {\n result = 'A';\n } else if (isSameType) {\n result = isKeyCheckedWDom ? 'SU' : 'U';\n } else {\n result = isKeyCheckedWDom ? 'SR' : 'R';\n }\n\n return result;\n};\n\nconst generalize = (\n newWDom: WDom | TagFunctionResolver,\n isSameType: boolean,\n originalWDom?: WDom\n): WDom => {\n if (checkCustemComponentFunction(newWDom)) {\n return isSameType && originalWDom\n ? reRender(originalWDom, newWDom)\n : newWDom.resolve();\n }\n\n return newWDom;\n};\n\nconst remakeChildrenForDiff = (\n newWDom: WDom,\n isSameType: boolean,\n originalWDom?: WDom\n) =>\n isSameType && originalWDom\n ? remakeChildrenForUpdate(newWDom, originalWDom)\n : remakeChildrenForAdd(newWDom);\n\nconst remakeChildrenForAdd = (newWDom: WDom) =>\n (newWDom.children || []).map((item: WDom) =>\n assign(makeNewWDomTree(item), { getParent: () => newWDom })\n );\n\nconst remakeChildrenForUpdate = (newWDom: WDom, originalWDom: WDom) =>\n newWDom.type === 'loop' && checkExisty(getKey((newWDom.children || [])[0]))\n ? remakeChildrenForLoopUpdate(newWDom, originalWDom)\n : (newWDom.children || []).map((item: WDom, index: number) =>\n assign(makeNewWDomTree(item, (originalWDom.children || [])[index]), {\n getParent: () => newWDom,\n })\n );\n\nconst remakeChildrenForLoopUpdate = (newWDom: WDom, originalWDom: WDom) => {\n const [remakedChildren, unUsedChildren] = diffLoopChildren(\n newWDom,\n originalWDom\n );\n\n unUsedChildren.map(unusedItem => {\n const el = unusedItem.el;\n\n if (el?.parentNode) {\n el.parentNode.removeChild(el);\n }\n });\n\n return remakedChildren;\n};\n\nconst diffLoopChildren = (newWDom: WDom, originalWDom: WDom) => {\n const newChildren = [...(newWDom.children || [])];\n const originalChildren = [...(originalWDom.children || [])];\n const remakedChildren = newChildren.map(item => {\n const originalItem = findSameKeyOriginalItem(item, originalChildren);\n const childItem = makeNewWDomTree(item, originalItem);\n\n if (originalItem) {\n originalChildren.splice(originalChildren.indexOf(originalItem), 1);\n }\n\n childItem.getParent = () => newWDom;\n\n return childItem;\n });\n\n return [remakedChildren, originalChildren];\n};\n\nconst findSameKeyOriginalItem = (item: WDom, originalChildren: WDom[]) =>\n originalChildren.find(\n orignalChildItem => getKey(orignalChildItem) === getKey(item)\n );\n","import { componentRef, getComponentKey } from '@/utils/universalRef';\n\nimport { useUpdated } from '@/hook/useUpdate';\n\nexport const updateCallback = (\n effectAction: () => (() => void) | void,\n dependencies: () => any[] = () => []\n) => {\n const updateReqs = componentRef.get(getComponentKey())!.upR;\n\n updateReqs.push(() => useUpdated(effectAction, dependencies));\n useUpdated(effectAction, dependencies);\n};\n\nexport const runUpdateCallback = () => {\n const updateReqs = componentRef.get(getComponentKey())?.upR;\n\n if (updateReqs?.length) {\n updateReqs.forEach(callback => callback());\n }\n};\n","import {\n WDom,\n TagFunction,\n FragmentFunction,\n Props,\n MiddleStateWDomChildren,\n MiddleStateWDom,\n NodePointer,\n Component,\n} from '@/types';\n\nimport { makeNewWDomTree } from '@/diff';\nimport { wDomUpdate } from '@/render';\nimport {\n initUpdateHookState,\n initMountHookState,\n setRedrawAction,\n needDiffRef,\n componentRender,\n getComponentSubInfo,\n} from '@/utils/universalRef';\nimport { runUpdateCallback } from '@/hook/updateCallback';\nimport {\n checkFragmentFunction,\n checkCustemComponentFunction,\n} from '@/utils/predicator';\nimport { assign } from '@/utils';\n\nexport const Fragment = (_props: Props, ...children: WDom[]) => ({\n type: 'fragment',\n children,\n});\n\nexport const h = (\n tag: TagFunction | FragmentFunction | string,\n props: Props,\n ...children: MiddleStateWDomChildren\n) => {\n const nodeParentPointer: NodePointer = { value: undefined };\n const newProps = props || {};\n const newChildren = remakeChildren(nodeParentPointer, children);\n const node = makeNode(tag, newProps, newChildren);\n\n if (!checkCustemComponentFunction(node)) {\n nodeParentPointer.value = node;\n }\n\n return node;\n};\n\nexport const mount =\n <T>(component: Component<T>) =>\n (_props: T, _children: WDom[]) =>\n component;\n\nconst reRenderCustomComponent = (\n tag: TagFunction,\n props: Props,\n children: WDom[],\n originalWDom: WDom\n) => {\n needDiffRef.value = true;\n\n const newWDom = makeWDomResolver(tag, props, children);\n const newWDomTree = makeNewWDomTree(newWDom, originalWDom);\n const { isRoot, getParent, wrapElement, afterElement } = originalWDom;\n\n newWDomTree.getParent = getParent;\n\n if (!isRoot && getParent) {\n const brothers = getParent()?.children || [];\n const index = brothers.indexOf(originalWDom);\n\n brothers.splice(index, 1, newWDomTree);\n } else {\n newWDomTree.isRoot = true;\n newWDomTree.wrapElement = wrapElement;\n newWDomTree.afterElement = afterElement;\n }\n\n needDiffRef.value = false;\n wDomUpdate(newWDomTree);\n};\n\nconst makeWDomResolver = (tag: TagFunction, props: Props, children: WDom[]) => {\n const tagName = tag.name;\n const ctor = tag;\n // 리졸브는 컴포넌트를 새로 만든다.\n const resolve = (compKey = props) => {\n initMountHookState(compKey);\n\n const component = tag(props, children);\n const componentMaker = component(componentRender(compKey), props, children);\n\n const customNode = makeCustomNode(\n componentMaker,\n compKey,\n tag,\n props,\n children\n );\n\n const originalWDom = customNode;\n\n setRedrawAction(compKey, () =>\n reRenderCustomComponent(tag, props, children, originalWDom)\n );\n\n (getComponentSubInfo(compKey, 'vd') as { value: WDom }).value = customNode;\n\n return customNode;\n };\n\n return { tagName, ctor, props, children, resolve };\n};\n\nconst makeCustomNode = (\n componentMaker: (props: Props) => WDom,\n compKey: Props,\n tag: TagFunction,\n props: Props,\n children: WDom[]\n) => {\n const customNode = componentMaker(props);\n if (customNode.reRender) {\n throw new Error(\n 'The root of a component must not be a component, use \"Fragment\"'\n );\n }\n\n addComponentProps(\n customNode,\n compKey,\n tag,\n props,\n children,\n makeReRender(componentMaker, compKey, tag, props, children)\n );\n\n return customNode;\n};\n\nconst makeReRender = (\n componentMaker: (props: Props) => WDom,\n compKey: Props,\n tag: TagFunction,\n props: Props,\n children: WDom[]\n) => {\n const reRender = () =>\n wDomMaker(componentMaker, compKey, tag, props, children, reRender);\n return reRender;\n};\n\nconst wDomMaker = (\n componentMaker: (props: Props) => WDom,\n compKey: Props,\n tag: TagFunction,\n props: Props,\n children: WDom[],\n reRender: () => WDom\n) => {\n initUpdateHookState(compKey);\n runUpdateCallback();\n\n const originalWDom = componentMaker(props);\n\n setRedrawAction(compKey, () =>\n reRenderCustomComponent(tag, props, children, originalWDom)\n );\n\n addComponentProps(originalWDom, compKey, tag, props, children, reRender);\n\n (getComponentSubInfo(compKey, 'vd') as { value: WDom }).value = originalWDom;\n\n return originalWDom;\n};\n\nconst addComponentProps = (\n wDom: WDom,\n compKey: Props,\n tag: TagFunction,\n props: Props,\n children: WDom[],\n reRender: () => WDom\n) => {\n assign(wDom, {\n compProps: props,\n compChild: children,\n ctor: tag,\n tagName: tag.name,\n compKey,\n reRender,\n });\n};\n\nconst makeNode = (\n tag: TagFunction | FragmentFunction | string,\n props: Props,\n children: WDom[]\n) => {\n if (checkFragmentFunction(tag)) {\n return Fragment(props, ...children);\n } else if (checkCustemComponentFunction(tag)) {\n const componetMakeResolver = makeWDomResolver(tag, props, children);\n\n return needDiffRef.value\n ? componetMakeResolver\n : componetMakeResolver.resolve();\n }\n\n return {\n type: 'element',\n tag,\n props,\n children,\n };\n};\n\nconst remakeChildren = (\n nodeParentPointer: NodePointer,\n children: MiddleStateWDomChildren\n): WDom[] =>\n children.map((item: MiddleStateWDom) =>\n assign(makeChildrenItem(item), { getParent: () => nodeParentPointer.value })\n );\n\nconst makeChildrenItem = (item: MiddleStateWDom): WDom => {\n if (item === null || item === undefined || item === false) {\n return { type: null };\n } else if (Array.isArray(item)) {\n const nodeParentPointer: NodePointer = { value: undefined };\n const children = remakeChildren(nodeParentPointer, item);\n const node = {\n type: 'loop',\n children,\n };\n nodeParentPointer.value = node;\n\n return node;\n } else if (typeof item === 'string' || typeof item === 'number') {\n return { type: 'text', text: item };\n }\n\n return item;\n};\n","export const ref = <T>(initValue: T) => ({ value: initValue });\nexport const nextTick = () => Promise.resolve();\n"],"names":["checkPlainWDomType","wDom","checkPlainType","typeName","checkSameCustomComponent","newWDom","originalWDom","checkSameFragment","_a","_b","checkSameTagElement","checkNormalTypeElement","checkExisty","getKey","target","checkVirtualType","type","checkCustemComponentFunction","checkFragmentFunction","Fragment","checkEmptyElement","value","checkStyleData","dataKey","dataValue","checkRefData","checkOptionElement","element","checkTextareaElement","checkCheckableElement","getWDomType","result","checkSameWDomWithOriginal","getParent","vDom","reRender","infoVdom","props","children","infoProps","infoChidren","updateProps","updateChildren","getEventName","eventKey","_match","p1","getAttrKey","keyName","entries","keys","assign","key","childrenItem","redrawQueue","redrawQueueTimeout","xmlnsRef","compKeyRef","needDiffRef","componentRef","componentRender","compKey","up","setComponetRef","getComponentKey","getComponentSubInfo","subKey","setRedrawAction","exec","execRedrawQueue","initUpdateHookState","initMountHookState","recursiveGetChildKeys","item","childComKey","childItemList","childVd","addedKey","acc","action","unmount","effectAction","runUnmountQueueFromWDom","removeItem","recursiveRunUnmount","subInfo","effect","mountedQueue","execMountedQueue","runMountedQueueFromWDom","addMountedQueue","mountCallback","component","queue","sequence","callback","useUpdated","dependencies","upD","upS","def","checkNeedPushQueue","runUpdatedQueueFromWDom","originalDefs","newDefs","index","render","wrapElement","afterElement","Dom","wDomToDom","recursiveRemoveEvent","rootDelete","wDomUpdate","newWDomTree","needRerender","typeAdd","typeDelete","typeReplace","typeUpdate","typeSortedReplace","typeSortedUpdate","removeEvent","childItem","deleteRealDom","findRealParentElement","parent","findChildWithRemoveElement","newElement","parentWDom","parentEl","nextEl","startFindNextBrotherElement","brothers","nextIndex","candidiateBrothers","finedNextEl","findChildFragmentNextElement","parentType","targetEl","bItem","el","isFragment","orignalElement","parentElement","oldProps","updateText","originalProps","chkRemoveProp","updateStyle","updateEvent","makeAttrDataValue","allowSetAttr","tag","text","isVirtualType","wDomChildrenToDom","elementChildren","newEventHandler","oldEventHandler","eventName","style","oldStyle","originalStyle","elementStyle","styleKey","makeNewWDomTree","remakeNewWDom","isSameType","remakeWDom","generalize","param","addReRenderTypeProperty","remakeChildrenForDiff","inheritPropForRender","existOriginalWDom","isEmptyElement","isKeyCheckedWDom","isSameText","remakeChildrenForUpdate","remakeChildrenForAdd","remakeChildrenForLoopUpdate","remakedChildren","unUsedChildren","diffLoopChildren","unusedItem","newChildren","originalChildren","originalItem","findSameKeyOriginalItem","orignalChildItem","updateCallback","runUpdateCallback","updateReqs","_props","h","nodeParentPointer","newProps","remakeChildren","node","makeNode","mount","_children","reRenderCustomComponent","makeWDomResolver","isRoot","componentMaker","customNode","makeCustomNode","addComponentProps","makeReRender","wDomMaker","componetMakeResolver","makeChildrenItem","ref","initValue","nextTick"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"lithent.umd.js","sources":["../src/utils/predicator.ts","../src/utils/index.ts","../src/utils/universalRef.ts","../src/hook/unmount.ts","../src/hook/mountCallback.ts","../src/hook/useUpdate.ts","../src/render.ts","../src/diff.ts","../src/hook/updateCallback.ts","../src/wDom.ts","../src/hook/ref.ts"],"sourcesContent":["import { Fragment } from '@/wDom';\nimport {\n WDom,\n TagFunction,\n TagFunctionResolver,\n FragmentFunction,\n WDomType,\n} from '@/types';\n\ntype WDomParam =\n | string\n | WDom\n | TagFunction\n | TagFunctionResolver\n | FragmentFunction;\n\n/**\n * Predicator\n */\n\nconst checkPlainWDomType = (wDom: WDomParam): wDom is WDom =>\n typeof wDom === 'object' && !('resolve' in wDom);\n\nconst checkPlainType = (wDom: WDomParam, typeName: string) =>\n checkPlainWDomType(wDom) && wDom.type === typeName;\n\nconst checkSameCustomComponent = (\n newWDom: WDom | TagFunction | TagFunctionResolver,\n originalWDom?: WDom\n) =>\n 'ctor' in newWDom\n ? newWDom.ctor === originalWDom?.ctor\n : newWDom === originalWDom?.ctor;\n\nconst checkSameFragment = (\n newWDom: WDom | TagFunction | TagFunctionResolver,\n originalWDom?: WDom\n) =>\n checkPlainWDomType(newWDom) &&\n originalWDom?.type === 'fragment' &&\n originalWDom?.children?.length === newWDom?.children?.length;\n\nconst checkSameTagElement = (\n newWDom: WDom | TagFunction | TagFunctionResolver,\n originalWDom?: WDom\n) =>\n checkPlainWDomType(newWDom) &&\n originalWDom?.type === 'element' &&\n originalWDom?.tag === newWDom.tag &&\n originalWDom?.children?.length === newWDom?.children?.length;\n\nconst checkNormalTypeElement = (\n newWDom: WDom | TagFunction | TagFunctionResolver,\n originalWDom?: WDom\n) =>\n checkPlainWDomType(newWDom) &&\n originalWDom?.type === newWDom.type &&\n (newWDom.type !== 'loop' ||\n (newWDom.type === 'loop' &&\n checkExisty(getKey((newWDom.children || [])[0])) &&\n checkExisty(getKey((originalWDom.children || [])[0]))));\n\nexport const getKey = (target: WDom) =>\n target?.compProps?.key ?? target?.props?.key;\n\nexport const checkVirtualType = (type: string | null) =>\n type && ['fragment', 'loop'].includes(type);\n\nexport const checkCustemComponentFunction = (\n target: WDomParam\n): target is TagFunction | TagFunctionResolver =>\n (typeof target === 'function' && !checkFragmentFunction(target)) ||\n (typeof target === 'object' && 'resolve' in target);\n\nexport const checkFragmentFunction = (\n target: unknown\n): target is FragmentFunction =>\n typeof target === 'function' && target === Fragment;\n\nexport const checkEmptyElement = (wDom: WDomParam) =>\n checkPlainWDomType(wDom) && !wDom.type;\n\nexport const checkExisty = (value: unknown) =>\n value !== null && value !== undefined;\n\nexport const checkStyleData = (\n dataKey: string,\n dataValue: unknown\n): dataValue is Record<string, string> =>\n dataKey === 'style' && typeof dataValue === 'object';\n\nexport const checkRefData = (\n dataKey: string,\n dataValue: unknown\n): dataValue is {\n value: HTMLElement | Element | DocumentFragment | Text | undefined;\n} => dataKey === 'ref' && typeof dataValue === 'object';\n\nexport const checkOptionElement = (element: any): element is HTMLElement =>\n element.nodeType === 1 && element.tagName === 'OPTION';\n\nexport const checkTextareaElement = (element: any): element is HTMLElement =>\n element.nodeType === 1 && element.tagName === 'TEXTAREA';\n\nexport const checkCheckableElement = (element: any): element is HTMLElement =>\n element.nodeType === 1 && ['radio', 'checkbox'].includes(element.type);\n\nexport const getWDomType = (\n wDom: WDom | TagFunction | TagFunctionResolver\n): WDomType => {\n let result: WDomType = 'et';\n\n if (checkCustemComponentFunction(wDom)) {\n result = 'c';\n } else if (checkPlainType(wDom, 'fragment')) {\n result = 'f';\n } else if (checkPlainType(wDom, 'element')) {\n result = 'e';\n } else if (checkPlainType(wDom, 'loop')) {\n result = 'l';\n } else if (checkPlainType(wDom, 'text')) {\n result = 't';\n } else if (checkEmptyElement(wDom)) {\n result = 'et';\n }\n\n return result;\n};\n\nexport const checkSameWDomWithOriginal = {\n c: checkSameCustomComponent,\n l: checkNormalTypeElement,\n t: checkNormalTypeElement,\n e: checkSameTagElement,\n f: checkSameFragment,\n et: checkNormalTypeElement,\n};\n","import { WDom, TagFunctionResolver, Props } from '@/types';\n\nexport const getParent = (vDom: WDom) => {\n const parentVDom = vDom.getParent && vDom.getParent();\n\n return parentVDom as WDom;\n};\n\nexport const reRender = (vDom: WDom, infoVdom: TagFunctionResolver) => {\n const { compProps: props, compChild: children } = vDom;\n const { props: infoProps, children: infoChidren } = infoVdom;\n\n if (props) {\n updateProps(props, infoProps);\n }\n\n if (children) {\n updateChildren(children, infoChidren);\n }\n\n const newVDom = vDom.reRender && vDom.reRender();\n\n return newVDom as WDom;\n};\n\nexport const getEventName = (eventKey: string) =>\n eventKey.replace(/^on(.*)/, (_match, p1) => p1.toLowerCase());\n\nexport const getAttrKey = (keyName: string) =>\n keyName === 'className' ? 'class' : keyName;\n\nexport const entries = Object.entries;\nexport const keys = Object.keys;\nexport const assign = Object.assign;\n\nconst updateProps = (props: Props, infoProps: Props) => {\n if (props && infoProps !== props) {\n keys(props).forEach(key => delete props[key]);\n\n entries(infoProps || {}).forEach(([key, value]) => (props[key] = value));\n }\n};\n\nconst updateChildren = (children: WDom[], infoChidren: WDom[]) => {\n if (children && infoChidren !== children) {\n children.splice(0, children.length);\n\n if (infoChidren) {\n infoChidren.forEach(childrenItem => children.push(childrenItem));\n }\n }\n};\n","import { ComponentRef, ComponentSubKey, Props, WDom } from '@/types';\n\ntype RedrawQueueList = {\n compKey: Props;\n exec: () => void;\n}[];\n\nlet redrawQueue: { compKey: Props; exec: () => void }[] = [];\nlet redrawQueueTimeout: boolean = false;\n\n/**\n * Common\n */\nexport const xmlnsRef: { value: string } = { value: '' };\nexport const compKeyRef: { value: Props } = { value: {} };\nexport const needDiffRef: { value: boolean } = { value: false };\nexport const componentRef: ComponentRef = new WeakMap();\n\nexport const componentRender = (compKey: Props) => () => {\n const up = componentRef.get(compKey)?.up;\n let result = false;\n if (up) {\n up();\n result = true;\n }\n\n return result;\n};\n\nconst setComponetRef = (compKey: Props) => {\n componentRef.set(compKey, {\n vd: { value: null },\n up: () => {},\n upR: [],\n upS: { value: 0 },\n upD: [],\n upCB: [],\n mts: [],\n umts: [],\n });\n};\n\nexport const getComponentKey = () => compKeyRef.value;\n\nexport const getComponentSubInfo = (compKey: Props, subKey: ComponentSubKey) =>\n componentRef.get(compKey)![subKey];\n\nexport const setRedrawAction = (compKey: Props, exec: () => void) => {\n componentRef.get(compKey)!.up = () => {\n redrawQueue.push({\n compKey,\n exec,\n });\n\n if (!redrawQueueTimeout) {\n redrawQueueTimeout = true;\n queueMicrotask(execRedrawQueue);\n }\n };\n};\n\nexport const initUpdateHookState = (compKey: Props) =>\n (compKeyRef.value = compKey);\n\nexport const initMountHookState = (compKey: Props) => {\n compKeyRef.value = compKey;\n setComponetRef(compKey);\n};\n\nconst recursiveGetChildKeys = (wDom: WDom, result: Props[]) => {\n (wDom.children || []).forEach(item => {\n const childComKey = item.compKey;\n if (childComKey) {\n result.push(childComKey);\n }\n\n recursiveGetChildKeys(item, result);\n });\n};\n\nconst execRedrawQueue = () => {\n let childItemList: Props[] = [];\n\n redrawQueue.forEach(item => {\n const childVd = componentRef.get(item.compKey)?.vd?.value;\n if (childVd) {\n recursiveGetChildKeys(childVd, childItemList);\n }\n });\n\n const addedKey: Props[] = [];\n const result = redrawQueue.reduce((acc, item) => {\n const { compKey } = item;\n\n if (childItemList.includes(compKey) || addedKey.includes(compKey)) {\n return acc;\n }\n\n addedKey.push(compKey);\n acc.push(item);\n\n return acc;\n }, [] as RedrawQueueList);\n\n while (result.length) {\n const action = result.shift();\n if (action) {\n action.exec();\n }\n }\n\n redrawQueue = [];\n redrawQueueTimeout = false;\n};\n","import { WDom, Props } from '@/types';\nimport { componentRef, getComponentKey } from '@/utils/universalRef';\n\nexport const unmount = (effectAction: () => void) => {\n componentRef.get(getComponentKey())!.umts.push(effectAction);\n};\n\nexport const runUnmountQueueFromWDom = (newWDom: WDom) => {\n const { compKey } = newWDom;\n\n if (compKey) {\n removeItem(compKey);\n }\n recursiveRunUnmount(newWDom);\n};\n\nconst recursiveRunUnmount = (wDom: WDom) => {\n (wDom.children || []).forEach(item => {\n const childComKey = item.compKey;\n if (childComKey) {\n runUnmountQueueFromWDom(item);\n } else {\n recursiveRunUnmount(item);\n }\n });\n};\n\nconst removeItem = (compKey: Props) => {\n const subInfo = componentRef.get(compKey);\n if (subInfo) {\n subInfo!.umts.forEach(effect => effect());\n subInfo!.umts = [];\n componentRef.delete(compKey);\n }\n};\n","import { WDom } from '@/types';\nimport {\n compKeyRef,\n componentRef,\n getComponentKey,\n} from '@/utils/universalRef';\nimport { unmount } from '@/hook/unmount';\n\nlet mountedQueue: WDom[] = [];\n\nexport const execMountedQueue = () => {\n mountedQueue.forEach(item => runMountedQueueFromWDom(item));\n mountedQueue = [];\n};\nexport const addMountedQueue = (wDom: WDom) => {\n if (wDom.compKey) {\n mountedQueue.push(wDom);\n }\n};\nexport const mountCallback = (effectAction: () => void) =>\n componentRef.get(getComponentKey())!.mts.push(effectAction);\n\nexport const runMountedQueueFromWDom = (newWDom: WDom) => {\n const { compKey } = newWDom;\n\n if (compKey) {\n const component = componentRef.get(compKey);\n const queue = component?.mts;\n const sequence = component?.upS;\n\n compKeyRef.value = compKey;\n\n if (sequence) {\n sequence.value = 0;\n }\n\n if (queue) {\n component.mts = [];\n\n queue.forEach((effect: Function) => {\n const callback = effect();\n if (callback) {\n unmount(callback);\n }\n });\n }\n }\n};\n","import { WDom } from '@/types';\nimport {\n compKeyRef,\n componentRef,\n getComponentKey,\n} from '@/utils/universalRef';\n\nexport const useUpdated = (\n effectAction: () => (() => void) | void,\n dependencies: () => any[] = () => []\n) => {\n const component = componentRef.get(getComponentKey());\n const { upD, upS } = component!;\n const def = upD[upS.value];\n\n if (def && checkNeedPushQueue(def, dependencies())) {\n const callback = effectAction();\n if (callback) {\n component!.upCB.push(callback);\n }\n }\n\n upD[upS.value] = dependencies();\n upS.value += 1;\n};\n\nexport const runUpdatedQueueFromWDom = (newWDom: WDom) => {\n const { compKey } = newWDom;\n\n if (compKey) {\n const component = componentRef.get(compKey);\n const queue = component?.upCB;\n const sequence = component?.upS;\n\n compKeyRef.value = compKey;\n\n if (sequence) {\n sequence.value = 0;\n }\n\n if (newWDom.ctor && queue) {\n component.upCB = [];\n queue.forEach((effect: Function) => effect());\n }\n }\n};\n\nconst checkNeedPushQueue = (originalDefs: unknown[], newDefs: unknown[]) =>\n !originalDefs.length && !originalDefs.length\n ? true\n : originalDefs.some((def, index) => def !== newDefs[index]);\n","import { WDom, Props } from '@/types';\nimport {\n checkStyleData,\n checkRefData,\n checkExisty,\n checkOptionElement,\n checkTextareaElement,\n checkCheckableElement,\n checkVirtualType,\n} from '@/utils/predicator';\n\nimport { componentRef, xmlnsRef } from '@/utils/universalRef';\nimport { runUnmountQueueFromWDom } from '@/hook/unmount';\nimport { execMountedQueue, addMountedQueue } from '@/hook/mountCallback';\nimport { runUpdatedQueueFromWDom } from '@/hook/useUpdate';\nimport { getParent, getEventName, getAttrKey, entries, keys } from '@/utils';\n\nexport const render = (\n wDom: WDom,\n wrapElement: HTMLElement | null,\n afterElement?: HTMLElement | null\n) => {\n wrapElement ??= document.body;\n wDom.isRoot = true;\n wDom.wrapElement = wrapElement;\n\n const Dom = wDomToDom(wDom);\n\n if (afterElement) {\n wDom.afterElement = afterElement;\n wrapElement.insertBefore(Dom, afterElement);\n } else {\n wrapElement.appendChild(Dom);\n }\n\n execMountedQueue();\n\n return () => {\n const component = componentRef.get(wDom.compProps || {})?.vd.value;\n if (component) {\n runUnmountQueueFromWDom(component);\n recursiveRemoveEvent(component);\n rootDelete(component);\n }\n };\n};\n\nexport const wDomUpdate = (newWDomTree: WDom) => {\n const { needRerender } = newWDomTree;\n\n if (needRerender && needRerender !== 'N') {\n ({\n A: typeAdd,\n D: typeDelete,\n R: typeReplace,\n U: typeUpdate,\n SR: typeSortedReplace,\n SU: typeSortedUpdate,\n })[needRerender](newWDomTree);\n }\n};\n\nexport const recursiveRemoveEvent = (originalWDom: WDom) => {\n if (originalWDom.props && originalWDom.el) {\n removeEvent(originalWDom.props, originalWDom.el);\n }\n\n (originalWDom.children || []).forEach((childItem: WDom) => {\n recursiveRemoveEvent(childItem);\n });\n};\n\nconst rootDelete = (newWDom: WDom) => {\n deleteRealDom(newWDom, newWDom.wrapElement as HTMLElement);\n};\n\nconst typeDelete = (newWDom: WDom) => {\n if (newWDom.oldProps && newWDom.el) {\n removeEvent(newWDom.oldProps, newWDom.el);\n }\n\n deleteRealDom(\n newWDom,\n findRealParentElement(getParent(newWDom)) as HTMLElement\n );\n};\n\nconst deleteRealDom = (newWDom: WDom, parent: HTMLElement) => {\n if (parent && newWDom.el) {\n if (newWDom.el?.nodeType === 1) {\n parent.removeChild(newWDom.el);\n } else if (newWDom.el?.nodeType === 11) {\n findChildWithRemoveElement(newWDom, parent as HTMLElement);\n }\n delete newWDom.el;\n }\n};\n\nconst findChildWithRemoveElement = (newWDom: WDom, parent: HTMLElement) => {\n (newWDom?.oldChildren || newWDom?.children || []).forEach(item => {\n if (item.el?.nodeType === 1) {\n parent.removeChild(item?.el);\n } else if (item.el?.nodeType === 11) {\n findChildWithRemoveElement(item, parent);\n }\n });\n};\n\nconst typeSortedReplace = (newWDom: WDom) => {\n typeDelete(newWDom);\n typeAdd(newWDom);\n};\n\nconst typeSortedUpdate = (newWDom: WDom) => {\n typeDelete(newWDom);\n typeAdd(newWDom, newWDom.el);\n};\n\nconst typeAdd = (\n newWDom: WDom,\n newElement?: HTMLElement | DocumentFragment | Text\n) => {\n if (!newElement) {\n newElement = wDomToDom(newWDom) as HTMLElement;\n }\n\n const parentWDom = getParent(newWDom);\n if (parentWDom.type) {\n const parentEl = findRealParentElement(parentWDom);\n const isLoop = parentWDom.type === 'loop';\n const nextEl = isLoop\n ? startFindNextBrotherElement(parentWDom, getParent(parentWDom))\n : startFindNextBrotherElement(newWDom, parentWDom);\n\n if (newElement && parentEl) {\n if (nextEl) {\n parentEl.insertBefore(newElement, nextEl);\n } else {\n parentEl.appendChild(newElement);\n }\n\n execMountedQueue();\n }\n }\n};\n\nconst startFindNextBrotherElement = (\n wDom: WDom,\n parentWDom: WDom\n): HTMLElement | DocumentFragment | Text | undefined => {\n const brothers = parentWDom.children || [];\n const index = brothers.indexOf(wDom);\n const nextIndex = index + 1;\n const candidiateBrothers = brothers.slice(nextIndex);\n\n const finedNextEl = findChildFragmentNextElement(candidiateBrothers);\n const parentType = parentWDom.type || '';\n\n if (finedNextEl) {\n return finedNextEl;\n }\n\n if (!parentWDom.isRoot && checkVirtualType(parentType)) {\n return startFindNextBrotherElement(parentWDom, getParent(parentWDom));\n } else if (parentWDom.isRoot && parentWDom.afterElement) {\n return parentWDom.afterElement;\n }\n\n return undefined;\n};\n\nconst findChildFragmentNextElement = (\n candidiateBrothers: WDom[]\n): HTMLElement | DocumentFragment | Text | undefined =>\n candidiateBrothers.reduce(\n (\n targetEl: HTMLElement | DocumentFragment | Text | undefined,\n bItem: WDom\n ) => {\n const type = bItem.type;\n const el = bItem.el;\n const isFragment = type && checkVirtualType(type);\n\n if (targetEl) {\n return targetEl;\n } else if (isFragment) {\n return findChildFragmentNextElement(bItem.children || []);\n } else if (el && el.nodeType !== 11) {\n return el;\n }\n\n return targetEl;\n },\n undefined\n );\n\nconst typeReplace = (newWDom: WDom) => {\n const parentWDom = getParent(newWDom);\n const orignalElement = newWDom.el;\n\n if (parentWDom.type && orignalElement) {\n if (orignalElement.nodeType === 11) {\n typeSortedReplace(newWDom);\n } else {\n const parentElement = findRealParentElement(parentWDom);\n const newElement = wDomToDom(newWDom);\n\n if (parentElement) {\n parentElement.replaceChild(newElement, orignalElement);\n }\n execMountedQueue();\n }\n }\n};\n\nconst removeEvent = (\n oldProps: Props,\n element: HTMLElement | DocumentFragment | Text\n) => {\n entries(oldProps || {}).forEach(([dataKey, dataValue]: [string, unknown]) => {\n if (dataKey.match(/^on/)) {\n element.removeEventListener(\n getEventName(dataKey),\n dataValue as (e: Event) => void\n );\n }\n });\n};\n\nconst typeUpdate = (newWDom: WDom) => {\n const element = newWDom.el;\n\n if (newWDom.type === 'text') {\n updateText(newWDom);\n\n return;\n }\n\n if (element) {\n const { oldProps, props } = newWDom;\n\n updateProps(props, element, oldProps);\n\n delete newWDom.oldProps;\n\n if (newWDom.tag === 'input') {\n (element as HTMLInputElement).value = String(newWDom?.props?.value || '');\n }\n }\n\n (newWDom.children || []).forEach((childItem: WDom) => wDomUpdate(childItem));\n\n runUpdatedQueueFromWDom(newWDom);\n};\n\nconst updateText = (newWDom: WDom) => {\n const element = newWDom.el;\n\n if (element) {\n element.nodeValue = String(newWDom.text);\n }\n};\n\nconst updateProps = (\n props?: Props,\n element?: HTMLElement | Element | DocumentFragment | Text,\n oldProps?: Props\n) => {\n const originalProps = { ...oldProps };\n\n entries(props || {}).forEach(([dataKey, dataValue]: [string, unknown]) => {\n let chkRemoveProp = true;\n if (dataKey === 'key') {\n // Do nothing\n } else if (dataKey === 'innerHTML' && typeof dataValue === 'string') {\n (element as HTMLElement).innerHTML = dataValue;\n } else if (checkStyleData(dataKey, dataValue)) {\n updateStyle(\n dataValue,\n checkStyleData(dataKey, originalProps.style) ? originalProps.style : {},\n element\n );\n } else if (checkRefData(dataKey, dataValue)) {\n dataValue.value = element;\n } else if (dataKey.match(/^on/)) {\n updateEvent(\n element as HTMLElement,\n dataKey,\n dataValue as (e: Event) => void,\n originalProps[dataKey] as (e: Event) => void\n );\n } else if (checkCheckableElement(element) && dataKey === 'checked') {\n (element as HTMLInputElement).checked = !!dataValue;\n } else if (checkTextareaElement(element) && dataKey === 'value') {\n (element as HTMLInputElement).value = dataValue as string;\n } else if (checkOptionElement(element) && dataKey === 'selected') {\n (element as HTMLOptionElement).selected = !!dataValue;\n } else if (dataKey) {\n [chkRemoveProp, dataValue] = makeAttrDataValue(dataValue);\n\n if (chkRemoveProp) {\n if (xmlnsRef.value && dataKey !== 'xmlns') {\n (element as HTMLElement).setAttributeNS(\n null,\n getAttrKey(dataKey),\n <string>dataValue\n );\n } else {\n (element as HTMLElement).setAttribute(\n getAttrKey(dataKey),\n <string>dataValue\n );\n }\n }\n }\n\n if (chkRemoveProp) {\n delete originalProps[dataKey];\n }\n });\n\n keys(originalProps).forEach(dataKey =>\n (element as HTMLElement).removeAttribute(dataKey)\n );\n};\n\nconst makeAttrDataValue = (dataValue: unknown): [boolean, string] => {\n let allowSetAttr = true;\n if (typeof dataValue === 'boolean') {\n if (!dataValue) {\n allowSetAttr = false;\n }\n\n dataValue = '';\n }\n\n return [allowSetAttr, String(dataValue)];\n};\n\nconst wDomToDom = (wDom: WDom) => {\n let element;\n const { type, tag, text, props, children = [] } = wDom;\n const isVirtualType = checkVirtualType(type);\n\n if (tag === 'svg') {\n xmlnsRef.value = String(props?.xmlns);\n }\n\n if (isVirtualType) {\n element = new DocumentFragment();\n } else if (type === 'element' && tag) {\n element = xmlnsRef.value\n ? document.createElementNS(xmlnsRef.value, tag)\n : document.createElement(tag);\n } else if (type === 'text' && checkExisty(text)) {\n element = document.createTextNode(String(text));\n } else {\n element = document.createElement('e');\n }\n\n wDomChildrenToDom(children, element);\n updateProps(props, element);\n\n wDom.el = element as HTMLElement;\n\n addMountedQueue(wDom);\n\n if (tag === 'svg') {\n xmlnsRef.value = '';\n }\n\n return element;\n};\n\nconst wDomChildrenToDom = (\n children: WDom[],\n parentElement?: HTMLElement | Element | DocumentFragment | Text\n) => {\n const elementChildren = children.reduce(\n (acc: DocumentFragment, childItem: WDom) => {\n if (childItem.type) {\n acc.appendChild(wDomToDom(childItem));\n }\n\n return acc;\n },\n new DocumentFragment()\n );\n\n if (parentElement && elementChildren.hasChildNodes()) {\n parentElement.appendChild(elementChildren);\n }\n};\n\nconst updateEvent = (\n element: HTMLElement,\n eventKey: string,\n newEventHandler: (e: Event) => void,\n oldEventHandler: (e: Event) => void\n) => {\n const eventName = getEventName(eventKey);\n\n if (oldEventHandler !== newEventHandler) {\n if (oldEventHandler) {\n element.removeEventListener(eventName, oldEventHandler);\n }\n\n if (newEventHandler) {\n element.addEventListener(eventName, newEventHandler);\n }\n }\n};\n\nconst updateStyle = (\n style: Record<string, string>,\n oldStyle: Record<string, string>,\n element?: HTMLElement | Element | DocumentFragment | Text\n) => {\n const originalStyle = { ...oldStyle };\n const elementStyle = (element as HTMLElement)?.style;\n\n if (elementStyle) {\n entries(style).forEach(([styleKey, dataValue]) => {\n (elementStyle as any)[styleKey] = dataValue;\n delete originalStyle[styleKey];\n });\n\n entries(originalStyle).forEach(\n ([styleKey]) => ((elementStyle as any)[styleKey] = '')\n );\n }\n};\n\nconst findRealParentElement = (\n vDom: WDom\n): HTMLElement | DocumentFragment | Text | undefined => {\n const isVirtualType = checkVirtualType(vDom.type);\n if (vDom.isRoot && isVirtualType) {\n return vDom.wrapElement;\n }\n\n if (!isVirtualType) {\n return vDom.el as HTMLElement;\n }\n\n return findRealParentElement(getParent(vDom));\n};\n","import { WDom, TagFunctionResolver, RenderType } from '@/types';\nimport { checkCustemComponentFunction, getKey } from '@/utils/predicator';\nimport { getParent, reRender } from '@/utils';\nimport { recursiveRemoveEvent } from '@/render';\nimport {\n checkEmptyElement,\n checkSameWDomWithOriginal,\n getWDomType,\n checkExisty,\n} from '@/utils/predicator';\n\nimport { runUnmountQueueFromWDom } from '@/hook/unmount';\nimport { assign } from '@/utils';\n\nexport const makeNewWDomTree = (\n newWDom: WDom | TagFunctionResolver,\n originalWDom?: WDom\n) =>\n remakeNewWDom(\n newWDom,\n checkSameWDomWithOriginal[getWDomType(newWDom)](newWDom, originalWDom),\n originalWDom\n );\n\nconst remakeNewWDom = (\n newWDom: WDom | TagFunctionResolver,\n isSameType: boolean,\n originalWDom?: WDom\n) => {\n const remakeWDom = generalize(newWDom, isSameType, originalWDom);\n const param: [newWDom: WDom, isSameType: boolean, originalWDom?: WDom] = [\n remakeWDom,\n isSameType,\n originalWDom,\n ];\n const needRerender = addReRenderTypeProperty(...param);\n\n remakeWDom.children = remakeChildrenForDiff(...param);\n remakeWDom.needRerender = needRerender;\n\n inheritPropForRender(remakeWDom, originalWDom, needRerender);\n\n return remakeWDom;\n};\n\nconst inheritPropForRender = (\n remakeWDom: WDom,\n originalWDom?: WDom,\n needRerender?: RenderType\n) => {\n if (needRerender !== 'A' && originalWDom) {\n remakeWDom.el = originalWDom.el;\n }\n\n if (needRerender && ['D', 'R', 'SR'].includes(needRerender)) {\n if (originalWDom?.compKey) {\n runUnmountQueueFromWDom(originalWDom);\n recursiveRemoveEvent(originalWDom);\n }\n remakeWDom.oldChildren = originalWDom?.children;\n }\n\n remakeWDom.oldProps = originalWDom?.props;\n};\n\nconst addReRenderTypeProperty = (\n newWDom: WDom,\n isSameType: boolean,\n originalWDom?: WDom\n): RenderType | undefined => {\n const existOriginalWDom = originalWDom && originalWDom.type;\n const isEmptyElement = checkEmptyElement(newWDom);\n const isRoot = !newWDom.getParent;\n const parentType = !isRoot && getParent(newWDom).type;\n const key = getKey(newWDom);\n const isKeyCheckedWDom = parentType === 'loop' && checkExisty(key);\n const isSameText =\n newWDom.type === 'text' &&\n isSameType &&\n newWDom.text === originalWDom?.text;\n\n let result: RenderType | undefined;\n if (isEmptyElement) {\n result = 'D';\n } else if (isSameText) {\n result = 'N';\n } else if (!existOriginalWDom) {\n result = 'A';\n } else if (isSameType) {\n result = isKeyCheckedWDom ? 'SU' : 'U';\n } else {\n result = isKeyCheckedWDom ? 'SR' : 'R';\n }\n\n return result;\n};\n\nconst generalize = (\n newWDom: WDom | TagFunctionResolver,\n isSameType: boolean,\n originalWDom?: WDom\n): WDom => {\n if (checkCustemComponentFunction(newWDom)) {\n return isSameType && originalWDom\n ? reRender(originalWDom, newWDom)\n : newWDom.resolve();\n }\n\n return newWDom;\n};\n\nconst remakeChildrenForDiff = (\n newWDom: WDom,\n isSameType: boolean,\n originalWDom?: WDom\n) =>\n isSameType && originalWDom\n ? remakeChildrenForUpdate(newWDom, originalWDom)\n : remakeChildrenForAdd(newWDom);\n\nconst remakeChildrenForAdd = (newWDom: WDom) =>\n (newWDom.children || []).map((item: WDom) =>\n assign(makeNewWDomTree(item), { getParent: () => newWDom })\n );\n\nconst remakeChildrenForUpdate = (newWDom: WDom, originalWDom: WDom) =>\n newWDom.type === 'loop' && checkExisty(getKey((newWDom.children || [])[0]))\n ? remakeChildrenForLoopUpdate(newWDom, originalWDom)\n : (newWDom.children || []).map((item: WDom, index: number) =>\n assign(makeNewWDomTree(item, (originalWDom.children || [])[index]), {\n getParent: () => newWDom,\n })\n );\n\nconst remakeChildrenForLoopUpdate = (newWDom: WDom, originalWDom: WDom) => {\n const [remakedChildren, unUsedChildren] = diffLoopChildren(\n newWDom,\n originalWDom\n );\n\n unUsedChildren.map(unusedItem => {\n const el = unusedItem.el;\n\n if (el?.parentNode) {\n el.parentNode.removeChild(el);\n }\n });\n\n return remakedChildren;\n};\n\nconst diffLoopChildren = (newWDom: WDom, originalWDom: WDom) => {\n const newChildren = [...(newWDom.children || [])];\n const originalChildren = [...(originalWDom.children || [])];\n const remakedChildren = newChildren.map(item => {\n const originalItem = findSameKeyOriginalItem(item, originalChildren);\n const childItem = makeNewWDomTree(item, originalItem);\n\n if (originalItem) {\n originalChildren.splice(originalChildren.indexOf(originalItem), 1);\n }\n\n childItem.getParent = () => newWDom;\n\n return childItem;\n });\n\n return [remakedChildren, originalChildren];\n};\n\nconst findSameKeyOriginalItem = (item: WDom, originalChildren: WDom[]) =>\n originalChildren.find(\n orignalChildItem => getKey(orignalChildItem) === getKey(item)\n );\n","import { componentRef, getComponentKey } from '@/utils/universalRef';\n\nimport { useUpdated } from '@/hook/useUpdate';\n\nexport const updateCallback = (\n effectAction: () => (() => void) | void,\n dependencies: () => any[] = () => []\n) => {\n const updateReqs = componentRef.get(getComponentKey())!.upR;\n\n updateReqs.push(() => useUpdated(effectAction, dependencies));\n useUpdated(effectAction, dependencies);\n};\n\nexport const runUpdateCallback = () => {\n const updateReqs = componentRef.get(getComponentKey())?.upR;\n\n if (updateReqs?.length) {\n updateReqs.forEach(callback => callback());\n }\n};\n","import {\n WDom,\n TagFunction,\n FragmentFunction,\n Props,\n MiddleStateWDomChildren,\n MiddleStateWDom,\n NodePointer,\n Component,\n} from '@/types';\n\nimport { makeNewWDomTree } from '@/diff';\nimport { wDomUpdate } from '@/render';\nimport {\n initUpdateHookState,\n initMountHookState,\n setRedrawAction,\n needDiffRef,\n componentRender,\n getComponentSubInfo,\n} from '@/utils/universalRef';\nimport { runUpdateCallback } from '@/hook/updateCallback';\nimport {\n checkFragmentFunction,\n checkCustemComponentFunction,\n} from '@/utils/predicator';\nimport { assign } from '@/utils';\n\nexport const Fragment = (_props: Props, ...children: WDom[]) => ({\n type: 'fragment',\n children,\n});\n\nexport const h = (\n tag: TagFunction | FragmentFunction | string,\n props: Props,\n ...children: MiddleStateWDomChildren\n) => {\n const nodeParentPointer: NodePointer = { value: undefined };\n const newProps = props || {};\n const newChildren = remakeChildren(nodeParentPointer, children);\n const node = makeNode(tag, newProps, newChildren);\n\n if (!checkCustemComponentFunction(node)) {\n nodeParentPointer.value = node;\n }\n\n return node;\n};\n\nexport const mount =\n <T>(component: Component<T>) =>\n (_props: T, _children: WDom[]) =>\n component;\n\nconst reRenderCustomComponent = (\n tag: TagFunction,\n props: Props,\n children: WDom[],\n originalWDom: WDom\n) => {\n needDiffRef.value = true;\n\n const newWDom = makeWDomResolver(tag, props, children);\n const newWDomTree = makeNewWDomTree(newWDom, originalWDom);\n const { isRoot, getParent, wrapElement, afterElement } = originalWDom;\n\n newWDomTree.getParent = getParent;\n\n if (!isRoot && getParent) {\n const brothers = getParent()?.children || [];\n const index = brothers.indexOf(originalWDom);\n\n brothers.splice(index, 1, newWDomTree);\n } else {\n newWDomTree.isRoot = true;\n newWDomTree.wrapElement = wrapElement;\n newWDomTree.afterElement = afterElement;\n }\n\n needDiffRef.value = false;\n wDomUpdate(newWDomTree);\n};\n\nconst makeWDomResolver = (tag: TagFunction, props: Props, children: WDom[]) => {\n const tagName = tag.name;\n const ctor = tag;\n // 리졸브는 컴포넌트를 새로 만든다.\n const resolve = (compKey = props) => {\n initMountHookState(compKey);\n\n const component = tag(props, children);\n const componentMaker = component(componentRender(compKey), props, children);\n\n const customNode = makeCustomNode(\n componentMaker,\n compKey,\n tag,\n props,\n children\n );\n\n const originalWDom = customNode;\n\n setRedrawAction(compKey, () =>\n reRenderCustomComponent(tag, props, children, originalWDom)\n );\n\n (getComponentSubInfo(compKey, 'vd') as { value: WDom }).value = customNode;\n\n return customNode;\n };\n\n return { tagName, ctor, props, children, resolve };\n};\n\nconst makeCustomNode = (\n componentMaker: (props: Props) => WDom,\n compKey: Props,\n tag: TagFunction,\n props: Props,\n children: WDom[]\n) => {\n const customNode = componentMaker(props);\n if (customNode.reRender) {\n throw new Error(\n 'The root of a component must not be a component, use \"Fragment\"'\n );\n }\n\n addComponentProps(\n customNode,\n compKey,\n tag,\n props,\n children,\n makeReRender(componentMaker, compKey, tag, props, children)\n );\n\n return customNode;\n};\n\nconst makeReRender = (\n componentMaker: (props: Props) => WDom,\n compKey: Props,\n tag: TagFunction,\n props: Props,\n children: WDom[]\n) => {\n const reRender = () =>\n wDomMaker(componentMaker, compKey, tag, props, children, reRender);\n return reRender;\n};\n\nconst wDomMaker = (\n componentMaker: (props: Props) => WDom,\n compKey: Props,\n tag: TagFunction,\n props: Props,\n children: WDom[],\n reRender: () => WDom\n) => {\n initUpdateHookState(compKey);\n runUpdateCallback();\n\n const originalWDom = componentMaker(props);\n\n setRedrawAction(compKey, () =>\n reRenderCustomComponent(tag, props, children, originalWDom)\n );\n\n addComponentProps(originalWDom, compKey, tag, props, children, reRender);\n\n (getComponentSubInfo(compKey, 'vd') as { value: WDom }).value = originalWDom;\n\n return originalWDom;\n};\n\nconst addComponentProps = (\n wDom: WDom,\n compKey: Props,\n tag: TagFunction,\n props: Props,\n children: WDom[],\n reRender: () => WDom\n) => {\n assign(wDom, {\n compProps: props,\n compChild: children,\n ctor: tag,\n tagName: tag.name,\n compKey,\n reRender,\n });\n};\n\nconst makeNode = (\n tag: TagFunction | FragmentFunction | string,\n props: Props,\n children: WDom[]\n) => {\n if (checkFragmentFunction(tag)) {\n return Fragment(props, ...children);\n } else if (checkCustemComponentFunction(tag)) {\n const componetMakeResolver = makeWDomResolver(tag, props, children);\n\n return needDiffRef.value\n ? componetMakeResolver\n : componetMakeResolver.resolve();\n }\n\n return {\n type: 'element',\n tag,\n props,\n children,\n };\n};\n\nconst remakeChildren = (\n nodeParentPointer: NodePointer,\n children: MiddleStateWDomChildren\n): WDom[] =>\n children.map((item: MiddleStateWDom) =>\n assign(makeChildrenItem(item), { getParent: () => nodeParentPointer.value })\n );\n\nconst makeChildrenItem = (item: MiddleStateWDom): WDom => {\n if (item === null || item === undefined || item === false) {\n return { type: null };\n } else if (Array.isArray(item)) {\n const nodeParentPointer: NodePointer = { value: undefined };\n const children = remakeChildren(nodeParentPointer, item);\n const node = {\n type: 'loop',\n children,\n };\n nodeParentPointer.value = node;\n\n return node;\n } else if (typeof item === 'string' || typeof item === 'number') {\n return { type: 'text', text: item };\n }\n\n return item;\n};\n","export const ref = <T>(initValue: T) => ({ value: initValue });\nexport const nextTick = () => Promise.resolve();\n"],"names":["checkPlainWDomType","wDom","checkPlainType","typeName","checkSameCustomComponent","newWDom","originalWDom","checkSameFragment","_a","_b","checkSameTagElement","checkNormalTypeElement","checkExisty","getKey","target","checkVirtualType","type","checkCustemComponentFunction","checkFragmentFunction","Fragment","checkEmptyElement","value","checkStyleData","dataKey","dataValue","checkRefData","checkOptionElement","element","checkTextareaElement","checkCheckableElement","getWDomType","result","checkSameWDomWithOriginal","getParent","vDom","reRender","infoVdom","props","children","infoProps","infoChidren","updateProps","updateChildren","getEventName","eventKey","_match","p1","getAttrKey","keyName","entries","keys","assign","key","childrenItem","redrawQueue","redrawQueueTimeout","xmlnsRef","compKeyRef","needDiffRef","componentRef","componentRender","compKey","up","setComponetRef","getComponentKey","getComponentSubInfo","subKey","setRedrawAction","exec","execRedrawQueue","initUpdateHookState","initMountHookState","recursiveGetChildKeys","item","childComKey","childItemList","childVd","addedKey","acc","action","unmount","effectAction","runUnmountQueueFromWDom","removeItem","recursiveRunUnmount","subInfo","effect","mountedQueue","execMountedQueue","runMountedQueueFromWDom","addMountedQueue","mountCallback","component","queue","sequence","callback","useUpdated","dependencies","upD","upS","def","checkNeedPushQueue","runUpdatedQueueFromWDom","originalDefs","newDefs","index","render","wrapElement","afterElement","Dom","wDomToDom","recursiveRemoveEvent","rootDelete","wDomUpdate","newWDomTree","needRerender","typeAdd","typeDelete","typeReplace","typeUpdate","typeSortedReplace","typeSortedUpdate","removeEvent","childItem","deleteRealDom","findRealParentElement","parent","findChildWithRemoveElement","newElement","parentWDom","parentEl","nextEl","startFindNextBrotherElement","brothers","nextIndex","candidiateBrothers","finedNextEl","findChildFragmentNextElement","parentType","targetEl","bItem","el","isFragment","orignalElement","parentElement","oldProps","updateText","originalProps","chkRemoveProp","updateStyle","updateEvent","makeAttrDataValue","allowSetAttr","tag","text","isVirtualType","wDomChildrenToDom","elementChildren","newEventHandler","oldEventHandler","eventName","style","oldStyle","originalStyle","elementStyle","styleKey","makeNewWDomTree","remakeNewWDom","isSameType","remakeWDom","generalize","param","addReRenderTypeProperty","remakeChildrenForDiff","inheritPropForRender","existOriginalWDom","isEmptyElement","isKeyCheckedWDom","isSameText","remakeChildrenForUpdate","remakeChildrenForAdd","remakeChildrenForLoopUpdate","remakedChildren","unUsedChildren","diffLoopChildren","unusedItem","newChildren","originalChildren","originalItem","findSameKeyOriginalItem","orignalChildItem","updateCallback","runUpdateCallback","updateReqs","_props","h","nodeParentPointer","newProps","remakeChildren","node","makeNode","mount","_children","reRenderCustomComponent","makeWDomResolver","isRoot","componentMaker","customNode","makeCustomNode","addComponentProps","makeReRender","wDomMaker","componetMakeResolver","makeChildrenItem","ref","initValue","nextTick"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const l of document.querySelectorAll('link[rel="modulepreload"]'))o(l);new MutationObserver(l=>{for(const r of l)if(r.type==="childList")for(const u of r.addedNodes)u.tagName==="LINK"&&u.rel==="modulepreload"&&o(u)}).observe(document,{childList:!0,subtree:!0});function n(l){const r={};return l.integrity&&(r.integrity=l.integrity),l.referrerPolicy&&(r.referrerPolicy=l.referrerPolicy),l.crossOrigin==="use-credentials"?r.credentials="include":l.crossOrigin==="anonymous"?r.credentials="omit":r.credentials="same-origin",r}function o(l){if(l.ep)return;l.ep=!0;const r=n(l);fetch(l.href,r)}})();const g=e=>typeof e=="object"&&!("resolve"in e),b=(e,t)=>g(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),xe=(e,t)=>{var n,o;return g(e)&&(t==null?void 0:t.type)==="fragment"&&((n=t==null?void 0:t.children)==null?void 0:n.length)===((o=e==null?void 0:e.children)==null?void 0:o.length)},be=(e,t)=>{var n,o;return g(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)===((o=e==null?void 0:e.children)==null?void 0:o.length)},k=(e,t)=>g(e)&&(t==null?void 0:t.type)===e.type&&(e.type!=="loop"||e.type==="loop"&&m(v((e.children||[])[0]))&&m(v((t.children||[])[0]))),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)},w=e=>e&&["fragment","loop"].includes(e),N=e=>typeof e=="function"&&!X(e)||typeof e=="object"&&"resolve"in e,X=e=>typeof e=="function"&&e===A,_=e=>g(e)&&!e.type,m=e=>e!=null,Y=(e,t)=>e==="style"&&typeof t=="object",Ce=(e,t)=>e==="ref"&&typeof t=="object",Re=e=>e.nodeType===1&&e.tagName==="OPTION",we=e=>e.nodeType===1&&e.tagName==="TEXTAREA",Ne=e=>e.nodeType===1&&["radio","checkbox"].includes(e.type),Se=e=>{let t="et";return N(e)?t="c":b(e,"fragment")?t="f":b(e,"element")?t="e":b(e,"loop")?t="l":b(e,"text")?t="t":_(e)&&(t="et"),t},Te={c:Pe,l:k,t:k,e:be,f:xe,et:k},p=e=>e.getParent&&e.getParent(),Ve=(e,t)=>{const{compProps:n,compChild:o}=e,{props:l,children:r}=t;return n&&Oe(n,l),o&&Ae(o,r),e.reRender&&e.reRender()},z=e=>e.replace(/^on(.*)/,(t,n)=>n.toLowerCase()),J=e=>e==="className"?"class":e,f=Object.entries,G=Object.keys,S=Object.assign,Oe=(e,t)=>{e&&t!==e&&(G(e).forEach(n=>delete e[n]),f(t||{}).forEach(([n,o])=>e[n]=o))},Ae=(e,t)=>{e&&t!==e&&(e.splice(0,e.length),t&&t.forEach(n=>e.push(n)))};let C=[],K=!1;const h={value:""},y={value:{}},L={value:!1},a=new WeakMap,De=e=>()=>{var t;const n=(t=a.get(e))==null?void 0:t.up;let o=!1;return n&&(n(),o=!0),o},Ue=e=>{a.set(e,{vd:{value:null},up:()=>{},upR:[],upS:{value:0},upD:[],upCB:[],mts:[],umts:[]})},E=()=>y.value,Q=(e,t)=>a.get(e)[t],Z=(e,t)=>{a.get(e).up=()=>{C.push({compKey:e,exec:t}),K||(K=!0,queueMicrotask(Le))}},ke=e=>y.value=e,Ke=e=>{y.value=e,Ue(e)},ee=(e,t)=>{(e.children||[]).forEach(n=>{const o=n.compKey;o&&t.push(o),ee(n,t)})},Le=()=>{let e=[];C.forEach(o=>{var l,r;const u=(r=(l=a.get(o.compKey))==null?void 0:l.vd)==null?void 0:r.value;u&&ee(u,e)});const t=[],n=C.reduce((o,l)=>{const{compKey:r}=l;return e.includes(r)||t.includes(r)||(t.push(r),o.push(l)),o},[]);for(;n.length;){const o=n.shift();o&&o.exec()}C=[],K=!1},Me=e=>{a.get(E()).umts.push(e)},j=e=>{const{compKey:t}=e;t&&Fe(t),te(e)},te=e=>{(e.children||[]).forEach(t=>{t.compKey?j(t):te(t)})},Fe=e=>{const t=a.get(e);t&&(t.umts.forEach(n=>n()),t.umts=[],a.delete(e))};let M=[];const B=()=>{M.forEach(e=>je(e)),M=[]},Ie=e=>{e.compKey&&M.push(e)},ne=e=>a.get(E()).mts.push(e),je=e=>{const{compKey:t}=e;if(t){const n=a.get(t),o=n==null?void 0:n.mts,l=n==null?void 0:n.upS;y.value=t,l&&(l.value=0),o&&(n.mts=[],o.forEach(r=>{const u=r();u&&Me(u)}))}},W=(e,t=()=>[])=>{const n=a.get(E()),{upD:o,upS:l}=n,r=o[l.value];if(r&&$e(r,t())){const u=e();u&&n.upCB.push(u)}o[l.value]=t(),l.value+=1},Be=e=>{const{compKey:t}=e;if(t){const n=a.get(t),o=n==null?void 0:n.upCB,l=n==null?void 0:n.upS;y.value=t,l&&(l.value=0),e.ctor&&o&&(n.upCB=[],o.forEach(r=>r()))}},$e=(e,t)=>!e.length&&!e.length?!0:e.some((n,o)=>n!==t[o]),qe=(e,t,n)=>{t??(t=document.body),e.isRoot=!0,e.wrapElement=t;const o=T(e);return n?(e.afterElement=n,t.insertBefore(o,n)):t.appendChild(o),B(),()=>{var l;const r=(l=a.get(e.compProps||{}))==null?void 0:l.vd.value;r&&(j(r),$(r),He(r))}},oe=e=>{const{needRerender:t}=e;t&&t!=="N"&&{A:H,D:q,R:Je,U:We,SR:ue,SU:Ye}[t](e)},$=e=>{e.props&&e.el&&ae(e.props,e.el),(e.children||[]).forEach(t=>{$(t)})},He=e=>{le(e,e.wrapElement)},q=e=>{e.oldProps&&e.el&&ae(e.oldProps,e.el),le(e,V(p(e)))},le=(e,t)=>{var n,o;t&&e.el&&(((n=e.el)==null?void 0:n.nodeType)===1?t.removeChild(e.el):((o=e.el)==null?void 0:o.nodeType)===11&&re(e,t),delete e.el)},re=(e,t)=>{((e==null?void 0:e.oldChildren)||(e==null?void 0:e.children)||[]).forEach(n=>{var o,l;((o=n.el)==null?void 0:o.nodeType)===1?t.removeChild(n==null?void 0:n.el):((l=n.el)==null?void 0:l.nodeType)===11&&re(n,t)})},ue=e=>{q(e),H(e)},Ye=e=>{q(e),H(e,e.el)},H=(e,t)=>{t||(t=T(e));const n=p(e);if(n.type){const o=V(n),l=n.type==="loop"?F(n,p(n)):F(e,n);t&&o&&(l?o.insertBefore(t,l):o.appendChild(t),B())}},F=(e,t)=>{const n=t.children||[],o=n.indexOf(e)+1,l=n.slice(o),r=ce(l),u=t.type||"";if(r)return r;if(!t.isRoot&&w(u))return F(t,p(t));if(t.isRoot&&t.afterElement)return t.afterElement},ce=e=>e.reduce((t,n)=>{const o=n.type,l=n.el,r=o&&w(o);return t||(r?ce(n.children||[]):l&&l.nodeType!==11?l:t)},void 0),Je=e=>{const t=p(e),n=e.el;if(t.type&&n)if(n.nodeType===11)ue(e);else{const o=V(t),l=T(e);o&&o.replaceChild(l,n),B()}},ae=(e,t)=>{f(e||{}).forEach(([n,o])=>{n.match(/^on/)&&t.removeEventListener(z(n),o)})},We=e=>{var t;const n=e.el;if(e.type==="text"){Xe(e);return}if(n){const{oldProps:o,props:l}=e;ie(l,n,o),delete e.oldProps,e.tag==="input"&&(n.value=String(((t=e==null?void 0:e.props)==null?void 0:t.value)||""))}(e.children||[]).forEach(o=>oe(o)),Be(e)},Xe=e=>{const t=e.el;t&&(t.nodeValue=String(e.text))},ie=(e,t,n)=>{const o={...n};f(e||{}).forEach(([l,r])=>{let u=!0;l==="key"||(l==="innerHTML"&&typeof r=="string"?t.innerHTML=r:Y(l,r)?Qe(r,Y(l,o.style)?o.style:{},t):Ce(l,r)?r.value=t:l.match(/^on/)?Ge(t,l,r,o[l]):Ne(t)&&l==="checked"?t.checked=!!r:we(t)&&l==="value"?t.value=r:Re(t)&&l==="selected"?t.selected=!!r:l&&([u,r]=_e(r),u&&(h.value&&l!=="xmlns"?t.setAttributeNS(null,J(l),r):t.setAttribute(J(l),r)))),u&&delete o[l]}),G(o).forEach(l=>t.removeAttribute(l))},_e=e=>{let t=!0;return typeof e=="boolean"&&(e||(t=!1),e=""),[t,String(e)]},T=e=>{let t;const{type:n,tag:o,text:l,props:r,children:u=[]}=e,d=w(n);return o==="svg"&&(h.value=String(r==null?void 0:r.xmlns)),d?t=new DocumentFragment:n==="element"&&o?t=h.value?document.createElementNS(h.value,o):document.createElement(o):n==="text"&&m(l)?t=document.createTextNode(String(l)):t=document.createElement("e"),ze(u,t),ie(r,t),e.el=t,Ie(e),o==="svg"&&(h.value=""),t},ze=(e,t)=>{const n=e.reduce((o,l)=>(l.type&&o.appendChild(T(l)),o),new DocumentFragment);t&&n.hasChildNodes()&&t.appendChild(n)},Ge=(e,t,n,o)=>{const l=z(t);o!==n&&(o&&e.removeEventListener(l,o),n&&e.addEventListener(l,n))},Qe=(e,t,n)=>{const o={...t},l=n==null?void 0:n.style;l&&(f(e).forEach(([r,u])=>{l[r]=u,delete o[r]}),f(o).forEach(([r])=>l[r]=""))},V=e=>{const t=w(e.type);return e.isRoot&&t?e.wrapElement:t?V(p(e)):e.el},O=(e,t)=>Ze(e,Te[Se(e)](e,t),t),Ze=(e,t,n)=>{const o=nt(e,t,n),l=[o,t,n],r=tt(...l);return o.children=ot(...l),o.needRerender=r,et(o,n,r),o},et=(e,t,n)=>{n!=="A"&&t&&(e.el=t.el),n&&["D","R","SR"].includes(n)&&(t!=null&&t.compKey&&(j(t),$(t)),e.oldChildren=t==null?void 0:t.children),e.oldProps=t==null?void 0:t.props},tt=(e,t,n)=>{const o=n&&n.type,l=_(e),r=!!e.getParent&&p(e).type,u=v(e),d=r==="loop"&&m(u),s=e.type==="text"&&t&&e.text===(n==null?void 0:n.text);let i;return l?i="D":s?i="N":o?t?i=d?"SU":"U":i=d?"SR":"R":i="A",i},nt=(e,t,n)=>N(e)?t&&n?Ve(n,e):e.resolve():e,ot=(e,t,n)=>t&&n?rt(e,n):lt(e),lt=e=>(e.children||[]).map(t=>S(O(t),{getParent:()=>e})),rt=(e,t)=>e.type==="loop"&&m(v((e.children||[])[0]))?ut(e,t):(e.children||[]).map((n,o)=>S(O(n,(t.children||[])[o]),{getParent:()=>e})),ut=(e,t)=>{const[n,o]=ct(e,t);return o.map(l=>{const r=l.el;r!=null&&r.parentNode&&r.parentNode.removeChild(r)}),n},ct=(e,t)=>{const n=[...e.children||[]],o=[...t.children||[]];return[n.map(l=>{const r=at(l,o),u=O(l,r);return r&&o.splice(o.indexOf(r),1),u.getParent=()=>e,u}),o]},at=(e,t)=>t.find(n=>v(n)===v(e)),se=(e,t=()=>[])=>{a.get(E()).upR.push(()=>W(e,t)),W(e,t)},it=()=>{var e;const t=(e=a.get(E()))==null?void 0:e.upR;t!=null&&t.length&&t.forEach(n=>n())},A=(e,...t)=>({type:"fragment",children:t}),c=(e,t,...n)=>{const o={value:void 0},l=t||{},r=me(o,n),u=vt(e,l,r);return N(u)||(o.value=u),u},de=e=>(t,n)=>e,pe=(e,t,n,o)=>{var l;L.value=!0;const r=ve(e,t,n),u=O(r,o),{isRoot:d,getParent:s,wrapElement:i,afterElement:P}=o;if(u.getParent=s,!d&&s){const x=((l=s())==null?void 0:l.children)||[],D=x.indexOf(o);x.splice(D,1,u)}else u.isRoot=!0,u.wrapElement=i,u.afterElement=P;L.value=!1,oe(u)},ve=(e,t,n)=>({tagName:e.name,ctor:e,props:t,children:n,resolve:(o=t)=>{Ke(o);const l=e(t,n)(De(o),t,n),r=st(l,o,e,t,n),u=r;return Z(o,()=>pe(e,t,n,u)),Q(o,"vd").value=r,r}}),st=(e,t,n,o,l)=>{const r=e(o);if(r.reRender)throw new Error('The root of a component must not be a component, use "Fragment"');return he(r,t,n,o,l,dt(e,t,n,o,l)),r},dt=(e,t,n,o,l)=>{const r=()=>pt(e,t,n,o,l,r);return r},pt=(e,t,n,o,l,r)=>{ke(t),it();const u=e(o);return Z(t,()=>pe(n,o,l,u)),he(u,t,n,o,l,r),Q(t,"vd").value=u,u},he=(e,t,n,o,l,r)=>{S(e,{compProps:o,compChild:l,ctor:n,tagName:n.name,compKey:t,reRender:r})},vt=(e,t,n)=>{if(X(e))return A(t,...n);if(N(e)){const o=ve(e,t,n);return L.value?o:o.resolve()}return{type:"element",tag:e,props:t,children:n}},me=(e,t)=>t.map(n=>S(ht(n),{getParent:()=>e.value})),ht=e=>{if(e==null||e===!1)return{type:null};if(Array.isArray(e)){const t={value:void 0},n={type:"loop",children:me(t,e)};return t.value=n,n}else if(typeof e=="string"||typeof e=="number")return{type:"text",text:e};return e},mt=e=>({value:e}),I=(e,t)=>{let n=e;return{get value(){return n},get v(){return n},set value(o){n=o,t()},set v(o){n=o,t()}}},ft=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'")}}},gt=(e,t=()=>{},n=()=>[])=>{ne(()=>(e(),t)),se(()=>(t&&t(),e),n)},fe=new Map,R={},yt=e=>{const t=Symbol();return fe.set(t,e),n=>(R[t]??(R[t]=[]),R[t].push(n),Et(t))},Et=e=>new Proxy(fe.get(e),{get(t,n){return t[n]},set(t,n,o){t[n]=o;const l=R[e],r=[];return l.forEach(u=>{u()||r.push(u)}),r.forEach(u=>l.splice(l.indexOf(u),1)),!0}}),Pt=de((e,t,n)=>{const o=I(1,e),l=I('"destructuring" the "props" value directly from the mount function will cause referencing issues, so if you want to use it, you need to "destructuring" it from the internal function (updater).',e),r=()=>t.parentValue,u=t.parentValue,d=ft(()=>o.v+i+t.parentValue),s=yt({text:"s",count:0})(e);let i=t.parentValue;const P=mt(null),x=()=>{o.v=o.v+1,i+=1},D=U=>{l.v=U.target.value},ge=()=>{s.count+=1,s.text+="1"},ye=()=>(console.log("MOUNTED",P),()=>console.log("UNMOUNT")),Ee=()=>(console.log("UPDATE - parentValue"),()=>console.log("UPDATED"));return ne(ye),se(Ee,()=>[t.parentValue]),gt(()=>console.log("INJECT"),()=>console.log("CLEAN_UP"),()=>[o.v]),({parentValue:U})=>c(A,null,c("div",null,c("textarea",{value:l.v,onInput:D,style:{width:"300px",height:"100px"}})),c("div",null,l.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: ",U," (working)"),c("div",{style:{color:"red"}},"parentValueFromMounterDestructuring: ",u," (not working)")),c("div",null,c("div",{ref:P},"count: ",o.v),c("div",null,"sum: ",o.v+i+t.parentValue),c("div",null,"sum(computed): ",d.v),c("div",null,"notRefValue: ",i),c("div",null,"localStore(text): ",s.text),c("div",null,"localStore(count): ",s.count)),c("button",{onClick:x},"Increase"),c("button",{onClick:ge},"localStoreUpdate"),n)}),xt=de(e=>{const t=I(7,e),n=()=>{t.v=t.v+1},o=()=>{t.v=t.v-1};return()=>c(A,null,c(Pt,{parentValue:t.v},c("button",{onClick:n},"Increase - Parent")),c("button",{onClick:o},"Decrease - Parent"))}),bt=c(xt,null);qe(bt,document.getElementById("root"));
|
|
2
|
+
//# sourceMappingURL=index-6f85ca2a.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-6f85ca2a.js","sources":["../../../dist/lithent.mjs","../../../helper/dist/lithentHelper.mjs","../../src/index.tsx"],"sourcesContent":["const C = (e) => typeof e == \"object\" && !(\"resolve\" in e), E = (e, t) => C(e) && e.type === t, fe = (e, t) => \"ctor\" in e ? e.ctor === (t == null ? void 0 : t.ctor) : e === (t == null ? void 0 : t.ctor), de = (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}, pe = (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}, U = (e, t) => C(e) && (t == null ? void 0 : t.type) === e.type && (e.type !== \"loop\" || e.type === \"loop\" && v(i((e.children || [])[0])) && v(i((t.children || [])[0]))), i = (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}, P = (e) => e && [\"fragment\", \"loop\"].includes(e), T = (e) => typeof e == \"function\" && !$(e) || typeof e == \"object\" && \"resolve\" in e, $ = (e) => typeof e == \"function\" && e === ce, H = (e) => C(e) && !e.type, v = (e) => e != null, z = (e, t) => e === \"style\" && typeof t == \"object\", he = (e, t) => e === \"ref\" && typeof t == \"object\", ie = (e) => e.nodeType === 1 && e.tagName === \"OPTION\", ye = (e) => e.nodeType === 1 && e.tagName === \"TEXTAREA\", ve = (e) => e.nodeType === 1 && [\"radio\", \"checkbox\"].includes(e.type), ke = (e) => {\n let t = \"et\";\n return T(e) ? t = \"c\" : E(e, \"fragment\") ? t = \"f\" : E(e, \"element\") ? t = \"e\" : E(e, \"loop\") ? t = \"l\" : E(e, \"text\") ? t = \"t\" : H(e) && (t = \"et\"), t;\n}, Ce = {\n c: fe,\n l: U,\n t: U,\n e: pe,\n f: de,\n et: U\n}, p = (e) => e.getParent && e.getParent(), ae = (e, t) => {\n const { compProps: s, compChild: c } = e, { props: n, children: r } = t;\n return s && Re(s, n), c && Ee(c, r), e.reRender && e.reRender();\n}, J = (e) => e.replace(/^on(.*)/, (t, s) => s.toLowerCase()), G = (e) => e === \"className\" ? \"class\" : e, k = Object.entries, Y = Object.keys, S = Object.assign, Re = (e, t) => {\n e && t !== e && (Y(e).forEach((s) => delete e[s]), k(t || {}).forEach(([s, c]) => e[s] = c));\n}, Ee = (e, t) => {\n e && t !== e && (e.splice(0, e.length), t && t.forEach((s) => e.push(s)));\n};\nlet x = [], A = !1;\nconst y = { value: \"\" }, a = { value: {} }, O = { value: !1 }, u = /* @__PURE__ */ new WeakMap(), xe = (e) => () => {\n var c;\n const t = (c = u.get(e)) == null ? void 0 : c.up;\n let s = !1;\n return t && (t(), s = !0), s;\n}, Pe = (e) => {\n u.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}, R = () => a.value, Z = (e, t) => u.get(e)[t], V = (e, t) => {\n u.get(e).up = () => {\n x.push({\n compKey: e,\n exec: t\n }), A || (A = !0, queueMicrotask(Ne));\n };\n}, Te = (e) => a.value = e, Se = (e) => {\n a.value = e, Pe(e);\n}, K = (e, t) => {\n (e.children || []).forEach((s) => {\n const c = s.compKey;\n c && t.push(c), K(s, t);\n });\n}, Ne = () => {\n let e = [];\n x.forEach((c) => {\n var r, o;\n const n = (o = (r = u.get(c.compKey)) == null ? void 0 : r.vd) == null ? void 0 : o.value;\n n && K(n, e);\n });\n const t = [], s = x.reduce((c, n) => {\n const { compKey: r } = n;\n return e.includes(r) || t.includes(r) || (t.push(r), c.push(n)), c;\n }, []);\n for (; s.length; ) {\n const c = s.shift();\n c && c.exec();\n }\n x = [], A = !1;\n}, be = (e) => {\n u.get(R()).umts.push(e);\n}, Q = (e) => {\n const { compKey: t } = e;\n t && Fe(t), g(e);\n}, g = (e) => {\n (e.children || []).forEach((t) => {\n t.compKey ? Q(t) : g(t);\n });\n}, Fe = (e) => {\n const t = u.get(e);\n t && (t.umts.forEach((s) => s()), t.umts = [], u.delete(e));\n};\nlet L = [];\nconst B = () => {\n L.forEach((e) => Ae(e)), L = [];\n}, Ue = (e) => {\n e.compKey && L.push(e);\n}, ct = (e) => u.get(R()).mts.push(e), Ae = (e) => {\n const { compKey: t } = e;\n if (t) {\n const s = u.get(t), c = s == null ? void 0 : s.mts, n = s == null ? void 0 : s.upS;\n a.value = t, n && (n.value = 0), c && (s.mts = [], c.forEach((r) => {\n const o = r();\n o && be(o);\n }));\n }\n}, X = (e, t = () => []) => {\n const s = u.get(R()), { upD: c, upS: n } = s, r = c[n.value];\n if (r && Le(r, t())) {\n const o = e();\n o && s.upCB.push(o);\n }\n c[n.value] = t(), n.value += 1;\n}, Oe = (e) => {\n const { compKey: t } = e;\n if (t) {\n const s = u.get(t), c = s == null ? void 0 : s.upCB, n = s == null ? void 0 : s.upS;\n a.value = t, n && (n.value = 0), e.ctor && c && (s.upCB = [], c.forEach((r) => r()));\n }\n}, Le = (e, t) => !e.length && !e.length ? !0 : e.some((s, c) => s !== t[c]), nt = (e, t, s) => {\n t ?? (t = document.body), e.isRoot = !0, e.wrapElement = t;\n const c = N(e);\n return s ? (e.afterElement = s, t.insertBefore(c, s)) : t.appendChild(c), B(), () => {\n var r;\n const n = (r = u.get(e.compProps || {})) == null ? void 0 : r.vd.value;\n n && (Q(n), j(n), Me(n));\n };\n}, m = (e) => {\n const { needRerender: t } = e;\n t && t !== \"N\" && {\n A: q,\n D: I,\n R: Be,\n U: je,\n SR: D,\n SU: Qe\n }[t](e);\n}, j = (e) => {\n e.props && e.el && te(e.props, e.el), (e.children || []).forEach((t) => {\n j(t);\n });\n}, Me = (e) => {\n w(e, e.wrapElement);\n}, I = (e) => {\n e.oldProps && e.el && te(e.oldProps, e.el), w(\n e,\n b(p(e))\n );\n}, w = (e, t) => {\n var s, c;\n t && e.el && (((s = e.el) == null ? void 0 : s.nodeType) === 1 ? t.removeChild(e.el) : ((c = e.el) == null ? void 0 : c.nodeType) === 11 && W(e, t), delete e.el);\n}, W = (e, t) => {\n ((e == null ? void 0 : e.oldChildren) || (e == null ? void 0 : e.children) || []).forEach((s) => {\n var c, n;\n ((c = s.el) == null ? void 0 : c.nodeType) === 1 ? t.removeChild(s == null ? void 0 : s.el) : ((n = s.el) == null ? void 0 : n.nodeType) === 11 && W(s, t);\n });\n}, D = (e) => {\n I(e), q(e);\n}, Qe = (e) => {\n I(e), q(e, e.el);\n}, q = (e, t) => {\n t || (t = N(e));\n const s = p(e);\n if (s.type) {\n const c = b(s), r = s.type === \"loop\" ? M(s, p(s)) : M(e, s);\n t && c && (r ? c.insertBefore(t, r) : c.appendChild(t), B());\n }\n}, M = (e, t) => {\n const s = t.children || [], n = s.indexOf(e) + 1, r = s.slice(n), o = ee(r), l = t.type || \"\";\n if (o)\n return o;\n if (!t.isRoot && P(l))\n return M(t, p(t));\n if (t.isRoot && t.afterElement)\n return t.afterElement;\n}, ee = (e) => e.reduce(\n (t, s) => {\n const c = s.type, n = s.el, r = c && P(c);\n return t || (r ? ee(s.children || []) : n && n.nodeType !== 11 ? n : t);\n },\n void 0\n), Be = (e) => {\n const t = p(e), s = e.el;\n if (t.type && s)\n if (s.nodeType === 11)\n D(e);\n else {\n const c = b(t), n = N(e);\n c && c.replaceChild(n, s), B();\n }\n}, te = (e, t) => {\n k(e || {}).forEach(([s, c]) => {\n s.match(/^on/) && t.removeEventListener(\n J(s),\n c\n );\n });\n}, je = (e) => {\n var s;\n const t = e.el;\n if (e.type === \"text\") {\n Ie(e);\n return;\n }\n if (t) {\n const { oldProps: c, props: n } = e;\n se(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) => m(c)), Oe(e);\n}, Ie = (e) => {\n const t = e.el;\n t && (t.nodeValue = String(e.text));\n}, se = (e, t, s) => {\n const c = { ...s };\n k(e || {}).forEach(([n, r]) => {\n let o = !0;\n n === \"key\" || (n === \"innerHTML\" && typeof r == \"string\" ? t.innerHTML = r : z(n, r) ? Ge(\n r,\n z(n, c.style) ? c.style : {},\n t\n ) : he(n, r) ? r.value = t : n.match(/^on/) ? ze(\n t,\n n,\n r,\n c[n]\n ) : ve(t) && n === \"checked\" ? t.checked = !!r : ye(t) && n === \"value\" ? t.value = r : ie(t) && n === \"selected\" ? t.selected = !!r : n && ([o, r] = qe(r), o && (y.value && n !== \"xmlns\" ? t.setAttributeNS(\n null,\n G(n),\n r\n ) : t.setAttribute(\n G(n),\n r\n )))), o && delete c[n];\n }), Y(c).forEach(\n (n) => t.removeAttribute(n)\n );\n}, qe = (e) => {\n let t = !0;\n return typeof e == \"boolean\" && (e || (t = !1), e = \"\"), [t, String(e)];\n}, N = (e) => {\n let t;\n const { type: s, tag: c, text: n, props: r, children: o = [] } = e, l = P(s);\n return c === \"svg\" && (y.value = String(r == null ? void 0 : r.xmlns)), l ? t = new DocumentFragment() : s === \"element\" && c ? t = y.value ? document.createElementNS(y.value, c) : document.createElement(c) : s === \"text\" && v(n) ? t = document.createTextNode(String(n)) : t = document.createElement(\"e\"), _e(o, t), se(r, t), e.el = t, Ue(e), c === \"svg\" && (y.value = \"\"), t;\n}, _e = (e, t) => {\n const s = e.reduce(\n (c, n) => (n.type && c.appendChild(N(n)), c),\n new DocumentFragment()\n );\n t && s.hasChildNodes() && t.appendChild(s);\n}, ze = (e, t, s, c) => {\n const n = J(t);\n c !== s && (c && e.removeEventListener(n, c), s && e.addEventListener(n, s));\n}, Ge = (e, t, s) => {\n const c = { ...t }, n = s == null ? void 0 : s.style;\n n && (k(e).forEach(([r, o]) => {\n n[r] = o, delete c[r];\n }), k(c).forEach(\n ([r]) => n[r] = \"\"\n ));\n}, b = (e) => {\n const t = P(e.type);\n return e.isRoot && t ? e.wrapElement : t ? b(p(e)) : e.el;\n}, F = (e, t) => Xe(\n e,\n Ce[ke(e)](e, t),\n t\n), Xe = (e, t, s) => {\n const c = Je(e, t, s), n = [\n c,\n t,\n s\n ], r = He(...n);\n return c.children = Ye(...n), c.needRerender = r, $e(c, s, r), c;\n}, $e = (e, t, s) => {\n s !== \"A\" && t && (e.el = t.el), s && [\"D\", \"R\", \"SR\"].includes(s) && (t != null && t.compKey && (Q(t), j(t)), e.oldChildren = t == null ? void 0 : t.children), e.oldProps = t == null ? void 0 : t.props;\n}, He = (e, t, s) => {\n const c = s && s.type, n = H(e), o = !!e.getParent && p(e).type, l = i(e), h = o === \"loop\" && v(l), d = e.type === \"text\" && t && e.text === (s == null ? void 0 : s.text);\n let f;\n return n ? f = \"D\" : d ? f = \"N\" : c ? t ? f = h ? \"SU\" : \"U\" : f = h ? \"SR\" : \"R\" : f = \"A\", f;\n}, Je = (e, t, s) => T(e) ? t && s ? ae(s, e) : e.resolve() : e, Ye = (e, t, s) => t && s ? Ve(e, s) : Ze(e), Ze = (e) => (e.children || []).map(\n (t) => S(F(t), { getParent: () => e })\n), Ve = (e, t) => e.type === \"loop\" && v(i((e.children || [])[0])) ? Ke(e, t) : (e.children || []).map(\n (s, c) => S(F(s, (t.children || [])[c]), {\n getParent: () => e\n })\n), Ke = (e, t) => {\n const [s, c] = ge(\n e,\n t\n );\n return c.map((n) => {\n const r = n.el;\n r != null && r.parentNode && r.parentNode.removeChild(r);\n }), s;\n}, ge = (e, t) => {\n const s = [...e.children || []], c = [...t.children || []];\n return [s.map((r) => {\n const o = me(r, c), l = F(r, o);\n return o && c.splice(c.indexOf(o), 1), l.getParent = () => e, l;\n }), c];\n}, me = (e, t) => t.find(\n (s) => i(s) === i(e)\n), rt = (e, t = () => []) => {\n u.get(R()).upR.push(() => X(e, t)), X(e, t);\n}, we = () => {\n var t;\n const e = (t = u.get(R())) == null ? void 0 : t.upR;\n e != null && e.length && e.forEach((s) => s());\n}, ce = (e, ...t) => ({\n type: \"fragment\",\n children: t\n}), ot = (e, t, ...s) => {\n const c = { value: void 0 }, n = t || {}, r = ue(c, s), o = tt(e, n, r);\n return T(o) || (c.value = o), o;\n}, ut = (e) => (t, s) => e, ne = (e, t, s, c) => {\n var f;\n O.value = !0;\n const n = re(e, t, s), r = F(n, c), { isRoot: o, getParent: l, wrapElement: h, afterElement: d } = c;\n if (r.getParent = l, !o && l) {\n const _ = ((f = l()) == null ? void 0 : f.children) || [], le = _.indexOf(c);\n _.splice(le, 1, r);\n } else\n r.isRoot = !0, r.wrapElement = h, r.afterElement = d;\n O.value = !1, m(r);\n}, re = (e, t, s) => ({ tagName: e.name, ctor: e, props: t, children: s, resolve: (o = t) => {\n Se(o);\n const h = e(t, s)(xe(o), t, s), d = We(\n h,\n o,\n e,\n t,\n s\n ), f = d;\n return V(\n o,\n () => ne(e, t, s, f)\n ), Z(o, \"vd\").value = d, d;\n} }), We = (e, t, s, c, n) => {\n const r = e(c);\n if (r.reRender)\n throw new Error(\n 'The root of a component must not be a component, use \"Fragment\"'\n );\n return oe(\n r,\n t,\n s,\n c,\n n,\n De(e, t, s, c, n)\n ), r;\n}, De = (e, t, s, c, n) => {\n const r = () => et(e, t, s, c, n, r);\n return r;\n}, et = (e, t, s, c, n, r) => {\n Te(t), we();\n const o = e(c);\n return V(\n t,\n () => ne(s, c, n, o)\n ), oe(o, t, s, c, n, r), Z(t, \"vd\").value = o, o;\n}, oe = (e, t, s, c, n, r) => {\n S(e, {\n compProps: c,\n compChild: n,\n ctor: s,\n tagName: s.name,\n compKey: t,\n reRender: r\n });\n}, tt = (e, t, s) => {\n if ($(e))\n return ce(t, ...s);\n if (T(e)) {\n const c = re(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}, ue = (e, t) => t.map(\n (s) => S(st(s), { getParent: () => e.value })\n), st = (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: ue(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}, lt = (e) => ({ value: e }), ft = () => Promise.resolve();\nexport {\n ce as Fragment,\n ot as h,\n ut as mount,\n ct as mountCallback,\n ft as nextTick,\n lt as ref,\n nt as render,\n rt as updateCallback\n};\n//# sourceMappingURL=lithent.mjs.map\n","import { mountCallback as a, updateCallback as p } from \"lithent\";\nconst v = (r, t) => {\n let e = r;\n return {\n get value() {\n return e;\n },\n get v() {\n return e;\n },\n set value(n) {\n e = n, t();\n },\n set v(n) {\n e = n, t();\n }\n };\n}, f = (r) => {\n let t = r;\n return {\n get value() {\n return t();\n },\n get v() {\n return t();\n },\n set value(e) {\n throw new Error(\"You can't change 'computed'\");\n },\n set v(e) {\n throw new Error(\"You can't change 'computed'\");\n }\n };\n}, m = (r, t = () => {\n}, e = () => []) => {\n a(() => (r(), t)), p(() => (t && t(), r), e);\n}, l = /* @__PURE__ */ new Map(), u = {}, i = (r) => {\n const t = Symbol();\n return l.set(t, r), (e) => (u[t] ?? (u[t] = []), u[t].push(e), h(t));\n}, h = (r) => new Proxy(l.get(r), {\n get(t, e) {\n return t[e];\n },\n set(t, e, n) {\n t[e] = n;\n const s = u[r], c = [];\n return s.forEach((o) => {\n o() || c.push(o);\n }), c.forEach(\n (o) => s.splice(s.indexOf(o), 1)\n ), !0;\n }\n});\nexport {\n f as computed,\n m as effect,\n v as state,\n i 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","E","fe","de","s","c","pe","U","v","i","P","T","$","ce","H","z","he","ie","ye","ve","ke","Ce","ae","n","Re","Ee","J","G","k","Y","x","A","y","a","O","u","xe","t","Pe","R","Z","V","Ne","Te","Se","K","r","o","be","Q","g","L","Ae","Ue","ct","X","Le","Oe","nt","N","j","Me","m","q","I","Be","je","D","Qe","te","w","b","W","M","ee","l","Ie","se","Ge","ze","qe","_e","F","Xe","Je","He","Ye","$e","h","d","f","Ve","Ze","Ke","ge","me","rt","we","e","ot","ue","tt","ut","ne","re","_","le","We","oe","De","et","st","lt","p","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-6f85ca2a.js"></script>
|
|
8
8
|
</head>
|
|
9
9
|
<body>
|
|
10
10
|
<section id="root"></section>
|
package/package.json
CHANGED
package/src/tests/test5.tsx
CHANGED
|
@@ -37,7 +37,8 @@ const Nested = mount(function (r) {
|
|
|
37
37
|
);
|
|
38
38
|
});
|
|
39
39
|
|
|
40
|
-
const testWrap =
|
|
40
|
+
const testWrap =
|
|
41
|
+
document.getElementById('root') || document.createElement('div');
|
|
41
42
|
|
|
42
43
|
render(<Nested />, testWrap);
|
|
43
44
|
|
package/src/utils/predicator.ts
CHANGED
|
@@ -55,7 +55,7 @@ const checkNormalTypeElement = (
|
|
|
55
55
|
) =>
|
|
56
56
|
checkPlainWDomType(newWDom) &&
|
|
57
57
|
originalWDom?.type === newWDom.type &&
|
|
58
|
-
(
|
|
58
|
+
(newWDom.type !== 'loop' ||
|
|
59
59
|
(newWDom.type === 'loop' &&
|
|
60
60
|
checkExisty(getKey((newWDom.children || [])[0])) &&
|
|
61
61
|
checkExisty(getKey((originalWDom.children || [])[0]))));
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const l of document.querySelectorAll('link[rel="modulepreload"]'))o(l);new MutationObserver(l=>{for(const r of l)if(r.type==="childList")for(const u of r.addedNodes)u.tagName==="LINK"&&u.rel==="modulepreload"&&o(u)}).observe(document,{childList:!0,subtree:!0});function n(l){const r={};return l.integrity&&(r.integrity=l.integrity),l.referrerPolicy&&(r.referrerPolicy=l.referrerPolicy),l.crossOrigin==="use-credentials"?r.credentials="include":l.crossOrigin==="anonymous"?r.credentials="omit":r.credentials="same-origin",r}function o(l){if(l.ep)return;l.ep=!0;const r=n(l);fetch(l.href,r)}})();const g=e=>typeof e=="object"&&!("resolve"in e),b=(e,t)=>g(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),xe=(e,t)=>{var n,o;return g(e)&&(t==null?void 0:t.type)==="fragment"&&((n=t==null?void 0:t.children)==null?void 0:n.length)===((o=e==null?void 0:e.children)==null?void 0:o.length)},be=(e,t)=>{var n,o;return g(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)===((o=e==null?void 0:e.children)==null?void 0:o.length)},k=(e,t)=>{var n,o;return g(e)&&(t==null?void 0:t.type)===e.type&&(((n=t==null?void 0:t.children)==null?void 0:n.length)===((o=e==null?void 0:e.children)==null?void 0:o.length)||e.type==="loop"&&m(v((e.children||[])[0]))&&m(v((t.children||[])[0])))},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)},w=e=>e&&["fragment","loop"].includes(e),N=e=>typeof e=="function"&&!X(e)||typeof e=="object"&&"resolve"in e,X=e=>typeof e=="function"&&e===A,_=e=>g(e)&&!e.type,m=e=>e!=null,Y=(e,t)=>e==="style"&&typeof t=="object",Ce=(e,t)=>e==="ref"&&typeof t=="object",Re=e=>e.nodeType===1&&e.tagName==="OPTION",we=e=>e.nodeType===1&&e.tagName==="TEXTAREA",Ne=e=>e.nodeType===1&&["radio","checkbox"].includes(e.type),Se=e=>{let t="et";return N(e)?t="c":b(e,"fragment")?t="f":b(e,"element")?t="e":b(e,"loop")?t="l":b(e,"text")?t="t":_(e)&&(t="et"),t},Te={c:Pe,l:k,t:k,e:be,f:xe,et:k},p=e=>e.getParent&&e.getParent(),Ve=(e,t)=>{const{compProps:n,compChild:o}=e,{props:l,children:r}=t;return n&&Oe(n,l),o&&Ae(o,r),e.reRender&&e.reRender()},z=e=>e.replace(/^on(.*)/,(t,n)=>n.toLowerCase()),J=e=>e==="className"?"class":e,f=Object.entries,G=Object.keys,S=Object.assign,Oe=(e,t)=>{e&&t!==e&&(G(e).forEach(n=>delete e[n]),f(t||{}).forEach(([n,o])=>e[n]=o))},Ae=(e,t)=>{e&&t!==e&&(e.splice(0,e.length),t&&t.forEach(n=>e.push(n)))};let C=[],K=!1;const h={value:""},y={value:{}},L={value:!1},i=new WeakMap,De=e=>()=>{var t;const n=(t=i.get(e))==null?void 0:t.up;let o=!1;return n&&(n(),o=!0),o},Ue=e=>{i.set(e,{vd:{value:null},up:()=>{},upR:[],upS:{value:0},upD:[],upCB:[],mts:[],umts:[]})},E=()=>y.value,Q=(e,t)=>i.get(e)[t],Z=(e,t)=>{i.get(e).up=()=>{C.push({compKey:e,exec:t}),K||(K=!0,queueMicrotask(Le))}},ke=e=>y.value=e,Ke=e=>{y.value=e,Ue(e)},ee=(e,t)=>{(e.children||[]).forEach(n=>{const o=n.compKey;o&&t.push(o),ee(n,t)})},Le=()=>{let e=[];C.forEach(o=>{var l,r;const u=(r=(l=i.get(o.compKey))==null?void 0:l.vd)==null?void 0:r.value;u&&ee(u,e)});const t=[],n=C.reduce((o,l)=>{const{compKey:r}=l;return e.includes(r)||t.includes(r)||(t.push(r),o.push(l)),o},[]);for(;n.length;){const o=n.shift();o&&o.exec()}C=[],K=!1},Me=e=>{i.get(E()).umts.push(e)},j=e=>{const{compKey:t}=e;t&&Fe(t),te(e)},te=e=>{(e.children||[]).forEach(t=>{t.compKey?j(t):te(t)})},Fe=e=>{const t=i.get(e);t&&(t.umts.forEach(n=>n()),t.umts=[],i.delete(e))};let M=[];const B=()=>{M.forEach(e=>je(e)),M=[]},Ie=e=>{e.compKey&&M.push(e)},ne=e=>i.get(E()).mts.push(e),je=e=>{const{compKey:t}=e;if(t){const n=i.get(t),o=n==null?void 0:n.mts,l=n==null?void 0:n.upS;y.value=t,l&&(l.value=0),o&&(n.mts=[],o.forEach(r=>{const u=r();u&&Me(u)}))}},W=(e,t=()=>[])=>{const n=i.get(E()),{upD:o,upS:l}=n,r=o[l.value];if(r&&$e(r,t())){const u=e();u&&n.upCB.push(u)}o[l.value]=t(),l.value+=1},Be=e=>{const{compKey:t}=e;if(t){const n=i.get(t),o=n==null?void 0:n.upCB,l=n==null?void 0:n.upS;y.value=t,l&&(l.value=0),e.ctor&&o&&(n.upCB=[],o.forEach(r=>r()))}},$e=(e,t)=>!e.length&&!e.length?!0:e.some((n,o)=>n!==t[o]),qe=(e,t,n)=>{t??(t=document.body),e.isRoot=!0,e.wrapElement=t;const o=T(e);return n?(e.afterElement=n,t.insertBefore(o,n)):t.appendChild(o),B(),()=>{var l;const r=(l=i.get(e.compProps||{}))==null?void 0:l.vd.value;r&&(j(r),$(r),He(r))}},oe=e=>{const{needRerender:t}=e;t&&t!=="N"&&{A:H,D:q,R:Je,U:We,SR:ue,SU:Ye}[t](e)},$=e=>{e.props&&e.el&&ie(e.props,e.el),(e.children||[]).forEach(t=>{$(t)})},He=e=>{le(e,e.wrapElement)},q=e=>{e.oldProps&&e.el&&ie(e.oldProps,e.el),le(e,V(p(e)))},le=(e,t)=>{var n,o;t&&e.el&&(((n=e.el)==null?void 0:n.nodeType)===1?t.removeChild(e.el):((o=e.el)==null?void 0:o.nodeType)===11&&re(e,t),delete e.el)},re=(e,t)=>{((e==null?void 0:e.oldChildren)||(e==null?void 0:e.children)||[]).forEach(n=>{var o,l;((o=n.el)==null?void 0:o.nodeType)===1?t.removeChild(n==null?void 0:n.el):((l=n.el)==null?void 0:l.nodeType)===11&&re(n,t)})},ue=e=>{q(e),H(e)},Ye=e=>{q(e),H(e,e.el)},H=(e,t)=>{t||(t=T(e));const n=p(e);if(n.type){const o=V(n),l=n.type==="loop"?F(n,p(n)):F(e,n);t&&o&&(l?o.insertBefore(t,l):o.appendChild(t),B())}},F=(e,t)=>{const n=t.children||[],o=n.indexOf(e)+1,l=n.slice(o),r=ce(l),u=t.type||"";if(r)return r;if(!t.isRoot&&w(u))return F(t,p(t));if(t.isRoot&&t.afterElement)return t.afterElement},ce=e=>e.reduce((t,n)=>{const o=n.type,l=n.el,r=o&&w(o);return t||(r?ce(n.children||[]):l&&l.nodeType!==11?l:t)},void 0),Je=e=>{const t=p(e),n=e.el;if(t.type&&n)if(n.nodeType===11)ue(e);else{const o=V(t),l=T(e);o&&o.replaceChild(l,n),B()}},ie=(e,t)=>{f(e||{}).forEach(([n,o])=>{n.match(/^on/)&&t.removeEventListener(z(n),o)})},We=e=>{var t;const n=e.el;if(e.type==="text"){Xe(e);return}if(n){const{oldProps:o,props:l}=e;ae(l,n,o),delete e.oldProps,e.tag==="input"&&(n.value=String(((t=e==null?void 0:e.props)==null?void 0:t.value)||""))}(e.children||[]).forEach(o=>oe(o)),Be(e)},Xe=e=>{const t=e.el;t&&(t.nodeValue=String(e.text))},ae=(e,t,n)=>{const o={...n};f(e||{}).forEach(([l,r])=>{let u=!0;l==="key"||(l==="innerHTML"&&typeof r=="string"?t.innerHTML=r:Y(l,r)?Qe(r,Y(l,o.style)?o.style:{},t):Ce(l,r)?r.value=t:l.match(/^on/)?Ge(t,l,r,o[l]):Ne(t)&&l==="checked"?t.checked=!!r:we(t)&&l==="value"?t.value=r:Re(t)&&l==="selected"?t.selected=!!r:l&&([u,r]=_e(r),u&&(h.value&&l!=="xmlns"?t.setAttributeNS(null,J(l),r):t.setAttribute(J(l),r)))),u&&delete o[l]}),G(o).forEach(l=>t.removeAttribute(l))},_e=e=>{let t=!0;return typeof e=="boolean"&&(e||(t=!1),e=""),[t,String(e)]},T=e=>{let t;const{type:n,tag:o,text:l,props:r,children:u=[]}=e,d=w(n);return o==="svg"&&(h.value=String(r==null?void 0:r.xmlns)),d?t=new DocumentFragment:n==="element"&&o?t=h.value?document.createElementNS(h.value,o):document.createElement(o):n==="text"&&m(l)?t=document.createTextNode(String(l)):t=document.createElement("e"),ze(u,t),ae(r,t),e.el=t,Ie(e),o==="svg"&&(h.value=""),t},ze=(e,t)=>{const n=e.reduce((o,l)=>(l.type&&o.appendChild(T(l)),o),new DocumentFragment);t&&n.hasChildNodes()&&t.appendChild(n)},Ge=(e,t,n,o)=>{const l=z(t);o!==n&&(o&&e.removeEventListener(l,o),n&&e.addEventListener(l,n))},Qe=(e,t,n)=>{const o={...t},l=n==null?void 0:n.style;l&&(f(e).forEach(([r,u])=>{l[r]=u,delete o[r]}),f(o).forEach(([r])=>l[r]=""))},V=e=>{const t=w(e.type);return e.isRoot&&t?e.wrapElement:t?V(p(e)):e.el},O=(e,t)=>Ze(e,Te[Se(e)](e,t),t),Ze=(e,t,n)=>{const o=nt(e,t,n),l=[o,t,n],r=tt(...l);return o.children=ot(...l),o.needRerender=r,et(o,n,r),o},et=(e,t,n)=>{n!=="A"&&t&&(e.el=t.el),n&&["D","R","SR"].includes(n)&&(t!=null&&t.compKey&&(j(t),$(t)),e.oldChildren=t==null?void 0:t.children),e.oldProps=t==null?void 0:t.props},tt=(e,t,n)=>{const o=n&&n.type,l=_(e),r=!!e.getParent&&p(e).type,u=v(e),d=r==="loop"&&m(u),s=e.type==="text"&&t&&e.text===(n==null?void 0:n.text);let a;return l?a="D":s?a="N":o?t?a=d?"SU":"U":a=d?"SR":"R":a="A",a},nt=(e,t,n)=>N(e)?t&&n?Ve(n,e):e.resolve():e,ot=(e,t,n)=>t&&n?rt(e,n):lt(e),lt=e=>(e.children||[]).map(t=>S(O(t),{getParent:()=>e})),rt=(e,t)=>e.type==="loop"&&m(v((e.children||[])[0]))?ut(e,t):(e.children||[]).map((n,o)=>S(O(n,(t.children||[])[o]),{getParent:()=>e})),ut=(e,t)=>{const[n,o]=ct(e,t);return o.map(l=>{const r=l.el;r!=null&&r.parentNode&&r.parentNode.removeChild(r)}),n},ct=(e,t)=>{const n=[...e.children||[]],o=[...t.children||[]];return[n.map(l=>{const r=it(l,o),u=O(l,r);return r&&o.splice(o.indexOf(r),1),u.getParent=()=>e,u}),o]},it=(e,t)=>t.find(n=>v(n)===v(e)),se=(e,t=()=>[])=>{i.get(E()).upR.push(()=>W(e,t)),W(e,t)},at=()=>{var e;const t=(e=i.get(E()))==null?void 0:e.upR;t!=null&&t.length&&t.forEach(n=>n())},A=(e,...t)=>({type:"fragment",children:t}),c=(e,t,...n)=>{const o={value:void 0},l=t||{},r=me(o,n),u=vt(e,l,r);return N(u)||(o.value=u),u},de=e=>(t,n)=>e,pe=(e,t,n,o)=>{var l;L.value=!0;const r=ve(e,t,n),u=O(r,o),{isRoot:d,getParent:s,wrapElement:a,afterElement:P}=o;if(u.getParent=s,!d&&s){const x=((l=s())==null?void 0:l.children)||[],D=x.indexOf(o);x.splice(D,1,u)}else u.isRoot=!0,u.wrapElement=a,u.afterElement=P;L.value=!1,oe(u)},ve=(e,t,n)=>({tagName:e.name,ctor:e,props:t,children:n,resolve:(o=t)=>{Ke(o);const l=e(t,n)(De(o),t,n),r=st(l,o,e,t,n),u=r;return Z(o,()=>pe(e,t,n,u)),Q(o,"vd").value=r,r}}),st=(e,t,n,o,l)=>{const r=e(o);if(r.reRender)throw new Error('The root of a component must not be a component, use "Fragment"');return he(r,t,n,o,l,dt(e,t,n,o,l)),r},dt=(e,t,n,o,l)=>{const r=()=>pt(e,t,n,o,l,r);return r},pt=(e,t,n,o,l,r)=>{ke(t),at();const u=e(o);return Z(t,()=>pe(n,o,l,u)),he(u,t,n,o,l,r),Q(t,"vd").value=u,u},he=(e,t,n,o,l,r)=>{S(e,{compProps:o,compChild:l,ctor:n,tagName:n.name,compKey:t,reRender:r})},vt=(e,t,n)=>{if(X(e))return A(t,...n);if(N(e)){const o=ve(e,t,n);return L.value?o:o.resolve()}return{type:"element",tag:e,props:t,children:n}},me=(e,t)=>t.map(n=>S(ht(n),{getParent:()=>e.value})),ht=e=>{if(e==null||e===!1)return{type:null};if(Array.isArray(e)){const t={value:void 0},n={type:"loop",children:me(t,e)};return t.value=n,n}else if(typeof e=="string"||typeof e=="number")return{type:"text",text:e};return e},mt=e=>({value:e}),I=(e,t)=>{let n=e;return{get value(){return n},get v(){return n},set value(o){n=o,t()},set v(o){n=o,t()}}},ft=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'")}}},gt=(e,t=()=>{},n=()=>[])=>{ne(()=>(e(),t)),se(()=>(t&&t(),e),n)},fe=new Map,R={},yt=e=>{const t=Symbol();return fe.set(t,e),n=>(R[t]??(R[t]=[]),R[t].push(n),Et(t))},Et=e=>new Proxy(fe.get(e),{get(t,n){return t[n]},set(t,n,o){t[n]=o;const l=R[e],r=[];return l.forEach(u=>{u()||r.push(u)}),r.forEach(u=>l.splice(l.indexOf(u),1)),!0}}),Pt=de((e,t,n)=>{const o=I(1,e),l=I('"destructuring" the "props" value directly from the mount function will cause referencing issues, so if you want to use it, you need to "destructuring" it from the internal function (updater).',e),r=()=>t.parentValue,u=t.parentValue,d=ft(()=>o.v+a+t.parentValue),s=yt({text:"s",count:0})(e);let a=t.parentValue;const P=mt(null),x=()=>{o.v=o.v+1,a+=1},D=U=>{l.v=U.target.value},ge=()=>{s.count+=1,s.text+="1"},ye=()=>(console.log("MOUNTED",P),()=>console.log("UNMOUNT")),Ee=()=>(console.log("UPDATE - parentValue"),()=>console.log("UPDATED"));return ne(ye),se(Ee,()=>[t.parentValue]),gt(()=>console.log("INJECT"),()=>console.log("CLEAN_UP"),()=>[o.v]),({parentValue:U})=>c(A,null,c("div",null,c("textarea",{value:l.v,onInput:D,style:{width:"300px",height:"100px"}})),c("div",null,l.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: ",U," (working)"),c("div",{style:{color:"red"}},"parentValueFromMounterDestructuring: ",u," (not working)")),c("div",null,c("div",{ref:P},"count: ",o.v),c("div",null,"sum: ",o.v+a+t.parentValue),c("div",null,"sum(computed): ",d.v),c("div",null,"notRefValue: ",a),c("div",null,"localStore(text): ",s.text),c("div",null,"localStore(count): ",s.count)),c("button",{onClick:x},"Increase"),c("button",{onClick:ge},"localStoreUpdate"),n)}),xt=de(e=>{const t=I(7,e),n=()=>{t.v=t.v+1},o=()=>{t.v=t.v-1};return()=>c(A,null,c(Pt,{parentValue:t.v},c("button",{onClick:n},"Increase - Parent")),c("button",{onClick:o},"Decrease - Parent"))}),bt=c(xt,null);qe(bt,document.getElementById("root"));
|
|
2
|
-
//# sourceMappingURL=index-a93b0638.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index-a93b0638.js","sources":["../../../dist/lithent.mjs","../../../helper/dist/lithentHelper.mjs","../../src/index.tsx"],"sourcesContent":["const C = (e) => typeof e == \"object\" && !(\"resolve\" in e), E = (e, t) => C(e) && e.type === t, fe = (e, t) => \"ctor\" in e ? e.ctor === (t == null ? void 0 : t.ctor) : e === (t == null ? void 0 : t.ctor), de = (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}, pe = (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}, U = (e, t) => {\n var s, c;\n return C(e) && (t == null ? void 0 : t.type) === e.type && (((s = t == null ? void 0 : t.children) == null ? void 0 : s.length) === ((c = e == null ? void 0 : e.children) == null ? void 0 : c.length) || e.type === \"loop\" && y(i((e.children || [])[0])) && y(i((t.children || [])[0])));\n}, i = (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}, P = (e) => e && [\"fragment\", \"loop\"].includes(e), T = (e) => typeof e == \"function\" && !$(e) || typeof e == \"object\" && \"resolve\" in e, $ = (e) => typeof e == \"function\" && e === ce, H = (e) => C(e) && !e.type, y = (e) => e != null, z = (e, t) => e === \"style\" && typeof t == \"object\", he = (e, t) => e === \"ref\" && typeof t == \"object\", ie = (e) => e.nodeType === 1 && e.tagName === \"OPTION\", ve = (e) => e.nodeType === 1 && e.tagName === \"TEXTAREA\", ye = (e) => e.nodeType === 1 && [\"radio\", \"checkbox\"].includes(e.type), ke = (e) => {\n let t = \"et\";\n return T(e) ? t = \"c\" : E(e, \"fragment\") ? t = \"f\" : E(e, \"element\") ? t = \"e\" : E(e, \"loop\") ? t = \"l\" : E(e, \"text\") ? t = \"t\" : H(e) && (t = \"et\"), t;\n}, Ce = {\n c: fe,\n l: U,\n t: U,\n e: pe,\n f: de,\n et: U\n}, p = (e) => e.getParent && e.getParent(), ae = (e, t) => {\n const { compProps: s, compChild: c } = e, { props: n, children: r } = t;\n return s && Re(s, n), c && Ee(c, r), e.reRender && e.reRender();\n}, J = (e) => e.replace(/^on(.*)/, (t, s) => s.toLowerCase()), G = (e) => e === \"className\" ? \"class\" : e, k = Object.entries, Y = Object.keys, S = Object.assign, Re = (e, t) => {\n e && t !== e && (Y(e).forEach((s) => delete e[s]), k(t || {}).forEach(([s, c]) => e[s] = c));\n}, Ee = (e, t) => {\n e && t !== e && (e.splice(0, e.length), t && t.forEach((s) => e.push(s)));\n};\nlet x = [], A = !1;\nconst v = { value: \"\" }, a = { value: {} }, O = { value: !1 }, u = /* @__PURE__ */ new WeakMap(), xe = (e) => () => {\n var c;\n const t = (c = u.get(e)) == null ? void 0 : c.up;\n let s = !1;\n return t && (t(), s = !0), s;\n}, Pe = (e) => {\n u.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}, R = () => a.value, Z = (e, t) => u.get(e)[t], V = (e, t) => {\n u.get(e).up = () => {\n x.push({\n compKey: e,\n exec: t\n }), A || (A = !0, queueMicrotask(Ne));\n };\n}, Te = (e) => a.value = e, Se = (e) => {\n a.value = e, Pe(e);\n}, K = (e, t) => {\n (e.children || []).forEach((s) => {\n const c = s.compKey;\n c && t.push(c), K(s, t);\n });\n}, Ne = () => {\n let e = [];\n x.forEach((c) => {\n var r, o;\n const n = (o = (r = u.get(c.compKey)) == null ? void 0 : r.vd) == null ? void 0 : o.value;\n n && K(n, e);\n });\n const t = [], s = x.reduce((c, n) => {\n const { compKey: r } = n;\n return e.includes(r) || t.includes(r) || (t.push(r), c.push(n)), c;\n }, []);\n for (; s.length; ) {\n const c = s.shift();\n c && c.exec();\n }\n x = [], A = !1;\n}, be = (e) => {\n u.get(R()).umts.push(e);\n}, Q = (e) => {\n const { compKey: t } = e;\n t && Fe(t), g(e);\n}, g = (e) => {\n (e.children || []).forEach((t) => {\n t.compKey ? Q(t) : g(t);\n });\n}, Fe = (e) => {\n const t = u.get(e);\n t && (t.umts.forEach((s) => s()), t.umts = [], u.delete(e));\n};\nlet L = [];\nconst B = () => {\n L.forEach((e) => Ae(e)), L = [];\n}, Ue = (e) => {\n e.compKey && L.push(e);\n}, ct = (e) => u.get(R()).mts.push(e), Ae = (e) => {\n const { compKey: t } = e;\n if (t) {\n const s = u.get(t), c = s == null ? void 0 : s.mts, n = s == null ? void 0 : s.upS;\n a.value = t, n && (n.value = 0), c && (s.mts = [], c.forEach((r) => {\n const o = r();\n o && be(o);\n }));\n }\n}, X = (e, t = () => []) => {\n const s = u.get(R()), { upD: c, upS: n } = s, r = c[n.value];\n if (r && Le(r, t())) {\n const o = e();\n o && s.upCB.push(o);\n }\n c[n.value] = t(), n.value += 1;\n}, Oe = (e) => {\n const { compKey: t } = e;\n if (t) {\n const s = u.get(t), c = s == null ? void 0 : s.upCB, n = s == null ? void 0 : s.upS;\n a.value = t, n && (n.value = 0), e.ctor && c && (s.upCB = [], c.forEach((r) => r()));\n }\n}, Le = (e, t) => !e.length && !e.length ? !0 : e.some((s, c) => s !== t[c]), nt = (e, t, s) => {\n t ?? (t = document.body), e.isRoot = !0, e.wrapElement = t;\n const c = N(e);\n return s ? (e.afterElement = s, t.insertBefore(c, s)) : t.appendChild(c), B(), () => {\n var r;\n const n = (r = u.get(e.compProps || {})) == null ? void 0 : r.vd.value;\n n && (Q(n), j(n), Me(n));\n };\n}, m = (e) => {\n const { needRerender: t } = e;\n t && t !== \"N\" && {\n A: q,\n D: I,\n R: Be,\n U: je,\n SR: D,\n SU: Qe\n }[t](e);\n}, j = (e) => {\n e.props && e.el && te(e.props, e.el), (e.children || []).forEach((t) => {\n j(t);\n });\n}, Me = (e) => {\n w(e, e.wrapElement);\n}, I = (e) => {\n e.oldProps && e.el && te(e.oldProps, e.el), w(\n e,\n b(p(e))\n );\n}, w = (e, t) => {\n var s, c;\n t && e.el && (((s = e.el) == null ? void 0 : s.nodeType) === 1 ? t.removeChild(e.el) : ((c = e.el) == null ? void 0 : c.nodeType) === 11 && W(e, t), delete e.el);\n}, W = (e, t) => {\n ((e == null ? void 0 : e.oldChildren) || (e == null ? void 0 : e.children) || []).forEach((s) => {\n var c, n;\n ((c = s.el) == null ? void 0 : c.nodeType) === 1 ? t.removeChild(s == null ? void 0 : s.el) : ((n = s.el) == null ? void 0 : n.nodeType) === 11 && W(s, t);\n });\n}, D = (e) => {\n I(e), q(e);\n}, Qe = (e) => {\n I(e), q(e, e.el);\n}, q = (e, t) => {\n t || (t = N(e));\n const s = p(e);\n if (s.type) {\n const c = b(s), r = s.type === \"loop\" ? M(s, p(s)) : M(e, s);\n t && c && (r ? c.insertBefore(t, r) : c.appendChild(t), B());\n }\n}, M = (e, t) => {\n const s = t.children || [], n = s.indexOf(e) + 1, r = s.slice(n), o = ee(r), l = t.type || \"\";\n if (o)\n return o;\n if (!t.isRoot && P(l))\n return M(t, p(t));\n if (t.isRoot && t.afterElement)\n return t.afterElement;\n}, ee = (e) => e.reduce(\n (t, s) => {\n const c = s.type, n = s.el, r = c && P(c);\n return t || (r ? ee(s.children || []) : n && n.nodeType !== 11 ? n : t);\n },\n void 0\n), Be = (e) => {\n const t = p(e), s = e.el;\n if (t.type && s)\n if (s.nodeType === 11)\n D(e);\n else {\n const c = b(t), n = N(e);\n c && c.replaceChild(n, s), B();\n }\n}, te = (e, t) => {\n k(e || {}).forEach(([s, c]) => {\n s.match(/^on/) && t.removeEventListener(\n J(s),\n c\n );\n });\n}, je = (e) => {\n var s;\n const t = e.el;\n if (e.type === \"text\") {\n Ie(e);\n return;\n }\n if (t) {\n const { oldProps: c, props: n } = e;\n se(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) => m(c)), Oe(e);\n}, Ie = (e) => {\n const t = e.el;\n t && (t.nodeValue = String(e.text));\n}, se = (e, t, s) => {\n const c = { ...s };\n k(e || {}).forEach(([n, r]) => {\n let o = !0;\n n === \"key\" || (n === \"innerHTML\" && typeof r == \"string\" ? t.innerHTML = r : z(n, r) ? Ge(\n r,\n z(n, c.style) ? c.style : {},\n t\n ) : he(n, r) ? r.value = t : n.match(/^on/) ? ze(\n t,\n n,\n r,\n c[n]\n ) : ye(t) && n === \"checked\" ? t.checked = !!r : ve(t) && n === \"value\" ? t.value = r : ie(t) && n === \"selected\" ? t.selected = !!r : n && ([o, r] = qe(r), o && (v.value && n !== \"xmlns\" ? t.setAttributeNS(\n null,\n G(n),\n r\n ) : t.setAttribute(\n G(n),\n r\n )))), o && delete c[n];\n }), Y(c).forEach(\n (n) => t.removeAttribute(n)\n );\n}, qe = (e) => {\n let t = !0;\n return typeof e == \"boolean\" && (e || (t = !1), e = \"\"), [t, String(e)];\n}, N = (e) => {\n let t;\n const { type: s, tag: c, text: n, props: r, children: o = [] } = e, l = P(s);\n return c === \"svg\" && (v.value = String(r == null ? void 0 : r.xmlns)), l ? t = new DocumentFragment() : s === \"element\" && c ? t = v.value ? document.createElementNS(v.value, c) : document.createElement(c) : s === \"text\" && y(n) ? t = document.createTextNode(String(n)) : t = document.createElement(\"e\"), _e(o, t), se(r, t), e.el = t, Ue(e), c === \"svg\" && (v.value = \"\"), t;\n}, _e = (e, t) => {\n const s = e.reduce(\n (c, n) => (n.type && c.appendChild(N(n)), c),\n new DocumentFragment()\n );\n t && s.hasChildNodes() && t.appendChild(s);\n}, ze = (e, t, s, c) => {\n const n = J(t);\n c !== s && (c && e.removeEventListener(n, c), s && e.addEventListener(n, s));\n}, Ge = (e, t, s) => {\n const c = { ...t }, n = s == null ? void 0 : s.style;\n n && (k(e).forEach(([r, o]) => {\n n[r] = o, delete c[r];\n }), k(c).forEach(\n ([r]) => n[r] = \"\"\n ));\n}, b = (e) => {\n const t = P(e.type);\n return e.isRoot && t ? e.wrapElement : t ? b(p(e)) : e.el;\n}, F = (e, t) => Xe(\n e,\n Ce[ke(e)](e, t),\n t\n), Xe = (e, t, s) => {\n const c = Je(e, t, s), n = [\n c,\n t,\n s\n ], r = He(...n);\n return c.children = Ye(...n), c.needRerender = r, $e(c, s, r), c;\n}, $e = (e, t, s) => {\n s !== \"A\" && t && (e.el = t.el), s && [\"D\", \"R\", \"SR\"].includes(s) && (t != null && t.compKey && (Q(t), j(t)), e.oldChildren = t == null ? void 0 : t.children), e.oldProps = t == null ? void 0 : t.props;\n}, He = (e, t, s) => {\n const c = s && s.type, n = H(e), o = !!e.getParent && p(e).type, l = i(e), h = o === \"loop\" && y(l), d = e.type === \"text\" && t && e.text === (s == null ? void 0 : s.text);\n let f;\n return n ? f = \"D\" : d ? f = \"N\" : c ? t ? f = h ? \"SU\" : \"U\" : f = h ? \"SR\" : \"R\" : f = \"A\", f;\n}, Je = (e, t, s) => T(e) ? t && s ? ae(s, e) : e.resolve() : e, Ye = (e, t, s) => t && s ? Ve(e, s) : Ze(e), Ze = (e) => (e.children || []).map(\n (t) => S(F(t), { getParent: () => e })\n), Ve = (e, t) => e.type === \"loop\" && y(i((e.children || [])[0])) ? Ke(e, t) : (e.children || []).map(\n (s, c) => S(F(s, (t.children || [])[c]), {\n getParent: () => e\n })\n), Ke = (e, t) => {\n const [s, c] = ge(\n e,\n t\n );\n return c.map((n) => {\n const r = n.el;\n r != null && r.parentNode && r.parentNode.removeChild(r);\n }), s;\n}, ge = (e, t) => {\n const s = [...e.children || []], c = [...t.children || []];\n return [s.map((r) => {\n const o = me(r, c), l = F(r, o);\n return o && c.splice(c.indexOf(o), 1), l.getParent = () => e, l;\n }), c];\n}, me = (e, t) => t.find(\n (s) => i(s) === i(e)\n), rt = (e, t = () => []) => {\n u.get(R()).upR.push(() => X(e, t)), X(e, t);\n}, we = () => {\n var t;\n const e = (t = u.get(R())) == null ? void 0 : t.upR;\n e != null && e.length && e.forEach((s) => s());\n}, ce = (e, ...t) => ({\n type: \"fragment\",\n children: t\n}), ot = (e, t, ...s) => {\n const c = { value: void 0 }, n = t || {}, r = ue(c, s), o = tt(e, n, r);\n return T(o) || (c.value = o), o;\n}, ut = (e) => (t, s) => e, ne = (e, t, s, c) => {\n var f;\n O.value = !0;\n const n = re(e, t, s), r = F(n, c), { isRoot: o, getParent: l, wrapElement: h, afterElement: d } = c;\n if (r.getParent = l, !o && l) {\n const _ = ((f = l()) == null ? void 0 : f.children) || [], le = _.indexOf(c);\n _.splice(le, 1, r);\n } else\n r.isRoot = !0, r.wrapElement = h, r.afterElement = d;\n O.value = !1, m(r);\n}, re = (e, t, s) => ({ tagName: e.name, ctor: e, props: t, children: s, resolve: (o = t) => {\n Se(o);\n const h = e(t, s)(xe(o), t, s), d = We(\n h,\n o,\n e,\n t,\n s\n ), f = d;\n return V(\n o,\n () => ne(e, t, s, f)\n ), Z(o, \"vd\").value = d, d;\n} }), We = (e, t, s, c, n) => {\n const r = e(c);\n if (r.reRender)\n throw new Error(\n 'The root of a component must not be a component, use \"Fragment\"'\n );\n return oe(\n r,\n t,\n s,\n c,\n n,\n De(e, t, s, c, n)\n ), r;\n}, De = (e, t, s, c, n) => {\n const r = () => et(e, t, s, c, n, r);\n return r;\n}, et = (e, t, s, c, n, r) => {\n Te(t), we();\n const o = e(c);\n return V(\n t,\n () => ne(s, c, n, o)\n ), oe(o, t, s, c, n, r), Z(t, \"vd\").value = o, o;\n}, oe = (e, t, s, c, n, r) => {\n S(e, {\n compProps: c,\n compChild: n,\n ctor: s,\n tagName: s.name,\n compKey: t,\n reRender: r\n });\n}, tt = (e, t, s) => {\n if ($(e))\n return ce(t, ...s);\n if (T(e)) {\n const c = re(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}, ue = (e, t) => t.map(\n (s) => S(st(s), { getParent: () => e.value })\n), st = (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: ue(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}, lt = (e) => ({ value: e }), ft = () => Promise.resolve();\nexport {\n ce as Fragment,\n ot as h,\n ut as mount,\n ct as mountCallback,\n ft as nextTick,\n lt as ref,\n nt as render,\n rt as updateCallback\n};\n//# sourceMappingURL=lithent.mjs.map\n","import { mountCallback as a, updateCallback as p } from \"lithent\";\nconst v = (r, t) => {\n let e = r;\n return {\n get value() {\n return e;\n },\n get v() {\n return e;\n },\n set value(n) {\n e = n, t();\n },\n set v(n) {\n e = n, t();\n }\n };\n}, f = (r) => {\n let t = r;\n return {\n get value() {\n return t();\n },\n get v() {\n return t();\n },\n set value(e) {\n throw new Error(\"You can't change 'computed'\");\n },\n set v(e) {\n throw new Error(\"You can't change 'computed'\");\n }\n };\n}, m = (r, t = () => {\n}, e = () => []) => {\n a(() => (r(), t)), p(() => (t && t(), r), e);\n}, l = /* @__PURE__ */ new Map(), u = {}, i = (r) => {\n const t = Symbol();\n return l.set(t, r), (e) => (u[t] ?? (u[t] = []), u[t].push(e), h(t));\n}, h = (r) => new Proxy(l.get(r), {\n get(t, e) {\n return t[e];\n },\n set(t, e, n) {\n t[e] = n;\n const s = u[r], c = [];\n return s.forEach((o) => {\n o() || c.push(o);\n }), c.forEach(\n (o) => s.splice(s.indexOf(o), 1)\n ), !0;\n }\n});\nexport {\n f as computed,\n m as effect,\n v as state,\n i 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","E","fe","de","s","c","pe","U","y","i","P","T","$","ce","H","z","he","ie","ve","ye","ke","Ce","ae","n","Re","Ee","J","G","k","Y","x","A","v","a","O","u","xe","t","Pe","R","Z","V","Ne","Te","Se","K","r","o","be","Q","g","L","Ae","Ue","ct","X","Le","Oe","nt","N","j","Me","m","q","I","Be","je","D","Qe","te","w","b","W","M","ee","l","Ie","se","Ge","ze","qe","_e","F","Xe","Je","He","Ye","$e","h","d","f","Ve","Ze","Ke","ge","me","rt","we","e","ot","ue","tt","ut","ne","re","_","le","We","oe","De","et","st","lt","p","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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"}
|