@zenithbuild/runtime 0.2.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/dom-hydration.d.ts +44 -0
- package/dist/dom-hydration.d.ts.map +1 -0
- package/dist/dom-hydration.js +272 -0
- package/dist/dom-hydration.js.map +1 -0
- package/dist/index.d.ts +90 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +505 -0
- package/dist/index.js.map +1 -0
- package/dist/thin-runtime.d.ts +24 -0
- package/dist/thin-runtime.d.ts.map +1 -0
- package/dist/thin-runtime.js +159 -0
- package/dist/thin-runtime.js.map +1 -0
- package/package.json +5 -1
- package/tsconfig.json +0 -28
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Runtime Hydration Layer (Phase 5)
|
|
3
|
+
*
|
|
4
|
+
* Browser-side runtime that hydrates static HTML with dynamic expressions
|
|
5
|
+
*
|
|
6
|
+
* This runtime:
|
|
7
|
+
* - Locates DOM placeholders (data-zen-text, data-zen-attr-*)
|
|
8
|
+
* - Evaluates precompiled expressions against state
|
|
9
|
+
* - Updates DOM textContent, attributes, and properties
|
|
10
|
+
* - Binds event handlers
|
|
11
|
+
* - Handles reactive state updates
|
|
12
|
+
*/
|
|
13
|
+
/**
|
|
14
|
+
* Hydrate static HTML with dynamic expressions (Phase 5 Strategy)
|
|
15
|
+
*
|
|
16
|
+
* @param state - The state object to evaluate expressions against
|
|
17
|
+
* @param container - The container element to hydrate (defaults to document)
|
|
18
|
+
*/
|
|
19
|
+
export declare function hydrateDom(state: any, container?: Document | Element): void;
|
|
20
|
+
/**
|
|
21
|
+
* Bind event handlers to DOM elements
|
|
22
|
+
*
|
|
23
|
+
* @param container - The container element to bind events in (defaults to document)
|
|
24
|
+
*/
|
|
25
|
+
export declare function bindEvents(container?: Document | Element): void;
|
|
26
|
+
/**
|
|
27
|
+
* Update all bindings when state changes
|
|
28
|
+
*
|
|
29
|
+
* @param state - The new state object
|
|
30
|
+
*/
|
|
31
|
+
export declare function updateDom(state: any): void;
|
|
32
|
+
/**
|
|
33
|
+
* Initialize the expression registry
|
|
34
|
+
* Called once when the runtime loads
|
|
35
|
+
*
|
|
36
|
+
* @param expressions - Map of expression IDs to evaluation functions
|
|
37
|
+
*/
|
|
38
|
+
export declare function initExpressions(expressions: Map<string, (state: any) => any>): void;
|
|
39
|
+
/**
|
|
40
|
+
* Clear all bindings and event listeners
|
|
41
|
+
* Useful for cleanup when navigating away
|
|
42
|
+
*/
|
|
43
|
+
export declare function cleanupDom(container?: Document | Element): void;
|
|
44
|
+
//# sourceMappingURL=dom-hydration.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dom-hydration.d.ts","sourceRoot":"","sources":["../src/dom-hydration.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAcH;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE,SAAS,GAAE,QAAQ,GAAG,OAAkB,GAAG,IAAI,CAyDrF;AAmGD;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,SAAS,GAAE,QAAQ,GAAG,OAAkB,GAAG,IAAI,CAwCzE;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,GAAG,GAAG,IAAI,CAqB1C;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,GAAG,CAAC,GAAG,IAAI,CAInF;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,SAAS,GAAE,QAAQ,GAAG,OAAkB,GAAG,IAAI,CAkBzE"}
|
|
@@ -0,0 +1,272 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Runtime Hydration Layer (Phase 5)
|
|
3
|
+
*
|
|
4
|
+
* Browser-side runtime that hydrates static HTML with dynamic expressions
|
|
5
|
+
*
|
|
6
|
+
* This runtime:
|
|
7
|
+
* - Locates DOM placeholders (data-zen-text, data-zen-attr-*)
|
|
8
|
+
* - Evaluates precompiled expressions against state
|
|
9
|
+
* - Updates DOM textContent, attributes, and properties
|
|
10
|
+
* - Binds event handlers
|
|
11
|
+
* - Handles reactive state updates
|
|
12
|
+
*/
|
|
13
|
+
const bindings = [];
|
|
14
|
+
/**
|
|
15
|
+
* Hydrate static HTML with dynamic expressions (Phase 5 Strategy)
|
|
16
|
+
*
|
|
17
|
+
* @param state - The state object to evaluate expressions against
|
|
18
|
+
* @param container - The container element to hydrate (defaults to document)
|
|
19
|
+
*/
|
|
20
|
+
export function hydrateDom(state, container = document) {
|
|
21
|
+
if (!state) {
|
|
22
|
+
console.warn('[Zenith] hydrateDom called without state object');
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
// Store state globally for event handlers
|
|
26
|
+
if (typeof window !== 'undefined') {
|
|
27
|
+
window.__ZENITH_STATE__ = state;
|
|
28
|
+
}
|
|
29
|
+
// Clear existing bindings
|
|
30
|
+
bindings.length = 0;
|
|
31
|
+
// Find all text expression placeholders
|
|
32
|
+
const textPlaceholders = container.querySelectorAll('[data-zen-text]');
|
|
33
|
+
for (let i = 0; i < textPlaceholders.length; i++) {
|
|
34
|
+
const node = textPlaceholders[i];
|
|
35
|
+
if (!node)
|
|
36
|
+
continue;
|
|
37
|
+
const expressionId = node.getAttribute('data-zen-text');
|
|
38
|
+
if (!expressionId)
|
|
39
|
+
continue;
|
|
40
|
+
bindings.push({
|
|
41
|
+
node,
|
|
42
|
+
type: 'text',
|
|
43
|
+
expressionId
|
|
44
|
+
});
|
|
45
|
+
updateTextBinding(node, expressionId, state);
|
|
46
|
+
}
|
|
47
|
+
// Find all attribute expression placeholders
|
|
48
|
+
const attrPlaceholders = container.querySelectorAll('[data-zen-attr-class], [data-zen-attr-style], [data-zen-attr-src], [data-zen-attr-href], [data-zen-attr-disabled], [data-zen-attr-checked]');
|
|
49
|
+
for (let i = 0; i < attrPlaceholders.length; i++) {
|
|
50
|
+
const node = attrPlaceholders[i];
|
|
51
|
+
if (!(node instanceof Element))
|
|
52
|
+
continue;
|
|
53
|
+
// Check each possible attribute
|
|
54
|
+
const attrNames = ['class', 'style', 'src', 'href', 'disabled', 'checked'];
|
|
55
|
+
for (const attrName of attrNames) {
|
|
56
|
+
const expressionId = node.getAttribute(`data-zen-attr-${attrName}`);
|
|
57
|
+
if (!expressionId)
|
|
58
|
+
continue;
|
|
59
|
+
bindings.push({
|
|
60
|
+
node,
|
|
61
|
+
type: 'attribute',
|
|
62
|
+
attributeName: attrName,
|
|
63
|
+
expressionId
|
|
64
|
+
});
|
|
65
|
+
updateAttributeBinding(node, attrName, expressionId, state);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
// Bind event handlers
|
|
69
|
+
bindEvents(container);
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Update a text binding
|
|
73
|
+
*/
|
|
74
|
+
function updateTextBinding(node, expressionId, state) {
|
|
75
|
+
try {
|
|
76
|
+
const expression = window.__ZENITH_EXPRESSIONS__?.get(expressionId);
|
|
77
|
+
if (!expression) {
|
|
78
|
+
console.warn(`[Zenith] Expression ${expressionId} not found in registry`);
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
const result = expression(state);
|
|
82
|
+
// Handle different result types
|
|
83
|
+
if (result === null || result === undefined || result === false) {
|
|
84
|
+
node.textContent = '';
|
|
85
|
+
}
|
|
86
|
+
else if (typeof result === 'string' || typeof result === 'number') {
|
|
87
|
+
node.textContent = String(result);
|
|
88
|
+
}
|
|
89
|
+
else if (result instanceof Node) {
|
|
90
|
+
// Replace node with result node
|
|
91
|
+
if (node.parentNode) {
|
|
92
|
+
node.parentNode.replaceChild(result, node);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
else if (Array.isArray(result)) {
|
|
96
|
+
// Handle array results (for map expressions)
|
|
97
|
+
if (node.parentNode) {
|
|
98
|
+
const fragment = document.createDocumentFragment();
|
|
99
|
+
for (const item of result) {
|
|
100
|
+
if (item instanceof Node) {
|
|
101
|
+
fragment.appendChild(item);
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
fragment.appendChild(document.createTextNode(String(item)));
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
node.parentNode.replaceChild(fragment, node);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
else {
|
|
111
|
+
node.textContent = String(result);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
catch (error) {
|
|
115
|
+
console.error(`[Zenith] Error evaluating expression ${expressionId}:`, error);
|
|
116
|
+
console.error('Expression ID:', expressionId, 'State:', state);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Update an attribute binding
|
|
121
|
+
*/
|
|
122
|
+
function updateAttributeBinding(element, attributeName, expressionId, state) {
|
|
123
|
+
try {
|
|
124
|
+
const expression = window.__ZENITH_EXPRESSIONS__?.get(expressionId);
|
|
125
|
+
if (!expression) {
|
|
126
|
+
console.warn(`[Zenith] Expression ${expressionId} not found in registry`);
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
129
|
+
const result = expression(state);
|
|
130
|
+
// Handle different attribute types
|
|
131
|
+
if (attributeName === 'class' || attributeName === 'className') {
|
|
132
|
+
element.className = String(result ?? '');
|
|
133
|
+
}
|
|
134
|
+
else if (attributeName === 'style') {
|
|
135
|
+
if (typeof result === 'string') {
|
|
136
|
+
element.setAttribute('style', result);
|
|
137
|
+
}
|
|
138
|
+
else if (result && typeof result === 'object') {
|
|
139
|
+
// Handle style object
|
|
140
|
+
const styleStr = Object.entries(result)
|
|
141
|
+
.map(([key, value]) => `${key}: ${value}`)
|
|
142
|
+
.join('; ');
|
|
143
|
+
element.setAttribute('style', styleStr);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
else if (attributeName === 'disabled' || attributeName === 'checked' || attributeName === 'readonly') {
|
|
147
|
+
// Boolean attributes
|
|
148
|
+
if (result) {
|
|
149
|
+
element.setAttribute(attributeName, '');
|
|
150
|
+
}
|
|
151
|
+
else {
|
|
152
|
+
element.removeAttribute(attributeName);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
else {
|
|
156
|
+
// Regular attributes
|
|
157
|
+
if (result === null || result === undefined || result === false) {
|
|
158
|
+
element.removeAttribute(attributeName);
|
|
159
|
+
}
|
|
160
|
+
else {
|
|
161
|
+
element.setAttribute(attributeName, String(result));
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
catch (error) {
|
|
166
|
+
console.error(`[Zenith] Error updating attribute ${attributeName} with expression ${expressionId}:`, error);
|
|
167
|
+
console.error('Expression ID:', expressionId, 'State:', state);
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Bind event handlers to DOM elements
|
|
172
|
+
*
|
|
173
|
+
* @param container - The container element to bind events in (defaults to document)
|
|
174
|
+
*/
|
|
175
|
+
export function bindEvents(container = document) {
|
|
176
|
+
const eventTypes = ['click', 'change', 'input', 'submit', 'focus', 'blur', 'keyup', 'keydown'];
|
|
177
|
+
for (const eventType of eventTypes) {
|
|
178
|
+
const elements = container.querySelectorAll(`[data-zen-${eventType}]`);
|
|
179
|
+
for (let i = 0; i < elements.length; i++) {
|
|
180
|
+
const element = elements[i];
|
|
181
|
+
if (!(element instanceof Element))
|
|
182
|
+
continue;
|
|
183
|
+
const handlerName = element.getAttribute(`data-zen-${eventType}`);
|
|
184
|
+
if (!handlerName)
|
|
185
|
+
continue;
|
|
186
|
+
// Remove existing listener if any (to avoid duplicates)
|
|
187
|
+
const existingHandler = element[`__zen_${eventType}_handler`];
|
|
188
|
+
if (existingHandler) {
|
|
189
|
+
element.removeEventListener(eventType, existingHandler);
|
|
190
|
+
}
|
|
191
|
+
// Create new handler
|
|
192
|
+
const handler = (event) => {
|
|
193
|
+
try {
|
|
194
|
+
// Get handler function from window (functions are registered on window)
|
|
195
|
+
const handlerFunc = window[handlerName];
|
|
196
|
+
if (typeof handlerFunc === 'function') {
|
|
197
|
+
handlerFunc(event, element);
|
|
198
|
+
}
|
|
199
|
+
else {
|
|
200
|
+
console.warn(`[Zenith] Event handler "${handlerName}" not found for ${eventType} event`);
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
catch (error) {
|
|
204
|
+
console.error(`[Zenith] Error executing event handler "${handlerName}":`, error);
|
|
205
|
+
}
|
|
206
|
+
};
|
|
207
|
+
element[`__zen_${eventType}_handler`] = handler;
|
|
208
|
+
element.addEventListener(eventType, handler);
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* Update all bindings when state changes
|
|
214
|
+
*
|
|
215
|
+
* @param state - The new state object
|
|
216
|
+
*/
|
|
217
|
+
export function updateDom(state) {
|
|
218
|
+
if (!state) {
|
|
219
|
+
console.warn('[Zenith] updateDom called without state object');
|
|
220
|
+
return;
|
|
221
|
+
}
|
|
222
|
+
// Update global state
|
|
223
|
+
if (typeof window !== 'undefined') {
|
|
224
|
+
window.__ZENITH_STATE__ = state;
|
|
225
|
+
}
|
|
226
|
+
// Update all tracked bindings
|
|
227
|
+
for (const binding of bindings) {
|
|
228
|
+
if (binding.type === 'text') {
|
|
229
|
+
updateTextBinding(binding.node, binding.expressionId, state);
|
|
230
|
+
}
|
|
231
|
+
else if (binding.type === 'attribute' && binding.attributeName) {
|
|
232
|
+
if (binding.node instanceof Element) {
|
|
233
|
+
updateAttributeBinding(binding.node, binding.attributeName, binding.expressionId, state);
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
/**
|
|
239
|
+
* Initialize the expression registry
|
|
240
|
+
* Called once when the runtime loads
|
|
241
|
+
*
|
|
242
|
+
* @param expressions - Map of expression IDs to evaluation functions
|
|
243
|
+
*/
|
|
244
|
+
export function initExpressions(expressions) {
|
|
245
|
+
if (typeof window !== 'undefined') {
|
|
246
|
+
window.__ZENITH_EXPRESSIONS__ = expressions;
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
/**
|
|
250
|
+
* Clear all bindings and event listeners
|
|
251
|
+
* Useful for cleanup when navigating away
|
|
252
|
+
*/
|
|
253
|
+
export function cleanupDom(container = document) {
|
|
254
|
+
// Remove event listeners
|
|
255
|
+
const eventTypes = ['click', 'change', 'input', 'submit', 'focus', 'blur', 'keyup', 'keydown'];
|
|
256
|
+
for (const eventType of eventTypes) {
|
|
257
|
+
const elements = container.querySelectorAll(`[data-zen-${eventType}]`);
|
|
258
|
+
for (let i = 0; i < elements.length; i++) {
|
|
259
|
+
const element = elements[i];
|
|
260
|
+
if (!(element instanceof Element))
|
|
261
|
+
continue;
|
|
262
|
+
const handler = element[`__zen_${eventType}_handler`];
|
|
263
|
+
if (handler) {
|
|
264
|
+
element.removeEventListener(eventType, handler);
|
|
265
|
+
delete element[`__zen_${eventType}_handler`];
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
// Clear bindings
|
|
270
|
+
bindings.length = 0;
|
|
271
|
+
}
|
|
272
|
+
//# sourceMappingURL=dom-hydration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dom-hydration.js","sourceRoot":"","sources":["../src/dom-hydration.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAYH,MAAM,QAAQ,GAAc,EAAE,CAAA;AAE9B;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CAAC,KAAU,EAAE,YAAgC,QAAQ;IAC3E,IAAI,CAAC,KAAK,EAAE,CAAC;QACT,OAAO,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAA;QAC/D,OAAM;IACV,CAAC;IAED,0CAA0C;IAC1C,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;QAChC,MAAM,CAAC,gBAAgB,GAAG,KAAK,CAAA;IACnC,CAAC;IAED,0BAA0B;IAC1B,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAA;IAEnB,wCAAwC;IACxC,MAAM,gBAAgB,GAAG,SAAS,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,CAAA;IACtE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,gBAAgB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC/C,MAAM,IAAI,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAA;QAChC,IAAI,CAAC,IAAI;YAAE,SAAQ;QACnB,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,CAAA;QACvD,IAAI,CAAC,YAAY;YAAE,SAAQ;QAE3B,QAAQ,CAAC,IAAI,CAAC;YACV,IAAI;YACJ,IAAI,EAAE,MAAM;YACZ,YAAY;SACf,CAAC,CAAA;QAEF,iBAAiB,CAAC,IAAI,EAAE,YAAY,EAAE,KAAK,CAAC,CAAA;IAChD,CAAC;IAED,6CAA6C;IAC7C,MAAM,gBAAgB,GAAG,SAAS,CAAC,gBAAgB,CAAC,4IAA4I,CAAC,CAAA;IAEjM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,gBAAgB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC/C,MAAM,IAAI,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAA;QAChC,IAAI,CAAC,CAAC,IAAI,YAAY,OAAO,CAAC;YAAE,SAAQ;QAExC,gCAAgC;QAChC,MAAM,SAAS,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,CAAC,CAAA;QAC1E,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YAC/B,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,iBAAiB,QAAQ,EAAE,CAAC,CAAA;YACnE,IAAI,CAAC,YAAY;gBAAE,SAAQ;YAE3B,QAAQ,CAAC,IAAI,CAAC;gBACV,IAAI;gBACJ,IAAI,EAAE,WAAW;gBACjB,aAAa,EAAE,QAAQ;gBACvB,YAAY;aACf,CAAC,CAAA;YAEF,sBAAsB,CAAC,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,KAAK,CAAC,CAAA;QAC/D,CAAC;IACL,CAAC;IAED,sBAAsB;IACtB,UAAU,CAAC,SAAS,CAAC,CAAA;AACzB,CAAC;AAED;;GAEG;AACH,SAAS,iBAAiB,CAAC,IAAU,EAAE,YAAoB,EAAE,KAAU;IACnE,IAAI,CAAC;QACD,MAAM,UAAU,GAAG,MAAM,CAAC,sBAAsB,EAAE,GAAG,CAAC,YAAY,CAAC,CAAA;QACnE,IAAI,CAAC,UAAU,EAAE,CAAC;YACd,OAAO,CAAC,IAAI,CAAC,uBAAuB,YAAY,wBAAwB,CAAC,CAAA;YACzE,OAAM;QACV,CAAC;QAED,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,CAAA;QAEhC,gCAAgC;QAChC,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;YAC9D,IAAI,CAAC,WAAW,GAAG,EAAE,CAAA;QACzB,CAAC;aAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;YAClE,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,CAAA;QACrC,CAAC;aAAM,IAAI,MAAM,YAAY,IAAI,EAAE,CAAC;YAChC,gCAAgC;YAChC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBAClB,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;YAC9C,CAAC;QACL,CAAC;aAAM,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAC/B,6CAA6C;YAC7C,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBAClB,MAAM,QAAQ,GAAG,QAAQ,CAAC,sBAAsB,EAAE,CAAA;gBAClD,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;oBACxB,IAAI,IAAI,YAAY,IAAI,EAAE,CAAC;wBACvB,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;oBAC9B,CAAC;yBAAM,CAAC;wBACJ,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;oBAC/D,CAAC;gBACL,CAAC;gBACD,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;YAChD,CAAC;QACL,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,CAAA;QACrC,CAAC;IACL,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QAClB,OAAO,CAAC,KAAK,CAAC,wCAAwC,YAAY,GAAG,EAAE,KAAK,CAAC,CAAA;QAC7E,OAAO,CAAC,KAAK,CAAC,gBAAgB,EAAE,YAAY,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAA;IAClE,CAAC;AACL,CAAC;AAED;;GAEG;AACH,SAAS,sBAAsB,CAC3B,OAAgB,EAChB,aAAqB,EACrB,YAAoB,EACpB,KAAU;IAEV,IAAI,CAAC;QACD,MAAM,UAAU,GAAG,MAAM,CAAC,sBAAsB,EAAE,GAAG,CAAC,YAAY,CAAC,CAAA;QACnE,IAAI,CAAC,UAAU,EAAE,CAAC;YACd,OAAO,CAAC,IAAI,CAAC,uBAAuB,YAAY,wBAAwB,CAAC,CAAA;YACzE,OAAM;QACV,CAAC;QAED,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,CAAA;QAEhC,mCAAmC;QACnC,IAAI,aAAa,KAAK,OAAO,IAAI,aAAa,KAAK,WAAW,EAAE,CAAC;YAC7D,OAAO,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAA;QAC5C,CAAC;aAAM,IAAI,aAAa,KAAK,OAAO,EAAE,CAAC;YACnC,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;gBAC7B,OAAO,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;YACzC,CAAC;iBAAM,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;gBAC9C,sBAAsB;gBACtB,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;qBAClC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,KAAK,KAAK,EAAE,CAAC;qBACzC,IAAI,CAAC,IAAI,CAAC,CAAA;gBACf,OAAO,CAAC,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;YAC3C,CAAC;QACL,CAAC;aAAM,IAAI,aAAa,KAAK,UAAU,IAAI,aAAa,KAAK,SAAS,IAAI,aAAa,KAAK,UAAU,EAAE,CAAC;YACrG,qBAAqB;YACrB,IAAI,MAAM,EAAE,CAAC;gBACT,OAAO,CAAC,YAAY,CAAC,aAAa,EAAE,EAAE,CAAC,CAAA;YAC3C,CAAC;iBAAM,CAAC;gBACJ,OAAO,CAAC,eAAe,CAAC,aAAa,CAAC,CAAA;YAC1C,CAAC;QACL,CAAC;aAAM,CAAC;YACJ,qBAAqB;YACrB,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;gBAC9D,OAAO,CAAC,eAAe,CAAC,aAAa,CAAC,CAAA;YAC1C,CAAC;iBAAM,CAAC;gBACJ,OAAO,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAA;YACvD,CAAC;QACL,CAAC;IACL,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QAClB,OAAO,CAAC,KAAK,CAAC,qCAAqC,aAAa,oBAAoB,YAAY,GAAG,EAAE,KAAK,CAAC,CAAA;QAC3G,OAAO,CAAC,KAAK,CAAC,gBAAgB,EAAE,YAAY,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAA;IAClE,CAAC;AACL,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,YAAgC,QAAQ;IAC/D,MAAM,UAAU,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,CAAA;IAE9F,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACjC,MAAM,QAAQ,GAAG,SAAS,CAAC,gBAAgB,CAAC,aAAa,SAAS,GAAG,CAAC,CAAA;QAEtE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACvC,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;YAC3B,IAAI,CAAC,CAAC,OAAO,YAAY,OAAO,CAAC;gBAAE,SAAQ;YAE3C,MAAM,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,YAAY,SAAS,EAAE,CAAC,CAAA;YACjE,IAAI,CAAC,WAAW;gBAAE,SAAQ;YAE1B,wDAAwD;YACxD,MAAM,eAAe,GAAI,OAAe,CAAC,SAAS,SAAS,UAAU,CAAC,CAAA;YACtE,IAAI,eAAe,EAAE,CAAC;gBAClB,OAAO,CAAC,mBAAmB,CAAC,SAAS,EAAE,eAAe,CAAC,CAAA;YAC3D,CAAC;YAED,qBAAqB;YACrB,MAAM,OAAO,GAAG,CAAC,KAAY,EAAE,EAAE;gBAC7B,IAAI,CAAC;oBACD,wEAAwE;oBACxE,MAAM,WAAW,GAAI,MAAc,CAAC,WAAW,CAAC,CAAA;oBAChD,IAAI,OAAO,WAAW,KAAK,UAAU,EAAE,CAAC;wBACpC,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;oBAC/B,CAAC;yBAAM,CAAC;wBACJ,OAAO,CAAC,IAAI,CAAC,2BAA2B,WAAW,mBAAmB,SAAS,QAAQ,CAAC,CAAA;oBAC5F,CAAC;gBACL,CAAC;gBAAC,OAAO,KAAU,EAAE,CAAC;oBAClB,OAAO,CAAC,KAAK,CAAC,2CAA2C,WAAW,IAAI,EAAE,KAAK,CAAC,CAAA;gBACpF,CAAC;YACL,CAAC,CAGI;YAAE,OAAe,CAAC,SAAS,SAAS,UAAU,CAAC,GAAG,OAAO,CAAA;YAE9D,OAAO,CAAC,gBAAgB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;QAChD,CAAC;IACL,CAAC;AACL,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,SAAS,CAAC,KAAU;IAChC,IAAI,CAAC,KAAK,EAAE,CAAC;QACT,OAAO,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAA;QAC9D,OAAM;IACV,CAAC;IAED,sBAAsB;IACtB,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;QAChC,MAAM,CAAC,gBAAgB,GAAG,KAAK,CAAA;IACnC,CAAC;IAED,8BAA8B;IAC9B,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC7B,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC1B,iBAAiB,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,YAAY,EAAE,KAAK,CAAC,CAAA;QAChE,CAAC;aAAM,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;YAC/D,IAAI,OAAO,CAAC,IAAI,YAAY,OAAO,EAAE,CAAC;gBAClC,sBAAsB,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC,YAAY,EAAE,KAAK,CAAC,CAAA;YAC5F,CAAC;QACL,CAAC;IACL,CAAC;AACL,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,WAA6C;IACzE,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;QAChC,MAAM,CAAC,sBAAsB,GAAG,WAAW,CAAA;IAC/C,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,YAAgC,QAAQ;IAC/D,yBAAyB;IACzB,MAAM,UAAU,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,CAAA;IAC9F,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACjC,MAAM,QAAQ,GAAG,SAAS,CAAC,gBAAgB,CAAC,aAAa,SAAS,GAAG,CAAC,CAAA;QACtE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACvC,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;YAC3B,IAAI,CAAC,CAAC,OAAO,YAAY,OAAO,CAAC;gBAAE,SAAQ;YAC3C,MAAM,OAAO,GAAI,OAAe,CAAC,SAAS,SAAS,UAAU,CAAC,CAAA;YAC9D,IAAI,OAAO,EAAE,CAAC;gBACV,OAAO,CAAC,mBAAmB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;gBAC/C,OAAQ,OAAe,CAAC,SAAS,SAAS,UAAU,CAAC,CAAA;YACzD,CAAC;QACL,CAAC;IACL,CAAC;IAED,iBAAiB;IACjB,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAA;AACvB,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
export type Signal<T> = ((v?: T) => T) & {
|
|
2
|
+
_isSignal: true;
|
|
3
|
+
};
|
|
4
|
+
export type Memo<T> = Signal<T>;
|
|
5
|
+
export type Ref<T> = {
|
|
6
|
+
current: T;
|
|
7
|
+
};
|
|
8
|
+
export type EffectFn = () => (void | (() => void));
|
|
9
|
+
export type DisposeFn = () => void;
|
|
10
|
+
export type Subscriber = {
|
|
11
|
+
run: () => void;
|
|
12
|
+
dependencies: Set<Set<any>>;
|
|
13
|
+
isRunning: boolean;
|
|
14
|
+
};
|
|
15
|
+
export type TrackingContext = {
|
|
16
|
+
subscriber: Subscriber;
|
|
17
|
+
};
|
|
18
|
+
export type MountCallback = () => void;
|
|
19
|
+
export type UnmountCallback = () => void;
|
|
20
|
+
declare global {
|
|
21
|
+
interface Window {
|
|
22
|
+
__ZENITH_RUNTIME__: any;
|
|
23
|
+
__ZENITH_STATE__: any;
|
|
24
|
+
__ZENITH_SCOPES__: any;
|
|
25
|
+
__ZENITH_EXPRESSIONS__: any;
|
|
26
|
+
__zenith: any;
|
|
27
|
+
zenSignal: any;
|
|
28
|
+
zenState: any;
|
|
29
|
+
zenEffect: any;
|
|
30
|
+
zenMemo: any;
|
|
31
|
+
zenBatch: any;
|
|
32
|
+
zenUntrack: any;
|
|
33
|
+
zenRef: any;
|
|
34
|
+
zenOnMount: any;
|
|
35
|
+
zenOnUnmount: any;
|
|
36
|
+
zenithHydrate: any;
|
|
37
|
+
zenithNotify: any;
|
|
38
|
+
zenithSubscribe: any;
|
|
39
|
+
zenOrder: any;
|
|
40
|
+
zenFixSVGNamespace: any;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
export declare const trackDependency: (s: Set<any>) => void;
|
|
44
|
+
export declare const notifySubscribers: (s: Set<any> | undefined) => void;
|
|
45
|
+
export declare const getCurrentContext: () => any;
|
|
46
|
+
export declare const pushContext: (e: any) => void;
|
|
47
|
+
export declare const popContext: () => void;
|
|
48
|
+
export declare const cleanupContext: (e: any) => void;
|
|
49
|
+
export declare const startBatch: () => void;
|
|
50
|
+
export declare const endBatch: () => void;
|
|
51
|
+
export declare const isBatching: () => boolean;
|
|
52
|
+
export declare const runUntracked: <T>(fn: () => T) => T;
|
|
53
|
+
export declare const triggerMount: () => void;
|
|
54
|
+
export declare const triggerUnmount: () => void;
|
|
55
|
+
export declare const executeUnmountCallbacks: () => void;
|
|
56
|
+
export declare const getIsMounted: () => boolean;
|
|
57
|
+
export declare const getUnmountCallbackCount: () => number;
|
|
58
|
+
export declare const resetMountState: () => void;
|
|
59
|
+
export declare const resetUnmountState: () => void;
|
|
60
|
+
export declare function mountComponent(scopeId: string): void;
|
|
61
|
+
export declare function zenRoute(): {
|
|
62
|
+
path: string;
|
|
63
|
+
slugs: string[];
|
|
64
|
+
};
|
|
65
|
+
export declare const signal: (v: any) => {
|
|
66
|
+
(nV?: any): any;
|
|
67
|
+
_isSignal: boolean;
|
|
68
|
+
toString(): string;
|
|
69
|
+
valueOf(): any;
|
|
70
|
+
};
|
|
71
|
+
export declare const state: (o: any) => any;
|
|
72
|
+
export declare const effect: (fn: () => any, opts?: any) => () => void;
|
|
73
|
+
export declare const memo: (fn: () => any) => {
|
|
74
|
+
(): any;
|
|
75
|
+
_isSignal: boolean;
|
|
76
|
+
};
|
|
77
|
+
export declare const batch: (fn: () => void) => void;
|
|
78
|
+
export declare const untrack: (fn: () => any) => any;
|
|
79
|
+
export declare const ref: (i: any) => {
|
|
80
|
+
current: any;
|
|
81
|
+
};
|
|
82
|
+
export declare const onMount: (cb: () => void) => void;
|
|
83
|
+
export declare const onUnmount: (cb: () => void) => void;
|
|
84
|
+
export declare function hydrate(state: any, container?: Element | Document, locals?: any): void;
|
|
85
|
+
export declare function order(fn: () => void): void;
|
|
86
|
+
export declare function h(tag: string, props: any, children: any): HTMLElement | SVGElement;
|
|
87
|
+
export declare function fragment(c: any): DocumentFragment;
|
|
88
|
+
export * from './dom-hydration.js';
|
|
89
|
+
export * from './thin-runtime.js';
|
|
90
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,505 @@
|
|
|
1
|
+
// Zenith Runtime
|
|
2
|
+
// Ported from hydration_runtime.js
|
|
3
|
+
// Internal reactivity state
|
|
4
|
+
let cE = null;
|
|
5
|
+
let cS = [];
|
|
6
|
+
let bD = 0;
|
|
7
|
+
let isFlushing = false;
|
|
8
|
+
let flushScheduled = false;
|
|
9
|
+
const pE = new Set();
|
|
10
|
+
// Lifecycle State
|
|
11
|
+
let isMounted = false;
|
|
12
|
+
const unmountCallbacks = new Set();
|
|
13
|
+
// Public Reactivity Utilities
|
|
14
|
+
export const trackDependency = (s) => { if (cE) {
|
|
15
|
+
s.add(cE);
|
|
16
|
+
cE.dependencies.add(s);
|
|
17
|
+
} };
|
|
18
|
+
export const notifySubscribers = (s) => {
|
|
19
|
+
if (!s)
|
|
20
|
+
return;
|
|
21
|
+
const es = Array.from(s);
|
|
22
|
+
for (const e of es) {
|
|
23
|
+
if (e.isRunning)
|
|
24
|
+
continue;
|
|
25
|
+
if (bD > 0 || isFlushing)
|
|
26
|
+
pE.add(e);
|
|
27
|
+
else
|
|
28
|
+
e.run();
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
export const getCurrentContext = () => cE;
|
|
32
|
+
export const pushContext = (e) => { cS.push(cE); cE = e; };
|
|
33
|
+
export const popContext = () => { cE = cS.pop(); };
|
|
34
|
+
export const cleanupContext = (e) => { for (const d of e.dependencies)
|
|
35
|
+
d.delete(e); e.dependencies.clear(); };
|
|
36
|
+
export const startBatch = () => { bD++; };
|
|
37
|
+
export const endBatch = () => { bD--; if (bD === 0)
|
|
38
|
+
flushEffects(); };
|
|
39
|
+
export const isBatching = () => bD > 0;
|
|
40
|
+
export const runUntracked = (fn) => {
|
|
41
|
+
pushContext(null);
|
|
42
|
+
try {
|
|
43
|
+
return fn();
|
|
44
|
+
}
|
|
45
|
+
finally {
|
|
46
|
+
popContext();
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
// Public Lifecycle Utilities
|
|
50
|
+
export const triggerMount = () => { isMounted = true; };
|
|
51
|
+
export const triggerUnmount = () => {
|
|
52
|
+
isMounted = false;
|
|
53
|
+
executeUnmountCallbacks();
|
|
54
|
+
};
|
|
55
|
+
export const executeUnmountCallbacks = () => {
|
|
56
|
+
for (const cb of unmountCallbacks) {
|
|
57
|
+
try {
|
|
58
|
+
cb();
|
|
59
|
+
}
|
|
60
|
+
catch (e) {
|
|
61
|
+
console.error('Error in unmount callback:', e);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
unmountCallbacks.clear();
|
|
65
|
+
};
|
|
66
|
+
export const getIsMounted = () => isMounted;
|
|
67
|
+
export const getUnmountCallbackCount = () => unmountCallbacks.size;
|
|
68
|
+
export const resetMountState = () => { isMounted = false; };
|
|
69
|
+
export const resetUnmountState = () => { unmountCallbacks.clear(); };
|
|
70
|
+
if (typeof window !== 'undefined') {
|
|
71
|
+
window.__ZENITH_EXPRESSIONS__ = new Map();
|
|
72
|
+
window.__ZENITH_SCOPES__ = {};
|
|
73
|
+
}
|
|
74
|
+
// Phase A3: Post-Mount Execution Hook
|
|
75
|
+
const mountedScopes = new Set();
|
|
76
|
+
export function mountComponent(scopeId) {
|
|
77
|
+
if (mountedScopes.has(scopeId))
|
|
78
|
+
return;
|
|
79
|
+
mountedScopes.add(scopeId);
|
|
80
|
+
const scope = window.__ZENITH_SCOPES__[scopeId];
|
|
81
|
+
if (!scope)
|
|
82
|
+
return;
|
|
83
|
+
if (typeof scope.__run === 'function') {
|
|
84
|
+
scope.__run();
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
// Internal shorthand helpers (matching original compiled code requirements if any)
|
|
88
|
+
const pC = pushContext;
|
|
89
|
+
const oC = popContext;
|
|
90
|
+
const tD = trackDependency;
|
|
91
|
+
const nS = notifySubscribers;
|
|
92
|
+
const cEf = cleanupContext;
|
|
93
|
+
export function zenRoute() {
|
|
94
|
+
if (typeof window === 'undefined')
|
|
95
|
+
return { path: '/', slugs: [] };
|
|
96
|
+
const path = window.location.pathname;
|
|
97
|
+
return {
|
|
98
|
+
path: path,
|
|
99
|
+
slugs: path.split('/').filter(Boolean)
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
function scheduleFlush() {
|
|
103
|
+
if (flushScheduled)
|
|
104
|
+
return;
|
|
105
|
+
flushScheduled = true;
|
|
106
|
+
queueMicrotask(() => {
|
|
107
|
+
flushScheduled = false;
|
|
108
|
+
flushEffects();
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
function flushEffects() {
|
|
112
|
+
if (isFlushing || bD > 0)
|
|
113
|
+
return;
|
|
114
|
+
isFlushing = true;
|
|
115
|
+
try {
|
|
116
|
+
while (pE.size > 0) {
|
|
117
|
+
const efs = Array.from(pE);
|
|
118
|
+
pE.clear();
|
|
119
|
+
for (const e of efs) {
|
|
120
|
+
if (!e.isRunning)
|
|
121
|
+
e.run();
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
finally {
|
|
126
|
+
isFlushing = false;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
export const signal = function (v) {
|
|
130
|
+
const s = new Set();
|
|
131
|
+
function sig(nV) {
|
|
132
|
+
if (arguments.length === 0) {
|
|
133
|
+
tD(s);
|
|
134
|
+
return v;
|
|
135
|
+
}
|
|
136
|
+
if (nV !== v) {
|
|
137
|
+
v = nV;
|
|
138
|
+
nS(s);
|
|
139
|
+
scheduleFlush();
|
|
140
|
+
}
|
|
141
|
+
return v;
|
|
142
|
+
}
|
|
143
|
+
sig._isSignal = true;
|
|
144
|
+
sig.toString = () => String(v);
|
|
145
|
+
sig.valueOf = () => v;
|
|
146
|
+
return sig;
|
|
147
|
+
};
|
|
148
|
+
export const state = function (o) {
|
|
149
|
+
const subs = new Map();
|
|
150
|
+
function gS(p) { if (!subs.has(p))
|
|
151
|
+
subs.set(p, new Set()); return subs.get(p); }
|
|
152
|
+
function notify(p) { nS(gS(p)); scheduleFlush(); }
|
|
153
|
+
function subscribe(p, ef) { gS(p).add(ef); ef.dependencies.add(gS(p)); }
|
|
154
|
+
function cP(obj, pPath = '') {
|
|
155
|
+
if (obj === null || typeof obj !== 'object' || obj._isSignal)
|
|
156
|
+
return obj;
|
|
157
|
+
return new Proxy(obj, {
|
|
158
|
+
get(t, p) {
|
|
159
|
+
if (p === Symbol.for('zenith_notify'))
|
|
160
|
+
return notify;
|
|
161
|
+
if (p === Symbol.for('zenith_subscribe'))
|
|
162
|
+
return subscribe;
|
|
163
|
+
if (typeof p === 'symbol')
|
|
164
|
+
return t[p];
|
|
165
|
+
const path = pPath ? `${pPath}.${String(p)}` : String(p);
|
|
166
|
+
tD(gS(path));
|
|
167
|
+
const v = t[p];
|
|
168
|
+
if (v !== null && typeof v === 'object' && !v._isSignal)
|
|
169
|
+
return cP(v, path);
|
|
170
|
+
return v;
|
|
171
|
+
},
|
|
172
|
+
set(t, p, nV) {
|
|
173
|
+
if (typeof p === 'symbol') {
|
|
174
|
+
t[p] = nV;
|
|
175
|
+
return true;
|
|
176
|
+
}
|
|
177
|
+
const path = pPath ? `${pPath}.${String(p)}` : String(p);
|
|
178
|
+
const oV = t[p];
|
|
179
|
+
if (oV && typeof oV === 'function' && oV._isSignal)
|
|
180
|
+
oV(nV);
|
|
181
|
+
else if (oV !== nV) {
|
|
182
|
+
t[p] = nV;
|
|
183
|
+
nS(gS(path));
|
|
184
|
+
const pts = path.split('.');
|
|
185
|
+
for (let i = pts.length - 1; i >= 0; i--) {
|
|
186
|
+
const pp = pts.slice(0, i).join('.');
|
|
187
|
+
if (pp)
|
|
188
|
+
nS(gS(pp));
|
|
189
|
+
}
|
|
190
|
+
scheduleFlush();
|
|
191
|
+
}
|
|
192
|
+
return true;
|
|
193
|
+
}
|
|
194
|
+
});
|
|
195
|
+
}
|
|
196
|
+
return cP(o);
|
|
197
|
+
};
|
|
198
|
+
export const effect = function (fn, opts = {}) {
|
|
199
|
+
let cl, tm;
|
|
200
|
+
const ef = {
|
|
201
|
+
dependencies: new Set(),
|
|
202
|
+
isRunning: false,
|
|
203
|
+
run: () => {
|
|
204
|
+
if (ef.isRunning)
|
|
205
|
+
return;
|
|
206
|
+
const schedule = opts.scheduler || ((f) => f());
|
|
207
|
+
if (opts.debounce) {
|
|
208
|
+
if (tm)
|
|
209
|
+
clearTimeout(tm);
|
|
210
|
+
tm = setTimeout(() => schedule(ex), opts.debounce);
|
|
211
|
+
}
|
|
212
|
+
else
|
|
213
|
+
schedule(ex);
|
|
214
|
+
}
|
|
215
|
+
};
|
|
216
|
+
function ex() {
|
|
217
|
+
if (ef.isRunning)
|
|
218
|
+
return;
|
|
219
|
+
ef.isRunning = true;
|
|
220
|
+
cEf(ef);
|
|
221
|
+
pC(ef);
|
|
222
|
+
try {
|
|
223
|
+
if (cl)
|
|
224
|
+
cl();
|
|
225
|
+
cl = fn();
|
|
226
|
+
}
|
|
227
|
+
finally {
|
|
228
|
+
oC();
|
|
229
|
+
ef.isRunning = false;
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
if (!opts.defer)
|
|
233
|
+
ex();
|
|
234
|
+
return () => { cEf(ef); if (cl)
|
|
235
|
+
cl(); };
|
|
236
|
+
};
|
|
237
|
+
export const memo = function (fn) {
|
|
238
|
+
const sig = signal(undefined);
|
|
239
|
+
effect(() => sig(fn()));
|
|
240
|
+
const m = () => sig();
|
|
241
|
+
m._isSignal = true;
|
|
242
|
+
return m;
|
|
243
|
+
};
|
|
244
|
+
export const batch = function (fn) {
|
|
245
|
+
startBatch();
|
|
246
|
+
try {
|
|
247
|
+
fn();
|
|
248
|
+
}
|
|
249
|
+
finally {
|
|
250
|
+
endBatch();
|
|
251
|
+
}
|
|
252
|
+
};
|
|
253
|
+
export const untrack = function (fn) {
|
|
254
|
+
return runUntracked(fn);
|
|
255
|
+
};
|
|
256
|
+
export const ref = (i) => ({ current: i || null });
|
|
257
|
+
export const onMount = (cb) => {
|
|
258
|
+
if (typeof window !== 'undefined' && window.__zenith && window.__zenith.activeInstance) {
|
|
259
|
+
window.__zenith.activeInstance.mountHooks.push(cb);
|
|
260
|
+
}
|
|
261
|
+
else {
|
|
262
|
+
// Fallback for non-component context or SSR
|
|
263
|
+
if (isMounted)
|
|
264
|
+
cb();
|
|
265
|
+
}
|
|
266
|
+
};
|
|
267
|
+
export const onUnmount = (cb) => {
|
|
268
|
+
unmountCallbacks.add(cb);
|
|
269
|
+
};
|
|
270
|
+
// DOM Helper (hC)
|
|
271
|
+
function hC(parent, child) {
|
|
272
|
+
if (child == null || child === false)
|
|
273
|
+
return;
|
|
274
|
+
let fn = child;
|
|
275
|
+
let id = null;
|
|
276
|
+
if (typeof child === 'object' && child.fn) {
|
|
277
|
+
fn = child.fn;
|
|
278
|
+
id = child.id;
|
|
279
|
+
}
|
|
280
|
+
const isTitle = parent && parent.tagName && parent.tagName.toLowerCase() === 'title';
|
|
281
|
+
if (typeof fn === 'function') {
|
|
282
|
+
if (isTitle) {
|
|
283
|
+
const val = fn();
|
|
284
|
+
if (val != null && val !== false) {
|
|
285
|
+
const text = String(val);
|
|
286
|
+
parent.appendChild(document.createTextNode(text));
|
|
287
|
+
document.title = text;
|
|
288
|
+
}
|
|
289
|
+
effect(() => {
|
|
290
|
+
const newVal = fn();
|
|
291
|
+
if (newVal != null && newVal !== false) {
|
|
292
|
+
const newText = String(newVal);
|
|
293
|
+
if (document.title !== newText) {
|
|
294
|
+
parent.textContent = newText;
|
|
295
|
+
document.title = newText;
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
}, { id: id ? `title-${id}` : 'title-sync' });
|
|
299
|
+
}
|
|
300
|
+
else {
|
|
301
|
+
const ph = document.createComment('expr' + (id ? ':' + id : ''));
|
|
302
|
+
parent.appendChild(ph);
|
|
303
|
+
let curNodes = [];
|
|
304
|
+
effect(() => {
|
|
305
|
+
const r = fn();
|
|
306
|
+
curNodes.forEach(n => { if (n.parentNode)
|
|
307
|
+
n.parentNode.removeChild(n); });
|
|
308
|
+
curNodes = [];
|
|
309
|
+
if (r == null || r === false)
|
|
310
|
+
return;
|
|
311
|
+
const items = Array.isArray(r) ? r.flat(Infinity) : [r];
|
|
312
|
+
items.forEach(item => {
|
|
313
|
+
if (item == null || item === false)
|
|
314
|
+
return;
|
|
315
|
+
const node = item instanceof Node ? item : document.createTextNode(String(item));
|
|
316
|
+
if (ph.parentNode) {
|
|
317
|
+
ph.parentNode.insertBefore(node, ph);
|
|
318
|
+
curNodes.push(node);
|
|
319
|
+
}
|
|
320
|
+
});
|
|
321
|
+
}, { id });
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
else if (Array.isArray(child)) {
|
|
325
|
+
child.flat(Infinity).forEach(c => hC(parent, c));
|
|
326
|
+
}
|
|
327
|
+
else {
|
|
328
|
+
parent.appendChild(child instanceof Node ? child : document.createTextNode(String(child)));
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
// Global Hydration
|
|
332
|
+
export function hydrate(state, container = document, locals = {}) {
|
|
333
|
+
const ir = window.canonicalIR;
|
|
334
|
+
if (!ir)
|
|
335
|
+
return;
|
|
336
|
+
window.__ZENITH_STATE__ = state;
|
|
337
|
+
const rootScope = { state, props: {}, locals: locals };
|
|
338
|
+
const nodes = ir(rootScope);
|
|
339
|
+
function findTag(items, tag) {
|
|
340
|
+
const list = Array.isArray(items) ? items : [items];
|
|
341
|
+
for (const item of list) {
|
|
342
|
+
if (item instanceof Element && item.tagName.toLowerCase() === tag)
|
|
343
|
+
return item;
|
|
344
|
+
if (item instanceof DocumentFragment) {
|
|
345
|
+
const found = findTag(Array.from(item.childNodes), tag);
|
|
346
|
+
if (found)
|
|
347
|
+
return found;
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
return null;
|
|
351
|
+
}
|
|
352
|
+
const headNode = findTag(nodes, 'head');
|
|
353
|
+
const bodyNode = findTag(nodes, 'body');
|
|
354
|
+
if (headNode) {
|
|
355
|
+
const headMount = document.head;
|
|
356
|
+
const newTitle = headNode.querySelector('title');
|
|
357
|
+
if (newTitle) {
|
|
358
|
+
let oldTitle = headMount.querySelector('title');
|
|
359
|
+
if (!oldTitle) {
|
|
360
|
+
oldTitle = document.createElement('title');
|
|
361
|
+
headMount.appendChild(oldTitle);
|
|
362
|
+
}
|
|
363
|
+
const titleContent = newTitle.childNodes.length > 0
|
|
364
|
+
? Array.from(newTitle.childNodes).map((n) => n.textContent).join('')
|
|
365
|
+
: '';
|
|
366
|
+
oldTitle.textContent = titleContent;
|
|
367
|
+
document.title = titleContent;
|
|
368
|
+
effect(() => {
|
|
369
|
+
const text = oldTitle.textContent?.trim();
|
|
370
|
+
if (text && document.title !== text) {
|
|
371
|
+
document.title = text;
|
|
372
|
+
}
|
|
373
|
+
}, { id: 'title-sync' });
|
|
374
|
+
}
|
|
375
|
+
headNode.querySelectorAll('meta').forEach((newMeta) => {
|
|
376
|
+
const name = newMeta.getAttribute('name');
|
|
377
|
+
if (name) {
|
|
378
|
+
const oldMeta = headMount.querySelector(`meta[name="${name}"]`);
|
|
379
|
+
if (oldMeta)
|
|
380
|
+
oldMeta.setAttribute('content', newMeta.getAttribute('content'));
|
|
381
|
+
else
|
|
382
|
+
headMount.appendChild(newMeta.cloneNode(true));
|
|
383
|
+
}
|
|
384
|
+
});
|
|
385
|
+
headNode.childNodes.forEach((n) => {
|
|
386
|
+
if (n.tagName === 'TITLE' || n.tagName === 'META')
|
|
387
|
+
return;
|
|
388
|
+
headMount.appendChild(n.cloneNode(true));
|
|
389
|
+
});
|
|
390
|
+
}
|
|
391
|
+
const bodyMount = container === document ? document.body : container;
|
|
392
|
+
if (bodyNode) {
|
|
393
|
+
bodyMount.innerHTML = '';
|
|
394
|
+
Array.from(bodyNode.childNodes).forEach(n => hC(bodyMount, n));
|
|
395
|
+
}
|
|
396
|
+
else {
|
|
397
|
+
bodyMount.innerHTML = '';
|
|
398
|
+
const items = Array.isArray(nodes) ? nodes : [nodes];
|
|
399
|
+
items.forEach(n => hC(bodyMount, n));
|
|
400
|
+
}
|
|
401
|
+
for (const scopeId in window.__ZENITH_SCOPES__) {
|
|
402
|
+
mountComponent(scopeId);
|
|
403
|
+
}
|
|
404
|
+
queueMicrotask(() => {
|
|
405
|
+
flushEffects();
|
|
406
|
+
const titleEl = document.querySelector('title');
|
|
407
|
+
if (titleEl && titleEl.textContent) {
|
|
408
|
+
const text = titleEl.textContent.trim();
|
|
409
|
+
if (text && document.title !== text) {
|
|
410
|
+
document.title = text;
|
|
411
|
+
}
|
|
412
|
+
}
|
|
413
|
+
});
|
|
414
|
+
}
|
|
415
|
+
// Ordered Effects
|
|
416
|
+
export function order(fn) {
|
|
417
|
+
if (typeof fn === 'function')
|
|
418
|
+
fn();
|
|
419
|
+
}
|
|
420
|
+
// Hyperscript
|
|
421
|
+
let currentNamespace = null;
|
|
422
|
+
export function h(tag, props, children) {
|
|
423
|
+
const SVG_NS = 'http://www.w3.org/2000/svg';
|
|
424
|
+
const SVG_TAGS = new Set(['svg', 'path', 'circle', 'ellipse', 'line', 'polygon', 'polyline', 'rect', 'g', 'defs', 'clipPath', 'mask', 'use', 'symbol', 'text', 'tspan', 'textPath', 'image', 'foreignObject', 'switch', 'desc', 'title', 'metadata', 'linearGradient', 'radialGradient', 'stop', 'pattern', 'filter', 'feBlend', 'feColorMatrix', 'feComponentTransfer', 'feComposite', 'feConvolveMatrix', 'feDiffuseLighting', 'feDisplacementMap', 'feFlood', 'feGaussianBlur', 'feImage', 'feMerge', 'feMergeNode', 'feMorphology', 'feOffset', 'feSpecularLighting', 'feTile', 'feTurbulence', 'animate', 'animateMotion', 'animateTransform', 'set', 'marker']);
|
|
425
|
+
const isSvgTag = SVG_TAGS.has(tag) || SVG_TAGS.has(tag.toLowerCase());
|
|
426
|
+
const useSvgNamespace = isSvgTag || currentNamespace === SVG_NS;
|
|
427
|
+
const el = useSvgNamespace ? document.createElementNS(SVG_NS, tag) : document.createElement(tag);
|
|
428
|
+
const previousNamespace = currentNamespace;
|
|
429
|
+
if (tag === 'svg' || tag === 'SVG') {
|
|
430
|
+
currentNamespace = SVG_NS;
|
|
431
|
+
}
|
|
432
|
+
if (props) {
|
|
433
|
+
const setClass = (element, value) => {
|
|
434
|
+
if (useSvgNamespace && 'className' in element && typeof element.className === 'object') {
|
|
435
|
+
element.className.baseVal = String(value || '');
|
|
436
|
+
}
|
|
437
|
+
else {
|
|
438
|
+
element.className = String(value || '');
|
|
439
|
+
}
|
|
440
|
+
};
|
|
441
|
+
for (const [k, v] of Object.entries(props)) {
|
|
442
|
+
if (k === 'ref') {
|
|
443
|
+
if (v && typeof v === 'object' && 'current' in v)
|
|
444
|
+
v.current = el;
|
|
445
|
+
else if (typeof v === 'string') {
|
|
446
|
+
const s = window.__ZENITH_STATE__;
|
|
447
|
+
if (s && s[v] && typeof s[v] === 'object' && 'current' in s[v])
|
|
448
|
+
s[v].current = el;
|
|
449
|
+
}
|
|
450
|
+
}
|
|
451
|
+
else if (k.startsWith('on')) {
|
|
452
|
+
let fn = v;
|
|
453
|
+
if (v && typeof v === 'object' && v.fn)
|
|
454
|
+
fn = v.fn;
|
|
455
|
+
if (typeof fn === 'function') {
|
|
456
|
+
el.addEventListener(k.slice(2).toLowerCase(), (e) => {
|
|
457
|
+
const h = fn.call(el, e, el);
|
|
458
|
+
if (typeof h === 'function')
|
|
459
|
+
h.call(el, e, el);
|
|
460
|
+
});
|
|
461
|
+
}
|
|
462
|
+
}
|
|
463
|
+
else {
|
|
464
|
+
let fn = v;
|
|
465
|
+
let id = null;
|
|
466
|
+
if (typeof v === 'object' && v.fn) {
|
|
467
|
+
fn = v.fn;
|
|
468
|
+
id = v.id;
|
|
469
|
+
}
|
|
470
|
+
if (typeof fn === 'function') {
|
|
471
|
+
effect(() => {
|
|
472
|
+
const val = fn();
|
|
473
|
+
if (k === 'class' || k === 'className')
|
|
474
|
+
setClass(el, val);
|
|
475
|
+
else if (val == null || val === false)
|
|
476
|
+
el.removeAttribute(k);
|
|
477
|
+
else if (el.setAttribute)
|
|
478
|
+
el.setAttribute(k, String(val));
|
|
479
|
+
}, { id });
|
|
480
|
+
}
|
|
481
|
+
else {
|
|
482
|
+
if (k === 'class' || k === 'className')
|
|
483
|
+
setClass(el, v);
|
|
484
|
+
else if (el.setAttribute)
|
|
485
|
+
el.setAttribute(k, String(v));
|
|
486
|
+
}
|
|
487
|
+
}
|
|
488
|
+
}
|
|
489
|
+
}
|
|
490
|
+
if (children) {
|
|
491
|
+
const items = Array.isArray(children) ? children : [children];
|
|
492
|
+
items.forEach(c => hC(el, c));
|
|
493
|
+
}
|
|
494
|
+
currentNamespace = previousNamespace;
|
|
495
|
+
return el;
|
|
496
|
+
}
|
|
497
|
+
export function fragment(c) {
|
|
498
|
+
const f = document.createDocumentFragment();
|
|
499
|
+
const items = Array.isArray(c) ? c : [c];
|
|
500
|
+
items.forEach(i => hC(f, i));
|
|
501
|
+
return f;
|
|
502
|
+
}
|
|
503
|
+
export * from './dom-hydration.js';
|
|
504
|
+
export * from './thin-runtime.js';
|
|
505
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Thin Runtime
|
|
3
|
+
*
|
|
4
|
+
* Phase 8/9/10: Declarative runtime for DOM updates and event binding
|
|
5
|
+
*
|
|
6
|
+
* This runtime is purely declarative - it:
|
|
7
|
+
* - Updates DOM nodes by ID
|
|
8
|
+
* - Binds event handlers
|
|
9
|
+
* - Reacts to state changes
|
|
10
|
+
* - Does NOT parse templates or expressions
|
|
11
|
+
* - Does NOT use eval, new Function, or with(window)
|
|
12
|
+
*/
|
|
13
|
+
/**
|
|
14
|
+
* Generate thin declarative runtime code
|
|
15
|
+
*
|
|
16
|
+
* This runtime is minimal and safe - it only:
|
|
17
|
+
* 1. Updates DOM nodes using pre-compiled expression functions
|
|
18
|
+
* 2. Binds event handlers by ID
|
|
19
|
+
* 3. Provides reactive state updates
|
|
20
|
+
*
|
|
21
|
+
* All expressions are pre-compiled at build time.
|
|
22
|
+
*/
|
|
23
|
+
export declare function generateThinRuntime(): string;
|
|
24
|
+
//# sourceMappingURL=thin-runtime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"thin-runtime.d.ts","sourceRoot":"","sources":["../src/thin-runtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAuI5C"}
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Thin Runtime
|
|
3
|
+
*
|
|
4
|
+
* Phase 8/9/10: Declarative runtime for DOM updates and event binding
|
|
5
|
+
*
|
|
6
|
+
* This runtime is purely declarative - it:
|
|
7
|
+
* - Updates DOM nodes by ID
|
|
8
|
+
* - Binds event handlers
|
|
9
|
+
* - Reacts to state changes
|
|
10
|
+
* - Does NOT parse templates or expressions
|
|
11
|
+
* - Does NOT use eval, new Function, or with(window)
|
|
12
|
+
*/
|
|
13
|
+
/**
|
|
14
|
+
* Generate thin declarative runtime code
|
|
15
|
+
*
|
|
16
|
+
* This runtime is minimal and safe - it only:
|
|
17
|
+
* 1. Updates DOM nodes using pre-compiled expression functions
|
|
18
|
+
* 2. Binds event handlers by ID
|
|
19
|
+
* 3. Provides reactive state updates
|
|
20
|
+
*
|
|
21
|
+
* All expressions are pre-compiled at build time.
|
|
22
|
+
*/
|
|
23
|
+
export function generateThinRuntime() {
|
|
24
|
+
return `
|
|
25
|
+
// Zenith Thin Runtime (Phase 8/9/10)
|
|
26
|
+
// Purely declarative - no template parsing, no eval, no with(window)
|
|
27
|
+
|
|
28
|
+
(function() {
|
|
29
|
+
'use strict';
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Update a single DOM node with expression result
|
|
33
|
+
* Node is identified by data-zen-text or data-zen-attr-* attribute
|
|
34
|
+
*/
|
|
35
|
+
function updateNode(node, expressionId, state, loaderData, props, stores) {
|
|
36
|
+
const expression = window.__ZENITH_EXPRESSIONS__.get(expressionId);
|
|
37
|
+
if (!expression) {
|
|
38
|
+
console.warn('[Zenith] Expression not found:', expressionId);
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
try {
|
|
43
|
+
const result = expression(state, loaderData, props, stores);
|
|
44
|
+
|
|
45
|
+
// Update node based on attribute type
|
|
46
|
+
if (node.hasAttribute('data-zen-text')) {
|
|
47
|
+
// Text node update
|
|
48
|
+
if (result === null || result === undefined || result === false) {
|
|
49
|
+
node.textContent = '';
|
|
50
|
+
} else {
|
|
51
|
+
node.textContent = String(result);
|
|
52
|
+
}
|
|
53
|
+
} else {
|
|
54
|
+
// Attribute update - determine attribute name from data-zen-attr-*
|
|
55
|
+
const attrMatch = Array.from(node.attributes)
|
|
56
|
+
.find(attr => attr.name.startsWith('data-zen-attr-'));
|
|
57
|
+
|
|
58
|
+
if (attrMatch) {
|
|
59
|
+
const attrName = attrMatch.name.replace('data-zen-attr-', '');
|
|
60
|
+
|
|
61
|
+
if (attrName === 'class' || attrName === 'className') {
|
|
62
|
+
node.className = String(result ?? '');
|
|
63
|
+
} else if (attrName === 'style') {
|
|
64
|
+
if (typeof result === 'string') {
|
|
65
|
+
node.setAttribute('style', result);
|
|
66
|
+
}
|
|
67
|
+
} else if (attrName === 'disabled' || attrName === 'checked') {
|
|
68
|
+
if (result) {
|
|
69
|
+
node.setAttribute(attrName, '');
|
|
70
|
+
} else {
|
|
71
|
+
node.removeAttribute(attrName);
|
|
72
|
+
}
|
|
73
|
+
} else {
|
|
74
|
+
if (result != null && result !== false) {
|
|
75
|
+
node.setAttribute(attrName, String(result));
|
|
76
|
+
} else {
|
|
77
|
+
node.removeAttribute(attrName);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
} catch (error) {
|
|
83
|
+
console.error('[Zenith] Error updating node:', expressionId, error);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* Update all hydrated nodes
|
|
89
|
+
* Called when state changes
|
|
90
|
+
*/
|
|
91
|
+
function updateAll(state, loaderData, props, stores) {
|
|
92
|
+
// Find all nodes with hydration markers
|
|
93
|
+
const textNodes = document.querySelectorAll('[data-zen-text]');
|
|
94
|
+
const attrNodes = document.querySelectorAll('[data-zen-attr-class], [data-zen-attr-style], [data-zen-attr-src], [data-zen-attr-href]');
|
|
95
|
+
|
|
96
|
+
textNodes.forEach(node => {
|
|
97
|
+
const expressionId = node.getAttribute('data-zen-text');
|
|
98
|
+
if (expressionId) {
|
|
99
|
+
updateNode(node, expressionId, state, loaderData, props, stores);
|
|
100
|
+
}
|
|
101
|
+
});
|
|
102
|
+
|
|
103
|
+
attrNodes.forEach(node => {
|
|
104
|
+
const attrMatch = Array.from(node.attributes)
|
|
105
|
+
.find(attr => attr.name.startsWith('data-zen-attr-'));
|
|
106
|
+
if (attrMatch) {
|
|
107
|
+
const expressionId = attrMatch.value;
|
|
108
|
+
if (expressionId) {
|
|
109
|
+
updateNode(node, expressionId, state, loaderData, props, stores);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* Bind event handlers
|
|
117
|
+
* Handlers are pre-compiled and registered on window
|
|
118
|
+
*/
|
|
119
|
+
function bindEvents(container) {
|
|
120
|
+
container = container || document;
|
|
121
|
+
|
|
122
|
+
const eventTypes = ['click', 'change', 'input', 'submit', 'focus', 'blur', 'keyup', 'keydown', 'mouseenter'];
|
|
123
|
+
|
|
124
|
+
eventTypes.forEach(eventType => {
|
|
125
|
+
const elements = container.querySelectorAll('[data-zen-' + eventType + ']');
|
|
126
|
+
elements.forEach(element => {
|
|
127
|
+
const handlerName = element.getAttribute('data-zen-' + eventType);
|
|
128
|
+
if (!handlerName) return;
|
|
129
|
+
|
|
130
|
+
// Remove existing handler
|
|
131
|
+
const handlerKey = '__zen_' + eventType + '_handler';
|
|
132
|
+
const existingHandler = element[handlerKey];
|
|
133
|
+
if (existingHandler) {
|
|
134
|
+
element.removeEventListener(eventType, existingHandler);
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
// Bind new handler (pre-compiled, registered on window)
|
|
138
|
+
const handler = function(event) {
|
|
139
|
+
const handlerFunc = window[handlerName];
|
|
140
|
+
if (typeof handlerFunc === 'function') {
|
|
141
|
+
handlerFunc(event, element);
|
|
142
|
+
}
|
|
143
|
+
};
|
|
144
|
+
|
|
145
|
+
element[handlerKey] = handler;
|
|
146
|
+
element.addEventListener(eventType, handler);
|
|
147
|
+
});
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
// Export to window
|
|
152
|
+
if (typeof window !== 'undefined') {
|
|
153
|
+
window.__zenith_updateAll = updateAll;
|
|
154
|
+
window.__zenith_bindEvents = bindEvents;
|
|
155
|
+
}
|
|
156
|
+
})();
|
|
157
|
+
`;
|
|
158
|
+
}
|
|
159
|
+
//# sourceMappingURL=thin-runtime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"thin-runtime.js","sourceRoot":"","sources":["../src/thin-runtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH;;;;;;;;;GASG;AACH,MAAM,UAAU,mBAAmB;IAC/B,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqIV,CAAA;AACD,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zenithbuild/runtime",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.1",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -10,6 +10,10 @@
|
|
|
10
10
|
"publishConfig": {
|
|
11
11
|
"access": "public"
|
|
12
12
|
},
|
|
13
|
+
"files": [
|
|
14
|
+
"dist",
|
|
15
|
+
"src"
|
|
16
|
+
],
|
|
13
17
|
"scripts": {
|
|
14
18
|
"build": "tsc"
|
|
15
19
|
},
|
package/tsconfig.json
DELETED
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"compilerOptions": {
|
|
3
|
-
"module": "ESNext",
|
|
4
|
-
"target": "ESNext",
|
|
5
|
-
"moduleResolution": "bundler",
|
|
6
|
-
"allowImportingTsExtensions": false,
|
|
7
|
-
"verbatimModuleSyntax": false,
|
|
8
|
-
"noEmit": false,
|
|
9
|
-
"outDir": "dist",
|
|
10
|
-
"strict": true,
|
|
11
|
-
"skipLibCheck": true,
|
|
12
|
-
"declaration": true,
|
|
13
|
-
"declarationMap": true,
|
|
14
|
-
"sourceMap": true,
|
|
15
|
-
"esModuleInterop": true,
|
|
16
|
-
"forceConsistentCasingInFileNames": true
|
|
17
|
-
},
|
|
18
|
-
"include": [
|
|
19
|
-
"src/**/*"
|
|
20
|
-
],
|
|
21
|
-
"exclude": [
|
|
22
|
-
"node_modules",
|
|
23
|
-
"dist",
|
|
24
|
-
"src/**/*.test.ts",
|
|
25
|
-
"src/**/*.spec.ts",
|
|
26
|
-
"tests/**/*"
|
|
27
|
-
]
|
|
28
|
-
}
|