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

index 5f522b5cf6ee40aee343f945d57ec4ed322f53fd..e2f9bdf26b55bae038621ec123a95c4bcea0c13c 100644 (file)
@@ -139,7 +139,9 @@ export const BaseTransitionPropsValidators: Record<string, any> = {
 }
 
 const recursiveGetSubtree = (instance: ComponentInternalInstance): VNode => {
-  const subTree = instance.subTree
+  const subTree = instance.type.__vapor
+    ? (instance as any).block
+    : instance.subTree
   return subTree.component ? recursiveGetSubtree(subTree.component) : subTree
 }
 
@@ -564,8 +566,12 @@ function getInnerChild(vnode: VNode): VNode | undefined {
 
 export function setTransitionHooks(vnode: VNode, hooks: TransitionHooks): void {
   if (vnode.shapeFlag & ShapeFlags.COMPONENT && vnode.component) {
-    vnode.transition = hooks
-    setTransitionHooks(vnode.component.subTree, hooks)
+    if ((vnode.type as any).__vapor) {
+      ;(vnode.component as any).block.$transition = hooks
+    } else {
+      vnode.transition = hooks
+      setTransitionHooks(vnode.component.subTree, hooks)
+    }
   } else if (__FEATURE_SUSPENSE__ && vnode.shapeFlag & ShapeFlags.SUSPENSE) {
     vnode.ssContent!.transition = hooks.clone(vnode.ssContent!)
     vnode.ssFallback!.transition = hooks.clone(vnode.ssFallback!)
index a73b5557de2c2eb5af30bc08cb4648e92320c274..39205ab1eac1c7a8b61a8e7b98c5f6b443b268e5 100644 (file)
@@ -2411,7 +2411,7 @@ function baseCreateRenderer(
   const getNextHostNode: NextFn = vnode => {
     if (vnode.shapeFlag & ShapeFlags.COMPONENT) {
       if ((vnode.type as ConcreteComponent).__vapor) {
-        return hostNextSibling((vnode.component! as any).block)
+        return hostNextSibling(vnode.anchor!)
       }
       return getNextHostNode(vnode.component!.subTree)
     }
@@ -2608,7 +2608,7 @@ export function traverseStaticChildren(
 function locateNonHydratedAsyncRoot(
   instance: ComponentInternalInstance,
 ): ComponentInternalInstance | undefined {
-  const subComponent = instance.subTree.component
+  const subComponent = instance.subTree && instance.subTree.component
   if (subComponent) {
     if (subComponent.asyncDep && !subComponent.asyncResolved) {
       return subComponent