@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,234 @@
1
+ import { getRenderContext } from './render-context';
2
+ import { createBinding, applyBinding } from './binding';
3
+ import { FULL_MASK } from './update-loop';
4
+ // DOM properties set via elem[key] = value rather than setAttribute
5
+ const PROP_KEYS = new Set([
6
+ 'value',
7
+ 'checked',
8
+ 'selected',
9
+ 'disabled',
10
+ 'readOnly',
11
+ 'multiple',
12
+ 'indeterminate',
13
+ 'defaultValue',
14
+ 'defaultChecked',
15
+ 'innerHTML',
16
+ 'textContent',
17
+ ]);
18
+ function classifyKind(key) {
19
+ if (key === 'class' || key === 'className')
20
+ return 'class';
21
+ if (key.startsWith('style.'))
22
+ return 'style';
23
+ if (PROP_KEYS.has(key))
24
+ return 'prop';
25
+ return 'attr';
26
+ }
27
+ function resolveKey(key, kind) {
28
+ if (kind === 'class')
29
+ return undefined;
30
+ if (kind === 'style')
31
+ return key.slice(6); // strip 'style.'
32
+ if (kind === 'prop')
33
+ return key;
34
+ // attr
35
+ if (key === 'className')
36
+ return 'class';
37
+ return key;
38
+ }
39
+ function createElement(tag, propsOrChildren, maybeChildren) {
40
+ const el = document.createElement(tag);
41
+ const ctx = getRenderContext();
42
+ // Distinguish (props, children) from (children,) — if first arg is an Array, it's children
43
+ const props = Array.isArray(propsOrChildren)
44
+ ? undefined
45
+ : propsOrChildren;
46
+ const children = Array.isArray(propsOrChildren)
47
+ ? propsOrChildren
48
+ : maybeChildren;
49
+ if (props) {
50
+ for (const [rawKey, value] of Object.entries(props)) {
51
+ if (rawKey === 'key')
52
+ continue;
53
+ // Event handler
54
+ if (/^on[A-Z]/.test(rawKey)) {
55
+ const eventName = rawKey.slice(2).toLowerCase();
56
+ el.addEventListener(eventName, value);
57
+ continue;
58
+ }
59
+ // Reactive binding — value is a function
60
+ if (typeof value === 'function') {
61
+ const kind = classifyKind(rawKey);
62
+ const key = resolveKey(rawKey, kind);
63
+ const accessor = value;
64
+ const perItem = value.length === 0;
65
+ const binding = createBinding(ctx.rootScope, {
66
+ mask: FULL_MASK,
67
+ accessor,
68
+ kind,
69
+ node: el,
70
+ key,
71
+ perItem,
72
+ });
73
+ const initialValue = perItem ? value() : accessor(ctx.state);
74
+ binding.lastValue = initialValue;
75
+ applyBinding({ kind, node: el, key }, initialValue);
76
+ continue;
77
+ }
78
+ // Static prop
79
+ const kind = classifyKind(rawKey);
80
+ const key = resolveKey(rawKey, kind);
81
+ applyBinding({ kind, node: el, key }, value);
82
+ }
83
+ }
84
+ if (children) {
85
+ for (const child of children) {
86
+ if (typeof child === 'string') {
87
+ el.appendChild(document.createTextNode(child));
88
+ }
89
+ else if (Array.isArray(child)) {
90
+ for (const node of child)
91
+ el.appendChild(node);
92
+ }
93
+ else {
94
+ el.appendChild(child);
95
+ }
96
+ }
97
+ }
98
+ return el;
99
+ }
100
+ /* v8 ignore start — mechanical tag wrappers */
101
+ // prettier-ignore
102
+ export const a = ((p, c) => createElement('a', p, c));
103
+ // prettier-ignore
104
+ export const abbr = ((p, c) => createElement('abbr', p, c));
105
+ // prettier-ignore
106
+ export const article = ((p, c) => createElement('article', p, c));
107
+ // prettier-ignore
108
+ export const aside = ((p, c) => createElement('aside', p, c));
109
+ // prettier-ignore
110
+ export const b = ((p, c) => createElement('b', p, c));
111
+ // prettier-ignore
112
+ export const blockquote = ((p, c) => createElement('blockquote', p, c));
113
+ // prettier-ignore
114
+ export const br = ((p) => createElement('br', p));
115
+ // prettier-ignore
116
+ export const button = ((p, c) => createElement('button', p, c));
117
+ // prettier-ignore
118
+ export const canvas = ((p, c) => createElement('canvas', p, c));
119
+ // prettier-ignore
120
+ export const code = ((p, c) => createElement('code', p, c));
121
+ // prettier-ignore
122
+ export const dd = ((p, c) => createElement('dd', p, c));
123
+ // prettier-ignore
124
+ export const details = ((p, c) => createElement('details', p, c));
125
+ // prettier-ignore
126
+ export const dialog = ((p, c) => createElement('dialog', p, c));
127
+ // prettier-ignore
128
+ export const div = ((p, c) => createElement('div', p, c));
129
+ // prettier-ignore
130
+ export const dl = ((p, c) => createElement('dl', p, c));
131
+ // prettier-ignore
132
+ export const dt = ((p, c) => createElement('dt', p, c));
133
+ // prettier-ignore
134
+ export const em = ((p, c) => createElement('em', p, c));
135
+ // prettier-ignore
136
+ export const fieldset = ((p, c) => createElement('fieldset', p, c));
137
+ // prettier-ignore
138
+ export const figcaption = ((p, c) => createElement('figcaption', p, c));
139
+ // prettier-ignore
140
+ export const figure = ((p, c) => createElement('figure', p, c));
141
+ // prettier-ignore
142
+ export const footer = ((p, c) => createElement('footer', p, c));
143
+ // prettier-ignore
144
+ export const form = ((p, c) => createElement('form', p, c));
145
+ // prettier-ignore
146
+ export const h1 = ((p, c) => createElement('h1', p, c));
147
+ // prettier-ignore
148
+ export const h2 = ((p, c) => createElement('h2', p, c));
149
+ // prettier-ignore
150
+ export const h3 = ((p, c) => createElement('h3', p, c));
151
+ // prettier-ignore
152
+ export const h4 = ((p, c) => createElement('h4', p, c));
153
+ // prettier-ignore
154
+ export const h5 = ((p, c) => createElement('h5', p, c));
155
+ // prettier-ignore
156
+ export const h6 = ((p, c) => createElement('h6', p, c));
157
+ // prettier-ignore
158
+ export const header = ((p, c) => createElement('header', p, c));
159
+ // prettier-ignore
160
+ export const hr = ((p) => createElement('hr', p));
161
+ // prettier-ignore
162
+ export const i = ((p, c) => createElement('i', p, c));
163
+ // prettier-ignore
164
+ export const iframe = ((p, c) => createElement('iframe', p, c));
165
+ // prettier-ignore
166
+ export const img = ((p) => createElement('img', p));
167
+ // prettier-ignore
168
+ export const input = ((p) => createElement('input', p));
169
+ // prettier-ignore
170
+ export const label = ((p, c) => createElement('label', p, c));
171
+ // prettier-ignore
172
+ export const legend = ((p, c) => createElement('legend', p, c));
173
+ // prettier-ignore
174
+ export const li = ((p, c) => createElement('li', p, c));
175
+ // prettier-ignore
176
+ export const main = ((p, c) => createElement('main', p, c));
177
+ // prettier-ignore
178
+ export const mark = ((p, c) => createElement('mark', p, c));
179
+ // prettier-ignore
180
+ export const nav = ((p, c) => createElement('nav', p, c));
181
+ // prettier-ignore
182
+ export const ol = ((p, c) => createElement('ol', p, c));
183
+ // prettier-ignore
184
+ export const optgroup = ((p, c) => createElement('optgroup', p, c));
185
+ // prettier-ignore
186
+ export const option = ((p, c) => createElement('option', p, c));
187
+ // prettier-ignore
188
+ export const output = ((p, c) => createElement('output', p, c));
189
+ // prettier-ignore
190
+ export const p = ((p, c) => createElement('p', p, c));
191
+ // prettier-ignore
192
+ export const pre = ((p, c) => createElement('pre', p, c));
193
+ // prettier-ignore
194
+ export const progress = ((p, c) => createElement('progress', p, c));
195
+ // prettier-ignore
196
+ export const section = ((p, c) => createElement('section', p, c));
197
+ // prettier-ignore
198
+ export const select = ((p, c) => createElement('select', p, c));
199
+ // prettier-ignore
200
+ export const small = ((p, c) => createElement('small', p, c));
201
+ // prettier-ignore
202
+ export const span = ((p, c) => createElement('span', p, c));
203
+ // prettier-ignore
204
+ export const strong = ((p, c) => createElement('strong', p, c));
205
+ // prettier-ignore
206
+ export const sub = ((p, c) => createElement('sub', p, c));
207
+ // prettier-ignore
208
+ export const summary = ((p, c) => createElement('summary', p, c));
209
+ // prettier-ignore
210
+ export const sup = ((p, c) => createElement('sup', p, c));
211
+ // prettier-ignore
212
+ export const table = ((p, c) => createElement('table', p, c));
213
+ // prettier-ignore
214
+ export const tbody = ((p, c) => createElement('tbody', p, c));
215
+ // prettier-ignore
216
+ export const td = ((p, c) => createElement('td', p, c));
217
+ // prettier-ignore
218
+ export const textarea = ((p, c) => createElement('textarea', p, c));
219
+ // prettier-ignore
220
+ export const tfoot = ((p, c) => createElement('tfoot', p, c));
221
+ // prettier-ignore
222
+ export const th = ((p, c) => createElement('th', p, c));
223
+ // prettier-ignore
224
+ export const thead = ((p, c) => createElement('thead', p, c));
225
+ // prettier-ignore
226
+ export const time = ((p, c) => createElement('time', p, c));
227
+ // prettier-ignore
228
+ export const tr = ((p, c) => createElement('tr', p, c));
229
+ // prettier-ignore
230
+ export const ul = ((p, c) => createElement('ul', p, c));
231
+ // prettier-ignore
232
+ export const video = ((p, c) => createElement('video', p, c));
233
+ /* v8 ignore stop */
234
+ //# sourceMappingURL=elements.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"elements.js","sourceRoot":"","sources":["../src/elements.ts"],"names":[],"mappings":"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"}
package/dist/form.d.ts ADDED
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Type utility for form field messages.
3
+ * Generates a discriminated union where each field gets its own typed variant,
4
+ * avoiding the need to define one message type per field.
5
+ *
6
+ * Usage:
7
+ * type Fields = { name: string; email: string; age: number }
8
+ * type Msg = FieldMsg<Fields> | { type: 'submit' }
9
+ * // Produces: { type: 'setField'; field: 'name'; value: string }
10
+ * // | { type: 'setField'; field: 'email'; value: string }
11
+ * // | { type: 'setField'; field: 'age'; value: number }
12
+ * // | { type: 'submit' }
13
+ */
14
+ export type FieldMsg<Fields extends Record<string, unknown>> = {
15
+ [K in keyof Fields]: {
16
+ type: 'setField';
17
+ field: K;
18
+ value: Fields[K];
19
+ };
20
+ }[keyof Fields];
21
+ /**
22
+ * Apply a field update to state immutably.
23
+ * Returns a new state object with the specified field updated.
24
+ *
25
+ * Usage in update():
26
+ * case 'setField':
27
+ * return [applyField(state, msg.field, msg.value), []]
28
+ */
29
+ export declare function applyField<S extends Record<string, unknown>, K extends keyof S>(state: S, field: K, value: S[K]): S;
30
+ //# sourceMappingURL=form.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form.d.ts","sourceRoot":"","sources":["../src/form.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,QAAQ,CAAC,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI;KAC5D,CAAC,IAAI,MAAM,MAAM,GAAG;QAAE,IAAI,EAAE,UAAU,CAAC;QAAC,KAAK,EAAE,CAAC,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAA;KAAE;CACtE,CAAC,MAAM,MAAM,CAAC,CAAA;AAEf;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,EAC7E,KAAK,EAAE,CAAC,EACR,KAAK,EAAE,CAAC,EACR,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,GACV,CAAC,CAEH"}
package/dist/form.js ADDED
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Apply a field update to state immutably.
3
+ * Returns a new state object with the specified field updated.
4
+ *
5
+ * Usage in update():
6
+ * case 'setField':
7
+ * return [applyField(state, msg.field, msg.value), []]
8
+ */
9
+ export function applyField(state, field, value) {
10
+ return { ...state, [field]: value };
11
+ }
12
+ //# sourceMappingURL=form.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form.js","sourceRoot":"","sources":["../src/form.ts"],"names":[],"mappings":"AAiBA;;;;;;;GAOG;AACH,MAAM,UAAU,UAAU,CACxB,KAAQ,EACR,KAAQ,EACR,KAAW;IAEX,OAAO,EAAE,GAAG,KAAK,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAA;AACrC,CAAC"}
package/dist/hmr.d.ts ADDED
@@ -0,0 +1,20 @@
1
+ import type { ComponentDef, AppHandle } from './types';
2
+ /**
3
+ * Enable HMR state preservation. Called by compiler-generated dev code.
4
+ * Importing this module registers it with mountApp for hot-swapping.
5
+ */
6
+ export declare function enableHmr(): void;
7
+ export declare function registerForHmr(name: string, inst: object, container: HTMLElement): void;
8
+ export declare function unregisterForHmr(name: string, inst: object): void;
9
+ /**
10
+ * Hot-swap a component definition on all live instances.
11
+ *
12
+ * Preserves the current state. Replaces update, view, onEffect, and __dirty.
13
+ * Disposes the old scope tree (removing old DOM and bindings),
14
+ * re-runs view(currentState, send) to rebuild fresh DOM.
15
+ *
16
+ * Returns an AppHandle for the first instance (for mountApp compatibility),
17
+ * or null if no instances are registered (first mount).
18
+ */
19
+ export declare function replaceComponent<S, M, E>(name: string, newDef: ComponentDef<S, M, E>): AppHandle | null;
20
+ //# sourceMappingURL=hmr.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hmr.d.ts","sourceRoot":"","sources":["../src/hmr.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAUtD;;;GAGG;AACH,wBAAgB,SAAS,IAAI,IAAI,CAEhC;AAWD,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,GAAG,IAAI,CAIvF;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAMjE;AAED;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EACtC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAC5B,SAAS,GAAG,IAAI,CAiElB"}
package/dist/hmr.js ADDED
@@ -0,0 +1,98 @@
1
+ import { flushInstance } from './update-loop';
2
+ import { createScope, disposeScope } from './scope';
3
+ import { setRenderContext, clearRenderContext } from './render-context';
4
+ import { setFlatBindings } from './binding';
5
+ import { unregisterInstance } from './runtime';
6
+ import { _setHmrModule } from './mount';
7
+ import { createView } from './view-helpers';
8
+ /**
9
+ * Enable HMR state preservation. Called by compiler-generated dev code.
10
+ * Importing this module registers it with mountApp for hot-swapping.
11
+ */
12
+ export function enableHmr() {
13
+ _setHmrModule({ enableHmr, registerForHmr, unregisterForHmr, replaceComponent });
14
+ }
15
+ const hmrRegistry = new Map();
16
+ export function registerForHmr(name, inst, container) {
17
+ const entries = hmrRegistry.get(name) ?? [];
18
+ entries.push({ inst: inst, container });
19
+ hmrRegistry.set(name, entries);
20
+ }
21
+ export function unregisterForHmr(name, inst) {
22
+ const entries = hmrRegistry.get(name);
23
+ if (!entries)
24
+ return;
25
+ const idx = entries.findIndex((e) => e.inst === inst);
26
+ if (idx !== -1)
27
+ entries.splice(idx, 1);
28
+ if (entries.length === 0)
29
+ hmrRegistry.delete(name);
30
+ }
31
+ /**
32
+ * Hot-swap a component definition on all live instances.
33
+ *
34
+ * Preserves the current state. Replaces update, view, onEffect, and __dirty.
35
+ * Disposes the old scope tree (removing old DOM and bindings),
36
+ * re-runs view(currentState, send) to rebuild fresh DOM.
37
+ *
38
+ * Returns an AppHandle for the first instance (for mountApp compatibility),
39
+ * or null if no instances are registered (first mount).
40
+ */
41
+ export function replaceComponent(name, newDef) {
42
+ const entries = hmrRegistry.get(name);
43
+ if (!entries || entries.length === 0)
44
+ return null;
45
+ let handle = null;
46
+ for (const { inst, container } of entries) {
47
+ const typedInst = inst;
48
+ // Replace functions on the live definition
49
+ typedInst.def = {
50
+ ...typedInst.def,
51
+ update: newDef.update,
52
+ view: newDef.view,
53
+ onEffect: newDef.onEffect,
54
+ __dirty: newDef.__dirty,
55
+ };
56
+ // Dispose old scope tree — removes all old DOM nodes and bindings
57
+ disposeScope(typedInst.rootScope);
58
+ container.textContent = '';
59
+ // Create fresh scope tree
60
+ typedInst.rootScope = createScope(null);
61
+ typedInst.allBindings = [];
62
+ typedInst.structuralBlocks = [];
63
+ // Re-run view with current state
64
+ setFlatBindings(typedInst.allBindings);
65
+ setRenderContext({
66
+ rootScope: typedInst.rootScope,
67
+ state: typedInst.state,
68
+ allBindings: typedInst.allBindings,
69
+ structuralBlocks: typedInst.structuralBlocks,
70
+ container,
71
+ send: typedInst.send,
72
+ });
73
+ const nodes = typedInst.def.view(createView(typedInst.send));
74
+ clearRenderContext();
75
+ setFlatBindings(null);
76
+ for (const node of nodes) {
77
+ container.appendChild(node);
78
+ }
79
+ // Return AppHandle for the first instance
80
+ if (!handle) {
81
+ handle = {
82
+ dispose() {
83
+ unregisterForHmr(name, inst);
84
+ inst.abortController.abort();
85
+ unregisterInstance(inst);
86
+ disposeScope(typedInst.rootScope);
87
+ container.textContent = '';
88
+ },
89
+ flush() {
90
+ flushInstance(inst);
91
+ },
92
+ };
93
+ }
94
+ }
95
+ console.log(`[LLui HMR] ${name} updated — state preserved`);
96
+ return handle;
97
+ }
98
+ //# sourceMappingURL=hmr.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hmr.js","sourceRoot":"","sources":["../src/hmr.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Hydration mode: patches document.createElement/createTextNode/createComment
3
+ * to return existing server-rendered DOM nodes instead of creating new ones.
4
+ *
5
+ * During hydration, view() runs normally but DOM creation calls return
6
+ * pre-existing nodes from the server HTML. Bindings and event listeners
7
+ * are attached to the reused nodes.
8
+ */
9
+ export declare function isHydrating(): boolean;
10
+ export declare function startHydration(container: HTMLElement): void;
11
+ export declare function endHydration(): void;
12
+ /**
13
+ * Claim the next child node from the server HTML.
14
+ * Falls back to creating a new node if none found (mismatch).
15
+ */
16
+ export declare function claimElement(tag: string): HTMLElement;
17
+ export declare function claimText(content: string): Text;
18
+ export declare function claimComment(content: string): Comment;
19
+ /**
20
+ * Push cursor into an element's children.
21
+ * Called when view() starts appending children to an element.
22
+ */
23
+ export declare function pushCursor(parent: Node): void;
24
+ /**
25
+ * Pop cursor back to parent.
26
+ * Called when view() finishes appending children to an element.
27
+ */
28
+ export declare function popCursor(): void;
29
+ //# sourceMappingURL=hydrate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hydrate.d.ts","sourceRoot":"","sources":["../src/hydrate.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAUH,wBAAgB,WAAW,IAAI,OAAO,CAErC;AAED,wBAAgB,cAAc,CAAC,SAAS,EAAE,WAAW,GAAG,IAAI,CAI3D;AAED,wBAAgB,YAAY,IAAI,IAAI,CAGnC;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CAqBrD;AAED,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAoB/C;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAerD;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,IAAI,GAAG,IAAI,CAI7C;AAED;;;GAGG;AACH,wBAAgB,SAAS,IAAI,IAAI,CAIhC"}
@@ -0,0 +1,96 @@
1
+ /**
2
+ * Hydration mode: patches document.createElement/createTextNode/createComment
3
+ * to return existing server-rendered DOM nodes instead of creating new ones.
4
+ *
5
+ * During hydration, view() runs normally but DOM creation calls return
6
+ * pre-existing nodes from the server HTML. Bindings and event listeners
7
+ * are attached to the reused nodes.
8
+ */
9
+ const cursorStack = [];
10
+ let hydrating = false;
11
+ export function isHydrating() {
12
+ return hydrating;
13
+ }
14
+ export function startHydration(container) {
15
+ hydrating = true;
16
+ cursorStack.length = 0;
17
+ cursorStack.push({ parent: container, index: 0 });
18
+ }
19
+ export function endHydration() {
20
+ hydrating = false;
21
+ cursorStack.length = 0;
22
+ }
23
+ /**
24
+ * Claim the next child node from the server HTML.
25
+ * Falls back to creating a new node if none found (mismatch).
26
+ */
27
+ export function claimElement(tag) {
28
+ if (!hydrating)
29
+ return document.createElement(tag);
30
+ const cursor = cursorStack[cursorStack.length - 1];
31
+ const child = cursor.parent.childNodes[cursor.index];
32
+ if (child && child.nodeType === 1 && child.tagName.toLowerCase() === tag) {
33
+ cursor.index++;
34
+ return child;
35
+ }
36
+ // Mismatch — create a new element (hydration mismatch warning)
37
+ if (typeof console !== 'undefined') {
38
+ console.warn(`[LLui hydration] expected <${tag}> at index ${cursor.index}, got ${child ? `<${child.tagName?.toLowerCase?.() ?? child.nodeType}>` : 'nothing'}`);
39
+ }
40
+ const el = document.createElement(tag);
41
+ cursor.parent.insertBefore(el, child ?? null);
42
+ cursor.index++;
43
+ return el;
44
+ }
45
+ export function claimText(content) {
46
+ if (!hydrating)
47
+ return document.createTextNode(content);
48
+ const cursor = cursorStack[cursorStack.length - 1];
49
+ const child = cursor.parent.childNodes[cursor.index];
50
+ if (child && child.nodeType === 3) {
51
+ cursor.index++;
52
+ // Update content in case it differs (reactive initial value)
53
+ if (child.textContent !== content) {
54
+ child.textContent = content;
55
+ }
56
+ return child;
57
+ }
58
+ // No text node — create one
59
+ const text = document.createTextNode(content);
60
+ cursor.parent.insertBefore(text, child ?? null);
61
+ cursor.index++;
62
+ return text;
63
+ }
64
+ export function claimComment(content) {
65
+ if (!hydrating)
66
+ return document.createComment(content);
67
+ const cursor = cursorStack[cursorStack.length - 1];
68
+ const child = cursor.parent.childNodes[cursor.index];
69
+ if (child && child.nodeType === 8) {
70
+ cursor.index++;
71
+ return child;
72
+ }
73
+ const comment = document.createComment(content);
74
+ cursor.parent.insertBefore(comment, child ?? null);
75
+ cursor.index++;
76
+ return comment;
77
+ }
78
+ /**
79
+ * Push cursor into an element's children.
80
+ * Called when view() starts appending children to an element.
81
+ */
82
+ export function pushCursor(parent) {
83
+ if (hydrating) {
84
+ cursorStack.push({ parent, index: 0 });
85
+ }
86
+ }
87
+ /**
88
+ * Pop cursor back to parent.
89
+ * Called when view() finishes appending children to an element.
90
+ */
91
+ export function popCursor() {
92
+ if (hydrating) {
93
+ cursorStack.pop();
94
+ }
95
+ }
96
+ //# sourceMappingURL=hydrate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hydrate.js","sourceRoot":"","sources":["../src/hydrate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ export type { ComponentDef, Send, Props, AppHandle, Scope, Binding, BindingKind, TransitionOptions, BranchOptions, ShowOptions, EachOptions, ItemAccessor, PortalOptions, ForeignOptions, ChildOptions, } from './types';
2
+ export { component } from './component';
3
+ export { createView, type View } from './view-helpers';
4
+ export { mountApp, hydrateApp, type MountOptions } from './mount';
5
+ export type { LluiDebugAPI } from './devtools';
6
+ export { flush } from './runtime';
7
+ export { addressOf } from './addressed';
8
+ export { renderToString } from './ssr';
9
+ export { mergeHandlers } from './merge-handlers';
10
+ export { createContext, provide, useContext, type Context } from './primitives/context';
11
+ export { sliceHandler } from './slice-handler';
12
+ export { text } from './primitives/text';
13
+ export { branch } from './primitives/branch';
14
+ export { each } from './primitives/each';
15
+ export { show } from './primitives/show';
16
+ export { slice } from './primitives/slice';
17
+ export { portal } from './primitives/portal';
18
+ export { foreign } from './primitives/foreign';
19
+ export { child } from './primitives/child';
20
+ export { memo } from './primitives/memo';
21
+ export { selector } from './primitives/selector';
22
+ export { onMount } from './primitives/on-mount';
23
+ export { errorBoundary } from './primitives/error-boundary';
24
+ export { a, abbr, article, aside, b, blockquote, br, button, canvas, code, dd, details, dialog, div, dl, dt, em, fieldset, figcaption, figure, footer, form, h1, h2, h3, h4, h5, h6, header, hr, i, iframe, img, input, label, legend, li, main, mark, nav, ol, optgroup, option, output, p, pre, progress, section, select, small, span, strong, sub, summary, sup, table, tbody, td, textarea, tfoot, th, thead, time, tr, ul, video, } from './elements';
25
+ export { applyField, type FieldMsg } from './form';
26
+ export { elSplit } from './el-split';
27
+ export { elTemplate } from './el-template';
28
+ //# 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,34 @@
1
+ // ── Types ─────────────────────────────────────────────────────────
2
+ // ── Component ─────────────────────────────────────────────────────
3
+ export { component } from './component';
4
+ export { createView } from './view-helpers';
5
+ // ── Mount ─────────────────────────────────────────────────────────
6
+ export { mountApp, hydrateApp } from './mount';
7
+ // ── Runtime ───────────────────────────────────────────────────────
8
+ export { flush } from './runtime';
9
+ export { addressOf } from './addressed';
10
+ export { renderToString } from './ssr';
11
+ export { mergeHandlers } from './merge-handlers';
12
+ export { createContext, provide, useContext } from './primitives/context';
13
+ export { sliceHandler } from './slice-handler';
14
+ // ── View Primitives ───────────────────────────────────────────────
15
+ export { text } from './primitives/text';
16
+ export { branch } from './primitives/branch';
17
+ export { each } from './primitives/each';
18
+ export { show } from './primitives/show';
19
+ export { slice } from './primitives/slice';
20
+ export { portal } from './primitives/portal';
21
+ export { foreign } from './primitives/foreign';
22
+ export { child } from './primitives/child';
23
+ export { memo } from './primitives/memo';
24
+ export { selector } from './primitives/selector';
25
+ export { onMount } from './primitives/on-mount';
26
+ export { errorBoundary } from './primitives/error-boundary';
27
+ // ── Element Helpers ───────────────────────────────────────────────
28
+ export { a, abbr, article, aside, b, blockquote, br, button, canvas, code, dd, details, dialog, div, dl, dt, em, fieldset, figcaption, figure, footer, form, h1, h2, h3, h4, h5, h6, header, hr, i, iframe, img, input, label, legend, li, main, mark, nav, ol, optgroup, option, output, p, pre, progress, section, select, small, span, strong, sub, summary, sup, table, tbody, td, textarea, tfoot, th, thead, time, tr, ul, video, } from './elements';
29
+ // ── Form Utilities ────────────────────────────────────────────────
30
+ export { applyField } from './form';
31
+ // ── Compiler Target ───────────────────────────────────────────────
32
+ export { elSplit } from './el-split';
33
+ export { elTemplate } from './el-template';
34
+ //# sourceMappingURL=index.js.map