@react-navigation/native 7.2.5 → 7.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/lib/module/NavigationContainer.js +9 -44
  2. package/lib/module/NavigationContainer.js.map +1 -1
  3. package/lib/module/UnhandledLinkingContext.js +9 -7
  4. package/lib/module/UnhandledLinkingContext.js.map +1 -1
  5. package/lib/module/createStandardNavigationFactories.js +97 -0
  6. package/lib/module/createStandardNavigationFactories.js.map +1 -0
  7. package/lib/module/index.js +1 -0
  8. package/lib/module/index.js.map +1 -1
  9. package/lib/module/useLinking.js +2 -7
  10. package/lib/module/useLinking.js.map +1 -1
  11. package/lib/module/useLinking.native.js +14 -14
  12. package/lib/module/useLinking.native.js.map +1 -1
  13. package/lib/module/useMemoArray.js +25 -0
  14. package/lib/module/useMemoArray.js.map +1 -0
  15. package/lib/typescript/src/Link.d.ts +1 -1
  16. package/lib/typescript/src/Link.d.ts.map +1 -1
  17. package/lib/typescript/src/LinkingContext.d.ts +1 -1
  18. package/lib/typescript/src/LinkingContext.d.ts.map +1 -1
  19. package/lib/typescript/src/LocaleDirContext.d.ts +1 -1
  20. package/lib/typescript/src/LocaleDirContext.d.ts.map +1 -1
  21. package/lib/typescript/src/NavigationContainer.d.ts +1 -1
  22. package/lib/typescript/src/NavigationContainer.d.ts.map +1 -1
  23. package/lib/typescript/src/ServerContainer.d.ts +2 -2
  24. package/lib/typescript/src/ServerContainer.d.ts.map +1 -1
  25. package/lib/typescript/src/UnhandledLinkingContext.d.ts +6 -0
  26. package/lib/typescript/src/UnhandledLinkingContext.d.ts.map +1 -1
  27. package/lib/typescript/src/createStandardNavigationFactories.d.ts +47 -0
  28. package/lib/typescript/src/createStandardNavigationFactories.d.ts.map +1 -0
  29. package/lib/typescript/src/createStaticNavigation.d.ts +2 -2
  30. package/lib/typescript/src/createStaticNavigation.d.ts.map +1 -1
  31. package/lib/typescript/src/index.d.ts +17 -16
  32. package/lib/typescript/src/index.d.ts.map +1 -1
  33. package/lib/typescript/src/useDocumentTitle.d.ts +1 -1
  34. package/lib/typescript/src/useDocumentTitle.d.ts.map +1 -1
  35. package/lib/typescript/src/useLinkBuilder.d.ts.map +1 -1
  36. package/lib/typescript/src/useLinking.d.ts +2 -2
  37. package/lib/typescript/src/useLinking.d.ts.map +1 -1
  38. package/lib/typescript/src/useLinking.native.d.ts +2 -2
  39. package/lib/typescript/src/useLinking.native.d.ts.map +1 -1
  40. package/lib/typescript/src/useLocale.d.ts +1 -1
  41. package/lib/typescript/src/useMemoArray.d.ts +2 -0
  42. package/lib/typescript/src/useMemoArray.d.ts.map +1 -0
  43. package/package.json +5 -4
  44. package/src/NavigationContainer.tsx +15 -62
  45. package/src/UnhandledLinkingContext.tsx +8 -9
  46. package/src/createStandardNavigationFactories.tsx +294 -0
  47. package/src/index.tsx +5 -0
  48. package/src/useLinking.native.tsx +30 -29
  49. package/src/useLinking.tsx +2 -14
  50. package/src/useMemoArray.tsx +41 -0
@@ -0,0 +1,47 @@
1
+ import { type DefaultRouterOptions, type EventMapBase, type NavigationAction, type NavigationProp, type NavigatorTypeBagBase, type ParamListBase, type RouterFactory, type StaticConfig, type StaticParamList, type StaticScreenFactory, type TypedNavigator } from '@react-navigation/core';
2
+ import * as React from 'react';
3
+ import type { createStandardNavigator } from 'standard-navigation';
4
+ type StandardEventMap<EventMap extends EventMapBase> = {
5
+ [EventName in keyof EventMap]: {
6
+ data: EventMap[EventName] extends {
7
+ data?: infer Data;
8
+ } ? Data extends object | undefined ? Data : object | undefined : undefined;
9
+ canPreventDefault: EventMap[EventName] extends {
10
+ canPreventDefault: true;
11
+ } ? true : false;
12
+ };
13
+ };
14
+ type ActionHelpersOf<T> = T extends Record<string, (...args: never[]) => unknown> ? T : {};
15
+ type StandardNavigationTypeBagFor<TypeBag extends StandardNavigationTypeBagBase, ParamList extends ParamListBase, NavigatorID extends string | undefined = string | undefined> = TypeBag & {
16
+ ParamList: ParamList;
17
+ NavigatorID: NavigatorID;
18
+ };
19
+ type StandardNavigation<TypeBag extends StandardNavigationTypeBagBase> = StandardNavigationTypeBagFor<TypeBag, ParamListBase>['NavigationList'][keyof StandardNavigationTypeBagFor<TypeBag, ParamListBase>['NavigationList']];
20
+ type StandardNavigationPropsMapper<TypeBag extends StandardNavigationTypeBagBase, NavigatorProps extends object> = (props: {
21
+ state: StandardNavigationTypeBagFor<TypeBag, ParamListBase>['State'];
22
+ navigation: StandardNavigation<TypeBag>;
23
+ }) => Partial<NavigatorProps>;
24
+ type StandardNavigationDefaultBag<TypeBag extends StandardNavigationTypeBagBase> = StandardNavigationTypeBagFor<TypeBag, ParamListBase, string | undefined>;
25
+ type StandardNavigationFactories<TypeBag extends StandardNavigationTypeBagBase> = {
26
+ createNavigator: StandardNavigationCreateNavigator<TypeBag>;
27
+ createScreen: StaticScreenFactory<StandardNavigationDefaultBag<TypeBag>>;
28
+ };
29
+ export type StandardNavigationCreateNavigator<TypeBag extends StandardNavigationTypeBagBase> = {
30
+ <const ParamList extends ParamListBase, const NavigatorID extends string | undefined = string | undefined>(): TypedNavigator<StandardNavigationTypeBagFor<TypeBag, ParamList, NavigatorID>, undefined>;
31
+ <const Config extends StaticConfig<StandardNavigationDefaultBag<TypeBag>>>(config: Config & StaticConfig<StandardNavigationDefaultBag<TypeBag>>): TypedNavigator<StandardNavigationTypeBagFor<TypeBag, StaticParamList<{
32
+ config: Config;
33
+ }> & ParamListBase, string | undefined>, Config>;
34
+ };
35
+ export interface StandardNavigationTypeBagBase extends NavigatorTypeBagBase {
36
+ ActionHelpers: {};
37
+ ScreenOptions: {};
38
+ EventMap: EventMapBase;
39
+ RouterOptions: DefaultRouterOptions;
40
+ NavigationList: {
41
+ [RouteName in keyof this['ParamList']]: NavigationProp<this['ParamList'], RouteName, this['NavigatorID'], this['State'], this['ScreenOptions'], this['EventMap']> & ActionHelpersOf<this['ActionHelpers']>;
42
+ };
43
+ Navigator: React.ComponentType<{}>;
44
+ }
45
+ export declare function createStandardNavigationFactories<TypeBag extends StandardNavigationTypeBagBase, NavigatorProps extends object = {}>(navigator: ReturnType<typeof createStandardNavigator<TypeBag['ScreenOptions'], StandardEventMap<TypeBag['EventMap']>, NavigatorProps>>, router: RouterFactory<StandardNavigationTypeBagFor<TypeBag, ParamListBase>['State'], NavigationAction, TypeBag['RouterOptions']>, mapper?: StandardNavigationPropsMapper<TypeBag, NavigatorProps>): StandardNavigationFactories<TypeBag>;
46
+ export {};
47
+ //# sourceMappingURL=createStandardNavigationFactories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createStandardNavigationFactories.d.ts","sourceRoot":"","sources":["../../../src/createStandardNavigationFactories.tsx"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { type NavigationContainerRef, type ParamListBase, type StaticNavigation } from '@react-navigation/core';
2
2
  import * as React from 'react';
3
- import { NavigationContainer } from './NavigationContainer';
4
- import type { LinkingOptions } from './types';
3
+ import { NavigationContainer } from './NavigationContainer.js';
4
+ import type { LinkingOptions } from './types.js';
5
5
  type Props = Omit<React.ComponentProps<typeof NavigationContainer>, 'linking' | 'children'> & {
6
6
  /**
7
7
  * Options for deep linking.
@@ -1 +1 @@
1
- {"version":3,"file":"createStaticNavigation.d.ts","sourceRoot":"","sources":["../../../src/createStaticNavigation.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,sBAAsB,EAC3B,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACtB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE9C,KAAK,KAAK,GAAG,IAAI,CACf,KAAK,CAAC,cAAc,CAAC,OAAO,mBAAmB,CAAC,EAChD,SAAS,GAAG,UAAU,CACvB,GAAG;IACF;;OAEG;IACH,OAAO,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC,GAAG;QACpE;;;;;;;WAOG;QACH,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,KAAK,CAAC;QAChC;;WAEG;QACH,MAAM,CAAC,EAAE,IAAI,CACX,WAAW,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,CAAC,EACpD,SAAS,CACV,CAAC;KACH,CAAC;CACH,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,gBAAgB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,oHA8D3E"}
1
+ {"version":3,"file":"createStaticNavigation.d.ts","sourceRoot":"","sources":["../../../src/createStaticNavigation.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,sBAAsB,EAC3B,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACtB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAS,CAAC;AAE9C,KAAK,KAAK,GAAG,IAAI,CACf,KAAK,CAAC,cAAc,CAAC,OAAO,mBAAmB,CAAC,EAChD,SAAS,GAAG,UAAU,CACvB,GAAG;IACF;;OAEG;IACH,OAAO,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC,GAAG;QACpE;;;;;;;WAOG;QACH,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,KAAK,CAAC;QAChC;;WAEG;QACH,MAAM,CAAC,EAAE,IAAI,CACX,WAAW,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,CAAC,EACpD,SAAS,CACV,CAAC;KACH,CAAC;CACH,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,gBAAgB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,oHA8D3E"}
@@ -1,18 +1,19 @@
1
- export { createStaticNavigation } from './createStaticNavigation';
2
- export { Link } from './Link';
3
- export { LinkingContext } from './LinkingContext';
4
- export { LocaleDirContext } from './LocaleDirContext';
5
- export { NavigationContainer } from './NavigationContainer';
6
- export { ServerContainer } from './ServerContainer';
7
- export { DarkTheme } from './theming/DarkTheme';
8
- export { DefaultTheme } from './theming/DefaultTheme';
9
- export * from './types';
10
- export { UnhandledLinkingContext as UNSTABLE_UnhandledLinkingContext } from './UnhandledLinkingContext';
11
- export { useLinkBuilder } from './useLinkBuilder';
12
- export { type LinkProps, useLinkProps } from './useLinkProps';
13
- export { useLinkTo } from './useLinkTo';
14
- export { useLocale } from './useLocale';
15
- export { useRoutePath } from './useRoutePath';
16
- export { useScrollToTop } from './useScrollToTop';
1
+ export { createStandardNavigationFactories, type StandardNavigationCreateNavigator, type StandardNavigationTypeBagBase, } from './createStandardNavigationFactories.js';
2
+ export { createStaticNavigation } from './createStaticNavigation.js';
3
+ export { Link } from './Link.js';
4
+ export { LinkingContext } from './LinkingContext.js';
5
+ export { LocaleDirContext } from './LocaleDirContext.js';
6
+ export { NavigationContainer } from './NavigationContainer.js';
7
+ export { ServerContainer } from './ServerContainer.js';
8
+ export { DarkTheme } from './theming/DarkTheme.js';
9
+ export { DefaultTheme } from './theming/DefaultTheme.js';
10
+ export * from './types.js';
11
+ export { UnhandledLinkingContext as UNSTABLE_UnhandledLinkingContext } from './UnhandledLinkingContext.js';
12
+ export { useLinkBuilder } from './useLinkBuilder.js';
13
+ export { type LinkProps, useLinkProps } from './useLinkProps.js';
14
+ export { useLinkTo } from './useLinkTo.js';
15
+ export { useLocale } from './useLocale.js';
16
+ export { useRoutePath } from './useRoutePath.js';
17
+ export { useScrollToTop } from './useScrollToTop.js';
17
18
  export * from '@react-navigation/core';
18
19
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,uBAAuB,IAAI,gCAAgC,EAAE,MAAM,2BAA2B,CAAC;AACxG,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,KAAK,SAAS,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,cAAc,wBAAwB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,iCAAiC,EACjC,KAAK,iCAAiC,EACtC,KAAK,6BAA6B,GACnC,MAAM,wCAAqC,CAAC;AAC7C,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA0B,CAAC;AAClE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAQ,CAAC;AAC9B,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAkB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAoB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAAuB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAmB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAqB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAAwB,CAAC;AACtD,cAAc,YAAS,CAAC;AACxB,OAAO,EAAE,uBAAuB,IAAI,gCAAgC,EAAE,MAAM,8BAA2B,CAAC;AACxG,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAkB,CAAC;AAClD,OAAO,EAAE,KAAK,SAAS,EAAE,YAAY,EAAE,MAAM,mBAAgB,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAa,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAa,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAgB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAkB,CAAC;AAClD,cAAc,wBAAwB,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import type { NavigationContainerRef, ParamListBase } from '@react-navigation/core';
2
2
  import * as React from 'react';
3
- import type { DocumentTitleOptions } from './types';
3
+ import type { DocumentTitleOptions } from './types.js';
4
4
  /**
5
5
  * Set the document title for the active screen
6
6
  */
@@ -1 +1 @@
1
- {"version":3,"file":"useDocumentTitle.d.ts","sourceRoot":"","sources":["../../../src/useDocumentTitle.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,sBAAsB,EACtB,aAAa,EACd,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAEpD;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,KAAK,CAAC,SAAS,CAAC,sBAAsB,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC,EAClE,EACE,OAAc,EACd,SAA6D,GAC9D,GAAE,oBAAyB,QAwB7B"}
1
+ {"version":3,"file":"useDocumentTitle.d.ts","sourceRoot":"","sources":["../../../src/useDocumentTitle.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,sBAAsB,EACtB,aAAa,EACd,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAS,CAAC;AAEpD;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,KAAK,CAAC,SAAS,CAAC,sBAAsB,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC,EAClE,EACE,OAAc,EACd,SAA6D,GAC9D,GAAE,oBAAyB,QAwB7B"}
@@ -1 +1 @@
1
- {"version":3,"file":"useLinkBuilder.d.ts","sourceRoot":"","sources":["../../../src/useLinkBuilder.tsx"],"names":[],"mappings":"AAkBA;;GAEG;AACH,wBAAgB,YAAY,WAWjB,MAAM,WAAW,MAAM,wBAmEjC;AAED;;GAEG;AACH,eAAO,MAAM,cAAc,eAQhB,MAAM;;;;;;;;;;;;;;;;;;;;;;;cA7FV,CAAC;YAAsB,CAAC;aAAuB,CAAC;WAEnD,CAAC;;;;;;;;cAIwB,CAAC;aAAuB,CAAC;;;;;;;cAS3C,CAAC;;;;;;;cAKgD,CAAC;;;;;;;;cAIrD,CAAN;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwFD,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,cAAc;sBA1GnB,MAAM,WAAW,MAAM;wBAgFvB,MAAM;;;;;;;;;;;;;;;;;;;;;;;kBA7FV,CAAC;gBAAsB,CAAC;iBAAuB,CAAC;eAEnD,CAAC;;;;;;;;kBAIwB,CAAC;iBAAuB,CAAC;;;;;;;kBAS3C,CAAC;;;;;;;kBAKgD,CAAC;;;;;;;;kBAIrD,CAAN;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAuGD"}
1
+ {"version":3,"file":"useLinkBuilder.d.ts","sourceRoot":"","sources":["../../../src/useLinkBuilder.tsx"],"names":[],"mappings":"AAkBA;;GAEG;AACH,wBAAgB,YAAY,WAWjB,MAAM,WAAW,MAAM,wBAmEjC;AAED;;GAEG;AACH,eAAO,MAAM,cAAc,eAQhB,MAAM;;;;;;;;;;;;;;;;;;;;;;;cA7FP,CAAC;YAAsB,CAAC;aAAuB,CAAC;WAEnD,CAAC;;;;;;;;cAIwB,CAAC;aAE/B,CAAF;;;;;;;cAOe,CAAA;;;;;;;cAKgD,CAAC;;;;;;;;cAIxD,CAAH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwFJ,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,cAAc;sBA1GnB,MAAM,WAAW,MAAM;wBAgFvB,MAAM;;;;;;;;;;;;;;;;;;;;;;;kBA7FP,CAAC;gBAAsB,CAAC;iBAAuB,CAAC;eAEnD,CAAC;;;;;;;;kBAIwB,CAAC;iBAE/B,CAAF;;;;;;;kBAOe,CAAA;;;;;;;kBAKgD,CAAC;;;;;;;;kBAIxD,CAAH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAuGJ"}
@@ -1,13 +1,13 @@
1
1
  import { getStateFromPath as getStateFromPathDefault, type NavigationContainerRef, type ParamListBase } from '@react-navigation/core';
2
2
  import * as React from 'react';
3
- import type { LinkingOptions } from './types';
3
+ import type { LinkingOptions } from './types.js';
4
4
  type ResultState = ReturnType<typeof getStateFromPathDefault>;
5
5
  /**
6
6
  * Run async function in series as it's called.
7
7
  */
8
8
  export declare const series: (cb: () => Promise<void>) => () => void;
9
9
  type Options = LinkingOptions<ParamListBase>;
10
- export declare function useLinking(ref: React.RefObject<NavigationContainerRef<ParamListBase> | null>, { enabled, config, getStateFromPath, getPathFromState, getActionFromState, }: Options, onUnhandledLinking: (lastUnhandledLining: string | undefined) => void): {
10
+ export declare function useLinking(ref: React.RefObject<NavigationContainerRef<ParamListBase> | null>, { enabled, config, getStateFromPath, getPathFromState, getActionFromState, }: Options): {
11
11
  getInitialState: () => PromiseLike<ResultState | undefined>;
12
12
  };
13
13
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"useLinking.d.ts","sourceRoot":"","sources":["../../../src/useLinking.tsx"],"names":[],"mappings":"AAAA,OAAO,EAIL,gBAAgB,IAAI,uBAAuB,EAC3C,KAAK,sBAAsB,EAE3B,KAAK,aAAa,EAEnB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE9C,KAAK,WAAW,GAAG,UAAU,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAuE9D;;GAEG;AACH,eAAO,MAAM,MAAM,GAAI,IAAI,MAAM,OAAO,CAAC,IAAI,CAAC,eAO7C,CAAC;AAIF,KAAK,OAAO,GAAG,cAAc,CAAC,aAAa,CAAC,CAAC;AAE7C,wBAAgB,UAAU,CACxB,GAAG,EAAE,KAAK,CAAC,SAAS,CAAC,sBAAsB,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC,EAClE,EACE,OAAc,EACd,MAAM,EACN,gBAA0C,EAC1C,gBAA0C,EAC1C,kBAA8C,GAC/C,EAAE,OAAO,EACV,kBAAkB,EAAE,CAAC,mBAAmB,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI;2BAyGhD,WAAW,CAAC,WAAW,GAAG,SAAS,CAAC;EAqS1D"}
1
+ {"version":3,"file":"useLinking.d.ts","sourceRoot":"","sources":["../../../src/useLinking.tsx"],"names":[],"mappings":"AAAA,OAAO,EAIL,gBAAgB,IAAI,uBAAuB,EAC3C,KAAK,sBAAsB,EAE3B,KAAK,aAAa,EAEnB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAS,CAAC;AAE9C,KAAK,WAAW,GAAG,UAAU,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAuE9D;;GAEG;AACH,eAAO,MAAM,MAAM,GAAI,IAAI,MAAM,OAAO,CAAC,IAAI,CAAC,eAO7C,CAAC;AAIF,KAAK,OAAO,GAAG,cAAc,CAAC,aAAa,CAAC,CAAC;AAE7C,wBAAgB,UAAU,CACxB,GAAG,EAAE,KAAK,CAAC,SAAS,CAAC,sBAAsB,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC,EAClE,EACE,OAAc,EACd,MAAM,EACN,gBAA0C,EAC1C,gBAA0C,EAC1C,kBAA8C,GAC/C,EAAE,OAAO;2BAsGW,WAAW,CAAC,WAAW,GAAG,SAAS,CAAC;EA6R1D"}
@@ -1,8 +1,8 @@
1
1
  import { type NavigationContainerRef, type ParamListBase } from '@react-navigation/core';
2
2
  import * as React from 'react';
3
- import type { LinkingOptions } from './types';
3
+ import type { LinkingOptions } from './types.js';
4
4
  type Options = LinkingOptions<ParamListBase>;
5
- export declare function useLinking(ref: React.RefObject<NavigationContainerRef<ParamListBase> | null>, { enabled, prefixes, filter, config, getInitialURL, subscribe, getStateFromPath, getActionFromState, }: Options, onUnhandledLinking: (lastUnhandledLining: string | undefined) => void): {
5
+ export declare function useLinking(ref: React.RefObject<NavigationContainerRef<ParamListBase> | null>, { enabled, prefixes, filter, config, getInitialURL, subscribe, getStateFromPath, getActionFromState, }: Options): {
6
6
  getInitialState: () => PromiseLike<(Partial<Omit<Readonly<{
7
7
  key: string;
8
8
  index: number;
@@ -1 +1 @@
1
- {"version":3,"file":"useLinking.native.d.ts","sourceRoot":"","sources":["../../../src/useLinking.native.tsx"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,sBAAsB,EAC3B,KAAK,aAAa,EAEnB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAI9C,KAAK,OAAO,GAAG,cAAc,CAAC,aAAa,CAAC,CAAC;AAI7C,wBAAgB,UAAU,CACxB,GAAG,EAAE,KAAK,CAAC,SAAS,CAAC,sBAAsB,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC,EAClE,EACE,OAAc,EACd,QAAQ,EACR,MAAM,EACN,MAAM,EACN,aAQI,EACJ,SAmBC,EACD,gBAA0C,EAC1C,kBAA8C,GAC/C,EAAE,OAAO,EACV,kBAAkB,EAAE,CAAC,mBAAmB,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;EAoKtE"}
1
+ {"version":3,"file":"useLinking.native.d.ts","sourceRoot":"","sources":["../../../src/useLinking.native.tsx"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,sBAAsB,EAC3B,KAAK,aAAa,EAEnB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAS,CAAC;AAI9C,KAAK,OAAO,GAAG,cAAc,CAAC,aAAa,CAAC,CAAC;AAI7C,wBAAgB,UAAU,CACxB,GAAG,EAAE,KAAK,CAAC,SAAS,CAAC,sBAAsB,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC,EAClE,EACE,OAAc,EACd,QAAQ,EACR,MAAM,EACN,MAAM,EACN,aAQI,EACJ,SAmBC,EACD,gBAA0C,EAC1C,kBAA8C,GAC/C,EAAE,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;EAsKX"}
@@ -2,6 +2,6 @@
2
2
  * Hook to access the text direction specified in the `NavigationContainer`.
3
3
  */
4
4
  export declare function useLocale(): {
5
- direction: import("./types").LocaleDirection;
5
+ direction: import("./types.js").LocaleDirection;
6
6
  };
7
7
  //# sourceMappingURL=useLocale.d.ts.map
@@ -0,0 +1,2 @@
1
+ export declare function useMemoArray<T>(entries: [item: T, deps: readonly unknown[]][]): T[];
2
+ //# sourceMappingURL=useMemoArray.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useMemoArray.d.ts","sourceRoot":"","sources":["../../../src/useMemoArray.tsx"],"names":[],"mappings":"AAEA,wBAAgB,YAAY,CAAC,CAAC,EAC5B,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,OAAO,EAAE,CAAC,EAAE,GAC7C,CAAC,EAAE,CAoCL"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@react-navigation/native",
3
3
  "description": "React Native integration for React Navigation",
4
- "version": "7.2.5",
4
+ "version": "7.3.0",
5
5
  "keywords": [
6
6
  "react-native",
7
7
  "react-navigation",
@@ -42,10 +42,11 @@
42
42
  "clean": "del lib"
43
43
  },
44
44
  "dependencies": {
45
- "@react-navigation/core": "^7.17.5",
45
+ "@react-navigation/core": "^7.19.0",
46
46
  "escape-string-regexp": "^4.0.0",
47
47
  "fast-deep-equal": "^3.1.3",
48
48
  "nanoid": "^3.3.11",
49
+ "standard-navigation": "^0.0.7",
49
50
  "use-latest-callback": "^0.2.4"
50
51
  },
51
52
  "devDependencies": {
@@ -57,7 +58,7 @@
57
58
  "react": "19.1.0",
58
59
  "react-dom": "19.1.0",
59
60
  "react-native": "0.81.5",
60
- "react-native-builder-bob": "^0.40.17",
61
+ "react-native-builder-bob": "^0.42.1",
61
62
  "react-test-renderer": "19.1.0",
62
63
  "typescript": "^5.9.2"
63
64
  },
@@ -83,5 +84,5 @@
83
84
  ]
84
85
  ]
85
86
  },
86
- "gitHead": "b89bba20b9d6d935224dd5afa287f62a627b6c7e"
87
+ "gitHead": "dd325d641ccae08a61fd25710270abb85865482f"
87
88
  }
@@ -5,14 +5,12 @@ import {
5
5
  getStateFromPath,
6
6
  type NavigationContainerProps,
7
7
  type NavigationContainerRef,
8
- type NavigationState,
9
8
  type ParamListBase,
10
9
  ThemeProvider,
11
10
  validatePathConfig,
12
11
  } from '@react-navigation/core';
13
12
  import * as React from 'react';
14
13
  import { I18nManager } from 'react-native';
15
- import useLatestCallback from 'use-latest-callback';
16
14
 
17
15
  import { LinkingContext } from './LinkingContext';
18
16
  import { LocaleDirContext } from './LocaleDirContext';
@@ -22,7 +20,6 @@ import type {
22
20
  LinkingOptions,
23
21
  LocaleDirection,
24
22
  } from './types';
25
- import { UnhandledLinkingContext } from './UnhandledLinkingContext';
26
23
  import { useBackButton } from './useBackButton';
27
24
  import { useDocumentTitle } from './useDocumentTitle';
28
25
  import { useLinking } from './useLinking';
@@ -77,8 +74,6 @@ function NavigationContainerInner(
77
74
  linking,
78
75
  fallback = null,
79
76
  documentTitle,
80
- onReady,
81
- onStateChange,
82
77
  ...rest
83
78
  }: Props<ParamListBase>,
84
79
  ref?: React.Ref<NavigationContainerRef<ParamListBase> | null>
@@ -95,52 +90,14 @@ function NavigationContainerInner(
95
90
  useBackButton(refContainer);
96
91
  useDocumentTitle(refContainer, documentTitle);
97
92
 
98
- const [lastUnhandledLink, setLastUnhandledLink] = React.useState<
99
- string | undefined
100
- >();
101
-
102
- const { getInitialState } = useLinking(
103
- refContainer,
104
- {
105
- enabled: isLinkingEnabled,
106
- prefixes: [],
107
- ...linking,
108
- },
109
- setLastUnhandledLink
110
- );
93
+ const { getInitialState } = useLinking(refContainer, {
94
+ enabled: isLinkingEnabled,
95
+ prefixes: [],
96
+ ...linking,
97
+ });
111
98
 
112
99
  const linkingContext = React.useMemo(() => ({ options: linking }), [linking]);
113
100
 
114
- const unhandledLinkingContext = React.useMemo(
115
- () => ({ lastUnhandledLink, setLastUnhandledLink }),
116
- [lastUnhandledLink, setLastUnhandledLink]
117
- );
118
-
119
- const onReadyForLinkingHandling = useLatestCallback(() => {
120
- // If the screen path matches lastUnhandledLink, we do not track it
121
- const path = refContainer.current?.getCurrentRoute()?.path;
122
- setLastUnhandledLink((previousLastUnhandledLink) => {
123
- if (previousLastUnhandledLink === path) {
124
- return undefined;
125
- }
126
- return previousLastUnhandledLink;
127
- });
128
- onReady?.();
129
- });
130
-
131
- const onStateChangeForLinkingHandling = useLatestCallback(
132
- (state: Readonly<NavigationState> | undefined) => {
133
- // If the screen path matches lastUnhandledLink, we do not track it
134
- const path = refContainer.current?.getCurrentRoute()?.path;
135
- setLastUnhandledLink((previousLastUnhandledLink) => {
136
- if (previousLastUnhandledLink === path) {
137
- return undefined;
138
- }
139
- return previousLastUnhandledLink;
140
- });
141
- onStateChange?.(state);
142
- }
143
- );
144
101
  // Add additional linking related info to the ref
145
102
  // This will be used by the devtools
146
103
  React.useEffect(() => {
@@ -180,20 +137,16 @@ function NavigationContainerInner(
180
137
 
181
138
  return (
182
139
  <LocaleDirContext.Provider value={direction}>
183
- <UnhandledLinkingContext.Provider value={unhandledLinkingContext}>
184
- <LinkingContext.Provider value={linkingContext}>
185
- <BaseNavigationContainer
186
- {...rest}
187
- theme={theme}
188
- onReady={onReadyForLinkingHandling}
189
- onStateChange={onStateChangeForLinkingHandling}
190
- initialState={
191
- rest.initialState == null ? initialState : rest.initialState
192
- }
193
- ref={refContainer}
194
- />
195
- </LinkingContext.Provider>
196
- </UnhandledLinkingContext.Provider>
140
+ <LinkingContext.Provider value={linkingContext}>
141
+ <BaseNavigationContainer
142
+ {...rest}
143
+ theme={theme}
144
+ initialState={
145
+ rest.initialState == null ? initialState : rest.initialState
146
+ }
147
+ ref={refContainer}
148
+ />
149
+ </LinkingContext.Provider>
197
150
  </LocaleDirContext.Provider>
198
151
  );
199
152
  }
@@ -1,18 +1,17 @@
1
1
  import * as React from 'react';
2
2
 
3
- const MISSING_CONTEXT_ERROR =
4
- "Couldn't find an UnhandledLinkingContext context.";
5
-
3
+ /**
4
+ * This is unused, and currently does nothing.
5
+ * But left as an export to avoid breaking consumers who might be using it.
6
+ *
7
+ * @deprecated
8
+ */
6
9
  export const UnhandledLinkingContext = React.createContext<{
7
10
  lastUnhandledLink: string | undefined;
8
11
  setLastUnhandledLink: (lastUnhandledUrl: string | undefined) => void;
9
12
  }>({
10
- get lastUnhandledLink(): any {
11
- throw new Error(MISSING_CONTEXT_ERROR);
12
- },
13
- get setLastUnhandledLink(): any {
14
- throw new Error(MISSING_CONTEXT_ERROR);
15
- },
13
+ lastUnhandledLink: undefined,
14
+ setLastUnhandledLink: () => {},
16
15
  });
17
16
 
18
17
  UnhandledLinkingContext.displayName = 'UnhandledLinkingContext';