react-router-manage
Version:
react-router-manage extends react-router(v6), it Including authentication, configuration, addition, deletion and modification
176 lines (167 loc) • 7.57 kB
TypeScript
import { To as To$1 } from 'react-router';
export { AbortedDeferredError, ActionFunction, ActionFunctionArgs, Await, AwaitProps, DataRouteMatch, DataRouteObject, Fetcher, Hash, IndexRouteObject, IndexRouteProps, JsonFunction, LayoutRouteProps, LazyRouteFunction, LoaderFunction, LoaderFunctionArgs, Location, MemoryRouter, MemoryRouterProps, Navigate, NavigateFunction, NavigateOptions, NavigateProps, Navigation, NavigationType, Navigator, NonIndexRouteObject, Outlet, OutletProps, ParamParseKey, Params, Path, PathMatch, PathPattern, PathRouteProps, Pathname, RedirectFunction, RelativeRoutingType, Route, RouteMatch, RouteObject, RouteProps, Router, RouterProps, RouterProvider, RouterProviderProps, Routes, RoutesProps, Search, ShouldRevalidateFunction, To, UNSAFE_DataRouterContext, UNSAFE_DataRouterStateContext, UNSAFE_LocationContext, UNSAFE_NavigationContext, UNSAFE_RouteContext, createMemoryRouter, createPath, createRoutesFromChildren, createRoutesFromElements, defer, generatePath, isRouteErrorResponse, json, matchPath, matchRoutes, parsePath, redirect, renderMatches, resolvePath, unstable_Blocker, unstable_BlockerFunction, unstable_useBlocker, useActionData, useAsyncError, useAsyncValue, useHref, useInRouterContext, useLoaderData, useLocation, useMatch, useMatches, useNavigation, useNavigationType, useOutlet, useOutletContext, useParams, useResolvedPath, useRevalidator, useRouteError, useRouteLoaderData, useRoutes } from 'react-router';
import { To, NavigateOptions } from 'react-router-dom';
export { BrowserRouterProps, FetcherWithComponents, Form, FormProps, HashRouterProps, HistoryRouterProps, Link, LinkProps, NavLink, NavLinkProps, ScrollRestoration, ScrollRestorationProps, SubmitFunction, UNSAFE_useScrollRestoration, createBrowserRouter, createHashRouter, useBeforeUnload, useFetcher, useFetchers, useFormAction, useLinkClickHandler, useSearchParams, useSubmit } from 'react-router-dom';
import * as React from 'react';
import { ParsedQuery } from 'query-string';
import { BrowserHistory, Location } from '@remix-run/router';
interface OldBrowserHistory extends BrowserHistory {
back: () => void;
forward: () => void;
}
interface RouterBaseConfigI {
routes: RouteTypeI[];
basename?: string;
beforeEachMount?: BeforeEachMountI;
autoDocumentTitle?: boolean | ((currentPathRoutes: RouteTypeExtendsI[]) => string);
_isDefined: boolean;
_defineId: number;
navigate: NavigateFunction$1;
_navigateRef: {
current: NavigateFunction$1 | null;
};
}
interface RouterConfigI extends Omit<RouterBaseConfigI, "_isDefined" | "_defineId" | "navigate" | "_navigateRef"> {
/** Lazy component or before next called */
LoadingComponent?: React.FunctionComponent<any>;
}
type PermissionModeType = "parent" | "children";
type CodeType = string | string[] | FnCodeType;
type FnCodeType = (route: RouteTypeI) => boolean;
type NextOptionsType = {
name?: string;
path?: string;
} | React.ComponentType<any>;
interface BeforeEachMountI {
(to: RouteTypeI, next: (nextOptionsType?: NextOptionsType) => void): void;
}
interface BeforeEnterI {
(to: RouteTypeI | undefined, next: (nextOptionsType?: NextOptionsType) => void): void;
}
interface BeforeLeaveI {
(to: RouteTypeI | undefined, from: RouteTypeI | undefined, next: (ReplaceComponent?: any) => void): void;
}
interface RouteTypePropsI {
beforeEnter?: BeforeEnterI;
beforeEachMount?: BeforeEachMountI;
Component: any;
props: RouteTypeInputI["props"];
_route: RouteTypeI;
[prop: string]: any;
}
type RouteComponentType = React.LazyExoticComponent<any> | React.FC<any>;
type Simplify<T> = {
[P in keyof T]: T[P];
};
type SetOptional<T, K extends keyof T> = Simplify<Partial<Pick<T, K>> & Pick<T, Exclude<keyof T, K>>>;
type RoutePathCallNullTypeI = SetOptional<RouteTypeI, "path">;
interface RouteTypeI {
name: string;
path: string;
index?: boolean;
component?: RouteComponentType;
beforeEnter?: BeforeEnterI;
beforeLeave?: BeforeLeaveI;
items?: RouteTypeI[];
children?: RoutePathCallNullTypeI[];
title?: string;
hidden?: boolean;
icon?: string;
code?: CodeType;
parentName?: string;
fullscreen?: boolean;
props?: Record<string, any>;
redirect?: string;
type?: "real" | "null";
breadcrumbs?: {
isRoot?: boolean;
text?: string | React.ReactNode | ((route: RouteTypeI) => React.ReactNode);
hidden?: boolean;
};
meta?: Record<string, any>;
}
interface RouteTypeInputI extends RouteTypeI {
_relativePath?: string;
_level: number;
path: string;
items?: RouteTypeInputI[];
children?: RouteTypeInputI[];
parent?: RouteTypeInputI;
}
interface RouteTypeExtendsI extends RouteTypeInputI {
parent?: RouteTypeExtendsI;
parentAbs?: RouteTypeExtendsI;
meta: Record<string, any>;
items?: RouteTypeExtendsI[];
children?: RouteTypeExtendsI[];
_isHasAuth: boolean;
_route: RouteTypeInputI;
_component?: RouteComponentType;
_currentComponent?: RouteComponentType;
_itemsAndChildren?: RouteTypeExtendsI[];
/**
* The route permission irrelevant to the parent is used to
* calculate the permission of the parent route for the child route in permissionType is 'children' mode
*/
_currentIsHasAuth?: boolean;
_props?: RouteTypePropsI;
}
interface AddRoutesI {
(routes: RouteTypeI[]): void;
}
interface UpdateRoutesI {
(routes: {
routeName: string;
routeData: Partial<RouteTypeI>;
}[]): void;
}
interface RoutesBaseStateStruct {
routesMap: RoutesMapI;
routes: RouteTypeI[];
flattenRoutes: RouteTypeI[];
basename?: string;
}
interface ExtraNavigateOptions extends NavigateOptions {
params?: Record<string, any>;
query?: Record<string, any>;
}
interface NavigateFunction$1 {
(to: To, options?: ExtraNavigateOptions): void;
(delta: number): void;
}
interface RoutesStateStruct extends RoutesBaseStateStruct {
navigate: NavigateFunction$1;
location: Location;
currentRoute: RouteTypeExtendsI;
authRoutes: RouteTypeExtendsI[];
query: ParsedQuery<string>;
params: Record<string, number | string>;
}
interface RoutesMapI extends Record<string, RouteTypeExtendsI> {
}
/** Dynamically add routing method */
declare function useAddRoutes(): AddRoutesI;
declare function useRemoveRoutes(): (routeNames: string[]) => void;
declare function useUpdateRoutes(): UpdateRoutesI;
declare function useHistory(): OldBrowserHistory;
interface MRouterPropsI {
permissionList?: string[];
permissionMode?: PermissionModeType;
wrapComponent?: React.FunctionComponent<any>;
hasAuth?: boolean;
routerConfig: RouterBaseConfigI;
children?: (children: React.ReactNode) => React.ReactNode;
}
declare function defineRouterConfig(routerConfig: RouterConfigI): RouterBaseConfigI;
declare function useBeforeLeave(fn: BeforeLeaveI, options?: {
beforeunload?: ((event?: Event) => any) | ((event?: Event) => Promise<any>);
}): void;
interface NavigateFunction {
(to: To$1, options?: ExtraNavigateOptions): void;
(delta: number): void;
}
declare const useNavigate: () => NavigateFunction;
declare function useRouter(): RoutesStateStruct;
declare const MRouter: React.FC<MRouterPropsI>;
declare const MHRouter: React.FC<MRouterPropsI>;
export { MHRouter, MRouter, RouteTypeExtendsI, RouteTypeI, RouterConfigI, RoutesMapI, defineRouterConfig, useAddRoutes, useBeforeLeave, useHistory, useNavigate, useRemoveRoutes, useRouter, useUpdateRoutes };