From acd2af24f632a95255f2b8a6efb527b6bb16e68d Mon Sep 17 00:00:00 2001 From: daiwei Date: Sun, 16 Mar 2025 10:00:19 +0800 Subject: [PATCH] wip: refactor --- .../src/components/Transition.ts | 24 +++++++------------ .../src/components/TransitionGroup.ts | 4 ++-- packages/runtime-vapor/src/vdomInterop.ts | 6 ++--- 3 files changed, 14 insertions(+), 20 deletions(-) diff --git a/packages/runtime-vapor/src/components/Transition.ts b/packages/runtime-vapor/src/components/Transition.ts index 73cf570fc6..484d7f3943 100644 --- a/packages/runtime-vapor/src/components/Transition.ts +++ b/packages/runtime-vapor/src/components/Transition.ts @@ -170,7 +170,7 @@ export function applyTransitionHooks( const child = findTransitionBlock(block) if (!child) { // set transition hooks on fragment for reusing during it's updating - if (isFrag) setTransitionHooksToFragment(block, hooks) + if (isFrag) setTransitionHooksOnFragment(block, hooks) return hooks } @@ -184,7 +184,7 @@ export function applyTransitionHooks( ) resolvedHooks.delayedLeave = delayedLeave setTransitionHooks(child, resolvedHooks) - if (isFrag) setTransitionHooksToFragment(block, resolvedHooks) + if (isFrag) setTransitionHooksOnFragment(block, resolvedHooks) // fallthrough attrs if (fallthroughAttrs && instance.hasFallthrough) { @@ -295,17 +295,7 @@ export function findTransitionBlock( return child } -export function setTransitionToInstance( - block: VaporComponentInstance, - hooks: VaporTransitionHooks, -): void { - const child = findTransitionBlock(block.block) - if (!child) return - - setTransitionHooks(child, hooks) -} - -export function setTransitionHooksToFragment( +export function setTransitionHooksOnFragment( block: Block, hooks: VaporTransitionHooks, ): void { @@ -313,14 +303,18 @@ export function setTransitionHooksToFragment( setTransitionHooks(block, hooks) } else if (isArray(block)) { for (let i = 0; i < block.length; i++) { - setTransitionHooksToFragment(block[i], hooks) + setTransitionHooksOnFragment(block[i], hooks) } } } export function setTransitionHooks( - block: TransitionBlock, + block: TransitionBlock | VaporComponentInstance, hooks: VaporTransitionHooks, ): void { + if (isVaporComponent(block)) { + block = findTransitionBlock(block.block) as TransitionBlock + if (!block) return + } block.$transition = hooks } diff --git a/packages/runtime-vapor/src/components/TransitionGroup.ts b/packages/runtime-vapor/src/components/TransitionGroup.ts index af8c8300f7..5733ff7d2c 100644 --- a/packages/runtime-vapor/src/components/TransitionGroup.ts +++ b/packages/runtime-vapor/src/components/TransitionGroup.ts @@ -26,7 +26,7 @@ import { import { resolveTransitionHooks, setTransitionHooks, - setTransitionHooksToFragment, + setTransitionHooksOnFragment, } from './Transition' import { type ObjectVaporComponent, @@ -124,7 +124,7 @@ export const VaporTransitionGroup: ObjectVaporComponent = decorate({ slottedBlock = slots.default && slots.default() // store props and state on fragment for reusing during insert new items - setTransitionHooksToFragment(slottedBlock, { + setTransitionHooksOnFragment(slottedBlock, { props: cssTransitionProps, state, } as VaporTransitionHooks) diff --git a/packages/runtime-vapor/src/vdomInterop.ts b/packages/runtime-vapor/src/vdomInterop.ts index 78d92affc5..3c3ae58e92 100644 --- a/packages/runtime-vapor/src/vdomInterop.ts +++ b/packages/runtime-vapor/src/vdomInterop.ts @@ -41,7 +41,7 @@ import type { RawSlots, VaporSlot } from './componentSlots' import { renderEffect } from './renderEffect' import { createTextNode } from './dom/node' import { optimizePropertyLookup } from './dom/prop' -import { setTransitionToInstance } from './components/Transition' +import { setTransitionHooks as setVaporTransitionHooks } from './components/Transition' // mounting vapor components and slots in vdom const vaporInteropImpl: Omit< @@ -78,7 +78,7 @@ const vaporInteropImpl: Omit< instance.rawPropsRef = propsRef instance.rawSlotsRef = slotsRef if (vnode.transition) { - setTransitionToInstance( + setVaporTransitionHooks( instance, vnode.transition as VaporTransitionHooks, ) @@ -138,7 +138,7 @@ const vaporInteropImpl: Omit< }, setTransitionHooks(component, hooks) { - setTransitionToInstance(component as any, hooks as VaporTransitionHooks) + setVaporTransitionHooks(component as any, hooks as VaporTransitionHooks) }, } -- 2.47.2