]> git.ipfire.org Git - thirdparty/vuejs/core.git/commitdiff
wip: refactor
authordaiwei <daiwei521@126.com>
Thu, 27 Mar 2025 06:58:47 +0000 (14:58 +0800)
committerdaiwei <daiwei521@126.com>
Thu, 27 Mar 2025 06:58:47 +0000 (14:58 +0800)
packages/runtime-core/src/index.ts
packages/runtime-vapor/src/components/Teleport.ts

index 2d721b058f0ccf0061b1ba45152b692d421453e7..b3811e929fafd2d2dfc99a0608eb7049f9d8f474 100644 (file)
@@ -561,8 +561,7 @@ export { initFeatureFlags } from './featureFlags'
  * @internal
  */
 export {
-  resolveTarget,
+  resolveTarget as resolveTeleportTarget,
   isTeleportDisabled,
   isTeleportDeferred,
-  TeleportEndKey,
 } from './components/Teleport'
index 7268a631f2142eafd1b9094ba7307da692a5bb9e..8f7468870902958d6efdaa1f43e103271ab0c5d8 100644 (file)
@@ -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