lithent 0.36.1 → 0.36.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # lithent
2
2
 
3
- > A lightweight Virtual DOM UI library
3
+ > An extensible virtual DOM library for lightweight use in a variety of environments.
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
@@ -9,7 +9,8 @@ used lightly in a variety of situations.
9
9
  - https://superlucky84.github.io/lithent
10
10
  - (This guide page is written in lithent.)
11
11
 
12
- `(9.54 KiB / gzip: 3.54 KiB)`
12
+ `(9.47 KiB / gzip: 3.49 KiB)`
13
+
13
14
 
14
15
  ## 🚩 Table of Contents
15
16
 
package/dist/lithent.mjs CHANGED
@@ -1,8 +1,5 @@
1
- const checkCustemComponentFunction = (target) => typeof target === "function" && !checkFragmentFunction(target) || typeof target === "object" && "resolve" in target;
2
- const checkFragmentFunction = (target) => typeof target === "function" && target === Fragment;
3
1
  const checkPlainWDomType = (wDom) => typeof wDom === "object" && !("resolve" in wDom);
4
2
  const checkPlainType = (wDom, typeName) => checkPlainWDomType(wDom) && wDom.type === typeName;
5
- const checkEmptyElement = (wDom) => checkPlainWDomType(wDom) && !wDom.type;
6
3
  const checkSameCustomComponent = (newWDom, originalWDom) => newWDom.constructor === (originalWDom == null ? void 0 : originalWDom.constructor);
7
4
  const checkSameFragment = (newWDom, originalWDom) => {
8
5
  var _a, _b;
@@ -16,24 +13,18 @@ const checkNormalTypeElement = (newWDom, originalWDom) => {
16
13
  var _a, _b;
17
14
  return checkPlainWDomType(newWDom) && (originalWDom == null ? void 0 : originalWDom.type) === newWDom.type && (((_a = originalWDom == null ? void 0 : originalWDom.children) == null ? void 0 : _a.length) === ((_b = newWDom == null ? void 0 : newWDom.children) == null ? void 0 : _b.length) || newWDom.type === "loop");
18
15
  };
16
+ const checkCustemComponentFunction = (target) => typeof target === "function" && !checkFragmentFunction(target) || typeof target === "object" && "resolve" in target;
17
+ const checkFragmentFunction = (target) => typeof target === "function" && target === Fragment;
18
+ const checkEmptyElement = (wDom) => checkPlainWDomType(wDom) && !wDom.type;
19
19
  const checkExisty = (value) => value !== null && value !== void 0;
20
20
  const checkStyleData = (dataKey, dataValue) => dataKey === "style" && typeof dataValue === "object";
21
21
  const checkRefData = (dataKey, dataValue) => dataKey === "ref" && typeof dataValue === "object";
22
- const checkOptionElement = (element) => {
23
- return element.nodeType === 1 && element.tagName === "OPTION";
24
- };
25
- const checkTextareaElement = (element) => {
26
- return element.nodeType === 1 && element.tagName === "TEXTAREA";
27
- };
28
- const checkCheckboxElement = (element) => {
29
- return element.nodeType === 1 && element.type === "checkbox";
30
- };
31
- const checkRadioElement = (element) => {
32
- return element.nodeType === 1 && element.type === "radio";
33
- };
22
+ const checkOptionElement = (element) => element.nodeType === 1 && element.tagName === "OPTION";
23
+ const checkTextareaElement = (element) => element.nodeType === 1 && element.tagName === "TEXTAREA";
24
+ const checkCheckableElement = (element) => element.nodeType === 1 && ["radio", "checkbox"].includes(element.type);
34
25
  const checkNormalAttribute = (dataValue) => typeof dataValue === "number" || typeof dataValue === "string";
35
26
  const getWDomType = (wDom) => {
36
- let result;
27
+ let result = "et";
37
28
  if (checkCustemComponentFunction(wDom)) {
38
29
  result = "c";
39
30
  } else if (checkPlainType(wDom, "fragment")) {
@@ -59,9 +50,6 @@ const checkSameWDomWithOriginal = {
59
50
  };
60
51
  const getParent = (vDom) => {
61
52
  const parentVDom = vDom.getParent && vDom.getParent();
62
- if (!parentVDom) {
63
- throw Error("Not found parent vDom");
64
- }
65
53
  return parentVDom;
66
54
  };
67
55
  const reRender = (vDom, infoVdom) => {
@@ -74,9 +62,6 @@ const reRender = (vDom, infoVdom) => {
74
62
  updateChildren(children, infoChidren);
75
63
  }
76
64
  const newVDom = vDom.reRender && vDom.reRender();
77
- if (!newVDom) {
78
- throw Error("Unable reRender");
79
- }
80
65
  return newVDom;
81
66
  };
82
67
  const getEventName = (eventKey) => eventKey.replace(/^on(.*)/, (_match, p1) => p1.toLowerCase());
@@ -261,12 +246,10 @@ const runUpdatedQueueFromWDom = (newWDom) => {
261
246
  };
262
247
  const checkNeedPushQueue = (originalDefs, newDefs) => !originalDefs.length && !originalDefs.length ? true : originalDefs.some((def, index) => def !== newDefs[index]);
263
248
  const render = (wDom, wrapElement, afterElement) => {
264
- if (!wrapElement) {
265
- throw Error("WrapELement is null");
266
- }
249
+ wrapElement != null ? wrapElement : wrapElement = document.body;
267
250
  wDom.isRoot = true;
268
251
  wDom.wrapElement = wrapElement;
269
- const Dom = wDomToDom(wDom, true);
252
+ const Dom = wDomToDom(wDom);
270
253
  if (afterElement) {
271
254
  wDom.afterElement = afterElement;
272
255
  wrapElement.insertBefore(Dom, afterElement);
@@ -288,15 +271,14 @@ const render = (wDom, wrapElement, afterElement) => {
288
271
  const wDomUpdate = (newWDomTree) => {
289
272
  const { needRerender } = newWDomTree;
290
273
  if (needRerender && needRerender !== "N") {
291
- const exec = {
274
+ ({
292
275
  A: typeAdd,
293
276
  D: typeDelete,
294
277
  R: typeReplace,
295
278
  U: typeUpdate,
296
279
  SR: typeSortedReplace,
297
280
  SU: typeSortedUpdate
298
- }[needRerender];
299
- exec(newWDomTree);
281
+ })[needRerender](newWDomTree);
300
282
  }
301
283
  };
302
284
  const recursiveRemoveEvent = (originalWDom) => {
@@ -308,16 +290,16 @@ const recursiveRemoveEvent = (originalWDom) => {
308
290
  });
309
291
  };
310
292
  const rootDelete = (newWDom) => {
311
- const parent = newWDom.wrapElement;
312
- deleteRealDom(newWDom, parent);
293
+ deleteRealDom(newWDom, newWDom.wrapElement);
313
294
  };
314
295
  const typeDelete = (newWDom) => {
315
- const parentWDom = getParent(newWDom);
316
- const parent = findRealParentElement(parentWDom);
317
296
  if (newWDom.oldProps && newWDom.el) {
318
297
  removeEvent(newWDom.oldProps, newWDom.el);
319
298
  }
320
- deleteRealDom(newWDom, parent);
299
+ deleteRealDom(
300
+ newWDom,
301
+ findRealParentElement(getParent(newWDom))
302
+ );
321
303
  };
322
304
  const deleteRealDom = (newWDom, parent) => {
323
305
  var _a, _b;
@@ -350,18 +332,13 @@ const typeSortedUpdate = (newWDom) => {
350
332
  };
351
333
  const typeAdd = (newWDom, newElement) => {
352
334
  if (!newElement) {
353
- newElement = wDomToDom(newWDom, true);
335
+ newElement = wDomToDom(newWDom);
354
336
  }
355
337
  const parentWDom = getParent(newWDom);
356
338
  if (parentWDom.type) {
357
339
  const parentEl = findRealParentElement(parentWDom);
358
340
  const isLoop = parentWDom.type === "loop";
359
- let nextEl;
360
- if (isLoop) {
361
- nextEl = startFindNextBrotherElement(parentWDom, getParent(parentWDom));
362
- } else {
363
- nextEl = startFindNextBrotherElement(newWDom, parentWDom);
364
- }
341
+ const nextEl = isLoop ? startFindNextBrotherElement(parentWDom, getParent(parentWDom)) : startFindNextBrotherElement(newWDom, parentWDom);
365
342
  if (newElement && parentEl) {
366
343
  if (nextEl) {
367
344
  parentEl.insertBefore(newElement, nextEl);
@@ -413,7 +390,7 @@ const typeReplace = (newWDom) => {
413
390
  typeSortedReplace(newWDom);
414
391
  } else {
415
392
  const parentElement = findRealParentElement(parentWDom);
416
- const newElement = wDomToDom(newWDom, true);
393
+ const newElement = wDomToDom(newWDom);
417
394
  if (parentElement) {
418
395
  parentElement.replaceChild(newElement, orignalElement);
419
396
  }
@@ -480,9 +457,7 @@ const updateProps = (props, element, oldProps) => {
480
457
  dataValue,
481
458
  originalProps[dataKey]
482
459
  );
483
- } else if (checkRadioElement(element) && dataKey === "checked") {
484
- element.checked = !!dataValue;
485
- } else if (checkCheckboxElement(element) && dataKey === "checked") {
460
+ } else if (checkCheckableElement(element) && dataKey === "checked") {
486
461
  element.checked = !!dataValue;
487
462
  } else if (checkTextareaElement(element) && dataKey === "value") {
488
463
  element.value = dataValue;
@@ -498,7 +473,7 @@ const updateProps = (props, element, oldProps) => {
498
473
  (dataKey) => element.removeAttribute(dataKey)
499
474
  );
500
475
  };
501
- const wDomToDom = (wDom, init) => {
476
+ const wDomToDom = (wDom) => {
502
477
  let element;
503
478
  const { type, tag, text, props, children = [] } = wDom;
504
479
  const isVirtualType = type === "fragment" || type === "loop";
@@ -508,27 +483,27 @@ const wDomToDom = (wDom, init) => {
508
483
  element = document.createElement(tag);
509
484
  } else if (type === "text" && checkExisty(text)) {
510
485
  element = document.createTextNode(String(text));
486
+ } else {
487
+ element = document.createElement("e");
511
488
  }
512
- wDomChildrenToDom(children, element, init);
489
+ wDomChildrenToDom(children, element);
513
490
  updateProps(props, element);
514
491
  wDom.el = element;
515
492
  runMountedQueueFromWDom(wDom);
516
- return element || document.createElement("div");
517
- };
518
- const wDomChildrenToDom = (children, parentElement, init) => {
519
- if (init) {
520
- const elementChildren = children.reduce(
521
- (acc, childItem) => {
522
- if (childItem.type) {
523
- acc.appendChild(wDomToDom(childItem, init));
524
- }
525
- return acc;
526
- },
527
- new DocumentFragment()
528
- );
529
- if (parentElement && elementChildren.hasChildNodes()) {
530
- parentElement.appendChild(elementChildren);
531
- }
493
+ return element;
494
+ };
495
+ const wDomChildrenToDom = (children, parentElement) => {
496
+ const elementChildren = children.reduce(
497
+ (acc, childItem) => {
498
+ if (childItem.type) {
499
+ acc.appendChild(wDomToDom(childItem));
500
+ }
501
+ return acc;
502
+ },
503
+ new DocumentFragment()
504
+ );
505
+ if (parentElement && elementChildren.hasChildNodes()) {
506
+ parentElement.appendChild(elementChildren);
532
507
  }
533
508
  };
534
509
  const updateEvent = (element, eventKey, newEventHandler, oldEventHandler) => {
@@ -565,15 +540,11 @@ const findRealParentElement = (vDom) => {
565
540
  }
566
541
  return findRealParentElement(getParent(vDom));
567
542
  };
568
- const makeNewWDomTree = (newWDom, originalWDom) => {
569
- const type = getWDomType(newWDom);
570
- if (!type) {
571
- throw new Error("Unknown type wdom");
572
- }
573
- const isSameType = checkSameWDomWithOriginal[type](newWDom, originalWDom);
574
- const result = remakeNewWDom(newWDom, isSameType, originalWDom);
575
- return result;
576
- };
543
+ const makeNewWDomTree = (newWDom, originalWDom) => remakeNewWDom(
544
+ newWDom,
545
+ checkSameWDomWithOriginal[getWDomType(newWDom)](newWDom, originalWDom),
546
+ originalWDom
547
+ );
577
548
  const remakeNewWDom = (newWDom, isSameType, originalWDom) => {
578
549
  const remakeWDom = generalize(newWDom, isSameType, originalWDom);
579
550
  remakeWDom.children = remakeChildrenForDiff(
@@ -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\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
+ {"version":3,"file":"lithent.mjs","sources":["../src/utils/predicator.ts","../src/utils/index.ts","../src/utils/universalRef.ts","../src/hook/unmount.ts","../src/hook/mountCallback.ts","../src/hook/useUpdate.ts","../src/render.ts","../src/diff.ts","../src/hook/updateCallback.ts","../src/wDom.ts","../src/hook/ref.ts"],"sourcesContent":["import { Fragment } from '@/wDom';\nimport {\n WDom,\n TagFunction,\n TagFunctionResolver,\n FragmentFunction,\n WDomType,\n} from '@/types';\n\ntype WDomParam =\n | string\n | WDom\n | TagFunction\n | TagFunctionResolver\n | FragmentFunction;\n\n/**\n * Predicator\n */\n\nconst checkPlainWDomType = (wDom: WDomParam): wDom is WDom =>\n typeof wDom === 'object' && !('resolve' in wDom);\n\nconst checkPlainType = (wDom: WDomParam, typeName: string) =>\n checkPlainWDomType(wDom) && wDom.type === typeName;\n\nconst checkSameCustomComponent = (\n newWDom: WDom | TagFunction | TagFunctionResolver,\n originalWDom?: WDom\n) => newWDom.constructor === originalWDom?.constructor;\n\nconst checkSameFragment = (\n newWDom: WDom | TagFunction | TagFunctionResolver,\n originalWDom?: WDom\n) =>\n checkPlainWDomType(newWDom) &&\n originalWDom?.type === 'fragment' &&\n originalWDom?.children?.length === newWDom?.children?.length;\n\nconst checkSameTagElement = (\n newWDom: WDom | TagFunction | TagFunctionResolver,\n originalWDom?: WDom\n) =>\n checkPlainWDomType(newWDom) &&\n originalWDom?.type === 'element' &&\n originalWDom?.tag === newWDom.tag &&\n originalWDom?.children?.length === newWDom?.children?.length;\n\nconst checkNormalTypeElement = (\n newWDom: WDom | TagFunction | TagFunctionResolver,\n originalWDom?: WDom\n) =>\n checkPlainWDomType(newWDom) &&\n originalWDom?.type === newWDom.type &&\n (originalWDom?.children?.length === newWDom?.children?.length ||\n newWDom.type === 'loop');\n\nexport const checkCustemComponentFunction = (\n target: WDomParam\n): target is TagFunction | TagFunctionResolver =>\n (typeof target === 'function' && !checkFragmentFunction(target)) ||\n (typeof target === 'object' && 'resolve' in target);\n\nexport const checkFragmentFunction = (\n target: unknown\n): target is FragmentFunction =>\n typeof target === 'function' && target === Fragment;\n\nexport const checkEmptyElement = (wDom: WDomParam) =>\n checkPlainWDomType(wDom) && !wDom.type;\n\nexport const checkExisty = (value: unknown) =>\n value !== null && value !== undefined;\n\nexport const checkStyleData = (\n dataKey: string,\n dataValue: unknown\n): dataValue is Record<string, string> =>\n dataKey === 'style' && typeof dataValue === 'object';\n\nexport const checkRefData = (\n dataKey: string,\n dataValue: unknown\n): dataValue is { value: HTMLElement | DocumentFragment | Text | undefined } =>\n dataKey === 'ref' && typeof dataValue === 'object';\n\nexport const checkOptionElement = (element: any): element is HTMLElement =>\n element.nodeType === 1 && element.tagName === 'OPTION';\n\nexport const checkTextareaElement = (element: any): element is HTMLElement =>\n element.nodeType === 1 && element.tagName === 'TEXTAREA';\n\nexport const checkCheckableElement = (element: any): element is HTMLElement =>\n element.nodeType === 1 && ['radio', 'checkbox'].includes(element.type);\n\nexport const 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 => {\n let result: WDomType = 'et';\n\n if (checkCustemComponentFunction(wDom)) {\n result = 'c';\n } else if (checkPlainType(wDom, 'fragment')) {\n result = 'f';\n } else if (checkPlainType(wDom, 'element')) {\n result = 'e';\n } else if (checkPlainType(wDom, 'loop')) {\n result = 'l';\n } else if (checkPlainType(wDom, 'text')) {\n result = 't';\n } else if (checkEmptyElement(wDom)) {\n result = 'et';\n }\n\n return result;\n};\n\nexport const checkSameWDomWithOriginal = {\n c: checkSameCustomComponent,\n l: checkNormalTypeElement,\n t: checkNormalTypeElement,\n e: checkSameTagElement,\n f: checkSameFragment,\n et: checkNormalTypeElement,\n};\n","import { WDom, TagFunctionResolver, Props } from '@/types';\n\nexport const getParent = (vDom: WDom) => {\n const parentVDom = vDom.getParent && vDom.getParent();\n\n return parentVDom as WDom;\n};\n\nexport const reRender = (vDom: WDom, infoVdom: TagFunctionResolver) => {\n const { 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 return newVDom as WDom;\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","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\nconst 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 checkCheckableElement,\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 wrapElement ??= document.body;\n wDom.isRoot = true;\n wDom.wrapElement = wrapElement;\n\n const Dom = wDomToDom(wDom);\n\n if (afterElement) {\n wDom.afterElement = afterElement;\n wrapElement.insertBefore(Dom, afterElement);\n } else {\n wrapElement.appendChild(Dom);\n }\n\n 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 ({\n A: typeAdd,\n D: typeDelete,\n R: typeReplace,\n U: typeUpdate,\n SR: typeSortedReplace,\n SU: typeSortedUpdate,\n })[needRerender](newWDomTree);\n }\n};\n\nexport const recursiveRemoveEvent = (originalWDom: WDom) => {\n if (originalWDom.props && originalWDom.el) {\n removeEvent(originalWDom.props, originalWDom.el);\n }\n\n (originalWDom.children || []).forEach((childItem: WDom) => {\n recursiveRemoveEvent(childItem);\n });\n};\n\nconst rootDelete = (newWDom: WDom) => {\n deleteRealDom(newWDom, newWDom.wrapElement as HTMLElement);\n};\n\nconst typeDelete = (newWDom: WDom) => {\n if (newWDom.oldProps && newWDom.el) {\n removeEvent(newWDom.oldProps, newWDom.el);\n }\n\n deleteRealDom(\n newWDom,\n findRealParentElement(getParent(newWDom)) as HTMLElement\n );\n};\n\nconst deleteRealDom = (newWDom: WDom, parent: HTMLElement) => {\n if (parent && newWDom.el) {\n if (newWDom.el?.nodeType === 1) {\n parent.removeChild(newWDom.el);\n } else if (newWDom.el?.nodeType === 11) {\n findChildWithRemoveElement(newWDom, parent as HTMLElement);\n }\n delete newWDom.el;\n }\n};\n\nconst findChildWithRemoveElement = (newWDom: WDom, parent: HTMLElement) => {\n (newWDom?.oldChildren || newWDom?.children || []).forEach(item => {\n if (item.el?.nodeType === 1) {\n parent.removeChild(item?.el);\n } else if (item.el?.nodeType === 11) {\n findChildWithRemoveElement(item, parent);\n }\n });\n};\n\nconst typeSortedReplace = (newWDom: WDom) => {\n typeDelete(newWDom);\n typeAdd(newWDom);\n};\n\nconst typeSortedUpdate = (newWDom: WDom) => {\n typeDelete(newWDom);\n typeAdd(newWDom, newWDom.el);\n};\n\nconst typeAdd = (\n newWDom: WDom,\n newElement?: HTMLElement | DocumentFragment | Text\n) => {\n if (!newElement) {\n newElement = wDomToDom(newWDom);\n }\n\n const parentWDom = getParent(newWDom);\n if (parentWDom.type) {\n const parentEl = findRealParentElement(parentWDom);\n const isLoop = parentWDom.type === 'loop';\n const nextEl = isLoop\n ? startFindNextBrotherElement(parentWDom, getParent(parentWDom))\n : startFindNextBrotherElement(newWDom, parentWDom);\n\n if (newElement && parentEl) {\n if (nextEl) {\n parentEl.insertBefore(newElement, nextEl);\n } else {\n parentEl.appendChild(newElement);\n }\n }\n }\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);\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 (checkCheckableElement(element) && dataKey === 'checked') {\n (element as HTMLInputElement).checked = !!dataValue;\n } else if (checkTextareaElement(element) && dataKey === 'value') {\n (element as HTMLInputElement).value = dataValue as string;\n } else if (checkOptionElement(element) && dataKey === 'selected') {\n (element as HTMLOptionElement).selected = !!dataValue;\n } else if (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) => {\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 } else {\n element = document.createElement('e');\n }\n\n wDomChildrenToDom(children, element);\n updateProps(props, element);\n\n wDom.el = element;\n\n runMountedQueueFromWDom(wDom);\n\n return element;\n};\n\nconst wDomChildrenToDom = (\n children: WDom[],\n parentElement?: HTMLElement | DocumentFragment | Text\n) => {\n const elementChildren = children.reduce(\n (acc: DocumentFragment, childItem: WDom) => {\n if (childItem.type) {\n acc.appendChild(wDomToDom(childItem));\n }\n\n return acc;\n },\n new DocumentFragment()\n );\n\n if (parentElement && elementChildren.hasChildNodes()) {\n parentElement.appendChild(elementChildren);\n }\n};\n\nconst updateEvent = (\n element: HTMLElement,\n eventKey: string,\n newEventHandler: (e: Event) => void,\n oldEventHandler: (e: Event) => void\n) => {\n const eventName = getEventName(eventKey);\n\n if (oldEventHandler !== newEventHandler) {\n if (oldEventHandler) {\n element.removeEventListener(eventName, oldEventHandler);\n }\n\n if (newEventHandler) {\n element.addEventListener(eventName, newEventHandler);\n }\n }\n};\n\nconst updateStyle = (\n style: Record<string, string>,\n oldStyle: Record<string, string>,\n element?: HTMLElement | 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 remakeNewWDom(\n newWDom,\n checkSameWDomWithOriginal[getWDomType(newWDom)](newWDom, originalWDom),\n originalWDom\n );\n\nconst remakeNewWDom = (\n newWDom: WDom | TagFunctionResolver,\n isSameType: boolean,\n originalWDom?: WDom\n) => {\n const remakeWDom = generalize(newWDom, isSameType, originalWDom);\n\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,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"}})}));
1
+ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).lithent={})}(this,(function(e){"use strict";const t=e=>"object"==typeof e&&!("resolve"in e),n=(e,n)=>t(e)&&e.type===n,l=(e,n)=>{var l,o;return t(e)&&(null==n?void 0:n.type)===e.type&&((null==(l=null==n?void 0:n.children)?void 0:l.length)===(null==(o=null==e?void 0:e.children)?void 0:o.length)||"loop"===e.type)},o=e=>"function"==typeof e&&!r(e)||"object"==typeof e&&"resolve"in e,r=e=>"function"==typeof e&&e===ie,u=e=>t(e)&&!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:l,t:l,e:(e,n)=>{var l,o;return t(e)&&"element"===(null==n?void 0:n.type)&&(null==n?void 0:n.tag)===e.tag&&(null==(l=null==n?void 0:n.children)?void 0:l.length)===(null==(o=null==e?void 0:e.children)?void 0:o.length)},f:(e,n)=>{var l,o;return t(e)&&"fragment"===(null==n?void 0:n.type)&&(null==(l=null==n?void 0:n.children)?void 0:l.length)===(null==(o=null==e?void 0:e.children)?void 0:o.length)},et:l},s=e=>e.getParent&&e.getParent(),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:{}},m={value:!1},f=new WeakMap,y={value:[]},g={value:null},E=()=>h.value,b=(e,t)=>f.get(e)[t],C=(e,t)=>{f.get(e).up=()=>{y.value.push({componentKey:e,exec:t}),g.value||(g.value=setTimeout(x))}},P=e=>{h.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)}))},x=()=>{let e=[];y.value.forEach((t=>{var n,l;const o=null==(l=null==(n=f.get(t.componentKey))?void 0:n.vd)?void 0:l.value;o&&R(o,e)}));const t=[],n=y.value.reduce(((n,l)=>{const{componentKey:o}=l;return e.includes(o)||t.includes(o)||(t.push(o),n.push(l)),n}),[]);for(;n.length;){const e=n.shift();e&&e.exec()}},T=e=>{const{componentKey:t}=e;t&&j(t),S(e)},S=e=>{(e.children||[]).forEach((e=>{e.componentKey?T(e):S(e)}))},j=e=>{const t=f.get(e);t&&(t.umts.forEach((e=>e())),t.umts=[],f.delete(e))},O=e=>{const{componentKey:t}=e;if(t){const e=f.get(t),n=null==e?void 0:e.mts,l=null==e?void 0:e.upS;h.value=t,l&&(l.value=0),n&&(e.mts=[],n.forEach((e=>{const t=e();var n;t&&(n=t,f.get(E()).umts.push(n))})))}},k=(e,t=(()=>[]))=>{const n=f.get(E()),{upD:l,upS:o}=n,r=l[o.value];if(r&&N(r,t())){const t=e();t&&n.upCB.push(t)}l[o.value]=t(),o.value+=1},N=(e,t)=>!e.length&&!e.length||e.some(((e,n)=>e!==t[n])),K=e=>{const{needRerender:t}=e;t&&"N"!==t&&{A:F,D:D,R:I,U:W,SR:U,SU:M}[t](e)},w=e=>{e.props&&e.el&&V(e.props,e.el),(e.children||[]).forEach((e=>{w(e)}))},A=e=>{B(e,e.wrapElement)},D=e=>{e.oldProps&&e.el&&V(e.oldProps,e.el),B(e,Y(s(e)))},B=(e,t)=>{var n,l;t&&e.el&&(1===(null==(n=e.el)?void 0:n.nodeType)?t.removeChild(e.el):11===(null==(l=e.el)?void 0:l.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,l;1===(null==(n=e.el)?void 0:n.nodeType)?t.removeChild(null==e?void 0:e.el):11===(null==(l=e.el)?void 0:l.nodeType)&&L(e,t)}))},U=e=>{D(e),F(e)},M=e=>{D(e),F(e,e.el)},F=(e,t)=>{t||(t=z(e));const n=s(e);if(n.type){const l=Y(n),o="loop"===n.type?H(n,s(n)):H(e,n);t&&l&&(o?l.insertBefore(t,o):l.appendChild(t))}O(e)},H=(e,t)=>{const n=t.children||[],l=n.indexOf(e)+1,o=n.slice(l),r=_(o),u=t.type||"";return r||(!t.isRoot&&["fragment","loop"].includes(u)?H(t,s(t)):t.isRoot&&t.afterElement?t.afterElement:void 0)},_=e=>e.reduce(((e,t)=>{const n=t.type,l=t.el,o=n&&["fragment","loop"].includes(n);return e||(o?_(t.children||[]):l&&11!==l.nodeType?l:e)}),void 0),I=e=>{const t=s(e),n=e.el;if(t.type&&n)if(11===n.nodeType)U(e);else{const l=Y(t),o=z(e);l&&l.replaceChild(o,n)}O(e)},V=(e,t)=>{Object.entries(e||{}).forEach((([e,n])=>{e.match(/^on/)&&t.removeEventListener(p(e),n)}))},W=e=>{var t;const n=e.el;if("text"!==e.type){if(n){const{oldProps:l,props:o}=e;q(o,n,l),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=>K(e))),(e=>{const{componentKey:t}=e;if(t){const n=f.get(t),l=null==n?void 0:n.upCB,o=null==n?void 0:n.upS;h.value=t,o&&(o.value=0),e.constructor&&l&&(n.upCB=[],l.forEach((e=>e())))}})(e)}else X(e)},X=e=>{const t=e.el;t&&(t.nodeValue=String(e.text))},q=(e,t,n)=>{const l={...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,l.style)?l.style:{},t):((e,t)=>"ref"===e&&"object"==typeof t)(e,n)?n.value=t:e.match(/^on/)?J(t,e,n,l[e]):(e=>1===e.nodeType&&["radio","checkbox"].includes(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 l[e]})),Object.keys(l).forEach((e=>t.removeAttribute(e)))},z=e=>{let t;const{type:n,tag:l,text:o,props:r,children:u=[]}=e;return t="fragment"===n||"loop"===n?new DocumentFragment:"element"===n&&l?document.createElement(l):"text"===n&&c(o)?document.createTextNode(String(o)):document.createElement("e"),G(u,t),q(r,t),e.el=t,O(e),t},G=(e,t)=>{const n=e.reduce(((e,t)=>(t.type&&e.appendChild(z(t)),e)),new DocumentFragment);t&&n.hasChildNodes()&&t.appendChild(n)},J=(e,t,n,l)=>{const o=p(t);l!==n&&(l&&e.removeEventListener(o,l),n&&e.addEventListener(o,n))},Q=(e,t,n)=>{const l={...t},o=null==n?void 0:n.style;o&&(Object.entries(e).forEach((([e,t])=>{o[e]=t,delete l[e]})),Object.entries(l).forEach((([e])=>o[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,t)=>$(e,i[(e=>{let t="et";return o(e)?t="c":n(e,"fragment")?t="f":n(e,"element")?t="e":n(e,"loop")?t="l":n(e,"text")?t="t":u(e)&&(t="et"),t})(e)](e,t),t),$=(e,t,n)=>{const l=te(e,t,n);l.children=ne(l,t,n);const o=ee(l,t,n);return l.needRerender=o,"A"!==o&&n&&(l.el=n.el),o&&["D","R","SR"].includes(o)&&(null==n?void 0:n.componentKey)&&(T(n),w(n),l.oldChildren=n.children),l.oldProps=null==n?void 0:n.props,l},ee=(e,t,n)=>{const l=n&&n.type,o=u(e),r=!!e.getParent&&s(e).type,d=de(e),i="loop"===r&&c(d),p="text"===e.type&&t&&e.text===(null==n?void 0:n.text);let a;return a=o?"D":p?"N":l?t?i?"SU":"U":i?"SR":"R":"A",a},te=(e,t,n)=>o(e)?t&&n?((e,t)=>{const{componentProps:n,componentChildren:l}=e,{props:o,children:r}=t;return n&&a(n,o),l&&v(l,r),e.reRender&&e.reRender()})(n,e):e.resolve():e,ne=(e,t,n)=>t&&n?oe(e,n):le(e),le=e=>(e.children||[]).map((t=>{const n=Z(t);return n.getParent=()=>e,n})),oe=(e,t)=>"loop"===e.type&&c(de((e.children||[])[0]))?re(e,t):(e.children||[]).map(((n,l)=>{const o=Z(n,(t.children||[])[l]);return o.getParent=()=>e,o})),re=(e,t)=>{const{remakedChildren:n,unUsedChildren:l}=ue(e,t);return l.map((e=>{const t=e.el;(null==t?void 0:t.parentNode)&&t.parentNode.removeChild(t)})),n},ue=(e,t)=>{const n=[...e.children||[]],l=[...t.children||[]];return{remakedChildren:n.map((t=>{const n=ce(t,l),o=Z(t,n);return n&&l.splice(l.indexOf(n),1),o.getParent=()=>e,o})),unUsedChildren:l}},ce=(e,t)=>{const n=de(e);return t.find((e=>de(e)===n))},de=e=>{var t,n,l;return null!=(l=null==(t=null==e?void 0:e.componentProps)?void 0:t.key)?l:null==(n=null==e?void 0:e.props)?void 0:n.key},ie=(e,...t)=>({type:"fragment",children:t}),se=(e,t,n,l)=>{var o;m.value=!0;const r=pe(e,t,n),u=Z(r,l),{isRoot:c,getParent:d,wrapElement:i,afterElement:s}=l;if(u.getParent=d,!c&&d){const e=(null==(o=d())?void 0:o.children)||[],t=e.indexOf(l);e.splice(t,1,u)}else u.isRoot=!0,u.wrapElement=i,u.afterElement=s;m.value=!1,K(u)},pe=(e,t,n)=>({tagName:e.name,constructor:e,props:t,children:n,resolve:(l=t)=>{P(l);const o=e(t,n)((e=>()=>{var t;const n=null==(t=f.get(e))?void 0:t.up;let l=!1;return n&&(n(),l=!0),l})(l),t,n),r=ae(o,l,e,t,n),u=r;return C(l,(()=>se(e,t,n,u))),b(l,"vd").value=r,r}}),ae=(e,t,n,l,o)=>{const r=e(l),u=ve(e,t,n,l,o);return me(r,t,n,l,o,u),r},ve=(e,t,n,l,o)=>{const r=()=>he(e,t,n,l,o,r);return r},he=(e,t,n,l,o,r)=>{(e=>{h.value=e})(t),(()=>{var e;const t=null==(e=f.get(E()))?void 0:e.upR;(null==t?void 0:t.length)&&t.forEach((e=>e())),y.value=[],g.value=null})();const u=e(l);return C(t,(()=>se(n,l,o,u))),me(u,t,n,l,o,r),b(t,"vd").value=u,u},me=(e,t,n,l,o,r)=>{Object.assign(e,{componentProps:l,componentChildren:o,constructor:n,tagName:n.name,componentKey:t,reRender:r})},fe=(e,t,n)=>{if(r(e))return ie(t,...n);if(o(e)){const l=pe(e,t,n);return m.value?l:l.resolve()}return{type:"element",tag:e,props:t,children:n}},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,t,...n)=>{const l={value:void 0},r=t||{},u=ye(l,n),c=fe(e,r,u);return o(c)||(l.value=c),c},e.mount=e=>(t,n)=>e,e.mountCallback=e=>{f.get(E()).mts.push(e)},e.ref=e=>({value:e}),e.render=(e,t,n)=>{null!=t||(t=document.body),e.isRoot=!0,e.wrapElement=t;const l=z(e);return n?(e.afterElement=n,t.insertBefore(l,n)):t.appendChild(l),()=>{var t;if(e.componentProps){const n=null==(t=f.get(e.componentProps))?void 0:t.vd.value;n&&(T(n),w(n),A(n))}}},e.updateCallback=(e,t=(()=>[]))=>{f.get(E()).upR.push((()=>k(e,t))),k(e,t)},Object.defineProperties(e,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})}));
2
2
  //# sourceMappingURL=lithent.umd.js.map