MCPcopy
hub / github.com/vuejs/core / moveTeleport

Function moveTeleport

packages/runtime-core/src/components/Teleport.ts:378–416  ·  view source on GitHub ↗
(
  vnode: VNode,
  container: RendererElement,
  parentAnchor: RendererNode | null,
  { o: { insert }, m: move }: RendererInternals,
  moveType: TeleportMoveTypes = TeleportMoveTypes.REORDER,
)

Source from the content-addressed store, hash-verified

376}
377
378function moveTeleport(
379 vnode: VNode,
380 container: RendererElement,
381 parentAnchor: RendererNode | null,
382 { o: { insert }, m: move }: RendererInternals,
383 moveType: TeleportMoveTypes = TeleportMoveTypes.REORDER,
384): void {
385 // move target anchor if this is a target change.
386 if (moveType === TeleportMoveTypes.TARGET_CHANGE) {
387 insert(vnode.targetAnchor!, container, parentAnchor)
388 }
389 const { el, anchor, shapeFlag, children, props } = vnode
390 const isReorder = moveType === TeleportMoveTypes.REORDER
391 // move main view anchor if this is a re-order.
392 if (isReorder) {
393 insert(el!, container, parentAnchor)
394 }
395 // if this is a re-order and teleport is enabled (content is in target)
396 // do not move children. So the opposite is: only move children if this
397 // is not a reorder, or the teleport is disabled
398 // #14701 don't move children if in pending mount
399 if (!pendingMounts.has(vnode) && (!isReorder || isTeleportDisabled(props))) {
400 // Teleport has either Array children or no children.
401 if (shapeFlag & ShapeFlags.ARRAY_CHILDREN) {
402 for (let i = 0; i < (children as VNode[]).length; i++) {
403 move(
404 (children as VNode[])[i],
405 container,
406 parentAnchor,
407 MoveType.REORDER,
408 )
409 }
410 }
411 }
412 // move main view anchor if this is a re-order.
413 if (isReorder) {
414 insert(anchor!, container, parentAnchor)
415 }
416}
417
418interface TeleportTargetElement extends Element {
419 // last teleport target

Callers 1

processFunction · 0.85

Calls 4

insertFunction · 0.85
isTeleportDisabledFunction · 0.85
hasMethod · 0.80
moveFunction · 0.70

Tested by

no test coverage detected