lithent 1.0.4 → 1.0.6

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
@@ -9,7 +9,7 @@ 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.64 KiB / gzip: 3.76 KiB)`
12
+ `(9.86 kB / gzip: 3.93 kB)`
13
13
 
14
14
  ## 🚩 Table of Contents
15
15
 
@@ -60,10 +60,10 @@ pnpm add lithent
60
60
 
61
61
  #### Or Use CDN
62
62
 
63
- * UMD : https://cdn.jsdelivr.net/npm/lithent@1.0.4/dist/lithent.umd.js
64
- * UMD-HELPER: https://cdn.jsdelivr.net/npm/lithent@1.0.4/helper/dist/lithentHelper.umd.js
65
- * ESM : https://cdn.jsdelivr.net/npm/lithent@1.0.4/dist/lithent.mjs
66
- * ESM-HELPER: https://cdn.jsdelivr.net/npm/lithent@1.0.4/helper/dist/lithentHelper.mjs
63
+ * UMD : https://cdn.jsdelivr.net/npm/lithent@1.0.6/dist/lithent.umd.js
64
+ * UMD-HELPER: https://cdn.jsdelivr.net/npm/lithent@1.0.6/helper/dist/lithentHelper.umd.js
65
+ * ESM : https://cdn.jsdelivr.net/npm/lithent@1.0.6/dist/lithent.mjs
66
+ * ESM-HELPER: https://cdn.jsdelivr.net/npm/lithent@1.0.6/helper/dist/lithentHelper.mjs
67
67
 
68
68
 
69
69
  It's easier to use lithent with JSX or HTM.
@@ -113,18 +113,16 @@ const Component = mount((renew, _props) => {
113
113
  `;
114
114
  });
115
115
 
116
- // insertBefore
117
- // render(`<${Component} />`, document.getElementById('root'), document.getElementById('nextElement'));
118
-
119
- // appendChild
120
- const destroy = render(html`<${Component} />`, document.getElementById('root'));
116
+ // appendChild or insertBefore
117
+ // The third argument is an optional value for insertBefore.
118
+ const destroy = render(html`<${Component} />`, document.getElementById('root'), document.getElementById('#insert-before-this-element'));
121
119
  ```
122
120
 
123
121
  #### With UMD
124
122
 
125
123
  ```html
126
- <script src="https://cdn.jsdelivr.net/npm/lithent@1.0.4/dist/lithent.umd.js"></script>
127
- <!--script src="https://cdn.jsdelivr.net/npm/lithent@1.0.4/helper/dist/lithentHelper.umd.js"></script-->
124
+ <script src="https://cdn.jsdelivr.net/npm/lithent@1.0.6/dist/lithent.umd.js"></script>
125
+ <!--script src="https://cdn.jsdelivr.net/npm/lithent@1.0.6/helper/dist/lithentHelper.umd.js"></script-->
128
126
  <script src="https://cdnjs.cloudflare.com/ajax/libs/htm/3.1.1/htm.js"></script>
129
127
 
130
128
  <div id="root"></div>
@@ -151,7 +149,9 @@ const Component = mount(renew => {
151
149
  `;
152
150
  });
153
151
 
154
- const destroy = render(html`<${Component} />`, document.getElementById('root'));
152
+ // appendChild or insertBefore
153
+ // The third argument is an optional value for insertBefore.
154
+ const destroy = render(html`<${Component} />`, document.getElementById('root'), document.getElementById('#insert-before-this-element'));
155
155
  </script>
156
156
  ```
157
157
 
package/dist/lithent.mjs CHANGED
@@ -4,13 +4,10 @@ const C = (e) => typeof e == "object" && !("resolve" in e), E = (e, t) => C(e) &
4
4
  }, pe = (e, t) => {
5
5
  var s, c;
6
6
  return C(e) && (t == null ? void 0 : t.type) === "element" && (t == null ? void 0 : t.tag) === e.tag && ((s = t == null ? void 0 : t.children) == null ? void 0 : s.length) === ((c = e == null ? void 0 : e.children) == null ? void 0 : c.length);
7
- }, U = (e, t) => {
8
- var s, c;
9
- return C(e) && (t == null ? void 0 : t.type) === e.type && (((s = t == null ? void 0 : t.children) == null ? void 0 : s.length) === ((c = e == null ? void 0 : e.children) == null ? void 0 : c.length) || e.type === "loop" && y(i((e.children || [])[0])) && y(i((t.children || [])[0])));
10
- }, i = (e) => {
11
- var t, s, c;
12
- return (c = (t = e == null ? void 0 : e.compProps) == null ? void 0 : t.key) != null ? c : (s = e == null ? void 0 : e.props) == null ? void 0 : s.key;
13
- }, P = (e) => e && ["fragment", "loop"].includes(e), T = (e) => typeof e == "function" && !$(e) || typeof e == "object" && "resolve" in e, $ = (e) => typeof e == "function" && e === ce, H = (e) => C(e) && !e.type, y = (e) => e != null, z = (e, t) => e === "style" && typeof t == "object", he = (e, t) => e === "ref" && typeof t == "object", ie = (e) => e.nodeType === 1 && e.tagName === "OPTION", ve = (e) => e.nodeType === 1 && e.tagName === "TEXTAREA", ye = (e) => e.nodeType === 1 && ["radio", "checkbox"].includes(e.type), ke = (e) => {
7
+ }, U = (e, t) => C(e) && (t == null ? void 0 : t.type) === e.type && (e.type !== "loop" || e.type === "loop" && v(i((e.children || [])[0])) && v(i((t.children || [])[0]))), i = (e) => {
8
+ var t, s;
9
+ return ((t = e == null ? void 0 : e.compProps) == null ? void 0 : t.key) ?? ((s = e == null ? void 0 : e.props) == null ? void 0 : s.key);
10
+ }, P = (e) => e && ["fragment", "loop"].includes(e), T = (e) => typeof e == "function" && !$(e) || typeof e == "object" && "resolve" in e, $ = (e) => typeof e == "function" && e === ce, H = (e) => C(e) && !e.type, v = (e) => e != null, z = (e, t) => e === "style" && typeof t == "object", he = (e, t) => e === "ref" && typeof t == "object", ie = (e) => e.nodeType === 1 && e.tagName === "OPTION", ye = (e) => e.nodeType === 1 && e.tagName === "TEXTAREA", ve = (e) => e.nodeType === 1 && ["radio", "checkbox"].includes(e.type), ke = (e) => {
14
11
  let t = "et";
15
12
  return T(e) ? t = "c" : E(e, "fragment") ? t = "f" : E(e, "element") ? t = "e" : E(e, "loop") ? t = "l" : E(e, "text") ? t = "t" : H(e) && (t = "et"), t;
16
13
  }, Ce = {
@@ -20,16 +17,16 @@ const C = (e) => typeof e == "object" && !("resolve" in e), E = (e, t) => C(e) &
20
17
  e: pe,
21
18
  f: de,
22
19
  et: U
23
- }, p = (e) => e.getParent && e.getParent(), Re = (e, t) => {
20
+ }, p = (e) => e.getParent && e.getParent(), ae = (e, t) => {
24
21
  const { compProps: s, compChild: c } = e, { props: n, children: r } = t;
25
- return s && ae(s, n), c && Ee(c, r), e.reRender && e.reRender();
26
- }, J = (e) => e.replace(/^on(.*)/, (t, s) => s.toLowerCase()), G = (e) => e === "className" ? "class" : e, k = Object.entries, Y = Object.keys, S = Object.assign, ae = (e, t) => {
22
+ return s && Re(s, n), c && Ee(c, r), e.reRender && e.reRender();
23
+ }, J = (e) => e.replace(/^on(.*)/, (t, s) => s.toLowerCase()), G = (e) => e === "className" ? "class" : e, k = Object.entries, Y = Object.keys, S = Object.assign, Re = (e, t) => {
27
24
  e && t !== e && (Y(e).forEach((s) => delete e[s]), k(t || {}).forEach(([s, c]) => e[s] = c));
28
25
  }, Ee = (e, t) => {
29
26
  e && t !== e && (e.splice(0, e.length), t && t.forEach((s) => e.push(s)));
30
27
  };
31
28
  let x = [], A = !1;
32
- const v = { value: "" }, R = { value: {} }, O = { value: !1 }, u = /* @__PURE__ */ new WeakMap(), xe = (e) => () => {
29
+ const y = { value: "" }, a = { value: {} }, O = { value: !1 }, u = /* @__PURE__ */ new WeakMap(), xe = (e) => () => {
33
30
  var c;
34
31
  const t = (c = u.get(e)) == null ? void 0 : c.up;
35
32
  let s = !1;
@@ -46,15 +43,15 @@ const v = { value: "" }, R = { value: {} }, O = { value: !1 }, u = /* @__PURE__
46
43
  mts: [],
47
44
  umts: []
48
45
  });
49
- }, a = () => R.value, Z = (e, t) => u.get(e)[t], V = (e, t) => {
46
+ }, R = () => a.value, Z = (e, t) => u.get(e)[t], V = (e, t) => {
50
47
  u.get(e).up = () => {
51
48
  x.push({
52
49
  compKey: e,
53
50
  exec: t
54
51
  }), A || (A = !0, queueMicrotask(Ne));
55
52
  };
56
- }, Te = (e) => R.value = e, Se = (e) => {
57
- R.value = e, Pe(e);
53
+ }, Te = (e) => a.value = e, Se = (e) => {
54
+ a.value = e, Pe(e);
58
55
  }, K = (e, t) => {
59
56
  (e.children || []).forEach((s) => {
60
57
  const c = s.compKey;
@@ -77,7 +74,7 @@ const v = { value: "" }, R = { value: {} }, O = { value: !1 }, u = /* @__PURE__
77
74
  }
78
75
  x = [], A = !1;
79
76
  }, be = (e) => {
80
- u.get(a()).umts.push(e);
77
+ u.get(R()).umts.push(e);
81
78
  }, Q = (e) => {
82
79
  const { compKey: t } = e;
83
80
  t && Fe(t), g(e);
@@ -94,17 +91,17 @@ const B = () => {
94
91
  L.forEach((e) => Ae(e)), L = [];
95
92
  }, Ue = (e) => {
96
93
  e.compKey && L.push(e);
97
- }, ct = (e) => u.get(a()).mts.push(e), Ae = (e) => {
94
+ }, ct = (e) => u.get(R()).mts.push(e), Ae = (e) => {
98
95
  const { compKey: t } = e;
99
96
  if (t) {
100
97
  const s = u.get(t), c = s == null ? void 0 : s.mts, n = s == null ? void 0 : s.upS;
101
- R.value = t, n && (n.value = 0), c && (s.mts = [], c.forEach((r) => {
98
+ a.value = t, n && (n.value = 0), c && (s.mts = [], c.forEach((r) => {
102
99
  const o = r();
103
100
  o && be(o);
104
101
  }));
105
102
  }
106
103
  }, X = (e, t = () => []) => {
107
- const s = u.get(a()), { upD: c, upS: n } = s, r = c[n.value];
104
+ const s = u.get(R()), { upD: c, upS: n } = s, r = c[n.value];
108
105
  if (r && Le(r, t())) {
109
106
  const o = e();
110
107
  o && s.upCB.push(o);
@@ -114,10 +111,10 @@ const B = () => {
114
111
  const { compKey: t } = e;
115
112
  if (t) {
116
113
  const s = u.get(t), c = s == null ? void 0 : s.upCB, n = s == null ? void 0 : s.upS;
117
- R.value = t, n && (n.value = 0), e.ctor && c && (s.upCB = [], c.forEach((r) => r()));
114
+ a.value = t, n && (n.value = 0), e.ctor && c && (s.upCB = [], c.forEach((r) => r()));
118
115
  }
119
116
  }, Le = (e, t) => !e.length && !e.length ? !0 : e.some((s, c) => s !== t[c]), nt = (e, t, s) => {
120
- t != null || (t = document.body), e.isRoot = !0, e.wrapElement = t;
117
+ t ?? (t = document.body), e.isRoot = !0, e.wrapElement = t;
121
118
  const c = N(e);
122
119
  return s ? (e.afterElement = s, t.insertBefore(c, s)) : t.appendChild(c), B(), () => {
123
120
  var r;
@@ -222,7 +219,7 @@ const B = () => {
222
219
  n,
223
220
  r,
224
221
  c[n]
225
- ) : ye(t) && n === "checked" ? t.checked = !!r : ve(t) && n === "value" ? t.value = r : ie(t) && n === "selected" ? t.selected = !!r : n && ([o, r] = qe(r), o && (v.value && n !== "xmlns" ? t.setAttributeNS(
222
+ ) : ve(t) && n === "checked" ? t.checked = !!r : ye(t) && n === "value" ? t.value = r : ie(t) && n === "selected" ? t.selected = !!r : n && ([o, r] = qe(r), o && (y.value && n !== "xmlns" ? t.setAttributeNS(
226
223
  null,
227
224
  G(n),
228
225
  r
@@ -239,7 +236,7 @@ const B = () => {
239
236
  }, N = (e) => {
240
237
  let t;
241
238
  const { type: s, tag: c, text: n, props: r, children: o = [] } = e, l = P(s);
242
- return c === "svg" && (v.value = String(r == null ? void 0 : r.xmlns)), l ? t = new DocumentFragment() : s === "element" && c ? t = v.value ? document.createElementNS(v.value, c) : document.createElement(c) : s === "text" && y(n) ? t = document.createTextNode(String(n)) : t = document.createElement("e"), _e(o, t), se(r, t), e.el = t, Ue(e), c === "svg" && (v.value = ""), t;
239
+ return c === "svg" && (y.value = String(r == null ? void 0 : r.xmlns)), l ? t = new DocumentFragment() : s === "element" && c ? t = y.value ? document.createElementNS(y.value, c) : document.createElement(c) : s === "text" && v(n) ? t = document.createTextNode(String(n)) : t = document.createElement("e"), _e(o, t), se(r, t), e.el = t, Ue(e), c === "svg" && (y.value = ""), t;
243
240
  }, _e = (e, t) => {
244
241
  const s = e.reduce(
245
242
  (c, n) => (n.type && c.appendChild(N(n)), c),
@@ -273,12 +270,12 @@ const B = () => {
273
270
  }, $e = (e, t, s) => {
274
271
  s !== "A" && t && (e.el = t.el), s && ["D", "R", "SR"].includes(s) && (t != null && t.compKey && (Q(t), j(t)), e.oldChildren = t == null ? void 0 : t.children), e.oldProps = t == null ? void 0 : t.props;
275
272
  }, He = (e, t, s) => {
276
- const c = s && s.type, n = H(e), o = !!e.getParent && p(e).type, l = i(e), h = o === "loop" && y(l), d = e.type === "text" && t && e.text === (s == null ? void 0 : s.text);
273
+ const c = s && s.type, n = H(e), o = !!e.getParent && p(e).type, l = i(e), h = o === "loop" && v(l), d = e.type === "text" && t && e.text === (s == null ? void 0 : s.text);
277
274
  let f;
278
275
  return n ? f = "D" : d ? f = "N" : c ? t ? f = h ? "SU" : "U" : f = h ? "SR" : "R" : f = "A", f;
279
- }, Je = (e, t, s) => T(e) ? t && s ? Re(s, e) : e.resolve() : e, Ye = (e, t, s) => t && s ? Ve(e, s) : Ze(e), Ze = (e) => (e.children || []).map(
276
+ }, Je = (e, t, s) => T(e) ? t && s ? ae(s, e) : e.resolve() : e, Ye = (e, t, s) => t && s ? Ve(e, s) : Ze(e), Ze = (e) => (e.children || []).map(
280
277
  (t) => S(F(t), { getParent: () => e })
281
- ), Ve = (e, t) => e.type === "loop" && y(i((e.children || [])[0])) ? Ke(e, t) : (e.children || []).map(
278
+ ), Ve = (e, t) => e.type === "loop" && v(i((e.children || [])[0])) ? Ke(e, t) : (e.children || []).map(
282
279
  (s, c) => S(F(s, (t.children || [])[c]), {
283
280
  getParent: () => e
284
281
  })
@@ -300,10 +297,10 @@ const B = () => {
300
297
  }, me = (e, t) => t.find(
301
298
  (s) => i(s) === i(e)
302
299
  ), rt = (e, t = () => []) => {
303
- u.get(a()).upR.push(() => X(e, t)), X(e, t);
300
+ u.get(R()).upR.push(() => X(e, t)), X(e, t);
304
301
  }, we = () => {
305
302
  var t;
306
- const e = (t = u.get(a())) == null ? void 0 : t.upR;
303
+ const e = (t = u.get(R())) == null ? void 0 : t.upR;
307
304
  e != null && e.length && e.forEach((s) => s());
308
305
  }, ce = (e, ...t) => ({
309
306
  type: "fragment",
@@ -336,6 +333,10 @@ const B = () => {
336
333
  ), Z(o, "vd").value = d, d;
337
334
  } }), We = (e, t, s, c, n) => {
338
335
  const r = e(c);
336
+ if (r.reRender)
337
+ throw new Error(
338
+ 'The root of a component must not be a component, use "Fragment"'
339
+ );
339
340
  return oe(
340
341
  r,
341
342
  t,
@@ -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 */\n\nconst checkPlainWDomType = (wDom: WDomParam): wDom is WDom =>\n typeof wDom === 'object' && !('resolve' in wDom);\n\nconst checkPlainType = (wDom: WDomParam, typeName: string) =>\n checkPlainWDomType(wDom) && wDom.type === typeName;\n\nconst checkSameCustomComponent = (\n newWDom: WDom | TagFunction | TagFunctionResolver,\n originalWDom?: WDom\n) =>\n 'ctor' in newWDom\n ? newWDom.ctor === originalWDom?.ctor\n : newWDom === originalWDom?.ctor;\n\nconst checkSameFragment = (\n newWDom: WDom | TagFunction | TagFunctionResolver,\n originalWDom?: WDom\n) =>\n checkPlainWDomType(newWDom) &&\n originalWDom?.type === 'fragment' &&\n originalWDom?.children?.length === newWDom?.children?.length;\n\nconst checkSameTagElement = (\n newWDom: WDom | TagFunction | TagFunctionResolver,\n originalWDom?: WDom\n) =>\n checkPlainWDomType(newWDom) &&\n originalWDom?.type === 'element' &&\n originalWDom?.tag === newWDom.tag &&\n originalWDom?.children?.length === newWDom?.children?.length;\n\nconst checkNormalTypeElement = (\n newWDom: WDom | TagFunction | TagFunctionResolver,\n originalWDom?: WDom\n) =>\n checkPlainWDomType(newWDom) &&\n originalWDom?.type === newWDom.type &&\n (originalWDom?.children?.length === newWDom?.children?.length ||\n (newWDom.type === 'loop' &&\n checkExisty(getKey((newWDom.children || [])[0])) &&\n checkExisty(getKey((originalWDom.children || [])[0]))));\n\nexport const getKey = (target: WDom) =>\n target?.compProps?.key ?? target?.props?.key;\n\nexport const checkVirtualType = (type: string | null) =>\n type && ['fragment', 'loop'].includes(type);\n\nexport const checkCustemComponentFunction = (\n target: WDomParam\n): target is TagFunction | TagFunctionResolver =>\n (typeof target === 'function' && !checkFragmentFunction(target)) ||\n (typeof target === 'object' && 'resolve' in target);\n\nexport const checkFragmentFunction = (\n target: unknown\n): target is FragmentFunction =>\n typeof target === 'function' && target === Fragment;\n\nexport const checkEmptyElement = (wDom: WDomParam) =>\n checkPlainWDomType(wDom) && !wDom.type;\n\nexport const checkExisty = (value: unknown) =>\n value !== null && value !== undefined;\n\nexport const checkStyleData = (\n dataKey: string,\n dataValue: unknown\n): dataValue is Record<string, string> =>\n dataKey === 'style' && typeof dataValue === 'object';\n\nexport const checkRefData = (\n dataKey: string,\n dataValue: unknown\n): dataValue is {\n value: HTMLElement | Element | DocumentFragment | Text | undefined;\n} => dataKey === 'ref' && typeof dataValue === 'object';\n\nexport const checkOptionElement = (element: any): element is HTMLElement =>\n element.nodeType === 1 && element.tagName === 'OPTION';\n\nexport const checkTextareaElement = (element: any): element is HTMLElement =>\n element.nodeType === 1 && element.tagName === 'TEXTAREA';\n\nexport const checkCheckableElement = (element: any): element is HTMLElement =>\n element.nodeType === 1 && ['radio', 'checkbox'].includes(element.type);\n\nexport const getWDomType = (\n wDom: WDom | TagFunction | TagFunctionResolver\n): WDomType => {\n let result: WDomType = 'et';\n\n if (checkCustemComponentFunction(wDom)) {\n result = 'c';\n } else if (checkPlainType(wDom, 'fragment')) {\n result = 'f';\n } else if (checkPlainType(wDom, 'element')) {\n result = 'e';\n } else if (checkPlainType(wDom, 'loop')) {\n result = 'l';\n } else if (checkPlainType(wDom, 'text')) {\n result = 't';\n } else if (checkEmptyElement(wDom)) {\n result = 'et';\n }\n\n return result;\n};\n\nexport const checkSameWDomWithOriginal = {\n c: checkSameCustomComponent,\n l: 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 { compProps: props, compChild: children } = vDom;\n const { props: infoProps, children: infoChidren } = infoVdom;\n\n if (props) {\n updateProps(props, infoProps);\n }\n\n if (children) {\n updateChildren(children, infoChidren);\n }\n\n const newVDom = vDom.reRender && vDom.reRender();\n\n return newVDom as WDom;\n};\n\nexport const getEventName = (eventKey: string) =>\n eventKey.replace(/^on(.*)/, (_match, p1) => p1.toLowerCase());\n\nexport const getAttrKey = (keyName: string) =>\n keyName === 'className' ? 'class' : keyName;\n\nexport const entries = Object.entries;\nexport const keys = Object.keys;\nexport const assign = Object.assign;\n\nconst updateProps = (props: Props, infoProps: Props) => {\n if (props && infoProps !== props) {\n keys(props).forEach(key => delete props[key]);\n\n entries(infoProps || {}).forEach(([key, value]) => (props[key] = value));\n }\n};\n\nconst updateChildren = (children: WDom[], infoChidren: WDom[]) => {\n if (children && infoChidren !== children) {\n children.splice(0, children.length);\n\n if (infoChidren) {\n infoChidren.forEach(childrenItem => children.push(childrenItem));\n }\n }\n};\n","import { ComponentRef, ComponentSubKey, Props, WDom } from '@/types';\n\ntype RedrawQueueList = {\n compKey: Props;\n exec: () => void;\n}[];\n\nlet redrawQueue: { compKey: Props; exec: () => void }[] = [];\nlet redrawQueueTimeout: boolean = false;\n\n/**\n * Common\n */\nexport const xmlnsRef: { value: string } = { value: '' };\nexport const compKeyRef: { value: Props } = { value: {} };\nexport const needDiffRef: { value: boolean } = { value: false };\nexport const componentRef: ComponentRef = new WeakMap();\n\nexport const componentRender = (compKey: Props) => () => {\n const up = componentRef.get(compKey)?.up;\n let result = false;\n if (up) {\n up();\n result = true;\n }\n\n return result;\n};\n\nconst setComponetRef = (compKey: Props) => {\n componentRef.set(compKey, {\n vd: { value: null },\n up: () => {},\n upR: [],\n upS: { value: 0 },\n upD: [],\n upCB: [],\n mts: [],\n umts: [],\n });\n};\n\nexport const getComponentKey = () => compKeyRef.value;\n\nexport const getComponentSubInfo = (compKey: Props, subKey: ComponentSubKey) =>\n componentRef.get(compKey)![subKey];\n\nexport const setRedrawAction = (compKey: Props, exec: () => void) => {\n componentRef.get(compKey)!.up = () => {\n redrawQueue.push({\n compKey,\n exec,\n });\n\n if (!redrawQueueTimeout) {\n redrawQueueTimeout = true;\n queueMicrotask(execRedrawQueue);\n }\n };\n};\n\nexport const initUpdateHookState = (compKey: Props) =>\n (compKeyRef.value = compKey);\n\nexport const initMountHookState = (compKey: Props) => {\n compKeyRef.value = compKey;\n setComponetRef(compKey);\n};\n\nconst recursiveGetChildKeys = (wDom: WDom, result: Props[]) => {\n (wDom.children || []).forEach(item => {\n const childComKey = item.compKey;\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.forEach(item => {\n const childVd = componentRef.get(item.compKey)?.vd?.value;\n if (childVd) {\n recursiveGetChildKeys(childVd, childItemList);\n }\n });\n\n const addedKey: Props[] = [];\n const result = redrawQueue.reduce((acc, item) => {\n const { compKey } = item;\n\n if (childItemList.includes(compKey) || addedKey.includes(compKey)) {\n return acc;\n }\n\n addedKey.push(compKey);\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 redrawQueue = [];\n redrawQueueTimeout = false;\n};\n","import { WDom, Props } from '@/types';\nimport { componentRef, getComponentKey } from '@/utils/universalRef';\n\nexport const unmount = (effectAction: () => void) => {\n componentRef.get(getComponentKey())!.umts.push(effectAction);\n};\n\nexport const runUnmountQueueFromWDom = (newWDom: WDom) => {\n const { compKey } = newWDom;\n\n if (compKey) {\n removeItem(compKey);\n }\n recursiveRunUnmount(newWDom);\n};\n\nconst recursiveRunUnmount = (wDom: WDom) => {\n (wDom.children || []).forEach(item => {\n const childComKey = item.compKey;\n if (childComKey) {\n runUnmountQueueFromWDom(item);\n } else {\n recursiveRunUnmount(item);\n }\n });\n};\n\nconst removeItem = (compKey: Props) => {\n const subInfo = componentRef.get(compKey);\n if (subInfo) {\n subInfo!.umts.forEach(effect => effect());\n subInfo!.umts = [];\n componentRef.delete(compKey);\n }\n};\n","import { WDom } from '@/types';\nimport {\n compKeyRef,\n componentRef,\n getComponentKey,\n} from '@/utils/universalRef';\nimport { unmount } from '@/hook/unmount';\n\nlet mountedQueue: WDom[] = [];\n\nexport const execMountedQueue = () => {\n mountedQueue.forEach(item => runMountedQueueFromWDom(item));\n mountedQueue = [];\n};\nexport const addMountedQueue = (wDom: WDom) => {\n if (wDom.compKey) {\n mountedQueue.push(wDom);\n }\n};\nexport const mountCallback = (effectAction: () => void) =>\n componentRef.get(getComponentKey())!.mts.push(effectAction);\n\nexport const runMountedQueueFromWDom = (newWDom: WDom) => {\n const { compKey } = newWDom;\n\n if (compKey) {\n const component = componentRef.get(compKey);\n const queue = component?.mts;\n const sequence = component?.upS;\n\n compKeyRef.value = compKey;\n\n if (sequence) {\n sequence.value = 0;\n }\n\n if (queue) {\n component.mts = [];\n\n queue.forEach((effect: Function) => {\n const callback = effect();\n if (callback) {\n unmount(callback);\n }\n });\n }\n }\n};\n","import { WDom } from '@/types';\nimport {\n compKeyRef,\n componentRef,\n getComponentKey,\n} from '@/utils/universalRef';\n\nexport const useUpdated = (\n effectAction: () => (() => void) | void,\n dependencies: () => any[] = () => []\n) => {\n const component = componentRef.get(getComponentKey());\n const { upD, upS } = component!;\n const def = upD[upS.value];\n\n if (def && checkNeedPushQueue(def, dependencies())) {\n const callback = effectAction();\n if (callback) {\n component!.upCB.push(callback);\n }\n }\n\n upD[upS.value] = dependencies();\n upS.value += 1;\n};\n\nexport const runUpdatedQueueFromWDom = (newWDom: WDom) => {\n const { compKey } = newWDom;\n\n if (compKey) {\n const component = componentRef.get(compKey);\n const queue = component?.upCB;\n const sequence = component?.upS;\n\n compKeyRef.value = compKey;\n\n if (sequence) {\n sequence.value = 0;\n }\n\n if (newWDom.ctor && queue) {\n component.upCB = [];\n queue.forEach((effect: Function) => effect());\n }\n }\n};\n\nconst checkNeedPushQueue = (originalDefs: unknown[], newDefs: unknown[]) =>\n !originalDefs.length && !originalDefs.length\n ? true\n : originalDefs.some((def, index) => def !== newDefs[index]);\n","import { WDom, Props } from '@/types';\nimport {\n checkStyleData,\n checkRefData,\n checkExisty,\n checkOptionElement,\n checkTextareaElement,\n checkCheckableElement,\n checkVirtualType,\n} from '@/utils/predicator';\n\nimport { componentRef, xmlnsRef } from '@/utils/universalRef';\nimport { runUnmountQueueFromWDom } from '@/hook/unmount';\nimport { execMountedQueue, addMountedQueue } from '@/hook/mountCallback';\nimport { runUpdatedQueueFromWDom } from '@/hook/useUpdate';\nimport { getParent, getEventName, getAttrKey, entries, keys } 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 execMountedQueue();\n\n return () => {\n const component = componentRef.get(wDom.compProps || {})?.vd.value;\n if (component) {\n runUnmountQueueFromWDom(component);\n recursiveRemoveEvent(component);\n rootDelete(component);\n }\n };\n};\n\nexport const wDomUpdate = (newWDomTree: WDom) => {\n const { needRerender } = newWDomTree;\n\n if (needRerender && needRerender !== 'N') {\n ({\n A: typeAdd,\n D: typeDelete,\n R: typeReplace,\n U: typeUpdate,\n 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) as HTMLElement;\n }\n\n const parentWDom = getParent(newWDom);\n if (parentWDom.type) {\n const parentEl = findRealParentElement(parentWDom);\n const isLoop = parentWDom.type === 'loop';\n const nextEl = 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 execMountedQueue();\n }\n }\n};\n\nconst startFindNextBrotherElement = (\n wDom: WDom,\n parentWDom: WDom\n): HTMLElement | DocumentFragment | Text | undefined => {\n const brothers = parentWDom.children || [];\n const index = brothers.indexOf(wDom);\n const nextIndex = index + 1;\n const candidiateBrothers = brothers.slice(nextIndex);\n\n const finedNextEl = findChildFragmentNextElement(candidiateBrothers);\n const parentType = parentWDom.type || '';\n\n if (finedNextEl) {\n return finedNextEl;\n }\n\n if (!parentWDom.isRoot && checkVirtualType(parentType)) {\n return startFindNextBrotherElement(parentWDom, getParent(parentWDom));\n } else if (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 && checkVirtualType(type);\n\n if (targetEl) {\n return targetEl;\n } else if (isFragment) {\n return findChildFragmentNextElement(bItem.children || []);\n } else if (el && el.nodeType !== 11) {\n return el;\n }\n\n return targetEl;\n },\n undefined\n );\n\nconst typeReplace = (newWDom: WDom) => {\n const parentWDom = getParent(newWDom);\n const orignalElement = newWDom.el;\n\n if (parentWDom.type && orignalElement) {\n if (orignalElement.nodeType === 11) {\n typeSortedReplace(newWDom);\n } else {\n const parentElement = findRealParentElement(parentWDom);\n const newElement = wDomToDom(newWDom);\n\n if (parentElement) {\n parentElement.replaceChild(newElement, orignalElement);\n }\n execMountedQueue();\n }\n }\n};\n\nconst removeEvent = (\n oldProps: Props,\n element: HTMLElement | DocumentFragment | Text\n) => {\n entries(oldProps || {}).forEach(([dataKey, dataValue]: [string, unknown]) => {\n if (dataKey.match(/^on/)) {\n element.removeEventListener(\n getEventName(dataKey),\n dataValue as (e: Event) => void\n );\n }\n });\n};\n\nconst typeUpdate = (newWDom: WDom) => {\n const element = newWDom.el;\n\n if (newWDom.type === 'text') {\n updateText(newWDom);\n\n return;\n }\n\n if (element) {\n const { oldProps, props } = newWDom;\n\n updateProps(props, element, oldProps);\n\n delete newWDom.oldProps;\n\n if (newWDom.tag === 'input') {\n (element as HTMLInputElement).value = String(newWDom?.props?.value || '');\n }\n }\n\n (newWDom.children || []).forEach((childItem: WDom) => wDomUpdate(childItem));\n\n runUpdatedQueueFromWDom(newWDom);\n};\n\nconst updateText = (newWDom: WDom) => {\n const element = newWDom.el;\n\n if (element) {\n element.nodeValue = String(newWDom.text);\n }\n};\n\nconst updateProps = (\n props?: Props,\n element?: HTMLElement | Element | DocumentFragment | Text,\n oldProps?: Props\n) => {\n const originalProps = { ...oldProps };\n\n entries(props || {}).forEach(([dataKey, dataValue]: [string, unknown]) => {\n let chkRemoveProp = true;\n if (dataKey === 'key') {\n // Do nothing\n } else if (dataKey === 'innerHTML' && typeof dataValue === 'string') {\n (element as HTMLElement).innerHTML = dataValue;\n } else if (checkStyleData(dataKey, dataValue)) {\n updateStyle(\n dataValue,\n checkStyleData(dataKey, originalProps.style) ? originalProps.style : {},\n element\n );\n } else if (checkRefData(dataKey, dataValue)) {\n dataValue.value = element;\n } else if (dataKey.match(/^on/)) {\n updateEvent(\n element as HTMLElement,\n dataKey,\n dataValue as (e: Event) => void,\n originalProps[dataKey] as (e: Event) => void\n );\n } else if (checkCheckableElement(element) && dataKey === 'checked') {\n (element as HTMLInputElement).checked = !!dataValue;\n } else if (checkTextareaElement(element) && dataKey === 'value') {\n (element as HTMLInputElement).value = dataValue as string;\n } else if (checkOptionElement(element) && dataKey === 'selected') {\n (element as HTMLOptionElement).selected = !!dataValue;\n } else if (dataKey) {\n [chkRemoveProp, dataValue] = makeAttrDataValue(dataValue);\n\n if (chkRemoveProp) {\n if (xmlnsRef.value && dataKey !== 'xmlns') {\n (element as HTMLElement).setAttributeNS(\n null,\n getAttrKey(dataKey),\n <string>dataValue\n );\n } else {\n (element as HTMLElement).setAttribute(\n getAttrKey(dataKey),\n <string>dataValue\n );\n }\n }\n }\n\n if (chkRemoveProp) {\n delete originalProps[dataKey];\n }\n });\n\n keys(originalProps).forEach(dataKey =>\n (element as HTMLElement).removeAttribute(dataKey)\n );\n};\n\nconst makeAttrDataValue = (dataValue: unknown): [boolean, string] => {\n let allowSetAttr = true;\n if (typeof dataValue === 'boolean') {\n if (!dataValue) {\n allowSetAttr = false;\n }\n\n dataValue = '';\n }\n\n return [allowSetAttr, String(dataValue)];\n};\n\nconst wDomToDom = (wDom: WDom) => {\n let element;\n const { type, tag, text, props, children = [] } = wDom;\n const isVirtualType = checkVirtualType(type);\n\n if (tag === 'svg') {\n xmlnsRef.value = String(props?.xmlns);\n }\n\n if (isVirtualType) {\n element = new DocumentFragment();\n } else if (type === 'element' && tag) {\n element = xmlnsRef.value\n ? document.createElementNS(xmlnsRef.value, tag)\n : 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 as HTMLElement;\n\n addMountedQueue(wDom);\n\n if (tag === 'svg') {\n xmlnsRef.value = '';\n }\n\n return element;\n};\n\nconst wDomChildrenToDom = (\n children: WDom[],\n parentElement?: HTMLElement | Element | DocumentFragment | Text\n) => {\n const elementChildren = children.reduce(\n (acc: DocumentFragment, childItem: WDom) => {\n if (childItem.type) {\n acc.appendChild(wDomToDom(childItem));\n }\n\n return acc;\n },\n 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 | Element | DocumentFragment | Text\n) => {\n const originalStyle = { ...oldStyle };\n const elementStyle = (element as HTMLElement)?.style;\n\n if (elementStyle) {\n entries(style).forEach(([styleKey, dataValue]) => {\n (elementStyle as any)[styleKey] = dataValue;\n delete originalStyle[styleKey];\n });\n\n entries(originalStyle).forEach(\n ([styleKey]) => ((elementStyle as any)[styleKey] = '')\n );\n }\n};\n\nconst findRealParentElement = (\n vDom: WDom\n): HTMLElement | DocumentFragment | Text | undefined => {\n const isVirtualType = checkVirtualType(vDom.type);\n if (vDom.isRoot && isVirtualType) {\n return vDom.wrapElement;\n }\n\n if (!isVirtualType) {\n return vDom.el as HTMLElement;\n }\n\n return findRealParentElement(getParent(vDom));\n};\n","import { WDom, TagFunctionResolver, RenderType } from '@/types';\nimport { checkCustemComponentFunction, getKey } 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';\nimport { assign } from '@/utils';\n\nexport const makeNewWDomTree = (\n newWDom: WDom | TagFunctionResolver,\n originalWDom?: WDom\n) =>\n remakeNewWDom(\n newWDom,\n checkSameWDomWithOriginal[getWDomType(newWDom)](newWDom, originalWDom),\n originalWDom\n );\n\nconst remakeNewWDom = (\n newWDom: WDom | TagFunctionResolver,\n isSameType: boolean,\n originalWDom?: WDom\n) => {\n const remakeWDom = generalize(newWDom, isSameType, originalWDom);\n const param: [newWDom: WDom, isSameType: boolean, originalWDom?: WDom] = [\n remakeWDom,\n isSameType,\n originalWDom,\n ];\n const needRerender = addReRenderTypeProperty(...param);\n\n remakeWDom.children = remakeChildrenForDiff(...param);\n remakeWDom.needRerender = needRerender;\n\n inheritPropForRender(remakeWDom, originalWDom, needRerender);\n\n return remakeWDom;\n};\n\nconst inheritPropForRender = (\n remakeWDom: WDom,\n originalWDom?: WDom,\n needRerender?: RenderType\n) => {\n if (needRerender !== 'A' && originalWDom) {\n remakeWDom.el = originalWDom.el;\n }\n\n if (needRerender && ['D', 'R', 'SR'].includes(needRerender)) {\n if (originalWDom?.compKey) {\n runUnmountQueueFromWDom(originalWDom);\n recursiveRemoveEvent(originalWDom);\n }\n remakeWDom.oldChildren = originalWDom?.children;\n }\n\n remakeWDom.oldProps = originalWDom?.props;\n};\n\nconst addReRenderTypeProperty = (\n newWDom: WDom,\n isSameType: boolean,\n originalWDom?: WDom\n): RenderType | undefined => {\n const existOriginalWDom = originalWDom && originalWDom.type;\n const isEmptyElement = checkEmptyElement(newWDom);\n const isRoot = !newWDom.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 assign(makeNewWDomTree(item), { getParent: () => newWDom })\n );\n\nconst remakeChildrenForUpdate = (newWDom: WDom, originalWDom: WDom) =>\n newWDom.type === 'loop' && checkExisty(getKey((newWDom.children || [])[0]))\n ? remakeChildrenForLoopUpdate(newWDom, originalWDom)\n : (newWDom.children || []).map((item: WDom, index: number) =>\n assign(makeNewWDomTree(item, (originalWDom.children || [])[index]), {\n getParent: () => newWDom,\n })\n );\n\nconst remakeChildrenForLoopUpdate = (newWDom: WDom, originalWDom: WDom) => {\n const [remakedChildren, unUsedChildren] = diffLoopChildren(\n newWDom,\n originalWDom\n );\n\n unUsedChildren.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 const remakedChildren = newChildren.map(item => {\n const originalItem = findSameKeyOriginalItem(item, originalChildren);\n const childItem = makeNewWDomTree(item, originalItem);\n\n if (originalItem) {\n originalChildren.splice(originalChildren.indexOf(originalItem), 1);\n }\n\n childItem.getParent = () => newWDom;\n\n return childItem;\n });\n\n return [remakedChildren, originalChildren];\n};\n\nconst findSameKeyOriginalItem = (item: WDom, originalChildren: WDom[]) =>\n originalChildren.find(\n orignalChildItem => getKey(orignalChildItem) === getKey(item)\n );\n","import { componentRef, getComponentKey } from '@/utils/universalRef';\n\nimport { useUpdated } from '@/hook/useUpdate';\n\nexport const updateCallback = (\n effectAction: () => (() => void) | void,\n dependencies: () => any[] = () => []\n) => {\n const updateReqs = componentRef.get(getComponentKey())!.upR;\n\n updateReqs.push(() => useUpdated(effectAction, dependencies));\n useUpdated(effectAction, dependencies);\n};\n\nexport const runUpdateCallback = () => {\n const updateReqs = componentRef.get(getComponentKey())?.upR;\n\n if (updateReqs?.length) {\n updateReqs.forEach(callback => callback());\n }\n};\n","import {\n WDom,\n TagFunction,\n FragmentFunction,\n Props,\n MiddleStateWDomChildren,\n MiddleStateWDom,\n NodePointer,\n Component,\n} from '@/types';\n\nimport { makeNewWDomTree } from '@/diff';\nimport { wDomUpdate } from '@/render';\nimport {\n initUpdateHookState,\n initMountHookState,\n 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';\nimport { assign } from '@/utils';\n\nexport const Fragment = (_props: Props, ...children: WDom[]) => ({\n type: 'fragment',\n children,\n});\n\nexport const h = (\n tag: TagFunction | FragmentFunction | string,\n props: Props,\n ...children: MiddleStateWDomChildren\n) => {\n const nodeParentPointer: NodePointer = { value: undefined };\n const newProps = props || {};\n const newChildren = remakeChildren(nodeParentPointer, children);\n const node = makeNode(tag, newProps, newChildren);\n\n if (!checkCustemComponentFunction(node)) {\n nodeParentPointer.value = node;\n }\n\n return node;\n};\n\nexport const mount =\n <T>(component: Component<T>) =>\n (_props: T, _children: WDom[]) =>\n component;\n\nconst reRenderCustomComponent = (\n tag: TagFunction,\n props: Props,\n children: WDom[],\n originalWDom: WDom\n) => {\n 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 ctor = tag;\n // 리졸브는 컴포넌트를 새로 만든다.\n const resolve = (compKey = props) => {\n initMountHookState(compKey);\n\n const component = tag(props, children);\n const componentMaker = component(componentRender(compKey), props, children);\n\n const customNode = makeCustomNode(\n componentMaker,\n compKey,\n tag,\n props,\n children\n );\n\n const originalWDom = customNode;\n\n setRedrawAction(compKey, () =>\n reRenderCustomComponent(tag, props, children, originalWDom)\n );\n\n (getComponentSubInfo(compKey, 'vd') as { value: WDom }).value = customNode;\n\n return customNode;\n };\n\n return { tagName, ctor, props, children, resolve };\n};\n\nconst makeCustomNode = (\n componentMaker: (props: Props) => WDom,\n compKey: Props,\n tag: TagFunction,\n props: Props,\n children: WDom[]\n) => {\n const customNode = componentMaker(props);\n\n addComponentProps(\n customNode,\n compKey,\n tag,\n props,\n children,\n makeReRender(componentMaker, compKey, tag, props, children)\n );\n\n return customNode;\n};\n\nconst makeReRender = (\n componentMaker: (props: Props) => WDom,\n compKey: Props,\n tag: TagFunction,\n props: Props,\n children: WDom[]\n) => {\n const reRender = () =>\n wDomMaker(componentMaker, compKey, tag, props, children, reRender);\n return reRender;\n};\n\nconst wDomMaker = (\n componentMaker: (props: Props) => WDom,\n compKey: Props,\n tag: TagFunction,\n props: Props,\n children: WDom[],\n reRender: () => WDom\n) => {\n initUpdateHookState(compKey);\n runUpdateCallback();\n\n const originalWDom = componentMaker(props);\n\n setRedrawAction(compKey, () =>\n reRenderCustomComponent(tag, props, children, originalWDom)\n );\n\n addComponentProps(originalWDom, compKey, tag, props, children, reRender);\n\n (getComponentSubInfo(compKey, 'vd') as { value: WDom }).value = originalWDom;\n\n return originalWDom;\n};\n\nconst addComponentProps = (\n wDom: WDom,\n compKey: Props,\n tag: TagFunction,\n props: Props,\n children: WDom[],\n reRender: () => WDom\n) => {\n assign(wDom, {\n compProps: props,\n compChild: children,\n ctor: tag,\n tagName: tag.name,\n compKey,\n reRender,\n });\n};\n\nconst makeNode = (\n tag: TagFunction | FragmentFunction | string,\n props: Props,\n children: WDom[]\n) => {\n if (checkFragmentFunction(tag)) {\n return Fragment(props, ...children);\n } else if (checkCustemComponentFunction(tag)) {\n const componetMakeResolver = makeWDomResolver(tag, props, children);\n\n return needDiffRef.value\n ? componetMakeResolver\n : componetMakeResolver.resolve();\n }\n\n return {\n type: 'element',\n tag,\n props,\n children,\n };\n};\n\nconst remakeChildren = (\n nodeParentPointer: NodePointer,\n children: MiddleStateWDomChildren\n): WDom[] =>\n children.map((item: MiddleStateWDom) =>\n assign(makeChildrenItem(item), { getParent: () => nodeParentPointer.value })\n );\n\nconst makeChildrenItem = (item: MiddleStateWDom): WDom => {\n if (item === null || item === undefined || item === false) {\n return { type: null };\n } else if (Array.isArray(item)) {\n const nodeParentPointer: NodePointer = { value: undefined };\n const children = remakeChildren(nodeParentPointer, item);\n const node = {\n type: 'loop',\n children,\n };\n nodeParentPointer.value = node;\n\n return node;\n } else if (typeof item === 'string' || typeof item === 'number') {\n return { type: 'text', text: item };\n }\n\n return item;\n};\n","export const ref = <T>(initValue: T) => ({ value: initValue });\nexport const nextTick = () => Promise.resolve();\n"],"names":["checkPlainWDomType","wDom","checkPlainType","typeName","checkSameCustomComponent","newWDom","originalWDom","checkSameFragment","_a","_b","checkSameTagElement","checkNormalTypeElement","checkExisty","getKey","target","_c","checkVirtualType","type","checkCustemComponentFunction","checkFragmentFunction","Fragment","checkEmptyElement","value","checkStyleData","dataKey","dataValue","checkRefData","checkOptionElement","element","checkTextareaElement","checkCheckableElement","getWDomType","result","checkSameWDomWithOriginal","getParent","vDom","reRender","infoVdom","props","children","infoProps","infoChidren","updateProps","updateChildren","getEventName","eventKey","_match","p1","getAttrKey","keyName","entries","keys","assign","key","childrenItem","redrawQueue","redrawQueueTimeout","xmlnsRef","compKeyRef","needDiffRef","componentRef","componentRender","compKey","up","setComponetRef","getComponentKey","getComponentSubInfo","subKey","setRedrawAction","exec","execRedrawQueue","initUpdateHookState","initMountHookState","recursiveGetChildKeys","item","childComKey","childItemList","childVd","addedKey","acc","action","unmount","effectAction","runUnmountQueueFromWDom","removeItem","recursiveRunUnmount","subInfo","effect","mountedQueue","execMountedQueue","runMountedQueueFromWDom","addMountedQueue","mountCallback","component","queue","sequence","callback","useUpdated","dependencies","upD","upS","def","checkNeedPushQueue","runUpdatedQueueFromWDom","originalDefs","newDefs","index","render","wrapElement","afterElement","Dom","wDomToDom","recursiveRemoveEvent","rootDelete","wDomUpdate","newWDomTree","needRerender","typeAdd","typeDelete","typeReplace","typeUpdate","typeSortedReplace","typeSortedUpdate","removeEvent","childItem","deleteRealDom","findRealParentElement","parent","findChildWithRemoveElement","newElement","parentWDom","parentEl","nextEl","startFindNextBrotherElement","brothers","nextIndex","candidiateBrothers","finedNextEl","findChildFragmentNextElement","parentType","targetEl","bItem","el","isFragment","orignalElement","parentElement","oldProps","updateText","originalProps","chkRemoveProp","updateStyle","updateEvent","makeAttrDataValue","allowSetAttr","tag","text","isVirtualType","wDomChildrenToDom","elementChildren","newEventHandler","oldEventHandler","eventName","style","oldStyle","originalStyle","elementStyle","styleKey","makeNewWDomTree","remakeNewWDom","isSameType","remakeWDom","generalize","param","addReRenderTypeProperty","remakeChildrenForDiff","inheritPropForRender","existOriginalWDom","isEmptyElement","isKeyCheckedWDom","isSameText","remakeChildrenForUpdate","remakeChildrenForAdd","remakeChildrenForLoopUpdate","remakedChildren","unUsedChildren","diffLoopChildren","unusedItem","newChildren","originalChildren","originalItem","findSameKeyOriginalItem","orignalChildItem","updateCallback","runUpdateCallback","updateReqs","_props","h","nodeParentPointer","newProps","remakeChildren","node","makeNode","mount","_children","reRenderCustomComponent","makeWDomResolver","isRoot","componentMaker","customNode","makeCustomNode","addComponentProps","makeReRender","wDomMaker","componetMakeResolver","makeChildrenItem","ref","initValue","nextTick"],"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) =>\n 'ctor' in newWDom\n ? newWDom.ctor === originalWDom?.ctor\n : newWDom === originalWDom?.ctor;\n\nconst checkSameFragment = (\n newWDom: WDom | TagFunction | TagFunctionResolver,\n originalWDom?: WDom\n) =>\n checkPlainWDomType(newWDom) &&\n originalWDom?.type === 'fragment' &&\n originalWDom?.children?.length === newWDom?.children?.length;\n\nconst checkSameTagElement = (\n newWDom: WDom | TagFunction | TagFunctionResolver,\n originalWDom?: WDom\n) =>\n checkPlainWDomType(newWDom) &&\n originalWDom?.type === 'element' &&\n originalWDom?.tag === newWDom.tag &&\n originalWDom?.children?.length === newWDom?.children?.length;\n\nconst checkNormalTypeElement = (\n newWDom: WDom | TagFunction | TagFunctionResolver,\n originalWDom?: WDom\n) =>\n checkPlainWDomType(newWDom) &&\n originalWDom?.type === newWDom.type &&\n (newWDom.type !== 'loop' ||\n (newWDom.type === 'loop' &&\n checkExisty(getKey((newWDom.children || [])[0])) &&\n checkExisty(getKey((originalWDom.children || [])[0]))));\n\nexport const getKey = (target: WDom) =>\n target?.compProps?.key ?? target?.props?.key;\n\nexport const checkVirtualType = (type: string | null) =>\n type && ['fragment', 'loop'].includes(type);\n\nexport const checkCustemComponentFunction = (\n target: WDomParam\n): target is TagFunction | TagFunctionResolver =>\n (typeof target === 'function' && !checkFragmentFunction(target)) ||\n (typeof target === 'object' && 'resolve' in target);\n\nexport const checkFragmentFunction = (\n target: unknown\n): target is FragmentFunction =>\n typeof target === 'function' && target === Fragment;\n\nexport const checkEmptyElement = (wDom: WDomParam) =>\n checkPlainWDomType(wDom) && !wDom.type;\n\nexport const checkExisty = (value: unknown) =>\n value !== null && value !== undefined;\n\nexport const checkStyleData = (\n dataKey: string,\n dataValue: unknown\n): dataValue is Record<string, string> =>\n dataKey === 'style' && typeof dataValue === 'object';\n\nexport const checkRefData = (\n dataKey: string,\n dataValue: unknown\n): dataValue is {\n value: HTMLElement | Element | DocumentFragment | Text | undefined;\n} => dataKey === 'ref' && typeof dataValue === 'object';\n\nexport const checkOptionElement = (element: any): element is HTMLElement =>\n element.nodeType === 1 && element.tagName === 'OPTION';\n\nexport const checkTextareaElement = (element: any): element is HTMLElement =>\n element.nodeType === 1 && element.tagName === 'TEXTAREA';\n\nexport const checkCheckableElement = (element: any): element is HTMLElement =>\n element.nodeType === 1 && ['radio', 'checkbox'].includes(element.type);\n\nexport const getWDomType = (\n wDom: WDom | TagFunction | TagFunctionResolver\n): WDomType => {\n let result: WDomType = 'et';\n\n if (checkCustemComponentFunction(wDom)) {\n result = 'c';\n } else if (checkPlainType(wDom, 'fragment')) {\n result = 'f';\n } else if (checkPlainType(wDom, 'element')) {\n result = 'e';\n } else if (checkPlainType(wDom, 'loop')) {\n result = 'l';\n } else if (checkPlainType(wDom, 'text')) {\n result = 't';\n } else if (checkEmptyElement(wDom)) {\n result = 'et';\n }\n\n return result;\n};\n\nexport const checkSameWDomWithOriginal = {\n c: checkSameCustomComponent,\n l: 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 { compProps: props, compChild: children } = vDom;\n const { props: infoProps, children: infoChidren } = infoVdom;\n\n if (props) {\n updateProps(props, infoProps);\n }\n\n if (children) {\n updateChildren(children, infoChidren);\n }\n\n const newVDom = vDom.reRender && vDom.reRender();\n\n return newVDom as WDom;\n};\n\nexport const getEventName = (eventKey: string) =>\n eventKey.replace(/^on(.*)/, (_match, p1) => p1.toLowerCase());\n\nexport const getAttrKey = (keyName: string) =>\n keyName === 'className' ? 'class' : keyName;\n\nexport const entries = Object.entries;\nexport const keys = Object.keys;\nexport const assign = Object.assign;\n\nconst updateProps = (props: Props, infoProps: Props) => {\n if (props && infoProps !== props) {\n keys(props).forEach(key => delete props[key]);\n\n entries(infoProps || {}).forEach(([key, value]) => (props[key] = value));\n }\n};\n\nconst updateChildren = (children: WDom[], infoChidren: WDom[]) => {\n if (children && infoChidren !== children) {\n children.splice(0, children.length);\n\n if (infoChidren) {\n infoChidren.forEach(childrenItem => children.push(childrenItem));\n }\n }\n};\n","import { ComponentRef, ComponentSubKey, Props, WDom } from '@/types';\n\ntype RedrawQueueList = {\n compKey: Props;\n exec: () => void;\n}[];\n\nlet redrawQueue: { compKey: Props; exec: () => void }[] = [];\nlet redrawQueueTimeout: boolean = false;\n\n/**\n * Common\n */\nexport const xmlnsRef: { value: string } = { value: '' };\nexport const compKeyRef: { value: Props } = { value: {} };\nexport const needDiffRef: { value: boolean } = { value: false };\nexport const componentRef: ComponentRef = new WeakMap();\n\nexport const componentRender = (compKey: Props) => () => {\n const up = componentRef.get(compKey)?.up;\n let result = false;\n if (up) {\n up();\n result = true;\n }\n\n return result;\n};\n\nconst setComponetRef = (compKey: Props) => {\n componentRef.set(compKey, {\n vd: { value: null },\n up: () => {},\n upR: [],\n upS: { value: 0 },\n upD: [],\n upCB: [],\n mts: [],\n umts: [],\n });\n};\n\nexport const getComponentKey = () => compKeyRef.value;\n\nexport const getComponentSubInfo = (compKey: Props, subKey: ComponentSubKey) =>\n componentRef.get(compKey)![subKey];\n\nexport const setRedrawAction = (compKey: Props, exec: () => void) => {\n componentRef.get(compKey)!.up = () => {\n redrawQueue.push({\n compKey,\n exec,\n });\n\n if (!redrawQueueTimeout) {\n redrawQueueTimeout = true;\n queueMicrotask(execRedrawQueue);\n }\n };\n};\n\nexport const initUpdateHookState = (compKey: Props) =>\n (compKeyRef.value = compKey);\n\nexport const initMountHookState = (compKey: Props) => {\n compKeyRef.value = compKey;\n setComponetRef(compKey);\n};\n\nconst recursiveGetChildKeys = (wDom: WDom, result: Props[]) => {\n (wDom.children || []).forEach(item => {\n const childComKey = item.compKey;\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.forEach(item => {\n const childVd = componentRef.get(item.compKey)?.vd?.value;\n if (childVd) {\n recursiveGetChildKeys(childVd, childItemList);\n }\n });\n\n const addedKey: Props[] = [];\n const result = redrawQueue.reduce((acc, item) => {\n const { compKey } = item;\n\n if (childItemList.includes(compKey) || addedKey.includes(compKey)) {\n return acc;\n }\n\n addedKey.push(compKey);\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 redrawQueue = [];\n redrawQueueTimeout = false;\n};\n","import { WDom, Props } from '@/types';\nimport { componentRef, getComponentKey } from '@/utils/universalRef';\n\nexport const unmount = (effectAction: () => void) => {\n componentRef.get(getComponentKey())!.umts.push(effectAction);\n};\n\nexport const runUnmountQueueFromWDom = (newWDom: WDom) => {\n const { compKey } = newWDom;\n\n if (compKey) {\n removeItem(compKey);\n }\n recursiveRunUnmount(newWDom);\n};\n\nconst recursiveRunUnmount = (wDom: WDom) => {\n (wDom.children || []).forEach(item => {\n const childComKey = item.compKey;\n if (childComKey) {\n runUnmountQueueFromWDom(item);\n } else {\n recursiveRunUnmount(item);\n }\n });\n};\n\nconst removeItem = (compKey: Props) => {\n const subInfo = componentRef.get(compKey);\n if (subInfo) {\n subInfo!.umts.forEach(effect => effect());\n subInfo!.umts = [];\n componentRef.delete(compKey);\n }\n};\n","import { WDom } from '@/types';\nimport {\n compKeyRef,\n componentRef,\n getComponentKey,\n} from '@/utils/universalRef';\nimport { unmount } from '@/hook/unmount';\n\nlet mountedQueue: WDom[] = [];\n\nexport const execMountedQueue = () => {\n mountedQueue.forEach(item => runMountedQueueFromWDom(item));\n mountedQueue = [];\n};\nexport const addMountedQueue = (wDom: WDom) => {\n if (wDom.compKey) {\n mountedQueue.push(wDom);\n }\n};\nexport const mountCallback = (effectAction: () => void) =>\n componentRef.get(getComponentKey())!.mts.push(effectAction);\n\nexport const runMountedQueueFromWDom = (newWDom: WDom) => {\n const { compKey } = newWDom;\n\n if (compKey) {\n const component = componentRef.get(compKey);\n const queue = component?.mts;\n const sequence = component?.upS;\n\n compKeyRef.value = compKey;\n\n if (sequence) {\n sequence.value = 0;\n }\n\n if (queue) {\n component.mts = [];\n\n queue.forEach((effect: Function) => {\n const callback = effect();\n if (callback) {\n unmount(callback);\n }\n });\n }\n }\n};\n","import { WDom } from '@/types';\nimport {\n compKeyRef,\n componentRef,\n getComponentKey,\n} from '@/utils/universalRef';\n\nexport const useUpdated = (\n effectAction: () => (() => void) | void,\n dependencies: () => any[] = () => []\n) => {\n const component = componentRef.get(getComponentKey());\n const { upD, upS } = component!;\n const def = upD[upS.value];\n\n if (def && checkNeedPushQueue(def, dependencies())) {\n const callback = effectAction();\n if (callback) {\n component!.upCB.push(callback);\n }\n }\n\n upD[upS.value] = dependencies();\n upS.value += 1;\n};\n\nexport const runUpdatedQueueFromWDom = (newWDom: WDom) => {\n const { compKey } = newWDom;\n\n if (compKey) {\n const component = componentRef.get(compKey);\n const queue = component?.upCB;\n const sequence = component?.upS;\n\n compKeyRef.value = compKey;\n\n if (sequence) {\n sequence.value = 0;\n }\n\n if (newWDom.ctor && queue) {\n component.upCB = [];\n queue.forEach((effect: Function) => effect());\n }\n }\n};\n\nconst checkNeedPushQueue = (originalDefs: unknown[], newDefs: unknown[]) =>\n !originalDefs.length && !originalDefs.length\n ? true\n : originalDefs.some((def, index) => def !== newDefs[index]);\n","import { WDom, Props } from '@/types';\nimport {\n checkStyleData,\n checkRefData,\n checkExisty,\n checkOptionElement,\n checkTextareaElement,\n checkCheckableElement,\n checkVirtualType,\n} from '@/utils/predicator';\n\nimport { componentRef, xmlnsRef } from '@/utils/universalRef';\nimport { runUnmountQueueFromWDom } from '@/hook/unmount';\nimport { execMountedQueue, addMountedQueue } from '@/hook/mountCallback';\nimport { runUpdatedQueueFromWDom } from '@/hook/useUpdate';\nimport { getParent, getEventName, getAttrKey, entries, keys } 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 execMountedQueue();\n\n return () => {\n const component = componentRef.get(wDom.compProps || {})?.vd.value;\n if (component) {\n runUnmountQueueFromWDom(component);\n recursiveRemoveEvent(component);\n rootDelete(component);\n }\n };\n};\n\nexport const wDomUpdate = (newWDomTree: WDom) => {\n const { needRerender } = newWDomTree;\n\n if (needRerender && needRerender !== 'N') {\n ({\n A: typeAdd,\n D: typeDelete,\n R: typeReplace,\n U: typeUpdate,\n 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) as HTMLElement;\n }\n\n const parentWDom = getParent(newWDom);\n if (parentWDom.type) {\n const parentEl = findRealParentElement(parentWDom);\n const isLoop = parentWDom.type === 'loop';\n const nextEl = 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 execMountedQueue();\n }\n }\n};\n\nconst startFindNextBrotherElement = (\n wDom: WDom,\n parentWDom: WDom\n): HTMLElement | DocumentFragment | Text | undefined => {\n const brothers = parentWDom.children || [];\n const index = brothers.indexOf(wDom);\n const nextIndex = index + 1;\n const candidiateBrothers = brothers.slice(nextIndex);\n\n const finedNextEl = findChildFragmentNextElement(candidiateBrothers);\n const parentType = parentWDom.type || '';\n\n if (finedNextEl) {\n return finedNextEl;\n }\n\n if (!parentWDom.isRoot && checkVirtualType(parentType)) {\n return startFindNextBrotherElement(parentWDom, getParent(parentWDom));\n } else if (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 && checkVirtualType(type);\n\n if (targetEl) {\n return targetEl;\n } else if (isFragment) {\n return findChildFragmentNextElement(bItem.children || []);\n } else if (el && el.nodeType !== 11) {\n return el;\n }\n\n return targetEl;\n },\n undefined\n );\n\nconst typeReplace = (newWDom: WDom) => {\n const parentWDom = getParent(newWDom);\n const orignalElement = newWDom.el;\n\n if (parentWDom.type && orignalElement) {\n if (orignalElement.nodeType === 11) {\n typeSortedReplace(newWDom);\n } else {\n const parentElement = findRealParentElement(parentWDom);\n const newElement = wDomToDom(newWDom);\n\n if (parentElement) {\n parentElement.replaceChild(newElement, orignalElement);\n }\n execMountedQueue();\n }\n }\n};\n\nconst removeEvent = (\n oldProps: Props,\n element: HTMLElement | DocumentFragment | Text\n) => {\n entries(oldProps || {}).forEach(([dataKey, dataValue]: [string, unknown]) => {\n if (dataKey.match(/^on/)) {\n element.removeEventListener(\n getEventName(dataKey),\n dataValue as (e: Event) => void\n );\n }\n });\n};\n\nconst typeUpdate = (newWDom: WDom) => {\n const element = newWDom.el;\n\n if (newWDom.type === 'text') {\n updateText(newWDom);\n\n return;\n }\n\n if (element) {\n const { oldProps, props } = newWDom;\n\n updateProps(props, element, oldProps);\n\n delete newWDom.oldProps;\n\n if (newWDom.tag === 'input') {\n (element as HTMLInputElement).value = String(newWDom?.props?.value || '');\n }\n }\n\n (newWDom.children || []).forEach((childItem: WDom) => wDomUpdate(childItem));\n\n runUpdatedQueueFromWDom(newWDom);\n};\n\nconst updateText = (newWDom: WDom) => {\n const element = newWDom.el;\n\n if (element) {\n element.nodeValue = String(newWDom.text);\n }\n};\n\nconst updateProps = (\n props?: Props,\n element?: HTMLElement | Element | DocumentFragment | Text,\n oldProps?: Props\n) => {\n const originalProps = { ...oldProps };\n\n entries(props || {}).forEach(([dataKey, dataValue]: [string, unknown]) => {\n let chkRemoveProp = true;\n if (dataKey === 'key') {\n // Do nothing\n } else if (dataKey === 'innerHTML' && typeof dataValue === 'string') {\n (element as HTMLElement).innerHTML = dataValue;\n } else if (checkStyleData(dataKey, dataValue)) {\n updateStyle(\n dataValue,\n checkStyleData(dataKey, originalProps.style) ? originalProps.style : {},\n element\n );\n } else if (checkRefData(dataKey, dataValue)) {\n dataValue.value = element;\n } else if (dataKey.match(/^on/)) {\n updateEvent(\n element as HTMLElement,\n dataKey,\n dataValue as (e: Event) => void,\n originalProps[dataKey] as (e: Event) => void\n );\n } else if (checkCheckableElement(element) && dataKey === 'checked') {\n (element as HTMLInputElement).checked = !!dataValue;\n } else if (checkTextareaElement(element) && dataKey === 'value') {\n (element as HTMLInputElement).value = dataValue as string;\n } else if (checkOptionElement(element) && dataKey === 'selected') {\n (element as HTMLOptionElement).selected = !!dataValue;\n } else if (dataKey) {\n [chkRemoveProp, dataValue] = makeAttrDataValue(dataValue);\n\n if (chkRemoveProp) {\n if (xmlnsRef.value && dataKey !== 'xmlns') {\n (element as HTMLElement).setAttributeNS(\n null,\n getAttrKey(dataKey),\n <string>dataValue\n );\n } else {\n (element as HTMLElement).setAttribute(\n getAttrKey(dataKey),\n <string>dataValue\n );\n }\n }\n }\n\n if (chkRemoveProp) {\n delete originalProps[dataKey];\n }\n });\n\n keys(originalProps).forEach(dataKey =>\n (element as HTMLElement).removeAttribute(dataKey)\n );\n};\n\nconst makeAttrDataValue = (dataValue: unknown): [boolean, string] => {\n let allowSetAttr = true;\n if (typeof dataValue === 'boolean') {\n if (!dataValue) {\n allowSetAttr = false;\n }\n\n dataValue = '';\n }\n\n return [allowSetAttr, String(dataValue)];\n};\n\nconst wDomToDom = (wDom: WDom) => {\n let element;\n const { type, tag, text, props, children = [] } = wDom;\n const isVirtualType = checkVirtualType(type);\n\n if (tag === 'svg') {\n xmlnsRef.value = String(props?.xmlns);\n }\n\n if (isVirtualType) {\n element = new DocumentFragment();\n } else if (type === 'element' && tag) {\n element = xmlnsRef.value\n ? document.createElementNS(xmlnsRef.value, tag)\n : 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 as HTMLElement;\n\n addMountedQueue(wDom);\n\n if (tag === 'svg') {\n xmlnsRef.value = '';\n }\n\n return element;\n};\n\nconst wDomChildrenToDom = (\n children: WDom[],\n parentElement?: HTMLElement | Element | DocumentFragment | Text\n) => {\n const elementChildren = children.reduce(\n (acc: DocumentFragment, childItem: WDom) => {\n if (childItem.type) {\n acc.appendChild(wDomToDom(childItem));\n }\n\n return acc;\n },\n 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 | Element | DocumentFragment | Text\n) => {\n const originalStyle = { ...oldStyle };\n const elementStyle = (element as HTMLElement)?.style;\n\n if (elementStyle) {\n entries(style).forEach(([styleKey, dataValue]) => {\n (elementStyle as any)[styleKey] = dataValue;\n delete originalStyle[styleKey];\n });\n\n entries(originalStyle).forEach(\n ([styleKey]) => ((elementStyle as any)[styleKey] = '')\n );\n }\n};\n\nconst findRealParentElement = (\n vDom: WDom\n): HTMLElement | DocumentFragment | Text | undefined => {\n const isVirtualType = checkVirtualType(vDom.type);\n if (vDom.isRoot && isVirtualType) {\n return vDom.wrapElement;\n }\n\n if (!isVirtualType) {\n return vDom.el as HTMLElement;\n }\n\n return findRealParentElement(getParent(vDom));\n};\n","import { WDom, TagFunctionResolver, RenderType } from '@/types';\nimport { checkCustemComponentFunction, getKey } 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';\nimport { assign } from '@/utils';\n\nexport const makeNewWDomTree = (\n newWDom: WDom | TagFunctionResolver,\n originalWDom?: WDom\n) =>\n remakeNewWDom(\n newWDom,\n checkSameWDomWithOriginal[getWDomType(newWDom)](newWDom, originalWDom),\n originalWDom\n );\n\nconst remakeNewWDom = (\n newWDom: WDom | TagFunctionResolver,\n isSameType: boolean,\n originalWDom?: WDom\n) => {\n const remakeWDom = generalize(newWDom, isSameType, originalWDom);\n const param: [newWDom: WDom, isSameType: boolean, originalWDom?: WDom] = [\n remakeWDom,\n isSameType,\n originalWDom,\n ];\n const needRerender = addReRenderTypeProperty(...param);\n\n remakeWDom.children = remakeChildrenForDiff(...param);\n remakeWDom.needRerender = needRerender;\n\n inheritPropForRender(remakeWDom, originalWDom, needRerender);\n\n return remakeWDom;\n};\n\nconst inheritPropForRender = (\n remakeWDom: WDom,\n originalWDom?: WDom,\n needRerender?: RenderType\n) => {\n if (needRerender !== 'A' && originalWDom) {\n remakeWDom.el = originalWDom.el;\n }\n\n if (needRerender && ['D', 'R', 'SR'].includes(needRerender)) {\n if (originalWDom?.compKey) {\n runUnmountQueueFromWDom(originalWDom);\n recursiveRemoveEvent(originalWDom);\n }\n remakeWDom.oldChildren = originalWDom?.children;\n }\n\n remakeWDom.oldProps = originalWDom?.props;\n};\n\nconst addReRenderTypeProperty = (\n newWDom: WDom,\n isSameType: boolean,\n originalWDom?: WDom\n): RenderType | undefined => {\n const existOriginalWDom = originalWDom && originalWDom.type;\n const isEmptyElement = checkEmptyElement(newWDom);\n const isRoot = !newWDom.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 assign(makeNewWDomTree(item), { getParent: () => newWDom })\n );\n\nconst remakeChildrenForUpdate = (newWDom: WDom, originalWDom: WDom) =>\n newWDom.type === 'loop' && checkExisty(getKey((newWDom.children || [])[0]))\n ? remakeChildrenForLoopUpdate(newWDom, originalWDom)\n : (newWDom.children || []).map((item: WDom, index: number) =>\n assign(makeNewWDomTree(item, (originalWDom.children || [])[index]), {\n getParent: () => newWDom,\n })\n );\n\nconst remakeChildrenForLoopUpdate = (newWDom: WDom, originalWDom: WDom) => {\n const [remakedChildren, unUsedChildren] = diffLoopChildren(\n newWDom,\n originalWDom\n );\n\n unUsedChildren.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 const remakedChildren = newChildren.map(item => {\n const originalItem = findSameKeyOriginalItem(item, originalChildren);\n const childItem = makeNewWDomTree(item, originalItem);\n\n if (originalItem) {\n originalChildren.splice(originalChildren.indexOf(originalItem), 1);\n }\n\n childItem.getParent = () => newWDom;\n\n return childItem;\n });\n\n return [remakedChildren, originalChildren];\n};\n\nconst findSameKeyOriginalItem = (item: WDom, originalChildren: WDom[]) =>\n originalChildren.find(\n orignalChildItem => getKey(orignalChildItem) === getKey(item)\n );\n","import { componentRef, getComponentKey } from '@/utils/universalRef';\n\nimport { useUpdated } from '@/hook/useUpdate';\n\nexport const updateCallback = (\n effectAction: () => (() => void) | void,\n dependencies: () => any[] = () => []\n) => {\n const updateReqs = componentRef.get(getComponentKey())!.upR;\n\n updateReqs.push(() => useUpdated(effectAction, dependencies));\n useUpdated(effectAction, dependencies);\n};\n\nexport const runUpdateCallback = () => {\n const updateReqs = componentRef.get(getComponentKey())?.upR;\n\n if (updateReqs?.length) {\n updateReqs.forEach(callback => callback());\n }\n};\n","import {\n WDom,\n TagFunction,\n FragmentFunction,\n Props,\n MiddleStateWDomChildren,\n MiddleStateWDom,\n NodePointer,\n Component,\n} from '@/types';\n\nimport { makeNewWDomTree } from '@/diff';\nimport { wDomUpdate } from '@/render';\nimport {\n initUpdateHookState,\n initMountHookState,\n 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';\nimport { assign } from '@/utils';\n\nexport const Fragment = (_props: Props, ...children: WDom[]) => ({\n type: 'fragment',\n children,\n});\n\nexport const h = (\n tag: TagFunction | FragmentFunction | string,\n props: Props,\n ...children: MiddleStateWDomChildren\n) => {\n const nodeParentPointer: NodePointer = { value: undefined };\n const newProps = props || {};\n const newChildren = remakeChildren(nodeParentPointer, children);\n const node = makeNode(tag, newProps, newChildren);\n\n if (!checkCustemComponentFunction(node)) {\n nodeParentPointer.value = node;\n }\n\n return node;\n};\n\nexport const mount =\n <T>(component: Component<T>) =>\n (_props: T, _children: WDom[]) =>\n component;\n\nconst reRenderCustomComponent = (\n tag: TagFunction,\n props: Props,\n children: WDom[],\n originalWDom: WDom\n) => {\n 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 ctor = tag;\n // 리졸브는 컴포넌트를 새로 만든다.\n const resolve = (compKey = props) => {\n initMountHookState(compKey);\n\n const component = tag(props, children);\n const componentMaker = component(componentRender(compKey), props, children);\n\n const customNode = makeCustomNode(\n componentMaker,\n compKey,\n tag,\n props,\n children\n );\n\n const originalWDom = customNode;\n\n setRedrawAction(compKey, () =>\n reRenderCustomComponent(tag, props, children, originalWDom)\n );\n\n (getComponentSubInfo(compKey, 'vd') as { value: WDom }).value = customNode;\n\n return customNode;\n };\n\n return { tagName, ctor, props, children, resolve };\n};\n\nconst makeCustomNode = (\n componentMaker: (props: Props) => WDom,\n compKey: Props,\n tag: TagFunction,\n props: Props,\n children: WDom[]\n) => {\n const customNode = componentMaker(props);\n if (customNode.reRender) {\n throw new Error(\n 'The root of a component must not be a component, use \"Fragment\"'\n );\n }\n\n addComponentProps(\n customNode,\n compKey,\n tag,\n props,\n children,\n makeReRender(componentMaker, compKey, tag, props, children)\n );\n\n return customNode;\n};\n\nconst makeReRender = (\n componentMaker: (props: Props) => WDom,\n compKey: Props,\n tag: TagFunction,\n props: Props,\n children: WDom[]\n) => {\n const reRender = () =>\n wDomMaker(componentMaker, compKey, tag, props, children, reRender);\n return reRender;\n};\n\nconst wDomMaker = (\n componentMaker: (props: Props) => WDom,\n compKey: Props,\n tag: TagFunction,\n props: Props,\n children: WDom[],\n reRender: () => WDom\n) => {\n initUpdateHookState(compKey);\n runUpdateCallback();\n\n const originalWDom = componentMaker(props);\n\n setRedrawAction(compKey, () =>\n reRenderCustomComponent(tag, props, children, originalWDom)\n );\n\n addComponentProps(originalWDom, compKey, tag, props, children, reRender);\n\n (getComponentSubInfo(compKey, 'vd') as { value: WDom }).value = originalWDom;\n\n return originalWDom;\n};\n\nconst addComponentProps = (\n wDom: WDom,\n compKey: Props,\n tag: TagFunction,\n props: Props,\n children: WDom[],\n reRender: () => WDom\n) => {\n assign(wDom, {\n compProps: props,\n compChild: children,\n ctor: tag,\n tagName: tag.name,\n compKey,\n reRender,\n });\n};\n\nconst makeNode = (\n tag: TagFunction | FragmentFunction | string,\n props: Props,\n children: WDom[]\n) => {\n if (checkFragmentFunction(tag)) {\n return Fragment(props, ...children);\n } else if (checkCustemComponentFunction(tag)) {\n const componetMakeResolver = makeWDomResolver(tag, props, children);\n\n return needDiffRef.value\n ? componetMakeResolver\n : componetMakeResolver.resolve();\n }\n\n return {\n type: 'element',\n tag,\n props,\n children,\n };\n};\n\nconst remakeChildren = (\n nodeParentPointer: NodePointer,\n children: MiddleStateWDomChildren\n): WDom[] =>\n children.map((item: MiddleStateWDom) =>\n assign(makeChildrenItem(item), { getParent: () => nodeParentPointer.value })\n );\n\nconst makeChildrenItem = (item: MiddleStateWDom): WDom => {\n if (item === null || item === undefined || item === false) {\n return { type: null };\n } else if (Array.isArray(item)) {\n const nodeParentPointer: NodePointer = { value: undefined };\n const children = remakeChildren(nodeParentPointer, item);\n const node = {\n type: 'loop',\n children,\n };\n nodeParentPointer.value = node;\n\n return node;\n } else if (typeof item === 'string' || typeof item === 'number') {\n return { type: 'text', text: item };\n }\n\n return item;\n};\n","export const ref = <T>(initValue: T) => ({ value: initValue });\nexport const nextTick = () => Promise.resolve();\n"],"names":["checkPlainWDomType","wDom","checkPlainType","typeName","checkSameCustomComponent","newWDom","originalWDom","checkSameFragment","_a","_b","checkSameTagElement","checkNormalTypeElement","checkExisty","getKey","target","checkVirtualType","type","checkCustemComponentFunction","checkFragmentFunction","Fragment","checkEmptyElement","value","checkStyleData","dataKey","dataValue","checkRefData","checkOptionElement","element","checkTextareaElement","checkCheckableElement","getWDomType","result","checkSameWDomWithOriginal","getParent","vDom","reRender","infoVdom","props","children","infoProps","infoChidren","updateProps","updateChildren","getEventName","eventKey","_match","p1","getAttrKey","keyName","entries","keys","assign","key","childrenItem","redrawQueue","redrawQueueTimeout","xmlnsRef","compKeyRef","needDiffRef","componentRef","componentRender","compKey","up","setComponetRef","getComponentKey","getComponentSubInfo","subKey","setRedrawAction","exec","execRedrawQueue","initUpdateHookState","initMountHookState","recursiveGetChildKeys","item","childComKey","childItemList","childVd","addedKey","acc","action","unmount","effectAction","runUnmountQueueFromWDom","removeItem","recursiveRunUnmount","subInfo","effect","mountedQueue","execMountedQueue","runMountedQueueFromWDom","addMountedQueue","mountCallback","component","queue","sequence","callback","useUpdated","dependencies","upD","upS","def","checkNeedPushQueue","runUpdatedQueueFromWDom","originalDefs","newDefs","index","render","wrapElement","afterElement","Dom","wDomToDom","recursiveRemoveEvent","rootDelete","wDomUpdate","newWDomTree","needRerender","typeAdd","typeDelete","typeReplace","typeUpdate","typeSortedReplace","typeSortedUpdate","removeEvent","childItem","deleteRealDom","findRealParentElement","parent","findChildWithRemoveElement","newElement","parentWDom","parentEl","nextEl","startFindNextBrotherElement","brothers","nextIndex","candidiateBrothers","finedNextEl","findChildFragmentNextElement","parentType","targetEl","bItem","el","isFragment","orignalElement","parentElement","oldProps","updateText","originalProps","chkRemoveProp","updateStyle","updateEvent","makeAttrDataValue","allowSetAttr","tag","text","isVirtualType","wDomChildrenToDom","elementChildren","newEventHandler","oldEventHandler","eventName","style","oldStyle","originalStyle","elementStyle","styleKey","makeNewWDomTree","remakeNewWDom","isSameType","remakeWDom","generalize","param","addReRenderTypeProperty","remakeChildrenForDiff","inheritPropForRender","existOriginalWDom","isEmptyElement","isKeyCheckedWDom","isSameText","remakeChildrenForUpdate","remakeChildrenForAdd","remakeChildrenForLoopUpdate","remakedChildren","unUsedChildren","diffLoopChildren","unusedItem","newChildren","originalChildren","originalItem","findSameKeyOriginalItem","orignalChildItem","updateCallback","runUpdateCallback","updateReqs","_props","h","nodeParentPointer","newProps","remakeChildren","node","makeNode","mount","_children","reRenderCustomComponent","makeWDomResolver","isRoot","componentMaker","customNode","makeCustomNode","addComponentProps","makeReRender","wDomMaker","componetMakeResolver","makeChildrenItem","ref","initValue","nextTick"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- (function(l,p){typeof exports=="object"&&typeof module<"u"?p(exports):typeof define=="function"&&define.amd?define(["exports"],p):(l=typeof globalThis<"u"?globalThis:l||self,p(l.lithent={}))})(this,function(l){"use strict";const p=e=>typeof e=="object"&&!("resolve"in e),P=(e,t)=>p(e)&&e.type===t,fe=(e,t)=>"ctor"in e?e.ctor===(t==null?void 0:t.ctor):e===(t==null?void 0:t.ctor),de=(e,t)=>{var c,s;return p(e)&&(t==null?void 0:t.type)==="fragment"&&((c=t==null?void 0:t.children)==null?void 0:c.length)===((s=e==null?void 0:e.children)==null?void 0:s.length)},pe=(e,t)=>{var c,s;return p(e)&&(t==null?void 0:t.type)==="element"&&(t==null?void 0:t.tag)===e.tag&&((c=t==null?void 0:t.children)==null?void 0:c.length)===((s=e==null?void 0:e.children)==null?void 0:s.length)},A=(e,t)=>{var c,s;return p(e)&&(t==null?void 0:t.type)===e.type&&(((c=t==null?void 0:t.children)==null?void 0:c.length)===((s=e==null?void 0:e.children)==null?void 0:s.length)||e.type==="loop"&&k(y((e.children||[])[0]))&&k(y((t.children||[])[0])))},y=e=>{var t,c,s;return(s=(t=e==null?void 0:e.compProps)==null?void 0:t.key)!=null?s:(c=e==null?void 0:e.props)==null?void 0:c.key},T=e=>e&&["fragment","loop"].includes(e),x=e=>typeof e=="function"&&!G(e)||typeof e=="object"&&"resolve"in e,G=e=>typeof e=="function"&&e===z,X=e=>p(e)&&!e.type,k=e=>e!=null,$=(e,t)=>e==="style"&&typeof t=="object",he=(e,t)=>e==="ref"&&typeof t=="object",ie=e=>e.nodeType===1&&e.tagName==="OPTION",ye=e=>e.nodeType===1&&e.tagName==="TEXTAREA",ve=e=>e.nodeType===1&&["radio","checkbox"].includes(e.type),ke=e=>{let t="et";return x(e)?t="c":P(e,"fragment")?t="f":P(e,"element")?t="e":P(e,"loop")?t="l":P(e,"text")?t="t":X(e)&&(t="et"),t},Ce={c:fe,l:A,t:A,e:pe,f:de,et:A},h=e=>e.getParent&&e.getParent(),ae=(e,t)=>{const{compProps:c,compChild:s}=e,{props:n,children:r}=t;return c&&Re(c,n),s&&Ee(s,r),e.reRender&&e.reRender()},H=e=>e.replace(/^on(.*)/,(t,c)=>c.toLowerCase()),J=e=>e==="className"?"class":e,C=Object.entries,Y=Object.keys,S=Object.assign,Re=(e,t)=>{e&&t!==e&&(Y(e).forEach(c=>delete e[c]),C(t||{}).forEach(([c,s])=>e[c]=s))},Ee=(e,t)=>{e&&t!==e&&(e.splice(0,e.length),t&&t.forEach(c=>e.push(c)))};let b=[],O=!1;const a={value:""},R={value:{}},M={value:!1},o=new WeakMap,Pe=e=>()=>{var s;const t=(s=o.get(e))==null?void 0:s.up;let c=!1;return t&&(t(),c=!0),c},Te=e=>{o.set(e,{vd:{value:null},up:()=>{},upR:[],upS:{value:0},upD:[],upCB:[],mts:[],umts:[]})},E=()=>R.value,Z=(e,t)=>o.get(e)[t],V=(e,t)=>{o.get(e).up=()=>{b.push({compKey:e,exec:t}),O||(O=!0,queueMicrotask(be))}},xe=e=>R.value=e,Se=e=>{R.value=e,Te(e)},K=(e,t)=>{(e.children||[]).forEach(c=>{const s=c.compKey;s&&t.push(s),K(c,t)})},be=()=>{let e=[];b.forEach(s=>{var r,u;const n=(u=(r=o.get(s.compKey))==null?void 0:r.vd)==null?void 0:u.value;n&&K(n,e)});const t=[],c=b.reduce((s,n)=>{const{compKey:r}=n;return e.includes(r)||t.includes(r)||(t.push(r),s.push(n)),s},[]);for(;c.length;){const s=c.shift();s&&s.exec()}b=[],O=!1},Ne=e=>{o.get(E()).umts.push(e)},L=e=>{const{compKey:t}=e;t&&Fe(t),g(e)},g=e=>{(e.children||[]).forEach(t=>{t.compKey?L(t):g(t)})},Fe=e=>{const t=o.get(e);t&&(t.umts.forEach(c=>c()),t.umts=[],o.delete(e))};let Q=[];const j=()=>{Q.forEach(e=>Oe(e)),Q=[]},Ue=e=>{e.compKey&&Q.push(e)},Ae=e=>o.get(E()).mts.push(e),Oe=e=>{const{compKey:t}=e;if(t){const c=o.get(t),s=c==null?void 0:c.mts,n=c==null?void 0:c.upS;R.value=t,n&&(n.value=0),s&&(c.mts=[],s.forEach(r=>{const u=r();u&&Ne(u)}))}},m=(e,t=()=>[])=>{const c=o.get(E()),{upD:s,upS:n}=c,r=s[n.value];if(r&&Le(r,t())){const u=e();u&&c.upCB.push(u)}s[n.value]=t(),n.value+=1},Me=e=>{const{compKey:t}=e;if(t){const c=o.get(t),s=c==null?void 0:c.upCB,n=c==null?void 0:c.upS;R.value=t,n&&(n.value=0),e.ctor&&s&&(c.upCB=[],s.forEach(r=>r()))}},Le=(e,t)=>!e.length&&!e.length?!0:e.some((c,s)=>c!==t[s]),Qe=(e,t,c)=>{t!=null||(t=document.body),e.isRoot=!0,e.wrapElement=t;const s=N(e);return c?(e.afterElement=c,t.insertBefore(s,c)):t.appendChild(s),j(),()=>{var r;const n=(r=o.get(e.compProps||{}))==null?void 0:r.vd.value;n&&(L(n),B(n),je(n))}},w=e=>{const{needRerender:t}=e;t&&t!=="N"&&{A:q,D:I,R:Ie,U:qe,SR:ee,SU:Be}[t](e)},B=e=>{e.props&&e.el&&ce(e.props,e.el),(e.children||[]).forEach(t=>{B(t)})},je=e=>{W(e,e.wrapElement)},I=e=>{e.oldProps&&e.el&&ce(e.oldProps,e.el),W(e,F(h(e)))},W=(e,t)=>{var c,s;t&&e.el&&(((c=e.el)==null?void 0:c.nodeType)===1?t.removeChild(e.el):((s=e.el)==null?void 0:s.nodeType)===11&&D(e,t),delete e.el)},D=(e,t)=>{((e==null?void 0:e.oldChildren)||(e==null?void 0:e.children)||[]).forEach(c=>{var s,n;((s=c.el)==null?void 0:s.nodeType)===1?t.removeChild(c==null?void 0:c.el):((n=c.el)==null?void 0:n.nodeType)===11&&D(c,t)})},ee=e=>{I(e),q(e)},Be=e=>{I(e),q(e,e.el)},q=(e,t)=>{t||(t=N(e));const c=h(e);if(c.type){const s=F(c),r=c.type==="loop"?_(c,h(c)):_(e,c);t&&s&&(r?s.insertBefore(t,r):s.appendChild(t),j())}},_=(e,t)=>{const c=t.children||[],n=c.indexOf(e)+1,r=c.slice(n),u=te(r),f=t.type||"";if(u)return u;if(!t.isRoot&&T(f))return _(t,h(t));if(t.isRoot&&t.afterElement)return t.afterElement},te=e=>e.reduce((t,c)=>{const s=c.type,n=c.el,r=s&&T(s);return t||(r?te(c.children||[]):n&&n.nodeType!==11?n:t)},void 0),Ie=e=>{const t=h(e),c=e.el;if(t.type&&c)if(c.nodeType===11)ee(e);else{const s=F(t),n=N(e);s&&s.replaceChild(n,c),j()}},ce=(e,t)=>{C(e||{}).forEach(([c,s])=>{c.match(/^on/)&&t.removeEventListener(H(c),s)})},qe=e=>{var c;const t=e.el;if(e.type==="text"){_e(e);return}if(t){const{oldProps:s,props:n}=e;se(n,t,s),delete e.oldProps,e.tag==="input"&&(t.value=String(((c=e==null?void 0:e.props)==null?void 0:c.value)||""))}(e.children||[]).forEach(s=>w(s)),Me(e)},_e=e=>{const t=e.el;t&&(t.nodeValue=String(e.text))},se=(e,t,c)=>{const s={...c};C(e||{}).forEach(([n,r])=>{let u=!0;n==="key"||(n==="innerHTML"&&typeof r=="string"?t.innerHTML=r:$(n,r)?$e(r,$(n,s.style)?s.style:{},t):he(n,r)?r.value=t:n.match(/^on/)?Xe(t,n,r,s[n]):ve(t)&&n==="checked"?t.checked=!!r:ye(t)&&n==="value"?t.value=r:ie(t)&&n==="selected"?t.selected=!!r:n&&([u,r]=ze(r),u&&(a.value&&n!=="xmlns"?t.setAttributeNS(null,J(n),r):t.setAttribute(J(n),r)))),u&&delete s[n]}),Y(s).forEach(n=>t.removeAttribute(n))},ze=e=>{let t=!0;return typeof e=="boolean"&&(e||(t=!1),e=""),[t,String(e)]},N=e=>{let t;const{type:c,tag:s,text:n,props:r,children:u=[]}=e,f=T(c);return s==="svg"&&(a.value=String(r==null?void 0:r.xmlns)),f?t=new DocumentFragment:c==="element"&&s?t=a.value?document.createElementNS(a.value,s):document.createElement(s):c==="text"&&k(n)?t=document.createTextNode(String(n)):t=document.createElement("e"),Ge(u,t),se(r,t),e.el=t,Ue(e),s==="svg"&&(a.value=""),t},Ge=(e,t)=>{const c=e.reduce((s,n)=>(n.type&&s.appendChild(N(n)),s),new DocumentFragment);t&&c.hasChildNodes()&&t.appendChild(c)},Xe=(e,t,c,s)=>{const n=H(t);s!==c&&(s&&e.removeEventListener(n,s),c&&e.addEventListener(n,c))},$e=(e,t,c)=>{const s={...t},n=c==null?void 0:c.style;n&&(C(e).forEach(([r,u])=>{n[r]=u,delete s[r]}),C(s).forEach(([r])=>n[r]=""))},F=e=>{const t=T(e.type);return e.isRoot&&t?e.wrapElement:t?F(h(e)):e.el},U=(e,t)=>He(e,Ce[ke(e)](e,t),t),He=(e,t,c)=>{const s=Ze(e,t,c),n=[s,t,c],r=Ye(...n);return s.children=Ve(...n),s.needRerender=r,Je(s,c,r),s},Je=(e,t,c)=>{c!=="A"&&t&&(e.el=t.el),c&&["D","R","SR"].includes(c)&&(t!=null&&t.compKey&&(L(t),B(t)),e.oldChildren=t==null?void 0:t.children),e.oldProps=t==null?void 0:t.props},Ye=(e,t,c)=>{const s=c&&c.type,n=X(e),u=!!e.getParent&&h(e).type,f=y(e),v=u==="loop"&&k(f),i=e.type==="text"&&t&&e.text===(c==null?void 0:c.text);let d;return n?d="D":i?d="N":s?t?d=v?"SU":"U":d=v?"SR":"R":d="A",d},Ze=(e,t,c)=>x(e)?t&&c?ae(c,e):e.resolve():e,Ve=(e,t,c)=>t&&c?ge(e,c):Ke(e),Ke=e=>(e.children||[]).map(t=>S(U(t),{getParent:()=>e})),ge=(e,t)=>e.type==="loop"&&k(y((e.children||[])[0]))?me(e,t):(e.children||[]).map((c,s)=>S(U(c,(t.children||[])[s]),{getParent:()=>e})),me=(e,t)=>{const[c,s]=we(e,t);return s.map(n=>{const r=n.el;r!=null&&r.parentNode&&r.parentNode.removeChild(r)}),c},we=(e,t)=>{const c=[...e.children||[]],s=[...t.children||[]];return[c.map(r=>{const u=We(r,s),f=U(r,u);return u&&s.splice(s.indexOf(u),1),f.getParent=()=>e,f}),s]},We=(e,t)=>t.find(c=>y(c)===y(e)),De=(e,t=()=>[])=>{o.get(E()).upR.push(()=>m(e,t)),m(e,t)},et=()=>{var t;const e=(t=o.get(E()))==null?void 0:t.upR;e!=null&&e.length&&e.forEach(c=>c())},z=(e,...t)=>({type:"fragment",children:t}),tt=(e,t,...c)=>{const s={value:void 0},n=t||{},r=oe(s,c),u=ut(e,n,r);return x(u)||(s.value=u),u},ct=e=>(t,c)=>e,ne=(e,t,c,s)=>{var d;M.value=!0;const n=re(e,t,c),r=U(n,s),{isRoot:u,getParent:f,wrapElement:v,afterElement:i}=s;if(r.getParent=f,!u&&f){const le=((d=f())==null?void 0:d.children)||[],dt=le.indexOf(s);le.splice(dt,1,r)}else r.isRoot=!0,r.wrapElement=v,r.afterElement=i;M.value=!1,w(r)},re=(e,t,c)=>({tagName:e.name,ctor:e,props:t,children:c,resolve:(u=t)=>{Se(u);const v=e(t,c)(Pe(u),t,c),i=st(v,u,e,t,c),d=i;return V(u,()=>ne(e,t,c,d)),Z(u,"vd").value=i,i}}),st=(e,t,c,s,n)=>{const r=e(s);return ue(r,t,c,s,n,nt(e,t,c,s,n)),r},nt=(e,t,c,s,n)=>{const r=()=>rt(e,t,c,s,n,r);return r},rt=(e,t,c,s,n,r)=>{xe(t),et();const u=e(s);return V(t,()=>ne(c,s,n,u)),ue(u,t,c,s,n,r),Z(t,"vd").value=u,u},ue=(e,t,c,s,n,r)=>{S(e,{compProps:s,compChild:n,ctor:c,tagName:c.name,compKey:t,reRender:r})},ut=(e,t,c)=>{if(G(e))return z(t,...c);if(x(e)){const s=re(e,t,c);return M.value?s:s.resolve()}return{type:"element",tag:e,props:t,children:c}},oe=(e,t)=>t.map(c=>S(ot(c),{getParent:()=>e.value})),ot=e=>{if(e==null||e===!1)return{type:null};if(Array.isArray(e)){const t={value:void 0},s={type:"loop",children:oe(t,e)};return t.value=s,s}else if(typeof e=="string"||typeof e=="number")return{type:"text",text:e};return e},lt=e=>({value:e}),ft=()=>Promise.resolve();l.Fragment=z,l.h=tt,l.mount=ct,l.mountCallback=Ae,l.nextTick=ft,l.ref=lt,l.render=Qe,l.updateCallback=De,Object.defineProperties(l,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
1
+ (function(l,p){typeof exports=="object"&&typeof module<"u"?p(exports):typeof define=="function"&&define.amd?define(["exports"],p):(l=typeof globalThis<"u"?globalThis:l||self,p(l.lithent={}))})(this,function(l){"use strict";const p=e=>typeof e=="object"&&!("resolve"in e),P=(e,t)=>p(e)&&e.type===t,fe=(e,t)=>"ctor"in e?e.ctor===(t==null?void 0:t.ctor):e===(t==null?void 0:t.ctor),de=(e,t)=>{var c,s;return p(e)&&(t==null?void 0:t.type)==="fragment"&&((c=t==null?void 0:t.children)==null?void 0:c.length)===((s=e==null?void 0:e.children)==null?void 0:s.length)},pe=(e,t)=>{var c,s;return p(e)&&(t==null?void 0:t.type)==="element"&&(t==null?void 0:t.tag)===e.tag&&((c=t==null?void 0:t.children)==null?void 0:c.length)===((s=e==null?void 0:e.children)==null?void 0:s.length)},A=(e,t)=>p(e)&&(t==null?void 0:t.type)===e.type&&(e.type!=="loop"||e.type==="loop"&&a(y((e.children||[])[0]))&&a(y((t.children||[])[0]))),y=e=>{var t,c;return((t=e==null?void 0:e.compProps)==null?void 0:t.key)??((c=e==null?void 0:e.props)==null?void 0:c.key)},T=e=>e&&["fragment","loop"].includes(e),x=e=>typeof e=="function"&&!G(e)||typeof e=="object"&&"resolve"in e,G=e=>typeof e=="function"&&e===z,X=e=>p(e)&&!e.type,a=e=>e!=null,$=(e,t)=>e==="style"&&typeof t=="object",he=(e,t)=>e==="ref"&&typeof t=="object",ie=e=>e.nodeType===1&&e.tagName==="OPTION",ye=e=>e.nodeType===1&&e.tagName==="TEXTAREA",ve=e=>e.nodeType===1&&["radio","checkbox"].includes(e.type),ae=e=>{let t="et";return x(e)?t="c":P(e,"fragment")?t="f":P(e,"element")?t="e":P(e,"loop")?t="l":P(e,"text")?t="t":X(e)&&(t="et"),t},ke={c:fe,l:A,t:A,e:pe,f:de,et:A},h=e=>e.getParent&&e.getParent(),Ce=(e,t)=>{const{compProps:c,compChild:s}=e,{props:n,children:r}=t;return c&&Re(c,n),s&&Ee(s,r),e.reRender&&e.reRender()},H=e=>e.replace(/^on(.*)/,(t,c)=>c.toLowerCase()),J=e=>e==="className"?"class":e,k=Object.entries,Y=Object.keys,S=Object.assign,Re=(e,t)=>{e&&t!==e&&(Y(e).forEach(c=>delete e[c]),k(t||{}).forEach(([c,s])=>e[c]=s))},Ee=(e,t)=>{e&&t!==e&&(e.splice(0,e.length),t&&t.forEach(c=>e.push(c)))};let b=[],O=!1;const C={value:""},R={value:{}},L={value:!1},u=new WeakMap,Pe=e=>()=>{var s;const t=(s=u.get(e))==null?void 0:s.up;let c=!1;return t&&(t(),c=!0),c},Te=e=>{u.set(e,{vd:{value:null},up:()=>{},upR:[],upS:{value:0},upD:[],upCB:[],mts:[],umts:[]})},E=()=>R.value,Z=(e,t)=>u.get(e)[t],V=(e,t)=>{u.get(e).up=()=>{b.push({compKey:e,exec:t}),O||(O=!0,queueMicrotask(be))}},xe=e=>R.value=e,Se=e=>{R.value=e,Te(e)},K=(e,t)=>{(e.children||[]).forEach(c=>{const s=c.compKey;s&&t.push(s),K(c,t)})},be=()=>{let e=[];b.forEach(s=>{var r,o;const n=(o=(r=u.get(s.compKey))==null?void 0:r.vd)==null?void 0:o.value;n&&K(n,e)});const t=[],c=b.reduce((s,n)=>{const{compKey:r}=n;return e.includes(r)||t.includes(r)||(t.push(r),s.push(n)),s},[]);for(;c.length;){const s=c.shift();s&&s.exec()}b=[],O=!1},Ne=e=>{u.get(E()).umts.push(e)},M=e=>{const{compKey:t}=e;t&&Fe(t),g(e)},g=e=>{(e.children||[]).forEach(t=>{t.compKey?M(t):g(t)})},Fe=e=>{const t=u.get(e);t&&(t.umts.forEach(c=>c()),t.umts=[],u.delete(e))};let Q=[];const j=()=>{Q.forEach(e=>Oe(e)),Q=[]},Ue=e=>{e.compKey&&Q.push(e)},Ae=e=>u.get(E()).mts.push(e),Oe=e=>{const{compKey:t}=e;if(t){const c=u.get(t),s=c==null?void 0:c.mts,n=c==null?void 0:c.upS;R.value=t,n&&(n.value=0),s&&(c.mts=[],s.forEach(r=>{const o=r();o&&Ne(o)}))}},m=(e,t=()=>[])=>{const c=u.get(E()),{upD:s,upS:n}=c,r=s[n.value];if(r&&Me(r,t())){const o=e();o&&c.upCB.push(o)}s[n.value]=t(),n.value+=1},Le=e=>{const{compKey:t}=e;if(t){const c=u.get(t),s=c==null?void 0:c.upCB,n=c==null?void 0:c.upS;R.value=t,n&&(n.value=0),e.ctor&&s&&(c.upCB=[],s.forEach(r=>r()))}},Me=(e,t)=>!e.length&&!e.length?!0:e.some((c,s)=>c!==t[s]),Qe=(e,t,c)=>{t??(t=document.body),e.isRoot=!0,e.wrapElement=t;const s=N(e);return c?(e.afterElement=c,t.insertBefore(s,c)):t.appendChild(s),j(),()=>{var r;const n=(r=u.get(e.compProps||{}))==null?void 0:r.vd.value;n&&(M(n),B(n),je(n))}},w=e=>{const{needRerender:t}=e;t&&t!=="N"&&{A:q,D:I,R:Ie,U:qe,SR:ee,SU:Be}[t](e)},B=e=>{e.props&&e.el&&ce(e.props,e.el),(e.children||[]).forEach(t=>{B(t)})},je=e=>{W(e,e.wrapElement)},I=e=>{e.oldProps&&e.el&&ce(e.oldProps,e.el),W(e,F(h(e)))},W=(e,t)=>{var c,s;t&&e.el&&(((c=e.el)==null?void 0:c.nodeType)===1?t.removeChild(e.el):((s=e.el)==null?void 0:s.nodeType)===11&&D(e,t),delete e.el)},D=(e,t)=>{((e==null?void 0:e.oldChildren)||(e==null?void 0:e.children)||[]).forEach(c=>{var s,n;((s=c.el)==null?void 0:s.nodeType)===1?t.removeChild(c==null?void 0:c.el):((n=c.el)==null?void 0:n.nodeType)===11&&D(c,t)})},ee=e=>{I(e),q(e)},Be=e=>{I(e),q(e,e.el)},q=(e,t)=>{t||(t=N(e));const c=h(e);if(c.type){const s=F(c),r=c.type==="loop"?_(c,h(c)):_(e,c);t&&s&&(r?s.insertBefore(t,r):s.appendChild(t),j())}},_=(e,t)=>{const c=t.children||[],n=c.indexOf(e)+1,r=c.slice(n),o=te(r),f=t.type||"";if(o)return o;if(!t.isRoot&&T(f))return _(t,h(t));if(t.isRoot&&t.afterElement)return t.afterElement},te=e=>e.reduce((t,c)=>{const s=c.type,n=c.el,r=s&&T(s);return t||(r?te(c.children||[]):n&&n.nodeType!==11?n:t)},void 0),Ie=e=>{const t=h(e),c=e.el;if(t.type&&c)if(c.nodeType===11)ee(e);else{const s=F(t),n=N(e);s&&s.replaceChild(n,c),j()}},ce=(e,t)=>{k(e||{}).forEach(([c,s])=>{c.match(/^on/)&&t.removeEventListener(H(c),s)})},qe=e=>{var c;const t=e.el;if(e.type==="text"){_e(e);return}if(t){const{oldProps:s,props:n}=e;se(n,t,s),delete e.oldProps,e.tag==="input"&&(t.value=String(((c=e==null?void 0:e.props)==null?void 0:c.value)||""))}(e.children||[]).forEach(s=>w(s)),Le(e)},_e=e=>{const t=e.el;t&&(t.nodeValue=String(e.text))},se=(e,t,c)=>{const s={...c};k(e||{}).forEach(([n,r])=>{let o=!0;n==="key"||(n==="innerHTML"&&typeof r=="string"?t.innerHTML=r:$(n,r)?$e(r,$(n,s.style)?s.style:{},t):he(n,r)?r.value=t:n.match(/^on/)?Xe(t,n,r,s[n]):ve(t)&&n==="checked"?t.checked=!!r:ye(t)&&n==="value"?t.value=r:ie(t)&&n==="selected"?t.selected=!!r:n&&([o,r]=ze(r),o&&(C.value&&n!=="xmlns"?t.setAttributeNS(null,J(n),r):t.setAttribute(J(n),r)))),o&&delete s[n]}),Y(s).forEach(n=>t.removeAttribute(n))},ze=e=>{let t=!0;return typeof e=="boolean"&&(e||(t=!1),e=""),[t,String(e)]},N=e=>{let t;const{type:c,tag:s,text:n,props:r,children:o=[]}=e,f=T(c);return s==="svg"&&(C.value=String(r==null?void 0:r.xmlns)),f?t=new DocumentFragment:c==="element"&&s?t=C.value?document.createElementNS(C.value,s):document.createElement(s):c==="text"&&a(n)?t=document.createTextNode(String(n)):t=document.createElement("e"),Ge(o,t),se(r,t),e.el=t,Ue(e),s==="svg"&&(C.value=""),t},Ge=(e,t)=>{const c=e.reduce((s,n)=>(n.type&&s.appendChild(N(n)),s),new DocumentFragment);t&&c.hasChildNodes()&&t.appendChild(c)},Xe=(e,t,c,s)=>{const n=H(t);s!==c&&(s&&e.removeEventListener(n,s),c&&e.addEventListener(n,c))},$e=(e,t,c)=>{const s={...t},n=c==null?void 0:c.style;n&&(k(e).forEach(([r,o])=>{n[r]=o,delete s[r]}),k(s).forEach(([r])=>n[r]=""))},F=e=>{const t=T(e.type);return e.isRoot&&t?e.wrapElement:t?F(h(e)):e.el},U=(e,t)=>He(e,ke[ae(e)](e,t),t),He=(e,t,c)=>{const s=Ze(e,t,c),n=[s,t,c],r=Ye(...n);return s.children=Ve(...n),s.needRerender=r,Je(s,c,r),s},Je=(e,t,c)=>{c!=="A"&&t&&(e.el=t.el),c&&["D","R","SR"].includes(c)&&(t!=null&&t.compKey&&(M(t),B(t)),e.oldChildren=t==null?void 0:t.children),e.oldProps=t==null?void 0:t.props},Ye=(e,t,c)=>{const s=c&&c.type,n=X(e),o=!!e.getParent&&h(e).type,f=y(e),v=o==="loop"&&a(f),i=e.type==="text"&&t&&e.text===(c==null?void 0:c.text);let d;return n?d="D":i?d="N":s?t?d=v?"SU":"U":d=v?"SR":"R":d="A",d},Ze=(e,t,c)=>x(e)?t&&c?Ce(c,e):e.resolve():e,Ve=(e,t,c)=>t&&c?ge(e,c):Ke(e),Ke=e=>(e.children||[]).map(t=>S(U(t),{getParent:()=>e})),ge=(e,t)=>e.type==="loop"&&a(y((e.children||[])[0]))?me(e,t):(e.children||[]).map((c,s)=>S(U(c,(t.children||[])[s]),{getParent:()=>e})),me=(e,t)=>{const[c,s]=we(e,t);return s.map(n=>{const r=n.el;r!=null&&r.parentNode&&r.parentNode.removeChild(r)}),c},we=(e,t)=>{const c=[...e.children||[]],s=[...t.children||[]];return[c.map(r=>{const o=We(r,s),f=U(r,o);return o&&s.splice(s.indexOf(o),1),f.getParent=()=>e,f}),s]},We=(e,t)=>t.find(c=>y(c)===y(e)),De=(e,t=()=>[])=>{u.get(E()).upR.push(()=>m(e,t)),m(e,t)},et=()=>{var t;const e=(t=u.get(E()))==null?void 0:t.upR;e!=null&&e.length&&e.forEach(c=>c())},z=(e,...t)=>({type:"fragment",children:t}),tt=(e,t,...c)=>{const s={value:void 0},n=t||{},r=ue(s,c),o=ot(e,n,r);return x(o)||(s.value=o),o},ct=e=>(t,c)=>e,ne=(e,t,c,s)=>{var d;L.value=!0;const n=re(e,t,c),r=U(n,s),{isRoot:o,getParent:f,wrapElement:v,afterElement:i}=s;if(r.getParent=f,!o&&f){const le=((d=f())==null?void 0:d.children)||[],dt=le.indexOf(s);le.splice(dt,1,r)}else r.isRoot=!0,r.wrapElement=v,r.afterElement=i;L.value=!1,w(r)},re=(e,t,c)=>({tagName:e.name,ctor:e,props:t,children:c,resolve:(o=t)=>{Se(o);const v=e(t,c)(Pe(o),t,c),i=st(v,o,e,t,c),d=i;return V(o,()=>ne(e,t,c,d)),Z(o,"vd").value=i,i}}),st=(e,t,c,s,n)=>{const r=e(s);if(r.reRender)throw new Error('The root of a component must not be a component, use "Fragment"');return oe(r,t,c,s,n,nt(e,t,c,s,n)),r},nt=(e,t,c,s,n)=>{const r=()=>rt(e,t,c,s,n,r);return r},rt=(e,t,c,s,n,r)=>{xe(t),et();const o=e(s);return V(t,()=>ne(c,s,n,o)),oe(o,t,c,s,n,r),Z(t,"vd").value=o,o},oe=(e,t,c,s,n,r)=>{S(e,{compProps:s,compChild:n,ctor:c,tagName:c.name,compKey:t,reRender:r})},ot=(e,t,c)=>{if(G(e))return z(t,...c);if(x(e)){const s=re(e,t,c);return L.value?s:s.resolve()}return{type:"element",tag:e,props:t,children:c}},ue=(e,t)=>t.map(c=>S(ut(c),{getParent:()=>e.value})),ut=e=>{if(e==null||e===!1)return{type:null};if(Array.isArray(e)){const t={value:void 0},s={type:"loop",children:ue(t,e)};return t.value=s,s}else if(typeof e=="string"||typeof e=="number")return{type:"text",text:e};return e},lt=e=>({value:e}),ft=()=>Promise.resolve();l.Fragment=z,l.h=tt,l.mount=ct,l.mountCallback=Ae,l.nextTick=ft,l.ref=lt,l.render=Qe,l.updateCallback=De,Object.defineProperty(l,Symbol.toStringTag,{value:"Module"})});
2
2
  //# sourceMappingURL=lithent.umd.js.map