@tanstack/react-router 1.7.1 → 1.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (209) hide show
  1. package/dist/cjs/CatchBoundary.cjs +106 -0
  2. package/dist/cjs/CatchBoundary.cjs.map +1 -0
  3. package/dist/cjs/Matches.cjs +278 -0
  4. package/dist/cjs/Matches.cjs.map +1 -0
  5. package/dist/cjs/Matches.d.cts +71 -0
  6. package/{build/cjs/RouterProvider.js → dist/cjs/RouterProvider.cjs} +55 -58
  7. package/dist/cjs/RouterProvider.cjs.map +1 -0
  8. package/dist/cjs/RouterProvider.d.cts +29 -0
  9. package/dist/cjs/awaited.cjs +51 -0
  10. package/dist/cjs/awaited.cjs.map +1 -0
  11. package/dist/cjs/defer.cjs +30 -0
  12. package/dist/cjs/defer.cjs.map +1 -0
  13. package/dist/cjs/fileRoute.cjs +19 -0
  14. package/dist/cjs/fileRoute.cjs.map +1 -0
  15. package/dist/cjs/history.d.cts +7 -0
  16. package/{build/cjs/index.js → dist/cjs/index.cjs} +39 -51
  17. package/dist/cjs/index.cjs.map +1 -0
  18. package/dist/cjs/lazyRouteComponent.cjs +40 -0
  19. package/dist/cjs/lazyRouteComponent.cjs.map +1 -0
  20. package/dist/cjs/link.cjs +196 -0
  21. package/dist/cjs/link.cjs.map +1 -0
  22. package/dist/cjs/link.d.cts +85 -0
  23. package/{build/cjs/path.js → dist/cjs/path.cjs} +87 -95
  24. package/dist/cjs/path.cjs.map +1 -0
  25. package/dist/cjs/path.d.cts +24 -0
  26. package/dist/cjs/qss.cjs +45 -0
  27. package/dist/cjs/qss.cjs.map +1 -0
  28. package/dist/cjs/redirects.cjs +15 -0
  29. package/dist/cjs/redirects.cjs.map +1 -0
  30. package/dist/cjs/route.cjs +143 -0
  31. package/dist/cjs/route.cjs.map +1 -0
  32. package/dist/cjs/router.cjs +1089 -0
  33. package/dist/cjs/router.cjs.map +1 -0
  34. package/dist/cjs/routerContext.cjs +29 -0
  35. package/dist/cjs/routerContext.cjs.map +1 -0
  36. package/{build/cjs/scroll-restoration.js → dist/cjs/scroll-restoration.cjs} +58 -75
  37. package/dist/cjs/scroll-restoration.cjs.map +1 -0
  38. package/{build/cjs/searchParams.js → dist/cjs/searchParams.cjs} +18 -36
  39. package/dist/cjs/searchParams.cjs.map +1 -0
  40. package/dist/cjs/useBlocker.cjs +36 -0
  41. package/dist/cjs/useBlocker.cjs.map +1 -0
  42. package/dist/cjs/useNavigate.cjs +55 -0
  43. package/dist/cjs/useNavigate.cjs.map +1 -0
  44. package/dist/cjs/useParams.cjs +16 -0
  45. package/dist/cjs/useParams.cjs.map +1 -0
  46. package/dist/cjs/useRouteContext.cjs +11 -0
  47. package/dist/cjs/useRouteContext.cjs.map +1 -0
  48. package/dist/cjs/useRouter.cjs +33 -0
  49. package/dist/cjs/useRouter.cjs.map +1 -0
  50. package/dist/cjs/useRouterState.cjs +12 -0
  51. package/dist/cjs/useRouterState.cjs.map +1 -0
  52. package/dist/cjs/useSearch.cjs +13 -0
  53. package/dist/cjs/useSearch.cjs.map +1 -0
  54. package/{build/cjs/utils.js → dist/cjs/utils.cjs} +25 -116
  55. package/dist/cjs/utils.cjs.map +1 -0
  56. package/dist/cjs/utils.d.cts +50 -0
  57. package/dist/esm/CatchBoundary.d.ts +36 -0
  58. package/dist/esm/CatchBoundary.js +89 -0
  59. package/dist/esm/CatchBoundary.js.map +1 -0
  60. package/{build/types → dist/esm}/Matches.d.ts +3 -3
  61. package/dist/esm/Matches.js +261 -0
  62. package/dist/esm/Matches.js.map +1 -0
  63. package/{build/types → dist/esm}/RouterProvider.d.ts +3 -1
  64. package/dist/esm/RouterProvider.js +136 -0
  65. package/dist/esm/RouterProvider.js.map +1 -0
  66. package/dist/esm/awaited.d.ts +9 -0
  67. package/dist/esm/awaited.js +51 -0
  68. package/dist/esm/awaited.js.map +1 -0
  69. package/dist/esm/defer.d.ts +22 -0
  70. package/dist/esm/defer.js +30 -0
  71. package/{build/cjs → dist/esm}/defer.js.map +1 -1
  72. package/dist/esm/fileRoute.d.ts +21 -0
  73. package/dist/esm/fileRoute.js +19 -0
  74. package/dist/esm/fileRoute.js.map +1 -0
  75. package/{build/types → dist/esm}/history.d.ts +1 -1
  76. package/dist/esm/index.d.ts +30 -0
  77. package/dist/esm/index.js +118 -0
  78. package/dist/esm/index.js.map +1 -0
  79. package/dist/esm/lazyRouteComponent.d.ts +2 -0
  80. package/dist/esm/lazyRouteComponent.js +23 -0
  81. package/{build/cjs → dist/esm}/lazyRouteComponent.js.map +1 -1
  82. package/{build/types → dist/esm}/link.d.ts +3 -1
  83. package/dist/esm/link.js +179 -0
  84. package/dist/esm/link.js.map +1 -0
  85. package/dist/esm/location.d.ts +12 -0
  86. package/{build/types → dist/esm}/path.d.ts +8 -1
  87. package/dist/esm/path.js +209 -0
  88. package/dist/esm/path.js.map +1 -0
  89. package/dist/esm/qss.d.ts +2 -0
  90. package/dist/esm/qss.js +45 -0
  91. package/dist/esm/qss.js.map +1 -0
  92. package/dist/esm/redirects.d.ts +11 -0
  93. package/dist/esm/redirects.js +15 -0
  94. package/{build/cjs → dist/esm}/redirects.js.map +1 -1
  95. package/dist/esm/route.d.ts +300 -0
  96. package/dist/esm/route.js +143 -0
  97. package/dist/esm/route.js.map +1 -0
  98. package/dist/esm/routeInfo.d.ts +31 -0
  99. package/dist/esm/router.d.ts +201 -0
  100. package/dist/esm/router.js +1089 -0
  101. package/dist/esm/router.js.map +1 -0
  102. package/dist/esm/routerContext.d.ts +3 -0
  103. package/dist/esm/routerContext.js +13 -0
  104. package/{build/cjs → dist/esm}/routerContext.js.map +1 -1
  105. package/dist/esm/scroll-restoration.d.ts +18 -0
  106. package/dist/esm/scroll-restoration.js +168 -0
  107. package/dist/esm/scroll-restoration.js.map +1 -0
  108. package/dist/esm/searchParams.d.ts +7 -0
  109. package/dist/esm/searchParams.js +63 -0
  110. package/{build/cjs → dist/esm}/searchParams.js.map +1 -1
  111. package/dist/esm/useBlocker.d.ts +9 -0
  112. package/dist/esm/useBlocker.js +19 -0
  113. package/{build/cjs → dist/esm}/useBlocker.js.map +1 -1
  114. package/dist/esm/useNavigate.d.ts +20 -0
  115. package/dist/esm/useNavigate.js +38 -0
  116. package/{build/cjs → dist/esm}/useNavigate.js.map +1 -1
  117. package/dist/esm/useParams.d.ts +7 -0
  118. package/dist/esm/useParams.js +16 -0
  119. package/{build/cjs → dist/esm}/useParams.js.map +1 -1
  120. package/dist/esm/useRouteContext.d.ts +7 -0
  121. package/dist/esm/useRouteContext.js +11 -0
  122. package/{build/cjs → dist/esm}/useRouteContext.js.map +1 -1
  123. package/dist/esm/useRouter.d.ts +5 -0
  124. package/dist/esm/useRouter.js +16 -0
  125. package/{build/cjs → dist/esm}/useRouter.js.map +1 -1
  126. package/dist/esm/useRouterState.d.ts +6 -0
  127. package/dist/esm/useRouterState.js +12 -0
  128. package/{build/cjs → dist/esm}/useRouterState.js.map +1 -1
  129. package/dist/esm/useSearch.d.ts +7 -0
  130. package/dist/esm/useSearch.js +13 -0
  131. package/dist/esm/useSearch.js.map +1 -0
  132. package/{build/types → dist/esm}/utils.d.ts +4 -0
  133. package/dist/esm/utils.js +137 -0
  134. package/dist/esm/utils.js.map +1 -0
  135. package/package.json +43 -22
  136. package/src/Matches.tsx +10 -6
  137. package/src/RouterProvider.tsx +3 -1
  138. package/src/fileRoute.ts +4 -5
  139. package/src/link.tsx +5 -4
  140. package/src/path.ts +16 -5
  141. package/src/route.ts +5 -6
  142. package/src/router.ts +25 -8
  143. package/src/useSearch.tsx +5 -2
  144. package/src/utils.ts +9 -0
  145. package/build/cjs/CatchBoundary.js +0 -128
  146. package/build/cjs/CatchBoundary.js.map +0 -1
  147. package/build/cjs/Matches.js +0 -260
  148. package/build/cjs/Matches.js.map +0 -1
  149. package/build/cjs/RouterProvider.js.map +0 -1
  150. package/build/cjs/_virtual/_rollupPluginBabelHelpers.js +0 -29
  151. package/build/cjs/_virtual/_rollupPluginBabelHelpers.js.map +0 -1
  152. package/build/cjs/awaited.js +0 -60
  153. package/build/cjs/awaited.js.map +0 -1
  154. package/build/cjs/defer.js +0 -42
  155. package/build/cjs/fileRoute.js +0 -31
  156. package/build/cjs/fileRoute.js.map +0 -1
  157. package/build/cjs/index.js.map +0 -1
  158. package/build/cjs/lazyRouteComponent.js +0 -54
  159. package/build/cjs/link.js +0 -224
  160. package/build/cjs/link.js.map +0 -1
  161. package/build/cjs/path.js.map +0 -1
  162. package/build/cjs/qss.js +0 -63
  163. package/build/cjs/qss.js.map +0 -1
  164. package/build/cjs/redirects.js +0 -28
  165. package/build/cjs/route.js +0 -292
  166. package/build/cjs/route.js.map +0 -1
  167. package/build/cjs/router.js +0 -1116
  168. package/build/cjs/router.js.map +0 -1
  169. package/build/cjs/routerContext.js +0 -42
  170. package/build/cjs/scroll-restoration.js.map +0 -1
  171. package/build/cjs/useBlocker.js +0 -55
  172. package/build/cjs/useNavigate.js +0 -88
  173. package/build/cjs/useParams.js +0 -27
  174. package/build/cjs/useRouteContext.js +0 -23
  175. package/build/cjs/useRouter.js +0 -44
  176. package/build/cjs/useRouterState.js +0 -24
  177. package/build/cjs/useSearch.js +0 -25
  178. package/build/cjs/useSearch.js.map +0 -1
  179. package/build/cjs/utils.js.map +0 -1
  180. package/build/esm/index.js +0 -2874
  181. package/build/esm/index.js.map +0 -1
  182. package/build/stats-html.html +0 -4838
  183. package/build/stats-react.json +0 -1471
  184. package/build/umd/index.development.js +0 -3573
  185. package/build/umd/index.development.js.map +0 -1
  186. package/build/umd/index.production.js +0 -22
  187. package/build/umd/index.production.js.map +0 -1
  188. /package/{build/types/CatchBoundary.d.ts → dist/cjs/CatchBoundary.d.cts} +0 -0
  189. /package/{build/types/awaited.d.ts → dist/cjs/awaited.d.cts} +0 -0
  190. /package/{build/types/defer.d.ts → dist/cjs/defer.d.cts} +0 -0
  191. /package/{build/types/fileRoute.d.ts → dist/cjs/fileRoute.d.cts} +0 -0
  192. /package/{build/types/index.d.ts → dist/cjs/index.d.cts} +0 -0
  193. /package/{build/types/lazyRouteComponent.d.ts → dist/cjs/lazyRouteComponent.d.cts} +0 -0
  194. /package/{build/types/location.d.ts → dist/cjs/location.d.cts} +0 -0
  195. /package/{build/types/qss.d.ts → dist/cjs/qss.d.cts} +0 -0
  196. /package/{build/types/redirects.d.ts → dist/cjs/redirects.d.cts} +0 -0
  197. /package/{build/types/route.d.ts → dist/cjs/route.d.cts} +0 -0
  198. /package/{build/types/routeInfo.d.ts → dist/cjs/routeInfo.d.cts} +0 -0
  199. /package/{build/types/router.d.ts → dist/cjs/router.d.cts} +0 -0
  200. /package/{build/types/routerContext.d.ts → dist/cjs/routerContext.d.cts} +0 -0
  201. /package/{build/types/scroll-restoration.d.ts → dist/cjs/scroll-restoration.d.cts} +0 -0
  202. /package/{build/types/searchParams.d.ts → dist/cjs/searchParams.d.cts} +0 -0
  203. /package/{build/types/useBlocker.d.ts → dist/cjs/useBlocker.d.cts} +0 -0
  204. /package/{build/types/useNavigate.d.ts → dist/cjs/useNavigate.d.cts} +0 -0
  205. /package/{build/types/useParams.d.ts → dist/cjs/useParams.d.cts} +0 -0
  206. /package/{build/types/useRouteContext.d.ts → dist/cjs/useRouteContext.d.cts} +0 -0
  207. /package/{build/types/useRouter.d.ts → dist/cjs/useRouter.d.cts} +0 -0
  208. /package/{build/types/useRouterState.d.ts → dist/cjs/useRouterState.d.cts} +0 -0
  209. /package/{build/types/useSearch.d.ts → dist/cjs/useSearch.d.cts} +0 -0
package/src/router.ts CHANGED
@@ -668,9 +668,16 @@ export class Router<
668
668
 
669
669
  const loaderDepsHash = loaderDeps ? JSON.stringify(loaderDeps) : ''
670
670
 
671
- const interpolatedPath = interpolatePath(route.fullPath, routeParams)
671
+ const interpolatedPath = interpolatePath({
672
+ path: route.fullPath,
673
+ params: routeParams,
674
+ })
672
675
  const matchId =
673
- interpolatePath(route.id, routeParams, true) + loaderDepsHash
676
+ interpolatePath({
677
+ path: route.id,
678
+ params: routeParams,
679
+ leaveWildcards: true,
680
+ }) + loaderDepsHash
674
681
 
675
682
  // Waste not, want not. If we already have a match for this route,
676
683
  // reuse it. This is important for layout routes, which might stick
@@ -776,7 +783,12 @@ export class Router<
776
783
  })
777
784
  }
778
785
 
779
- pathname = interpolatePath(pathname, nextParams ?? {})
786
+ pathname = interpolatePath({
787
+ path: pathname,
788
+ params: nextParams ?? {},
789
+ leaveWildcards: false,
790
+ leaveParams: opts.leaveParams,
791
+ })
780
792
 
781
793
  const preSearchFilters =
782
794
  stayingMatches
@@ -1560,14 +1572,15 @@ export class Router<
1560
1572
  location: ToOptions<TRouteTree, TFrom, TTo>,
1561
1573
  opts?: MatchRouteOptions,
1562
1574
  ): false | RouteById<TRouteTree, TResolved>['types']['allParams'] => {
1563
- location = {
1575
+ const matchLocation = {
1564
1576
  ...location,
1565
1577
  to: location.to
1566
1578
  ? this.resolvePathWithBase((location.from || '') as string, location.to)
1567
1579
  : undefined,
1568
- } as any
1569
-
1570
- const next = this.buildLocation(location as any)
1580
+ params: location.params || {},
1581
+ leaveParams: true,
1582
+ }
1583
+ const next = this.buildLocation(matchLocation as any)
1571
1584
 
1572
1585
  if (opts?.pending && this.state.status !== 'pending') {
1573
1586
  return false
@@ -1580,7 +1593,6 @@ export class Router<
1580
1593
  if (!baseLocation) {
1581
1594
  return false
1582
1595
  }
1583
-
1584
1596
  const match = matchPathname(this.basepath, baseLocation.pathname, {
1585
1597
  ...opts,
1586
1598
  to: next.pathname,
@@ -1589,6 +1601,11 @@ export class Router<
1589
1601
  if (!match) {
1590
1602
  return false
1591
1603
  }
1604
+ if (location.params) {
1605
+ if (!deepEqual(match, location.params, true)) {
1606
+ return false
1607
+ }
1608
+ }
1592
1609
 
1593
1610
  if (match && (opts?.includeSearch ?? true)) {
1594
1611
  return deepEqual(baseLocation.search, next.search, true) ? match : false
package/src/useSearch.tsx CHANGED
@@ -8,13 +8,16 @@ import { StrictOrFrom } from './utils'
8
8
  export function useSearch<
9
9
  TRouteTree extends AnyRoute = RegisteredRouter['routeTree'],
10
10
  TFrom extends RouteIds<TRouteTree> = RouteIds<TRouteTree>,
11
- TSearch = Exclude<RouteById<TRouteTree, TFrom>['types']['fullSearchSchema'], RootSearchSchema>,
11
+ TSearch = Exclude<
12
+ RouteById<TRouteTree, TFrom>['types']['fullSearchSchema'],
13
+ RootSearchSchema
14
+ >,
12
15
  TSelected = TSearch,
13
16
  >(
14
17
  opts: StrictOrFrom<TFrom> & {
15
18
  select?: (search: TSearch) => TSelected
16
19
  },
17
- ) : TSelected {
20
+ ): TSelected {
18
21
  return useMatch({
19
22
  ...opts,
20
23
  select: (match: RouteMatch) => {
package/src/utils.ts CHANGED
@@ -25,6 +25,15 @@ export type UnionToIntersection<U> = (
25
25
  ? I
26
26
  : never
27
27
 
28
+ export type DeepOptional<T, K extends keyof T> = Pick<DeepPartial<T>, K> &
29
+ Omit<T, K>
30
+
31
+ export type DeepPartial<T> = T extends object
32
+ ? {
33
+ [P in keyof T]?: DeepPartial<T[P]>
34
+ }
35
+ : T
36
+
28
37
  // type Compute<T> = { [K in keyof T]: T[K] } | never
29
38
 
30
39
  // type AllKeys<T> = T extends any ? keyof T : never
@@ -1,128 +0,0 @@
1
- /**
2
- * @tanstack/react-router/src/index.tsx
3
- *
4
- * Copyright (c) TanStack
5
- *
6
- * This source code is licensed under the MIT license found in the
7
- * LICENSE.md file in the root directory of this source tree.
8
- *
9
- * @license MIT
10
- */
11
- 'use strict';
12
-
13
- var React = require('react');
14
-
15
- function _interopNamespaceDefault(e) {
16
- var n = Object.create(null);
17
- if (e) {
18
- Object.keys(e).forEach(function (k) {
19
- if (k !== 'default') {
20
- var d = Object.getOwnPropertyDescriptor(e, k);
21
- Object.defineProperty(n, k, d.get ? d : {
22
- enumerable: true,
23
- get: function () { return e[k]; }
24
- });
25
- }
26
- });
27
- }
28
- n.default = e;
29
- return Object.freeze(n);
30
- }
31
-
32
- var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
33
-
34
- function CatchBoundary(props) {
35
- const errorComponent = props.errorComponent ?? ErrorComponent;
36
- return /*#__PURE__*/React__namespace.createElement(CatchBoundaryImpl, {
37
- getResetKey: props.getResetKey,
38
- onCatch: props.onCatch,
39
- children: ({
40
- error
41
- }) => {
42
- if (error) {
43
- return /*#__PURE__*/React__namespace.createElement(errorComponent, {
44
- error
45
- });
46
- }
47
- return props.children;
48
- }
49
- });
50
- }
51
- class CatchBoundaryImpl extends React__namespace.Component {
52
- state = {
53
- error: null
54
- };
55
- static getDerivedStateFromProps(props) {
56
- return {
57
- resetKey: props.getResetKey()
58
- };
59
- }
60
- static getDerivedStateFromError(error) {
61
- return {
62
- error
63
- };
64
- }
65
- componentDidUpdate(prevProps, prevState) {
66
- if (prevState.error && prevState.resetKey !== this.state.resetKey) {
67
- this.setState({
68
- error: null
69
- });
70
- }
71
- }
72
- componentDidCatch(error) {
73
- console.error(error);
74
- this.props.onCatch?.(error);
75
- }
76
- render() {
77
- return this.props.children(this.state);
78
- }
79
- }
80
- function ErrorComponent({
81
- error
82
- }) {
83
- const [show, setShow] = React__namespace.useState(process.env.NODE_ENV !== 'production');
84
- return /*#__PURE__*/React__namespace.createElement("div", {
85
- style: {
86
- padding: '.5rem',
87
- maxWidth: '100%'
88
- }
89
- }, /*#__PURE__*/React__namespace.createElement("div", {
90
- style: {
91
- display: 'flex',
92
- alignItems: 'center',
93
- gap: '.5rem'
94
- }
95
- }, /*#__PURE__*/React__namespace.createElement("strong", {
96
- style: {
97
- fontSize: '1rem'
98
- }
99
- }, "Something went wrong!"), /*#__PURE__*/React__namespace.createElement("button", {
100
- style: {
101
- appearance: 'none',
102
- fontSize: '.6em',
103
- border: '1px solid currentColor',
104
- padding: '.1rem .2rem',
105
- fontWeight: 'bold',
106
- borderRadius: '.25rem'
107
- },
108
- onClick: () => setShow(d => !d)
109
- }, show ? 'Hide Error' : 'Show Error')), /*#__PURE__*/React__namespace.createElement("div", {
110
- style: {
111
- height: '.25rem'
112
- }
113
- }), show ? /*#__PURE__*/React__namespace.createElement("div", null, /*#__PURE__*/React__namespace.createElement("pre", {
114
- style: {
115
- fontSize: '.7em',
116
- border: '1px solid red',
117
- borderRadius: '.25rem',
118
- padding: '.3rem',
119
- color: 'red',
120
- overflow: 'auto'
121
- }
122
- }, error.message ? /*#__PURE__*/React__namespace.createElement("code", null, error.message) : null)) : null);
123
- }
124
-
125
- exports.CatchBoundary = CatchBoundary;
126
- exports.CatchBoundaryImpl = CatchBoundaryImpl;
127
- exports.ErrorComponent = ErrorComponent;
128
- //# sourceMappingURL=CatchBoundary.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CatchBoundary.js","sources":["../../src/CatchBoundary.tsx"],"sourcesContent":["import * as React from 'react'\n\nexport function CatchBoundary(props: {\n getResetKey: () => string\n children: any\n errorComponent?: any\n onCatch?: (error: any) => void\n}) {\n const errorComponent = props.errorComponent ?? ErrorComponent\n\n return (\n <CatchBoundaryImpl\n getResetKey={props.getResetKey}\n onCatch={props.onCatch}\n children={({ error }) => {\n if (error) {\n return React.createElement(errorComponent, {\n error,\n })\n }\n\n return props.children\n }}\n />\n )\n}\n\nexport class CatchBoundaryImpl extends React.Component<{\n getResetKey: () => string\n children: (props: { error: any; reset: () => void }) => any\n onCatch?: (error: any) => void\n}> {\n state = { error: null } as any\n static getDerivedStateFromProps(props: any) {\n return { resetKey: props.getResetKey() }\n }\n static getDerivedStateFromError(error: any) {\n return { error }\n }\n componentDidUpdate(\n prevProps: Readonly<{\n getResetKey: () => string\n children: (props: { error: any; reset: () => void }) => any\n onCatch?: ((error: any, info: any) => void) | undefined\n }>,\n prevState: any,\n ): void {\n if (prevState.error && prevState.resetKey !== this.state.resetKey) {\n this.setState({ error: null })\n }\n }\n componentDidCatch(error: any) {\n console.error(error)\n this.props.onCatch?.(error)\n }\n render() {\n return this.props.children(this.state)\n }\n}\n\nexport function ErrorComponent({ error }: { error: any }) {\n const [show, setShow] = React.useState(process.env.NODE_ENV !== 'production')\n\n return (\n <div style={{ padding: '.5rem', maxWidth: '100%' }}>\n <div style={{ display: 'flex', alignItems: 'center', gap: '.5rem' }}>\n <strong style={{ fontSize: '1rem' }}>Something went wrong!</strong>\n <button\n style={{\n appearance: 'none',\n fontSize: '.6em',\n border: '1px solid currentColor',\n padding: '.1rem .2rem',\n fontWeight: 'bold',\n borderRadius: '.25rem',\n }}\n onClick={() => setShow((d) => !d)}\n >\n {show ? 'Hide Error' : 'Show Error'}\n </button>\n </div>\n <div style={{ height: '.25rem' }} />\n {show ? (\n <div>\n <pre\n style={{\n fontSize: '.7em',\n border: '1px solid red',\n borderRadius: '.25rem',\n padding: '.3rem',\n color: 'red',\n overflow: 'auto',\n }}\n >\n {error.message ? <code>{error.message}</code> : null}\n </pre>\n </div>\n ) : null}\n </div>\n )\n}\n"],"names":["CatchBoundary","props","errorComponent","ErrorComponent","React","createElement","CatchBoundaryImpl","getResetKey","onCatch","children","error","Component","state","getDerivedStateFromProps","resetKey","getDerivedStateFromError","componentDidUpdate","prevProps","prevState","setState","componentDidCatch","console","render","show","setShow","useState","process","env","NODE_ENV","style","padding","maxWidth","display","alignItems","gap","fontSize","appearance","border","fontWeight","borderRadius","onClick","d","height","color","overflow","message"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEO,SAASA,aAAaA,CAACC,KAK7B,EAAE;AACD,EAAA,MAAMC,cAAc,GAAGD,KAAK,CAACC,cAAc,IAAIC,cAAc,CAAA;AAE7D,EAAA,oBACEC,gBAAA,CAAAC,aAAA,CAACC,iBAAiB,EAAA;IAChBC,WAAW,EAAEN,KAAK,CAACM,WAAY;IAC/BC,OAAO,EAAEP,KAAK,CAACO,OAAQ;AACvBC,IAAAA,QAAQ,EAAEA,CAAC;AAAEC,MAAAA,KAAAA;AAAM,KAAC,KAAK;AACvB,MAAA,IAAIA,KAAK,EAAE;AACT,QAAA,oBAAON,gBAAK,CAACC,aAAa,CAACH,cAAc,EAAE;AACzCQ,UAAAA,KAAAA;AACF,SAAC,CAAC,CAAA;AACJ,OAAA;MAEA,OAAOT,KAAK,CAACQ,QAAQ,CAAA;AACvB,KAAA;AAAE,GACH,CAAC,CAAA;AAEN,CAAA;AAEO,MAAMH,iBAAiB,SAASF,gBAAK,CAACO,SAAS,CAInD;AACDC,EAAAA,KAAK,GAAG;AAAEF,IAAAA,KAAK,EAAE,IAAA;GAAM,CAAA;EACvB,OAAOG,wBAAwBA,CAACZ,KAAU,EAAE;IAC1C,OAAO;AAAEa,MAAAA,QAAQ,EAAEb,KAAK,CAACM,WAAW,EAAC;KAAG,CAAA;AAC1C,GAAA;EACA,OAAOQ,wBAAwBA,CAACL,KAAU,EAAE;IAC1C,OAAO;AAAEA,MAAAA,KAAAA;KAAO,CAAA;AAClB,GAAA;AACAM,EAAAA,kBAAkBA,CAChBC,SAIE,EACFC,SAAc,EACR;AACN,IAAA,IAAIA,SAAS,CAACR,KAAK,IAAIQ,SAAS,CAACJ,QAAQ,KAAK,IAAI,CAACF,KAAK,CAACE,QAAQ,EAAE;MACjE,IAAI,CAACK,QAAQ,CAAC;AAAET,QAAAA,KAAK,EAAE,IAAA;AAAK,OAAC,CAAC,CAAA;AAChC,KAAA;AACF,GAAA;EACAU,iBAAiBA,CAACV,KAAU,EAAE;AAC5BW,IAAAA,OAAO,CAACX,KAAK,CAACA,KAAK,CAAC,CAAA;AACpB,IAAA,IAAI,CAACT,KAAK,CAACO,OAAO,GAAGE,KAAK,CAAC,CAAA;AAC7B,GAAA;AACAY,EAAAA,MAAMA,GAAG;IACP,OAAO,IAAI,CAACrB,KAAK,CAACQ,QAAQ,CAAC,IAAI,CAACG,KAAK,CAAC,CAAA;AACxC,GAAA;AACF,CAAA;AAEO,SAAST,cAAcA,CAAC;AAAEO,EAAAA,KAAAA;AAAsB,CAAC,EAAE;AACxD,EAAA,MAAM,CAACa,IAAI,EAAEC,OAAO,CAAC,GAAGpB,gBAAK,CAACqB,QAAQ,CAACC,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,YAAY,CAAC,CAAA;EAE7E,oBACExB,gBAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKwB,IAAAA,KAAK,EAAE;AAAEC,MAAAA,OAAO,EAAE,OAAO;AAAEC,MAAAA,QAAQ,EAAE,MAAA;AAAO,KAAA;GAC/C3B,eAAAA,gBAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKwB,IAAAA,KAAK,EAAE;AAAEG,MAAAA,OAAO,EAAE,MAAM;AAAEC,MAAAA,UAAU,EAAE,QAAQ;AAAEC,MAAAA,GAAG,EAAE,OAAA;AAAQ,KAAA;GAChE9B,eAAAA,gBAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AAAQwB,IAAAA,KAAK,EAAE;AAAEM,MAAAA,QAAQ,EAAE,MAAA;AAAO,KAAA;AAAE,GAAA,EAAC,uBAA6B,CAAC,eACnE/B,gBAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AACEwB,IAAAA,KAAK,EAAE;AACLO,MAAAA,UAAU,EAAE,MAAM;AAClBD,MAAAA,QAAQ,EAAE,MAAM;AAChBE,MAAAA,MAAM,EAAE,wBAAwB;AAChCP,MAAAA,OAAO,EAAE,aAAa;AACtBQ,MAAAA,UAAU,EAAE,MAAM;AAClBC,MAAAA,YAAY,EAAE,QAAA;KACd;IACFC,OAAO,EAAEA,MAAMhB,OAAO,CAAEiB,CAAC,IAAK,CAACA,CAAC,CAAA;GAE/BlB,EAAAA,IAAI,GAAG,YAAY,GAAG,YACjB,CACL,CAAC,eACNnB,gBAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKwB,IAAAA,KAAK,EAAE;AAAEa,MAAAA,MAAM,EAAE,QAAA;AAAS,KAAA;GAAI,CAAC,EACnCnB,IAAI,gBACHnB,gBAAA,CAAAC,aAAA,CAAA,KAAA,EAAA,IAAA,eACED,gBAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AACEwB,IAAAA,KAAK,EAAE;AACLM,MAAAA,QAAQ,EAAE,MAAM;AAChBE,MAAAA,MAAM,EAAE,eAAe;AACvBE,MAAAA,YAAY,EAAE,QAAQ;AACtBT,MAAAA,OAAO,EAAE,OAAO;AAChBa,MAAAA,KAAK,EAAE,KAAK;AACZC,MAAAA,QAAQ,EAAE,MAAA;AACZ,KAAA;AAAE,GAAA,EAEDlC,KAAK,CAACmC,OAAO,gBAAGzC,gBAAA,CAAAC,aAAA,CAAOK,MAAAA,EAAAA,IAAAA,EAAAA,KAAK,CAACmC,OAAc,CAAC,GAAG,IAC7C,CACF,CAAC,GACJ,IACD,CAAC,CAAA;AAEV;;;;;;"}
@@ -1,260 +0,0 @@
1
- /**
2
- * @tanstack/react-router/src/index.tsx
3
- *
4
- * Copyright (c) TanStack
5
- *
6
- * This source code is licensed under the MIT license found in the
7
- * LICENSE.md file in the root directory of this source tree.
8
- *
9
- * @license MIT
10
- */
11
- 'use strict';
12
-
13
- var React = require('react');
14
- var invariant = require('tiny-invariant');
15
- var warning = require('tiny-warning');
16
- var CatchBoundary = require('./CatchBoundary.js');
17
- var useRouterState = require('./useRouterState.js');
18
- var useRouter = require('./useRouter.js');
19
- var utils = require('./utils.js');
20
-
21
- function _interopNamespaceDefault(e) {
22
- var n = Object.create(null);
23
- if (e) {
24
- Object.keys(e).forEach(function (k) {
25
- if (k !== 'default') {
26
- var d = Object.getOwnPropertyDescriptor(e, k);
27
- Object.defineProperty(n, k, d.get ? d : {
28
- enumerable: true,
29
- get: function () { return e[k]; }
30
- });
31
- }
32
- });
33
- }
34
- n.default = e;
35
- return Object.freeze(n);
36
- }
37
-
38
- var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
39
-
40
- const matchContext = /*#__PURE__*/React__namespace.createContext(undefined);
41
- function Matches() {
42
- const router = useRouter.useRouter();
43
- const matchId = useRouterState.useRouterState({
44
- select: s => {
45
- return getRenderedMatches(s)[0]?.id;
46
- }
47
- });
48
- return /*#__PURE__*/React__namespace.createElement(matchContext.Provider, {
49
- value: matchId
50
- }, /*#__PURE__*/React__namespace.createElement(CatchBoundary.CatchBoundary, {
51
- getResetKey: () => router.state.resolvedLocation.state?.key,
52
- errorComponent: CatchBoundary.ErrorComponent,
53
- onCatch: () => {
54
- warning(false, `Error in router! Consider setting an 'errorComponent' in your RootRoute! 👍`);
55
- }
56
- }, matchId ? /*#__PURE__*/React__namespace.createElement(Match, {
57
- matchId: matchId
58
- }) : null));
59
- }
60
- function SafeFragment(props) {
61
- return /*#__PURE__*/React__namespace.createElement(React__namespace.Fragment, null, props.children);
62
- }
63
- function Match({
64
- matchId
65
- }) {
66
- const router = useRouter.useRouter();
67
- const routeId = useRouterState.useRouterState({
68
- select: s => getRenderedMatches(s).find(d => d.id === matchId)?.routeId
69
- });
70
- invariant(routeId, `Could not find routeId for matchId "${matchId}". Please file an issue!`);
71
- const route = router.routesById[routeId];
72
- const PendingComponent = route.options.pendingComponent ?? router.options.defaultPendingComponent;
73
- const pendingElement = PendingComponent ? /*#__PURE__*/React__namespace.createElement(PendingComponent, null) : null;
74
- const routeErrorComponent = route.options.errorComponent ?? router.options.defaultErrorComponent ?? CatchBoundary.ErrorComponent;
75
- const ResolvedSuspenseBoundary = route.options.wrapInSuspense ?? PendingComponent ?? route.options.component?.preload ?? route.options.pendingComponent?.preload ?? route.options.errorComponent?.preload ? React__namespace.Suspense : SafeFragment;
76
- const ResolvedCatchBoundary = routeErrorComponent ? CatchBoundary.CatchBoundary : SafeFragment;
77
- return /*#__PURE__*/React__namespace.createElement(matchContext.Provider, {
78
- value: matchId
79
- }, /*#__PURE__*/React__namespace.createElement(ResolvedSuspenseBoundary, {
80
- fallback: pendingElement
81
- }, /*#__PURE__*/React__namespace.createElement(ResolvedCatchBoundary, {
82
- getResetKey: () => router.state.resolvedLocation.state?.key,
83
- errorComponent: routeErrorComponent,
84
- onCatch: () => {
85
- warning(false, `Error in route match: ${matchId}`);
86
- }
87
- }, /*#__PURE__*/React__namespace.createElement(MatchInner, {
88
- matchId: matchId,
89
- pendingElement: pendingElement
90
- }))));
91
- }
92
- function MatchInner({
93
- matchId,
94
- pendingElement
95
- }) {
96
- const router = useRouter.useRouter();
97
- const routeId = useRouterState.useRouterState({
98
- select: s => getRenderedMatches(s).find(d => d.id === matchId)?.routeId
99
- });
100
- const route = router.routesById[routeId];
101
- const match = useRouterState.useRouterState({
102
- select: s => utils.pick(getRenderedMatches(s).find(d => d.id === matchId), ['status', 'error', 'showPending', 'loadPromise'])
103
- });
104
- if (match.status === 'error') {
105
- if (isServerSideError(match.error)) {
106
- const deserializeError = router.options.errorSerializer?.deserialize ?? defaultDeserializeError;
107
- throw deserializeError(match.error.data);
108
- } else {
109
- throw match.error;
110
- }
111
- }
112
- if (match.status === 'pending') {
113
- if (match.showPending) {
114
- return pendingElement;
115
- }
116
- throw match.loadPromise;
117
- }
118
- if (match.status === 'success') {
119
- let Comp = route.options.component ?? router.options.defaultComponent;
120
- if (Comp) {
121
- return /*#__PURE__*/React__namespace.createElement(Comp, null);
122
- }
123
- return /*#__PURE__*/React__namespace.createElement(Outlet, null);
124
- }
125
- invariant(false, 'Idle routeMatch status encountered during rendering! You should never see this. File an issue!');
126
- }
127
- const Outlet = /*#__PURE__*/React__namespace.memo(function Outlet() {
128
- const matchId = React__namespace.useContext(matchContext);
129
- const childMatchId = useRouterState.useRouterState({
130
- select: s => {
131
- const matches = getRenderedMatches(s);
132
- const index = matches.findIndex(d => d.id === matchId);
133
- return matches[index + 1]?.id;
134
- }
135
- });
136
- if (!childMatchId) {
137
- return null;
138
- }
139
- return /*#__PURE__*/React__namespace.createElement(Match, {
140
- matchId: childMatchId
141
- });
142
- });
143
- function useMatchRoute() {
144
- useRouterState.useRouterState({
145
- select: s => [s.location, s.resolvedLocation]
146
- });
147
- const {
148
- matchRoute
149
- } = useRouter.useRouter();
150
- return React__namespace.useCallback(opts => {
151
- const {
152
- pending,
153
- caseSensitive,
154
- fuzzy,
155
- includeSearch,
156
- ...rest
157
- } = opts;
158
- return matchRoute(rest, {
159
- pending,
160
- caseSensitive,
161
- fuzzy,
162
- includeSearch
163
- });
164
- }, []);
165
- }
166
- function MatchRoute(props) {
167
- const matchRoute = useMatchRoute();
168
- const params = matchRoute(props);
169
- if (typeof props.children === 'function') {
170
- return props.children(params);
171
- }
172
- return !!params ? props.children : null;
173
- }
174
- function getRenderedMatches(state) {
175
- return state.pendingMatches?.some(d => d.showPending) ? state.pendingMatches : state.matches;
176
- }
177
- function useMatch(opts) {
178
- const router = useRouter.useRouter();
179
- const nearestMatchId = React__namespace.useContext(matchContext);
180
- const nearestMatchRouteId = getRenderedMatches(router.state).find(d => d.id === nearestMatchId)?.routeId;
181
- const matchRouteId = (() => {
182
- const matches = getRenderedMatches(router.state);
183
- const match = opts?.from ? matches.find(d => d.routeId === opts?.from) : matches.find(d => d.id === nearestMatchId);
184
- return match.routeId;
185
- })();
186
- if (opts?.strict ?? true) {
187
- invariant(nearestMatchRouteId == matchRouteId, `useMatch("${matchRouteId}") is being called in a component that is meant to render the '${nearestMatchRouteId}' route. Did you mean to 'useMatch("${matchRouteId}", { strict: false })' or 'useRoute("${matchRouteId}")' instead?`);
188
- }
189
- const matchSelection = useRouterState.useRouterState({
190
- select: state => {
191
- const match = getRenderedMatches(state).find(d => d.id === nearestMatchId);
192
- invariant(match, `Could not find ${opts?.from ? `an active match from "${opts.from}"` : 'a nearest match!'}`);
193
- return opts?.select ? opts.select(match) : match;
194
- }
195
- });
196
- return matchSelection;
197
- }
198
- function useMatches(opts) {
199
- return useRouterState.useRouterState({
200
- select: state => {
201
- let matches = getRenderedMatches(state);
202
- return opts?.select ? opts.select(matches) : matches;
203
- }
204
- });
205
- }
206
- function useParentMatches(opts) {
207
- const contextMatchId = React__namespace.useContext(matchContext);
208
- return useMatches({
209
- select: matches => {
210
- matches = matches.slice(matches.findIndex(d => d.id === contextMatchId));
211
- return opts?.select ? opts.select(matches) : matches;
212
- }
213
- });
214
- }
215
- function useLoaderDeps(opts) {
216
- return useMatch({
217
- ...opts,
218
- select: s => {
219
- return typeof opts.select === 'function' ? opts.select(s?.loaderDeps) : s?.loaderDeps;
220
- }
221
- });
222
- }
223
- function useLoaderData(opts) {
224
- return useMatch({
225
- ...opts,
226
- select: s => {
227
- return typeof opts.select === 'function' ? opts.select(s?.loaderData) : s?.loaderData;
228
- }
229
- });
230
- }
231
- function isServerSideError(error) {
232
- if (!(typeof error === 'object' && error && 'data' in error)) return false;
233
- if (!('__isServerError' in error && error.__isServerError)) return false;
234
- if (!(typeof error.data === 'object' && error.data)) return false;
235
- return error.__isServerError === true;
236
- }
237
- function defaultDeserializeError(serializedData) {
238
- if ('name' in serializedData && 'message' in serializedData) {
239
- const error = new Error(serializedData.message);
240
- error.name = serializedData.name;
241
- return error;
242
- }
243
- return serializedData.data;
244
- }
245
-
246
- exports.Match = Match;
247
- exports.MatchRoute = MatchRoute;
248
- exports.Matches = Matches;
249
- exports.Outlet = Outlet;
250
- exports.defaultDeserializeError = defaultDeserializeError;
251
- exports.getRenderedMatches = getRenderedMatches;
252
- exports.isServerSideError = isServerSideError;
253
- exports.matchContext = matchContext;
254
- exports.useLoaderData = useLoaderData;
255
- exports.useLoaderDeps = useLoaderDeps;
256
- exports.useMatch = useMatch;
257
- exports.useMatchRoute = useMatchRoute;
258
- exports.useMatches = useMatches;
259
- exports.useParentMatches = useParentMatches;
260
- //# sourceMappingURL=Matches.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Matches.js","sources":["../../src/Matches.tsx"],"sourcesContent":["import * as React from 'react'\nimport invariant from 'tiny-invariant'\nimport warning from 'tiny-warning'\nimport { CatchBoundary, ErrorComponent } from './CatchBoundary'\nimport { useRouterState } from './useRouterState'\nimport { useRouter } from './useRouter'\nimport { ResolveRelativePath, ToOptions } from './link'\nimport { AnyRoute, ReactNode, RootSearchSchema } from './route'\nimport {\n ParseRoute,\n RouteById,\n RouteByPath,\n RouteIds,\n RoutePaths,\n} from './routeInfo'\nimport { RegisteredRouter, RouterState } from './router'\nimport { NoInfer, StrictOrFrom, pick } from './utils'\n\nexport const matchContext = React.createContext<string | undefined>(undefined)\n\nexport interface RouteMatch<\n TRouteTree extends AnyRoute = AnyRoute,\n TRouteId extends RouteIds<TRouteTree> = ParseRoute<TRouteTree>['id'],\n> {\n id: string\n routeId: TRouteId\n pathname: string\n params: RouteById<TRouteTree, TRouteId>['types']['allParams']\n status: 'pending' | 'success' | 'error'\n isFetching: boolean\n showPending: boolean\n error: unknown\n paramsError: unknown\n searchError: unknown\n updatedAt: number\n loadPromise?: Promise<void>\n loaderData?: RouteById<TRouteTree, TRouteId>['types']['loaderData']\n routeContext: RouteById<TRouteTree, TRouteId>['types']['routeContext']\n context: RouteById<TRouteTree, TRouteId>['types']['allContext']\n search: Exclude<\n RouteById<TRouteTree, TRouteId>['types']['fullSearchSchema'],\n RootSearchSchema\n >\n fetchCount: number\n abortController: AbortController\n cause: 'preload' | 'enter' | 'stay'\n loaderDeps: RouteById<TRouteTree, TRouteId>['types']['loaderDeps']\n preload: boolean\n invalid: boolean\n pendingPromise?: Promise<void>\n}\n\nexport type AnyRouteMatch = RouteMatch<any, any>\n\nexport function Matches() {\n const router = useRouter()\n const matchId = useRouterState({\n select: (s) => {\n return getRenderedMatches(s)[0]?.id\n },\n })\n\n return (\n <matchContext.Provider value={matchId}>\n <CatchBoundary\n getResetKey={() => router.state.resolvedLocation.state?.key}\n errorComponent={ErrorComponent}\n onCatch={() => {\n warning(\n false,\n `Error in router! Consider setting an 'errorComponent' in your RootRoute! 👍`,\n )\n }}\n >\n {matchId ? <Match matchId={matchId} /> : null}\n </CatchBoundary>\n </matchContext.Provider>\n )\n}\n\nfunction SafeFragment(props: any) {\n return <>{props.children}</>\n}\n\nexport function Match({ matchId }: { matchId: string }) {\n const router = useRouter()\n const routeId = useRouterState({\n select: (s) =>\n getRenderedMatches(s).find((d) => d.id === matchId)?.routeId as string,\n })\n\n invariant(\n routeId,\n `Could not find routeId for matchId \"${matchId}\". Please file an issue!`,\n )\n\n const route = router.routesById[routeId]!\n\n const PendingComponent = (route.options.pendingComponent ??\n router.options.defaultPendingComponent) as any\n\n const pendingElement = PendingComponent ? <PendingComponent /> : null\n\n const routeErrorComponent =\n route.options.errorComponent ??\n router.options.defaultErrorComponent ??\n ErrorComponent\n\n const ResolvedSuspenseBoundary =\n route.options.wrapInSuspense ??\n PendingComponent ??\n route.options.component?.preload ??\n route.options.pendingComponent?.preload ??\n (route.options.errorComponent as any)?.preload\n ? React.Suspense\n : SafeFragment\n\n const ResolvedCatchBoundary = routeErrorComponent\n ? CatchBoundary\n : SafeFragment\n\n return (\n <matchContext.Provider value={matchId}>\n <ResolvedSuspenseBoundary fallback={pendingElement}>\n <ResolvedCatchBoundary\n getResetKey={() => router.state.resolvedLocation.state?.key}\n errorComponent={routeErrorComponent}\n onCatch={() => {\n warning(false, `Error in route match: ${matchId}`)\n }}\n >\n <MatchInner matchId={matchId!} pendingElement={pendingElement} />\n </ResolvedCatchBoundary>\n </ResolvedSuspenseBoundary>\n </matchContext.Provider>\n )\n}\n\nfunction MatchInner({\n matchId,\n pendingElement,\n}: {\n matchId: string\n pendingElement: any\n}): any {\n const router = useRouter()\n const routeId = useRouterState({\n select: (s) =>\n getRenderedMatches(s).find((d) => d.id === matchId)?.routeId as string,\n })\n\n const route = router.routesById[routeId]!\n\n const match = useRouterState({\n select: (s) =>\n pick(getRenderedMatches(s).find((d) => d.id === matchId)!, [\n 'status',\n 'error',\n 'showPending',\n 'loadPromise',\n ]),\n })\n\n if (match.status === 'error') {\n if (isServerSideError(match.error)) {\n const deserializeError =\n router.options.errorSerializer?.deserialize ?? defaultDeserializeError\n throw deserializeError(match.error.data)\n } else {\n throw match.error\n }\n }\n\n if (match.status === 'pending') {\n if (match.showPending) {\n return pendingElement\n }\n throw match.loadPromise\n }\n\n if (match.status === 'success') {\n let Comp = route.options.component ?? router.options.defaultComponent\n\n if (Comp) {\n return <Comp />\n }\n\n return <Outlet />\n }\n\n invariant(\n false,\n 'Idle routeMatch status encountered during rendering! You should never see this. File an issue!',\n )\n}\n\nexport const Outlet = React.memo(function Outlet() {\n const matchId = React.useContext(matchContext)\n\n const childMatchId = useRouterState({\n select: (s) => {\n const matches = getRenderedMatches(s)\n const index = matches.findIndex((d) => d.id === matchId)\n return matches[index + 1]?.id\n },\n })\n\n if (!childMatchId) {\n return null\n }\n\n return <Match matchId={childMatchId} />\n})\n\nexport interface MatchRouteOptions {\n pending?: boolean\n caseSensitive?: boolean\n includeSearch?: boolean\n fuzzy?: boolean\n}\n\nexport type UseMatchRouteOptions<\n TRouteTree extends AnyRoute = RegisteredRouter['routeTree'],\n TFrom extends RoutePaths<TRouteTree> = '/',\n TTo extends string = '',\n TMaskFrom extends RoutePaths<TRouteTree> = '/',\n TMaskTo extends string = '',\n> = ToOptions<TRouteTree, TFrom, TTo, TMaskFrom, TMaskTo> & MatchRouteOptions\n\nexport function useMatchRoute<\n TRouteTree extends AnyRoute = RegisteredRouter['routeTree'],\n>() {\n useRouterState({ select: (s) => [s.location, s.resolvedLocation] })\n const { matchRoute } = useRouter()\n\n return React.useCallback(\n <\n TFrom extends RoutePaths<TRouteTree> = '/',\n TTo extends string = '',\n TMaskFrom extends RoutePaths<TRouteTree> = '/',\n TMaskTo extends string = '',\n TResolved extends string = ResolveRelativePath<TFrom, NoInfer<TTo>>,\n >(\n opts: UseMatchRouteOptions<TRouteTree, TFrom, TTo, TMaskFrom, TMaskTo>,\n ): false | RouteById<TRouteTree, TResolved>['types']['allParams'] => {\n const { pending, caseSensitive, fuzzy, includeSearch, ...rest } = opts\n\n return matchRoute(rest as any, {\n pending,\n caseSensitive,\n fuzzy,\n includeSearch,\n })\n },\n [],\n )\n}\n\nexport type MakeMatchRouteOptions<\n TRouteTree extends AnyRoute = RegisteredRouter['routeTree'],\n TFrom extends RoutePaths<TRouteTree> = '/',\n TTo extends string = '',\n TMaskFrom extends RoutePaths<TRouteTree> = '/',\n TMaskTo extends string = '',\n> = ToOptions<TRouteTree, TFrom, TTo, TMaskFrom, TMaskTo> &\n MatchRouteOptions & {\n // If a function is passed as a child, it will be given the `isActive` boolean to aid in further styling on the element it returns\n children?:\n | ((\n params?: RouteByPath<\n TRouteTree,\n ResolveRelativePath<TFrom, NoInfer<TTo>>\n >['types']['allParams'],\n ) => ReactNode)\n | React.ReactNode\n }\n\nexport function MatchRoute<\n TRouteTree extends AnyRoute = RegisteredRouter['routeTree'],\n TFrom extends RoutePaths<TRouteTree> = '/',\n TTo extends string = '',\n TMaskFrom extends RoutePaths<TRouteTree> = '/',\n TMaskTo extends string = '',\n>(\n props: MakeMatchRouteOptions<TRouteTree, TFrom, TTo, TMaskFrom, TMaskTo>,\n): any {\n const matchRoute = useMatchRoute()\n const params = matchRoute(props as any)\n\n if (typeof props.children === 'function') {\n return (props.children as any)(params)\n }\n\n return !!params ? props.children : null\n}\n\nexport function getRenderedMatches(state: RouterState) {\n return state.pendingMatches?.some((d) => d.showPending)\n ? state.pendingMatches\n : state.matches\n}\n\nexport function useMatch<\n TRouteTree extends AnyRoute = RegisteredRouter['routeTree'],\n TFrom extends RouteIds<TRouteTree> = RouteIds<TRouteTree>,\n TRouteMatchState = RouteMatch<TRouteTree, TFrom>,\n TSelected = TRouteMatchState,\n>(\n opts: StrictOrFrom<TFrom> & {\n select?: (match: TRouteMatchState) => TSelected\n },\n): TSelected {\n const router = useRouter()\n const nearestMatchId = React.useContext(matchContext)\n\n const nearestMatchRouteId = getRenderedMatches(router.state).find(\n (d) => d.id === nearestMatchId,\n )?.routeId\n\n const matchRouteId = (() => {\n const matches = getRenderedMatches(router.state)\n const match = opts?.from\n ? matches.find((d) => d.routeId === opts?.from)\n : matches.find((d) => d.id === nearestMatchId)\n return match!.routeId\n })()\n\n if (opts?.strict ?? true) {\n invariant(\n nearestMatchRouteId == matchRouteId,\n `useMatch(\"${\n matchRouteId as string\n }\") is being called in a component that is meant to render the '${nearestMatchRouteId}' route. Did you mean to 'useMatch(\"${\n matchRouteId as string\n }\", { strict: false })' or 'useRoute(\"${\n matchRouteId as string\n }\")' instead?`,\n )\n }\n\n const matchSelection = useRouterState({\n select: (state) => {\n const match = getRenderedMatches(state).find(\n (d) => d.id === nearestMatchId,\n )\n\n invariant(\n match,\n `Could not find ${\n opts?.from\n ? `an active match from \"${opts.from}\"`\n : 'a nearest match!'\n }`,\n )\n\n return opts?.select ? opts.select(match as any) : match\n },\n })\n\n return matchSelection as any\n}\n\nexport function useMatches<T = RouteMatch[]>(opts?: {\n select?: (matches: RouteMatch[]) => T\n}): T {\n return useRouterState({\n select: (state) => {\n let matches = getRenderedMatches(state)\n return opts?.select ? opts.select(matches) : (matches as T)\n },\n })\n}\n\nexport function useParentMatches<T = RouteMatch[]>(opts?: {\n select?: (matches: RouteMatch[]) => T\n}): T {\n const contextMatchId = React.useContext(matchContext)\n\n return useMatches({\n select: (matches) => {\n matches = matches.slice(matches.findIndex((d) => d.id === contextMatchId))\n return opts?.select ? opts.select(matches) : (matches as T)\n },\n })\n}\n\nexport function useLoaderDeps<\n TRouteTree extends AnyRoute = RegisteredRouter['routeTree'],\n TFrom extends RouteIds<TRouteTree> = RouteIds<TRouteTree>,\n TRouteMatch extends RouteMatch<TRouteTree, TFrom> = RouteMatch<\n TRouteTree,\n TFrom\n >,\n TSelected = Required<TRouteMatch>['loaderDeps'],\n>(\n opts: StrictOrFrom<TFrom> & {\n select?: (match: TRouteMatch) => TSelected\n },\n): TSelected {\n return useMatch({\n ...opts,\n select: (s) => {\n return typeof opts.select === 'function'\n ? opts.select(s?.loaderDeps)\n : s?.loaderDeps\n },\n })\n}\n\nexport function useLoaderData<\n TRouteTree extends AnyRoute = RegisteredRouter['routeTree'],\n TFrom extends RouteIds<TRouteTree> = RouteIds<TRouteTree>,\n TRouteMatch extends RouteMatch<TRouteTree, TFrom> = RouteMatch<\n TRouteTree,\n TFrom\n >,\n TSelected = Required<TRouteMatch>['loaderData'],\n>(\n opts: StrictOrFrom<TFrom> & {\n select?: (match: TRouteMatch) => TSelected\n },\n): TSelected {\n return useMatch({\n ...opts,\n select: (s) => {\n return typeof opts.select === 'function'\n ? opts.select(s?.loaderData)\n : s?.loaderData\n },\n })\n}\n\nexport function isServerSideError(error: unknown): error is {\n __isServerError: true\n data: Record<string, any>\n} {\n if (!(typeof error === 'object' && error && 'data' in error)) return false\n if (!('__isServerError' in error && error.__isServerError)) return false\n if (!(typeof error.data === 'object' && error.data)) return false\n\n return error.__isServerError === true\n}\n\nexport function defaultDeserializeError(serializedData: Record<string, any>) {\n if ('name' in serializedData && 'message' in serializedData) {\n const error = new Error(serializedData.message)\n error.name = serializedData.name\n return error\n }\n\n return serializedData.data\n}\n"],"names":["matchContext","React","createContext","undefined","Matches","router","useRouter","matchId","useRouterState","select","s","getRenderedMatches","id","createElement","Provider","value","CatchBoundary","getResetKey","state","resolvedLocation","key","errorComponent","ErrorComponent","onCatch","warning","Match","SafeFragment","props","Fragment","children","routeId","find","d","invariant","route","routesById","PendingComponent","options","pendingComponent","defaultPendingComponent","pendingElement","routeErrorComponent","defaultErrorComponent","ResolvedSuspenseBoundary","wrapInSuspense","component","preload","Suspense","ResolvedCatchBoundary","fallback","MatchInner","match","pick","status","isServerSideError","error","deserializeError","errorSerializer","deserialize","defaultDeserializeError","data","showPending","loadPromise","Comp","defaultComponent","Outlet","memo","useContext","childMatchId","matches","index","findIndex","useMatchRoute","location","matchRoute","useCallback","opts","pending","caseSensitive","fuzzy","includeSearch","rest","MatchRoute","params","pendingMatches","some","useMatch","nearestMatchId","nearestMatchRouteId","matchRouteId","from","strict","matchSelection","useMatches","useParentMatches","contextMatchId","slice","useLoaderDeps","loaderDeps","useLoaderData","loaderData","__isServerError","serializedData","Error","message","name"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"RouterProvider.js","sources":["../../src/RouterProvider.tsx"],"sourcesContent":["import * as React from 'react'\nimport { Matches } from './Matches'\nimport { NavigateOptions, ToOptions } from './link'\nimport { ParsedLocation } from './location'\nimport { AnyRoute } from './route'\nimport { RoutePaths } from './routeInfo'\nimport { RegisteredRouter, Router, RouterOptions, RouterState } from './router'\nimport { pick, useLayoutEffect } from './utils'\n\nimport { RouteMatch } from './Matches'\nimport { useRouter } from './useRouter'\nimport { useRouterState } from './useRouterState'\nimport { routerContext } from './routerContext'\n\nconst useTransition =\n React.useTransition ||\n (() => [\n false,\n (cb) => {\n cb()\n },\n ])\n\nexport interface CommitLocationOptions {\n replace?: boolean\n resetScroll?: boolean\n startTransition?: boolean\n}\n\nexport interface MatchLocation {\n to?: string | number | null\n fuzzy?: boolean\n caseSensitive?: boolean\n from?: string\n}\n\nexport type NavigateFn<TRouteTree extends AnyRoute> = <\n TFrom extends RoutePaths<TRouteTree> | string = string,\n TTo extends string = '',\n TMaskFrom extends RoutePaths<TRouteTree> | string = TFrom,\n TMaskTo extends string = '',\n>(\n opts: NavigateOptions<TRouteTree, TFrom, TTo, TMaskFrom, TMaskTo>,\n) => Promise<void>\n\nexport type BuildLocationFn<TRouteTree extends AnyRoute> = (\n opts: ToOptions<TRouteTree>,\n) => ParsedLocation\n\nexport type InjectedHtmlEntry = string | (() => Promise<string> | string)\n\nexport function RouterProvider<\n TRouteTree extends AnyRoute = RegisteredRouter['routeTree'],\n TDehydrated extends Record<string, any> = Record<string, any>,\n>({ router, ...rest }: RouterProps<TRouteTree, TDehydrated>) {\n // Allow the router to update options on the router instance\n router.update({\n ...router.options,\n ...rest,\n context: {\n ...router.options.context,\n ...rest?.context,\n },\n } as any)\n\n const matches = router.options.InnerWrap ? (\n <router.options.InnerWrap>\n <Matches />\n </router.options.InnerWrap>\n ) : (\n <Matches />\n )\n\n const provider = (\n <routerContext.Provider value={router}>\n {matches}\n <Transitioner />\n </routerContext.Provider>\n )\n\n if (router.options.Wrap) {\n return <router.options.Wrap>{provider}</router.options.Wrap>\n }\n\n return provider\n}\n\nfunction Transitioner() {\n const mountLoadCount = React.useRef(0)\n const router = useRouter()\n const routerState = useRouterState({\n select: (s) =>\n pick(s, ['isLoading', 'location', 'resolvedLocation', 'isTransitioning']),\n })\n\n const [isTransitioning, startReactTransition] = useTransition()\n\n router.startReactTransition = startReactTransition\n\n React.useEffect(() => {\n if (isTransitioning) {\n router.__store.setState((s) => ({\n ...s,\n isTransitioning,\n }))\n }\n }, [isTransitioning])\n\n const tryLoad = () => {\n const apply = (cb: () => void) => {\n if (!routerState.isTransitioning) {\n startReactTransition(() => cb())\n } else {\n cb()\n }\n }\n\n apply(() => {\n try {\n router.load()\n } catch (err) {\n console.error(err)\n }\n })\n }\n\n useLayoutEffect(() => {\n const unsub = router.history.subscribe(() => {\n router.latestLocation = router.parseLocation(router.latestLocation)\n if (routerState.location !== router.latestLocation) {\n tryLoad()\n }\n })\n\n const nextLocation = router.buildLocation({\n search: true,\n params: true,\n hash: true,\n state: true,\n })\n\n if (routerState.location.href !== nextLocation.href) {\n router.commitLocation({ ...nextLocation, replace: true })\n }\n\n return () => {\n unsub()\n }\n }, [router.history])\n\n useLayoutEffect(() => {\n if (\n (React.useTransition as any)\n ? routerState.isTransitioning && !isTransitioning\n : true &&\n !routerState.isLoading &&\n routerState.resolvedLocation !== routerState.location\n ) {\n router.emit({\n type: 'onResolved',\n fromLocation: routerState.resolvedLocation,\n toLocation: routerState.location,\n pathChanged:\n routerState.location!.href !== routerState.resolvedLocation?.href,\n })\n\n if ((document as any).querySelector) {\n if (routerState.location.hash !== '') {\n const el = document.getElementById(\n routerState.location.hash,\n ) as HTMLElement | null\n if (el) {\n el.scrollIntoView()\n }\n }\n }\n\n router.__store.setState((s) => ({\n ...s,\n isTransitioning: false,\n resolvedLocation: s.location,\n }))\n }\n }, [\n routerState.isTransitioning,\n isTransitioning,\n routerState.isLoading,\n routerState.resolvedLocation,\n routerState.location,\n ])\n\n useLayoutEffect(() => {\n if (!window.__TSR_DEHYDRATED__ && !mountLoadCount.current) {\n mountLoadCount.current++\n tryLoad()\n }\n }, [])\n\n return null\n}\n\nexport function getRouteMatch<TRouteTree extends AnyRoute>(\n state: RouterState<TRouteTree>,\n id: string,\n): undefined | RouteMatch<TRouteTree> {\n return [\n ...state.cachedMatches,\n ...(state.pendingMatches ?? []),\n ...state.matches,\n ].find((d) => d.id === id)\n}\n\nexport type RouterProps<\n TRouteTree extends AnyRoute = RegisteredRouter['routeTree'],\n TDehydrated extends Record<string, any> = Record<string, any>,\n> = Omit<RouterOptions<TRouteTree, TDehydrated>, 'context'> & {\n router: Router<TRouteTree>\n context?: Partial<RouterOptions<TRouteTree, TDehydrated>['context']>\n}\n"],"names":["useTransition","React","cb","RouterProvider","router","rest","update","options","context","matches","InnerWrap","createElement","Matches","provider","routerContext","Provider","value","Transitioner","Wrap","mountLoadCount","useRef","useRouter","routerState","useRouterState","select","s","pick","isTransitioning","startReactTransition","useEffect","__store","setState","tryLoad","apply","load","err","console","error","useLayoutEffect","unsub","history","subscribe","latestLocation","parseLocation","location","nextLocation","buildLocation","search","params","hash","state","href","commitLocation","replace","isLoading","resolvedLocation","emit","type","fromLocation","toLocation","pathChanged","document","querySelector","el","getElementById","scrollIntoView","window","__TSR_DEHYDRATED__","current","getRouteMatch","id","cachedMatches","pendingMatches","find","d"],"mappings":"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"}
@@ -1,29 +0,0 @@
1
- /**
2
- * @tanstack/react-router/src/index.tsx
3
- *
4
- * Copyright (c) TanStack
5
- *
6
- * This source code is licensed under the MIT license found in the
7
- * LICENSE.md file in the root directory of this source tree.
8
- *
9
- * @license MIT
10
- */
11
- 'use strict';
12
-
13
- function _extends() {
14
- _extends = Object.assign ? Object.assign.bind() : function (target) {
15
- for (var i = 1; i < arguments.length; i++) {
16
- var source = arguments[i];
17
- for (var key in source) {
18
- if (Object.prototype.hasOwnProperty.call(source, key)) {
19
- target[key] = source[key];
20
- }
21
- }
22
- }
23
- return target;
24
- };
25
- return _extends.apply(this, arguments);
26
- }
27
-
28
- exports.extends = _extends;
29
- //# sourceMappingURL=_rollupPluginBabelHelpers.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"_rollupPluginBabelHelpers.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}