@llui/dom 0.0.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.
Files changed (151) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +15 -0
  3. package/dist/addressed.d.ts +16 -0
  4. package/dist/addressed.d.ts.map +1 -0
  5. package/dist/addressed.js +40 -0
  6. package/dist/addressed.js.map +1 -0
  7. package/dist/binding.d.ts +18 -0
  8. package/dist/binding.d.ts.map +1 -0
  9. package/dist/binding.js +62 -0
  10. package/dist/binding.js.map +1 -0
  11. package/dist/chain-update.d.ts +7 -0
  12. package/dist/chain-update.d.ts.map +1 -0
  13. package/dist/chain-update.js +16 -0
  14. package/dist/chain-update.js.map +1 -0
  15. package/dist/component.d.ts +3 -0
  16. package/dist/component.d.ts.map +1 -0
  17. package/dist/component.js +4 -0
  18. package/dist/component.js.map +1 -0
  19. package/dist/devtools.d.ts +113 -0
  20. package/dist/devtools.d.ts.map +1 -0
  21. package/dist/devtools.js +390 -0
  22. package/dist/devtools.js.map +1 -0
  23. package/dist/el-split.d.ts +3 -0
  24. package/dist/el-split.d.ts.map +1 -0
  25. package/dist/el-split.js +54 -0
  26. package/dist/el-split.js.map +1 -0
  27. package/dist/el-template.d.ts +17 -0
  28. package/dist/el-template.d.ts.map +1 -0
  29. package/dist/el-template.js +64 -0
  30. package/dist/el-template.js.map +1 -0
  31. package/dist/elements.d.ts +80 -0
  32. package/dist/elements.d.ts.map +1 -0
  33. package/dist/elements.js +234 -0
  34. package/dist/elements.js.map +1 -0
  35. package/dist/form.d.ts +30 -0
  36. package/dist/form.d.ts.map +1 -0
  37. package/dist/form.js +12 -0
  38. package/dist/form.js.map +1 -0
  39. package/dist/hmr.d.ts +20 -0
  40. package/dist/hmr.d.ts.map +1 -0
  41. package/dist/hmr.js +98 -0
  42. package/dist/hmr.js.map +1 -0
  43. package/dist/hydrate.d.ts +29 -0
  44. package/dist/hydrate.d.ts.map +1 -0
  45. package/dist/hydrate.js +96 -0
  46. package/dist/hydrate.js.map +1 -0
  47. package/dist/index.d.ts +28 -0
  48. package/dist/index.d.ts.map +1 -0
  49. package/dist/index.js +34 -0
  50. package/dist/index.js.map +1 -0
  51. package/dist/merge-handlers.d.ts +7 -0
  52. package/dist/merge-handlers.d.ts.map +1 -0
  53. package/dist/merge-handlers.js +16 -0
  54. package/dist/merge-handlers.js.map +1 -0
  55. package/dist/mount.d.ts +14 -0
  56. package/dist/mount.d.ts.map +1 -0
  57. package/dist/mount.js +182 -0
  58. package/dist/mount.js.map +1 -0
  59. package/dist/primitives/branch.d.ts +3 -0
  60. package/dist/primitives/branch.d.ts.map +1 -0
  61. package/dist/primitives/branch.js +94 -0
  62. package/dist/primitives/branch.js.map +1 -0
  63. package/dist/primitives/child.d.ts +3 -0
  64. package/dist/primitives/child.d.ts.map +1 -0
  65. package/dist/primitives/child.js +77 -0
  66. package/dist/primitives/child.js.map +1 -0
  67. package/dist/primitives/context.d.ts +45 -0
  68. package/dist/primitives/context.d.ts.map +1 -0
  69. package/dist/primitives/context.js +87 -0
  70. package/dist/primitives/context.js.map +1 -0
  71. package/dist/primitives/each.d.ts +3 -0
  72. package/dist/primitives/each.d.ts.map +1 -0
  73. package/dist/primitives/each.js +515 -0
  74. package/dist/primitives/each.js.map +1 -0
  75. package/dist/primitives/error-boundary.d.ts +6 -0
  76. package/dist/primitives/error-boundary.d.ts.map +1 -0
  77. package/dist/primitives/error-boundary.js +32 -0
  78. package/dist/primitives/error-boundary.js.map +1 -0
  79. package/dist/primitives/foreign.d.ts +3 -0
  80. package/dist/primitives/foreign.d.ts.map +1 -0
  81. package/dist/primitives/foreign.js +80 -0
  82. package/dist/primitives/foreign.js.map +1 -0
  83. package/dist/primitives/memo.d.ts +3 -0
  84. package/dist/primitives/memo.d.ts.map +1 -0
  85. package/dist/primitives/memo.js +30 -0
  86. package/dist/primitives/memo.js.map +1 -0
  87. package/dist/primitives/on-mount.d.ts +2 -0
  88. package/dist/primitives/on-mount.d.ts.map +1 -0
  89. package/dist/primitives/on-mount.js +23 -0
  90. package/dist/primitives/on-mount.js.map +1 -0
  91. package/dist/primitives/portal.d.ts +3 -0
  92. package/dist/primitives/portal.d.ts.map +1 -0
  93. package/dist/primitives/portal.js +31 -0
  94. package/dist/primitives/portal.js.map +1 -0
  95. package/dist/primitives/selector.d.ts +22 -0
  96. package/dist/primitives/selector.d.ts.map +1 -0
  97. package/dist/primitives/selector.js +104 -0
  98. package/dist/primitives/selector.js.map +1 -0
  99. package/dist/primitives/show.d.ts +3 -0
  100. package/dist/primitives/show.d.ts.map +1 -0
  101. package/dist/primitives/show.js +12 -0
  102. package/dist/primitives/show.js.map +1 -0
  103. package/dist/primitives/slice.d.ts +23 -0
  104. package/dist/primitives/slice.d.ts.map +1 -0
  105. package/dist/primitives/slice.js +57 -0
  106. package/dist/primitives/slice.js.map +1 -0
  107. package/dist/primitives/text.d.ts +2 -0
  108. package/dist/primitives/text.d.ts.map +1 -0
  109. package/dist/primitives/text.js +35 -0
  110. package/dist/primitives/text.js.map +1 -0
  111. package/dist/render-context.d.ts +14 -0
  112. package/dist/render-context.d.ts.map +1 -0
  113. package/dist/render-context.js +14 -0
  114. package/dist/render-context.js.map +1 -0
  115. package/dist/runtime.d.ts +4 -0
  116. package/dist/runtime.d.ts.map +1 -0
  117. package/dist/runtime.js +14 -0
  118. package/dist/runtime.js.map +1 -0
  119. package/dist/scope.d.ts +24 -0
  120. package/dist/scope.d.ts.map +1 -0
  121. package/dist/scope.js +102 -0
  122. package/dist/scope.js.map +1 -0
  123. package/dist/slice-handler.d.ts +31 -0
  124. package/dist/slice-handler.d.ts.map +1 -0
  125. package/dist/slice-handler.js +34 -0
  126. package/dist/slice-handler.js.map +1 -0
  127. package/dist/ssr-dom.d.ts +12 -0
  128. package/dist/ssr-dom.d.ts.map +1 -0
  129. package/dist/ssr-dom.js +36 -0
  130. package/dist/ssr-dom.js.map +1 -0
  131. package/dist/ssr.d.ts +11 -0
  132. package/dist/ssr.d.ts.map +1 -0
  133. package/dist/ssr.js +127 -0
  134. package/dist/ssr.js.map +1 -0
  135. package/dist/structural.d.ts +4 -0
  136. package/dist/structural.d.ts.map +1 -0
  137. package/dist/structural.js +2 -0
  138. package/dist/structural.js.map +1 -0
  139. package/dist/types.d.ts +145 -0
  140. package/dist/types.d.ts.map +1 -0
  141. package/dist/types.js +3 -0
  142. package/dist/types.js.map +1 -0
  143. package/dist/update-loop.d.ts +31 -0
  144. package/dist/update-loop.d.ts.map +1 -0
  145. package/dist/update-loop.js +236 -0
  146. package/dist/update-loop.js.map +1 -0
  147. package/dist/view-helpers.d.ts +44 -0
  148. package/dist/view-helpers.d.ts.map +1 -0
  149. package/dist/view-helpers.js +24 -0
  150. package/dist/view-helpers.js.map +1 -0
  151. package/package.json +56 -0
@@ -0,0 +1,390 @@
1
+ import { flushInstance, _forceState } from './update-loop';
2
+ import { _setDevToolsInstall } from './mount';
3
+ /**
4
+ * Enable devtools auto-installation for every mountApp call. Called by
5
+ * compiler-generated dev code — never imported in production builds.
6
+ * Once enabled, every mounted component attaches `globalThis.__lluiDebug`
7
+ * to the most recently mounted instance.
8
+ */
9
+ export function enableDevTools() {
10
+ _setDevToolsInstall(installDevTools);
11
+ }
12
+ // ── MCP WebSocket Relay ─────────────────────────────────────────────
13
+ // Forwards method calls from an out-of-process MCP server to the
14
+ // current __lluiDebug API. Dev-mode only — compiler injects startRelay(port).
15
+ let relayStarted = false;
16
+ /**
17
+ * Connect to a local MCP server's WebSocket and forward tool calls to
18
+ * `window.__lluiDebug`. Auto-reconnects on close. Safe to call multiple times
19
+ * (only the first call actually runs).
20
+ */
21
+ export function startRelay(port = 5200) {
22
+ if (relayStarted)
23
+ return;
24
+ relayStarted = true;
25
+ if (typeof WebSocket === 'undefined')
26
+ return;
27
+ function connect() {
28
+ let ws;
29
+ try {
30
+ ws = new WebSocket(`ws://127.0.0.1:${port}`);
31
+ }
32
+ catch {
33
+ // Unable to open — retry later
34
+ setTimeout(connect, 3000);
35
+ return;
36
+ }
37
+ ws.onmessage = (event) => {
38
+ let req;
39
+ try {
40
+ req = JSON.parse(String(event.data));
41
+ }
42
+ catch {
43
+ return;
44
+ }
45
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
46
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
47
+ const g = globalThis;
48
+ // Registry introspection methods work even when __lluiDebug isn't set
49
+ if (req.method === '__listComponents') {
50
+ const keys = g.__lluiComponents ? Object.keys(g.__lluiComponents) : [];
51
+ const active = g.__lluiDebug && g.__lluiComponents
52
+ ? (Object.entries(g.__lluiComponents).find(([, v]) => v === g.__lluiDebug)?.[0] ?? null)
53
+ : null;
54
+ ws.send(JSON.stringify({ id: req.id, result: { components: keys, active } }));
55
+ return;
56
+ }
57
+ if (req.method === '__selectComponent') {
58
+ const key = req.args?.[0] ?? '';
59
+ const entry = g.__lluiComponents?.[key];
60
+ if (!entry) {
61
+ ws.send(JSON.stringify({ id: req.id, error: `unknown component: ${key}` }));
62
+ return;
63
+ }
64
+ g.__lluiDebug = entry;
65
+ ws.send(JSON.stringify({ id: req.id, result: { active: key } }));
66
+ return;
67
+ }
68
+ const api = g.__lluiDebug;
69
+ if (!api) {
70
+ ws.send(JSON.stringify({ id: req.id, error: '__lluiDebug not available' }));
71
+ return;
72
+ }
73
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
74
+ const fn = api[req.method];
75
+ if (typeof fn !== 'function') {
76
+ ws.send(JSON.stringify({ id: req.id, error: `unknown method: ${req.method}` }));
77
+ return;
78
+ }
79
+ try {
80
+ const result = fn.apply(api, req.args ?? []);
81
+ ws.send(JSON.stringify({ id: req.id, result: result ?? null }));
82
+ }
83
+ catch (e) {
84
+ ws.send(JSON.stringify({ id: req.id, error: e instanceof Error ? e.message : String(e) }));
85
+ }
86
+ };
87
+ ws.onclose = () => {
88
+ // Retry until the MCP server is up
89
+ setTimeout(connect, 2000);
90
+ };
91
+ ws.onerror = () => {
92
+ // onclose will fire and handle retry
93
+ };
94
+ }
95
+ connect();
96
+ }
97
+ const MAX_HISTORY = 1000;
98
+ export function installDevTools(inst) {
99
+ const ci = inst;
100
+ const history = [];
101
+ let idx = 0;
102
+ let lastDirtyMask = 0;
103
+ const api = {
104
+ getState: () => ci.state,
105
+ send: (msg) => ci.send(msg),
106
+ flush: () => flushInstance(ci),
107
+ getMessageHistory: (opts) => {
108
+ let result = history;
109
+ if (opts?.since !== undefined) {
110
+ const since = opts.since;
111
+ result = result.filter((r) => r.index > since);
112
+ }
113
+ if (opts?.limit !== undefined && opts.limit > 0) {
114
+ result = result.slice(-opts.limit);
115
+ }
116
+ return result.slice();
117
+ },
118
+ evalUpdate(msg) {
119
+ const [state, effects] = ci.def.update(ci.state, msg);
120
+ return { state, effects };
121
+ },
122
+ exportTrace() {
123
+ return {
124
+ lluiTrace: 1,
125
+ component: ci.def.name,
126
+ generatedBy: 'devtools',
127
+ timestamp: new Date().toISOString(),
128
+ entries: history.map((h) => ({
129
+ msg: h.msg,
130
+ expectedState: h.stateAfter,
131
+ expectedEffects: h.effects,
132
+ })),
133
+ };
134
+ },
135
+ clearLog() {
136
+ history.length = 0;
137
+ idx = 0;
138
+ },
139
+ validateMessage(msg) {
140
+ const schema = ci.def.__msgSchema;
141
+ if (!schema)
142
+ return null;
143
+ if (msg == null || typeof msg !== 'object') {
144
+ return [
145
+ {
146
+ path: '',
147
+ expected: 'object',
148
+ received: typeof msg,
149
+ message: 'Message must be an object',
150
+ },
151
+ ];
152
+ }
153
+ const msgObj = msg;
154
+ const discriminant = schema.discriminant;
155
+ const typeValue = msgObj[discriminant];
156
+ if (typeValue === undefined) {
157
+ return [
158
+ {
159
+ path: `.${discriminant}`,
160
+ expected: `one of: ${Object.keys(schema.variants)
161
+ .map((v) => `'${v}'`)
162
+ .join(', ')}`,
163
+ received: 'undefined',
164
+ message: `Missing discriminant field '${discriminant}'`,
165
+ },
166
+ ];
167
+ }
168
+ if (typeof typeValue !== 'string') {
169
+ return [
170
+ {
171
+ path: `.${discriminant}`,
172
+ expected: 'string',
173
+ received: typeof typeValue,
174
+ message: `Discriminant field '${discriminant}' must be a string`,
175
+ },
176
+ ];
177
+ }
178
+ const variant = schema.variants[typeValue];
179
+ if (!variant) {
180
+ return [
181
+ {
182
+ path: `.${discriminant}`,
183
+ expected: `one of: ${Object.keys(schema.variants)
184
+ .map((v) => `'${v}'`)
185
+ .join(', ')}`,
186
+ received: `'${typeValue}'`,
187
+ message: `Unknown message type '${typeValue}'`,
188
+ },
189
+ ];
190
+ }
191
+ // Validate fields of the matched variant
192
+ const errors = [];
193
+ for (const [field, expectedType] of Object.entries(variant)) {
194
+ if (field === discriminant)
195
+ continue;
196
+ const value = msgObj[field];
197
+ if (value === undefined) {
198
+ errors.push({
199
+ path: `.${field}`,
200
+ expected: String(expectedType),
201
+ received: 'undefined',
202
+ message: `Missing required field '${field}'`,
203
+ });
204
+ }
205
+ else if (typeof expectedType === 'string' && expectedType !== 'unknown') {
206
+ if (typeof value !== expectedType) {
207
+ errors.push({
208
+ path: `.${field}`,
209
+ expected: expectedType,
210
+ received: typeof value,
211
+ message: `Field '${field}' has wrong type`,
212
+ });
213
+ }
214
+ }
215
+ }
216
+ return errors.length > 0 ? errors : null;
217
+ },
218
+ getBindings() {
219
+ const bindings = ci.allBindings ?? [];
220
+ return bindings.map((b, i) => ({
221
+ index: i,
222
+ mask: b.mask,
223
+ lastValue: b.lastValue,
224
+ kind: b.kind,
225
+ key: b.key,
226
+ dead: b.dead,
227
+ perItem: b.perItem,
228
+ }));
229
+ },
230
+ whyDidUpdate(bindingIndex) {
231
+ const bindings = ci.allBindings ?? [];
232
+ const binding = bindings[bindingIndex];
233
+ if (!binding) {
234
+ return {
235
+ bindingIndex,
236
+ bindingMask: 0,
237
+ lastDirtyMask: 0,
238
+ matched: false,
239
+ accessorResult: undefined,
240
+ lastValue: undefined,
241
+ changed: false,
242
+ };
243
+ }
244
+ const matched = (binding.mask & lastDirtyMask) !== 0;
245
+ let accessorResult;
246
+ try {
247
+ accessorResult = binding.accessor(ci.state);
248
+ }
249
+ catch {
250
+ accessorResult = '<error>';
251
+ }
252
+ const changed = !Object.is(accessorResult, binding.lastValue);
253
+ return {
254
+ bindingIndex,
255
+ bindingMask: binding.mask,
256
+ lastDirtyMask,
257
+ matched,
258
+ accessorResult,
259
+ lastValue: binding.lastValue,
260
+ changed,
261
+ };
262
+ },
263
+ searchState(query) {
264
+ const parts = query.split('.');
265
+ let current = ci.state;
266
+ for (const part of parts) {
267
+ if (current == null || typeof current !== 'object')
268
+ return undefined;
269
+ current = current[part];
270
+ }
271
+ return current;
272
+ },
273
+ getMessageSchema() {
274
+ return ci.def.__msgSchema ?? null;
275
+ },
276
+ getMaskLegend() {
277
+ return ci.def.__maskLegend ?? null;
278
+ },
279
+ decodeMask(mask) {
280
+ const legend = ci.def.__maskLegend;
281
+ if (!legend)
282
+ return [];
283
+ const fields = [];
284
+ for (const [field, bit] of Object.entries(legend)) {
285
+ if ((mask & bit) !== 0)
286
+ fields.push(field);
287
+ }
288
+ return fields;
289
+ },
290
+ getComponentInfo() {
291
+ const meta = ci.def.__componentMeta;
292
+ return {
293
+ name: ci.def.name,
294
+ file: meta?.file ?? null,
295
+ line: meta?.line ?? null,
296
+ };
297
+ },
298
+ getStateSchema() {
299
+ return ci.def.__stateSchema ?? null;
300
+ },
301
+ getEffectSchema() {
302
+ return ci.def.__effectSchema ?? null;
303
+ },
304
+ snapshotState() {
305
+ return JSON.parse(JSON.stringify(ci.state));
306
+ },
307
+ restoreState(snap) {
308
+ _forceState(ci, snap);
309
+ },
310
+ getBindingsFor(selector) {
311
+ if (typeof document === 'undefined')
312
+ return [];
313
+ const elements = Array.from(document.querySelectorAll(selector));
314
+ if (elements.length === 0)
315
+ return [];
316
+ const elementSet = new Set(elements);
317
+ const results = [];
318
+ for (let i = 0; i < ci.allBindings.length; i++) {
319
+ const b = ci.allBindings[i];
320
+ if (b.dead)
321
+ continue;
322
+ const node = b.node;
323
+ let relation = null;
324
+ if (node.nodeType === 1 && elementSet.has(node)) {
325
+ relation = 'self';
326
+ }
327
+ else if ((node.nodeType === 3 || node.nodeType === 8) &&
328
+ node.parentElement &&
329
+ elementSet.has(node.parentElement)) {
330
+ relation = node.nodeType === 3 ? 'text-child' : 'comment-child';
331
+ }
332
+ if (!relation)
333
+ continue;
334
+ results.push({
335
+ bindingIndex: i,
336
+ kind: b.kind,
337
+ key: b.key,
338
+ mask: b.mask,
339
+ lastValue: b.lastValue,
340
+ relation,
341
+ });
342
+ }
343
+ return results;
344
+ },
345
+ };
346
+ // Intercept update to record transitions
347
+ const originalUpdate = ci.def.update;
348
+ ci.def.update = ((state, msg) => {
349
+ const [newState, effects] = originalUpdate(state, msg);
350
+ const dirty = ci.def.__dirty
351
+ ? ci.def.__dirty(state, newState)
352
+ : -1;
353
+ lastDirtyMask = typeof dirty === 'number' ? dirty : -1;
354
+ const record = {
355
+ index: idx++,
356
+ timestamp: Date.now(),
357
+ msg,
358
+ stateBefore: state,
359
+ stateAfter: newState,
360
+ effects,
361
+ dirtyMask: lastDirtyMask,
362
+ };
363
+ if (history.length >= MAX_HISTORY)
364
+ history.shift();
365
+ history.push(record);
366
+ return [newState, effects];
367
+ });
368
+ // Register in the multi-component registry and point __lluiDebug at the
369
+ // newest mount (so single-component apps keep working unchanged). Tools
370
+ // can switch the active pointer via llui_select_component.
371
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
372
+ const g = globalThis;
373
+ if (!g.__lluiComponents)
374
+ g.__lluiComponents = {};
375
+ const componentKey = uniqueName(g.__lluiComponents, ci.def.name);
376
+ g.__lluiComponents[componentKey] = api;
377
+ g.__lluiDebug = api;
378
+ api.__componentKey = componentKey;
379
+ }
380
+ // Generate a unique key for a component name if it's already taken
381
+ // (e.g. same component mounted into multiple containers).
382
+ function uniqueName(registry, name) {
383
+ if (!(name in registry))
384
+ return name;
385
+ let i = 2;
386
+ while (`${name}#${i}` in registry)
387
+ i++;
388
+ return `${name}#${i}`;
389
+ }
390
+ //# sourceMappingURL=devtools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"devtools.js","sourceRoot":"","sources":["../src/devtools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { BindingKind } from './types';
2
+ export declare function elSplit(tag: string, staticFn: ((el: HTMLElement) => void) | null, events: Array<[string, EventListener]> | null, bindings: Array<[number, BindingKind, string, (state: never) => unknown]> | null, children: Node[] | null): HTMLElement;
3
+ //# sourceMappingURL=el-split.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"el-split.d.ts","sourceRoot":"","sources":["../src/el-split.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAK1C,wBAAgB,OAAO,CACrB,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,WAAW,KAAK,IAAI,CAAC,GAAG,IAAI,EAC5C,MAAM,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,GAAG,IAAI,EAC7C,QAAQ,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC,CAAC,GAAG,IAAI,EAChF,QAAQ,EAAE,IAAI,EAAE,GAAG,IAAI,GACtB,WAAW,CAqDb"}
@@ -0,0 +1,54 @@
1
+ import { getRenderContext } from './render-context';
2
+ import { createBinding, applyBinding } from './binding';
3
+ import { addItemUpdater } from './scope';
4
+ export function elSplit(tag, staticFn, events, bindings, children) {
5
+ const el = document.createElement(tag);
6
+ if (staticFn) {
7
+ staticFn(el);
8
+ }
9
+ if (events) {
10
+ for (const [eventName, handler] of events) {
11
+ el.addEventListener(eventName, handler);
12
+ }
13
+ }
14
+ const ctx = getRenderContext();
15
+ if (bindings) {
16
+ for (const [mask, kind, key, accessor] of bindings) {
17
+ const perItem = accessor.length === 0;
18
+ if (perItem) {
19
+ // Per-item: direct updater, bypassing Phase 2.
20
+ // Equality check avoids redundant DOM writes.
21
+ const get = accessor;
22
+ let lastV = get();
23
+ applyBinding({ kind, node: el, key }, lastV);
24
+ addItemUpdater(ctx.rootScope, () => {
25
+ const v = get();
26
+ if (v === lastV || (v !== v && lastV !== lastV))
27
+ return;
28
+ lastV = v;
29
+ applyBinding({ kind, node: el, key }, v);
30
+ });
31
+ }
32
+ else {
33
+ const binding = createBinding(ctx.rootScope, {
34
+ mask,
35
+ accessor,
36
+ kind,
37
+ node: el,
38
+ key,
39
+ perItem: false,
40
+ });
41
+ const initialValue = accessor(ctx.state);
42
+ binding.lastValue = initialValue;
43
+ applyBinding({ kind, node: el, key }, initialValue);
44
+ }
45
+ }
46
+ }
47
+ if (children) {
48
+ for (const child of children) {
49
+ el.appendChild(child);
50
+ }
51
+ }
52
+ return el;
53
+ }
54
+ //# sourceMappingURL=el-split.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"el-split.js","sourceRoot":"","sources":["../src/el-split.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AACnD,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAExC,MAAM,UAAU,OAAO,CACrB,GAAW,EACX,QAA4C,EAC5C,MAA6C,EAC7C,QAAgF,EAChF,QAAuB;IAEvB,MAAM,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAA;IAEtC,IAAI,QAAQ,EAAE,CAAC;QACb,QAAQ,CAAC,EAAE,CAAC,CAAA;IACd,CAAC;IAED,IAAI,MAAM,EAAE,CAAC;QACX,KAAK,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,MAAM,EAAE,CAAC;YAC1C,EAAE,CAAC,gBAAgB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;QACzC,CAAC;IACH,CAAC;IAED,MAAM,GAAG,GAAG,gBAAgB,EAAE,CAAA;IAE9B,IAAI,QAAQ,EAAE,CAAC;QACb,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,CAAC,IAAI,QAAQ,EAAE,CAAC;YACnD,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAA;YACrC,IAAI,OAAO,EAAE,CAAC;gBACZ,+CAA+C;gBAC/C,8CAA8C;gBAC9C,MAAM,GAAG,GAAG,QAAoC,CAAA;gBAChD,IAAI,KAAK,GAAY,GAAG,EAAE,CAAA;gBAC1B,YAAY,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,KAAK,CAAC,CAAA;gBAC5C,cAAc,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,EAAE;oBACjC,MAAM,CAAC,GAAG,GAAG,EAAE,CAAA;oBACf,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,KAAK,CAAC;wBAAE,OAAM;oBACvD,KAAK,GAAG,CAAC,CAAA;oBACT,YAAY,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAA;gBAC1C,CAAC,CAAC,CAAA;YACJ,CAAC;iBAAM,CAAC;gBACN,MAAM,OAAO,GAAG,aAAa,CAAC,GAAG,CAAC,SAAS,EAAE;oBAC3C,IAAI;oBACJ,QAAQ;oBACR,IAAI;oBACJ,IAAI,EAAE,EAAE;oBACR,GAAG;oBACH,OAAO,EAAE,KAAK;iBACf,CAAC,CAAA;gBACF,MAAM,YAAY,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAc,CAAC,CAAA;gBACjD,OAAO,CAAC,SAAS,GAAG,YAAY,CAAA;gBAChC,YAAY,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,YAAY,CAAC,CAAA;YACrD,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,QAAQ,EAAE,CAAC;QACb,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;YAC7B,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA;QACvB,CAAC;IACH,CAAC;IAED,OAAO,EAAE,CAAA;AACX,CAAC"}
@@ -0,0 +1,17 @@
1
+ import type { BindingKind } from './types';
2
+ /** Callback passed to patch functions — registers a reactive binding on a node. */
3
+ export type TemplateBind = (node: Node, mask: number, kind: BindingKind, key: string | undefined, accessor: (s: never) => unknown) => void;
4
+ /**
5
+ * Clone a cached HTML template and apply a patch function.
6
+ *
7
+ * The patch function receives the cloned root element and a `bind` helper
8
+ * that registers reactive bindings in the current render context.
9
+ *
10
+ * Per-item bindings (accessor.length === 0) are registered as direct
11
+ * updaters on the scope — called by each() when item changes, bypassing
12
+ * the Phase 2 binding scan entirely.
13
+ *
14
+ * Fast path for each() rows — 1 cloneNode instead of N createElement.
15
+ */
16
+ export declare function elTemplate(html: string, patch: (root: Element, bind: TemplateBind) => void): Element;
17
+ //# sourceMappingURL=el-template.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"el-template.d.ts","sourceRoot":"","sources":["../src/el-template.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAQ1C,mFAAmF;AACnF,MAAM,MAAM,YAAY,GAAG,CACzB,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,WAAW,EACjB,GAAG,EAAE,MAAM,GAAG,SAAS,EACvB,QAAQ,EAAE,CAAC,CAAC,EAAE,KAAK,KAAK,OAAO,KAC5B,IAAI,CAAA;AAET;;;;;;;;;;;GAWG;AACH,wBAAgB,UAAU,CACxB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,KAAK,IAAI,GACjD,OAAO,CA8CT"}
@@ -0,0 +1,64 @@
1
+ import { getRenderContext } from './render-context';
2
+ import { createBinding, applyBinding } from './binding';
3
+ import { addItemUpdater } from './scope';
4
+ // Cache: HTML string → template element (created once, cloned per use)
5
+ const templateCache = new Map();
6
+ /**
7
+ * Clone a cached HTML template and apply a patch function.
8
+ *
9
+ * The patch function receives the cloned root element and a `bind` helper
10
+ * that registers reactive bindings in the current render context.
11
+ *
12
+ * Per-item bindings (accessor.length === 0) are registered as direct
13
+ * updaters on the scope — called by each() when item changes, bypassing
14
+ * the Phase 2 binding scan entirely.
15
+ *
16
+ * Fast path for each() rows — 1 cloneNode instead of N createElement.
17
+ */
18
+ export function elTemplate(html, patch) {
19
+ let tmpl = templateCache.get(html);
20
+ if (!tmpl) {
21
+ tmpl = document.createElement('template');
22
+ tmpl.innerHTML = html;
23
+ templateCache.set(html, tmpl);
24
+ }
25
+ const root = tmpl.content.firstElementChild.cloneNode(true);
26
+ const ctx = getRenderContext();
27
+ const bind = (node, mask, kind, key, accessor) => {
28
+ const perItem = accessor.length === 0;
29
+ if (perItem) {
30
+ // Per-item: set initial value and register direct updater
31
+ const get = accessor;
32
+ const initialValue = get();
33
+ applyBinding({ kind, node, key }, initialValue);
34
+ // Updater called by each() when item changes — bypasses Phase 2.
35
+ // Equality check avoids redundant DOM writes when only some fields
36
+ // of the item changed (e.g. label changed but id didn't).
37
+ let lastV = initialValue;
38
+ addItemUpdater(ctx.rootScope, () => {
39
+ const v = get();
40
+ if (v === lastV || (v !== v && lastV !== lastV))
41
+ return;
42
+ lastV = v;
43
+ applyBinding({ kind, node, key }, v);
44
+ });
45
+ }
46
+ else {
47
+ // State-level: use the binding system for Phase 2
48
+ const binding = createBinding(ctx.rootScope, {
49
+ mask,
50
+ accessor,
51
+ kind,
52
+ node,
53
+ key,
54
+ perItem: false,
55
+ });
56
+ const initialValue = accessor(ctx.state);
57
+ binding.lastValue = initialValue;
58
+ applyBinding({ kind, node, key }, initialValue);
59
+ }
60
+ };
61
+ patch(root, bind);
62
+ return root;
63
+ }
64
+ //# sourceMappingURL=el-template.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"el-template.js","sourceRoot":"","sources":["../src/el-template.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AACnD,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAExC,uEAAuE;AACvE,MAAM,aAAa,GAAG,IAAI,GAAG,EAA+B,CAAA;AAW5D;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,UAAU,CACxB,IAAY,EACZ,KAAkD;IAElD,IAAI,IAAI,GAAG,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IAClC,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAC,CAAA;QACzC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAA;QACrB,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;IAC/B,CAAC;IAED,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAkB,CAAC,SAAS,CAAC,IAAI,CAAY,CAAA;IACvE,MAAM,GAAG,GAAG,gBAAgB,EAAE,CAAA;IAE9B,MAAM,IAAI,GAAiB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,EAAE;QAC7D,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAA;QACrC,IAAI,OAAO,EAAE,CAAC;YACZ,0DAA0D;YAC1D,MAAM,GAAG,GAAG,QAAoC,CAAA;YAChD,MAAM,YAAY,GAAG,GAAG,EAAE,CAAA;YAC1B,YAAY,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,YAAY,CAAC,CAAA;YAC/C,iEAAiE;YACjE,mEAAmE;YACnE,0DAA0D;YAC1D,IAAI,KAAK,GAAY,YAAY,CAAA;YACjC,cAAc,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,EAAE;gBACjC,MAAM,CAAC,GAAG,GAAG,EAAE,CAAA;gBACf,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,KAAK,CAAC;oBAAE,OAAM;gBACvD,KAAK,GAAG,CAAC,CAAA;gBACT,YAAY,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAA;YACtC,CAAC,CAAC,CAAA;QACJ,CAAC;aAAM,CAAC;YACN,kDAAkD;YAClD,MAAM,OAAO,GAAG,aAAa,CAAC,GAAG,CAAC,SAAS,EAAE;gBAC3C,IAAI;gBACJ,QAAQ;gBACR,IAAI;gBACJ,IAAI;gBACJ,GAAG;gBACH,OAAO,EAAE,KAAK;aACf,CAAC,CAAA;YACF,MAAM,YAAY,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAc,CAAC,CAAA;YACjD,OAAO,CAAC,SAAS,GAAG,YAAY,CAAA;YAChC,YAAY,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,YAAY,CAAC,CAAA;QACjD,CAAC;IACH,CAAC,CAAA;IAED,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;IACjB,OAAO,IAAI,CAAA;AACb,CAAC"}
@@ -0,0 +1,80 @@
1
+ type ElementProps = Record<string, unknown>;
2
+ type Child = Node | string | Node[];
3
+ type Children = Child[];
4
+ type ElFn<K extends keyof HTMLElementTagNameMap> = {
5
+ (): HTMLElementTagNameMap[K];
6
+ (props: ElementProps, children?: Children): HTMLElementTagNameMap[K];
7
+ (children: Children): HTMLElementTagNameMap[K];
8
+ };
9
+ type VoidElFn<K extends keyof HTMLElementTagNameMap> = {
10
+ (): HTMLElementTagNameMap[K];
11
+ (props: ElementProps): HTMLElementTagNameMap[K];
12
+ };
13
+ export declare const a: ElFn<"a">;
14
+ export declare const abbr: ElFn<"abbr">;
15
+ export declare const article: ElFn<"article">;
16
+ export declare const aside: ElFn<"aside">;
17
+ export declare const b: ElFn<"b">;
18
+ export declare const blockquote: ElFn<"blockquote">;
19
+ export declare const br: VoidElFn<"br">;
20
+ export declare const button: ElFn<"button">;
21
+ export declare const canvas: ElFn<"canvas">;
22
+ export declare const code: ElFn<"code">;
23
+ export declare const dd: ElFn<"dd">;
24
+ export declare const details: ElFn<"details">;
25
+ export declare const dialog: ElFn<"dialog">;
26
+ export declare const div: ElFn<"div">;
27
+ export declare const dl: ElFn<"dl">;
28
+ export declare const dt: ElFn<"dt">;
29
+ export declare const em: ElFn<"em">;
30
+ export declare const fieldset: ElFn<"fieldset">;
31
+ export declare const figcaption: ElFn<"figcaption">;
32
+ export declare const figure: ElFn<"figure">;
33
+ export declare const footer: ElFn<"footer">;
34
+ export declare const form: ElFn<"form">;
35
+ export declare const h1: ElFn<"h1">;
36
+ export declare const h2: ElFn<"h2">;
37
+ export declare const h3: ElFn<"h3">;
38
+ export declare const h4: ElFn<"h4">;
39
+ export declare const h5: ElFn<"h5">;
40
+ export declare const h6: ElFn<"h6">;
41
+ export declare const header: ElFn<"header">;
42
+ export declare const hr: VoidElFn<"hr">;
43
+ export declare const i: ElFn<"i">;
44
+ export declare const iframe: ElFn<"iframe">;
45
+ export declare const img: VoidElFn<"img">;
46
+ export declare const input: VoidElFn<"input">;
47
+ export declare const label: ElFn<"label">;
48
+ export declare const legend: ElFn<"legend">;
49
+ export declare const li: ElFn<"li">;
50
+ export declare const main: ElFn<"main">;
51
+ export declare const mark: ElFn<"mark">;
52
+ export declare const nav: ElFn<"nav">;
53
+ export declare const ol: ElFn<"ol">;
54
+ export declare const optgroup: ElFn<"optgroup">;
55
+ export declare const option: ElFn<"option">;
56
+ export declare const output: ElFn<"output">;
57
+ export declare const p: ElFn<"p">;
58
+ export declare const pre: ElFn<"pre">;
59
+ export declare const progress: ElFn<"progress">;
60
+ export declare const section: ElFn<"section">;
61
+ export declare const select: ElFn<"select">;
62
+ export declare const small: ElFn<"small">;
63
+ export declare const span: ElFn<"span">;
64
+ export declare const strong: ElFn<"strong">;
65
+ export declare const sub: ElFn<"sub">;
66
+ export declare const summary: ElFn<"summary">;
67
+ export declare const sup: ElFn<"sup">;
68
+ export declare const table: ElFn<"table">;
69
+ export declare const tbody: ElFn<"tbody">;
70
+ export declare const td: ElFn<"td">;
71
+ export declare const textarea: ElFn<"textarea">;
72
+ export declare const tfoot: ElFn<"tfoot">;
73
+ export declare const th: ElFn<"th">;
74
+ export declare const thead: ElFn<"thead">;
75
+ export declare const time: ElFn<"time">;
76
+ export declare const tr: ElFn<"tr">;
77
+ export declare const ul: ElFn<"ul">;
78
+ export declare const video: ElFn<"video">;
79
+ export {};
80
+ //# sourceMappingURL=elements.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"elements.d.ts","sourceRoot":"","sources":["../src/elements.ts"],"names":[],"mappings":"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"}