kiru 1.0.1 → 1.1.0

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 (145) hide show
  1. package/dist/appHandle.js +2 -2
  2. package/dist/appHandle.js.map +1 -1
  3. package/dist/components/lazy.d.ts.map +1 -1
  4. package/dist/components/lazy.js +2 -2
  5. package/dist/components/lazy.js.map +1 -1
  6. package/dist/components/transition.js +1 -5
  7. package/dist/components/transition.js.map +1 -1
  8. package/dist/devtools.d.ts.map +1 -1
  9. package/dist/devtools.js +6 -2
  10. package/dist/devtools.js.map +1 -1
  11. package/dist/dom/commit.d.ts +5 -0
  12. package/dist/dom/commit.d.ts.map +1 -0
  13. package/dist/dom/commit.js +94 -0
  14. package/dist/dom/commit.js.map +1 -0
  15. package/dist/dom/focus.d.ts +4 -0
  16. package/dist/dom/focus.d.ts.map +1 -0
  17. package/dist/dom/focus.js +32 -0
  18. package/dist/dom/focus.js.map +1 -0
  19. package/dist/dom/index.d.ts +4 -0
  20. package/dist/dom/index.d.ts.map +1 -0
  21. package/dist/dom/index.js +4 -0
  22. package/dist/dom/index.js.map +1 -0
  23. package/dist/dom/nodes.d.ts +12 -0
  24. package/dist/dom/nodes.d.ts.map +1 -0
  25. package/dist/dom/nodes.js +165 -0
  26. package/dist/dom/nodes.js.map +1 -0
  27. package/dist/dom/props.d.ts +8 -0
  28. package/dist/dom/props.d.ts.map +1 -0
  29. package/dist/dom/props.js +675 -0
  30. package/dist/dom/props.js.map +1 -0
  31. package/dist/env.d.ts +2 -0
  32. package/dist/env.d.ts.map +1 -1
  33. package/dist/env.js +2 -0
  34. package/dist/env.js.map +1 -1
  35. package/dist/globalContext.d.ts +3 -8
  36. package/dist/globalContext.d.ts.map +1 -1
  37. package/dist/globalContext.js +4 -16
  38. package/dist/globalContext.js.map +1 -1
  39. package/dist/globals.d.ts +21 -1
  40. package/dist/globals.d.ts.map +1 -1
  41. package/dist/globals.js +22 -2
  42. package/dist/globals.js.map +1 -1
  43. package/dist/hmr.d.ts +17 -2
  44. package/dist/hmr.d.ts.map +1 -1
  45. package/dist/hmr.js +31 -5
  46. package/dist/hmr.js.map +1 -1
  47. package/dist/hooks/index.d.ts +1 -0
  48. package/dist/hooks/index.d.ts.map +1 -1
  49. package/dist/hooks/index.js +1 -0
  50. package/dist/hooks/index.js.map +1 -1
  51. package/dist/hooks/onBeforeMount.d.ts +1 -1
  52. package/dist/hooks/onBeforeMount.d.ts.map +1 -1
  53. package/dist/hooks/onBeforeMount.js +10 -3
  54. package/dist/hooks/onBeforeMount.js.map +1 -1
  55. package/dist/hooks/onCleanup.d.ts +1 -1
  56. package/dist/hooks/onCleanup.d.ts.map +1 -1
  57. package/dist/hooks/onCleanup.js +7 -4
  58. package/dist/hooks/onCleanup.js.map +1 -1
  59. package/dist/hooks/onMount.d.ts +2 -2
  60. package/dist/hooks/onMount.d.ts.map +1 -1
  61. package/dist/hooks/onMount.js +11 -4
  62. package/dist/hooks/onMount.js.map +1 -1
  63. package/dist/hooks/setup.d.ts +13 -0
  64. package/dist/hooks/setup.d.ts.map +1 -0
  65. package/dist/hooks/setup.js +54 -0
  66. package/dist/hooks/setup.js.map +1 -0
  67. package/dist/hooks/utils.d.ts +2 -3
  68. package/dist/hooks/utils.d.ts.map +1 -1
  69. package/dist/hooks/utils.js +9 -14
  70. package/dist/hooks/utils.js.map +1 -1
  71. package/dist/index.d.ts +1 -0
  72. package/dist/index.d.ts.map +1 -1
  73. package/dist/index.js +4 -3
  74. package/dist/index.js.map +1 -1
  75. package/dist/reconciler.js +3 -3
  76. package/dist/reconciler.js.map +1 -1
  77. package/dist/router/head.js +2 -2
  78. package/dist/router/head.js.map +1 -1
  79. package/dist/router/pageConfig.js +2 -2
  80. package/dist/router/pageConfig.js.map +1 -1
  81. package/dist/scheduler.js +62 -57
  82. package/dist/scheduler.js.map +1 -1
  83. package/dist/signals/base.js +3 -3
  84. package/dist/signals/base.js.map +1 -1
  85. package/dist/signals/effect.d.ts.map +1 -1
  86. package/dist/signals/effect.js +6 -6
  87. package/dist/signals/effect.js.map +1 -1
  88. package/dist/signals/tracking.d.ts +3 -2
  89. package/dist/signals/tracking.d.ts.map +1 -1
  90. package/dist/signals/tracking.js.map +1 -1
  91. package/dist/statefulPromise.js +2 -2
  92. package/dist/statefulPromise.js.map +1 -1
  93. package/dist/types.d.ts +5 -1
  94. package/dist/types.d.ts.map +1 -1
  95. package/dist/types.dom.d.ts +1 -1
  96. package/dist/types.dom.d.ts.map +1 -1
  97. package/dist/utils/format.d.ts.map +1 -1
  98. package/dist/utils/format.js +4 -1
  99. package/dist/utils/format.js.map +1 -1
  100. package/dist/utils/vdom.d.ts +2 -2
  101. package/dist/utils/vdom.d.ts.map +1 -1
  102. package/dist/utils/vdom.js +2 -2
  103. package/dist/utils/vdom.js.map +1 -1
  104. package/dist/viewTransitions.d.ts.map +1 -1
  105. package/dist/viewTransitions.js +2 -1
  106. package/dist/viewTransitions.js.map +1 -1
  107. package/package.json +1 -1
  108. package/src/appHandle.ts +2 -2
  109. package/src/components/lazy.ts +5 -6
  110. package/src/components/transition.ts +2 -6
  111. package/src/devtools.ts +4 -2
  112. package/src/dom/commit.ts +133 -0
  113. package/src/dom/focus.ts +34 -0
  114. package/src/dom/index.ts +3 -0
  115. package/src/dom/nodes.ts +204 -0
  116. package/src/dom/props.ts +818 -0
  117. package/src/env.ts +3 -0
  118. package/src/globalContext.ts +7 -24
  119. package/src/globals.ts +25 -2
  120. package/src/hmr.ts +32 -5
  121. package/src/hooks/index.ts +1 -0
  122. package/src/hooks/onBeforeMount.ts +9 -3
  123. package/src/hooks/onCleanup.ts +10 -4
  124. package/src/hooks/onMount.ts +10 -4
  125. package/src/hooks/setup.ts +70 -0
  126. package/src/hooks/utils.ts +14 -19
  127. package/src/index.ts +4 -2
  128. package/src/reconciler.ts +3 -3
  129. package/src/router/head.ts +2 -2
  130. package/src/router/pageConfig.ts +2 -2
  131. package/src/scheduler.ts +79 -64
  132. package/src/signals/base.ts +3 -3
  133. package/src/signals/effect.ts +5 -7
  134. package/src/signals/tracking.ts +3 -2
  135. package/src/statefulPromise.ts +2 -2
  136. package/src/types.dom.ts +2 -2
  137. package/src/types.ts +7 -1
  138. package/src/utils/format.ts +3 -1
  139. package/src/utils/vdom.ts +2 -2
  140. package/src/viewTransitions.ts +2 -1
  141. package/dist/dom.d.ts +0 -10
  142. package/dist/dom.d.ts.map +0 -1
  143. package/dist/dom.js +0 -601
  144. package/dist/dom.js.map +0 -1
  145. package/src/dom.ts +0 -775
package/dist/dom.js DELETED
@@ -1,601 +0,0 @@
1
- import { traverseApply, commitSnapshot, propFilters, propToHtmlAttr, getVNodeApp, setRef, isValidTextChild, registerVNodeCleanup, call, } from "./utils/index.js";
2
- import { booleanAttributes, FLAG_PLACEMENT, FLAG_UPDATE, FLAG_STATIC_DOM, svgTags, EVENT_PREFIX_REGEX, } from "./constants.js";
3
- import { Signal } from "./signals/base.js";
4
- import { unwrap } from "./signals/utils.js";
5
- import { renderMode } from "./globals.js";
6
- import { hydrationStack } from "./hydration.js";
7
- import { __DEV__ } from "./env.js";
8
- import { KiruError } from "./error.js";
9
- export { commitWork, onBeforeFlushDomChanges, onAfterFlushDomChanges, commitDeletion, createDom, hydrateDom, };
10
- let persistingFocus = false;
11
- let didBlurActiveElement = false;
12
- const postHookCleanups = [];
13
- const placementBlurHandler = (event) => {
14
- event.preventDefault();
15
- event.stopPropagation();
16
- didBlurActiveElement = true;
17
- };
18
- let currentActiveElement = null;
19
- function onBeforeFlushDomChanges() {
20
- persistingFocus = true;
21
- currentActiveElement = document.activeElement;
22
- if (currentActiveElement && currentActiveElement !== document.body) {
23
- currentActiveElement.addEventListener("blur", placementBlurHandler);
24
- }
25
- }
26
- function onAfterFlushDomChanges() {
27
- if (didBlurActiveElement) {
28
- currentActiveElement.removeEventListener("blur", placementBlurHandler);
29
- if (currentActiveElement.isConnected) {
30
- ;
31
- currentActiveElement.focus();
32
- }
33
- didBlurActiveElement = false;
34
- }
35
- persistingFocus = false;
36
- queueMicrotask(() => {
37
- postHookCleanups.forEach(call);
38
- postHookCleanups.length = 0;
39
- });
40
- }
41
- function createDom(vNode) {
42
- const t = vNode.type;
43
- const dom = t == "#text"
44
- ? createTextNode(vNode)
45
- : svgTags.has(t)
46
- ? document.createElementNS("http://www.w3.org/2000/svg", t)
47
- : document.createElement(t);
48
- return dom;
49
- }
50
- function createTextNode(vNode) {
51
- const { nodeValue } = vNode.props;
52
- if (Signal.isSignal(nodeValue)) {
53
- return createSignalTextNode(vNode, nodeValue);
54
- }
55
- return document.createTextNode(nodeValue);
56
- }
57
- function createSignalTextNode(vNode, nodeValue) {
58
- const value = nodeValue.peek() ?? "";
59
- const textNode = document.createTextNode(value);
60
- subTextNode(vNode, textNode, nodeValue);
61
- return textNode;
62
- }
63
- function wrapFocusEventHandler(callback) {
64
- return (event) => {
65
- if (persistingFocus) {
66
- event.preventDefault();
67
- event.stopPropagation();
68
- return;
69
- }
70
- callback(event);
71
- };
72
- }
73
- const eventListenerObjects = new WeakMap();
74
- function updateDom(vNode) {
75
- const { dom, prev, props, cleanups } = vNode;
76
- const prevProps = prev?.props ?? {};
77
- const nextProps = props ?? {};
78
- const isHydration = renderMode.current === "hydrate";
79
- // TEXT NODE SHORT-PATH
80
- if (dom instanceof Text) {
81
- const nextVal = nextProps.nodeValue;
82
- if (!Signal.isSignal(nextVal) && dom.nodeValue !== nextVal) {
83
- dom.nodeValue = nextVal;
84
- }
85
- return;
86
- }
87
- const keys = [];
88
- for (const k in prevProps)
89
- keys.push(k);
90
- for (const k in nextProps) {
91
- if (!(k in prevProps))
92
- keys.push(k);
93
- }
94
- let events;
95
- for (let i = 0; i < keys.length; i++) {
96
- const key = keys[i];
97
- const prevVal = prevProps[key];
98
- const nextVal = nextProps[key];
99
- if (propFilters.isEvent(key)) {
100
- events ?? (events = eventListenerObjects.get(vNode));
101
- if (!events)
102
- eventListenerObjects.set(vNode, (events = {}));
103
- if (prevVal !== nextVal || isHydration) {
104
- const evtName = key.replace(EVENT_PREFIX_REGEX, "");
105
- const evtListenerObj = events[evtName];
106
- if (!nextVal) {
107
- if (evtListenerObj) {
108
- dom.removeEventListener(evtName, evtListenerObj);
109
- delete events[evtName];
110
- }
111
- continue;
112
- }
113
- let handleEvent = nextVal.bind(void 0);
114
- if (evtName === "focus" || evtName === "blur") {
115
- handleEvent = wrapFocusEventHandler(handleEvent);
116
- }
117
- if (evtListenerObj) {
118
- evtListenerObj.handleEvent = handleEvent;
119
- continue;
120
- }
121
- dom.addEventListener(evtName, (events[evtName] = { handleEvent }));
122
- }
123
- continue;
124
- }
125
- if (propFilters.isInternalProp(key) && key !== "innerHTML") {
126
- continue;
127
- }
128
- if (prevVal === nextVal) {
129
- continue;
130
- }
131
- if (Signal.isSignal(prevVal) && cleanups) {
132
- const disposer = cleanups[key];
133
- if (disposer) {
134
- disposer();
135
- delete cleanups[key];
136
- }
137
- }
138
- if (Signal.isSignal(nextVal)) {
139
- setSignalProp(vNode, dom, key, nextVal, prevVal);
140
- continue;
141
- }
142
- setProp(dom, key, nextVal, prevVal);
143
- }
144
- const prevRef = prevProps.ref;
145
- const nextRef = nextProps.ref;
146
- if (prevRef !== nextRef) {
147
- if (prevRef)
148
- setRef(prevRef, null);
149
- if (nextRef)
150
- setRef(nextRef, dom);
151
- }
152
- }
153
- function getSelectElementValue(dom) {
154
- if (dom.multiple) {
155
- return Array.from(dom.selectedOptions).map((option) => option.value);
156
- }
157
- return dom.value;
158
- }
159
- function setSelectElementValue(dom, value) {
160
- if (!dom.multiple || value === undefined || value === null || value === "") {
161
- dom.value = value;
162
- return;
163
- }
164
- Array.from(dom.options).forEach((option) => {
165
- option.selected = value.indexOf(option.value) > -1;
166
- });
167
- }
168
- const bindAttrToEventMap = {
169
- value: "input",
170
- checked: "change",
171
- open: "toggle",
172
- volume: "volumechange",
173
- playbackRate: "ratechange",
174
- currentTime: "timeupdate",
175
- };
176
- const numericValueInputTypes = new Set(["progress", "meter", "number", "range"]);
177
- function setSignalProp(vNode, dom, key, signal, prevValue) {
178
- const [modifier, attr] = key.split(":");
179
- if (modifier !== "bind") {
180
- const unsub = signal.subscribe((value, prev) => {
181
- if (value === prev)
182
- return;
183
- setProp(dom, key, value, prev);
184
- if (__DEV__) {
185
- emitSignalAttrUpdate(vNode);
186
- }
187
- });
188
- registerVNodeCleanup(vNode, key, unsub);
189
- }
190
- else {
191
- const evtName = bindAttrToEventMap[attr];
192
- if (!evtName) {
193
- if (__DEV__) {
194
- console.error(`[kiru]: ${attr} is not a valid element binding attribute.`);
195
- }
196
- return;
197
- }
198
- const cleanup = bindElementProp(vNode, dom, attr, evtName, signal);
199
- registerVNodeCleanup(vNode, key, cleanup);
200
- }
201
- const value = signal.peek();
202
- const prev = unwrap(prevValue);
203
- if (value !== prev) {
204
- setProp(dom, attr ?? modifier, value, prev);
205
- }
206
- }
207
- function createElementValueReader(dom, signal) {
208
- if (dom instanceof HTMLInputElement) {
209
- return createInputValueReader(dom, signal);
210
- }
211
- if (dom instanceof HTMLSelectElement) {
212
- return () => getSelectElementValue(dom);
213
- }
214
- return () => dom.value;
215
- }
216
- function bindElementProp(vNode, dom, attr, evtName, signal) {
217
- const writeToSignal = (val) => {
218
- signal.sneak(val);
219
- signal.notify((sub) => sub !== updateFromSignal);
220
- };
221
- const writeToElement = dom instanceof HTMLSelectElement && attr === "value"
222
- ? (value) => setSelectElementValue(dom, value)
223
- : (value) => (dom[attr] = value);
224
- const updateFromSignal = (value) => {
225
- writeToElement(value);
226
- if (__DEV__) {
227
- emitSignalAttrUpdate(vNode);
228
- }
229
- };
230
- let evtHandler;
231
- if (attr === "value") {
232
- const readValue = createElementValueReader(dom, signal);
233
- evtHandler = () => writeToSignal(readValue());
234
- }
235
- else {
236
- evtHandler = () => {
237
- const val = dom[attr];
238
- /**
239
- * the 'timeupdate' event is fired when the currentTime property is
240
- * set (from code OR playback), so we need to prevent unnecessary
241
- * signal updates to avoid a feedback loop when there are multiple
242
- * elements with the same signal bound to 'currentTime'
243
- */
244
- if (attr === "currentTime" && signal.peek() === val)
245
- return;
246
- writeToSignal(val);
247
- };
248
- }
249
- dom.addEventListener(evtName, evtHandler);
250
- const unsub = signal.subscribe(updateFromSignal);
251
- return () => {
252
- dom.removeEventListener(evtName, evtHandler);
253
- unsub();
254
- };
255
- }
256
- function createInputValueReader(dom, signal) {
257
- const t = dom.type;
258
- const v = signal.peek();
259
- if (t === "date" && v instanceof Date) {
260
- return () => dom.valueAsDate;
261
- }
262
- if (numericValueInputTypes.has(t) && typeof v === "number") {
263
- return () => dom.valueAsNumber;
264
- }
265
- return () => dom.value;
266
- }
267
- function emitSignalAttrUpdate(vNode) {
268
- window.__kiru.profilingContext?.emit("signalAttrUpdate", getVNodeApp(vNode));
269
- }
270
- function subTextNode(vNode, textNode, signal) {
271
- const cleanup = signal.subscribe((value, prev) => {
272
- if (value === prev)
273
- return;
274
- textNode.nodeValue = value;
275
- if (__DEV__) {
276
- window.__kiru.profilingContext?.emit("signalTextUpdate", getVNodeApp(vNode));
277
- }
278
- });
279
- registerVNodeCleanup(vNode, "nodeValue", cleanup);
280
- }
281
- /**
282
- * Creates and inserts an empty signal-bound text node into
283
- * the dom tree if the signal value is null or undefined.
284
- */
285
- function getOrCreateTextNode(vNode) {
286
- const sig = vNode.props.nodeValue;
287
- if (!Signal.isSignal(sig)) {
288
- return hydrationStack.getCurrentChild();
289
- }
290
- const value = sig.peek();
291
- if (isValidTextChild(value)) {
292
- return hydrationStack.getCurrentChild();
293
- }
294
- const dom = createSignalTextNode(vNode, sig);
295
- const currentChild = hydrationStack.getCurrentChild();
296
- if (!currentChild) {
297
- return hydrationStack.getCurrentParent().appendChild(dom);
298
- }
299
- currentChild.before(dom);
300
- return dom;
301
- }
302
- function hydrateDom(vNode) {
303
- const dom = vNode.type === "#text"
304
- ? getOrCreateTextNode(vNode)
305
- : hydrationStack.getCurrentChild();
306
- hydrationStack.bumpChildIndex();
307
- if (!dom) {
308
- throw new KiruError({
309
- message: `Hydration mismatch - no node found`,
310
- vNode,
311
- });
312
- }
313
- let nodeName = dom.nodeName;
314
- if (!svgTags.has(nodeName)) {
315
- nodeName = nodeName.toLowerCase();
316
- }
317
- if (vNode.type !== nodeName) {
318
- throw new KiruError({
319
- message: `Hydration mismatch - expected node of type ${vNode.type.toString()} but received ${nodeName}`,
320
- vNode,
321
- });
322
- }
323
- vNode.dom = dom;
324
- if (vNode.type !== "#text" && !(vNode.flags & FLAG_STATIC_DOM)) {
325
- updateDom(vNode);
326
- return;
327
- }
328
- if (Signal.isSignal(vNode.props.nodeValue)) {
329
- subTextNode(vNode, dom, vNode.props.nodeValue);
330
- }
331
- let prev = vNode;
332
- let sibling = vNode.sibling;
333
- while (sibling && sibling.type === "#text") {
334
- const sib = sibling;
335
- hydrationStack.bumpChildIndex();
336
- const prevText = String(unwrap(prev.props.nodeValue) ?? "");
337
- const dom = prev.dom.splitText(prevText.length);
338
- sib.dom = dom;
339
- if (Signal.isSignal(sib.props.nodeValue)) {
340
- subTextNode(sib, dom, sib.props.nodeValue);
341
- }
342
- prev = sibling;
343
- sibling = sibling.sibling;
344
- }
345
- }
346
- function handleAttributeRemoval(element, key, value, isBoolAttr = false) {
347
- if (value === null) {
348
- element.removeAttribute(key);
349
- return true;
350
- }
351
- switch (typeof value) {
352
- case "undefined":
353
- case "function":
354
- case "symbol": {
355
- element.removeAttribute(key);
356
- return true;
357
- }
358
- case "boolean": {
359
- if (isBoolAttr && !value) {
360
- element.removeAttribute(key);
361
- return true;
362
- }
363
- }
364
- }
365
- return false;
366
- }
367
- function setDomAttribute(element, key, value) {
368
- const isBoolAttr = booleanAttributes.has(key);
369
- if (handleAttributeRemoval(element, key, value, isBoolAttr))
370
- return;
371
- element.setAttribute(key, isBoolAttr && typeof value === "boolean" ? "" : String(value));
372
- }
373
- const explicitValueElementTags = ["INPUT", "TEXTAREA"];
374
- const needsExplicitValueSet = (element) => {
375
- return explicitValueElementTags.indexOf(element.nodeName) > -1;
376
- };
377
- function setProp(element, key, value, prev) {
378
- switch (key) {
379
- case "style":
380
- return setStyleProp(element, value, prev);
381
- case "className":
382
- return setClassName(element, value);
383
- case "innerHTML":
384
- return setInnerHTML(element, value);
385
- case "muted":
386
- ;
387
- element.muted = Boolean(value);
388
- return;
389
- case "value":
390
- if (element.nodeName === "SELECT") {
391
- return setSelectElementValue(element, value);
392
- }
393
- const strVal = value === undefined || value === null ? "" : String(value);
394
- if (needsExplicitValueSet(element)) {
395
- element.value = strVal;
396
- return;
397
- }
398
- element.setAttribute("value", strVal);
399
- return;
400
- case "checked":
401
- if (element.nodeName === "INPUT") {
402
- ;
403
- element.checked = Boolean(value);
404
- return;
405
- }
406
- element.setAttribute("checked", String(value));
407
- return;
408
- default:
409
- return setDomAttribute(element, propToHtmlAttr(key), value);
410
- }
411
- }
412
- function setInnerHTML(element, value) {
413
- if (value === null || value === undefined || typeof value === "boolean") {
414
- element.innerHTML = "";
415
- return;
416
- }
417
- element.innerHTML = String(value);
418
- }
419
- function setClassName(element, value) {
420
- const val = unwrap(value);
421
- if (!val) {
422
- return element.removeAttribute("class");
423
- }
424
- element.setAttribute("class", val);
425
- }
426
- function setStyleProp(element, value, prev) {
427
- if (handleAttributeRemoval(element, "style", value))
428
- return;
429
- if (typeof value === "string") {
430
- element.setAttribute("style", value);
431
- return;
432
- }
433
- let prevStyle = {};
434
- if (typeof prev === "string") {
435
- element.setAttribute("style", "");
436
- }
437
- else if (typeof prev === "object" && !!prev) {
438
- prevStyle = prev;
439
- }
440
- const nextStyle = value;
441
- const keys = new Set([
442
- ...Object.keys(prevStyle),
443
- ...Object.keys(nextStyle),
444
- ]);
445
- keys.forEach((k) => {
446
- const prev = prevStyle[k];
447
- const next = nextStyle[k];
448
- if (prev === next)
449
- return;
450
- if (next === undefined) {
451
- element.style[k] = "";
452
- return;
453
- }
454
- element.style[k] = next;
455
- });
456
- }
457
- function getDomParent(vNode) {
458
- let parentNode = vNode.parent;
459
- let parentNodeElement = parentNode?.dom;
460
- while (parentNode && !parentNodeElement) {
461
- parentNode = parentNode.parent;
462
- parentNodeElement = parentNode?.dom;
463
- }
464
- if (!parentNodeElement || !parentNode) {
465
- // handle app entry
466
- if (!vNode.parent && vNode.dom) {
467
- return vNode;
468
- }
469
- throw new KiruError({
470
- message: "No DOM parent found while attempting to place node.",
471
- vNode: vNode,
472
- });
473
- }
474
- return parentNode;
475
- }
476
- function placeDom(vNode, hostNode) {
477
- const { node: parentVNodeWithDom, lastChild } = hostNode;
478
- const dom = vNode.dom;
479
- if (lastChild) {
480
- lastChild.after(dom);
481
- return;
482
- }
483
- // TODO: we can probably skip the 'next sibling search' if we're appending
484
- const nextSiblingDom = getNextSiblingDom(vNode, parentVNodeWithDom);
485
- if (nextSiblingDom) {
486
- parentVNodeWithDom.dom.insertBefore(dom, nextSiblingDom);
487
- return;
488
- }
489
- parentVNodeWithDom.dom.appendChild(dom);
490
- }
491
- function getNextSiblingDom(vNode, parent) {
492
- let node = vNode;
493
- while (node) {
494
- let sibling = node.sibling;
495
- while (sibling) {
496
- // Skip unmounted, to-be-placed & static nodes
497
- if (!(sibling.flags & (FLAG_PLACEMENT | FLAG_STATIC_DOM))) {
498
- // Descend into the child to find host dom
499
- const dom = findFirstHostDom(sibling);
500
- if (dom?.isConnected)
501
- return dom;
502
- }
503
- sibling = sibling.sibling;
504
- }
505
- // Move up to parent — but don't escape portal boundary
506
- node = node.parent;
507
- if (!node || node.flags & FLAG_STATIC_DOM || node === parent) {
508
- return;
509
- }
510
- }
511
- return;
512
- }
513
- function findFirstHostDom(vNode) {
514
- let node = vNode;
515
- while (node) {
516
- if (node.dom)
517
- return node.dom;
518
- if (node.flags & FLAG_STATIC_DOM)
519
- return; // Don't descend into portals
520
- node = node.child;
521
- }
522
- return;
523
- }
524
- function commitWork(vNode) {
525
- if (renderMode.current === "hydrate") {
526
- return traverseApply(vNode, commitSnapshot);
527
- }
528
- const host = {
529
- node: vNode.dom ? vNode : getDomParent(vNode),
530
- };
531
- commitWork_impl(vNode, host, (vNode.flags & FLAG_PLACEMENT) > 0);
532
- if (vNode.dom && !(vNode.flags & FLAG_STATIC_DOM)) {
533
- commitDom(vNode, host, false);
534
- }
535
- commitSnapshot(vNode);
536
- }
537
- function commitWork_impl(vNode, currentHostNode, inheritsPlacement) {
538
- let child = vNode.child;
539
- while (child) {
540
- if (child.dom) {
541
- commitWork_impl(child, { node: child }, false);
542
- if (!(child.flags & FLAG_STATIC_DOM)) {
543
- commitDom(child, currentHostNode, inheritsPlacement);
544
- }
545
- }
546
- else {
547
- commitWork_impl(child, currentHostNode, (child.flags & FLAG_PLACEMENT) > 0 || inheritsPlacement);
548
- }
549
- commitSnapshot(child);
550
- child = child.sibling;
551
- }
552
- }
553
- function commitDom(vNode, hostNode, inheritsPlacement) {
554
- if (inheritsPlacement ||
555
- !vNode.dom.isConnected ||
556
- vNode.flags & FLAG_PLACEMENT) {
557
- placeDom(vNode, hostNode);
558
- }
559
- if (!vNode.prev || vNode.flags & FLAG_UPDATE) {
560
- updateDom(vNode);
561
- }
562
- hostNode.lastChild = vNode.dom;
563
- }
564
- function commitDeletion(vNode) {
565
- if (vNode === vNode.parent?.child) {
566
- vNode.parent.child = vNode.sibling;
567
- }
568
- let app;
569
- if (__DEV__) {
570
- app = getVNodeApp(vNode);
571
- }
572
- traverseApply(vNode, (node) => {
573
- const { subs, cleanups, dom, props: { ref }, hooks, } = node;
574
- subs?.forEach((unsub) => unsub());
575
- if (cleanups)
576
- Object.values(cleanups).forEach((c) => c());
577
- if (hooks) {
578
- const { preCleanups, postCleanups } = hooks;
579
- preCleanups.forEach(call);
580
- postHookCleanups.push(...postCleanups);
581
- preCleanups.length = postCleanups.length = 0;
582
- }
583
- if (__DEV__) {
584
- window.__kiru.profilingContext?.emit("removeNode", app);
585
- if (dom instanceof Element) {
586
- delete dom.__kiruNode;
587
- }
588
- }
589
- if (dom) {
590
- if (dom.isConnected && !(node.flags & FLAG_STATIC_DOM)) {
591
- dom.remove();
592
- }
593
- if (ref) {
594
- setRef(ref, null);
595
- }
596
- delete node.dom;
597
- }
598
- });
599
- vNode.parent = null;
600
- }
601
- //# sourceMappingURL=dom.js.map
package/dist/dom.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"dom.js","sourceRoot":"","sources":["../src/dom.ts"],"names":[],"mappings":"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"}