@tanstack/react-router 0.0.1-beta.46 → 0.0.1-beta.49
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.
- package/build/cjs/index.js +122 -173
- package/build/cjs/index.js.map +1 -1
- package/build/cjs/useStore.js +64 -0
- package/build/cjs/useStore.js.map +1 -0
- package/build/esm/index.js +168 -166
- package/build/esm/index.js.map +1 -1
- package/build/stats-html.html +1 -1
- package/build/stats-react.json +76 -102
- package/build/types/index.d.ts +21 -16
- package/build/umd/index.development.js +1542 -2549
- package/build/umd/index.development.js.map +1 -1
- package/build/umd/index.production.js +3 -2
- package/build/umd/index.production.js.map +1 -1
- package/package.json +3 -3
- package/src/index.tsx +174 -201
- package/src/useStore.ts +70 -0
- package/src/uSES/useSyncExternalStore.ts +0 -16
- package/src/uSES/useSyncExternalStoreShim.ts +0 -20
- package/src/uSES/useSyncExternalStoreShimClient.ts +0 -87
- package/src/uSES/useSyncExternalStoreShimServer.ts +0 -20
package/build/cjs/index.js
CHANGED
|
@@ -14,9 +14,8 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
14
14
|
|
|
15
15
|
var _rollupPluginBabelHelpers = require('./_virtual/_rollupPluginBabelHelpers.js');
|
|
16
16
|
var React = require('react');
|
|
17
|
-
var shim = require('use-sync-external-store/shim');
|
|
18
|
-
var reactivity = require('@solidjs/reactivity');
|
|
19
17
|
var routerCore = require('@tanstack/router-core');
|
|
18
|
+
var useStore = require('./useStore.js');
|
|
20
19
|
|
|
21
20
|
function _interopNamespace(e) {
|
|
22
21
|
if (e && e.__esModule) return e;
|
|
@@ -38,6 +37,8 @@ function _interopNamespace(e) {
|
|
|
38
37
|
|
|
39
38
|
var React__namespace = /*#__PURE__*/_interopNamespace(React);
|
|
40
39
|
|
|
40
|
+
//
|
|
41
|
+
|
|
41
42
|
function lazy(importer) {
|
|
42
43
|
const lazyComp = /*#__PURE__*/React__namespace.lazy(importer);
|
|
43
44
|
const finalComp = lazyComp;
|
|
@@ -67,7 +68,7 @@ function useLinkProps(options) {
|
|
|
67
68
|
hash,
|
|
68
69
|
search,
|
|
69
70
|
params,
|
|
70
|
-
to,
|
|
71
|
+
to = '.',
|
|
71
72
|
preload,
|
|
72
73
|
preloadDelay,
|
|
73
74
|
preloadMaxAge,
|
|
@@ -158,82 +159,26 @@ const Link = /*#__PURE__*/React__namespace.forwardRef((props, ref) => {
|
|
|
158
159
|
});
|
|
159
160
|
const matchesContext = /*#__PURE__*/React__namespace.createContext(null);
|
|
160
161
|
const routerContext = /*#__PURE__*/React__namespace.createContext(null);
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
valueRef.current = routerCore.sharedClone(undefined, getValue());
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
// Snapshot should just return the current cached value
|
|
175
|
-
const getSnapshot = React__namespace.useCallback(() => valueRef.current, []);
|
|
176
|
-
const getStore = React__namespace.useCallback(cb => {
|
|
177
|
-
// A root is necessary to track effects
|
|
178
|
-
return reactivity.createRoot(() => {
|
|
179
|
-
reactivity.createEffect(() => {
|
|
180
|
-
// Read and update the value
|
|
181
|
-
// getValue will handle which values are accessed and
|
|
182
|
-
// thus tracked.
|
|
183
|
-
// sharedClone will both recursively track the end result
|
|
184
|
-
// and ensure that the previous value is structurally shared
|
|
185
|
-
// into the new version.
|
|
186
|
-
valueRef.current = reactivity.unwrap(
|
|
187
|
-
// Unwrap the value to get rid of any proxy structures
|
|
188
|
-
routerCore.sharedClone(valueRef.current, getValue()));
|
|
189
|
-
cb();
|
|
190
|
-
});
|
|
162
|
+
class ReactRouter extends routerCore.Router {
|
|
163
|
+
constructor(opts) {
|
|
164
|
+
super({
|
|
165
|
+
...opts,
|
|
166
|
+
loadComponent: async component => {
|
|
167
|
+
if (component.preload) {
|
|
168
|
+
await component.preload();
|
|
169
|
+
}
|
|
170
|
+
return component;
|
|
171
|
+
}
|
|
191
172
|
});
|
|
192
|
-
}, []);
|
|
193
|
-
return shim.useSyncExternalStore(getStore, getSnapshot, getSnapshot);
|
|
194
|
-
};
|
|
195
|
-
const [store, setStore] = reactivity.createStore({
|
|
196
|
-
foo: 'foo',
|
|
197
|
-
bar: {
|
|
198
|
-
baz: 'baz'
|
|
199
173
|
}
|
|
200
|
-
});
|
|
201
|
-
reactivity.createRoot(() => {
|
|
202
|
-
let prev;
|
|
203
|
-
reactivity.createEffect(() => {
|
|
204
|
-
console.log('effect');
|
|
205
|
-
const next = routerCore.sharedClone(prev, store);
|
|
206
|
-
console.log(next);
|
|
207
|
-
prev = reactivity.untrack(() => next);
|
|
208
|
-
});
|
|
209
|
-
});
|
|
210
|
-
setStore(s => {
|
|
211
|
-
s.foo = '1';
|
|
212
|
-
});
|
|
213
|
-
setStore(s => {
|
|
214
|
-
s.bar.baz = '2';
|
|
215
|
-
});
|
|
216
|
-
function createReactRouter(opts) {
|
|
217
|
-
const coreRouter = routerCore.createRouter({
|
|
218
|
-
...opts,
|
|
219
|
-
loadComponent: async component => {
|
|
220
|
-
if (component.preload) {
|
|
221
|
-
await component.preload();
|
|
222
|
-
}
|
|
223
|
-
return component;
|
|
224
|
-
}
|
|
225
|
-
});
|
|
226
|
-
return coreRouter;
|
|
227
174
|
}
|
|
228
|
-
function RouterProvider(
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
} = _ref;
|
|
175
|
+
function RouterProvider({
|
|
176
|
+
router,
|
|
177
|
+
...rest
|
|
178
|
+
}) {
|
|
233
179
|
router.update(rest);
|
|
234
|
-
const [,, currentMatches] =
|
|
180
|
+
const [,, currentMatches] = useStore.useStore(router.store, s => [s.status, s.pendingMatches, s.currentMatches], true);
|
|
235
181
|
React__namespace.useEffect(router.mount, [router]);
|
|
236
|
-
console.log('current', currentMatches);
|
|
237
182
|
return /*#__PURE__*/React__namespace.createElement(React__namespace.Fragment, null, /*#__PURE__*/React__namespace.createElement(routerContext.Provider, {
|
|
238
183
|
value: {
|
|
239
184
|
router: router
|
|
@@ -247,9 +192,9 @@ function useRouter() {
|
|
|
247
192
|
routerCore.warning(!value, 'useRouter must be used inside a <Router> component!');
|
|
248
193
|
return value.router;
|
|
249
194
|
}
|
|
250
|
-
function useRouterStore(selector) {
|
|
195
|
+
function useRouterStore(selector, shallow) {
|
|
251
196
|
const router = useRouter();
|
|
252
|
-
return
|
|
197
|
+
return useStore.useStore(router.store, selector, shallow);
|
|
253
198
|
}
|
|
254
199
|
function useMatches() {
|
|
255
200
|
return React__namespace.useContext(matchesContext);
|
|
@@ -257,12 +202,12 @@ function useMatches() {
|
|
|
257
202
|
function useMatch(opts) {
|
|
258
203
|
const router = useRouter();
|
|
259
204
|
const nearestMatch = useMatches()[0];
|
|
260
|
-
const match = opts
|
|
261
|
-
routerCore.invariant(match, `Could not find ${opts
|
|
262
|
-
if (
|
|
263
|
-
routerCore.invariant(nearestMatch.
|
|
205
|
+
const match = opts?.from ? router.store.state.currentMatches.find(d => d.route.id === opts?.from) : nearestMatch;
|
|
206
|
+
routerCore.invariant(match, `Could not find ${opts?.from ? `an active match from "${opts.from}"` : 'a nearest match!'}`);
|
|
207
|
+
if (opts?.strict ?? true) {
|
|
208
|
+
routerCore.invariant(nearestMatch.route.id == match?.route.id, `useMatch("${match?.route.id}") is being called in a component that is meant to render the '${nearestMatch.route.id}' route. Did you mean to 'useMatch("${match?.route.id}", { strict: false })' or 'useRoute("${match?.route.id}")' instead?`);
|
|
264
209
|
}
|
|
265
|
-
|
|
210
|
+
useStore.useStore(match.store, d => opts?.track?.(match) ?? match, opts?.shallow);
|
|
266
211
|
return match;
|
|
267
212
|
}
|
|
268
213
|
function useRoute(routeId) {
|
|
@@ -273,34 +218,32 @@ function useRoute(routeId) {
|
|
|
273
218
|
}
|
|
274
219
|
function useLoaderData(opts) {
|
|
275
220
|
const match = useMatch(opts);
|
|
276
|
-
|
|
221
|
+
routerCore.invariant(match, `Could not find ${opts?.from ? `an active match from "${opts.from}"` : 'a nearest match!'}`);
|
|
222
|
+
useStore.useStore(match.store, d => opts?.track?.(d.loaderData) ?? d.loaderData);
|
|
223
|
+
return match.store.state.loaderData;
|
|
277
224
|
}
|
|
278
225
|
function useSearch(opts) {
|
|
279
226
|
const match = useMatch(opts);
|
|
280
|
-
|
|
227
|
+
useStore.useStore(match.store, d => opts?.track?.(d.search) ?? d.search);
|
|
228
|
+
return match.store.state.search;
|
|
281
229
|
}
|
|
282
230
|
function useParams(opts) {
|
|
283
231
|
const router = useRouter();
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
return (
|
|
287
|
-
}
|
|
232
|
+
useStore.useStore(router.store, d => {
|
|
233
|
+
const params = routerCore.last(d.currentMatches)?.params;
|
|
234
|
+
return opts?.track?.(params) ?? params;
|
|
235
|
+
});
|
|
236
|
+
return routerCore.last(router.store.state.currentMatches)?.params;
|
|
288
237
|
}
|
|
289
238
|
function useNavigate(defaultOpts) {
|
|
239
|
+
const router = useRouter();
|
|
290
240
|
return opts => {
|
|
291
|
-
const router = useRouter();
|
|
292
241
|
return router.navigate({
|
|
293
242
|
...defaultOpts,
|
|
294
243
|
...opts
|
|
295
244
|
});
|
|
296
245
|
};
|
|
297
246
|
}
|
|
298
|
-
function useAction(opts) {
|
|
299
|
-
const route = useRoute(opts.from);
|
|
300
|
-
const action = route.action;
|
|
301
|
-
__useStoreValue(() => action);
|
|
302
|
-
return action;
|
|
303
|
-
}
|
|
304
247
|
function useMatchRoute() {
|
|
305
248
|
const router = useRouter();
|
|
306
249
|
return opts => {
|
|
@@ -321,37 +264,49 @@ function MatchRoute(props) {
|
|
|
321
264
|
if (!params) {
|
|
322
265
|
return null;
|
|
323
266
|
}
|
|
324
|
-
|
|
267
|
+
if (typeof props.children === 'function') {
|
|
268
|
+
return props.children(params);
|
|
269
|
+
}
|
|
270
|
+
return params ? props.children : null;
|
|
325
271
|
}
|
|
326
272
|
function Outlet() {
|
|
327
|
-
const router = useRouter();
|
|
328
273
|
const matches = useMatches().slice(1);
|
|
329
274
|
const match = matches[0];
|
|
275
|
+
if (!match) {
|
|
276
|
+
return null;
|
|
277
|
+
}
|
|
278
|
+
return /*#__PURE__*/React__namespace.createElement(SubOutlet, {
|
|
279
|
+
matches: matches,
|
|
280
|
+
match: match
|
|
281
|
+
});
|
|
282
|
+
}
|
|
283
|
+
function SubOutlet({
|
|
284
|
+
matches,
|
|
285
|
+
match
|
|
286
|
+
}) {
|
|
287
|
+
const router = useRouter();
|
|
288
|
+
useStore.useStore(match.store);
|
|
330
289
|
const defaultPending = React__namespace.useCallback(() => null, []);
|
|
331
|
-
__useStoreValue(() => match == null ? void 0 : match.store);
|
|
332
290
|
const Inner = React__namespace.useCallback(props => {
|
|
333
|
-
if (props.match.store.status === 'error') {
|
|
334
|
-
throw props.match.store.error;
|
|
291
|
+
if (props.match.store.state.status === 'error') {
|
|
292
|
+
throw props.match.store.state.error;
|
|
335
293
|
}
|
|
336
|
-
if (props.match.store.status === 'success') {
|
|
337
|
-
return /*#__PURE__*/React__namespace.createElement(props.match.
|
|
294
|
+
if (props.match.store.state.status === 'success') {
|
|
295
|
+
return /*#__PURE__*/React__namespace.createElement(props.match.component ?? router.options.defaultComponent ?? Outlet);
|
|
338
296
|
}
|
|
339
|
-
if (props.match.store.status === 'loading') {
|
|
340
|
-
throw props.match.
|
|
297
|
+
if (props.match.store.state.status === 'loading') {
|
|
298
|
+
throw props.match.__loadPromise;
|
|
341
299
|
}
|
|
342
300
|
routerCore.invariant(false, 'Idle routeMatch status encountered during rendering! You should never see this. File an issue!');
|
|
343
301
|
}, []);
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
}
|
|
347
|
-
const PendingComponent = match.__.pendingComponent ?? router.options.defaultPendingComponent ?? defaultPending;
|
|
348
|
-
const errorComponent = match.__.errorComponent ?? router.options.defaultErrorComponent;
|
|
302
|
+
const PendingComponent = match.pendingComponent ?? router.options.defaultPendingComponent ?? defaultPending;
|
|
303
|
+
const errorComponent = match.errorComponent ?? router.options.defaultErrorComponent;
|
|
349
304
|
return /*#__PURE__*/React__namespace.createElement(matchesContext.Provider, {
|
|
350
305
|
value: matches
|
|
351
306
|
}, /*#__PURE__*/React__namespace.createElement(React__namespace.Suspense, {
|
|
352
307
|
fallback: /*#__PURE__*/React__namespace.createElement(PendingComponent, null)
|
|
353
308
|
}, /*#__PURE__*/React__namespace.createElement(CatchBoundary, {
|
|
354
|
-
key: match.
|
|
309
|
+
key: match.route.id,
|
|
355
310
|
errorComponent: errorComponent,
|
|
356
311
|
match: match
|
|
357
312
|
}, /*#__PURE__*/React__namespace.createElement(Inner, {
|
|
@@ -364,7 +319,7 @@ class CatchBoundary extends React__namespace.Component {
|
|
|
364
319
|
info: undefined
|
|
365
320
|
};
|
|
366
321
|
componentDidCatch(error, info) {
|
|
367
|
-
console.error(`Error in route match: ${this.props.match.
|
|
322
|
+
console.error(`Error in route match: ${this.props.match.id}`);
|
|
368
323
|
console.error(error);
|
|
369
324
|
this.setState({
|
|
370
325
|
error,
|
|
@@ -384,20 +339,27 @@ class CatchBoundary extends React__namespace.Component {
|
|
|
384
339
|
// router's location key changes.
|
|
385
340
|
function CatchBoundaryInner(props) {
|
|
386
341
|
const [activeErrorState, setActiveErrorState] = React__namespace.useState(props.errorState);
|
|
387
|
-
|
|
342
|
+
useRouter();
|
|
388
343
|
const errorComponent = props.errorComponent ?? DefaultErrorBoundary;
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
344
|
+
|
|
345
|
+
// React.useEffect(() => {
|
|
346
|
+
// if (activeErrorState) {
|
|
347
|
+
// let prevKey = router.store.currentLocation.key
|
|
348
|
+
// return createRoot((dispose) => {
|
|
349
|
+
// createEffect(() => {
|
|
350
|
+
// if (router.store.currentLocation.key !== prevKey) {
|
|
351
|
+
// prevKey = router.store.currentLocation.key
|
|
352
|
+
// setActiveErrorState({} as any)
|
|
353
|
+
// }
|
|
354
|
+
// })
|
|
355
|
+
|
|
356
|
+
// return dispose
|
|
357
|
+
// })
|
|
358
|
+
// }
|
|
359
|
+
|
|
360
|
+
// return
|
|
361
|
+
// }, [activeErrorState])
|
|
362
|
+
|
|
401
363
|
React__namespace.useEffect(() => {
|
|
402
364
|
if (props.errorState.error) {
|
|
403
365
|
setActiveErrorState(props.errorState);
|
|
@@ -409,10 +371,9 @@ function CatchBoundaryInner(props) {
|
|
|
409
371
|
}
|
|
410
372
|
return props.children;
|
|
411
373
|
}
|
|
412
|
-
function DefaultErrorBoundary(
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
} = _ref2;
|
|
374
|
+
function DefaultErrorBoundary({
|
|
375
|
+
error
|
|
376
|
+
}) {
|
|
416
377
|
return /*#__PURE__*/React__namespace.createElement("div", {
|
|
417
378
|
style: {
|
|
418
379
|
padding: '.5rem',
|
|
@@ -436,56 +397,51 @@ function DefaultErrorBoundary(_ref2) {
|
|
|
436
397
|
}
|
|
437
398
|
}, error.message) : null)));
|
|
438
399
|
}
|
|
439
|
-
function
|
|
440
|
-
|
|
441
|
-
React__namespace.
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
router.store.currentLocation.pathname = window.location.pathname;
|
|
449
|
-
}
|
|
450
|
-
});
|
|
451
|
-
return unblock;
|
|
452
|
-
}, [when, message]);
|
|
453
|
-
}
|
|
454
|
-
function Prompt(_ref3) {
|
|
455
|
-
let {
|
|
456
|
-
message,
|
|
457
|
-
when,
|
|
458
|
-
children
|
|
459
|
-
} = _ref3;
|
|
460
|
-
usePrompt(message, when ?? true);
|
|
461
|
-
return children ?? null;
|
|
400
|
+
function useAction(action, opts) {
|
|
401
|
+
useStore.useStore(action.store, d => opts?.track?.(d) ?? d, true);
|
|
402
|
+
const [ref] = React__namespace.useState({});
|
|
403
|
+
Object.assign(ref, {
|
|
404
|
+
...action,
|
|
405
|
+
latestSubmission: action.store.state.submissions[action.store.state.submissions.length - 1],
|
|
406
|
+
pendingSubmissions: React__namespace.useMemo(() => action.store.state.submissions.filter(d => d.status === 'pending'), [action.store.state.submissions])
|
|
407
|
+
});
|
|
408
|
+
return ref;
|
|
462
409
|
}
|
|
463
410
|
|
|
464
|
-
//
|
|
465
|
-
//
|
|
411
|
+
// TODO: While we migrate away from the history package, these need to be disabled
|
|
412
|
+
// export function usePrompt(message: string, when: boolean | any): void {
|
|
413
|
+
// const router = useRouter()
|
|
466
414
|
|
|
467
|
-
//
|
|
468
|
-
//
|
|
469
|
-
|
|
470
|
-
//
|
|
471
|
-
//
|
|
472
|
-
//
|
|
473
|
-
//
|
|
474
|
-
//
|
|
415
|
+
// React.useEffect(() => {
|
|
416
|
+
// if (!when) return
|
|
417
|
+
|
|
418
|
+
// let unblock = router.getHistory().block((transition) => {
|
|
419
|
+
// if (window.confirm(message)) {
|
|
420
|
+
// unblock()
|
|
421
|
+
// transition.retry()
|
|
422
|
+
// } else {
|
|
423
|
+
// router.setStore((s) => {
|
|
424
|
+
// s.currentLocation.pathname = window.location.pathname
|
|
425
|
+
// })
|
|
475
426
|
// }
|
|
476
|
-
//
|
|
477
|
-
|
|
478
|
-
//
|
|
427
|
+
// })
|
|
428
|
+
|
|
429
|
+
// return unblock
|
|
430
|
+
// }, [when, message])
|
|
431
|
+
// }
|
|
432
|
+
|
|
433
|
+
// export function Prompt({ message, when, children }: PromptProps) {
|
|
434
|
+
// usePrompt(message, when ?? true)
|
|
435
|
+
// return (children ?? null) as ReactNode
|
|
479
436
|
// }
|
|
480
437
|
|
|
438
|
+
exports.useStore = useStore.useStore;
|
|
481
439
|
exports.DefaultErrorBoundary = DefaultErrorBoundary;
|
|
482
440
|
exports.Link = Link;
|
|
483
441
|
exports.MatchRoute = MatchRoute;
|
|
484
442
|
exports.Outlet = Outlet;
|
|
485
|
-
exports.
|
|
443
|
+
exports.ReactRouter = ReactRouter;
|
|
486
444
|
exports.RouterProvider = RouterProvider;
|
|
487
|
-
exports.__useStoreValue = __useStoreValue;
|
|
488
|
-
exports.createReactRouter = createReactRouter;
|
|
489
445
|
exports.lazy = lazy;
|
|
490
446
|
exports.matchesContext = matchesContext;
|
|
491
447
|
exports.routerContext = routerContext;
|
|
@@ -497,17 +453,10 @@ exports.useMatchRoute = useMatchRoute;
|
|
|
497
453
|
exports.useMatches = useMatches;
|
|
498
454
|
exports.useNavigate = useNavigate;
|
|
499
455
|
exports.useParams = useParams;
|
|
500
|
-
exports.usePrompt = usePrompt;
|
|
501
456
|
exports.useRoute = useRoute;
|
|
502
457
|
exports.useRouter = useRouter;
|
|
503
458
|
exports.useRouterStore = useRouterStore;
|
|
504
459
|
exports.useSearch = useSearch;
|
|
505
|
-
Object.keys(reactivity).forEach(function (k) {
|
|
506
|
-
if (k !== 'default' && !exports.hasOwnProperty(k)) Object.defineProperty(exports, k, {
|
|
507
|
-
enumerable: true,
|
|
508
|
-
get: function () { return reactivity[k]; }
|
|
509
|
-
});
|
|
510
|
-
});
|
|
511
460
|
Object.keys(routerCore).forEach(function (k) {
|
|
512
461
|
if (k !== 'default' && !exports.hasOwnProperty(k)) Object.defineProperty(exports, k, {
|
|
513
462
|
enumerable: true,
|
package/build/cjs/index.js.map
CHANGED
|
@@ -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// @ts-ignore\n// import { useSyncExternalStore } from './uSES/useSyncExternalStoreShim'\nimport { createEffect, createRoot, untrack, unwrap } from '@solidjs/reactivity'\nimport { createStore } from '@solidjs/reactivity'\n\nimport {\n Route,\n RegisteredAllRouteInfo,\n RegisteredRouter,\n RouterStore,\n last,\n sharedClone,\n Action,\n warning,\n RouterOptions,\n RouteMatch,\n MatchRouteOptions,\n RouteConfig,\n AnyRouteConfig,\n AnyAllRouteInfo,\n DefaultAllRouteInfo,\n functionalUpdate,\n createRouter,\n AllRouteInfo,\n ValidFromPath,\n LinkOptions,\n RouteInfoByPath,\n ResolveRelativePath,\n NoInfer,\n ToOptions,\n invariant,\n Router,\n Expand,\n} from '@tanstack/router-core'\n\nexport * from '@tanstack/router-core'\n\nexport * from '@solidjs/reactivity'\n\ntype ReactNode = any\n\nexport type SyncRouteComponent<TProps = {}> = (props: TProps) => ReactNode\n\nexport type RouteComponent<TProps = {}> = SyncRouteComponent<TProps> & {\n preload?: () => Promise<void>\n}\n\nexport function lazy(\n importer: () => Promise<{ default: SyncRouteComponent }>,\n): RouteComponent {\n const lazyComp = React.lazy(importer as any)\n let preloaded: Promise<SyncRouteComponent>\n\n const finalComp = lazyComp as unknown as RouteComponent\n\n finalComp.preload = async () => {\n if (!preloaded) {\n await importer()\n }\n }\n\n return finalComp\n}\n\nexport type LinkPropsOptions<\n TFrom extends RegisteredAllRouteInfo['routePaths'] = '/',\n TTo extends string = '.',\n> = LinkOptions<RegisteredAllRouteInfo, 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 MakeUseMatchRouteOptions<\n TFrom extends RegisteredAllRouteInfo['routePaths'] = '/',\n TTo extends string = '.',\n> = ToOptions<RegisteredAllRouteInfo, TFrom, TTo> & MatchRouteOptions\n\nexport type MakeMatchRouteOptions<\n TFrom extends RegisteredAllRouteInfo['routePaths'] = '/',\n TTo extends string = '.',\n> = ToOptions<RegisteredAllRouteInfo, 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 | ReactNode\n | ((\n params: RouteInfoByPath<\n RegisteredAllRouteInfo,\n ResolveRelativePath<TFrom, NoInfer<TTo>>\n >['allParams'],\n ) => ReactNode)\n }\n\nexport type MakeLinkPropsOptions<\n TFrom extends ValidFromPath<RegisteredAllRouteInfo> = '/',\n TTo extends string = '.',\n> = LinkPropsOptions<TFrom, TTo> & React.AnchorHTMLAttributes<HTMLAnchorElement>\n\nexport type MakeLinkOptions<\n TFrom extends RegisteredAllRouteInfo['routePaths'] = '/',\n TTo extends string = '.',\n> = LinkPropsOptions<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?: ReactNode | ((state: { isActive: boolean }) => ReactNode)\n }\n\ndeclare module '@tanstack/router-core' {\n interface FrameworkGenerics {\n Component: RouteComponent\n ErrorComponent: RouteComponent<{\n error: unknown\n info: { componentStack: string }\n }>\n }\n\n interface RouterOptions<TRouteConfig, TRouterContext> {\n // ssrFooter?: () => JSX.Element | Node\n }\n}\n\nexport type PromptProps = {\n message: string\n when?: boolean | any\n children?: ReactNode\n}\n\n//\n\nexport function useLinkProps<\n TFrom extends ValidFromPath<RegisteredAllRouteInfo> = '/',\n TTo extends string = '.',\n>(\n options: MakeLinkPropsOptions<TFrom, TTo>,\n): React.AnchorHTMLAttributes<HTMLAnchorElement> {\n const router = useRouter()\n\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 = router.buildLink(options as any)\n\n if (linkInfo.type === 'external') {\n const { href } = linkInfo\n return { href }\n }\n\n const { handleClick, handleFocus, handleEnter, handleLeave, isActive, next } =\n linkInfo\n\n const reactHandleClick = (e: Event) => {\n if (React.startTransition) {\n // This is a hack for react < 18\n React.startTransition(() => {\n handleClick(e)\n })\n } else {\n handleClick(e)\n }\n }\n\n const composeHandlers =\n (handlers: (undefined | ((e: any) => void))[]) =>\n (e: React.SyntheticEvent) => {\n if (e.persist) e.persist()\n handlers.filter(Boolean).forEach((handler) => {\n if (e.defaultPrevented) return\n handler!(e)\n })\n }\n\n // Get the active props\n const resolvedActiveProps: React.HTMLAttributes<HTMLAnchorElement> = isActive\n ? functionalUpdate(activeProps, {}) ?? {}\n : {}\n\n // Get the inactive props\n const resolvedInactiveProps: React.HTMLAttributes<HTMLAnchorElement> =\n isActive ? {} : functionalUpdate(inactiveProps, {}) ?? {}\n\n return {\n ...resolvedActiveProps,\n ...resolvedInactiveProps,\n ...rest,\n href: disabled ? undefined : next.href,\n onClick: composeHandlers([onClick, reactHandleClick]),\n onFocus: composeHandlers([onFocus, handleFocus]),\n onMouseEnter: composeHandlers([onMouseEnter, handleEnter]),\n onMouseLeave: composeHandlers([onMouseLeave, handleLeave]),\n target,\n style: {\n ...style,\n ...resolvedActiveProps.style,\n ...resolvedInactiveProps.style,\n },\n className:\n [\n className,\n resolvedActiveProps.className,\n resolvedInactiveProps.className,\n ]\n .filter(Boolean)\n .join(' ') || undefined,\n ...(disabled\n ? {\n role: 'link',\n 'aria-disabled': true,\n }\n : undefined),\n ['data-status']: isActive ? 'active' : undefined,\n }\n}\n\nexport interface LinkFn<\n TDefaultFrom extends RegisteredAllRouteInfo['routePaths'] = '/',\n TDefaultTo extends string = '.',\n> {\n <\n TFrom extends RegisteredAllRouteInfo['routePaths'] = TDefaultFrom,\n TTo extends string = TDefaultTo,\n >(\n props: MakeLinkOptions<TFrom, TTo> & React.RefAttributes<HTMLAnchorElement>,\n ): ReactNode\n}\n\nexport const Link: LinkFn = React.forwardRef((props: any, ref) => {\n const linkProps = useLinkProps(props)\n\n return (\n <a\n {...{\n ref: ref as any,\n ...linkProps,\n children:\n typeof props.children === 'function'\n ? props.children({\n isActive: (linkProps as any)['data-status'] === 'active',\n })\n : props.children,\n }}\n />\n )\n}) as any\n\ntype MatchesContextValue = RouteMatch[]\n\nexport const matchesContext = React.createContext<MatchesContextValue>(null!)\nexport const routerContext = React.createContext<{ router: RegisteredRouter }>(\n null!,\n)\n\nexport type MatchesProviderProps = {\n value: MatchesContextValue\n children: ReactNode\n}\n\nconst EMPTY = {}\n\nexport const __useStoreValue = <TSeed, TReturn>(\n seed: () => TSeed,\n selector?: (seed: TSeed) => TReturn,\n): TReturn => {\n const valueRef = React.useRef<TReturn>(EMPTY as any)\n\n // If there is no selector, track the seed\n // If there is a selector, do not track the seed\n const getValue = () =>\n (!selector ? seed() : selector(untrack(() => seed()))) as TReturn\n\n // If empty, initialize the value\n if (valueRef.current === EMPTY) {\n valueRef.current = sharedClone(undefined, getValue())\n }\n\n // Snapshot should just return the current cached value\n const getSnapshot = React.useCallback(() => valueRef.current, [])\n\n const getStore = React.useCallback((cb: () => void) => {\n // A root is necessary to track effects\n return createRoot(() => {\n createEffect(() => {\n // Read and update the value\n // getValue will handle which values are accessed and\n // thus tracked.\n // sharedClone will both recursively track the end result\n // and ensure that the previous value is structurally shared\n // into the new version.\n valueRef.current = unwrap(\n // Unwrap the value to get rid of any proxy structures\n sharedClone(valueRef.current, getValue()),\n )\n cb()\n })\n })\n }, [])\n\n return useSyncExternalStore(getStore, getSnapshot, getSnapshot)\n}\n\nconst [store, setStore] = createStore({ foo: 'foo', bar: { baz: 'baz' } })\n\ncreateRoot(() => {\n let prev: any\n\n createEffect(() => {\n console.log('effect')\n const next = sharedClone(prev, store)\n console.log(next)\n prev = untrack(() => next)\n })\n})\n\nsetStore((s) => {\n s.foo = '1'\n})\n\nsetStore((s) => {\n s.bar.baz = '2'\n})\n\nexport function createReactRouter<\n TRouteConfig extends AnyRouteConfig = RouteConfig,\n TAllRouteInfo extends AnyAllRouteInfo = AllRouteInfo<TRouteConfig>,\n TRouterContext = unknown,\n>(\n opts: RouterOptions<TRouteConfig, TRouterContext>,\n): Router<TRouteConfig, TAllRouteInfo, TRouterContext> {\n const coreRouter = createRouter<TRouteConfig>({\n ...opts,\n loadComponent: async (component) => {\n if (component.preload) {\n 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 TRouterContext = unknown,\n> = RouterOptions<TRouteConfig, TRouterContext> & {\n router: Router<TRouteConfig, TAllRouteInfo, TRouterContext>\n}\n\nexport function RouterProvider<\n TRouteConfig extends AnyRouteConfig = RouteConfig,\n TAllRouteInfo extends AnyAllRouteInfo = DefaultAllRouteInfo,\n TRouterContext = unknown,\n>({\n router,\n ...rest\n}: RouterProps<TRouteConfig, TAllRouteInfo, TRouterContext>) {\n router.update(rest)\n\n const [, , currentMatches] = __useStoreValue(\n () => router.store,\n (s) => [s.status, s.pendingMatches, s.currentMatches],\n )\n\n React.useEffect(router.mount, [router])\n\n console.log('current', currentMatches)\n\n return (\n <>\n <routerContext.Provider value={{ router: router as any }}>\n <matchesContext.Provider value={[undefined!, ...currentMatches]}>\n <Outlet />\n </matchesContext.Provider>\n </routerContext.Provider>\n </>\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 return value.router\n}\n\nexport function useRouterStore<T = RouterStore>(\n selector?: (state: Router['store']) => T,\n): T {\n const router = useRouter()\n return __useStoreValue(() => router.store, selector)\n}\n\nexport function useMatches(): RouteMatch[] {\n return React.useContext(matchesContext)\n}\n\nexport function useMatch<\n TFrom extends keyof RegisteredAllRouteInfo['routeInfoById'],\n TStrict extends boolean = true,\n TRouteMatch = RouteMatch<\n RegisteredAllRouteInfo,\n RegisteredAllRouteInfo['routeInfoById'][TFrom]\n >,\n // TSelected = TRouteMatch,\n>(opts?: {\n from: TFrom\n strict?: TStrict\n // select?: (match: TRouteMatch) => TSelected\n}): TStrict extends true ? TRouteMatch : TRouteMatch | undefined {\n const router = useRouter()\n const nearestMatch = useMatches()[0]!\n const match = opts?.from\n ? router.store.currentMatches.find((d) => d.routeId === opts?.from)\n : nearestMatch\n\n invariant(\n match,\n `Could not find ${\n opts?.from ? `an active match from \"${opts.from}\"` : 'a nearest match!'\n }`,\n )\n\n if (opts?.strict ?? true) {\n invariant(\n nearestMatch.routeId == match?.routeId,\n `useMatch(\"${\n match?.routeId as string\n }\") is being called in a component that is meant to render the '${\n nearestMatch.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 __useStoreValue(() => match!.store)\n\n return match 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 const resolvedRoute = router.getRoute(routeId as any)\n\n invariant(\n resolvedRoute,\n `Could not find a route for route \"${\n routeId as string\n }\"! Did you forget to add it to your route config?`,\n )\n\n return resolvedRoute as any\n}\n\nexport function useLoaderData<\n TFrom extends keyof RegisteredAllRouteInfo['routeInfoById'] = '/',\n TStrict extends boolean = true,\n TLoaderData = RegisteredAllRouteInfo['routeInfoById'][TFrom]['loaderData'],\n TSelected = TLoaderData,\n>(opts?: {\n from: TFrom\n strict?: TStrict\n select?: (loaderData: TLoaderData) => TSelected\n}): TStrict extends true ? TSelected : TSelected | undefined {\n const match = useMatch(opts) as any\n return __useStoreValue(() => match?.store.loaderData, opts?.select)\n}\n\nexport function useSearch<\n TFrom extends keyof RegisteredAllRouteInfo['routeInfoById'],\n TStrict extends boolean = true,\n TSearch = RegisteredAllRouteInfo['routeInfoById'][TFrom]['fullSearchSchema'],\n TSelected = TSearch,\n>(opts?: {\n from: TFrom\n strict?: TStrict\n select?: (search: TSearch) => TSelected\n}): TStrict extends true ? TSelected : TSelected | undefined {\n const match = useMatch(opts)\n return __useStoreValue(() => match?.store.search, opts?.select) as any\n}\n\nexport function useParams<\n TFrom extends keyof RegisteredAllRouteInfo['routeInfoById'] = '/',\n TDefaultSelected = Expand<\n RegisteredAllRouteInfo['allParams'] &\n RegisteredAllRouteInfo['routeInfoById'][TFrom]['allParams']\n >,\n TSelected = TDefaultSelected,\n>(opts?: {\n from: TFrom\n select?: (search: TDefaultSelected) => TSelected\n}): TSelected {\n const router = useRouter()\n return __useStoreValue(\n () => last(router.store.currentMatches)?.params as any,\n opts?.select,\n )\n}\n\nexport function useNavigate<\n TDefaultFrom extends keyof RegisteredAllRouteInfo['routeInfoById'] = '/',\n>(defaultOpts: { from?: TDefaultFrom }) {\n return <\n TFrom extends keyof RegisteredAllRouteInfo['routeInfoById'] = TDefaultFrom,\n TTo extends string = '.',\n >(\n opts: MakeLinkOptions<TFrom, TTo>,\n ) => {\n const router = useRouter()\n return router.navigate({ ...defaultOpts, ...(opts as any) })\n }\n}\n\nexport function useAction<\n TFrom extends keyof RegisteredAllRouteInfo['routeInfoById'] = '/',\n TFromRoute extends RegisteredAllRouteInfo['routeInfoById'][TFrom] = RegisteredAllRouteInfo['routeInfoById'][TFrom],\n>(opts: {\n from: TFrom\n}): Action<TFromRoute['actionPayload'], TFromRoute['actionResponse']> {\n const route = useRoute(opts.from)\n const action = route.action\n __useStoreValue(() => action)\n return action as any\n}\n\nexport function useMatchRoute() {\n const router = useRouter()\n\n return <\n TFrom extends ValidFromPath<RegisteredAllRouteInfo> = '/',\n TTo extends string = '.',\n >(\n opts: MakeUseMatchRouteOptions<TFrom, TTo>,\n ) => {\n const { pending, caseSensitive, ...rest } = opts\n\n return router.matchRoute(rest as any, {\n pending,\n caseSensitive,\n })\n }\n}\n\nexport function MatchRoute<\n TFrom extends ValidFromPath<RegisteredAllRouteInfo> = '/',\n TTo extends string = '.',\n>(props: MakeMatchRouteOptions<TFrom, TTo>): any {\n const matchRoute = useMatchRoute()\n const params = matchRoute(props)\n\n if (!params) {\n return null\n }\n\n return React.createElement(\n typeof props.children === 'function'\n ? (props.children as any)(params)\n : props.children,\n props as any,\n )\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 __useStoreValue(() => match?.store)\n\n const Inner = React.useCallback((props: { match: RouteMatch }): any => {\n if (props.match.store.status === 'error') {\n throw props.match.store.error\n }\n\n if (props.match.store.status === 'success') {\n return React.createElement(\n (props.match.__.component as any) ??\n router.options.defaultComponent ??\n Outlet,\n )\n }\n\n if (props.match.store.status === 'loading') {\n throw props.match.__.loadPromise\n }\n\n invariant(\n false,\n 'Idle routeMatch status encountered during rendering! You should never see this. File an issue!',\n )\n }, [])\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 <matchesContext.Provider value={matches}>\n <React.Suspense fallback={<PendingComponent />}>\n <CatchBoundary\n key={match.routeId}\n errorComponent={errorComponent}\n match={match as any}\n >\n <Inner match={match} />\n </CatchBoundary>\n </React.Suspense>\n {/* Provide a suffix suspense boundary to make sure the router is\n ready to be dehydrated on the server */}\n {/* {router.options.ssrFooter && match.matchId === rootRouteId ? (\n <React.Suspense fallback={null}>\n {(() => {\n if (router.store.pending) {\n throw router.navigationPromise\n }\n\n return router.options.ssrFooter()\n })()}\n </React.Suspense>\n ) : null} */}\n </matchesContext.Provider>\n )\n}\n\nclass CatchBoundary extends React.Component<{\n children: any\n errorComponent: any\n match: RouteMatch\n}> {\n state = {\n error: false,\n info: undefined,\n }\n\n componentDidCatch(error: any, info: any) {\n console.error(`Error in route match: ${this.props.match.matchId}`)\n console.error(error)\n\n this.setState({\n error,\n info,\n })\n }\n\n render() {\n return (\n <CatchBoundaryInner\n {...this.props}\n errorState={this.state}\n reset={() => this.setState({})}\n />\n )\n }\n}\n\n// This is the messiest thing ever... I'm either seriously tired (likely) or\n// there has to be a better way to reset error boundaries when the\n// router's location key changes.\nfunction CatchBoundaryInner(props: {\n children: any\n errorComponent: any\n errorState: { error: unknown; info: any }\n reset: () => void\n}) {\n const [activeErrorState, setActiveErrorState] = React.useState(\n props.errorState,\n )\n const router = useRouter()\n const errorComponent = props.errorComponent ?? DefaultErrorBoundary\n\n React.useEffect(() => {\n if (activeErrorState) {\n let prevKey = router.store.currentLocation.key\n return createRoot(() =>\n createEffect(() => {\n if (router.store.currentLocation.key !== prevKey) {\n prevKey = router.store.currentLocation.key\n setActiveErrorState({} as any)\n }\n }),\n )\n }\n\n return\n }, [activeErrorState])\n\n React.useEffect(() => {\n if (props.errorState.error) {\n setActiveErrorState(props.errorState)\n }\n props.reset()\n }, [props.errorState.error])\n\n if (props.errorState.error) {\n return React.createElement(errorComponent, activeErrorState)\n }\n\n return props.children\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.store.currentLocation.pathname = window.location.pathname\n }\n })\n\n return unblock\n }, [when, message])\n}\n\nexport function Prompt({ message, when, children }: PromptProps) {\n usePrompt(message, when ?? true)\n return (children ?? null) as ReactNode\n}\n\n// function circularStringify(obj: any) {\n// const seen = new Set()\n\n// return (\n// JSON.stringify(obj, (_, value) => {\n// if (typeof value === 'function') {\n// return undefined\n// }\n// if (typeof value === 'object' && value !== null) {\n// if (seen.has(value)) return\n// seen.add(value)\n// }\n// return value\n// }) || ''\n// )\n// }\n"],"names":["lazy","importer","lazyComp","React","finalComp","preload","useLinkProps","options","router","useRouter","type","children","target","activeProps","className","inactiveProps","activeOptions","disabled","hash","search","params","to","preloadDelay","preloadMaxAge","replace","style","onClick","onFocus","onMouseEnter","onMouseLeave","onTouchStart","onTouchEnd","rest","linkInfo","buildLink","href","handleClick","handleFocus","handleEnter","handleLeave","isActive","next","reactHandleClick","e","startTransition","composeHandlers","handlers","persist","filter","Boolean","forEach","handler","defaultPrevented","resolvedActiveProps","functionalUpdate","resolvedInactiveProps","undefined","join","role","Link","forwardRef","props","ref","linkProps","_extends","matchesContext","createContext","routerContext","EMPTY","__useStoreValue","seed","selector","valueRef","useRef","getValue","untrack","current","sharedClone","getSnapshot","useCallback","getStore","cb","createRoot","createEffect","unwrap","useSyncExternalStore","store","setStore","createStore","foo","bar","baz","prev","console","log","s","createReactRouter","opts","coreRouter","createRouter","loadComponent","component","RouterProvider","update","currentMatches","status","pendingMatches","useEffect","mount","value","useContext","warning","useRouterStore","useMatches","useMatch","nearestMatch","match","from","find","d","routeId","invariant","strict","useRoute","resolvedRoute","getRoute","useLoaderData","loaderData","select","useSearch","useParams","last","useNavigate","defaultOpts","navigate","useAction","route","action","useMatchRoute","pending","caseSensitive","matchRoute","MatchRoute","createElement","Outlet","matches","slice","defaultPending","Inner","error","__","defaultComponent","loadPromise","PendingComponent","pendingComponent","defaultPendingComponent","errorComponent","defaultErrorComponent","CatchBoundary","Component","state","info","componentDidCatch","matchId","setState","render","CatchBoundaryInner","activeErrorState","setActiveErrorState","useState","errorState","DefaultErrorBoundary","prevKey","currentLocation","key","reset","padding","maxWidth","fontSize","height","message","border","borderRadius","color","usePrompt","when","unblock","history","block","transition","window","confirm","retry","pathname","location","Prompt"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../src/index.tsx"],"sourcesContent":["import * as React from 'react'\n\nimport {\n Route,\n RegisteredAllRouteInfo,\n RegisteredRouter,\n RouterStore,\n last,\n warning,\n RouterOptions,\n RouteMatch,\n MatchRouteOptions,\n RouteConfig,\n AnyRouteConfig,\n AnyAllRouteInfo,\n DefaultAllRouteInfo,\n functionalUpdate,\n AllRouteInfo,\n ValidFromPath,\n LinkOptions,\n RouteInfoByPath,\n ResolveRelativePath,\n NoInfer,\n ToOptions,\n invariant,\n Router,\n Expand,\n Action,\n ActionStore,\n ActionSubmission,\n} from '@tanstack/router-core'\nimport { useStore } from './useStore'\n\n//\n\nexport * from '@tanstack/router-core'\n\nexport { useStore }\n\n//\n\ntype ReactNode = any\n\nexport type SyncRouteComponent<TProps = {}> = (props: TProps) => ReactNode\n\nexport type RouteComponent<TProps = {}> = SyncRouteComponent<TProps> & {\n preload?: () => Promise<void>\n}\n\nexport function lazy(\n importer: () => Promise<{ default: SyncRouteComponent }>,\n): RouteComponent {\n const lazyComp = React.lazy(importer as any)\n let preloaded: Promise<SyncRouteComponent>\n\n const finalComp = lazyComp as unknown as RouteComponent\n\n finalComp.preload = async () => {\n if (!preloaded) {\n await importer()\n }\n }\n\n return finalComp\n}\n\nexport type LinkPropsOptions<\n TFrom extends RegisteredAllRouteInfo['routePaths'] = '/',\n TTo extends string = '.',\n> = LinkOptions<RegisteredAllRouteInfo, 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 MakeUseMatchRouteOptions<\n TFrom extends RegisteredAllRouteInfo['routePaths'] = '/',\n TTo extends string = '.',\n> = ToOptions<RegisteredAllRouteInfo, TFrom, TTo> & MatchRouteOptions\n\nexport type MakeMatchRouteOptions<\n TFrom extends RegisteredAllRouteInfo['routePaths'] = '/',\n TTo extends string = '.',\n> = ToOptions<RegisteredAllRouteInfo, 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 | ReactNode\n | ((\n params: RouteInfoByPath<\n RegisteredAllRouteInfo,\n ResolveRelativePath<TFrom, NoInfer<TTo>>\n >['allParams'],\n ) => ReactNode)\n }\n\nexport type MakeLinkPropsOptions<\n TFrom extends ValidFromPath<RegisteredAllRouteInfo> = '/',\n TTo extends string = '.',\n> = LinkPropsOptions<TFrom, TTo> & React.AnchorHTMLAttributes<HTMLAnchorElement>\n\nexport type MakeLinkOptions<\n TFrom extends RegisteredAllRouteInfo['routePaths'] = '/',\n TTo extends string = '.',\n> = LinkPropsOptions<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?: ReactNode | ((state: { isActive: boolean }) => ReactNode)\n }\n\ndeclare module '@tanstack/router-core' {\n interface FrameworkGenerics {\n Component: RouteComponent\n ErrorComponent: RouteComponent<{\n error: unknown\n info: { componentStack: string }\n }>\n }\n\n interface RouterOptions<TRouteConfig, TRouterContext> {\n // ssrFooter?: () => JSX.Element | Node\n }\n}\n\nexport type PromptProps = {\n message: string\n when?: boolean | any\n children?: ReactNode\n}\n\n//\n\nexport function useLinkProps<\n TFrom extends ValidFromPath<RegisteredAllRouteInfo> = '/',\n TTo extends string = '.',\n>(\n options: MakeLinkPropsOptions<TFrom, TTo>,\n): React.AnchorHTMLAttributes<HTMLAnchorElement> {\n const router = useRouter()\n\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 = router.buildLink(options as any)\n\n if (linkInfo.type === 'external') {\n const { href } = linkInfo\n return { href }\n }\n\n const { handleClick, handleFocus, handleEnter, handleLeave, isActive, next } =\n linkInfo\n\n const reactHandleClick = (e: Event) => {\n if (React.startTransition) {\n // This is a hack for react < 18\n React.startTransition(() => {\n handleClick(e)\n })\n } else {\n handleClick(e)\n }\n }\n\n const composeHandlers =\n (handlers: (undefined | ((e: any) => void))[]) =>\n (e: React.SyntheticEvent) => {\n if (e.persist) e.persist()\n handlers.filter(Boolean).forEach((handler) => {\n if (e.defaultPrevented) return\n handler!(e)\n })\n }\n\n // Get the active props\n const resolvedActiveProps: React.HTMLAttributes<HTMLAnchorElement> = isActive\n ? functionalUpdate(activeProps as any, {}) ?? {}\n : {}\n\n // Get the inactive props\n const resolvedInactiveProps: React.HTMLAttributes<HTMLAnchorElement> =\n isActive ? {} : functionalUpdate(inactiveProps, {}) ?? {}\n\n return {\n ...resolvedActiveProps,\n ...resolvedInactiveProps,\n ...rest,\n href: disabled ? undefined : next.href,\n onClick: composeHandlers([onClick, reactHandleClick]),\n onFocus: composeHandlers([onFocus, handleFocus]),\n onMouseEnter: composeHandlers([onMouseEnter, handleEnter]),\n onMouseLeave: composeHandlers([onMouseLeave, handleLeave]),\n target,\n style: {\n ...style,\n ...resolvedActiveProps.style,\n ...resolvedInactiveProps.style,\n },\n className:\n [\n className,\n resolvedActiveProps.className,\n resolvedInactiveProps.className,\n ]\n .filter(Boolean)\n .join(' ') || undefined,\n ...(disabled\n ? {\n role: 'link',\n 'aria-disabled': true,\n }\n : undefined),\n ['data-status']: isActive ? 'active' : undefined,\n }\n}\n\nexport interface LinkFn<\n TDefaultFrom extends RegisteredAllRouteInfo['routePaths'] = '/',\n TDefaultTo extends string = '.',\n> {\n <\n TFrom extends RegisteredAllRouteInfo['routePaths'] = TDefaultFrom,\n TTo extends string = TDefaultTo,\n >(\n props: MakeLinkOptions<TFrom, TTo> & React.RefAttributes<HTMLAnchorElement>,\n ): ReactNode\n}\n\nexport const Link: LinkFn = React.forwardRef((props: any, ref) => {\n const linkProps = useLinkProps(props)\n\n return (\n <a\n {...{\n ref: ref as any,\n ...linkProps,\n children:\n typeof props.children === 'function'\n ? props.children({\n isActive: (linkProps as any)['data-status'] === 'active',\n })\n : props.children,\n }}\n />\n )\n}) as any\n\ntype MatchesContextValue = RouteMatch[]\n\nexport const matchesContext = React.createContext<MatchesContextValue>(null!)\nexport const routerContext = React.createContext<{ router: RegisteredRouter }>(\n null!,\n)\n\nexport type MatchesProviderProps = {\n value: MatchesContextValue\n children: ReactNode\n}\n\nexport class ReactRouter<\n TRouteConfig extends AnyRouteConfig = RouteConfig,\n TAllRouteInfo extends AnyAllRouteInfo = AllRouteInfo<TRouteConfig>,\n TRouterContext = unknown,\n> extends Router<TRouteConfig, TAllRouteInfo, TRouterContext> {\n constructor(opts: RouterOptions<TRouteConfig, TRouterContext>) {\n super({\n ...opts,\n loadComponent: async (component) => {\n if (component.preload) {\n await component.preload()\n }\n\n return component as any\n },\n })\n }\n}\n\nexport type RouterProps<\n TRouteConfig extends AnyRouteConfig = RouteConfig,\n TAllRouteInfo extends AnyAllRouteInfo = DefaultAllRouteInfo,\n TRouterContext = unknown,\n> = RouterOptions<TRouteConfig, TRouterContext> & {\n router: Router<TRouteConfig, TAllRouteInfo, TRouterContext>\n}\n\nexport function RouterProvider<\n TRouteConfig extends AnyRouteConfig = RouteConfig,\n TAllRouteInfo extends AnyAllRouteInfo = DefaultAllRouteInfo,\n TRouterContext = unknown,\n>({\n router,\n ...rest\n}: RouterProps<TRouteConfig, TAllRouteInfo, TRouterContext>) {\n router.update(rest)\n\n const [, , currentMatches] = useStore(\n router.store,\n (s) => [s.status, s.pendingMatches, s.currentMatches],\n true,\n )\n\n React.useEffect(router.mount, [router])\n\n return (\n <>\n <routerContext.Provider value={{ router: router as any }}>\n <matchesContext.Provider value={[undefined!, ...currentMatches]}>\n <Outlet />\n </matchesContext.Provider>\n </routerContext.Provider>\n </>\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 return value.router\n}\n\nexport function useRouterStore<T = RouterStore>(\n selector?: (state: Router['store']) => T,\n shallow?: boolean,\n): T {\n const router = useRouter()\n return useStore(router.store, selector as any, shallow)\n}\n\nexport function useMatches(): RouteMatch[] {\n return React.useContext(matchesContext)\n}\n\nexport function useMatch<\n TFrom extends keyof RegisteredAllRouteInfo['routeInfoById'],\n TStrict extends boolean = true,\n TRouteMatch = RouteMatch<\n RegisteredAllRouteInfo,\n RegisteredAllRouteInfo['routeInfoById'][TFrom]\n >,\n>(opts?: {\n from: TFrom\n strict?: TStrict\n track?: (match: TRouteMatch) => any\n shallow?: boolean\n}): TStrict extends true ? TRouteMatch : TRouteMatch | undefined {\n const router = useRouter()\n const nearestMatch = useMatches()[0]!\n const match = opts?.from\n ? router.store.state.currentMatches.find((d) => d.route.id === opts?.from)\n : nearestMatch\n\n invariant(\n match,\n `Could not find ${\n opts?.from ? `an active match from \"${opts.from}\"` : 'a nearest match!'\n }`,\n )\n\n if (opts?.strict ?? true) {\n invariant(\n nearestMatch.route.id == match?.route.id,\n `useMatch(\"${\n match?.route.id as string\n }\") is being called in a component that is meant to render the '${\n nearestMatch.route.id\n }' route. Did you mean to 'useMatch(\"${\n match?.route.id as string\n }\", { strict: false })' or 'useRoute(\"${\n match?.route.id as string\n }\")' instead?`,\n )\n }\n\n useStore(\n match!.store,\n (d) => opts?.track?.(match as any) ?? match,\n opts?.shallow,\n )\n\n return match 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 const resolvedRoute = router.getRoute(routeId as any)\n\n invariant(\n resolvedRoute,\n `Could not find a route for route \"${\n routeId as string\n }\"! Did you forget to add it to your route config?`,\n )\n\n return resolvedRoute as any\n}\n\nexport function useLoaderData<\n TFrom extends keyof RegisteredAllRouteInfo['routeInfoById'] = '/',\n TStrict extends boolean = true,\n TLoaderData = RegisteredAllRouteInfo['routeInfoById'][TFrom]['loaderData'],\n>(opts?: {\n from: TFrom\n strict?: TStrict\n track?: (loaderData: TLoaderData) => any\n}): TStrict extends true ? TLoaderData : TLoaderData | undefined {\n const match = useMatch(opts)\n\n invariant(\n match,\n `Could not find ${\n opts?.from ? `an active match from \"${opts.from}\"` : 'a nearest match!'\n }`,\n )\n\n useStore(\n (match as any).store,\n (d: any) => opts?.track?.(d.loaderData) ?? d.loaderData,\n )\n\n return (match as unknown as RouteMatch).store.state.loaderData as any\n}\n\nexport function useSearch<\n TFrom extends keyof RegisteredAllRouteInfo['routeInfoById'],\n TStrict extends boolean = true,\n TSearch = RegisteredAllRouteInfo['routeInfoById'][TFrom]['fullSearchSchema'],\n TSelected = TSearch,\n>(opts?: {\n from: TFrom\n strict?: TStrict\n track?: (search: TSearch) => TSelected\n}): TStrict extends true ? TSelected : TSelected | undefined {\n const match = useMatch(opts)\n useStore(\n (match as any).store,\n (d: any) => opts?.track?.(d.search) ?? d.search,\n )\n\n return (match as unknown as RouteMatch).store.state.search as any\n}\n\nexport function useParams<\n TFrom extends keyof RegisteredAllRouteInfo['routeInfoById'] = '/',\n TDefaultSelected = Expand<\n RegisteredAllRouteInfo['allParams'] &\n RegisteredAllRouteInfo['routeInfoById'][TFrom]['allParams']\n >,\n TSelected = TDefaultSelected,\n>(opts?: {\n from: TFrom\n track?: (search: TDefaultSelected) => TSelected\n}): TSelected {\n const router = useRouter()\n useStore(router.store, (d) => {\n const params = last(d.currentMatches)?.params as any\n return opts?.track?.(params) ?? params\n })\n\n return last(router.store.state.currentMatches)?.params as any\n}\n\nexport function useNavigate<\n TDefaultFrom extends keyof RegisteredAllRouteInfo['routeInfoById'] = '/',\n>(defaultOpts: { from?: TDefaultFrom }) {\n const router = useRouter()\n return <\n TFrom extends keyof RegisteredAllRouteInfo['routeInfoById'] = TDefaultFrom,\n TTo extends string = '.',\n >(\n opts: MakeLinkOptions<TFrom, TTo>,\n ) => {\n return router.navigate({ ...defaultOpts, ...(opts as any) })\n }\n}\n\nexport function useMatchRoute() {\n const router = useRouter()\n\n return <\n TFrom extends ValidFromPath<RegisteredAllRouteInfo> = '/',\n TTo extends string = '.',\n >(\n opts: MakeUseMatchRouteOptions<TFrom, TTo>,\n ) => {\n const { pending, caseSensitive, ...rest } = opts\n\n return router.matchRoute(rest as any, {\n pending,\n caseSensitive,\n })\n }\n}\n\nexport function MatchRoute<\n TFrom extends ValidFromPath<RegisteredAllRouteInfo> = '/',\n TTo extends string = '.',\n>(props: MakeMatchRouteOptions<TFrom, TTo>): any {\n const matchRoute = useMatchRoute()\n const params = matchRoute(props)\n\n if (!params) {\n return null\n }\n\n if (typeof props.children === 'function') {\n return (props.children as any)(params)\n }\n\n return params ? props.children : null\n}\n\nexport function Outlet() {\n const matches = useMatches().slice(1)\n const match = matches[0]\n\n if (!match) {\n return null\n }\n\n return <SubOutlet matches={matches} match={match} />\n}\n\nfunction SubOutlet({\n matches,\n match,\n}: {\n matches: RouteMatch[]\n match: RouteMatch\n}) {\n const router = useRouter()\n useStore(match!.store)\n\n const defaultPending = React.useCallback(() => null, [])\n\n const Inner = React.useCallback((props: { match: RouteMatch }): any => {\n if (props.match.store.state.status === 'error') {\n throw props.match.store.state.error\n }\n\n if (props.match.store.state.status === 'success') {\n return React.createElement(\n (props.match.component as any) ??\n router.options.defaultComponent ??\n Outlet,\n )\n }\n\n if (props.match.store.state.status === 'loading') {\n throw props.match.__loadPromise\n }\n\n invariant(\n false,\n 'Idle routeMatch status encountered during rendering! You should never see this. File an issue!',\n )\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 <matchesContext.Provider value={matches}>\n <React.Suspense fallback={<PendingComponent />}>\n <CatchBoundary\n key={match.route.id}\n errorComponent={errorComponent}\n match={match as any}\n >\n <Inner match={match} />\n </CatchBoundary>\n </React.Suspense>\n {/* Provide a suffix suspense boundary to make sure the router is\n ready to be dehydrated on the server */}\n {/* {router.options.ssrFooter && match.matchId === rootRouteId ? (\n <React.Suspense fallback={null}>\n {(() => {\n if (router.store.pending) {\n throw router.navigationPromise\n }\n\n return router.options.ssrFooter()\n })()}\n </React.Suspense>\n ) : null} */}\n </matchesContext.Provider>\n )\n}\n\nclass CatchBoundary extends React.Component<{\n children: any\n errorComponent: any\n match: RouteMatch\n}> {\n state = {\n error: false,\n info: undefined,\n }\n\n componentDidCatch(error: any, info: any) {\n console.error(`Error in route match: ${this.props.match.id}`)\n console.error(error)\n\n this.setState({\n error,\n info,\n })\n }\n\n render() {\n return (\n <CatchBoundaryInner\n {...this.props}\n errorState={this.state}\n reset={() => this.setState({})}\n />\n )\n }\n}\n\n// This is the messiest thing ever... I'm either seriously tired (likely) or\n// there has to be a better way to reset error boundaries when the\n// router's location key changes.\nfunction CatchBoundaryInner(props: {\n children: any\n errorComponent: any\n errorState: { error: unknown; info: any }\n reset: () => void\n}) {\n const [activeErrorState, setActiveErrorState] = React.useState(\n props.errorState,\n )\n const router = useRouter()\n const errorComponent = props.errorComponent ?? DefaultErrorBoundary\n\n // React.useEffect(() => {\n // if (activeErrorState) {\n // let prevKey = router.store.currentLocation.key\n // return createRoot((dispose) => {\n // createEffect(() => {\n // if (router.store.currentLocation.key !== prevKey) {\n // prevKey = router.store.currentLocation.key\n // setActiveErrorState({} as any)\n // }\n // })\n\n // return dispose\n // })\n // }\n\n // return\n // }, [activeErrorState])\n\n React.useEffect(() => {\n if (props.errorState.error) {\n setActiveErrorState(props.errorState)\n }\n props.reset()\n }, [props.errorState.error])\n\n if (props.errorState.error) {\n return React.createElement(errorComponent, activeErrorState)\n }\n\n return props.children\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 useAction<\n TKey extends string = string,\n TPayload = unknown,\n TResponse = unknown,\n TError = Error,\n>(\n action: Action<TKey, TPayload, TResponse, TError>,\n opts?: {\n track?: (actionStore: ActionStore<TPayload, TResponse, TError>) => any\n },\n): Action & {\n latestSubmission: ActionSubmission<TPayload, TResponse, TError>\n pendingSubmissions: ActionSubmission<TPayload, TResponse, TError>[]\n} {\n useStore(action.store, (d) => opts?.track?.(d) ?? d, true)\n\n const [ref] = React.useState({})\n\n Object.assign(ref, {\n ...action,\n latestSubmission:\n action.store.state.submissions[action.store.state.submissions.length - 1],\n pendingSubmissions: React.useMemo(\n () =>\n action.store.state.submissions.filter((d) => d.status === 'pending'),\n [action.store.state.submissions],\n ),\n })\n\n return ref as any\n}\n\n// TODO: While we migrate away from the history package, these need to be disabled\n// export 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.getHistory().block((transition) => {\n// if (window.confirm(message)) {\n// unblock()\n// transition.retry()\n// } else {\n// router.setStore((s) => {\n// s.currentLocation.pathname = window.location.pathname\n// })\n// }\n// })\n\n// return unblock\n// }, [when, message])\n// }\n\n// export function Prompt({ message, when, children }: PromptProps) {\n// usePrompt(message, when ?? true)\n// return (children ?? null) as ReactNode\n// }\n"],"names":["lazy","importer","lazyComp","React","finalComp","preload","useLinkProps","options","router","useRouter","type","children","target","activeProps","className","inactiveProps","activeOptions","disabled","hash","search","params","to","preloadDelay","preloadMaxAge","replace","style","onClick","onFocus","onMouseEnter","onMouseLeave","onTouchStart","onTouchEnd","rest","linkInfo","buildLink","href","handleClick","handleFocus","handleEnter","handleLeave","isActive","next","reactHandleClick","e","startTransition","composeHandlers","handlers","persist","filter","Boolean","forEach","handler","defaultPrevented","resolvedActiveProps","functionalUpdate","resolvedInactiveProps","undefined","join","role","Link","forwardRef","props","ref","linkProps","_extends","matchesContext","createContext","routerContext","ReactRouter","Router","constructor","opts","loadComponent","component","RouterProvider","update","currentMatches","useStore","store","s","status","pendingMatches","useEffect","mount","value","useContext","warning","useRouterStore","selector","shallow","useMatches","useMatch","nearestMatch","match","from","state","find","d","route","id","invariant","strict","track","useRoute","routeId","resolvedRoute","getRoute","useLoaderData","loaderData","useSearch","useParams","last","useNavigate","defaultOpts","navigate","useMatchRoute","pending","caseSensitive","matchRoute","MatchRoute","Outlet","matches","slice","SubOutlet","defaultPending","useCallback","Inner","error","createElement","defaultComponent","__loadPromise","PendingComponent","pendingComponent","defaultPendingComponent","errorComponent","defaultErrorComponent","CatchBoundary","Component","info","componentDidCatch","console","setState","render","CatchBoundaryInner","activeErrorState","setActiveErrorState","useState","errorState","DefaultErrorBoundary","reset","padding","maxWidth","fontSize","height","message","border","borderRadius","color","useAction","action","Object","assign","latestSubmission","submissions","length","pendingSubmissions","useMemo"],"mappings":"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"}
|