@tanstack/vue-router 0.0.1 → 1.140.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.
Files changed (268) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +66 -45
  3. package/dist/esm/Asset.d.ts +2 -0
  4. package/dist/esm/Asset.js +33 -0
  5. package/dist/esm/Asset.js.map +1 -0
  6. package/dist/esm/CatchBoundary.d.ts +19 -0
  7. package/dist/esm/CatchBoundary.js +135 -0
  8. package/dist/esm/CatchBoundary.js.map +1 -0
  9. package/dist/esm/ClientOnly.d.ts +67 -0
  10. package/dist/esm/HeadContent.d.ts +10 -0
  11. package/dist/esm/HeadContent.js +116 -0
  12. package/dist/esm/HeadContent.js.map +1 -0
  13. package/dist/esm/Match.d.ts +25 -0
  14. package/dist/esm/Match.js +262 -0
  15. package/dist/esm/Match.js.map +1 -0
  16. package/dist/esm/Matches.d.ts +39 -0
  17. package/dist/esm/Matches.js +186 -0
  18. package/dist/esm/Matches.js.map +1 -0
  19. package/dist/esm/RouterProvider.d.ts +33 -0
  20. package/dist/esm/RouterProvider.js +65 -0
  21. package/dist/esm/RouterProvider.js.map +1 -0
  22. package/dist/esm/SafeFragment.d.ts +4 -0
  23. package/dist/esm/ScriptOnce.d.ts +5 -0
  24. package/dist/esm/ScriptOnce.js +21 -0
  25. package/dist/esm/ScriptOnce.js.map +1 -0
  26. package/dist/esm/Scripts.d.ts +1 -0
  27. package/dist/esm/Scripts.js +46 -0
  28. package/dist/esm/Scripts.js.map +1 -0
  29. package/dist/esm/ScrollRestoration.d.ts +14 -0
  30. package/dist/esm/ScrollRestoration.js +36 -0
  31. package/dist/esm/ScrollRestoration.js.map +1 -0
  32. package/dist/esm/Transitioner.d.ts +2 -0
  33. package/dist/esm/Transitioner.js +154 -0
  34. package/dist/esm/Transitioner.js.map +1 -0
  35. package/dist/esm/awaited.d.ts +12 -0
  36. package/dist/esm/awaited.js +40 -0
  37. package/dist/esm/awaited.js.map +1 -0
  38. package/dist/esm/fileRoute.d.ts +54 -0
  39. package/dist/esm/fileRoute.js +103 -0
  40. package/dist/esm/fileRoute.js.map +1 -0
  41. package/dist/esm/history.d.ts +8 -0
  42. package/dist/esm/index.d.ts +51 -0
  43. package/dist/esm/index.js +138 -0
  44. package/dist/esm/index.js.map +1 -0
  45. package/dist/esm/lazyRouteComponent.d.ts +8 -0
  46. package/dist/esm/lazyRouteComponent.js +106 -0
  47. package/dist/esm/lazyRouteComponent.js.map +1 -0
  48. package/dist/esm/link.d.ts +61 -0
  49. package/dist/esm/link.js +376 -0
  50. package/dist/esm/link.js.map +1 -0
  51. package/dist/esm/matchContext.d.ts +20 -0
  52. package/dist/esm/matchContext.js +16 -0
  53. package/dist/esm/matchContext.js.map +1 -0
  54. package/dist/esm/not-found.d.ts +12 -0
  55. package/dist/esm/not-found.js +45 -0
  56. package/dist/esm/not-found.js.map +1 -0
  57. package/dist/esm/renderRouteNotFound.d.ts +11 -0
  58. package/dist/esm/renderRouteNotFound.js +19 -0
  59. package/dist/esm/renderRouteNotFound.js.map +1 -0
  60. package/dist/esm/route.d.ts +96 -0
  61. package/dist/esm/route.js +176 -0
  62. package/dist/esm/route.js.map +1 -0
  63. package/dist/esm/router.d.ts +69 -0
  64. package/dist/esm/router.js +14 -0
  65. package/dist/esm/router.js.map +1 -0
  66. package/dist/esm/routerContext.d.ts +21 -0
  67. package/dist/esm/routerContext.js +21 -0
  68. package/dist/esm/routerContext.js.map +1 -0
  69. package/dist/esm/scroll-restoration.d.ts +1 -0
  70. package/dist/esm/scroll-restoration.js +21 -0
  71. package/dist/esm/scroll-restoration.js.map +1 -0
  72. package/dist/esm/typePrimitives.d.ts +10 -0
  73. package/dist/esm/useBlocker.d.ts +66 -0
  74. package/dist/esm/useBlocker.js +295 -0
  75. package/dist/esm/useBlocker.js.map +1 -0
  76. package/dist/esm/useCanGoBack.d.ts +1 -0
  77. package/dist/esm/useCanGoBack.js +8 -0
  78. package/dist/esm/useCanGoBack.js.map +1 -0
  79. package/dist/esm/useLoaderData.d.ts +8 -0
  80. package/dist/esm/useLoaderData.js +14 -0
  81. package/dist/esm/useLoaderData.js.map +1 -0
  82. package/dist/esm/useLoaderDeps.d.ts +7 -0
  83. package/dist/esm/useLoaderDeps.js +17 -0
  84. package/dist/esm/useLoaderDeps.js.map +1 -0
  85. package/dist/esm/useLocation.d.ts +7 -0
  86. package/dist/esm/useLocation.js +10 -0
  87. package/dist/esm/useLocation.js.map +1 -0
  88. package/dist/esm/useMatch.d.ts +10 -0
  89. package/dist/esm/useMatch.js +39 -0
  90. package/dist/esm/useMatch.js.map +1 -0
  91. package/dist/esm/useNavigate.d.ts +5 -0
  92. package/dist/esm/useNavigate.js +29 -0
  93. package/dist/esm/useNavigate.js.map +1 -0
  94. package/dist/esm/useParams.d.ts +9 -0
  95. package/dist/esm/useParams.js +15 -0
  96. package/dist/esm/useParams.js.map +1 -0
  97. package/dist/esm/useRouteContext.d.ts +4 -0
  98. package/dist/esm/useRouteContext.js +11 -0
  99. package/dist/esm/useRouteContext.js.map +1 -0
  100. package/dist/esm/useRouter.d.ts +4 -0
  101. package/dist/esm/useRouter.js +12 -0
  102. package/dist/esm/useRouter.js.map +1 -0
  103. package/dist/esm/useRouterState.d.ts +8 -0
  104. package/dist/esm/useRouterState.js +20 -0
  105. package/dist/esm/useRouterState.js.map +1 -0
  106. package/dist/esm/useSearch.d.ts +9 -0
  107. package/dist/esm/useSearch.js +15 -0
  108. package/dist/esm/useSearch.js.map +1 -0
  109. package/dist/esm/utils.d.ts +40 -0
  110. package/dist/esm/utils.js +44 -0
  111. package/dist/esm/utils.js.map +1 -0
  112. package/dist/source/Asset.d.ts +2 -0
  113. package/dist/source/Asset.jsx +22 -0
  114. package/dist/source/Asset.jsx.map +1 -0
  115. package/dist/source/CatchBoundary.d.ts +19 -0
  116. package/dist/source/CatchBoundary.jsx +134 -0
  117. package/dist/source/CatchBoundary.jsx.map +1 -0
  118. package/dist/source/ClientOnly.d.ts +67 -0
  119. package/dist/source/ClientOnly.jsx +63 -0
  120. package/dist/source/ClientOnly.jsx.map +1 -0
  121. package/dist/source/HeadContent.d.ts +10 -0
  122. package/dist/source/HeadContent.jsx +133 -0
  123. package/dist/source/HeadContent.jsx.map +1 -0
  124. package/dist/source/Match.d.ts +25 -0
  125. package/dist/source/Match.jsx +316 -0
  126. package/dist/source/Match.jsx.map +1 -0
  127. package/dist/source/Matches.d.ts +39 -0
  128. package/dist/source/Matches.jsx +191 -0
  129. package/dist/source/Matches.jsx.map +1 -0
  130. package/dist/source/RouterProvider.d.ts +33 -0
  131. package/dist/source/RouterProvider.jsx +63 -0
  132. package/dist/source/RouterProvider.jsx.map +1 -0
  133. package/dist/source/SafeFragment.d.ts +4 -0
  134. package/dist/source/SafeFragment.jsx +10 -0
  135. package/dist/source/SafeFragment.jsx.map +1 -0
  136. package/dist/source/ScriptOnce.d.ts +5 -0
  137. package/dist/source/ScriptOnce.jsx +17 -0
  138. package/dist/source/ScriptOnce.jsx.map +1 -0
  139. package/dist/source/Scripts.d.ts +1 -0
  140. package/dist/source/Scripts.jsx +49 -0
  141. package/dist/source/Scripts.jsx.map +1 -0
  142. package/dist/source/ScrollRestoration.d.ts +14 -0
  143. package/dist/source/ScrollRestoration.jsx +37 -0
  144. package/dist/source/ScrollRestoration.jsx.map +1 -0
  145. package/dist/source/Transitioner.d.ts +2 -0
  146. package/dist/source/Transitioner.jsx +181 -0
  147. package/dist/source/Transitioner.jsx.map +1 -0
  148. package/dist/source/awaited.d.ts +12 -0
  149. package/dist/source/awaited.jsx +38 -0
  150. package/dist/source/awaited.jsx.map +1 -0
  151. package/dist/source/fileRoute.d.ts +54 -0
  152. package/dist/source/fileRoute.js +98 -0
  153. package/dist/source/fileRoute.js.map +1 -0
  154. package/dist/source/history.d.ts +8 -0
  155. package/dist/source/history.js +2 -0
  156. package/dist/source/history.js.map +1 -0
  157. package/dist/source/index.d.ts +51 -0
  158. package/dist/source/index.jsx +40 -0
  159. package/dist/source/index.jsx.map +1 -0
  160. package/dist/source/lazyRouteComponent.d.ts +8 -0
  161. package/dist/source/lazyRouteComponent.jsx +135 -0
  162. package/dist/source/lazyRouteComponent.jsx.map +1 -0
  163. package/dist/source/link.d.ts +61 -0
  164. package/dist/source/link.jsx +495 -0
  165. package/dist/source/link.jsx.map +1 -0
  166. package/dist/source/matchContext.d.ts +20 -0
  167. package/dist/source/matchContext.jsx +32 -0
  168. package/dist/source/matchContext.jsx.map +1 -0
  169. package/dist/source/not-found.d.ts +12 -0
  170. package/dist/source/not-found.jsx +48 -0
  171. package/dist/source/not-found.jsx.map +1 -0
  172. package/dist/source/renderRouteNotFound.d.ts +11 -0
  173. package/dist/source/renderRouteNotFound.jsx +24 -0
  174. package/dist/source/renderRouteNotFound.jsx.map +1 -0
  175. package/dist/source/route.d.ts +97 -0
  176. package/dist/source/route.js +167 -0
  177. package/dist/source/route.js.map +1 -0
  178. package/dist/source/router.d.ts +70 -0
  179. package/dist/source/router.js +10 -0
  180. package/dist/source/router.js.map +1 -0
  181. package/dist/source/routerContext.d.ts +21 -0
  182. package/dist/source/routerContext.jsx +37 -0
  183. package/dist/source/routerContext.jsx.map +1 -0
  184. package/dist/source/scroll-restoration.d.ts +1 -0
  185. package/dist/source/scroll-restoration.jsx +16 -0
  186. package/dist/source/scroll-restoration.jsx.map +1 -0
  187. package/dist/source/typePrimitives.d.ts +10 -0
  188. package/dist/source/typePrimitives.js +2 -0
  189. package/dist/source/typePrimitives.js.map +1 -0
  190. package/dist/source/useBlocker.d.ts +66 -0
  191. package/dist/source/useBlocker.jsx +308 -0
  192. package/dist/source/useBlocker.jsx.map +1 -0
  193. package/dist/source/useCanGoBack.d.ts +1 -0
  194. package/dist/source/useCanGoBack.js +5 -0
  195. package/dist/source/useCanGoBack.js.map +1 -0
  196. package/dist/source/useLoaderData.d.ts +8 -0
  197. package/dist/source/useLoaderData.jsx +11 -0
  198. package/dist/source/useLoaderData.jsx.map +1 -0
  199. package/dist/source/useLoaderDeps.d.ts +7 -0
  200. package/dist/source/useLoaderDeps.jsx +11 -0
  201. package/dist/source/useLoaderDeps.jsx.map +1 -0
  202. package/dist/source/useLocation.d.ts +7 -0
  203. package/dist/source/useLocation.jsx +7 -0
  204. package/dist/source/useLocation.jsx.map +1 -0
  205. package/dist/source/useMatch.d.ts +10 -0
  206. package/dist/source/useMatch.jsx +46 -0
  207. package/dist/source/useMatch.jsx.map +1 -0
  208. package/dist/source/useNavigate.d.ts +5 -0
  209. package/dist/source/useNavigate.jsx +18 -0
  210. package/dist/source/useNavigate.jsx.map +1 -0
  211. package/dist/source/useParams.d.ts +9 -0
  212. package/dist/source/useParams.jsx +12 -0
  213. package/dist/source/useParams.jsx.map +1 -0
  214. package/dist/source/useRouteContext.d.ts +4 -0
  215. package/dist/source/useRouteContext.js +8 -0
  216. package/dist/source/useRouteContext.js.map +1 -0
  217. package/dist/source/useRouter.d.ts +4 -0
  218. package/dist/source/useRouter.jsx +9 -0
  219. package/dist/source/useRouter.jsx.map +1 -0
  220. package/dist/source/useRouterState.d.ts +8 -0
  221. package/dist/source/useRouterState.jsx +19 -0
  222. package/dist/source/useRouterState.jsx.map +1 -0
  223. package/dist/source/useSearch.d.ts +9 -0
  224. package/dist/source/useSearch.jsx +12 -0
  225. package/dist/source/useSearch.jsx.map +1 -0
  226. package/dist/source/utils.d.ts +40 -0
  227. package/dist/source/utils.js +78 -0
  228. package/dist/source/utils.js.map +1 -0
  229. package/package.json +77 -7
  230. package/src/Asset.tsx +23 -0
  231. package/src/CatchBoundary.tsx +186 -0
  232. package/src/ClientOnly.tsx +75 -0
  233. package/src/HeadContent.tsx +159 -0
  234. package/src/Match.tsx +415 -0
  235. package/src/Matches.tsx +349 -0
  236. package/src/RouterProvider.tsx +117 -0
  237. package/src/SafeFragment.tsx +10 -0
  238. package/src/ScriptOnce.tsx +30 -0
  239. package/src/Scripts.tsx +65 -0
  240. package/src/ScrollRestoration.tsx +69 -0
  241. package/src/Transitioner.tsx +213 -0
  242. package/src/awaited.tsx +54 -0
  243. package/src/fileRoute.ts +271 -0
  244. package/src/history.ts +9 -0
  245. package/src/index.tsx +346 -0
  246. package/src/lazyRouteComponent.tsx +173 -0
  247. package/src/link.tsx +765 -0
  248. package/src/matchContext.tsx +41 -0
  249. package/src/not-found.tsx +55 -0
  250. package/src/renderRouteNotFound.tsx +35 -0
  251. package/src/route.ts +658 -0
  252. package/src/router.ts +103 -0
  253. package/src/routerContext.tsx +53 -0
  254. package/src/scroll-restoration.tsx +29 -0
  255. package/src/typePrimitives.ts +74 -0
  256. package/src/useBlocker.tsx +501 -0
  257. package/src/useCanGoBack.ts +5 -0
  258. package/src/useLoaderData.tsx +50 -0
  259. package/src/useLoaderDeps.tsx +46 -0
  260. package/src/useLocation.tsx +30 -0
  261. package/src/useMatch.tsx +127 -0
  262. package/src/useNavigate.tsx +40 -0
  263. package/src/useParams.tsx +71 -0
  264. package/src/useRouteContext.ts +31 -0
  265. package/src/useRouter.tsx +15 -0
  266. package/src/useRouterState.tsx +43 -0
  267. package/src/useSearch.tsx +71 -0
  268. package/src/utils.ts +111 -0
@@ -0,0 +1,495 @@
1
+ import * as Vue from 'vue';
2
+ import { deepEqual, exactPathTest, preloadWarning, removeTrailingSlash, } from '@tanstack/router-core';
3
+ import { useRouterState } from './useRouterState';
4
+ import { useRouter } from './useRouter';
5
+ import { useIntersectionObserver } from './utils';
6
+ import { useMatches } from './Matches';
7
+ export function useLinkProps(options) {
8
+ const router = useRouter();
9
+ const isTransitioning = Vue.ref(false);
10
+ let hasRenderFetched = false;
11
+ // Ensure router is defined before proceeding
12
+ if (!router) {
13
+ console.warn('useRouter must be used inside a <RouterProvider> component!');
14
+ return {};
15
+ }
16
+ // Determine if the link is external or internal
17
+ const type = Vue.computed(() => {
18
+ try {
19
+ new URL(`${options.to}`);
20
+ return 'external';
21
+ }
22
+ catch {
23
+ return 'internal';
24
+ }
25
+ });
26
+ const currentSearch = useRouterState({
27
+ select: (s) => s.location.searchStr,
28
+ });
29
+ // when `from` is not supplied, use the leaf route of the current matches as the `from` location
30
+ const from = useMatches({
31
+ select: (matches) => options.from ?? matches[matches.length - 1]?.fullPath,
32
+ });
33
+ const _options = Vue.computed(() => ({
34
+ ...options,
35
+ from: from.value,
36
+ }));
37
+ const next = Vue.computed(() => {
38
+ // Depend on search to rebuild when search changes
39
+ currentSearch.value;
40
+ return router.buildLocation(_options.value);
41
+ });
42
+ const preload = Vue.computed(() => {
43
+ if (_options.value.reloadDocument) {
44
+ return false;
45
+ }
46
+ return options.preload ?? router.options.defaultPreload;
47
+ });
48
+ const preloadDelay = Vue.computed(() => options.preloadDelay ?? router.options.defaultPreloadDelay ?? 0);
49
+ const isActive = useRouterState({
50
+ select: (s) => {
51
+ const activeOptions = options.activeOptions;
52
+ if (activeOptions?.exact) {
53
+ const testExact = exactPathTest(s.location.pathname, next.value.pathname, router.basepath);
54
+ if (!testExact) {
55
+ return false;
56
+ }
57
+ }
58
+ else {
59
+ const currentPathSplit = removeTrailingSlash(s.location.pathname, router.basepath).split('/');
60
+ const nextPathSplit = removeTrailingSlash(next.value?.pathname, router.basepath)?.split('/');
61
+ const pathIsFuzzyEqual = nextPathSplit?.every((d, i) => d === currentPathSplit[i]);
62
+ if (!pathIsFuzzyEqual) {
63
+ return false;
64
+ }
65
+ }
66
+ if (activeOptions?.includeSearch ?? true) {
67
+ const searchTest = deepEqual(s.location.search, next.value.search, {
68
+ partial: !activeOptions?.exact,
69
+ ignoreUndefined: !activeOptions?.explicitUndefined,
70
+ });
71
+ if (!searchTest) {
72
+ return false;
73
+ }
74
+ }
75
+ if (activeOptions?.includeHash) {
76
+ return s.location.hash === next.value.hash;
77
+ }
78
+ return true;
79
+ },
80
+ });
81
+ const doPreload = () => router.preloadRoute(_options.value).catch((err) => {
82
+ console.warn(err);
83
+ console.warn(preloadWarning);
84
+ });
85
+ const preloadViewportIoCallback = (entry) => {
86
+ if (entry?.isIntersecting) {
87
+ doPreload();
88
+ }
89
+ };
90
+ const ref = Vue.ref(null);
91
+ useIntersectionObserver(ref, preloadViewportIoCallback, { rootMargin: '100px' }, { disabled: () => !!options.disabled || !(preload.value === 'viewport') });
92
+ Vue.effect(() => {
93
+ if (hasRenderFetched) {
94
+ return;
95
+ }
96
+ if (!options.disabled && preload.value === 'render') {
97
+ doPreload();
98
+ hasRenderFetched = true;
99
+ }
100
+ });
101
+ // Create safe props that can be spread
102
+ const getPropsSafeToSpread = () => {
103
+ const result = {};
104
+ for (const key in options) {
105
+ if (![
106
+ 'activeProps',
107
+ 'inactiveProps',
108
+ 'activeOptions',
109
+ 'to',
110
+ 'preload',
111
+ 'preloadDelay',
112
+ 'hashScrollIntoView',
113
+ 'replace',
114
+ 'startTransition',
115
+ 'resetScroll',
116
+ 'viewTransition',
117
+ 'children',
118
+ 'target',
119
+ 'disabled',
120
+ 'style',
121
+ 'class',
122
+ 'onClick',
123
+ 'onFocus',
124
+ 'onMouseEnter',
125
+ 'onMouseLeave',
126
+ 'onMouseOver',
127
+ 'onMouseOut',
128
+ 'onTouchStart',
129
+ 'ignoreBlocker',
130
+ 'params',
131
+ 'search',
132
+ 'hash',
133
+ 'state',
134
+ 'mask',
135
+ 'reloadDocument',
136
+ '_asChild',
137
+ 'from',
138
+ 'additionalProps',
139
+ ].includes(key)) {
140
+ result[key] = options[key];
141
+ }
142
+ }
143
+ return result;
144
+ };
145
+ if (type.value === 'external') {
146
+ // External links just have simple props
147
+ const externalProps = {
148
+ ...getPropsSafeToSpread(),
149
+ ref,
150
+ href: options.to,
151
+ target: options.target,
152
+ disabled: options.disabled,
153
+ style: options.style,
154
+ class: options.class,
155
+ onClick: options.onClick,
156
+ onFocus: options.onFocus,
157
+ onMouseEnter: options.onMouseEnter,
158
+ onMouseLeave: options.onMouseLeave,
159
+ onMouseOver: options.onMouseOver,
160
+ onMouseOut: options.onMouseOut,
161
+ onTouchStart: options.onTouchStart,
162
+ };
163
+ // Remove undefined values
164
+ Object.keys(externalProps).forEach((key) => {
165
+ if (externalProps[key] === undefined) {
166
+ delete externalProps[key];
167
+ }
168
+ });
169
+ return externalProps;
170
+ }
171
+ // The click handler
172
+ const handleClick = (e) => {
173
+ // Check actual element's target attribute as fallback
174
+ const elementTarget = e.currentTarget?.getAttribute('target');
175
+ const effectiveTarget = options.target !== undefined ? options.target : elementTarget;
176
+ if (!options.disabled &&
177
+ !isCtrlEvent(e) &&
178
+ !e.defaultPrevented &&
179
+ (!effectiveTarget || effectiveTarget === '_self') &&
180
+ e.button === 0) {
181
+ // Don't prevent default or handle navigation if reloadDocument is true
182
+ if (_options.value.reloadDocument) {
183
+ return;
184
+ }
185
+ e.preventDefault();
186
+ isTransitioning.value = true;
187
+ const unsub = router.subscribe('onResolved', () => {
188
+ unsub();
189
+ isTransitioning.value = false;
190
+ });
191
+ // All is well? Navigate!
192
+ router.navigate({
193
+ ..._options.value,
194
+ replace: options.replace,
195
+ resetScroll: options.resetScroll,
196
+ hashScrollIntoView: options.hashScrollIntoView,
197
+ startTransition: options.startTransition,
198
+ viewTransition: options.viewTransition,
199
+ ignoreBlocker: options.ignoreBlocker,
200
+ });
201
+ }
202
+ };
203
+ // The focus handler
204
+ const handleFocus = (_) => {
205
+ if (options.disabled)
206
+ return;
207
+ if (preload.value) {
208
+ doPreload();
209
+ }
210
+ };
211
+ const handleTouchStart = (_) => {
212
+ if (options.disabled)
213
+ return;
214
+ if (preload.value) {
215
+ doPreload();
216
+ }
217
+ };
218
+ const handleEnter = (e) => {
219
+ if (options.disabled)
220
+ return;
221
+ // Use currentTarget (the element with the handler) instead of target (which may be a child)
222
+ const eventTarget = (e.currentTarget ||
223
+ e.target ||
224
+ {});
225
+ if (preload.value) {
226
+ if (eventTarget.preloadTimeout) {
227
+ return;
228
+ }
229
+ eventTarget.preloadTimeout = setTimeout(() => {
230
+ eventTarget.preloadTimeout = null;
231
+ doPreload();
232
+ }, preloadDelay.value);
233
+ }
234
+ };
235
+ const handleLeave = (e) => {
236
+ if (options.disabled)
237
+ return;
238
+ // Use currentTarget (the element with the handler) instead of target (which may be a child)
239
+ const eventTarget = (e.currentTarget ||
240
+ e.target ||
241
+ {});
242
+ if (eventTarget.preloadTimeout) {
243
+ clearTimeout(eventTarget.preloadTimeout);
244
+ eventTarget.preloadTimeout = null;
245
+ }
246
+ };
247
+ // Helper to compose event handlers - with explicit return type and better type handling
248
+ function composeEventHandlers(handlers) {
249
+ return (event) => {
250
+ for (const handler of handlers) {
251
+ if (handler) {
252
+ handler(event);
253
+ }
254
+ }
255
+ };
256
+ }
257
+ // Get the active and inactive props
258
+ const resolvedActiveProps = Vue.computed(() => {
259
+ const activeProps = options.activeProps || (() => ({ class: 'active' }));
260
+ const props = isActive.value
261
+ ? typeof activeProps === 'function'
262
+ ? activeProps()
263
+ : activeProps
264
+ : {};
265
+ return props || { class: undefined, style: undefined };
266
+ });
267
+ const resolvedInactiveProps = Vue.computed(() => {
268
+ const inactiveProps = options.inactiveProps || (() => ({}));
269
+ const props = isActive.value
270
+ ? {}
271
+ : typeof inactiveProps === 'function'
272
+ ? inactiveProps()
273
+ : inactiveProps;
274
+ return props || { class: undefined, style: undefined };
275
+ });
276
+ const resolvedClassName = Vue.computed(() => {
277
+ const classes = [
278
+ options.class,
279
+ resolvedActiveProps.value?.class,
280
+ resolvedInactiveProps.value?.class,
281
+ ].filter(Boolean);
282
+ return classes.length ? classes.join(' ') : undefined;
283
+ });
284
+ const resolvedStyle = Vue.computed(() => {
285
+ const result = {};
286
+ // Merge styles from all sources
287
+ if (options.style) {
288
+ Object.assign(result, options.style);
289
+ }
290
+ if (resolvedActiveProps.value?.style) {
291
+ Object.assign(result, resolvedActiveProps.value.style);
292
+ }
293
+ if (resolvedInactiveProps.value?.style) {
294
+ Object.assign(result, resolvedInactiveProps.value.style);
295
+ }
296
+ return Object.keys(result).length > 0 ? result : undefined;
297
+ });
298
+ const href = Vue.computed(() => {
299
+ if (options.disabled) {
300
+ return undefined;
301
+ }
302
+ const nextLocation = next.value;
303
+ const maskedLocation = nextLocation?.maskedLocation;
304
+ let hrefValue;
305
+ if (maskedLocation) {
306
+ hrefValue = maskedLocation.url;
307
+ }
308
+ else {
309
+ hrefValue = nextLocation?.url;
310
+ }
311
+ // Handle origin stripping like Solid does
312
+ if (router.origin && hrefValue?.startsWith(router.origin)) {
313
+ hrefValue = router.history.createHref(hrefValue.replace(router.origin, ''));
314
+ }
315
+ return hrefValue;
316
+ });
317
+ // Create a reactive proxy that reads computed values on access
318
+ // This allows the returned object to stay reactive when used in templates
319
+ // Use shallowReactive to preserve the ref object without unwrapping it
320
+ const reactiveProps = Vue.shallowReactive({
321
+ ...getPropsSafeToSpread(),
322
+ href: undefined,
323
+ ref,
324
+ onClick: composeEventHandlers([
325
+ options.onClick,
326
+ handleClick,
327
+ ]),
328
+ onFocus: composeEventHandlers([
329
+ options.onFocus,
330
+ handleFocus,
331
+ ]),
332
+ onMouseenter: composeEventHandlers([
333
+ options.onMouseEnter,
334
+ handleEnter,
335
+ ]),
336
+ onMouseover: composeEventHandlers([
337
+ options.onMouseOver,
338
+ handleEnter,
339
+ ]),
340
+ onMouseleave: composeEventHandlers([
341
+ options.onMouseLeave,
342
+ handleLeave,
343
+ ]),
344
+ onMouseout: composeEventHandlers([
345
+ options.onMouseOut,
346
+ handleLeave,
347
+ ]),
348
+ onTouchstart: composeEventHandlers([
349
+ options.onTouchStart,
350
+ handleTouchStart,
351
+ ]),
352
+ disabled: !!options.disabled,
353
+ target: options.target,
354
+ });
355
+ // Watch computed values and update reactive props
356
+ Vue.watchEffect(() => {
357
+ // Update from resolved active/inactive props
358
+ const activeP = resolvedActiveProps.value;
359
+ const inactiveP = resolvedInactiveProps.value;
360
+ // Update href
361
+ reactiveProps.href = href.value;
362
+ // Update style
363
+ if (resolvedStyle.value) {
364
+ reactiveProps.style = resolvedStyle.value;
365
+ }
366
+ else {
367
+ delete reactiveProps.style;
368
+ }
369
+ // Update class
370
+ if (resolvedClassName.value) {
371
+ reactiveProps.class = resolvedClassName.value;
372
+ }
373
+ else {
374
+ delete reactiveProps.class;
375
+ }
376
+ // Update disabled props
377
+ if (options.disabled) {
378
+ reactiveProps.role = 'link';
379
+ reactiveProps['aria-disabled'] = true;
380
+ }
381
+ else {
382
+ delete reactiveProps.role;
383
+ delete reactiveProps['aria-disabled'];
384
+ }
385
+ // Update active status
386
+ if (isActive.value) {
387
+ reactiveProps['data-status'] = 'active';
388
+ reactiveProps['aria-current'] = 'page';
389
+ }
390
+ else {
391
+ delete reactiveProps['data-status'];
392
+ delete reactiveProps['aria-current'];
393
+ }
394
+ // Update transitioning status
395
+ if (isTransitioning.value) {
396
+ reactiveProps['data-transitioning'] = 'transitioning';
397
+ }
398
+ else {
399
+ delete reactiveProps['data-transitioning'];
400
+ }
401
+ // Merge active/inactive props (excluding class and style which are handled above)
402
+ for (const key of Object.keys(activeP)) {
403
+ if (key !== 'class' && key !== 'style') {
404
+ reactiveProps[key] = activeP[key];
405
+ }
406
+ }
407
+ for (const key of Object.keys(inactiveP)) {
408
+ if (key !== 'class' && key !== 'style') {
409
+ reactiveProps[key] = inactiveP[key];
410
+ }
411
+ }
412
+ });
413
+ return reactiveProps;
414
+ }
415
+ export function createLink(Comp) {
416
+ return Vue.defineComponent({
417
+ name: 'CreatedLink',
418
+ inheritAttrs: false,
419
+ setup(_, { attrs, slots }) {
420
+ return () => Vue.h(Link, { ...attrs, _asChild: Comp }, slots);
421
+ },
422
+ });
423
+ }
424
+ const LinkImpl = Vue.defineComponent({
425
+ name: 'Link',
426
+ inheritAttrs: false,
427
+ props: [
428
+ '_asChild',
429
+ 'to',
430
+ 'preload',
431
+ 'preloadDelay',
432
+ 'activeProps',
433
+ 'inactiveProps',
434
+ 'activeOptions',
435
+ 'from',
436
+ 'search',
437
+ 'params',
438
+ 'hash',
439
+ 'state',
440
+ 'mask',
441
+ 'reloadDocument',
442
+ 'disabled',
443
+ 'additionalProps',
444
+ 'viewTransition',
445
+ 'resetScroll',
446
+ 'startTransition',
447
+ 'hashScrollIntoView',
448
+ 'replace',
449
+ 'ignoreBlocker',
450
+ 'target',
451
+ ],
452
+ setup(props, { attrs, slots }) {
453
+ // Call useLinkProps ONCE during setup with combined props and attrs
454
+ // The returned object includes computed values that update reactively
455
+ const allProps = { ...props, ...attrs };
456
+ const linkProps = useLinkProps(allProps);
457
+ return () => {
458
+ const Component = props._asChild || 'a';
459
+ const isActive = linkProps['data-status'] === 'active';
460
+ const isTransitioning = linkProps['data-transitioning'] === 'transitioning';
461
+ // Create the slot content or empty array if no default slot
462
+ const slotContent = slots.default
463
+ ? slots.default({
464
+ isActive,
465
+ isTransitioning,
466
+ })
467
+ : [];
468
+ // Special handling for SVG links - wrap an <a> inside the SVG
469
+ if (Component === 'svg') {
470
+ // Create props without class for svg link
471
+ const svgLinkProps = { ...linkProps };
472
+ delete svgLinkProps.class;
473
+ return Vue.h('svg', {}, [Vue.h('a', svgLinkProps, slotContent)]);
474
+ }
475
+ // For custom functional components (non-string), pass children as a prop
476
+ // since they may expect children as a prop like in Solid
477
+ if (typeof Component !== 'string') {
478
+ return Vue.h(Component, { ...linkProps, children: slotContent }, slotContent);
479
+ }
480
+ // Return the component with props and children
481
+ return Vue.h(Component, linkProps, slotContent);
482
+ };
483
+ },
484
+ });
485
+ /**
486
+ * Link component with proper TypeScript generics support
487
+ */
488
+ export const Link = LinkImpl;
489
+ function isCtrlEvent(e) {
490
+ return !!(e.metaKey || e.altKey || e.ctrlKey || e.shiftKey);
491
+ }
492
+ export const linkOptions = (options) => {
493
+ return options;
494
+ };
495
+ //# sourceMappingURL=link.jsx.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"link.jsx","sourceRoot":"","sources":["../../src/link.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,KAAK,CAAA;AAC1B,OAAO,EACL,SAAS,EACT,aAAa,EACb,cAAc,EACd,mBAAmB,GACpB,MAAM,uBAAuB,CAAA;AAE9B,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAA;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AA2CtC,MAAM,UAAU,YAAY,CAO1B,OAAqE;IAErE,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAC1B,MAAM,eAAe,GAAG,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IACtC,IAAI,gBAAgB,GAAG,KAAK,CAAA;IAE5B,6CAA6C;IAC7C,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,CAAC,IAAI,CAAC,6DAA6D,CAAC,CAAA;QAC3E,OAAO,EAAE,CAAA;IACX,CAAC;IAED,gDAAgD;IAChD,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE;QAC7B,IAAI,CAAC;YACH,IAAI,GAAG,CAAC,GAAG,OAAO,CAAC,EAAE,EAAE,CAAC,CAAA;YACxB,OAAO,UAAU,CAAA;QACnB,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,UAAU,CAAA;QACnB,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,MAAM,aAAa,GAAG,cAAc,CAAC;QACnC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS;KACpC,CAAC,CAAA;IAEF,gGAAgG;IAChG,MAAM,IAAI,GAAG,UAAU,CAAC;QACtB,MAAM,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,QAAQ;KAC3E,CAAC,CAAA;IAEF,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC;QACnC,GAAG,OAAO;QACV,IAAI,EAAE,IAAI,CAAC,KAAK;KACjB,CAAC,CAAC,CAAA;IAEH,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE;QAC7B,kDAAkD;QAClD,aAAa,CAAC,KAAK,CAAA;QACnB,OAAO,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAY,CAAC,CAAA;IACpD,CAAC,CAAC,CAAA;IAEF,MAAM,OAAO,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE;QAChC,IAAI,QAAQ,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;YAClC,OAAO,KAAK,CAAA;QACd,CAAC;QACD,OAAO,OAAO,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,cAAc,CAAA;IACzD,CAAC,CAAC,CAAA;IAEF,MAAM,YAAY,GAAG,GAAG,CAAC,QAAQ,CAC/B,GAAG,EAAE,CAAC,OAAO,CAAC,YAAY,IAAI,MAAM,CAAC,OAAO,CAAC,mBAAmB,IAAI,CAAC,CACtE,CAAA;IAED,MAAM,QAAQ,GAAG,cAAc,CAAC;QAC9B,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE;YACZ,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,CAAA;YAC3C,IAAI,aAAa,EAAE,KAAK,EAAE,CAAC;gBACzB,MAAM,SAAS,GAAG,aAAa,CAC7B,CAAC,CAAC,QAAQ,CAAC,QAAQ,EACnB,IAAI,CAAC,KAAK,CAAC,QAAQ,EACnB,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,CAAC,KAAK,EAAE,QAAQ,EACpB,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,aAAa,EAAE,aAAa,IAAI,IAAI,EAAE,CAAC;gBACzC,MAAM,UAAU,GAAG,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;oBACjE,OAAO,EAAE,CAAC,aAAa,EAAE,KAAK;oBAC9B,eAAe,EAAE,CAAC,aAAa,EAAE,iBAAiB;iBACnD,CAAC,CAAA;gBACF,IAAI,CAAC,UAAU,EAAE,CAAC;oBAChB,OAAO,KAAK,CAAA;gBACd,CAAC;YACH,CAAC;YAED,IAAI,aAAa,EAAE,WAAW,EAAE,CAAC;gBAC/B,OAAO,CAAC,CAAC,QAAQ,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI,CAAA;YAC5C,CAAC;YACD,OAAO,IAAI,CAAA;QACb,CAAC;KACF,CAAC,CAAA;IAEF,MAAM,SAAS,GAAG,GAAG,EAAE,CACrB,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAY,CAAC,CAAC,KAAK,CAAC,CAAC,GAAQ,EAAE,EAAE;QAC5D,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,GAAG,GAAG,GAAG,CAAC,GAAG,CAAiB,IAAI,CAAC,CAAA;IAEzC,uBAAuB,CACrB,GAAG,EACH,yBAAyB,EACzB,EAAE,UAAU,EAAE,OAAO,EAAE,EACvB,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,KAAK,UAAU,CAAC,EAAE,CAC1E,CAAA;IAED,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE;QACd,IAAI,gBAAgB,EAAE,CAAC;YACrB,OAAM;QACR,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YACpD,SAAS,EAAE,CAAA;YACX,gBAAgB,GAAG,IAAI,CAAA;QACzB,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,uCAAuC;IACvC,MAAM,oBAAoB,GAAG,GAAG,EAAE;QAChC,MAAM,MAAM,GAAwB,EAAE,CAAA;QACtC,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;YAC1B,IACE,CAAC;gBACC,aAAa;gBACb,eAAe;gBACf,eAAe;gBACf,IAAI;gBACJ,SAAS;gBACT,cAAc;gBACd,oBAAoB;gBACpB,SAAS;gBACT,iBAAiB;gBACjB,aAAa;gBACb,gBAAgB;gBAChB,UAAU;gBACV,QAAQ;gBACR,UAAU;gBACV,OAAO;gBACP,OAAO;gBACP,SAAS;gBACT,SAAS;gBACT,cAAc;gBACd,cAAc;gBACd,aAAa;gBACb,YAAY;gBACZ,cAAc;gBACd,eAAe;gBACf,QAAQ;gBACR,QAAQ;gBACR,MAAM;gBACN,OAAO;gBACP,MAAM;gBACN,gBAAgB;gBAChB,UAAU;gBACV,MAAM;gBACN,iBAAiB;aAClB,CAAC,QAAQ,CAAC,GAAG,CAAC,EACf,CAAC;gBACD,MAAM,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAA;YAC5B,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAA;IACf,CAAC,CAAA;IAED,IAAI,IAAI,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;QAC9B,wCAAwC;QACxC,MAAM,aAAa,GAAmB;YACpC,GAAG,oBAAoB,EAAE;YACzB,GAAG;YACH,IAAI,EAAE,OAAO,CAAC,EAAE;YAChB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,YAAY,EAAE,OAAO,CAAC,YAAY;YAClC,YAAY,EAAE,OAAO,CAAC,YAAY;YAClC,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,YAAY,EAAE,OAAO,CAAC,YAAY;SACnC,CAAA;QAED,0BAA0B;QAC1B,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YACzC,IAAI,aAAa,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE,CAAC;gBACrC,OAAO,aAAa,CAAC,GAAG,CAAC,CAAA;YAC3B,CAAC;QACH,CAAC,CAAC,CAAA;QAEF,OAAO,aAAa,CAAA;IACtB,CAAC;IAED,oBAAoB;IACpB,MAAM,WAAW,GAAG,CAAC,CAAa,EAAQ,EAAE;QAC1C,sDAAsD;QACtD,MAAM,aAAa,GACjB,CAAC,CAAC,aACH,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAA;QACzB,MAAM,eAAe,GACnB,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,CAAA;QAE/D,IACE,CAAC,OAAO,CAAC,QAAQ;YACjB,CAAC,WAAW,CAAC,CAAC,CAAC;YACf,CAAC,CAAC,CAAC,gBAAgB;YACnB,CAAC,CAAC,eAAe,IAAI,eAAe,KAAK,OAAO,CAAC;YACjD,CAAC,CAAC,MAAM,KAAK,CAAC,EACd,CAAC;YACD,uEAAuE;YACvE,IAAI,QAAQ,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;gBAClC,OAAM;YACR,CAAC;YAED,CAAC,CAAC,cAAc,EAAE,CAAA;YAElB,eAAe,CAAC,KAAK,GAAG,IAAI,CAAA;YAE5B,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,YAAY,EAAE,GAAG,EAAE;gBAChD,KAAK,EAAE,CAAA;gBACP,eAAe,CAAC,KAAK,GAAG,KAAK,CAAA;YAC/B,CAAC,CAAC,CAAA;YAEF,yBAAyB;YACzB,MAAM,CAAC,QAAQ,CAAC;gBACd,GAAG,QAAQ,CAAC,KAAK;gBACjB,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,WAAW,EAAE,OAAO,CAAC,WAAW;gBAChC,kBAAkB,EAAE,OAAO,CAAC,kBAAkB;gBAC9C,eAAe,EAAE,OAAO,CAAC,eAAe;gBACxC,cAAc,EAAE,OAAO,CAAC,cAAc;gBACtC,aAAa,EAAE,OAAO,CAAC,aAAa;aAC9B,CAAC,CAAA;QACX,CAAC;IACH,CAAC,CAAA;IAED,oBAAoB;IACpB,MAAM,WAAW,GAAG,CAAC,CAAa,EAAE,EAAE;QACpC,IAAI,OAAO,CAAC,QAAQ;YAAE,OAAM;QAC5B,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,SAAS,EAAE,CAAA;QACb,CAAC;IACH,CAAC,CAAA;IAED,MAAM,gBAAgB,GAAG,CAAC,CAAa,EAAE,EAAE;QACzC,IAAI,OAAO,CAAC,QAAQ;YAAE,OAAM;QAC5B,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,SAAS,EAAE,CAAA;QACb,CAAC;IACH,CAAC,CAAA;IAED,MAAM,WAAW,GAAG,CAAC,CAAa,EAAE,EAAE;QACpC,IAAI,OAAO,CAAC,QAAQ;YAAE,OAAM;QAC5B,4FAA4F;QAC5F,MAAM,WAAW,GAAG,CAAC,CAAC,CAAC,aAAa;YAClC,CAAC,CAAC,MAAM;YACR,EAAE,CAA6B,CAAA;QAEjC,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,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,CAAC,KAAK,CAAC,CAAA;QACxB,CAAC;IACH,CAAC,CAAA;IAED,MAAM,WAAW,GAAG,CAAC,CAAa,EAAE,EAAE;QACpC,IAAI,OAAO,CAAC,QAAQ;YAAE,OAAM;QAC5B,4FAA4F;QAC5F,MAAM,WAAW,GAAG,CAAC,CAAC,CAAC,aAAa;YAClC,CAAC,CAAC,MAAM;YACR,EAAE,CAA6B,CAAA;QAEjC,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,wFAAwF;IACxF,SAAS,oBAAoB,CAC3B,QAA4C;QAE5C,OAAO,CAAC,KAAQ,EAAE,EAAE;YAClB,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;gBAC/B,IAAI,OAAO,EAAE,CAAC;oBACZ,OAAO,CAAC,KAAK,CAAC,CAAA;gBAChB,CAAC;YACH,CAAC;QACH,CAAC,CAAA;IACH,CAAC;IAED,oCAAoC;IACpC,MAAM,mBAAmB,GAAG,GAAG,CAAC,QAAQ,CAAc,GAAG,EAAE;QACzD,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAA;QACxE,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK;YAC1B,CAAC,CAAC,OAAO,WAAW,KAAK,UAAU;gBACjC,CAAC,CAAC,WAAW,EAAE;gBACf,CAAC,CAAC,WAAW;YACf,CAAC,CAAC,EAAE,CAAA;QAEN,OAAO,KAAK,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,CAAA;IACxD,CAAC,CAAC,CAAA;IAEF,MAAM,qBAAqB,GAAG,GAAG,CAAC,QAAQ,CAAc,GAAG,EAAE;QAC3D,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;QAC3D,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK;YAC1B,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,OAAO,aAAa,KAAK,UAAU;gBACnC,CAAC,CAAC,aAAa,EAAE;gBACjB,CAAC,CAAC,aAAa,CAAA;QAEnB,OAAO,KAAK,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,CAAA;IACxD,CAAC,CAAC,CAAA;IAEF,MAAM,iBAAiB,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE;QAC1C,MAAM,OAAO,GAAG;YACd,OAAO,CAAC,KAAK;YACb,mBAAmB,CAAC,KAAK,EAAE,KAAK;YAChC,qBAAqB,CAAC,KAAK,EAAE,KAAK;SACnC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;QACjB,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IACvD,CAAC,CAAC,CAAA;IAEF,MAAM,aAAa,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE;QACtC,MAAM,MAAM,GAAoC,EAAE,CAAA;QAElD,gCAAgC;QAChC,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,CAAA;QACtC,CAAC;QAED,IAAI,mBAAmB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC;YACrC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QACxD,CAAC;QAED,IAAI,qBAAqB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC;YACvC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QAC1D,CAAC;QAED,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAA;IAC5D,CAAC,CAAC,CAAA;IAEF,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE;QAC7B,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YACrB,OAAO,SAAS,CAAA;QAClB,CAAC;QACD,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAA;QAC/B,MAAM,cAAc,GAAG,YAAY,EAAE,cAAc,CAAA;QAEnD,IAAI,SAAiB,CAAA;QACrB,IAAI,cAAc,EAAE,CAAC;YACnB,SAAS,GAAG,cAAc,CAAC,GAAG,CAAA;QAChC,CAAC;aAAM,CAAC;YACN,SAAS,GAAG,YAAY,EAAE,GAAG,CAAA;QAC/B,CAAC;QAED,0CAA0C;QAC1C,IAAI,MAAM,CAAC,MAAM,IAAI,SAAS,EAAE,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1D,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,CACnC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,CACrC,CAAA;QACH,CAAC;QAED,OAAO,SAAS,CAAA;IAClB,CAAC,CAAC,CAAA;IAEF,+DAA+D;IAC/D,0EAA0E;IAC1E,uEAAuE;IACvE,MAAM,aAAa,GAAmB,GAAG,CAAC,eAAe,CAAC;QACxD,GAAG,oBAAoB,EAAE;QACzB,IAAI,EAAE,SAA+B;QACrC,GAAG;QACH,OAAO,EAAE,oBAAoB,CAAa;YACxC,OAAO,CAAC,OAAO;YACf,WAAW;SACZ,CAAQ;QACT,OAAO,EAAE,oBAAoB,CAAa;YACxC,OAAO,CAAC,OAAO;YACf,WAAW;SACZ,CAAQ;QACT,YAAY,EAAE,oBAAoB,CAAa;YAC7C,OAAO,CAAC,YAAY;YACpB,WAAW;SACZ,CAAQ;QACT,WAAW,EAAE,oBAAoB,CAAa;YAC5C,OAAO,CAAC,WAAW;YACnB,WAAW;SACZ,CAAQ;QACT,YAAY,EAAE,oBAAoB,CAAa;YAC7C,OAAO,CAAC,YAAY;YACpB,WAAW;SACZ,CAAQ;QACT,UAAU,EAAE,oBAAoB,CAAa;YAC3C,OAAO,CAAC,UAAU;YAClB,WAAW;SACZ,CAAQ;QACT,YAAY,EAAE,oBAAoB,CAAa;YAC7C,OAAO,CAAC,YAAY;YACpB,gBAAgB;SACjB,CAAQ;QACT,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ;QAC5B,MAAM,EAAE,OAAO,CAAC,MAAM;KACvB,CAAC,CAAA;IAEF,kDAAkD;IAClD,GAAG,CAAC,WAAW,CAAC,GAAG,EAAE;QACnB,6CAA6C;QAC7C,MAAM,OAAO,GAAG,mBAAmB,CAAC,KAAK,CAAA;QACzC,MAAM,SAAS,GAAG,qBAAqB,CAAC,KAAK,CAAA;QAE7C,cAAc;QACd,aAAa,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAA;QAE/B,eAAe;QACf,IAAI,aAAa,CAAC,KAAK,EAAE,CAAC;YACxB,aAAa,CAAC,KAAK,GAAG,aAAa,CAAC,KAAK,CAAA;QAC3C,CAAC;aAAM,CAAC;YACN,OAAO,aAAa,CAAC,KAAK,CAAA;QAC5B,CAAC;QAED,eAAe;QACf,IAAI,iBAAiB,CAAC,KAAK,EAAE,CAAC;YAC5B,aAAa,CAAC,KAAK,GAAG,iBAAiB,CAAC,KAAK,CAAA;QAC/C,CAAC;aAAM,CAAC;YACN,OAAO,aAAa,CAAC,KAAK,CAAA;QAC5B,CAAC;QAED,wBAAwB;QACxB,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YACrB,aAAa,CAAC,IAAI,GAAG,MAAM,CAAA;YAC3B,aAAa,CAAC,eAAe,CAAC,GAAG,IAAI,CAAA;QACvC,CAAC;aAAM,CAAC;YACN,OAAO,aAAa,CAAC,IAAI,CAAA;YACzB,OAAO,aAAa,CAAC,eAAe,CAAC,CAAA;QACvC,CAAC;QAED,uBAAuB;QACvB,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;YACnB,aAAa,CAAC,aAAa,CAAC,GAAG,QAAQ,CAAA;YACvC,aAAa,CAAC,cAAc,CAAC,GAAG,MAAM,CAAA;QACxC,CAAC;aAAM,CAAC;YACN,OAAO,aAAa,CAAC,aAAa,CAAC,CAAA;YACnC,OAAO,aAAa,CAAC,cAAc,CAAC,CAAA;QACtC,CAAC;QAED,8BAA8B;QAC9B,IAAI,eAAe,CAAC,KAAK,EAAE,CAAC;YAC1B,aAAa,CAAC,oBAAoB,CAAC,GAAG,eAAe,CAAA;QACvD,CAAC;aAAM,CAAC;YACN,OAAO,aAAa,CAAC,oBAAoB,CAAC,CAAA;QAC5C,CAAC;QAED,kFAAkF;QAClF,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YACvC,IAAI,GAAG,KAAK,OAAO,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;gBACvC,aAAa,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAA;YACnC,CAAC;QACH,CAAC;QACD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;YACzC,IAAI,GAAG,KAAK,OAAO,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;gBACvC,aAAa,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,CAAA;YACrC,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,OAAO,aAAa,CAAA;AACtB,CAAC;AA6FD,MAAM,UAAU,UAAU,CACxB,IAAkE;IAElE,OAAO,GAAG,CAAC,eAAe,CAAC;QACzB,IAAI,EAAE,aAAa;QACnB,YAAY,EAAE,KAAK;QACnB,KAAK,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE;YACvB,OAAO,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,GAAG,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,KAAK,CAAC,CAAA;QAC/D,CAAC;KACF,CAAQ,CAAA;AACX,CAAC;AAED,MAAM,QAAQ,GAAG,GAAG,CAAC,eAAe,CAAC;IACnC,IAAI,EAAE,MAAM;IACZ,YAAY,EAAE,KAAK;IACnB,KAAK,EAAE;QACL,UAAU;QACV,IAAI;QACJ,SAAS;QACT,cAAc;QACd,aAAa;QACb,eAAe;QACf,eAAe;QACf,MAAM;QACN,QAAQ;QACR,QAAQ;QACR,MAAM;QACN,OAAO;QACP,MAAM;QACN,gBAAgB;QAChB,UAAU;QACV,iBAAiB;QACjB,gBAAgB;QAChB,aAAa;QACb,iBAAiB;QACjB,oBAAoB;QACpB,SAAS;QACT,eAAe;QACf,QAAQ;KACT;IACD,KAAK,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE;QAC3B,oEAAoE;QACpE,sEAAsE;QACtE,MAAM,QAAQ,GAAG,EAAE,GAAG,KAAK,EAAE,GAAG,KAAK,EAAE,CAAA;QACvC,MAAM,SAAS,GAAG,YAAY,CAAC,QAAe,CAAC,CAAA;QAE/C,OAAO,GAAG,EAAE;YACV,MAAM,SAAS,GAAG,KAAK,CAAC,QAAQ,IAAI,GAAG,CAAA;YAEvC,MAAM,QAAQ,GAAG,SAAS,CAAC,aAAa,CAAC,KAAK,QAAQ,CAAA;YACtD,MAAM,eAAe,GACnB,SAAS,CAAC,oBAAoB,CAAC,KAAK,eAAe,CAAA;YAErD,4DAA4D;YAC5D,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO;gBAC/B,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC;oBACZ,QAAQ;oBACR,eAAe;iBAChB,CAAC;gBACJ,CAAC,CAAC,EAAE,CAAA;YAEN,8DAA8D;YAC9D,IAAI,SAAS,KAAK,KAAK,EAAE,CAAC;gBACxB,0CAA0C;gBAC1C,MAAM,YAAY,GAAG,EAAE,GAAG,SAAS,EAAE,CAAA;gBACrC,OAAQ,YAAoB,CAAC,KAAK,CAAA;gBAClC,OAAO,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC,CAAC,CAAA;YAClE,CAAC;YAED,yEAAyE;YACzE,yDAAyD;YACzD,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;gBAClC,OAAO,GAAG,CAAC,CAAC,CACV,SAAS,EACT,EAAE,GAAG,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,EACvC,WAAW,CACZ,CAAA;YACH,CAAC;YAED,+CAA+C;YAC/C,OAAO,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,SAAS,EAAE,WAAW,CAAC,CAAA;QACjD,CAAC,CAAA;IACH,CAAC;CACF,CAAC,CAAA;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG,QAUnB,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,20 @@
1
+ import * as Vue from 'vue';
2
+ export declare const matchContext: Vue.InjectionKey<Vue.Ref<string | undefined>>;
3
+ export declare const dummyMatchContext: Vue.InjectionKey<Vue.Ref<string | undefined>>;
4
+ /**
5
+ * Provides a match ID to child components
6
+ */
7
+ export declare function provideMatch(matchId: string | undefined): void;
8
+ /**
9
+ * Retrieves the match ID from the component tree
10
+ */
11
+ export declare function injectMatch(): Vue.Ref<string | undefined>;
12
+ /**
13
+ * Provides a dummy match ID to child components
14
+ */
15
+ export declare function provideDummyMatch(matchId: string | undefined): void;
16
+ /**
17
+ * Retrieves the dummy match ID from the component tree
18
+ * This only exists so we can conditionally inject a value when we are not interested in the nearest match
19
+ */
20
+ export declare function injectDummyMatch(): Vue.Ref<string | undefined>;
@@ -0,0 +1,32 @@
1
+ import * as Vue from 'vue';
2
+ // Create a typed injection key with support for undefined values
3
+ // This is the primary match context used throughout the router
4
+ export const matchContext = Symbol('TanStackRouterMatch');
5
+ // Dummy match context for when we want to look up by explicit 'from' route
6
+ export const dummyMatchContext = Symbol('TanStackRouterDummyMatch');
7
+ /**
8
+ * Provides a match ID to child components
9
+ */
10
+ export function provideMatch(matchId) {
11
+ Vue.provide(matchContext, Vue.ref(matchId));
12
+ }
13
+ /**
14
+ * Retrieves the match ID from the component tree
15
+ */
16
+ export function injectMatch() {
17
+ return Vue.inject(matchContext, Vue.ref(undefined));
18
+ }
19
+ /**
20
+ * Provides a dummy match ID to child components
21
+ */
22
+ export function provideDummyMatch(matchId) {
23
+ Vue.provide(dummyMatchContext, Vue.ref(matchId));
24
+ }
25
+ /**
26
+ * Retrieves the dummy match ID from the component tree
27
+ * This only exists so we can conditionally inject a value when we are not interested in the nearest match
28
+ */
29
+ export function injectDummyMatch() {
30
+ return Vue.inject(dummyMatchContext, Vue.ref(undefined));
31
+ }
32
+ //# sourceMappingURL=matchContext.jsx.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"matchContext.jsx","sourceRoot":"","sources":["../../src/matchContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,KAAK,CAAA;AAE1B,iEAAiE;AACjE,+DAA+D;AAC/D,MAAM,CAAC,MAAM,YAAY,GAAG,MAAM,CAAC,qBAAqB,CAEvD,CAAA;AAED,2EAA2E;AAC3E,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CACrC,0BAA0B,CACsB,CAAA;AAElD;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,OAA2B;IACtD,GAAG,CAAC,OAAO,CAAC,YAAY,EAAE,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAA;AAC7C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW;IACzB,OAAO,GAAG,CAAC,MAAM,CAAC,YAAY,EAAE,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAA;AACrD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAA2B;IAC3D,GAAG,CAAC,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAA;AAClD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB;IAC9B,OAAO,GAAG,CAAC,MAAM,CAAC,iBAAiB,EAAE,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAA;AAC1D,CAAC"}
@@ -0,0 +1,12 @@
1
+ import * as Vue from 'vue';
2
+ import type { NotFoundError } from '@tanstack/router-core';
3
+ export declare function CatchNotFound(props: {
4
+ fallback?: (error: NotFoundError) => Vue.VNode;
5
+ onCatch?: (error: Error) => void;
6
+ children: Vue.VNode;
7
+ }): Vue.VNode<Vue.RendererNode, Vue.RendererElement, {
8
+ [key: string]: any;
9
+ }>;
10
+ export declare const DefaultGlobalNotFound: Vue.DefineComponent<{}, () => Vue.VNode<Vue.RendererNode, Vue.RendererElement, {
11
+ [key: string]: any;
12
+ }>, {}, {}, {}, Vue.ComponentOptionsMixin, Vue.ComponentOptionsMixin, {}, string, Vue.PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, Vue.ComponentProvideOptions, true, {}, any>;
@@ -0,0 +1,48 @@
1
+ import * as Vue from 'vue';
2
+ import { isNotFound } from '@tanstack/router-core';
3
+ import { CatchBoundary } from './CatchBoundary';
4
+ import { useRouterState } from './useRouterState';
5
+ export function CatchNotFound(props) {
6
+ // TODO: Some way for the user to programmatically reset the not-found boundary?
7
+ const resetKey = useRouterState({
8
+ select: (s) => `not-found-${s.location.pathname}-${s.status}`,
9
+ });
10
+ // Create a function that returns a VNode to match the SyncRouteComponent signature
11
+ const errorComponentFn = (componentProps) => {
12
+ const error = componentProps.error;
13
+ if (isNotFound(error)) {
14
+ // If a fallback is provided, use it
15
+ if (props.fallback) {
16
+ return props.fallback(error);
17
+ }
18
+ // Otherwise return a default not found message
19
+ return Vue.h('p', null, 'Not Found');
20
+ }
21
+ else {
22
+ // Re-throw non-NotFound errors
23
+ throw error;
24
+ }
25
+ };
26
+ return Vue.h(CatchBoundary, {
27
+ getResetKey: () => resetKey.value,
28
+ onCatch: (error) => {
29
+ if (isNotFound(error)) {
30
+ if (props.onCatch) {
31
+ props.onCatch(error);
32
+ }
33
+ }
34
+ else {
35
+ throw error;
36
+ }
37
+ },
38
+ errorComponent: errorComponentFn,
39
+ children: props.children,
40
+ });
41
+ }
42
+ export const DefaultGlobalNotFound = Vue.defineComponent({
43
+ name: 'DefaultGlobalNotFound',
44
+ setup() {
45
+ return () => Vue.h('p', null, 'Not Found');
46
+ },
47
+ });
48
+ //# 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,KAAK,GAAG,MAAM,KAAK,CAAA;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAGjD,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,mFAAmF;IACnF,MAAM,gBAAgB,GAAG,CAAC,cAAmC,EAAE,EAAE;QAC/D,MAAM,KAAK,GAAG,cAAc,CAAC,KAAK,CAAA;QAElC,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;YACtB,oCAAoC;YACpC,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;gBACnB,OAAO,KAAK,CAAC,QAAQ,CAAC,KAAsB,CAAC,CAAA;YAC/C,CAAC;YACD,+CAA+C;YAC/C,OAAO,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,WAAW,CAAC,CAAA;QACtC,CAAC;aAAM,CAAC;YACN,+BAA+B;YAC/B,MAAM,KAAK,CAAA;QACb,CAAC;IACH,CAAC,CAAA;IAED,OAAO,GAAG,CAAC,CAAC,CAAC,aAAa,EAAE;QAC1B,WAAW,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,KAAK;QACjC,OAAO,EAAE,CAAC,KAAY,EAAE,EAAE;YACxB,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;gBACtB,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;oBAClB,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;gBACtB,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,MAAM,KAAK,CAAA;YACb,CAAC;QACH,CAAC;QACD,cAAc,EAAE,gBAAgB;QAChC,QAAQ,EAAE,KAAK,CAAC,QAAQ;KACzB,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAG,CAAC,eAAe,CAAC;IACvD,IAAI,EAAE,uBAAuB;IAC7B,KAAK;QACH,OAAO,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,WAAW,CAAC,CAAA;IAC5C,CAAC;CACF,CAAC,CAAA"}
@@ -0,0 +1,11 @@
1
+ import * as Vue from 'vue';
2
+ import type { AnyRoute, AnyRouter } from '@tanstack/router-core';
3
+ /**
4
+ * Renders a not found component for a route when no matching route is found.
5
+ *
6
+ * @param router - The router instance containing the route configuration
7
+ * @param route - The route that triggered the not found state
8
+ * @param data - Additional data to pass to the not found component
9
+ * @returns The rendered not found component or a default fallback component
10
+ */
11
+ export declare function renderRouteNotFound(router: AnyRouter, route: AnyRoute, data: any): Vue.VNode;