@tanstack/react-router 0.0.1-alpha.0

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.
@@ -0,0 +1,335 @@
1
+ /**
2
+ * react-location
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
+ Object.defineProperty(exports, '__esModule', { value: true });
14
+
15
+ var _rollupPluginBabelHelpers = require('../_virtual/_rollupPluginBabelHelpers.js');
16
+ var React = require('react');
17
+ var shim = require('use-sync-external-store/shim');
18
+ var index = require('../node_modules/@tanstack/location-core/build/esm/index.js');
19
+
20
+ function _interopNamespace(e) {
21
+ if (e && e.__esModule) return 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__*/_interopNamespace(React);
39
+
40
+ const _excluded = ["children", "locationManager", "__experimental__snapshot"],
41
+ _excluded2 = ["children", "pending", "caseSensitive"],
42
+ _excluded3 = ["to", "children", "_ref", "disabled", "target", "search", "hash", "replace", "getActiveProps", "getInactiveProps", "activeOptions", "preload", "preloadMaxAge", "style", "className"];
43
+ //
44
+ const locationManagerContext = /*#__PURE__*/React__namespace.createContext(null);
45
+ const MatchesContext = /*#__PURE__*/React__namespace.createContext(null);
46
+ const routerContext = /*#__PURE__*/React__namespace.createContext(null); // Detect if we're in the DOM
47
+
48
+ const isDOM = Boolean(typeof window !== 'undefined' && window.document && window.document.createElement);
49
+ const useLayoutEffect = isDOM ? React__namespace.useLayoutEffect : React__namespace.useEffect;
50
+ function MatchesProvider(props) {
51
+ return /*#__PURE__*/React__namespace.createElement(MatchesContext.Provider, props);
52
+ }
53
+ function Router(_ref2) {
54
+ let {
55
+ children,
56
+ locationManager,
57
+ __experimental__snapshot
58
+ } = _ref2,
59
+ rest = _rollupPluginBabelHelpers.objectWithoutPropertiesLoose(_ref2, _excluded);
60
+
61
+ const [router] = React__namespace.useState(() => new index.RouterInstance({
62
+ locationManager,
63
+ __experimental__snapshot
64
+ }));
65
+ router.update(rest);
66
+ useLayoutEffect(() => {
67
+ router.mount();
68
+ }, []);
69
+ shim.useSyncExternalStore(cb => router.subscribe(() => cb()), () => router.state);
70
+ console.log(router.state);
71
+ return /*#__PURE__*/React__namespace.createElement(locationManagerContext.Provider, {
72
+ value: {
73
+ locationManager
74
+ }
75
+ }, /*#__PURE__*/React__namespace.createElement(routerContext.Provider, {
76
+ value: {
77
+ router
78
+ }
79
+ }, /*#__PURE__*/React__namespace.createElement(MatchesProvider, {
80
+ value: [router.rootMatch, ...router.state.current.matches]
81
+ }, children != null ? children : /*#__PURE__*/React__namespace.createElement(Outlet, null))));
82
+ }
83
+ function useLocationManager() {
84
+ const context = React__namespace.useContext(locationManagerContext);
85
+ index.warning(!!context, 'useLocationManager must be used within a <LocationManager />');
86
+ return context.locationManager;
87
+ }
88
+ function useRouter() {
89
+ const value = React__namespace.useContext(routerContext);
90
+ index.warning(value, 'You are trying to use useRouter() outside of LocationManager!');
91
+ return value.router;
92
+ }
93
+
94
+ function useLatestCallback(cb) {
95
+ const stableFnRef = React__namespace.useRef();
96
+ const cbRef = React__namespace.useRef(cb);
97
+ cbRef.current = cb;
98
+
99
+ if (!stableFnRef.current) {
100
+ stableFnRef.current = function () {
101
+ return cbRef.current(...arguments);
102
+ };
103
+ }
104
+
105
+ return stableFnRef.current;
106
+ }
107
+
108
+ function useMatches() {
109
+ return React__namespace.useContext(MatchesContext);
110
+ }
111
+ function DefaultErrorBoundary() {
112
+ const match = useMatch();
113
+ const preStyle = {
114
+ whiteSpace: 'normal',
115
+ display: 'inline-block',
116
+ background: 'rgba(0,0,0,.1)',
117
+ padding: '.1rem .2rem',
118
+ margin: '.1rem',
119
+ lineHeight: '1',
120
+ borderRadius: '.25rem'
121
+ };
122
+ return /*#__PURE__*/React__namespace.createElement("div", {
123
+ style: {
124
+ lineHeight: '1.7'
125
+ }
126
+ }, /*#__PURE__*/React__namespace.createElement("strong", null, "The following error occured in the loader for you route at:", ' ', /*#__PURE__*/React__namespace.createElement("pre", {
127
+ style: preStyle
128
+ }, match.pathname)), ".", /*#__PURE__*/React__namespace.createElement("br", null), /*#__PURE__*/React__namespace.createElement("pre", {
129
+ style: _rollupPluginBabelHelpers["extends"]({}, preStyle, {
130
+ display: 'block',
131
+ padding: '.5rem',
132
+ borderRadius: '.5rem'
133
+ })
134
+ }, match.error.toString()), /*#__PURE__*/React__namespace.createElement("br", null), "Your users won't see this message in production, but they will see", ' ', /*#__PURE__*/React__namespace.createElement("strong", null, "\"An unknown error occured!\""), ", which is at least better than breaking your entire app. \uD83D\uDE0A For a better UX, please specify an", ' ', /*#__PURE__*/React__namespace.createElement("pre", {
135
+ style: preStyle
136
+ }, "errorElement"), " for all of your routes that contain asynchronous behavior, or at least provide your own", /*#__PURE__*/React__namespace.createElement("pre", {
137
+ style: preStyle
138
+ }, "ErrorBoundary"), " wrapper around your renders to both the elements rendered by", ' ', /*#__PURE__*/React__namespace.createElement("pre", {
139
+ style: preStyle
140
+ }, 'useRoutes(routes, { useErrorBoundary: true })'), ' ', "and ", /*#__PURE__*/React__namespace.createElement("pre", {
141
+ style: preStyle
142
+ }, '<Router useErrorBoundary />'), ". ", /*#__PURE__*/React__namespace.createElement("br", null), /*#__PURE__*/React__namespace.createElement("br", null));
143
+ }
144
+ function usePrompt(message, when) {
145
+ const location = useLocationManager();
146
+ React__namespace.useEffect(() => {
147
+ if (!when) return;
148
+ let unblock = location.history.block(transition => {
149
+ if (window.confirm(message)) {
150
+ unblock();
151
+ transition.retry();
152
+ } else {
153
+ location.current.pathname = window.location.pathname;
154
+ }
155
+ });
156
+ return unblock;
157
+ }, [when, location, message]);
158
+ }
159
+ function MatchRoute(_ref3) {
160
+ let {
161
+ children,
162
+ pending,
163
+ caseSensitive
164
+ } = _ref3,
165
+ rest = _rollupPluginBabelHelpers.objectWithoutPropertiesLoose(_ref3, _excluded2);
166
+
167
+ const matchRoute = useMatchRoute();
168
+ const match = matchRoute(rest, {
169
+ pending,
170
+ caseSensitive
171
+ });
172
+
173
+ if (typeof children === 'function') {
174
+ return children(match);
175
+ }
176
+
177
+ return match ? children : null;
178
+ }
179
+ function Prompt(_ref4) {
180
+ let {
181
+ message,
182
+ when,
183
+ children
184
+ } = _ref4;
185
+ usePrompt(message, when != null ? when : true);
186
+ return children != null ? children : null;
187
+ }
188
+ function useLoadRoute() {
189
+ const match = useMatch();
190
+ const router = useRouter();
191
+ return useLatestCallback(async (navigate, opts) => router.loadRoute(navigate, opts, match.pathname));
192
+ }
193
+ function useParentMatches() {
194
+ const router = useRouter();
195
+ const match = useMatch();
196
+ const matches = router.state.current.matches;
197
+ return matches.slice(0, matches.findIndex(d => d.id === match.id) - 1);
198
+ }
199
+ function useMatch() {
200
+ var _useMatches;
201
+
202
+ return (_useMatches = useMatches()) == null ? void 0 : _useMatches[0];
203
+ }
204
+ function useNavigate() {
205
+ const router = useRouter();
206
+ const match = useMatch();
207
+ return useLatestCallback(options => {
208
+ router.navigate(options, match.pathname);
209
+ });
210
+ }
211
+ function Navigate(options) {
212
+ let navigate = useNavigate();
213
+ useLayoutEffect(() => {
214
+ navigate(options);
215
+ }, [navigate]);
216
+ return null;
217
+ }
218
+ function Outlet() {
219
+ var _router$getOutletElem;
220
+
221
+ const router = useRouter();
222
+ const [_, ...matches] = useMatches();
223
+ if (!matches.length) return null;
224
+ let element = (_router$getOutletElem = router.getOutletElement(matches)) != null ? _router$getOutletElem : /*#__PURE__*/React__namespace.createElement(Outlet, null);
225
+ return /*#__PURE__*/React__namespace.createElement(MatchesProvider, {
226
+ value: matches
227
+ }, element);
228
+ }
229
+ function useResolvePath() {
230
+ const router = useRouter();
231
+ const match = useMatch();
232
+ return useLatestCallback(path => router.resolvePath(match, path));
233
+ }
234
+ function useSearch() {
235
+ const location = useLocationManager();
236
+ return location.current.search;
237
+ }
238
+ function useMatchRoute() {
239
+ const router = useRouter();
240
+ const match = useMatch();
241
+ return useLatestCallback((matchLocation, opts) => router.matchRoute(matchLocation, opts, match));
242
+ }
243
+ function useLink(opts) {
244
+ const router = useRouter();
245
+ const match = useMatch();
246
+ return router.buildLinkInfo(opts, match.pathname);
247
+ }
248
+ function Link(props) {
249
+ const linkUtils = useLink(props);
250
+
251
+ const {
252
+ to,
253
+ children,
254
+ _ref,
255
+ disabled,
256
+ target,
257
+ style,
258
+ className
259
+ } = props,
260
+ rest = _rollupPluginBabelHelpers.objectWithoutPropertiesLoose(props, _excluded3);
261
+
262
+ if (!linkUtils) {
263
+ return /*#__PURE__*/React__namespace.createElement("a", _rollupPluginBabelHelpers["extends"]({
264
+ href: to
265
+ }, rest), typeof children === 'function' ? children({
266
+ isActive: false
267
+ }) : children);
268
+ }
269
+
270
+ const {
271
+ next,
272
+ activeProps,
273
+ handleClick,
274
+ handleMouseEnter,
275
+ inactiveProps,
276
+ isActive
277
+ } = linkUtils;
278
+ return /*#__PURE__*/React__namespace.createElement("a", _rollupPluginBabelHelpers["extends"]({}, activeProps, inactiveProps, rest, {
279
+ ref: _ref,
280
+ href: disabled ? undefined : next.href,
281
+ onClick: handleClick,
282
+ onMouseEnter: handleMouseEnter,
283
+ target,
284
+ style: _rollupPluginBabelHelpers["extends"]({}, style, activeProps.style, inactiveProps.style),
285
+ className: [className, activeProps.className, inactiveProps.className].filter(Boolean).join(' ') || undefined
286
+ }, disabled ? {
287
+ role: 'link',
288
+ 'aria-disabled': true
289
+ } : undefined, {
290
+ children: typeof children === 'function' ? children({
291
+ isActive
292
+ }) : children
293
+ }));
294
+ }
295
+
296
+ exports.LocationManager = index.LocationManager;
297
+ exports.MatchLoader = index.MatchLoader;
298
+ exports.RouteMatch = index.RouteMatch;
299
+ exports.RouterInstance = index.RouterInstance;
300
+ exports.cleanPath = index.cleanPath;
301
+ exports.createBrowserHistory = index.createBrowserHistory;
302
+ exports.createHashHistory = index.createHashHistory;
303
+ exports.createMemoryHistory = index.createMemoryHistory;
304
+ exports.defaultParseSearch = index.defaultParseSearch;
305
+ exports.defaultStringifySearch = index.defaultStringifySearch;
306
+ exports.functionalUpdate = index.functionalUpdate;
307
+ exports.matchByPath = index.matchByPath;
308
+ exports.matchRoute = index.matchRoute;
309
+ exports.matchRoutes = index.matchRoutes;
310
+ exports.parsePathname = index.parsePathname;
311
+ exports.parseSearchWith = index.parseSearchWith;
312
+ exports.resolvePath = index.resolvePath;
313
+ exports.stringifySearchWith = index.stringifySearchWith;
314
+ exports.warning = index.warning;
315
+ exports.DefaultErrorBoundary = DefaultErrorBoundary;
316
+ exports.Link = Link;
317
+ exports.MatchRoute = MatchRoute;
318
+ exports.MatchesProvider = MatchesProvider;
319
+ exports.Navigate = Navigate;
320
+ exports.Outlet = Outlet;
321
+ exports.Prompt = Prompt;
322
+ exports.Router = Router;
323
+ exports.useLink = useLink;
324
+ exports.useLoadRoute = useLoadRoute;
325
+ exports.useLocationManager = useLocationManager;
326
+ exports.useMatch = useMatch;
327
+ exports.useMatchRoute = useMatchRoute;
328
+ exports.useMatches = useMatches;
329
+ exports.useNavigate = useNavigate;
330
+ exports.useParentMatches = useParentMatches;
331
+ exports.usePrompt = usePrompt;
332
+ exports.useResolvePath = useResolvePath;
333
+ exports.useRouter = useRouter;
334
+ exports.useSearch = useSearch;
335
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../src/index.tsx"],"sourcesContent":["import * as React from 'react'\n\nimport { useSyncExternalStore } from 'use-sync-external-store/shim'\n\nimport {\n warning,\n LocationManager,\n RouterInstance,\n RouterOptions,\n RouteMatch,\n RouteParams,\n NavigateOptions,\n MatchLocation,\n MatchRouteOptions,\n LinkOptions,\n} from '@tanstack/location-core'\n\nexport * from '@tanstack/location-core'\n\ndeclare module '@tanstack/location-core' {\n interface FrameworkGenerics<TData = unknown> {\n Element: React.ReactNode\n AsyncElement: (opts: {\n params: Record<string, string>\n }) => Promise<React.ReactNode>\n SyncOrAsyncElement:\n | React.ReactNode\n | FrameworkGenerics<TData>['AsyncElement']\n LinkProps: React.HTMLAttributes<unknown>\n }\n}\n\nexport type PromptProps = {\n message: string\n when?: boolean | any\n children?: React.ReactNode\n}\n\n//\n\nconst locationManagerContext = React.createContext<{\n locationManager: LocationManager\n}>(null!)\nconst MatchesContext = React.createContext<RouteMatch<unknown>[]>(null!)\nconst routerContext = React.createContext<{ router: RouterInstance }>(null!)\n\n// Detect if we're in the DOM\nconst isDOM = Boolean(\n typeof window !== 'undefined' &&\n window.document &&\n window.document.createElement,\n)\n\nconst useLayoutEffect = isDOM ? React.useLayoutEffect : React.useEffect\n\nexport type MatchesProviderProps = {\n value: RouteMatch<unknown>[]\n children: React.ReactNode\n}\n\nexport function MatchesProvider(props: MatchesProviderProps) {\n return <MatchesContext.Provider {...props} />\n}\n\nexport type RouterProps = {\n // Children will default to `<Outlet />` if not provided\n children?: React.ReactNode\n locationManager: LocationManager\n} & RouterOptions\n\nexport function Router({\n children,\n locationManager,\n __experimental__snapshot,\n ...rest\n}: RouterProps) {\n const [router] = React.useState(\n () =>\n new RouterInstance({\n locationManager,\n __experimental__snapshot,\n }),\n )\n\n router.update(rest)\n\n useLayoutEffect(() => {\n router.mount()\n }, [])\n\n useSyncExternalStore(\n (cb) => router.subscribe(() => cb()),\n () => router.state,\n )\n\n console.log(router.state)\n\n return (\n <locationManagerContext.Provider value={{ locationManager }}>\n <routerContext.Provider value={{ router }}>\n <MatchesProvider\n value={[\n router.rootMatch as RouteMatch<unknown>,\n ...router.state.current.matches,\n ]}\n >\n {children ?? <Outlet />}\n </MatchesProvider>\n </routerContext.Provider>\n </locationManagerContext.Provider>\n )\n}\n\nexport function useLocationManager(): LocationManager {\n const context = React.useContext(locationManagerContext)\n\n warning(\n !!context,\n 'useLocationManager must be used within a <LocationManager />',\n )\n\n return context.locationManager\n}\n\nexport function useRouter(): RouterInstance {\n const value = React.useContext(routerContext)\n\n warning(\n value,\n 'You are trying to use useRouter() outside of LocationManager!',\n )\n\n return value.router as RouterInstance\n}\n\nfunction useLatestCallback<TCallback extends (...args: any[]) => any>(\n cb: TCallback,\n) {\n const stableFnRef =\n React.useRef<(...args: Parameters<TCallback>) => ReturnType<TCallback>>()\n const cbRef = React.useRef<TCallback>(cb)\n\n cbRef.current = cb\n\n if (!stableFnRef.current) {\n stableFnRef.current = (...args) => cbRef.current(...args)\n }\n\n return stableFnRef.current\n}\n\nfunction useGetIsMounted() {\n const ref = React.useRef(false)\n\n React.useEffect(() => {\n ref.current = true\n\n return () => {\n ref.current = false\n }\n })\n\n return () => ref.current\n}\n\nexport function useMatches(): RouteMatch<unknown>[] {\n return React.useContext(MatchesContext)\n}\n\nexport function DefaultErrorBoundary() {\n const match = useMatch()\n\n const preStyle: React.HTMLAttributes<HTMLPreElement>['style'] = {\n whiteSpace: 'normal',\n display: 'inline-block',\n background: 'rgba(0,0,0,.1)',\n padding: '.1rem .2rem',\n margin: '.1rem',\n lineHeight: '1',\n borderRadius: '.25rem',\n }\n\n return (\n <div style={{ lineHeight: '1.7' }}>\n <strong>\n The following error occured in the loader for you route at:{' '}\n <pre style={preStyle}>{match.pathname}</pre>\n </strong>\n .\n <br />\n <pre\n style={{\n ...preStyle,\n display: 'block',\n padding: '.5rem',\n borderRadius: '.5rem',\n }}\n >\n {(match.error as any).toString()}\n </pre>\n <br />\n Your users won't see this message in production, but they will see{' '}\n <strong>\"An unknown error occured!\"</strong>, which is at least better\n than breaking your entire app. 😊 For a better UX, please specify an{' '}\n <pre style={preStyle}>errorElement</pre> for all of your routes that\n contain asynchronous behavior, or at least provide your own\n <pre style={preStyle}>ErrorBoundary</pre> wrapper around your renders to\n both the elements rendered by{' '}\n <pre style={preStyle}>\n {'useRoutes(routes, { useErrorBoundary: true })'}\n </pre>{' '}\n and <pre style={preStyle}>{'<Router useErrorBoundary />'}</pre>. <br />\n <br />\n </div>\n )\n}\n\nexport function usePrompt(message: string, when: boolean | any): void {\n const location = useLocationManager()\n\n React.useEffect(() => {\n if (!when) return\n\n let unblock = location.history.block((transition) => {\n if (window.confirm(message)) {\n unblock()\n transition.retry()\n } else {\n location.current.pathname = window.location.pathname\n }\n })\n\n return unblock\n }, [when, location, message])\n}\n\nexport function MatchRoute({\n children,\n pending,\n caseSensitive,\n ...rest\n}: {\n children: React.ReactNode | ((routeParams?: RouteParams) => React.ReactNode)\n} & MatchLocation &\n MatchRouteOptions): JSX.Element {\n const matchRoute = useMatchRoute()\n const match = matchRoute(rest, { pending, caseSensitive })\n\n if (typeof children === 'function') {\n return children(match as any) as JSX.Element\n }\n\n return (match ? children : null) as JSX.Element\n}\n\nexport function Prompt({ message, when, children }: PromptProps) {\n usePrompt(message, when ?? true)\n return (children ?? null) as React.ReactNode\n}\n\nexport function useLoadRoute() {\n const match = useMatch()\n const router = useRouter()\n\n return useLatestCallback(\n async (navigate: NavigateOptions, opts?: { maxAge?: number }) =>\n router.loadRoute(navigate, opts, match.pathname),\n )\n}\n\nexport function useParentMatches(): RouteMatch<unknown>[] {\n const router = useRouter()\n const match = useMatch()\n const matches = router.state.current.matches\n return matches.slice(0, matches.findIndex((d) => d.id === match.id) - 1)\n}\n\nexport function useMatch<T>(): RouteMatch<T> {\n return useMatches()?.[0] as RouteMatch<T>\n}\n\nexport function useNavigate() {\n const router = useRouter()\n const match = useMatch()\n\n return useLatestCallback((options: NavigateOptions) => {\n router.navigate(options, match.pathname)\n })\n}\n\nexport function Navigate(options: NavigateOptions) {\n let navigate = useNavigate()\n\n useLayoutEffect(() => {\n navigate(options)\n }, [navigate])\n\n return null\n}\n\nexport function Outlet() {\n const router = useRouter()\n const [_, ...matches] = useMatches()\n\n if (!matches.length) return null\n\n let element = router.getOutletElement(matches) ?? <Outlet />\n return <MatchesProvider value={matches}>{element}</MatchesProvider>\n}\n\nexport function useResolvePath() {\n const router = useRouter()\n const match = useMatch()\n return useLatestCallback((path: string) => router.resolvePath(match, path))\n}\n\nexport function useSearch() {\n const location = useLocationManager()\n return location.current.search\n}\n\nexport function useMatchRoute() {\n const router = useRouter()\n const match = useMatch()\n\n return useLatestCallback(\n (matchLocation: MatchLocation, opts?: MatchRouteOptions) =>\n router.matchRoute(matchLocation, opts, match),\n )\n}\n\nexport type LinkProps = LinkOptions &\n Omit<\n React.AnchorHTMLAttributes<HTMLAnchorElement>,\n 'href' | 'children' | keyof LinkOptions\n > & {\n // A custom ref prop because of this: https://stackoverflow.com/questions/58469229/react-with-typescript-generics-while-using-react-forwardref/58473012\n _ref?: React.Ref<HTMLAnchorElement>\n // If a function is passed as a child, it will be given the `isActive` boolean to aid in further styling on the element it returns\n children?:\n | React.ReactNode\n | ((state: { isActive: boolean }) => React.ReactNode)\n }\n\nexport function useLink(opts: LinkOptions) {\n const router = useRouter()\n const match = useMatch()\n return router.buildLinkInfo(opts, match.pathname)\n}\n\nexport function Link(props: LinkProps) {\n const linkUtils = useLink(props)\n\n const {\n to,\n children,\n _ref,\n disabled,\n target,\n search,\n hash,\n replace,\n getActiveProps,\n getInactiveProps,\n activeOptions,\n preload,\n preloadMaxAge,\n style,\n className,\n ...rest\n } = props\n\n if (!linkUtils) {\n return (\n <a href={to as string} {...rest}>\n {typeof children === 'function'\n ? children({ isActive: false })\n : children}\n </a>\n )\n }\n\n const {\n next,\n activeProps,\n handleClick,\n handleMouseEnter,\n inactiveProps,\n isActive,\n } = linkUtils\n\n return (\n <a\n {...{\n ...activeProps,\n ...inactiveProps,\n ...rest,\n ref: _ref,\n href: disabled ? undefined : next.href,\n onClick: handleClick as any,\n onMouseEnter: handleMouseEnter as any,\n target,\n style: {\n ...style,\n ...activeProps.style,\n ...inactiveProps.style,\n },\n className:\n [className, activeProps.className, inactiveProps.className]\n .filter(Boolean)\n .join(' ') || undefined,\n ...(disabled\n ? {\n role: 'link',\n 'aria-disabled': true,\n }\n : undefined),\n children:\n typeof children === 'function' ? children({ isActive }) : children,\n }}\n />\n )\n}\n"],"names":["locationManagerContext","React","createContext","MatchesContext","routerContext","isDOM","Boolean","window","document","createElement","useLayoutEffect","useEffect","MatchesProvider","props","Router","children","locationManager","__experimental__snapshot","rest","_objectWithoutPropertiesLoose","router","useState","RouterInstance","update","mount","useSyncExternalStore","cb","subscribe","state","console","log","rootMatch","current","matches","useLocationManager","context","useContext","warning","useRouter","value","useLatestCallback","stableFnRef","useRef","cbRef","useMatches","DefaultErrorBoundary","match","useMatch","preStyle","whiteSpace","display","background","padding","margin","lineHeight","borderRadius","pathname","error","toString","usePrompt","message","when","location","unblock","history","block","transition","confirm","retry","MatchRoute","pending","caseSensitive","matchRoute","useMatchRoute","Prompt","useLoadRoute","navigate","opts","loadRoute","useParentMatches","slice","findIndex","d","id","useNavigate","options","Navigate","Outlet","_","length","element","getOutletElement","useResolvePath","path","resolvePath","useSearch","search","matchLocation","useLink","buildLinkInfo","Link","linkUtils","to","_ref","disabled","target","style","className","_extends","isActive","next","activeProps","handleClick","handleMouseEnter","inactiveProps","ref","href","undefined","onClick","onMouseEnter","filter","join","role"],"mappings":"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"}