lithent 1.0.4 → 1.0.5
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 +13 -13
- package/dist/lithent.mjs +22 -18
- package/dist/lithent.mjs.map +1 -1
- package/dist/lithent.umd.js +1 -1
- package/dist/lithent.umd.js.map +1 -1
- package/examples/dist/assets/index-a93b0638.js +2 -0
- package/examples/dist/assets/index-a93b0638.js.map +1 -0
- package/examples/dist/index.html +1 -1
- package/examples/src/complextest.tsx +137 -0
- package/helper/dist/lithentHelper.mjs +1 -4
- package/helper/dist/lithentHelper.mjs.map +1 -1
- package/helper/dist/lithentHelper.umd.js +1 -1
- package/helper/dist/lithentHelper.umd.js.map +1 -1
- package/package.json +4 -8
- package/src/tests/hoc.tsx +68 -0
- package/src/tests/test5.tsx +1 -2
- package/src/wDom.ts +5 -0
- package/examples/dist/assets/index.f6f52820.js +0 -2
- package/examples/dist/assets/index.f6f52820.js.map +0 -1
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.
|
|
12
|
+
`(9.97 kB / gzip: 3.92 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.
|
|
64
|
-
* UMD-HELPER: https://cdn.jsdelivr.net/npm/lithent@1.0.
|
|
65
|
-
* ESM : https://cdn.jsdelivr.net/npm/lithent@1.0.
|
|
66
|
-
* ESM-HELPER: https://cdn.jsdelivr.net/npm/lithent@1.0.
|
|
63
|
+
* UMD : https://cdn.jsdelivr.net/npm/lithent@1.0.5/dist/lithent.umd.js
|
|
64
|
+
* UMD-HELPER: https://cdn.jsdelivr.net/npm/lithent@1.0.5/helper/dist/lithentHelper.umd.js
|
|
65
|
+
* ESM : https://cdn.jsdelivr.net/npm/lithent@1.0.5/dist/lithent.mjs
|
|
66
|
+
* ESM-HELPER: https://cdn.jsdelivr.net/npm/lithent@1.0.5/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
|
-
//
|
|
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.
|
|
127
|
-
<!--script src="https://cdn.jsdelivr.net/npm/lithent@1.0.
|
|
124
|
+
<script src="https://cdn.jsdelivr.net/npm/lithent@1.0.5/dist/lithent.umd.js"></script>
|
|
125
|
+
<!--script src="https://cdn.jsdelivr.net/npm/lithent@1.0.5/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
|
-
|
|
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
|
@@ -8,8 +8,8 @@ const C = (e) => typeof e == "object" && !("resolve" in e), E = (e, t) => C(e) &
|
|
|
8
8
|
var s, c;
|
|
9
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
10
|
}, i = (e) => {
|
|
11
|
-
var t, s
|
|
12
|
-
return (
|
|
11
|
+
var t, s;
|
|
12
|
+
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);
|
|
13
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) => {
|
|
14
14
|
let t = "et";
|
|
15
15
|
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;
|
|
@@ -20,16 +20,16 @@ const C = (e) => typeof e == "object" && !("resolve" in e), E = (e, t) => C(e) &
|
|
|
20
20
|
e: pe,
|
|
21
21
|
f: de,
|
|
22
22
|
et: U
|
|
23
|
-
}, p = (e) => e.getParent && e.getParent(),
|
|
23
|
+
}, p = (e) => e.getParent && e.getParent(), ae = (e, t) => {
|
|
24
24
|
const { compProps: s, compChild: c } = e, { props: n, children: r } = t;
|
|
25
|
-
return s &&
|
|
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,
|
|
25
|
+
return s && Re(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, Re = (e, t) => {
|
|
27
27
|
e && t !== e && (Y(e).forEach((s) => delete e[s]), k(t || {}).forEach(([s, c]) => e[s] = c));
|
|
28
28
|
}, Ee = (e, t) => {
|
|
29
29
|
e && t !== e && (e.splice(0, e.length), t && t.forEach((s) => e.push(s)));
|
|
30
30
|
};
|
|
31
31
|
let x = [], A = !1;
|
|
32
|
-
const v = { value: "" },
|
|
32
|
+
const v = { value: "" }, a = { value: {} }, O = { value: !1 }, u = /* @__PURE__ */ new WeakMap(), xe = (e) => () => {
|
|
33
33
|
var c;
|
|
34
34
|
const t = (c = u.get(e)) == null ? void 0 : c.up;
|
|
35
35
|
let s = !1;
|
|
@@ -46,15 +46,15 @@ const v = { value: "" }, R = { value: {} }, O = { value: !1 }, u = /* @__PURE__
|
|
|
46
46
|
mts: [],
|
|
47
47
|
umts: []
|
|
48
48
|
});
|
|
49
|
-
},
|
|
49
|
+
}, R = () => a.value, Z = (e, t) => u.get(e)[t], V = (e, t) => {
|
|
50
50
|
u.get(e).up = () => {
|
|
51
51
|
x.push({
|
|
52
52
|
compKey: e,
|
|
53
53
|
exec: t
|
|
54
54
|
}), A || (A = !0, queueMicrotask(Ne));
|
|
55
55
|
};
|
|
56
|
-
}, Te = (e) =>
|
|
57
|
-
|
|
56
|
+
}, Te = (e) => a.value = e, Se = (e) => {
|
|
57
|
+
a.value = e, Pe(e);
|
|
58
58
|
}, K = (e, t) => {
|
|
59
59
|
(e.children || []).forEach((s) => {
|
|
60
60
|
const c = s.compKey;
|
|
@@ -77,7 +77,7 @@ const v = { value: "" }, R = { value: {} }, O = { value: !1 }, u = /* @__PURE__
|
|
|
77
77
|
}
|
|
78
78
|
x = [], A = !1;
|
|
79
79
|
}, be = (e) => {
|
|
80
|
-
u.get(
|
|
80
|
+
u.get(R()).umts.push(e);
|
|
81
81
|
}, Q = (e) => {
|
|
82
82
|
const { compKey: t } = e;
|
|
83
83
|
t && Fe(t), g(e);
|
|
@@ -94,17 +94,17 @@ const B = () => {
|
|
|
94
94
|
L.forEach((e) => Ae(e)), L = [];
|
|
95
95
|
}, Ue = (e) => {
|
|
96
96
|
e.compKey && L.push(e);
|
|
97
|
-
}, ct = (e) => u.get(
|
|
97
|
+
}, ct = (e) => u.get(R()).mts.push(e), Ae = (e) => {
|
|
98
98
|
const { compKey: t } = e;
|
|
99
99
|
if (t) {
|
|
100
100
|
const s = u.get(t), c = s == null ? void 0 : s.mts, n = s == null ? void 0 : s.upS;
|
|
101
|
-
|
|
101
|
+
a.value = t, n && (n.value = 0), c && (s.mts = [], c.forEach((r) => {
|
|
102
102
|
const o = r();
|
|
103
103
|
o && be(o);
|
|
104
104
|
}));
|
|
105
105
|
}
|
|
106
106
|
}, X = (e, t = () => []) => {
|
|
107
|
-
const s = u.get(
|
|
107
|
+
const s = u.get(R()), { upD: c, upS: n } = s, r = c[n.value];
|
|
108
108
|
if (r && Le(r, t())) {
|
|
109
109
|
const o = e();
|
|
110
110
|
o && s.upCB.push(o);
|
|
@@ -114,10 +114,10 @@ const B = () => {
|
|
|
114
114
|
const { compKey: t } = e;
|
|
115
115
|
if (t) {
|
|
116
116
|
const s = u.get(t), c = s == null ? void 0 : s.upCB, n = s == null ? void 0 : s.upS;
|
|
117
|
-
|
|
117
|
+
a.value = t, n && (n.value = 0), e.ctor && c && (s.upCB = [], c.forEach((r) => r()));
|
|
118
118
|
}
|
|
119
119
|
}, Le = (e, t) => !e.length && !e.length ? !0 : e.some((s, c) => s !== t[c]), nt = (e, t, s) => {
|
|
120
|
-
t
|
|
120
|
+
t ?? (t = document.body), e.isRoot = !0, e.wrapElement = t;
|
|
121
121
|
const c = N(e);
|
|
122
122
|
return s ? (e.afterElement = s, t.insertBefore(c, s)) : t.appendChild(c), B(), () => {
|
|
123
123
|
var r;
|
|
@@ -276,7 +276,7 @@ const B = () => {
|
|
|
276
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);
|
|
277
277
|
let f;
|
|
278
278
|
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 ?
|
|
279
|
+
}, 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
280
|
(t) => S(F(t), { getParent: () => e })
|
|
281
281
|
), Ve = (e, t) => e.type === "loop" && y(i((e.children || [])[0])) ? Ke(e, t) : (e.children || []).map(
|
|
282
282
|
(s, c) => S(F(s, (t.children || [])[c]), {
|
|
@@ -300,10 +300,10 @@ const B = () => {
|
|
|
300
300
|
}, me = (e, t) => t.find(
|
|
301
301
|
(s) => i(s) === i(e)
|
|
302
302
|
), rt = (e, t = () => []) => {
|
|
303
|
-
u.get(
|
|
303
|
+
u.get(R()).upR.push(() => X(e, t)), X(e, t);
|
|
304
304
|
}, we = () => {
|
|
305
305
|
var t;
|
|
306
|
-
const e = (t = u.get(
|
|
306
|
+
const e = (t = u.get(R())) == null ? void 0 : t.upR;
|
|
307
307
|
e != null && e.length && e.forEach((s) => s());
|
|
308
308
|
}, ce = (e, ...t) => ({
|
|
309
309
|
type: "fragment",
|
|
@@ -336,6 +336,10 @@ const B = () => {
|
|
|
336
336
|
), Z(o, "vd").value = d, d;
|
|
337
337
|
} }), We = (e, t, s, c, n) => {
|
|
338
338
|
const r = e(c);
|
|
339
|
+
if (r.reRender)
|
|
340
|
+
throw new Error(
|
|
341
|
+
'The root of a component must not be a component, use "Fragment"'
|
|
342
|
+
);
|
|
339
343
|
return oe(
|
|
340
344
|
r,
|
|
341
345
|
t,
|
package/dist/lithent.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lithent.mjs","sources":["../src/utils/predicator.ts","../src/utils/index.ts","../src/utils/universalRef.ts","../src/hook/unmount.ts","../src/hook/mountCallback.ts","../src/hook/useUpdate.ts","../src/render.ts","../src/diff.ts","../src/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 (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 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":"AAoBA,MAAMA,IAAqB,CAACC,MAC1B,OAAOA,KAAS,YAAY,EAAE,aAAaA,IAEvCC,IAAiB,CAACD,GAAiBE,MACvCH,EAAmBC,CAAI,KAAKA,EAAK,SAASE,GAEtCC,KAA2B,CAC/BC,GACAC,MAEA,UAAUD,IACNA,EAAQ,UAASC,KAAA,gBAAAA,EAAc,QAC/BD,OAAYC,KAAA,gBAAAA,EAAc,OAE1BC,KAAoB,CACxBF,GACAC,MAEA;AAlBF,MAAAE,GAAAC;AAkBE,SAAAT,EAAmBK,CAAO,MAC1BC,KAAA,gBAAAA,EAAc,UAAS,gBACvBE,IAAAF,KAAA,gBAAAA,EAAc,aAAd,gBAAAE,EAAwB,cAAWC,IAAAJ,KAAA,gBAAAA,EAAS,aAAT,gBAAAI,EAAmB;AAAA,GAElDC,KAAsB,CAC1BL,GACAC,MAEA;AA1BF,MAAAE,GAAAC;AA0BE,SAAAT,EAAmBK,CAAO,MAC1BC,KAAA,gBAAAA,EAAc,UAAS,cACvBA,KAAA,gBAAAA,EAAc,SAAQD,EAAQ,SAC9BG,IAAAF,KAAA,gBAAAA,EAAc,aAAd,gBAAAE,EAAwB,cAAWC,IAAAJ,KAAA,gBAAAA,EAAS,aAAT,gBAAAI,EAAmB;AAAA,GAElDE,IAAyB,CAC7BN,GACAC,MAEA;AAnCF,MAAAE,GAAAC;AAmCE,SAAAT,EAAmBK,CAAO,MAC1BC,KAAA,gBAAAA,EAAc,UAASD,EAAQ,WAC9BG,IAAAF,KAAA,gBAAAA,EAAc,aAAd,gBAAAE,EAAwB,cAAWC,IAAAJ,KAAA,gBAAAA,EAAS,aAAT,gBAAAI,EAAmB,WACpDJ,EAAQ,SAAS,UAChBO,EAAYC,GAAQR,EAAQ,YAAY,CAAA,GAAI,CAAC,CAAC,CAAC,KAC/CO,EAAYC,GAAQP,EAAa,YAAY,CAAA,GAAI,CAAC,CAAC,CAAC;AAAA,GAE7CO,IAAS,CAACC,MAAA;AA1CvB,MAAAN,GAAAC;AA2CE,WAAAD,IAAAM,KAAA,gBAAAA,EAAQ,cAAR,gBAAAN,EAAmB,UAAOC,IAAAK,KAAA,gBAAAA,EAAQ,UAAR,gBAAAL,EAAe;AAAA,GAE9BM,IAAmB,CAACC,MAC/BA,KAAQ,CAAC,YAAY,MAAM,EAAE,SAASA,CAAI,GAE/BC,IAA+B,CAC1CH,MAEC,OAAOA,KAAW,cAAc,CAACI,EAAsBJ,CAAM,KAC7D,OAAOA,KAAW,YAAY,aAAaA,GAEjCI,IAAwB,CACnCJ,MAEA,OAAOA,KAAW,cAAcA,MAAWK,IAEhCC,IAAoB,CAACnB,MAChCD,EAAmBC,CAAI,KAAK,CAACA,EAAK,MAEvBW,IAAc,CAACS,MAC1BA,KAAU,MAECC,IAAiB,CAC5BC,GACAC,MAEAD,MAAY,WAAW,OAAOC,KAAc,UAEjCC,KAAe,CAC1BF,GACAC,MAGGD,MAAY,SAAS,OAAOC,KAAc,UAElCE,KAAqB,CAACC,MACjCA,EAAQ,aAAa,KAAKA,EAAQ,YAAY,UAEnCC,KAAuB,CAACD,MACnCA,EAAQ,aAAa,KAAKA,EAAQ,YAAY,YAEnCE,KAAwB,CAACF,MACpCA,EAAQ,aAAa,KAAK,CAAC,SAAS,UAAU,EAAE,SAASA,EAAQ,IAAI,GAE1DG,KAAc,CACzB7B,MACa;AACb,MAAI8B,IAAmB;AAEnB,SAAAd,EAA6BhB,CAAI,IAC1B8B,IAAA,MACA7B,EAAeD,GAAM,UAAU,IAC/B8B,IAAA,MACA7B,EAAeD,GAAM,SAAS,IAC9B8B,IAAA,MACA7B,EAAeD,GAAM,MAAM,IAC3B8B,IAAA,MACA7B,EAAeD,GAAM,MAAM,IAC3B8B,IAAA,MACAX,EAAkBnB,CAAI,MACtB8B,IAAA,OAGJA;AACT,GAEaC,KAA4B;AAAA,EACvC,GAAG5B;AAAA,EACH,GAAGO;AAAA,EACH,GAAGA;AAAA,EACH,GAAGD;AAAA,EACH,GAAGH;AAAA,EACH,IAAII;AACN,GCtIasB,IAAY,CAACC,MACLA,EAAK,aAAaA,EAAK,UAAU,GAKzCC,KAAW,CAACD,GAAYE,MAAkC;AACrE,QAAM,EAAE,WAAWC,GAAO,WAAWC,MAAaJ,GAC5C,EAAE,OAAOK,GAAW,UAAUC,MAAgBJ;AAEpD,SAAIC,KACFI,GAAYJ,GAAOE,CAAS,GAG1BD,KACFI,GAAeJ,GAAUE,CAAW,GAGtBN,EAAK,YAAYA,EAAK,SAAS;AAGjD,GAEaS,IAAe,CAACC,MAC3BA,EAAS,QAAQ,WAAW,CAACC,GAAQC,MAAOA,EAAG,YAAa,CAAA,GAEjDC,IAAa,CAACC,MACzBA,MAAY,cAAc,UAAUA,GAEzBC,IAAU,OAAO,SACjBC,IAAO,OAAO,MACdC,IAAS,OAAO,QAEvBV,KAAc,CAACJ,GAAcE,MAAqB;AAClD,EAAAF,KAASE,MAAcF,MACzBa,EAAKb,CAAK,EAAE,QAAQ,OAAO,OAAOA,EAAMe,CAAG,CAAC,GAE5CH,EAAQV,KAAa,EAAE,EAAE,QAAQ,CAAC,CAACa,GAAK/B,CAAK,MAAOgB,EAAMe,CAAG,IAAI/B,CAAM;AAE3E,GAEMqB,KAAiB,CAACJ,GAAkBE,MAAwB;AAC5D,EAAAF,KAAYE,MAAgBF,MACrBA,EAAA,OAAO,GAAGA,EAAS,MAAM,GAE9BE,KACFA,EAAY,QAAQ,CAAAa,MAAgBf,EAAS,KAAKe,CAAY,CAAC;AAGrE;AC5CA,IAAIC,IAAsD,CAAA,GACtDC,IAA8B;AAKrB,MAAAC,IAA8B,EAAE,OAAO,MACvCC,IAA+B,EAAE,OAAO,CAAA,KACxCC,IAAkC,EAAE,OAAO,MAC3CC,wBAAiC,WAEjCC,KAAkB,CAACC,MAAmB,MAAM;AFEzD,MAAArD;AEDE,QAAMsD,KAAKtD,IAAAmD,EAAa,IAAIE,CAAO,MAAxB,gBAAArD,EAA2B;AACtC,MAAIuB,IAAS;AACb,SAAI+B,MACCA,KACM/B,IAAA,KAGJA;AACT,GAEMgC,KAAiB,CAACF,MAAmB;AACzC,EAAAF,EAAa,IAAIE,GAAS;AAAA,IACxB,IAAI,EAAE,OAAO,KAAK;AAAA,IAClB,IAAI,MAAM;AAAA,IAAC;AAAA,IACX,KAAK,CAAC;AAAA,IACN,KAAK,EAAE,OAAO,EAAE;AAAA,IAChB,KAAK,CAAC;AAAA,IACN,MAAM,CAAC;AAAA,IACP,KAAK,CAAC;AAAA,IACN,MAAM,CAAC;AAAA,EAAA,CACR;AACH,GAEaG,IAAkB,MAAMP,EAAW,OAEnCQ,IAAsB,CAACJ,GAAgBK,MAClDP,EAAa,IAAIE,CAAO,EAAGK,CAAM,GAEtBC,IAAkB,CAACN,GAAgBO,MAAqB;AACnE,EAAAT,EAAa,IAAIE,CAAO,EAAG,KAAK,MAAM;AACpC,IAAAP,EAAY,KAAK;AAAA,MACf,SAAAO;AAAA,MACA,MAAAO;AAAA,IAAA,CACD,GAEIb,MACkBA,IAAA,IACrB,eAAec,EAAe;AAAA,EAChC;AAEJ,GAEaC,KAAsB,CAACT,MACjCJ,EAAW,QAAQI,GAETU,KAAqB,CAACV,MAAmB;AACpD,EAAAJ,EAAW,QAAQI,GACnBE,GAAeF,CAAO;AACxB,GAEMW,IAAwB,CAACvE,GAAY8B,MAAoB;AAC7D,GAAC9B,EAAK,YAAY,CAAC,GAAG,QAAQ,CAAQwE,MAAA;AACpC,UAAMC,IAAcD,EAAK;AACzB,IAAIC,KACF3C,EAAO,KAAK2C,CAAW,GAGzBF,EAAsBC,GAAM1C,CAAM;AAAA,EAAA,CACnC;AACH,GAEMsC,KAAkB,MAAM;AAC5B,MAAIM,IAAyB,CAAA;AAE7B,EAAArB,EAAY,QAAQ,CAAQmB,MAAA;AF/D9B,QAAAjE,GAAAC;AEgEI,UAAMmE,KAAUnE,KAAAD,IAAAmD,EAAa,IAAIc,EAAK,OAAO,MAA7B,gBAAAjE,EAAgC,OAAhC,gBAAAC,EAAoC;AACpD,IAAImE,KACFJ,EAAsBI,GAASD,CAAa;AAAA,EAC9C,CACD;AAED,QAAME,IAAoB,CAAA,GACpB9C,IAASuB,EAAY,OAAO,CAACwB,GAAKL,MAAS;AACzC,UAAA,EAAE,SAAAZ,EAAY,IAAAY;AAEpB,WAAIE,EAAc,SAASd,CAAO,KAAKgB,EAAS,SAAShB,CAAO,MAIhEgB,EAAS,KAAKhB,CAAO,GACrBiB,EAAI,KAAKL,CAAI,IAENK;AAAA,EACT,GAAG,CAAqB,CAAA;AAExB,SAAO/C,EAAO,UAAQ;AACd,UAAAgD,IAAShD,EAAO;AACtB,IAAIgD,KACFA,EAAO,KAAK;AAAA,EAEhB;AAEA,EAAAzB,IAAc,CAAA,GACOC,IAAA;AACvB,GC9GayB,KAAU,CAACC,MAA6B;AACnD,EAAAtB,EAAa,IAAIK,EAAiB,CAAA,EAAG,KAAK,KAAKiB,CAAY;AAC7D,GAEaC,IAA0B,CAAC7E,MAAkB;AAClD,QAAA,EAAE,SAAAwD,EAAY,IAAAxD;AAEpB,EAAIwD,KACFsB,GAAWtB,CAAO,GAEpBuB,EAAoB/E,CAAO;AAC7B,GAEM+E,IAAsB,CAACnF,MAAe;AAC1C,GAACA,EAAK,YAAY,CAAC,GAAG,QAAQ,CAAQwE,MAAA;AAEpC,IADoBA,EAAK,UAEvBS,EAAwBT,CAAI,IAE5BW,EAAoBX,CAAI;AAAA,EAC1B,CACD;AACH,GAEMU,KAAa,CAACtB,MAAmB;AAC/B,QAAAwB,IAAU1B,EAAa,IAAIE,CAAO;AACxC,EAAIwB,MACFA,EAAS,KAAK,QAAQ,CAAUC,MAAAA,EAAQ,CAAA,GACxCD,EAAS,OAAO,IAChB1B,EAAa,OAAOE,CAAO;AAE/B;AC1BA,IAAI0B,IAAuB,CAAA;AAEpB,MAAMC,IAAmB,MAAM;AACpC,EAAAD,EAAa,QAAQ,CAAAd,MAAQgB,GAAwBhB,CAAI,CAAC,GAC1Dc,IAAe,CAAA;AACjB,GACaG,KAAkB,CAACzF,MAAe;AAC7C,EAAIA,EAAK,WACPsF,EAAa,KAAKtF,CAAI;AAE1B,GACa0F,KAAgB,CAACV,MAC5BtB,EAAa,IAAIK,GAAiB,EAAG,IAAI,KAAKiB,CAAY,GAE/CQ,KAA0B,CAACpF,MAAkB;AAClD,QAAA,EAAE,SAAAwD,EAAY,IAAAxD;AAEpB,MAAIwD,GAAS;AACL,UAAA+B,IAAYjC,EAAa,IAAIE,CAAO,GACpCgC,IAAQD,KAAA,gBAAAA,EAAW,KACnBE,IAAWF,KAAA,gBAAAA,EAAW;AAE5B,IAAAnC,EAAW,QAAQI,GAEfiC,MACFA,EAAS,QAAQ,IAGfD,MACFD,EAAU,MAAM,IAEVC,EAAA,QAAQ,CAACP,MAAqB;AAClC,YAAMS,IAAWT;AACjB,MAAIS,KACFf,GAAQe,CAAQ;AAAA,IAClB,CACD;AAAA,EAEL;AACF,GCxCaC,IAAa,CACxBf,GACAgB,IAA4B,MAAM,CAAA,MAC/B;AACH,QAAML,IAAYjC,EAAa,IAAIK,EAAiB,CAAA,GAC9C,EAAE,KAAAkC,GAAK,KAAAC,EAAQ,IAAAP,GACfQ,IAAMF,EAAIC,EAAI,KAAK;AAEzB,MAAIC,KAAOC,GAAmBD,GAAKH,EAAc,CAAA,GAAG;AAClD,UAAMF,IAAWd;AACjB,IAAIc,KACSH,EAAA,KAAK,KAAKG,CAAQ;AAAA,EAEjC;AAEI,EAAAG,EAAAC,EAAI,KAAK,IAAIF,EAAa,GAC9BE,EAAI,SAAS;AACf,GAEaG,KAA0B,CAACjG,MAAkB;AAClD,QAAA,EAAE,SAAAwD,EAAY,IAAAxD;AAEpB,MAAIwD,GAAS;AACL,UAAA+B,IAAYjC,EAAa,IAAIE,CAAO,GACpCgC,IAAQD,KAAA,gBAAAA,EAAW,MACnBE,IAAWF,KAAA,gBAAAA,EAAW;AAE5B,IAAAnC,EAAW,QAAQI,GAEfiC,MACFA,EAAS,QAAQ,IAGfzF,EAAQ,QAAQwF,MAClBD,EAAU,OAAO,IACjBC,EAAM,QAAQ,CAACP,MAAqBA,EAAQ,CAAA;AAAA,EAEhD;AACF,GAEMe,KAAqB,CAACE,GAAyBC,MACnD,CAACD,EAAa,UAAU,CAACA,EAAa,SAClC,KACAA,EAAa,KAAK,CAACH,GAAKK,MAAUL,MAAQI,EAAQC,CAAK,CAAC,GCjCjDC,KAAS,CACpBzG,GACA0G,GACAC,MACG;AACH,EAAAD,UAAgB,SAAS,OACzB1G,EAAK,SAAS,IACdA,EAAK,cAAc0G;AAEb,QAAAE,IAAMC,EAAU7G,CAAI;AAE1B,SAAI2G,KACF3G,EAAK,eAAe2G,GACRD,EAAA,aAAaE,GAAKD,CAAY,KAE1CD,EAAY,YAAYE,CAAG,GAGZrB,KAEV,MAAM;ANjBf,QAAAhF;AMkBU,UAAAoF,KAAYpF,IAAAmD,EAAa,IAAI1D,EAAK,aAAa,CAAE,CAAA,MAArC,gBAAAO,EAAwC,GAAG;AAC7D,IAAIoF,MACFV,EAAwBU,CAAS,GACjCmB,EAAqBnB,CAAS,GAC9BoB,GAAWpB,CAAS;AAAA,EACtB;AAEJ,GAEaqB,IAAa,CAACC,MAAsB;AACzC,QAAA,EAAE,cAAAC,EAAiB,IAAAD;AAErB,EAAAC,KAAgBA,MAAiB,OAClC;AAAA,IACC,GAAGC;AAAA,IACH,GAAGC;AAAA,IACH,GAAGC;AAAA,IACH,GAAGC;AAAA,IACH,IAAIC;AAAA,IACJ,IAAIC;AAAA,EAAA,EACHN,CAAY,EAAED,CAAW;AAEhC,GAEaH,IAAuB,CAACzG,MAAuB;AACtD,EAAAA,EAAa,SAASA,EAAa,MACzBoH,GAAApH,EAAa,OAAOA,EAAa,EAAE,IAGhDA,EAAa,YAAY,CAAI,GAAA,QAAQ,CAACqH,MAAoB;AACzD,IAAAZ,EAAqBY,CAAS;AAAA,EAAA,CAC/B;AACH,GAEMX,KAAa,CAAC3G,MAAkB;AACtB,EAAAuH,EAAAvH,GAASA,EAAQ,WAA0B;AAC3D,GAEMgH,IAAa,CAAChH,MAAkB;AAChC,EAAAA,EAAQ,YAAYA,EAAQ,MAClBqH,GAAArH,EAAQ,UAAUA,EAAQ,EAAE,GAG1CuH;AAAA,IACEvH;AAAA,IACAwH,EAAsB5F,EAAU5B,CAAO,CAAC;AAAA,EAAA;AAE5C,GAEMuH,IAAgB,CAACvH,GAAeyH,MAAwB;ANnE9D,MAAAtH,GAAAC;AMoEM,EAAAqH,KAAUzH,EAAQ,SAChBG,IAAAH,EAAQ,OAAR,gBAAAG,EAAY,cAAa,IACpBsH,EAAA,YAAYzH,EAAQ,EAAE,MACpBI,IAAAJ,EAAQ,OAAR,gBAAAI,EAAY,cAAa,MAClCsH,EAA2B1H,GAASyH,CAAqB,GAE3D,OAAOzH,EAAQ;AAEnB,GAEM0H,IAA6B,CAAC1H,GAAeyH,MAAwB;AACzE,IAACzH,KAAA,gBAAAA,EAAS,iBAAeA,KAAA,gBAAAA,EAAS,aAAY,IAAI,QAAQ,CAAQoE,MAAA;AN/EpE,QAAAjE,GAAAC;AMgFQ,MAAAD,IAAAiE,EAAK,OAAL,gBAAAjE,EAAS,cAAa,IACjBsH,EAAA,YAAYrD,KAAA,gBAAAA,EAAM,EAAE,MAClBhE,IAAAgE,EAAK,OAAL,gBAAAhE,EAAS,cAAa,MAC/BsH,EAA2BtD,GAAMqD,CAAM;AAAA,EACzC,CACD;AACH,GAEMN,IAAoB,CAACnH,MAAkB;AAC3C,EAAAgH,EAAWhH,CAAO,GAClB+G,EAAQ/G,CAAO;AACjB,GAEMoH,KAAmB,CAACpH,MAAkB;AAC1C,EAAAgH,EAAWhH,CAAO,GACV+G,EAAA/G,GAASA,EAAQ,EAAE;AAC7B,GAEM+G,IAAU,CACd/G,GACA2H,MACG;AACH,EAAKA,MACHA,IAAalB,EAAUzG,CAAO;AAG1B,QAAA4H,IAAahG,EAAU5B,CAAO;AACpC,MAAI4H,EAAW,MAAM;AACb,UAAAC,IAAWL,EAAsBI,CAAU,GAE3CE,IADSF,EAAW,SAAS,SAE/BG,EAA4BH,GAAYhG,EAAUgG,CAAU,CAAC,IAC7DG,EAA4B/H,GAAS4H,CAAU;AAEnD,IAAID,KAAcE,MACZC,IACOD,EAAA,aAAaF,GAAYG,CAAM,IAExCD,EAAS,YAAYF,CAAU,GAGhBxC;EAErB;AACF,GAEM4C,IAA8B,CAClCnI,GACAgI,MACsD;AAChD,QAAAI,IAAWJ,EAAW,YAAY,IAElCK,IADQD,EAAS,QAAQpI,CAAI,IACT,GACpBsI,IAAqBF,EAAS,MAAMC,CAAS,GAE7CE,IAAcC,GAA6BF,CAAkB,GAC7DG,IAAaT,EAAW,QAAQ;AAEtC,MAAIO;AACK,WAAAA;AAGT,MAAI,CAACP,EAAW,UAAUlH,EAAiB2H,CAAU;AACnD,WAAON,EAA4BH,GAAYhG,EAAUgG,CAAU,CAAC;AAC3D,MAAAA,EAAW,UAAUA,EAAW;AACzC,WAAOA,EAAW;AAItB,GAEMQ,KAA+B,CACnCF,MAEAA,EAAmB;AAAA,EACjB,CACEI,GACAC,MACG;AACH,UAAM5H,IAAO4H,EAAM,MACbC,IAAKD,EAAM,IACXE,IAAa9H,KAAQD,EAAiBC,CAAI;AAEhD,WAAI2H,MAEOG,IACFL,GAA6BG,EAAM,YAAY,CAAE,CAAA,IAC/CC,KAAMA,EAAG,aAAa,KACxBA,IAGFF;AAAA,EACT;AAAA,EACA;AACF,GAEIrB,KAAc,CAACjH,MAAkB;AAC/B,QAAA4H,IAAahG,EAAU5B,CAAO,GAC9B0I,IAAiB1I,EAAQ;AAE3B,MAAA4H,EAAW,QAAQc;AACjB,QAAAA,EAAe,aAAa;AAC9B,MAAAvB,EAAkBnH,CAAO;AAAA,SACpB;AACC,YAAA2I,IAAgBnB,EAAsBI,CAAU,GAChDD,IAAalB,EAAUzG,CAAO;AAEpC,MAAI2I,KACYA,EAAA,aAAahB,GAAYe,CAAc,GAEtCvD;IACnB;AAEJ,GAEMkC,KAAc,CAClBuB,GACAtH,MACG;AACK,EAAAsB,EAAAgG,KAAY,EAAE,EAAE,QAAQ,CAAC,CAAC1H,GAASC,CAAS,MAAyB;AACvE,IAAAD,EAAQ,MAAM,KAAK,KACbI,EAAA;AAAA,MACNgB,EAAapB,CAAO;AAAA,MACpBC;AAAA,IAAA;AAAA,EAEJ,CACD;AACH,GAEM+F,KAAa,CAAClH,MAAkB;ANjNtC,MAAAG;AMkNE,QAAMmB,IAAUtB,EAAQ;AAEpB,MAAAA,EAAQ,SAAS,QAAQ;AAC3B,IAAA6I,GAAW7I,CAAO;AAElB;AAAA,EACF;AAEA,MAAIsB,GAAS;AACL,UAAA,EAAE,UAAAsH,GAAU,OAAA5G,EAAU,IAAAhC;AAEhB,IAAAoC,GAAAJ,GAAOV,GAASsH,CAAQ,GAEpC,OAAO5I,EAAQ,UAEXA,EAAQ,QAAQ,YACjBsB,EAA6B,QAAQ,SAAOnB,IAAAH,KAAA,gBAAAA,EAAS,UAAT,gBAAAG,EAAgB,UAAS,EAAE;AAAA,EAE5E;AAEC,GAAAH,EAAQ,YAAY,IAAI,QAAQ,CAACsH,MAAoBV,EAAWU,CAAS,CAAC,GAE3ErB,GAAwBjG,CAAO;AACjC,GAEM6I,KAAa,CAAC7I,MAAkB;AACpC,QAAMsB,IAAUtB,EAAQ;AAExB,EAAIsB,MACMA,EAAA,YAAY,OAAOtB,EAAQ,IAAI;AAE3C,GAEMoC,KAAc,CAClBJ,GACAV,GACAsH,MACG;AACG,QAAAE,IAAgB,EAAE,GAAGF;AAEnB,EAAAhG,EAAAZ,KAAS,EAAE,EAAE,QAAQ,CAAC,CAACd,GAASC,CAAS,MAAyB;AACxE,QAAI4H,IAAgB;AACpB,IAAI7H,MAAY,UAELA,MAAY,eAAe,OAAOC,KAAc,WACxDG,EAAwB,YAAYH,IAC5BF,EAAeC,GAASC,CAAS,IAC1C6H;AAAA,MACE7H;AAAA,MACAF,EAAeC,GAAS4H,EAAc,KAAK,IAAIA,EAAc,QAAQ,CAAC;AAAA,MACtExH;AAAA,IAAA,IAEOF,GAAaF,GAASC,CAAS,IACxCA,EAAU,QAAQG,IACTJ,EAAQ,MAAM,KAAK,IAC5B+H;AAAA,MACE3H;AAAA,MACAJ;AAAA,MACAC;AAAA,MACA2H,EAAc5H,CAAO;AAAA,IAAA,IAEdM,GAAsBF,CAAO,KAAKJ,MAAY,YACtDI,EAA6B,UAAU,CAAC,CAACH,IACjCI,GAAqBD,CAAO,KAAKJ,MAAY,UACrDI,EAA6B,QAAQH,IAC7BE,GAAmBC,CAAO,KAAKJ,MAAY,aACnDI,EAA8B,WAAW,CAAC,CAACH,IACnCD,MACT,CAAC6H,GAAe5H,CAAS,IAAI+H,GAAkB/H,CAAS,GAEpD4H,MACE5F,EAAS,SAASjC,MAAY,UAC/BI,EAAwB;AAAA,MACvB;AAAA,MACAoB,EAAWxB,CAAO;AAAA,MACVC;AAAA,IAAA,IAGTG,EAAwB;AAAA,MACvBoB,EAAWxB,CAAO;AAAA,MACVC;AAAA,IAAA,MAMZ4H,KACF,OAAOD,EAAc5H,CAAO;AAAA,EAC9B,CACD,GAED2B,EAAKiG,CAAa,EAAE;AAAA,IAAQ,CAAA5H,MACzBI,EAAwB,gBAAgBJ,CAAO;AAAA,EAAA;AAEpD,GAEMgI,KAAoB,CAAC/H,MAA0C;AACnE,MAAIgI,IAAe;AACf,SAAA,OAAOhI,KAAc,cAClBA,MACYgI,IAAA,KAGLhI,IAAA,KAGP,CAACgI,GAAc,OAAOhI,CAAS,CAAC;AACzC,GAEMsF,IAAY,CAAC7G,MAAe;AAC5B,MAAA0B;AACE,QAAA,EAAE,MAAAX,GAAM,KAAAyI,GAAK,MAAAC,GAAM,OAAArH,GAAO,UAAAC,IAAW,CAAA,EAAO,IAAArC,GAC5C0J,IAAgB5I,EAAiBC,CAAI;AAE3C,SAAIyI,MAAQ,UACDjG,EAAA,QAAQ,OAAOnB,KAAA,gBAAAA,EAAO,KAAK,IAGlCsH,IACFhI,IAAU,IAAI,qBACLX,MAAS,aAAayI,IACrB9H,IAAA6B,EAAS,QACf,SAAS,gBAAgBA,EAAS,OAAOiG,CAAG,IAC5C,SAAS,cAAcA,CAAG,IACrBzI,MAAS,UAAUJ,EAAY8I,CAAI,IAC5C/H,IAAU,SAAS,eAAe,OAAO+H,CAAI,CAAC,IAEpC/H,IAAA,SAAS,cAAc,GAAG,GAGtCiI,GAAkBtH,GAAUX,CAAO,GACnCc,GAAYJ,GAAOV,CAAO,GAE1B1B,EAAK,KAAK0B,GAEV+D,GAAgBzF,CAAI,GAEhBwJ,MAAQ,UACVjG,EAAS,QAAQ,KAGZ7B;AACT,GAEMiI,KAAoB,CACxBtH,GACA0G,MACG;AACH,QAAMa,IAAkBvH,EAAS;AAAA,IAC/B,CAACwC,GAAuB6C,OAClBA,EAAU,QACR7C,EAAA,YAAYgC,EAAUa,CAAS,CAAC,GAG/B7C;AAAA,IAET,IAAI,iBAAiB;AAAA,EAAA;AAGnB,EAAAkE,KAAiBa,EAAgB,mBACnCb,EAAc,YAAYa,CAAe;AAE7C,GAEMP,KAAc,CAClB3H,GACAiB,GACAkH,GACAC,MACG;AACG,QAAAC,IAAYrH,EAAaC,CAAQ;AAEvC,EAAImH,MAAoBD,MAClBC,KACMpI,EAAA,oBAAoBqI,GAAWD,CAAe,GAGpDD,KACMnI,EAAA,iBAAiBqI,GAAWF,CAAe;AAGzD,GAEMT,KAAc,CAClBY,GACAC,GACAvI,MACG;AACG,QAAAwI,IAAgB,EAAE,GAAGD,KACrBE,IAAgBzI,KAAA,gBAAAA,EAAyB;AAE/C,EAAIyI,MACFnH,EAAQgH,CAAK,EAAE,QAAQ,CAAC,CAACI,GAAU7I,CAAS,MAAM;AAC/C,IAAA4I,EAAqBC,CAAQ,IAAI7I,GAClC,OAAO2I,EAAcE,CAAQ;AAAA,EAAA,CAC9B,GAEDpH,EAAQkH,CAAa,EAAE;AAAA,IACrB,CAAC,CAACE,CAAQ,MAAQD,EAAqBC,CAAQ,IAAI;AAAA,EAAA;AAGzD,GAEMxC,IAAwB,CAC5B3F,MACsD;AAChD,QAAAyH,IAAgB5I,EAAiBmB,EAAK,IAAI;AAC5C,SAAAA,EAAK,UAAUyH,IACVzH,EAAK,cAGTyH,IAIE9B,EAAsB5F,EAAUC,CAAI,CAAC,IAHnCA,EAAK;AAIhB,GChbaoI,IAAkB,CAC7BjK,GACAC,MAEAiK;AAAA,EACElK;AAAA,EACA2B,GAA0BF,GAAYzB,CAAO,CAAC,EAAEA,GAASC,CAAY;AAAA,EACrEA;AACF,GAEIiK,KAAgB,CACpBlK,GACAmK,GACAlK,MACG;AACH,QAAMmK,IAAaC,GAAWrK,GAASmK,GAAYlK,CAAY,GACzDqK,IAAmE;AAAA,IACvEF;AAAA,IACAD;AAAA,IACAlK;AAAA,EAAA,GAEI6G,IAAeyD,GAAwB,GAAGD,CAAK;AAE1C,SAAAF,EAAA,WAAWI,GAAsB,GAAGF,CAAK,GACpDF,EAAW,eAAetD,GAEL2D,GAAAL,GAAYnK,GAAc6G,CAAY,GAEpDsD;AACT,GAEMK,KAAuB,CAC3BL,GACAnK,GACA6G,MACG;AACC,EAAAA,MAAiB,OAAO7G,MAC1BmK,EAAW,KAAKnK,EAAa,KAG3B6G,KAAgB,CAAC,KAAK,KAAK,IAAI,EAAE,SAASA,CAAY,MACpD7G,KAAA,QAAAA,EAAc,YAChB4E,EAAwB5E,CAAY,GACpCyG,EAAqBzG,CAAY,IAEnCmK,EAAW,cAAcnK,KAAA,gBAAAA,EAAc,WAGzCmK,EAAW,WAAWnK,KAAA,gBAAAA,EAAc;AACtC,GAEMsK,KAA0B,CAC9BvK,GACAmK,GACAlK,MAC2B;AACrB,QAAAyK,IAAoBzK,KAAgBA,EAAa,MACjD0K,IAAiB5J,EAAkBf,CAAO,GAE1CqI,IAAa,CADJ,CAACrI,EAAQ,aACM4B,EAAU5B,CAAO,EAAE,MAC3C+C,IAAMvC,EAAOR,CAAO,GACpB4K,IAAmBvC,MAAe,UAAU9H,EAAYwC,CAAG,GAC3D8H,IACJ7K,EAAQ,SAAS,UACjBmK,KACAnK,EAAQ,UAASC,KAAA,gBAAAA,EAAc;AAE7B,MAAAyB;AACJ,SAAIiJ,IACOjJ,IAAA,MACAmJ,IACAnJ,IAAA,MACCgJ,IAEDP,IACTzI,IAASkJ,IAAmB,OAAO,MAEnClJ,IAASkJ,IAAmB,OAAO,MAJ1BlJ,IAAA,KAOJA;AACT,GAEM2I,KAAa,CACjBrK,GACAmK,GACAlK,MAEIW,EAA6BZ,CAAO,IAC/BmK,KAAclK,IACjB6B,GAAS7B,GAAcD,CAAO,IAC9BA,EAAQ,YAGPA,GAGHwK,KAAwB,CAC5BxK,GACAmK,GACAlK,MAEAkK,KAAclK,IACV6K,GAAwB9K,GAASC,CAAY,IAC7C8K,GAAqB/K,CAAO,GAE5B+K,KAAuB,CAAC/K,OAC3BA,EAAQ,YAAY,CAAI,GAAA;AAAA,EAAI,CAACoE,MAC5BtB,EAAOmH,EAAgB7F,CAAI,GAAG,EAAE,WAAW,MAAMpE,GAAS;AAC5D,GAEI8K,KAA0B,CAAC9K,GAAeC,MAC9CD,EAAQ,SAAS,UAAUO,EAAYC,GAAQR,EAAQ,YAAY,IAAI,CAAC,CAAC,CAAC,IACtEgL,GAA4BhL,GAASC,CAAY,KAChDD,EAAQ,YAAY,CAAA,GAAI;AAAA,EAAI,CAACoE,GAAYgC,MACxCtD,EAAOmH,EAAgB7F,IAAOnE,EAAa,YAAY,IAAImG,CAAK,CAAC,GAAG;AAAA,IAClE,WAAW,MAAMpG;AAAA,EAAA,CAClB;AACH,GAEAgL,KAA8B,CAAChL,GAAeC,MAAuB;AACnE,QAAA,CAACgL,GAAiBC,CAAc,IAAIC;AAAA,IACxCnL;AAAA,IACAC;AAAA,EAAA;AAGF,SAAAiL,EAAe,IAAI,CAAcE,MAAA;AAC/B,UAAM5C,IAAK4C,EAAW;AAEtB,IAAI5C,KAAA,QAAAA,EAAI,cACHA,EAAA,WAAW,YAAYA,CAAE;AAAA,EAC9B,CACD,GAEMyC;AACT,GAEME,KAAmB,CAACnL,GAAeC,MAAuB;AAC9D,QAAMoL,IAAc,CAAC,GAAIrL,EAAQ,YAAY,CAAG,CAAA,GAC1CsL,IAAmB,CAAC,GAAIrL,EAAa,YAAY,CAAG,CAAA;AAcnD,SAAA,CAbiBoL,EAAY,IAAI,CAAQjH,MAAA;AACxC,UAAAmH,IAAeC,GAAwBpH,GAAMkH,CAAgB,GAC7DhE,IAAY2C,EAAgB7F,GAAMmH,CAAY;AAEpD,WAAIA,KACFD,EAAiB,OAAOA,EAAiB,QAAQC,CAAY,GAAG,CAAC,GAGnEjE,EAAU,YAAY,MAAMtH,GAErBsH;AAAA,EAAA,CACR,GAEwBgE,CAAgB;AAC3C,GAEME,KAA0B,CAACpH,GAAYkH,MAC3CA,EAAiB;AAAA,EACf,CAAoBG,MAAAjL,EAAOiL,CAAgB,MAAMjL,EAAO4D,CAAI;AAC9D,GCzKWsH,KAAiB,CAC5B9G,GACAgB,IAA4B,MAAM,CAAA,MAC/B;AAGH,EAFmBtC,EAAa,IAAIK,EAAiB,CAAA,EAAG,IAE7C,KAAK,MAAMgC,EAAWf,GAAcgB,CAAY,CAAC,GAC5DD,EAAWf,GAAcgB,CAAY;AACvC,GAEa+F,KAAoB,MAAM;ARMvC,MAAAxL;AQLE,QAAMyL,KAAazL,IAAAmD,EAAa,IAAIK,EAAiB,CAAA,MAAlC,gBAAAxD,EAAqC;AAExD,EAAIyL,KAAA,QAAAA,EAAY,UACHA,EAAA,QAAQ,CAAYlG,MAAAA,EAAU,CAAA;AAE7C,GCQa5E,KAAW,CAAC+K,MAAkB5J,OAAsB;AAAA,EAC/D,MAAM;AAAA,EACN,UAAAA;AACF,IAEa6J,KAAI,CACf1C,GACApH,MACGC,MACA;AACG,QAAA8J,IAAiC,EAAE,OAAO,OAAU,GACpDC,IAAWhK,KAAS,IACpBqJ,IAAcY,GAAeF,GAAmB9J,CAAQ,GACxDiK,IAAOC,GAAS/C,GAAK4C,GAAUX,CAAW;AAE5C,SAACzK,EAA6BsL,CAAI,MACpCH,EAAkB,QAAQG,IAGrBA;AACT,GAEaE,KACX,CAAI7G,MACJ,CAACsG,GAAWQ,MACV9G,GAEE+G,KAA0B,CAC9BlD,GACApH,GACAC,GACAhC,MACG;ATxCL,MAAAE;ASyCE,EAAAkD,EAAY,QAAQ;AAEpB,QAAMrD,IAAUuM,GAAiBnD,GAAKpH,GAAOC,CAAQ,GAC/C4E,IAAcoD,EAAgBjK,GAASC,CAAY,GACnD,EAAE,QAAAuM,GAAQ,WAAA5K,GAAW,aAAA0E,GAAa,cAAAC,MAAiBtG;AAIrD,MAFJ4G,EAAY,YAAYjF,GAEpB,CAAC4K,KAAU5K,GAAW;AACxB,UAAMoG,MAAW7H,IAAAyB,QAAA,gBAAAzB,EAAa,aAAY,CAAA,GACpCiG,KAAQ4B,EAAS,QAAQ/H,CAAY;AAElC,IAAA+H,EAAA,OAAO5B,IAAO,GAAGS,CAAW;AAAA,EAAA;AAErC,IAAAA,EAAY,SAAS,IACrBA,EAAY,cAAcP,GAC1BO,EAAY,eAAeN;AAG7B,EAAAlD,EAAY,QAAQ,IACpBuD,EAAWC,CAAW;AACxB,GAEM0F,KAAmB,CAACnD,GAAkBpH,GAAcC,OA6BjD,EAAE,SA5BOmH,EAAI,MA4BF,MA3BLA,GA2BW,OAAApH,GAAO,UAAAC,GAAU,SAzBzB,CAACuB,IAAUxB,MAAU;AACnC,EAAAkC,GAAmBV,CAAO;AAG1B,QAAMiJ,IADYrD,EAAIpH,GAAOC,CAAQ,EACJsB,GAAgBC,CAAO,GAAGxB,GAAOC,CAAQ,GAEpEyK,IAAaC;AAAA,IACjBF;AAAA,IACAjJ;AAAA,IACA4F;AAAA,IACApH;AAAA,IACAC;AAAA,EAAA,GAGIhC,IAAeyM;AAErB,SAAA5I;AAAA,IAAgBN;AAAA,IAAS,MACvB8I,GAAwBlD,GAAKpH,GAAOC,GAAUhC,CAAY;AAAA,EAAA,GAG3D2D,EAAoBJ,GAAS,IAAI,EAAsB,QAAQkJ,GAEzDA;AAAA,EAGwC,IAG7CC,KAAiB,CACrBF,GACAjJ,GACA4F,GACApH,GACAC,MACG;AACG,QAAAyK,IAAaD,EAAezK,CAAK;AACvC,MAAI0K,EAAW;AACb,UAAM,IAAI;AAAA,MACR;AAAA,IAAA;AAIJ,SAAAE;AAAA,IACEF;AAAA,IACAlJ;AAAA,IACA4F;AAAA,IACApH;AAAA,IACAC;AAAA,IACA4K,GAAaJ,GAAgBjJ,GAAS4F,GAAKpH,GAAOC,CAAQ;AAAA,EAAA,GAGrDyK;AACT,GAEMG,KAAe,CACnBJ,GACAjJ,GACA4F,GACApH,GACAC,MACG;AACG,QAAAH,IAAW,MACfgL,GAAUL,GAAgBjJ,GAAS4F,GAAKpH,GAAOC,GAAUH,CAAQ;AAC5D,SAAAA;AACT,GAEMgL,KAAY,CAChBL,GACAjJ,GACA4F,GACApH,GACAC,GACAH,MACG;AACH,EAAAmC,GAAoBT,CAAO,GACTmI;AAEZ,QAAA1L,IAAewM,EAAezK,CAAK;AAEzC,SAAA8B;AAAA,IAAgBN;AAAA,IAAS,MACvB8I,GAAwBlD,GAAKpH,GAAOC,GAAUhC,CAAY;AAAA,EAAA,GAG5D2M,GAAkB3M,GAAcuD,GAAS4F,GAAKpH,GAAOC,GAAUH,CAAQ,GAEtE8B,EAAoBJ,GAAS,IAAI,EAAsB,QAAQvD,GAEzDA;AACT,GAEM2M,KAAoB,CACxBhN,GACA4D,GACA4F,GACApH,GACAC,GACAH,MACG;AACH,EAAAgB,EAAOlD,GAAM;AAAA,IACX,WAAWoC;AAAA,IACX,WAAWC;AAAA,IACX,MAAMmH;AAAA,IACN,SAASA,EAAI;AAAA,IACb,SAAA5F;AAAA,IACA,UAAA1B;AAAA,EAAA,CACD;AACH,GAEMqK,KAAW,CACf/C,GACApH,GACAC,MACG;AACC,MAAApB,EAAsBuI,CAAG;AACpB,WAAAtI,GAASkB,GAAO,GAAGC,CAAQ;AACpC,MAAWrB,EAA6BwI,CAAG,GAAG;AAC5C,UAAM2D,IAAuBR,GAAiBnD,GAAKpH,GAAOC,CAAQ;AAElE,WAAOoB,EAAY,QACf0J,IACAA,EAAqB,QAAQ;AAAA,EACnC;AAEO,SAAA;AAAA,IACL,MAAM;AAAA,IACN,KAAA3D;AAAA,IACA,OAAApH;AAAA,IACA,UAAAC;AAAA,EAAA;AAEJ,GAEMgK,KAAiB,CACrBF,GACA9J,MAEAA,EAAS;AAAA,EAAI,CAACmC,MACZtB,EAAOkK,GAAiB5I,CAAI,GAAG,EAAE,WAAW,MAAM2H,EAAkB,OAAO;AAC7E,GAEIiB,KAAmB,CAAC5I,MAAgC;AACxD,MAAIA,KAAS,QAA8BA,MAAS;AAC3C,WAAA,EAAE,MAAM;AACN,MAAA,MAAM,QAAQA,CAAI,GAAG;AACxB,UAAA2H,IAAiC,EAAE,OAAO,OAAU,GAEpDG,IAAO;AAAA,MACX,MAAM;AAAA,MACN,UAHeD,GAAeF,GAAmB3H,CAAI;AAAA,IAGrD;AAEF,WAAA2H,EAAkB,QAAQG,GAEnBA;AAAA,aACE,OAAO9H,KAAS,YAAY,OAAOA,KAAS;AACrD,WAAO,EAAE,MAAM,QAAQ,MAAMA,EAAK;AAG7B,SAAAA;AACT,GCrPa6I,KAAM,CAAIC,OAAkB,EAAE,OAAOA,EAAU,IAC/CC,KAAW,MAAM,QAAQ,QAAQ;"}
|
package/dist/lithent.umd.js
CHANGED
|
@@ -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
|
|
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;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,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:{}},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)=>{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)),Le(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 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&&(a.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"&&(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(o,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,o])=>{n[r]=o,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&&(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"&&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 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
|