lithent 0.36.0 → 0.36.1

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 CHANGED
@@ -4,21 +4,22 @@
4
4
 
5
5
  Lithent were developed to make it easy to insert Virtual DOM component
6
6
  fragments into pages already drawn with SSR, and are intended to be
7
- used lightly with other libraries.
7
+ used lightly in a variety of situations.
8
8
 
9
- * https://superlucky84.github.io/lithent
10
- * (This guide page is written in lithent.)
9
+ - https://superlucky84.github.io/lithent
10
+ - (This guide page is written in lithent.)
11
11
 
12
12
  `(9.54 KiB / gzip: 3.54 KiB)`
13
13
 
14
14
  ## 🚩 Table of Contents
15
- * [Why Use Lithent](#why-use-lithent)
16
- * [Basic Guide](#basic-guide)
17
- * [How To Install](#how-to-install)
18
- * [Width HTM](#with-htm)
19
- * [Width JSX](#with-jsx)
20
- * [Examples](#examples)
21
- * [Develop Guide](#develop-guide)
15
+
16
+ - [Why Use Lithent](#why-use-lithent)
17
+ - [Basic Guide](#basic-guide)
18
+ - [How To Install](#how-to-install)
19
+ - [With HTM](#with-htm)
20
+ - [With JSX](#with-jsx)
21
+ - [Examples](#examples)
22
+ - [Develop Guide](#develop-guide)
22
23
 
23
24
  ## Why use Lithent?
24
25
 
@@ -30,31 +31,31 @@ However, in the real world of development, there are times when you need to buil
30
31
 
31
32
  Lithent has implemented the bare minimum functionality needed to create and update virtual DOM in general (we only need to know 'render', 'mounter', 'updater', 'renewer', 'mountCallback', and 'updateCallback').
32
33
 
33
- We provide code to extend the basic functionality in the form of 'helpers', but using them is only optional and we want to encourage talented users to extend and develop custom helpers for their own projects.
34
-
34
+ We provide code in the form of 'helpers' that extend the basic functionality, but using the helpers is only optional and talented users can extend and develop custom helpers for their own projects.
35
35
 
36
36
  ### Approach with the developer-friendly concept of closures between "component mounter" and "renderer"
37
37
 
38
38
  Many existing UI libraries have their advantages, but they also create rules that are too strong and rigid for fear of users making mistakes.
39
39
 
40
- JavaScript users are used to using closures and love to develop with them.
41
-
42
- "Lithent" provide a familiar approach to real-world JavaScript development because they leverage the properties of higher-order functions and closures in the component mounter to define the properties of the component and get the mounted information from the renderer.
40
+ JavaScript users are used to using closures and love to develop with them.
43
41
 
42
+ "Lithent" provides a familiar approach to my JavaScript development, as it leverages the properties of higher-order functions and closures to define and recycle the state of a component.
44
43
 
45
44
  ## Basic Guide
46
45
 
47
- * https://superlucky84.github.io/lithent/
46
+ - https://superlucky84.github.io/lithent/
48
47
 
49
48
  ## How To Install
50
49
 
51
50
  ```bash
52
- pnpm add lithent
51
+ pnpm add lithent
53
52
  ```
54
53
 
54
+ It's easier to use lithent with JSX or HTM.
55
+
55
56
  #### With HTM
56
57
 
57
- * [Htm Github](https://github.com/developit/htm)
58
+ - [Htm Github](https://github.com/developit/htm)
58
59
 
59
60
  ```bash
60
61
  pnpm add -D htm
@@ -68,11 +69,11 @@ const html = htm.bind(h);
68
69
 
69
70
  #### With JSX
70
71
 
71
- * [Setting Guide](https://superlucky84.github.io/lithent/#install)
72
+ - [Setting Guide](https://superlucky84.github.io/lithent/#install)
72
73
 
73
74
  ## Examples
74
75
 
75
- * [More Examples](https://superlucky84.github.io/lithent/#examples)
76
+ - [More Examples](https://superlucky84.github.io/lithent/#examples)
76
77
 
77
78
  ```js
78
79
  import { h, render, mount, Fragment } from 'lithent';
@@ -112,6 +113,7 @@ npm install -g pnpm
112
113
  ```
113
114
 
114
115
  ### project install
116
+
115
117
  ```bash
116
118
  git clone https://github.com/superlucky84/lithent.git
117
119
 
@@ -121,11 +123,13 @@ pnpm install
121
123
  ```
122
124
 
123
125
  ### project build
126
+
124
127
  ```bash
125
128
  pnpm build
126
129
  ```
127
130
 
128
131
  ### Running the development environment
132
+
129
133
  ```bash
130
134
  pnpm dev // or pnpm dev:core
131
135
  ```
package/dist/lithent.mjs CHANGED
@@ -79,6 +79,7 @@ const reRender = (vDom, infoVdom) => {
79
79
  }
80
80
  return newVDom;
81
81
  };
82
+ const getEventName = (eventKey) => eventKey.replace(/^on(.*)/, (_match, p1) => p1.toLowerCase());
82
83
  const updateProps$1 = (props, infoProps) => {
83
84
  if (props && infoProps !== props) {
84
85
  Object.keys(props).forEach((key) => delete props[key]);
@@ -421,22 +422,16 @@ const typeReplace = (newWDom) => {
421
422
  runMountedQueueFromWDom(newWDom);
422
423
  };
423
424
  const removeEvent = (oldProps, element) => {
424
- if (element) {
425
- Object.entries(oldProps || {}).forEach(
426
- ([dataKey, dataValue]) => {
427
- if (dataKey.match(/^on/)) {
428
- const eventName = dataKey.replace(
429
- /^on(.*)/,
430
- (_match, p1) => p1.toLowerCase()
431
- );
432
- element.removeEventListener(
433
- eventName,
434
- dataValue
435
- );
436
- }
425
+ Object.entries(oldProps || {}).forEach(
426
+ ([dataKey, dataValue]) => {
427
+ if (dataKey.match(/^on/)) {
428
+ element.removeEventListener(
429
+ getEventName(dataKey),
430
+ dataValue
431
+ );
437
432
  }
438
- );
439
- }
433
+ }
434
+ );
440
435
  };
441
436
  const typeUpdate = (newWDom) => {
442
437
  var _a;
@@ -471,9 +466,11 @@ const updateProps = (props, element, oldProps) => {
471
466
  else if (dataKey === "innerHTML" && element && typeof dataValue === "string") {
472
467
  element.innerHTML = dataValue;
473
468
  } else if (checkStyleData(dataKey, dataValue)) {
474
- const style = dataValue;
475
- const oldStyle = checkStyleData(dataKey, originalProps.style) || {};
476
- updateStyle(style, oldStyle, element);
469
+ updateStyle(
470
+ dataValue,
471
+ checkStyleData(dataKey, originalProps.style) ? originalProps.style : {},
472
+ element
473
+ );
477
474
  } else if (checkRefData(dataKey, dataValue)) {
478
475
  dataValue.value = element;
479
476
  } else if (dataKey.match(/^on/)) {
@@ -535,10 +532,7 @@ const wDomChildrenToDom = (children, parentElement, init) => {
535
532
  }
536
533
  };
537
534
  const updateEvent = (element, eventKey, newEventHandler, oldEventHandler) => {
538
- const eventName = eventKey.replace(
539
- /^on(.*)/,
540
- (_match, p1) => p1.toLowerCase()
541
- );
535
+ const eventName = getEventName(eventKey);
542
536
  if (oldEventHandler !== newEventHandler) {
543
537
  if (oldEventHandler) {
544
538
  element.removeEventListener(eventName, oldEventHandler);
@@ -569,8 +563,7 @@ const findRealParentElement = (vDom) => {
569
563
  if (!isVirtualType) {
570
564
  return vDom.el;
571
565
  }
572
- const parentVDom = getParent(vDom);
573
- return findRealParentElement(parentVDom);
566
+ return findRealParentElement(getParent(vDom));
574
567
  };
575
568
  const makeNewWDomTree = (newWDom, originalWDom) => {
576
569
  const type = getWDomType(newWDom);
@@ -659,7 +652,7 @@ const remakeChildrenForLoopUpdate = (newWDom, originalWDom) => {
659
652
  );
660
653
  unUsedChildren.map((unusedItem) => {
661
654
  const el = unusedItem.el;
662
- if (el && el.parentNode) {
655
+ if (el == null ? void 0 : el.parentNode) {
663
656
  el.parentNode.removeChild(el);
664
657
  }
665
658
  });
@@ -1 +1 @@
1
- {"version":3,"file":"lithent.mjs","sources":["../src/utils/predicator.ts","../src/utils/index.ts","../src/utils/universalRef.ts","../src/hook/unmount.ts","../src/hook/mountCallback.ts","../src/hook/useUpdate.ts","../src/render.ts","../src/diff.ts","../src/hook/updateCallback.ts","../src/wDom.ts","../src/hook/ref.ts"],"sourcesContent":["import { Fragment } from '@/wDom';\nimport {\n WDom,\n TagFunction,\n TagFunctionResolver,\n FragmentFunction,\n WDomType,\n} from '@/types';\n\ntype WDomParam =\n | string\n | WDom\n | TagFunction\n | TagFunctionResolver\n | FragmentFunction;\n\n/**\n * Predicator\n */\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 checkPlainWDomType = (wDom: WDomParam): wDom is WDom =>\n typeof wDom === 'object' && !('resolve' in wDom);\n\nexport const checkPlainType = (wDom: WDomParam, typeName: string) =>\n checkPlainWDomType(wDom) && wDom.type === typeName;\n\nexport const checkEmptyElement = (wDom: WDomParam) =>\n checkPlainWDomType(wDom) && !wDom.type;\n\nexport const checkSameCustomComponent = (\n newWDom: WDom | TagFunction | TagFunctionResolver,\n originalWDom?: WDom\n) => newWDom.constructor === originalWDom?.constructor;\n\nexport const 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\nexport const 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\nexport const checkNormalTypeElement = (\n newWDom: WDom | TagFunction | TagFunctionResolver,\n originalWDom?: WDom\n) => {\n return (\n checkPlainWDomType(newWDom) &&\n originalWDom?.type === newWDom.type &&\n (originalWDom?.children?.length === newWDom?.children?.length ||\n newWDom.type === 'loop')\n );\n};\n\nexport const checkExisty = (value: unknown) =>\n value !== null && value !== undefined;\n\nexport const checkFunction = (target: unknown): target is Function =>\n typeof target === 'function';\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 { value: HTMLElement | DocumentFragment | Text | undefined } =>\n dataKey === 'ref' && typeof dataValue === 'object';\n\nexport const checkOptionElement = (element: any): element is HTMLElement => {\n return element.nodeType === 1 && element.tagName === 'OPTION';\n};\n\nexport const checkTextareaElement = (element: any): element is HTMLElement => {\n return element.nodeType === 1 && element.tagName === 'TEXTAREA';\n};\n\nexport const checkCheckboxElement = (element: any): element is HTMLElement => {\n return element.nodeType === 1 && element.type === 'checkbox';\n};\n\nexport const checkRadioElement = (element: any): element is HTMLElement => {\n return element.nodeType === 1 && element.type === 'radio';\n};\n\nexport const checkNormalAttribute = (\n dataValue: unknown\n): dataValue is number | string =>\n typeof dataValue === 'number' || typeof dataValue === 'string';\n\nexport const getWDomType = (\n wDom: WDom | TagFunction | TagFunctionResolver\n): WDomType | undefined => {\n let result: WDomType | undefined;\n\n if (checkCustemComponentFunction(wDom)) {\n result = 'c';\n } else if (checkPlainType(wDom, 'fragment')) {\n result = 'f';\n } else if (checkPlainType(wDom, 'element')) {\n result = 'e';\n } else if (checkPlainType(wDom, 'loop')) {\n result = 'l';\n } else if (checkPlainType(wDom, 'text')) {\n result = 't';\n } else if (checkEmptyElement(wDom)) {\n result = 'et';\n }\n\n return result;\n};\n\nexport const checkSameWDomWithOriginal = {\n c: checkSameCustomComponent,\n l: checkNormalTypeElement,\n t: checkNormalTypeElement,\n e: checkSameTagElement,\n f: checkSameFragment,\n et: checkNormalTypeElement,\n};\n","import { WDom, TagFunctionResolver, Props } from '@/types';\n\nexport const getParent = (vDom: WDom) => {\n const parentVDom = vDom.getParent && vDom.getParent();\n\n if (!parentVDom) {\n throw Error('Not found parent vDom');\n }\n\n return parentVDom;\n};\n\nexport const reRender = (vDom: WDom, infoVdom: TagFunctionResolver) => {\n const { componentProps: props, componentChildren: 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 if (!newVDom) {\n throw Error('Unable reRender');\n }\n\n return newVDom;\n};\n\nconst updateProps = (props: Props, infoProps: Props) => {\n if (props && infoProps !== props) {\n Object.keys(props).forEach(key => delete props[key]);\n\n Object.entries(infoProps || {}).forEach(\n ([key, value]) => (props[key] = value)\n );\n }\n};\n\nconst updateChildren = (children: WDom[], infoChidren: WDom[]) => {\n if (children && infoChidren !== children) {\n children.splice(0, children.length);\n\n if (infoChidren) {\n infoChidren.forEach(childrenItem => children.push(childrenItem));\n }\n }\n};\n","import { ComponentRef, ComponentSubKey, Props, WDom } from '@/types';\n\ntype RedrawQueueList = {\n componentKey: Props;\n exec: () => void;\n}[];\n\n/**\n * Common\n */\nexport const componentKeyRef: { value: Props } = { value: {} };\nexport const needDiffRef: { value: boolean } = { value: false };\nexport const componentRef: ComponentRef = new WeakMap();\nexport const redrawQueue: {\n value: { componentKey: Props; exec: () => void }[];\n} = { value: [] };\nexport const redrawQueueTimeout: { value: null | number } = { value: null };\nexport const componentRender = (componentKey: Props) => () => {\n const up = componentRef.get(componentKey)?.up;\n let result = false;\n if (up) {\n up();\n result = true;\n }\n\n return result;\n};\n\nexport const setComponetRef = (componentKey: Props) => {\n componentRef.set(componentKey, {\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 = () => componentKeyRef.value;\n\nexport const getComponentSubInfo = (\n componentKey: Props,\n subKey: ComponentSubKey\n) => componentRef.get(componentKey)![subKey];\n\nexport const setRedrawAction = (componentKey: Props, exec: () => void) => {\n componentRef.get(componentKey)!.up = () => {\n redrawQueue.value.push({\n componentKey,\n exec,\n });\n if (!redrawQueueTimeout.value) {\n redrawQueueTimeout.value = setTimeout(execRedrawQueue);\n }\n };\n};\n\nexport const initUpdateHookState = (componentKey: Props) =>\n (componentKeyRef.value = componentKey);\n\nexport const initMountHookState = (componentKey: Props) => {\n componentKeyRef.value = componentKey;\n setComponetRef(componentKey);\n};\n\nconst recursiveGetChildKeys = (wDom: WDom, result: Props[]) => {\n (wDom.children || []).forEach(item => {\n const childComKey = item.componentKey;\n if (childComKey) {\n result.push(childComKey);\n }\n\n recursiveGetChildKeys(item, result);\n });\n};\n\nconst execRedrawQueue = () => {\n let childItemList: Props[] = [];\n\n redrawQueue.value.forEach(item => {\n const childVd = componentRef.get(item.componentKey)?.vd?.value;\n if (childVd) {\n recursiveGetChildKeys(childVd, childItemList);\n }\n });\n\n const addedKey: Props[] = [];\n const result = redrawQueue.value.reduce((acc, item) => {\n const { componentKey } = item;\n\n if (\n childItemList.includes(componentKey) ||\n addedKey.includes(componentKey)\n ) {\n return acc;\n }\n\n addedKey.push(componentKey);\n acc.push(item);\n\n return acc;\n }, [] as RedrawQueueList);\n\n while (result.length) {\n const action = result.shift();\n if (action) {\n action.exec();\n }\n }\n};\n","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 { componentKey } = newWDom;\n\n if (componentKey) {\n removeItem(componentKey);\n }\n recursiveRunUnmount(newWDom);\n};\n\nconst recursiveRunUnmount = (wDom: WDom) => {\n (wDom.children || []).forEach(item => {\n const childComKey = item.componentKey;\n if (childComKey) {\n runUnmountQueueFromWDom(item);\n } else {\n recursiveRunUnmount(item);\n }\n });\n};\n\nconst removeItem = (componentKey: Props) => {\n const subInfo = componentRef.get(componentKey);\n if (subInfo) {\n subInfo!.umts.forEach(effect => effect());\n subInfo!.umts = [];\n componentRef.delete(componentKey);\n }\n};\n","import { WDom } from '@/types';\nimport {\n componentKeyRef,\n componentRef,\n getComponentKey,\n} from '@/utils/universalRef';\n\nimport { unmount } from '@/hook/unmount';\n\nexport const mountCallback = (effectAction: () => void) => {\n const mts = componentRef.get(getComponentKey())!.mts;\n\n mts.push(effectAction);\n};\n\nexport const runMountedQueueFromWDom = (newWDom: WDom) => {\n const { componentKey } = newWDom;\n\n if (componentKey) {\n const component = componentRef.get(componentKey);\n const queue = component?.mts;\n const sequence = component?.upS;\n\n componentKeyRef.value = componentKey;\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 componentKeyRef,\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 { componentKey } = newWDom;\n\n if (componentKey) {\n const component = componentRef.get(componentKey);\n const queue = component?.upCB;\n const sequence = component?.upS;\n\n componentKeyRef.value = componentKey;\n\n if (sequence) {\n sequence.value = 0;\n }\n\n if (newWDom.constructor && queue) {\n component.upCB = [];\n queue.forEach((effect: Function) => effect());\n }\n }\n};\n\nconst checkNeedPushQueue = (originalDefs: unknown[], newDefs: unknown[]) =>\n !originalDefs.length && !originalDefs.length\n ? true\n : originalDefs.some((def, index) => def !== newDefs[index]);\n","/**\n * Rerender시 실제 dom에 반영해줘야 하는 상태\n *\n * 1. (ADD). 가상돔 비교시 오리지날이 없으면 새로 추가되는 dom으로 판단한다.\n * 2. (REPLACE). 오리지날이 있고 같은 엘리먼트타입이 아닌 경우 해당 위치의 태그 자체를 교체해준다.\n * 3. (UPDATE). 오리지날이 있고 같은 타입이면 dom의 속성만 변경해 주며, 텍스트 노드일 경우는 텍스트를 교체해준다.\n * 4. (DELETE). 오리지날이 있고 새로운 엘리먼트 타입은 null타입일 경우 dom을 삭제한다.\n * 5. (SORTED-REPLACE). loop의 경우 REPLACE라도 키값에 의해 순서가 변경될 수 있으므로 새로운 dom을 단순히 기존 위치에 교체하지 않고 새로 삼입하여 정렬한다.\n * 6. (SORTED-UPDATE). loop의 경우 UPDATE라도 키값에 의해 순서가 변경될수 있으므로 재 삽입하여 정렬한다.\n * 7. (NONE). text타입의 경우 text가 같다면 변경이 필요 없으므로 방치한다. (Todo. 다른 타입의 경우 처리필요)\n */\n\nimport { WDom, Props } from '@/types';\nimport {\n checkStyleData,\n checkRefData,\n checkNormalAttribute,\n checkExisty,\n checkOptionElement,\n checkTextareaElement,\n checkCheckboxElement,\n checkRadioElement,\n} from '@/utils/predicator';\n\nimport { componentRef } from '@/utils/universalRef';\nimport { runUnmountQueueFromWDom } from '@/hook/unmount';\nimport { runMountedQueueFromWDom } from '@/hook/mountCallback';\nimport { runUpdatedQueueFromWDom } from '@/hook/useUpdate';\nimport { getParent } from '@/utils';\n\nexport const render = (\n wDom: WDom,\n wrapElement: HTMLElement | null,\n afterElement?: HTMLElement | null\n) => {\n if (!wrapElement) {\n throw Error('WrapELement is null');\n }\n wDom.isRoot = true;\n wDom.wrapElement = wrapElement;\n\n const Dom = wDomToDom(wDom, true);\n\n if (afterElement) {\n wDom.afterElement = afterElement;\n wrapElement.insertBefore(Dom, afterElement);\n } else {\n wrapElement.appendChild(Dom);\n }\n\n return () => {\n if (wDom.componentProps) {\n const component = componentRef.get(wDom.componentProps)?.vd.value;\n if (component) {\n runUnmountQueueFromWDom(component);\n recursiveRemoveEvent(component);\n rootDelete(component);\n }\n }\n };\n};\n\nexport const wDomUpdate = (newWDomTree: WDom) => {\n const { needRerender } = newWDomTree;\n\n if (needRerender && needRerender !== 'N') {\n const exec = {\n A: typeAdd,\n D: typeDelete,\n R: typeReplace,\n U: typeUpdate,\n SR: typeSortedReplace,\n SU: typeSortedUpdate,\n }[needRerender];\n exec(newWDomTree);\n }\n};\n\nexport const recursiveRemoveEvent = (originalWDom: WDom) => {\n if (originalWDom.props && originalWDom.el) {\n removeEvent(originalWDom.props, originalWDom.el);\n }\n\n (originalWDom.children || []).forEach((childItem: WDom) => {\n recursiveRemoveEvent(childItem);\n });\n};\n\nconst rootDelete = (newWDom: WDom) => {\n const parent = newWDom.wrapElement as HTMLElement;\n\n deleteRealDom(newWDom, parent);\n};\n\nconst typeDelete = (newWDom: WDom) => {\n const parentWDom = getParent(newWDom);\n const parent = findRealParentElement(parentWDom) as HTMLElement;\n\n if (newWDom.oldProps && newWDom.el) {\n removeEvent(newWDom.oldProps, newWDom.el);\n }\n\n deleteRealDom(newWDom, parent);\n};\n\nconst deleteRealDom = (newWDom: WDom, parent: HTMLElement) => {\n if (parent && newWDom.el) {\n if (newWDom.el?.nodeType === 1) {\n parent.removeChild(newWDom.el);\n } else if (newWDom.el?.nodeType === 11) {\n findChildWithRemoveElement(newWDom, parent as HTMLElement);\n }\n delete newWDom.el;\n }\n};\n\nconst findChildWithRemoveElement = (newWDom: WDom, parent: HTMLElement) => {\n (newWDom?.oldChildren || newWDom?.children || []).forEach(item => {\n if (item.el?.nodeType === 1) {\n parent.removeChild(item?.el);\n } else if (item.el?.nodeType === 11) {\n findChildWithRemoveElement(item, parent);\n }\n });\n};\n\nconst typeSortedReplace = (newWDom: WDom) => {\n typeDelete(newWDom);\n typeAdd(newWDom);\n};\n\nconst typeSortedUpdate = (newWDom: WDom) => {\n typeDelete(newWDom);\n typeAdd(newWDom, newWDom.el);\n};\n\nconst typeAdd = (\n newWDom: WDom,\n newElement?: HTMLElement | DocumentFragment | Text\n) => {\n if (!newElement) {\n newElement = wDomToDom(newWDom, true);\n }\n\n const parentWDom = getParent(newWDom);\n if (parentWDom.type) {\n const parentEl = findRealParentElement(parentWDom);\n const isLoop = parentWDom.type === 'loop';\n\n let nextEl;\n if (isLoop) {\n nextEl = startFindNextBrotherElement(parentWDom, getParent(parentWDom));\n } else {\n nextEl = startFindNextBrotherElement(newWDom, parentWDom);\n }\n\n if (newElement && parentEl) {\n if (nextEl) {\n parentEl.insertBefore(newElement, nextEl);\n } else {\n parentEl.appendChild(newElement);\n }\n }\n }\n\n runMountedQueueFromWDom(newWDom);\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 && ['fragment', 'loop'].includes(parentType)) {\n return startFindNextBrotherElement(parentWDom, getParent(parentWDom));\n } else if (parentWDom.isRoot && parentWDom.afterElement) {\n return parentWDom.afterElement;\n }\n\n return undefined;\n};\n\nconst findChildFragmentNextElement = (\n candidiateBrothers: WDom[]\n): HTMLElement | DocumentFragment | Text | undefined =>\n candidiateBrothers.reduce(\n (\n targetEl: HTMLElement | DocumentFragment | Text | undefined,\n bItem: WDom\n ) => {\n const type = bItem.type;\n const el = bItem.el;\n const isFragment = type && ['fragment', 'loop'].includes(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, true);\n\n if (parentElement) {\n parentElement.replaceChild(newElement, orignalElement);\n }\n }\n }\n\n runMountedQueueFromWDom(newWDom);\n};\n\nconst removeEvent = (\n oldProps: Props,\n element?: HTMLElement | DocumentFragment | Text\n) => {\n if (element) {\n Object.entries(oldProps || {}).forEach(\n ([dataKey, dataValue]: [string, unknown]) => {\n if (dataKey.match(/^on/)) {\n const eventName = dataKey.replace(/^on(.*)/, (_match, p1) =>\n p1.toLowerCase()\n );\n element.removeEventListener(\n eventName,\n dataValue as (e: Event) => void\n );\n }\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 | DocumentFragment | Text,\n oldProps?: Props\n) => {\n const originalProps = { ...oldProps };\n\n Object.entries(props || {}).forEach(\n ([dataKey, dataValue]: [string, unknown]) => {\n if (dataKey === 'key') {\n // Do nothing\n } else if (\n dataKey === 'innerHTML' &&\n element &&\n typeof dataValue === 'string'\n ) {\n (element as HTMLElement).innerHTML = dataValue;\n } else if (checkStyleData(dataKey, dataValue)) {\n const style = dataValue;\n const oldStyle = checkStyleData(dataKey, originalProps.style) || {};\n\n updateStyle(style, oldStyle, element);\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 (checkRadioElement(element) && dataKey === 'checked') {\n (element as HTMLInputElement).checked = !!dataValue;\n } else if (checkCheckboxElement(element) && dataKey === 'checked') {\n (element as HTMLInputElement).checked = !!dataValue;\n } else if (checkTextareaElement(element) && dataKey === 'value') {\n (element as HTMLInputElement).value = dataValue as string;\n } else if (checkOptionElement(element) && dataKey === 'selected') {\n (element as HTMLOptionElement).selected = !!dataValue;\n } else if (checkNormalAttribute(dataValue)) {\n (element as HTMLElement).setAttribute(dataKey, String(dataValue));\n }\n\n delete originalProps[dataKey];\n }\n );\n\n Object.keys(originalProps).forEach(dataKey =>\n (element as HTMLElement).removeAttribute(dataKey)\n );\n};\n\nconst wDomToDom = (wDom: WDom, init: boolean) => {\n let element;\n const { type, tag, text, props, children = [] } = wDom;\n const isVirtualType = type === 'fragment' || type === 'loop';\n\n if (isVirtualType) {\n element = new DocumentFragment();\n } else if (type === 'element' && tag) {\n element = document.createElement(tag);\n } else if (type === 'text' && checkExisty(text)) {\n element = document.createTextNode(String(text));\n }\n\n wDomChildrenToDom(children, element, init);\n updateProps(props, element);\n\n wDom.el = element;\n\n runMountedQueueFromWDom(wDom);\n\n return element || document.createElement('div');\n};\n\nconst wDomChildrenToDom = (\n children: WDom[],\n parentElement?: HTMLElement | DocumentFragment | Text,\n init?: boolean\n) => {\n if (init) {\n const elementChildren = children.reduce(\n (acc: DocumentFragment, childItem: WDom) => {\n if (childItem.type) {\n acc.appendChild(wDomToDom(childItem, init));\n }\n\n return acc;\n },\n new DocumentFragment()\n );\n\n if (parentElement && elementChildren.hasChildNodes()) {\n parentElement.appendChild(elementChildren);\n }\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 = eventKey.replace(/^on(.*)/, (_match, p1) =>\n p1.toLowerCase()\n );\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 | DocumentFragment | Text\n) => {\n const originalStyle = { ...oldStyle };\n const elementStyle = (element as HTMLElement)?.style;\n\n if (elementStyle) {\n Object.entries(style).forEach(([styleKey, dataValue]) => {\n (elementStyle as any)[styleKey] = dataValue;\n delete originalStyle[styleKey];\n });\n\n Object.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 = vDom.type === 'fragment' || vDom.type === 'loop';\n if (vDom.isRoot && isVirtualType) {\n return vDom.wrapElement;\n }\n\n if (!isVirtualType) {\n return vDom.el as HTMLElement;\n }\n\n const parentVDom = getParent(vDom);\n\n return findRealParentElement(parentVDom);\n};\n","import { WDom, TagFunctionResolver, RenderType } from '@/types';\nimport { checkCustemComponentFunction } from '@/utils/predicator';\nimport { getParent, reRender } from '@/utils';\nimport { recursiveRemoveEvent } from '@/render';\nimport {\n checkEmptyElement,\n checkSameWDomWithOriginal,\n getWDomType,\n checkExisty,\n} from '@/utils/predicator';\n\nimport { runUnmountQueueFromWDom } from '@/hook/unmount';\n\nexport const makeNewWDomTree = (\n newWDom: WDom | TagFunctionResolver,\n originalWDom?: WDom\n) => {\n const type = getWDomType(newWDom);\n\n if (!type) {\n throw new Error('Unknown type wdom');\n }\n\n const isSameType = checkSameWDomWithOriginal[type](newWDom, originalWDom);\n\n const result = remakeNewWDom(newWDom, isSameType, originalWDom);\n\n return result;\n};\n\nconst remakeNewWDom = (\n newWDom: WDom | TagFunctionResolver,\n isSameType: boolean,\n originalWDom?: WDom\n) => {\n const remakeWDom = generalize(newWDom, isSameType, originalWDom);\n\n remakeWDom.children = remakeChildrenForDiff(\n remakeWDom,\n isSameType,\n originalWDom\n );\n\n const needRerender = addReRenderTypeProperty(\n remakeWDom,\n isSameType,\n originalWDom\n );\n\n remakeWDom.needRerender = needRerender;\n\n if (needRerender !== 'A' && originalWDom) {\n remakeWDom.el = originalWDom.el;\n }\n\n if (\n needRerender &&\n ['D', 'R', 'SR'].includes(needRerender) &&\n originalWDom?.componentKey\n ) {\n runUnmountQueueFromWDom(originalWDom);\n recursiveRemoveEvent(originalWDom);\n remakeWDom.oldChildren = originalWDom.children;\n }\n\n remakeWDom.oldProps = originalWDom?.props;\n\n return remakeWDom;\n};\n\nconst addReRenderTypeProperty = (\n newWDom: WDom,\n isSameType: boolean,\n originalWDom?: WDom\n): RenderType | undefined => {\n const existOriginalWDom = originalWDom && originalWDom.type;\n const isEmptyElement = checkEmptyElement(newWDom);\n const isRoot = !newWDom.getParent;\n const parentType = !isRoot && getParent(newWDom).type;\n const key = getKey(newWDom);\n const isKeyCheckedWDom = parentType === 'loop' && checkExisty(key);\n const isSameText =\n newWDom.type === 'text' &&\n isSameType &&\n newWDom.text === originalWDom?.text;\n\n let result: RenderType | undefined;\n if (isEmptyElement) {\n result = 'D';\n } else if (isSameText) {\n result = 'N';\n } else if (!existOriginalWDom) {\n result = 'A';\n } else if (isSameType) {\n result = isKeyCheckedWDom ? 'SU' : 'U';\n } else {\n result = isKeyCheckedWDom ? 'SR' : 'R';\n }\n\n return result;\n};\n\nconst generalize = (\n newWDom: WDom | TagFunctionResolver,\n isSameType: boolean,\n originalWDom?: WDom\n): WDom => {\n if (checkCustemComponentFunction(newWDom)) {\n return isSameType && originalWDom\n ? reRender(originalWDom, newWDom)\n : newWDom.resolve();\n }\n\n return newWDom;\n};\n\nconst remakeChildrenForDiff = (\n newWDom: WDom,\n isSameType: boolean,\n originalWDom?: WDom\n) =>\n isSameType && originalWDom\n ? remakeChildrenForUpdate(newWDom, originalWDom)\n : remakeChildrenForAdd(newWDom);\n\nconst remakeChildrenForAdd = (newWDom: WDom) =>\n (newWDom.children || []).map((item: WDom) => {\n const childItem = makeNewWDomTree(item);\n\n childItem.getParent = () => newWDom;\n\n return childItem;\n });\n\nconst remakeChildrenForUpdate = (newWDom: WDom, originalWDom: WDom) => {\n if (\n newWDom.type === 'loop' &&\n checkExisty(getKey((newWDom.children || [])[0]))\n ) {\n return remakeChildrenForLoopUpdate(newWDom, originalWDom);\n }\n\n return (newWDom.children || []).map((item: WDom, index: number) => {\n const childItem = makeNewWDomTree(\n item,\n (originalWDom.children || [])[index]\n );\n\n childItem.getParent = () => newWDom;\n\n return childItem;\n });\n};\n\nconst remakeChildrenForLoopUpdate = (newWDom: WDom, originalWDom: WDom) => {\n const { remakedChildren, unUsedChildren } = diffLoopChildren(\n newWDom,\n originalWDom\n );\n\n unUsedChildren.map(unusedItem => {\n const el = unusedItem.el;\n\n if (el && el.parentNode) {\n el.parentNode.removeChild(el);\n }\n });\n\n return remakedChildren;\n};\n\nconst diffLoopChildren = (newWDom: WDom, originalWDom: WDom) => {\n const newChildren = [...(newWDom.children || [])];\n const originalChildren = [...(originalWDom.children || [])];\n\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 {\n remakedChildren,\n unUsedChildren: originalChildren,\n };\n};\n\nconst findSameKeyOriginalItem = (item: WDom, originalChildren: WDom[]) => {\n const key = getKey(item);\n\n return originalChildren.find(\n orignalChildItem => getKey(orignalChildItem) === key\n );\n};\n\nconst getKey = (target: WDom) =>\n target?.componentProps?.key ?? target?.props?.key;\n","import {\n componentRef,\n redrawQueue,\n redrawQueueTimeout,\n getComponentKey,\n} 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 redrawQueue.value = [];\n redrawQueueTimeout.value = null;\n};\n","import {\n WDom,\n TagFunction,\n FragmentFunction,\n Props,\n MiddleStateWDomChildren,\n MiddleStateWDom,\n NodePointer,\n Component,\n} from '@/types';\n\nimport { makeNewWDomTree } from '@/diff';\nimport { wDomUpdate } from '@/render';\nimport {\n initUpdateHookState,\n initMountHookState,\n setRedrawAction,\n needDiffRef,\n componentRender,\n getComponentSubInfo,\n} from '@/utils/universalRef';\nimport { runUpdateCallback } from '@/hook/updateCallback';\nimport {\n checkFragmentFunction,\n checkCustemComponentFunction,\n} from '@/utils/predicator';\n\nexport type Children = WDom[];\n\nexport const Fragment = (_props: Props, ...children: WDom[]) => ({\n type: 'fragment',\n children,\n});\n\nexport const h = (\n tag: TagFunction | FragmentFunction | string,\n props: Props,\n ...children: MiddleStateWDomChildren\n) => {\n const nodeParentPointer: NodePointer = { value: undefined };\n const newProps = props || {};\n const newChildren = remakeChildren(nodeParentPointer, children);\n const node = makeNode(tag, newProps, newChildren);\n\n if (!checkCustemComponentFunction(node)) {\n nodeParentPointer.value = node;\n }\n\n return node;\n};\n\nexport const mount =\n <T>(component: Component<T>) =>\n (_props: T, _children: WDom[]) =>\n component;\n\nconst reRenderCustomComponent = (\n tag: TagFunction,\n props: Props,\n children: WDom[],\n originalWDom: WDom\n) => {\n needDiffRef.value = true;\n\n const newWDom = makeWDomResolver(tag, props, children);\n const newWDomTree = makeNewWDomTree(newWDom, originalWDom);\n const { isRoot, getParent, wrapElement, afterElement } = originalWDom;\n\n newWDomTree.getParent = getParent;\n\n if (!isRoot && getParent) {\n const brothers = getParent()?.children || [];\n const index = brothers.indexOf(originalWDom);\n\n brothers.splice(index, 1, newWDomTree);\n } else {\n newWDomTree.isRoot = true;\n newWDomTree.wrapElement = wrapElement;\n newWDomTree.afterElement = afterElement;\n }\n\n needDiffRef.value = false;\n wDomUpdate(newWDomTree);\n};\n\nconst makeWDomResolver = (tag: TagFunction, props: Props, children: WDom[]) => {\n const tagName = tag.name;\n const constructor = tag;\n // 리졸브는 컴포넌트를 새로 만든다.\n const resolve = (componentKey = props) => {\n initMountHookState(componentKey);\n\n const component = tag(props, children);\n const componentMaker = component(\n componentRender(componentKey),\n props,\n children\n );\n\n const customNode = makeCustomNode(\n componentMaker,\n componentKey,\n tag,\n props,\n children\n );\n\n const originalWDom = customNode;\n\n setRedrawAction(componentKey, () =>\n reRenderCustomComponent(tag, props, children, originalWDom)\n );\n\n (getComponentSubInfo(componentKey, 'vd') as { value: WDom }).value =\n customNode;\n\n return customNode;\n };\n\n return { tagName, constructor, props, children, resolve };\n};\n\nconst makeCustomNode = (\n componentMaker: (props: Props) => WDom,\n componentKey: Props,\n tag: TagFunction,\n props: Props,\n children: WDom[]\n) => {\n const customNode = componentMaker(props);\n const reRender = makeReRender(\n componentMaker,\n componentKey,\n tag,\n props,\n children\n );\n\n addComponentProps(customNode, componentKey, tag, props, children, reRender);\n\n return customNode;\n};\n\nconst makeReRender = (\n componentMaker: (props: Props) => WDom,\n componentKey: Props,\n tag: TagFunction,\n props: Props,\n children: WDom[]\n) => {\n const reRender = () =>\n wDomMaker(componentMaker, componentKey, tag, props, children, reRender);\n return reRender;\n};\n\nconst wDomMaker = (\n componentMaker: (props: Props) => WDom,\n componentKey: Props,\n tag: TagFunction,\n props: Props,\n children: WDom[],\n reRender: () => WDom\n) => {\n initUpdateHookState(componentKey);\n runUpdateCallback();\n\n const originalWDom = componentMaker(props);\n\n setRedrawAction(componentKey, () =>\n reRenderCustomComponent(tag, props, children, originalWDom)\n );\n\n addComponentProps(originalWDom, componentKey, tag, props, children, reRender);\n\n (getComponentSubInfo(componentKey, 'vd') as { value: WDom }).value =\n originalWDom;\n\n return originalWDom;\n};\n\nconst addComponentProps = (\n wDom: WDom,\n componentKey: Props,\n tag: TagFunction,\n props: Props,\n children: WDom[],\n reRender: () => WDom\n) => {\n Object.assign(wDom, {\n componentProps: props,\n componentChildren: children,\n constructor: tag,\n tagName: tag.name,\n componentKey,\n reRender,\n });\n};\n\nconst makeNode = (\n tag: TagFunction | FragmentFunction | string,\n props: Props,\n children: WDom[]\n) => {\n if (checkFragmentFunction(tag)) {\n return Fragment(props, ...children);\n } else if (checkCustemComponentFunction(tag)) {\n const componetMakeResolver = makeWDomResolver(tag, props, children);\n\n return needDiffRef.value\n ? componetMakeResolver\n : componetMakeResolver.resolve();\n }\n\n return {\n type: 'element',\n tag,\n props,\n children,\n };\n};\n\nconst remakeChildren = (\n nodeParentPointer: NodePointer,\n children: MiddleStateWDomChildren\n): WDom[] =>\n children.map((item: MiddleStateWDom) => {\n const childItem = makeChildrenItem(item);\n\n childItem.getParent = () => nodeParentPointer.value;\n\n return childItem;\n });\n\nconst makeChildrenItem = (item: MiddleStateWDom): WDom => {\n if (item === null || item === undefined || item === false) {\n return { type: null };\n } else if (Array.isArray(item)) {\n const nodeParentPointer: NodePointer = { value: undefined };\n const children = remakeChildren(nodeParentPointer, item);\n const node = {\n type: 'loop',\n children,\n };\n nodeParentPointer.value = node;\n\n return node;\n } else if (typeof item === 'string' || typeof item === 'number') {\n return { type: 'text', text: item };\n }\n\n return item;\n};\n","export const ref = <T>(initValue: T) => ({ value: initValue });\n"],"names":["updateProps","getParent","reRender"],"mappings":"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"}
1
+ {"version":3,"file":"lithent.mjs","sources":["../src/utils/predicator.ts","../src/utils/index.ts","../src/utils/universalRef.ts","../src/hook/unmount.ts","../src/hook/mountCallback.ts","../src/hook/useUpdate.ts","../src/render.ts","../src/diff.ts","../src/hook/updateCallback.ts","../src/wDom.ts","../src/hook/ref.ts"],"sourcesContent":["import { Fragment } from '@/wDom';\nimport {\n WDom,\n TagFunction,\n TagFunctionResolver,\n FragmentFunction,\n WDomType,\n} from '@/types';\n\ntype WDomParam =\n | string\n | WDom\n | TagFunction\n | TagFunctionResolver\n | FragmentFunction;\n\n/**\n * Predicator\n */\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 checkPlainWDomType = (wDom: WDomParam): wDom is WDom =>\n typeof wDom === 'object' && !('resolve' in wDom);\n\nexport const checkPlainType = (wDom: WDomParam, typeName: string) =>\n checkPlainWDomType(wDom) && wDom.type === typeName;\n\nexport const checkEmptyElement = (wDom: WDomParam) =>\n checkPlainWDomType(wDom) && !wDom.type;\n\nexport const checkSameCustomComponent = (\n newWDom: WDom | TagFunction | TagFunctionResolver,\n originalWDom?: WDom\n) => newWDom.constructor === originalWDom?.constructor;\n\nexport const 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\nexport const 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\nexport const checkNormalTypeElement = (\n newWDom: WDom | TagFunction | TagFunctionResolver,\n originalWDom?: WDom\n) => {\n return (\n checkPlainWDomType(newWDom) &&\n originalWDom?.type === newWDom.type &&\n (originalWDom?.children?.length === newWDom?.children?.length ||\n newWDom.type === 'loop')\n );\n};\n\nexport const checkExisty = (value: unknown) =>\n value !== null && value !== undefined;\n\nexport const checkFunction = (target: unknown): target is Function =>\n typeof target === 'function';\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 { value: HTMLElement | DocumentFragment | Text | undefined } =>\n dataKey === 'ref' && typeof dataValue === 'object';\n\nexport const checkOptionElement = (element: any): element is HTMLElement => {\n return element.nodeType === 1 && element.tagName === 'OPTION';\n};\n\nexport const checkTextareaElement = (element: any): element is HTMLElement => {\n return element.nodeType === 1 && element.tagName === 'TEXTAREA';\n};\n\nexport const checkCheckboxElement = (element: any): element is HTMLElement => {\n return element.nodeType === 1 && element.type === 'checkbox';\n};\n\nexport const checkRadioElement = (element: any): element is HTMLElement => {\n return element.nodeType === 1 && element.type === 'radio';\n};\n\nexport const checkNormalAttribute = (\n dataValue: unknown\n): dataValue is number | string =>\n typeof dataValue === 'number' || typeof dataValue === 'string';\n\nexport const getWDomType = (\n wDom: WDom | TagFunction | TagFunctionResolver\n): WDomType | undefined => {\n let result: WDomType | undefined;\n\n if (checkCustemComponentFunction(wDom)) {\n result = 'c';\n } else if (checkPlainType(wDom, 'fragment')) {\n result = 'f';\n } else if (checkPlainType(wDom, 'element')) {\n result = 'e';\n } else if (checkPlainType(wDom, 'loop')) {\n result = 'l';\n } else if (checkPlainType(wDom, 'text')) {\n result = 't';\n } else if (checkEmptyElement(wDom)) {\n result = 'et';\n }\n\n return result;\n};\n\nexport const checkSameWDomWithOriginal = {\n c: checkSameCustomComponent,\n l: checkNormalTypeElement,\n t: checkNormalTypeElement,\n e: checkSameTagElement,\n f: checkSameFragment,\n et: checkNormalTypeElement,\n};\n","import { WDom, TagFunctionResolver, Props } from '@/types';\n\nexport const getParent = (vDom: WDom) => {\n const parentVDom = vDom.getParent && vDom.getParent();\n\n if (!parentVDom) {\n throw Error('Not found parent vDom');\n }\n\n return parentVDom;\n};\n\nexport const reRender = (vDom: WDom, infoVdom: TagFunctionResolver) => {\n const { componentProps: props, componentChildren: 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 if (!newVDom) {\n throw Error('Unable reRender');\n }\n\n return newVDom;\n};\n\nexport const getEventName = (eventKey: string) =>\n eventKey.replace(/^on(.*)/, (_match, p1) => p1.toLowerCase());\n\nconst updateProps = (props: Props, infoProps: Props) => {\n if (props && infoProps !== props) {\n Object.keys(props).forEach(key => delete props[key]);\n\n Object.entries(infoProps || {}).forEach(\n ([key, value]) => (props[key] = value)\n );\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","import { ComponentRef, ComponentSubKey, Props, WDom } from '@/types';\n\ntype RedrawQueueList = {\n componentKey: Props;\n exec: () => void;\n}[];\n\n/**\n * Common\n */\nexport const componentKeyRef: { value: Props } = { value: {} };\nexport const needDiffRef: { value: boolean } = { value: false };\nexport const componentRef: ComponentRef = new WeakMap();\nexport const redrawQueue: {\n value: { componentKey: Props; exec: () => void }[];\n} = { value: [] };\nexport const redrawQueueTimeout: { value: null | number } = { value: null };\nexport const componentRender = (componentKey: Props) => () => {\n const up = componentRef.get(componentKey)?.up;\n let result = false;\n if (up) {\n up();\n result = true;\n }\n\n return result;\n};\n\nexport const setComponetRef = (componentKey: Props) => {\n componentRef.set(componentKey, {\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 = () => componentKeyRef.value;\n\nexport const getComponentSubInfo = (\n componentKey: Props,\n subKey: ComponentSubKey\n) => componentRef.get(componentKey)![subKey];\n\nexport const setRedrawAction = (componentKey: Props, exec: () => void) => {\n componentRef.get(componentKey)!.up = () => {\n redrawQueue.value.push({\n componentKey,\n exec,\n });\n if (!redrawQueueTimeout.value) {\n redrawQueueTimeout.value = setTimeout(execRedrawQueue);\n }\n };\n};\n\nexport const initUpdateHookState = (componentKey: Props) =>\n (componentKeyRef.value = componentKey);\n\nexport const initMountHookState = (componentKey: Props) => {\n componentKeyRef.value = componentKey;\n setComponetRef(componentKey);\n};\n\nconst recursiveGetChildKeys = (wDom: WDom, result: Props[]) => {\n (wDom.children || []).forEach(item => {\n const childComKey = item.componentKey;\n if (childComKey) {\n result.push(childComKey);\n }\n\n recursiveGetChildKeys(item, result);\n });\n};\n\nconst execRedrawQueue = () => {\n let childItemList: Props[] = [];\n\n redrawQueue.value.forEach(item => {\n const childVd = componentRef.get(item.componentKey)?.vd?.value;\n if (childVd) {\n recursiveGetChildKeys(childVd, childItemList);\n }\n });\n\n const addedKey: Props[] = [];\n const result = redrawQueue.value.reduce((acc, item) => {\n const { componentKey } = item;\n\n if (\n childItemList.includes(componentKey) ||\n addedKey.includes(componentKey)\n ) {\n return acc;\n }\n\n addedKey.push(componentKey);\n acc.push(item);\n\n return acc;\n }, [] as RedrawQueueList);\n\n while (result.length) {\n const action = result.shift();\n if (action) {\n action.exec();\n }\n }\n};\n","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 { componentKey } = newWDom;\n\n if (componentKey) {\n removeItem(componentKey);\n }\n recursiveRunUnmount(newWDom);\n};\n\nconst recursiveRunUnmount = (wDom: WDom) => {\n (wDom.children || []).forEach(item => {\n const childComKey = item.componentKey;\n if (childComKey) {\n runUnmountQueueFromWDom(item);\n } else {\n recursiveRunUnmount(item);\n }\n });\n};\n\nconst removeItem = (componentKey: Props) => {\n const subInfo = componentRef.get(componentKey);\n if (subInfo) {\n subInfo!.umts.forEach(effect => effect());\n subInfo!.umts = [];\n componentRef.delete(componentKey);\n }\n};\n","import { WDom } from '@/types';\nimport {\n componentKeyRef,\n componentRef,\n getComponentKey,\n} from '@/utils/universalRef';\n\nimport { unmount } from '@/hook/unmount';\n\nexport const mountCallback = (effectAction: () => void) => {\n const mts = componentRef.get(getComponentKey())!.mts;\n\n mts.push(effectAction);\n};\n\nexport const runMountedQueueFromWDom = (newWDom: WDom) => {\n const { componentKey } = newWDom;\n\n if (componentKey) {\n const component = componentRef.get(componentKey);\n const queue = component?.mts;\n const sequence = component?.upS;\n\n componentKeyRef.value = componentKey;\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 componentKeyRef,\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 { componentKey } = newWDom;\n\n if (componentKey) {\n const component = componentRef.get(componentKey);\n const queue = component?.upCB;\n const sequence = component?.upS;\n\n componentKeyRef.value = componentKey;\n\n if (sequence) {\n sequence.value = 0;\n }\n\n if (newWDom.constructor && queue) {\n component.upCB = [];\n queue.forEach((effect: Function) => effect());\n }\n }\n};\n\nconst checkNeedPushQueue = (originalDefs: unknown[], newDefs: unknown[]) =>\n !originalDefs.length && !originalDefs.length\n ? true\n : originalDefs.some((def, index) => def !== newDefs[index]);\n","import { WDom, Props } from '@/types';\nimport {\n checkStyleData,\n checkRefData,\n checkNormalAttribute,\n checkExisty,\n checkOptionElement,\n checkTextareaElement,\n checkCheckboxElement,\n checkRadioElement,\n} from '@/utils/predicator';\n\nimport { componentRef } from '@/utils/universalRef';\nimport { runUnmountQueueFromWDom } from '@/hook/unmount';\nimport { runMountedQueueFromWDom } from '@/hook/mountCallback';\nimport { runUpdatedQueueFromWDom } from '@/hook/useUpdate';\nimport { getParent, getEventName } from '@/utils';\n\nexport const render = (\n wDom: WDom,\n wrapElement: HTMLElement | null,\n afterElement?: HTMLElement | null\n) => {\n if (!wrapElement) {\n throw Error('WrapELement is null');\n }\n wDom.isRoot = true;\n wDom.wrapElement = wrapElement;\n\n const Dom = wDomToDom(wDom, true);\n\n if (afterElement) {\n wDom.afterElement = afterElement;\n wrapElement.insertBefore(Dom, afterElement);\n } else {\n wrapElement.appendChild(Dom);\n }\n\n return () => {\n if (wDom.componentProps) {\n const component = componentRef.get(wDom.componentProps)?.vd.value;\n if (component) {\n runUnmountQueueFromWDom(component);\n recursiveRemoveEvent(component);\n rootDelete(component);\n }\n }\n };\n};\n\nexport const wDomUpdate = (newWDomTree: WDom) => {\n const { needRerender } = newWDomTree;\n\n if (needRerender && needRerender !== 'N') {\n const exec = {\n A: typeAdd,\n D: typeDelete,\n R: typeReplace,\n U: typeUpdate,\n SR: typeSortedReplace,\n SU: typeSortedUpdate,\n }[needRerender];\n exec(newWDomTree);\n }\n};\n\nexport const recursiveRemoveEvent = (originalWDom: WDom) => {\n if (originalWDom.props && originalWDom.el) {\n removeEvent(originalWDom.props, originalWDom.el);\n }\n\n (originalWDom.children || []).forEach((childItem: WDom) => {\n recursiveRemoveEvent(childItem);\n });\n};\n\nconst rootDelete = (newWDom: WDom) => {\n const parent = newWDom.wrapElement as HTMLElement;\n\n deleteRealDom(newWDom, parent);\n};\n\nconst typeDelete = (newWDom: WDom) => {\n const parentWDom = getParent(newWDom);\n const parent = findRealParentElement(parentWDom) as HTMLElement;\n\n if (newWDom.oldProps && newWDom.el) {\n removeEvent(newWDom.oldProps, newWDom.el);\n }\n\n deleteRealDom(newWDom, parent);\n};\n\nconst deleteRealDom = (newWDom: WDom, parent: HTMLElement) => {\n if (parent && newWDom.el) {\n if (newWDom.el?.nodeType === 1) {\n parent.removeChild(newWDom.el);\n } else if (newWDom.el?.nodeType === 11) {\n findChildWithRemoveElement(newWDom, parent as HTMLElement);\n }\n delete newWDom.el;\n }\n};\n\nconst findChildWithRemoveElement = (newWDom: WDom, parent: HTMLElement) => {\n (newWDom?.oldChildren || newWDom?.children || []).forEach(item => {\n if (item.el?.nodeType === 1) {\n parent.removeChild(item?.el);\n } else if (item.el?.nodeType === 11) {\n findChildWithRemoveElement(item, parent);\n }\n });\n};\n\nconst typeSortedReplace = (newWDom: WDom) => {\n typeDelete(newWDom);\n typeAdd(newWDom);\n};\n\nconst typeSortedUpdate = (newWDom: WDom) => {\n typeDelete(newWDom);\n typeAdd(newWDom, newWDom.el);\n};\n\nconst typeAdd = (\n newWDom: WDom,\n newElement?: HTMLElement | DocumentFragment | Text\n) => {\n if (!newElement) {\n newElement = wDomToDom(newWDom, true);\n }\n\n const parentWDom = getParent(newWDom);\n if (parentWDom.type) {\n const parentEl = findRealParentElement(parentWDom);\n const isLoop = parentWDom.type === 'loop';\n\n let nextEl;\n if (isLoop) {\n nextEl = startFindNextBrotherElement(parentWDom, getParent(parentWDom));\n } else {\n nextEl = startFindNextBrotherElement(newWDom, parentWDom);\n }\n\n if (newElement && parentEl) {\n if (nextEl) {\n parentEl.insertBefore(newElement, nextEl);\n } else {\n parentEl.appendChild(newElement);\n }\n }\n }\n\n runMountedQueueFromWDom(newWDom);\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 && ['fragment', 'loop'].includes(parentType)) {\n return startFindNextBrotherElement(parentWDom, getParent(parentWDom));\n } else if (parentWDom.isRoot && parentWDom.afterElement) {\n return parentWDom.afterElement;\n }\n\n return undefined;\n};\n\nconst findChildFragmentNextElement = (\n candidiateBrothers: WDom[]\n): HTMLElement | DocumentFragment | Text | undefined =>\n candidiateBrothers.reduce(\n (\n targetEl: HTMLElement | DocumentFragment | Text | undefined,\n bItem: WDom\n ) => {\n const type = bItem.type;\n const el = bItem.el;\n const isFragment = type && ['fragment', 'loop'].includes(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, true);\n\n if (parentElement) {\n parentElement.replaceChild(newElement, orignalElement);\n }\n }\n }\n\n runMountedQueueFromWDom(newWDom);\n};\n\nconst removeEvent = (\n oldProps: Props,\n element: HTMLElement | DocumentFragment | Text\n) => {\n Object.entries(oldProps || {}).forEach(\n ([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};\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 | DocumentFragment | Text,\n oldProps?: Props\n) => {\n const originalProps = { ...oldProps };\n\n Object.entries(props || {}).forEach(\n ([dataKey, dataValue]: [string, unknown]) => {\n if (dataKey === 'key') {\n // Do nothing\n } else if (\n dataKey === 'innerHTML' &&\n element &&\n typeof dataValue === 'string'\n ) {\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 (checkRadioElement(element) && dataKey === 'checked') {\n (element as HTMLInputElement).checked = !!dataValue;\n } else if (checkCheckboxElement(element) && dataKey === 'checked') {\n (element as HTMLInputElement).checked = !!dataValue;\n } else if (checkTextareaElement(element) && dataKey === 'value') {\n (element as HTMLInputElement).value = dataValue as string;\n } else if (checkOptionElement(element) && dataKey === 'selected') {\n (element as HTMLOptionElement).selected = !!dataValue;\n } else if (checkNormalAttribute(dataValue)) {\n (element as HTMLElement).setAttribute(dataKey, String(dataValue));\n }\n\n delete originalProps[dataKey];\n }\n );\n\n Object.keys(originalProps).forEach(dataKey =>\n (element as HTMLElement).removeAttribute(dataKey)\n );\n};\n\nconst wDomToDom = (wDom: WDom, init: boolean) => {\n let element;\n const { type, tag, text, props, children = [] } = wDom;\n const isVirtualType = type === 'fragment' || type === 'loop';\n\n if (isVirtualType) {\n element = new DocumentFragment();\n } else if (type === 'element' && tag) {\n element = document.createElement(tag);\n } else if (type === 'text' && checkExisty(text)) {\n element = document.createTextNode(String(text));\n }\n\n wDomChildrenToDom(children, element, init);\n updateProps(props, element);\n\n wDom.el = element;\n\n runMountedQueueFromWDom(wDom);\n\n return element || document.createElement('div');\n};\n\nconst wDomChildrenToDom = (\n children: WDom[],\n parentElement?: HTMLElement | DocumentFragment | Text,\n init?: boolean\n) => {\n if (init) {\n const elementChildren = children.reduce(\n (acc: DocumentFragment, childItem: WDom) => {\n if (childItem.type) {\n acc.appendChild(wDomToDom(childItem, init));\n }\n\n return acc;\n },\n new DocumentFragment()\n );\n\n if (parentElement && elementChildren.hasChildNodes()) {\n parentElement.appendChild(elementChildren);\n }\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 | DocumentFragment | Text\n) => {\n const originalStyle = { ...oldStyle };\n const elementStyle = (element as HTMLElement)?.style;\n\n if (elementStyle) {\n Object.entries(style).forEach(([styleKey, dataValue]) => {\n (elementStyle as any)[styleKey] = dataValue;\n delete originalStyle[styleKey];\n });\n\n Object.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 = vDom.type === 'fragment' || vDom.type === 'loop';\n if (vDom.isRoot && isVirtualType) {\n return vDom.wrapElement;\n }\n\n if (!isVirtualType) {\n return vDom.el as HTMLElement;\n }\n\n return findRealParentElement(getParent(vDom));\n};\n","import { WDom, TagFunctionResolver, RenderType } from '@/types';\nimport { checkCustemComponentFunction } from '@/utils/predicator';\nimport { getParent, reRender } from '@/utils';\nimport { recursiveRemoveEvent } from '@/render';\nimport {\n checkEmptyElement,\n checkSameWDomWithOriginal,\n getWDomType,\n checkExisty,\n} from '@/utils/predicator';\n\nimport { runUnmountQueueFromWDom } from '@/hook/unmount';\n\nexport const makeNewWDomTree = (\n newWDom: WDom | TagFunctionResolver,\n originalWDom?: WDom\n) => {\n const type = getWDomType(newWDom);\n\n if (!type) {\n throw new Error('Unknown type wdom');\n }\n\n const isSameType = checkSameWDomWithOriginal[type](newWDom, originalWDom);\n\n const result = remakeNewWDom(newWDom, isSameType, originalWDom);\n\n return result;\n};\n\nconst remakeNewWDom = (\n newWDom: WDom | TagFunctionResolver,\n isSameType: boolean,\n originalWDom?: WDom\n) => {\n const remakeWDom = generalize(newWDom, isSameType, originalWDom);\n\n remakeWDom.children = remakeChildrenForDiff(\n remakeWDom,\n isSameType,\n originalWDom\n );\n\n const needRerender = addReRenderTypeProperty(\n remakeWDom,\n isSameType,\n originalWDom\n );\n\n remakeWDom.needRerender = needRerender;\n\n if (needRerender !== 'A' && originalWDom) {\n remakeWDom.el = originalWDom.el;\n }\n\n if (\n needRerender &&\n ['D', 'R', 'SR'].includes(needRerender) &&\n originalWDom?.componentKey\n ) {\n runUnmountQueueFromWDom(originalWDom);\n recursiveRemoveEvent(originalWDom);\n remakeWDom.oldChildren = originalWDom.children;\n }\n\n remakeWDom.oldProps = originalWDom?.props;\n\n return remakeWDom;\n};\n\nconst addReRenderTypeProperty = (\n newWDom: WDom,\n isSameType: boolean,\n originalWDom?: WDom\n): RenderType | undefined => {\n const existOriginalWDom = originalWDom && originalWDom.type;\n const isEmptyElement = checkEmptyElement(newWDom);\n const isRoot = !newWDom.getParent;\n const parentType = !isRoot && getParent(newWDom).type;\n const key = getKey(newWDom);\n const isKeyCheckedWDom = parentType === 'loop' && checkExisty(key);\n const isSameText =\n newWDom.type === 'text' &&\n isSameType &&\n newWDom.text === originalWDom?.text;\n\n let result: RenderType | undefined;\n if (isEmptyElement) {\n result = 'D';\n } else if (isSameText) {\n result = 'N';\n } else if (!existOriginalWDom) {\n result = 'A';\n } else if (isSameType) {\n result = isKeyCheckedWDom ? 'SU' : 'U';\n } else {\n result = isKeyCheckedWDom ? 'SR' : 'R';\n }\n\n return result;\n};\n\nconst generalize = (\n newWDom: WDom | TagFunctionResolver,\n isSameType: boolean,\n originalWDom?: WDom\n): WDom => {\n if (checkCustemComponentFunction(newWDom)) {\n return isSameType && originalWDom\n ? reRender(originalWDom, newWDom)\n : newWDom.resolve();\n }\n\n return newWDom;\n};\n\nconst remakeChildrenForDiff = (\n newWDom: WDom,\n isSameType: boolean,\n originalWDom?: WDom\n) =>\n isSameType && originalWDom\n ? remakeChildrenForUpdate(newWDom, originalWDom)\n : remakeChildrenForAdd(newWDom);\n\nconst remakeChildrenForAdd = (newWDom: WDom) =>\n (newWDom.children || []).map((item: WDom) => {\n const childItem = makeNewWDomTree(item);\n\n childItem.getParent = () => newWDom;\n\n return childItem;\n });\n\nconst remakeChildrenForUpdate = (newWDom: WDom, originalWDom: WDom) => {\n if (\n newWDom.type === 'loop' &&\n checkExisty(getKey((newWDom.children || [])[0]))\n ) {\n return remakeChildrenForLoopUpdate(newWDom, originalWDom);\n }\n\n return (newWDom.children || []).map((item: WDom, index: number) => {\n const childItem = makeNewWDomTree(\n item,\n (originalWDom.children || [])[index]\n );\n\n childItem.getParent = () => newWDom;\n\n return childItem;\n });\n};\n\nconst remakeChildrenForLoopUpdate = (newWDom: WDom, originalWDom: WDom) => {\n const { remakedChildren, unUsedChildren } = diffLoopChildren(\n newWDom,\n originalWDom\n );\n\n unUsedChildren.map(unusedItem => {\n const el = unusedItem.el;\n\n if (el?.parentNode) {\n el.parentNode.removeChild(el);\n }\n });\n\n return remakedChildren;\n};\n\nconst diffLoopChildren = (newWDom: WDom, originalWDom: WDom) => {\n const newChildren = [...(newWDom.children || [])];\n const originalChildren = [...(originalWDom.children || [])];\n\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 {\n remakedChildren,\n unUsedChildren: originalChildren,\n };\n};\n\nconst findSameKeyOriginalItem = (item: WDom, originalChildren: WDom[]) => {\n const key = getKey(item);\n\n return originalChildren.find(\n orignalChildItem => getKey(orignalChildItem) === key\n );\n};\n\nconst getKey = (target: WDom) =>\n target?.componentProps?.key ?? target?.props?.key;\n","import {\n componentRef,\n redrawQueue,\n redrawQueueTimeout,\n getComponentKey,\n} 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 redrawQueue.value = [];\n redrawQueueTimeout.value = null;\n};\n","import {\n WDom,\n TagFunction,\n FragmentFunction,\n Props,\n MiddleStateWDomChildren,\n MiddleStateWDom,\n NodePointer,\n Component,\n} from '@/types';\n\nimport { makeNewWDomTree } from '@/diff';\nimport { wDomUpdate } from '@/render';\nimport {\n initUpdateHookState,\n initMountHookState,\n setRedrawAction,\n needDiffRef,\n componentRender,\n getComponentSubInfo,\n} from '@/utils/universalRef';\nimport { runUpdateCallback } from '@/hook/updateCallback';\nimport {\n checkFragmentFunction,\n checkCustemComponentFunction,\n} from '@/utils/predicator';\n\nexport type Children = WDom[];\n\nexport const Fragment = (_props: Props, ...children: WDom[]) => ({\n type: 'fragment',\n children,\n});\n\nexport const h = (\n tag: TagFunction | FragmentFunction | string,\n props: Props,\n ...children: MiddleStateWDomChildren\n) => {\n const nodeParentPointer: NodePointer = { value: undefined };\n const newProps = props || {};\n const newChildren = remakeChildren(nodeParentPointer, children);\n const node = makeNode(tag, newProps, newChildren);\n\n if (!checkCustemComponentFunction(node)) {\n nodeParentPointer.value = node;\n }\n\n return node;\n};\n\nexport const mount =\n <T>(component: Component<T>) =>\n (_props: T, _children: WDom[]) =>\n component;\n\nconst reRenderCustomComponent = (\n tag: TagFunction,\n props: Props,\n children: WDom[],\n originalWDom: WDom\n) => {\n needDiffRef.value = true;\n\n const newWDom = makeWDomResolver(tag, props, children);\n const newWDomTree = makeNewWDomTree(newWDom, originalWDom);\n const { isRoot, getParent, wrapElement, afterElement } = originalWDom;\n\n newWDomTree.getParent = getParent;\n\n if (!isRoot && getParent) {\n const brothers = getParent()?.children || [];\n const index = brothers.indexOf(originalWDom);\n\n brothers.splice(index, 1, newWDomTree);\n } else {\n newWDomTree.isRoot = true;\n newWDomTree.wrapElement = wrapElement;\n newWDomTree.afterElement = afterElement;\n }\n\n needDiffRef.value = false;\n wDomUpdate(newWDomTree);\n};\n\nconst makeWDomResolver = (tag: TagFunction, props: Props, children: WDom[]) => {\n const tagName = tag.name;\n const constructor = tag;\n // 리졸브는 컴포넌트를 새로 만든다.\n const resolve = (componentKey = props) => {\n initMountHookState(componentKey);\n\n const component = tag(props, children);\n const componentMaker = component(\n componentRender(componentKey),\n props,\n children\n );\n\n const customNode = makeCustomNode(\n componentMaker,\n componentKey,\n tag,\n props,\n children\n );\n\n const originalWDom = customNode;\n\n setRedrawAction(componentKey, () =>\n reRenderCustomComponent(tag, props, children, originalWDom)\n );\n\n (getComponentSubInfo(componentKey, 'vd') as { value: WDom }).value =\n customNode;\n\n return customNode;\n };\n\n return { tagName, constructor, props, children, resolve };\n};\n\nconst makeCustomNode = (\n componentMaker: (props: Props) => WDom,\n componentKey: Props,\n tag: TagFunction,\n props: Props,\n children: WDom[]\n) => {\n const customNode = componentMaker(props);\n const reRender = makeReRender(\n componentMaker,\n componentKey,\n tag,\n props,\n children\n );\n\n addComponentProps(customNode, componentKey, tag, props, children, reRender);\n\n return customNode;\n};\n\nconst makeReRender = (\n componentMaker: (props: Props) => WDom,\n componentKey: Props,\n tag: TagFunction,\n props: Props,\n children: WDom[]\n) => {\n const reRender = () =>\n wDomMaker(componentMaker, componentKey, tag, props, children, reRender);\n return reRender;\n};\n\nconst wDomMaker = (\n componentMaker: (props: Props) => WDom,\n componentKey: Props,\n tag: TagFunction,\n props: Props,\n children: WDom[],\n reRender: () => WDom\n) => {\n initUpdateHookState(componentKey);\n runUpdateCallback();\n\n const originalWDom = componentMaker(props);\n\n setRedrawAction(componentKey, () =>\n reRenderCustomComponent(tag, props, children, originalWDom)\n );\n\n addComponentProps(originalWDom, componentKey, tag, props, children, reRender);\n\n (getComponentSubInfo(componentKey, 'vd') as { value: WDom }).value =\n originalWDom;\n\n return originalWDom;\n};\n\nconst addComponentProps = (\n wDom: WDom,\n componentKey: Props,\n tag: TagFunction,\n props: Props,\n children: WDom[],\n reRender: () => WDom\n) => {\n Object.assign(wDom, {\n componentProps: props,\n componentChildren: children,\n constructor: tag,\n tagName: tag.name,\n componentKey,\n reRender,\n });\n};\n\nconst makeNode = (\n tag: TagFunction | FragmentFunction | string,\n props: Props,\n children: WDom[]\n) => {\n if (checkFragmentFunction(tag)) {\n return Fragment(props, ...children);\n } else if (checkCustemComponentFunction(tag)) {\n const componetMakeResolver = makeWDomResolver(tag, props, children);\n\n return needDiffRef.value\n ? componetMakeResolver\n : componetMakeResolver.resolve();\n }\n\n return {\n type: 'element',\n tag,\n props,\n children,\n };\n};\n\nconst remakeChildren = (\n nodeParentPointer: NodePointer,\n children: MiddleStateWDomChildren\n): WDom[] =>\n children.map((item: MiddleStateWDom) => {\n const childItem = makeChildrenItem(item);\n\n childItem.getParent = () => nodeParentPointer.value;\n\n return childItem;\n });\n\nconst makeChildrenItem = (item: MiddleStateWDom): WDom => {\n if (item === null || item === undefined || item === false) {\n return { type: null };\n } else if (Array.isArray(item)) {\n const nodeParentPointer: NodePointer = { value: undefined };\n const children = remakeChildren(nodeParentPointer, item);\n const node = {\n type: 'loop',\n children,\n };\n nodeParentPointer.value = node;\n\n return node;\n } else if (typeof item === 'string' || typeof item === 'number') {\n return { type: 'text', text: item };\n }\n\n return item;\n};\n","export const ref = <T>(initValue: T) => ({ value: initValue });\n"],"names":["updateProps","getParent","reRender"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).lithent={})}(this,(function(e){"use strict";const t=e=>"function"==typeof e&&!n(e)||"object"==typeof e&&"resolve"in e,n=e=>"function"==typeof e&&e===ie,o=e=>"object"==typeof e&&!("resolve"in e),l=(e,t)=>o(e)&&e.type===t,r=e=>o(e)&&!e.type,u=(e,t)=>{var n,l;return o(e)&&(null==t?void 0:t.type)===e.type&&((null==(n=null==t?void 0:t.children)?void 0:n.length)===(null==(l=null==e?void 0:e.children)?void 0:l.length)||"loop"===e.type)},c=e=>null!=e,i=(e,t)=>"style"===e&&"object"==typeof t,d={c:(e,t)=>e.constructor===(null==t?void 0:t.constructor),l:u,t:u,e:(e,t)=>{var n,l;return o(e)&&"element"===(null==t?void 0:t.type)&&(null==t?void 0:t.tag)===e.tag&&(null==(n=null==t?void 0:t.children)?void 0:n.length)===(null==(l=null==e?void 0:e.children)?void 0:l.length)},f:(e,t)=>{var n,l;return o(e)&&"fragment"===(null==t?void 0:t.type)&&(null==(n=null==t?void 0:t.children)?void 0:n.length)===(null==(l=null==e?void 0:e.children)?void 0:l.length)},et:u},s=e=>{const t=e.getParent&&e.getParent();if(!t)throw Error("Not found parent vDom");return t},p=(e,t)=>{e&&t!==e&&(Object.keys(e).forEach((t=>delete e[t])),Object.entries(t||{}).forEach((([t,n])=>e[t]=n)))},a=(e,t)=>{e&&t!==e&&(e.splice(0,e.length),t&&t.forEach((t=>e.push(t))))},v={value:{}},h={value:!1},f=new WeakMap,m={value:[]},y={value:null},g=()=>v.value,E=(e,t)=>f.get(e)[t],b=(e,t)=>{f.get(e).up=()=>{m.value.push({componentKey:e,exec:t}),y.value||(y.value=setTimeout(P))}},C=e=>{v.value=e,(e=>{f.set(e,{vd:{value:null},up:()=>{},upR:[],upS:{value:0},upD:[],upCB:[],mts:[],umts:[]})})(e)},R=(e,t)=>{(e.children||[]).forEach((e=>{const n=e.componentKey;n&&t.push(n),R(e,t)}))},P=()=>{let e=[];m.value.forEach((t=>{var n,o;const l=null==(o=null==(n=f.get(t.componentKey))?void 0:n.vd)?void 0:o.value;l&&R(l,e)}));const t=[],n=m.value.reduce(((n,o)=>{const{componentKey:l}=o;return e.includes(l)||t.includes(l)||(t.push(l),n.push(o)),n}),[]);for(;n.length;){const e=n.shift();e&&e.exec()}},x=e=>{const{componentKey:t}=e;t&&w(t),T(e)},T=e=>{(e.children||[]).forEach((e=>{e.componentKey?x(e):T(e)}))},w=e=>{const t=f.get(e);t&&(t.umts.forEach((e=>e())),t.umts=[],f.delete(e))},k=e=>{const{componentKey:t}=e;if(t){const e=f.get(t),n=null==e?void 0:e.mts,o=null==e?void 0:e.upS;v.value=t,o&&(o.value=0),n&&(e.mts=[],n.forEach((e=>{const t=e();var n;t&&(n=t,f.get(g()).umts.push(n))})))}},S=(e,t=(()=>[]))=>{const n=f.get(g()),{upD:o,upS:l}=n,r=o[l.value];if(r&&j(r,t())){const t=e();t&&n.upCB.push(t)}o[l.value]=t(),l.value+=1},j=(e,t)=>!e.length&&!e.length||e.some(((e,n)=>e!==t[n])),O=e=>{const{needRerender:t}=e;if(t&&"N"!==t){(0,{A:M,D:A,R:W,U:I,SR:U,SU:B}[t])(e)}},N=e=>{e.props&&e.el&&_(e.props,e.el),(e.children||[]).forEach((e=>{N(e)}))},K=e=>{const t=e.wrapElement;D(e,t)},A=e=>{const t=s(e),n=Q(t);e.oldProps&&e.el&&_(e.oldProps,e.el),D(e,n)},D=(e,t)=>{var n,o;t&&e.el&&(1===(null==(n=e.el)?void 0:n.nodeType)?t.removeChild(e.el):11===(null==(o=e.el)?void 0:o.nodeType)&&L(e,t),delete e.el)},L=(e,t)=>{((null==e?void 0:e.oldChildren)||(null==e?void 0:e.children)||[]).forEach((e=>{var n,o;1===(null==(n=e.el)?void 0:n.nodeType)?t.removeChild(null==e?void 0:e.el):11===(null==(o=e.el)?void 0:o.nodeType)&&L(e,t)}))},U=e=>{A(e),M(e)},B=e=>{A(e),M(e,e.el)},M=(e,t)=>{t||(t=q(e,!0));const n=s(e);if(n.type){const o=Q(n);let l;l="loop"===n.type?F(n,s(n)):F(e,n),t&&o&&(l?o.insertBefore(t,l):o.appendChild(t))}k(e)},F=(e,t)=>{const n=t.children||[],o=n.indexOf(e)+1,l=n.slice(o),r=H(l),u=t.type||"";return r||(!t.isRoot&&["fragment","loop"].includes(u)?F(t,s(t)):t.isRoot&&t.afterElement?t.afterElement:void 0)},H=e=>e.reduce(((e,t)=>{const n=t.type,o=t.el,l=n&&["fragment","loop"].includes(n);return e||(l?H(t.children||[]):o&&11!==o.nodeType?o:e)}),void 0),W=e=>{const t=s(e),n=e.el;if(t.type&&n)if(11===n.nodeType)U(e);else{const o=Q(t),l=q(e,!0);o&&o.replaceChild(l,n)}k(e)},_=(e,t)=>{t&&Object.entries(e||{}).forEach((([e,n])=>{if(e.match(/^on/)){const o=e.replace(/^on(.*)/,((e,t)=>t.toLowerCase()));t.removeEventListener(o,n)}}))},I=e=>{var t;const n=e.el;if("text"!==e.type){if(n){const{oldProps:o,props:l}=e;X(l,n,o),delete e.oldProps,"input"===e.tag&&(n.value=String((null==(t=null==e?void 0:e.props)?void 0:t.value)||""))}(e.children||[]).forEach((e=>O(e))),(e=>{const{componentKey:t}=e;if(t){const n=f.get(t),o=null==n?void 0:n.upCB,l=null==n?void 0:n.upS;v.value=t,l&&(l.value=0),e.constructor&&o&&(n.upCB=[],o.forEach((e=>e())))}})(e)}else V(e)},V=e=>{const t=e.el;t&&(t.nodeValue=String(e.text))},X=(e,t,n)=>{const o={...n};Object.entries(e||{}).forEach((([e,n])=>{if("key"===e);else if("innerHTML"===e&&t&&"string"==typeof n)t.innerHTML=n;else if(i(e,n)){const l=n,r=i(e,o.style)||{};J(l,r,t)}else((e,t)=>"ref"===e&&"object"==typeof t)(e,n)?n.value=t:e.match(/^on/)?G(t,e,n,o[e]):(e=>1===e.nodeType&&"radio"===e.type)(t)&&"checked"===e||(e=>1===e.nodeType&&"checkbox"===e.type)(t)&&"checked"===e?t.checked=!!n:(e=>1===e.nodeType&&"TEXTAREA"===e.tagName)(t)&&"value"===e?t.value=n:(e=>1===e.nodeType&&"OPTION"===e.tagName)(t)&&"selected"===e?t.selected=!!n:(e=>"number"==typeof e||"string"==typeof e)(n)&&t.setAttribute(e,String(n));delete o[e]})),Object.keys(o).forEach((e=>t.removeAttribute(e)))},q=(e,t)=>{let n;const{type:o,tag:l,text:r,props:u,children:i=[]}=e;return"fragment"===o||"loop"===o?n=new DocumentFragment:"element"===o&&l?n=document.createElement(l):"text"===o&&c(r)&&(n=document.createTextNode(String(r))),z(i,n,t),X(u,n),e.el=n,k(e),n||document.createElement("div")},z=(e,t,n)=>{if(n){const o=e.reduce(((e,t)=>(t.type&&e.appendChild(q(t,n)),e)),new DocumentFragment);t&&o.hasChildNodes()&&t.appendChild(o)}},G=(e,t,n,o)=>{const l=t.replace(/^on(.*)/,((e,t)=>t.toLowerCase()));o!==n&&(o&&e.removeEventListener(l,o),n&&e.addEventListener(l,n))},J=(e,t,n)=>{const o={...t},l=null==n?void 0:n.style;l&&(Object.entries(e).forEach((([e,t])=>{l[e]=t,delete o[e]})),Object.entries(o).forEach((([e])=>l[e]="")))},Q=e=>{const t="fragment"===e.type||"loop"===e.type;if(e.isRoot&&t)return e.wrapElement;if(!t)return e.el;const n=s(e);return Q(n)},Y=(e,n)=>{const o=(e=>{let n;return t(e)?n="c":l(e,"fragment")?n="f":l(e,"element")?n="e":l(e,"loop")?n="l":l(e,"text")?n="t":r(e)&&(n="et"),n})(e);if(!o)throw new Error("Unknown type wdom");const u=d[o](e,n);return Z(e,u,n)},Z=(e,t,n)=>{const o=ee(e,t,n);o.children=te(o,t,n);const l=$(o,t,n);return o.needRerender=l,"A"!==l&&n&&(o.el=n.el),l&&["D","R","SR"].includes(l)&&(null==n?void 0:n.componentKey)&&(x(n),N(n),o.oldChildren=n.children),o.oldProps=null==n?void 0:n.props,o},$=(e,t,n)=>{const o=n&&n.type,l=r(e),u=!!e.getParent&&s(e).type,i=ce(e),d="loop"===u&&c(i),p="text"===e.type&&t&&e.text===(null==n?void 0:n.text);let a;return a=l?"D":p?"N":o?t?d?"SU":"U":d?"SR":"R":"A",a},ee=(e,n,o)=>t(e)?n&&o?((e,t)=>{const{componentProps:n,componentChildren:o}=e,{props:l,children:r}=t;n&&p(n,l),o&&a(o,r);const u=e.reRender&&e.reRender();if(!u)throw Error("Unable reRender");return u})(o,e):e.resolve():e,te=(e,t,n)=>t&&n?oe(e,n):ne(e),ne=e=>(e.children||[]).map((t=>{const n=Y(t);return n.getParent=()=>e,n})),oe=(e,t)=>"loop"===e.type&&c(ce((e.children||[])[0]))?le(e,t):(e.children||[]).map(((n,o)=>{const l=Y(n,(t.children||[])[o]);return l.getParent=()=>e,l})),le=(e,t)=>{const{remakedChildren:n,unUsedChildren:o}=re(e,t);return o.map((e=>{const t=e.el;t&&t.parentNode&&t.parentNode.removeChild(t)})),n},re=(e,t)=>{const n=[...e.children||[]],o=[...t.children||[]];return{remakedChildren:n.map((t=>{const n=ue(t,o),l=Y(t,n);return n&&o.splice(o.indexOf(n),1),l.getParent=()=>e,l})),unUsedChildren:o}},ue=(e,t)=>{const n=ce(e);return t.find((e=>ce(e)===n))},ce=e=>{var t,n,o;return null!=(o=null==(t=null==e?void 0:e.componentProps)?void 0:t.key)?o:null==(n=null==e?void 0:e.props)?void 0:n.key},ie=(e,...t)=>({type:"fragment",children:t}),de=(e,t,n,o)=>{var l;h.value=!0;const r=se(e,t,n),u=Y(r,o),{isRoot:c,getParent:i,wrapElement:d,afterElement:s}=o;if(u.getParent=i,!c&&i){const e=(null==(l=i())?void 0:l.children)||[],t=e.indexOf(o);e.splice(t,1,u)}else u.isRoot=!0,u.wrapElement=d,u.afterElement=s;h.value=!1,O(u)},se=(e,t,n)=>({tagName:e.name,constructor:e,props:t,children:n,resolve:(o=t)=>{C(o);const l=e(t,n)((e=>()=>{var t;const n=null==(t=f.get(e))?void 0:t.up;let o=!1;return n&&(n(),o=!0),o})(o),t,n),r=pe(l,o,e,t,n),u=r;return b(o,(()=>de(e,t,n,u))),E(o,"vd").value=r,r}}),pe=(e,t,n,o,l)=>{const r=e(o),u=ae(e,t,n,o,l);return he(r,t,n,o,l,u),r},ae=(e,t,n,o,l)=>{const r=()=>ve(e,t,n,o,l,r);return r},ve=(e,t,n,o,l,r)=>{(e=>{v.value=e})(t),(()=>{var e;const t=null==(e=f.get(g()))?void 0:e.upR;(null==t?void 0:t.length)&&t.forEach((e=>e())),m.value=[],y.value=null})();const u=e(o);return b(t,(()=>de(n,o,l,u))),he(u,t,n,o,l,r),E(t,"vd").value=u,u},he=(e,t,n,o,l,r)=>{Object.assign(e,{componentProps:o,componentChildren:l,constructor:n,tagName:n.name,componentKey:t,reRender:r})},fe=(e,o,l)=>{if(n(e))return ie(o,...l);if(t(e)){const t=se(e,o,l);return h.value?t:t.resolve()}return{type:"element",tag:e,props:o,children:l}},me=(e,t)=>t.map((t=>{const n=ye(t);return n.getParent=()=>e.value,n})),ye=e=>{if(null==e||!1===e)return{type:null};if(Array.isArray(e)){const t={value:void 0},n={type:"loop",children:me(t,e)};return t.value=n,n}return"string"==typeof e||"number"==typeof e?{type:"text",text:e}:e};e.Fragment=ie,e.h=(e,n,...o)=>{const l={value:void 0},r=n||{},u=me(l,o),c=fe(e,r,u);return t(c)||(l.value=c),c},e.mount=e=>(t,n)=>e,e.mountCallback=e=>{f.get(g()).mts.push(e)},e.ref=e=>({value:e}),e.render=(e,t,n)=>{if(!t)throw Error("WrapELement is null");e.isRoot=!0,e.wrapElement=t;const o=q(e,!0);return n?(e.afterElement=n,t.insertBefore(o,n)):t.appendChild(o),()=>{var t;if(e.componentProps){const n=null==(t=f.get(e.componentProps))?void 0:t.vd.value;n&&(x(n),N(n),K(n))}}},e.updateCallback=(e,t=(()=>[]))=>{f.get(g()).upR.push((()=>S(e,t))),S(e,t)},Object.defineProperties(e,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})}));
1
+ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).lithent={})}(this,(function(e){"use strict";const t=e=>"function"==typeof e&&!n(e)||"object"==typeof e&&"resolve"in e,n=e=>"function"==typeof e&&e===ie,o=e=>"object"==typeof e&&!("resolve"in e),l=(e,t)=>o(e)&&e.type===t,r=e=>o(e)&&!e.type,u=(e,t)=>{var n,l;return o(e)&&(null==t?void 0:t.type)===e.type&&((null==(n=null==t?void 0:t.children)?void 0:n.length)===(null==(l=null==e?void 0:e.children)?void 0:l.length)||"loop"===e.type)},c=e=>null!=e,d=(e,t)=>"style"===e&&"object"==typeof t,i={c:(e,t)=>e.constructor===(null==t?void 0:t.constructor),l:u,t:u,e:(e,t)=>{var n,l;return o(e)&&"element"===(null==t?void 0:t.type)&&(null==t?void 0:t.tag)===e.tag&&(null==(n=null==t?void 0:t.children)?void 0:n.length)===(null==(l=null==e?void 0:e.children)?void 0:l.length)},f:(e,t)=>{var n,l;return o(e)&&"fragment"===(null==t?void 0:t.type)&&(null==(n=null==t?void 0:t.children)?void 0:n.length)===(null==(l=null==e?void 0:e.children)?void 0:l.length)},et:u},s=e=>{const t=e.getParent&&e.getParent();if(!t)throw Error("Not found parent vDom");return t},p=e=>e.replace(/^on(.*)/,((e,t)=>t.toLowerCase())),a=(e,t)=>{e&&t!==e&&(Object.keys(e).forEach((t=>delete e[t])),Object.entries(t||{}).forEach((([t,n])=>e[t]=n)))},v=(e,t)=>{e&&t!==e&&(e.splice(0,e.length),t&&t.forEach((t=>e.push(t))))},h={value:{}},f={value:!1},m=new WeakMap,y={value:[]},g={value:null},E=()=>h.value,b=(e,t)=>m.get(e)[t],C=(e,t)=>{m.get(e).up=()=>{y.value.push({componentKey:e,exec:t}),g.value||(g.value=setTimeout(x))}},R=e=>{h.value=e,(e=>{m.set(e,{vd:{value:null},up:()=>{},upR:[],upS:{value:0},upD:[],upCB:[],mts:[],umts:[]})})(e)},P=(e,t)=>{(e.children||[]).forEach((e=>{const n=e.componentKey;n&&t.push(n),P(e,t)}))},x=()=>{let e=[];y.value.forEach((t=>{var n,o;const l=null==(o=null==(n=m.get(t.componentKey))?void 0:n.vd)?void 0:o.value;l&&P(l,e)}));const t=[],n=y.value.reduce(((n,o)=>{const{componentKey:l}=o;return e.includes(l)||t.includes(l)||(t.push(l),n.push(o)),n}),[]);for(;n.length;){const e=n.shift();e&&e.exec()}},T=e=>{const{componentKey:t}=e;t&&k(t),w(e)},w=e=>{(e.children||[]).forEach((e=>{e.componentKey?T(e):w(e)}))},k=e=>{const t=m.get(e);t&&(t.umts.forEach((e=>e())),t.umts=[],m.delete(e))},S=e=>{const{componentKey:t}=e;if(t){const e=m.get(t),n=null==e?void 0:e.mts,o=null==e?void 0:e.upS;h.value=t,o&&(o.value=0),n&&(e.mts=[],n.forEach((e=>{const t=e();var n;t&&(n=t,m.get(E()).umts.push(n))})))}},j=(e,t=(()=>[]))=>{const n=m.get(E()),{upD:o,upS:l}=n,r=o[l.value];if(r&&O(r,t())){const t=e();t&&n.upCB.push(t)}o[l.value]=t(),l.value+=1},O=(e,t)=>!e.length&&!e.length||e.some(((e,n)=>e!==t[n])),N=e=>{const{needRerender:t}=e;if(t&&"N"!==t){(0,{A:F,D:D,R:_,U:V,SR:B,SU:M}[t])(e)}},K=e=>{e.props&&e.el&&I(e.props,e.el),(e.children||[]).forEach((e=>{K(e)}))},A=e=>{const t=e.wrapElement;U(e,t)},D=e=>{const t=s(e),n=Y(t);e.oldProps&&e.el&&I(e.oldProps,e.el),U(e,n)},U=(e,t)=>{var n,o;t&&e.el&&(1===(null==(n=e.el)?void 0:n.nodeType)?t.removeChild(e.el):11===(null==(o=e.el)?void 0:o.nodeType)&&L(e,t),delete e.el)},L=(e,t)=>{((null==e?void 0:e.oldChildren)||(null==e?void 0:e.children)||[]).forEach((e=>{var n,o;1===(null==(n=e.el)?void 0:n.nodeType)?t.removeChild(null==e?void 0:e.el):11===(null==(o=e.el)?void 0:o.nodeType)&&L(e,t)}))},B=e=>{D(e),F(e)},M=e=>{D(e),F(e,e.el)},F=(e,t)=>{t||(t=z(e,!0));const n=s(e);if(n.type){const o=Y(n);let l;l="loop"===n.type?H(n,s(n)):H(e,n),t&&o&&(l?o.insertBefore(t,l):o.appendChild(t))}S(e)},H=(e,t)=>{const n=t.children||[],o=n.indexOf(e)+1,l=n.slice(o),r=W(l),u=t.type||"";return r||(!t.isRoot&&["fragment","loop"].includes(u)?H(t,s(t)):t.isRoot&&t.afterElement?t.afterElement:void 0)},W=e=>e.reduce(((e,t)=>{const n=t.type,o=t.el,l=n&&["fragment","loop"].includes(n);return e||(l?W(t.children||[]):o&&11!==o.nodeType?o:e)}),void 0),_=e=>{const t=s(e),n=e.el;if(t.type&&n)if(11===n.nodeType)B(e);else{const o=Y(t),l=z(e,!0);o&&o.replaceChild(l,n)}S(e)},I=(e,t)=>{Object.entries(e||{}).forEach((([e,n])=>{e.match(/^on/)&&t.removeEventListener(p(e),n)}))},V=e=>{var t;const n=e.el;if("text"!==e.type){if(n){const{oldProps:o,props:l}=e;q(l,n,o),delete e.oldProps,"input"===e.tag&&(n.value=String((null==(t=null==e?void 0:e.props)?void 0:t.value)||""))}(e.children||[]).forEach((e=>N(e))),(e=>{const{componentKey:t}=e;if(t){const n=m.get(t),o=null==n?void 0:n.upCB,l=null==n?void 0:n.upS;h.value=t,l&&(l.value=0),e.constructor&&o&&(n.upCB=[],o.forEach((e=>e())))}})(e)}else X(e)},X=e=>{const t=e.el;t&&(t.nodeValue=String(e.text))},q=(e,t,n)=>{const o={...n};Object.entries(e||{}).forEach((([e,n])=>{"key"===e||("innerHTML"===e&&t&&"string"==typeof n?t.innerHTML=n:d(e,n)?Q(n,d(e,o.style)?o.style:{},t):((e,t)=>"ref"===e&&"object"==typeof t)(e,n)?n.value=t:e.match(/^on/)?J(t,e,n,o[e]):(e=>1===e.nodeType&&"radio"===e.type)(t)&&"checked"===e||(e=>1===e.nodeType&&"checkbox"===e.type)(t)&&"checked"===e?t.checked=!!n:(e=>1===e.nodeType&&"TEXTAREA"===e.tagName)(t)&&"value"===e?t.value=n:(e=>1===e.nodeType&&"OPTION"===e.tagName)(t)&&"selected"===e?t.selected=!!n:(e=>"number"==typeof e||"string"==typeof e)(n)&&t.setAttribute(e,String(n))),delete o[e]})),Object.keys(o).forEach((e=>t.removeAttribute(e)))},z=(e,t)=>{let n;const{type:o,tag:l,text:r,props:u,children:d=[]}=e;return"fragment"===o||"loop"===o?n=new DocumentFragment:"element"===o&&l?n=document.createElement(l):"text"===o&&c(r)&&(n=document.createTextNode(String(r))),G(d,n,t),q(u,n),e.el=n,S(e),n||document.createElement("div")},G=(e,t,n)=>{if(n){const o=e.reduce(((e,t)=>(t.type&&e.appendChild(z(t,n)),e)),new DocumentFragment);t&&o.hasChildNodes()&&t.appendChild(o)}},J=(e,t,n,o)=>{const l=p(t);o!==n&&(o&&e.removeEventListener(l,o),n&&e.addEventListener(l,n))},Q=(e,t,n)=>{const o={...t},l=null==n?void 0:n.style;l&&(Object.entries(e).forEach((([e,t])=>{l[e]=t,delete o[e]})),Object.entries(o).forEach((([e])=>l[e]="")))},Y=e=>{const t="fragment"===e.type||"loop"===e.type;return e.isRoot&&t?e.wrapElement:t?Y(s(e)):e.el},Z=(e,n)=>{const o=(e=>{let n;return t(e)?n="c":l(e,"fragment")?n="f":l(e,"element")?n="e":l(e,"loop")?n="l":l(e,"text")?n="t":r(e)&&(n="et"),n})(e);if(!o)throw new Error("Unknown type wdom");const u=i[o](e,n);return $(e,u,n)},$=(e,t,n)=>{const o=te(e,t,n);o.children=ne(o,t,n);const l=ee(o,t,n);return o.needRerender=l,"A"!==l&&n&&(o.el=n.el),l&&["D","R","SR"].includes(l)&&(null==n?void 0:n.componentKey)&&(T(n),K(n),o.oldChildren=n.children),o.oldProps=null==n?void 0:n.props,o},ee=(e,t,n)=>{const o=n&&n.type,l=r(e),u=!!e.getParent&&s(e).type,d=de(e),i="loop"===u&&c(d),p="text"===e.type&&t&&e.text===(null==n?void 0:n.text);let a;return a=l?"D":p?"N":o?t?i?"SU":"U":i?"SR":"R":"A",a},te=(e,n,o)=>t(e)?n&&o?((e,t)=>{const{componentProps:n,componentChildren:o}=e,{props:l,children:r}=t;n&&a(n,l),o&&v(o,r);const u=e.reRender&&e.reRender();if(!u)throw Error("Unable reRender");return u})(o,e):e.resolve():e,ne=(e,t,n)=>t&&n?le(e,n):oe(e),oe=e=>(e.children||[]).map((t=>{const n=Z(t);return n.getParent=()=>e,n})),le=(e,t)=>"loop"===e.type&&c(de((e.children||[])[0]))?re(e,t):(e.children||[]).map(((n,o)=>{const l=Z(n,(t.children||[])[o]);return l.getParent=()=>e,l})),re=(e,t)=>{const{remakedChildren:n,unUsedChildren:o}=ue(e,t);return o.map((e=>{const t=e.el;(null==t?void 0:t.parentNode)&&t.parentNode.removeChild(t)})),n},ue=(e,t)=>{const n=[...e.children||[]],o=[...t.children||[]];return{remakedChildren:n.map((t=>{const n=ce(t,o),l=Z(t,n);return n&&o.splice(o.indexOf(n),1),l.getParent=()=>e,l})),unUsedChildren:o}},ce=(e,t)=>{const n=de(e);return t.find((e=>de(e)===n))},de=e=>{var t,n,o;return null!=(o=null==(t=null==e?void 0:e.componentProps)?void 0:t.key)?o:null==(n=null==e?void 0:e.props)?void 0:n.key},ie=(e,...t)=>({type:"fragment",children:t}),se=(e,t,n,o)=>{var l;f.value=!0;const r=pe(e,t,n),u=Z(r,o),{isRoot:c,getParent:d,wrapElement:i,afterElement:s}=o;if(u.getParent=d,!c&&d){const e=(null==(l=d())?void 0:l.children)||[],t=e.indexOf(o);e.splice(t,1,u)}else u.isRoot=!0,u.wrapElement=i,u.afterElement=s;f.value=!1,N(u)},pe=(e,t,n)=>({tagName:e.name,constructor:e,props:t,children:n,resolve:(o=t)=>{R(o);const l=e(t,n)((e=>()=>{var t;const n=null==(t=m.get(e))?void 0:t.up;let o=!1;return n&&(n(),o=!0),o})(o),t,n),r=ae(l,o,e,t,n),u=r;return C(o,(()=>se(e,t,n,u))),b(o,"vd").value=r,r}}),ae=(e,t,n,o,l)=>{const r=e(o),u=ve(e,t,n,o,l);return fe(r,t,n,o,l,u),r},ve=(e,t,n,o,l)=>{const r=()=>he(e,t,n,o,l,r);return r},he=(e,t,n,o,l,r)=>{(e=>{h.value=e})(t),(()=>{var e;const t=null==(e=m.get(E()))?void 0:e.upR;(null==t?void 0:t.length)&&t.forEach((e=>e())),y.value=[],g.value=null})();const u=e(o);return C(t,(()=>se(n,o,l,u))),fe(u,t,n,o,l,r),b(t,"vd").value=u,u},fe=(e,t,n,o,l,r)=>{Object.assign(e,{componentProps:o,componentChildren:l,constructor:n,tagName:n.name,componentKey:t,reRender:r})},me=(e,o,l)=>{if(n(e))return ie(o,...l);if(t(e)){const t=pe(e,o,l);return f.value?t:t.resolve()}return{type:"element",tag:e,props:o,children:l}},ye=(e,t)=>t.map((t=>{const n=ge(t);return n.getParent=()=>e.value,n})),ge=e=>{if(null==e||!1===e)return{type:null};if(Array.isArray(e)){const t={value:void 0},n={type:"loop",children:ye(t,e)};return t.value=n,n}return"string"==typeof e||"number"==typeof e?{type:"text",text:e}:e};e.Fragment=ie,e.h=(e,n,...o)=>{const l={value:void 0},r=n||{},u=ye(l,o),c=me(e,r,u);return t(c)||(l.value=c),c},e.mount=e=>(t,n)=>e,e.mountCallback=e=>{m.get(E()).mts.push(e)},e.ref=e=>({value:e}),e.render=(e,t,n)=>{if(!t)throw Error("WrapELement is null");e.isRoot=!0,e.wrapElement=t;const o=z(e,!0);return n?(e.afterElement=n,t.insertBefore(o,n)):t.appendChild(o),()=>{var t;if(e.componentProps){const n=null==(t=m.get(e.componentProps))?void 0:t.vd.value;n&&(T(n),K(n),A(n))}}},e.updateCallback=(e,t=(()=>[]))=>{m.get(E()).upR.push((()=>j(e,t))),j(e,t)},Object.defineProperties(e,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})}));
2
2
  //# sourceMappingURL=lithent.umd.js.map