/* eslint-disable */ /* prettier-ignore */ // biome-ignore lint: disable // Generated by elegant-router // Read more: https://github.com/soybeanjs/elegant-router import type { RouteRecordRaw } from 'vue-router'; import type { AutoRouterRedirect, AutoRouterRoute, AutoRouterSingleView, RawRouteComponent, RouteFileKey, RouteLayoutKey } from '@elegant-router/types'; export function transformToVueRoutes( routes: AutoRouterRoute[], layouts: Record, views: Record ) { const { redirects, groupedRoutes } = getFormattedRoutes(routes); const vueRoutes: RouteRecordRaw[] = [...redirects]; groupedRoutes.forEach((items, layout) => { const layoutRoute: RouteRecordRaw = { path: `/${layout}-layout`, component: layouts[layout], children: items.map(item => { const { layout: _, component, ...rest } = item; return { component: views[component], ...rest }; }) }; vueRoutes.push(layoutRoute); }); return vueRoutes; } function getFormattedRoutes(routes: AutoRouterRoute[]) { const groupedRoutes = new Map(); const redirects: AutoRouterRedirect[] = []; routes.forEach(route => { if (isAutoRouterRedirect(route)) { redirects.push(route); return; } const items = groupedRoutes.get(route.layout) || []; items.push(route); groupedRoutes.set(route.layout, items); }); return { redirects, groupedRoutes }; } function isAutoRouterRedirect(route: AutoRouterRoute): route is AutoRouterRedirect { return 'redirect' in route; }