lithent 1.9.2 → 1.9.3
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 +12 -12
- package/dist/lithent.mjs +1 -1
- 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-60b445f0.js +2 -0
- package/examples/dist/assets/index-60b445f0.js.map +1 -0
- package/examples/dist/index.html +1 -1
- package/ftags/dist/index.d.ts +0 -10
- package/ftags/dist/lithentFTags.mjs +7 -8
- 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 +0 -4
- package/package.json +2 -3
- package/src/diff.ts +1 -1
- package/src/tests/unmount.tsx +95 -0
- package/examples/dist/assets/index-08ddebb4.js +0 -2
- package/examples/dist/assets/index-08ddebb4.js.map +0 -1
package/README.md
CHANGED
|
@@ -65,14 +65,14 @@ pnpm add lithent
|
|
|
65
65
|
|
|
66
66
|
#### Or Use CDN
|
|
67
67
|
|
|
68
|
-
* UMD : https://cdn.jsdelivr.net/npm/lithent@1.9.
|
|
69
|
-
* UMD-HELPER: https://cdn.jsdelivr.net/npm/lithent@1.9.
|
|
70
|
-
* UMD-FTAGS: https://cdn.jsdelivr.net/npm/lithent@1.9.
|
|
71
|
-
* UMD-TAG: https://cdn.jsdelivr.net/npm/lithent@1.9.
|
|
72
|
-
* ESM : https://cdn.jsdelivr.net/npm/lithent@1.9.
|
|
73
|
-
* ESM-HELPER: https://cdn.jsdelivr.net/npm/lithent@1.9.
|
|
74
|
-
* ESM-FTAGS: https://cdn.jsdelivr.net/npm/lithent@1.9.
|
|
75
|
-
* ESM-TAG: https://cdn.jsdelivr.net/npm/lithent@1.9.
|
|
68
|
+
* UMD : https://cdn.jsdelivr.net/npm/lithent@1.9.3/dist/lithent.umd.js
|
|
69
|
+
* UMD-HELPER: https://cdn.jsdelivr.net/npm/lithent@1.9.3/helper/dist/lithentHelper.umd.js
|
|
70
|
+
* UMD-FTAGS: https://cdn.jsdelivr.net/npm/lithent@1.9.3/ftags/dist/lithentFTags.umd.js
|
|
71
|
+
* UMD-TAG: https://cdn.jsdelivr.net/npm/lithent@1.9.3/tag/dist/lithentTag.umd.js
|
|
72
|
+
* ESM : https://cdn.jsdelivr.net/npm/lithent@1.9.3/dist/lithent.mjs
|
|
73
|
+
* ESM-HELPER: https://cdn.jsdelivr.net/npm/lithent@1.9.3/helper/dist/lithentHelper.mjs
|
|
74
|
+
* ESM-FTAGS: https://cdn.jsdelivr.net/npm/lithent@1.9.3/ftags/dist/lithentFTags.mjs
|
|
75
|
+
* ESM-TAG: https://cdn.jsdelivr.net/npm/lithent@1.9.3/tag/dist/lithentTag.mjs
|
|
76
76
|
|
|
77
77
|
|
|
78
78
|
It's easier to use lithent with JSX or HTM.
|
|
@@ -160,10 +160,10 @@ const destroy = render(lTag`<${Component} />`, document.getElementById('root'),
|
|
|
160
160
|
#### With UMD
|
|
161
161
|
|
|
162
162
|
```html
|
|
163
|
-
<script src="https://cdn.jsdelivr.net/npm/lithent@1.9.
|
|
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.
|
|
163
|
+
<script src="https://cdn.jsdelivr.net/npm/lithent@1.9.3/dist/lithent.umd.js"></script>
|
|
164
|
+
<!--script src="https://cdn.jsdelivr.net/npm/lithent@1.9.3/helper/dist/lithentHelper.umd.js"></script-->
|
|
165
|
+
<script src="https://cdn.jsdelivr.net/npm/lithent@1.9.3/tag/dist/lithentTag.umd.js"></script>
|
|
166
|
+
<!--script src="https://cdn.jsdelivr.net/npm/lithent@1.9.3/ftags/dist/lithentFTags.umd.js"></script-->
|
|
167
167
|
|
|
168
168
|
<div id="root"></div>
|
|
169
169
|
|
package/dist/lithent.mjs
CHANGED
|
@@ -551,7 +551,7 @@ const inheritPropForRender = (remakeWDom, originalWDom, needRerender) => {
|
|
|
551
551
|
remakeWDom.el = originalWDom.el;
|
|
552
552
|
}
|
|
553
553
|
if (needRerender && ["D", "R", "SR"].includes(needRerender)) {
|
|
554
|
-
if (originalWDom
|
|
554
|
+
if (originalWDom) {
|
|
555
555
|
runUnmountQueueFromWDom(originalWDom);
|
|
556
556
|
recursiveRemoveEvent(originalWDom);
|
|
557
557
|
}
|
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\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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"}
|
|
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) {\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,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"})}));
|
|
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),L=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)},K=e=>{e.props&&e.el&&G(e.props,e.el),(e.children||[]).forEach((e=>{K(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=>L(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)&&(t&&(P(t),K(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),K(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,L(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),K(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
|