@tanstack/vue-router 1.156.0 → 1.157.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.
- package/dist/esm/Asset.js +4 -3
- package/dist/esm/Asset.js.map +1 -1
- package/dist/esm/Match.js +2 -2
- package/dist/esm/Match.js.map +1 -1
- package/dist/esm/Matches.js +2 -1
- package/dist/esm/Matches.js.map +1 -1
- package/dist/esm/ScriptOnce.js +2 -1
- package/dist/esm/ScriptOnce.js.map +1 -1
- package/dist/esm/Transitioner.js +2 -2
- package/dist/esm/Transitioner.js.map +1 -1
- package/dist/esm/scroll-restoration.js +2 -2
- package/dist/esm/scroll-restoration.js.map +1 -1
- package/dist/source/Asset.jsx +4 -3
- package/dist/source/Asset.jsx.map +1 -1
- package/dist/source/Match.jsx +2 -2
- package/dist/source/Match.jsx.map +1 -1
- package/dist/source/Matches.jsx +3 -1
- package/dist/source/Matches.jsx.map +1 -1
- package/dist/source/ScriptOnce.jsx +2 -1
- package/dist/source/ScriptOnce.jsx.map +1 -1
- package/dist/source/Transitioner.jsx +2 -2
- package/dist/source/Transitioner.jsx.map +1 -1
- package/dist/source/scroll-restoration.jsx +2 -2
- package/dist/source/scroll-restoration.jsx.map +1 -1
- package/package.json +2 -2
- package/src/Asset.tsx +4 -3
- package/src/Match.tsx +2 -1
- package/src/Matches.tsx +3 -1
- package/src/ScriptOnce.tsx +2 -1
- package/src/Transitioner.tsx +2 -1
- package/src/scroll-restoration.tsx +2 -1
package/dist/esm/Asset.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import * as Vue from "vue";
|
|
2
2
|
import { createVNode, mergeProps } from "vue";
|
|
3
|
+
import { isServer } from "@tanstack/router-core";
|
|
3
4
|
import { useRouter } from "./useRouter.js";
|
|
4
5
|
const Title = Vue.defineComponent({
|
|
5
6
|
name: "Title",
|
|
@@ -11,7 +12,7 @@ const Title = Vue.defineComponent({
|
|
|
11
12
|
},
|
|
12
13
|
setup(props) {
|
|
13
14
|
const router = useRouter();
|
|
14
|
-
if (!router.isServer) {
|
|
15
|
+
if (!(isServer ?? router.isServer)) {
|
|
15
16
|
Vue.onMounted(() => {
|
|
16
17
|
if (props.children) {
|
|
17
18
|
document.title = props.children;
|
|
@@ -40,7 +41,7 @@ const Script = Vue.defineComponent({
|
|
|
40
41
|
},
|
|
41
42
|
setup(props) {
|
|
42
43
|
const router = useRouter();
|
|
43
|
-
if (!router.isServer) {
|
|
44
|
+
if (!(isServer ?? router.isServer)) {
|
|
44
45
|
Vue.onMounted(() => {
|
|
45
46
|
const attrs = props.attrs;
|
|
46
47
|
const children = props.children;
|
|
@@ -90,7 +91,7 @@ const Script = Vue.defineComponent({
|
|
|
90
91
|
});
|
|
91
92
|
}
|
|
92
93
|
return () => {
|
|
93
|
-
if (!router.isServer) {
|
|
94
|
+
if (!(isServer ?? router.isServer)) {
|
|
94
95
|
const {
|
|
95
96
|
src: _src,
|
|
96
97
|
...rest
|
package/dist/esm/Asset.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Asset.js","sources":["../../src/Asset.tsx"],"sourcesContent":["import * as Vue from 'vue'\nimport { useRouter } from './useRouter'\nimport type { RouterManagedTag } from '@tanstack/router-core'\n\ninterface ScriptAttrs {\n [key: string]: string | boolean | undefined\n src?: string\n}\n\nconst Title = Vue.defineComponent({\n name: 'Title',\n props: {\n children: {\n type: String,\n default: '',\n },\n },\n setup(props) {\n const router = useRouter()\n\n if (!router.isServer) {\n Vue.onMounted(() => {\n if (props.children) {\n document.title = props.children\n }\n })\n\n Vue.watch(\n () => props.children,\n (newTitle) => {\n if (newTitle) {\n document.title = newTitle\n }\n },\n )\n }\n\n return () => Vue.h('title', {}, props.children)\n },\n})\n\nconst Script = Vue.defineComponent({\n name: 'Script',\n props: {\n attrs: {\n type: Object as Vue.PropType<ScriptAttrs>,\n default: () => ({}),\n },\n children: {\n type: String,\n default: undefined,\n },\n },\n setup(props) {\n const router = useRouter()\n\n if (!router.isServer) {\n Vue.onMounted(() => {\n const attrs = props.attrs\n const children = props.children\n\n if (attrs?.src) {\n const normSrc = (() => {\n try {\n const base = document.baseURI || window.location.href\n return new URL(attrs.src, base).href\n } catch {\n return attrs.src\n }\n })()\n const existingScript = Array.from(\n document.querySelectorAll('script[src]'),\n ).find((el) => (el as HTMLScriptElement).src === normSrc)\n\n if (existingScript) {\n return\n }\n\n const script = document.createElement('script')\n\n for (const [key, value] of Object.entries(attrs)) {\n if (value !== undefined && value !== false) {\n script.setAttribute(\n key,\n typeof value === 'boolean' ? '' : String(value),\n )\n }\n }\n\n document.head.appendChild(script)\n } else if (typeof children === 'string') {\n const typeAttr =\n typeof attrs?.type === 'string' ? attrs.type : 'text/javascript'\n const nonceAttr =\n typeof attrs?.nonce === 'string' ? attrs.nonce : undefined\n const existingScript = Array.from(\n document.querySelectorAll('script:not([src])'),\n ).find((el) => {\n if (!(el instanceof HTMLScriptElement)) return false\n const sType = el.getAttribute('type') ?? 'text/javascript'\n const sNonce = el.getAttribute('nonce') ?? undefined\n return (\n el.textContent === children &&\n sType === typeAttr &&\n sNonce === nonceAttr\n )\n })\n\n if (existingScript) {\n return\n }\n\n const script = document.createElement('script')\n script.textContent = children\n\n if (attrs) {\n for (const [key, value] of Object.entries(attrs)) {\n if (value !== undefined && value !== false) {\n script.setAttribute(\n key,\n typeof value === 'boolean' ? '' : String(value),\n )\n }\n }\n }\n\n document.head.appendChild(script)\n }\n })\n }\n\n return () => {\n if (!router.isServer) {\n const { src: _src, ...rest } = props.attrs || {}\n return Vue.h('script', {\n ...rest,\n 'data-allow-mismatch': true,\n innerHTML: '',\n })\n }\n\n if (props.attrs?.src && typeof props.attrs.src === 'string') {\n return Vue.h('script', props.attrs)\n }\n\n if (typeof props.children === 'string') {\n return Vue.h('script', {\n ...props.attrs,\n innerHTML: props.children,\n })\n }\n\n return null\n }\n },\n})\n\nexport function Asset({ tag, attrs, children }: RouterManagedTag): any {\n switch (tag) {\n case 'title':\n return Vue.h(Title, { children: children })\n case 'meta':\n return <meta {...attrs} />\n case 'link':\n return <link {...attrs} />\n case 'style':\n return <style {...attrs} innerHTML={children} />\n case 'script':\n return Vue.h(Script, { attrs, children: children })\n default:\n return null\n }\n}\n"],"names":["Title","Vue","defineComponent","name","props","children","type","String","default","setup","router","useRouter","isServer","onMounted","document","title","watch","newTitle","h","Script","attrs","Object","undefined","src","normSrc","base","baseURI","window","location","href","URL","existingScript","Array","from","querySelectorAll","find","el","script","createElement","key","value","entries","setAttribute","head","appendChild","typeAttr","nonceAttr","nonce","HTMLScriptElement","sType","getAttribute","sNonce","textContent","_src","rest","innerHTML","Asset","tag","_createVNode","_mergeProps"],"mappings":"
|
|
1
|
+
{"version":3,"file":"Asset.js","sources":["../../src/Asset.tsx"],"sourcesContent":["import * as Vue from 'vue'\nimport { isServer } from '@tanstack/router-core'\nimport { useRouter } from './useRouter'\nimport type { RouterManagedTag } from '@tanstack/router-core'\n\ninterface ScriptAttrs {\n [key: string]: string | boolean | undefined\n src?: string\n}\n\nconst Title = Vue.defineComponent({\n name: 'Title',\n props: {\n children: {\n type: String,\n default: '',\n },\n },\n setup(props) {\n const router = useRouter()\n\n if (!(isServer ?? router.isServer)) {\n Vue.onMounted(() => {\n if (props.children) {\n document.title = props.children\n }\n })\n\n Vue.watch(\n () => props.children,\n (newTitle) => {\n if (newTitle) {\n document.title = newTitle\n }\n },\n )\n }\n\n return () => Vue.h('title', {}, props.children)\n },\n})\n\nconst Script = Vue.defineComponent({\n name: 'Script',\n props: {\n attrs: {\n type: Object as Vue.PropType<ScriptAttrs>,\n default: () => ({}),\n },\n children: {\n type: String,\n default: undefined,\n },\n },\n setup(props) {\n const router = useRouter()\n\n if (!(isServer ?? router.isServer)) {\n Vue.onMounted(() => {\n const attrs = props.attrs\n const children = props.children\n\n if (attrs?.src) {\n const normSrc = (() => {\n try {\n const base = document.baseURI || window.location.href\n return new URL(attrs.src, base).href\n } catch {\n return attrs.src\n }\n })()\n const existingScript = Array.from(\n document.querySelectorAll('script[src]'),\n ).find((el) => (el as HTMLScriptElement).src === normSrc)\n\n if (existingScript) {\n return\n }\n\n const script = document.createElement('script')\n\n for (const [key, value] of Object.entries(attrs)) {\n if (value !== undefined && value !== false) {\n script.setAttribute(\n key,\n typeof value === 'boolean' ? '' : String(value),\n )\n }\n }\n\n document.head.appendChild(script)\n } else if (typeof children === 'string') {\n const typeAttr =\n typeof attrs?.type === 'string' ? attrs.type : 'text/javascript'\n const nonceAttr =\n typeof attrs?.nonce === 'string' ? attrs.nonce : undefined\n const existingScript = Array.from(\n document.querySelectorAll('script:not([src])'),\n ).find((el) => {\n if (!(el instanceof HTMLScriptElement)) return false\n const sType = el.getAttribute('type') ?? 'text/javascript'\n const sNonce = el.getAttribute('nonce') ?? undefined\n return (\n el.textContent === children &&\n sType === typeAttr &&\n sNonce === nonceAttr\n )\n })\n\n if (existingScript) {\n return\n }\n\n const script = document.createElement('script')\n script.textContent = children\n\n if (attrs) {\n for (const [key, value] of Object.entries(attrs)) {\n if (value !== undefined && value !== false) {\n script.setAttribute(\n key,\n typeof value === 'boolean' ? '' : String(value),\n )\n }\n }\n }\n\n document.head.appendChild(script)\n }\n })\n }\n\n return () => {\n if (!(isServer ?? router.isServer)) {\n const { src: _src, ...rest } = props.attrs || {}\n return Vue.h('script', {\n ...rest,\n 'data-allow-mismatch': true,\n innerHTML: '',\n })\n }\n\n if (props.attrs?.src && typeof props.attrs.src === 'string') {\n return Vue.h('script', props.attrs)\n }\n\n if (typeof props.children === 'string') {\n return Vue.h('script', {\n ...props.attrs,\n innerHTML: props.children,\n })\n }\n\n return null\n }\n },\n})\n\nexport function Asset({ tag, attrs, children }: RouterManagedTag): any {\n switch (tag) {\n case 'title':\n return Vue.h(Title, { children: children })\n case 'meta':\n return <meta {...attrs} />\n case 'link':\n return <link {...attrs} />\n case 'style':\n return <style {...attrs} innerHTML={children} />\n case 'script':\n return Vue.h(Script, { attrs, children: children })\n default:\n return null\n }\n}\n"],"names":["Title","Vue","defineComponent","name","props","children","type","String","default","setup","router","useRouter","isServer","onMounted","document","title","watch","newTitle","h","Script","attrs","Object","undefined","src","normSrc","base","baseURI","window","location","href","URL","existingScript","Array","from","querySelectorAll","find","el","script","createElement","key","value","entries","setAttribute","head","appendChild","typeAttr","nonceAttr","nonce","HTMLScriptElement","sType","getAttribute","sNonce","textContent","_src","rest","innerHTML","Asset","tag","_createVNode","_mergeProps"],"mappings":"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"}
|
package/dist/esm/Match.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as Vue from "vue";
|
|
2
2
|
import invariant from "tiny-invariant";
|
|
3
3
|
import warning from "tiny-warning";
|
|
4
|
-
import { rootRouteId, isNotFound, isRedirect, createControlledPromise, getLocationChangeInfo } from "@tanstack/router-core";
|
|
4
|
+
import { rootRouteId, isNotFound, isRedirect, isServer, createControlledPromise, getLocationChangeInfo } from "@tanstack/router-core";
|
|
5
5
|
import { CatchBoundary, ErrorComponent } from "./CatchBoundary.js";
|
|
6
6
|
import { ClientOnly } from "./ClientOnly.js";
|
|
7
7
|
import { useRouterState } from "./useRouterState.js";
|
|
@@ -234,7 +234,7 @@ const MatchInner = Vue.defineComponent({
|
|
|
234
234
|
const pendingMinMs = route.value.options.pendingMinMs ?? router.options.defaultPendingMinMs;
|
|
235
235
|
const routerMatch = router.getMatch(match.value.id);
|
|
236
236
|
if (pendingMinMs && routerMatch && !routerMatch._nonReactive.minPendingPromise) {
|
|
237
|
-
if (!router.isServer) {
|
|
237
|
+
if (!(isServer ?? router.isServer)) {
|
|
238
238
|
const minPendingPromise = createControlledPromise();
|
|
239
239
|
routerMatch._nonReactive.minPendingPromise = minPendingPromise;
|
|
240
240
|
setTimeout(() => {
|
package/dist/esm/Match.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Match.js","sources":["../../src/Match.tsx"],"sourcesContent":["import * as Vue from 'vue'\nimport invariant from 'tiny-invariant'\nimport warning from 'tiny-warning'\nimport {\n createControlledPromise,\n getLocationChangeInfo,\n isNotFound,\n isRedirect,\n rootRouteId,\n} from '@tanstack/router-core'\nimport { CatchBoundary, ErrorComponent } from './CatchBoundary'\nimport { ClientOnly } from './ClientOnly'\nimport { useRouterState } from './useRouterState'\nimport { useRouter } from './useRouter'\nimport { CatchNotFound } from './not-found'\nimport { matchContext } from './matchContext'\nimport { renderRouteNotFound } from './renderRouteNotFound'\nimport { ScrollRestoration } from './scroll-restoration'\nimport type { VNode } from 'vue'\nimport type { AnyRoute, RootRouteOptions } from '@tanstack/router-core'\n\nexport const Match = Vue.defineComponent({\n name: 'Match',\n props: {\n matchId: {\n type: String,\n required: true,\n },\n },\n setup(props) {\n const router = useRouter()\n\n // Track the last known routeId to handle stale props during same-route transitions\n let lastKnownRouteId: string | null = null\n\n // Combined selector that returns all needed data including the actual matchId\n // This handles stale props.matchId during same-route transitions\n const matchData = useRouterState({\n select: (s) => {\n // First try to find match by props.matchId\n let match = s.matches.find((d) => d.id === props.matchId)\n let matchIndex = match\n ? s.matches.findIndex((d) => d.id === props.matchId)\n : -1\n\n // If match found, update lastKnownRouteId\n if (match) {\n lastKnownRouteId = match.routeId as string\n } else if (lastKnownRouteId) {\n // Match not found - props.matchId might be stale during a same-route transition\n // Try to find the NEW match by routeId\n match = s.matches.find((d) => d.routeId === lastKnownRouteId)\n matchIndex = match\n ? s.matches.findIndex((d) => d.routeId === lastKnownRouteId)\n : -1\n }\n\n if (!match) {\n return null\n }\n\n const routeId = match.routeId as string\n const parentRouteId =\n matchIndex > 0 ? (s.matches[matchIndex - 1]?.routeId as string) : null\n\n return {\n matchId: match.id, // Return the actual matchId (may differ from props.matchId)\n routeId,\n parentRouteId,\n loadedAt: s.loadedAt,\n ssr: match.ssr,\n _displayPending: match._displayPending,\n }\n },\n })\n\n invariant(\n matchData.value,\n `Could not find routeId for matchId \"${props.matchId}\". Please file an issue!`,\n )\n\n const route = Vue.computed(() =>\n matchData.value ? router.routesById[matchData.value.routeId] : null,\n )\n\n const PendingComponent = Vue.computed(\n () =>\n route.value?.options?.pendingComponent ??\n router?.options?.defaultPendingComponent,\n )\n\n const pendingElement = Vue.computed(() =>\n PendingComponent.value ? Vue.h(PendingComponent.value) : undefined,\n )\n\n const routeErrorComponent = Vue.computed(\n () =>\n route.value?.options?.errorComponent ??\n router?.options?.defaultErrorComponent,\n )\n\n const routeOnCatch = Vue.computed(\n () => route.value?.options?.onCatch ?? router?.options?.defaultOnCatch,\n )\n\n const routeNotFoundComponent = Vue.computed(() =>\n route.value?.isRoot\n ? // If it's the root route, use the globalNotFound option, with fallback to the notFoundRoute's component\n (route.value?.options?.notFoundComponent ??\n router?.options?.notFoundRoute?.options?.component)\n : route.value?.options?.notFoundComponent,\n )\n\n const hasShellComponent = Vue.computed(() => {\n if (!route.value?.isRoot) return false\n return !!(route.value.options as RootRouteOptions).shellComponent\n })\n\n const ShellComponent = Vue.computed(() =>\n hasShellComponent.value\n ? ((route.value!.options as RootRouteOptions).shellComponent as any)\n : null,\n )\n\n // Create a ref for the current matchId that we provide to child components\n // This ref is updated to the ACTUAL matchId found (which may differ from props during transitions)\n const matchIdRef = Vue.ref(matchData.value?.matchId ?? props.matchId)\n\n // Watch both props.matchId and matchData to keep matchIdRef in sync\n // This ensures Outlet gets the correct matchId even during transitions\n Vue.watch(\n [() => props.matchId, () => matchData.value?.matchId],\n ([propsMatchId, dataMatchId]) => {\n // Prefer the matchId from matchData (which handles fallback)\n // Fall back to props.matchId if matchData is null\n matchIdRef.value = dataMatchId ?? propsMatchId\n },\n { immediate: true },\n )\n\n // Provide the matchId to child components\n Vue.provide(matchContext, matchIdRef)\n\n return (): VNode => {\n // Use the actual matchId from matchData, not props (which may be stale)\n const actualMatchId = matchData.value?.matchId ?? props.matchId\n\n const resolvedNoSsr =\n matchData.value?.ssr === false || matchData.value?.ssr === 'data-only'\n const shouldClientOnly =\n resolvedNoSsr || !!matchData.value?._displayPending\n\n const renderMatchContent = (): VNode => {\n const matchInner = Vue.h(MatchInner, { matchId: actualMatchId })\n\n let content: VNode = shouldClientOnly\n ? Vue.h(\n ClientOnly,\n {\n fallback: pendingElement.value,\n },\n {\n default: () => matchInner,\n },\n )\n : matchInner\n\n // Wrap in NotFound boundary if needed\n if (routeNotFoundComponent.value) {\n content = Vue.h(CatchNotFound, {\n fallback: (error: any) => {\n // If the current not found handler doesn't exist or it has a\n // route ID which doesn't match the current route, rethrow the error\n if (\n !routeNotFoundComponent.value ||\n (error.routeId && error.routeId !== matchData.value?.routeId) ||\n (!error.routeId && route.value && !route.value.isRoot)\n )\n throw error\n\n return Vue.h(routeNotFoundComponent.value, error)\n },\n children: content,\n })\n }\n\n // Wrap in error boundary if needed\n if (routeErrorComponent.value) {\n content = CatchBoundary({\n getResetKey: () => matchData.value?.loadedAt ?? 0,\n errorComponent: routeErrorComponent.value || ErrorComponent,\n onCatch: (error: Error) => {\n // Forward not found errors (we don't want to show the error component for these)\n if (isNotFound(error)) throw error\n warning(false, `Error in route match: ${actualMatchId}`)\n routeOnCatch.value?.(error)\n },\n children: content,\n })\n }\n\n // Add scroll restoration if needed\n const withScrollRestoration: Array<VNode> = [\n content,\n matchData.value?.parentRouteId === rootRouteId &&\n router.options.scrollRestoration\n ? Vue.h(Vue.Fragment, null, [\n Vue.h(OnRendered),\n Vue.h(ScrollRestoration),\n ])\n : null,\n ].filter(Boolean) as Array<VNode>\n\n // Return single child directly to avoid Fragment wrapper that causes hydration mismatch\n if (withScrollRestoration.length === 1) {\n return withScrollRestoration[0]!\n }\n\n return Vue.h(Vue.Fragment, null, withScrollRestoration)\n }\n\n if (!hasShellComponent.value) {\n return renderMatchContent()\n }\n\n return Vue.h(ShellComponent.value, null, {\n // Important: return a fresh VNode on each slot invocation so that shell\n // components can re-render without reusing a cached VNode instance.\n default: () => renderMatchContent(),\n })\n }\n },\n})\n\n// On Rendered can't happen above the root layout because it actually\n// renders a dummy dom element to track the rendered state of the app.\n// We render a script tag with a key that changes based on the current\n// location state.key. Also, because it's below the root layout, it\n// allows us to fire onRendered events even after a hydration mismatch\n// error that occurred above the root layout (like bad head/link tags,\n// which is common).\nconst OnRendered = Vue.defineComponent({\n name: 'OnRendered',\n setup() {\n const router = useRouter()\n\n const location = useRouterState({\n select: (s) => {\n return s.resolvedLocation?.state.key\n },\n })\n\n Vue.watchEffect(() => {\n if (location.value) {\n router.emit({\n type: 'onRendered',\n ...getLocationChangeInfo(router.state),\n })\n }\n })\n\n return () => null\n },\n})\n\nexport const MatchInner = Vue.defineComponent({\n name: 'MatchInner',\n props: {\n matchId: {\n type: String,\n required: true,\n },\n },\n setup(props) {\n const router = useRouter()\n\n // Track the last known routeId to handle stale props during same-route transitions\n // This is stored outside the selector so it persists across selector calls\n let lastKnownRouteId: string | null = null\n\n // Combined selector for match state AND remount key\n // This ensures both are computed in the same selector call with consistent data\n const combinedState = useRouterState({\n select: (s) => {\n // First try to find match by props.matchId\n let match = s.matches.find((d) => d.id === props.matchId)\n\n // If match found, update lastKnownRouteId\n if (match) {\n lastKnownRouteId = match.routeId as string\n } else if (lastKnownRouteId) {\n // Match not found - props.matchId might be stale during a same-route transition\n // (matchId changed due to loaderDepsHash but props haven't updated yet)\n // Try to find the NEW match by routeId and use that instead\n const sameRouteMatch = s.matches.find(\n (d) => d.routeId === lastKnownRouteId,\n )\n if (sameRouteMatch) {\n match = sameRouteMatch\n }\n }\n\n if (!match) {\n // Route no longer exists - truly navigating away\n return null\n }\n\n const routeId = match.routeId as string\n\n // Compute remount key\n const remountFn =\n (router.routesById[routeId] as AnyRoute).options.remountDeps ??\n router.options.defaultRemountDeps\n\n let remountKey: string | undefined\n if (remountFn) {\n const remountDeps = remountFn({\n routeId,\n loaderDeps: match.loaderDeps,\n params: match._strictParams,\n search: match._strictSearch,\n })\n remountKey = remountDeps ? JSON.stringify(remountDeps) : undefined\n }\n\n return {\n routeId,\n match: {\n id: match.id,\n status: match.status,\n error: match.error,\n ssr: match.ssr,\n _forcePending: match._forcePending,\n _displayPending: match._displayPending,\n },\n remountKey,\n }\n },\n })\n\n const route = Vue.computed(() => {\n if (!combinedState.value) return null\n return router.routesById[combinedState.value.routeId]!\n })\n\n const match = Vue.computed(() => combinedState.value?.match)\n const remountKey = Vue.computed(() => combinedState.value?.remountKey)\n\n return (): VNode | null => {\n // If match doesn't exist, return null (component is being unmounted or not ready)\n if (!combinedState.value || !match.value || !route.value) return null\n\n // Handle different match statuses\n if (match.value._displayPending) {\n const PendingComponent =\n route.value.options.pendingComponent ??\n router.options.defaultPendingComponent\n\n return PendingComponent ? Vue.h(PendingComponent) : null\n }\n\n if (match.value._forcePending) {\n const PendingComponent =\n route.value.options.pendingComponent ??\n router.options.defaultPendingComponent\n\n return PendingComponent ? Vue.h(PendingComponent) : null\n }\n\n if (match.value.status === 'notFound') {\n invariant(isNotFound(match.value.error), 'Expected a notFound error')\n return renderRouteNotFound(router, route.value, match.value.error)\n }\n\n if (match.value.status === 'redirected') {\n invariant(isRedirect(match.value.error), 'Expected a redirect error')\n throw router.getMatch(match.value.id)?._nonReactive.loadPromise\n }\n\n if (match.value.status === 'error') {\n // Check if this route or any parent has an error component\n const RouteErrorComponent =\n route.value.options.errorComponent ??\n router.options.defaultErrorComponent\n\n // If this route has an error component, render it directly\n // This is more reliable than relying on Vue's error boundary\n if (RouteErrorComponent) {\n return Vue.h(RouteErrorComponent, {\n error: match.value.error,\n reset: () => {\n router.invalidate()\n },\n info: {\n componentStack: '',\n },\n })\n }\n\n // If there's no error component for this route, throw the error\n // so it can bubble up to the nearest parent with an error component\n throw match.value.error\n }\n\n if (match.value.status === 'pending') {\n const pendingMinMs =\n route.value.options.pendingMinMs ?? router.options.defaultPendingMinMs\n\n const routerMatch = router.getMatch(match.value.id)\n if (\n pendingMinMs &&\n routerMatch &&\n !routerMatch._nonReactive.minPendingPromise\n ) {\n // Create a promise that will resolve after the minPendingMs\n if (!router.isServer) {\n const minPendingPromise = createControlledPromise<void>()\n\n routerMatch._nonReactive.minPendingPromise = minPendingPromise\n\n setTimeout(() => {\n minPendingPromise.resolve()\n // We've handled the minPendingPromise, so we can delete it\n routerMatch._nonReactive.minPendingPromise = undefined\n }, pendingMinMs)\n }\n }\n\n // In Vue, we render the pending component directly instead of throwing a promise\n // because Vue's Suspense doesn't catch thrown promises like React does\n const PendingComponent =\n route.value.options.pendingComponent ??\n router.options.defaultPendingComponent\n\n if (PendingComponent) {\n return Vue.h(PendingComponent)\n }\n\n // If no pending component, return null while loading\n return null\n }\n\n // Success status - render the component with remount key\n const Comp =\n route.value.options.component ?? router.options.defaultComponent\n const key = remountKey.value\n\n if (Comp) {\n // Pass key as a prop - Vue.h properly handles 'key' as a special prop\n return Vue.h(Comp, key !== undefined ? { key } : undefined)\n }\n\n return Vue.h(Outlet, key !== undefined ? { key } : undefined)\n }\n },\n})\n\nexport const Outlet = Vue.defineComponent({\n name: 'Outlet',\n setup() {\n const router = useRouter()\n const matchId = Vue.inject(matchContext)\n const safeMatchId = Vue.computed(() => matchId?.value || '')\n\n const routeId = useRouterState({\n select: (s) =>\n s.matches.find((d) => d.id === safeMatchId.value)?.routeId as string,\n })\n\n const route = Vue.computed(() => router.routesById[routeId.value]!)\n\n const parentGlobalNotFound = useRouterState({\n select: (s) => {\n const matches = s.matches\n const parentMatch = matches.find((d) => d.id === safeMatchId.value)\n\n // During navigation transitions, parent match can be temporarily removed\n // Return false to avoid errors - the component will handle this gracefully\n if (!parentMatch) {\n return false\n }\n\n return parentMatch.globalNotFound\n },\n })\n\n const childMatchData = useRouterState({\n select: (s) => {\n const matches = s.matches\n const index = matches.findIndex((d) => d.id === safeMatchId.value)\n const child = matches[index + 1]\n if (!child) return null\n return {\n id: child.id,\n // Key based on routeId + params only (not loaderDeps)\n // This ensures component recreates when params change,\n // but NOT when only loaderDeps change\n paramsKey: child.routeId + JSON.stringify(child._strictParams),\n }\n },\n })\n\n return (): VNode | null => {\n if (parentGlobalNotFound.value) {\n return renderRouteNotFound(router, route.value, undefined)\n }\n\n if (!childMatchData.value) {\n return null\n }\n\n const nextMatch = Vue.h(Match, {\n matchId: childMatchData.value.id,\n key: childMatchData.value.paramsKey,\n })\n\n if (safeMatchId.value === rootRouteId) {\n return Vue.h(\n Vue.Suspense,\n {\n fallback: router.options.defaultPendingComponent\n ? Vue.h(router.options.defaultPendingComponent)\n : null,\n },\n {\n default: () => nextMatch,\n },\n )\n }\n\n return nextMatch\n }\n },\n})\n"],"names":["Match","Vue","defineComponent","name","props","matchId","type","String","required","setup","router","useRouter","lastKnownRouteId","matchData","useRouterState","select","s","match","matches","find","d","id","matchIndex","findIndex","routeId","parentRouteId","loadedAt","ssr","_displayPending","invariant","value","route","computed","routesById","PendingComponent","options","pendingComponent","defaultPendingComponent","pendingElement","h","undefined","routeErrorComponent","errorComponent","defaultErrorComponent","routeOnCatch","onCatch","defaultOnCatch","routeNotFoundComponent","isRoot","notFoundComponent","notFoundRoute","component","hasShellComponent","shellComponent","ShellComponent","matchIdRef","ref","watch","propsMatchId","dataMatchId","immediate","provide","matchContext","actualMatchId","resolvedNoSsr","shouldClientOnly","renderMatchContent","matchInner","MatchInner","content","ClientOnly","fallback","default","CatchNotFound","error","children","CatchBoundary","getResetKey","ErrorComponent","isNotFound","warning","withScrollRestoration","rootRouteId","scrollRestoration","Fragment","OnRendered","ScrollRestoration","filter","Boolean","length","location","resolvedLocation","state","key","watchEffect","emit","getLocationChangeInfo","combinedState","sameRouteMatch","remountFn","remountDeps","defaultRemountDeps","remountKey","loaderDeps","params","_strictParams","search","_strictSearch","JSON","stringify","status","_forcePending","renderRouteNotFound","isRedirect","getMatch","_nonReactive","loadPromise","RouteErrorComponent","reset","invalidate","info","componentStack","pendingMinMs","defaultPendingMinMs","routerMatch","minPendingPromise","isServer","createControlledPromise","setTimeout","resolve","Comp","defaultComponent","Outlet","inject","safeMatchId","parentGlobalNotFound","parentMatch","globalNotFound","childMatchData","index","child","paramsKey","nextMatch","Suspense"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Match.js","sources":["../../src/Match.tsx"],"sourcesContent":["import * as Vue from 'vue'\nimport invariant from 'tiny-invariant'\nimport warning from 'tiny-warning'\nimport {\n createControlledPromise,\n getLocationChangeInfo,\n isNotFound,\n isRedirect,\n isServer,\n rootRouteId,\n} from '@tanstack/router-core'\nimport { CatchBoundary, ErrorComponent } from './CatchBoundary'\nimport { ClientOnly } from './ClientOnly'\nimport { useRouterState } from './useRouterState'\nimport { useRouter } from './useRouter'\nimport { CatchNotFound } from './not-found'\nimport { matchContext } from './matchContext'\nimport { renderRouteNotFound } from './renderRouteNotFound'\nimport { ScrollRestoration } from './scroll-restoration'\nimport type { VNode } from 'vue'\nimport type { AnyRoute, RootRouteOptions } from '@tanstack/router-core'\n\nexport const Match = Vue.defineComponent({\n name: 'Match',\n props: {\n matchId: {\n type: String,\n required: true,\n },\n },\n setup(props) {\n const router = useRouter()\n\n // Track the last known routeId to handle stale props during same-route transitions\n let lastKnownRouteId: string | null = null\n\n // Combined selector that returns all needed data including the actual matchId\n // This handles stale props.matchId during same-route transitions\n const matchData = useRouterState({\n select: (s) => {\n // First try to find match by props.matchId\n let match = s.matches.find((d) => d.id === props.matchId)\n let matchIndex = match\n ? s.matches.findIndex((d) => d.id === props.matchId)\n : -1\n\n // If match found, update lastKnownRouteId\n if (match) {\n lastKnownRouteId = match.routeId as string\n } else if (lastKnownRouteId) {\n // Match not found - props.matchId might be stale during a same-route transition\n // Try to find the NEW match by routeId\n match = s.matches.find((d) => d.routeId === lastKnownRouteId)\n matchIndex = match\n ? s.matches.findIndex((d) => d.routeId === lastKnownRouteId)\n : -1\n }\n\n if (!match) {\n return null\n }\n\n const routeId = match.routeId as string\n const parentRouteId =\n matchIndex > 0 ? (s.matches[matchIndex - 1]?.routeId as string) : null\n\n return {\n matchId: match.id, // Return the actual matchId (may differ from props.matchId)\n routeId,\n parentRouteId,\n loadedAt: s.loadedAt,\n ssr: match.ssr,\n _displayPending: match._displayPending,\n }\n },\n })\n\n invariant(\n matchData.value,\n `Could not find routeId for matchId \"${props.matchId}\". Please file an issue!`,\n )\n\n const route = Vue.computed(() =>\n matchData.value ? router.routesById[matchData.value.routeId] : null,\n )\n\n const PendingComponent = Vue.computed(\n () =>\n route.value?.options?.pendingComponent ??\n router?.options?.defaultPendingComponent,\n )\n\n const pendingElement = Vue.computed(() =>\n PendingComponent.value ? Vue.h(PendingComponent.value) : undefined,\n )\n\n const routeErrorComponent = Vue.computed(\n () =>\n route.value?.options?.errorComponent ??\n router?.options?.defaultErrorComponent,\n )\n\n const routeOnCatch = Vue.computed(\n () => route.value?.options?.onCatch ?? router?.options?.defaultOnCatch,\n )\n\n const routeNotFoundComponent = Vue.computed(() =>\n route.value?.isRoot\n ? // If it's the root route, use the globalNotFound option, with fallback to the notFoundRoute's component\n (route.value?.options?.notFoundComponent ??\n router?.options?.notFoundRoute?.options?.component)\n : route.value?.options?.notFoundComponent,\n )\n\n const hasShellComponent = Vue.computed(() => {\n if (!route.value?.isRoot) return false\n return !!(route.value.options as RootRouteOptions).shellComponent\n })\n\n const ShellComponent = Vue.computed(() =>\n hasShellComponent.value\n ? ((route.value!.options as RootRouteOptions).shellComponent as any)\n : null,\n )\n\n // Create a ref for the current matchId that we provide to child components\n // This ref is updated to the ACTUAL matchId found (which may differ from props during transitions)\n const matchIdRef = Vue.ref(matchData.value?.matchId ?? props.matchId)\n\n // Watch both props.matchId and matchData to keep matchIdRef in sync\n // This ensures Outlet gets the correct matchId even during transitions\n Vue.watch(\n [() => props.matchId, () => matchData.value?.matchId],\n ([propsMatchId, dataMatchId]) => {\n // Prefer the matchId from matchData (which handles fallback)\n // Fall back to props.matchId if matchData is null\n matchIdRef.value = dataMatchId ?? propsMatchId\n },\n { immediate: true },\n )\n\n // Provide the matchId to child components\n Vue.provide(matchContext, matchIdRef)\n\n return (): VNode => {\n // Use the actual matchId from matchData, not props (which may be stale)\n const actualMatchId = matchData.value?.matchId ?? props.matchId\n\n const resolvedNoSsr =\n matchData.value?.ssr === false || matchData.value?.ssr === 'data-only'\n const shouldClientOnly =\n resolvedNoSsr || !!matchData.value?._displayPending\n\n const renderMatchContent = (): VNode => {\n const matchInner = Vue.h(MatchInner, { matchId: actualMatchId })\n\n let content: VNode = shouldClientOnly\n ? Vue.h(\n ClientOnly,\n {\n fallback: pendingElement.value,\n },\n {\n default: () => matchInner,\n },\n )\n : matchInner\n\n // Wrap in NotFound boundary if needed\n if (routeNotFoundComponent.value) {\n content = Vue.h(CatchNotFound, {\n fallback: (error: any) => {\n // If the current not found handler doesn't exist or it has a\n // route ID which doesn't match the current route, rethrow the error\n if (\n !routeNotFoundComponent.value ||\n (error.routeId && error.routeId !== matchData.value?.routeId) ||\n (!error.routeId && route.value && !route.value.isRoot)\n )\n throw error\n\n return Vue.h(routeNotFoundComponent.value, error)\n },\n children: content,\n })\n }\n\n // Wrap in error boundary if needed\n if (routeErrorComponent.value) {\n content = CatchBoundary({\n getResetKey: () => matchData.value?.loadedAt ?? 0,\n errorComponent: routeErrorComponent.value || ErrorComponent,\n onCatch: (error: Error) => {\n // Forward not found errors (we don't want to show the error component for these)\n if (isNotFound(error)) throw error\n warning(false, `Error in route match: ${actualMatchId}`)\n routeOnCatch.value?.(error)\n },\n children: content,\n })\n }\n\n // Add scroll restoration if needed\n const withScrollRestoration: Array<VNode> = [\n content,\n matchData.value?.parentRouteId === rootRouteId &&\n router.options.scrollRestoration\n ? Vue.h(Vue.Fragment, null, [\n Vue.h(OnRendered),\n Vue.h(ScrollRestoration),\n ])\n : null,\n ].filter(Boolean) as Array<VNode>\n\n // Return single child directly to avoid Fragment wrapper that causes hydration mismatch\n if (withScrollRestoration.length === 1) {\n return withScrollRestoration[0]!\n }\n\n return Vue.h(Vue.Fragment, null, withScrollRestoration)\n }\n\n if (!hasShellComponent.value) {\n return renderMatchContent()\n }\n\n return Vue.h(ShellComponent.value, null, {\n // Important: return a fresh VNode on each slot invocation so that shell\n // components can re-render without reusing a cached VNode instance.\n default: () => renderMatchContent(),\n })\n }\n },\n})\n\n// On Rendered can't happen above the root layout because it actually\n// renders a dummy dom element to track the rendered state of the app.\n// We render a script tag with a key that changes based on the current\n// location state.key. Also, because it's below the root layout, it\n// allows us to fire onRendered events even after a hydration mismatch\n// error that occurred above the root layout (like bad head/link tags,\n// which is common).\nconst OnRendered = Vue.defineComponent({\n name: 'OnRendered',\n setup() {\n const router = useRouter()\n\n const location = useRouterState({\n select: (s) => {\n return s.resolvedLocation?.state.key\n },\n })\n\n Vue.watchEffect(() => {\n if (location.value) {\n router.emit({\n type: 'onRendered',\n ...getLocationChangeInfo(router.state),\n })\n }\n })\n\n return () => null\n },\n})\n\nexport const MatchInner = Vue.defineComponent({\n name: 'MatchInner',\n props: {\n matchId: {\n type: String,\n required: true,\n },\n },\n setup(props) {\n const router = useRouter()\n\n // Track the last known routeId to handle stale props during same-route transitions\n // This is stored outside the selector so it persists across selector calls\n let lastKnownRouteId: string | null = null\n\n // Combined selector for match state AND remount key\n // This ensures both are computed in the same selector call with consistent data\n const combinedState = useRouterState({\n select: (s) => {\n // First try to find match by props.matchId\n let match = s.matches.find((d) => d.id === props.matchId)\n\n // If match found, update lastKnownRouteId\n if (match) {\n lastKnownRouteId = match.routeId as string\n } else if (lastKnownRouteId) {\n // Match not found - props.matchId might be stale during a same-route transition\n // (matchId changed due to loaderDepsHash but props haven't updated yet)\n // Try to find the NEW match by routeId and use that instead\n const sameRouteMatch = s.matches.find(\n (d) => d.routeId === lastKnownRouteId,\n )\n if (sameRouteMatch) {\n match = sameRouteMatch\n }\n }\n\n if (!match) {\n // Route no longer exists - truly navigating away\n return null\n }\n\n const routeId = match.routeId as string\n\n // Compute remount key\n const remountFn =\n (router.routesById[routeId] as AnyRoute).options.remountDeps ??\n router.options.defaultRemountDeps\n\n let remountKey: string | undefined\n if (remountFn) {\n const remountDeps = remountFn({\n routeId,\n loaderDeps: match.loaderDeps,\n params: match._strictParams,\n search: match._strictSearch,\n })\n remountKey = remountDeps ? JSON.stringify(remountDeps) : undefined\n }\n\n return {\n routeId,\n match: {\n id: match.id,\n status: match.status,\n error: match.error,\n ssr: match.ssr,\n _forcePending: match._forcePending,\n _displayPending: match._displayPending,\n },\n remountKey,\n }\n },\n })\n\n const route = Vue.computed(() => {\n if (!combinedState.value) return null\n return router.routesById[combinedState.value.routeId]!\n })\n\n const match = Vue.computed(() => combinedState.value?.match)\n const remountKey = Vue.computed(() => combinedState.value?.remountKey)\n\n return (): VNode | null => {\n // If match doesn't exist, return null (component is being unmounted or not ready)\n if (!combinedState.value || !match.value || !route.value) return null\n\n // Handle different match statuses\n if (match.value._displayPending) {\n const PendingComponent =\n route.value.options.pendingComponent ??\n router.options.defaultPendingComponent\n\n return PendingComponent ? Vue.h(PendingComponent) : null\n }\n\n if (match.value._forcePending) {\n const PendingComponent =\n route.value.options.pendingComponent ??\n router.options.defaultPendingComponent\n\n return PendingComponent ? Vue.h(PendingComponent) : null\n }\n\n if (match.value.status === 'notFound') {\n invariant(isNotFound(match.value.error), 'Expected a notFound error')\n return renderRouteNotFound(router, route.value, match.value.error)\n }\n\n if (match.value.status === 'redirected') {\n invariant(isRedirect(match.value.error), 'Expected a redirect error')\n throw router.getMatch(match.value.id)?._nonReactive.loadPromise\n }\n\n if (match.value.status === 'error') {\n // Check if this route or any parent has an error component\n const RouteErrorComponent =\n route.value.options.errorComponent ??\n router.options.defaultErrorComponent\n\n // If this route has an error component, render it directly\n // This is more reliable than relying on Vue's error boundary\n if (RouteErrorComponent) {\n return Vue.h(RouteErrorComponent, {\n error: match.value.error,\n reset: () => {\n router.invalidate()\n },\n info: {\n componentStack: '',\n },\n })\n }\n\n // If there's no error component for this route, throw the error\n // so it can bubble up to the nearest parent with an error component\n throw match.value.error\n }\n\n if (match.value.status === 'pending') {\n const pendingMinMs =\n route.value.options.pendingMinMs ?? router.options.defaultPendingMinMs\n\n const routerMatch = router.getMatch(match.value.id)\n if (\n pendingMinMs &&\n routerMatch &&\n !routerMatch._nonReactive.minPendingPromise\n ) {\n // Create a promise that will resolve after the minPendingMs\n if (!(isServer ?? router.isServer)) {\n const minPendingPromise = createControlledPromise<void>()\n\n routerMatch._nonReactive.minPendingPromise = minPendingPromise\n\n setTimeout(() => {\n minPendingPromise.resolve()\n // We've handled the minPendingPromise, so we can delete it\n routerMatch._nonReactive.minPendingPromise = undefined\n }, pendingMinMs)\n }\n }\n\n // In Vue, we render the pending component directly instead of throwing a promise\n // because Vue's Suspense doesn't catch thrown promises like React does\n const PendingComponent =\n route.value.options.pendingComponent ??\n router.options.defaultPendingComponent\n\n if (PendingComponent) {\n return Vue.h(PendingComponent)\n }\n\n // If no pending component, return null while loading\n return null\n }\n\n // Success status - render the component with remount key\n const Comp =\n route.value.options.component ?? router.options.defaultComponent\n const key = remountKey.value\n\n if (Comp) {\n // Pass key as a prop - Vue.h properly handles 'key' as a special prop\n return Vue.h(Comp, key !== undefined ? { key } : undefined)\n }\n\n return Vue.h(Outlet, key !== undefined ? { key } : undefined)\n }\n },\n})\n\nexport const Outlet = Vue.defineComponent({\n name: 'Outlet',\n setup() {\n const router = useRouter()\n const matchId = Vue.inject(matchContext)\n const safeMatchId = Vue.computed(() => matchId?.value || '')\n\n const routeId = useRouterState({\n select: (s) =>\n s.matches.find((d) => d.id === safeMatchId.value)?.routeId as string,\n })\n\n const route = Vue.computed(() => router.routesById[routeId.value]!)\n\n const parentGlobalNotFound = useRouterState({\n select: (s) => {\n const matches = s.matches\n const parentMatch = matches.find((d) => d.id === safeMatchId.value)\n\n // During navigation transitions, parent match can be temporarily removed\n // Return false to avoid errors - the component will handle this gracefully\n if (!parentMatch) {\n return false\n }\n\n return parentMatch.globalNotFound\n },\n })\n\n const childMatchData = useRouterState({\n select: (s) => {\n const matches = s.matches\n const index = matches.findIndex((d) => d.id === safeMatchId.value)\n const child = matches[index + 1]\n if (!child) return null\n return {\n id: child.id,\n // Key based on routeId + params only (not loaderDeps)\n // This ensures component recreates when params change,\n // but NOT when only loaderDeps change\n paramsKey: child.routeId + JSON.stringify(child._strictParams),\n }\n },\n })\n\n return (): VNode | null => {\n if (parentGlobalNotFound.value) {\n return renderRouteNotFound(router, route.value, undefined)\n }\n\n if (!childMatchData.value) {\n return null\n }\n\n const nextMatch = Vue.h(Match, {\n matchId: childMatchData.value.id,\n key: childMatchData.value.paramsKey,\n })\n\n if (safeMatchId.value === rootRouteId) {\n return Vue.h(\n Vue.Suspense,\n {\n fallback: router.options.defaultPendingComponent\n ? Vue.h(router.options.defaultPendingComponent)\n : null,\n },\n {\n default: () => nextMatch,\n },\n )\n }\n\n return nextMatch\n }\n },\n})\n"],"names":["Match","Vue","defineComponent","name","props","matchId","type","String","required","setup","router","useRouter","lastKnownRouteId","matchData","useRouterState","select","s","match","matches","find","d","id","matchIndex","findIndex","routeId","parentRouteId","loadedAt","ssr","_displayPending","invariant","value","route","computed","routesById","PendingComponent","options","pendingComponent","defaultPendingComponent","pendingElement","h","undefined","routeErrorComponent","errorComponent","defaultErrorComponent","routeOnCatch","onCatch","defaultOnCatch","routeNotFoundComponent","isRoot","notFoundComponent","notFoundRoute","component","hasShellComponent","shellComponent","ShellComponent","matchIdRef","ref","watch","propsMatchId","dataMatchId","immediate","provide","matchContext","actualMatchId","resolvedNoSsr","shouldClientOnly","renderMatchContent","matchInner","MatchInner","content","ClientOnly","fallback","default","CatchNotFound","error","children","CatchBoundary","getResetKey","ErrorComponent","isNotFound","warning","withScrollRestoration","rootRouteId","scrollRestoration","Fragment","OnRendered","ScrollRestoration","filter","Boolean","length","location","resolvedLocation","state","key","watchEffect","emit","getLocationChangeInfo","combinedState","sameRouteMatch","remountFn","remountDeps","defaultRemountDeps","remountKey","loaderDeps","params","_strictParams","search","_strictSearch","JSON","stringify","status","_forcePending","renderRouteNotFound","isRedirect","getMatch","_nonReactive","loadPromise","RouteErrorComponent","reset","invalidate","info","componentStack","pendingMinMs","defaultPendingMinMs","routerMatch","minPendingPromise","isServer","createControlledPromise","setTimeout","resolve","Comp","defaultComponent","Outlet","inject","safeMatchId","parentGlobalNotFound","parentMatch","globalNotFound","childMatchData","index","child","paramsKey","nextMatch","Suspense"],"mappings":"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"}
|
package/dist/esm/Matches.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import * as Vue from "vue";
|
|
2
2
|
import warning from "tiny-warning";
|
|
3
|
+
import { isServer } from "@tanstack/router-core";
|
|
3
4
|
import { CatchBoundary } from "./CatchBoundary.js";
|
|
4
5
|
import { useRouterState } from "./useRouterState.js";
|
|
5
6
|
import { useRouter } from "./useRouter.js";
|
|
@@ -19,7 +20,7 @@ const Matches = Vue.defineComponent({
|
|
|
19
20
|
const router = useRouter();
|
|
20
21
|
return () => {
|
|
21
22
|
const pendingElement = router?.options?.defaultPendingComponent ? Vue.h(router.options.defaultPendingComponent) : null;
|
|
22
|
-
const inner = router?.isServer || typeof document !== "undefined" && router?.ssr ? Vue.h(MatchesContent) : Vue.h(Vue.Suspense, {
|
|
23
|
+
const inner = (isServer ?? router?.isServer ?? false) || typeof document !== "undefined" && router?.ssr ? Vue.h(MatchesContent) : Vue.h(Vue.Suspense, {
|
|
23
24
|
fallback: pendingElement
|
|
24
25
|
}, {
|
|
25
26
|
default: () => Vue.h(MatchesContent)
|
package/dist/esm/Matches.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Matches.js","sources":["../../src/Matches.tsx"],"sourcesContent":["import * as Vue from 'vue'\nimport warning from 'tiny-warning'\nimport { CatchBoundary } from './CatchBoundary'\nimport { useRouterState } from './useRouterState'\nimport { useRouter } from './useRouter'\nimport { useTransitionerSetup } from './Transitioner'\nimport { matchContext } from './matchContext'\nimport { Match } from './Match'\nimport type {\n AnyRouter,\n DeepPartial,\n ErrorComponentProps,\n MakeOptionalPathParams,\n MakeOptionalSearchParams,\n MakeRouteMatchUnion,\n MaskOptions,\n MatchRouteOptions,\n NoInfer,\n RegisteredRouter,\n ResolveRelativePath,\n ResolveRoute,\n RouteByPath,\n RouterState,\n ToSubOptionsProps,\n} from '@tanstack/router-core'\n\n// Define a type for the error component function\ntype ErrorRouteComponentType = (props: ErrorComponentProps) => Vue.VNode\n\ndeclare module '@tanstack/router-core' {\n export interface RouteMatchExtensions {\n meta?: Array<Vue.ComponentOptions['meta'] | undefined>\n links?: Array<Vue.ComponentOptions['link'] | undefined>\n scripts?: Array<Vue.ComponentOptions['script'] | undefined>\n headScripts?: Array<Vue.ComponentOptions['script'] | undefined>\n }\n}\n\n// Create a component that renders MatchesInner with Transitioner's setup logic inlined.\n// This is critical for proper hydration - we call useTransitionerSetup() as a composable\n// rather than rendering it as a component, which avoids Fragment/element mismatches.\nconst MatchesContent = Vue.defineComponent({\n name: 'MatchesContent',\n setup() {\n // IMPORTANT: We need to ensure Transitioner's setup() runs.\n // Transitioner sets up critical functionality:\n // - router.startTransition\n // - History subscription via router.history.subscribe(router.load)\n // - Watchers for router events\n //\n // We inline Transitioner's setup logic here. Since Transitioner returns null,\n // we can call its setup function directly without affecting the render tree.\n // This is done by importing and calling useTransitionerSetup.\n useTransitionerSetup()\n\n return () => Vue.h(MatchesInner)\n },\n})\n\nexport const Matches = Vue.defineComponent({\n name: 'Matches',\n setup() {\n const router = useRouter()\n\n return () => {\n const pendingElement = router?.options?.defaultPendingComponent\n ? Vue.h(router.options.defaultPendingComponent)\n : null\n\n // Do not render a root Suspense during SSR or hydrating from SSR\n const inner =\n router?.isServer || (typeof document !== 'undefined' && router?.ssr)\n ? Vue.h(MatchesContent)\n : Vue.h(\n Vue.Suspense,\n { fallback: pendingElement },\n {\n default: () => Vue.h(MatchesContent),\n },\n )\n\n return router?.options?.InnerWrap\n ? Vue.h(router.options.InnerWrap, null, { default: () => inner })\n : inner\n }\n },\n})\n\n// Create a simple error component function that matches ErrorRouteComponent\nconst errorComponentFn: ErrorRouteComponentType = (\n props: ErrorComponentProps,\n) => {\n return Vue.h('div', { class: 'error' }, [\n Vue.h('h1', null, 'Error'),\n Vue.h('p', null, props.error.message || String(props.error)),\n Vue.h('button', { onClick: props.reset }, 'Try Again'),\n ])\n}\n\nconst MatchesInner = Vue.defineComponent({\n name: 'MatchesInner',\n setup() {\n const router = useRouter()\n\n const matchId = useRouterState({\n select: (s) => {\n return s.matches[0]?.id\n },\n })\n\n const resetKey = useRouterState({\n select: (s) => s.loadedAt,\n })\n\n // Create a ref for the match id to provide\n const matchIdRef = Vue.computed(() => matchId.value)\n\n // Provide the matchId for child components using the InjectionKey\n Vue.provide(matchContext, matchIdRef)\n\n return () => {\n // Generate a placeholder element if matchId.value is not present\n const childElement = matchId.value\n ? Vue.h(Match, { matchId: matchId.value })\n : Vue.h('div')\n\n // If disableGlobalCatchBoundary is true, don't wrap in CatchBoundary\n if (router.options.disableGlobalCatchBoundary) {\n return childElement\n }\n\n return Vue.h(CatchBoundary, {\n getResetKey: () => resetKey.value,\n errorComponent: errorComponentFn,\n onCatch: (error: Error) => {\n warning(\n false,\n `The following error wasn't caught by any route! At the very least, consider setting an 'errorComponent' in your RootRoute!`,\n )\n warning(false, error.message || error.toString())\n },\n children: childElement,\n })\n }\n },\n})\n\nexport type UseMatchRouteOptions<\n TRouter extends AnyRouter = RegisteredRouter,\n TFrom extends string = string,\n TTo extends string | undefined = undefined,\n TMaskFrom extends string = TFrom,\n TMaskTo extends string = '',\n> = ToSubOptionsProps<TRouter, TFrom, TTo> &\n DeepPartial<MakeOptionalSearchParams<TRouter, TFrom, TTo>> &\n DeepPartial<MakeOptionalPathParams<TRouter, TFrom, TTo>> &\n MaskOptions<TRouter, TMaskFrom, TMaskTo> &\n MatchRouteOptions\n\nexport function useMatchRoute<TRouter extends AnyRouter = RegisteredRouter>() {\n const router = useRouter()\n\n // Track state changes to trigger re-computation\n // Use multiple state values like React does for complete reactivity\n const routerState = useRouterState({\n select: (s) => ({\n locationHref: s.location.href,\n resolvedLocationHref: s.resolvedLocation?.href,\n status: s.status,\n }),\n })\n\n return <\n const TFrom extends string = string,\n const TTo extends string | undefined = undefined,\n const TMaskFrom extends string = TFrom,\n const TMaskTo extends string = '',\n >(\n opts: UseMatchRouteOptions<TRouter, TFrom, TTo, TMaskFrom, TMaskTo>,\n ): Vue.Ref<\n false | ResolveRoute<TRouter, TFrom, TTo>['types']['allParams']\n > => {\n const { pending, caseSensitive, fuzzy, includeSearch, ...rest } = opts\n\n const matchRoute = Vue.computed(() => {\n // Access routerState to establish dependency\n\n routerState.value\n return router.matchRoute(rest as any, {\n pending,\n caseSensitive,\n fuzzy,\n includeSearch,\n })\n })\n\n return matchRoute\n }\n}\n\nexport type MakeMatchRouteOptions<\n TRouter extends AnyRouter = RegisteredRouter,\n TFrom extends string = string,\n TTo extends string | undefined = undefined,\n TMaskFrom extends string = TFrom,\n TMaskTo extends string = '',\n> = UseMatchRouteOptions<TRouter, TFrom, TTo, TMaskFrom, TMaskTo> & {\n // If a function is passed as a child, it will be given the `isActive` boolean to aid in further styling on the element it returns\n children?:\n | ((\n params?: RouteByPath<\n TRouter['routeTree'],\n ResolveRelativePath<TFrom, NoInfer<TTo>>\n >['types']['allParams'],\n ) => Vue.VNode)\n | Vue.VNode\n}\n\n// Create a type for the MatchRoute component that includes the generics\nexport interface MatchRouteComponentType {\n <\n TRouter extends AnyRouter = RegisteredRouter,\n TFrom extends string = string,\n TTo extends string | undefined = undefined,\n >(\n props: MakeMatchRouteOptions<TRouter, TFrom, TTo>,\n ): Vue.VNode\n new (): {\n $props: {\n from?: string\n to?: string\n fuzzy?: boolean\n caseSensitive?: boolean\n includeSearch?: boolean\n pending?: boolean\n }\n }\n}\n\nexport const MatchRoute = Vue.defineComponent({\n name: 'MatchRoute',\n props: {\n // Define props to match MakeMatchRouteOptions\n from: {\n type: String,\n required: false,\n },\n to: {\n type: String,\n required: false,\n },\n fuzzy: {\n type: Boolean,\n required: false,\n },\n caseSensitive: {\n type: Boolean,\n required: false,\n },\n includeSearch: {\n type: Boolean,\n required: false,\n },\n pending: {\n type: Boolean,\n required: false,\n },\n },\n setup(props, { slots }) {\n const status = useRouterState({\n select: (s) => s.status,\n })\n\n return () => {\n if (!status.value) return null\n\n const matchRoute = useMatchRoute()\n const params = matchRoute(props as any).value as boolean\n\n // Create a component that renders the slot in a reactive manner\n if (!params || !slots.default) {\n return null\n }\n\n // For function slots, pass the params\n if (typeof slots.default === 'function') {\n // Use h to create a wrapper component that will call the slot function\n return Vue.h(Vue.Fragment, null, slots.default(params))\n }\n\n // For normal slots, just render them\n return Vue.h(Vue.Fragment, null, slots.default)\n }\n },\n}) as unknown as MatchRouteComponentType\n\nexport interface UseMatchesBaseOptions<TRouter extends AnyRouter, TSelected> {\n select?: (matches: Array<MakeRouteMatchUnion<TRouter>>) => TSelected\n}\n\nexport type UseMatchesResult<\n TRouter extends AnyRouter,\n TSelected,\n> = unknown extends TSelected ? Array<MakeRouteMatchUnion<TRouter>> : TSelected\n\nexport function useMatches<\n TRouter extends AnyRouter = RegisteredRouter,\n TSelected = unknown,\n>(\n opts?: UseMatchesBaseOptions<TRouter, TSelected>,\n): Vue.Ref<UseMatchesResult<TRouter, TSelected>> {\n return useRouterState({\n select: (state: RouterState<TRouter['routeTree']>) => {\n const matches = state?.matches || []\n return opts?.select\n ? opts.select(matches as Array<MakeRouteMatchUnion<TRouter>>)\n : matches\n },\n } as any) as Vue.Ref<UseMatchesResult<TRouter, TSelected>>\n}\n\nexport function useParentMatches<\n TRouter extends AnyRouter = RegisteredRouter,\n TSelected = unknown,\n>(\n opts?: UseMatchesBaseOptions<TRouter, TSelected>,\n): Vue.Ref<UseMatchesResult<TRouter, TSelected>> {\n // Use matchContext with proper type\n const contextMatchId = Vue.inject<Vue.Ref<string | undefined>>(matchContext)\n const safeMatchId = Vue.computed(() => contextMatchId?.value || '')\n\n return useMatches({\n select: (matches: Array<MakeRouteMatchUnion<TRouter>>) => {\n matches = matches.slice(\n 0,\n matches.findIndex((d) => d.id === safeMatchId.value),\n )\n return opts?.select ? opts.select(matches) : matches\n },\n } as any)\n}\n\nexport function useChildMatches<\n TRouter extends AnyRouter = RegisteredRouter,\n TSelected = unknown,\n>(\n opts?: UseMatchesBaseOptions<TRouter, TSelected>,\n): Vue.Ref<UseMatchesResult<TRouter, TSelected>> {\n // Use matchContext with proper type\n const contextMatchId = Vue.inject<Vue.Ref<string | undefined>>(matchContext)\n const safeMatchId = Vue.computed(() => contextMatchId?.value || '')\n\n return useMatches({\n select: (matches: Array<MakeRouteMatchUnion<TRouter>>) => {\n matches = matches.slice(\n matches.findIndex((d) => d.id === safeMatchId.value) + 1,\n )\n return opts?.select ? opts.select(matches) : matches\n },\n } as any)\n}\n"],"names":["MatchesContent","Vue","defineComponent","name","setup","useTransitionerSetup","h","MatchesInner","Matches","router","useRouter","pendingElement","options","defaultPendingComponent","inner","isServer","document","ssr","Suspense","fallback","default","InnerWrap","errorComponentFn","props","class","error","message","String","onClick","reset","matchId","useRouterState","select","s","matches","id","resetKey","loadedAt","matchIdRef","computed","value","provide","matchContext","childElement","Match","disableGlobalCatchBoundary","CatchBoundary","getResetKey","errorComponent","onCatch","warning","toString","children","useMatchRoute","routerState","locationHref","location","href","resolvedLocationHref","resolvedLocation","status","opts","pending","caseSensitive","fuzzy","includeSearch","rest","matchRoute","MatchRoute","from","type","required","to","Boolean","slots","params","Fragment","useMatches","state","useParentMatches","contextMatchId","inject","safeMatchId","slice","findIndex","d","useChildMatches"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Matches.js","sources":["../../src/Matches.tsx"],"sourcesContent":["import * as Vue from 'vue'\nimport warning from 'tiny-warning'\nimport { isServer } from '@tanstack/router-core'\nimport { CatchBoundary } from './CatchBoundary'\nimport { useRouterState } from './useRouterState'\nimport { useRouter } from './useRouter'\nimport { useTransitionerSetup } from './Transitioner'\nimport { matchContext } from './matchContext'\nimport { Match } from './Match'\nimport type {\n AnyRouter,\n DeepPartial,\n ErrorComponentProps,\n MakeOptionalPathParams,\n MakeOptionalSearchParams,\n MakeRouteMatchUnion,\n MaskOptions,\n MatchRouteOptions,\n NoInfer,\n RegisteredRouter,\n ResolveRelativePath,\n ResolveRoute,\n RouteByPath,\n RouterState,\n ToSubOptionsProps,\n} from '@tanstack/router-core'\n\n// Define a type for the error component function\ntype ErrorRouteComponentType = (props: ErrorComponentProps) => Vue.VNode\n\ndeclare module '@tanstack/router-core' {\n export interface RouteMatchExtensions {\n meta?: Array<Vue.ComponentOptions['meta'] | undefined>\n links?: Array<Vue.ComponentOptions['link'] | undefined>\n scripts?: Array<Vue.ComponentOptions['script'] | undefined>\n headScripts?: Array<Vue.ComponentOptions['script'] | undefined>\n }\n}\n\n// Create a component that renders MatchesInner with Transitioner's setup logic inlined.\n// This is critical for proper hydration - we call useTransitionerSetup() as a composable\n// rather than rendering it as a component, which avoids Fragment/element mismatches.\nconst MatchesContent = Vue.defineComponent({\n name: 'MatchesContent',\n setup() {\n // IMPORTANT: We need to ensure Transitioner's setup() runs.\n // Transitioner sets up critical functionality:\n // - router.startTransition\n // - History subscription via router.history.subscribe(router.load)\n // - Watchers for router events\n //\n // We inline Transitioner's setup logic here. Since Transitioner returns null,\n // we can call its setup function directly without affecting the render tree.\n // This is done by importing and calling useTransitionerSetup.\n useTransitionerSetup()\n\n return () => Vue.h(MatchesInner)\n },\n})\n\nexport const Matches = Vue.defineComponent({\n name: 'Matches',\n setup() {\n const router = useRouter()\n\n return () => {\n const pendingElement = router?.options?.defaultPendingComponent\n ? Vue.h(router.options.defaultPendingComponent)\n : null\n\n // Do not render a root Suspense during SSR or hydrating from SSR\n const inner =\n (isServer ?? router?.isServer ?? false) ||\n (typeof document !== 'undefined' && router?.ssr)\n ? Vue.h(MatchesContent)\n : Vue.h(\n Vue.Suspense,\n { fallback: pendingElement },\n {\n default: () => Vue.h(MatchesContent),\n },\n )\n\n return router?.options?.InnerWrap\n ? Vue.h(router.options.InnerWrap, null, { default: () => inner })\n : inner\n }\n },\n})\n\n// Create a simple error component function that matches ErrorRouteComponent\nconst errorComponentFn: ErrorRouteComponentType = (\n props: ErrorComponentProps,\n) => {\n return Vue.h('div', { class: 'error' }, [\n Vue.h('h1', null, 'Error'),\n Vue.h('p', null, props.error.message || String(props.error)),\n Vue.h('button', { onClick: props.reset }, 'Try Again'),\n ])\n}\n\nconst MatchesInner = Vue.defineComponent({\n name: 'MatchesInner',\n setup() {\n const router = useRouter()\n\n const matchId = useRouterState({\n select: (s) => {\n return s.matches[0]?.id\n },\n })\n\n const resetKey = useRouterState({\n select: (s) => s.loadedAt,\n })\n\n // Create a ref for the match id to provide\n const matchIdRef = Vue.computed(() => matchId.value)\n\n // Provide the matchId for child components using the InjectionKey\n Vue.provide(matchContext, matchIdRef)\n\n return () => {\n // Generate a placeholder element if matchId.value is not present\n const childElement = matchId.value\n ? Vue.h(Match, { matchId: matchId.value })\n : Vue.h('div')\n\n // If disableGlobalCatchBoundary is true, don't wrap in CatchBoundary\n if (router.options.disableGlobalCatchBoundary) {\n return childElement\n }\n\n return Vue.h(CatchBoundary, {\n getResetKey: () => resetKey.value,\n errorComponent: errorComponentFn,\n onCatch: (error: Error) => {\n warning(\n false,\n `The following error wasn't caught by any route! At the very least, consider setting an 'errorComponent' in your RootRoute!`,\n )\n warning(false, error.message || error.toString())\n },\n children: childElement,\n })\n }\n },\n})\n\nexport type UseMatchRouteOptions<\n TRouter extends AnyRouter = RegisteredRouter,\n TFrom extends string = string,\n TTo extends string | undefined = undefined,\n TMaskFrom extends string = TFrom,\n TMaskTo extends string = '',\n> = ToSubOptionsProps<TRouter, TFrom, TTo> &\n DeepPartial<MakeOptionalSearchParams<TRouter, TFrom, TTo>> &\n DeepPartial<MakeOptionalPathParams<TRouter, TFrom, TTo>> &\n MaskOptions<TRouter, TMaskFrom, TMaskTo> &\n MatchRouteOptions\n\nexport function useMatchRoute<TRouter extends AnyRouter = RegisteredRouter>() {\n const router = useRouter()\n\n // Track state changes to trigger re-computation\n // Use multiple state values like React does for complete reactivity\n const routerState = useRouterState({\n select: (s) => ({\n locationHref: s.location.href,\n resolvedLocationHref: s.resolvedLocation?.href,\n status: s.status,\n }),\n })\n\n return <\n const TFrom extends string = string,\n const TTo extends string | undefined = undefined,\n const TMaskFrom extends string = TFrom,\n const TMaskTo extends string = '',\n >(\n opts: UseMatchRouteOptions<TRouter, TFrom, TTo, TMaskFrom, TMaskTo>,\n ): Vue.Ref<\n false | ResolveRoute<TRouter, TFrom, TTo>['types']['allParams']\n > => {\n const { pending, caseSensitive, fuzzy, includeSearch, ...rest } = opts\n\n const matchRoute = Vue.computed(() => {\n // Access routerState to establish dependency\n\n routerState.value\n return router.matchRoute(rest as any, {\n pending,\n caseSensitive,\n fuzzy,\n includeSearch,\n })\n })\n\n return matchRoute\n }\n}\n\nexport type MakeMatchRouteOptions<\n TRouter extends AnyRouter = RegisteredRouter,\n TFrom extends string = string,\n TTo extends string | undefined = undefined,\n TMaskFrom extends string = TFrom,\n TMaskTo extends string = '',\n> = UseMatchRouteOptions<TRouter, TFrom, TTo, TMaskFrom, TMaskTo> & {\n // If a function is passed as a child, it will be given the `isActive` boolean to aid in further styling on the element it returns\n children?:\n | ((\n params?: RouteByPath<\n TRouter['routeTree'],\n ResolveRelativePath<TFrom, NoInfer<TTo>>\n >['types']['allParams'],\n ) => Vue.VNode)\n | Vue.VNode\n}\n\n// Create a type for the MatchRoute component that includes the generics\nexport interface MatchRouteComponentType {\n <\n TRouter extends AnyRouter = RegisteredRouter,\n TFrom extends string = string,\n TTo extends string | undefined = undefined,\n >(\n props: MakeMatchRouteOptions<TRouter, TFrom, TTo>,\n ): Vue.VNode\n new (): {\n $props: {\n from?: string\n to?: string\n fuzzy?: boolean\n caseSensitive?: boolean\n includeSearch?: boolean\n pending?: boolean\n }\n }\n}\n\nexport const MatchRoute = Vue.defineComponent({\n name: 'MatchRoute',\n props: {\n // Define props to match MakeMatchRouteOptions\n from: {\n type: String,\n required: false,\n },\n to: {\n type: String,\n required: false,\n },\n fuzzy: {\n type: Boolean,\n required: false,\n },\n caseSensitive: {\n type: Boolean,\n required: false,\n },\n includeSearch: {\n type: Boolean,\n required: false,\n },\n pending: {\n type: Boolean,\n required: false,\n },\n },\n setup(props, { slots }) {\n const status = useRouterState({\n select: (s) => s.status,\n })\n\n return () => {\n if (!status.value) return null\n\n const matchRoute = useMatchRoute()\n const params = matchRoute(props as any).value as boolean\n\n // Create a component that renders the slot in a reactive manner\n if (!params || !slots.default) {\n return null\n }\n\n // For function slots, pass the params\n if (typeof slots.default === 'function') {\n // Use h to create a wrapper component that will call the slot function\n return Vue.h(Vue.Fragment, null, slots.default(params))\n }\n\n // For normal slots, just render them\n return Vue.h(Vue.Fragment, null, slots.default)\n }\n },\n}) as unknown as MatchRouteComponentType\n\nexport interface UseMatchesBaseOptions<TRouter extends AnyRouter, TSelected> {\n select?: (matches: Array<MakeRouteMatchUnion<TRouter>>) => TSelected\n}\n\nexport type UseMatchesResult<\n TRouter extends AnyRouter,\n TSelected,\n> = unknown extends TSelected ? Array<MakeRouteMatchUnion<TRouter>> : TSelected\n\nexport function useMatches<\n TRouter extends AnyRouter = RegisteredRouter,\n TSelected = unknown,\n>(\n opts?: UseMatchesBaseOptions<TRouter, TSelected>,\n): Vue.Ref<UseMatchesResult<TRouter, TSelected>> {\n return useRouterState({\n select: (state: RouterState<TRouter['routeTree']>) => {\n const matches = state?.matches || []\n return opts?.select\n ? opts.select(matches as Array<MakeRouteMatchUnion<TRouter>>)\n : matches\n },\n } as any) as Vue.Ref<UseMatchesResult<TRouter, TSelected>>\n}\n\nexport function useParentMatches<\n TRouter extends AnyRouter = RegisteredRouter,\n TSelected = unknown,\n>(\n opts?: UseMatchesBaseOptions<TRouter, TSelected>,\n): Vue.Ref<UseMatchesResult<TRouter, TSelected>> {\n // Use matchContext with proper type\n const contextMatchId = Vue.inject<Vue.Ref<string | undefined>>(matchContext)\n const safeMatchId = Vue.computed(() => contextMatchId?.value || '')\n\n return useMatches({\n select: (matches: Array<MakeRouteMatchUnion<TRouter>>) => {\n matches = matches.slice(\n 0,\n matches.findIndex((d) => d.id === safeMatchId.value),\n )\n return opts?.select ? opts.select(matches) : matches\n },\n } as any)\n}\n\nexport function useChildMatches<\n TRouter extends AnyRouter = RegisteredRouter,\n TSelected = unknown,\n>(\n opts?: UseMatchesBaseOptions<TRouter, TSelected>,\n): Vue.Ref<UseMatchesResult<TRouter, TSelected>> {\n // Use matchContext with proper type\n const contextMatchId = Vue.inject<Vue.Ref<string | undefined>>(matchContext)\n const safeMatchId = Vue.computed(() => contextMatchId?.value || '')\n\n return useMatches({\n select: (matches: Array<MakeRouteMatchUnion<TRouter>>) => {\n matches = matches.slice(\n matches.findIndex((d) => d.id === safeMatchId.value) + 1,\n )\n return opts?.select ? opts.select(matches) : matches\n },\n } as any)\n}\n"],"names":["MatchesContent","Vue","defineComponent","name","setup","useTransitionerSetup","h","MatchesInner","Matches","router","useRouter","pendingElement","options","defaultPendingComponent","inner","isServer","document","ssr","Suspense","fallback","default","InnerWrap","errorComponentFn","props","class","error","message","String","onClick","reset","matchId","useRouterState","select","s","matches","id","resetKey","loadedAt","matchIdRef","computed","value","provide","matchContext","childElement","Match","disableGlobalCatchBoundary","CatchBoundary","getResetKey","errorComponent","onCatch","warning","toString","children","useMatchRoute","routerState","locationHref","location","href","resolvedLocationHref","resolvedLocation","status","opts","pending","caseSensitive","fuzzy","includeSearch","rest","matchRoute","MatchRoute","from","type","required","to","Boolean","slots","params","Fragment","useMatches","state","useParentMatches","contextMatchId","inject","safeMatchId","slice","findIndex","d","useChildMatches"],"mappings":"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"}
|
package/dist/esm/ScriptOnce.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import * as Vue from "vue";
|
|
2
2
|
import { createVNode } from "vue";
|
|
3
|
+
import { isServer } from "@tanstack/router-core";
|
|
3
4
|
import { useRouter } from "./useRouter.js";
|
|
4
5
|
const ScriptOnce = Vue.defineComponent({
|
|
5
6
|
name: "ScriptOnce",
|
|
@@ -11,7 +12,7 @@ const ScriptOnce = Vue.defineComponent({
|
|
|
11
12
|
},
|
|
12
13
|
setup(props) {
|
|
13
14
|
const router = useRouter();
|
|
14
|
-
if (router.isServer) {
|
|
15
|
+
if (isServer ?? router.isServer) {
|
|
15
16
|
return () => createVNode("script", {
|
|
16
17
|
"nonce": router.options.ssr?.nonce,
|
|
17
18
|
"innerHTML": props.children + ";document.currentScript.remove()"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScriptOnce.js","sources":["../../src/ScriptOnce.tsx"],"sourcesContent":["import * as Vue from 'vue'\nimport { useRouter } from './useRouter'\n\nexport const ScriptOnce = Vue.defineComponent({\n name: 'ScriptOnce',\n props: {\n children: {\n type: String,\n required: true,\n },\n },\n setup(props) {\n const router = useRouter()\n\n if (router.isServer) {\n return () => (\n <script\n nonce={router.options.ssr?.nonce}\n innerHTML={props.children + ';document.currentScript.remove()'}\n />\n )\n }\n\n const mounted = Vue.ref(false)\n Vue.onMounted(() => {\n mounted.value = true\n })\n\n return () => {\n if (mounted.value) {\n return null\n }\n\n return (\n <script\n nonce={router.options.ssr?.nonce}\n data-allow-mismatch\n innerHTML=\"\"\n />\n )\n }\n },\n})\n"],"names":["ScriptOnce","Vue","defineComponent","name","props","children","type","String","required","setup","router","useRouter","isServer","_createVNode","options","ssr","nonce","mounted","ref","onMounted","value"],"mappings":"
|
|
1
|
+
{"version":3,"file":"ScriptOnce.js","sources":["../../src/ScriptOnce.tsx"],"sourcesContent":["import * as Vue from 'vue'\nimport { isServer } from '@tanstack/router-core'\nimport { useRouter } from './useRouter'\n\nexport const ScriptOnce = Vue.defineComponent({\n name: 'ScriptOnce',\n props: {\n children: {\n type: String,\n required: true,\n },\n },\n setup(props) {\n const router = useRouter()\n\n if (isServer ?? router.isServer) {\n return () => (\n <script\n nonce={router.options.ssr?.nonce}\n innerHTML={props.children + ';document.currentScript.remove()'}\n />\n )\n }\n\n const mounted = Vue.ref(false)\n Vue.onMounted(() => {\n mounted.value = true\n })\n\n return () => {\n if (mounted.value) {\n return null\n }\n\n return (\n <script\n nonce={router.options.ssr?.nonce}\n data-allow-mismatch\n innerHTML=\"\"\n />\n )\n }\n },\n})\n"],"names":["ScriptOnce","Vue","defineComponent","name","props","children","type","String","required","setup","router","useRouter","isServer","_createVNode","options","ssr","nonce","mounted","ref","onMounted","value"],"mappings":";;;;MAIaA,aAAaC,IAAIC,gBAAgB;AAAA,EAC5CC,MAAM;AAAA,EACNC,OAAO;AAAA,IACLC,UAAU;AAAA,MACRC,MAAMC;AAAAA,MACNC,UAAU;AAAA,IACZ;AAAA;EAEFC,MAAML,OAAO;AACX,UAAMM,SAASC,UAAS;AAExB,QAAIC,YAAYF,OAAOE,UAAU;AAC/B,aAAO,MAAAC,YAAA,UAAA;AAAA,QAAA,SAEIH,OAAOI,QAAQC,KAAKC;AAAAA,QAAK,aACrBZ,MAAMC,WAAW;AAAA,SAAkC,IAAA;AAAA,IAGpE;AAEA,UAAMY,UAAUhB,IAAIiB,IAAI,KAAK;AAC7BjB,QAAIkB,UAAU,MAAM;AAClBF,cAAQG,QAAQ;AAAA,IAClB,CAAC;AAED,WAAO,MAAM;AACX,UAAIH,QAAQG,OAAO;AACjB,eAAO;AAAA,MACT;AAEA,aAAAP,YAAA,UAAA;AAAA,QAAA,SAEWH,OAAOI,QAAQC,KAAKC;AAAAA,QAAK,uBAAA;AAAA,QAAA,aAAA;AAAA,MAAA,GAAA,IAAA;AAAA,IAKtC;AAAA,EACF;AACF,CAAC;"}
|
package/dist/esm/Transitioner.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as Vue from "vue";
|
|
2
|
-
import { trimPathRight, getLocationChangeInfo, handleHashScroll } from "@tanstack/router-core";
|
|
2
|
+
import { isServer, trimPathRight, getLocationChangeInfo, handleHashScroll } from "@tanstack/router-core";
|
|
3
3
|
import { useRouter } from "./useRouter.js";
|
|
4
4
|
import { useRouterState } from "./useRouterState.js";
|
|
5
5
|
import { usePrevious } from "./utils.js";
|
|
@@ -9,7 +9,7 @@ let mountLoadForRouter = {
|
|
|
9
9
|
};
|
|
10
10
|
function useTransitionerSetup() {
|
|
11
11
|
const router = useRouter();
|
|
12
|
-
if (router.isServer) {
|
|
12
|
+
if (isServer ?? router.isServer) {
|
|
13
13
|
return;
|
|
14
14
|
}
|
|
15
15
|
const isLoading = useRouterState({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Transitioner.js","sources":["../../src/Transitioner.tsx"],"sourcesContent":["import * as Vue from 'vue'\nimport {\n getLocationChangeInfo,\n handleHashScroll,\n trimPathRight,\n} from '@tanstack/router-core'\nimport { useRouter } from './useRouter'\nimport { useRouterState } from './useRouterState'\nimport { usePrevious } from './utils'\n\n// Track mount state per router to avoid double-loading\nlet mountLoadForRouter = { router: null as any, mounted: false }\n\n/**\n * Composable that sets up router transition logic.\n * This is called from MatchesContent to set up:\n * - router.startTransition\n * - router.startViewTransition\n * - History subscription\n * - Router event watchers\n *\n * Must be called during component setup phase.\n */\nexport function useTransitionerSetup() {\n const router = useRouter()\n\n // Skip on server - no transitions needed\n if (router.isServer) {\n return\n }\n\n const isLoading = useRouterState({\n select: ({ isLoading }) => isLoading,\n })\n\n // Track if we're in a transition - using a ref to track async transitions\n const isTransitioning = Vue.ref(false)\n\n // Track pending state changes\n const hasPendingMatches = useRouterState({\n select: (s) => s.matches.some((d) => d.status === 'pending'),\n })\n\n const previousIsLoading = usePrevious(() => isLoading.value)\n\n const isAnyPending = Vue.computed(\n () => isLoading.value || isTransitioning.value || hasPendingMatches.value,\n )\n const previousIsAnyPending = usePrevious(() => isAnyPending.value)\n\n const isPagePending = Vue.computed(\n () => isLoading.value || hasPendingMatches.value,\n )\n const previousIsPagePending = usePrevious(() => isPagePending.value)\n\n // Implement startTransition similar to React/Solid\n // Vue doesn't have a native useTransition like React 18, so we simulate it\n // We also update the router state's isTransitioning flag so useMatch can check it\n router.startTransition = (fn: () => void | Promise<void>) => {\n isTransitioning.value = true\n // Also update the router state so useMatch knows we're transitioning\n try {\n router.__store.setState((s) => ({ ...s, isTransitioning: true }))\n } catch {\n // Ignore errors if component is unmounted\n }\n\n // Helper to end the transition\n const endTransition = () => {\n // Use nextTick to ensure Vue has processed all reactive updates\n Vue.nextTick(() => {\n try {\n isTransitioning.value = false\n router.__store.setState((s) => ({ ...s, isTransitioning: false }))\n } catch {\n // Ignore errors if component is unmounted\n }\n })\n }\n\n // Execute the function synchronously\n // The function internally may call startViewTransition which schedules async work\n // via document.startViewTransition, but we don't need to wait for it here\n // because Vue's reactivity will trigger re-renders when state changes\n fn()\n\n // End the transition on next tick to allow Vue to process reactive updates\n endTransition()\n }\n\n // Vue updates DOM asynchronously (next tick). The View Transitions API expects the\n // update callback promise to resolve only after the DOM has been updated.\n // Wrap the router-core implementation to await a Vue flush before resolving.\n const originalStartViewTransition:\n | undefined\n | ((fn: () => Promise<void>) => void) =\n (router as any).__tsrOriginalStartViewTransition ??\n router.startViewTransition\n\n ;(router as any).__tsrOriginalStartViewTransition =\n originalStartViewTransition\n\n router.startViewTransition = (fn: () => Promise<void>) => {\n return originalStartViewTransition?.(async () => {\n await fn()\n await Vue.nextTick()\n })\n }\n\n // Subscribe to location changes\n // and try to load the new location\n let unsubscribe: (() => void) | undefined\n\n Vue.onMounted(() => {\n unsubscribe = router.history.subscribe(router.load)\n\n const nextLocation = router.buildLocation({\n to: router.latestLocation.pathname,\n search: true,\n params: true,\n hash: true,\n state: true,\n _includeValidateSearch: true,\n })\n\n // Check if the current URL matches the canonical form.\n // Compare publicHref (browser-facing URL) for consistency with\n // the server-side redirect check in router.beforeLoad.\n if (\n trimPathRight(router.latestLocation.publicHref) !==\n trimPathRight(nextLocation.publicHref)\n ) {\n router.commitLocation({ ...nextLocation, replace: true })\n }\n })\n\n // Track if component is mounted to prevent updates after unmount\n const isMounted = Vue.ref(false)\n\n Vue.onMounted(() => {\n isMounted.value = true\n if (!isAnyPending.value) {\n router.__store.setState((s) =>\n s.status === 'pending'\n ? { ...s, status: 'idle', resolvedLocation: s.location }\n : s,\n )\n }\n })\n\n Vue.onUnmounted(() => {\n isMounted.value = false\n if (unsubscribe) {\n unsubscribe()\n }\n })\n\n // Try to load the initial location\n Vue.onMounted(() => {\n if (\n (typeof window !== 'undefined' && router.ssr) ||\n (mountLoadForRouter.router === router && mountLoadForRouter.mounted)\n ) {\n return\n }\n mountLoadForRouter = { router, mounted: true }\n const tryLoad = async () => {\n try {\n await router.load()\n } catch (err) {\n console.error(err)\n }\n }\n tryLoad()\n })\n\n // Setup watchers for emitting events\n // All watchers check isMounted to prevent updates after unmount\n Vue.watch(\n () => isLoading.value,\n (newValue) => {\n if (!isMounted.value) return\n try {\n if (previousIsLoading.value.previous && !newValue) {\n router.emit({\n type: 'onLoad',\n ...getLocationChangeInfo(router.state),\n })\n }\n } catch {\n // Ignore errors if component is unmounted\n }\n },\n )\n\n Vue.watch(isPagePending, (newValue) => {\n if (!isMounted.value) return\n try {\n // emit onBeforeRouteMount\n if (previousIsPagePending.value.previous && !newValue) {\n router.emit({\n type: 'onBeforeRouteMount',\n ...getLocationChangeInfo(router.state),\n })\n }\n } catch {\n // Ignore errors if component is unmounted\n }\n })\n\n Vue.watch(isAnyPending, (newValue) => {\n if (!isMounted.value) return\n try {\n if (!newValue && router.__store.state.status === 'pending') {\n router.__store.setState((s) => ({\n ...s,\n status: 'idle',\n resolvedLocation: s.location,\n }))\n }\n\n // The router was pending and now it's not\n if (previousIsAnyPending.value.previous && !newValue) {\n const changeInfo = getLocationChangeInfo(router.state)\n router.emit({\n type: 'onResolved',\n ...changeInfo,\n })\n\n if (changeInfo.hrefChanged) {\n handleHashScroll(router)\n }\n }\n } catch {\n // Ignore errors if component is unmounted\n }\n })\n}\n\n/**\n * @deprecated Use useTransitionerSetup() composable instead.\n * This component is kept for backwards compatibility but the setup logic\n * has been moved to useTransitionerSetup() for better SSR hydration.\n */\nexport const Transitioner = Vue.defineComponent({\n name: 'Transitioner',\n setup() {\n useTransitionerSetup()\n return () => null\n },\n})\n"],"names":["mountLoadForRouter","router","mounted","useTransitionerSetup","useRouter","isServer","isLoading","useRouterState","select","isTransitioning","Vue","ref","hasPendingMatches","s","matches","some","d","status","previousIsLoading","usePrevious","value","isAnyPending","computed","previousIsAnyPending","isPagePending","previousIsPagePending","startTransition","fn","__store","setState","endTransition","nextTick","originalStartViewTransition","__tsrOriginalStartViewTransition","startViewTransition","unsubscribe","onMounted","history","subscribe","load","nextLocation","buildLocation","to","latestLocation","pathname","search","params","hash","state","_includeValidateSearch","trimPathRight","publicHref","commitLocation","replace","isMounted","resolvedLocation","location","onUnmounted","window","ssr","tryLoad","err","console","error","watch","newValue","previous","emit","type","getLocationChangeInfo","changeInfo","hrefChanged","handleHashScroll","defineComponent","name","setup"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Transitioner.js","sources":["../../src/Transitioner.tsx"],"sourcesContent":["import * as Vue from 'vue'\nimport {\n getLocationChangeInfo,\n handleHashScroll,\n isServer,\n trimPathRight,\n} from '@tanstack/router-core'\nimport { useRouter } from './useRouter'\nimport { useRouterState } from './useRouterState'\nimport { usePrevious } from './utils'\n\n// Track mount state per router to avoid double-loading\nlet mountLoadForRouter = { router: null as any, mounted: false }\n\n/**\n * Composable that sets up router transition logic.\n * This is called from MatchesContent to set up:\n * - router.startTransition\n * - router.startViewTransition\n * - History subscription\n * - Router event watchers\n *\n * Must be called during component setup phase.\n */\nexport function useTransitionerSetup() {\n const router = useRouter()\n\n // Skip on server - no transitions needed\n if (isServer ?? router.isServer) {\n return\n }\n\n const isLoading = useRouterState({\n select: ({ isLoading }) => isLoading,\n })\n\n // Track if we're in a transition - using a ref to track async transitions\n const isTransitioning = Vue.ref(false)\n\n // Track pending state changes\n const hasPendingMatches = useRouterState({\n select: (s) => s.matches.some((d) => d.status === 'pending'),\n })\n\n const previousIsLoading = usePrevious(() => isLoading.value)\n\n const isAnyPending = Vue.computed(\n () => isLoading.value || isTransitioning.value || hasPendingMatches.value,\n )\n const previousIsAnyPending = usePrevious(() => isAnyPending.value)\n\n const isPagePending = Vue.computed(\n () => isLoading.value || hasPendingMatches.value,\n )\n const previousIsPagePending = usePrevious(() => isPagePending.value)\n\n // Implement startTransition similar to React/Solid\n // Vue doesn't have a native useTransition like React 18, so we simulate it\n // We also update the router state's isTransitioning flag so useMatch can check it\n router.startTransition = (fn: () => void | Promise<void>) => {\n isTransitioning.value = true\n // Also update the router state so useMatch knows we're transitioning\n try {\n router.__store.setState((s) => ({ ...s, isTransitioning: true }))\n } catch {\n // Ignore errors if component is unmounted\n }\n\n // Helper to end the transition\n const endTransition = () => {\n // Use nextTick to ensure Vue has processed all reactive updates\n Vue.nextTick(() => {\n try {\n isTransitioning.value = false\n router.__store.setState((s) => ({ ...s, isTransitioning: false }))\n } catch {\n // Ignore errors if component is unmounted\n }\n })\n }\n\n // Execute the function synchronously\n // The function internally may call startViewTransition which schedules async work\n // via document.startViewTransition, but we don't need to wait for it here\n // because Vue's reactivity will trigger re-renders when state changes\n fn()\n\n // End the transition on next tick to allow Vue to process reactive updates\n endTransition()\n }\n\n // Vue updates DOM asynchronously (next tick). The View Transitions API expects the\n // update callback promise to resolve only after the DOM has been updated.\n // Wrap the router-core implementation to await a Vue flush before resolving.\n const originalStartViewTransition:\n | undefined\n | ((fn: () => Promise<void>) => void) =\n (router as any).__tsrOriginalStartViewTransition ??\n router.startViewTransition\n\n ;(router as any).__tsrOriginalStartViewTransition =\n originalStartViewTransition\n\n router.startViewTransition = (fn: () => Promise<void>) => {\n return originalStartViewTransition?.(async () => {\n await fn()\n await Vue.nextTick()\n })\n }\n\n // Subscribe to location changes\n // and try to load the new location\n let unsubscribe: (() => void) | undefined\n\n Vue.onMounted(() => {\n unsubscribe = router.history.subscribe(router.load)\n\n const nextLocation = router.buildLocation({\n to: router.latestLocation.pathname,\n search: true,\n params: true,\n hash: true,\n state: true,\n _includeValidateSearch: true,\n })\n\n // Check if the current URL matches the canonical form.\n // Compare publicHref (browser-facing URL) for consistency with\n // the server-side redirect check in router.beforeLoad.\n if (\n trimPathRight(router.latestLocation.publicHref) !==\n trimPathRight(nextLocation.publicHref)\n ) {\n router.commitLocation({ ...nextLocation, replace: true })\n }\n })\n\n // Track if component is mounted to prevent updates after unmount\n const isMounted = Vue.ref(false)\n\n Vue.onMounted(() => {\n isMounted.value = true\n if (!isAnyPending.value) {\n router.__store.setState((s) =>\n s.status === 'pending'\n ? { ...s, status: 'idle', resolvedLocation: s.location }\n : s,\n )\n }\n })\n\n Vue.onUnmounted(() => {\n isMounted.value = false\n if (unsubscribe) {\n unsubscribe()\n }\n })\n\n // Try to load the initial location\n Vue.onMounted(() => {\n if (\n (typeof window !== 'undefined' && router.ssr) ||\n (mountLoadForRouter.router === router && mountLoadForRouter.mounted)\n ) {\n return\n }\n mountLoadForRouter = { router, mounted: true }\n const tryLoad = async () => {\n try {\n await router.load()\n } catch (err) {\n console.error(err)\n }\n }\n tryLoad()\n })\n\n // Setup watchers for emitting events\n // All watchers check isMounted to prevent updates after unmount\n Vue.watch(\n () => isLoading.value,\n (newValue) => {\n if (!isMounted.value) return\n try {\n if (previousIsLoading.value.previous && !newValue) {\n router.emit({\n type: 'onLoad',\n ...getLocationChangeInfo(router.state),\n })\n }\n } catch {\n // Ignore errors if component is unmounted\n }\n },\n )\n\n Vue.watch(isPagePending, (newValue) => {\n if (!isMounted.value) return\n try {\n // emit onBeforeRouteMount\n if (previousIsPagePending.value.previous && !newValue) {\n router.emit({\n type: 'onBeforeRouteMount',\n ...getLocationChangeInfo(router.state),\n })\n }\n } catch {\n // Ignore errors if component is unmounted\n }\n })\n\n Vue.watch(isAnyPending, (newValue) => {\n if (!isMounted.value) return\n try {\n if (!newValue && router.__store.state.status === 'pending') {\n router.__store.setState((s) => ({\n ...s,\n status: 'idle',\n resolvedLocation: s.location,\n }))\n }\n\n // The router was pending and now it's not\n if (previousIsAnyPending.value.previous && !newValue) {\n const changeInfo = getLocationChangeInfo(router.state)\n router.emit({\n type: 'onResolved',\n ...changeInfo,\n })\n\n if (changeInfo.hrefChanged) {\n handleHashScroll(router)\n }\n }\n } catch {\n // Ignore errors if component is unmounted\n }\n })\n}\n\n/**\n * @deprecated Use useTransitionerSetup() composable instead.\n * This component is kept for backwards compatibility but the setup logic\n * has been moved to useTransitionerSetup() for better SSR hydration.\n */\nexport const Transitioner = Vue.defineComponent({\n name: 'Transitioner',\n setup() {\n useTransitionerSetup()\n return () => null\n },\n})\n"],"names":["mountLoadForRouter","router","mounted","useTransitionerSetup","useRouter","isServer","isLoading","useRouterState","select","isTransitioning","Vue","ref","hasPendingMatches","s","matches","some","d","status","previousIsLoading","usePrevious","value","isAnyPending","computed","previousIsAnyPending","isPagePending","previousIsPagePending","startTransition","fn","__store","setState","endTransition","nextTick","originalStartViewTransition","__tsrOriginalStartViewTransition","startViewTransition","unsubscribe","onMounted","history","subscribe","load","nextLocation","buildLocation","to","latestLocation","pathname","search","params","hash","state","_includeValidateSearch","trimPathRight","publicHref","commitLocation","replace","isMounted","resolvedLocation","location","onUnmounted","window","ssr","tryLoad","err","console","error","watch","newValue","previous","emit","type","getLocationChangeInfo","changeInfo","hrefChanged","handleHashScroll","defineComponent","name","setup"],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as Vue from "vue";
|
|
2
2
|
import { createVNode } from "vue";
|
|
3
|
-
import { defaultGetScrollRestorationKey, restoreScroll, escapeHtml, storageKey } from "@tanstack/router-core";
|
|
3
|
+
import { defaultGetScrollRestorationKey, isServer, restoreScroll, escapeHtml, storageKey } from "@tanstack/router-core";
|
|
4
4
|
import { useRouter } from "./useRouter.js";
|
|
5
5
|
import { ScriptOnce } from "./ScriptOnce.js";
|
|
6
6
|
const ScrollRestoration = Vue.defineComponent({
|
|
@@ -36,7 +36,7 @@ const ScrollRestoration = Vue.defineComponent({
|
|
|
36
36
|
if (resolvedKey) {
|
|
37
37
|
restoreScrollOptions.key = resolvedKey;
|
|
38
38
|
}
|
|
39
|
-
if (router.isServer) {
|
|
39
|
+
if (isServer ?? router.isServer) {
|
|
40
40
|
return createVNode(ScriptOnce, {
|
|
41
41
|
"children": `(${restoreScroll.toString()})(${escapeHtml(JSON.stringify(restoreScrollOptions))})`
|
|
42
42
|
}, null);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scroll-restoration.js","sources":["../../src/scroll-restoration.tsx"],"sourcesContent":["import * as Vue from 'vue'\nimport {\n defaultGetScrollRestorationKey,\n escapeHtml,\n restoreScroll,\n storageKey,\n} from '@tanstack/router-core'\nimport { useRouter } from './useRouter'\nimport { ScriptOnce } from './ScriptOnce'\n\n/**\n * ScrollRestoration component for Vue.\n * On server: renders a ScriptOnce with scroll restoration logic.\n * On client during hydration: renders a matching ScriptOnce to avoid mismatch.\n * After mount: renders nothing.\n */\nexport const ScrollRestoration = Vue.defineComponent({\n name: 'ScrollRestoration',\n setup() {\n const router = useRouter()\n\n // Track mounted state for hydration handling\n const mounted = Vue.ref(false)\n Vue.onMounted(() => {\n mounted.value = true\n })\n\n return () => {\n // After mount, render nothing\n if (mounted.value) {\n return null\n }\n\n // Check if scroll restoration is enabled\n if (!router.isScrollRestoring) {\n return null\n }\n\n // Check custom scroll restoration function\n if (typeof router.options.scrollRestoration === 'function') {\n const shouldRestore = router.options.scrollRestoration({\n location: router.latestLocation,\n })\n if (!shouldRestore) {\n return null\n }\n }\n\n const getKey =\n router.options.getScrollRestorationKey || defaultGetScrollRestorationKey\n const userKey = getKey(router.latestLocation)\n const resolvedKey =\n userKey !== defaultGetScrollRestorationKey(router.latestLocation)\n ? userKey\n : undefined\n\n const restoreScrollOptions: Parameters<typeof restoreScroll>[0] = {\n storageKey,\n shouldScrollRestoration: true,\n }\n if (resolvedKey) {\n restoreScrollOptions.key = resolvedKey\n }\n\n // Server-side: render the actual scroll restoration script\n if (router.isServer) {\n return (\n <ScriptOnce\n children={`(${restoreScroll.toString()})(${escapeHtml(JSON.stringify(restoreScrollOptions))})`}\n />\n )\n }\n\n // Client-side during hydration: render empty ScriptOnce to match server structure\n return <ScriptOnce children=\"\" />\n }\n },\n})\n"],"names":["ScrollRestoration","Vue","defineComponent","name","setup","router","useRouter","mounted","ref","onMounted","value","isScrollRestoring","options","scrollRestoration","shouldRestore","location","latestLocation","getKey","getScrollRestorationKey","defaultGetScrollRestorationKey","userKey","resolvedKey","undefined","restoreScrollOptions","storageKey","shouldScrollRestoration","key","isServer","_createVNode","ScriptOnce","restoreScroll","toString","escapeHtml","JSON","stringify"],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"scroll-restoration.js","sources":["../../src/scroll-restoration.tsx"],"sourcesContent":["import * as Vue from 'vue'\nimport {\n defaultGetScrollRestorationKey,\n escapeHtml,\n isServer,\n restoreScroll,\n storageKey,\n} from '@tanstack/router-core'\nimport { useRouter } from './useRouter'\nimport { ScriptOnce } from './ScriptOnce'\n\n/**\n * ScrollRestoration component for Vue.\n * On server: renders a ScriptOnce with scroll restoration logic.\n * On client during hydration: renders a matching ScriptOnce to avoid mismatch.\n * After mount: renders nothing.\n */\nexport const ScrollRestoration = Vue.defineComponent({\n name: 'ScrollRestoration',\n setup() {\n const router = useRouter()\n\n // Track mounted state for hydration handling\n const mounted = Vue.ref(false)\n Vue.onMounted(() => {\n mounted.value = true\n })\n\n return () => {\n // After mount, render nothing\n if (mounted.value) {\n return null\n }\n\n // Check if scroll restoration is enabled\n if (!router.isScrollRestoring) {\n return null\n }\n\n // Check custom scroll restoration function\n if (typeof router.options.scrollRestoration === 'function') {\n const shouldRestore = router.options.scrollRestoration({\n location: router.latestLocation,\n })\n if (!shouldRestore) {\n return null\n }\n }\n\n const getKey =\n router.options.getScrollRestorationKey || defaultGetScrollRestorationKey\n const userKey = getKey(router.latestLocation)\n const resolvedKey =\n userKey !== defaultGetScrollRestorationKey(router.latestLocation)\n ? userKey\n : undefined\n\n const restoreScrollOptions: Parameters<typeof restoreScroll>[0] = {\n storageKey,\n shouldScrollRestoration: true,\n }\n if (resolvedKey) {\n restoreScrollOptions.key = resolvedKey\n }\n\n // Server-side: render the actual scroll restoration script\n if (isServer ?? router.isServer) {\n return (\n <ScriptOnce\n children={`(${restoreScroll.toString()})(${escapeHtml(JSON.stringify(restoreScrollOptions))})`}\n />\n )\n }\n\n // Client-side during hydration: render empty ScriptOnce to match server structure\n return <ScriptOnce children=\"\" />\n }\n },\n})\n"],"names":["ScrollRestoration","Vue","defineComponent","name","setup","router","useRouter","mounted","ref","onMounted","value","isScrollRestoring","options","scrollRestoration","shouldRestore","location","latestLocation","getKey","getScrollRestorationKey","defaultGetScrollRestorationKey","userKey","resolvedKey","undefined","restoreScrollOptions","storageKey","shouldScrollRestoration","key","isServer","_createVNode","ScriptOnce","restoreScroll","toString","escapeHtml","JSON","stringify"],"mappings":";;;;;MAiBaA,oBAAoBC,IAAIC,gBAAgB;AAAA,EACnDC,MAAM;AAAA,EACNC,QAAQ;AACN,UAAMC,SAASC,UAAS;AAGxB,UAAMC,UAAUN,IAAIO,IAAI,KAAK;AAC7BP,QAAIQ,UAAU,MAAM;AAClBF,cAAQG,QAAQ;AAAA,IAClB,CAAC;AAED,WAAO,MAAM;AAEX,UAAIH,QAAQG,OAAO;AACjB,eAAO;AAAA,MACT;AAGA,UAAI,CAACL,OAAOM,mBAAmB;AAC7B,eAAO;AAAA,MACT;AAGA,UAAI,OAAON,OAAOO,QAAQC,sBAAsB,YAAY;AAC1D,cAAMC,gBAAgBT,OAAOO,QAAQC,kBAAkB;AAAA,UACrDE,UAAUV,OAAOW;AAAAA,QACnB,CAAC;AACD,YAAI,CAACF,eAAe;AAClB,iBAAO;AAAA,QACT;AAAA,MACF;AAEA,YAAMG,SACJZ,OAAOO,QAAQM,2BAA2BC;AAC5C,YAAMC,UAAUH,OAAOZ,OAAOW,cAAc;AAC5C,YAAMK,cACJD,YAAYD,+BAA+Bd,OAAOW,cAAc,IAC5DI,UACAE;AAEN,YAAMC,uBAA4D;AAAA,QAChEC;AAAAA,QACAC,yBAAyB;AAAA;AAE3B,UAAIJ,aAAa;AACfE,6BAAqBG,MAAML;AAAAA,MAC7B;AAGA,UAAIM,YAAYtB,OAAOsB,UAAU;AAC/B,eAAAC,YAAAC,YAAA;AAAA,UAAA,YAEc,IAAIC,cAAcC,SAAQ,CAAE,KAAKC,WAAWC,KAAKC,UAAUX,oBAAoB,CAAC,CAAC;AAAA,QAAG,GAAA,IAAA;AAAA,MAGpG;AAGA,aAAAK,YAAAC,YAAA;AAAA,QAAA,YAAA;AAAA,MAAA,GAAA,IAAA;AAAA,IACF;AAAA,EACF;AACF,CAAC;"}
|
package/dist/source/Asset.jsx
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import * as Vue from 'vue';
|
|
2
|
+
import { isServer } from '@tanstack/router-core';
|
|
2
3
|
import { useRouter } from './useRouter';
|
|
3
4
|
const Title = Vue.defineComponent({
|
|
4
5
|
name: 'Title',
|
|
@@ -10,7 +11,7 @@ const Title = Vue.defineComponent({
|
|
|
10
11
|
},
|
|
11
12
|
setup(props) {
|
|
12
13
|
const router = useRouter();
|
|
13
|
-
if (!router.isServer) {
|
|
14
|
+
if (!(isServer ?? router.isServer)) {
|
|
14
15
|
Vue.onMounted(() => {
|
|
15
16
|
if (props.children) {
|
|
16
17
|
document.title = props.children;
|
|
@@ -39,7 +40,7 @@ const Script = Vue.defineComponent({
|
|
|
39
40
|
},
|
|
40
41
|
setup(props) {
|
|
41
42
|
const router = useRouter();
|
|
42
|
-
if (!router.isServer) {
|
|
43
|
+
if (!(isServer ?? router.isServer)) {
|
|
43
44
|
Vue.onMounted(() => {
|
|
44
45
|
const attrs = props.attrs;
|
|
45
46
|
const children = props.children;
|
|
@@ -94,7 +95,7 @@ const Script = Vue.defineComponent({
|
|
|
94
95
|
});
|
|
95
96
|
}
|
|
96
97
|
return () => {
|
|
97
|
-
if (!router.isServer) {
|
|
98
|
+
if (!(isServer ?? router.isServer)) {
|
|
98
99
|
const { src: _src, ...rest } = props.attrs || {};
|
|
99
100
|
return Vue.h('script', {
|
|
100
101
|
...rest,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Asset.jsx","sourceRoot":"","sources":["../../src/Asset.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,KAAK,CAAA;AAC1B,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAQvC,MAAM,KAAK,GAAG,GAAG,CAAC,eAAe,CAAC;IAChC,IAAI,EAAE,OAAO;IACb,KAAK,EAAE;QACL,QAAQ,EAAE;YACR,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,EAAE;SACZ;KACF;IACD,KAAK,CAAC,KAAK;QACT,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;QAE1B,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"Asset.jsx","sourceRoot":"","sources":["../../src/Asset.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,KAAK,CAAA;AAC1B,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAQvC,MAAM,KAAK,GAAG,GAAG,CAAC,eAAe,CAAC;IAChC,IAAI,EAAE,OAAO;IACb,KAAK,EAAE;QACL,QAAQ,EAAE;YACR,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,EAAE;SACZ;KACF;IACD,KAAK,CAAC,KAAK;QACT,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;QAE1B,IAAI,CAAC,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;YACnC,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE;gBACjB,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;oBACnB,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAA;gBACjC,CAAC;YACH,CAAC,CAAC,CAAA;YAEF,GAAG,CAAC,KAAK,CACP,GAAG,EAAE,CAAC,KAAK,CAAC,QAAQ,EACpB,CAAC,QAAQ,EAAE,EAAE;gBACX,IAAI,QAAQ,EAAE,CAAC;oBACb,QAAQ,CAAC,KAAK,GAAG,QAAQ,CAAA;gBAC3B,CAAC;YACH,CAAC,CACF,CAAA;QACH,CAAC;QAED,OAAO,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAA;IACjD,CAAC;CACF,CAAC,CAAA;AAEF,MAAM,MAAM,GAAG,GAAG,CAAC,eAAe,CAAC;IACjC,IAAI,EAAE,QAAQ;IACd,KAAK,EAAE;QACL,KAAK,EAAE;YACL,IAAI,EAAE,MAAmC;YACzC,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;SACpB;QACD,QAAQ,EAAE;YACR,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,SAAS;SACnB;KACF;IACD,KAAK,CAAC,KAAK;QACT,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;QAE1B,IAAI,CAAC,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;YACnC,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE;gBACjB,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAA;gBACzB,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAA;gBAE/B,IAAI,KAAK,EAAE,GAAG,EAAE,CAAC;oBACf,MAAM,OAAO,GAAG,CAAC,GAAG,EAAE;wBACpB,IAAI,CAAC;4BACH,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAA;4BACrD,OAAO,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,IAAI,CAAA;wBACtC,CAAC;wBAAC,MAAM,CAAC;4BACP,OAAO,KAAK,CAAC,GAAG,CAAA;wBAClB,CAAC;oBACH,CAAC,CAAC,EAAE,CAAA;oBACJ,MAAM,cAAc,GAAG,KAAK,CAAC,IAAI,CAC/B,QAAQ,CAAC,gBAAgB,CAAC,aAAa,CAAC,CACzC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAE,EAAwB,CAAC,GAAG,KAAK,OAAO,CAAC,CAAA;oBAEzD,IAAI,cAAc,EAAE,CAAC;wBACnB,OAAM;oBACR,CAAC;oBAED,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAA;oBAE/C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;wBACjD,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,KAAK,EAAE,CAAC;4BAC3C,MAAM,CAAC,YAAY,CACjB,GAAG,EACH,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAChD,CAAA;wBACH,CAAC;oBACH,CAAC;oBAED,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;gBACnC,CAAC;qBAAM,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;oBACxC,MAAM,QAAQ,GACZ,OAAO,KAAK,EAAE,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAA;oBAClE,MAAM,SAAS,GACb,OAAO,KAAK,EAAE,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAA;oBAC5D,MAAM,cAAc,GAAG,KAAK,CAAC,IAAI,CAC/B,QAAQ,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,CAC/C,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE;wBACZ,IAAI,CAAC,CAAC,EAAE,YAAY,iBAAiB,CAAC;4BAAE,OAAO,KAAK,CAAA;wBACpD,MAAM,KAAK,GAAG,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,iBAAiB,CAAA;wBAC1D,MAAM,MAAM,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,SAAS,CAAA;wBACpD,OAAO,CACL,EAAE,CAAC,WAAW,KAAK,QAAQ;4BAC3B,KAAK,KAAK,QAAQ;4BAClB,MAAM,KAAK,SAAS,CACrB,CAAA;oBACH,CAAC,CAAC,CAAA;oBAEF,IAAI,cAAc,EAAE,CAAC;wBACnB,OAAM;oBACR,CAAC;oBAED,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAA;oBAC/C,MAAM,CAAC,WAAW,GAAG,QAAQ,CAAA;oBAE7B,IAAI,KAAK,EAAE,CAAC;wBACV,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;4BACjD,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,KAAK,EAAE,CAAC;gCAC3C,MAAM,CAAC,YAAY,CACjB,GAAG,EACH,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAChD,CAAA;4BACH,CAAC;wBACH,CAAC;oBACH,CAAC;oBAED,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;gBACnC,CAAC;YACH,CAAC,CAAC,CAAA;QACJ,CAAC;QAED,OAAO,GAAG,EAAE;YACV,IAAI,CAAC,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACnC,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC,KAAK,IAAI,EAAE,CAAA;gBAChD,OAAO,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE;oBACrB,GAAG,IAAI;oBACP,qBAAqB,EAAE,IAAI;oBAC3B,SAAS,EAAE,EAAE;iBACd,CAAC,CAAA;YACJ,CAAC;YAED,IAAI,KAAK,CAAC,KAAK,EAAE,GAAG,IAAI,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;gBAC5D,OAAO,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC,CAAA;YACrC,CAAC;YAED,IAAI,OAAO,KAAK,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;gBACvC,OAAO,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE;oBACrB,GAAG,KAAK,CAAC,KAAK;oBACd,SAAS,EAAE,KAAK,CAAC,QAAQ;iBAC1B,CAAC,CAAA;YACJ,CAAC;YAED,OAAO,IAAI,CAAA;QACb,CAAC,CAAA;IACH,CAAC;CACF,CAAC,CAAA;AAEF,MAAM,UAAU,KAAK,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAoB;IAC9D,QAAQ,GAAG,EAAE,CAAC;QACZ,KAAK,OAAO;YACV,OAAO,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAA;QAC7C,KAAK,MAAM;YACT,OAAO,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,EAAG,CAAA;QAC5B,KAAK,MAAM;YACT,OAAO,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,EAAG,CAAA;QAC5B,KAAK,OAAO;YACV,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,EAAG,CAAA;QAClD,KAAK,QAAQ;YACX,OAAO,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAA;QACrD;YACE,OAAO,IAAI,CAAA;IACf,CAAC;AACH,CAAC"}
|
package/dist/source/Match.jsx
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as Vue from 'vue';
|
|
2
2
|
import invariant from 'tiny-invariant';
|
|
3
3
|
import warning from 'tiny-warning';
|
|
4
|
-
import { createControlledPromise, getLocationChangeInfo, isNotFound, isRedirect, rootRouteId, } from '@tanstack/router-core';
|
|
4
|
+
import { createControlledPromise, getLocationChangeInfo, isNotFound, isRedirect, isServer, rootRouteId, } from '@tanstack/router-core';
|
|
5
5
|
import { CatchBoundary, ErrorComponent } from './CatchBoundary';
|
|
6
6
|
import { ClientOnly } from './ClientOnly';
|
|
7
7
|
import { useRouterState } from './useRouterState';
|
|
@@ -312,7 +312,7 @@ export const MatchInner = Vue.defineComponent({
|
|
|
312
312
|
routerMatch &&
|
|
313
313
|
!routerMatch._nonReactive.minPendingPromise) {
|
|
314
314
|
// Create a promise that will resolve after the minPendingMs
|
|
315
|
-
if (!router.isServer) {
|
|
315
|
+
if (!(isServer ?? router.isServer)) {
|
|
316
316
|
const minPendingPromise = createControlledPromise();
|
|
317
317
|
routerMatch._nonReactive.minPendingPromise = minPendingPromise;
|
|
318
318
|
setTimeout(() => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Match.jsx","sourceRoot":"","sources":["../../src/Match.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Match.jsx","sourceRoot":"","sources":["../../src/Match.tsx"],"names":[],"mappings":"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"}
|
package/dist/source/Matches.jsx
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import * as Vue from 'vue';
|
|
2
2
|
import warning from 'tiny-warning';
|
|
3
|
+
import { isServer } from '@tanstack/router-core';
|
|
3
4
|
import { CatchBoundary } from './CatchBoundary';
|
|
4
5
|
import { useRouterState } from './useRouterState';
|
|
5
6
|
import { useRouter } from './useRouter';
|
|
@@ -34,7 +35,8 @@ export const Matches = Vue.defineComponent({
|
|
|
34
35
|
? Vue.h(router.options.defaultPendingComponent)
|
|
35
36
|
: null;
|
|
36
37
|
// Do not render a root Suspense during SSR or hydrating from SSR
|
|
37
|
-
const inner = router?.isServer
|
|
38
|
+
const inner = (isServer ?? router?.isServer ?? false) ||
|
|
39
|
+
(typeof document !== 'undefined' && router?.ssr)
|
|
38
40
|
? Vue.h(MatchesContent)
|
|
39
41
|
: Vue.h(Vue.Suspense, { fallback: pendingElement }, {
|
|
40
42
|
default: () => Vue.h(MatchesContent),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Matches.jsx","sourceRoot":"","sources":["../../src/Matches.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,KAAK,CAAA;AAC1B,OAAO,OAAO,MAAM,cAAc,CAAA;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAA;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AA+B/B,wFAAwF;AACxF,yFAAyF;AACzF,qFAAqF;AACrF,MAAM,cAAc,GAAG,GAAG,CAAC,eAAe,CAAC;IACzC,IAAI,EAAE,gBAAgB;IACtB,KAAK;QACH,4DAA4D;QAC5D,+CAA+C;QAC/C,2BAA2B;QAC3B,mEAAmE;QACnE,+BAA+B;QAC/B,EAAE;QACF,8EAA8E;QAC9E,6EAA6E;QAC7E,8DAA8D;QAC9D,oBAAoB,EAAE,CAAA;QAEtB,OAAO,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,CAAA;IAClC,CAAC;CACF,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,OAAO,GAAG,GAAG,CAAC,eAAe,CAAC;IACzC,IAAI,EAAE,SAAS;IACf,KAAK;QACH,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;QAE1B,OAAO,GAAG,EAAE;YACV,MAAM,cAAc,GAAG,MAAM,EAAE,OAAO,EAAE,uBAAuB;gBAC7D,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,uBAAuB,CAAC;gBAC/C,CAAC,CAAC,IAAI,CAAA;YAER,iEAAiE;YACjE,MAAM,KAAK,GACT,MAAM,EAAE,QAAQ,IAAI,CAAC,OAAO,QAAQ,KAAK,WAAW,IAAI,MAAM,EAAE,GAAG,CAAC;
|
|
1
|
+
{"version":3,"file":"Matches.jsx","sourceRoot":"","sources":["../../src/Matches.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import * as Vue from 'vue';
|
|
2
|
+
import { isServer } from '@tanstack/router-core';
|
|
2
3
|
import { useRouter } from './useRouter';
|
|
3
4
|
export const ScriptOnce = Vue.defineComponent({
|
|
4
5
|
name: 'ScriptOnce',
|
|
@@ -10,7 +11,7 @@ export const ScriptOnce = Vue.defineComponent({
|
|
|
10
11
|
},
|
|
11
12
|
setup(props) {
|
|
12
13
|
const router = useRouter();
|
|
13
|
-
if (router.isServer) {
|
|
14
|
+
if (isServer ?? router.isServer) {
|
|
14
15
|
return () => (<script nonce={router.options.ssr?.nonce} innerHTML={props.children + ';document.currentScript.remove()'}/>);
|
|
15
16
|
}
|
|
16
17
|
const mounted = Vue.ref(false);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScriptOnce.jsx","sourceRoot":"","sources":["../../src/ScriptOnce.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,KAAK,CAAA;AAC1B,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAEvC,MAAM,CAAC,MAAM,UAAU,GAAG,GAAG,CAAC,eAAe,CAAC;IAC5C,IAAI,EAAE,YAAY;IAClB,KAAK,EAAE;QACL,QAAQ,EAAE;YACR,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,IAAI;SACf;KACF;IACD,KAAK,CAAC,KAAK;QACT,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;QAE1B,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"ScriptOnce.jsx","sourceRoot":"","sources":["../../src/ScriptOnce.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,KAAK,CAAA;AAC1B,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAEvC,MAAM,CAAC,MAAM,UAAU,GAAG,GAAG,CAAC,eAAe,CAAC;IAC5C,IAAI,EAAE,YAAY;IAClB,KAAK,EAAE;QACL,QAAQ,EAAE;YACR,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,IAAI;SACf;KACF;IACD,KAAK,CAAC,KAAK;QACT,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;QAE1B,IAAI,QAAQ,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YAChC,OAAO,GAAG,EAAE,CAAC,CACX,CAAC,MAAM,CACL,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CACjC,SAAS,CAAC,CAAC,KAAK,CAAC,QAAQ,GAAG,kCAAkC,CAAC,EAC/D,CACH,CAAA;QACH,CAAC;QAED,MAAM,OAAO,GAAG,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QAC9B,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE;YACjB,OAAO,CAAC,KAAK,GAAG,IAAI,CAAA;QACtB,CAAC,CAAC,CAAA;QAEF,OAAO,GAAG,EAAE;YACV,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;gBAClB,OAAO,IAAI,CAAA;YACb,CAAC;YAED,OAAO,CACL,CAAC,MAAM,CACL,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CACjC,mBAAmB,CACnB,SAAS,CAAC,EAAE,EACZ,CACH,CAAA;QACH,CAAC,CAAA;IACH,CAAC;CACF,CAAC,CAAA"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as Vue from 'vue';
|
|
2
|
-
import { getLocationChangeInfo, handleHashScroll, trimPathRight, } from '@tanstack/router-core';
|
|
2
|
+
import { getLocationChangeInfo, handleHashScroll, isServer, trimPathRight, } from '@tanstack/router-core';
|
|
3
3
|
import { useRouter } from './useRouter';
|
|
4
4
|
import { useRouterState } from './useRouterState';
|
|
5
5
|
import { usePrevious } from './utils';
|
|
@@ -18,7 +18,7 @@ let mountLoadForRouter = { router: null, mounted: false };
|
|
|
18
18
|
export function useTransitionerSetup() {
|
|
19
19
|
const router = useRouter();
|
|
20
20
|
// Skip on server - no transitions needed
|
|
21
|
-
if (router.isServer) {
|
|
21
|
+
if (isServer ?? router.isServer) {
|
|
22
22
|
return;
|
|
23
23
|
}
|
|
24
24
|
const isLoading = useRouterState({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Transitioner.jsx","sourceRoot":"","sources":["../../src/Transitioner.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,KAAK,CAAA;AAC1B,OAAO,EACL,qBAAqB,EACrB,gBAAgB,EAChB,aAAa,GACd,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAErC,uDAAuD;AACvD,IAAI,kBAAkB,GAAG,EAAE,MAAM,EAAE,IAAW,EAAE,OAAO,EAAE,KAAK,EAAE,CAAA;AAEhE;;;;;;;;;GASG;AACH,MAAM,UAAU,oBAAoB;IAClC,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAE1B,yCAAyC;IACzC,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"Transitioner.jsx","sourceRoot":"","sources":["../../src/Transitioner.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as Vue from 'vue';
|
|
2
|
-
import { defaultGetScrollRestorationKey, escapeHtml, restoreScroll, storageKey, } from '@tanstack/router-core';
|
|
2
|
+
import { defaultGetScrollRestorationKey, escapeHtml, isServer, restoreScroll, storageKey, } from '@tanstack/router-core';
|
|
3
3
|
import { useRouter } from './useRouter';
|
|
4
4
|
import { ScriptOnce } from './ScriptOnce';
|
|
5
5
|
/**
|
|
@@ -48,7 +48,7 @@ export const ScrollRestoration = Vue.defineComponent({
|
|
|
48
48
|
restoreScrollOptions.key = resolvedKey;
|
|
49
49
|
}
|
|
50
50
|
// Server-side: render the actual scroll restoration script
|
|
51
|
-
if (router.isServer) {
|
|
51
|
+
if (isServer ?? router.isServer) {
|
|
52
52
|
return (<ScriptOnce children={`(${restoreScroll.toString()})(${escapeHtml(JSON.stringify(restoreScrollOptions))})`}/>);
|
|
53
53
|
}
|
|
54
54
|
// Client-side during hydration: render empty ScriptOnce to match server structure
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scroll-restoration.jsx","sourceRoot":"","sources":["../../src/scroll-restoration.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,KAAK,CAAA;AAC1B,OAAO,EACL,8BAA8B,EAC9B,UAAU,EACV,aAAa,EACb,UAAU,GACX,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAEzC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAG,CAAC,eAAe,CAAC;IACnD,IAAI,EAAE,mBAAmB;IACzB,KAAK;QACH,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;QAE1B,6CAA6C;QAC7C,MAAM,OAAO,GAAG,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QAC9B,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE;YACjB,OAAO,CAAC,KAAK,GAAG,IAAI,CAAA;QACtB,CAAC,CAAC,CAAA;QAEF,OAAO,GAAG,EAAE;YACV,8BAA8B;YAC9B,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;gBAClB,OAAO,IAAI,CAAA;YACb,CAAC;YAED,yCAAyC;YACzC,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC;gBAC9B,OAAO,IAAI,CAAA;YACb,CAAC;YAED,2CAA2C;YAC3C,IAAI,OAAO,MAAM,CAAC,OAAO,CAAC,iBAAiB,KAAK,UAAU,EAAE,CAAC;gBAC3D,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC;oBACrD,QAAQ,EAAE,MAAM,CAAC,cAAc;iBAChC,CAAC,CAAA;gBACF,IAAI,CAAC,aAAa,EAAE,CAAC;oBACnB,OAAO,IAAI,CAAA;gBACb,CAAC;YACH,CAAC;YAED,MAAM,MAAM,GACV,MAAM,CAAC,OAAO,CAAC,uBAAuB,IAAI,8BAA8B,CAAA;YAC1E,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAA;YAC7C,MAAM,WAAW,GACf,OAAO,KAAK,8BAA8B,CAAC,MAAM,CAAC,cAAc,CAAC;gBAC/D,CAAC,CAAC,OAAO;gBACT,CAAC,CAAC,SAAS,CAAA;YAEf,MAAM,oBAAoB,GAAwC;gBAChE,UAAU;gBACV,uBAAuB,EAAE,IAAI;aAC9B,CAAA;YACD,IAAI,WAAW,EAAE,CAAC;gBAChB,oBAAoB,CAAC,GAAG,GAAG,WAAW,CAAA;YACxC,CAAC;YAED,2DAA2D;YAC3D,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"scroll-restoration.jsx","sourceRoot":"","sources":["../../src/scroll-restoration.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,KAAK,CAAA;AAC1B,OAAO,EACL,8BAA8B,EAC9B,UAAU,EACV,QAAQ,EACR,aAAa,EACb,UAAU,GACX,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAEzC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAG,CAAC,eAAe,CAAC;IACnD,IAAI,EAAE,mBAAmB;IACzB,KAAK;QACH,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;QAE1B,6CAA6C;QAC7C,MAAM,OAAO,GAAG,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QAC9B,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE;YACjB,OAAO,CAAC,KAAK,GAAG,IAAI,CAAA;QACtB,CAAC,CAAC,CAAA;QAEF,OAAO,GAAG,EAAE;YACV,8BAA8B;YAC9B,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;gBAClB,OAAO,IAAI,CAAA;YACb,CAAC;YAED,yCAAyC;YACzC,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC;gBAC9B,OAAO,IAAI,CAAA;YACb,CAAC;YAED,2CAA2C;YAC3C,IAAI,OAAO,MAAM,CAAC,OAAO,CAAC,iBAAiB,KAAK,UAAU,EAAE,CAAC;gBAC3D,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC;oBACrD,QAAQ,EAAE,MAAM,CAAC,cAAc;iBAChC,CAAC,CAAA;gBACF,IAAI,CAAC,aAAa,EAAE,CAAC;oBACnB,OAAO,IAAI,CAAA;gBACb,CAAC;YACH,CAAC;YAED,MAAM,MAAM,GACV,MAAM,CAAC,OAAO,CAAC,uBAAuB,IAAI,8BAA8B,CAAA;YAC1E,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAA;YAC7C,MAAM,WAAW,GACf,OAAO,KAAK,8BAA8B,CAAC,MAAM,CAAC,cAAc,CAAC;gBAC/D,CAAC,CAAC,OAAO;gBACT,CAAC,CAAC,SAAS,CAAA;YAEf,MAAM,oBAAoB,GAAwC;gBAChE,UAAU;gBACV,uBAAuB,EAAE,IAAI;aAC9B,CAAA;YACD,IAAI,WAAW,EAAE,CAAC;gBAChB,oBAAoB,CAAC,GAAG,GAAG,WAAW,CAAA;YACxC,CAAC;YAED,2DAA2D;YAC3D,IAAI,QAAQ,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;gBAChC,OAAO,CACL,CAAC,UAAU,CACT,QAAQ,CAAC,CAAC,IAAI,aAAa,CAAC,QAAQ,EAAE,KAAK,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC,GAAG,CAAC,EAC/F,CACH,CAAA;YACH,CAAC;YAED,kFAAkF;YAClF,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,EAAG,CAAA;QACnC,CAAC,CAAA;IACH,CAAC;CACF,CAAC,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tanstack/vue-router",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.157.0",
|
|
4
4
|
"description": "Modern and scalable routing for Vue applications",
|
|
5
5
|
"author": "Tanner Linsley",
|
|
6
6
|
"license": "MIT",
|
|
@@ -64,7 +64,7 @@
|
|
|
64
64
|
"tiny-invariant": "^1.3.3",
|
|
65
65
|
"tiny-warning": "^1.0.3",
|
|
66
66
|
"@tanstack/history": "1.154.14",
|
|
67
|
-
"@tanstack/router-core": "1.
|
|
67
|
+
"@tanstack/router-core": "1.157.0"
|
|
68
68
|
},
|
|
69
69
|
"devDependencies": {
|
|
70
70
|
"@testing-library/jest-dom": "^6.6.3",
|
package/src/Asset.tsx
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import * as Vue from 'vue'
|
|
2
|
+
import { isServer } from '@tanstack/router-core'
|
|
2
3
|
import { useRouter } from './useRouter'
|
|
3
4
|
import type { RouterManagedTag } from '@tanstack/router-core'
|
|
4
5
|
|
|
@@ -18,7 +19,7 @@ const Title = Vue.defineComponent({
|
|
|
18
19
|
setup(props) {
|
|
19
20
|
const router = useRouter()
|
|
20
21
|
|
|
21
|
-
if (!router.isServer) {
|
|
22
|
+
if (!(isServer ?? router.isServer)) {
|
|
22
23
|
Vue.onMounted(() => {
|
|
23
24
|
if (props.children) {
|
|
24
25
|
document.title = props.children
|
|
@@ -54,7 +55,7 @@ const Script = Vue.defineComponent({
|
|
|
54
55
|
setup(props) {
|
|
55
56
|
const router = useRouter()
|
|
56
57
|
|
|
57
|
-
if (!router.isServer) {
|
|
58
|
+
if (!(isServer ?? router.isServer)) {
|
|
58
59
|
Vue.onMounted(() => {
|
|
59
60
|
const attrs = props.attrs
|
|
60
61
|
const children = props.children
|
|
@@ -130,7 +131,7 @@ const Script = Vue.defineComponent({
|
|
|
130
131
|
}
|
|
131
132
|
|
|
132
133
|
return () => {
|
|
133
|
-
if (!router.isServer) {
|
|
134
|
+
if (!(isServer ?? router.isServer)) {
|
|
134
135
|
const { src: _src, ...rest } = props.attrs || {}
|
|
135
136
|
return Vue.h('script', {
|
|
136
137
|
...rest,
|
package/src/Match.tsx
CHANGED
|
@@ -6,6 +6,7 @@ import {
|
|
|
6
6
|
getLocationChangeInfo,
|
|
7
7
|
isNotFound,
|
|
8
8
|
isRedirect,
|
|
9
|
+
isServer,
|
|
9
10
|
rootRouteId,
|
|
10
11
|
} from '@tanstack/router-core'
|
|
11
12
|
import { CatchBoundary, ErrorComponent } from './CatchBoundary'
|
|
@@ -413,7 +414,7 @@ export const MatchInner = Vue.defineComponent({
|
|
|
413
414
|
!routerMatch._nonReactive.minPendingPromise
|
|
414
415
|
) {
|
|
415
416
|
// Create a promise that will resolve after the minPendingMs
|
|
416
|
-
if (!router.isServer) {
|
|
417
|
+
if (!(isServer ?? router.isServer)) {
|
|
417
418
|
const minPendingPromise = createControlledPromise<void>()
|
|
418
419
|
|
|
419
420
|
routerMatch._nonReactive.minPendingPromise = minPendingPromise
|
package/src/Matches.tsx
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import * as Vue from 'vue'
|
|
2
2
|
import warning from 'tiny-warning'
|
|
3
|
+
import { isServer } from '@tanstack/router-core'
|
|
3
4
|
import { CatchBoundary } from './CatchBoundary'
|
|
4
5
|
import { useRouterState } from './useRouterState'
|
|
5
6
|
import { useRouter } from './useRouter'
|
|
@@ -69,7 +70,8 @@ export const Matches = Vue.defineComponent({
|
|
|
69
70
|
|
|
70
71
|
// Do not render a root Suspense during SSR or hydrating from SSR
|
|
71
72
|
const inner =
|
|
72
|
-
router?.isServer
|
|
73
|
+
(isServer ?? router?.isServer ?? false) ||
|
|
74
|
+
(typeof document !== 'undefined' && router?.ssr)
|
|
73
75
|
? Vue.h(MatchesContent)
|
|
74
76
|
: Vue.h(
|
|
75
77
|
Vue.Suspense,
|
package/src/ScriptOnce.tsx
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import * as Vue from 'vue'
|
|
2
|
+
import { isServer } from '@tanstack/router-core'
|
|
2
3
|
import { useRouter } from './useRouter'
|
|
3
4
|
|
|
4
5
|
export const ScriptOnce = Vue.defineComponent({
|
|
@@ -12,7 +13,7 @@ export const ScriptOnce = Vue.defineComponent({
|
|
|
12
13
|
setup(props) {
|
|
13
14
|
const router = useRouter()
|
|
14
15
|
|
|
15
|
-
if (router.isServer) {
|
|
16
|
+
if (isServer ?? router.isServer) {
|
|
16
17
|
return () => (
|
|
17
18
|
<script
|
|
18
19
|
nonce={router.options.ssr?.nonce}
|
package/src/Transitioner.tsx
CHANGED
|
@@ -2,6 +2,7 @@ import * as Vue from 'vue'
|
|
|
2
2
|
import {
|
|
3
3
|
getLocationChangeInfo,
|
|
4
4
|
handleHashScroll,
|
|
5
|
+
isServer,
|
|
5
6
|
trimPathRight,
|
|
6
7
|
} from '@tanstack/router-core'
|
|
7
8
|
import { useRouter } from './useRouter'
|
|
@@ -25,7 +26,7 @@ export function useTransitionerSetup() {
|
|
|
25
26
|
const router = useRouter()
|
|
26
27
|
|
|
27
28
|
// Skip on server - no transitions needed
|
|
28
|
-
if (router.isServer) {
|
|
29
|
+
if (isServer ?? router.isServer) {
|
|
29
30
|
return
|
|
30
31
|
}
|
|
31
32
|
|
|
@@ -2,6 +2,7 @@ import * as Vue from 'vue'
|
|
|
2
2
|
import {
|
|
3
3
|
defaultGetScrollRestorationKey,
|
|
4
4
|
escapeHtml,
|
|
5
|
+
isServer,
|
|
5
6
|
restoreScroll,
|
|
6
7
|
storageKey,
|
|
7
8
|
} from '@tanstack/router-core'
|
|
@@ -63,7 +64,7 @@ export const ScrollRestoration = Vue.defineComponent({
|
|
|
63
64
|
}
|
|
64
65
|
|
|
65
66
|
// Server-side: render the actual scroll restoration script
|
|
66
|
-
if (router.isServer) {
|
|
67
|
+
if (isServer ?? router.isServer) {
|
|
67
68
|
return (
|
|
68
69
|
<ScriptOnce
|
|
69
70
|
children={`(${restoreScroll.toString()})(${escapeHtml(JSON.stringify(restoreScrollOptions))})`}
|