@react-navigation/native-stack 6.5.2 → 6.6.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.
@@ -21,6 +21,7 @@ function _extends() { _extends = Object.assign || function (target) { for (var i
21
21
 
22
22
  function NativeStackNavigator(_ref) {
23
23
  let {
24
+ id,
24
25
  initialRouteName,
25
26
  children,
26
27
  screenListeners,
@@ -33,6 +34,7 @@ function NativeStackNavigator(_ref) {
33
34
  navigation,
34
35
  NavigationContent
35
36
  } = (0, _native.useNavigationBuilder)(_native.StackRouter, {
37
+ id,
36
38
  initialRouteName,
37
39
  children,
38
40
  screenListeners,
@@ -41,20 +43,22 @@ function NativeStackNavigator(_ref) {
41
43
  React.useEffect(() => {
42
44
  var _navigation$addListen;
43
45
 
44
- return navigation === null || navigation === void 0 ? void 0 : (_navigation$addListen = navigation.addListener) === null || _navigation$addListen === void 0 ? void 0 : _navigation$addListen.call(navigation, 'tabPress', e => {
45
- const isFocused = navigation.isFocused(); // Run the operation in the next frame so we're sure all listeners have been run
46
- // This is necessary to know if preventDefault() has been called
46
+ return (// @ts-expect-error: there may not be a tab navigator in parent
47
+ navigation === null || navigation === void 0 ? void 0 : (_navigation$addListen = navigation.addListener) === null || _navigation$addListen === void 0 ? void 0 : _navigation$addListen.call(navigation, 'tabPress', e => {
48
+ const isFocused = navigation.isFocused(); // Run the operation in the next frame so we're sure all listeners have been run
49
+ // This is necessary to know if preventDefault() has been called
47
50
 
48
- requestAnimationFrame(() => {
49
- if (state.index > 0 && isFocused && !e.defaultPrevented) {
50
- // When user taps on already focused tab and we're inside the tab,
51
- // reset the stack to replicate native behaviour
52
- navigation.dispatch({ ..._native.StackActions.popToTop(),
53
- target: state.key
54
- });
55
- }
56
- });
57
- });
51
+ requestAnimationFrame(() => {
52
+ if (state.index > 0 && isFocused && !e.defaultPrevented) {
53
+ // When user taps on already focused tab and we're inside the tab,
54
+ // reset the stack to replicate native behaviour
55
+ navigation.dispatch({ ..._native.StackActions.popToTop(),
56
+ target: state.key
57
+ });
58
+ }
59
+ });
60
+ })
61
+ );
58
62
  }, [navigation, state.index, state.key]);
59
63
  return /*#__PURE__*/React.createElement(NavigationContent, null, /*#__PURE__*/React.createElement(_NativeStackView.default, _extends({}, rest, {
60
64
  state: state,
@@ -1 +1 @@
1
- {"version":3,"sources":["createNativeStackNavigator.tsx"],"names":["NativeStackNavigator","initialRouteName","children","screenListeners","screenOptions","rest","state","descriptors","navigation","NavigationContent","StackRouter","React","useEffect","addListener","e","isFocused","requestAnimationFrame","index","defaultPrevented","dispatch","StackActions","popToTop","target","key"],"mappings":";;;;;;;AAAA;;AAWA;;AAOA;;;;;;;;;;AAEA,SAASA,oBAAT,OAM8B;AAAA,MANA;AAC5BC,IAAAA,gBAD4B;AAE5BC,IAAAA,QAF4B;AAG5BC,IAAAA,eAH4B;AAI5BC,IAAAA,aAJ4B;AAK5B,OAAGC;AALyB,GAMA;AAC5B,QAAM;AAAEC,IAAAA,KAAF;AAASC,IAAAA,WAAT;AAAsBC,IAAAA,UAAtB;AAAkCC,IAAAA;AAAlC,MACJ,kCAMEC,mBANF,EAMe;AACbT,IAAAA,gBADa;AAEbC,IAAAA,QAFa;AAGbC,IAAAA,eAHa;AAIbC,IAAAA;AAJa,GANf,CADF;AAcAO,EAAAA,KAAK,CAACC,SAAN,CACE;AAAA;;AAAA,WACEJ,UADF,aACEA,UADF,gDACEA,UAAU,CAAEK,WADd,0DACE,2BAAAL,UAAU,EAAgB,UAAhB,EAA6BM,CAAD,IAAY;AAChD,YAAMC,SAAS,GAAGP,UAAU,CAACO,SAAX,EAAlB,CADgD,CAGhD;AACA;;AACAC,MAAAA,qBAAqB,CAAC,MAAM;AAC1B,YACEV,KAAK,CAACW,KAAN,GAAc,CAAd,IACAF,SADA,IAEA,CAAED,CAAD,CAAkCI,gBAHrC,EAIE;AACA;AACA;AACAV,UAAAA,UAAU,CAACW,QAAX,CAAoB,EAClB,GAAGC,qBAAaC,QAAb,EADe;AAElBC,YAAAA,MAAM,EAAEhB,KAAK,CAACiB;AAFI,WAApB;AAID;AACF,OAboB,CAArB;AAcD,KAnBS,CADZ;AAAA,GADF,EAsBE,CAACf,UAAD,EAAaF,KAAK,CAACW,KAAnB,EAA0BX,KAAK,CAACiB,GAAhC,CAtBF;AAyBA,sBACE,oBAAC,iBAAD,qBACE,oBAAC,wBAAD,eACMlB,IADN;AAEE,IAAA,KAAK,EAAEC,KAFT;AAGE,IAAA,UAAU,EAAEE,UAHd;AAIE,IAAA,WAAW,EAAED;AAJf,KADF,CADF;AAUD;;eAEc,oCAKbP,oBALa,C","sourcesContent":["import {\n createNavigatorFactory,\n EventArg,\n ParamListBase,\n StackActionHelpers,\n StackActions,\n StackNavigationState,\n StackRouter,\n StackRouterOptions,\n useNavigationBuilder,\n} from '@react-navigation/native';\nimport * as React from 'react';\n\nimport type {\n NativeStackNavigationEventMap,\n NativeStackNavigationOptions,\n NativeStackNavigatorProps,\n} from '../types';\nimport NativeStackView from '../views/NativeStackView';\n\nfunction NativeStackNavigator({\n initialRouteName,\n children,\n screenListeners,\n screenOptions,\n ...rest\n}: NativeStackNavigatorProps) {\n const { state, descriptors, navigation, NavigationContent } =\n useNavigationBuilder<\n StackNavigationState<ParamListBase>,\n StackRouterOptions,\n StackActionHelpers<ParamListBase>,\n NativeStackNavigationOptions,\n NativeStackNavigationEventMap\n >(StackRouter, {\n initialRouteName,\n children,\n screenListeners,\n screenOptions,\n });\n\n React.useEffect(\n () =>\n navigation?.addListener?.('tabPress', (e: any) => {\n const isFocused = navigation.isFocused();\n\n // Run the operation in the next frame so we're sure all listeners have been run\n // This is necessary to know if preventDefault() has been called\n requestAnimationFrame(() => {\n if (\n state.index > 0 &&\n isFocused &&\n !(e as EventArg<'tabPress', true>).defaultPrevented\n ) {\n // When user taps on already focused tab and we're inside the tab,\n // reset the stack to replicate native behaviour\n navigation.dispatch({\n ...StackActions.popToTop(),\n target: state.key,\n });\n }\n });\n }),\n [navigation, state.index, state.key]\n );\n\n return (\n <NavigationContent>\n <NativeStackView\n {...rest}\n state={state}\n navigation={navigation}\n descriptors={descriptors}\n />\n </NavigationContent>\n );\n}\n\nexport default createNavigatorFactory<\n StackNavigationState<ParamListBase>,\n NativeStackNavigationOptions,\n NativeStackNavigationEventMap,\n typeof NativeStackNavigator\n>(NativeStackNavigator);\n"]}
1
+ {"version":3,"sources":["createNativeStackNavigator.tsx"],"names":["NativeStackNavigator","id","initialRouteName","children","screenListeners","screenOptions","rest","state","descriptors","navigation","NavigationContent","StackRouter","React","useEffect","addListener","e","isFocused","requestAnimationFrame","index","defaultPrevented","dispatch","StackActions","popToTop","target","key"],"mappings":";;;;;;;AAAA;;AAWA;;AAOA;;;;;;;;;;AAEA,SAASA,oBAAT,OAO8B;AAAA,MAPA;AAC5BC,IAAAA,EAD4B;AAE5BC,IAAAA,gBAF4B;AAG5BC,IAAAA,QAH4B;AAI5BC,IAAAA,eAJ4B;AAK5BC,IAAAA,aAL4B;AAM5B,OAAGC;AANyB,GAOA;AAC5B,QAAM;AAAEC,IAAAA,KAAF;AAASC,IAAAA,WAAT;AAAsBC,IAAAA,UAAtB;AAAkCC,IAAAA;AAAlC,MACJ,kCAMEC,mBANF,EAMe;AACbV,IAAAA,EADa;AAEbC,IAAAA,gBAFa;AAGbC,IAAAA,QAHa;AAIbC,IAAAA,eAJa;AAKbC,IAAAA;AALa,GANf,CADF;AAeAO,EAAAA,KAAK,CAACC,SAAN,CACE;AAAA;;AAAA,WACE;AACAJ,MAAAA,UAFF,aAEEA,UAFF,gDAEEA,UAAU,CAAEK,WAFd,0DAEE,2BAAAL,UAAU,EAAgB,UAAhB,EAA6BM,CAAD,IAAY;AAChD,cAAMC,SAAS,GAAGP,UAAU,CAACO,SAAX,EAAlB,CADgD,CAGhD;AACA;;AACAC,QAAAA,qBAAqB,CAAC,MAAM;AAC1B,cACEV,KAAK,CAACW,KAAN,GAAc,CAAd,IACAF,SADA,IAEA,CAAED,CAAD,CAAkCI,gBAHrC,EAIE;AACA;AACA;AACAV,YAAAA,UAAU,CAACW,QAAX,CAAoB,EAClB,GAAGC,qBAAaC,QAAb,EADe;AAElBC,cAAAA,MAAM,EAAEhB,KAAK,CAACiB;AAFI,aAApB;AAID;AACF,SAboB,CAArB;AAcD,OAnBS;AAFZ;AAAA,GADF,EAuBE,CAACf,UAAD,EAAaF,KAAK,CAACW,KAAnB,EAA0BX,KAAK,CAACiB,GAAhC,CAvBF;AA0BA,sBACE,oBAAC,iBAAD,qBACE,oBAAC,wBAAD,eACMlB,IADN;AAEE,IAAA,KAAK,EAAEC,KAFT;AAGE,IAAA,UAAU,EAAEE,UAHd;AAIE,IAAA,WAAW,EAAED;AAJf,KADF,CADF;AAUD;;eAEc,oCAKbR,oBALa,C","sourcesContent":["import {\n createNavigatorFactory,\n EventArg,\n ParamListBase,\n StackActionHelpers,\n StackActions,\n StackNavigationState,\n StackRouter,\n StackRouterOptions,\n useNavigationBuilder,\n} from '@react-navigation/native';\nimport * as React from 'react';\n\nimport type {\n NativeStackNavigationEventMap,\n NativeStackNavigationOptions,\n NativeStackNavigatorProps,\n} from '../types';\nimport NativeStackView from '../views/NativeStackView';\n\nfunction NativeStackNavigator({\n id,\n initialRouteName,\n children,\n screenListeners,\n screenOptions,\n ...rest\n}: NativeStackNavigatorProps) {\n const { state, descriptors, navigation, NavigationContent } =\n useNavigationBuilder<\n StackNavigationState<ParamListBase>,\n StackRouterOptions,\n StackActionHelpers<ParamListBase>,\n NativeStackNavigationOptions,\n NativeStackNavigationEventMap\n >(StackRouter, {\n id,\n initialRouteName,\n children,\n screenListeners,\n screenOptions,\n });\n\n React.useEffect(\n () =>\n // @ts-expect-error: there may not be a tab navigator in parent\n navigation?.addListener?.('tabPress', (e: any) => {\n const isFocused = navigation.isFocused();\n\n // Run the operation in the next frame so we're sure all listeners have been run\n // This is necessary to know if preventDefault() has been called\n requestAnimationFrame(() => {\n if (\n state.index > 0 &&\n isFocused &&\n !(e as EventArg<'tabPress', true>).defaultPrevented\n ) {\n // When user taps on already focused tab and we're inside the tab,\n // reset the stack to replicate native behaviour\n navigation.dispatch({\n ...StackActions.popToTop(),\n target: state.key,\n });\n }\n });\n }),\n [navigation, state.index, state.key]\n );\n\n return (\n <NavigationContent>\n <NativeStackView\n {...rest}\n state={state}\n navigation={navigation}\n descriptors={descriptors}\n />\n </NavigationContent>\n );\n}\n\nexport default createNavigatorFactory<\n StackNavigationState<ParamListBase>,\n NativeStackNavigationOptions,\n NativeStackNavigationEventMap,\n typeof NativeStackNavigator\n>(NativeStackNavigator);\n"]}
@@ -6,6 +6,7 @@ import NativeStackView from '../views/NativeStackView';
6
6
 
7
7
  function NativeStackNavigator(_ref) {
8
8
  let {
9
+ id,
9
10
  initialRouteName,
10
11
  children,
11
12
  screenListeners,
@@ -18,6 +19,7 @@ function NativeStackNavigator(_ref) {
18
19
  navigation,
19
20
  NavigationContent
20
21
  } = useNavigationBuilder(StackRouter, {
22
+ id,
21
23
  initialRouteName,
22
24
  children,
23
25
  screenListeners,
@@ -26,20 +28,22 @@ function NativeStackNavigator(_ref) {
26
28
  React.useEffect(() => {
27
29
  var _navigation$addListen;
28
30
 
29
- return navigation === null || navigation === void 0 ? void 0 : (_navigation$addListen = navigation.addListener) === null || _navigation$addListen === void 0 ? void 0 : _navigation$addListen.call(navigation, 'tabPress', e => {
30
- const isFocused = navigation.isFocused(); // Run the operation in the next frame so we're sure all listeners have been run
31
- // This is necessary to know if preventDefault() has been called
31
+ return (// @ts-expect-error: there may not be a tab navigator in parent
32
+ navigation === null || navigation === void 0 ? void 0 : (_navigation$addListen = navigation.addListener) === null || _navigation$addListen === void 0 ? void 0 : _navigation$addListen.call(navigation, 'tabPress', e => {
33
+ const isFocused = navigation.isFocused(); // Run the operation in the next frame so we're sure all listeners have been run
34
+ // This is necessary to know if preventDefault() has been called
32
35
 
33
- requestAnimationFrame(() => {
34
- if (state.index > 0 && isFocused && !e.defaultPrevented) {
35
- // When user taps on already focused tab and we're inside the tab,
36
- // reset the stack to replicate native behaviour
37
- navigation.dispatch({ ...StackActions.popToTop(),
38
- target: state.key
39
- });
40
- }
41
- });
42
- });
36
+ requestAnimationFrame(() => {
37
+ if (state.index > 0 && isFocused && !e.defaultPrevented) {
38
+ // When user taps on already focused tab and we're inside the tab,
39
+ // reset the stack to replicate native behaviour
40
+ navigation.dispatch({ ...StackActions.popToTop(),
41
+ target: state.key
42
+ });
43
+ }
44
+ });
45
+ })
46
+ );
43
47
  }, [navigation, state.index, state.key]);
44
48
  return /*#__PURE__*/React.createElement(NavigationContent, null, /*#__PURE__*/React.createElement(NativeStackView, _extends({}, rest, {
45
49
  state: state,
@@ -1 +1 @@
1
- {"version":3,"sources":["createNativeStackNavigator.tsx"],"names":["createNavigatorFactory","StackActions","StackRouter","useNavigationBuilder","React","NativeStackView","NativeStackNavigator","initialRouteName","children","screenListeners","screenOptions","rest","state","descriptors","navigation","NavigationContent","useEffect","addListener","e","isFocused","requestAnimationFrame","index","defaultPrevented","dispatch","popToTop","target","key"],"mappings":";;AAAA,SACEA,sBADF,EAKEC,YALF,EAOEC,WAPF,EASEC,oBATF,QAUO,0BAVP;AAWA,OAAO,KAAKC,KAAZ,MAAuB,OAAvB;AAOA,OAAOC,eAAP,MAA4B,0BAA5B;;AAEA,SAASC,oBAAT,OAM8B;AAAA,MANA;AAC5BC,IAAAA,gBAD4B;AAE5BC,IAAAA,QAF4B;AAG5BC,IAAAA,eAH4B;AAI5BC,IAAAA,aAJ4B;AAK5B,OAAGC;AALyB,GAMA;AAC5B,QAAM;AAAEC,IAAAA,KAAF;AAASC,IAAAA,WAAT;AAAsBC,IAAAA,UAAtB;AAAkCC,IAAAA;AAAlC,MACJZ,oBAAoB,CAMlBD,WANkB,EAML;AACbK,IAAAA,gBADa;AAEbC,IAAAA,QAFa;AAGbC,IAAAA,eAHa;AAIbC,IAAAA;AAJa,GANK,CADtB;AAcAN,EAAAA,KAAK,CAACY,SAAN,CACE;AAAA;;AAAA,WACEF,UADF,aACEA,UADF,gDACEA,UAAU,CAAEG,WADd,0DACE,2BAAAH,UAAU,EAAgB,UAAhB,EAA6BI,CAAD,IAAY;AAChD,YAAMC,SAAS,GAAGL,UAAU,CAACK,SAAX,EAAlB,CADgD,CAGhD;AACA;;AACAC,MAAAA,qBAAqB,CAAC,MAAM;AAC1B,YACER,KAAK,CAACS,KAAN,GAAc,CAAd,IACAF,SADA,IAEA,CAAED,CAAD,CAAkCI,gBAHrC,EAIE;AACA;AACA;AACAR,UAAAA,UAAU,CAACS,QAAX,CAAoB,EAClB,GAAGtB,YAAY,CAACuB,QAAb,EADe;AAElBC,YAAAA,MAAM,EAAEb,KAAK,CAACc;AAFI,WAApB;AAID;AACF,OAboB,CAArB;AAcD,KAnBS,CADZ;AAAA,GADF,EAsBE,CAACZ,UAAD,EAAaF,KAAK,CAACS,KAAnB,EAA0BT,KAAK,CAACc,GAAhC,CAtBF;AAyBA,sBACE,oBAAC,iBAAD,qBACE,oBAAC,eAAD,eACMf,IADN;AAEE,IAAA,KAAK,EAAEC,KAFT;AAGE,IAAA,UAAU,EAAEE,UAHd;AAIE,IAAA,WAAW,EAAED;AAJf,KADF,CADF;AAUD;;AAED,eAAeb,sBAAsB,CAKnCM,oBALmC,CAArC","sourcesContent":["import {\n createNavigatorFactory,\n EventArg,\n ParamListBase,\n StackActionHelpers,\n StackActions,\n StackNavigationState,\n StackRouter,\n StackRouterOptions,\n useNavigationBuilder,\n} from '@react-navigation/native';\nimport * as React from 'react';\n\nimport type {\n NativeStackNavigationEventMap,\n NativeStackNavigationOptions,\n NativeStackNavigatorProps,\n} from '../types';\nimport NativeStackView from '../views/NativeStackView';\n\nfunction NativeStackNavigator({\n initialRouteName,\n children,\n screenListeners,\n screenOptions,\n ...rest\n}: NativeStackNavigatorProps) {\n const { state, descriptors, navigation, NavigationContent } =\n useNavigationBuilder<\n StackNavigationState<ParamListBase>,\n StackRouterOptions,\n StackActionHelpers<ParamListBase>,\n NativeStackNavigationOptions,\n NativeStackNavigationEventMap\n >(StackRouter, {\n initialRouteName,\n children,\n screenListeners,\n screenOptions,\n });\n\n React.useEffect(\n () =>\n navigation?.addListener?.('tabPress', (e: any) => {\n const isFocused = navigation.isFocused();\n\n // Run the operation in the next frame so we're sure all listeners have been run\n // This is necessary to know if preventDefault() has been called\n requestAnimationFrame(() => {\n if (\n state.index > 0 &&\n isFocused &&\n !(e as EventArg<'tabPress', true>).defaultPrevented\n ) {\n // When user taps on already focused tab and we're inside the tab,\n // reset the stack to replicate native behaviour\n navigation.dispatch({\n ...StackActions.popToTop(),\n target: state.key,\n });\n }\n });\n }),\n [navigation, state.index, state.key]\n );\n\n return (\n <NavigationContent>\n <NativeStackView\n {...rest}\n state={state}\n navigation={navigation}\n descriptors={descriptors}\n />\n </NavigationContent>\n );\n}\n\nexport default createNavigatorFactory<\n StackNavigationState<ParamListBase>,\n NativeStackNavigationOptions,\n NativeStackNavigationEventMap,\n typeof NativeStackNavigator\n>(NativeStackNavigator);\n"]}
1
+ {"version":3,"sources":["createNativeStackNavigator.tsx"],"names":["createNavigatorFactory","StackActions","StackRouter","useNavigationBuilder","React","NativeStackView","NativeStackNavigator","id","initialRouteName","children","screenListeners","screenOptions","rest","state","descriptors","navigation","NavigationContent","useEffect","addListener","e","isFocused","requestAnimationFrame","index","defaultPrevented","dispatch","popToTop","target","key"],"mappings":";;AAAA,SACEA,sBADF,EAKEC,YALF,EAOEC,WAPF,EASEC,oBATF,QAUO,0BAVP;AAWA,OAAO,KAAKC,KAAZ,MAAuB,OAAvB;AAOA,OAAOC,eAAP,MAA4B,0BAA5B;;AAEA,SAASC,oBAAT,OAO8B;AAAA,MAPA;AAC5BC,IAAAA,EAD4B;AAE5BC,IAAAA,gBAF4B;AAG5BC,IAAAA,QAH4B;AAI5BC,IAAAA,eAJ4B;AAK5BC,IAAAA,aAL4B;AAM5B,OAAGC;AANyB,GAOA;AAC5B,QAAM;AAAEC,IAAAA,KAAF;AAASC,IAAAA,WAAT;AAAsBC,IAAAA,UAAtB;AAAkCC,IAAAA;AAAlC,MACJb,oBAAoB,CAMlBD,WANkB,EAML;AACbK,IAAAA,EADa;AAEbC,IAAAA,gBAFa;AAGbC,IAAAA,QAHa;AAIbC,IAAAA,eAJa;AAKbC,IAAAA;AALa,GANK,CADtB;AAeAP,EAAAA,KAAK,CAACa,SAAN,CACE;AAAA;;AAAA,WACE;AACAF,MAAAA,UAFF,aAEEA,UAFF,gDAEEA,UAAU,CAAEG,WAFd,0DAEE,2BAAAH,UAAU,EAAgB,UAAhB,EAA6BI,CAAD,IAAY;AAChD,cAAMC,SAAS,GAAGL,UAAU,CAACK,SAAX,EAAlB,CADgD,CAGhD;AACA;;AACAC,QAAAA,qBAAqB,CAAC,MAAM;AAC1B,cACER,KAAK,CAACS,KAAN,GAAc,CAAd,IACAF,SADA,IAEA,CAAED,CAAD,CAAkCI,gBAHrC,EAIE;AACA;AACA;AACAR,YAAAA,UAAU,CAACS,QAAX,CAAoB,EAClB,GAAGvB,YAAY,CAACwB,QAAb,EADe;AAElBC,cAAAA,MAAM,EAAEb,KAAK,CAACc;AAFI,aAApB;AAID;AACF,SAboB,CAArB;AAcD,OAnBS;AAFZ;AAAA,GADF,EAuBE,CAACZ,UAAD,EAAaF,KAAK,CAACS,KAAnB,EAA0BT,KAAK,CAACc,GAAhC,CAvBF;AA0BA,sBACE,oBAAC,iBAAD,qBACE,oBAAC,eAAD,eACMf,IADN;AAEE,IAAA,KAAK,EAAEC,KAFT;AAGE,IAAA,UAAU,EAAEE,UAHd;AAIE,IAAA,WAAW,EAAED;AAJf,KADF,CADF;AAUD;;AAED,eAAed,sBAAsB,CAKnCM,oBALmC,CAArC","sourcesContent":["import {\n createNavigatorFactory,\n EventArg,\n ParamListBase,\n StackActionHelpers,\n StackActions,\n StackNavigationState,\n StackRouter,\n StackRouterOptions,\n useNavigationBuilder,\n} from '@react-navigation/native';\nimport * as React from 'react';\n\nimport type {\n NativeStackNavigationEventMap,\n NativeStackNavigationOptions,\n NativeStackNavigatorProps,\n} from '../types';\nimport NativeStackView from '../views/NativeStackView';\n\nfunction NativeStackNavigator({\n id,\n initialRouteName,\n children,\n screenListeners,\n screenOptions,\n ...rest\n}: NativeStackNavigatorProps) {\n const { state, descriptors, navigation, NavigationContent } =\n useNavigationBuilder<\n StackNavigationState<ParamListBase>,\n StackRouterOptions,\n StackActionHelpers<ParamListBase>,\n NativeStackNavigationOptions,\n NativeStackNavigationEventMap\n >(StackRouter, {\n id,\n initialRouteName,\n children,\n screenListeners,\n screenOptions,\n });\n\n React.useEffect(\n () =>\n // @ts-expect-error: there may not be a tab navigator in parent\n navigation?.addListener?.('tabPress', (e: any) => {\n const isFocused = navigation.isFocused();\n\n // Run the operation in the next frame so we're sure all listeners have been run\n // This is necessary to know if preventDefault() has been called\n requestAnimationFrame(() => {\n if (\n state.index > 0 &&\n isFocused &&\n !(e as EventArg<'tabPress', true>).defaultPrevented\n ) {\n // When user taps on already focused tab and we're inside the tab,\n // reset the stack to replicate native behaviour\n navigation.dispatch({\n ...StackActions.popToTop(),\n target: state.key,\n });\n }\n });\n }),\n [navigation, state.index, state.key]\n );\n\n return (\n <NavigationContent>\n <NativeStackView\n {...rest}\n state={state}\n navigation={navigation}\n descriptors={descriptors}\n />\n </NavigationContent>\n );\n}\n\nexport default createNavigatorFactory<\n StackNavigationState<ParamListBase>,\n NativeStackNavigationOptions,\n NativeStackNavigationEventMap,\n typeof NativeStackNavigator\n>(NativeStackNavigator);\n"]}
@@ -1,6 +1,6 @@
1
1
  /// <reference types="react" />
2
2
  import { ParamListBase, StackNavigationState } from '@react-navigation/native';
3
3
  import type { NativeStackNavigationEventMap, NativeStackNavigationOptions, NativeStackNavigatorProps } from '../types';
4
- declare function NativeStackNavigator({ initialRouteName, children, screenListeners, screenOptions, ...rest }: NativeStackNavigatorProps): JSX.Element;
4
+ declare function NativeStackNavigator({ id, initialRouteName, children, screenListeners, screenOptions, ...rest }: NativeStackNavigatorProps): JSX.Element;
5
5
  declare const _default: <ParamList extends ParamListBase>() => import("@react-navigation/native").TypedNavigator<ParamList, StackNavigationState<ParamListBase>, NativeStackNavigationOptions, NativeStackNavigationEventMap, typeof NativeStackNavigator>;
6
6
  export default _default;
@@ -20,9 +20,9 @@ export declare type NativeStackNavigationEventMap = {
20
20
  };
21
21
  };
22
22
  };
23
- export declare type NativeStackNavigationProp<ParamList extends ParamListBase, RouteName extends keyof ParamList = string> = NavigationProp<ParamList, RouteName, StackNavigationState<ParamList>, NativeStackNavigationOptions, NativeStackNavigationEventMap> & StackActionHelpers<ParamList>;
24
- export declare type NativeStackScreenProps<ParamList extends ParamListBase, RouteName extends keyof ParamList = string> = {
25
- navigation: NativeStackNavigationProp<ParamList, RouteName>;
23
+ export declare type NativeStackNavigationProp<ParamList extends ParamListBase, RouteName extends keyof ParamList = string, NavigatorID extends string | undefined = undefined> = NavigationProp<ParamList, RouteName, NavigatorID, StackNavigationState<ParamList>, NativeStackNavigationOptions, NativeStackNavigationEventMap> & StackActionHelpers<ParamList>;
24
+ export declare type NativeStackScreenProps<ParamList extends ParamListBase, RouteName extends keyof ParamList = string, NavigatorID extends string | undefined = undefined> = {
25
+ navigation: NativeStackNavigationProp<ParamList, RouteName, NavigatorID>;
26
26
  route: RouteProp<ParamList, RouteName>;
27
27
  };
28
28
  export declare type NativeStackNavigationHelpers = NavigationHelpers<ParamListBase, NativeStackNavigationEventMap>;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@react-navigation/native-stack",
3
3
  "description": "Native stack navigator using react-native-screens",
4
- "version": "6.5.2",
4
+ "version": "6.6.0",
5
5
  "keywords": [
6
6
  "react-native-component",
7
7
  "react-component",
@@ -41,11 +41,11 @@
41
41
  "clean": "del lib"
42
42
  },
43
43
  "dependencies": {
44
- "@react-navigation/elements": "^1.3.1",
44
+ "@react-navigation/elements": "^1.3.2",
45
45
  "warn-once": "^0.1.0"
46
46
  },
47
47
  "devDependencies": {
48
- "@react-navigation/native": "^6.0.8",
48
+ "@react-navigation/native": "^6.0.9",
49
49
  "@testing-library/react-native": "^7.2.0",
50
50
  "@types/react": "^17.0.9",
51
51
  "@types/react-native": "~0.64.9",
@@ -76,5 +76,5 @@
76
76
  ]
77
77
  ]
78
78
  },
79
- "gitHead": "701302672962195f18b41d6538484d7727cd1d61"
79
+ "gitHead": "c5ef6b5e88426e658123ea8590da583314b9001e"
80
80
  }
@@ -19,6 +19,7 @@ import type {
19
19
  import NativeStackView from '../views/NativeStackView';
20
20
 
21
21
  function NativeStackNavigator({
22
+ id,
22
23
  initialRouteName,
23
24
  children,
24
25
  screenListeners,
@@ -33,6 +34,7 @@ function NativeStackNavigator({
33
34
  NativeStackNavigationOptions,
34
35
  NativeStackNavigationEventMap
35
36
  >(StackRouter, {
37
+ id,
36
38
  initialRouteName,
37
39
  children,
38
40
  screenListeners,
@@ -41,6 +43,7 @@ function NativeStackNavigator({
41
43
 
42
44
  React.useEffect(
43
45
  () =>
46
+ // @ts-expect-error: there may not be a tab navigator in parent
44
47
  navigation?.addListener?.('tabPress', (e: any) => {
45
48
  const isFocused = navigation.isFocused();
46
49
 
package/src/types.tsx CHANGED
@@ -35,10 +35,12 @@ export type NativeStackNavigationEventMap = {
35
35
 
36
36
  export type NativeStackNavigationProp<
37
37
  ParamList extends ParamListBase,
38
- RouteName extends keyof ParamList = string
38
+ RouteName extends keyof ParamList = string,
39
+ NavigatorID extends string | undefined = undefined
39
40
  > = NavigationProp<
40
41
  ParamList,
41
42
  RouteName,
43
+ NavigatorID,
42
44
  StackNavigationState<ParamList>,
43
45
  NativeStackNavigationOptions,
44
46
  NativeStackNavigationEventMap
@@ -47,9 +49,10 @@ export type NativeStackNavigationProp<
47
49
 
48
50
  export type NativeStackScreenProps<
49
51
  ParamList extends ParamListBase,
50
- RouteName extends keyof ParamList = string
52
+ RouteName extends keyof ParamList = string,
53
+ NavigatorID extends string | undefined = undefined
51
54
  > = {
52
- navigation: NativeStackNavigationProp<ParamList, RouteName>;
55
+ navigation: NativeStackNavigationProp<ParamList, RouteName, NavigatorID>;
53
56
  route: RouteProp<ParamList, RouteName>;
54
57
  };
55
58