@tanstack/solid-router 1.110.0 → 1.111.4

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 (207) hide show
  1. package/dist/cjs/Matches.cjs.map +1 -1
  2. package/dist/cjs/Matches.d.cts +1 -3
  3. package/dist/cjs/RouterProvider.cjs.map +1 -1
  4. package/dist/cjs/RouterProvider.d.cts +0 -25
  5. package/dist/cjs/fileRoute.cjs.map +1 -1
  6. package/dist/cjs/fileRoute.d.cts +2 -14
  7. package/dist/cjs/index.d.cts +6 -7
  8. package/dist/cjs/link.cjs.map +1 -1
  9. package/dist/cjs/link.d.cts +1 -73
  10. package/dist/cjs/not-found.cjs.map +1 -1
  11. package/dist/cjs/not-found.d.cts +1 -1
  12. package/dist/cjs/redirects.cjs.map +1 -1
  13. package/dist/cjs/redirects.d.cts +1 -3
  14. package/dist/cjs/route.cjs.map +1 -1
  15. package/dist/cjs/route.d.cts +10 -50
  16. package/dist/cjs/router.cjs.map +1 -1
  17. package/dist/cjs/router.d.cts +2 -8
  18. package/dist/cjs/typePrimitives.d.cts +2 -3
  19. package/dist/cjs/useBlocker.cjs.map +1 -1
  20. package/dist/cjs/useBlocker.d.cts +1 -1
  21. package/dist/cjs/useLoaderData.cjs.map +1 -1
  22. package/dist/cjs/useLoaderData.d.cts +1 -2
  23. package/dist/cjs/useLoaderDeps.cjs.map +1 -1
  24. package/dist/cjs/useLoaderDeps.d.cts +1 -2
  25. package/dist/cjs/useNavigate.cjs.map +1 -1
  26. package/dist/cjs/useNavigate.d.cts +1 -1
  27. package/dist/cjs/useParams.cjs.map +1 -1
  28. package/dist/cjs/useParams.d.cts +1 -2
  29. package/dist/cjs/useRouteContext.cjs.map +1 -1
  30. package/dist/cjs/useRouteContext.d.cts +1 -2
  31. package/dist/cjs/useSearch.cjs.map +1 -1
  32. package/dist/cjs/useSearch.d.cts +1 -2
  33. package/dist/cjs/utils.cjs.map +1 -1
  34. package/dist/cjs/utils.d.cts +2 -3
  35. package/dist/esm/Matches.d.ts +1 -3
  36. package/dist/esm/Matches.js.map +1 -1
  37. package/dist/esm/RouterProvider.d.ts +0 -25
  38. package/dist/esm/RouterProvider.js.map +1 -1
  39. package/dist/esm/fileRoute.d.ts +2 -14
  40. package/dist/esm/fileRoute.js.map +1 -1
  41. package/dist/esm/index.d.ts +6 -7
  42. package/dist/esm/link.d.ts +1 -73
  43. package/dist/esm/link.js.map +1 -1
  44. package/dist/esm/not-found.d.ts +1 -1
  45. package/dist/esm/not-found.js.map +1 -1
  46. package/dist/esm/redirects.d.ts +1 -3
  47. package/dist/esm/redirects.js.map +1 -1
  48. package/dist/esm/route.d.ts +10 -50
  49. package/dist/esm/route.js.map +1 -1
  50. package/dist/esm/router.d.ts +2 -8
  51. package/dist/esm/router.js.map +1 -1
  52. package/dist/esm/typePrimitives.d.ts +2 -3
  53. package/dist/esm/useBlocker.d.ts +1 -1
  54. package/dist/esm/useBlocker.js.map +1 -1
  55. package/dist/esm/useLoaderData.d.ts +1 -2
  56. package/dist/esm/useLoaderData.js.map +1 -1
  57. package/dist/esm/useLoaderDeps.d.ts +1 -2
  58. package/dist/esm/useLoaderDeps.js.map +1 -1
  59. package/dist/esm/useNavigate.d.ts +1 -1
  60. package/dist/esm/useNavigate.js.map +1 -1
  61. package/dist/esm/useParams.d.ts +1 -2
  62. package/dist/esm/useParams.js.map +1 -1
  63. package/dist/esm/useRouteContext.d.ts +1 -2
  64. package/dist/esm/useRouteContext.js.map +1 -1
  65. package/dist/esm/useSearch.d.ts +1 -2
  66. package/dist/esm/useSearch.js.map +1 -1
  67. package/dist/esm/utils.d.ts +2 -3
  68. package/dist/esm/utils.js.map +1 -1
  69. package/dist/source/Asset.d.ts +2 -0
  70. package/dist/source/Asset.jsx +22 -0
  71. package/dist/source/Asset.jsx.map +1 -0
  72. package/dist/source/CatchBoundary.d.ts +11 -0
  73. package/dist/source/CatchBoundary.jsx +43 -0
  74. package/dist/source/CatchBoundary.jsx.map +1 -0
  75. package/dist/source/HeadContent.d.ts +8 -0
  76. package/dist/source/HeadContent.jsx +125 -0
  77. package/dist/source/HeadContent.jsx.map +1 -0
  78. package/dist/source/Match.d.ts +8 -0
  79. package/dist/source/Match.jsx +256 -0
  80. package/dist/source/Match.jsx.map +1 -0
  81. package/dist/source/Matches.d.ts +67 -0
  82. package/dist/source/Matches.jsx +103 -0
  83. package/dist/source/Matches.jsx.map +1 -0
  84. package/dist/source/RouterProvider.d.ts +10 -0
  85. package/dist/source/RouterProvider.jsx +27 -0
  86. package/dist/source/RouterProvider.jsx.map +1 -0
  87. package/dist/source/SafeFragment.d.ts +1 -0
  88. package/dist/source/SafeFragment.jsx +4 -0
  89. package/dist/source/SafeFragment.jsx.map +1 -0
  90. package/dist/source/ScriptOnce.d.ts +5 -0
  91. package/dist/source/ScriptOnce.jsx +17 -0
  92. package/dist/source/ScriptOnce.jsx.map +1 -0
  93. package/dist/source/Scripts.d.ts +1 -0
  94. package/dist/source/Scripts.jsx +49 -0
  95. package/dist/source/Scripts.jsx.map +1 -0
  96. package/dist/source/ScrollRestoration.d.ts +15 -0
  97. package/dist/source/ScrollRestoration.jsx +36 -0
  98. package/dist/source/ScrollRestoration.jsx.map +1 -0
  99. package/dist/source/Transitioner.d.ts +1 -0
  100. package/dist/source/Transitioner.jsx +112 -0
  101. package/dist/source/Transitioner.jsx.map +1 -0
  102. package/dist/source/awaited.d.ts +11 -0
  103. package/dist/source/awaited.jsx +24 -0
  104. package/dist/source/awaited.jsx.map +1 -0
  105. package/dist/source/fileRoute.d.ts +46 -0
  106. package/dist/source/fileRoute.js +85 -0
  107. package/dist/source/fileRoute.js.map +1 -0
  108. package/dist/source/history.d.ts +8 -0
  109. package/dist/source/history.js +2 -0
  110. package/dist/source/history.js.map +1 -0
  111. package/dist/source/index.d.ts +52 -0
  112. package/dist/source/index.jsx +41 -0
  113. package/dist/source/index.jsx.map +1 -0
  114. package/dist/source/lazyRouteComponent.d.ts +7 -0
  115. package/dist/source/lazyRouteComponent.jsx +82 -0
  116. package/dist/source/lazyRouteComponent.jsx.map +1 -0
  117. package/dist/source/link.d.ts +41 -0
  118. package/dist/source/link.jsx +339 -0
  119. package/dist/source/link.jsx.map +1 -0
  120. package/dist/source/matchContext.d.ts +3 -0
  121. package/dist/source/matchContext.jsx +5 -0
  122. package/dist/source/matchContext.jsx.map +1 -0
  123. package/dist/source/not-found.d.ts +27 -0
  124. package/dist/source/not-found.jsx +39 -0
  125. package/dist/source/not-found.jsx.map +1 -0
  126. package/dist/source/redirects.d.ts +19 -0
  127. package/dist/source/redirects.js +25 -0
  128. package/dist/source/redirects.js.map +1 -0
  129. package/dist/source/renderRouteNotFound.d.ts +3 -0
  130. package/dist/source/renderRouteNotFound.jsx +15 -0
  131. package/dist/source/renderRouteNotFound.jsx.map +1 -0
  132. package/dist/source/route.d.ts +257 -0
  133. package/dist/source/route.js +240 -0
  134. package/dist/source/route.js.map +1 -0
  135. package/dist/source/router.d.ts +550 -0
  136. package/dist/source/router.js +1802 -0
  137. package/dist/source/router.js.map +1 -0
  138. package/dist/source/routerContext.d.ts +8 -0
  139. package/dist/source/routerContext.jsx +13 -0
  140. package/dist/source/routerContext.jsx.map +1 -0
  141. package/dist/source/scroll-restoration.d.ts +29 -0
  142. package/dist/source/scroll-restoration.jsx +244 -0
  143. package/dist/source/scroll-restoration.jsx.map +1 -0
  144. package/dist/source/typePrimitives.d.ts +70 -0
  145. package/dist/source/typePrimitives.js +2 -0
  146. package/dist/source/typePrimitives.js.map +1 -0
  147. package/dist/source/useBlocker.d.ts +68 -0
  148. package/dist/source/useBlocker.jsx +136 -0
  149. package/dist/source/useBlocker.jsx.map +1 -0
  150. package/dist/source/useCanGoBack.d.ts +1 -0
  151. package/dist/source/useCanGoBack.js +5 -0
  152. package/dist/source/useCanGoBack.js.map +1 -0
  153. package/dist/source/useLoaderData.d.ts +12 -0
  154. package/dist/source/useLoaderData.jsx +11 -0
  155. package/dist/source/useLoaderData.jsx.map +1 -0
  156. package/dist/source/useLoaderDeps.d.ts +11 -0
  157. package/dist/source/useLoaderDeps.jsx +11 -0
  158. package/dist/source/useLoaderDeps.jsx.map +1 -0
  159. package/dist/source/useLocation.d.ts +7 -0
  160. package/dist/source/useLocation.jsx +7 -0
  161. package/dist/source/useLocation.jsx.map +1 -0
  162. package/dist/source/useMatch.d.ts +14 -0
  163. package/dist/source/useMatch.jsx +19 -0
  164. package/dist/source/useMatch.jsx.map +1 -0
  165. package/dist/source/useNavigate.d.ts +7 -0
  166. package/dist/source/useNavigate.jsx +32 -0
  167. package/dist/source/useNavigate.jsx.map +1 -0
  168. package/dist/source/useParams.d.ts +14 -0
  169. package/dist/source/useParams.jsx +12 -0
  170. package/dist/source/useParams.jsx.map +1 -0
  171. package/dist/source/useRouteContext.d.ts +12 -0
  172. package/dist/source/useRouteContext.js +8 -0
  173. package/dist/source/useRouteContext.js.map +1 -0
  174. package/dist/source/useRouter.d.ts +4 -0
  175. package/dist/source/useRouter.jsx +9 -0
  176. package/dist/source/useRouter.jsx.map +1 -0
  177. package/dist/source/useRouterState.d.ts +8 -0
  178. package/dist/source/useRouterState.jsx +14 -0
  179. package/dist/source/useRouterState.jsx.map +1 -0
  180. package/dist/source/useSearch.d.ts +14 -0
  181. package/dist/source/useSearch.jsx +12 -0
  182. package/dist/source/useSearch.jsx.map +1 -0
  183. package/dist/source/utils.d.ts +43 -0
  184. package/dist/source/utils.js +59 -0
  185. package/dist/source/utils.js.map +1 -0
  186. package/package.json +6 -2
  187. package/src/Matches.tsx +11 -15
  188. package/src/RouterProvider.tsx +0 -48
  189. package/src/fileRoute.ts +3 -31
  190. package/src/index.tsx +47 -54
  191. package/src/link.tsx +3 -427
  192. package/src/not-found.tsx +1 -1
  193. package/src/redirects.ts +5 -3
  194. package/src/route.ts +101 -154
  195. package/src/router.ts +11 -25
  196. package/src/typePrimitives.ts +9 -8
  197. package/src/useBlocker.tsx +1 -1
  198. package/src/useLoaderData.tsx +1 -2
  199. package/src/useLoaderDeps.tsx +1 -2
  200. package/src/useNavigate.tsx +1 -1
  201. package/src/useParams.tsx +6 -2
  202. package/src/useRouteContext.ts +2 -2
  203. package/src/useSearch.tsx +6 -2
  204. package/src/utils.ts +1 -2
  205. package/dist/cjs/routeInfo.d.cts +0 -53
  206. package/dist/esm/routeInfo.d.ts +0 -53
  207. package/src/routeInfo.ts +0 -239
@@ -0,0 +1,339 @@
1
+ import * as Solid from 'solid-js';
2
+ import { mergeRefs } from '@solid-primitives/refs';
3
+ import { deepEqual, exactPathTest, functionalUpdate, preloadWarning, removeTrailingSlash, } from '@tanstack/router-core';
4
+ import { Dynamic } from 'solid-js/web';
5
+ import { useRouterState } from './useRouterState';
6
+ import { useRouter } from './useRouter';
7
+ import { useIntersectionObserver } from './utils';
8
+ import { useMatch } from './useMatch';
9
+ export function useLinkProps(options) {
10
+ const router = useRouter();
11
+ const [isTransitioning, setIsTransitioning] = Solid.createSignal(false);
12
+ let hasRenderFetched = false;
13
+ const [local, rest] = Solid.splitProps(Solid.mergeProps({
14
+ activeProps: () => ({ class: 'active' }),
15
+ inactiveProps: () => ({}),
16
+ }, options), [
17
+ 'activeProps',
18
+ 'inactiveProps',
19
+ 'activeOptions',
20
+ 'to',
21
+ 'preload',
22
+ 'preloadDelay',
23
+ 'hashScrollIntoView',
24
+ 'replace',
25
+ 'startTransition',
26
+ 'resetScroll',
27
+ 'viewTransition',
28
+ 'children',
29
+ 'target',
30
+ 'disabled',
31
+ 'style',
32
+ 'class',
33
+ 'onClick',
34
+ 'onFocus',
35
+ 'onMouseEnter',
36
+ 'onMouseLeave',
37
+ 'onMouseOver',
38
+ 'onMouseOut',
39
+ 'onTouchStart',
40
+ 'ignoreBlocker',
41
+ ]);
42
+ // const {
43
+ // // custom props
44
+ // activeProps = () => ({ class: 'active' }),
45
+ // inactiveProps = () => ({}),
46
+ // activeOptions,
47
+ // to,
48
+ // preload: userPreload,
49
+ // preloadDelay: userPreloadDelay,
50
+ // hashScrollIntoView,
51
+ // replace,
52
+ // startTransition,
53
+ // resetScroll,
54
+ // viewTransition,
55
+ // // element props
56
+ // children,
57
+ // target,
58
+ // disabled,
59
+ // style,
60
+ // class,
61
+ // onClick,
62
+ // onFocus,
63
+ // onMouseEnter,
64
+ // onMouseLeave,
65
+ // onTouchStart,
66
+ // ignoreBlocker,
67
+ // ...rest
68
+ // } = options
69
+ const [_, propsSafeToSpread] = Solid.splitProps(rest, [
70
+ 'params',
71
+ 'search',
72
+ 'hash',
73
+ 'state',
74
+ 'mask',
75
+ 'reloadDocument',
76
+ ]);
77
+ // If this link simply reloads the current route,
78
+ // make sure it has a new key so it will trigger a data refresh
79
+ // If this `to` is a valid external URL, return
80
+ // null for LinkUtils
81
+ const type = () => {
82
+ try {
83
+ new URL(`${local.to}`);
84
+ return 'external';
85
+ }
86
+ catch { }
87
+ return 'internal';
88
+ };
89
+ const currentSearch = useRouterState({
90
+ select: (s) => s.location.searchStr,
91
+ });
92
+ // In the rare event that the user bypasses type-safety and doesn't supply a `from`
93
+ // we'll use the current route as the `from` location so relative routing works as expected
94
+ const parentRouteId = useMatch({ strict: false, select: (s) => s.pathname });
95
+ // Use it as the default `from` location
96
+ options = {
97
+ from: parentRouteId(),
98
+ ...options,
99
+ };
100
+ const next = Solid.createMemo(() => {
101
+ currentSearch();
102
+ return router.buildLocation(options);
103
+ });
104
+ const preload = Solid.createMemo(() => {
105
+ if (options.reloadDocument) {
106
+ return false;
107
+ }
108
+ return local.preload ?? router.options.defaultPreload;
109
+ });
110
+ const preloadDelay = () => local.preloadDelay ?? router.options.defaultPreloadDelay ?? 0;
111
+ const isActive = useRouterState({
112
+ select: (s) => {
113
+ if (local.activeOptions?.exact) {
114
+ const testExact = exactPathTest(s.location.pathname, next().pathname, router.basepath);
115
+ if (!testExact) {
116
+ return false;
117
+ }
118
+ }
119
+ else {
120
+ const currentPathSplit = removeTrailingSlash(s.location.pathname, router.basepath).split('/');
121
+ const nextPathSplit = removeTrailingSlash(next()?.pathname, router.basepath)?.split('/');
122
+ const pathIsFuzzyEqual = nextPathSplit?.every((d, i) => d === currentPathSplit[i]);
123
+ if (!pathIsFuzzyEqual) {
124
+ return false;
125
+ }
126
+ }
127
+ if (local.activeOptions?.includeSearch ?? true) {
128
+ const searchTest = deepEqual(s.location.search, next().search, {
129
+ partial: !local.activeOptions?.exact,
130
+ ignoreUndefined: !local.activeOptions?.explicitUndefined,
131
+ });
132
+ if (!searchTest) {
133
+ return false;
134
+ }
135
+ }
136
+ if (local.activeOptions?.includeHash) {
137
+ return s.location.hash === next().hash;
138
+ }
139
+ return true;
140
+ },
141
+ });
142
+ const doPreload = () => router.preloadRoute(options).catch((err) => {
143
+ console.warn(err);
144
+ console.warn(preloadWarning);
145
+ });
146
+ const preloadViewportIoCallback = (entry) => {
147
+ if (entry?.isIntersecting) {
148
+ doPreload();
149
+ }
150
+ };
151
+ const [ref, setRef] = Solid.createSignal(null);
152
+ useIntersectionObserver(ref, preloadViewportIoCallback, { rootMargin: '100px' }, { disabled: !!local.disabled || !(preload() === 'viewport') });
153
+ Solid.createEffect(() => {
154
+ if (hasRenderFetched) {
155
+ return;
156
+ }
157
+ if (!local.disabled && preload() === 'render') {
158
+ doPreload();
159
+ hasRenderFetched = true;
160
+ }
161
+ });
162
+ if (type() === 'external') {
163
+ return Solid.mergeProps(propsSafeToSpread, {
164
+ ref,
165
+ get type() {
166
+ return type();
167
+ },
168
+ get href() {
169
+ return local.to;
170
+ },
171
+ }, Solid.splitProps(local, [
172
+ 'children',
173
+ 'target',
174
+ 'disabled',
175
+ 'style',
176
+ 'class',
177
+ 'onClick',
178
+ 'onFocus',
179
+ 'onMouseEnter',
180
+ 'onMouseLeave',
181
+ 'onMouseOut',
182
+ 'onMouseOver',
183
+ 'onTouchStart',
184
+ ])[0]);
185
+ }
186
+ // The click handler
187
+ const handleClick = (e) => {
188
+ if (!local.disabled &&
189
+ !isCtrlEvent(e) &&
190
+ !e.defaultPrevented &&
191
+ (!local.target || local.target === '_self') &&
192
+ e.button === 0) {
193
+ e.preventDefault();
194
+ setIsTransitioning(true);
195
+ const unsub = router.subscribe('onResolved', () => {
196
+ unsub();
197
+ setIsTransitioning(false);
198
+ });
199
+ // All is well? Navigate!
200
+ // N.B. we don't call `router.commitLocation(next) here because we want to run `validateSearch` before committing
201
+ return router.navigate({
202
+ ...options,
203
+ replace: local.replace,
204
+ resetScroll: local.resetScroll,
205
+ hashScrollIntoView: local.hashScrollIntoView,
206
+ startTransition: local.startTransition,
207
+ viewTransition: local.viewTransition,
208
+ ignoreBlocker: local.ignoreBlocker,
209
+ });
210
+ }
211
+ };
212
+ // The click handler
213
+ const handleFocus = (_) => {
214
+ if (local.disabled)
215
+ return;
216
+ if (preload()) {
217
+ doPreload();
218
+ }
219
+ };
220
+ const handleTouchStart = handleFocus;
221
+ const handleEnter = (e) => {
222
+ if (local.disabled)
223
+ return;
224
+ const eventTarget = (e.target || {});
225
+ if (preload()) {
226
+ if (eventTarget.preloadTimeout) {
227
+ return;
228
+ }
229
+ eventTarget.preloadTimeout = setTimeout(() => {
230
+ eventTarget.preloadTimeout = null;
231
+ doPreload();
232
+ }, preloadDelay());
233
+ }
234
+ };
235
+ const handleLeave = (e) => {
236
+ if (local.disabled)
237
+ return;
238
+ const eventTarget = (e.target || {});
239
+ if (eventTarget.preloadTimeout) {
240
+ clearTimeout(eventTarget.preloadTimeout);
241
+ eventTarget.preloadTimeout = null;
242
+ }
243
+ };
244
+ /** Call a JSX.EventHandlerUnion with the event. */
245
+ function callHandler(event, handler) {
246
+ if (handler) {
247
+ if (typeof handler === 'function') {
248
+ handler(event);
249
+ }
250
+ else {
251
+ handler[0](handler[1], event);
252
+ }
253
+ }
254
+ return event.defaultPrevented;
255
+ }
256
+ function composeEventHandlers(handlers) {
257
+ return (event) => {
258
+ for (const handler of handlers) {
259
+ callHandler(event, handler);
260
+ }
261
+ };
262
+ }
263
+ // Get the active props
264
+ const resolvedActiveProps = () => isActive() ? (functionalUpdate(local.activeProps, {}) ?? {}) : {};
265
+ // Get the inactive props
266
+ const resolvedInactiveProps = () => isActive() ? {} : functionalUpdate(local.inactiveProps, {});
267
+ const resolvedClassName = () => [local.class, resolvedActiveProps().class, resolvedInactiveProps().class]
268
+ .filter(Boolean)
269
+ .join(' ');
270
+ const resolvedStyle = () => ({
271
+ ...local.style,
272
+ ...resolvedActiveProps().style,
273
+ ...resolvedInactiveProps().style,
274
+ });
275
+ const href = Solid.createMemo(() => {
276
+ const nextLocation = next();
277
+ const maskedLocation = nextLocation?.maskedLocation;
278
+ return options.disabled
279
+ ? undefined
280
+ : maskedLocation
281
+ ? router.history.createHref(maskedLocation.href)
282
+ : router.history.createHref(nextLocation?.href);
283
+ });
284
+ return Solid.mergeProps(propsSafeToSpread, resolvedActiveProps, resolvedInactiveProps, () => {
285
+ return {
286
+ href: href(),
287
+ ref: mergeRefs(setRef, options.ref),
288
+ onClick: composeEventHandlers([local.onClick, handleClick]),
289
+ onFocus: composeEventHandlers([local.onFocus, handleFocus]),
290
+ onMouseEnter: composeEventHandlers([local.onMouseEnter, handleEnter]),
291
+ onMouseOver: composeEventHandlers([local.onMouseOver, handleEnter]),
292
+ onMouseLeave: composeEventHandlers([local.onMouseLeave, handleLeave]),
293
+ onMouseOut: composeEventHandlers([local.onMouseOut, handleLeave]),
294
+ onTouchStart: composeEventHandlers([
295
+ local.onTouchStart,
296
+ handleTouchStart,
297
+ ]),
298
+ disabled: !!local.disabled,
299
+ target: local.target,
300
+ ...(Object.keys(resolvedStyle).length && { style: resolvedStyle }),
301
+ ...(resolvedClassName() && { class: resolvedClassName() }),
302
+ ...(local.disabled && {
303
+ role: 'link',
304
+ 'aria-disabled': true,
305
+ }),
306
+ ...(isActive() && { 'data-status': 'active', 'aria-current': 'page' }),
307
+ ...(isTransitioning() && { 'data-transitioning': 'transitioning' }),
308
+ };
309
+ });
310
+ }
311
+ export function createLink(Comp) {
312
+ return (props) => <Link {...props} _asChild={Comp}/>;
313
+ }
314
+ export const Link = (props) => {
315
+ const [local, rest] = Solid.splitProps(props, ['_asChild']);
316
+ const [_, linkProps] = Solid.splitProps(useLinkProps(rest), ['type', 'children']);
317
+ const children = () => typeof rest.children === 'function'
318
+ ? rest.children({
319
+ get isActive() {
320
+ return linkProps['data-status'] === 'active';
321
+ },
322
+ })
323
+ : rest.children;
324
+ if (typeof local._asChild === 'undefined') {
325
+ // the Retlocal.urnType of useLinkProps returns the correct type for a <a> element, not a general component that has a disabled prop
326
+ // @ts-expect-error
327
+ delete linkProps.disabled;
328
+ }
329
+ return (<Dynamic component={local._asChild ? local._asChild : 'a'} {...linkProps}>
330
+ {children}
331
+ </Dynamic>);
332
+ };
333
+ function isCtrlEvent(e) {
334
+ return !!(e.metaKey || e.altKey || e.ctrlKey || e.shiftKey);
335
+ }
336
+ export const linkOptions = (options) => {
337
+ return options;
338
+ };
339
+ //# sourceMappingURL=link.jsx.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"link.jsx","sourceRoot":"","sources":["../../src/link.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,UAAU,CAAA;AAEjC,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAElD,OAAO,EACL,SAAS,EACT,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,mBAAmB,GACpB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAEvC,OAAO,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAA;AAEjD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAarC,MAAM,UAAU,YAAY,CAO1B,OAAqE;IAErE,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAC1B,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,CAAA;IACvE,IAAI,gBAAgB,GAAG,KAAK,CAAA;IAE5B,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC,UAAU,CACpC,KAAK,CAAC,UAAU,CACd;QACE,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;QACxC,aAAa,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;KAC1B,EACD,OAAO,CACR,EACD;QACE,aAAa;QACb,eAAe;QACf,eAAe;QACf,IAAI;QACJ,SAAS;QACT,cAAc;QACd,oBAAoB;QACpB,SAAS;QACT,iBAAiB;QACjB,aAAa;QACb,gBAAgB;QAChB,UAAU;QACV,QAAQ;QACR,UAAU;QACV,OAAO;QACP,OAAO;QACP,SAAS;QACT,SAAS;QACT,cAAc;QACd,cAAc;QACd,aAAa;QACb,YAAY;QACZ,cAAc;QACd,eAAe;KAChB,CACF,CAAA;IAED,UAAU;IACV,oBAAoB;IACpB,+CAA+C;IAC/C,gCAAgC;IAChC,mBAAmB;IACnB,QAAQ;IACR,0BAA0B;IAC1B,oCAAoC;IACpC,wBAAwB;IACxB,aAAa;IACb,qBAAqB;IACrB,iBAAiB;IACjB,oBAAoB;IACpB,qBAAqB;IACrB,cAAc;IACd,YAAY;IACZ,cAAc;IACd,WAAW;IACX,WAAW;IACX,aAAa;IACb,aAAa;IACb,kBAAkB;IAClB,kBAAkB;IAClB,kBAAkB;IAClB,mBAAmB;IACnB,YAAY;IACZ,cAAc;IAEd,MAAM,CAAC,CAAC,EAAE,iBAAiB,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE;QACpD,QAAQ;QACR,QAAQ;QACR,MAAM;QACN,OAAO;QACP,MAAM;QACN,gBAAgB;KACjB,CAAC,CAAA;IAEF,iDAAiD;IACjD,+DAA+D;IAE/D,+CAA+C;IAC/C,qBAAqB;IAErB,MAAM,IAAI,GAA4C,GAAG,EAAE;QACzD,IAAI,CAAC;YACH,IAAI,GAAG,CAAC,GAAG,KAAK,CAAC,EAAE,EAAE,CAAC,CAAA;YACtB,OAAO,UAAU,CAAA;QACnB,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;QACV,OAAO,UAAU,CAAA;IACnB,CAAC,CAAA;IAED,MAAM,aAAa,GAAG,cAAc,CAAC;QACnC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS;KACpC,CAAC,CAAA;IAEF,mFAAmF;IACnF,2FAA2F;IAC3F,MAAM,aAAa,GAAG,QAAQ,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAA;IAE5E,wCAAwC;IACxC,OAAO,GAAG;QACR,IAAI,EAAE,aAAa,EAAE;QACrB,GAAG,OAAO;KACX,CAAA;IAED,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE;QACjC,aAAa,EAAE,CAAA;QACf,OAAO,MAAM,CAAC,aAAa,CAAC,OAAc,CAAC,CAAA;IAC7C,CAAC,CAAC,CAAA;IAEF,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE;QACpC,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;YAC3B,OAAO,KAAK,CAAA;QACd,CAAC;QACD,OAAO,KAAK,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,cAAc,CAAA;IACvD,CAAC,CAAC,CAAA;IACF,MAAM,YAAY,GAAG,GAAG,EAAE,CACxB,KAAK,CAAC,YAAY,IAAI,MAAM,CAAC,OAAO,CAAC,mBAAmB,IAAI,CAAC,CAAA;IAE/D,MAAM,QAAQ,GAAG,cAAc,CAAC;QAC9B,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE;YACZ,IAAI,KAAK,CAAC,aAAa,EAAE,KAAK,EAAE,CAAC;gBAC/B,MAAM,SAAS,GAAG,aAAa,CAC7B,CAAC,CAAC,QAAQ,CAAC,QAAQ,EACnB,IAAI,EAAE,CAAC,QAAQ,EACf,MAAM,CAAC,QAAQ,CAChB,CAAA;gBACD,IAAI,CAAC,SAAS,EAAE,CAAC;oBACf,OAAO,KAAK,CAAA;gBACd,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,MAAM,gBAAgB,GAAG,mBAAmB,CAC1C,CAAC,CAAC,QAAQ,CAAC,QAAQ,EACnB,MAAM,CAAC,QAAQ,CAChB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;gBACZ,MAAM,aAAa,GAAG,mBAAmB,CACvC,IAAI,EAAE,EAAE,QAAQ,EAChB,MAAM,CAAC,QAAQ,CAChB,EAAE,KAAK,CAAC,GAAG,CAAC,CAAA;gBAEb,MAAM,gBAAgB,GAAG,aAAa,EAAE,KAAK,CAC3C,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,gBAAgB,CAAC,CAAC,CAAC,CACpC,CAAA;gBACD,IAAI,CAAC,gBAAgB,EAAE,CAAC;oBACtB,OAAO,KAAK,CAAA;gBACd,CAAC;YACH,CAAC;YAED,IAAI,KAAK,CAAC,aAAa,EAAE,aAAa,IAAI,IAAI,EAAE,CAAC;gBAC/C,MAAM,UAAU,GAAG,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE;oBAC7D,OAAO,EAAE,CAAC,KAAK,CAAC,aAAa,EAAE,KAAK;oBACpC,eAAe,EAAE,CAAC,KAAK,CAAC,aAAa,EAAE,iBAAiB;iBACzD,CAAC,CAAA;gBACF,IAAI,CAAC,UAAU,EAAE,CAAC;oBAChB,OAAO,KAAK,CAAA;gBACd,CAAC;YACH,CAAC;YAED,IAAI,KAAK,CAAC,aAAa,EAAE,WAAW,EAAE,CAAC;gBACrC,OAAO,CAAC,CAAC,QAAQ,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC,IAAI,CAAA;YACxC,CAAC;YACD,OAAO,IAAI,CAAA;QACb,CAAC;KACF,CAAC,CAAA;IAEF,MAAM,SAAS,GAAG,GAAG,EAAE,CACrB,MAAM,CAAC,YAAY,CAAC,OAAc,CAAC,CAAC,KAAK,CAAC,CAAC,GAAQ,EAAE,EAAE;QACrD,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QACjB,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;IAC9B,CAAC,CAAC,CAAA;IAEJ,MAAM,yBAAyB,GAAG,CAChC,KAA4C,EAC5C,EAAE;QACF,IAAI,KAAK,EAAE,cAAc,EAAE,CAAC;YAC1B,SAAS,EAAE,CAAA;QACb,CAAC;IACH,CAAC,CAAA;IAED,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,KAAK,CAAC,YAAY,CAAiB,IAAI,CAAC,CAAA;IAE9D,uBAAuB,CACrB,GAAG,EACH,yBAAyB,EACzB,EAAE,UAAU,EAAE,OAAO,EAAE,EACvB,EAAE,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC,CAAC,OAAO,EAAE,KAAK,UAAU,CAAC,EAAE,CAC9D,CAAA;IAED,KAAK,CAAC,YAAY,CAAC,GAAG,EAAE;QACtB,IAAI,gBAAgB,EAAE,CAAC;YACrB,OAAM;QACR,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,OAAO,EAAE,KAAK,QAAQ,EAAE,CAAC;YAC9C,SAAS,EAAE,CAAA;YACX,gBAAgB,GAAG,IAAI,CAAA;QACzB,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,IAAI,IAAI,EAAE,KAAK,UAAU,EAAE,CAAC;QAC1B,OAAO,KAAK,CAAC,UAAU,CACrB,iBAAiB,EACjB;YACE,GAAG;YACH,IAAI,IAAI;gBACN,OAAO,IAAI,EAAE,CAAA;YACf,CAAC;YACD,IAAI,IAAI;gBACN,OAAO,KAAK,CAAC,EAAE,CAAA;YACjB,CAAC;SACF,EACD,KAAK,CAAC,UAAU,CAAC,KAAK,EAAE;YACtB,UAAU;YACV,QAAQ;YACR,UAAU;YACV,OAAO;YACP,OAAO;YACP,SAAS;YACT,SAAS;YACT,cAAc;YACd,cAAc;YACd,YAAY;YACZ,aAAa;YACb,cAAc;SACf,CAAC,CAAC,CAAC,CAAC,CACC,CAAA;IACV,CAAC;IAED,oBAAoB;IACpB,MAAM,WAAW,GAAG,CAAC,CAAa,EAAE,EAAE;QACpC,IACE,CAAC,KAAK,CAAC,QAAQ;YACf,CAAC,WAAW,CAAC,CAAC,CAAC;YACf,CAAC,CAAC,CAAC,gBAAgB;YACnB,CAAC,CAAC,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,KAAK,OAAO,CAAC;YAC3C,CAAC,CAAC,MAAM,KAAK,CAAC,EACd,CAAC;YACD,CAAC,CAAC,cAAc,EAAE,CAAA;YAElB,kBAAkB,CAAC,IAAI,CAAC,CAAA;YAExB,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,YAAY,EAAE,GAAG,EAAE;gBAChD,KAAK,EAAE,CAAA;gBACP,kBAAkB,CAAC,KAAK,CAAC,CAAA;YAC3B,CAAC,CAAC,CAAA;YAEF,yBAAyB;YACzB,iHAAiH;YACjH,OAAO,MAAM,CAAC,QAAQ,CAAC;gBACrB,GAAG,OAAO;gBACV,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,WAAW,EAAE,KAAK,CAAC,WAAW;gBAC9B,kBAAkB,EAAE,KAAK,CAAC,kBAAkB;gBAC5C,eAAe,EAAE,KAAK,CAAC,eAAe;gBACtC,cAAc,EAAE,KAAK,CAAC,cAAc;gBACpC,aAAa,EAAE,KAAK,CAAC,aAAa;aAC5B,CAAC,CAAA;QACX,CAAC;IACH,CAAC,CAAA;IAED,oBAAoB;IACpB,MAAM,WAAW,GAAG,CAAC,CAAa,EAAE,EAAE;QACpC,IAAI,KAAK,CAAC,QAAQ;YAAE,OAAM;QAC1B,IAAI,OAAO,EAAE,EAAE,CAAC;YACd,SAAS,EAAE,CAAA;QACb,CAAC;IACH,CAAC,CAAA;IAED,MAAM,gBAAgB,GAAG,WAAW,CAAA;IAEpC,MAAM,WAAW,GAAG,CAAC,CAAa,EAAE,EAAE;QACpC,IAAI,KAAK,CAAC,QAAQ;YAAE,OAAM;QAC1B,MAAM,WAAW,GAAG,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAA6B,CAAA;QAEhE,IAAI,OAAO,EAAE,EAAE,CAAC;YACd,IAAI,WAAW,CAAC,cAAc,EAAE,CAAC;gBAC/B,OAAM;YACR,CAAC;YAED,WAAW,CAAC,cAAc,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC3C,WAAW,CAAC,cAAc,GAAG,IAAI,CAAA;gBACjC,SAAS,EAAE,CAAA;YACb,CAAC,EAAE,YAAY,EAAE,CAAC,CAAA;QACpB,CAAC;IACH,CAAC,CAAA;IAED,MAAM,WAAW,GAAG,CAAC,CAAa,EAAE,EAAE;QACpC,IAAI,KAAK,CAAC,QAAQ;YAAE,OAAM;QAC1B,MAAM,WAAW,GAAG,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAA6B,CAAA;QAEhE,IAAI,WAAW,CAAC,cAAc,EAAE,CAAC;YAC/B,YAAY,CAAC,WAAW,CAAC,cAAc,CAAC,CAAA;YACxC,WAAW,CAAC,cAAc,GAAG,IAAI,CAAA;QACnC,CAAC;IACH,CAAC,CAAA;IAED,mDAAmD;IACnD,SAAS,WAAW,CAClB,KAAqD,EACrD,OAA2D;QAE3D,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE,CAAC;gBAClC,OAAO,CAAC,KAAK,CAAC,CAAA;YAChB,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAA;YAC/B,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAC,gBAAgB,CAAA;IAC/B,CAAC;IAED,SAAS,oBAAoB,CAC3B,QAAgE;QAEhE,OAAO,CAAC,KAAU,EAAE,EAAE;YACpB,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;gBAC/B,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;YAC7B,CAAC;QACH,CAAC,CAAA;IACH,CAAC;IAED,uBAAuB;IACvB,MAAM,mBAAmB,GAErB,GAAG,EAAE,CACP,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,WAAkB,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IAE1E,yBAAyB;IACzB,MAAM,qBAAqB,GAGe,GAAG,EAAE,CAC7C,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,aAAa,EAAE,EAAE,CAAC,CAAA;IAE7D,MAAM,iBAAiB,GAAG,GAAG,EAAE,CAC7B,CAAC,KAAK,CAAC,KAAK,EAAE,mBAAmB,EAAE,CAAC,KAAK,EAAE,qBAAqB,EAAE,CAAC,KAAK,CAAC;SACtE,MAAM,CAAC,OAAO,CAAC;SACf,IAAI,CAAC,GAAG,CAAC,CAAA;IAEd,MAAM,aAAa,GAAG,GAAG,EAAE,CAAC,CAAC;QAC3B,GAAG,KAAK,CAAC,KAAK;QACd,GAAG,mBAAmB,EAAE,CAAC,KAAK;QAC9B,GAAG,qBAAqB,EAAE,CAAC,KAAK;KACjC,CAAC,CAAA;IAEF,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE;QACjC,MAAM,YAAY,GAAG,IAAI,EAAE,CAAA;QAC3B,MAAM,cAAc,GAAG,YAAY,EAAE,cAAc,CAAA;QAEnD,OAAO,OAAO,CAAC,QAAQ;YACrB,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,cAAc;gBACd,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC;gBAChD,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,YAAY,EAAE,IAAI,CAAC,CAAA;IACrD,CAAC,CAAC,CAAA;IAEF,OAAO,KAAK,CAAC,UAAU,CACrB,iBAAiB,EACjB,mBAAmB,EACnB,qBAAqB,EACrB,GAAG,EAAE;QACH,OAAO;YACL,IAAI,EAAE,IAAI,EAAE;YACZ,GAAG,EAAE,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC;YACnC,OAAO,EAAE,oBAAoB,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;YAC3D,OAAO,EAAE,oBAAoB,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;YAC3D,YAAY,EAAE,oBAAoB,CAAC,CAAC,KAAK,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;YACrE,WAAW,EAAE,oBAAoB,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;YACnE,YAAY,EAAE,oBAAoB,CAAC,CAAC,KAAK,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;YACrE,UAAU,EAAE,oBAAoB,CAAC,CAAC,KAAK,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;YACjE,YAAY,EAAE,oBAAoB,CAAC;gBACjC,KAAK,CAAC,YAAY;gBAClB,gBAAgB;aACjB,CAAC;YACF,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ;YAC1B,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,MAAM,IAAI,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC;YAClE,GAAG,CAAC,iBAAiB,EAAE,IAAI,EAAE,KAAK,EAAE,iBAAiB,EAAE,EAAE,CAAC;YAC1D,GAAG,CAAC,KAAK,CAAC,QAAQ,IAAI;gBACpB,IAAI,EAAE,MAAM;gBACZ,eAAe,EAAE,IAAI;aACtB,CAAC;YACF,GAAG,CAAC,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,EAAE,CAAC;YACtE,GAAG,CAAC,eAAe,EAAE,IAAI,EAAE,oBAAoB,EAAE,eAAe,EAAE,CAAC;SACpE,CAAA;IACH,CAAC,CACK,CAAA;AACV,CAAC;AA6FD,MAAM,UAAU,UAAU,CACxB,IAA0E;IAE1E,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAK,KAAa,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,EAAG,CAAA;AAChE,CAAC;AAED,MAAM,CAAC,MAAM,IAAI,GAAuB,CAAC,KAAU,EAAE,EAAE;IACrD,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,UAAU,CAAC,CAAC,CAAA;IAE3D,MAAM,CAAC,CAAC,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC,UAAU,CACrC,YAAY,CAAC,IAAsB,CAAC,EACpC,CAAC,MAAM,EAAE,UAAU,CAAC,CACrB,CAAA;IAED,MAAM,QAAQ,GAAG,GAAG,EAAE,CACpB,OAAO,IAAI,CAAC,QAAQ,KAAK,UAAU;QACjC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;YACZ,IAAI,QAAQ;gBACV,OAAQ,SAAiB,CAAC,aAAa,CAAC,KAAK,QAAQ,CAAA;YACvD,CAAC;SACF,CAAC;QACJ,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAA;IAEnB,IAAI,OAAO,KAAK,CAAC,QAAQ,KAAK,WAAW,EAAE,CAAC;QAC1C,oIAAoI;QACpI,mBAAmB;QACnB,OAAO,SAAS,CAAC,QAAQ,CAAA;IAC3B,CAAC;IAED,OAAO,CACL,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,SAAS,CAAC,CACvE;MAAA,CAAC,QAAQ,CACX;IAAA,EAAE,OAAO,CAAC,CACX,CAAA;AACH,CAAC,CAAA;AAED,SAAS,WAAW,CAAC,CAAa;IAChC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAA;AAC7D,CAAC;AAkBD,MAAM,CAAC,MAAM,WAAW,GAAuB,CAAC,OAAO,EAAE,EAAE;IACzD,OAAO,OAAc,CAAA;AACvB,CAAC,CAAA"}
@@ -0,0 +1,3 @@
1
+ import * as Solid from 'solid-js';
2
+ export declare const matchContext: Solid.Context<Solid.Accessor<string | undefined>>;
3
+ export declare const dummyMatchContext: Solid.Context<Solid.Accessor<string | undefined>>;
@@ -0,0 +1,5 @@
1
+ import * as Solid from 'solid-js';
2
+ export const matchContext = Solid.createContext(() => undefined);
3
+ // N.B. this only exists so we can conditionally call useContext on it when we are not interested in the nearest match
4
+ export const dummyMatchContext = Solid.createContext(() => undefined);
5
+ //# sourceMappingURL=matchContext.jsx.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"matchContext.jsx","sourceRoot":"","sources":["../../src/matchContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,UAAU,CAAA;AAEjC,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,CAAC,aAAa,CAE7C,GAAG,EAAE,CAAC,SAAS,CAAC,CAAA;AAElB,sHAAsH;AACtH,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,CAAC,aAAa,CAElD,GAAG,EAAE,CAAC,SAAS,CAAC,CAAA"}
@@ -0,0 +1,27 @@
1
+ import type * as Solid from 'solid-js';
2
+ import type { RegisteredRouter } from './router';
3
+ import type { RouteIds } from '@tanstack/router-core';
4
+ export type NotFoundError = {
5
+ /**
6
+ @deprecated
7
+ Use `routeId: rootRouteId` instead
8
+ */
9
+ global?: boolean;
10
+ /**
11
+ @private
12
+ Do not use this. It's used internally to indicate a path matching error
13
+ */
14
+ _global?: boolean;
15
+ data?: any;
16
+ throw?: boolean;
17
+ routeId?: RouteIds<RegisteredRouter['routeTree']>;
18
+ headers?: HeadersInit;
19
+ };
20
+ export declare function notFound(options?: NotFoundError): NotFoundError;
21
+ export declare function isNotFound(obj: any): obj is NotFoundError;
22
+ export declare function CatchNotFound(props: {
23
+ fallback?: (error: NotFoundError) => Solid.JSX.Element;
24
+ onCatch?: (error: Error) => void;
25
+ children: Solid.JSX.Element;
26
+ }): Solid.JSX.Element;
27
+ export declare function DefaultGlobalNotFound(): Solid.JSX.Element;
@@ -0,0 +1,39 @@
1
+ import { CatchBoundary } from './CatchBoundary';
2
+ import { useRouterState } from './useRouterState';
3
+ export function notFound(options = {}) {
4
+ ;
5
+ options.isNotFound = true;
6
+ if (options.throw)
7
+ throw options;
8
+ return options;
9
+ }
10
+ export function isNotFound(obj) {
11
+ return !!obj?.isNotFound;
12
+ }
13
+ export function CatchNotFound(props) {
14
+ // TODO: Some way for the user to programmatically reset the not-found boundary?
15
+ const resetKey = useRouterState({
16
+ select: (s) => `not-found-${s.location.pathname}-${s.status}`,
17
+ });
18
+ return (<CatchBoundary getResetKey={() => resetKey()} onCatch={(error) => {
19
+ if (isNotFound(error)) {
20
+ props.onCatch?.(error);
21
+ }
22
+ else {
23
+ throw error;
24
+ }
25
+ }} errorComponent={({ error }) => {
26
+ if (isNotFound(error)) {
27
+ return props.fallback?.(error);
28
+ }
29
+ else {
30
+ throw error;
31
+ }
32
+ }}>
33
+ {props.children}
34
+ </CatchBoundary>);
35
+ }
36
+ export function DefaultGlobalNotFound() {
37
+ return <p>Not Found</p>;
38
+ }
39
+ //# sourceMappingURL=not-found.jsx.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"not-found.jsx","sourceRoot":"","sources":["../../src/not-found.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAsBjD,MAAM,UAAU,QAAQ,CAAC,UAAyB,EAAE;IAClD,CAAC;IAAC,OAAe,CAAC,UAAU,GAAG,IAAI,CAAA;IACnC,IAAI,OAAO,CAAC,KAAK;QAAE,MAAM,OAAO,CAAA;IAChC,OAAO,OAAO,CAAA;AAChB,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,GAAQ;IACjC,OAAO,CAAC,CAAC,GAAG,EAAE,UAAU,CAAA;AAC1B,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAI7B;IACC,gFAAgF;IAChF,MAAM,QAAQ,GAAG,cAAc,CAAC;QAC9B,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,QAAQ,IAAI,CAAC,CAAC,MAAM,EAAE;KAC9D,CAAC,CAAA;IAEF,OAAO,CACL,CAAC,aAAa,CACZ,WAAW,CAAC,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,CAC9B,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE;YACjB,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;gBACtB,KAAK,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAA;YACxB,CAAC;iBAAM,CAAC;gBACN,MAAM,KAAK,CAAA;YACb,CAAC;QACH,CAAC,CAAC,CACF,cAAc,CAAC,CAAC,CAAC,EAAE,KAAK,EAAoB,EAAE,EAAE;YAC9C,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;gBACtB,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,CAAA;YAChC,CAAC;iBAAM,CAAC;gBACN,MAAM,KAAK,CAAA;YACb,CAAC;QACH,CAAC,CAAC,CAEF;MAAA,CAAC,KAAK,CAAC,QAAQ,CACjB;IAAA,EAAE,aAAa,CAAC,CACjB,CAAA;AACH,CAAC;AAED,MAAM,UAAU,qBAAqB;IACnC,OAAO,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAA;AACzB,CAAC"}
@@ -0,0 +1,19 @@
1
+ import type { AnyRouter, RegisteredRouter } from './router';
2
+ import type { NavigateOptions, PickAsRequired, RoutePaths } from '@tanstack/router-core';
3
+ export type AnyRedirect = Redirect<any, any, any, any, any>;
4
+ export type Redirect<TRouter extends AnyRouter = RegisteredRouter, TFrom extends RoutePaths<TRouter['routeTree']> | string = '/', TTo extends string | undefined = '.', TMaskFrom extends RoutePaths<TRouter['routeTree']> | string = TFrom, TMaskTo extends string = '.'> = {
5
+ href?: string;
6
+ /**
7
+ * @deprecated Use `statusCode` instead
8
+ **/
9
+ code?: number;
10
+ statusCode?: number;
11
+ throw?: any;
12
+ headers?: HeadersInit;
13
+ } & NavigateOptions<TRouter, TFrom, TTo, TMaskFrom, TMaskTo>;
14
+ export type ResolvedRedirect<TRouter extends AnyRouter = RegisteredRouter, TFrom extends RoutePaths<TRouter['routeTree']> = '/', TTo extends string = '', TMaskFrom extends RoutePaths<TRouter['routeTree']> = TFrom, TMaskTo extends string = ''> = PickAsRequired<Redirect<TRouter, TFrom, TTo, TMaskFrom, TMaskTo>, 'code' | 'statusCode' | 'headers'> & {
15
+ href: string;
16
+ };
17
+ export declare function redirect<TRouter extends RegisteredRouter, const TTo extends string | undefined, const TFrom extends string = string, const TMaskFrom extends string = TFrom, const TMaskTo extends string = ''>(opts: Redirect<TRouter, TFrom, TTo, TMaskFrom, TMaskTo>): Redirect<TRouter, TFrom, TTo, TMaskFrom, TMaskTo>;
18
+ export declare function isRedirect(obj: any): obj is AnyRedirect;
19
+ export declare function isResolvedRedirect(obj: any): obj is ResolvedRedirect;
@@ -0,0 +1,25 @@
1
+ export function redirect(opts) {
2
+ ;
3
+ opts.isRedirect = true;
4
+ opts.statusCode = opts.statusCode || opts.code || 307;
5
+ opts.headers = opts.headers || {};
6
+ if (!opts.reloadDocument) {
7
+ opts.reloadDocument = false;
8
+ try {
9
+ new URL(`${opts.href}`);
10
+ opts.reloadDocument = true;
11
+ }
12
+ catch { }
13
+ }
14
+ if (opts.throw) {
15
+ throw opts;
16
+ }
17
+ return opts;
18
+ }
19
+ export function isRedirect(obj) {
20
+ return !!obj?.isRedirect;
21
+ }
22
+ export function isResolvedRedirect(obj) {
23
+ return !!obj?.isRedirect && obj.href;
24
+ }
25
+ //# sourceMappingURL=redirects.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redirects.js","sourceRoot":"","sources":["../../src/redirects.ts"],"names":[],"mappings":"AAuCA,MAAM,UAAU,QAAQ,CAOtB,IAAuD;IAEvD,CAAC;IAAC,IAAY,CAAC,UAAU,GAAG,IAAI,CAAA;IAChC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,IAAI,IAAI,GAAG,CAAA;IACrD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE,CAAA;IACjC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;QACzB,IAAI,CAAC,cAAc,GAAG,KAAK,CAAA;QAC3B,IAAI,CAAC;YACH,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;YACvB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAA;QAC5B,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;IACZ,CAAC;IAED,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,CAAA;IACZ,CAAC;IAED,OAAO,IAAI,CAAA;AACb,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,GAAQ;IACjC,OAAO,CAAC,CAAC,GAAG,EAAE,UAAU,CAAA;AAC1B,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,GAAQ;IACzC,OAAO,CAAC,CAAC,GAAG,EAAE,UAAU,IAAI,GAAG,CAAC,IAAI,CAAA;AACtC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { AnyRouter } from './router';
2
+ import type { AnyRoute } from './route';
3
+ export declare function renderRouteNotFound(router: AnyRouter, route: AnyRoute, data: any): import("solid-js").JSX.Element;
@@ -0,0 +1,15 @@
1
+ import warning from 'tiny-warning';
2
+ import { DefaultGlobalNotFound } from './not-found';
3
+ export function renderRouteNotFound(router, route, data) {
4
+ if (!route.options.notFoundComponent) {
5
+ if (router.options.defaultNotFoundComponent) {
6
+ return <router.options.defaultNotFoundComponent data={data}/>;
7
+ }
8
+ if (process.env.NODE_ENV === 'development') {
9
+ warning(route.options.notFoundComponent, `A notFoundError was encountered on the route with ID "${route.id}", but a notFoundComponent option was not configured, nor was a router level defaultNotFoundComponent configured. Consider configuring at least one of these to avoid TanStack Router's overly generic defaultNotFoundComponent (<div>Not Found<div>)`);
10
+ }
11
+ return <DefaultGlobalNotFound />;
12
+ }
13
+ return <route.options.notFoundComponent data={data}/>;
14
+ }
15
+ //# sourceMappingURL=renderRouteNotFound.jsx.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderRouteNotFound.jsx","sourceRoot":"","sources":["../../src/renderRouteNotFound.tsx"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,cAAc,CAAA;AAClC,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AAInD,MAAM,UAAU,mBAAmB,CACjC,MAAiB,EACjB,KAAe,EACf,IAAS;IAET,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,iBAAiB,EAAE,CAAC;QACrC,IAAI,MAAM,CAAC,OAAO,CAAC,wBAAwB,EAAE,CAAC;YAC5C,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAG,CAAA;QAChE,CAAC;QAED,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa,EAAE,CAAC;YAC3C,OAAO,CACL,KAAK,CAAC,OAAO,CAAC,iBAAiB,EAC/B,yDAAyD,KAAK,CAAC,EAAE,uPAAuP,CACzT,CAAA;QACH,CAAC;QAED,OAAO,CAAC,qBAAqB,CAAC,AAAD,EAAG,CAAA;IAClC,CAAC;IAED,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAG,CAAA;AACxD,CAAC"}