@tanstack/react-router 0.0.1-beta.209 → 0.0.1-beta.210

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (72) hide show
  1. package/build/cjs/CatchBoundary.js +125 -0
  2. package/build/cjs/CatchBoundary.js.map +1 -0
  3. package/build/cjs/Matches.js +223 -0
  4. package/build/cjs/Matches.js.map +1 -0
  5. package/build/cjs/RouterProvider.js +99 -53
  6. package/build/cjs/RouterProvider.js.map +1 -1
  7. package/build/cjs/index.js +46 -37
  8. package/build/cjs/index.js.map +1 -1
  9. package/build/cjs/lazyRouteComponent.js +57 -0
  10. package/build/cjs/lazyRouteComponent.js.map +1 -0
  11. package/build/cjs/link.js +150 -0
  12. package/build/cjs/link.js.map +1 -0
  13. package/build/cjs/route.js +9 -5
  14. package/build/cjs/route.js.map +1 -1
  15. package/build/cjs/router.js.map +1 -1
  16. package/build/cjs/searchParams.js.map +1 -1
  17. package/build/cjs/useBlocker.js +64 -0
  18. package/build/cjs/useBlocker.js.map +1 -0
  19. package/build/cjs/useNavigate.js +78 -0
  20. package/build/cjs/useNavigate.js.map +1 -0
  21. package/build/cjs/useParams.js +28 -0
  22. package/build/cjs/useParams.js.map +1 -0
  23. package/build/cjs/useSearch.js +27 -0
  24. package/build/cjs/useSearch.js.map +1 -0
  25. package/build/cjs/utils.js +30 -1
  26. package/build/cjs/utils.js.map +1 -1
  27. package/build/esm/index.js +491 -514
  28. package/build/esm/index.js.map +1 -1
  29. package/build/stats-html.html +1 -1
  30. package/build/stats-react.json +484 -208
  31. package/build/types/CatchBoundary.d.ts +33 -0
  32. package/build/types/Matches.d.ts +31 -0
  33. package/build/types/RouterProvider.d.ts +42 -18
  34. package/build/types/fileRoute.d.ts +7 -7
  35. package/build/types/index.d.ts +13 -7
  36. package/build/types/injectHtml.d.ts +0 -0
  37. package/build/types/lazyRouteComponent.d.ts +2 -0
  38. package/build/types/link.d.ts +10 -3
  39. package/build/types/route.d.ts +39 -7
  40. package/build/types/router.d.ts +6 -7
  41. package/build/types/useBlocker.d.ts +8 -0
  42. package/build/types/useNavigate.d.ts +20 -0
  43. package/build/types/useParams.d.ts +7 -0
  44. package/build/types/useSearch.d.ts +7 -0
  45. package/build/types/utils.d.ts +17 -0
  46. package/build/umd/index.development.js +492 -513
  47. package/build/umd/index.development.js.map +1 -1
  48. package/build/umd/index.production.js +1 -1
  49. package/build/umd/index.production.js.map +1 -1
  50. package/package.json +2 -2
  51. package/src/CatchBoundary.tsx +97 -0
  52. package/src/Matches.tsx +315 -0
  53. package/src/RouterProvider.tsx +317 -251
  54. package/src/index.tsx +17 -8
  55. package/src/injectHtml.ts +28 -0
  56. package/src/lazyRouteComponent.tsx +33 -0
  57. package/src/{link.ts → link.tsx} +163 -3
  58. package/src/location.ts +1 -0
  59. package/src/route.ts +86 -16
  60. package/src/router.ts +6 -7
  61. package/src/searchParams.ts +1 -0
  62. package/src/useBlocker.tsx +34 -0
  63. package/src/useNavigate.tsx +109 -0
  64. package/src/useParams.tsx +25 -0
  65. package/src/useSearch.tsx +25 -0
  66. package/src/utils.ts +83 -3
  67. package/build/cjs/react.js +0 -620
  68. package/build/cjs/react.js.map +0 -1
  69. package/build/types/RouteMatch.d.ts +0 -23
  70. package/build/types/react.d.ts +0 -141
  71. package/src/RouteMatch.ts +0 -28
  72. package/src/react.tsx +0 -1013
@@ -1 +0,0 @@
1
- {"version":3,"file":"react.js","sources":["../../src/react.tsx"],"sourcesContent":["import * as React from 'react'\nimport invariant from 'tiny-invariant'\nimport warning from 'tiny-warning'\nimport {\n LinkOptions,\n ToOptions,\n ResolveRelativePath,\n NavigateOptions,\n} from './link'\nimport {\n AnySearchSchema,\n AnyPathParams,\n AnyContext,\n AnyRoute,\n rootRouteId,\n} from './route'\nimport {\n RoutePaths,\n RouteByPath,\n RouteIds,\n ParseRoute,\n RoutesById,\n RouteById,\n AllParams,\n} from './routeInfo'\nimport { RegisteredRouter, RouterOptions, Router, RouterState } from './router'\nimport { RouteMatch } from './RouteMatch'\nimport { NoInfer, functionalUpdate, last } from './utils'\nimport { MatchRouteOptions, RouterContext } from './RouterProvider'\nimport { routerContext } from './RouterProvider'\n\nconst useLayoutEffect =\n typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect\n\nexport type RouteProps<\n TFullSearchSchema extends Record<string, any> = AnySearchSchema,\n TAllParams extends AnyPathParams = AnyPathParams,\n TAllContext extends Record<string, any> = AnyContext,\n> = {\n useMatch: <TSelected = TAllContext>(opts?: {\n select?: (search: TAllContext) => TSelected\n }) => TSelected\n useRouteContext: <TSelected = TAllContext>(opts?: {\n select?: (search: TAllContext) => TSelected\n }) => TSelected\n useSearch: <TSelected = TFullSearchSchema>(opts?: {\n select?: (search: TFullSearchSchema) => TSelected\n }) => TSelected\n useParams: <TSelected = TAllParams>(opts?: {\n select?: (search: TAllParams) => TSelected\n }) => TSelected\n}\n\nexport type ErrorRouteProps<\n TFullSearchSchema extends Record<string, any> = AnySearchSchema,\n TAllParams extends AnyPathParams = AnyPathParams,\n TAllContext extends Record<string, any> = AnyContext,\n> = {\n error: unknown\n info: { componentStack: string }\n} & RouteProps<TFullSearchSchema, TAllParams, TAllContext>\n\nexport type PendingRouteProps<\n TFullSearchSchema extends Record<string, any> = AnySearchSchema,\n TAllParams extends AnyPathParams = AnyPathParams,\n TAllContext extends Record<string, any> = AnyContext,\n> = RouteProps<TFullSearchSchema, TAllParams, TAllContext>\n\n//\n\ntype ReactNode = any\n\nexport type SyncRouteComponent<TProps> =\n | ((props: TProps) => ReactNode)\n | React.LazyExoticComponent<(props: TProps) => ReactNode>\n\nexport type AsyncRouteComponent<TProps> = SyncRouteComponent<TProps> & {\n preload?: () => Promise<void>\n}\n\nexport type RouteComponent<\n TFullSearchSchema extends Record<string, any>,\n TAllParams extends AnyPathParams,\n TAllContext extends Record<string, any>,\n> = AsyncRouteComponent<RouteProps<TFullSearchSchema, TAllParams, TAllContext>>\n\nexport type ErrorRouteComponent<\n TFullSearchSchema extends Record<string, any>,\n TAllParams extends AnyPathParams,\n TAllContext extends Record<string, any>,\n> = AsyncRouteComponent<\n ErrorRouteProps<TFullSearchSchema, TAllParams, TAllContext>\n>\n\nexport type PendingRouteComponent<\n TFullSearchSchema extends Record<string, any>,\n TAllParams extends AnyPathParams,\n TAllContext extends Record<string, any>,\n> = AsyncRouteComponent<\n PendingRouteProps<TFullSearchSchema, TAllParams, TAllContext>\n>\n\nexport type AnyRouteComponent = RouteComponent<any, any, any>\n\nexport function lazyRouteComponent<\n T extends Record<string, any>,\n TKey extends keyof T = 'default',\n>(\n importer: () => Promise<T>,\n exportName?: TKey,\n): T[TKey] extends (props: infer TProps) => any\n ? AsyncRouteComponent<TProps>\n : never {\n let loadPromise: Promise<any>\n\n const load = () => {\n if (!loadPromise) {\n loadPromise = importer()\n }\n\n return loadPromise\n }\n\n const lazyComp = React.lazy(async () => {\n const moduleExports = await load()\n const comp = moduleExports[exportName ?? 'default']\n return {\n default: comp,\n }\n })\n\n ;(lazyComp as any).preload = load\n\n return lazyComp as any\n}\n\nexport type LinkPropsOptions<\n TRouteTree extends AnyRoute = RegisteredRouter['routeTree'],\n TFrom extends RoutePaths<TRouteTree> = '/',\n TTo extends string = '',\n TMaskFrom extends RoutePaths<TRouteTree> = '/',\n TMaskTo extends string = '',\n> = LinkOptions<TRouteTree, TFrom, TTo, TMaskFrom, TMaskTo> & {\n // A function that returns additional props for the `active` state of this link. These props override other props passed to the link (`style`'s are merged, `className`'s are concatenated)\n activeProps?:\n | React.AnchorHTMLAttributes<HTMLAnchorElement>\n | (() => React.AnchorHTMLAttributes<HTMLAnchorElement>)\n // A function that returns additional props for the `inactive` state of this link. These props override other props passed to the link (`style`'s are merged, `className`'s are concatenated)\n inactiveProps?:\n | React.AnchorHTMLAttributes<HTMLAnchorElement>\n | (() => React.AnchorHTMLAttributes<HTMLAnchorElement>)\n // If set to `true`, the link's underlying navigate() call will be wrapped in a `React.startTransition` call. Defaults to `true`.\n startTransition?: boolean\n}\n\nexport type MakeUseMatchRouteOptions<\n TRouteTree extends AnyRoute = RegisteredRouter['routeTree'],\n TFrom extends RoutePaths<TRouteTree> = '/',\n TTo extends string = '',\n TMaskFrom extends RoutePaths<TRouteTree> = '/',\n TMaskTo extends string = '',\n> = ToOptions<AnyRoute, TFrom, TTo, TMaskFrom, TMaskTo> & MatchRouteOptions\n\nexport type MakeMatchRouteOptions<\n TRouteTree extends AnyRoute = RegisteredRouter['routeTree'],\n TFrom extends RoutePaths<TRouteTree> = '/',\n TTo extends string = '',\n TMaskFrom extends RoutePaths<TRouteTree> = '/',\n TMaskTo extends string = '',\n> = ToOptions<TRouteTree, TFrom, TTo, TMaskFrom, TMaskTo> &\n MatchRouteOptions & {\n // If a function is passed as a child, it will be given the `isActive` boolean to aid in further styling on the element it returns\n children?:\n | ((\n params?: RouteByPath<\n TRouteTree,\n ResolveRelativePath<TFrom, NoInfer<TTo>>\n >['types']['allParams'],\n ) => ReactNode)\n | React.ReactNode\n }\n\nexport type MakeLinkPropsOptions<\n TRouteTree extends AnyRoute = RegisteredRouter['routeTree'],\n TFrom extends RoutePaths<TRouteTree> = '/',\n TTo extends string = '',\n TMaskFrom extends RoutePaths<TRouteTree> = '/',\n TMaskTo extends string = '',\n> = LinkPropsOptions<TRouteTree, TFrom, TTo, TMaskFrom, TMaskTo> &\n React.AnchorHTMLAttributes<HTMLAnchorElement>\n\nexport type MakeLinkOptions<\n TRouteTree extends AnyRoute = RegisteredRouter['routeTree'],\n TFrom extends RoutePaths<TRouteTree> = '/',\n TTo extends string = '',\n TMaskFrom extends RoutePaths<TRouteTree> = '/',\n TMaskTo extends string = '',\n> = LinkPropsOptions<TRouteTree, TFrom, TTo, TMaskFrom, TMaskTo> &\n Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, 'children'> & {\n // If a function is passed as a child, it will be given the `isActive` boolean to aid in further styling on the element it returns\n children?:\n | React.ReactNode\n | ((state: { isActive: boolean }) => React.ReactNode)\n }\n\nexport type PromptProps = {\n message: string\n condition?: boolean | any\n children?: ReactNode\n}\n\n//\n\nexport function useLinkProps<\n TRouteTree extends AnyRoute = RegisteredRouter['routeTree'],\n TFrom extends RoutePaths<TRouteTree> = '/',\n TTo extends string = '',\n TMaskFrom extends RoutePaths<TRouteTree> = '/',\n TMaskTo extends string = '',\n>(\n options: MakeLinkPropsOptions<TRouteTree, TFrom, TTo, TMaskFrom, TMaskTo>,\n): React.AnchorHTMLAttributes<HTMLAnchorElement> {\n const { buildLink, state: routerState } = useRouter()\n const match = useMatch({\n strict: false,\n })\n\n const {\n // custom props\n type,\n children,\n target,\n activeProps = () => ({ className: 'active' }),\n inactiveProps = () => ({}),\n activeOptions,\n disabled,\n hash,\n search,\n params,\n to,\n state,\n mask,\n preload,\n preloadDelay,\n replace,\n // element props\n style,\n className,\n onClick,\n onFocus,\n onMouseEnter,\n onMouseLeave,\n onTouchStart,\n ...rest\n } = options\n\n const linkInfo = buildLink(routerState, {\n from: options.to ? match.pathname : undefined,\n ...options,\n } as any)\n\n if (linkInfo.type === 'external') {\n const { href } = linkInfo\n return { href }\n }\n\n const {\n handleClick,\n handleFocus,\n handleEnter,\n handleLeave,\n handleTouchStart,\n isActive,\n next,\n } = linkInfo\n\n const handleReactClick = (e: Event) => {\n if (options.startTransition ?? true) {\n ;(React.startTransition || ((d) => d))(() => {\n handleClick(e)\n })\n }\n }\n\n const composeHandlers =\n (handlers: (undefined | ((e: any) => void))[]) =>\n (e: React.SyntheticEvent) => {\n if (e.persist) e.persist()\n handlers.filter(Boolean).forEach((handler) => {\n if (e.defaultPrevented) return\n handler!(e)\n })\n }\n\n // Get the active props\n const resolvedActiveProps: React.HTMLAttributes<HTMLAnchorElement> = isActive\n ? functionalUpdate(activeProps as any, {}) ?? {}\n : {}\n\n // Get the inactive props\n const resolvedInactiveProps: React.HTMLAttributes<HTMLAnchorElement> =\n isActive ? {} : functionalUpdate(inactiveProps, {}) ?? {}\n\n return {\n ...resolvedActiveProps,\n ...resolvedInactiveProps,\n ...rest,\n href: disabled\n ? undefined\n : next.maskedLocation\n ? next.maskedLocation.href\n : next.href,\n onClick: composeHandlers([onClick, handleReactClick]),\n onFocus: composeHandlers([onFocus, handleFocus]),\n onMouseEnter: composeHandlers([onMouseEnter, handleEnter]),\n onMouseLeave: composeHandlers([onMouseLeave, handleLeave]),\n onTouchStart: composeHandlers([onTouchStart, handleTouchStart]),\n target,\n style: {\n ...style,\n ...resolvedActiveProps.style,\n ...resolvedInactiveProps.style,\n },\n className:\n [\n className,\n resolvedActiveProps.className,\n resolvedInactiveProps.className,\n ]\n .filter(Boolean)\n .join(' ') || undefined,\n ...(disabled\n ? {\n role: 'link',\n 'aria-disabled': true,\n }\n : undefined),\n ['data-status']: isActive ? 'active' : undefined,\n }\n}\n\nexport interface LinkComponent<TProps extends Record<string, any> = {}> {\n <\n TRouteTree extends AnyRoute = RegisteredRouter['routeTree'],\n TFrom extends RoutePaths<TRouteTree> = '/',\n TTo extends string = '',\n TMaskFrom extends RoutePaths<TRouteTree> = '/',\n TMaskTo extends string = '',\n >(\n props: MakeLinkOptions<TRouteTree, TFrom, TTo, TMaskFrom, TMaskTo> &\n TProps &\n React.RefAttributes<HTMLAnchorElement>,\n ): ReactNode\n}\n\nexport const Link: LinkComponent = React.forwardRef((props: any, ref) => {\n const linkProps = useLinkProps(props)\n\n return (\n <a\n {...{\n ref: ref as any,\n ...linkProps,\n children:\n typeof props.children === 'function'\n ? props.children({\n isActive: (linkProps as any)['data-status'] === 'active',\n })\n : props.children,\n }}\n />\n )\n}) as any\n\nexport function Navigate<\n TRouteTree extends AnyRoute = RegisteredRouter['routeTree'],\n TFrom extends RoutePaths<TRouteTree> = '/',\n TTo extends string = '',\n TMaskFrom extends RoutePaths<TRouteTree> = '/',\n TMaskTo extends string = '',\n>(props: NavigateOptions<TRouteTree, TFrom, TTo, TMaskFrom, TMaskTo>): null {\n const { navigate } = useRouter()\n const match = useMatch({ strict: false })\n\n useLayoutEffect(() => {\n navigate({\n from: props.to ? match.pathname : undefined,\n ...props,\n } as any)\n }, [])\n\n return null\n}\n\nexport const matchesContext = React.createContext<RouteMatch[]>(null!)\nexport type RouterProps<\n TRouteTree extends AnyRoute = RegisteredRouter['routeTree'],\n TDehydrated extends Record<string, any> = Record<string, any>,\n> = Omit<RouterOptions<TRouteTree, TDehydrated>, 'context'> & {\n router: Router<TRouteTree>\n context?: Partial<RouterOptions<TRouteTree, TDehydrated>['context']>\n}\n\nexport function useRouter<\n TRouteTree extends AnyRoute = RegisteredRouter['routeTree'],\n>(): RouterContext<TRouteTree> {\n const resolvedContext = window.__TSR_ROUTER_CONTEXT__ || routerContext\n const value = React.useContext(resolvedContext)\n warning(value, 'useRouter must be used inside a <RouterProvider> component!')\n return value as any\n}\n\nexport function useRouterState<\n TSelected = RouterState<RegisteredRouter['routeTree']>,\n>(opts?: {\n select: (state: RouterState<RegisteredRouter['routeTree']>) => TSelected\n}): TSelected {\n const { state } = useRouter()\n // return useStore(router.__store, opts?.select as any)\n return opts?.select ? opts.select(state) : (state as any)\n}\n\nexport function useMatches<T = RouteMatch[]>(opts?: {\n select?: (matches: RouteMatch[]) => T\n}): T {\n const contextMatches = React.useContext(matchesContext)\n\n return useRouterState({\n select: (state) => {\n const matches = state.matches.slice(\n state.matches.findIndex((d) => d.id === contextMatches[0]?.id),\n )\n return opts?.select ? opts.select(matches) : (matches as T)\n },\n })\n}\n\ntype StrictOrFrom<TFrom> =\n | {\n from: TFrom\n strict?: true\n }\n | {\n from?: never\n strict: false\n }\n\nexport function useMatch<\n TRouteTree extends AnyRoute = RegisteredRouter['routeTree'],\n TFrom extends RouteIds<TRouteTree> = RouteIds<TRouteTree>,\n TStrict extends boolean = true,\n TRouteMatchState = RouteMatch<TRouteTree, TFrom>,\n TSelected = TRouteMatchState,\n>(\n opts: StrictOrFrom<TFrom> & {\n select?: (match: TRouteMatchState) => TSelected\n },\n): TStrict extends true ? TRouteMatchState : TRouteMatchState | undefined {\n const nearestMatch = React.useContext(matchesContext)[0]!\n const nearestMatchRouteId = nearestMatch?.routeId\n\n const matchRouteId = useRouterState({\n select: (state) => {\n const match = opts?.from\n ? state.matches.find((d) => d.routeId === opts?.from)\n : state.matches.find((d) => d.id === nearestMatch.id)\n\n return match!.routeId\n },\n })\n\n if (opts?.strict ?? true) {\n invariant(\n nearestMatchRouteId == matchRouteId,\n `useMatch(\"${\n matchRouteId as string\n }\") is being called in a component that is meant to render the '${nearestMatchRouteId}' route. Did you mean to 'useMatch(\"${\n matchRouteId as string\n }\", { strict: false })' or 'useRoute(\"${\n matchRouteId as string\n }\")' instead?`,\n )\n }\n\n const matchSelection = useRouterState({\n select: (state) => {\n const match = opts?.from\n ? state.matches.find((d) => d.routeId === opts?.from)\n : state.matches.find((d) => d.id === nearestMatch.id)\n\n invariant(\n match,\n `Could not find ${\n opts?.from\n ? `an active match from \"${opts.from}\"`\n : 'a nearest match!'\n }`,\n )\n\n return opts?.select ? opts.select(match as any) : match\n },\n })\n\n return matchSelection as any\n}\n\nexport type RouteFromIdOrRoute<\n T,\n TRouteTree extends AnyRoute = RegisteredRouter['routeTree'],\n> = T extends ParseRoute<TRouteTree>\n ? T\n : T extends RouteIds<TRouteTree>\n ? RoutesById<TRouteTree>[T]\n : T extends string\n ? RouteIds<TRouteTree>\n : never\n\nexport function useRouteContext<\n TRouteTree extends AnyRoute = RegisteredRouter['routeTree'],\n TFrom extends RouteIds<TRouteTree> = RouteIds<TRouteTree>,\n TStrict extends boolean = true,\n TRouteContext = RouteById<TRouteTree, TFrom>['types']['allContext'],\n TSelected = TRouteContext,\n>(\n opts: StrictOrFrom<TFrom> & {\n select?: (search: TRouteContext) => TSelected\n },\n): TStrict extends true ? TSelected : TSelected | undefined {\n return useMatch({\n ...(opts as any),\n select: (match: RouteMatch) =>\n opts?.select\n ? opts.select(match.context as TRouteContext)\n : match.context,\n })\n}\n\nexport function useSearch<\n TRouteTree extends AnyRoute = RegisteredRouter['routeTree'],\n TFrom extends RouteIds<TRouteTree> = RouteIds<TRouteTree>,\n TStrict extends boolean = true,\n TSearch = RouteById<TRouteTree, TFrom>['types']['fullSearchSchema'],\n TSelected = TSearch,\n>(\n opts: StrictOrFrom<TFrom> & {\n select?: (search: TSearch) => TSelected\n },\n): TStrict extends true ? TSelected : TSelected | undefined {\n return useMatch({\n ...(opts as any),\n select: (match: RouteMatch) => {\n return opts?.select ? opts.select(match.search as TSearch) : match.search\n },\n })\n}\n\nexport function useParams<\n TRouteTree extends AnyRoute = RegisteredRouter['routeTree'],\n TFrom extends RouteIds<TRouteTree> = RouteIds<TRouteTree>,\n TDefaultSelected = AllParams<TRouteTree> &\n RouteById<TRouteTree, TFrom>['types']['allParams'],\n TSelected = TDefaultSelected,\n>(\n opts: StrictOrFrom<TFrom> & {\n select?: (search: TDefaultSelected) => TSelected\n },\n): TSelected {\n return useRouterState({\n select: (state: any) => {\n const params = (last(state.matches) as any)?.params\n return opts?.select ? opts.select(params) : params\n },\n })\n}\n\nexport function useNavigate<\n TRouteTree extends AnyRoute = RegisteredRouter['routeTree'],\n TDefaultFrom extends RoutePaths<TRouteTree> = '/',\n>(defaultOpts?: { from?: TDefaultFrom }) {\n const { navigate } = useRouter()\n const match = useMatch({\n strict: false,\n })\n return React.useCallback(\n <\n TFrom extends RoutePaths<TRouteTree> = TDefaultFrom,\n TTo extends string = '',\n TMaskFrom extends RoutePaths<TRouteTree> = '/',\n TMaskTo extends string = '',\n >(\n opts?: NavigateOptions<TRouteTree, TFrom, TTo, TMaskFrom, TMaskTo>,\n ) => {\n return navigate({\n from: opts?.to ? match.pathname : undefined,\n ...defaultOpts,\n ...(opts as any),\n })\n },\n [],\n )\n}\n\nexport function typedNavigate<\n TRouteTree extends AnyRoute = RegisteredRouter['routeTree'],\n TDefaultFrom extends RoutePaths<TRouteTree> = '/',\n>(navigate: (opts: NavigateOptions<any>) => Promise<void>) {\n return navigate as <\n TFrom extends RoutePaths<TRouteTree> = TDefaultFrom,\n TTo extends string = '',\n TMaskFrom extends RoutePaths<TRouteTree> = '/',\n TMaskTo extends string = '',\n >(\n opts?: NavigateOptions<TRouteTree, TFrom, TTo, TMaskFrom, TMaskTo>,\n ) => Promise<void>\n}\n\nexport function useMatchRoute<\n TRouteTree extends AnyRoute = RegisteredRouter['routeTree'],\n>() {\n const { state, matchRoute } = useRouter()\n\n return React.useCallback(\n <\n TFrom extends RoutePaths<TRouteTree> = '/',\n TTo extends string = '',\n TMaskFrom extends RoutePaths<TRouteTree> = '/',\n TMaskTo extends string = '',\n TResolved extends string = ResolveRelativePath<TFrom, NoInfer<TTo>>,\n >(\n opts: MakeUseMatchRouteOptions<\n TRouteTree,\n TFrom,\n TTo,\n TMaskFrom,\n TMaskTo\n >,\n ): false | RouteById<TRouteTree, TResolved>['types']['allParams'] => {\n const { pending, caseSensitive, ...rest } = opts\n\n return matchRoute(state, rest as any, {\n pending,\n caseSensitive,\n })\n },\n [],\n )\n}\n\nexport function Matches() {\n const { routesById, state } = useRouter()\n\n // const matches = useRouterState({\n // select: (state) => {\n // return state.matches\n // },\n // })\n\n const { matches } = state\n\n const locationKey = useRouterState({\n select: (d) => d.resolvedLocation.state?.key,\n })\n\n const route = routesById[rootRouteId]\n\n const errorComponent = React.useCallback(\n (props: any) => {\n return React.createElement(ErrorComponent, {\n ...props,\n useMatch: route.useMatch,\n useRouteContext: route.useRouteContext,\n useSearch: route.useSearch,\n useParams: route.useParams,\n })\n },\n [route],\n )\n\n return (\n <matchesContext.Provider value={matches}>\n <CatchBoundary\n resetKey={locationKey}\n errorComponent={errorComponent}\n onCatch={() => {\n warning(\n false,\n `Error in router! Consider setting an 'errorComponent' in your RootRoute! 👍`,\n )\n }}\n >\n {matches.length ? <Match matches={matches} /> : null}\n </CatchBoundary>\n </matchesContext.Provider>\n )\n}\n\nexport function MatchRoute<\n TRouteTree extends AnyRoute = RegisteredRouter['routeTree'],\n TFrom extends RoutePaths<TRouteTree> = '/',\n TTo extends string = '',\n TMaskFrom extends RoutePaths<TRouteTree> = '/',\n TMaskTo extends string = '',\n>(\n props: MakeMatchRouteOptions<TRouteTree, TFrom, TTo, TMaskFrom, TMaskTo>,\n): any {\n const matchRoute = useMatchRoute()\n const params = matchRoute(props as any)\n\n if (typeof props.children === 'function') {\n return (props.children as any)(params)\n }\n\n return !!params ? props.children : null\n}\n\nexport function Outlet() {\n const matches = React.useContext(matchesContext).slice(1)\n\n if (!matches[0]) {\n return null\n }\n\n return <Match matches={matches} />\n}\n\nconst defaultPending = () => null\n\nfunction Match({ matches }: { matches: RouteMatch[] }) {\n const { options, routesById } = useRouter()\n const match = matches[0]!\n const routeId = match?.routeId\n const route = routesById[routeId]\n const locationKey = useRouterState({\n select: (s) => s.resolvedLocation.state?.key,\n })\n\n const PendingComponent = (route.options.pendingComponent ??\n options.defaultPendingComponent ??\n defaultPending) as any\n\n const routeErrorComponent =\n route.options.errorComponent ??\n options.defaultErrorComponent ??\n ErrorComponent\n\n const ResolvedSuspenseBoundary =\n route.options.wrapInSuspense ?? !route.isRoot\n ? React.Suspense\n : SafeFragment\n\n const ResolvedCatchBoundary = !!routeErrorComponent\n ? CatchBoundary\n : SafeFragment\n\n const errorComponent = React.useCallback(\n (props: any) => {\n return React.createElement(routeErrorComponent, {\n ...props,\n useMatch: route.useMatch,\n useRouteContext: route.useRouteContext,\n useSearch: route.useSearch,\n useParams: route.useParams,\n })\n },\n [route],\n )\n\n return (\n <matchesContext.Provider value={matches}>\n <ResolvedSuspenseBoundary\n fallback={React.createElement(PendingComponent, {\n useMatch: route.useMatch,\n useRouteContext: route.useRouteContext,\n useSearch: route.useSearch,\n useParams: route.useParams,\n })}\n >\n <ResolvedCatchBoundary\n resetKey={locationKey}\n errorComponent={errorComponent}\n onCatch={() => {\n warning(false, `Error in route match: ${match.id}`)\n }}\n >\n <MatchInner match={match} />\n </ResolvedCatchBoundary>\n </ResolvedSuspenseBoundary>\n </matchesContext.Provider>\n )\n}\n\nfunction MatchInner({ match }: { match: RouteMatch }): any {\n const { options, routesById } = useRouter()\n const route = routesById[match.routeId]\n\n if (match.status === 'error') {\n throw match.error\n }\n\n if (match.status === 'pending') {\n throw match.loadPromise\n }\n\n if (match.status === 'success') {\n let comp = route.options.component ?? options.defaultComponent\n\n if (comp) {\n return React.createElement(comp, {\n useMatch: route.useMatch,\n useRouteContext: route.useRouteContext as any,\n useSearch: route.useSearch,\n useParams: route.useParams as any,\n } as any)\n }\n\n return <Outlet />\n }\n\n invariant(\n false,\n 'Idle routeMatch status encountered during rendering! You should never see this. File an issue!',\n )\n}\n\nfunction SafeFragment(props: any) {\n return <>{props.children}</>\n}\n\n// export function useInjectHtml() {\n// const { } = useRouter()\n\n// return React.useCallback(\n// (html: string | (() => Promise<string> | string)) => {\n// router.injectHtml(html)\n// },\n// [],\n// )\n// }\n\n// export function useDehydrate() {\n// const { } = useRouter()\n\n// return React.useCallback(function dehydrate<T>(\n// key: any,\n// data: T | (() => Promise<T> | T),\n// ) {\n// return router.dehydrateData(key, data)\n// },\n// [])\n// }\n\n// export function useHydrate() {\n// const { } = useRouter()\n\n// return function hydrate<T = unknown>(key: any) {\n// return router.hydrateData(key) as T\n// }\n// }\n\n// This is the messiest thing ever... I'm either seriously tired (likely) or\n// there has to be a better way to reset error boundaries when the\n// router's location key changes.\n\nexport function CatchBoundary(props: {\n resetKey: string\n children: any\n errorComponent?: any\n onCatch: (error: any) => void\n}) {\n const errorComponent = props.errorComponent ?? ErrorComponent\n\n return (\n <CatchBoundaryImpl\n resetKey={props.resetKey}\n onCatch={props.onCatch}\n children={({ error }) => {\n if (error) {\n return React.createElement(errorComponent, {\n error,\n })\n }\n\n return props.children\n }}\n />\n )\n}\n\nexport class CatchBoundaryImpl extends React.Component<{\n resetKey: string\n children: (props: { error: any; reset: () => void }) => any\n onCatch?: (error: any) => void\n}> {\n state = { error: null } as any\n static getDerivedStateFromError(error: any) {\n return { error }\n }\n componentDidUpdate(\n prevProps: Readonly<{\n resetKey: string\n children: (props: { error: any; reset: () => void }) => any\n onCatch?: ((error: any, info: any) => void) | undefined\n }>,\n prevState: any,\n ): void {\n if (prevState.error && prevProps.resetKey !== this.props.resetKey) {\n this.setState({ error: null })\n }\n }\n componentDidCatch(error: any) {\n this.props.onCatch?.(error)\n }\n render() {\n return this.props.children(this.state)\n }\n}\n\nexport function ErrorComponent({ error }: { error: any }) {\n const [show, setShow] = React.useState(process.env.NODE_ENV !== 'production')\n\n return (\n <div style={{ padding: '.5rem', maxWidth: '100%' }}>\n <div style={{ display: 'flex', alignItems: 'center', gap: '.5rem' }}>\n <strong style={{ fontSize: '1rem' }}>Something went wrong!</strong>\n <button\n style={{\n appearance: 'none',\n fontSize: '.6em',\n border: '1px solid currentColor',\n padding: '.1rem .2rem',\n fontWeight: 'bold',\n borderRadius: '.25rem',\n }}\n onClick={() => setShow((d) => !d)}\n >\n {show ? 'Hide Error' : 'Show Error'}\n </button>\n </div>\n <div style={{ height: '.25rem' }} />\n {show ? (\n <div>\n <pre\n style={{\n fontSize: '.7em',\n border: '1px solid red',\n borderRadius: '.25rem',\n padding: '.3rem',\n color: 'red',\n overflow: 'auto',\n }}\n >\n {error.message ? <code>{error.message}</code> : null}\n </pre>\n </div>\n ) : null}\n </div>\n )\n}\n\nexport function useBlocker(\n message: string,\n condition: boolean | any = true,\n): void {\n const { history } = useRouter()\n\n React.useEffect(() => {\n if (!condition) return\n\n let unblock = history.block((retry, cancel) => {\n if (window.confirm(message)) {\n unblock()\n retry()\n }\n })\n\n return unblock\n })\n}\n\nexport function Block({ message, condition, children }: PromptProps) {\n useBlocker(message, condition)\n return (children ?? null) as ReactNode\n}\n\nexport function shallow<T>(objA: T, objB: T) {\n if (Object.is(objA, objB)) {\n return true\n }\n\n if (\n typeof objA !== 'object' ||\n objA === null ||\n typeof objB !== 'object' ||\n objB === null\n ) {\n return false\n }\n\n const keysA = Object.keys(objA)\n if (keysA.length !== Object.keys(objB).length) {\n return false\n }\n\n for (let i = 0; i < keysA.length; i++) {\n if (\n !Object.prototype.hasOwnProperty.call(objB, keysA[i] as string) ||\n !Object.is(objA[keysA[i] as keyof T], objB[keysA[i] as keyof T])\n ) {\n return false\n }\n }\n return true\n}\n"],"names":["useLayoutEffect","window","React","useEffect","lazyRouteComponent","importer","exportName","loadPromise","load","lazyComp","lazy","moduleExports","comp","default","preload","useLinkProps","options","buildLink","state","routerState","useRouter","match","useMatch","strict","type","children","target","activeProps","className","inactiveProps","activeOptions","disabled","hash","search","params","to","mask","preloadDelay","replace","style","onClick","onFocus","onMouseEnter","onMouseLeave","onTouchStart","rest","linkInfo","from","pathname","undefined","href","handleClick","handleFocus","handleEnter","handleLeave","handleTouchStart","isActive","next","handleReactClick","e","startTransition","d","composeHandlers","handlers","persist","filter","Boolean","forEach","handler","defaultPrevented","resolvedActiveProps","functionalUpdate","resolvedInactiveProps","maskedLocation","join","role","Link","forwardRef","props","ref","linkProps","createElement","_extends","Navigate","navigate","matchesContext","createContext","resolvedContext","__TSR_ROUTER_CONTEXT__","routerContext","value","useContext","warning","useRouterState","opts","select","useMatches","contextMatches","matches","slice","findIndex","id","nearestMatch","nearestMatchRouteId","routeId","matchRouteId","find","invariant","matchSelection","useRouteContext","context","useSearch","useParams","last","useNavigate","defaultOpts","useCallback","typedNavigate","useMatchRoute","matchRoute","pending","caseSensitive","Matches","routesById","locationKey","resolvedLocation","key","route","rootRouteId","errorComponent","ErrorComponent","Provider","CatchBoundary","resetKey","onCatch","length","Match","MatchRoute","Outlet","defaultPending","s","PendingComponent","pendingComponent","defaultPendingComponent","routeErrorComponent","defaultErrorComponent","ResolvedSuspenseBoundary","wrapInSuspense","isRoot","Suspense","SafeFragment","ResolvedCatchBoundary","fallback","MatchInner","status","error","component","defaultComponent","Fragment","CatchBoundaryImpl","Component","getDerivedStateFromError","componentDidUpdate","prevProps","prevState","setState","componentDidCatch","render","show","setShow","useState","process","env","NODE_ENV","padding","maxWidth","display","alignItems","gap","fontSize","appearance","border","fontWeight","borderRadius","height","color","overflow","message","useBlocker","condition","history","unblock","block","retry","cancel","confirm","Block","shallow","objA","objB","Object","is","keysA","keys","i","prototype","hasOwnProperty","call"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+BA,MAAMA,eAAe,GACnB,OAAOC,MAAM,KAAK,WAAW,GAAGC,gBAAK,CAACF,eAAe,GAAGE,gBAAK,CAACC,SAAS,CAAA;;AAoCzE;;AAoCO,SAASC,kBAAkBA,CAIhCC,QAA0B,EAC1BC,UAAiB,EAGT;AACR,EAAA,IAAIC,WAAyB,CAAA;EAE7B,MAAMC,IAAI,GAAGA,MAAM;IACjB,IAAI,CAACD,WAAW,EAAE;MAChBA,WAAW,GAAGF,QAAQ,EAAE,CAAA;AAC1B,KAAA;AAEA,IAAA,OAAOE,WAAW,CAAA;GACnB,CAAA;AAED,EAAA,MAAME,QAAQ,gBAAGP,gBAAK,CAACQ,IAAI,CAAC,YAAY;AACtC,IAAA,MAAMC,aAAa,GAAG,MAAMH,IAAI,EAAE,CAAA;AAClC,IAAA,MAAMI,IAAI,GAAGD,aAAa,CAACL,UAAU,IAAI,SAAS,CAAC,CAAA;IACnD,OAAO;AACLO,MAAAA,OAAO,EAAED,IAAAA;KACV,CAAA;AACH,GAAC,CAAC,CAAA;EAEAH,QAAQ,CAASK,OAAO,GAAGN,IAAI,CAAA;AAEjC,EAAA,OAAOC,QAAQ,CAAA;AACjB,CAAA;AA6EA;;AAEO,SAASM,YAAYA,CAO1BC,OAAyE,EAC1B;EAC/C,MAAM;IAAEC,SAAS;AAAEC,IAAAA,KAAK,EAAEC,WAAAA;GAAa,GAAGC,SAAS,EAAE,CAAA;EACrD,MAAMC,KAAK,GAAGC,QAAQ,CAAC;AACrBC,IAAAA,MAAM,EAAE,KAAA;AACV,GAAC,CAAC,CAAA;EAEF,MAAM;AACJ;IACAC,IAAI;IACJC,QAAQ;IACRC,MAAM;IACNC,WAAW,GAAGA,OAAO;AAAEC,MAAAA,SAAS,EAAE,QAAA;AAAS,KAAC,CAAC;AAC7CC,IAAAA,aAAa,GAAGA,OAAO,EAAE,CAAC;IAC1BC,aAAa;IACbC,QAAQ;IACRC,IAAI;IACJC,MAAM;IACNC,MAAM;IACNC,EAAE;IACFjB,KAAK;IACLkB,IAAI;IACJtB,OAAO;IACPuB,YAAY;IACZC,OAAO;AACP;IACAC,KAAK;IACLX,SAAS;IACTY,OAAO;IACPC,OAAO;IACPC,YAAY;IACZC,YAAY;IACZC,YAAY;IACZ,GAAGC,IAAAA;AACL,GAAC,GAAG7B,OAAO,CAAA;AAEX,EAAA,MAAM8B,QAAQ,GAAG7B,SAAS,CAACE,WAAW,EAAE;IACtC4B,IAAI,EAAE/B,OAAO,CAACmB,EAAE,GAAGd,KAAK,CAAC2B,QAAQ,GAAGC,SAAS;IAC7C,GAAGjC,OAAAA;AACL,GAAQ,CAAC,CAAA;AAET,EAAA,IAAI8B,QAAQ,CAACtB,IAAI,KAAK,UAAU,EAAE;IAChC,MAAM;AAAE0B,MAAAA,IAAAA;AAAK,KAAC,GAAGJ,QAAQ,CAAA;IACzB,OAAO;AAAEI,MAAAA,IAAAA;KAAM,CAAA;AACjB,GAAA;EAEA,MAAM;IACJC,WAAW;IACXC,WAAW;IACXC,WAAW;IACXC,WAAW;IACXC,gBAAgB;IAChBC,QAAQ;AACRC,IAAAA,IAAAA;AACF,GAAC,GAAGX,QAAQ,CAAA;EAEZ,MAAMY,gBAAgB,GAAIC,CAAQ,IAAK;AACrC,IAAA,IAAI3C,OAAO,CAAC4C,eAAe,IAAI,IAAI,EAAE;MAClC,CAAC1D,gBAAK,CAAC0D,eAAe,KAAMC,CAAC,IAAKA,CAAC,CAAC,EAAE,MAAM;QAC3CV,WAAW,CAACQ,CAAC,CAAC,CAAA;AAChB,OAAC,CAAC,CAAA;AACJ,KAAA;GACD,CAAA;AAED,EAAA,MAAMG,eAAe,GAClBC,QAA4C,IAC5CJ,CAAuB,IAAK;IAC3B,IAAIA,CAAC,CAACK,OAAO,EAAEL,CAAC,CAACK,OAAO,EAAE,CAAA;IAC1BD,QAAQ,CAACE,MAAM,CAACC,OAAO,CAAC,CAACC,OAAO,CAAEC,OAAO,IAAK;MAC5C,IAAIT,CAAC,CAACU,gBAAgB,EAAE,OAAA;MACxBD,OAAO,CAAET,CAAC,CAAC,CAAA;AACb,KAAC,CAAC,CAAA;GACH,CAAA;;AAEH;AACA,EAAA,MAAMW,mBAA4D,GAAGd,QAAQ,GACzEe,sBAAgB,CAAC5C,WAAW,EAAS,EAAE,CAAC,IAAI,EAAE,GAC9C,EAAE,CAAA;;AAEN;AACA,EAAA,MAAM6C,qBAA8D,GAClEhB,QAAQ,GAAG,EAAE,GAAGe,sBAAgB,CAAC1C,aAAa,EAAE,EAAE,CAAC,IAAI,EAAE,CAAA;EAE3D,OAAO;AACL,IAAA,GAAGyC,mBAAmB;AACtB,IAAA,GAAGE,qBAAqB;AACxB,IAAA,GAAG3B,IAAI;AACPK,IAAAA,IAAI,EAAEnB,QAAQ,GACVkB,SAAS,GACTQ,IAAI,CAACgB,cAAc,GACnBhB,IAAI,CAACgB,cAAc,CAACvB,IAAI,GACxBO,IAAI,CAACP,IAAI;IACbV,OAAO,EAAEsB,eAAe,CAAC,CAACtB,OAAO,EAAEkB,gBAAgB,CAAC,CAAC;IACrDjB,OAAO,EAAEqB,eAAe,CAAC,CAACrB,OAAO,EAAEW,WAAW,CAAC,CAAC;IAChDV,YAAY,EAAEoB,eAAe,CAAC,CAACpB,YAAY,EAAEW,WAAW,CAAC,CAAC;IAC1DV,YAAY,EAAEmB,eAAe,CAAC,CAACnB,YAAY,EAAEW,WAAW,CAAC,CAAC;IAC1DV,YAAY,EAAEkB,eAAe,CAAC,CAAClB,YAAY,EAAEW,gBAAgB,CAAC,CAAC;IAC/D7B,MAAM;AACNa,IAAAA,KAAK,EAAE;AACL,MAAA,GAAGA,KAAK;MACR,GAAG+B,mBAAmB,CAAC/B,KAAK;AAC5B,MAAA,GAAGiC,qBAAqB,CAACjC,KAAAA;KAC1B;IACDX,SAAS,EACP,CACEA,SAAS,EACT0C,mBAAmB,CAAC1C,SAAS,EAC7B4C,qBAAqB,CAAC5C,SAAS,CAChC,CACEqC,MAAM,CAACC,OAAO,CAAC,CACfQ,IAAI,CAAC,GAAG,CAAC,IAAIzB,SAAS;AAC3B,IAAA,IAAIlB,QAAQ,GACR;AACE4C,MAAAA,IAAI,EAAE,MAAM;AACZ,MAAA,eAAe,EAAE,IAAA;KAClB,GACD1B,SAAS,CAAC;AACd,IAAA,CAAC,aAAa,GAAGO,QAAQ,GAAG,QAAQ,GAAGP,SAAAA;GACxC,CAAA;AACH,CAAA;AAgBO,MAAM2B,IAAmB,gBAAG1E,gBAAK,CAAC2E,UAAU,CAAC,CAACC,KAAU,EAAEC,GAAG,KAAK;AACvE,EAAA,MAAMC,SAAS,GAAGjE,YAAY,CAAC+D,KAAK,CAAC,CAAA;AAErC,EAAA,oBACE5E,gBAAA,CAAA+E,aAAA,CAAA,GAAA,EAAAC,oCAAA,CAAA;AAEIH,IAAAA,GAAG,EAAEA,GAAAA;AAAU,GAAA,EACZC,SAAS,EAAA;IACZvD,QAAQ,EACN,OAAOqD,KAAK,CAACrD,QAAQ,KAAK,UAAU,GAChCqD,KAAK,CAACrD,QAAQ,CAAC;AACb+B,MAAAA,QAAQ,EAAGwB,SAAS,CAAS,aAAa,CAAC,KAAK,QAAA;KACjD,CAAC,GACFF,KAAK,CAACrD,QAAAA;AAAQ,GAAA,CAEvB,CAAC,CAAA;AAEN,CAAC,EAAQ;AAEF,SAAS0D,QAAQA,CAMtBL,KAAkE,EAAQ;EAC1E,MAAM;AAAEM,IAAAA,QAAAA;GAAU,GAAGhE,SAAS,EAAE,CAAA;EAChC,MAAMC,KAAK,GAAGC,QAAQ,CAAC;AAAEC,IAAAA,MAAM,EAAE,KAAA;AAAM,GAAC,CAAC,CAAA;AAEzCvB,EAAAA,eAAe,CAAC,MAAM;AACpBoF,IAAAA,QAAQ,CAAC;MACPrC,IAAI,EAAE+B,KAAK,CAAC3C,EAAE,GAAGd,KAAK,CAAC2B,QAAQ,GAAGC,SAAS;MAC3C,GAAG6B,KAAAA;AACL,KAAQ,CAAC,CAAA;GACV,EAAE,EAAE,CAAC,CAAA;AAEN,EAAA,OAAO,IAAI,CAAA;AACb,CAAA;AAEO,MAAMO,cAAc,gBAAGnF,gBAAK,CAACoF,aAAa,CAAe,IAAK,EAAC;AAS/D,SAASlE,SAASA,GAEM;AAC7B,EAAA,MAAMmE,eAAe,GAAGtF,MAAM,CAACuF,sBAAsB,IAAIC,4BAAa,CAAA;AACtE,EAAA,MAAMC,KAAK,GAAGxF,gBAAK,CAACyF,UAAU,CAACJ,eAAe,CAAC,CAAA;AAC/CK,EAAAA,2BAAO,CAACF,KAAK,EAAE,6DAA6D,CAAC,CAAA;AAC7E,EAAA,OAAOA,KAAK,CAAA;AACd,CAAA;AAEO,SAASG,cAAcA,CAE5BC,IAED,EAAa;EACZ,MAAM;AAAE5E,IAAAA,KAAAA;GAAO,GAAGE,SAAS,EAAE,CAAA;AAC7B;EACA,OAAO0E,IAAI,EAAEC,MAAM,GAAGD,IAAI,CAACC,MAAM,CAAC7E,KAAK,CAAC,GAAIA,KAAa,CAAA;AAC3D,CAAA;AAEO,SAAS8E,UAAUA,CAAmBF,IAE5C,EAAK;AACJ,EAAA,MAAMG,cAAc,GAAG/F,gBAAK,CAACyF,UAAU,CAACN,cAAc,CAAC,CAAA;AAEvD,EAAA,OAAOQ,cAAc,CAAC;IACpBE,MAAM,EAAG7E,KAAK,IAAK;MACjB,MAAMgF,OAAO,GAAGhF,KAAK,CAACgF,OAAO,CAACC,KAAK,CACjCjF,KAAK,CAACgF,OAAO,CAACE,SAAS,CAAEvC,CAAC,IAAKA,CAAC,CAACwC,EAAE,KAAKJ,cAAc,CAAC,CAAC,CAAC,EAAEI,EAAE,CAC/D,CAAC,CAAA;MACD,OAAOP,IAAI,EAAEC,MAAM,GAAGD,IAAI,CAACC,MAAM,CAACG,OAAO,CAAC,GAAIA,OAAa,CAAA;AAC7D,KAAA;AACF,GAAC,CAAC,CAAA;AACJ,CAAA;AAYO,SAAS5E,QAAQA,CAOtBwE,IAEC,EACuE;EACxE,MAAMQ,YAAY,GAAGpG,gBAAK,CAACyF,UAAU,CAACN,cAAc,CAAC,CAAC,CAAC,CAAE,CAAA;AACzD,EAAA,MAAMkB,mBAAmB,GAAGD,YAAY,EAAEE,OAAO,CAAA;EAEjD,MAAMC,YAAY,GAAGZ,cAAc,CAAC;IAClCE,MAAM,EAAG7E,KAAK,IAAK;AACjB,MAAA,MAAMG,KAAK,GAAGyE,IAAI,EAAE/C,IAAI,GACpB7B,KAAK,CAACgF,OAAO,CAACQ,IAAI,CAAE7C,CAAC,IAAKA,CAAC,CAAC2C,OAAO,KAAKV,IAAI,EAAE/C,IAAI,CAAC,GACnD7B,KAAK,CAACgF,OAAO,CAACQ,IAAI,CAAE7C,CAAC,IAAKA,CAAC,CAACwC,EAAE,KAAKC,YAAY,CAACD,EAAE,CAAC,CAAA;MAEvD,OAAOhF,KAAK,CAAEmF,OAAO,CAAA;AACvB,KAAA;AACF,GAAC,CAAC,CAAA;AAEF,EAAA,IAAIV,IAAI,EAAEvE,MAAM,IAAI,IAAI,EAAE;AACxBoF,IAAAA,6BAAS,CACPJ,mBAAmB,IAAIE,YAAY,EAClC,CACCA,UAAAA,EAAAA,YACD,CAAiEF,+DAAAA,EAAAA,mBAAoB,CACpFE,oCAAAA,EAAAA,YACD,CACCA,qCAAAA,EAAAA,YACD,cACH,CAAC,CAAA;AACH,GAAA;EAEA,MAAMG,cAAc,GAAGf,cAAc,CAAC;IACpCE,MAAM,EAAG7E,KAAK,IAAK;AACjB,MAAA,MAAMG,KAAK,GAAGyE,IAAI,EAAE/C,IAAI,GACpB7B,KAAK,CAACgF,OAAO,CAACQ,IAAI,CAAE7C,CAAC,IAAKA,CAAC,CAAC2C,OAAO,KAAKV,IAAI,EAAE/C,IAAI,CAAC,GACnD7B,KAAK,CAACgF,OAAO,CAACQ,IAAI,CAAE7C,CAAC,IAAKA,CAAC,CAACwC,EAAE,KAAKC,YAAY,CAACD,EAAE,CAAC,CAAA;AAEvDM,MAAAA,6BAAS,CACPtF,KAAK,EACJ,CACCyE,eAAAA,EAAAA,IAAI,EAAE/C,IAAI,GACL,CAAwB+C,sBAAAA,EAAAA,IAAI,CAAC/C,IAAK,CAAA,CAAA,CAAE,GACrC,kBACL,EACH,CAAC,CAAA;MAED,OAAO+C,IAAI,EAAEC,MAAM,GAAGD,IAAI,CAACC,MAAM,CAAC1E,KAAY,CAAC,GAAGA,KAAK,CAAA;AACzD,KAAA;AACF,GAAC,CAAC,CAAA;AAEF,EAAA,OAAOuF,cAAc,CAAA;AACvB,CAAA;AAaO,SAASC,eAAeA,CAO7Bf,IAEC,EACyD;AAC1D,EAAA,OAAOxE,QAAQ,CAAC;AACd,IAAA,GAAIwE,IAAY;AAChBC,IAAAA,MAAM,EAAG1E,KAAiB,IACxByE,IAAI,EAAEC,MAAM,GACRD,IAAI,CAACC,MAAM,CAAC1E,KAAK,CAACyF,OAAwB,CAAC,GAC3CzF,KAAK,CAACyF,OAAAA;AACd,GAAC,CAAC,CAAA;AACJ,CAAA;AAEO,SAASC,SAASA,CAOvBjB,IAEC,EACyD;AAC1D,EAAA,OAAOxE,QAAQ,CAAC;AACd,IAAA,GAAIwE,IAAY;IAChBC,MAAM,EAAG1E,KAAiB,IAAK;AAC7B,MAAA,OAAOyE,IAAI,EAAEC,MAAM,GAAGD,IAAI,CAACC,MAAM,CAAC1E,KAAK,CAACY,MAAiB,CAAC,GAAGZ,KAAK,CAACY,MAAM,CAAA;AAC3E,KAAA;AACF,GAAC,CAAC,CAAA;AACJ,CAAA;AAEO,SAAS+E,SAASA,CAOvBlB,IAEC,EACU;AACX,EAAA,OAAOD,cAAc,CAAC;IACpBE,MAAM,EAAG7E,KAAU,IAAK;MACtB,MAAMgB,MAAM,GAAI+E,UAAI,CAAC/F,KAAK,CAACgF,OAAO,CAAC,EAAUhE,MAAM,CAAA;MACnD,OAAO4D,IAAI,EAAEC,MAAM,GAAGD,IAAI,CAACC,MAAM,CAAC7D,MAAM,CAAC,GAAGA,MAAM,CAAA;AACpD,KAAA;AACF,GAAC,CAAC,CAAA;AACJ,CAAA;AAEO,SAASgF,WAAWA,CAGzBC,WAAqC,EAAE;EACvC,MAAM;AAAE/B,IAAAA,QAAAA;GAAU,GAAGhE,SAAS,EAAE,CAAA;EAChC,MAAMC,KAAK,GAAGC,QAAQ,CAAC;AACrBC,IAAAA,MAAM,EAAE,KAAA;AACV,GAAC,CAAC,CAAA;AACF,EAAA,OAAOrB,gBAAK,CAACkH,WAAW,CAOpBtB,IAAkE,IAC/D;AACH,IAAA,OAAOV,QAAQ,CAAC;MACdrC,IAAI,EAAE+C,IAAI,EAAE3D,EAAE,GAAGd,KAAK,CAAC2B,QAAQ,GAAGC,SAAS;AAC3C,MAAA,GAAGkE,WAAW;MACd,GAAIrB,IAAAA;AACN,KAAC,CAAC,CAAA;GACH,EACD,EACF,CAAC,CAAA;AACH,CAAA;AAEO,SAASuB,aAAaA,CAG3BjC,QAAuD,EAAE;AACzD,EAAA,OAAOA,QAAQ,CAAA;AAQjB,CAAA;AAEO,SAASkC,aAAaA,GAEzB;EACF,MAAM;IAAEpG,KAAK;AAAEqG,IAAAA,UAAAA;GAAY,GAAGnG,SAAS,EAAE,CAAA;AAEzC,EAAA,OAAOlB,gBAAK,CAACkH,WAAW,CAQpBtB,IAMC,IACkE;IACnE,MAAM;MAAE0B,OAAO;MAAEC,aAAa;MAAE,GAAG5E,IAAAA;AAAK,KAAC,GAAGiD,IAAI,CAAA;AAEhD,IAAA,OAAOyB,UAAU,CAACrG,KAAK,EAAE2B,IAAI,EAAS;MACpC2E,OAAO;AACPC,MAAAA,aAAAA;AACF,KAAC,CAAC,CAAA;GACH,EACD,EACF,CAAC,CAAA;AACH,CAAA;AAEO,SAASC,OAAOA,GAAG;EACxB,MAAM;IAAEC,UAAU;AAAEzG,IAAAA,KAAAA;GAAO,GAAGE,SAAS,EAAE,CAAA;;AAEzC;AACA;AACA;AACA;AACA;;EAEA,MAAM;AAAE8E,IAAAA,OAAAA;AAAQ,GAAC,GAAGhF,KAAK,CAAA;EAEzB,MAAM0G,WAAW,GAAG/B,cAAc,CAAC;IACjCE,MAAM,EAAGlC,CAAC,IAAKA,CAAC,CAACgE,gBAAgB,CAAC3G,KAAK,EAAE4G,GAAAA;AAC3C,GAAC,CAAC,CAAA;AAEF,EAAA,MAAMC,OAAK,GAAGJ,UAAU,CAACK,iBAAW,CAAC,CAAA;AAErC,EAAA,MAAMC,cAAc,GAAG/H,gBAAK,CAACkH,WAAW,CACrCtC,KAAU,IAAK;AACd,IAAA,oBAAO5E,gBAAK,CAAC+E,aAAa,CAACiD,cAAc,EAAE;AACzC,MAAA,GAAGpD,KAAK;MACRxD,QAAQ,EAAEyG,OAAK,CAACzG,QAAQ;MACxBuF,eAAe,EAAEkB,OAAK,CAAClB,eAAe;MACtCE,SAAS,EAAEgB,OAAK,CAAChB,SAAS;MAC1BC,SAAS,EAAEe,OAAK,CAACf,SAAAA;AACnB,KAAC,CAAC,CAAA;AACJ,GAAC,EACD,CAACe,OAAK,CACR,CAAC,CAAA;AAED,EAAA,oBACE7H,gBAAA,CAAA+E,aAAA,CAACI,cAAc,CAAC8C,QAAQ,EAAA;AAACzC,IAAAA,KAAK,EAAEQ,OAAAA;AAAQ,GAAA,eACtChG,gBAAA,CAAA+E,aAAA,CAACmD,aAAa,EAAA;AACZC,IAAAA,QAAQ,EAAET,WAAY;AACtBK,IAAAA,cAAc,EAAEA,cAAe;IAC/BK,OAAO,EAAEA,MAAM;AACb1C,MAAAA,2BAAO,CACL,KAAK,EACJ,CAAA,2EAAA,CACH,CAAC,CAAA;AACH,KAAA;GAECM,EAAAA,OAAO,CAACqC,MAAM,gBAAGrI,gBAAA,CAAA+E,aAAA,CAACuD,KAAK,EAAA;AAACtC,IAAAA,OAAO,EAAEA,OAAAA;AAAQ,GAAE,CAAC,GAAG,IACnC,CACQ,CAAC,CAAA;AAE9B,CAAA;AAEO,SAASuC,UAAUA,CAOxB3D,KAAwE,EACnE;AACL,EAAA,MAAMyC,UAAU,GAAGD,aAAa,EAAE,CAAA;AAClC,EAAA,MAAMpF,MAAM,GAAGqF,UAAU,CAACzC,KAAY,CAAC,CAAA;AAEvC,EAAA,IAAI,OAAOA,KAAK,CAACrD,QAAQ,KAAK,UAAU,EAAE;AACxC,IAAA,OAAQqD,KAAK,CAACrD,QAAQ,CAASS,MAAM,CAAC,CAAA;AACxC,GAAA;EAEA,OAAO,CAAC,CAACA,MAAM,GAAG4C,KAAK,CAACrD,QAAQ,GAAG,IAAI,CAAA;AACzC,CAAA;AAEO,SAASiH,MAAMA,GAAG;AACvB,EAAA,MAAMxC,OAAO,GAAGhG,gBAAK,CAACyF,UAAU,CAACN,cAAc,CAAC,CAACc,KAAK,CAAC,CAAC,CAAC,CAAA;AAEzD,EAAA,IAAI,CAACD,OAAO,CAAC,CAAC,CAAC,EAAE;AACf,IAAA,OAAO,IAAI,CAAA;AACb,GAAA;AAEA,EAAA,oBAAOhG,gBAAA,CAAA+E,aAAA,CAACuD,KAAK,EAAA;AAACtC,IAAAA,OAAO,EAAEA,OAAAA;AAAQ,GAAE,CAAC,CAAA;AACpC,CAAA;AAEA,MAAMyC,cAAc,GAAGA,MAAM,IAAI,CAAA;AAEjC,SAASH,KAAKA,CAAC;AAAEtC,EAAAA,OAAAA;AAAmC,CAAC,EAAE;EACrD,MAAM;IAAElF,OAAO;AAAE2G,IAAAA,UAAAA;GAAY,GAAGvG,SAAS,EAAE,CAAA;AAC3C,EAAA,MAAMC,KAAK,GAAG6E,OAAO,CAAC,CAAC,CAAE,CAAA;AACzB,EAAA,MAAMM,OAAO,GAAGnF,KAAK,EAAEmF,OAAO,CAAA;AAC9B,EAAA,MAAMuB,KAAK,GAAGJ,UAAU,CAACnB,OAAO,CAAC,CAAA;EACjC,MAAMoB,WAAW,GAAG/B,cAAc,CAAC;IACjCE,MAAM,EAAG6C,CAAC,IAAKA,CAAC,CAACf,gBAAgB,CAAC3G,KAAK,EAAE4G,GAAAA;AAC3C,GAAC,CAAC,CAAA;AAEF,EAAA,MAAMe,gBAAgB,GAAId,KAAK,CAAC/G,OAAO,CAAC8H,gBAAgB,IACtD9H,OAAO,CAAC+H,uBAAuB,IAC/BJ,cAAsB,CAAA;AAExB,EAAA,MAAMK,mBAAmB,GACvBjB,KAAK,CAAC/G,OAAO,CAACiH,cAAc,IAC5BjH,OAAO,CAACiI,qBAAqB,IAC7Bf,cAAc,CAAA;AAEhB,EAAA,MAAMgB,wBAAwB,GAC5BnB,KAAK,CAAC/G,OAAO,CAACmI,cAAc,IAAI,CAACpB,KAAK,CAACqB,MAAM,GACzClJ,gBAAK,CAACmJ,QAAQ,GACdC,YAAY,CAAA;EAElB,MAAMC,qBAAqB,GAAG,CAAC,CAACP,mBAAmB,GAC/CZ,aAAa,GACbkB,YAAY,CAAA;AAEhB,EAAA,MAAMrB,cAAc,GAAG/H,gBAAK,CAACkH,WAAW,CACrCtC,KAAU,IAAK;AACd,IAAA,oBAAO5E,gBAAK,CAAC+E,aAAa,CAAC+D,mBAAmB,EAAE;AAC9C,MAAA,GAAGlE,KAAK;MACRxD,QAAQ,EAAEyG,KAAK,CAACzG,QAAQ;MACxBuF,eAAe,EAAEkB,KAAK,CAAClB,eAAe;MACtCE,SAAS,EAAEgB,KAAK,CAAChB,SAAS;MAC1BC,SAAS,EAAEe,KAAK,CAACf,SAAAA;AACnB,KAAC,CAAC,CAAA;AACJ,GAAC,EACD,CAACe,KAAK,CACR,CAAC,CAAA;AAED,EAAA,oBACE7H,gBAAA,CAAA+E,aAAA,CAACI,cAAc,CAAC8C,QAAQ,EAAA;AAACzC,IAAAA,KAAK,EAAEQ,OAAAA;AAAQ,GAAA,eACtChG,gBAAA,CAAA+E,aAAA,CAACiE,wBAAwB,EAAA;AACvBM,IAAAA,QAAQ,eAAEtJ,gBAAK,CAAC+E,aAAa,CAAC4D,gBAAgB,EAAE;MAC9CvH,QAAQ,EAAEyG,KAAK,CAACzG,QAAQ;MACxBuF,eAAe,EAAEkB,KAAK,CAAClB,eAAe;MACtCE,SAAS,EAAEgB,KAAK,CAAChB,SAAS;MAC1BC,SAAS,EAAEe,KAAK,CAACf,SAAAA;KAClB,CAAA;AAAE,GAAA,eAEH9G,gBAAA,CAAA+E,aAAA,CAACsE,qBAAqB,EAAA;AACpBlB,IAAAA,QAAQ,EAAET,WAAY;AACtBK,IAAAA,cAAc,EAAEA,cAAe;IAC/BK,OAAO,EAAEA,MAAM;MACb1C,2BAAO,CAAC,KAAK,EAAG,CAAA,sBAAA,EAAwBvE,KAAK,CAACgF,EAAG,EAAC,CAAC,CAAA;AACrD,KAAA;AAAE,GAAA,eAEFnG,gBAAA,CAAA+E,aAAA,CAACwE,UAAU,EAAA;AAACpI,IAAAA,KAAK,EAAEA,KAAAA;GAAQ,CACN,CACC,CACH,CAAC,CAAA;AAE9B,CAAA;AAEA,SAASoI,UAAUA,CAAC;AAAEpI,EAAAA,KAAAA;AAA6B,CAAC,EAAO;EACzD,MAAM;IAAEL,OAAO;AAAE2G,IAAAA,UAAAA;GAAY,GAAGvG,SAAS,EAAE,CAAA;AAC3C,EAAA,MAAM2G,KAAK,GAAGJ,UAAU,CAACtG,KAAK,CAACmF,OAAO,CAAC,CAAA;AAEvC,EAAA,IAAInF,KAAK,CAACqI,MAAM,KAAK,OAAO,EAAE;IAC5B,MAAMrI,KAAK,CAACsI,KAAK,CAAA;AACnB,GAAA;AAEA,EAAA,IAAItI,KAAK,CAACqI,MAAM,KAAK,SAAS,EAAE;IAC9B,MAAMrI,KAAK,CAACd,WAAW,CAAA;AACzB,GAAA;AAEA,EAAA,IAAIc,KAAK,CAACqI,MAAM,KAAK,SAAS,EAAE;IAC9B,IAAI9I,IAAI,GAAGmH,KAAK,CAAC/G,OAAO,CAAC4I,SAAS,IAAI5I,OAAO,CAAC6I,gBAAgB,CAAA;AAE9D,IAAA,IAAIjJ,IAAI,EAAE;AACR,MAAA,oBAAOV,gBAAK,CAAC+E,aAAa,CAACrE,IAAI,EAAE;QAC/BU,QAAQ,EAAEyG,KAAK,CAACzG,QAAQ;QACxBuF,eAAe,EAAEkB,KAAK,CAAClB,eAAsB;QAC7CE,SAAS,EAAEgB,KAAK,CAAChB,SAAS;QAC1BC,SAAS,EAAEe,KAAK,CAACf,SAAAA;AACnB,OAAQ,CAAC,CAAA;AACX,KAAA;AAEA,IAAA,oBAAO9G,gBAAA,CAAA+E,aAAA,CAACyD,MAAM,MAAE,CAAC,CAAA;AACnB,GAAA;AAEA/B,EAAAA,6BAAS,CACP,KAAK,EACL,gGACF,CAAC,CAAA;AACH,CAAA;AAEA,SAAS2C,YAAYA,CAACxE,KAAU,EAAE;EAChC,oBAAO5E,gBAAA,CAAA+E,aAAA,CAAA/E,gBAAA,CAAA4J,QAAA,EAAGhF,IAAAA,EAAAA,KAAK,CAACrD,QAAW,CAAC,CAAA;AAC9B,CAAA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEO,SAAS2G,aAAaA,CAACtD,KAK7B,EAAE;AACD,EAAA,MAAMmD,cAAc,GAAGnD,KAAK,CAACmD,cAAc,IAAIC,cAAc,CAAA;AAE7D,EAAA,oBACEhI,gBAAA,CAAA+E,aAAA,CAAC8E,iBAAiB,EAAA;IAChB1B,QAAQ,EAAEvD,KAAK,CAACuD,QAAS;IACzBC,OAAO,EAAExD,KAAK,CAACwD,OAAQ;AACvB7G,IAAAA,QAAQ,EAAEA,CAAC;AAAEkI,MAAAA,KAAAA;AAAM,KAAC,KAAK;AACvB,MAAA,IAAIA,KAAK,EAAE;AACT,QAAA,oBAAOzJ,gBAAK,CAAC+E,aAAa,CAACgD,cAAc,EAAE;AACzC0B,UAAAA,KAAAA;AACF,SAAC,CAAC,CAAA;AACJ,OAAA;MAEA,OAAO7E,KAAK,CAACrD,QAAQ,CAAA;AACvB,KAAA;AAAE,GACH,CAAC,CAAA;AAEN,CAAA;AAEO,MAAMsI,iBAAiB,SAAS7J,gBAAK,CAAC8J,SAAS,CAInD;AACD9I,EAAAA,KAAK,GAAG;AAAEyI,IAAAA,KAAK,EAAE,IAAA;GAAM,CAAA;EACvB,OAAOM,wBAAwBA,CAACN,KAAU,EAAE;IAC1C,OAAO;AAAEA,MAAAA,KAAAA;KAAO,CAAA;AAClB,GAAA;AACAO,EAAAA,kBAAkBA,CAChBC,SAIE,EACFC,SAAc,EACR;AACN,IAAA,IAAIA,SAAS,CAACT,KAAK,IAAIQ,SAAS,CAAC9B,QAAQ,KAAK,IAAI,CAACvD,KAAK,CAACuD,QAAQ,EAAE;MACjE,IAAI,CAACgC,QAAQ,CAAC;AAAEV,QAAAA,KAAK,EAAE,IAAA;AAAK,OAAC,CAAC,CAAA;AAChC,KAAA;AACF,GAAA;EACAW,iBAAiBA,CAACX,KAAU,EAAE;AAC5B,IAAA,IAAI,CAAC7E,KAAK,CAACwD,OAAO,GAAGqB,KAAK,CAAC,CAAA;AAC7B,GAAA;AACAY,EAAAA,MAAMA,GAAG;IACP,OAAO,IAAI,CAACzF,KAAK,CAACrD,QAAQ,CAAC,IAAI,CAACP,KAAK,CAAC,CAAA;AACxC,GAAA;AACF,CAAA;AAEO,SAASgH,cAAcA,CAAC;AAAEyB,EAAAA,KAAAA;AAAsB,CAAC,EAAE;AACxD,EAAA,MAAM,CAACa,IAAI,EAAEC,OAAO,CAAC,GAAGvK,gBAAK,CAACwK,QAAQ,CAACC,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,YAAY,CAAC,CAAA;EAE7E,oBACE3K,gBAAA,CAAA+E,aAAA,CAAA,KAAA,EAAA;AAAK1C,IAAAA,KAAK,EAAE;AAAEuI,MAAAA,OAAO,EAAE,OAAO;AAAEC,MAAAA,QAAQ,EAAE,MAAA;AAAO,KAAA;GAC/C7K,eAAAA,gBAAA,CAAA+E,aAAA,CAAA,KAAA,EAAA;AAAK1C,IAAAA,KAAK,EAAE;AAAEyI,MAAAA,OAAO,EAAE,MAAM;AAAEC,MAAAA,UAAU,EAAE,QAAQ;AAAEC,MAAAA,GAAG,EAAE,OAAA;AAAQ,KAAA;GAChEhL,eAAAA,gBAAA,CAAA+E,aAAA,CAAA,QAAA,EAAA;AAAQ1C,IAAAA,KAAK,EAAE;AAAE4I,MAAAA,QAAQ,EAAE,MAAA;AAAO,KAAA;AAAE,GAAA,EAAC,uBAA6B,CAAC,eACnEjL,gBAAA,CAAA+E,aAAA,CAAA,QAAA,EAAA;AACE1C,IAAAA,KAAK,EAAE;AACL6I,MAAAA,UAAU,EAAE,MAAM;AAClBD,MAAAA,QAAQ,EAAE,MAAM;AAChBE,MAAAA,MAAM,EAAE,wBAAwB;AAChCP,MAAAA,OAAO,EAAE,aAAa;AACtBQ,MAAAA,UAAU,EAAE,MAAM;AAClBC,MAAAA,YAAY,EAAE,QAAA;KACd;IACF/I,OAAO,EAAEA,MAAMiI,OAAO,CAAE5G,CAAC,IAAK,CAACA,CAAC,CAAA;GAE/B2G,EAAAA,IAAI,GAAG,YAAY,GAAG,YACjB,CACL,CAAC,eACNtK,gBAAA,CAAA+E,aAAA,CAAA,KAAA,EAAA;AAAK1C,IAAAA,KAAK,EAAE;AAAEiJ,MAAAA,MAAM,EAAE,QAAA;AAAS,KAAA;GAAI,CAAC,EACnChB,IAAI,gBACHtK,gBAAA,CAAA+E,aAAA,CAAA,KAAA,EAAA,IAAA,eACE/E,gBAAA,CAAA+E,aAAA,CAAA,KAAA,EAAA;AACE1C,IAAAA,KAAK,EAAE;AACL4I,MAAAA,QAAQ,EAAE,MAAM;AAChBE,MAAAA,MAAM,EAAE,eAAe;AACvBE,MAAAA,YAAY,EAAE,QAAQ;AACtBT,MAAAA,OAAO,EAAE,OAAO;AAChBW,MAAAA,KAAK,EAAE,KAAK;AACZC,MAAAA,QAAQ,EAAE,MAAA;AACZ,KAAA;AAAE,GAAA,EAED/B,KAAK,CAACgC,OAAO,gBAAGzL,gBAAA,CAAA+E,aAAA,CAAO0E,MAAAA,EAAAA,IAAAA,EAAAA,KAAK,CAACgC,OAAc,CAAC,GAAG,IAC7C,CACF,CAAC,GACJ,IACD,CAAC,CAAA;AAEV,CAAA;AAEO,SAASC,UAAUA,CACxBD,OAAe,EACfE,SAAwB,GAAG,IAAI,EACzB;EACN,MAAM;AAAEC,IAAAA,OAAAA;GAAS,GAAG1K,SAAS,EAAE,CAAA;EAE/BlB,gBAAK,CAACC,SAAS,CAAC,MAAM;IACpB,IAAI,CAAC0L,SAAS,EAAE,OAAA;IAEhB,IAAIE,OAAO,GAAGD,OAAO,CAACE,KAAK,CAAC,CAACC,KAAK,EAAEC,MAAM,KAAK;AAC7C,MAAA,IAAIjM,MAAM,CAACkM,OAAO,CAACR,OAAO,CAAC,EAAE;AAC3BI,QAAAA,OAAO,EAAE,CAAA;AACTE,QAAAA,KAAK,EAAE,CAAA;AACT,OAAA;AACF,KAAC,CAAC,CAAA;AAEF,IAAA,OAAOF,OAAO,CAAA;AAChB,GAAC,CAAC,CAAA;AACJ,CAAA;AAEO,SAASK,KAAKA,CAAC;EAAET,OAAO;EAAEE,SAAS;AAAEpK,EAAAA,QAAAA;AAAsB,CAAC,EAAE;AACnEmK,EAAAA,UAAU,CAACD,OAAO,EAAEE,SAAS,CAAC,CAAA;EAC9B,OAAQpK,QAAQ,IAAI,IAAI,CAAA;AAC1B,CAAA;AAEO,SAAS4K,OAAOA,CAAIC,IAAO,EAAEC,IAAO,EAAE;EAC3C,IAAIC,MAAM,CAACC,EAAE,CAACH,IAAI,EAAEC,IAAI,CAAC,EAAE;AACzB,IAAA,OAAO,IAAI,CAAA;AACb,GAAA;AAEA,EAAA,IACE,OAAOD,IAAI,KAAK,QAAQ,IACxBA,IAAI,KAAK,IAAI,IACb,OAAOC,IAAI,KAAK,QAAQ,IACxBA,IAAI,KAAK,IAAI,EACb;AACA,IAAA,OAAO,KAAK,CAAA;AACd,GAAA;AAEA,EAAA,MAAMG,KAAK,GAAGF,MAAM,CAACG,IAAI,CAACL,IAAI,CAAC,CAAA;AAC/B,EAAA,IAAII,KAAK,CAACnE,MAAM,KAAKiE,MAAM,CAACG,IAAI,CAACJ,IAAI,CAAC,CAAChE,MAAM,EAAE;AAC7C,IAAA,OAAO,KAAK,CAAA;AACd,GAAA;AAEA,EAAA,KAAK,IAAIqE,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGF,KAAK,CAACnE,MAAM,EAAEqE,CAAC,EAAE,EAAE;AACrC,IAAA,IACE,CAACJ,MAAM,CAACK,SAAS,CAACC,cAAc,CAACC,IAAI,CAACR,IAAI,EAAEG,KAAK,CAACE,CAAC,CAAW,CAAC,IAC/D,CAACJ,MAAM,CAACC,EAAE,CAACH,IAAI,CAACI,KAAK,CAACE,CAAC,CAAC,CAAY,EAAEL,IAAI,CAACG,KAAK,CAACE,CAAC,CAAC,CAAY,CAAC,EAChE;AACA,MAAA,OAAO,KAAK,CAAA;AACd,KAAA;AACF,GAAA;AACA,EAAA,OAAO,IAAI,CAAA;AACb;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,23 +0,0 @@
1
- import { AnyRoute } from './route';
2
- import { ParseRoute, FullSearchSchema, RouteById, RouteIds } from './routeInfo';
3
- export interface RouteMatch<TRouteTree extends AnyRoute = AnyRoute, TRouteId extends RouteIds<TRouteTree> = ParseRoute<TRouteTree>['id']> {
4
- id: string;
5
- routeId: TRouteId;
6
- pathname: string;
7
- params: RouteById<TRouteTree, TRouteId>['types']['allParams'];
8
- status: 'pending' | 'success' | 'error';
9
- isFetching: boolean;
10
- invalid: boolean;
11
- error: unknown;
12
- paramsError: unknown;
13
- searchError: unknown;
14
- updatedAt: number;
15
- loadPromise?: Promise<void>;
16
- __resolveLoadPromise?: () => void;
17
- context: RouteById<TRouteTree, TRouteId>['types']['allContext'];
18
- routeSearch: RouteById<TRouteTree, TRouteId>['types']['searchSchema'];
19
- search: FullSearchSchema<TRouteTree> & RouteById<TRouteTree, TRouteId>['types']['fullSearchSchema'];
20
- fetchedAt: number;
21
- abortController: AbortController;
22
- }
23
- export type AnyRouteMatch = RouteMatch<any>;
@@ -1,141 +0,0 @@
1
- import * as React from 'react';
2
- import { LinkOptions, ToOptions, ResolveRelativePath, NavigateOptions } from './link';
3
- import { AnySearchSchema, AnyPathParams, AnyContext, AnyRoute } from './route';
4
- import { RoutePaths, RouteByPath, RouteIds, ParseRoute, RoutesById, RouteById, AllParams } from './routeInfo';
5
- import { RegisteredRouter, RouterOptions, Router, RouterState } from './router';
6
- import { RouteMatch } from './RouteMatch';
7
- import { NoInfer } from './utils';
8
- import { MatchRouteOptions, RouterContext } from './RouterProvider';
9
- export type RouteProps<TFullSearchSchema extends Record<string, any> = AnySearchSchema, TAllParams extends AnyPathParams = AnyPathParams, TAllContext extends Record<string, any> = AnyContext> = {
10
- useMatch: <TSelected = TAllContext>(opts?: {
11
- select?: (search: TAllContext) => TSelected;
12
- }) => TSelected;
13
- useRouteContext: <TSelected = TAllContext>(opts?: {
14
- select?: (search: TAllContext) => TSelected;
15
- }) => TSelected;
16
- useSearch: <TSelected = TFullSearchSchema>(opts?: {
17
- select?: (search: TFullSearchSchema) => TSelected;
18
- }) => TSelected;
19
- useParams: <TSelected = TAllParams>(opts?: {
20
- select?: (search: TAllParams) => TSelected;
21
- }) => TSelected;
22
- };
23
- export type ErrorRouteProps<TFullSearchSchema extends Record<string, any> = AnySearchSchema, TAllParams extends AnyPathParams = AnyPathParams, TAllContext extends Record<string, any> = AnyContext> = {
24
- error: unknown;
25
- info: {
26
- componentStack: string;
27
- };
28
- } & RouteProps<TFullSearchSchema, TAllParams, TAllContext>;
29
- export type PendingRouteProps<TFullSearchSchema extends Record<string, any> = AnySearchSchema, TAllParams extends AnyPathParams = AnyPathParams, TAllContext extends Record<string, any> = AnyContext> = RouteProps<TFullSearchSchema, TAllParams, TAllContext>;
30
- type ReactNode = any;
31
- export type SyncRouteComponent<TProps> = ((props: TProps) => ReactNode) | React.LazyExoticComponent<(props: TProps) => ReactNode>;
32
- export type AsyncRouteComponent<TProps> = SyncRouteComponent<TProps> & {
33
- preload?: () => Promise<void>;
34
- };
35
- export type RouteComponent<TFullSearchSchema extends Record<string, any>, TAllParams extends AnyPathParams, TAllContext extends Record<string, any>> = AsyncRouteComponent<RouteProps<TFullSearchSchema, TAllParams, TAllContext>>;
36
- export type ErrorRouteComponent<TFullSearchSchema extends Record<string, any>, TAllParams extends AnyPathParams, TAllContext extends Record<string, any>> = AsyncRouteComponent<ErrorRouteProps<TFullSearchSchema, TAllParams, TAllContext>>;
37
- export type PendingRouteComponent<TFullSearchSchema extends Record<string, any>, TAllParams extends AnyPathParams, TAllContext extends Record<string, any>> = AsyncRouteComponent<PendingRouteProps<TFullSearchSchema, TAllParams, TAllContext>>;
38
- export type AnyRouteComponent = RouteComponent<any, any, any>;
39
- export declare function lazyRouteComponent<T extends Record<string, any>, TKey extends keyof T = 'default'>(importer: () => Promise<T>, exportName?: TKey): T[TKey] extends (props: infer TProps) => any ? AsyncRouteComponent<TProps> : never;
40
- export type LinkPropsOptions<TRouteTree extends AnyRoute = RegisteredRouter['routeTree'], TFrom extends RoutePaths<TRouteTree> = '/', TTo extends string = '', TMaskFrom extends RoutePaths<TRouteTree> = '/', TMaskTo extends string = ''> = LinkOptions<TRouteTree, TFrom, TTo, TMaskFrom, TMaskTo> & {
41
- activeProps?: React.AnchorHTMLAttributes<HTMLAnchorElement> | (() => React.AnchorHTMLAttributes<HTMLAnchorElement>);
42
- inactiveProps?: React.AnchorHTMLAttributes<HTMLAnchorElement> | (() => React.AnchorHTMLAttributes<HTMLAnchorElement>);
43
- startTransition?: boolean;
44
- };
45
- export type MakeUseMatchRouteOptions<TRouteTree extends AnyRoute = RegisteredRouter['routeTree'], TFrom extends RoutePaths<TRouteTree> = '/', TTo extends string = '', TMaskFrom extends RoutePaths<TRouteTree> = '/', TMaskTo extends string = ''> = ToOptions<AnyRoute, TFrom, TTo, TMaskFrom, TMaskTo> & MatchRouteOptions;
46
- export type MakeMatchRouteOptions<TRouteTree extends AnyRoute = RegisteredRouter['routeTree'], TFrom extends RoutePaths<TRouteTree> = '/', TTo extends string = '', TMaskFrom extends RoutePaths<TRouteTree> = '/', TMaskTo extends string = ''> = ToOptions<TRouteTree, TFrom, TTo, TMaskFrom, TMaskTo> & MatchRouteOptions & {
47
- children?: ((params?: RouteByPath<TRouteTree, ResolveRelativePath<TFrom, NoInfer<TTo>>>['types']['allParams']) => ReactNode) | React.ReactNode;
48
- };
49
- export type MakeLinkPropsOptions<TRouteTree extends AnyRoute = RegisteredRouter['routeTree'], TFrom extends RoutePaths<TRouteTree> = '/', TTo extends string = '', TMaskFrom extends RoutePaths<TRouteTree> = '/', TMaskTo extends string = ''> = LinkPropsOptions<TRouteTree, TFrom, TTo, TMaskFrom, TMaskTo> & React.AnchorHTMLAttributes<HTMLAnchorElement>;
50
- export type MakeLinkOptions<TRouteTree extends AnyRoute = RegisteredRouter['routeTree'], TFrom extends RoutePaths<TRouteTree> = '/', TTo extends string = '', TMaskFrom extends RoutePaths<TRouteTree> = '/', TMaskTo extends string = ''> = LinkPropsOptions<TRouteTree, TFrom, TTo, TMaskFrom, TMaskTo> & Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, 'children'> & {
51
- children?: React.ReactNode | ((state: {
52
- isActive: boolean;
53
- }) => React.ReactNode);
54
- };
55
- export type PromptProps = {
56
- message: string;
57
- condition?: boolean | any;
58
- children?: ReactNode;
59
- };
60
- export declare function useLinkProps<TRouteTree extends AnyRoute = RegisteredRouter['routeTree'], TFrom extends RoutePaths<TRouteTree> = '/', TTo extends string = '', TMaskFrom extends RoutePaths<TRouteTree> = '/', TMaskTo extends string = ''>(options: MakeLinkPropsOptions<TRouteTree, TFrom, TTo, TMaskFrom, TMaskTo>): React.AnchorHTMLAttributes<HTMLAnchorElement>;
61
- export interface LinkComponent<TProps extends Record<string, any> = {}> {
62
- <TRouteTree extends AnyRoute = RegisteredRouter['routeTree'], TFrom extends RoutePaths<TRouteTree> = '/', TTo extends string = '', TMaskFrom extends RoutePaths<TRouteTree> = '/', TMaskTo extends string = ''>(props: MakeLinkOptions<TRouteTree, TFrom, TTo, TMaskFrom, TMaskTo> & TProps & React.RefAttributes<HTMLAnchorElement>): ReactNode;
63
- }
64
- export declare const Link: LinkComponent;
65
- export declare function Navigate<TRouteTree extends AnyRoute = RegisteredRouter['routeTree'], TFrom extends RoutePaths<TRouteTree> = '/', TTo extends string = '', TMaskFrom extends RoutePaths<TRouteTree> = '/', TMaskTo extends string = ''>(props: NavigateOptions<TRouteTree, TFrom, TTo, TMaskFrom, TMaskTo>): null;
66
- export declare const matchesContext: React.Context<RouteMatch<AnyRoute, any>[]>;
67
- export type RouterProps<TRouteTree extends AnyRoute = RegisteredRouter['routeTree'], TDehydrated extends Record<string, any> = Record<string, any>> = Omit<RouterOptions<TRouteTree, TDehydrated>, 'context'> & {
68
- router: Router<TRouteTree>;
69
- context?: Partial<RouterOptions<TRouteTree, TDehydrated>['context']>;
70
- };
71
- export declare function useRouter<TRouteTree extends AnyRoute = RegisteredRouter['routeTree']>(): RouterContext<TRouteTree>;
72
- export declare function useRouterState<TSelected = RouterState<RegisteredRouter['routeTree']>>(opts?: {
73
- select: (state: RouterState<RegisteredRouter['routeTree']>) => TSelected;
74
- }): TSelected;
75
- export declare function useMatches<T = RouteMatch[]>(opts?: {
76
- select?: (matches: RouteMatch[]) => T;
77
- }): T;
78
- type StrictOrFrom<TFrom> = {
79
- from: TFrom;
80
- strict?: true;
81
- } | {
82
- from?: never;
83
- strict: false;
84
- };
85
- export declare function useMatch<TRouteTree extends AnyRoute = RegisteredRouter['routeTree'], TFrom extends RouteIds<TRouteTree> = RouteIds<TRouteTree>, TStrict extends boolean = true, TRouteMatchState = RouteMatch<TRouteTree, TFrom>, TSelected = TRouteMatchState>(opts: StrictOrFrom<TFrom> & {
86
- select?: (match: TRouteMatchState) => TSelected;
87
- }): TStrict extends true ? TRouteMatchState : TRouteMatchState | undefined;
88
- export type RouteFromIdOrRoute<T, TRouteTree extends AnyRoute = RegisteredRouter['routeTree']> = T extends ParseRoute<TRouteTree> ? T : T extends RouteIds<TRouteTree> ? RoutesById<TRouteTree>[T] : T extends string ? RouteIds<TRouteTree> : never;
89
- export declare function useRouteContext<TRouteTree extends AnyRoute = RegisteredRouter['routeTree'], TFrom extends RouteIds<TRouteTree> = RouteIds<TRouteTree>, TStrict extends boolean = true, TRouteContext = RouteById<TRouteTree, TFrom>['types']['allContext'], TSelected = TRouteContext>(opts: StrictOrFrom<TFrom> & {
90
- select?: (search: TRouteContext) => TSelected;
91
- }): TStrict extends true ? TSelected : TSelected | undefined;
92
- export declare function useSearch<TRouteTree extends AnyRoute = RegisteredRouter['routeTree'], TFrom extends RouteIds<TRouteTree> = RouteIds<TRouteTree>, TStrict extends boolean = true, TSearch = RouteById<TRouteTree, TFrom>['types']['fullSearchSchema'], TSelected = TSearch>(opts: StrictOrFrom<TFrom> & {
93
- select?: (search: TSearch) => TSelected;
94
- }): TStrict extends true ? TSelected : TSelected | undefined;
95
- export declare function useParams<TRouteTree extends AnyRoute = RegisteredRouter['routeTree'], TFrom extends RouteIds<TRouteTree> = RouteIds<TRouteTree>, TDefaultSelected = AllParams<TRouteTree> & RouteById<TRouteTree, TFrom>['types']['allParams'], TSelected = TDefaultSelected>(opts: StrictOrFrom<TFrom> & {
96
- select?: (search: TDefaultSelected) => TSelected;
97
- }): TSelected;
98
- export declare function useNavigate<TRouteTree extends AnyRoute = RegisteredRouter['routeTree'], TDefaultFrom extends RoutePaths<TRouteTree> = '/'>(defaultOpts?: {
99
- from?: TDefaultFrom;
100
- }): <TFrom extends RoutePaths<TRouteTree> = TDefaultFrom, TTo extends string = "", TMaskFrom extends RoutePaths<TRouteTree> = "/", TMaskTo extends string = "">(opts?: NavigateOptions<TRouteTree, TFrom, TTo, TMaskFrom, TMaskTo> | undefined) => Promise<void>;
101
- export declare function typedNavigate<TRouteTree extends AnyRoute = RegisteredRouter['routeTree'], TDefaultFrom extends RoutePaths<TRouteTree> = '/'>(navigate: (opts: NavigateOptions<any>) => Promise<void>): <TFrom extends RoutePaths<TRouteTree> = TDefaultFrom, TTo extends string = "", TMaskFrom extends RoutePaths<TRouteTree> = "/", TMaskTo extends string = "">(opts?: NavigateOptions<TRouteTree, TFrom, TTo, TMaskFrom, TMaskTo> | undefined) => Promise<void>;
102
- export declare function useMatchRoute<TRouteTree extends AnyRoute = RegisteredRouter['routeTree']>(): <TFrom extends RoutePaths<TRouteTree> = "/", TTo extends string = "", TMaskFrom extends RoutePaths<TRouteTree> = "/", TMaskTo extends string = "", TResolved extends string = ResolveRelativePath<TFrom, NoInfer<TTo>>>(opts: MakeUseMatchRouteOptions<TRouteTree, TFrom, TTo, TMaskFrom, TMaskTo>) => false | RouteById<TRouteTree, TResolved>["types"]["allParams"];
103
- export declare function Matches(): JSX.Element;
104
- export declare function MatchRoute<TRouteTree extends AnyRoute = RegisteredRouter['routeTree'], TFrom extends RoutePaths<TRouteTree> = '/', TTo extends string = '', TMaskFrom extends RoutePaths<TRouteTree> = '/', TMaskTo extends string = ''>(props: MakeMatchRouteOptions<TRouteTree, TFrom, TTo, TMaskFrom, TMaskTo>): any;
105
- export declare function Outlet(): JSX.Element | null;
106
- export declare function CatchBoundary(props: {
107
- resetKey: string;
108
- children: any;
109
- errorComponent?: any;
110
- onCatch: (error: any) => void;
111
- }): JSX.Element;
112
- export declare class CatchBoundaryImpl extends React.Component<{
113
- resetKey: string;
114
- children: (props: {
115
- error: any;
116
- reset: () => void;
117
- }) => any;
118
- onCatch?: (error: any) => void;
119
- }> {
120
- state: any;
121
- static getDerivedStateFromError(error: any): {
122
- error: any;
123
- };
124
- componentDidUpdate(prevProps: Readonly<{
125
- resetKey: string;
126
- children: (props: {
127
- error: any;
128
- reset: () => void;
129
- }) => any;
130
- onCatch?: ((error: any, info: any) => void) | undefined;
131
- }>, prevState: any): void;
132
- componentDidCatch(error: any): void;
133
- render(): any;
134
- }
135
- export declare function ErrorComponent({ error }: {
136
- error: any;
137
- }): JSX.Element;
138
- export declare function useBlocker(message: string, condition?: boolean | any): void;
139
- export declare function Block({ message, condition, children }: PromptProps): any;
140
- export declare function shallow<T>(objA: T, objB: T): boolean;
141
- export {};
package/src/RouteMatch.ts DELETED
@@ -1,28 +0,0 @@
1
- import { AnyRoute } from './route'
2
- import { ParseRoute, FullSearchSchema, RouteById, RouteIds } from './routeInfo'
3
-
4
- export interface RouteMatch<
5
- TRouteTree extends AnyRoute = AnyRoute,
6
- TRouteId extends RouteIds<TRouteTree> = ParseRoute<TRouteTree>['id'],
7
- > {
8
- id: string
9
- routeId: TRouteId
10
- pathname: string
11
- params: RouteById<TRouteTree, TRouteId>['types']['allParams']
12
- status: 'pending' | 'success' | 'error'
13
- isFetching: boolean
14
- invalid: boolean
15
- error: unknown
16
- paramsError: unknown
17
- searchError: unknown
18
- updatedAt: number
19
- loadPromise?: Promise<void>
20
- __resolveLoadPromise?: () => void
21
- context: RouteById<TRouteTree, TRouteId>['types']['allContext']
22
- routeSearch: RouteById<TRouteTree, TRouteId>['types']['searchSchema']
23
- search: FullSearchSchema<TRouteTree> &
24
- RouteById<TRouteTree, TRouteId>['types']['fullSearchSchema']
25
- fetchedAt: number
26
- abortController: AbortController
27
- }
28
- export type AnyRouteMatch = RouteMatch<any>