lithent 1.9.0 → 1.9.2
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 +14 -15
- package/dist/lithent.mjs +11 -8
- 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-08ddebb4.js +2 -0
- package/examples/dist/assets/index-08ddebb4.js.map +1 -0
- package/examples/dist/index.html +1 -1
- package/ftags/dist/lithentFTags.mjs +1 -1
- package/ftags/dist/lithentFTags.mjs.map +1 -1
- package/ftags/dist/lithentFTags.umd.js +1 -1
- package/ftags/dist/lithentFTags.umd.js.map +1 -1
- package/ftags/src/index.ts +1 -1
- package/package.json +1 -1
- package/src/render.ts +12 -7
- package/src/tests/destroy.tsx +54 -0
- package/src/tests/fragment.tsx +1 -1
- package/src/tests/ftag.tsx +3 -3
- package/examples/dist/assets/index-2566c3fa.js +0 -2
- package/examples/dist/assets/index-2566c3fa.js.map +0 -1
package/README.md
CHANGED
|
@@ -31,7 +31,6 @@ used lightly in a variety of situations.
|
|
|
31
31
|
## Thanks for the introduction
|
|
32
32
|
- [unsuckjs](https://unsuckjs.com/)
|
|
33
33
|
- [jster](https://jster.net/blog/jster-198/)
|
|
34
|
-
- [frontendweekly](https://frontendweekly.co/issues/365)
|
|
35
34
|
- [webtoolsweekly](https://webtoolsweekly.com/archives/issue-531/)
|
|
36
35
|
|
|
37
36
|
## Why use Lithent?
|
|
@@ -66,14 +65,14 @@ pnpm add lithent
|
|
|
66
65
|
|
|
67
66
|
#### Or Use CDN
|
|
68
67
|
|
|
69
|
-
* UMD : https://cdn.jsdelivr.net/npm/lithent@1.9.
|
|
70
|
-
* UMD-HELPER: https://cdn.jsdelivr.net/npm/lithent@1.9.
|
|
71
|
-
* UMD-FTAGS: https://cdn.jsdelivr.net/npm/lithent@1.9.
|
|
72
|
-
* UMD-TAG: https://cdn.jsdelivr.net/npm/lithent@1.9.
|
|
73
|
-
* ESM : https://cdn.jsdelivr.net/npm/lithent@1.9.
|
|
74
|
-
* ESM-HELPER: https://cdn.jsdelivr.net/npm/lithent@1.9.
|
|
75
|
-
* ESM-FTAGS: https://cdn.jsdelivr.net/npm/lithent@1.9.
|
|
76
|
-
* ESM-TAG: https://cdn.jsdelivr.net/npm/lithent@1.9.
|
|
68
|
+
* UMD : https://cdn.jsdelivr.net/npm/lithent@1.9.2/dist/lithent.umd.js
|
|
69
|
+
* UMD-HELPER: https://cdn.jsdelivr.net/npm/lithent@1.9.2/helper/dist/lithentHelper.umd.js
|
|
70
|
+
* UMD-FTAGS: https://cdn.jsdelivr.net/npm/lithent@1.9.2/ftags/dist/lithentFTags.umd.js
|
|
71
|
+
* UMD-TAG: https://cdn.jsdelivr.net/npm/lithent@1.9.2/tag/dist/lithentTag.umd.js
|
|
72
|
+
* ESM : https://cdn.jsdelivr.net/npm/lithent@1.9.2/dist/lithent.mjs
|
|
73
|
+
* ESM-HELPER: https://cdn.jsdelivr.net/npm/lithent@1.9.2/helper/dist/lithentHelper.mjs
|
|
74
|
+
* ESM-FTAGS: https://cdn.jsdelivr.net/npm/lithent@1.9.2/ftags/dist/lithentFTags.mjs
|
|
75
|
+
* ESM-TAG: https://cdn.jsdelivr.net/npm/lithent@1.9.2/tag/dist/lithentTag.mjs
|
|
77
76
|
|
|
78
77
|
|
|
79
78
|
It's easier to use lithent with JSX or HTM.
|
|
@@ -100,7 +99,7 @@ const fTagComponent = fMount<{ firstProp: number }>((_r, props, children) => {
|
|
|
100
99
|
return () =>
|
|
101
100
|
fFragment(
|
|
102
101
|
'first inner',
|
|
103
|
-
div({ style:
|
|
102
|
+
div({ style: { border: '1px solid red' } }, 'second inner'),
|
|
104
103
|
props.firstProp,
|
|
105
104
|
...children
|
|
106
105
|
);
|
|
@@ -109,7 +108,7 @@ const fTagComponent = fMount<{ firstProp: number }>((_r, props, children) => {
|
|
|
109
108
|
render(
|
|
110
109
|
fTagComponent(
|
|
111
110
|
{ firstProp: 3 },
|
|
112
|
-
div({ style:
|
|
111
|
+
div({ style: { border: '1px solid green' } }, `Fchildren1`),
|
|
113
112
|
'Fchildren2',
|
|
114
113
|
br()
|
|
115
114
|
),
|
|
@@ -161,10 +160,10 @@ const destroy = render(lTag`<${Component} />`, document.getElementById('root'),
|
|
|
161
160
|
#### With UMD
|
|
162
161
|
|
|
163
162
|
```html
|
|
164
|
-
<script src="https://cdn.jsdelivr.net/npm/lithent@1.9.
|
|
165
|
-
<!--script src="https://cdn.jsdelivr.net/npm/lithent@1.9.
|
|
166
|
-
<script src="https://cdn.jsdelivr.net/npm/lithent@1.9.
|
|
167
|
-
<!--script src="https://cdn.jsdelivr.net/npm/lithent@1.9.
|
|
163
|
+
<script src="https://cdn.jsdelivr.net/npm/lithent@1.9.2/dist/lithent.umd.js"></script>
|
|
164
|
+
<!--script src="https://cdn.jsdelivr.net/npm/lithent@1.9.2/helper/dist/lithentHelper.umd.js"></script-->
|
|
165
|
+
<script src="https://cdn.jsdelivr.net/npm/lithent@1.9.2/tag/dist/lithentTag.umd.js"></script>
|
|
166
|
+
<!--script src="https://cdn.jsdelivr.net/npm/lithent@1.9.2/ftags/dist/lithentFTags.umd.js"></script-->
|
|
168
167
|
|
|
169
168
|
<div id="root"></div>
|
|
170
169
|
|
package/dist/lithent.mjs
CHANGED
|
@@ -192,9 +192,9 @@ const render = (wDom, wrapElement, afterElement) => {
|
|
|
192
192
|
const component = (_a = componentRef.get(wDom.compProps || {})) == null ? void 0 : _a.vd.value;
|
|
193
193
|
if (component) {
|
|
194
194
|
runUnmountQueueFromWDom(component);
|
|
195
|
-
recursiveRemoveEvent(component);
|
|
196
|
-
rootDelete(component);
|
|
197
195
|
}
|
|
196
|
+
recursiveRemoveEvent(component || wDom);
|
|
197
|
+
rootDelete(component || wDom);
|
|
198
198
|
};
|
|
199
199
|
};
|
|
200
200
|
const wDomUpdate = (newWDomTree) => {
|
|
@@ -237,7 +237,7 @@ const typeDelete = (newWDom) => {
|
|
|
237
237
|
const deleteRealDom = (newWDom, parent) => {
|
|
238
238
|
var _a, _b;
|
|
239
239
|
if (parent && newWDom.el) {
|
|
240
|
-
if (((_a = newWDom.el) == null ? void 0 : _a.nodeType)
|
|
240
|
+
if ([1, 3].includes((_a = newWDom.el) == null ? void 0 : _a.nodeType)) {
|
|
241
241
|
parent.removeChild(newWDom.el);
|
|
242
242
|
} else if (((_b = newWDom.el) == null ? void 0 : _b.nodeType) === 11) {
|
|
243
243
|
findChildWithRemoveElement(newWDom, parent);
|
|
@@ -247,11 +247,14 @@ const deleteRealDom = (newWDom, parent) => {
|
|
|
247
247
|
};
|
|
248
248
|
const findChildWithRemoveElement = (newWDom, parent) => {
|
|
249
249
|
((newWDom == null ? void 0 : newWDom.oldChildren) || (newWDom == null ? void 0 : newWDom.children) || []).forEach((item) => {
|
|
250
|
-
var _a
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
250
|
+
var _a;
|
|
251
|
+
const nodeType = (_a = item.el) == null ? void 0 : _a.nodeType;
|
|
252
|
+
if (nodeType) {
|
|
253
|
+
if ([1, 3].includes(nodeType)) {
|
|
254
|
+
parent.removeChild(item == null ? void 0 : item.el);
|
|
255
|
+
} else if (nodeType === 11) {
|
|
256
|
+
findChildWithRemoveElement(item, parent);
|
|
257
|
+
}
|
|
255
258
|
}
|
|
256
259
|
});
|
|
257
260
|
};
|
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/utils/redraw.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) => checkPlainWDomType(newWDom) && originalWDom?.type === newWDom.type;\n\nconst checkLoopTypeElement = (\n newWDom: WDom | TagFunction | TagFunctionResolver,\n originalWDom?: WDom\n) =>\n checkPlainWDomType(newWDom) &&\n originalWDom?.type === newWDom.type &&\n ((checkExisty(getKey((newWDom.children || [])[0])) &&\n checkExisty(getKey((originalWDom?.children || [])[0]))) ||\n originalWDom?.children?.length === newWDom?.children?.length);\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: checkLoopTypeElement,\n t: checkNormalTypeElement,\n e: checkSameTagElement,\n f: checkSameFragment,\n et: checkNormalTypeElement,\n};\n","import { WDom } from '@/types';\n\nexport const getParent = (vDom: WDom) =>\n (vDom.getParent && vDom.getParent()) as WDom;\n\nexport const entries = Object.entries;\nexport const keys = Object.keys;\nexport const assign = Object.assign;\n","import { ComponentRef, ComponentSubKey, Props } from '@/types';\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\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 initUpdateHookState = (compKey: Props) =>\n (compKeyRef.value = compKey);\n\nexport const initMountHookState = (compKey: Props) => {\n compKeyRef.value = compKey;\n setComponetRef(compKey);\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\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, entries, keys } from '@/utils';\n\nconst getAttrKey = (keyName: string) =>\n keyName === 'className' ? 'class' : keyName;\n\nconst getEventName = (eventKey: string) =>\n eventKey.replace(/^on(.*)/, (_match, p1) => p1.toLowerCase());\n\nconst DF = () => new DocumentFragment();\nconst CE = (t: string) => document.createElement(t);\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 CNSU: typeUpdate,\n SR: typeSortedReplace,\n SU: typeSortedUpdate,\n })[needRerender](newWDomTree);\n\n delete newWDomTree.needRerender;\n delete newWDomTree.oldChildren;\n delete newWDomTree.oldProps;\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\nexport const 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 typeUpdate(newWDom);\n\n const parentWDom = getParent(newWDom);\n if (parentWDom.needRerender !== 'CNSU') {\n const newElement = getElementFromFragment(newWDom);\n\n typeAdd(newWDom, newElement);\n }\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 =\n isLoop && parentWDom.needRerender && parentWDom.needRerender !== 'CNSU'\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 getElementFromFragment = (newWDom: WDom) => {\n if (checkVirtualType(newWDom.type)) {\n return (newWDom?.children || []).reduce((acc, item) => {\n const element = getElementFromFragment(item);\n\n if (element) {\n acc.appendChild(element);\n }\n return acc;\n }, DF());\n }\n\n return newWDom.el;\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 (\n parentWDom.isRoot &&\n checkVirtualType(parentType) &&\n parentWDom.afterElement\n ) {\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\n if (dataKey === 'key' || dataValue === originalProps[dataKey]) {\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 setAttr(\n getAttrKey(dataKey),\n element as HTMLElement,\n dataValue as string\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 setAttr = (dataKey: string, element: HTMLElement, dataValue: string) => {\n if (xmlnsRef.value && dataKey !== 'xmlns') {\n element.setAttributeNS(null, dataKey, dataValue);\n } else {\n element.setAttribute(dataKey, dataValue);\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 = DF();\n } else if (type === 'element' && tag) {\n element = xmlnsRef.value\n ? document.createElementNS(xmlnsRef.value, tag)\n : CE(tag);\n } else if (type === 'text' && checkExisty(text)) {\n element = document.createTextNode(String(text));\n } else {\n element = CE('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 DF()\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, Props } from '@/types';\nimport { checkCustemComponentFunction, getKey } from '@/utils/predicator';\nimport { getParent } from '@/utils';\nimport { typeDelete, recursiveRemoveEvent } from '@/render';\nimport {\n checkEmptyElement,\n checkSameWDomWithOriginal,\n getWDomType,\n checkExisty,\n} from '@/utils/predicator';\n\nimport { runUnmountQueueFromWDom } from '@/hook/unmount';\nimport { assign, keys, entries } 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 const isNoting = needRerender === 'N';\n\n if (!isNoting) {\n remakeWDom.children = remakeChildrenForDiff(...param);\n }\n\n remakeWDom.needRerender = needRerender;\n inheritPropForRender(remakeWDom, originalWDom, needRerender);\n\n if (!isNoting && originalWDom) {\n originalWDom.isLegacy = true;\n delete originalWDom.children;\n }\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.isRoot;\n const originalParentWDom = originalWDom && getParent(originalWDom);\n const origParentType = !isRoot && originalParentWDom?.type;\n const key = getKey(newWDom);\n const isKeyCheckedWDom = origParentType === 'loop' && checkExisty(key);\n const isSameText =\n newWDom.type === 'text' &&\n isSameType &&\n newWDom.text === originalWDom?.text;\n const isSameWDom = newWDom === originalWDom;\n\n let result: RenderType | undefined;\n if (isEmptyElement) {\n result = 'D';\n } else if (isSameText || isSameWDom) {\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 if (\n newWDom.type === 'loop' &&\n result === 'U' &&\n originalWDom &&\n chkDiffLoopOrder(newWDom, originalWDom)\n ) {\n result = 'CNSU';\n }\n\n return result;\n};\n\nconst chkDiffLoopOrder = (newWDom: WDom, originalWDom: WDom) => {\n const origChildren = [...(originalWDom?.children || [])];\n const newChildren = [...(newWDom?.children || [])].filter(item =>\n origChildren.find(newItem => getKey(item) === getKey(newItem))\n );\n const filteredChildren = origChildren.filter(item =>\n newChildren.find(newItem => getKey(item) === getKey(newItem))\n );\n let isSame = filteredChildren.length === newChildren.length;\n\n if (isSame) {\n isSame = filteredChildren.every(\n (item, index) => getKey(item) === getKey(newChildren[index])\n );\n }\n\n return isSame;\n};\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\nconst runUpdate = (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\nconst generalize = (\n newWDom: WDom | TagFunctionResolver,\n isSameType: boolean,\n originalWDom?: WDom\n): WDom => {\n if (checkCustemComponentFunction(newWDom)) {\n return isSameType && originalWDom\n ? runUpdate(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.forEach(unusedItem => {\n runUnmountQueueFromWDom(unusedItem);\n recursiveRemoveEvent(unusedItem);\n typeDelete(unusedItem);\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 { Props } from '@/types';\nimport { componentRef } from '@/utils/universalRef';\n\nlet redrawQueue: { compKey: Props; exec: () => void }[] = [];\nlet redrawQueueTimeout: boolean = false;\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 componentUpdate = (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 execRedrawQueue = () => {\n redrawQueue.forEach(item => {\n item.exec();\n });\n\n redrawQueue = [];\n redrawQueueTimeout = false;\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 needDiffRef,\n getComponentSubInfo,\n} from '@/utils/universalRef';\nimport { setRedrawAction, componentUpdate } from '@/utils/redraw';\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 if (originalWDom.isLegacy) {\n return;\n }\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\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(componentUpdate(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 let newCustomComponentMaker = componentMaker;\n let customNode = componentMaker(props);\n\n if (customNode.reRender) {\n newCustomComponentMaker = (newProps: Props): WDom => {\n const customNode = componentMaker(newProps);\n const newNode = Fragment({}, customNode);\n\n customNode.getParent = () => newNode;\n\n return newNode;\n };\n\n customNode = newCustomComponentMaker(props);\n }\n\n addComponentProps(\n customNode,\n compKey,\n tag,\n props,\n children,\n makeReRender(newCustomComponentMaker, 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":["updateProps","getParent","customNode"],"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/utils/redraw.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) => checkPlainWDomType(newWDom) && originalWDom?.type === newWDom.type;\n\nconst checkLoopTypeElement = (\n newWDom: WDom | TagFunction | TagFunctionResolver,\n originalWDom?: WDom\n) =>\n checkPlainWDomType(newWDom) &&\n originalWDom?.type === newWDom.type &&\n ((checkExisty(getKey((newWDom.children || [])[0])) &&\n checkExisty(getKey((originalWDom?.children || [])[0]))) ||\n originalWDom?.children?.length === newWDom?.children?.length);\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: checkLoopTypeElement,\n t: checkNormalTypeElement,\n e: checkSameTagElement,\n f: checkSameFragment,\n et: checkNormalTypeElement,\n};\n","import { WDom } from '@/types';\n\nexport const getParent = (vDom: WDom) =>\n (vDom.getParent && vDom.getParent()) as WDom;\n\nexport const entries = Object.entries;\nexport const keys = Object.keys;\nexport const assign = Object.assign;\n","import { ComponentRef, ComponentSubKey, Props } from '@/types';\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\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 initUpdateHookState = (compKey: Props) =>\n (compKeyRef.value = compKey);\n\nexport const initMountHookState = (compKey: Props) => {\n compKeyRef.value = compKey;\n setComponetRef(compKey);\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\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, entries, keys } from '@/utils';\n\nconst getAttrKey = (keyName: string) =>\n keyName === 'className' ? 'class' : keyName;\n\nconst getEventName = (eventKey: string) =>\n eventKey.replace(/^on(.*)/, (_match, p1) => p1.toLowerCase());\n\nconst DF = () => new DocumentFragment();\nconst CE = (t: string) => document.createElement(t);\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\n if (component) {\n runUnmountQueueFromWDom(component);\n }\n\n recursiveRemoveEvent(component || wDom);\n rootDelete(component || wDom);\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 CNSU: typeUpdate,\n SR: typeSortedReplace,\n SU: typeSortedUpdate,\n })[needRerender](newWDomTree);\n\n delete newWDomTree.needRerender;\n delete newWDomTree.oldChildren;\n delete newWDomTree.oldProps;\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\nexport const 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 ([1, 3].includes(newWDom.el?.nodeType)) {\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 const nodeType = item.el?.nodeType;\n if (nodeType) {\n if ([1, 3].includes(nodeType)) {\n parent.removeChild(item?.el as HTMLElement);\n } else if (nodeType === 11) {\n findChildWithRemoveElement(item, parent);\n }\n }\n });\n};\n\nconst typeSortedReplace = (newWDom: WDom) => {\n typeDelete(newWDom);\n typeAdd(newWDom);\n};\n\nconst typeSortedUpdate = (newWDom: WDom) => {\n typeUpdate(newWDom);\n\n const parentWDom = getParent(newWDom);\n if (parentWDom.needRerender !== 'CNSU') {\n const newElement = getElementFromFragment(newWDom);\n\n typeAdd(newWDom, newElement);\n }\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 =\n isLoop && parentWDom.needRerender && parentWDom.needRerender !== 'CNSU'\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 getElementFromFragment = (newWDom: WDom) => {\n if (checkVirtualType(newWDom.type)) {\n return (newWDom?.children || []).reduce((acc, item) => {\n const element = getElementFromFragment(item);\n\n if (element) {\n acc.appendChild(element);\n }\n return acc;\n }, DF());\n }\n\n return newWDom.el;\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 (\n parentWDom.isRoot &&\n checkVirtualType(parentType) &&\n parentWDom.afterElement\n ) {\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\n if (dataKey === 'key' || dataValue === originalProps[dataKey]) {\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 setAttr(\n getAttrKey(dataKey),\n element as HTMLElement,\n dataValue as string\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 setAttr = (dataKey: string, element: HTMLElement, dataValue: string) => {\n if (xmlnsRef.value && dataKey !== 'xmlns') {\n element.setAttributeNS(null, dataKey, dataValue);\n } else {\n element.setAttribute(dataKey, dataValue);\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 = DF();\n } else if (type === 'element' && tag) {\n element = xmlnsRef.value\n ? document.createElementNS(xmlnsRef.value, tag)\n : CE(tag);\n } else if (type === 'text' && checkExisty(text)) {\n element = document.createTextNode(String(text));\n } else {\n element = CE('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 DF()\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, Props } from '@/types';\nimport { checkCustemComponentFunction, getKey } from '@/utils/predicator';\nimport { getParent } from '@/utils';\nimport { typeDelete, recursiveRemoveEvent } from '@/render';\nimport {\n checkEmptyElement,\n checkSameWDomWithOriginal,\n getWDomType,\n checkExisty,\n} from '@/utils/predicator';\n\nimport { runUnmountQueueFromWDom } from '@/hook/unmount';\nimport { assign, keys, entries } 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 const isNoting = needRerender === 'N';\n\n if (!isNoting) {\n remakeWDom.children = remakeChildrenForDiff(...param);\n }\n\n remakeWDom.needRerender = needRerender;\n inheritPropForRender(remakeWDom, originalWDom, needRerender);\n\n if (!isNoting && originalWDom) {\n originalWDom.isLegacy = true;\n delete originalWDom.children;\n }\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.isRoot;\n const originalParentWDom = originalWDom && getParent(originalWDom);\n const origParentType = !isRoot && originalParentWDom?.type;\n const key = getKey(newWDom);\n const isKeyCheckedWDom = origParentType === 'loop' && checkExisty(key);\n const isSameText =\n newWDom.type === 'text' &&\n isSameType &&\n newWDom.text === originalWDom?.text;\n const isSameWDom = newWDom === originalWDom;\n\n let result: RenderType | undefined;\n if (isEmptyElement) {\n result = 'D';\n } else if (isSameText || isSameWDom) {\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 if (\n newWDom.type === 'loop' &&\n result === 'U' &&\n originalWDom &&\n chkDiffLoopOrder(newWDom, originalWDom)\n ) {\n result = 'CNSU';\n }\n\n return result;\n};\n\nconst chkDiffLoopOrder = (newWDom: WDom, originalWDom: WDom) => {\n const origChildren = [...(originalWDom?.children || [])];\n const newChildren = [...(newWDom?.children || [])].filter(item =>\n origChildren.find(newItem => getKey(item) === getKey(newItem))\n );\n const filteredChildren = origChildren.filter(item =>\n newChildren.find(newItem => getKey(item) === getKey(newItem))\n );\n let isSame = filteredChildren.length === newChildren.length;\n\n if (isSame) {\n isSame = filteredChildren.every(\n (item, index) => getKey(item) === getKey(newChildren[index])\n );\n }\n\n return isSame;\n};\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\nconst runUpdate = (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\nconst generalize = (\n newWDom: WDom | TagFunctionResolver,\n isSameType: boolean,\n originalWDom?: WDom\n): WDom => {\n if (checkCustemComponentFunction(newWDom)) {\n return isSameType && originalWDom\n ? runUpdate(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.forEach(unusedItem => {\n runUnmountQueueFromWDom(unusedItem);\n recursiveRemoveEvent(unusedItem);\n typeDelete(unusedItem);\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 { Props } from '@/types';\nimport { componentRef } from '@/utils/universalRef';\n\nlet redrawQueue: { compKey: Props; exec: () => void }[] = [];\nlet redrawQueueTimeout: boolean = false;\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 componentUpdate = (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 execRedrawQueue = () => {\n redrawQueue.forEach(item => {\n item.exec();\n });\n\n redrawQueue = [];\n redrawQueueTimeout = false;\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 needDiffRef,\n getComponentSubInfo,\n} from '@/utils/universalRef';\nimport { setRedrawAction, componentUpdate } from '@/utils/redraw';\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 if (originalWDom.isLegacy) {\n return;\n }\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\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(componentUpdate(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 let newCustomComponentMaker = componentMaker;\n let customNode = componentMaker(props);\n\n if (customNode.reRender) {\n newCustomComponentMaker = (newProps: Props): WDom => {\n const customNode = componentMaker(newProps);\n const newNode = Fragment({}, customNode);\n\n customNode.getParent = () => newNode;\n\n return newNode;\n };\n\n customNode = newCustomComponentMaker(props);\n }\n\n addComponentProps(\n customNode,\n compKey,\n tag,\n props,\n children,\n makeReRender(newCustomComponentMaker, 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":["updateProps","getParent","customNode"],"mappings":"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"}
|
package/dist/lithent.umd.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).lithent={})}(this,(function(e){"use strict";const t=e=>"object"==typeof e&&!("resolve"in e),l=(e,l)=>t(e)&&e.type===l,n=(e,l)=>t(e)&&(null==l?void 0:l.type)===e.type,o=e=>{var t,l;return(null==(t=null==e?void 0:e.compProps)?void 0:t.key)??(null==(l=null==e?void 0:e.props)?void 0:l.key)},r=e=>e&&["fragment","loop"].includes(e),d=e=>"function"==typeof e&&!i(e)||"object"==typeof e&&"resolve"in e,i=e=>"function"==typeof e&&e===Ce,u=e=>t(e)&&!e.type,c=e=>null!=e,p=(e,t)=>"style"===e&&"object"==typeof t,s={c:(e,t)=>"ctor"in e?e.ctor===(null==t?void 0:t.ctor):e===(null==t?void 0:t.ctor),l:(e,l)=>{var n,r;return t(e)&&(null==l?void 0:l.type)===e.type&&(c(o((e.children||[])[0]))&&c(o(((null==l?void 0:l.children)||[])[0]))||(null==(n=null==l?void 0:l.children)?void 0:n.length)===(null==(r=null==e?void 0:e.children)?void 0:r.length))},t:n,e:(e,l)=>{var n,o;return t(e)&&"element"===(null==l?void 0:l.type)&&(null==l?void 0:l.tag)===e.tag&&(null==(n=null==l?void 0:l.children)?void 0:n.length)===(null==(o=null==e?void 0:e.children)?void 0:o.length)},f:(e,l)=>{var n,o;return t(e)&&"fragment"===(null==l?void 0:l.type)&&(null==(n=null==l?void 0:l.children)?void 0:n.length)===(null==(o=null==e?void 0:e.children)?void 0:o.length)},et:n},a=e=>e.getParent&&e.getParent(),v=Object.entries,h=Object.keys,f=Object.assign,m={value:""},y={value:{}},g={value:!1},E=new WeakMap,R=()=>y.value,C=(e,t)=>E.get(e)[t],x=e=>{y.value=e,(e=>{E.set(e,{vd:{value:null},up:()=>{},upR:[],upS:{value:0},upD:[],upCB:[],mts:[],umts:[]})})(e)},P=e=>{const{compKey:t}=e;t&&b(t),S(e)},S=e=>{(e.children||[]).forEach((e=>{e.compKey?P(e):S(e)}))},b=e=>{const t=E.get(e);t&&(t.umts.forEach((e=>e())),t.umts=[],E.delete(e))};let T=[];const N=()=>{T.forEach((e=>k(e))),T=[]},k=e=>{const{compKey:t}=e;if(t){const e=E.get(t),l=null==e?void 0:e.mts,n=null==e?void 0:e.upS;y.value=t,n&&(n.value=0),l&&(e.mts=[],l.forEach((e=>{const t=e();var l;t&&(l=t,E.get(R()).umts.push(l))})))}},A=(e,t=(()=>[]))=>{const l=E.get(R()),{upD:n,upS:o}=l,r=n[o.value];if(r&&j(r,t())){const t=e();t&&l.upCB.push(t)}n[o.value]=t(),o.value+=1},j=(e,t)=>!e.length||e.some(((e,l)=>e!==t[l])),O=e=>e.replace(/^on(.*)/,((e,t)=>t.toLowerCase())),U=()=>new DocumentFragment,w=e=>document.createElement(e),K=e=>{const{needRerender:t}=e;t&&"N"!==t&&({A:I,D:D,R:z,U:J,CNSU:J,SR:H,SU:q}[t](e),delete e.needRerender,delete e.oldChildren,delete e.oldProps)},L=e=>{e.props&&e.el&&G(e.props,e.el),(e.children||[]).forEach((e=>{L(e)}))},B=e=>{M(e,e.wrapElement)},D=e=>{e.oldProps&&e.el&&G(e.oldProps,e.el),M(e,ne(a(e)))},M=(e,t)=>{var l,n;t&&e.el&&(1===(null==(l=e.el)?void 0:l.nodeType)?t.removeChild(e.el):11===(null==(n=e.el)?void 0:n.nodeType)&&F(e,t),delete e.el)},F=(e,t)=>{((null==e?void 0:e.oldChildren)||(null==e?void 0:e.children)||[]).forEach((e=>{var l,n;1===(null==(l=e.el)?void 0:l.nodeType)?t.removeChild(null==e?void 0:e.el):11===(null==(n=e.el)?void 0:n.nodeType)&&F(e,t)}))},H=e=>{D(e),I(e)},q=e=>{J(e);if("CNSU"!==a(e).needRerender){const t=V(e);I(e,t)}},I=(e,t)=>{t||(t=_(e));const l=a(e);if(l.type){const n=ne(l),o="loop"===l.type&&l.needRerender&&"CNSU"!==l.needRerender?W(l,a(l)):W(e,l);t&&n&&(o?n.insertBefore(t,o):n.appendChild(t),N())}},V=e=>r(e.type)?((null==e?void 0:e.children)||[]).reduce(((e,t)=>{const l=V(t);return l&&e.appendChild(l),e}),U()):e.el,W=(e,t)=>{const l=t.children||[],n=l.indexOf(e)+1,o=l.slice(n),d=X(o),i=t.type||"";return d||(!t.isRoot&&r(i)?W(t,a(t)):t.isRoot&&r(i)&&t.afterElement?t.afterElement:void 0)},X=e=>e.reduce(((e,t)=>{const l=t.type,n=t.el,o=l&&r(l);return e||(o?X(t.children||[]):n&&11!==n.nodeType?n:e)}),void 0),z=e=>{const t=a(e),l=e.el;if(t.type&&l)if(11===l.nodeType)H(e);else{const n=ne(t),o=_(e);n&&n.replaceChild(o,l),N()}},G=(e,t)=>{v(e||{}).forEach((([e,l])=>{e.match(/^on/)&&t.removeEventListener(O(e),l)}))},J=e=>{var t;const l=e.el;if("text"!==e.type){if(l){const{oldProps:n,props:o}=e;Y(o,l,n),delete e.oldProps,"input"===e.tag&&(l.value=String((null==(t=null==e?void 0:e.props)?void 0:t.value)||""))}(e.children||[]).forEach((e=>K(e))),(e=>{const{compKey:t}=e;if(t){const l=E.get(t),n=null==l?void 0:l.upCB,o=null==l?void 0:l.upS;y.value=t,o&&(o.value=0),e.ctor&&n&&(l.upCB=[],n.forEach((e=>e())))}})(e)}else Q(e)},Q=e=>{const t=e.el;t&&(t.nodeValue=String(e.text))},Y=(e,t,l)=>{const n={...l};v(e||{}).forEach((([e,l])=>{let o=!0;var r;"key"===e||l===n[e]||("innerHTML"===e&&"string"==typeof l?t.innerHTML=l:p(e,l)?le(l,p(e,n.style)?n.style:{},t):((e,t)=>"ref"===e&&"object"==typeof t)(e,l)?l.value=t:e.match(/^on/)?te(t,e,l,n[e]):(e=>1===e.nodeType&&["radio","checkbox"].includes(e.type))(t)&&"checked"===e?t.checked=!!l:(e=>1===e.nodeType&&"TEXTAREA"===e.tagName)(t)&&"value"===e?t.value=l:(e=>1===e.nodeType&&"OPTION"===e.tagName)(t)&&"selected"===e?t.selected=!!l:e&&([o,l]=$(l),o&&Z("className"===(r=e)?"class":r,t,l))),o&&delete n[e]})),h(n).forEach((e=>t.removeAttribute(e)))},Z=(e,t,l)=>{m.value&&"xmlns"!==e?t.setAttributeNS(null,e,l):t.setAttribute(e,l)},$=e=>{let t=!0;return"boolean"==typeof e&&(e||(t=!1),e=""),[t,String(e)]},_=e=>{let t;const{type:l,tag:n,text:o,props:d,children:i=[]}=e,u=r(l);return"svg"===n&&(m.value=String(null==d?void 0:d.xmlns)),t=u?U():"element"===l&&n?m.value?document.createElementNS(m.value,n):w(n):"text"===l&&c(o)?document.createTextNode(String(o)):w("e"),ee(i,t),Y(d,t),e.el=t,(e=>{e.compKey&&T.push(e)})(e),"svg"===n&&(m.value=""),t},ee=(e,t)=>{const l=e.reduce(((e,t)=>(t.type&&e.appendChild(_(t)),e)),U());t&&l.hasChildNodes()&&t.appendChild(l)},te=(e,t,l,n)=>{const o=O(t);n!==l&&(n&&e.removeEventListener(o,n),l&&e.addEventListener(o,l))},le=(e,t,l)=>{const n={...t},o=null==l?void 0:l.style;o&&(v(e).forEach((([e,t])=>{o[e]=t,delete n[e]})),v(n).forEach((([e])=>o[e]="")))},ne=e=>{const t=r(e.type);return e.isRoot&&t?e.wrapElement:t?ne(a(e)):e.el},oe=(e,t)=>re(e,s[(e=>{let t="et";return d(e)?t="c":l(e,"fragment")?t="f":l(e,"element")?t="e":l(e,"loop")?t="l":l(e,"text")?t="t":u(e)&&(t="et"),t})(e)](e,t),t),re=(e,t,l)=>{const n=pe(e,t,l),o=[n,t,l],r=ie(...o),d="N"===r;return d||(n.children=se(...o)),n.needRerender=r,de(n,l,r),!d&&l&&(l.isLegacy=!0,delete l.children),n},de=(e,t,l)=>{"A"!==l&&t&&(e.el=t.el),l&&["D","R","SR"].includes(l)&&((null==t?void 0:t.compKey)&&(P(t),L(t)),e.oldChildren=null==t?void 0:t.children),e.oldProps=null==t?void 0:t.props},ie=(e,t,l)=>{const n=l&&l.type,r=u(e),d=e.isRoot,i=l&&a(l),p=!d&&(null==i?void 0:i.type),s=o(e),v="loop"===p&&c(s),h="text"===e.type&&t&&e.text===(null==l?void 0:l.text);let f;return f=r?"D":h||e===l?"N":n?t?v?"SU":"U":v?"SR":"R":"A","loop"===e.type&&"U"===f&&l&&ue(e,l)&&(f="CNSU"),f},ue=(e,t)=>{const l=[...(null==t?void 0:t.children)||[]],n=[...(null==e?void 0:e.children)||[]].filter((e=>l.find((t=>o(e)===o(t))))),r=l.filter((e=>n.find((t=>o(e)===o(t)))));let d=r.length===n.length;return d&&(d=r.every(((e,t)=>o(e)===o(n[t])))),d},ce=(e,t)=>{const{compProps:l,compChild:n}=e,{props:o,children:r}=t;l&&((e,t)=>{e&&t!==e&&(h(e).forEach((t=>delete e[t])),v(t||{}).forEach((([t,l])=>e[t]=l)))})(l,o),n&&((e,t)=>{e&&t!==e&&(e.splice(0,e.length),t&&t.forEach((t=>e.push(t))))})(n,r);return e.reRender&&e.reRender()},pe=(e,t,l)=>d(e)?t&&l?ce(l,e):e.resolve():e,se=(e,t,l)=>t&&l?ve(e,l):ae(e),ae=e=>(e.children||[]).map((t=>f(oe(t),{getParent:()=>e}))),ve=(e,t)=>"loop"===e.type&&c(o((e.children||[])[0]))?he(e,t):(e.children||[]).map(((l,n)=>f(oe(l,(t.children||[])[n]),{getParent:()=>e}))),he=(e,t)=>{const[l,n]=fe(e,t);return n.forEach((e=>{P(e),L(e),D(e)})),l},fe=(e,t)=>{const l=[...e.children||[]],n=[...t.children||[]];return[l.map((t=>{const l=me(t,n),o=oe(t,l);return l&&n.splice(n.indexOf(l),1),o.getParent=()=>e,o})),n]},me=(e,t)=>t.find((t=>o(t)===o(e)));let ye=[],ge=!1;const Ee=(e,t)=>{E.get(e).up=()=>{ye.push({compKey:e,exec:t}),ge||(ge=!0,queueMicrotask(Re))}},Re=()=>{ye.forEach((e=>{e.exec()})),ye=[],ge=!1},Ce=(e,...t)=>({type:"fragment",children:t}),xe=(e,t,l,n)=>{var o;if(n.isLegacy)return;g.value=!0;const r=Pe(e,t,l),d=oe(r,n),{isRoot:i,getParent:u,wrapElement:c,afterElement:p}=n;if(d.getParent=u,!i&&u){const e=(null==(o=u())?void 0:o.children)||[],t=e.indexOf(n);e.splice(t,1,d)}else d.isRoot=!0,d.wrapElement=c,d.afterElement=p;g.value=!1,K(d)},Pe=(e,t,l)=>({tagName:e.name,ctor:e,props:t,children:l,resolve:(n=t)=>{x(n);const o=e(t,l)((e=>()=>{var t;const l=null==(t=E.get(e))?void 0:t.up;let n=!1;return l&&(l(),n=!0),n})(n),t,l),r=Se(o,n,e,t,l),d=r;return Ee(n,(()=>xe(e,t,l,d))),C(n,"vd").value=r,r}}),Se=(e,t,l,n,o)=>{let r=e,d=e(n);return d.reRender&&(r=t=>{const l=e(t),n=Ce({},l);return l.getParent=()=>n,n},d=r(n)),Ne(d,t,l,n,o,be(r,t,l,n,o)),d},be=(e,t,l,n,o)=>{const r=()=>Te(e,t,l,n,o,r);return r},Te=(e,t,l,n,o,r)=>{(e=>{y.value=e})(t),(()=>{var e;const t=null==(e=E.get(R()))?void 0:e.upR;(null==t?void 0:t.length)&&t.forEach((e=>e()))})();const d=e(n);return Ee(t,(()=>xe(l,n,o,d))),Ne(d,t,l,n,o,r),C(t,"vd").value=d,d},Ne=(e,t,l,n,o,r)=>{f(e,{compProps:n,compChild:o,ctor:l,tagName:l.name,compKey:t,reRender:r})},ke=(e,t,l)=>{if(i(e))return Ce(t,...l);if(d(e)){const n=Pe(e,t,l);return g.value?n:n.resolve()}return{type:"element",tag:e,props:t,children:l}},Ae=(e,t)=>t.map((t=>f(je(t),{getParent:()=>e.value}))),je=e=>{if(null==e||!1===e)return{type:null};if(Array.isArray(e)){const t={value:void 0},l={type:"loop",children:Ae(t,e)};return t.value=l,l}return"string"==typeof e||"number"==typeof e?{type:"text",text:e}:e};e.Fragment=Ce,e.h=(e,t,...l)=>{const n={value:void 0},o=t||{},r=Ae(n,l),i=ke(e,o,r);return d(i)||(n.value=i),i},e.mount=e=>(t,l)=>e,e.mountCallback=e=>E.get(R()).mts.push(e),e.nextTick=()=>Promise.resolve(),e.ref=e=>({value:e}),e.render=(e,t,l)=>{t??(t=document.body),e.isRoot=!0,e.wrapElement=t;const n=_(e);return l?(e.afterElement=l,t.insertBefore(n,l)):t.appendChild(n),N(),()=>{var t;const l=null==(t=E.get(e.compProps||{}))?void 0:t.vd.value;l&&(P(l),L(l),B(l))}},e.updateCallback=(e,t=(()=>[]))=>{E.get(R()).upR.push((()=>A(e,t))),A(e,t)},Object.defineProperty(e,Symbol.toStringTag,{value:"Module"})}));
|
|
1
|
+
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).lithent={})}(this,(function(e){"use strict";const t=e=>"object"==typeof e&&!("resolve"in e),l=(e,l)=>t(e)&&e.type===l,n=(e,l)=>t(e)&&(null==l?void 0:l.type)===e.type,o=e=>{var t,l;return(null==(t=null==e?void 0:e.compProps)?void 0:t.key)??(null==(l=null==e?void 0:e.props)?void 0:l.key)},r=e=>e&&["fragment","loop"].includes(e),d=e=>"function"==typeof e&&!i(e)||"object"==typeof e&&"resolve"in e,i=e=>"function"==typeof e&&e===Ce,u=e=>t(e)&&!e.type,c=e=>null!=e,s=(e,t)=>"style"===e&&"object"==typeof t,p={c:(e,t)=>"ctor"in e?e.ctor===(null==t?void 0:t.ctor):e===(null==t?void 0:t.ctor),l:(e,l)=>{var n,r;return t(e)&&(null==l?void 0:l.type)===e.type&&(c(o((e.children||[])[0]))&&c(o(((null==l?void 0:l.children)||[])[0]))||(null==(n=null==l?void 0:l.children)?void 0:n.length)===(null==(r=null==e?void 0:e.children)?void 0:r.length))},t:n,e:(e,l)=>{var n,o;return t(e)&&"element"===(null==l?void 0:l.type)&&(null==l?void 0:l.tag)===e.tag&&(null==(n=null==l?void 0:l.children)?void 0:n.length)===(null==(o=null==e?void 0:e.children)?void 0:o.length)},f:(e,l)=>{var n,o;return t(e)&&"fragment"===(null==l?void 0:l.type)&&(null==(n=null==l?void 0:l.children)?void 0:n.length)===(null==(o=null==e?void 0:e.children)?void 0:o.length)},et:n},a=e=>e.getParent&&e.getParent(),v=Object.entries,h=Object.keys,f=Object.assign,m={value:""},y={value:{}},g={value:!1},E=new WeakMap,R=()=>y.value,C=(e,t)=>E.get(e)[t],x=e=>{y.value=e,(e=>{E.set(e,{vd:{value:null},up:()=>{},upR:[],upS:{value:0},upD:[],upCB:[],mts:[],umts:[]})})(e)},P=e=>{const{compKey:t}=e;t&&b(t),S(e)},S=e=>{(e.children||[]).forEach((e=>{e.compKey?P(e):S(e)}))},b=e=>{const t=E.get(e);t&&(t.umts.forEach((e=>e())),t.umts=[],E.delete(e))};let T=[];const N=()=>{T.forEach((e=>k(e))),T=[]},k=e=>{const{compKey:t}=e;if(t){const e=E.get(t),l=null==e?void 0:e.mts,n=null==e?void 0:e.upS;y.value=t,n&&(n.value=0),l&&(e.mts=[],l.forEach((e=>{const t=e();var l;t&&(l=t,E.get(R()).umts.push(l))})))}},A=(e,t=(()=>[]))=>{const l=E.get(R()),{upD:n,upS:o}=l,r=n[o.value];if(r&&j(r,t())){const t=e();t&&l.upCB.push(t)}n[o.value]=t(),o.value+=1},j=(e,t)=>!e.length||e.some(((e,l)=>e!==t[l])),O=e=>e.replace(/^on(.*)/,((e,t)=>t.toLowerCase())),U=()=>new DocumentFragment,w=e=>document.createElement(e),K=e=>{const{needRerender:t}=e;t&&"N"!==t&&({A:I,D:D,R:z,U:J,CNSU:J,SR:H,SU:q}[t](e),delete e.needRerender,delete e.oldChildren,delete e.oldProps)},L=e=>{e.props&&e.el&&G(e.props,e.el),(e.children||[]).forEach((e=>{L(e)}))},B=e=>{M(e,e.wrapElement)},D=e=>{e.oldProps&&e.el&&G(e.oldProps,e.el),M(e,ne(a(e)))},M=(e,t)=>{var l,n;t&&e.el&&([1,3].includes(null==(l=e.el)?void 0:l.nodeType)?t.removeChild(e.el):11===(null==(n=e.el)?void 0:n.nodeType)&&F(e,t),delete e.el)},F=(e,t)=>{((null==e?void 0:e.oldChildren)||(null==e?void 0:e.children)||[]).forEach((e=>{var l;const n=null==(l=e.el)?void 0:l.nodeType;n&&([1,3].includes(n)?t.removeChild(null==e?void 0:e.el):11===n&&F(e,t))}))},H=e=>{D(e),I(e)},q=e=>{J(e);if("CNSU"!==a(e).needRerender){const t=V(e);I(e,t)}},I=(e,t)=>{t||(t=_(e));const l=a(e);if(l.type){const n=ne(l),o="loop"===l.type&&l.needRerender&&"CNSU"!==l.needRerender?W(l,a(l)):W(e,l);t&&n&&(o?n.insertBefore(t,o):n.appendChild(t),N())}},V=e=>r(e.type)?((null==e?void 0:e.children)||[]).reduce(((e,t)=>{const l=V(t);return l&&e.appendChild(l),e}),U()):e.el,W=(e,t)=>{const l=t.children||[],n=l.indexOf(e)+1,o=l.slice(n),d=X(o),i=t.type||"";return d||(!t.isRoot&&r(i)?W(t,a(t)):t.isRoot&&r(i)&&t.afterElement?t.afterElement:void 0)},X=e=>e.reduce(((e,t)=>{const l=t.type,n=t.el,o=l&&r(l);return e||(o?X(t.children||[]):n&&11!==n.nodeType?n:e)}),void 0),z=e=>{const t=a(e),l=e.el;if(t.type&&l)if(11===l.nodeType)H(e);else{const n=ne(t),o=_(e);n&&n.replaceChild(o,l),N()}},G=(e,t)=>{v(e||{}).forEach((([e,l])=>{e.match(/^on/)&&t.removeEventListener(O(e),l)}))},J=e=>{var t;const l=e.el;if("text"!==e.type){if(l){const{oldProps:n,props:o}=e;Y(o,l,n),delete e.oldProps,"input"===e.tag&&(l.value=String((null==(t=null==e?void 0:e.props)?void 0:t.value)||""))}(e.children||[]).forEach((e=>K(e))),(e=>{const{compKey:t}=e;if(t){const l=E.get(t),n=null==l?void 0:l.upCB,o=null==l?void 0:l.upS;y.value=t,o&&(o.value=0),e.ctor&&n&&(l.upCB=[],n.forEach((e=>e())))}})(e)}else Q(e)},Q=e=>{const t=e.el;t&&(t.nodeValue=String(e.text))},Y=(e,t,l)=>{const n={...l};v(e||{}).forEach((([e,l])=>{let o=!0;var r;"key"===e||l===n[e]||("innerHTML"===e&&"string"==typeof l?t.innerHTML=l:s(e,l)?le(l,s(e,n.style)?n.style:{},t):((e,t)=>"ref"===e&&"object"==typeof t)(e,l)?l.value=t:e.match(/^on/)?te(t,e,l,n[e]):(e=>1===e.nodeType&&["radio","checkbox"].includes(e.type))(t)&&"checked"===e?t.checked=!!l:(e=>1===e.nodeType&&"TEXTAREA"===e.tagName)(t)&&"value"===e?t.value=l:(e=>1===e.nodeType&&"OPTION"===e.tagName)(t)&&"selected"===e?t.selected=!!l:e&&([o,l]=$(l),o&&Z("className"===(r=e)?"class":r,t,l))),o&&delete n[e]})),h(n).forEach((e=>t.removeAttribute(e)))},Z=(e,t,l)=>{m.value&&"xmlns"!==e?t.setAttributeNS(null,e,l):t.setAttribute(e,l)},$=e=>{let t=!0;return"boolean"==typeof e&&(e||(t=!1),e=""),[t,String(e)]},_=e=>{let t;const{type:l,tag:n,text:o,props:d,children:i=[]}=e,u=r(l);return"svg"===n&&(m.value=String(null==d?void 0:d.xmlns)),t=u?U():"element"===l&&n?m.value?document.createElementNS(m.value,n):w(n):"text"===l&&c(o)?document.createTextNode(String(o)):w("e"),ee(i,t),Y(d,t),e.el=t,(e=>{e.compKey&&T.push(e)})(e),"svg"===n&&(m.value=""),t},ee=(e,t)=>{const l=e.reduce(((e,t)=>(t.type&&e.appendChild(_(t)),e)),U());t&&l.hasChildNodes()&&t.appendChild(l)},te=(e,t,l,n)=>{const o=O(t);n!==l&&(n&&e.removeEventListener(o,n),l&&e.addEventListener(o,l))},le=(e,t,l)=>{const n={...t},o=null==l?void 0:l.style;o&&(v(e).forEach((([e,t])=>{o[e]=t,delete n[e]})),v(n).forEach((([e])=>o[e]="")))},ne=e=>{const t=r(e.type);return e.isRoot&&t?e.wrapElement:t?ne(a(e)):e.el},oe=(e,t)=>re(e,p[(e=>{let t="et";return d(e)?t="c":l(e,"fragment")?t="f":l(e,"element")?t="e":l(e,"loop")?t="l":l(e,"text")?t="t":u(e)&&(t="et"),t})(e)](e,t),t),re=(e,t,l)=>{const n=se(e,t,l),o=[n,t,l],r=ie(...o),d="N"===r;return d||(n.children=pe(...o)),n.needRerender=r,de(n,l,r),!d&&l&&(l.isLegacy=!0,delete l.children),n},de=(e,t,l)=>{"A"!==l&&t&&(e.el=t.el),l&&["D","R","SR"].includes(l)&&((null==t?void 0:t.compKey)&&(P(t),L(t)),e.oldChildren=null==t?void 0:t.children),e.oldProps=null==t?void 0:t.props},ie=(e,t,l)=>{const n=l&&l.type,r=u(e),d=e.isRoot,i=l&&a(l),s=!d&&(null==i?void 0:i.type),p=o(e),v="loop"===s&&c(p),h="text"===e.type&&t&&e.text===(null==l?void 0:l.text);let f;return f=r?"D":h||e===l?"N":n?t?v?"SU":"U":v?"SR":"R":"A","loop"===e.type&&"U"===f&&l&&ue(e,l)&&(f="CNSU"),f},ue=(e,t)=>{const l=[...(null==t?void 0:t.children)||[]],n=[...(null==e?void 0:e.children)||[]].filter((e=>l.find((t=>o(e)===o(t))))),r=l.filter((e=>n.find((t=>o(e)===o(t)))));let d=r.length===n.length;return d&&(d=r.every(((e,t)=>o(e)===o(n[t])))),d},ce=(e,t)=>{const{compProps:l,compChild:n}=e,{props:o,children:r}=t;l&&((e,t)=>{e&&t!==e&&(h(e).forEach((t=>delete e[t])),v(t||{}).forEach((([t,l])=>e[t]=l)))})(l,o),n&&((e,t)=>{e&&t!==e&&(e.splice(0,e.length),t&&t.forEach((t=>e.push(t))))})(n,r);return e.reRender&&e.reRender()},se=(e,t,l)=>d(e)?t&&l?ce(l,e):e.resolve():e,pe=(e,t,l)=>t&&l?ve(e,l):ae(e),ae=e=>(e.children||[]).map((t=>f(oe(t),{getParent:()=>e}))),ve=(e,t)=>"loop"===e.type&&c(o((e.children||[])[0]))?he(e,t):(e.children||[]).map(((l,n)=>f(oe(l,(t.children||[])[n]),{getParent:()=>e}))),he=(e,t)=>{const[l,n]=fe(e,t);return n.forEach((e=>{P(e),L(e),D(e)})),l},fe=(e,t)=>{const l=[...e.children||[]],n=[...t.children||[]];return[l.map((t=>{const l=me(t,n),o=oe(t,l);return l&&n.splice(n.indexOf(l),1),o.getParent=()=>e,o})),n]},me=(e,t)=>t.find((t=>o(t)===o(e)));let ye=[],ge=!1;const Ee=(e,t)=>{E.get(e).up=()=>{ye.push({compKey:e,exec:t}),ge||(ge=!0,queueMicrotask(Re))}},Re=()=>{ye.forEach((e=>{e.exec()})),ye=[],ge=!1},Ce=(e,...t)=>({type:"fragment",children:t}),xe=(e,t,l,n)=>{var o;if(n.isLegacy)return;g.value=!0;const r=Pe(e,t,l),d=oe(r,n),{isRoot:i,getParent:u,wrapElement:c,afterElement:s}=n;if(d.getParent=u,!i&&u){const e=(null==(o=u())?void 0:o.children)||[],t=e.indexOf(n);e.splice(t,1,d)}else d.isRoot=!0,d.wrapElement=c,d.afterElement=s;g.value=!1,K(d)},Pe=(e,t,l)=>({tagName:e.name,ctor:e,props:t,children:l,resolve:(n=t)=>{x(n);const o=e(t,l)((e=>()=>{var t;const l=null==(t=E.get(e))?void 0:t.up;let n=!1;return l&&(l(),n=!0),n})(n),t,l),r=Se(o,n,e,t,l),d=r;return Ee(n,(()=>xe(e,t,l,d))),C(n,"vd").value=r,r}}),Se=(e,t,l,n,o)=>{let r=e,d=e(n);return d.reRender&&(r=t=>{const l=e(t),n=Ce({},l);return l.getParent=()=>n,n},d=r(n)),Ne(d,t,l,n,o,be(r,t,l,n,o)),d},be=(e,t,l,n,o)=>{const r=()=>Te(e,t,l,n,o,r);return r},Te=(e,t,l,n,o,r)=>{(e=>{y.value=e})(t),(()=>{var e;const t=null==(e=E.get(R()))?void 0:e.upR;(null==t?void 0:t.length)&&t.forEach((e=>e()))})();const d=e(n);return Ee(t,(()=>xe(l,n,o,d))),Ne(d,t,l,n,o,r),C(t,"vd").value=d,d},Ne=(e,t,l,n,o,r)=>{f(e,{compProps:n,compChild:o,ctor:l,tagName:l.name,compKey:t,reRender:r})},ke=(e,t,l)=>{if(i(e))return Ce(t,...l);if(d(e)){const n=Pe(e,t,l);return g.value?n:n.resolve()}return{type:"element",tag:e,props:t,children:l}},Ae=(e,t)=>t.map((t=>f(je(t),{getParent:()=>e.value}))),je=e=>{if(null==e||!1===e)return{type:null};if(Array.isArray(e)){const t={value:void 0},l={type:"loop",children:Ae(t,e)};return t.value=l,l}return"string"==typeof e||"number"==typeof e?{type:"text",text:e}:e};e.Fragment=Ce,e.h=(e,t,...l)=>{const n={value:void 0},o=t||{},r=Ae(n,l),i=ke(e,o,r);return d(i)||(n.value=i),i},e.mount=e=>(t,l)=>e,e.mountCallback=e=>E.get(R()).mts.push(e),e.nextTick=()=>Promise.resolve(),e.ref=e=>({value:e}),e.render=(e,t,l)=>{t??(t=document.body),e.isRoot=!0,e.wrapElement=t;const n=_(e);return l?(e.afterElement=l,t.insertBefore(n,l)):t.appendChild(n),N(),()=>{var t;const l=null==(t=E.get(e.compProps||{}))?void 0:t.vd.value;l&&P(l),L(l||e),B(l||e)}},e.updateCallback=(e,t=(()=>[]))=>{E.get(R()).upR.push((()=>A(e,t))),A(e,t)},Object.defineProperty(e,Symbol.toStringTag,{value:"Module"})}));
|
|
2
2
|
//# sourceMappingURL=lithent.umd.js.map
|