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; }