@tachui/core 0.8.0-alpha → 0.8.5-alpha
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 +58 -2
- package/dist/assets/AssetCollection.d.ts.map +1 -1
- package/dist/assets/ColorAsset.d.ts.map +1 -1
- package/dist/assets/index.d.ts +1 -0
- package/dist/assets/index.d.ts.map +1 -1
- package/dist/assets/index.js +486 -0
- package/dist/assets/types.d.ts +8 -68
- package/dist/assets/types.d.ts.map +1 -1
- package/dist/binding-CYpEQquE.js +308 -0
- package/dist/build-plugins/index.d.ts +3 -0
- package/dist/build-plugins/index.d.ts.map +1 -0
- package/dist/build-plugins/modifier-types.d.ts +12 -0
- package/dist/build-plugins/modifier-types.d.ts.map +1 -0
- package/dist/build-tools/typegen-runner.d.ts +29 -0
- package/dist/build-tools/typegen-runner.d.ts.map +1 -0
- package/dist/bundles/assets.d.ts +19 -0
- package/dist/bundles/assets.d.ts.map +1 -0
- package/dist/bundles/context.d.ts +22 -0
- package/dist/bundles/context.d.ts.map +1 -0
- package/dist/bundles/minimal.d.ts +8 -2
- package/dist/bundles/minimal.d.ts.map +1 -1
- package/dist/common.js +427 -393
- package/dist/compiler/codegen.d.ts.map +1 -1
- package/dist/compiler/index.js +6 -1393
- package/dist/compiler/parser.d.ts +1 -1
- package/dist/compiler/parser.d.ts.map +1 -1
- package/dist/compiler/plugin.d.ts.map +1 -1
- package/dist/compiler/types.d.ts +28 -0
- package/dist/compiler/types.d.ts.map +1 -1
- package/dist/{component-XAzF1xqs.js → component-CECyfUOE.js} +80 -68
- package/dist/{component-base-x2XmHFjy.js → component-base-CJ__jTlr.js} +9 -7
- package/dist/component-context-B6qX_Qsg.js +176 -0
- package/dist/components/factory.d.ts +24 -0
- package/dist/components/factory.d.ts.map +1 -0
- package/dist/components/index.d.ts +3 -2
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +8 -6
- package/dist/components/wrapper.d.ts +70 -30
- package/dist/components/wrapper.d.ts.map +1 -1
- package/dist/concatenated-component-_tF1eMvy.js +2288 -0
- package/dist/concatenation/concatenated-component.d.ts +16 -2
- package/dist/concatenation/concatenated-component.d.ts.map +1 -1
- package/dist/concatenation/text-optimizer.d.ts.map +1 -1
- package/dist/config.d.ts +7 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/constants/layout.d.ts +2 -9
- package/dist/constants/layout.d.ts.map +1 -1
- package/dist/css-classes/index.js +15 -173
- package/dist/{effect-B9Knft0b.js → effect-DGmdACI2.js} +3 -3
- package/dist/enhanced-renderer-Bwqsh8Ku.js +172 -0
- package/dist/essential.js +425 -391
- package/dist/{index-DIvMCJQO.js → factories-Co2Lv2kJ.js} +13 -13
- package/dist/factory-D7jAY5Kn.js +485 -0
- package/dist/gradients/css-generator.js +99 -0
- package/dist/gradients/index.js +56 -0
- package/dist/gradients/reactive.d.ts.map +1 -1
- package/dist/gradients/types.d.ts +3 -91
- package/dist/gradients/types.d.ts.map +1 -1
- package/dist/hooks-DeLasj54.js +446 -0
- package/dist/index-JQ1sW1SK.js +2049 -0
- package/dist/index-X8MVY78C.js +618 -0
- package/dist/index.d.ts +8 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +426 -392
- package/dist/minimal-prod.js +94 -93
- package/dist/minimal.js +126 -106
- package/dist/modifiers/alignment.d.ts +5 -0
- package/dist/modifiers/alignment.d.ts.map +1 -0
- package/dist/modifiers/base.d.ts +6 -7
- package/dist/modifiers/base.d.ts.map +1 -1
- package/dist/modifiers/base.js +24 -16
- package/dist/modifiers/builder.d.ts +28 -165
- package/dist/modifiers/builder.d.ts.map +1 -1
- package/dist/modifiers/builder.js +7 -7
- package/dist/modifiers/core.d.ts +0 -1
- package/dist/modifiers/core.d.ts.map +1 -1
- package/dist/modifiers/corner-radius.d.ts +8 -0
- package/dist/modifiers/corner-radius.d.ts.map +1 -0
- package/dist/modifiers/index.d.ts +9 -6
- package/dist/modifiers/index.d.ts.map +1 -1
- package/dist/modifiers/index.js +36 -30
- package/dist/modifiers/layout-priority.d.ts +8 -0
- package/dist/modifiers/layout-priority.d.ts.map +1 -0
- package/dist/modifiers/opacity.d.ts +8 -0
- package/dist/modifiers/opacity.d.ts.map +1 -0
- package/dist/modifiers/presets.d.ts.map +1 -1
- package/dist/modifiers/proxy.d.ts +4 -0
- package/dist/modifiers/proxy.d.ts.map +1 -0
- package/dist/modifiers/registration-utils.d.ts +7 -0
- package/dist/modifiers/registration-utils.d.ts.map +1 -0
- package/dist/modifiers/registry.d.ts +18 -9
- package/dist/modifiers/registry.d.ts.map +1 -1
- package/dist/modifiers/registry.js +2 -2
- package/dist/modifiers/type-generator.d.ts +82 -0
- package/dist/modifiers/type-generator.d.ts.map +1 -0
- package/dist/modifiers/types.d.ts +2 -479
- package/dist/modifiers/types.d.ts.map +1 -1
- package/dist/modifiers/types.js +1 -4
- package/dist/observed-object-DepiqSgg.js +269 -0
- package/dist/optimization-CbKNA9w4.js +21 -0
- package/dist/plugin-BCAdZXKq.js +1680 -0
- package/dist/plugins/index.js +28 -8
- package/dist/plugins/simplified-lazy-loader.d.ts.map +1 -1
- package/dist/presets-B9x94uRn.js +381 -0
- package/dist/proxy-Cqmbiyx0.js +175 -0
- package/dist/reactive/cleanup.d.ts.map +1 -1
- package/dist/reactive/computed.d.ts +1 -1
- package/dist/reactive/computed.d.ts.map +1 -1
- package/dist/reactive/context.d.ts +4 -3
- package/dist/reactive/context.d.ts.map +1 -1
- package/dist/reactive/index.d.ts +1 -0
- package/dist/reactive/index.d.ts.map +1 -1
- package/dist/reactive/index.js +84 -490
- package/dist/reactive/signal-list.d.ts +100 -0
- package/dist/reactive/signal-list.d.ts.map +1 -0
- package/dist/reactive/signal.d.ts.map +1 -1
- package/dist/reactive/types.d.ts +2 -89
- package/dist/reactive/types.d.ts.map +1 -1
- package/dist/reactive/types.js +1 -4
- package/dist/registration-utils-CNsN4eoU.js +27 -0
- package/dist/runtime/component.d.ts.map +1 -1
- package/dist/runtime/concatenation-aria.d.ts +24 -0
- package/dist/runtime/concatenation-aria.d.ts.map +1 -0
- package/dist/runtime/concatenation-aria.js +58 -0
- package/dist/runtime/concatenation-full.d.ts +30 -0
- package/dist/runtime/concatenation-full.d.ts.map +1 -0
- package/dist/runtime/concatenation-full.js +85 -0
- package/dist/runtime/concatenation-minimal.d.ts +25 -0
- package/dist/runtime/concatenation-minimal.d.ts.map +1 -0
- package/dist/runtime/concatenation-minimal.js +45 -0
- package/dist/runtime/context.d.ts.map +1 -1
- package/dist/runtime/dom-bridge.d.ts +1 -1
- package/dist/runtime/dom-bridge.d.ts.map +1 -1
- package/dist/runtime/dom-bridge.js +239 -12
- package/dist/runtime/event-delegation.d.ts +59 -0
- package/dist/runtime/event-delegation.d.ts.map +1 -0
- package/dist/runtime/index.d.ts +3 -1
- package/dist/runtime/index.d.ts.map +1 -1
- package/dist/runtime/index.js +96 -0
- package/dist/runtime/layout-scheduler.d.ts +89 -0
- package/dist/runtime/layout-scheduler.d.ts.map +1 -0
- package/dist/runtime/props.d.ts.map +1 -1
- package/dist/runtime/renderer.d.ts +54 -2
- package/dist/runtime/renderer.d.ts.map +1 -1
- package/dist/runtime/renderer.js +11 -7
- package/dist/runtime/semantic-role-manager.d.ts.map +1 -1
- package/dist/runtime/types.d.ts +2 -226
- package/dist/runtime/types.d.ts.map +1 -1
- package/dist/runtime/types.js +1 -1
- package/dist/scheduler-DI_8ykMk.js +169 -0
- package/dist/signal-list-BdpxSodS.js +525 -0
- package/dist/state/index.js +319 -0
- package/dist/theme-BFaKUcjZ.js +677 -0
- package/dist/utils/clone-helpers.d.ts +11 -0
- package/dist/utils/clone-helpers.d.ts.map +1 -0
- package/dist/validation/index.js +28 -26
- package/dist/version.d.ts +19 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +6 -0
- package/package.json +69 -9
- package/dist/concatenated-component-ByPl3_FF.js +0 -2933
- package/dist/dom-bridge-CAa1N2zX.js +0 -406
- package/dist/index-DCPJFUm9.js +0 -1407
- package/dist/index-vdsiw6gQ.js +0 -777
- package/dist/modifiers/as-html-validator.d.ts +0 -20
- package/dist/modifiers/as-html-validator.d.ts.map +0 -1
- package/dist/modifiers/as-html.d.ts +0 -65
- package/dist/modifiers/as-html.d.ts.map +0 -1
- package/dist/modifiers/background.d.ts +0 -51
- package/dist/modifiers/background.d.ts.map +0 -1
- package/dist/modifiers/basic-sanitizer.d.ts +0 -54
- package/dist/modifiers/basic-sanitizer.d.ts.map +0 -1
- package/dist/modifiers/css.d.ts +0 -86
- package/dist/modifiers/css.d.ts.map +0 -1
- package/dist/production-minimal-BY_gMc-l.js +0 -2532
- package/dist/scheduler-BKeqwrYE.js +0 -814
|
@@ -1,14 +1,241 @@
|
|
|
1
|
-
import "../scheduler-
|
|
2
|
-
import {
|
|
3
|
-
import "
|
|
1
|
+
import "../scheduler-DI_8ykMk.js";
|
|
2
|
+
import { n as C, o as M } from "../theme-BFaKUcjZ.js";
|
|
3
|
+
import "@tachui/types/reactive";
|
|
4
|
+
import { b as g, s as m, a as p } from "../component-context-B6qX_Qsg.js";
|
|
5
|
+
import { D as v } from "../concatenated-component-_tF1eMvy.js";
|
|
6
|
+
const L = new v(), f = /* @__PURE__ */ new Map(), l = /* @__PURE__ */ new Map(), h = /* @__PURE__ */ new Set();
|
|
7
|
+
function _(e) {
|
|
8
|
+
e._enhancedLifecycle && h.add(e);
|
|
9
|
+
}
|
|
10
|
+
function A() {
|
|
11
|
+
for (const e of h) {
|
|
12
|
+
const o = e._enhancedLifecycle;
|
|
13
|
+
if (o && !e.domReady) {
|
|
14
|
+
const t = D(e);
|
|
15
|
+
if (t.length > 0) {
|
|
16
|
+
if (e.domElements = /* @__PURE__ */ new Map(), t.forEach((n, r) => {
|
|
17
|
+
const s = n.id || `element-${r}`;
|
|
18
|
+
e.domElements.set(s, n), e.primaryElement || (e.primaryElement = n);
|
|
19
|
+
}), e.domReady = !0, o.onDOMReady) {
|
|
20
|
+
const n = o.onDOMReady(
|
|
21
|
+
e.domElements,
|
|
22
|
+
e.primaryElement
|
|
23
|
+
);
|
|
24
|
+
typeof n == "function" && (e.cleanup = e.cleanup || [], e.cleanup.push(n));
|
|
25
|
+
}
|
|
26
|
+
if (o.onMount) {
|
|
27
|
+
const n = o.onMount();
|
|
28
|
+
typeof n == "function" && (e.cleanup = e.cleanup || [], e.cleanup.push(n));
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
h.clear();
|
|
34
|
+
}
|
|
35
|
+
function D(e) {
|
|
36
|
+
const o = l.get(e);
|
|
37
|
+
if (o && o.length > 0)
|
|
38
|
+
return o;
|
|
39
|
+
const t = document.querySelectorAll(`[data-component-id="${e.id}"]`);
|
|
40
|
+
if (t.length > 0)
|
|
41
|
+
return Array.from(t);
|
|
42
|
+
if (e.id.startsWith("image-")) {
|
|
43
|
+
const n = document.querySelectorAll("img.tachui-image");
|
|
44
|
+
return Array.from(n).filter(
|
|
45
|
+
(r) => !Array.from(l.values()).flat().includes(r)
|
|
46
|
+
);
|
|
47
|
+
}
|
|
48
|
+
if (e.id.startsWith("text-")) {
|
|
49
|
+
const n = document.querySelectorAll(".tachui-text");
|
|
50
|
+
return Array.from(n).filter(
|
|
51
|
+
(r) => !Array.from(l.values()).flat().includes(r)
|
|
52
|
+
);
|
|
53
|
+
}
|
|
54
|
+
if (e.id.startsWith("vstack-") || e.id.startsWith("hstack-")) {
|
|
55
|
+
const n = document.querySelectorAll(".tachui-vstack, .tachui-hstack");
|
|
56
|
+
return Array.from(n).filter(
|
|
57
|
+
(r) => !Array.from(l.values()).flat().includes(r)
|
|
58
|
+
);
|
|
59
|
+
}
|
|
60
|
+
return [];
|
|
61
|
+
}
|
|
62
|
+
function N(e) {
|
|
63
|
+
C((o) => {
|
|
64
|
+
const t = g("root-app");
|
|
65
|
+
m(t);
|
|
66
|
+
const n = M();
|
|
67
|
+
n && n.context.set(p, t);
|
|
68
|
+
let r;
|
|
69
|
+
try {
|
|
70
|
+
r = e();
|
|
71
|
+
const a = document.getElementById("app");
|
|
72
|
+
if (!a)
|
|
73
|
+
throw new Error('App container element with id="app" not found');
|
|
74
|
+
y(r, a);
|
|
75
|
+
} catch (a) {
|
|
76
|
+
throw m(null), n && n.context.delete(p), a;
|
|
77
|
+
}
|
|
78
|
+
const s = o;
|
|
79
|
+
return () => (m(null), n && n.context.delete(p), s());
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
function y(e, o, t = !0) {
|
|
83
|
+
try {
|
|
84
|
+
t && (o.innerHTML = "");
|
|
85
|
+
let n = e;
|
|
86
|
+
"build" in e && typeof e.build == "function" && (n = e.build());
|
|
87
|
+
const r = n.render(), s = Array.isArray(r) ? r : [r], a = [];
|
|
88
|
+
for (const c of s) {
|
|
89
|
+
const i = L.render(c, o);
|
|
90
|
+
if (i instanceof DocumentFragment) {
|
|
91
|
+
const d = Array.from(i.childNodes);
|
|
92
|
+
for (const u of d)
|
|
93
|
+
u instanceof Element && (a.push(u), o.appendChild(u));
|
|
94
|
+
} else i instanceof Element && (a.push(i), o.appendChild(i));
|
|
95
|
+
}
|
|
96
|
+
if (a.length > 0) {
|
|
97
|
+
e.domElements = /* @__PURE__ */ new Map(), a.forEach((i, d) => {
|
|
98
|
+
const u = i.id || `element-${d}`;
|
|
99
|
+
e.domElements.set(u, i), i instanceof HTMLElement && (i._componentId = e.id), e.primaryElement || (e.primaryElement = i);
|
|
100
|
+
}), e.domReady = !0;
|
|
101
|
+
const c = e._enhancedLifecycle;
|
|
102
|
+
if (c?.onDOMReady) {
|
|
103
|
+
const i = c.onDOMReady(
|
|
104
|
+
e.domElements,
|
|
105
|
+
e.primaryElement
|
|
106
|
+
);
|
|
107
|
+
typeof i == "function" && (e.cleanup = e.cleanup || [], e.cleanup.push(i));
|
|
108
|
+
}
|
|
109
|
+
if (c?.onMount) {
|
|
110
|
+
const i = c.onMount();
|
|
111
|
+
typeof i == "function" && (e.cleanup = e.cleanup || [], e.cleanup.push(i));
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
for (const c of a)
|
|
115
|
+
b(c, e);
|
|
116
|
+
const E = [];
|
|
117
|
+
return f.set(o, e), l.set(e, a), e.mounted = !0, A(), () => {
|
|
118
|
+
E.forEach((c) => c()), w(e, o);
|
|
119
|
+
};
|
|
120
|
+
} catch (n) {
|
|
121
|
+
const r = Object.assign(new Error(), n, {
|
|
122
|
+
code: "MOUNT_FAILED",
|
|
123
|
+
context: "mountComponentTree"
|
|
124
|
+
}), s = e._enhancedLifecycle;
|
|
125
|
+
throw s?.onDOMError ? s.onDOMError(r, "mount") : s?.onError ? s.onError(r) : console.error("Failed to mount component tree:", n), n;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
function O(e, o) {
|
|
129
|
+
const t = l.get(e);
|
|
130
|
+
t && (t.forEach((n) => {
|
|
131
|
+
n.parentNode && n.parentNode.removeChild(n);
|
|
132
|
+
}), l.delete(e)), f.delete(o), e.mounted = !1, e.cleanup && (e.cleanup.forEach((n) => n()), e.cleanup = []);
|
|
133
|
+
}
|
|
134
|
+
function w(e, o) {
|
|
135
|
+
try {
|
|
136
|
+
const t = e._enhancedLifecycle;
|
|
137
|
+
t?.onUnmount && t.onUnmount(), e.cleanup && (e.cleanup.forEach((r) => {
|
|
138
|
+
try {
|
|
139
|
+
r();
|
|
140
|
+
} catch (s) {
|
|
141
|
+
console.error(`Cleanup error for component ${e.id}:`, s);
|
|
142
|
+
}
|
|
143
|
+
}), e.cleanup = []);
|
|
144
|
+
const n = l.get(e);
|
|
145
|
+
if (n && (n.forEach((r) => {
|
|
146
|
+
r.parentNode && r.parentNode.removeChild(r);
|
|
147
|
+
}), l.delete(e)), e.domElements) {
|
|
148
|
+
for (const r of e.domElements.values())
|
|
149
|
+
r instanceof HTMLElement && delete r._componentId;
|
|
150
|
+
e.domElements.clear();
|
|
151
|
+
}
|
|
152
|
+
e.primaryElement = void 0, e.domReady = !1, e.mounted = !1, f.delete(o);
|
|
153
|
+
} catch (t) {
|
|
154
|
+
const n = Object.assign(new Error(), t, {
|
|
155
|
+
code: "UNMOUNT_FAILED",
|
|
156
|
+
context: "unmountComponentEnhanced"
|
|
157
|
+
}), r = e._enhancedLifecycle;
|
|
158
|
+
r?.onDOMError ? r.onDOMError(n, "unmount") : console.error("Component unmounting failed:", t);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
function b(e, o) {
|
|
162
|
+
const t = e;
|
|
163
|
+
if (o.props) {
|
|
164
|
+
const n = o.props;
|
|
165
|
+
n.onClick && typeof n.onClick == "function" && t.addEventListener("click", n.onClick), n.onMouseEnter && typeof n.onMouseEnter == "function" && t.addEventListener("mouseenter", n.onMouseEnter), n.onMouseLeave && typeof n.onMouseLeave == "function" && t.addEventListener("mouseleave", n.onMouseLeave), n.onFocus && typeof n.onFocus == "function" && t.addEventListener("focus", n.onFocus), n.onBlur && typeof n.onBlur == "function" && t.addEventListener("blur", n.onBlur);
|
|
166
|
+
}
|
|
167
|
+
if (k(o) && o.modifiers) {
|
|
168
|
+
for (const n of o.modifiers)
|
|
169
|
+
if (n && "eventHandlers" in n && n.eventHandlers)
|
|
170
|
+
for (const [r, s] of Object.entries(
|
|
171
|
+
n.eventHandlers
|
|
172
|
+
))
|
|
173
|
+
typeof s == "function" && t.addEventListener(
|
|
174
|
+
r,
|
|
175
|
+
s
|
|
176
|
+
);
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
function k(e) {
|
|
180
|
+
return e && typeof e == "object" && ("modifiers" in e || "modifier" in e);
|
|
181
|
+
}
|
|
182
|
+
function I(e, o) {
|
|
183
|
+
const t = [];
|
|
184
|
+
for (const n of e) {
|
|
185
|
+
const r = y(n, o);
|
|
186
|
+
t.push(r);
|
|
187
|
+
}
|
|
188
|
+
return t;
|
|
189
|
+
}
|
|
190
|
+
function S(e, o) {
|
|
191
|
+
const t = l.get(e);
|
|
192
|
+
if (!t) {
|
|
193
|
+
console.warn("Attempted to update unmounted component");
|
|
194
|
+
return;
|
|
195
|
+
}
|
|
196
|
+
e.prevProps = e.props, e.props = { ...e.props, ...o };
|
|
197
|
+
const n = t[0]?.parentElement;
|
|
198
|
+
n && (O(e, n), y(e, n));
|
|
199
|
+
}
|
|
200
|
+
function W(e) {
|
|
201
|
+
let o = e;
|
|
202
|
+
for (; o; ) {
|
|
203
|
+
const t = f.get(o);
|
|
204
|
+
if (t)
|
|
205
|
+
return t;
|
|
206
|
+
o = o.parentElement;
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
const $ = {
|
|
210
|
+
getMountedComponents: () => Array.from(f.entries()),
|
|
211
|
+
getComponentElements: (e) => l.get(e),
|
|
212
|
+
isComponentMounted: (e) => e.mounted || !1,
|
|
213
|
+
/**
|
|
214
|
+
* Validate that all components are properly mounted
|
|
215
|
+
*/
|
|
216
|
+
validateMounting() {
|
|
217
|
+
const e = [];
|
|
218
|
+
for (const [o, t] of f.entries()) {
|
|
219
|
+
document.contains(o) || e.push(`Container for component ${t.id} is not in DOM`), t.mounted || e.push(
|
|
220
|
+
`Component ${t.id} marked as unmounted but still registered`
|
|
221
|
+
);
|
|
222
|
+
const n = l.get(t);
|
|
223
|
+
(!n || n.length === 0) && e.push(`Component ${t.id} has no associated DOM elements`);
|
|
224
|
+
}
|
|
225
|
+
return {
|
|
226
|
+
valid: e.length === 0,
|
|
227
|
+
issues: e
|
|
228
|
+
};
|
|
229
|
+
}
|
|
230
|
+
};
|
|
4
231
|
export {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
232
|
+
$ as DOMBridgeDebug,
|
|
233
|
+
W as getComponentFromElement,
|
|
234
|
+
I as mountComponentChildren,
|
|
235
|
+
y as mountComponentTree,
|
|
236
|
+
N as mountRoot,
|
|
237
|
+
_ as registerComponentWithLifecycleHooks,
|
|
238
|
+
O as unmountComponent,
|
|
239
|
+
w as unmountComponentEnhanced,
|
|
240
|
+
S as updateComponent
|
|
14
241
|
};
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Event Delegation System (Phase 3)
|
|
3
|
+
*
|
|
4
|
+
* Provides centralized event handling to reduce per-element listener overhead.
|
|
5
|
+
* Instead of attaching N listeners for N elements, we attach 1 listener per event type
|
|
6
|
+
* at the container level and route events to the correct handlers.
|
|
7
|
+
*/
|
|
8
|
+
type EventHandler = (event: Event) => void;
|
|
9
|
+
export declare class EventDelegator {
|
|
10
|
+
private containerListeners;
|
|
11
|
+
private elementHandlers;
|
|
12
|
+
private handlerCounts;
|
|
13
|
+
/**
|
|
14
|
+
* Register an event handler with delegation
|
|
15
|
+
*/
|
|
16
|
+
register(container: Element, element: Element, eventType: string, handler: EventHandler): () => void;
|
|
17
|
+
/**
|
|
18
|
+
* Unregister an event handler
|
|
19
|
+
*/
|
|
20
|
+
private unregister;
|
|
21
|
+
/**
|
|
22
|
+
* Ensure root listener exists for event type on container
|
|
23
|
+
*/
|
|
24
|
+
private ensureRootListener;
|
|
25
|
+
/**
|
|
26
|
+
* Remove root listener for event type on container
|
|
27
|
+
*/
|
|
28
|
+
private removeRootListener;
|
|
29
|
+
/**
|
|
30
|
+
* Handle delegated event by finding target handler
|
|
31
|
+
*/
|
|
32
|
+
private handleDelegatedEvent;
|
|
33
|
+
/**
|
|
34
|
+
* Check if event type should use delegation
|
|
35
|
+
*/
|
|
36
|
+
shouldDelegate(eventType: string): boolean;
|
|
37
|
+
/**
|
|
38
|
+
* Check if event type should use passive listeners
|
|
39
|
+
*/
|
|
40
|
+
shouldBePassive(eventType: string): boolean;
|
|
41
|
+
/**
|
|
42
|
+
* Get metrics for debugging
|
|
43
|
+
*/
|
|
44
|
+
getMetrics(container: Element): {
|
|
45
|
+
eventTypes: string[];
|
|
46
|
+
totalHandlers: number;
|
|
47
|
+
handlersPerType: Record<string, number>;
|
|
48
|
+
};
|
|
49
|
+
/**
|
|
50
|
+
* Cleanup all handlers for a container
|
|
51
|
+
*/
|
|
52
|
+
cleanupContainer(container: Element): void;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Global event delegator instance
|
|
56
|
+
*/
|
|
57
|
+
export declare const globalEventDelegator: EventDelegator;
|
|
58
|
+
export {};
|
|
59
|
+
//# sourceMappingURL=event-delegation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"event-delegation.d.ts","sourceRoot":"","sources":["../../src/runtime/event-delegation.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,KAAK,YAAY,GAAG,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAA;AAyC1C,qBAAa,cAAc;IAEzB,OAAO,CAAC,kBAAkB,CAAqD;IAG/E,OAAO,CAAC,eAAe,CAA0D;IAGjF,OAAO,CAAC,aAAa,CAA8C;IAEnE;;OAEG;IACH,QAAQ,CACN,SAAS,EAAE,OAAO,EAClB,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,YAAY,GACpB,MAAM,IAAI;IAkCb;;OAEG;IACH,OAAO,CAAC,UAAU;IA0BlB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAyB1B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAW1B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAiC5B;;OAEG;IACH,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAI1C;;OAEG;IACH,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAI3C;;OAEG;IACH,UAAU,CAAC,SAAS,EAAE,OAAO,GAAG;QAC9B,UAAU,EAAE,MAAM,EAAE,CAAA;QACpB,aAAa,EAAE,MAAM,CAAA;QACrB,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KACxC;IAqBD;;OAEG;IACH,gBAAgB,CAAC,SAAS,EAAE,OAAO,GAAG,IAAI;CAW3C;AAED;;GAEG;AACH,eAAO,MAAM,oBAAoB,gBAAuB,CAAA"}
|
package/dist/runtime/index.d.ts
CHANGED
|
@@ -14,7 +14,9 @@ export { LifecycleManager } from './lifecycle';
|
|
|
14
14
|
export { mount, unmount, updateProps } from './mounting';
|
|
15
15
|
export { lazy, memo } from './optimization';
|
|
16
16
|
export { ChildrenManager, createChildrenManager, createPropsManager, createRefManager, defaultChildrenRenderer, PropsManager, propsUtils, RefManager, } from './props';
|
|
17
|
-
export { DOMRenderer, h, renderComponent, text } from './renderer';
|
|
17
|
+
export { DOMRenderer, h, renderComponent, text, resetRendererMetrics, getRendererMetrics } from './renderer';
|
|
18
|
+
export type { RendererMetricsSnapshot } from './renderer';
|
|
19
|
+
export { EventDelegator, globalEventDelegator } from './event-delegation';
|
|
18
20
|
export * from './element-override';
|
|
19
21
|
export * from './semantic-role-manager';
|
|
20
22
|
export { AnimationManager, FocusManager, migrateFromSetTimeout, onDOMError, onDOMReady, onError, onMount, onUnmount, setupOutsideClickDetection, setupPositioning, useLifecycle, withDOMAccess, withErrorBoundary, withReactiveAsset, } from '../lifecycle/hooks';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,gBAAgB,EAChB,uBAAuB,EACvB,eAAe,EACf,cAAc,EACd,uBAAuB,EACvB,SAAS,EACT,UAAU,EACV,aAAa,GACd,MAAM,aAAa,CAAA;AAEpB,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,uBAAuB,EACvB,sBAAsB,EACtB,oBAAoB,EACpB,iBAAiB,EACjB,0BAA0B,EAC1B,uBAAuB,EACvB,uBAAuB,EACvB,0BAA0B,EAC1B,oBAAoB,GAErB,MAAM,qBAAqB,CAAA;AAE5B,YAAY,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AAC9C,OAAO,EACL,cAAc,EACd,YAAY,EACZ,aAAa,EACb,qBAAqB,EACrB,WAAW,EACX,qBAAqB,EACrB,QAAQ,EACR,UAAU,EACV,MAAM,EACN,UAAU,EACV,YAAY,GACb,MAAM,WAAW,CAAA;AAIlB,OAAO,EACL,SAAS,EACT,cAAc,EACd,uBAAuB,EACvB,sBAAsB,EACtB,kBAAkB,EAClB,gBAAgB,EAChB,wBAAwB,EACxB,eAAe,GAChB,MAAM,cAAc,CAAA;AAErB,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAE9C,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACxD,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAA;AAG3C,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,kBAAkB,EAClB,gBAAgB,EAChB,uBAAuB,EACvB,YAAY,EACZ,UAAU,EACV,UAAU,GACX,MAAM,SAAS,CAAA;AAChB,OAAO,EAAE,WAAW,EAAE,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,gBAAgB,EAChB,uBAAuB,EACvB,eAAe,EACf,cAAc,EACd,uBAAuB,EACvB,SAAS,EACT,UAAU,EACV,aAAa,GACd,MAAM,aAAa,CAAA;AAEpB,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,uBAAuB,EACvB,sBAAsB,EACtB,oBAAoB,EACpB,iBAAiB,EACjB,0BAA0B,EAC1B,uBAAuB,EACvB,uBAAuB,EACvB,0BAA0B,EAC1B,oBAAoB,GAErB,MAAM,qBAAqB,CAAA;AAE5B,YAAY,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AAC9C,OAAO,EACL,cAAc,EACd,YAAY,EACZ,aAAa,EACb,qBAAqB,EACrB,WAAW,EACX,qBAAqB,EACrB,QAAQ,EACR,UAAU,EACV,MAAM,EACN,UAAU,EACV,YAAY,GACb,MAAM,WAAW,CAAA;AAIlB,OAAO,EACL,SAAS,EACT,cAAc,EACd,uBAAuB,EACvB,sBAAsB,EACtB,kBAAkB,EAClB,gBAAgB,EAChB,wBAAwB,EACxB,eAAe,GAChB,MAAM,cAAc,CAAA;AAErB,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAE9C,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACxD,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAA;AAG3C,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,kBAAkB,EAClB,gBAAgB,EAChB,uBAAuB,EACvB,YAAY,EACZ,UAAU,EACV,UAAU,GACX,MAAM,SAAS,CAAA;AAChB,OAAO,EAAE,WAAW,EAAE,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAC5G,YAAY,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAA;AAEzD,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AAEzE,cAAc,oBAAoB,CAAA;AAClC,cAAc,yBAAyB,CAAA;AAIvC,OAAO,EACL,gBAAgB,EAChB,YAAY,EACZ,qBAAqB,EACrB,UAAU,EACV,UAAU,EACV,OAAO,EACP,OAAO,EACP,SAAS,EACT,0BAA0B,EAC1B,gBAAgB,EAChB,YAAY,EACZ,aAAa,EACb,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,oBAAoB,CAAA;AAE3B,YAAY,EACV,gBAAgB,EAChB,SAAS,EACT,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,EACd,YAAY,EACZ,mBAAmB,EACnB,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,YAAY,EACZ,cAAc,EACd,cAAc,EACd,GAAG,EACH,WAAW,EACX,cAAc,EACd,mBAAmB,EACnB,oBAAoB,EACpB,cAAc,GACf,MAAM,SAAS,CAAA"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { h as t, C as n, P as o, R as r, d as s, j as m, c as i, e as C, i as c, a as l, f as p, k as u, l as g, g as d, p as M, w as E } from "../component-CECyfUOE.js";
|
|
2
|
+
import { C as x, a as R, E as h, c as v, b as D, d as O, g as A, p as b, r as w, s as I, w as y } from "../component-context-B6qX_Qsg.js";
|
|
3
|
+
import { A as L, C as T, D as P, F as V, I as j, c as F, a as _, b as k, d as B, g as G, i as N, m as U, o as q, e as W, f as z, h as H, j as K, s as Y, k as J, u as Q, l as X, n as Z, p as $, w as ee, q as ae } from "../hooks-DeLasj54.js";
|
|
4
|
+
import { DOMBridgeDebug as ne, getComponentFromElement as oe, mountComponentChildren as re, mountComponentTree as se, mountRoot as me, unmountComponent as ie, unmountComponentEnhanced as Ce, updateComponent as ce } from "./dom-bridge.js";
|
|
5
|
+
import { L as pe, l as ue, b as ge, m as de, u as Me, a as Ee } from "../optimization-CbKNA9w4.js";
|
|
6
|
+
import { C as xe, D as Re, k as he, E as ve, S as De, q as Oe, V as Ae, v as be, l as we, o as Ie, n as ye, g as Se, w as Le, i as Te, h as Pe, x as Ve, p as je, r as Fe, f as _e, u as ke, j as Be, t as Ge } from "../concatenated-component-_tF1eMvy.js";
|
|
7
|
+
export {
|
|
8
|
+
L as AnimationManager,
|
|
9
|
+
xe as COMPONENT_ELIGIBILITY,
|
|
10
|
+
t as ChildrenManager,
|
|
11
|
+
x as ComponentContextDebug,
|
|
12
|
+
R as ComponentContextSymbol,
|
|
13
|
+
n as ComponentManager,
|
|
14
|
+
T as ContextManager,
|
|
15
|
+
P as DIContainer,
|
|
16
|
+
ne as DOMBridgeDebug,
|
|
17
|
+
Re as DOMRenderer,
|
|
18
|
+
he as ElementTagValidator,
|
|
19
|
+
h as EnvironmentSymbol,
|
|
20
|
+
ve as EventDelegator,
|
|
21
|
+
V as FocusManager,
|
|
22
|
+
j as Injectable,
|
|
23
|
+
pe as LifecycleManager,
|
|
24
|
+
o as PropsManager,
|
|
25
|
+
r as RefManager,
|
|
26
|
+
De as SEMANTIC_TAG_ROLES,
|
|
27
|
+
Oe as SemanticRoleManager,
|
|
28
|
+
Ae as VALID_HTML_TAGS,
|
|
29
|
+
be as applySemanticAttributes,
|
|
30
|
+
we as configureElementOverrides,
|
|
31
|
+
v as consumeEnvironmentValue,
|
|
32
|
+
F as contextUtils,
|
|
33
|
+
s as createAdvancedComponent,
|
|
34
|
+
m as createChildrenManager,
|
|
35
|
+
i as createComponent,
|
|
36
|
+
D as createComponentContext,
|
|
37
|
+
_ as createContext,
|
|
38
|
+
k as createContextConsumer,
|
|
39
|
+
Ie as createElementOverrideValidator,
|
|
40
|
+
O as createEnvironmentKey,
|
|
41
|
+
C as createFragment,
|
|
42
|
+
c as createPropsManager,
|
|
43
|
+
l as createReactiveComponent,
|
|
44
|
+
p as createRef,
|
|
45
|
+
u as createRefManager,
|
|
46
|
+
g as defaultChildrenRenderer,
|
|
47
|
+
B as defaultContextManager,
|
|
48
|
+
d as forwardRef,
|
|
49
|
+
oe as getComponentFromElement,
|
|
50
|
+
A as getCurrentComponentContext,
|
|
51
|
+
ye as getElementOverrideConfig,
|
|
52
|
+
Se as getRendererMetrics,
|
|
53
|
+
Le as getSemanticRole,
|
|
54
|
+
G as globalDI,
|
|
55
|
+
Te as globalEventDelegator,
|
|
56
|
+
Pe as h,
|
|
57
|
+
Ve as hasAutoARIA,
|
|
58
|
+
N as inject,
|
|
59
|
+
ue as lazy,
|
|
60
|
+
ge as memo,
|
|
61
|
+
U as migrateFromSetTimeout,
|
|
62
|
+
de as mount,
|
|
63
|
+
re as mountComponentChildren,
|
|
64
|
+
se as mountComponentTree,
|
|
65
|
+
me as mountRoot,
|
|
66
|
+
q as onDOMError,
|
|
67
|
+
W as onDOMReady,
|
|
68
|
+
z as onError,
|
|
69
|
+
H as onMount,
|
|
70
|
+
K as onUnmount,
|
|
71
|
+
je as processElementOverride,
|
|
72
|
+
M as propsUtils,
|
|
73
|
+
b as provideEnvironmentValue,
|
|
74
|
+
Fe as renderComponent,
|
|
75
|
+
_e as resetRendererMetrics,
|
|
76
|
+
w as runWithComponentContext,
|
|
77
|
+
ke as semanticRoleManager,
|
|
78
|
+
I as setCurrentComponentContext,
|
|
79
|
+
Y as setupOutsideClickDetection,
|
|
80
|
+
J as setupPositioning,
|
|
81
|
+
Be as shouldWarnOnOverride,
|
|
82
|
+
Ge as text,
|
|
83
|
+
Me as unmount,
|
|
84
|
+
ie as unmountComponent,
|
|
85
|
+
Ce as unmountComponentEnhanced,
|
|
86
|
+
ce as updateComponent,
|
|
87
|
+
Ee as updateProps,
|
|
88
|
+
Q as useContext,
|
|
89
|
+
X as useLifecycle,
|
|
90
|
+
y as withComponentContext,
|
|
91
|
+
Z as withDOMAccess,
|
|
92
|
+
$ as withErrorBoundary,
|
|
93
|
+
E as withLifecycle,
|
|
94
|
+
ee as withProvider,
|
|
95
|
+
ae as withReactiveAsset
|
|
96
|
+
};
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Layout Scheduler (Phase 4)
|
|
3
|
+
*
|
|
4
|
+
* FastDOM-style read/write separation to prevent layout thrashing.
|
|
5
|
+
* Batches DOM reads (measurements) and writes (mutations) into separate phases.
|
|
6
|
+
*/
|
|
7
|
+
type ReadTask = () => void;
|
|
8
|
+
type WriteTask = () => void;
|
|
9
|
+
/**
|
|
10
|
+
* Global layout scheduler for batching DOM operations
|
|
11
|
+
*/
|
|
12
|
+
declare class LayoutScheduler {
|
|
13
|
+
private state;
|
|
14
|
+
private thrashDetection;
|
|
15
|
+
/**
|
|
16
|
+
* Schedule a DOM read (measurement) operation
|
|
17
|
+
* Reads are batched and executed before writes to avoid layout thrashing
|
|
18
|
+
*/
|
|
19
|
+
read(task: ReadTask): void;
|
|
20
|
+
/**
|
|
21
|
+
* Schedule a DOM write (mutation) operation
|
|
22
|
+
* Writes are batched and executed after all reads complete
|
|
23
|
+
*/
|
|
24
|
+
write(task: WriteTask): void;
|
|
25
|
+
/**
|
|
26
|
+
* Schedule a deferred DOM write (mutation) using requestAnimationFrame
|
|
27
|
+
* Use this for non-urgent updates that can wait until the next frame
|
|
28
|
+
*/
|
|
29
|
+
defer(task: WriteTask): void;
|
|
30
|
+
/**
|
|
31
|
+
* Execute a read immediately (use sparingly, prefer batched reads)
|
|
32
|
+
*/
|
|
33
|
+
readNow<T>(task: () => T): T;
|
|
34
|
+
/**
|
|
35
|
+
* Execute a write immediately (use sparingly, prefer batched writes)
|
|
36
|
+
*/
|
|
37
|
+
writeNow(task: WriteTask): void;
|
|
38
|
+
/**
|
|
39
|
+
* Schedule the flush if not already scheduled
|
|
40
|
+
*/
|
|
41
|
+
private scheduleFlush;
|
|
42
|
+
/**
|
|
43
|
+
* Schedule deferred writes using requestAnimationFrame
|
|
44
|
+
*/
|
|
45
|
+
private scheduleDeferred;
|
|
46
|
+
/**
|
|
47
|
+
* Flush all pending reads and writes
|
|
48
|
+
*/
|
|
49
|
+
private flush;
|
|
50
|
+
/**
|
|
51
|
+
* Flush deferred writes
|
|
52
|
+
*/
|
|
53
|
+
private flushDeferred;
|
|
54
|
+
/**
|
|
55
|
+
* Clear all pending operations (useful for cleanup/testing)
|
|
56
|
+
*/
|
|
57
|
+
clear(): void;
|
|
58
|
+
/**
|
|
59
|
+
* Detect layout thrashing patterns in dev mode
|
|
60
|
+
*/
|
|
61
|
+
private detectThrash;
|
|
62
|
+
/**
|
|
63
|
+
* Get current scheduler stats (for debugging/testing)
|
|
64
|
+
*/
|
|
65
|
+
getStats(): {
|
|
66
|
+
pendingReads: number;
|
|
67
|
+
pendingWrites: number;
|
|
68
|
+
pendingDeferredWrites: number;
|
|
69
|
+
scheduled: boolean;
|
|
70
|
+
rafScheduled: boolean;
|
|
71
|
+
measuring: boolean;
|
|
72
|
+
mutating: boolean;
|
|
73
|
+
thrashCount: number;
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Global layout scheduler instance
|
|
78
|
+
*/
|
|
79
|
+
export declare const layoutScheduler: LayoutScheduler;
|
|
80
|
+
/**
|
|
81
|
+
* Convenience functions for scheduling operations
|
|
82
|
+
*/
|
|
83
|
+
export declare function scheduleRead(task: ReadTask): void;
|
|
84
|
+
export declare function scheduleWrite(task: WriteTask): void;
|
|
85
|
+
export declare function readDOM<T>(task: () => T): T;
|
|
86
|
+
export declare function writeDOM(task: WriteTask): void;
|
|
87
|
+
export declare function deferWrite(task: WriteTask): void;
|
|
88
|
+
export {};
|
|
89
|
+
//# sourceMappingURL=layout-scheduler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"layout-scheduler.d.ts","sourceRoot":"","sources":["../../src/runtime/layout-scheduler.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,KAAK,QAAQ,GAAG,MAAM,IAAI,CAAA;AAC1B,KAAK,SAAS,GAAG,MAAM,IAAI,CAAA;AAa3B;;GAEG;AACH,cAAM,eAAe;IACnB,OAAO,CAAC,KAAK,CASZ;IAGD,OAAO,CAAC,eAAe,CAKtB;IAED;;;OAGG;IACH,IAAI,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI;IAK1B;;;OAGG;IACH,KAAK,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI;IAK5B;;;OAGG;IACH,KAAK,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI;IAK5B;;OAEG;IACH,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC;IAO5B;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI;IAO/B;;OAEG;IACH,OAAO,CAAC,aAAa;IASrB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAcxB;;OAEG;IACH,OAAO,CAAC,KAAK;IA2Cb;;OAEG;IACH,OAAO,CAAC,aAAa;IA0BrB;;OAEG;IACH,KAAK,IAAI,IAAI;IAab;;OAEG;IACH,OAAO,CAAC,YAAY;IA+BpB;;OAEG;IACH,QAAQ;;;;;;;;;;CAYT;AAED;;GAEG;AACH,eAAO,MAAM,eAAe,iBAAwB,CAAA;AAEpD;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,CAEjD;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI,CAEnD;AAED,wBAAgB,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,CAE3C;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI,CAE9C;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI,CAEhD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"props.d.ts","sourceRoot":"","sources":["../../src/runtime/props.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"props.d.ts","sourceRoot":"","sources":["../../src/runtime/props.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,14 +8,37 @@ import type { ComponentInstance, DOMNode } from './types';
|
|
|
8
8
|
/**
|
|
9
9
|
* Direct DOM renderer for efficient DOM manipulation
|
|
10
10
|
*/
|
|
11
|
+
type RendererMetrics = {
|
|
12
|
+
created: number;
|
|
13
|
+
adopted: number;
|
|
14
|
+
removed: number;
|
|
15
|
+
inserted: number;
|
|
16
|
+
moved: number;
|
|
17
|
+
cacheHits: number;
|
|
18
|
+
cacheMisses: number;
|
|
19
|
+
attributeWrites: number;
|
|
20
|
+
attributeRemovals: number;
|
|
21
|
+
textUpdates: number;
|
|
22
|
+
modifierApplications: number;
|
|
23
|
+
};
|
|
11
24
|
export declare class DOMRenderer {
|
|
12
25
|
private nodeMap;
|
|
13
26
|
private cleanupMap;
|
|
14
27
|
private renderedNodes;
|
|
28
|
+
private elementToContainer;
|
|
29
|
+
private metrics;
|
|
15
30
|
/**
|
|
16
31
|
* Render a DOM node to an actual DOM element
|
|
17
32
|
*/
|
|
18
33
|
render(node: DOMNode | DOMNode[], container?: Element): Element | Text | Comment | DocumentFragment;
|
|
34
|
+
/**
|
|
35
|
+
* Check if a DOM node has been rendered and tracked.
|
|
36
|
+
*/
|
|
37
|
+
hasNode(node: DOMNode): boolean;
|
|
38
|
+
/**
|
|
39
|
+
* Get the rendered DOM element associated with a node.
|
|
40
|
+
*/
|
|
41
|
+
getRenderedNode(node: DOMNode): Element | Text | Comment | undefined;
|
|
19
42
|
/**
|
|
20
43
|
* Render a single DOM node
|
|
21
44
|
*/
|
|
@@ -27,11 +50,18 @@ export declare class DOMRenderer {
|
|
|
27
50
|
/**
|
|
28
51
|
* Create a DOM element with props and children
|
|
29
52
|
*/
|
|
30
|
-
private
|
|
53
|
+
private createOrUpdateElement;
|
|
54
|
+
private updateProps;
|
|
55
|
+
private updateChildren;
|
|
56
|
+
private updateExistingNode;
|
|
31
57
|
/**
|
|
32
58
|
* Apply debug attributes to DOM element if debug mode is enabled
|
|
33
59
|
*/
|
|
34
60
|
private applyDebugAttributes;
|
|
61
|
+
/**
|
|
62
|
+
* Create or update a text node
|
|
63
|
+
*/
|
|
64
|
+
private createOrUpdateTextNode;
|
|
35
65
|
/**
|
|
36
66
|
* Create a text node
|
|
37
67
|
*/
|
|
@@ -69,7 +99,7 @@ export declare class DOMRenderer {
|
|
|
69
99
|
*/
|
|
70
100
|
private setElementStyles;
|
|
71
101
|
/**
|
|
72
|
-
* Apply event listener
|
|
102
|
+
* Apply event listener (with delegation if possible)
|
|
73
103
|
*/
|
|
74
104
|
private applyEventListener;
|
|
75
105
|
/**
|
|
@@ -84,6 +114,10 @@ export declare class DOMRenderer {
|
|
|
84
114
|
* Remove a DOM node and run cleanup
|
|
85
115
|
*/
|
|
86
116
|
removeNode(node: DOMNode): void;
|
|
117
|
+
/**
|
|
118
|
+
* Cleanup a node (and its descendants) and optionally remove from DOM.
|
|
119
|
+
*/
|
|
120
|
+
private cleanupNode;
|
|
87
121
|
/**
|
|
88
122
|
* Create reactive text content
|
|
89
123
|
*/
|
|
@@ -96,11 +130,28 @@ export declare class DOMRenderer {
|
|
|
96
130
|
* Apply modifiers to a DOM element
|
|
97
131
|
*/
|
|
98
132
|
private applyModifiersToElement;
|
|
133
|
+
/**
|
|
134
|
+
* Adopt an existing DOM mapping from one node to another.
|
|
135
|
+
*/
|
|
136
|
+
adoptNode(oldNode: DOMNode, newNode: DOMNode): void;
|
|
99
137
|
/**
|
|
100
138
|
* Cleanup all tracked elements
|
|
101
139
|
*/
|
|
102
140
|
cleanup(): void;
|
|
141
|
+
resetMetrics(): void;
|
|
142
|
+
getMetrics(): RendererMetrics;
|
|
143
|
+
recordCacheHit(): void;
|
|
144
|
+
recordCacheMiss(): void;
|
|
145
|
+
insertNode(container: Element, node: Element | Text | Comment, nextSibling: Node | null): void;
|
|
146
|
+
appendNode(container: Element, node: Element | Text | Comment): void;
|
|
147
|
+
private recordAttributeWrite;
|
|
148
|
+
private recordAttributeRemoval;
|
|
149
|
+
private recordTextUpdate;
|
|
150
|
+
private recordModifierApplications;
|
|
103
151
|
}
|
|
152
|
+
export type RendererMetricsSnapshot = RendererMetrics;
|
|
153
|
+
export declare function resetRendererMetrics(): void;
|
|
154
|
+
export declare function getRendererMetrics(): RendererMetricsSnapshot;
|
|
104
155
|
/**
|
|
105
156
|
* Render a component instance to DOM
|
|
106
157
|
*/
|
|
@@ -113,4 +164,5 @@ export declare function h(tag: string, props?: Record<string, any> | null, ...ch
|
|
|
113
164
|
* Create a text node helper
|
|
114
165
|
*/
|
|
115
166
|
export declare function text(content: string | (() => string)): DOMNode;
|
|
167
|
+
export {};
|
|
116
168
|
//# sourceMappingURL=renderer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../../src/runtime/renderer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../../src/runtime/renderer.ts"],"names":[],"mappings":"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"}
|