From: daiwei Date: Thu, 27 Mar 2025 06:58:47 +0000 (+0800) Subject: wip: refactor X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5574fbf52151d3d423d9c308be75c90dd995246b;p=thirdparty%2Fvuejs%2Fcore.git wip: refactor --- diff --git a/packages/runtime-core/src/index.ts b/packages/runtime-core/src/index.ts index 2d721b058f..b3811e929f 100644 --- a/packages/runtime-core/src/index.ts +++ b/packages/runtime-core/src/index.ts @@ -561,8 +561,7 @@ export { initFeatureFlags } from './featureFlags' * @internal */ export { - resolveTarget, + resolveTarget as resolveTeleportTarget, isTeleportDisabled, isTeleportDeferred, - TeleportEndKey, } from './components/Teleport' diff --git a/packages/runtime-vapor/src/components/Teleport.ts b/packages/runtime-vapor/src/components/Teleport.ts index 7268a631f2..8f74688709 100644 --- a/packages/runtime-vapor/src/components/Teleport.ts +++ b/packages/runtime-vapor/src/components/Teleport.ts @@ -1,11 +1,10 @@ import { - TeleportEndKey, type TeleportProps, currentInstance, isTeleportDeferred, isTeleportDisabled, queuePostFlushCb, - resolveTarget, + resolveTeleportTarget, warn, } from '@vue/runtime-dom' import { type Block, type BlockFn, insert, remove } from '../block' @@ -135,7 +134,7 @@ export class TeleportFragment extends VaporFragment { } const mountToTarget = () => { - const target = (this.target = resolveTarget(props, querySelector)) + const target = (this.target = resolveTeleportTarget(props, querySelector)) if (target) { if ( // initial mount into target @@ -143,7 +142,8 @@ export class TeleportFragment extends VaporFragment { // target changed this.targetAnchor.parentNode !== target ) { - ;[this.targetAnchor, this.targetStart] = prepareAnchor(target) + insert((this.targetStart = createTextNode('')), target) + insert((this.targetAnchor = createTextNode('')), target) } mount(target, this.targetAnchor!) @@ -218,22 +218,6 @@ export class TeleportFragment extends VaporFragment { } } -function prepareAnchor(target: ParentNode | null) { - const targetStart = createTextNode('') as Text & { [TeleportEndKey]: Node } - const targetAnchor = createTextNode('') - - // attach a special property, so we can skip teleported content in - // renderer's nextSibling search - targetStart[TeleportEndKey] = targetAnchor - - if (target) { - insert(targetStart, target) - insert(targetAnchor, target) - } - - return [targetAnchor, targetStart] -} - export const VaporTeleport = VaporTeleportImpl as unknown as { __vapor: true __isTeleport: true