@@ -353,7 +353,26 @@ function hydrateTeleport(
|
||||
vnode.targetAnchor = targetNode
|
||||
} else {
|
||||
vnode.anchor = nextSibling(node)
|
||||
vnode.targetAnchor = hydrateChildren(
|
||||
|
||||
// lookahead until we find the target anchor
|
||||
// we cannot rely on return value of hydrateChildren() because there
|
||||
// could be nested teleports
|
||||
let targetAnchor = targetNode
|
||||
while (targetAnchor) {
|
||||
targetAnchor = nextSibling(targetAnchor)
|
||||
if (
|
||||
targetAnchor &&
|
||||
targetAnchor.nodeType === 8 &&
|
||||
(targetAnchor as Comment).data === 'teleport anchor'
|
||||
) {
|
||||
vnode.targetAnchor = targetAnchor
|
||||
;(target as TeleportTargetElement)._lpa =
|
||||
vnode.targetAnchor && nextSibling(vnode.targetAnchor as Node)
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
hydrateChildren(
|
||||
targetNode,
|
||||
vnode,
|
||||
target,
|
||||
@@ -363,8 +382,6 @@ function hydrateTeleport(
|
||||
optimized
|
||||
)
|
||||
}
|
||||
;(target as TeleportTargetElement)._lpa =
|
||||
vnode.targetAnchor && nextSibling(vnode.targetAnchor as Node)
|
||||
}
|
||||
}
|
||||
return vnode.anchor && nextSibling(vnode.anchor as Node)
|
||||
|
||||
Reference in New Issue
Block a user