lithent 1.15.0 → 1.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +15 -15
- package/dist/index.d.ts +1 -0
- package/dist/lithent.mjs +5 -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-DJx6EE9G.js +2 -0
- package/examples/dist/assets/index-DJx6EE9G.js.map +1 -0
- package/examples/dist/index.html +1 -1
- package/package.json +4 -3
- package/src/hook/mountCallback.ts +1 -1
- package/src/index.ts +1 -0
- package/ssr/dist/index.d.ts +1 -2
- package/ssr/dist/lithentSsr.mjs +27 -33
- package/ssr/dist/lithentSsr.mjs.map +1 -1
- package/ssr/dist/lithentSsr.umd.js +1 -1
- package/ssr/dist/lithentSsr.umd.js.map +1 -1
- package/ssr/src/index.ts +2 -8
- package/examples/dist/assets/index-B-8ORC6a.js +0 -2
- package/examples/dist/assets/index-B-8ORC6a.js.map +0 -1
package/README.md
CHANGED
|
@@ -78,14 +78,14 @@ pnpm add lithent
|
|
|
78
78
|
|
|
79
79
|
#### Or Use CDN
|
|
80
80
|
|
|
81
|
-
* UMD : https://cdn.jsdelivr.net/npm/lithent@1.
|
|
82
|
-
* UMD-HELPER: https://cdn.jsdelivr.net/npm/lithent@1.
|
|
83
|
-
* UMD-FTAGS: https://cdn.jsdelivr.net/npm/lithent@1.
|
|
84
|
-
* UMD-TAG: https://cdn.jsdelivr.net/npm/lithent@1.
|
|
85
|
-
* ESM : https://cdn.jsdelivr.net/npm/lithent@1.
|
|
86
|
-
* ESM-HELPER: https://cdn.jsdelivr.net/npm/lithent@1.
|
|
87
|
-
* ESM-FTAGS: https://cdn.jsdelivr.net/npm/lithent@1.
|
|
88
|
-
* ESM-TAG: https://cdn.jsdelivr.net/npm/lithent@1.
|
|
81
|
+
* UMD : https://cdn.jsdelivr.net/npm/lithent@1.16.0/dist/lithent.umd.js
|
|
82
|
+
* UMD-HELPER: https://cdn.jsdelivr.net/npm/lithent@1.16.0/helper/dist/lithentHelper.umd.js
|
|
83
|
+
* UMD-FTAGS: https://cdn.jsdelivr.net/npm/lithent@1.16.0/ftags/dist/lithentFTags.umd.js
|
|
84
|
+
* UMD-TAG: https://cdn.jsdelivr.net/npm/lithent@1.16.0/tag/dist/lithentTag.umd.js
|
|
85
|
+
* ESM : https://cdn.jsdelivr.net/npm/lithent@1.16.0/dist/lithent.mjs
|
|
86
|
+
* ESM-HELPER: https://cdn.jsdelivr.net/npm/lithent@1.16.0/helper/dist/lithentHelper.mjs
|
|
87
|
+
* ESM-FTAGS: https://cdn.jsdelivr.net/npm/lithent@1.16.0/ftags/dist/lithentFTags.mjs
|
|
88
|
+
* ESM-TAG: https://cdn.jsdelivr.net/npm/lithent@1.16.0/tag/dist/lithentTag.mjs
|
|
89
89
|
|
|
90
90
|
|
|
91
91
|
It's easier to use lithent with JSX or HTM.
|
|
@@ -110,9 +110,9 @@ import { fTags, fFragment, fMount } from 'lithent/ftags';
|
|
|
110
110
|
const { section, div, p, br, strong } = fTags;
|
|
111
111
|
|
|
112
112
|
/* UMD
|
|
113
|
-
<script src="https://cdn.jsdelivr.net/npm/lithent@1.
|
|
114
|
-
<script src="https://cdn.jsdelivr.net/npm/lithent@1.
|
|
115
|
-
<script src="https://cdn.jsdelivr.net/npm/lithent@1.
|
|
113
|
+
<script src="https://cdn.jsdelivr.net/npm/lithent@1.16.0/dist/lithent.umd.js"></script>
|
|
114
|
+
<script src="https://cdn.jsdelivr.net/npm/lithent@1.16.0/helper/dist/lithentHelper.umd.js"></script>
|
|
115
|
+
<script src="https://cdn.jsdelivr.net/npm/lithent@1.16.0/ftags/dist/lithentFTags.umd.js"></script>
|
|
116
116
|
|
|
117
117
|
const { render } = lithent;
|
|
118
118
|
const { fTags, fMount, fFragment } = lithentFTags;
|
|
@@ -185,10 +185,10 @@ const destroy = render(lTag`<${Component} />`, document.getElementById('root'),
|
|
|
185
185
|
#### With UMD
|
|
186
186
|
|
|
187
187
|
```html
|
|
188
|
-
<script src="https://cdn.jsdelivr.net/npm/lithent@1.
|
|
189
|
-
<!--script src="https://cdn.jsdelivr.net/npm/lithent@1.
|
|
190
|
-
<script src="https://cdn.jsdelivr.net/npm/lithent@1.
|
|
191
|
-
<!--script src="https://cdn.jsdelivr.net/npm/lithent@1.
|
|
188
|
+
<script src="https://cdn.jsdelivr.net/npm/lithent@1.16.0/dist/lithent.umd.js"></script>
|
|
189
|
+
<!--script src="https://cdn.jsdelivr.net/npm/lithent@1.16.0/helper/dist/lithentHelper.umd.js"></script-->
|
|
190
|
+
<script src="https://cdn.jsdelivr.net/npm/lithent@1.16.0/tag/dist/lithentTag.umd.js"></script>
|
|
191
|
+
<!--script src="https://cdn.jsdelivr.net/npm/lithent@1.16.0/ftags/dist/lithentFTags.umd.js"></script-->
|
|
192
192
|
|
|
193
193
|
<div id="root"></div>
|
|
194
194
|
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export { h, Fragment, portal, mount } from './wDom';
|
|
2
2
|
export { isPropType } from './utils';
|
|
3
|
+
export { componentUpdate } from './utils/redraw';
|
|
3
4
|
export { render } from './render';
|
|
4
5
|
export { mountCallback } from './hook/mountCallback';
|
|
5
6
|
export { updateCallback } from './hook/updateCallback';
|
package/dist/lithent.mjs
CHANGED
|
@@ -58,7 +58,10 @@ const I = () => {
|
|
|
58
58
|
Q.forEach((e) => Te(e)), Q = [];
|
|
59
59
|
}, ae = (e) => {
|
|
60
60
|
e.compKey && Q.push(e);
|
|
61
|
-
}, ft = (e) =>
|
|
61
|
+
}, ft = (e) => {
|
|
62
|
+
var t;
|
|
63
|
+
return (((t = f.get(x())) == null ? void 0 : t.mts) || []).push(e);
|
|
64
|
+
}, Te = (e) => {
|
|
62
65
|
const { compKey: t } = e;
|
|
63
66
|
if (t) {
|
|
64
67
|
const s = f.get(t), c = s == null ? void 0 : s.mts, r = s == null ? void 0 : s.upS;
|
|
@@ -408,6 +411,7 @@ const me = (e, t) => {
|
|
|
408
411
|
}, it = (e) => ({ value: e }), yt = () => Promise.resolve();
|
|
409
412
|
export {
|
|
410
413
|
J as Fragment,
|
|
414
|
+
we as componentUpdate,
|
|
411
415
|
et as h,
|
|
412
416
|
lt as isPropType,
|
|
413
417
|
ht as mount,
|
package/dist/lithent.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lithent.mjs","sources":["../src/utils/predicator.ts","../src/utils/universalRef.ts","../src/utils/index.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 hasAccessorMethods = (target: unknown, dataKey: string) => {\n const descriptor = Object.getOwnPropertyDescriptor(\n target!.constructor.prototype,\n dataKey\n );\n\n return descriptor && descriptor.get && descriptor.set;\n};\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 { ComponentRef, ComponentSubKey, Props } from '@/types';\n\nexport const wdomSymbol = Symbol.for('lithentWDomSymbol');\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 = (\n compKey: Props,\n subKey: ComponentSubKey\n) => {\n if (componentRef.get(compKey)) {\n return componentRef.get(compKey)![subKey];\n }\n return null;\n};\n\nexport const initUpdateHookState = (compKey: Props) =>\n (compKeyRef.value = compKey);\n\nexport const initMountHookState = (compKey: Props) => {\n compKeyRef.value = compKey;\n setComponetRef(compKey);\n};\n","import { WDom, Props } from '@/types';\n\nimport { wdomSymbol } from '@/utils/universalRef';\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;\nexport const isPropType = (obj: unknown): obj is Props => {\n return (\n typeof obj === 'object' &&\n !Array.isArray(obj) &&\n !Object.getOwnPropertySymbols(obj).includes(wdomSymbol)\n );\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 checkVirtualType,\n hasAccessorMethods,\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 isHydration?: boolean\n) => {\n wDom.isRoot = true;\n wrapElement ??= document.body;\n wDom.wrapElement = wrapElement;\n\n const Dom = wDomToDom(wDom, isHydration);\n\n if (afterElement) {\n wDom.afterElement = afterElement;\n wrapElement.insertBefore(Dom, afterElement);\n } else if (!isHydration) {\n if (wrapElement.tagName === 'HTML') {\n wrapElement.replaceWith(Dom);\n } else {\n wrapElement.appendChild(Dom);\n }\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 if ((item.el as HTMLElement).tagName === 'HTML') {\n (item.el as HTMLElement).innerHTML = '';\n } else {\n (item.el as HTMLElement).remove();\n }\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 (newWDom.tag !== 'portal') {\n if (nextEl) {\n parentEl.insertBefore(newElement, nextEl);\n } else {\n parentEl.appendChild(newElement);\n }\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 && newWDom.tag !== 'portal') {\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 | null,\n isHydration?: boolean\n) => {\n const originalProps = { ...oldProps };\n\n entries(props || {}).forEach(([dataKey, dataValue]: [string, unknown]) => {\n if (isHydration && 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 {\n if (dataKey === 'key' || dataValue === originalProps[dataKey]) {\n // Do nothing\n } else if (dataKey === 'portal' && typeof dataValue === 'object') {\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)\n ? originalProps.style\n : {},\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 (dataKey) {\n if (dataKey !== 'type' && hasAccessorMethods(element, dataKey)) {\n (element as { [key: string]: any })[dataKey] = dataValue;\n } else {\n setAttr(\n getAttrKey(dataKey),\n element as HTMLElement,\n dataValue as string\n );\n }\n }\n\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 wDomToDom = (wDom: WDom, isHydration?: boolean): HTMLElement => {\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 (!isHydration) {\n if (isVirtualType) {\n element = DF();\n } else if (type === 'element' && tag) {\n if (tag === 'portal' && props?.portal) {\n element = props.portal as HTMLElement;\n } else {\n element = xmlnsRef.value\n ? document.createElementNS(xmlnsRef.value, tag)\n : CE(tag);\n }\n } else if (type === 'text' && checkExisty(text)) {\n element = document.createTextNode(String(text));\n } else {\n element = CE('e');\n }\n\n wDom.el = element as HTMLElement;\n } else {\n element = wDom.el;\n }\n\n wDomChildrenToDom(children, element, isHydration);\n\n updateProps(props, element, null, isHydration);\n\n addMountedQueue(wDom);\n\n if (tag === 'svg') {\n xmlnsRef.value = '';\n }\n\n return element as HTMLElement;\n};\n\nconst wDomChildrenToDom = (\n children: WDom[],\n parentElement?: HTMLElement | Element | DocumentFragment | Text,\n isHydration?: boolean\n) => {\n const elementChildren = children.reduce(\n (acc: DocumentFragment, childItem: WDom) => {\n if (childItem.type) {\n const childElement = wDomToDom(childItem, isHydration);\n\n if (childItem.tag !== 'portal' && !isHydration) {\n acc.appendChild(childElement);\n }\n }\n\n return acc;\n },\n DF()\n );\n\n if (!isHydration && 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\n/**\n * 원본 가상돔과 리랜더링을 위한 새로운 가상돔 diff 처리의 시작점\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\n/**\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\n/**\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\n/**\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\n/**\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\n/**\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\n/**\n * 가상돔이 새로운 종류로 완전 교체되지 않고 단순 업데이트 될때 처리 시작\n * (새로운 상태가 반영되도록 props나 children 상태 반영)\n * (새로운 상태를 반영하면서도 props 나 children의 실제 참조가 변경되지 않도록 처리)\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\n/**\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\n/**\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\n/**\n * 새로운 가상돔 생을을 위한 재귀 처리\n */\nconst remakeChildrenForAdd = (newWDom: WDom) =>\n (newWDom.children || []).map((item: WDom) =>\n assign(makeNewWDomTree(item), { getParent: () => newWDom })\n );\n\n/**\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\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\n/**\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\n/**\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\nconst redrawQueue = new Map<Props, () => void>();\nlet redrawQueueTimeout: boolean = false;\n\nexport const setRedrawAction = (compKey: Props, exec: () => void) => {\n if (componentRef.get(compKey)) {\n componentRef.get(compKey)!.up = () => {\n redrawQueue.set(compKey, exec);\n\n if (!redrawQueueTimeout) {\n redrawQueueTimeout = true;\n queueMicrotask(execRedrawQueue);\n }\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: () => void) => {\n item();\n });\n\n redrawQueue.clear();\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 wdomSymbol,\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\n/**\n * 여러 요소를 그룹화 할수 있게 해준다.\n */\nexport const Fragment = (_props: Props, ...children: WDom[]) =>\n ({\n type: 'fragment',\n [wdomSymbol]: true,\n children,\n } as WDom);\n\n/**\n * 엘리먼트 생성 (createElement)\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\n/**\n * 포털을 가능하게 해준다.\n */\nexport const portal = (wDom: WDom, portal: HTMLElement) => {\n return h('portal', { portal }, wDom);\n};\n\n/**\n * 컴포넌트 생성을 도와준다\n */\nexport const mount =\n <T>(component: Component<T>) =>\n (_props: T, _children?: MiddleStateWDomChildren) =>\n component;\n\n/**\n * 특정 컴포넌트부터 새로 그려준다.\n */\nconst reRenderCustomComponent = (\n tag: TagFunction,\n props: Props,\n children: WDom[],\n originalWDom: WDom\n) => {\n if (originalWDom.isLegacy) {\n return;\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\n/**\n * 가상돔을 리랜더링 할때 기존 가상돔과 diff를 위한 중간단계 생성\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 return customNode;\n };\n\n return { tagName, ctor, props, children, resolve };\n};\n\n/**\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 const reRender = makeReRender(\n newCustomComponentMaker,\n compKey,\n tag,\n props,\n children\n );\n\n addComponentProps(customNode, compKey, tag, props, children, reRender);\n\n return customNode;\n};\n\n/**\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\n/**\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 customNode = componentMaker(props);\n\n addComponentProps(customNode, compKey, tag, props, children, reRender);\n\n return customNode;\n};\n\n/**\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 setRedrawAction(compKey, () =>\n reRenderCustomComponent(tag, props, children, wDom)\n );\n\n if (getComponentSubInfo(compKey, 'vd')) {\n (getComponentSubInfo(compKey, 'vd') as { value: WDom }).value = wDom;\n }\n};\n\n/**\n * h 함수로 부터 가상돔이 만들어지는 시작점\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 [wdomSymbol]: true,\n tag,\n props,\n children,\n } as WDom;\n};\n\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\n/**\n * 가상돔의 자식 가상돔들을 재귀 처리\n */\nconst makeChildrenItem = (item: MiddleStateWDom): WDom => {\n if (item === null || item === undefined || item === false) {\n return { type: null, [wdomSymbol]: true } as WDom;\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 [wdomSymbol]: true,\n children,\n } as WDom;\n nodeParentPointer.value = node;\n\n return node;\n } else if (typeof item === 'string' || typeof item === 'number') {\n return { type: 'text', [wdomSymbol]: true, text: item } as WDom;\n }\n\n return item;\n};\n","export const ref = <T>(initValue: T) => ({ value: initValue });\nexport const nextTick = () => Promise.resolve();\n"],"names":["checkPlainWDomType","wDom","checkPlainType","typeName","checkSameCustomComponent","newWDom","originalWDom","checkSameFragment","_a","_b","checkSameTagElement","checkNormalTypeElement","checkLoopTypeElement","checkExisty","getKey","target","checkVirtualType","type","checkCustemComponentFunction","checkFragmentFunction","Fragment","checkEmptyElement","value","checkStyleData","dataKey","dataValue","checkRefData","hasAccessorMethods","descriptor","getWDomType","result","checkSameWDomWithOriginal","wdomSymbol","xmlnsRef","compKeyRef","needDiffRef","componentRef","setComponetRef","compKey","getComponentKey","getComponentSubInfo","subKey","initUpdateHookState","initMountHookState","getParent","vDom","entries","keys","assign","isPropType","obj","unmount","effectAction","runUnmountQueueFromWDom","removeItem","recursiveRunUnmount","item","subInfo","effect","mountedQueue","execMountedQueue","runMountedQueueFromWDom","addMountedQueue","mountCallback","component","queue","sequence","callback","useUpdated","dependencies","upD","upS","def","checkNeedPushQueue","runUpdatedQueueFromWDom","originalDefs","newDefs","index","getAttrKey","keyName","getEventName","eventKey","_match","p1","DF","CE","t","render","wrapElement","afterElement","isHydration","Dom","wDomToDom","recursiveRemoveEvent","rootDelete","wDomUpdate","newWDomTree","needRerender","typeAdd","typeDelete","typeReplace","typeUpdate","typeSortedReplace","typeSortedUpdate","removeEvent","childItem","deleteRealDom","findRealParentElement","parent","findChildWithRemoveElement","nodeType","newElement","getElementFromFragment","parentWDom","parentEl","nextEl","startFindNextBrotherElement","acc","element","brothers","nextIndex","candidiateBrothers","finedNextEl","findChildFragmentNextElement","parentType","targetEl","bItem","el","isFragment","orignalElement","parentElement","oldProps","updateText","props","updateProps","originalProps","updateEvent","updateStyle","setAttr","tag","text","children","isVirtualType","wDomChildrenToDom","elementChildren","childElement","newEventHandler","oldEventHandler","eventName","style","oldStyle","originalStyle","elementStyle","styleKey","makeNewWDomTree","remakeNewWDom","isSameType","remakeWDom","generalize","param","addReRenderTypeProperty","isNoting","remakeChildrenForDiff","inheritPropForRender","existOriginalWDom","isEmptyElement","isRoot","originalParentWDom","origParentType","key","isKeyCheckedWDom","isSameText","isSameWDom","chkDiffLoopOrder","origChildren","newChildren","newItem","filteredChildren","isSame","infoProps","updateChildren","infoChidren","childrenItem","runUpdate","infoVdom","remakeChildrenForUpdate","remakeChildrenForAdd","remakeChildrenForLoopUpdate","remakedChildren","unUsedChildren","diffLoopChildren","unusedItem","originalChildren","originalItem","findSameKeyOriginalItem","orignalChildItem","redrawQueue","redrawQueueTimeout","setRedrawAction","exec","execRedrawQueue","componentUpdate","up","updateCallback","runUpdateCallback","updateReqs","_props","h","nodeParentPointer","newProps","remakeChildren","node","makeNode","portal","mount","_children","reRenderCustomComponent","makeWDomResolver","componentMaker","makeCustomNode","newCustomComponentMaker","customNode","newNode","reRender","makeReRender","addComponentProps","wDomMaker","componetMakeResolver","makeChildrenItem","ref","initValue","nextTick"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"lithent.mjs","sources":["../src/utils/predicator.ts","../src/utils/universalRef.ts","../src/utils/index.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 hasAccessorMethods = (target: unknown, dataKey: string) => {\n const descriptor = Object.getOwnPropertyDescriptor(\n target!.constructor.prototype,\n dataKey\n );\n\n return descriptor && descriptor.get && descriptor.set;\n};\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 { ComponentRef, ComponentSubKey, Props } from '@/types';\n\nexport const wdomSymbol = Symbol.for('lithentWDomSymbol');\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 = (\n compKey: Props,\n subKey: ComponentSubKey\n) => {\n if (componentRef.get(compKey)) {\n return componentRef.get(compKey)![subKey];\n }\n return null;\n};\n\nexport const initUpdateHookState = (compKey: Props) =>\n (compKeyRef.value = compKey);\n\nexport const initMountHookState = (compKey: Props) => {\n compKeyRef.value = compKey;\n setComponetRef(compKey);\n};\n","import { WDom, Props } from '@/types';\n\nimport { wdomSymbol } from '@/utils/universalRef';\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;\nexport const isPropType = (obj: unknown): obj is Props => {\n return (\n typeof obj === 'object' &&\n !Array.isArray(obj) &&\n !Object.getOwnPropertySymbols(obj).includes(wdomSymbol)\n );\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 checkVirtualType,\n hasAccessorMethods,\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 isHydration?: boolean\n) => {\n wDom.isRoot = true;\n wrapElement ??= document.body;\n wDom.wrapElement = wrapElement;\n\n const Dom = wDomToDom(wDom, isHydration);\n\n if (afterElement) {\n wDom.afterElement = afterElement;\n wrapElement.insertBefore(Dom, afterElement);\n } else if (!isHydration) {\n if (wrapElement.tagName === 'HTML') {\n wrapElement.replaceWith(Dom);\n } else {\n wrapElement.appendChild(Dom);\n }\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 if ((item.el as HTMLElement).tagName === 'HTML') {\n (item.el as HTMLElement).innerHTML = '';\n } else {\n (item.el as HTMLElement).remove();\n }\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 (newWDom.tag !== 'portal') {\n if (nextEl) {\n parentEl.insertBefore(newElement, nextEl);\n } else {\n parentEl.appendChild(newElement);\n }\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 && newWDom.tag !== 'portal') {\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 | null,\n isHydration?: boolean\n) => {\n const originalProps = { ...oldProps };\n\n entries(props || {}).forEach(([dataKey, dataValue]: [string, unknown]) => {\n if (isHydration && 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 {\n if (dataKey === 'key' || dataValue === originalProps[dataKey]) {\n // Do nothing\n } else if (dataKey === 'portal' && typeof dataValue === 'object') {\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)\n ? originalProps.style\n : {},\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 (dataKey) {\n if (dataKey !== 'type' && hasAccessorMethods(element, dataKey)) {\n (element as { [key: string]: any })[dataKey] = dataValue;\n } else {\n setAttr(\n getAttrKey(dataKey),\n element as HTMLElement,\n dataValue as string\n );\n }\n }\n\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 wDomToDom = (wDom: WDom, isHydration?: boolean): HTMLElement => {\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 (!isHydration) {\n if (isVirtualType) {\n element = DF();\n } else if (type === 'element' && tag) {\n if (tag === 'portal' && props?.portal) {\n element = props.portal as HTMLElement;\n } else {\n element = xmlnsRef.value\n ? document.createElementNS(xmlnsRef.value, tag)\n : CE(tag);\n }\n } else if (type === 'text' && checkExisty(text)) {\n element = document.createTextNode(String(text));\n } else {\n element = CE('e');\n }\n\n wDom.el = element as HTMLElement;\n } else {\n element = wDom.el;\n }\n\n wDomChildrenToDom(children, element, isHydration);\n\n updateProps(props, element, null, isHydration);\n\n addMountedQueue(wDom);\n\n if (tag === 'svg') {\n xmlnsRef.value = '';\n }\n\n return element as HTMLElement;\n};\n\nconst wDomChildrenToDom = (\n children: WDom[],\n parentElement?: HTMLElement | Element | DocumentFragment | Text,\n isHydration?: boolean\n) => {\n const elementChildren = children.reduce(\n (acc: DocumentFragment, childItem: WDom) => {\n if (childItem.type) {\n const childElement = wDomToDom(childItem, isHydration);\n\n if (childItem.tag !== 'portal' && !isHydration) {\n acc.appendChild(childElement);\n }\n }\n\n return acc;\n },\n DF()\n );\n\n if (!isHydration && 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\n/**\n * 원본 가상돔과 리랜더링을 위한 새로운 가상돔 diff 처리의 시작점\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\n/**\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\n/**\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\n/**\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\n/**\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\n/**\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\n/**\n * 가상돔이 새로운 종류로 완전 교체되지 않고 단순 업데이트 될때 처리 시작\n * (새로운 상태가 반영되도록 props나 children 상태 반영)\n * (새로운 상태를 반영하면서도 props 나 children의 실제 참조가 변경되지 않도록 처리)\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\n/**\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\n/**\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\n/**\n * 새로운 가상돔 생을을 위한 재귀 처리\n */\nconst remakeChildrenForAdd = (newWDom: WDom) =>\n (newWDom.children || []).map((item: WDom) =>\n assign(makeNewWDomTree(item), { getParent: () => newWDom })\n );\n\n/**\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\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\n/**\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\n/**\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\nconst redrawQueue = new Map<Props, () => void>();\nlet redrawQueueTimeout: boolean = false;\n\nexport const setRedrawAction = (compKey: Props, exec: () => void) => {\n if (componentRef.get(compKey)) {\n componentRef.get(compKey)!.up = () => {\n redrawQueue.set(compKey, exec);\n\n if (!redrawQueueTimeout) {\n redrawQueueTimeout = true;\n queueMicrotask(execRedrawQueue);\n }\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: () => void) => {\n item();\n });\n\n redrawQueue.clear();\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 wdomSymbol,\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\n/**\n * 여러 요소를 그룹화 할수 있게 해준다.\n */\nexport const Fragment = (_props: Props, ...children: WDom[]) =>\n ({\n type: 'fragment',\n [wdomSymbol]: true,\n children,\n } as WDom);\n\n/**\n * 엘리먼트 생성 (createElement)\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\n/**\n * 포털을 가능하게 해준다.\n */\nexport const portal = (wDom: WDom, portal: HTMLElement) => {\n return h('portal', { portal }, wDom);\n};\n\n/**\n * 컴포넌트 생성을 도와준다\n */\nexport const mount =\n <T>(component: Component<T>) =>\n (_props: T, _children?: MiddleStateWDomChildren) =>\n component;\n\n/**\n * 특정 컴포넌트부터 새로 그려준다.\n */\nconst reRenderCustomComponent = (\n tag: TagFunction,\n props: Props,\n children: WDom[],\n originalWDom: WDom\n) => {\n if (originalWDom.isLegacy) {\n return;\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\n/**\n * 가상돔을 리랜더링 할때 기존 가상돔과 diff를 위한 중간단계 생성\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 return customNode;\n };\n\n return { tagName, ctor, props, children, resolve };\n};\n\n/**\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 const reRender = makeReRender(\n newCustomComponentMaker,\n compKey,\n tag,\n props,\n children\n );\n\n addComponentProps(customNode, compKey, tag, props, children, reRender);\n\n return customNode;\n};\n\n/**\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\n/**\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 customNode = componentMaker(props);\n\n addComponentProps(customNode, compKey, tag, props, children, reRender);\n\n return customNode;\n};\n\n/**\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 setRedrawAction(compKey, () =>\n reRenderCustomComponent(tag, props, children, wDom)\n );\n\n if (getComponentSubInfo(compKey, 'vd')) {\n (getComponentSubInfo(compKey, 'vd') as { value: WDom }).value = wDom;\n }\n};\n\n/**\n * h 함수로 부터 가상돔이 만들어지는 시작점\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 [wdomSymbol]: true,\n tag,\n props,\n children,\n } as WDom;\n};\n\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\n/**\n * 가상돔의 자식 가상돔들을 재귀 처리\n */\nconst makeChildrenItem = (item: MiddleStateWDom): WDom => {\n if (item === null || item === undefined || item === false) {\n return { type: null, [wdomSymbol]: true } as WDom;\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 [wdomSymbol]: true,\n children,\n } as WDom;\n nodeParentPointer.value = node;\n\n return node;\n } else if (typeof item === 'string' || typeof item === 'number') {\n return { type: 'text', [wdomSymbol]: true, text: item } as WDom;\n }\n\n return item;\n};\n","export const ref = <T>(initValue: T) => ({ value: initValue });\nexport const nextTick = () => Promise.resolve();\n"],"names":["checkPlainWDomType","wDom","checkPlainType","typeName","checkSameCustomComponent","newWDom","originalWDom","checkSameFragment","_a","_b","checkSameTagElement","checkNormalTypeElement","checkLoopTypeElement","checkExisty","getKey","target","checkVirtualType","type","checkCustemComponentFunction","checkFragmentFunction","Fragment","checkEmptyElement","value","checkStyleData","dataKey","dataValue","checkRefData","hasAccessorMethods","descriptor","getWDomType","result","checkSameWDomWithOriginal","wdomSymbol","xmlnsRef","compKeyRef","needDiffRef","componentRef","setComponetRef","compKey","getComponentKey","getComponentSubInfo","subKey","initUpdateHookState","initMountHookState","getParent","vDom","entries","keys","assign","isPropType","obj","unmount","effectAction","runUnmountQueueFromWDom","removeItem","recursiveRunUnmount","item","subInfo","effect","mountedQueue","execMountedQueue","runMountedQueueFromWDom","addMountedQueue","mountCallback","component","queue","sequence","callback","useUpdated","dependencies","upD","upS","def","checkNeedPushQueue","runUpdatedQueueFromWDom","originalDefs","newDefs","index","getAttrKey","keyName","getEventName","eventKey","_match","p1","DF","CE","t","render","wrapElement","afterElement","isHydration","Dom","wDomToDom","recursiveRemoveEvent","rootDelete","wDomUpdate","newWDomTree","needRerender","typeAdd","typeDelete","typeReplace","typeUpdate","typeSortedReplace","typeSortedUpdate","removeEvent","childItem","deleteRealDom","findRealParentElement","parent","findChildWithRemoveElement","nodeType","newElement","getElementFromFragment","parentWDom","parentEl","nextEl","startFindNextBrotherElement","acc","element","brothers","nextIndex","candidiateBrothers","finedNextEl","findChildFragmentNextElement","parentType","targetEl","bItem","el","isFragment","orignalElement","parentElement","oldProps","updateText","props","updateProps","originalProps","updateEvent","updateStyle","setAttr","tag","text","children","isVirtualType","wDomChildrenToDom","elementChildren","childElement","newEventHandler","oldEventHandler","eventName","style","oldStyle","originalStyle","elementStyle","styleKey","makeNewWDomTree","remakeNewWDom","isSameType","remakeWDom","generalize","param","addReRenderTypeProperty","isNoting","remakeChildrenForDiff","inheritPropForRender","existOriginalWDom","isEmptyElement","isRoot","originalParentWDom","origParentType","key","isKeyCheckedWDom","isSameText","isSameWDom","chkDiffLoopOrder","origChildren","newChildren","newItem","filteredChildren","isSame","infoProps","updateChildren","infoChidren","childrenItem","runUpdate","infoVdom","remakeChildrenForUpdate","remakeChildrenForAdd","remakeChildrenForLoopUpdate","remakedChildren","unUsedChildren","diffLoopChildren","unusedItem","originalChildren","originalItem","findSameKeyOriginalItem","orignalChildItem","redrawQueue","redrawQueueTimeout","setRedrawAction","exec","execRedrawQueue","componentUpdate","up","updateCallback","runUpdateCallback","updateReqs","_props","h","nodeParentPointer","newProps","remakeChildren","node","makeNode","portal","mount","_children","reRenderCustomComponent","makeWDomResolver","componentMaker","makeCustomNode","newCustomComponentMaker","customNode","newNode","reRender","makeReRender","addComponentProps","wDomMaker","componetMakeResolver","makeChildrenItem","ref","initValue","nextTick"],"mappings":"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"}
|
package/dist/lithent.umd.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
(function(d,p){typeof exports=="object"&&typeof module<"u"?p(exports):typeof define=="function"&&define.amd?define(["exports"],p):(d=typeof globalThis<"u"?globalThis:d||self,p(d.lithent={}))})(this,function(d){"use strict";const p=e=>typeof e=="object"&&!("resolve"in e),T=(e,t)=>p(e)&&e.type===t,ie=(e,t)=>"ctor"in e?e.ctor===(t==null?void 0:t.ctor):e===(t==null?void 0:t.ctor),ye=(e,t)=>{var s,c;return p(e)&&(t==null?void 0:t.type)==="fragment"&&((s=t==null?void 0:t.children)==null?void 0:s.length)===((c=e==null?void 0:e.children)==null?void 0:c.length)},Ce=(e,t)=>{var s,c;return p(e)&&(t==null?void 0:t.type)==="element"&&(t==null?void 0:t.tag)===e.tag&&((s=t==null?void 0:t.children)==null?void 0:s.length)===((c=e==null?void 0:e.children)==null?void 0:c.length)},Y=(e,t)=>p(e)&&(t==null?void 0:t.type)===e.type,ve=(e,t)=>{var s,c;return p(e)&&(t==null?void 0:t.type)===e.type&&(E(o((e.children||[])[0]))&&E(o(((t==null?void 0:t.children)||[])[0]))||((s=t==null?void 0:t.children)==null?void 0:s.length)===((c=e==null?void 0:e.children)==null?void 0:c.length))},o=e=>{var t,s;return((t=e==null?void 0:e.compProps)==null?void 0:t.key)??((s=e==null?void 0:e.props)==null?void 0:s.key)},k=e=>e&&["fragment","loop"].includes(e),b=e=>typeof e=="function"&&!Z(e)||typeof e=="object"&&"resolve"in e,Z=e=>typeof e=="function"&&e===O,H=e=>p(e)&&!e.type,E=e=>e!=null,V=(e,t)=>e==="style"&&typeof t=="object",ke=(e,t)=>e==="ref"&&typeof t=="object",Re=(e,t)=>{const s=Object.getOwnPropertyDescriptor(e.constructor.prototype,t);return s&&s.get&&s.set},Ee=e=>{let t="et";return b(e)?t="c":T(e,"fragment")?t="f":T(e,"element")?t="e":T(e,"loop")?t="l":T(e,"text")?t="t":H(e)&&(t="et"),t},ae={c:ie,l:ve,t:Y,e:Ce,f:ye,et:Y},R=Symbol.for("lithentWDomSymbol"),a={value:""},P={value:{}},Q={value:!1},f=new WeakMap,Pe=e=>{f.set(e,{vd:{value:null},up:()=>{},upR:[],upS:{value:0},upD:[],upCB:[],mts:[],umts:[]})},S=()=>P.value,K=(e,t)=>f.get(e)?f.get(e)[t]:null,Se=e=>P.value=e,Ne=e=>{P.value=e,Pe(e)},y=e=>e.getParent&&e.getParent(),N=Object.entries,g=Object.keys,x=Object.assign,Te=e=>typeof e=="object"&&!Array.isArray(e)&&!Object.getOwnPropertySymbols(e).includes(R),be=e=>{f.get(S()).umts.push(e)},U=e=>{const{compKey:t}=e;t&&xe(t),m(e)},m=e=>{(e.children||[]).forEach(t=>{t.compKey?U(t):m(t)})},xe=e=>{const t=f.get(e);t&&(t.umts.forEach(s=>s()),t.umts=[],f.delete(e))};let B=[];const q=()=>{B.forEach(e=>Le(e)),B=[]},Ue=e=>{e.compKey&&B.push(e)},Fe=e=>f.get(S()).mts.push(e),Le=e=>{const{compKey:t}=e;if(t){const s=f.get(t),c=s==null?void 0:s.mts,r=s==null?void 0:s.upS;P.value=t,r&&(r.value=0),c&&(s.mts=[],c.forEach(n=>{const u=n();u&&be(u)}))}},w=(e,t=()=>[])=>{const s=f.get(S()),{upD:c,upS:r}=s,n=c[r.value];if(n&&Ae(n,t())){const u=e();u&&s.upCB.push(u)}c[r.value]=t(),r.value+=1},Me=e=>{const{compKey:t}=e;if(t){const s=f.get(t),c=s==null?void 0:s.upCB,r=s==null?void 0:s.upS;P.value=t,r&&(r.value=0),e.ctor&&c&&(s.upCB=[],c.forEach(n=>n()))}},Ae=(e,t)=>e.length?e.some((s,c)=>s!==t[c]):!0,Oe=e=>e==="className"?"class":e,W=e=>e.replace(/^on(.*)/,(t,s)=>s.toLowerCase()),_=()=>new DocumentFragment,D=e=>document.createElement(e),je=(e,t,s,c)=>{e.isRoot=!0,t??(t=document.body),e.wrapElement=t;const r=L(e,c);return s?(e.afterElement=s,t.insertBefore(r,s)):c||(t.tagName==="HTML"?t.replaceWith(r):t.appendChild(r)),q(),()=>{var u;const n=(u=f.get(e.compProps||{}))==null?void 0:u.vd.value;n&&U(n),F(n||e),Qe(n||e)}},ee=e=>{const{needRerender:t}=e;t&&t!=="N"&&({A:z,D:I,R:qe,U:G,CNSU:G,SR:ce,SU:Be}[t](e),delete e.needRerender,delete e.oldChildren,delete e.oldProps)},F=e=>{e.props&&e.el&&ue(e.props,e.el),(e.children||[]).forEach(t=>{F(t)})},Qe=e=>{te(e,e.wrapElement)},I=e=>{e.oldProps&&e.el&&ue(e.oldProps,e.el),te(e,M(y(e)))},te=(e,t)=>{var s,c;t&&e.el&&([1,3].includes((s=e.el)==null?void 0:s.nodeType)?t.removeChild(e.el):((c=e.el)==null?void 0:c.nodeType)===11&&se(e),delete e.el)},se=(e,t)=>{((e==null?void 0:e.oldChildren)||(e==null?void 0:e.children)||[]).forEach(s=>{var r;const c=(r=s.el)==null?void 0:r.nodeType;c&&([1,3].includes(c)?s.el.tagName==="HTML"?s.el.innerHTML="":s.el.remove():c===11&&se(s))})},ce=e=>{I(e),z(e)},Be=e=>{if(G(e),y(e).needRerender!=="CNSU"){const s=ne(e);z(e,s)}},z=(e,t)=>{t||(t=L(e));const s=y(e);if(s.type){const c=M(s),n=s.type==="loop"&&s.needRerender&&s.needRerender!=="CNSU"?$(s,y(s)):$(e,s);t&&c&&(e.tag!=="portal"&&(n?c.insertBefore(t,n):c.appendChild(t)),q())}},ne=e=>k(e.type)?((e==null?void 0:e.children)||[]).reduce((t,s)=>{const c=ne(s);return c&&t.appendChild(c),t},_()):e.el,$=(e,t)=>{const s=t.children||[],r=s.indexOf(e)+1,n=s.slice(r),u=re(n),l=t.type||"";if(u)return u;if(!t.isRoot&&k(l))return $(t,y(t));if(t.isRoot&&k(l)&&t.afterElement)return t.afterElement},re=e=>e.reduce((t,s)=>{const c=s.type,r=s.el,n=c&&k(c);return t||(n?re(s.children||[]):r&&r.nodeType!==11?r:t)},void 0),qe=e=>{const t=y(e),s=e.el;if(t.type&&s)if(s.nodeType===11)ce(e);else{const c=M(t),r=L(e);c&&e.tag!=="portal"&&c.replaceChild(r,s),q()}},ue=(e,t)=>{N(e||{}).forEach(([s,c])=>{s.match(/^on/)&&t.removeEventListener(W(s),c)})},G=e=>{var s;const t=e.el;if(e.type==="text"){_e(e);return}if(t){const{oldProps:c,props:r}=e;le(r,t,c),delete e.oldProps,e.tag==="input"&&(t.value=String(((s=e==null?void 0:e.props)==null?void 0:s.value)||""))}(e.children||[]).forEach(c=>ee(c)),Me(e)},_e=e=>{const t=e.el;t&&(t.nodeValue=String(e.text))},le=(e,t,s,c)=>{const r={...s};N(e||{}).forEach(([n,u])=>{c&&n.match(/^on/)?fe(t,n,u,r[n]):(n==="key"||u===r[n]||n==="portal"&&typeof u=="object"||(n==="innerHTML"&&typeof u=="string"?t.innerHTML=u:V(n,u)?$e(u,V(n,r.style)?r.style:{},t):ke(n,u)?u.value=t:n.match(/^on/)?fe(t,n,u,r[n]):n&&(n!=="type"&&Re(t,n)?t[n]=u:Ie(Oe(n),t,u))),delete r[n])}),g(r).forEach(n=>t.removeAttribute(n))},Ie=(e,t,s)=>{a.value&&e!=="xmlns"?t.setAttributeNS(null,e,s):t.setAttribute(e,s)},L=(e,t)=>{let s;const{type:c,tag:r,text:n,props:u,children:l=[]}=e,i=k(c);return r==="svg"&&(a.value=String(u==null?void 0:u.xmlns)),t?s=e.el:(i?s=_():c==="element"&&r?r==="portal"&&(u!=null&&u.portal)?s=u.portal:s=a.value?document.createElementNS(a.value,r):D(r):c==="text"&&E(n)?s=document.createTextNode(String(n)):s=D("e"),e.el=s),ze(l,s,t),le(u,s,null,t),Ue(e),r==="svg"&&(a.value=""),s},ze=(e,t,s)=>{const c=e.reduce((r,n)=>{if(n.type){const u=L(n,s);n.tag!=="portal"&&!s&&r.appendChild(u)}return r},_());!s&&t&&c.hasChildNodes()&&t.appendChild(c)},fe=(e,t,s,c)=>{const r=W(t);c!==s&&(c&&e.removeEventListener(r,c),s&&e.addEventListener(r,s))},$e=(e,t,s)=>{const c={...t},r=s==null?void 0:s.style;r&&(N(e).forEach(([n,u])=>{r[n]=u,delete c[n]}),N(c).forEach(([n])=>r[n]=""))},M=e=>{const t=k(e.type);return e.isRoot&&t?e.wrapElement:t?M(y(e)):e.el},A=(e,t)=>Ge(e,ae[Ee(e)](e,t),t),Ge=(e,t,s)=>{const c=Ke(e,t,s),r=[c,t,s],n=Xe(...r),u=n==="N";return u||(c.children=ge(...r)),c.needRerender=n,Je(c,s,n),!u&&s&&(s.isLegacy=!0,delete s.children),c},Je=(e,t,s)=>{s!=="A"&&t&&(e.el=t.el),s&&["D","R","SR"].includes(s)&&(t&&(U(t),F(t)),e.oldChildren=t==null?void 0:t.children),e.oldProps=t==null?void 0:t.props},Xe=(e,t,s)=>{const c=s&&s.type,r=H(e),n=e.isRoot,u=s&&y(s),l=!n&&(u==null?void 0:u.type),i=o(e),C=l==="loop"&&E(i),v=e.type==="text"&&t&&e.text===(s==null?void 0:s.text),j=e===s;let h;return r?h="D":v||j?h="N":c?t?h=C?"SU":"U":h=C?"SR":"R":h="A",e.type==="loop"&&h==="U"&&s&&Ye(e,s)&&(h="CNSU"),h},Ye=(e,t)=>{const s=[...(t==null?void 0:t.children)||[]],c=[...(e==null?void 0:e.children)||[]].filter(u=>s.find(l=>o(u)===o(l))),r=s.filter(u=>c.find(l=>o(u)===o(l)));let n=r.length===c.length;return n&&(n=r.every((u,l)=>o(u)===o(c[l]))),n},Ze=(e,t)=>{e&&t!==e&&(g(e).forEach(s=>delete e[s]),N(t||{}).forEach(([s,c])=>e[s]=c))},He=(e,t)=>{e&&t!==e&&(e.splice(0,e.length),t&&t.forEach(s=>e.push(s)))},Ve=(e,t)=>{const{compProps:s,compChild:c}=e,{props:r,children:n}=t;return s&&Ze(s,r),c&&He(c,n),e.reRender&&e.reRender()},Ke=(e,t,s)=>b(e)?t&&s?Ve(s,e):e.resolve():e,ge=(e,t,s)=>t&&s?we(e,s):me(e),me=e=>(e.children||[]).map(t=>x(A(t),{getParent:()=>e})),we=(e,t)=>e.type==="loop"&&E(o((e.children||[])[0]))?We(e,t):(e.children||[]).map((s,c)=>x(A(s,(t.children||[])[c]),{getParent:()=>e})),We=(e,t)=>{const[s,c]=De(e,t);return c.forEach(r=>{U(r),F(r),I(r)}),s},De=(e,t)=>{const s=[...e.children||[]],c=[...t.children||[]];return[s.map(n=>{const u=et(n,c),l=A(n,u);return u&&c.splice(c.indexOf(u),1),l.getParent=()=>e,l}),c]},et=(e,t)=>t.find(s=>o(s)===o(e)),J=new Map;let X=!1;const tt=(e,t)=>{f.get(e)&&(f.get(e).up=()=>{J.set(e,t),X||(X=!0,queueMicrotask(ct))})},st=e=>()=>{var c;const t=(c=f.get(e))==null?void 0:c.up;let s=!1;return t&&(t(),s=!0),s},ct=()=>{J.forEach(e=>{e()}),J.clear(),X=!1},nt=(e,t=()=>[])=>{f.get(S()).upR.push(()=>w(e,t)),w(e,t)},rt=()=>{var t;const e=(t=f.get(S()))==null?void 0:t.upR;e!=null&&e.length&&e.forEach(s=>s())},O=(e,...t)=>({type:"fragment",[R]:!0,children:t}),de=(e,t,...s)=>{const c={value:void 0},r=t||{},n=he(c,s),u=ht(e,r,n);return b(u)||(c.value=u),u},ut=(e,t)=>de("portal",{portal:t},e),lt=e=>(t,s)=>e,ft=(e,t,s,c)=>{var v;if(c.isLegacy)return;Q.value=!0;const r=oe(e,t,s),n=A(r,c),{isRoot:u,getParent:l,wrapElement:i,afterElement:C}=c;if(n.getParent=l,!u&&l){const j=((v=l())==null?void 0:v.children)||[],h=j.indexOf(c);j.splice(h,1,n)}else n.isRoot=!0,n.wrapElement=i,n.afterElement=C;Q.value=!1,ee(n)},oe=(e,t,s)=>({tagName:e.name,ctor:e,props:t,children:s,resolve:(u=t)=>{Ne(u);const i=e(t,s)(st(u),t,s);return dt(i,u,e,t,s)}}),dt=(e,t,s,c,r)=>{let n=e,u=e(c);u.reRender&&(n=i=>{const C=e(i),v=O({},C);return C.getParent=()=>v,v},u=n(c));const l=ot(n,t,s,c,r);return pe(u,t,s,c,r,l),u},ot=(e,t,s,c,r)=>{const n=()=>pt(e,t,s,c,r,n);return n},pt=(e,t,s,c,r,n)=>{Se(t),rt();const u=e(c);return pe(u,t,s,c,r,n),u},pe=(e,t,s,c,r,n)=>{x(e,{compProps:c,compChild:r,ctor:s,tagName:s.name,compKey:t,reRender:n}),tt(t,()=>ft(s,c,r,e)),K(t,"vd")&&(K(t,"vd").value=e)},ht=(e,t,s)=>{if(Z(e))return O(t,...s);if(b(e)){const c=oe(e,t,s);return Q.value?c:c.resolve()}return{type:"element",[R]:!0,tag:e,props:t,children:s}},he=(e,t)=>t.map(s=>x(it(s),{getParent:()=>e.value})),it=e=>{if(e==null||e===!1)return{type:null,[R]:!0};if(Array.isArray(e)){const t={value:void 0},s=he(t,e),c={type:"loop",[R]:!0,children:s};return t.value=c,c}else if(typeof e=="string"||typeof e=="number")return{type:"text",[R]:!0,text:e};return e},yt=e=>({value:e}),Ct=()=>Promise.resolve();d.Fragment=O,d.h=de,d.isPropType=Te,d.mount=lt,d.mountCallback=Fe,d.nextTick=Ct,d.portal=ut,d.ref=yt,d.render=je,d.updateCallback=nt,Object.defineProperty(d,Symbol.toStringTag,{value:"Module"})});
|
|
1
|
+
(function(f,p){typeof exports=="object"&&typeof module<"u"?p(exports):typeof define=="function"&&define.amd?define(["exports"],p):(f=typeof globalThis<"u"?globalThis:f||self,p(f.lithent={}))})(this,function(f){"use strict";const p=e=>typeof e=="object"&&!("resolve"in e),T=(e,t)=>p(e)&&e.type===t,ye=(e,t)=>"ctor"in e?e.ctor===(t==null?void 0:t.ctor):e===(t==null?void 0:t.ctor),Ce=(e,t)=>{var s,c;return p(e)&&(t==null?void 0:t.type)==="fragment"&&((s=t==null?void 0:t.children)==null?void 0:s.length)===((c=e==null?void 0:e.children)==null?void 0:c.length)},ve=(e,t)=>{var s,c;return p(e)&&(t==null?void 0:t.type)==="element"&&(t==null?void 0:t.tag)===e.tag&&((s=t==null?void 0:t.children)==null?void 0:s.length)===((c=e==null?void 0:e.children)==null?void 0:c.length)},Y=(e,t)=>p(e)&&(t==null?void 0:t.type)===e.type,ke=(e,t)=>{var s,c;return p(e)&&(t==null?void 0:t.type)===e.type&&(a(o((e.children||[])[0]))&&a(o(((t==null?void 0:t.children)||[])[0]))||((s=t==null?void 0:t.children)==null?void 0:s.length)===((c=e==null?void 0:e.children)==null?void 0:c.length))},o=e=>{var t,s;return((t=e==null?void 0:e.compProps)==null?void 0:t.key)??((s=e==null?void 0:e.props)==null?void 0:s.key)},k=e=>e&&["fragment","loop"].includes(e),b=e=>typeof e=="function"&&!Z(e)||typeof e=="object"&&"resolve"in e,Z=e=>typeof e=="function"&&e===O,H=e=>p(e)&&!e.type,a=e=>e!=null,V=(e,t)=>e==="style"&&typeof t=="object",Re=(e,t)=>e==="ref"&&typeof t=="object",ae=(e,t)=>{const s=Object.getOwnPropertyDescriptor(e.constructor.prototype,t);return s&&s.get&&s.set},Ee=e=>{let t="et";return b(e)?t="c":T(e,"fragment")?t="f":T(e,"element")?t="e":T(e,"loop")?t="l":T(e,"text")?t="t":H(e)&&(t="et"),t},Pe={c:ye,l:ke,t:Y,e:ve,f:Ce,et:Y},R=Symbol.for("lithentWDomSymbol"),E={value:""},P={value:{}},Q={value:!1},d=new WeakMap,Se=e=>{d.set(e,{vd:{value:null},up:()=>{},upR:[],upS:{value:0},upD:[],upCB:[],mts:[],umts:[]})},S=()=>P.value,K=(e,t)=>d.get(e)?d.get(e)[t]:null,Ne=e=>P.value=e,Te=e=>{P.value=e,Se(e)},y=e=>e.getParent&&e.getParent(),N=Object.entries,g=Object.keys,x=Object.assign,be=e=>typeof e=="object"&&!Array.isArray(e)&&!Object.getOwnPropertySymbols(e).includes(R),xe=e=>{d.get(S()).umts.push(e)},U=e=>{const{compKey:t}=e;t&&Ue(t),m(e)},m=e=>{(e.children||[]).forEach(t=>{t.compKey?U(t):m(t)})},Ue=e=>{const t=d.get(e);t&&(t.umts.forEach(s=>s()),t.umts=[],d.delete(e))};let B=[];const q=()=>{B.forEach(e=>Me(e)),B=[]},Fe=e=>{e.compKey&&B.push(e)},Le=e=>{var t;return(((t=d.get(S()))==null?void 0:t.mts)||[]).push(e)},Me=e=>{const{compKey:t}=e;if(t){const s=d.get(t),c=s==null?void 0:s.mts,r=s==null?void 0:s.upS;P.value=t,r&&(r.value=0),c&&(s.mts=[],c.forEach(n=>{const u=n();u&&xe(u)}))}},w=(e,t=()=>[])=>{const s=d.get(S()),{upD:c,upS:r}=s,n=c[r.value];if(n&&Oe(n,t())){const u=e();u&&s.upCB.push(u)}c[r.value]=t(),r.value+=1},Ae=e=>{const{compKey:t}=e;if(t){const s=d.get(t),c=s==null?void 0:s.upCB,r=s==null?void 0:s.upS;P.value=t,r&&(r.value=0),e.ctor&&c&&(s.upCB=[],c.forEach(n=>n()))}},Oe=(e,t)=>e.length?e.some((s,c)=>s!==t[c]):!0,je=e=>e==="className"?"class":e,W=e=>e.replace(/^on(.*)/,(t,s)=>s.toLowerCase()),_=()=>new DocumentFragment,D=e=>document.createElement(e),Qe=(e,t,s,c)=>{e.isRoot=!0,t??(t=document.body),e.wrapElement=t;const r=L(e,c);return s?(e.afterElement=s,t.insertBefore(r,s)):c||(t.tagName==="HTML"?t.replaceWith(r):t.appendChild(r)),q(),()=>{var u;const n=(u=d.get(e.compProps||{}))==null?void 0:u.vd.value;n&&U(n),F(n||e),Be(n||e)}},ee=e=>{const{needRerender:t}=e;t&&t!=="N"&&({A:z,D:I,R:_e,U:G,CNSU:G,SR:ce,SU:qe}[t](e),delete e.needRerender,delete e.oldChildren,delete e.oldProps)},F=e=>{e.props&&e.el&&ue(e.props,e.el),(e.children||[]).forEach(t=>{F(t)})},Be=e=>{te(e,e.wrapElement)},I=e=>{e.oldProps&&e.el&&ue(e.oldProps,e.el),te(e,M(y(e)))},te=(e,t)=>{var s,c;t&&e.el&&([1,3].includes((s=e.el)==null?void 0:s.nodeType)?t.removeChild(e.el):((c=e.el)==null?void 0:c.nodeType)===11&&se(e),delete e.el)},se=(e,t)=>{((e==null?void 0:e.oldChildren)||(e==null?void 0:e.children)||[]).forEach(s=>{var r;const c=(r=s.el)==null?void 0:r.nodeType;c&&([1,3].includes(c)?s.el.tagName==="HTML"?s.el.innerHTML="":s.el.remove():c===11&&se(s))})},ce=e=>{I(e),z(e)},qe=e=>{if(G(e),y(e).needRerender!=="CNSU"){const s=ne(e);z(e,s)}},z=(e,t)=>{t||(t=L(e));const s=y(e);if(s.type){const c=M(s),n=s.type==="loop"&&s.needRerender&&s.needRerender!=="CNSU"?$(s,y(s)):$(e,s);t&&c&&(e.tag!=="portal"&&(n?c.insertBefore(t,n):c.appendChild(t)),q())}},ne=e=>k(e.type)?((e==null?void 0:e.children)||[]).reduce((t,s)=>{const c=ne(s);return c&&t.appendChild(c),t},_()):e.el,$=(e,t)=>{const s=t.children||[],r=s.indexOf(e)+1,n=s.slice(r),u=re(n),l=t.type||"";if(u)return u;if(!t.isRoot&&k(l))return $(t,y(t));if(t.isRoot&&k(l)&&t.afterElement)return t.afterElement},re=e=>e.reduce((t,s)=>{const c=s.type,r=s.el,n=c&&k(c);return t||(n?re(s.children||[]):r&&r.nodeType!==11?r:t)},void 0),_e=e=>{const t=y(e),s=e.el;if(t.type&&s)if(s.nodeType===11)ce(e);else{const c=M(t),r=L(e);c&&e.tag!=="portal"&&c.replaceChild(r,s),q()}},ue=(e,t)=>{N(e||{}).forEach(([s,c])=>{s.match(/^on/)&&t.removeEventListener(W(s),c)})},G=e=>{var s;const t=e.el;if(e.type==="text"){Ie(e);return}if(t){const{oldProps:c,props:r}=e;le(r,t,c),delete e.oldProps,e.tag==="input"&&(t.value=String(((s=e==null?void 0:e.props)==null?void 0:s.value)||""))}(e.children||[]).forEach(c=>ee(c)),Ae(e)},Ie=e=>{const t=e.el;t&&(t.nodeValue=String(e.text))},le=(e,t,s,c)=>{const r={...s};N(e||{}).forEach(([n,u])=>{c&&n.match(/^on/)?fe(t,n,u,r[n]):(n==="key"||u===r[n]||n==="portal"&&typeof u=="object"||(n==="innerHTML"&&typeof u=="string"?t.innerHTML=u:V(n,u)?Ge(u,V(n,r.style)?r.style:{},t):Re(n,u)?u.value=t:n.match(/^on/)?fe(t,n,u,r[n]):n&&(n!=="type"&&ae(t,n)?t[n]=u:ze(je(n),t,u))),delete r[n])}),g(r).forEach(n=>t.removeAttribute(n))},ze=(e,t,s)=>{E.value&&e!=="xmlns"?t.setAttributeNS(null,e,s):t.setAttribute(e,s)},L=(e,t)=>{let s;const{type:c,tag:r,text:n,props:u,children:l=[]}=e,i=k(c);return r==="svg"&&(E.value=String(u==null?void 0:u.xmlns)),t?s=e.el:(i?s=_():c==="element"&&r?r==="portal"&&(u!=null&&u.portal)?s=u.portal:s=E.value?document.createElementNS(E.value,r):D(r):c==="text"&&a(n)?s=document.createTextNode(String(n)):s=D("e"),e.el=s),$e(l,s,t),le(u,s,null,t),Fe(e),r==="svg"&&(E.value=""),s},$e=(e,t,s)=>{const c=e.reduce((r,n)=>{if(n.type){const u=L(n,s);n.tag!=="portal"&&!s&&r.appendChild(u)}return r},_());!s&&t&&c.hasChildNodes()&&t.appendChild(c)},fe=(e,t,s,c)=>{const r=W(t);c!==s&&(c&&e.removeEventListener(r,c),s&&e.addEventListener(r,s))},Ge=(e,t,s)=>{const c={...t},r=s==null?void 0:s.style;r&&(N(e).forEach(([n,u])=>{r[n]=u,delete c[n]}),N(c).forEach(([n])=>r[n]=""))},M=e=>{const t=k(e.type);return e.isRoot&&t?e.wrapElement:t?M(y(e)):e.el},A=(e,t)=>Je(e,Pe[Ee(e)](e,t),t),Je=(e,t,s)=>{const c=ge(e,t,s),r=[c,t,s],n=Ye(...r),u=n==="N";return u||(c.children=me(...r)),c.needRerender=n,Xe(c,s,n),!u&&s&&(s.isLegacy=!0,delete s.children),c},Xe=(e,t,s)=>{s!=="A"&&t&&(e.el=t.el),s&&["D","R","SR"].includes(s)&&(t&&(U(t),F(t)),e.oldChildren=t==null?void 0:t.children),e.oldProps=t==null?void 0:t.props},Ye=(e,t,s)=>{const c=s&&s.type,r=H(e),n=e.isRoot,u=s&&y(s),l=!n&&(u==null?void 0:u.type),i=o(e),C=l==="loop"&&a(i),v=e.type==="text"&&t&&e.text===(s==null?void 0:s.text),j=e===s;let h;return r?h="D":v||j?h="N":c?t?h=C?"SU":"U":h=C?"SR":"R":h="A",e.type==="loop"&&h==="U"&&s&&Ze(e,s)&&(h="CNSU"),h},Ze=(e,t)=>{const s=[...(t==null?void 0:t.children)||[]],c=[...(e==null?void 0:e.children)||[]].filter(u=>s.find(l=>o(u)===o(l))),r=s.filter(u=>c.find(l=>o(u)===o(l)));let n=r.length===c.length;return n&&(n=r.every((u,l)=>o(u)===o(c[l]))),n},He=(e,t)=>{e&&t!==e&&(g(e).forEach(s=>delete e[s]),N(t||{}).forEach(([s,c])=>e[s]=c))},Ve=(e,t)=>{e&&t!==e&&(e.splice(0,e.length),t&&t.forEach(s=>e.push(s)))},Ke=(e,t)=>{const{compProps:s,compChild:c}=e,{props:r,children:n}=t;return s&&He(s,r),c&&Ve(c,n),e.reRender&&e.reRender()},ge=(e,t,s)=>b(e)?t&&s?Ke(s,e):e.resolve():e,me=(e,t,s)=>t&&s?We(e,s):we(e),we=e=>(e.children||[]).map(t=>x(A(t),{getParent:()=>e})),We=(e,t)=>e.type==="loop"&&a(o((e.children||[])[0]))?De(e,t):(e.children||[]).map((s,c)=>x(A(s,(t.children||[])[c]),{getParent:()=>e})),De=(e,t)=>{const[s,c]=et(e,t);return c.forEach(r=>{U(r),F(r),I(r)}),s},et=(e,t)=>{const s=[...e.children||[]],c=[...t.children||[]];return[s.map(n=>{const u=tt(n,c),l=A(n,u);return u&&c.splice(c.indexOf(u),1),l.getParent=()=>e,l}),c]},tt=(e,t)=>t.find(s=>o(s)===o(e)),J=new Map;let X=!1;const st=(e,t)=>{d.get(e)&&(d.get(e).up=()=>{J.set(e,t),X||(X=!0,queueMicrotask(ct))})},de=e=>()=>{var c;const t=(c=d.get(e))==null?void 0:c.up;let s=!1;return t&&(t(),s=!0),s},ct=()=>{J.forEach(e=>{e()}),J.clear(),X=!1},nt=(e,t=()=>[])=>{d.get(S()).upR.push(()=>w(e,t)),w(e,t)},rt=()=>{var t;const e=(t=d.get(S()))==null?void 0:t.upR;e!=null&&e.length&&e.forEach(s=>s())},O=(e,...t)=>({type:"fragment",[R]:!0,children:t}),oe=(e,t,...s)=>{const c={value:void 0},r=t||{},n=ie(c,s),u=ht(e,r,n);return b(u)||(c.value=u),u},ut=(e,t)=>oe("portal",{portal:t},e),lt=e=>(t,s)=>e,ft=(e,t,s,c)=>{var v;if(c.isLegacy)return;Q.value=!0;const r=pe(e,t,s),n=A(r,c),{isRoot:u,getParent:l,wrapElement:i,afterElement:C}=c;if(n.getParent=l,!u&&l){const j=((v=l())==null?void 0:v.children)||[],h=j.indexOf(c);j.splice(h,1,n)}else n.isRoot=!0,n.wrapElement=i,n.afterElement=C;Q.value=!1,ee(n)},pe=(e,t,s)=>({tagName:e.name,ctor:e,props:t,children:s,resolve:(u=t)=>{Te(u);const i=e(t,s)(de(u),t,s);return dt(i,u,e,t,s)}}),dt=(e,t,s,c,r)=>{let n=e,u=e(c);u.reRender&&(n=i=>{const C=e(i),v=O({},C);return C.getParent=()=>v,v},u=n(c));const l=ot(n,t,s,c,r);return he(u,t,s,c,r,l),u},ot=(e,t,s,c,r)=>{const n=()=>pt(e,t,s,c,r,n);return n},pt=(e,t,s,c,r,n)=>{Ne(t),rt();const u=e(c);return he(u,t,s,c,r,n),u},he=(e,t,s,c,r,n)=>{x(e,{compProps:c,compChild:r,ctor:s,tagName:s.name,compKey:t,reRender:n}),st(t,()=>ft(s,c,r,e)),K(t,"vd")&&(K(t,"vd").value=e)},ht=(e,t,s)=>{if(Z(e))return O(t,...s);if(b(e)){const c=pe(e,t,s);return Q.value?c:c.resolve()}return{type:"element",[R]:!0,tag:e,props:t,children:s}},ie=(e,t)=>t.map(s=>x(it(s),{getParent:()=>e.value})),it=e=>{if(e==null||e===!1)return{type:null,[R]:!0};if(Array.isArray(e)){const t={value:void 0},s=ie(t,e),c={type:"loop",[R]:!0,children:s};return t.value=c,c}else if(typeof e=="string"||typeof e=="number")return{type:"text",[R]:!0,text:e};return e},yt=e=>({value:e}),Ct=()=>Promise.resolve();f.Fragment=O,f.componentUpdate=de,f.h=oe,f.isPropType=be,f.mount=lt,f.mountCallback=Le,f.nextTick=Ct,f.portal=ut,f.ref=yt,f.render=Qe,f.updateCallback=nt,Object.defineProperty(f,Symbol.toStringTag,{value:"Module"})});
|
|
2
2
|
//# sourceMappingURL=lithent.umd.js.map
|