Skip to content

Commit 9ede200

Browse files
committed
feat: Update DeltaUpdates.insertNode to support Fragments (#8612)
1 parent 2b991c8 commit 9ede200

1 file changed

Lines changed: 40 additions & 3 deletions

File tree

src/main/DeltaUpdates.mjs

Lines changed: 40 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -307,14 +307,51 @@ class DeltaUpdates extends Base {
307307
this.checkRendererAvailability();
308308

309309
let {render} = Neo.main,
310-
parentNode = DomAccess.getElementOrBody(parentId);
310+
parentNode = DomAccess.getElement(parentId),
311+
siblingRef;
312+
313+
// 1. Resolve Target Parent & Sibling
314+
if (!parentNode) {
315+
const startNode = this.getFragmentStart(parentId);
316+
if (startNode) {
317+
parentNode = startNode.parentNode;
318+
siblingRef = this.getFragmentSibling(startNode, index)
319+
}
320+
} else {
321+
siblingRef = parentNode.childNodes[index]
322+
}
311323

312324
if (parentNode) {
325+
let newNode;
326+
313327
if (NeoConfig.useDomApiRenderer) {
314-
render.DomApiRenderer.createDomTree({index, isRoot: true, parentNode, vnode})
328+
newNode = render.DomApiRenderer.createDomTree({
329+
index : -1,
330+
isRoot : true,
331+
parentNode: null, // detached
332+
vnode
333+
})
334+
} else {
335+
newNode = render.StringBasedRenderer.htmlStringToElement(outerHTML)
336+
}
337+
338+
if (newNode) {
339+
parentNode.insertBefore(newNode, siblingRef || null);
340+
341+
if (postMountUpdates?.length > 0) {
342+
postMountUpdates.forEach(update => {
343+
let node = DomAccess.getElement(update.id);
344+
if (node) {
345+
if (update.scrollLeft) {node.scrollLeft = update.scrollLeft}
346+
if (update.scrollTop) {node.scrollTop = update.scrollTop}
347+
}
348+
})
349+
}
315350
} else {
316-
render.StringBasedRenderer.insertNodeAsString({hasLeadingTextChildren, index, outerHTML, parentNode, postMountUpdates})
351+
console.error('insertNode: Failed to create newNode', {outerHTML, vnode});
317352
}
353+
} else {
354+
console.error('insertNode: Parent not found', {parentId, index});
318355
}
319356
}
320357

0 commit comments

Comments
 (0)