import type { FunctionalComponent } from 'vue' import type { RouteLocation } from 'vue-router' export interface DefaultContext { Component: FunctionalComponent & { type: Recordable } route: RouteLocation } export function getTransitionName({ route, openCache, cacheTabs, enableTransition, def }: Pick & { enableTransition: boolean openCache: boolean def: string cacheTabs: string[] }): string | undefined { if (!enableTransition) { return undefined } const isInCache = cacheTabs.includes(route.name as string) const transitionName = 'fade-slide' let name: string | undefined = transitionName if (openCache) { name = isInCache && route.meta.loaded ? transitionName : undefined } return name || (route.meta.transitionName as string) || def }