import { FlowRouter } from 'meteor/kadira:flow-router'; import type { ElementType } from 'react'; import { renderRouteComponent } from '../reactAdapters'; type RouteRegister = { (path: string, params: { name: string; lazyRouteComponent: () => Promise; props: Record; action: (params?: Record, queryParams?: Record) => void; }): void; }; export const createRouteGroup = (name: string, prefix: string, importRouter: () => Promise): RouteRegister => { const routeGroup = FlowRouter.group({ name, prefix, }); const registerRoute: RouteRegister = (path, { lazyRouteComponent, props, action, ...options }) => { routeGroup.route(path, { ...options, action: (params, queryParams) => { if (action) { action(params, queryParams); return; } renderRouteComponent(importRouter, { template: 'main', region: 'center', propsFn: () => ({ lazyRouteComponent, ...options, params, queryParams, ...props }), }); }, }); }; return registerRoute; };