@tanstack/react-router 0.0.1-beta.2 → 0.0.1-beta.21

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.
@@ -40,12 +40,38 @@ var React__namespace = /*#__PURE__*/_interopNamespace(React);
40
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"],
41
41
  _excluded2 = ["pending", "caseSensitive", "children"],
42
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
+ }
43
68
  //
69
+ function Link(props) {
70
+ const router = useRouter();
71
+ return /*#__PURE__*/React__namespace.createElement(router.Link, props);
72
+ }
44
73
  const matchesContext = /*#__PURE__*/React__namespace.createContext(null);
45
- const routerContext = /*#__PURE__*/React__namespace.createContext(null); // Detect if we're in the DOM
46
-
47
- const isDOM = Boolean(typeof window !== 'undefined' && window.document && window.document.createElement);
48
- const useLayoutEffect = isDOM ? React__namespace.useLayoutEffect : React__namespace.useEffect;
74
+ const routerContext = /*#__PURE__*/React__namespace.createContext(null);
49
75
  function MatchesProvider(props) {
50
76
  return /*#__PURE__*/React__namespace.createElement(matchesContext.Provider, props);
51
77
  }
@@ -109,6 +135,12 @@ function createReactRouter(opts) {
109
135
  next
110
136
  } = linkInfo;
111
137
 
138
+ const reactHandleClick = e => {
139
+ React__namespace.startTransition(() => {
140
+ handleClick(e);
141
+ });
142
+ };
143
+
112
144
  const composeHandlers = handlers => e => {
113
145
  e.persist();
114
146
  handlers.forEach(handler => {
@@ -122,7 +154,7 @@ function createReactRouter(opts) {
122
154
  const resolvedInactiveProps = isActive ? {} : (_functionalUpdate2 = index.functionalUpdate(inactiveProps, {})) != null ? _functionalUpdate2 : {};
123
155
  return _rollupPluginBabelHelpers["extends"]({}, resolvedActiveProps, resolvedInactiveProps, rest, {
124
156
  href: disabled ? undefined : next.href,
125
- onClick: composeHandlers([handleClick, onClick]),
157
+ onClick: composeHandlers([reactHandleClick, onClick]),
126
158
  onFocus: composeHandlers([handleFocus, onFocus]),
127
159
  onMouseEnter: composeHandlers([handleEnter, onMouseEnter]),
128
160
  onMouseLeave: composeHandlers([handleLeave, onMouseLeave]),
@@ -175,18 +207,17 @@ function createReactRouter(opts) {
175
207
  useRouterSubscription(router);
176
208
  return router.state;
177
209
  },
178
- useMatch: routeId => {
210
+ useMatch: (routeId, opts) => {
211
+ var _useMatches, _opts$strict;
212
+
179
213
  useRouterSubscription(router);
180
214
  index.invariant(routeId !== index.rootRouteId, "\"" + index.rootRouteId + "\" cannot be used with useMatch! Did you mean to useRoute(\"" + index.rootRouteId + "\")?");
181
-
182
- const runtimeMatch = _useMatch();
183
-
215
+ const runtimeMatch = (_useMatches = useMatches()) == null ? void 0 : _useMatches[0];
184
216
  const match = router.state.matches.find(d => d.routeId === routeId);
185
- index.invariant(match, "Could not find a match for route \"" + routeId + "\" being rendered in this component!");
186
- 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 'useRoute(" + (match == null ? void 0 : match.routeId) + ")' instead?");
187
217
 
188
- if (!match) {
189
- index.invariant('Match not found!');
218
+ if ((_opts$strict = opts == null ? void 0 : opts.strict) != null ? _opts$strict : true) {
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?");
190
221
  }
191
222
 
192
223
  return match;
@@ -203,18 +234,12 @@ function createReactRouter(opts) {
203
234
  const routeExt = makeRouteExt(route, router);
204
235
  Object.assign(route, routeExt);
205
236
  },
206
- createElement: async element => {
207
- if (typeof element === 'function') {
208
- const res = await element(); // Support direct import() calls
209
-
210
- if (typeof res === 'object' && res.default) {
211
- return /*#__PURE__*/React__namespace.createElement(res.default);
212
- } else {
213
- return res;
214
- }
237
+ loadComponent: async component => {
238
+ if (component.preload && typeof document !== 'undefined') {
239
+ component.preload(); // return await component.preload()
215
240
  }
216
241
 
217
- return element;
242
+ return component;
218
243
  }
219
244
  }));
220
245
  return coreRouter;
@@ -228,101 +253,84 @@ function RouterProvider(_ref2) {
228
253
 
229
254
  router.update(rest);
230
255
  useRouterSubscription(router);
231
- useLayoutEffect(() => {
256
+ React__namespace.useEffect(() => {
257
+ console.log('hello');
232
258
  return router.mount();
233
259
  }, [router]);
234
260
  return /*#__PURE__*/React__namespace.createElement(routerContext.Provider, {
235
261
  value: {
236
- router
262
+ router: router
237
263
  }
238
264
  }, /*#__PURE__*/React__namespace.createElement(MatchesProvider, {
239
265
  value: router.state.matches
240
266
  }, children != null ? children : /*#__PURE__*/React__namespace.createElement(Outlet, null)));
241
267
  }
242
-
243
268
  function useRouter() {
244
269
  const value = React__namespace.useContext(routerContext);
245
270
  index.warning(!value, 'useRouter must be used inside a <Router> component!');
246
271
  useRouterSubscription(value.router);
247
272
  return value.router;
248
273
  }
249
-
250
274
  function useMatches() {
251
275
  return React__namespace.useContext(matchesContext);
252
- } // function useParentMatches(): RouteMatch[] {
253
- // const router = useRouter()
254
- // const match = useMatch()
255
- // const matches = router.state.matches
256
- // return matches.slice(
257
- // 0,
258
- // matches.findIndex((d) => d.matchId === match.matchId) - 1,
259
- // )
260
- // }
261
-
262
-
263
- function _useMatch() {
264
- var _useMatches;
265
-
266
- return (_useMatches = useMatches()) == null ? void 0 : _useMatches[0];
267
276
  }
277
+ function useMatch(routeId, opts) {
278
+ const router = useRouter();
279
+ return router.useMatch(routeId, opts);
280
+ }
281
+ function useNearestMatch() {
282
+ var _useMatches2;
268
283
 
284
+ const runtimeMatch = (_useMatches2 = useMatches()) == null ? void 0 : _useMatches2[0];
285
+ index.invariant(runtimeMatch, "Could not find a nearest match!");
286
+ return runtimeMatch;
287
+ }
288
+ function useRoute(routeId) {
289
+ const router = useRouter();
290
+ return router.useRoute(routeId);
291
+ }
292
+ function linkProps(props) {
293
+ const router = useRouter();
294
+ return router.linkProps(props);
295
+ }
296
+ function MatchRoute(props) {
297
+ const router = useRouter();
298
+ return /*#__PURE__*/React__namespace.createElement(router.MatchRoute, props);
299
+ }
269
300
  function Outlet() {
270
- var _childMatch$options$c;
301
+ var _ref3, _match$__$pendingComp, _match$__$errorCompon;
271
302
 
272
303
  const router = useRouter();
273
- const [, ...matches] = useMatches();
274
- const childMatch = matches[0];
275
- if (!childMatch) return null;
304
+ const matches = useMatches().slice(1);
305
+ const match = matches[0];
306
+ const defaultPending = React__namespace.useCallback(() => null, []);
276
307
 
277
- const element = (() => {
278
- var _childMatch$__$errorE, _ref4;
308
+ if (!match) {
309
+ return null;
310
+ }
279
311
 
280
- if (!childMatch) {
281
- return null;
312
+ const PendingComponent = (_ref3 = (_match$__$pendingComp = match.__.pendingComponent) != null ? _match$__$pendingComp : router.options.defaultPendingComponent) != null ? _ref3 : defaultPending;
313
+ const errorComponent = (_match$__$errorCompon = match.__.errorComponent) != null ? _match$__$errorCompon : router.options.defaultErrorComponent;
314
+ return /*#__PURE__*/React__namespace.createElement(MatchesProvider, {
315
+ value: matches
316
+ }, /*#__PURE__*/React__namespace.createElement(React__namespace.Suspense, {
317
+ fallback: /*#__PURE__*/React__namespace.createElement(PendingComponent, null)
318
+ }, /*#__PURE__*/React__namespace.createElement(CatchBoundary, {
319
+ errorComponent: errorComponent
320
+ }, (() => {
321
+ if (match.status === 'error') {
322
+ throw match.error;
282
323
  }
283
324
 
284
- const errorElement = (_childMatch$__$errorE = childMatch.__.errorElement) != null ? _childMatch$__$errorE : router.options.defaultErrorElement;
285
-
286
- if (childMatch.status === 'error') {
287
- if (errorElement) {
288
- return errorElement;
289
- }
290
-
291
- if (childMatch.options.useErrorBoundary || router.options.useErrorBoundary) {
292
- throw childMatch.error;
293
- }
325
+ if (match.status === 'success') {
326
+ var _ref4, _ref5;
294
327
 
295
- return /*#__PURE__*/React__namespace.createElement(DefaultErrorBoundary, {
296
- error: childMatch.error
297
- });
328
+ return /*#__PURE__*/React__namespace.createElement((_ref4 = (_ref5 = match.__.component) != null ? _ref5 : router.options.defaultComponent) != null ? _ref4 : Outlet);
298
329
  }
299
330
 
300
- if (childMatch.status === 'loading' || childMatch.status === 'idle') {
301
- if (childMatch.isPending) {
302
- var _childMatch$__$pendin;
303
-
304
- const pendingElement = (_childMatch$__$pendin = childMatch.__.pendingElement) != null ? _childMatch$__$pendin : router.options.defaultPendingElement;
305
-
306
- if (childMatch.options.pendingMs || pendingElement) {
307
- var _ref3;
308
-
309
- return (_ref3 = pendingElement) != null ? _ref3 : null;
310
- }
311
- }
312
-
313
- return null;
314
- }
315
-
316
- return (_ref4 = childMatch.__.element) != null ? _ref4 : router.options.defaultElement;
317
- })();
318
-
319
- const catchElement = (_childMatch$options$c = childMatch == null ? void 0 : childMatch.options.catchElement) != null ? _childMatch$options$c : router.options.defaultCatchElement;
320
- return /*#__PURE__*/React__namespace.createElement(MatchesProvider, {
321
- value: matches,
322
- key: childMatch.matchId
323
- }, /*#__PURE__*/React__namespace.createElement(CatchBoundary, {
324
- catchElement: catchElement
325
- }, element));
331
+ console.log(match.matchId, 'suspend');
332
+ throw match.__.loadPromise;
333
+ })())));
326
334
  }
327
335
 
328
336
  class CatchBoundary extends React__namespace.Component {
@@ -331,13 +339,6 @@ class CatchBoundary extends React__namespace.Component {
331
339
  this.state = {
332
340
  error: false
333
341
  };
334
-
335
- this.reset = () => {
336
- this.setState({
337
- error: false,
338
- info: false
339
- });
340
- };
341
342
  }
342
343
 
343
344
  componentDidCatch(error, info) {
@@ -349,12 +350,12 @@ class CatchBoundary extends React__namespace.Component {
349
350
  }
350
351
 
351
352
  render() {
352
- var _this$props$catchElem;
353
+ var _this$props$errorComp;
353
354
 
354
- const catchElement = (_this$props$catchElem = this.props.catchElement) != null ? _this$props$catchElem : DefaultErrorBoundary;
355
+ const errorComponent = (_this$props$errorComp = this.props.errorComponent) != null ? _this$props$errorComp : DefaultErrorBoundary;
355
356
 
356
357
  if (this.state.error) {
357
- return typeof catchElement === 'function' ? catchElement(this.state) : catchElement;
358
+ return /*#__PURE__*/React__namespace.createElement(errorComponent, this.state);
358
359
  }
359
360
 
360
361
  return this.props.children;
@@ -362,10 +363,10 @@ class CatchBoundary extends React__namespace.Component {
362
363
 
363
364
  }
364
365
 
365
- function DefaultErrorBoundary(_ref5) {
366
+ function DefaultErrorBoundary(_ref6) {
366
367
  let {
367
368
  error
368
- } = _ref5;
369
+ } = _ref6;
369
370
  return /*#__PURE__*/React__namespace.createElement("div", {
370
371
  style: {
371
372
  padding: '.5rem',
@@ -387,18 +388,7 @@ function DefaultErrorBoundary(_ref5) {
387
388
  padding: '.5rem',
388
389
  color: 'red'
389
390
  }
390
- }, error.message) : null)), /*#__PURE__*/React__namespace.createElement("div", {
391
- style: {
392
- height: '1rem'
393
- }
394
- }), /*#__PURE__*/React__namespace.createElement("div", {
395
- style: {
396
- fontSize: '.8em',
397
- borderLeft: '3px solid rgba(127, 127, 127, 1)',
398
- paddingLeft: '.5rem',
399
- opacity: 0.5
400
- }
401
- }, "If you are the owner of this website, it's highly recommended that you configure your own custom Catch/Error boundaries for the router. You can optionally configure a boundary for each route."));
391
+ }, error.message) : null)));
402
392
  }
403
393
  function usePrompt(message, when) {
404
394
  const router = useRouter();
@@ -415,17 +405,16 @@ function usePrompt(message, when) {
415
405
  return unblock;
416
406
  }, [when, location, message]);
417
407
  }
418
- function Prompt(_ref6) {
408
+ function Prompt(_ref7) {
419
409
  let {
420
410
  message,
421
411
  when,
422
412
  children
423
- } = _ref6;
413
+ } = _ref7;
424
414
  usePrompt(message, when != null ? when : true);
425
415
  return children != null ? children : null;
426
416
  }
427
417
 
428
- exports.cascadeLoaderData = index.cascadeLoaderData;
429
418
  exports.cleanPath = index.cleanPath;
430
419
  exports.createBrowserHistory = index.createBrowserHistory;
431
420
  exports.createHashHistory = index.createHashHistory;
@@ -447,6 +436,7 @@ exports.matchByPath = index.matchByPath;
447
436
  exports.matchPathname = index.matchPathname;
448
437
  exports.parsePathname = index.parsePathname;
449
438
  exports.parseSearchWith = index.parseSearchWith;
439
+ exports.pick = index.pick;
450
440
  exports.replaceEqualDeep = index.replaceEqualDeep;
451
441
  exports.resolvePath = index.resolvePath;
452
442
  exports.rootRouteId = index.rootRouteId;
@@ -456,10 +446,21 @@ exports.trimPathLeft = index.trimPathLeft;
456
446
  exports.trimPathRight = index.trimPathRight;
457
447
  exports.warning = index.warning;
458
448
  exports.DefaultErrorBoundary = DefaultErrorBoundary;
449
+ exports.Link = Link;
450
+ exports.MatchRoute = MatchRoute;
459
451
  exports.MatchesProvider = MatchesProvider;
460
452
  exports.Outlet = Outlet;
461
453
  exports.Prompt = Prompt;
462
454
  exports.RouterProvider = RouterProvider;
463
455
  exports.createReactRouter = createReactRouter;
456
+ exports.lazy = lazy;
457
+ exports.linkProps = linkProps;
458
+ exports.matchesContext = matchesContext;
459
+ exports.routerContext = routerContext;
460
+ exports.useMatch = useMatch;
461
+ exports.useMatches = useMatches;
462
+ exports.useNearestMatch = useNearestMatch;
464
463
  exports.usePrompt = usePrompt;
464
+ exports.useRoute = useRoute;
465
+ exports.useRouter = useRouter;
465
466
  //# sourceMappingURL=index.js.map
@@ -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\ndeclare module '@tanstack/router-core' {\n interface FrameworkGenerics {\n Element: React.ReactNode\n // Any is required here so import() will work without having to do import().then(d => d.default)\n SyncOrAsyncElement: React.ReactNode | (() => Promise<any>)\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: <TId extends keyof TAllRouteInfo['routeInfoById']>(\n routeId: TId,\n ) => RouteMatch<TAllRouteInfo, TAllRouteInfo['routeInfoById'][TId]>\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 ) => 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 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([handleClick, 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) => {\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 = useMatch()\n const match = router.state.matches.find((d) => d.routeId === routeId)\n\n invariant(\n match,\n `Could not find a match for route \"${\n routeId as string\n }\" being rendered in this component!`,\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 'useRoute(${\n match?.routeId as string\n })' instead?`,\n )\n\n if (!match) {\n invariant('Match not found!')\n }\n\n return match\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 createElement: async (element) => {\n if (typeof element === 'function') {\n const res = (await element()) as any\n\n // Support direct import() calls\n if (typeof res === 'object' && res.default) {\n return React.createElement(res.default)\n } else {\n return res\n }\n }\n\n return element\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\n useLayoutEffect(() => {\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\nfunction 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\nfunction useMatches(): RouteMatch[] {\n return React.useContext(matchesContext)\n}\n\n// function useParentMatches(): RouteMatch[] {\n// const router = useRouter()\n// const match = useMatch()\n// const matches = router.state.matches\n// return matches.slice(\n// 0,\n// matches.findIndex((d) => d.matchId === match.matchId) - 1,\n// )\n// }\n\nfunction useMatch<T>(): RouteMatch {\n return useMatches()?.[0] as RouteMatch\n}\n\nexport function Outlet() {\n const router = useRouter()\n const [, ...matches] = useMatches()\n\n const childMatch = matches[0]\n\n if (!childMatch) return null\n\n const element = ((): React.ReactNode => {\n if (!childMatch) {\n return null\n }\n\n const errorElement =\n childMatch.__.errorElement ?? router.options.defaultErrorElement\n\n if (childMatch.status === 'error') {\n if (errorElement) {\n return errorElement as any\n }\n\n if (\n childMatch.options.useErrorBoundary ||\n router.options.useErrorBoundary\n ) {\n throw childMatch.error\n }\n\n return <DefaultErrorBoundary error={childMatch.error} />\n }\n\n if (childMatch.status === 'loading' || childMatch.status === 'idle') {\n if (childMatch.isPending) {\n const pendingElement =\n childMatch.__.pendingElement ?? router.options.defaultPendingElement\n\n if (childMatch.options.pendingMs || pendingElement) {\n return (pendingElement as any) ?? null\n }\n }\n\n return null\n }\n\n return (childMatch.__.element as any) ?? router.options.defaultElement\n })() as JSX.Element\n\n const catchElement =\n childMatch?.options.catchElement ?? router.options.defaultCatchElement\n\n return (\n <MatchesProvider value={matches} key={childMatch.matchId}>\n <CatchBoundary catchElement={catchElement}>{element}</CatchBoundary>\n </MatchesProvider>\n )\n}\n\nclass CatchBoundary extends React.Component<{\n children: any\n catchElement: 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 reset = () => {\n this.setState({\n error: false,\n info: false,\n })\n }\n render() {\n const catchElement = this.props.catchElement ?? DefaultErrorBoundary\n\n if (this.state.error) {\n return typeof catchElement === 'function'\n ? catchElement(this.state)\n : catchElement\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 style={{ height: '1rem' }} />\n <div\n style={{\n fontSize: '.8em',\n borderLeft: '3px solid rgba(127, 127, 127, 1)',\n paddingLeft: '.5rem',\n opacity: 0.5,\n }}\n >\n If you are the owner of this website, it's highly recommended that you\n configure your own custom Catch/Error boundaries for the router. You can\n optionally configure a boundary for each route.\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","isDOM","Boolean","window","document","createElement","useLayoutEffect","useEffect","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","composeHandlers","handlers","e","persist","forEach","handler","resolvedActiveProps","functionalUpdate","resolvedInactiveProps","_extends","undefined","filter","join","role","Link","forwardRef","ref","children","MatchRoute","pending","caseSensitive","params","matchRoute","coreRouter","createRouter","routerExt","useState","useMatch","rootRouteId","runtimeMatch","match","matches","find","d","routeExt","Object","assign","createRoute","element","res","default","RouterProvider","_objectWithoutPropertiesLoose","update","mount","useRouter","value","useContext","warning","useMatches","Outlet","childMatch","errorElement","__","defaultErrorElement","status","useErrorBoundary","error","isPending","pendingElement","defaultPendingElement","pendingMs","defaultElement","catchElement","defaultCatchElement","matchId","CatchBoundary","Component","reset","setState","info","componentDidCatch","console","render","DefaultErrorBoundary","padding","maxWidth","fontSize","height","message","border","borderRadius","color","borderLeft","paddingLeft","opacity","usePrompt","when","unblock","history","block","transition","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 Route,\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 RegisterRouter {\n // router: Router\n}\n\nexport type RegisteredRouter = RegisterRouter extends {\n router: Router<infer TRouteConfig, infer TAllRouteInfo>\n}\n ? Router<TRouteConfig, TAllRouteInfo>\n : Router\n\nexport type RegisteredAllRouteInfo = RegisterRouter 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\ntype LinkPropsOptions<\n TAllRouteInfo extends AnyAllRouteInfo,\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\ntype MakeMatchRouteOptions<\n TAllRouteInfo extends AnyAllRouteInfo,\n TFrom extends ValidFromPath<TAllRouteInfo>,\n TTo extends string,\n> = ToOptions<TAllRouteInfo, TFrom, 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<TFrom, NoInfer<TTo>>\n >['allParams'],\n ) => React.ReactNode)\n }\n\ntype MakeLinkPropsOptions<\n TAllRouteInfo extends AnyAllRouteInfo,\n TFrom extends ValidFromPath<TAllRouteInfo>,\n TTo extends string,\n> = LinkPropsOptions<TAllRouteInfo, TFrom, TTo> &\n React.AnchorHTMLAttributes<HTMLAnchorElement>\n\ntype MakeLinkOptions<\n TAllRouteInfo extends AnyAllRouteInfo,\n TFrom extends ValidFromPath<TAllRouteInfo>,\n TTo extends string,\n> = LinkPropsOptions<TAllRouteInfo, TFrom, 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\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 useNearestMatch: () => RouteMatch<TAllRouteInfo, RouteInfo>\n useMatch: <\n TId extends keyof TAllRouteInfo['routeInfoById'],\n TStrict extends boolean = 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: MakeLinkPropsOptions<TAllRouteInfo, '/', TTo>,\n ) => React.AnchorHTMLAttributes<HTMLAnchorElement>\n Link: <TTo extends string = '.'>(\n props: MakeLinkOptions<TAllRouteInfo, '/', TTo>,\n ) => JSX.Element\n MatchRoute: <TTo extends string = '.'>(\n props: MakeMatchRouteOptions<TAllRouteInfo, '/', TTo>,\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: MakeLinkPropsOptions<TAllRouteInfo, TRouteInfo['fullPath'], TTo>,\n ) => React.AnchorHTMLAttributes<HTMLAnchorElement>\n Link: <TTo extends string = '.'>(\n props: MakeLinkOptions<TAllRouteInfo, TRouteInfo['fullPath'], TTo>,\n ) => JSX.Element\n MatchRoute: <TTo extends string = '.'>(\n props: MakeMatchRouteOptions<TAllRouteInfo, TRouteInfo['fullPath'], TTo>,\n ) => JSX.Element\n }\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: MakeLinkOptions<RegisteredAllRouteInfo, '/', TTo>,\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: RegisteredRouter }>(\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 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 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(): RegisteredRouter {\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 RegisteredAllRouteInfo['routeInfoById'],\n TStrict extends boolean = true,\n>(\n routeId: TId,\n opts?: { strict?: TStrict },\n): TStrict extends true\n ? RouteMatch<\n RegisteredAllRouteInfo,\n RegisteredAllRouteInfo['routeInfoById'][TId]\n >\n :\n | RouteMatch<\n RegisteredAllRouteInfo,\n RegisteredAllRouteInfo['routeInfoById'][TId]\n >\n | undefined {\n const router = useRouter()\n return router.useMatch(routeId as any, opts) as any\n}\n\nexport function useNearestMatch(): RouteMatch<\n RegisteredAllRouteInfo,\n RouteInfo\n> {\n const runtimeMatch = useMatches()?.[0]!\n\n invariant(runtimeMatch, `Could not find a nearest match!`)\n\n return runtimeMatch as any\n}\n\nexport function useRoute<\n TId extends keyof RegisteredAllRouteInfo['routeInfoById'],\n>(\n routeId: TId,\n): Route<RegisteredAllRouteInfo, RegisteredAllRouteInfo['routeInfoById'][TId]> {\n const router = useRouter()\n return router.useRoute(routeId as any) as any\n}\n\nexport function linkProps<TTo extends string = '.'>(\n props: MakeLinkPropsOptions<RegisteredAllRouteInfo, '/', TTo>,\n): React.AnchorHTMLAttributes<HTMLAnchorElement> {\n const router = useRouter()\n return router.linkProps(props as any)\n}\n\nexport function MatchRoute<TTo extends string = '.'>(\n props: MakeMatchRouteOptions<RegisteredAllRouteInfo, '/', TTo>,\n): JSX.Element {\n const router = useRouter()\n return React.createElement(router.MatchRoute, props 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","useNearestMatch","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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"}