@tanstack/react-router 0.0.1-beta.276 → 0.0.1-beta.277

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/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@tanstack/react-router",
3
3
  "author": "Tanner Linsley",
4
- "version": "0.0.1-beta.276",
4
+ "version": "0.0.1-beta.277",
5
5
  "license": "MIT",
6
6
  "repository": "tanstack/router",
7
7
  "homepage": "https://tanstack.com/router",
@@ -44,7 +44,7 @@
44
44
  "@tanstack/store": "^0.1.3",
45
45
  "tiny-invariant": "^1.3.1",
46
46
  "tiny-warning": "^1.0.3",
47
- "@tanstack/history": "0.0.1-beta.276"
47
+ "@tanstack/history": "0.0.1-beta.277"
48
48
  },
49
49
  "scripts": {
50
50
  "build": "rollup --config rollup.config.js"
package/src/Matches.tsx CHANGED
@@ -370,6 +370,30 @@ export function useParentMatches<T = RouteMatch[]>(opts?: {
370
370
  })
371
371
  }
372
372
 
373
+ export function useLoaderDeps<
374
+ TRouteTree extends AnyRoute = RegisteredRouter['routeTree'],
375
+ TFrom extends RouteIds<TRouteTree> = RouteIds<TRouteTree>,
376
+ TStrict extends boolean = true,
377
+ TRouteMatch extends RouteMatch<TRouteTree, TFrom> = RouteMatch<
378
+ TRouteTree,
379
+ TFrom
380
+ >,
381
+ TSelected = Required<TRouteMatch>['loaderDeps'],
382
+ >(
383
+ opts: StrictOrFrom<TFrom> & {
384
+ select?: (match: TRouteMatch) => TSelected
385
+ },
386
+ ): TStrict extends true ? TSelected : TSelected | undefined {
387
+ return useMatch({
388
+ ...opts,
389
+ select: (s) => {
390
+ return typeof opts.select === 'function'
391
+ ? opts.select(s?.loaderDeps)
392
+ : s?.loaderDeps
393
+ },
394
+ })!
395
+ }
396
+
373
397
  export function useLoaderData<
374
398
  TRouteTree extends AnyRoute = RegisteredRouter['routeTree'],
375
399
  TFrom extends RouteIds<TRouteTree> = RouteIds<TRouteTree>,
package/src/route.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import * as React from 'react'
2
2
  import invariant from 'tiny-invariant'
3
- import { useLoaderData, useMatch } from './Matches'
3
+ import { useLoaderData, useLoaderDeps, useMatch } from './Matches'
4
4
  import { AnyRouteMatch } from './Matches'
5
5
  import { NavigateOptions, ParsePathParams, ToSubOptions } from './link'
6
6
  import { ParsedLocation } from './location'
@@ -345,6 +345,7 @@ export class RouteApi<
345
345
  > = TRoute['types']['fullSearchSchema'],
346
346
  TAllParams extends AnyPathParams = TRoute['types']['allParams'],
347
347
  TAllContext extends Record<string, any> = TRoute['types']['allContext'],
348
+ TLoaderDeps extends Record<string, any> = TRoute['types']['loaderDeps'],
348
349
  TLoaderData extends any = TRoute['types']['loaderData'],
349
350
  > {
350
351
  id: TId
@@ -354,13 +355,13 @@ export class RouteApi<
354
355
  }
355
356
 
356
357
  useMatch = <TSelected = TAllContext>(opts?: {
357
- select?: (search: TAllContext) => TSelected
358
+ select?: (s: TAllContext) => TSelected
358
359
  }): TSelected => {
359
360
  return useMatch({ ...opts, from: this.id }) as any
360
361
  }
361
362
 
362
363
  useRouteContext = <TSelected = TAllContext>(opts?: {
363
- select?: (search: TAllContext) => TSelected
364
+ select?: (s: TAllContext) => TSelected
364
365
  }): TSelected => {
365
366
  return useMatch({
366
367
  ...opts,
@@ -370,19 +371,25 @@ export class RouteApi<
370
371
  }
371
372
 
372
373
  useSearch = <TSelected = TFullSearchSchema>(opts?: {
373
- select?: (search: TFullSearchSchema) => TSelected
374
+ select?: (s: TFullSearchSchema) => TSelected
374
375
  }): TSelected => {
375
376
  return useSearch({ ...opts, from: this.id } as any)
376
377
  }
377
378
 
378
379
  useParams = <TSelected = TAllParams>(opts?: {
379
- select?: (search: TAllParams) => TSelected
380
+ select?: (s: TAllParams) => TSelected
380
381
  }): TSelected => {
381
382
  return useParams({ ...opts, from: this.id } as any)
382
383
  }
383
384
 
385
+ useLoaderDeps = <TSelected = TLoaderDeps>(opts?: {
386
+ select?: (s: TLoaderDeps) => TSelected
387
+ }): TSelected => {
388
+ return useLoaderDeps({ ...opts, from: this.id } as any) as any
389
+ }
390
+
384
391
  useLoaderData = <TSelected = TLoaderData>(opts?: {
385
- select?: (search: TLoaderData) => TSelected
392
+ select?: (s: TLoaderData) => TSelected
386
393
  }): TSelected => {
387
394
  return useLoaderData({ ...opts, from: this.id } as any) as any
388
395
  }
@@ -628,6 +635,12 @@ export class Route<
628
635
  return useParams({ ...opts, from: this.id } as any)
629
636
  }
630
637
 
638
+ useLoaderDeps = <TSelected = TLoaderDeps>(opts?: {
639
+ select?: (s: TLoaderDeps) => TSelected
640
+ }): TSelected => {
641
+ return useLoaderDeps({ ...opts, from: this.id } as any) as any
642
+ }
643
+
631
644
  useLoaderData = <TSelected = TLoaderData>(opts?: {
632
645
  select?: (search: TLoaderData) => TSelected
633
646
  }): TSelected => {