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

index 0b051420a54d1b7130ddbf5689c052fb52bc2b2a..672bb75dc1eaef34c362f3c26be333620ec43aae 100644 (file)
@@ -60,7 +60,7 @@ import {
 import { hmrReload, hmrRerender } from './hmr'
 import { isHydrating, locateHydrationNode } from './dom/hydration'
 import { insertionAnchor, insertionParent } from './insertionState'
-import type { VaporTeleportImpl } from './components/Teleport'
+import { isVaporTeleport } from './components/Teleport'
 
 export { currentInstance } from '@vue/runtime-dom'
 
@@ -93,8 +93,6 @@ export interface ObjectVaporComponent
 
   name?: string
   vapor?: boolean
-
-  __isTeleport?: boolean
 }
 
 interface SharedInternalOptions {
@@ -161,11 +159,8 @@ export function createComponent(
   }
 
   // teleport
-  if (component.__isTeleport) {
-    const frag = (component as typeof VaporTeleportImpl).process(
-      rawProps!,
-      rawSlots!,
-    )
+  if (isVaporTeleport(component)) {
+    const frag = component.process(rawProps!, rawSlots!)
     if (!isHydrating && _insertionParent) {
       insert(frag, _insertionParent, _insertionAnchor)
     } else {
index 1e4a12f835ae58001d0a7d8864266f955f536b33..50ddceb62ecf933ea2d3a9e1f610525491c3a45c 100644 (file)
@@ -85,7 +85,7 @@ export const VaporTeleportImpl = {
   },
 }
 
-class TeleportFragment extends VaporFragment {
+export class TeleportFragment extends VaporFragment {
   anchor: Node
 
   private targetStart?: Node
@@ -242,6 +242,12 @@ export const VaporTeleport = VaporTeleportImpl as unknown as {
   }
 }
 
+export function isVaporTeleport(
+  value: unknown,
+): value is typeof VaporTeleportImpl {
+  return value === VaporTeleportImpl
+}
+
 /**
  * dev only
  * during root component HMR reload, since the old component will be unmounted