@tanstack/vue-router 1.168.11 → 1.168.12
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/Matches.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AnyRouter, DeepPartial, MakeOptionalPathParams, MakeOptionalSearchParams, MakeRouteMatchUnion, MaskOptions, MatchRouteOptions,
|
|
1
|
+
import { AnyRouter, DeepPartial, MakeOptionalPathParams, MakeOptionalSearchParams, MakeRouteMatchUnion, MaskOptions, MatchRouteOptions, RegisteredRouter, ResolveRoute, ToSubOptionsProps } from '@tanstack/router-core';
|
|
2
2
|
import * as Vue from 'vue';
|
|
3
3
|
declare module '@tanstack/router-core' {
|
|
4
4
|
interface RouteMatchExtensions {
|
|
@@ -14,7 +14,7 @@ export declare const Matches: Vue.DefineComponent<{}, () => Vue.VNode<Vue.Render
|
|
|
14
14
|
export type UseMatchRouteOptions<TRouter extends AnyRouter = RegisteredRouter, TFrom extends string = string, TTo extends string | undefined = undefined, TMaskFrom extends string = TFrom, TMaskTo extends string = ''> = ToSubOptionsProps<TRouter, TFrom, TTo> & DeepPartial<MakeOptionalSearchParams<TRouter, TFrom, TTo>> & DeepPartial<MakeOptionalPathParams<TRouter, TFrom, TTo>> & MaskOptions<TRouter, TMaskFrom, TMaskTo> & MatchRouteOptions;
|
|
15
15
|
export declare function useMatchRoute<TRouter extends AnyRouter = RegisteredRouter>(): <const TFrom extends string = string, const TTo extends string | undefined = undefined, const TMaskFrom extends string = TFrom, const TMaskTo extends string = "">(opts: UseMatchRouteOptions<TRouter, TFrom, TTo, TMaskFrom, TMaskTo>) => Vue.Ref<false | ResolveRoute<TRouter, TFrom, TTo>["types"]["allParams"]>;
|
|
16
16
|
export type MakeMatchRouteOptions<TRouter extends AnyRouter = RegisteredRouter, TFrom extends string = string, TTo extends string | undefined = undefined, TMaskFrom extends string = TFrom, TMaskTo extends string = ''> = UseMatchRouteOptions<TRouter, TFrom, TTo, TMaskFrom, TMaskTo> & {
|
|
17
|
-
children?: ((params?:
|
|
17
|
+
children?: ((params?: ResolveRoute<TRouter, TFrom, TTo>['types']['allParams']) => Vue.VNode) | Vue.VNode;
|
|
18
18
|
};
|
|
19
19
|
export interface MatchRouteComponentType {
|
|
20
20
|
<TRouter extends AnyRouter = RegisteredRouter, TFrom extends string = string, TTo extends string | undefined = undefined>(props: MakeMatchRouteOptions<TRouter, TFrom, TTo>): Vue.VNode;
|
package/dist/esm/Matches.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Matches.js","names":["Vue","isServer","useStore","CatchBoundary","useRouter","useTransitionerSetup","matchContext","Match","MatchesContent","defineComponent","name","setup","h","MatchesInner","Matches","router","pendingElement","options","defaultPendingComponent","inner","document","ssr","Suspense","fallback","default","InnerWrap","errorComponentFn","props","class","error","message","String","onClick","reset","matchId","stores","firstMatchId","id","resetKey","loadedAt","matchIdRef","computed","value","provide","childElement","disableGlobalCatchBoundary","getResetKey","errorComponent","onCatch","process","env","NODE_ENV","console","warn","toString","undefined","children","useMatchRoute","routerState","matchRouteReactivity","opts","pending","caseSensitive","fuzzy","includeSearch","rest","matchRoute","MatchRoute","from","type","required","to","Boolean","slots","status","params","Fragment","useMatches","activeMatchesSnapshot","matches","select","useParentMatches","contextMatchId","inject","safeMatchId","slice","findIndex","d","useChildMatches"],"sources":["../../src/Matches.tsx"],"sourcesContent":["import * as Vue from 'vue'\nimport { isServer } from '@tanstack/router-core/isServer'\nimport { useStore } from '@tanstack/vue-store'\nimport { CatchBoundary } from './CatchBoundary'\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 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 = useStore(router.stores.firstMatchId, (id) => id)\n const resetKey = useStore(router.stores.loadedAt, (loadedAt) => loadedAt)\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:\n process.env.NODE_ENV !== 'production'\n ? (error: Error) => {\n console.warn(\n `Warning: The following error wasn't caught by any route! At the very least, consider setting an 'errorComponent' in your RootRoute!`,\n )\n console.warn(`Warning: ${error.message || error.toString()}`)\n }\n : undefined,\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 const routerState = useStore(\n router.stores.matchRouteReactivity,\n (value) => value,\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 router = useRouter()\n const status = useStore(\n router.stores.matchRouteReactivity,\n (value) => value.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 const router = useRouter<TRouter>()\n return useStore(router.stores.activeMatchesSnapshot, (matches) => {\n return opts?.select\n ? opts.select(matches as Array<MakeRouteMatchUnion<TRouter>>)\n : (matches as any)\n })\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"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Matches.js","names":["Vue","isServer","useStore","CatchBoundary","useRouter","useTransitionerSetup","matchContext","Match","MatchesContent","defineComponent","name","setup","h","MatchesInner","Matches","router","pendingElement","options","defaultPendingComponent","inner","document","ssr","Suspense","fallback","default","InnerWrap","errorComponentFn","props","class","error","message","String","onClick","reset","matchId","stores","firstMatchId","id","resetKey","loadedAt","matchIdRef","computed","value","provide","childElement","disableGlobalCatchBoundary","getResetKey","errorComponent","onCatch","process","env","NODE_ENV","console","warn","toString","undefined","children","useMatchRoute","routerState","matchRouteReactivity","opts","pending","caseSensitive","fuzzy","includeSearch","rest","matchRoute","MatchRoute","from","type","required","to","Boolean","slots","status","params","Fragment","useMatches","activeMatchesSnapshot","matches","select","useParentMatches","contextMatchId","inject","safeMatchId","slice","findIndex","d","useChildMatches"],"sources":["../../src/Matches.tsx"],"sourcesContent":["import * as Vue from 'vue'\nimport { isServer } from '@tanstack/router-core/isServer'\nimport { useStore } from '@tanstack/vue-store'\nimport { CatchBoundary } from './CatchBoundary'\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 RegisteredRouter,\n ResolveRoute,\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 = useStore(router.stores.firstMatchId, (id) => id)\n const resetKey = useStore(router.stores.loadedAt, (loadedAt) => loadedAt)\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:\n process.env.NODE_ENV !== 'production'\n ? (error: Error) => {\n console.warn(\n `Warning: The following error wasn't caught by any route! At the very least, consider setting an 'errorComponent' in your RootRoute!`,\n )\n console.warn(`Warning: ${error.message || error.toString()}`)\n }\n : undefined,\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 const routerState = useStore(\n router.stores.matchRouteReactivity,\n (value) => value,\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?: ResolveRoute<TRouter, TFrom, TTo>['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 router = useRouter()\n const status = useStore(\n router.stores.matchRouteReactivity,\n (value) => value.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 const router = useRouter<TRouter>()\n return useStore(router.stores.activeMatchesSnapshot, (matches) => {\n return opts?.select\n ? opts.select(matches as Array<MakeRouteMatchUnion<TRouter>>)\n : (matches as any)\n })\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"],"mappings":";;;;;;;;;AAqCA,IAAMQ,iBAAiBR,IAAIS,gBAAgB;CACzCC,MAAM;CACNC,QAAQ;AAUNN,wBAAsB;AAEtB,eAAaL,IAAIY,EAAEC,aAAa;;CAEnC,CAAC;AAEF,IAAaC,UAAUd,IAAIS,gBAAgB;CACzCC,MAAM;CACNC,QAAQ;EACN,MAAMI,SAASX,WAAW;AAE1B,eAAa;GACX,MAAMY,iBAAiBD,QAAQE,SAASC,0BACpClB,IAAIY,EAAEG,OAAOE,QAAQC,wBAAwB,GAC7C;GAGJ,MAAMC,SACHlB,YAAYc,QAAQd,YAAY,UAChC,OAAOmB,aAAa,eAAeL,QAAQM,MACxCrB,IAAIY,EAAEJ,eAAe,GACrBR,IAAIY,EACFZ,IAAIsB,UACJ,EAAEC,UAAUP,gBAAgB,EAC5B,EACEQ,eAAexB,IAAIY,EAAEJ,eAAc,EAEvC,CAAC;AAEP,UAAOO,QAAQE,SAASQ,YACpBzB,IAAIY,EAAEG,OAAOE,QAAQQ,WAAW,MAAM,EAAED,eAAeL,OAAO,CAAC,GAC/DA;;;CAGT,CAAC;AAGF,IAAMO,oBACJC,UACG;AACH,QAAO3B,IAAIY,EAAE,OAAO,EAAEgB,OAAO,SAAS,EAAE;EACtC5B,IAAIY,EAAE,MAAM,MAAM,QAAQ;EAC1BZ,IAAIY,EAAE,KAAK,MAAMe,MAAME,MAAMC,WAAWC,OAAOJ,MAAME,MAAM,CAAC;EAC5D7B,IAAIY,EAAE,UAAU,EAAEoB,SAASL,MAAMM,OAAO,EAAE,YAAY;EACvD,CAAC;;AAGJ,IAAMpB,eAAeb,IAAIS,gBAAgB;CACvCC,MAAM;CACNC,QAAQ;EACN,MAAMI,SAASX,WAAW;EAE1B,MAAM8B,UAAUhC,SAASa,OAAOoB,OAAOC,eAAeC,OAAOA,GAAG;EAChE,MAAMC,WAAWpC,SAASa,OAAOoB,OAAOI,WAAWA,aAAaA,SAAS;EAGzE,MAAMC,aAAaxC,IAAIyC,eAAeP,QAAQQ,MAAM;AAGpD1C,MAAI2C,QAAQrC,cAAckC,WAAW;AAErC,eAAa;GAEX,MAAMI,eAAeV,QAAQQ,QACzB1C,IAAIY,EAAEL,OAAO,EAAE2B,SAASA,QAAQQ,OAAO,CAAC,GACxC1C,IAAIY,EAAE,MAAM;AAGhB,OAAIG,OAAOE,QAAQ4B,2BACjB,QAAOD;AAGT,UAAO5C,IAAIY,EAAET,eAAe;IAC1B2C,mBAAmBR,SAASI;IAC5BK,gBAAgBrB;IAChBsB,SAAAA,QAAAA,IAAAA,aAC2B,gBACpBnB,UAAiB;AAChBuB,aAAQC,KACN,sIACD;AACDD,aAAQC,KAAK,YAAYxB,MAAMC,WAAWD,MAAMyB,UAAU,GAAG;QAE/DC,KAAAA;IACNC,UAAUZ;IACX,CAAC;;;CAGP,CAAC;AAcF,SAAgBa,gBAA8D;CAC5E,MAAM1C,SAASX,WAAW;CAE1B,MAAMsD,cAAcxD,SAClBa,OAAOoB,OAAOwB,uBACbjB,UAAUA,MACZ;AAED,SAMEkB,SAGG;EACH,MAAM,EAAEC,SAASC,eAAeC,OAAOC,eAAe,GAAGC,SAASL;AAclE,SAZmB5D,IAAIyC,eAAe;AAGpCiB,eAAYhB;AACZ,UAAO3B,OAAOmD,WAAWD,MAAa;IACpCJ;IACAC;IACAC;IACAC;IACD,CAAC;IACF;;;AA0CN,IAAaG,aAAanE,IAAIS,gBAAgB;CAC5CC,MAAM;CACNiB,OAAO;EAELyC,MAAM;GACJC,MAAMtC;GACNuC,UAAU;GACX;EACDC,IAAI;GACFF,MAAMtC;GACNuC,UAAU;GACX;EACDP,OAAO;GACLM,MAAMG;GACNF,UAAU;GACX;EACDR,eAAe;GACbO,MAAMG;GACNF,UAAU;GACX;EACDN,eAAe;GACbK,MAAMG;GACNF,UAAU;GACX;EACDT,SAAS;GACPQ,MAAMG;GACNF,UAAU;GACZ;EACD;CACD3D,MAAMgB,OAAO,EAAE8C,SAAS;EAEtB,MAAMC,SAASxE,SADAE,WAAW,CAEjB+B,OAAOwB,uBACbjB,UAAUA,MAAMgC,OAClB;AAED,eAAa;AACX,OAAI,CAACA,OAAOhC,MAAO,QAAO;GAG1B,MAAMiC,SADalB,eAAe,CACR9B,MAAa,CAACe;AAGxC,OAAI,CAACiC,UAAU,CAACF,MAAMjD,QACpB,QAAO;AAIT,OAAI,OAAOiD,MAAMjD,YAAY,WAE3B,QAAOxB,IAAIY,EAAEZ,IAAI4E,UAAU,MAAMH,MAAMjD,QAAQmD,OAAO,CAAC;AAIzD,UAAO3E,IAAIY,EAAEZ,IAAI4E,UAAU,MAAMH,MAAMjD,QAAQ;;;CAGpD,CAAuC;AAWxC,SAAgBqD,WAIdjB,MAC+C;AAE/C,QAAO1D,SADQE,WAAoB,CACZ+B,OAAO2C,wBAAwBC,YAAY;AAChE,SAAOnB,MAAMoB,SACTpB,KAAKoB,OAAOD,QAA+C,GAC1DA;GACL;;AAGJ,SAAgBE,iBAIdrB,MAC+C;CAE/C,MAAMsB,iBAAiBlF,IAAImF,OAAoC7E,aAAa;CAC5E,MAAM8E,cAAcpF,IAAIyC,eAAeyC,gBAAgBxC,SAAS,GAAG;AAEnE,QAAOmC,WAAW,EAChBG,SAASD,YAAiD;AACxDA,YAAUA,QAAQM,MAChB,GACAN,QAAQO,WAAWC,MAAMA,EAAElD,OAAO+C,YAAY1C,MAChD,CAAC;AACD,SAAOkB,MAAMoB,SAASpB,KAAKoB,OAAOD,QAAQ,GAAGA;IAEzC,CAAC;;AAGX,SAAgBS,gBAId5B,MAC+C;CAE/C,MAAMsB,iBAAiBlF,IAAImF,OAAoC7E,aAAa;CAC5E,MAAM8E,cAAcpF,IAAIyC,eAAeyC,gBAAgBxC,SAAS,GAAG;AAEnE,QAAOmC,WAAW,EAChBG,SAASD,YAAiD;AACxDA,YAAUA,QAAQM,MAChBN,QAAQO,WAAWC,MAAMA,EAAElD,OAAO+C,YAAY1C,MAAM,GAAG,EACxD;AACD,SAAOkB,MAAMoB,SAASpB,KAAKoB,OAAOD,QAAQ,GAAGA;IAEzC,CAAC"}
|
package/dist/source/Matches.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as Vue from 'vue';
|
|
2
|
-
import type { AnyRouter, DeepPartial, MakeOptionalPathParams, MakeOptionalSearchParams, MakeRouteMatchUnion, MaskOptions, MatchRouteOptions,
|
|
2
|
+
import type { AnyRouter, DeepPartial, MakeOptionalPathParams, MakeOptionalSearchParams, MakeRouteMatchUnion, MaskOptions, MatchRouteOptions, RegisteredRouter, ResolveRoute, ToSubOptionsProps } from '@tanstack/router-core';
|
|
3
3
|
declare module '@tanstack/router-core' {
|
|
4
4
|
interface RouteMatchExtensions {
|
|
5
5
|
meta?: Array<Vue.ComponentOptions['meta'] | undefined>;
|
|
@@ -14,7 +14,7 @@ export declare const Matches: Vue.DefineComponent<{}, () => Vue.VNode<Vue.Render
|
|
|
14
14
|
export type UseMatchRouteOptions<TRouter extends AnyRouter = RegisteredRouter, TFrom extends string = string, TTo extends string | undefined = undefined, TMaskFrom extends string = TFrom, TMaskTo extends string = ''> = ToSubOptionsProps<TRouter, TFrom, TTo> & DeepPartial<MakeOptionalSearchParams<TRouter, TFrom, TTo>> & DeepPartial<MakeOptionalPathParams<TRouter, TFrom, TTo>> & MaskOptions<TRouter, TMaskFrom, TMaskTo> & MatchRouteOptions;
|
|
15
15
|
export declare function useMatchRoute<TRouter extends AnyRouter = RegisteredRouter>(): <const TFrom extends string = string, const TTo extends string | undefined = undefined, const TMaskFrom extends string = TFrom, const TMaskTo extends string = "">(opts: UseMatchRouteOptions<TRouter, TFrom, TTo, TMaskFrom, TMaskTo>) => Vue.Ref<false | ResolveRoute<TRouter, TFrom, TTo>["types"]["allParams"]>;
|
|
16
16
|
export type MakeMatchRouteOptions<TRouter extends AnyRouter = RegisteredRouter, TFrom extends string = string, TTo extends string | undefined = undefined, TMaskFrom extends string = TFrom, TMaskTo extends string = ''> = UseMatchRouteOptions<TRouter, TFrom, TTo, TMaskFrom, TMaskTo> & {
|
|
17
|
-
children?: ((params?:
|
|
17
|
+
children?: ((params?: ResolveRoute<TRouter, TFrom, TTo>['types']['allParams']) => Vue.VNode) | Vue.VNode;
|
|
18
18
|
};
|
|
19
19
|
export interface MatchRouteComponentType {
|
|
20
20
|
<TRouter extends AnyRouter = RegisteredRouter, TFrom extends string = string, TTo extends string | undefined = undefined>(props: MakeMatchRouteOptions<TRouter, TFrom, TTo>): Vue.VNode;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Matches.jsx","sourceRoot":"","sources":["../../src/Matches.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,KAAK,CAAA;AAC1B,OAAO,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAA;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC/C,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;
|
|
1
|
+
{"version":3,"file":"Matches.jsx","sourceRoot":"","sources":["../../src/Matches.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/Matches.tsx
CHANGED
|
@@ -15,11 +15,8 @@ import type {
|
|
|
15
15
|
MakeRouteMatchUnion,
|
|
16
16
|
MaskOptions,
|
|
17
17
|
MatchRouteOptions,
|
|
18
|
-
NoInfer,
|
|
19
18
|
RegisteredRouter,
|
|
20
|
-
ResolveRelativePath,
|
|
21
19
|
ResolveRoute,
|
|
22
|
-
RouteByPath,
|
|
23
20
|
ToSubOptionsProps,
|
|
24
21
|
} from '@tanstack/router-core'
|
|
25
22
|
|
|
@@ -198,10 +195,7 @@ export type MakeMatchRouteOptions<
|
|
|
198
195
|
// 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
|
|
199
196
|
children?:
|
|
200
197
|
| ((
|
|
201
|
-
params?:
|
|
202
|
-
TRouter['routeTree'],
|
|
203
|
-
ResolveRelativePath<TFrom, NoInfer<TTo>>
|
|
204
|
-
>['types']['allParams'],
|
|
198
|
+
params?: ResolveRoute<TRouter, TFrom, TTo>['types']['allParams'],
|
|
205
199
|
) => Vue.VNode)
|
|
206
200
|
| Vue.VNode
|
|
207
201
|
}
|