@tanstack/react-router 0.0.1-beta.16 → 0.0.1-beta.19

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.
@@ -15,8 +15,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
15
15
  var _rollupPluginBabelHelpers = require('../../_virtual/_rollupPluginBabelHelpers.js');
16
16
  var React = require('react');
17
17
  var shim = require('use-sync-external-store/shim');
18
- var index$1 = require('../../router-core/build/esm/index.js');
19
- var index = require('react-lazy-with-preload/lib/index');
18
+ var index = require('../../router-core/build/esm/index.js');
20
19
 
21
20
  function _interopNamespace(e) {
22
21
  if (e && e.__esModule) return e;
@@ -41,9 +40,38 @@ var React__namespace = /*#__PURE__*/_interopNamespace(React);
41
40
  const _excluded = ["type", "children", "target", "activeProps", "inactiveProps", "activeOptions", "disabled", "hash", "search", "params", "to", "preload", "preloadDelay", "preloadMaxAge", "replace", "style", "className", "onClick", "onFocus", "onMouseEnter", "onMouseLeave", "onTouchStart", "onTouchEnd"],
42
41
  _excluded2 = ["pending", "caseSensitive", "children"],
43
42
  _excluded3 = ["children", "router"];
43
+ function lazy(importer) {
44
+ const lazyComp = /*#__PURE__*/React__namespace.lazy(importer);
45
+ let promise;
46
+ let resolvedComp;
47
+ const forwardedComp = /*#__PURE__*/React__namespace.forwardRef((props, ref) => {
48
+ const resolvedCompRef = React__namespace.useRef(resolvedComp || lazyComp);
49
+ return /*#__PURE__*/React__namespace.createElement(resolvedCompRef.current, _rollupPluginBabelHelpers["extends"]({}, ref ? {
50
+ ref
51
+ } : {}, props));
52
+ });
53
+ const finalComp = forwardedComp;
54
+
55
+ finalComp.preload = () => {
56
+ if (!promise) {
57
+ promise = importer().then(module => {
58
+ resolvedComp = module.default;
59
+ return resolvedComp;
60
+ });
61
+ }
62
+
63
+ return promise;
64
+ };
65
+
66
+ return finalComp;
67
+ }
44
68
  //
69
+ function Link(props) {
70
+ const router = useRouter();
71
+ return /*#__PURE__*/React__namespace.createElement(router.Link, props);
72
+ }
45
73
  const matchesContext = /*#__PURE__*/React__namespace.createContext(null);
46
- const routerContext = /*#__PURE__*/React__namespace.createContext(null); // Detect if we're in the DOM
74
+ const routerContext = /*#__PURE__*/React__namespace.createContext(null);
47
75
  function MatchesProvider(props) {
48
76
  return /*#__PURE__*/React__namespace.createElement(matchesContext.Provider, props);
49
77
  }
@@ -63,7 +91,7 @@ function createReactRouter(opts) {
63
91
  const resolvedRouteId = router.resolvePath(route.routeId, subRouteId);
64
92
  const resolvedRoute = router.getRoute(resolvedRouteId);
65
93
  useRouterSubscription(router);
66
- index$1.invariant(resolvedRoute, "Could not find a route for route \"" + resolvedRouteId + "\"! Did you forget to add it to your route config?");
94
+ index.invariant(resolvedRoute, "Could not find a route for route \"" + resolvedRouteId + "\"! Did you forget to add it to your route config?");
67
95
  return resolvedRoute;
68
96
  },
69
97
  linkProps: options => {
@@ -121,9 +149,9 @@ function createReactRouter(opts) {
121
149
  }; // Get the active props
122
150
 
123
151
 
124
- const resolvedActiveProps = isActive ? (_functionalUpdate = index$1.functionalUpdate(activeProps, {})) != null ? _functionalUpdate : {} : {}; // Get the inactive props
152
+ const resolvedActiveProps = isActive ? (_functionalUpdate = index.functionalUpdate(activeProps, {})) != null ? _functionalUpdate : {} : {}; // Get the inactive props
125
153
 
126
- const resolvedInactiveProps = isActive ? {} : (_functionalUpdate2 = index$1.functionalUpdate(inactiveProps, {})) != null ? _functionalUpdate2 : {};
154
+ const resolvedInactiveProps = isActive ? {} : (_functionalUpdate2 = index.functionalUpdate(inactiveProps, {})) != null ? _functionalUpdate2 : {};
127
155
  return _rollupPluginBabelHelpers["extends"]({}, resolvedActiveProps, resolvedInactiveProps, rest, {
128
156
  href: disabled ? undefined : next.href,
129
157
  onClick: composeHandlers([reactHandleClick, onClick]),
@@ -172,7 +200,7 @@ function createReactRouter(opts) {
172
200
  };
173
201
  };
174
202
 
175
- const coreRouter = index$1.createRouter(_rollupPluginBabelHelpers["extends"]({}, opts, {
203
+ const coreRouter = index.createRouter(_rollupPluginBabelHelpers["extends"]({}, opts, {
176
204
  createRouter: router => {
177
205
  const routerExt = {
178
206
  useState: () => {
@@ -183,13 +211,13 @@ function createReactRouter(opts) {
183
211
  var _useMatches, _opts$strict;
184
212
 
185
213
  useRouterSubscription(router);
186
- index$1.invariant(routeId !== index$1.rootRouteId, "\"" + index$1.rootRouteId + "\" cannot be used with useMatch! Did you mean to useRoute(\"" + index$1.rootRouteId + "\")?");
214
+ index.invariant(routeId !== index.rootRouteId, "\"" + index.rootRouteId + "\" cannot be used with useMatch! Did you mean to useRoute(\"" + index.rootRouteId + "\")?");
187
215
  const runtimeMatch = (_useMatches = useMatches()) == null ? void 0 : _useMatches[0];
188
216
  const match = router.state.matches.find(d => d.routeId === routeId);
189
217
 
190
218
  if ((_opts$strict = opts == null ? void 0 : opts.strict) != null ? _opts$strict : true) {
191
- index$1.invariant(match, "Could not find an active match for \"" + routeId + "\"!");
192
- index$1.invariant(runtimeMatch.routeId == (match == null ? void 0 : match.routeId), "useMatch('" + (match == null ? void 0 : match.routeId) + "') is being called in a component that is meant to render the '" + runtimeMatch.routeId + "' route. Did you mean to 'useMatch(" + (match == null ? void 0 : match.routeId) + ", { strict: false })' or 'useRoute(" + (match == null ? void 0 : match.routeId) + ")' instead?");
219
+ index.invariant(match, "Could not find an active match for \"" + routeId + "\"!");
220
+ index.invariant(runtimeMatch.routeId == (match == null ? void 0 : match.routeId), "useMatch(\"" + (match == null ? void 0 : match.routeId) + "\") is being called in a component that is meant to render the '" + runtimeMatch.routeId + "' route. Did you mean to 'useMatch(\"" + (match == null ? void 0 : match.routeId) + "\", { strict: false })' or 'useRoute(\"" + (match == null ? void 0 : match.routeId) + "\")' instead?");
193
221
  }
194
222
 
195
223
  return match;
@@ -226,11 +254,12 @@ function RouterProvider(_ref2) {
226
254
  router.update(rest);
227
255
  useRouterSubscription(router);
228
256
  React__namespace.useEffect(() => {
257
+ console.log('hello');
229
258
  return router.mount();
230
259
  }, [router]);
231
260
  return /*#__PURE__*/React__namespace.createElement(routerContext.Provider, {
232
261
  value: {
233
- router
262
+ router: router
234
263
  }
235
264
  }, /*#__PURE__*/React__namespace.createElement(MatchesProvider, {
236
265
  value: router.state.matches
@@ -238,13 +267,17 @@ function RouterProvider(_ref2) {
238
267
  }
239
268
  function useRouter() {
240
269
  const value = React__namespace.useContext(routerContext);
241
- index$1.warning(!value, 'useRouter must be used inside a <Router> component!');
270
+ index.warning(!value, 'useRouter must be used inside a <Router> component!');
242
271
  useRouterSubscription(value.router);
243
272
  return value.router;
244
273
  }
245
274
  function useMatches() {
246
275
  return React__namespace.useContext(matchesContext);
247
276
  }
277
+ function useMatch(routeId, opts) {
278
+ const router = useRouter();
279
+ return router.useMatch(routeId, opts);
280
+ }
248
281
  function Outlet() {
249
282
  var _ref3, _match$__$pendingComp, _match$__$errorCompon;
250
283
 
@@ -276,12 +309,8 @@ function Outlet() {
276
309
  return /*#__PURE__*/React__namespace.createElement((_ref4 = (_ref5 = match.__.component) != null ? _ref5 : router.options.defaultComponent) != null ? _ref4 : Outlet);
277
310
  }
278
311
 
279
- if (match.__.loadPromise) {
280
- console.log(match.matchId, 'suspend');
281
- throw match.__.loadPromise;
282
- }
283
-
284
- index$1.invariant(false, 'This should never happen!');
312
+ console.log(match.matchId, 'suspend');
313
+ throw match.__.loadPromise;
285
314
  })())));
286
315
  }
287
316
 
@@ -367,46 +396,47 @@ function Prompt(_ref7) {
367
396
  return children != null ? children : null;
368
397
  }
369
398
 
370
- exports.cleanPath = index$1.cleanPath;
371
- exports.createBrowserHistory = index$1.createBrowserHistory;
372
- exports.createHashHistory = index$1.createHashHistory;
373
- exports.createMemoryHistory = index$1.createMemoryHistory;
374
- exports.createRoute = index$1.createRoute;
375
- exports.createRouteConfig = index$1.createRouteConfig;
376
- exports.createRouteMatch = index$1.createRouteMatch;
377
- exports.createRouter = index$1.createRouter;
378
- exports.decode = index$1.decode;
379
- exports.defaultParseSearch = index$1.defaultParseSearch;
380
- exports.defaultStringifySearch = index$1.defaultStringifySearch;
381
- exports.encode = index$1.encode;
382
- exports.functionalUpdate = index$1.functionalUpdate;
383
- exports.interpolatePath = index$1.interpolatePath;
384
- exports.invariant = index$1.invariant;
385
- exports.joinPaths = index$1.joinPaths;
386
- exports.last = index$1.last;
387
- exports.matchByPath = index$1.matchByPath;
388
- exports.matchPathname = index$1.matchPathname;
389
- exports.parsePathname = index$1.parsePathname;
390
- exports.parseSearchWith = index$1.parseSearchWith;
391
- exports.pick = index$1.pick;
392
- exports.replaceEqualDeep = index$1.replaceEqualDeep;
393
- exports.resolvePath = index$1.resolvePath;
394
- exports.rootRouteId = index$1.rootRouteId;
395
- exports.stringifySearchWith = index$1.stringifySearchWith;
396
- exports.trimPath = index$1.trimPath;
397
- exports.trimPathLeft = index$1.trimPathLeft;
398
- exports.trimPathRight = index$1.trimPathRight;
399
- exports.warning = index$1.warning;
400
- Object.defineProperty(exports, 'lazy', {
401
- enumerable: true,
402
- get: function () { return index.lazyWithPreload; }
403
- });
399
+ exports.cleanPath = index.cleanPath;
400
+ exports.createBrowserHistory = index.createBrowserHistory;
401
+ exports.createHashHistory = index.createHashHistory;
402
+ exports.createMemoryHistory = index.createMemoryHistory;
403
+ exports.createRoute = index.createRoute;
404
+ exports.createRouteConfig = index.createRouteConfig;
405
+ exports.createRouteMatch = index.createRouteMatch;
406
+ exports.createRouter = index.createRouter;
407
+ exports.decode = index.decode;
408
+ exports.defaultParseSearch = index.defaultParseSearch;
409
+ exports.defaultStringifySearch = index.defaultStringifySearch;
410
+ exports.encode = index.encode;
411
+ exports.functionalUpdate = index.functionalUpdate;
412
+ exports.interpolatePath = index.interpolatePath;
413
+ exports.invariant = index.invariant;
414
+ exports.joinPaths = index.joinPaths;
415
+ exports.last = index.last;
416
+ exports.matchByPath = index.matchByPath;
417
+ exports.matchPathname = index.matchPathname;
418
+ exports.parsePathname = index.parsePathname;
419
+ exports.parseSearchWith = index.parseSearchWith;
420
+ exports.pick = index.pick;
421
+ exports.replaceEqualDeep = index.replaceEqualDeep;
422
+ exports.resolvePath = index.resolvePath;
423
+ exports.rootRouteId = index.rootRouteId;
424
+ exports.stringifySearchWith = index.stringifySearchWith;
425
+ exports.trimPath = index.trimPath;
426
+ exports.trimPathLeft = index.trimPathLeft;
427
+ exports.trimPathRight = index.trimPathRight;
428
+ exports.warning = index.warning;
404
429
  exports.DefaultErrorBoundary = DefaultErrorBoundary;
430
+ exports.Link = Link;
405
431
  exports.MatchesProvider = MatchesProvider;
406
432
  exports.Outlet = Outlet;
407
433
  exports.Prompt = Prompt;
408
434
  exports.RouterProvider = RouterProvider;
409
435
  exports.createReactRouter = createReactRouter;
436
+ exports.lazy = lazy;
437
+ exports.matchesContext = matchesContext;
438
+ exports.routerContext = routerContext;
439
+ exports.useMatch = useMatch;
410
440
  exports.useMatches = useMatches;
411
441
  exports.usePrompt = usePrompt;
412
442
  exports.useRouter = useRouter;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../src/index.tsx"],"sourcesContent":["import * as React from 'react'\n\nimport { useSyncExternalStore } from 'use-sync-external-store/shim'\n\nimport {\n AnyRoute,\n CheckId,\n rootRouteId,\n Router,\n RouterState,\n ToIdOption,\n} from '@tanstack/router-core'\nimport {\n warning,\n RouterOptions,\n RouteMatch,\n MatchRouteOptions,\n RouteConfig,\n AnyRouteConfig,\n AnyAllRouteInfo,\n DefaultAllRouteInfo,\n functionalUpdate,\n createRouter,\n AnyRouteInfo,\n AllRouteInfo,\n RouteInfo,\n ValidFromPath,\n LinkOptions,\n RouteInfoByPath,\n ResolveRelativePath,\n NoInfer,\n ToOptions,\n invariant,\n} from '@tanstack/router-core'\n\nexport * from '@tanstack/router-core'\n\nexport { lazyWithPreload as lazy } from 'react-lazy-with-preload/lib/index'\nexport type { PreloadableComponent as LazyComponent } from 'react-lazy-with-preload'\n\ntype SyncRouteComponent = (props?: {}) => React.ReactNode\nexport type RouteComponent = SyncRouteComponent & {\n preload?: () => Promise<{\n default: SyncRouteComponent\n }>\n}\n\ndeclare module '@tanstack/router-core' {\n interface FrameworkGenerics {\n Component: RouteComponent\n }\n\n interface Router<\n TRouteConfig extends AnyRouteConfig = RouteConfig,\n TAllRouteInfo extends AnyAllRouteInfo = AllRouteInfo<TRouteConfig>,\n > {\n useState: () => RouterState\n useRoute: <TId extends keyof TAllRouteInfo['routeInfoById']>(\n routeId: TId,\n ) => Route<TAllRouteInfo, TAllRouteInfo['routeInfoById'][TId]>\n useMatch: <\n TId extends keyof TAllRouteInfo['routeInfoById'],\n TStrict extends true | false = true,\n >(\n routeId: TId,\n opts?: { strict?: TStrict },\n ) => TStrict extends true\n ? RouteMatch<TAllRouteInfo, TAllRouteInfo['routeInfoById'][TId]>\n :\n | RouteMatch<TAllRouteInfo, TAllRouteInfo['routeInfoById'][TId]>\n | undefined\n linkProps: <TTo extends string = '.'>(\n props: LinkPropsOptions<TAllRouteInfo, '/', TTo> &\n React.AnchorHTMLAttributes<HTMLAnchorElement>,\n ) => React.AnchorHTMLAttributes<HTMLAnchorElement>\n Link: <TTo extends string = '.'>(\n props: LinkPropsOptions<TAllRouteInfo, '/', TTo> &\n React.AnchorHTMLAttributes<HTMLAnchorElement> &\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 ) => JSX.Element\n MatchRoute: <TTo extends string = '.'>(\n props: ToOptions<TAllRouteInfo, '/', TTo> &\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 | React.ReactNode\n | ((\n params: RouteInfoByPath<\n TAllRouteInfo,\n ResolveRelativePath<'/', NoInfer<TTo>>\n >['allParams'],\n ) => React.ReactNode)\n },\n ) => JSX.Element\n }\n\n interface Route<\n TAllRouteInfo extends AnyAllRouteInfo = DefaultAllRouteInfo,\n TRouteInfo extends AnyRouteInfo = RouteInfo,\n > {\n useRoute: <\n TTo extends string = '.',\n TResolved extends string = ResolveRelativePath<\n TRouteInfo['id'],\n NoInfer<TTo>\n >,\n >(\n routeId: CheckId<\n TAllRouteInfo,\n TResolved,\n ToIdOption<TAllRouteInfo, TRouteInfo['id'], TTo>\n >,\n opts?: { strict?: boolean },\n ) => Route<TAllRouteInfo, TAllRouteInfo['routeInfoById'][TResolved]>\n linkProps: <TTo extends string = '.'>(\n props: LinkPropsOptions<TAllRouteInfo, TRouteInfo['fullPath'], TTo> &\n React.AnchorHTMLAttributes<HTMLAnchorElement>,\n ) => React.AnchorHTMLAttributes<HTMLAnchorElement>\n Link: <TTo extends string = '.'>(\n props: LinkPropsOptions<TAllRouteInfo, TRouteInfo['fullPath'], TTo> &\n React.AnchorHTMLAttributes<HTMLAnchorElement> &\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 ) => JSX.Element\n MatchRoute: <TTo extends string = '.'>(\n props: ToOptions<TAllRouteInfo, TRouteInfo['fullPath'], TTo> &\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 | React.ReactNode\n | ((\n params: RouteInfoByPath<\n TAllRouteInfo,\n ResolveRelativePath<TRouteInfo['fullPath'], NoInfer<TTo>>\n >['allParams'],\n ) => React.ReactNode)\n },\n ) => JSX.Element\n }\n}\n\ntype LinkPropsOptions<\n TAllRouteInfo extends AnyAllRouteInfo = DefaultAllRouteInfo,\n TFrom extends ValidFromPath<TAllRouteInfo> = '/',\n TTo extends string = '.',\n> = LinkOptions<TAllRouteInfo, TFrom, TTo> & {\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}\n\nexport type PromptProps = {\n message: string\n when?: boolean | any\n children?: React.ReactNode\n}\n\n//\n\nconst matchesContext = React.createContext<RouteMatch[]>(null!)\nconst routerContext = React.createContext<{ router: Router<any, any> }>(null!)\n\n// Detect if we're in the DOM\nconst isDOM = Boolean(\n typeof window !== 'undefined' &&\n window.document &&\n window.document.createElement,\n)\n\nconst useLayoutEffect = isDOM ? React.useLayoutEffect : React.useEffect\n\nexport type MatchesProviderProps = {\n value: RouteMatch[]\n children: React.ReactNode\n}\n\nexport function MatchesProvider(props: MatchesProviderProps) {\n return <matchesContext.Provider {...props} />\n}\n\nconst useRouterSubscription = (router: Router<any, any>) => {\n useSyncExternalStore(\n (cb) => router.subscribe(() => cb()),\n () => router.state,\n () => router.state,\n )\n}\n\nexport function createReactRouter<\n TRouteConfig extends AnyRouteConfig = RouteConfig,\n>(opts: RouterOptions<TRouteConfig>): Router<TRouteConfig> {\n const makeRouteExt = (\n route: AnyRoute,\n router: Router<any, any>,\n ): Pick<AnyRoute, 'useRoute' | 'linkProps' | 'Link' | 'MatchRoute'> => {\n return {\n useRoute: (subRouteId = '.' as any) => {\n const resolvedRouteId = router.resolvePath(\n route.routeId,\n subRouteId as string,\n )\n const resolvedRoute = router.getRoute(resolvedRouteId)\n useRouterSubscription(router)\n invariant(\n resolvedRoute,\n `Could not find a route for route \"${\n resolvedRouteId as string\n }\"! Did you forget to add it to your route config?`,\n )\n return resolvedRoute\n },\n linkProps: (options) => {\n const {\n // custom props\n type,\n children,\n target,\n activeProps = () => ({ className: 'active' }),\n inactiveProps = () => ({}),\n activeOptions,\n disabled,\n // fromCurrent,\n hash,\n search,\n params,\n to,\n preload,\n preloadDelay,\n preloadMaxAge,\n replace,\n // element props\n style,\n className,\n onClick,\n onFocus,\n onMouseEnter,\n onMouseLeave,\n onTouchStart,\n onTouchEnd,\n ...rest\n } = options\n\n const linkInfo = route.buildLink(options)\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 isActive,\n next,\n } = linkInfo\n\n const reactHandleClick = (e: Event) => {\n React.startTransition(() => {\n handleClick(e)\n })\n }\n\n const composeHandlers =\n (handlers: (undefined | ((e: any) => void))[]) =>\n (e: React.SyntheticEvent) => {\n e.persist()\n handlers.forEach((handler) => {\n if (handler) handler(e)\n })\n }\n\n // Get the active props\n const resolvedActiveProps: React.HTMLAttributes<HTMLAnchorElement> =\n isActive ? functionalUpdate(activeProps, {}) ?? {} : {}\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 ? undefined : next.href,\n onClick: composeHandlers([reactHandleClick, onClick]),\n onFocus: composeHandlers([handleFocus, onFocus]),\n onMouseEnter: composeHandlers([handleEnter, onMouseEnter]),\n onMouseLeave: composeHandlers([handleLeave, onMouseLeave]),\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 Link: React.forwardRef((props: any, ref) => {\n const linkProps = route.linkProps(props)\n\n useRouterSubscription(router)\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 MatchRoute: (opts) => {\n const { pending, caseSensitive, children, ...rest } = opts\n\n const params = route.matchRoute(rest as any, {\n pending,\n caseSensitive,\n })\n\n if (!params) {\n return null\n }\n\n return typeof opts.children === 'function'\n ? opts.children(params as any)\n : (opts.children as any)\n },\n }\n }\n\n const coreRouter = createRouter<TRouteConfig>({\n ...opts,\n createRouter: (router) => {\n const routerExt: Pick<Router<any, any>, 'useMatch' | 'useState'> = {\n useState: () => {\n useRouterSubscription(router)\n return router.state\n },\n useMatch: (routeId, opts) => {\n useRouterSubscription(router)\n\n invariant(\n routeId !== rootRouteId,\n `\"${rootRouteId}\" cannot be used with useMatch! Did you mean to useRoute(\"${rootRouteId}\")?`,\n )\n\n const runtimeMatch = useMatches()?.[0]!\n const match = router.state.matches.find((d) => d.routeId === routeId)\n\n if (opts?.strict ?? true) {\n invariant(\n match,\n `Could not find an active match for \"${routeId as string}\"!`,\n )\n\n invariant(\n runtimeMatch.routeId == match?.routeId,\n `useMatch('${\n match?.routeId as string\n }') is being called in a component that is meant to render the '${\n runtimeMatch.routeId\n }' route. Did you mean to 'useMatch(${\n match?.routeId as string\n }, { strict: false })' or 'useRoute(${\n match?.routeId as string\n })' instead?`,\n )\n }\n\n return match as any\n },\n }\n\n const routeExt = makeRouteExt(router.getRoute('/'), router)\n\n Object.assign(router, routerExt, routeExt)\n },\n createRoute: ({ router, route }) => {\n const routeExt = makeRouteExt(route, router)\n\n Object.assign(route, routeExt)\n },\n loadComponent: async (component) => {\n if (component.preload && typeof document !== 'undefined') {\n component.preload()\n // return await component.preload()\n }\n\n return component as any\n },\n })\n\n return coreRouter as any\n}\n\nexport type RouterProps<\n TRouteConfig extends AnyRouteConfig = RouteConfig,\n TAllRouteInfo extends AnyAllRouteInfo = DefaultAllRouteInfo,\n> = RouterOptions<TRouteConfig> & {\n router: Router<TRouteConfig, TAllRouteInfo>\n // Children will default to `<Outlet />` if not provided\n children?: React.ReactNode\n}\n\nexport function RouterProvider<\n TRouteConfig extends AnyRouteConfig = RouteConfig,\n TAllRouteInfo extends AnyAllRouteInfo = DefaultAllRouteInfo,\n>({ children, router, ...rest }: RouterProps<TRouteConfig, TAllRouteInfo>) {\n router.update(rest)\n\n useRouterSubscription(router)\n React.useEffect(() => {\n return router.mount()\n }, [router])\n\n return (\n <routerContext.Provider value={{ router }}>\n <MatchesProvider value={router.state.matches}>\n {children ?? <Outlet />}\n </MatchesProvider>\n </routerContext.Provider>\n )\n}\n\nexport function useRouter(): Router {\n const value = React.useContext(routerContext)\n warning(!value, 'useRouter must be used inside a <Router> component!')\n\n useRouterSubscription(value.router)\n\n return value.router as Router\n}\n\nexport function useMatches(): RouteMatch[] {\n return React.useContext(matchesContext)\n}\n\nexport function Outlet() {\n const router = useRouter()\n const matches = useMatches().slice(1)\n const match = matches[0]\n\n const defaultPending = React.useCallback(() => null, [])\n\n if (!match) {\n return null\n }\n\n const PendingComponent = (match.__.pendingComponent ??\n router.options.defaultPendingComponent ??\n defaultPending) as any\n\n const errorComponent =\n match.__.errorComponent ?? router.options.defaultErrorComponent\n\n return (\n <MatchesProvider value={matches}>\n <React.Suspense fallback={<PendingComponent />}>\n <CatchBoundary errorComponent={errorComponent}>\n {\n ((): React.ReactNode => {\n if (match.status === 'error') {\n throw match.error\n }\n\n if (match.status === 'success') {\n return React.createElement(\n (match.__.component as any) ??\n router.options.defaultComponent ??\n Outlet,\n )\n }\n\n if (match.__.loadPromise) {\n console.log(match.matchId, 'suspend')\n throw match.__.loadPromise\n }\n\n invariant(false, 'This should never happen!')\n })() as JSX.Element\n }\n </CatchBoundary>\n </React.Suspense>\n </MatchesProvider>\n )\n}\n\nclass CatchBoundary extends React.Component<{\n children: any\n errorComponent: any\n}> {\n state = {\n error: false,\n }\n componentDidCatch(error: any, info: any) {\n console.error(error)\n\n this.setState({\n error,\n info,\n })\n }\n render() {\n const errorComponent = this.props.errorComponent ?? DefaultErrorBoundary\n\n if (this.state.error) {\n return React.createElement(errorComponent, this.state)\n }\n\n return this.props.children\n }\n}\n\nexport function DefaultErrorBoundary({ error }: { error: any }) {\n return (\n <div style={{ padding: '.5rem', maxWidth: '100%' }}>\n <strong style={{ fontSize: '1.2rem' }}>Something went wrong!</strong>\n <div style={{ height: '.5rem' }} />\n <div>\n <pre>\n {error.message ? (\n <code\n style={{\n fontSize: '.7em',\n border: '1px solid red',\n borderRadius: '.25rem',\n padding: '.5rem',\n color: 'red',\n }}\n >\n {error.message}\n </code>\n ) : null}\n </pre>\n </div>\n </div>\n )\n}\n\nexport function usePrompt(message: string, when: boolean | any): void {\n const router = useRouter()\n\n React.useEffect(() => {\n if (!when) return\n\n let unblock = router.history.block((transition) => {\n if (window.confirm(message)) {\n unblock()\n transition.retry()\n } else {\n router.location.pathname = window.location.pathname\n }\n })\n\n return unblock\n }, [when, location, message])\n}\n\nexport function Prompt({ message, when, children }: PromptProps) {\n usePrompt(message, when ?? true)\n return (children ?? null) as React.ReactNode\n}\n"],"names":["matchesContext","React","createContext","routerContext","MatchesProvider","props","useRouterSubscription","router","useSyncExternalStore","cb","subscribe","state","createReactRouter","opts","makeRouteExt","route","useRoute","subRouteId","resolvedRouteId","resolvePath","routeId","resolvedRoute","getRoute","invariant","linkProps","options","target","activeProps","className","inactiveProps","disabled","style","onClick","onFocus","onMouseEnter","onMouseLeave","rest","linkInfo","buildLink","type","href","handleClick","handleFocus","handleEnter","handleLeave","isActive","next","reactHandleClick","e","startTransition","composeHandlers","handlers","persist","forEach","handler","resolvedActiveProps","functionalUpdate","resolvedInactiveProps","_extends","undefined","filter","Boolean","join","role","Link","forwardRef","ref","children","MatchRoute","pending","caseSensitive","params","matchRoute","coreRouter","createRouter","routerExt","useState","useMatch","rootRouteId","runtimeMatch","useMatches","match","matches","find","d","strict","routeExt","Object","assign","createRoute","loadComponent","component","preload","document","RouterProvider","_objectWithoutPropertiesLoose","update","useEffect","mount","useRouter","value","useContext","warning","Outlet","slice","defaultPending","useCallback","PendingComponent","__","pendingComponent","defaultPendingComponent","errorComponent","defaultErrorComponent","status","error","createElement","defaultComponent","loadPromise","console","log","matchId","CatchBoundary","Component","componentDidCatch","info","setState","render","DefaultErrorBoundary","padding","maxWidth","fontSize","height","message","border","borderRadius","color","usePrompt","when","unblock","history","block","transition","window","confirm","retry","location","pathname","Prompt"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../../src/index.tsx"],"sourcesContent":["import * as React from 'react'\n\nimport { useSyncExternalStore } from 'use-sync-external-store/shim'\n\nimport {\n AnyRoute,\n CheckId,\n rootRouteId,\n RouterState,\n ToIdOption,\n} from '@tanstack/router-core'\nimport {\n warning,\n RouterOptions,\n RouteMatch,\n MatchRouteOptions,\n RouteConfig,\n AnyRouteConfig,\n AnyAllRouteInfo,\n DefaultAllRouteInfo,\n functionalUpdate,\n createRouter,\n AnyRouteInfo,\n AllRouteInfo,\n RouteInfo,\n ValidFromPath,\n LinkOptions,\n RouteInfoByPath,\n ResolveRelativePath,\n NoInfer,\n ToOptions,\n invariant,\n Router,\n} from '@tanstack/router-core'\n\nexport * from '@tanstack/router-core'\n\nexport interface ResolveRouter {\n // router: Router\n}\n\nexport type ResolvedRouter = ResolveRouter extends {\n router: Router<infer TRouteConfig, infer TAllRouteInfo>\n}\n ? Router<TRouteConfig, TAllRouteInfo>\n : Router\n\nexport type ResolvedAllRouteInfo = ResolveRouter extends {\n router: Router<infer TRouteConfig, infer TAllRouteInfo>\n}\n ? TAllRouteInfo\n : AnyAllRouteInfo\n\nexport type SyncRouteComponent = (props?: {}) => JSX.Element | React.ReactNode\n\nexport type RouteComponent = SyncRouteComponent & {\n preload?: () => Promise<SyncRouteComponent>\n}\n\nexport function lazy(\n importer: () => Promise<{ default: SyncRouteComponent }>,\n): RouteComponent {\n const lazyComp = React.lazy(importer as any)\n let promise: Promise<SyncRouteComponent>\n let resolvedComp: SyncRouteComponent\n\n const forwardedComp = React.forwardRef((props, ref) => {\n const resolvedCompRef = React.useRef(resolvedComp || lazyComp)\n return React.createElement(\n resolvedCompRef.current as any,\n { ...(ref ? { ref } : {}), ...props } as any,\n )\n })\n\n const finalComp = forwardedComp as unknown as RouteComponent\n\n finalComp.preload = () => {\n if (!promise) {\n promise = importer().then((module) => {\n resolvedComp = module.default\n return resolvedComp\n })\n }\n\n return promise\n }\n\n return finalComp\n}\n\ndeclare module '@tanstack/router-core' {\n interface FrameworkGenerics {\n Component: RouteComponent\n }\n\n interface Router<\n TRouteConfig extends AnyRouteConfig = RouteConfig,\n TAllRouteInfo extends AnyAllRouteInfo = AllRouteInfo<TRouteConfig>,\n > {\n useState: () => RouterState\n useRoute: <TId extends keyof TAllRouteInfo['routeInfoById']>(\n routeId: TId,\n ) => Route<TAllRouteInfo, TAllRouteInfo['routeInfoById'][TId]>\n useMatch: <\n TId extends keyof TAllRouteInfo['routeInfoById'],\n TStrict extends true | false = true,\n >(\n routeId: TId,\n opts?: { strict?: TStrict },\n ) => TStrict extends true\n ? RouteMatch<TAllRouteInfo, TAllRouteInfo['routeInfoById'][TId]>\n :\n | RouteMatch<TAllRouteInfo, TAllRouteInfo['routeInfoById'][TId]>\n | undefined\n linkProps: <TTo extends string = '.'>(\n props: LinkPropsOptions<TAllRouteInfo, '/', TTo> &\n React.AnchorHTMLAttributes<HTMLAnchorElement>,\n ) => React.AnchorHTMLAttributes<HTMLAnchorElement>\n Link: <TTo extends string = '.'>(\n props: LinkPropsOptions<TAllRouteInfo, '/', TTo> &\n React.AnchorHTMLAttributes<HTMLAnchorElement> &\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 ) => JSX.Element\n MatchRoute: <TTo extends string = '.'>(\n props: ToOptions<TAllRouteInfo, '/', TTo> &\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 | React.ReactNode\n | ((\n params: RouteInfoByPath<\n TAllRouteInfo,\n ResolveRelativePath<'/', NoInfer<TTo>>\n >['allParams'],\n ) => React.ReactNode)\n },\n ) => JSX.Element\n }\n\n interface Route<\n TAllRouteInfo extends AnyAllRouteInfo = DefaultAllRouteInfo,\n TRouteInfo extends AnyRouteInfo = RouteInfo,\n > {\n useRoute: <\n TTo extends string = '.',\n TResolved extends string = ResolveRelativePath<\n TRouteInfo['id'],\n NoInfer<TTo>\n >,\n >(\n routeId: CheckId<\n TAllRouteInfo,\n TResolved,\n ToIdOption<TAllRouteInfo, TRouteInfo['id'], TTo>\n >,\n opts?: { strict?: boolean },\n ) => Route<TAllRouteInfo, TAllRouteInfo['routeInfoById'][TResolved]>\n linkProps: <TTo extends string = '.'>(\n props: LinkPropsOptions<TAllRouteInfo, TRouteInfo['fullPath'], TTo> &\n React.AnchorHTMLAttributes<HTMLAnchorElement>,\n ) => React.AnchorHTMLAttributes<HTMLAnchorElement>\n Link: <TTo extends string = '.'>(\n props: LinkPropsOptions<TAllRouteInfo, TRouteInfo['fullPath'], TTo> &\n React.AnchorHTMLAttributes<HTMLAnchorElement> &\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 ) => JSX.Element\n MatchRoute: <TTo extends string = '.'>(\n props: ToOptions<TAllRouteInfo, TRouteInfo['fullPath'], TTo> &\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 | React.ReactNode\n | ((\n params: RouteInfoByPath<\n TAllRouteInfo,\n ResolveRelativePath<TRouteInfo['fullPath'], NoInfer<TTo>>\n >['allParams'],\n ) => React.ReactNode)\n },\n ) => JSX.Element\n }\n}\n\ntype LinkPropsOptions<\n TAllRouteInfo extends AnyAllRouteInfo = DefaultAllRouteInfo,\n TFrom extends ValidFromPath<TAllRouteInfo> = '/',\n TTo extends string = '.',\n> = LinkOptions<TAllRouteInfo, TFrom, TTo> & {\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}\n\nexport type PromptProps = {\n message: string\n when?: boolean | any\n children?: React.ReactNode\n}\n\n//\n\nexport function Link<TTo extends string = '.'>(\n props: LinkPropsOptions<ResolvedAllRouteInfo, '/', TTo> &\n React.AnchorHTMLAttributes<HTMLAnchorElement> &\n Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, 'children'> & {\n children?:\n | React.ReactNode\n | ((state: { isActive: boolean }) => React.ReactNode)\n },\n): JSX.Element {\n const router = useRouter()\n return <router.Link {...(props as any)} />\n}\n\nexport const matchesContext = React.createContext<RouteMatch[]>(null!)\nexport const routerContext = React.createContext<{ router: ResolvedRouter }>(\n null!,\n)\n\nexport type MatchesProviderProps = {\n value: RouteMatch[]\n children: React.ReactNode\n}\n\nexport function MatchesProvider(props: MatchesProviderProps) {\n return <matchesContext.Provider {...props} />\n}\n\nconst useRouterSubscription = (router: Router<any, any>) => {\n useSyncExternalStore(\n (cb) => router.subscribe(() => cb()),\n () => router.state,\n () => router.state,\n )\n}\n\nexport function createReactRouter<\n TRouteConfig extends AnyRouteConfig = RouteConfig,\n>(opts: RouterOptions<TRouteConfig>): Router<TRouteConfig> {\n const makeRouteExt = (\n route: AnyRoute,\n router: Router<any, any>,\n ): Pick<AnyRoute, 'useRoute' | 'linkProps' | 'Link' | 'MatchRoute'> => {\n return {\n useRoute: (subRouteId = '.' as any) => {\n const resolvedRouteId = router.resolvePath(\n route.routeId,\n subRouteId as string,\n )\n const resolvedRoute = router.getRoute(resolvedRouteId)\n useRouterSubscription(router)\n invariant(\n resolvedRoute,\n `Could not find a route for route \"${\n resolvedRouteId as string\n }\"! Did you forget to add it to your route config?`,\n )\n return resolvedRoute\n },\n linkProps: (options) => {\n const {\n // custom props\n type,\n children,\n target,\n activeProps = () => ({ className: 'active' }),\n inactiveProps = () => ({}),\n activeOptions,\n disabled,\n // fromCurrent,\n hash,\n search,\n params,\n to,\n preload,\n preloadDelay,\n preloadMaxAge,\n replace,\n // element props\n style,\n className,\n onClick,\n onFocus,\n onMouseEnter,\n onMouseLeave,\n onTouchStart,\n onTouchEnd,\n ...rest\n } = options\n\n const linkInfo = route.buildLink(options)\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 isActive,\n next,\n } = linkInfo\n\n const reactHandleClick = (e: Event) => {\n React.startTransition(() => {\n handleClick(e)\n })\n }\n\n const composeHandlers =\n (handlers: (undefined | ((e: any) => void))[]) =>\n (e: React.SyntheticEvent) => {\n e.persist()\n handlers.forEach((handler) => {\n if (handler) handler(e)\n })\n }\n\n // Get the active props\n const resolvedActiveProps: React.HTMLAttributes<HTMLAnchorElement> =\n isActive ? functionalUpdate(activeProps, {}) ?? {} : {}\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 ? undefined : next.href,\n onClick: composeHandlers([reactHandleClick, onClick]),\n onFocus: composeHandlers([handleFocus, onFocus]),\n onMouseEnter: composeHandlers([handleEnter, onMouseEnter]),\n onMouseLeave: composeHandlers([handleLeave, onMouseLeave]),\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 Link: React.forwardRef((props: any, ref) => {\n const linkProps = route.linkProps(props)\n\n useRouterSubscription(router)\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 MatchRoute: (opts) => {\n const { pending, caseSensitive, children, ...rest } = opts\n\n const params = route.matchRoute(rest as any, {\n pending,\n caseSensitive,\n })\n\n if (!params) {\n return null\n }\n\n return typeof opts.children === 'function'\n ? opts.children(params as any)\n : (opts.children as any)\n },\n }\n }\n\n const coreRouter = createRouter<TRouteConfig>({\n ...opts,\n createRouter: (router) => {\n const routerExt: Pick<Router<any, any>, 'useMatch' | 'useState'> = {\n useState: () => {\n useRouterSubscription(router)\n return router.state\n },\n useMatch: (routeId, opts) => {\n useRouterSubscription(router)\n\n invariant(\n routeId !== rootRouteId,\n `\"${rootRouteId}\" cannot be used with useMatch! Did you mean to useRoute(\"${rootRouteId}\")?`,\n )\n\n const runtimeMatch = useMatches()?.[0]!\n const match = router.state.matches.find((d) => d.routeId === routeId)\n\n if (opts?.strict ?? true) {\n invariant(\n match,\n `Could not find an active match for \"${routeId as string}\"!`,\n )\n\n invariant(\n runtimeMatch.routeId == match?.routeId,\n `useMatch(\"${\n match?.routeId as string\n }\") is being called in a component that is meant to render the '${\n runtimeMatch.routeId\n }' route. Did you mean to 'useMatch(\"${\n match?.routeId as string\n }\", { strict: false })' or 'useRoute(\"${\n match?.routeId as string\n }\")' instead?`,\n )\n }\n\n return match as any\n },\n }\n\n const routeExt = makeRouteExt(router.getRoute('/'), router)\n\n Object.assign(router, routerExt, routeExt)\n },\n createRoute: ({ router, route }) => {\n const routeExt = makeRouteExt(route, router)\n\n Object.assign(route, routeExt)\n },\n loadComponent: async (component) => {\n if (component.preload && typeof document !== 'undefined') {\n component.preload()\n // return await component.preload()\n }\n\n return component as any\n },\n })\n\n return coreRouter as any\n}\n\nexport type RouterProps<\n TRouteConfig extends AnyRouteConfig = RouteConfig,\n TAllRouteInfo extends AnyAllRouteInfo = DefaultAllRouteInfo,\n> = RouterOptions<TRouteConfig> & {\n router: Router<TRouteConfig, TAllRouteInfo>\n // Children will default to `<Outlet />` if not provided\n children?: React.ReactNode\n}\n\nexport function RouterProvider<\n TRouteConfig extends AnyRouteConfig = RouteConfig,\n TAllRouteInfo extends AnyAllRouteInfo = DefaultAllRouteInfo,\n>({ children, router, ...rest }: RouterProps<TRouteConfig, TAllRouteInfo>) {\n router.update(rest)\n\n useRouterSubscription(router)\n React.useEffect(() => {\n console.log('hello')\n return router.mount()\n }, [router])\n\n return (\n <routerContext.Provider value={{ router: router as any }}>\n <MatchesProvider value={router.state.matches}>\n {children ?? <Outlet />}\n </MatchesProvider>\n </routerContext.Provider>\n )\n}\n\nexport function useRouter(): ResolvedRouter {\n const value = React.useContext(routerContext)\n warning(!value, 'useRouter must be used inside a <Router> component!')\n\n useRouterSubscription(value.router)\n\n return value.router\n}\n\nexport function useMatches(): RouteMatch[] {\n return React.useContext(matchesContext)\n}\n\nexport function useMatch<\n TId extends keyof ResolvedAllRouteInfo['routeInfoById'],\n TStrict extends true | false = true,\n>(\n routeId: TId,\n opts?: { strict?: TStrict },\n): TStrict extends true\n ? RouteMatch<ResolvedAllRouteInfo, ResolvedAllRouteInfo['routeInfoById'][TId]>\n :\n | RouteMatch<\n ResolvedAllRouteInfo,\n ResolvedAllRouteInfo['routeInfoById'][TId]\n >\n | undefined {\n const router = useRouter()\n return router.useMatch(routeId as any, opts) as any\n}\n\nexport function Outlet() {\n const router = useRouter()\n const matches = useMatches().slice(1)\n const match = matches[0]\n\n const defaultPending = React.useCallback(() => null, [])\n\n if (!match) {\n return null\n }\n\n const PendingComponent = (match.__.pendingComponent ??\n router.options.defaultPendingComponent ??\n defaultPending) as any\n\n const errorComponent =\n match.__.errorComponent ?? router.options.defaultErrorComponent\n\n return (\n <MatchesProvider value={matches}>\n <React.Suspense fallback={<PendingComponent />}>\n <CatchBoundary errorComponent={errorComponent}>\n {\n ((): React.ReactNode => {\n if (match.status === 'error') {\n throw match.error\n }\n\n if (match.status === 'success') {\n return React.createElement(\n (match.__.component as any) ??\n router.options.defaultComponent ??\n Outlet,\n )\n }\n\n console.log(match.matchId, 'suspend')\n throw match.__.loadPromise\n })() as JSX.Element\n }\n </CatchBoundary>\n </React.Suspense>\n </MatchesProvider>\n )\n}\n\nclass CatchBoundary extends React.Component<{\n children: any\n errorComponent: any\n}> {\n state = {\n error: false,\n }\n componentDidCatch(error: any, info: any) {\n console.error(error)\n\n this.setState({\n error,\n info,\n })\n }\n render() {\n const errorComponent = this.props.errorComponent ?? DefaultErrorBoundary\n\n if (this.state.error) {\n return React.createElement(errorComponent, this.state)\n }\n\n return this.props.children\n }\n}\n\nexport function DefaultErrorBoundary({ error }: { error: any }) {\n return (\n <div style={{ padding: '.5rem', maxWidth: '100%' }}>\n <strong style={{ fontSize: '1.2rem' }}>Something went wrong!</strong>\n <div style={{ height: '.5rem' }} />\n <div>\n <pre>\n {error.message ? (\n <code\n style={{\n fontSize: '.7em',\n border: '1px solid red',\n borderRadius: '.25rem',\n padding: '.5rem',\n color: 'red',\n }}\n >\n {error.message}\n </code>\n ) : null}\n </pre>\n </div>\n </div>\n )\n}\n\nexport function usePrompt(message: string, when: boolean | any): void {\n const router = useRouter()\n\n React.useEffect(() => {\n if (!when) return\n\n let unblock = router.history.block((transition) => {\n if (window.confirm(message)) {\n unblock()\n transition.retry()\n } else {\n router.location.pathname = window.location.pathname\n }\n })\n\n return unblock\n }, [when, location, message])\n}\n\nexport function Prompt({ message, when, children }: PromptProps) {\n usePrompt(message, when ?? true)\n return (children ?? null) as React.ReactNode\n}\n"],"names":["lazy","importer","lazyComp","React","promise","resolvedComp","forwardedComp","forwardRef","props","ref","resolvedCompRef","useRef","createElement","current","finalComp","preload","then","module","default","Link","router","useRouter","matchesContext","createContext","routerContext","MatchesProvider","useRouterSubscription","useSyncExternalStore","cb","subscribe","state","createReactRouter","opts","makeRouteExt","route","useRoute","subRouteId","resolvedRouteId","resolvePath","routeId","resolvedRoute","getRoute","invariant","linkProps","options","target","activeProps","className","inactiveProps","disabled","style","onClick","onFocus","onMouseEnter","onMouseLeave","rest","linkInfo","buildLink","type","href","handleClick","handleFocus","handleEnter","handleLeave","isActive","next","reactHandleClick","e","startTransition","composeHandlers","handlers","persist","forEach","handler","resolvedActiveProps","functionalUpdate","resolvedInactiveProps","_extends","undefined","filter","Boolean","join","role","children","MatchRoute","pending","caseSensitive","params","matchRoute","coreRouter","createRouter","routerExt","useState","useMatch","rootRouteId","runtimeMatch","useMatches","match","matches","find","d","strict","routeExt","Object","assign","createRoute","loadComponent","component","document","RouterProvider","_objectWithoutPropertiesLoose","update","useEffect","console","log","mount","value","useContext","warning","Outlet","slice","defaultPending","useCallback","PendingComponent","__","pendingComponent","defaultPendingComponent","errorComponent","defaultErrorComponent","status","error","defaultComponent","matchId","loadPromise","CatchBoundary","Component","componentDidCatch","info","setState","render","DefaultErrorBoundary","padding","maxWidth","fontSize","height","message","border","borderRadius","color","usePrompt","when","unblock","history","block","transition","window","confirm","retry","location","pathname","Prompt"],"mappings":"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"}
@@ -1502,11 +1502,19 @@ function createRouteMatch(router, route, opts) {
1502
1502
  }
1503
1503
  },
1504
1504
  fetch: async opts => {
1505
- const id = '' + Date.now() + Math.random();
1506
- routeMatch.__.latestId = id; // If the match was in an error state, set it
1505
+ const loadId = '' + Date.now() + Math.random();
1506
+ routeMatch.__.latestId = loadId;
1507
+
1508
+ const checkLatest = async () => {
1509
+ if (loadId !== routeMatch.__.latestId) {
1510
+ // warning(true, 'Data loader is out of date!')
1511
+ return new Promise(() => {});
1512
+ }
1513
+ }; // If the match was in an error state, set it
1507
1514
  // to a loading state again. Otherwise, keep it
1508
1515
  // as loading or resolved
1509
1516
 
1517
+
1510
1518
  if (routeMatch.status === 'idle') {
1511
1519
  routeMatch.status = 'loading';
1512
1520
  } // We started loading the route, so it's no longer invalid
@@ -1538,19 +1546,8 @@ function createRouteMatch(router, route, opts) {
1538
1546
  var _ref, _ref2, _opts$maxAge;
1539
1547
 
1540
1548
  if (routeMatch.options.loader) {
1541
- var _routeMatch$parentMat3;
1542
-
1543
- const data = await routeMatch.options.loader({
1544
- parentLoaderPromise: (_routeMatch$parentMat3 = routeMatch.parentMatch) == null ? void 0 : _routeMatch$parentMat3.__.dataPromise,
1545
- params: routeMatch.params,
1546
- search: routeMatch.routeSearch,
1547
- signal: routeMatch.__.abortController.signal
1548
- });
1549
-
1550
- if (id !== routeMatch.__.latestId) {
1551
- return routeMatch.__.loadPromise;
1552
- }
1553
-
1549
+ const data = await router.loadMatchData(routeMatch);
1550
+ await checkLatest();
1554
1551
  routeMatch.routeLoaderData = replaceEqualDeep(routeMatch.routeLoaderData, data);
1555
1552
  }
1556
1553
 
@@ -1560,9 +1557,7 @@ function createRouteMatch(router, route, opts) {
1560
1557
  routeMatch.invalidAt = routeMatch.updatedAt + ((_ref = (_ref2 = (_opts$maxAge = opts == null ? void 0 : opts.maxAge) != null ? _opts$maxAge : routeMatch.options.loaderMaxAge) != null ? _ref2 : router.options.defaultLoaderMaxAge) != null ? _ref : 0);
1561
1558
  return routeMatch.routeLoaderData;
1562
1559
  } catch (err) {
1563
- if (id !== routeMatch.__.latestId) {
1564
- return routeMatch.__.loadPromise;
1565
- }
1560
+ await checkLatest();
1566
1561
 
1567
1562
  if (process.env.NODE_ENV !== 'production') {
1568
1563
  console.error(err);
@@ -1575,29 +1570,23 @@ function createRouteMatch(router, route, opts) {
1575
1570
  }
1576
1571
  });
1577
1572
 
1578
- try {
1579
- await Promise.all([routeMatch.__.componentsPromise, routeMatch.__.dataPromise.catch(() => {})]);
1580
-
1581
- if (id !== routeMatch.__.latestId) {
1582
- return routeMatch.__.loadPromise;
1583
- }
1584
- } finally {
1585
- if (id !== routeMatch.__.latestId) {
1586
- return routeMatch.__.loadPromise;
1587
- }
1588
-
1573
+ const after = async () => {
1574
+ await checkLatest();
1589
1575
  routeMatch.isFetching = false;
1576
+ delete routeMatch.__.loadPromise;
1590
1577
 
1591
1578
  routeMatch.__.notify();
1579
+ };
1580
+
1581
+ try {
1582
+ await Promise.all([routeMatch.__.componentsPromise, routeMatch.__.dataPromise.catch(() => {})]);
1583
+ after();
1584
+ } catch (_unused) {
1585
+ after();
1592
1586
  }
1593
1587
  });
1594
1588
  await routeMatch.__.loadPromise;
1595
-
1596
- if (id !== routeMatch.__.latestId) {
1597
- return routeMatch.__.loadPromise;
1598
- }
1599
-
1600
- delete routeMatch.__.loadPromise;
1589
+ await checkLatest();
1601
1590
  }
1602
1591
  });
1603
1592
 
@@ -1691,6 +1680,8 @@ function createRouter(userOptions) {
1691
1680
  });
1692
1681
 
1693
1682
  let router = {
1683
+ types: undefined,
1684
+ // public api
1694
1685
  history,
1695
1686
  options: originalOptions,
1696
1687
  listeners: [],
@@ -1699,7 +1690,6 @@ function createRouter(userOptions) {
1699
1690
  routeTree: undefined,
1700
1691
  routesById: {},
1701
1692
  location: undefined,
1702
- allRouteInfo: undefined,
1703
1693
  //
1704
1694
  navigationPromise: Promise.resolve(),
1705
1695
  resolveNavigation: () => {},
@@ -2082,6 +2072,11 @@ function createRouter(userOptions) {
2082
2072
  match.__.validate();
2083
2073
 
2084
2074
  match.load(loaderOpts);
2075
+ const search = match.search;
2076
+
2077
+ if (search.__data && search.__data.matchId !== match.matchId) {
2078
+ return;
2079
+ }
2085
2080
 
2086
2081
  if (match.__.loadPromise) {
2087
2082
  // Wait for the first sign of activity from the match
@@ -2091,6 +2086,37 @@ function createRouter(userOptions) {
2091
2086
  router.notify();
2092
2087
  await Promise.all(matchPromises);
2093
2088
  },
2089
+ loadMatchData: async routeMatch => {
2090
+ if (isServer || !router.options.useServerData) {
2091
+ var _await$routeMatch$opt;
2092
+
2093
+ return (_await$routeMatch$opt = await (routeMatch.options.loader == null ? void 0 : routeMatch.options.loader({
2094
+ // parentLoaderPromise: routeMatch.parentMatch?.__.dataPromise,
2095
+ params: routeMatch.params,
2096
+ search: routeMatch.routeSearch,
2097
+ signal: routeMatch.__.abortController.signal
2098
+ }))) != null ? _await$routeMatch$opt : {};
2099
+ } else {
2100
+ const next = router.buildNext({
2101
+ to: '.',
2102
+ search: d => _extends({}, d != null ? d : {}, {
2103
+ __data: {
2104
+ matchId: routeMatch.matchId
2105
+ }
2106
+ })
2107
+ });
2108
+ const res = await fetch(next.href, {
2109
+ method: 'GET' // signal: routeMatch.__.abortController.signal,
2110
+
2111
+ });
2112
+
2113
+ if (res.ok) {
2114
+ return res.json();
2115
+ }
2116
+
2117
+ throw new Error('Failed to fetch match data');
2118
+ }
2119
+ },
2094
2120
  invalidateRoute: opts => {
2095
2121
  var _router$state$pending5, _router$state$pending6;
2096
2122