@grafana/faro-react
Version:
Faro package that enables easier integration in projects built with React.
69 lines (68 loc) • 2.62 kB
TypeScript
import type { ReactElement, ReactNode } from 'react';
import type { ReactRouterLocation } from '../types';
interface IndexRouteObjectV6DataRouter {
caseSensitive?: boolean;
children?: undefined;
element?: React.ReactNode | null;
index: true;
path?: string;
}
export interface NonIndexRouteObjectV6DataRouter {
caseSensitive?: boolean;
children?: RouteObjectV6DataRouter[];
element?: React.ReactNode | null;
index?: false;
path?: string;
}
export type RouteObjectV6DataRouter = IndexRouteObjectV6DataRouter | NonIndexRouteObjectV6DataRouter;
export interface ReactRouterV6BaseRouteObject {
action?: (...args: any[]) => any;
caseSensitive?: boolean;
hasErrorBoundary?: boolean;
handle?: any;
id?: string;
loader?: (...args: any[]) => any;
path?: string;
shouldRevalidate?: (...args: any[]) => any;
}
export type ReactRouterV6RouteObject = ReactRouterV6BaseRouteObject & ({
children?: undefined;
index: true;
} | {
children?: ReactRouterV6RouteObject[];
index?: false;
});
export interface ReactRouterV6RoutesProps {
children?: ReactNode;
location?: Partial<ReactRouterLocation> | string;
routesComponent?: ReactRouterV6RoutesShape;
}
export type ReactRouterV6Params<Key extends string = string> = {
readonly [key in Key]: string | undefined;
};
export interface ReactRouterV6RouteMatch<ParamKey extends string = string> {
params: ReactRouterV6Params<ParamKey>;
pathname: string;
pathnameBase: string;
route: ReactRouterV6RouteObject;
}
export type ReactRouterV6CreateRoutesFromChildren = (children: ReactNode) => ReactRouterV6RouteObject[] | RouteObjectV6DataRouter[];
export type ReactRouterV6MatchRoutes = (routes: ReactRouterV6RouteObject[], location: Partial<ReactRouterLocation> | string, basename?: string | undefined) => ReactRouterV6RouteMatch[] | null;
export type ReactRouterV6RoutesShape = (props: ReactRouterV6RoutesProps) => ReactElement | null;
export type ReactRouterV6UseLocation = () => ReactRouterLocation;
export type ReactRouterV6UseNavigationType = () => 'POP' | 'PUSH' | 'REPLACE';
export interface ReactRouterV6Dependencies {
createRoutesFromChildren: ReactRouterV6CreateRoutesFromChildren;
matchRoutes: ReactRouterV6MatchRoutes;
Routes: ReactRouterV6RoutesShape;
useLocation: ReactRouterV6UseLocation;
useNavigationType: ReactRouterV6UseNavigationType;
}
export interface ReactRouterV6DataRouterDependencies {
matchRoutes: ReactRouterV6MatchRoutes;
}
export type EventRouteTransitionAttributes = {
fromRoute?: string;
fromUrl?: string;
};
export {};