export const LIGHT_MENU_NAMES = new Set([ 'AIAgent', 'AIKnowledgeDetail', 'AIModelConfig', 'AIPlatform', 'AIWorkflow', 'AIWorkflowRuns', 'AnnouncementList', 'AnnouncementManage', 'KnowledgeBase', 'SystemManagement', 'SystemMenu', 'SystemPermission', 'SystemRole', 'UserManagement', ]); const LIGHT_ROUTE_PATH_PREFIXES = [ '/ai-platform/agent', '/ai-platform/knowledge', '/ai-platform/knowledge-base', '/ai-platform/model', '/ai-platform/workflow', '/ai-platform/workflow-runs', '/message/announcement', '/system/menu', '/system/new-permission', '/system/role', '/system/user', ]; export function isLightMenuName(name?: string) { return !name || LIGHT_MENU_NAMES.has(name); } function normalizePath(path?: string) { if (!path) return ''; return path.split('?')[0]?.replace(/\/$/, '') || ''; } export function isLightTabRoute(route: { fullPath?: string; matched?: Array<{ name?: unknown; path?: string }>; name?: unknown; path?: string; }) { if (typeof route.name === 'string' && LIGHT_MENU_NAMES.has(route.name)) { return true; } if ( route.matched?.some( (item) => typeof item.name === 'string' && LIGHT_MENU_NAMES.has(item.name), ) ) { return true; } const path = normalizePath(route.fullPath || route.path); return LIGHT_ROUTE_PATH_PREFIXES.some( (prefix) => path === prefix || path.startsWith(`${prefix}/`), ); } export function filterLightMenuTree< T extends { children?: T[]; name?: string }, >(routes: T[]): T[] { return routes .map((route) => { const children = route.children ? filterLightMenuTree(route.children) : undefined; if (!isLightMenuName(route.name) && !children?.length) { return undefined; } return children ? { ...route, children } : route; }) .filter(Boolean) as T[]; }