react-native-screens 3.20.0 → 3.21.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 (209) hide show
  1. package/README.md +2 -1
  2. package/RNScreens.podspec +1 -1
  3. package/android/build.gradle +24 -6
  4. package/android/src/main/java/com/swmansion/rnscreens/CustomSearchView.kt +4 -0
  5. package/android/src/main/java/com/swmansion/rnscreens/ScreenStackHeaderConfig.kt +7 -9
  6. package/android/src/main/java/com/swmansion/rnscreens/ScreenStackHeaderConfigViewManager.kt +12 -4
  7. package/android/src/main/java/com/swmansion/rnscreens/ScreenViewManager.kt +10 -0
  8. package/android/src/main/java/com/swmansion/rnscreens/SearchBarManager.kt +32 -8
  9. package/android/src/main/java/com/swmansion/rnscreens/SearchBarView.kt +36 -15
  10. package/android/src/main/java/com/swmansion/rnscreens/events/HeaderAttachedEvent.kt +24 -0
  11. package/android/src/main/java/com/swmansion/rnscreens/events/HeaderDetachedEvent.kt +24 -0
  12. package/android/src/main/java/com/swmansion/rnscreens/events/SearchBarBlurEvent.kt +24 -0
  13. package/android/src/main/java/com/swmansion/rnscreens/events/SearchBarChangeTextEvent.kt +29 -0
  14. package/android/src/main/java/com/swmansion/rnscreens/events/SearchBarCloseEvent.kt +24 -0
  15. package/android/src/main/java/com/swmansion/rnscreens/events/SearchBarFocusEvent.kt +24 -0
  16. package/android/src/main/java/com/swmansion/rnscreens/events/SearchBarOpenEvent.kt +24 -0
  17. package/android/src/main/java/com/swmansion/rnscreens/events/SearchBarSearchButtonPressEvent.kt +26 -0
  18. package/android/src/main/res/base/anim/rns_standard_accelerate_interpolator.xml +6 -0
  19. package/android/src/main/res/v33/anim-v33/rns_default_enter_in.xml +38 -0
  20. package/android/src/main/res/v33/anim-v33/rns_default_enter_out.xml +38 -0
  21. package/android/src/main/res/v33/anim-v33/rns_default_exit_in.xml +38 -0
  22. package/android/src/main/res/v33/anim-v33/rns_default_exit_out.xml +38 -0
  23. package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenManagerDelegate.java +15 -0
  24. package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenManagerInterface.java +5 -0
  25. package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenStackHeaderConfigManagerDelegate.java +3 -0
  26. package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenStackHeaderConfigManagerInterface.java +1 -0
  27. package/common/cpp/react/renderer/components/rnscreens/RNSScreenState.h +1 -2
  28. package/ios/RCTImageComponentView+RNSScreenStackHeaderConfig.h +11 -0
  29. package/ios/RCTImageComponentView+RNSScreenStackHeaderConfig.mm +14 -0
  30. package/ios/RNSConvert.h +8 -2
  31. package/ios/RNSConvert.mm +28 -2
  32. package/ios/RNSEnums.h +6 -0
  33. package/ios/RNSFullWindowOverlay.h +5 -5
  34. package/ios/RNSFullWindowOverlay.mm +13 -13
  35. package/ios/RNSScreen.h +14 -6
  36. package/ios/RNSScreen.mm +129 -28
  37. package/ios/RNSScreenContainer.h +2 -2
  38. package/ios/RNSScreenContainer.mm +5 -5
  39. package/ios/RNSScreenNavigationContainer.mm +3 -3
  40. package/ios/RNSScreenStack.h +4 -4
  41. package/ios/RNSScreenStack.mm +62 -23
  42. package/ios/RNSScreenStackHeaderConfig.h +10 -3
  43. package/ios/RNSScreenStackHeaderConfig.mm +138 -81
  44. package/ios/RNSScreenStackHeaderSubview.h +5 -6
  45. package/ios/RNSScreenStackHeaderSubview.mm +20 -11
  46. package/ios/RNSScreenWindowTraits.mm +21 -2
  47. package/ios/RNSSearchBar.h +5 -4
  48. package/ios/RNSSearchBar.mm +87 -12
  49. package/ios/RNScreens.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
  50. package/ios/RNScreens.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  51. package/ios/RNScreens.xcodeproj/project.xcworkspace/xcuserdata/wojciechlewicki.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  52. package/ios/RNScreens.xcodeproj/xcuserdata/wojciechlewicki.xcuserdatad/xcschemes/xcschememanagement.plist +19 -0
  53. package/lib/commonjs/TransitionProgressContext.js.map +1 -1
  54. package/lib/commonjs/fabric/FullWindowOverlayNativeComponent.js +0 -5
  55. package/lib/commonjs/fabric/FullWindowOverlayNativeComponent.js.map +1 -1
  56. package/lib/commonjs/fabric/ScreenContainerNativeComponent.js +0 -5
  57. package/lib/commonjs/fabric/ScreenContainerNativeComponent.js.map +1 -1
  58. package/lib/commonjs/fabric/ScreenNativeComponent.js +0 -5
  59. package/lib/commonjs/fabric/ScreenNativeComponent.js.map +1 -1
  60. package/lib/commonjs/fabric/ScreenNavigationContainerNativeComponent.js +0 -5
  61. package/lib/commonjs/fabric/ScreenNavigationContainerNativeComponent.js.map +1 -1
  62. package/lib/commonjs/fabric/ScreenStackHeaderConfigNativeComponent.js +0 -8
  63. package/lib/commonjs/fabric/ScreenStackHeaderConfigNativeComponent.js.map +1 -1
  64. package/lib/commonjs/fabric/ScreenStackHeaderSubviewNativeComponent.js +0 -8
  65. package/lib/commonjs/fabric/ScreenStackHeaderSubviewNativeComponent.js.map +1 -1
  66. package/lib/commonjs/fabric/ScreenStackNativeComponent.js +0 -5
  67. package/lib/commonjs/fabric/ScreenStackNativeComponent.js.map +1 -1
  68. package/lib/commonjs/fabric/SearchBarNativeComponent.js +7 -7
  69. package/lib/commonjs/fabric/SearchBarNativeComponent.js.map +1 -1
  70. package/lib/commonjs/index.js +1 -1
  71. package/lib/commonjs/index.js.map +1 -1
  72. package/lib/commonjs/index.native.js +50 -10
  73. package/lib/commonjs/index.native.js.map +1 -1
  74. package/lib/commonjs/native-stack/index.js.map +1 -1
  75. package/lib/commonjs/native-stack/navigators/createNativeStackNavigator.js +18 -16
  76. package/lib/commonjs/native-stack/navigators/createNativeStackNavigator.js.map +1 -1
  77. package/lib/commonjs/native-stack/types.js.map +1 -1
  78. package/lib/commonjs/native-stack/utils/HeaderHeightContext.js.map +1 -1
  79. package/lib/commonjs/native-stack/utils/SafeAreaProviderCompat.js.map +1 -1
  80. package/lib/commonjs/native-stack/utils/getDefaultHeaderHeight.js.map +1 -1
  81. package/lib/commonjs/native-stack/utils/useBackPressSubscription.js.map +1 -1
  82. package/lib/commonjs/native-stack/utils/useHeaderHeight.js.map +1 -1
  83. package/lib/commonjs/native-stack/views/FontProcessor.js +1 -0
  84. package/lib/commonjs/native-stack/views/FontProcessor.js.map +1 -1
  85. package/lib/commonjs/native-stack/views/HeaderConfig.js +3 -1
  86. package/lib/commonjs/native-stack/views/HeaderConfig.js.map +1 -1
  87. package/lib/commonjs/native-stack/views/NativeStackView.js +14 -1
  88. package/lib/commonjs/native-stack/views/NativeStackView.js.map +1 -1
  89. package/lib/commonjs/reanimated/ReanimatedNativeStackScreen.js.map +1 -1
  90. package/lib/commonjs/reanimated/ReanimatedScreen.js.map +1 -1
  91. package/lib/commonjs/reanimated/ReanimatedScreenProvider.js.map +1 -1
  92. package/lib/commonjs/reanimated/ReanimatedTransitionProgressContext.js.map +1 -1
  93. package/lib/commonjs/reanimated/index.js.map +1 -1
  94. package/lib/commonjs/reanimated/useReanimatedTransitionProgress.js.map +1 -1
  95. package/lib/commonjs/types.js.map +1 -1
  96. package/lib/commonjs/useTransitionProgress.js.map +1 -1
  97. package/lib/commonjs/utils.js.map +1 -1
  98. package/lib/module/fabric/FullWindowOverlayNativeComponent.js +0 -5
  99. package/lib/module/fabric/FullWindowOverlayNativeComponent.js.map +1 -1
  100. package/lib/module/fabric/ScreenContainerNativeComponent.js +0 -5
  101. package/lib/module/fabric/ScreenContainerNativeComponent.js.map +1 -1
  102. package/lib/module/fabric/ScreenNativeComponent.js +0 -5
  103. package/lib/module/fabric/ScreenNativeComponent.js.map +1 -1
  104. package/lib/module/fabric/ScreenNavigationContainerNativeComponent.js +0 -5
  105. package/lib/module/fabric/ScreenNavigationContainerNativeComponent.js.map +1 -1
  106. package/lib/module/fabric/ScreenStackHeaderConfigNativeComponent.js +0 -6
  107. package/lib/module/fabric/ScreenStackHeaderConfigNativeComponent.js.map +1 -1
  108. package/lib/module/fabric/ScreenStackHeaderSubviewNativeComponent.js +0 -6
  109. package/lib/module/fabric/ScreenStackHeaderSubviewNativeComponent.js.map +1 -1
  110. package/lib/module/fabric/ScreenStackNativeComponent.js +0 -5
  111. package/lib/module/fabric/ScreenStackNativeComponent.js.map +1 -1
  112. package/lib/module/fabric/SearchBarNativeComponent.js +4 -6
  113. package/lib/module/fabric/SearchBarNativeComponent.js.map +1 -1
  114. package/lib/module/index.js +1 -1
  115. package/lib/module/index.js.map +1 -1
  116. package/lib/module/index.native.js +51 -10
  117. package/lib/module/index.native.js.map +1 -1
  118. package/lib/module/native-stack/navigators/createNativeStackNavigator.js +18 -16
  119. package/lib/module/native-stack/navigators/createNativeStackNavigator.js.map +1 -1
  120. package/lib/module/native-stack/types.js.map +1 -1
  121. package/lib/module/native-stack/utils/SafeAreaProviderCompat.js.map +1 -1
  122. package/lib/module/native-stack/utils/getDefaultHeaderHeight.js.map +1 -1
  123. package/lib/module/native-stack/utils/useBackPressSubscription.js.map +1 -1
  124. package/lib/module/native-stack/utils/useHeaderHeight.js.map +1 -1
  125. package/lib/module/native-stack/views/FontProcessor.js +1 -0
  126. package/lib/module/native-stack/views/FontProcessor.js.map +1 -1
  127. package/lib/module/native-stack/views/HeaderConfig.js +3 -1
  128. package/lib/module/native-stack/views/HeaderConfig.js.map +1 -1
  129. package/lib/module/native-stack/views/NativeStackView.js +15 -1
  130. package/lib/module/native-stack/views/NativeStackView.js.map +1 -1
  131. package/lib/module/reanimated/ReanimatedNativeStackScreen.js.map +1 -1
  132. package/lib/module/reanimated/ReanimatedScreen.js.map +1 -1
  133. package/lib/module/reanimated/ReanimatedScreenProvider.js.map +1 -1
  134. package/lib/module/reanimated/useReanimatedTransitionProgress.js.map +1 -1
  135. package/lib/module/types.js.map +1 -1
  136. package/lib/module/useTransitionProgress.js.map +1 -1
  137. package/lib/module/utils.js.map +1 -1
  138. package/lib/typescript/TransitionProgressContext.d.ts +1 -1
  139. package/lib/typescript/fabric/FullWindowOverlayNativeComponent.d.ts +6 -0
  140. package/lib/typescript/fabric/ScreenContainerNativeComponent.d.ts +6 -0
  141. package/lib/typescript/fabric/ScreenNativeComponent.d.ts +62 -0
  142. package/lib/typescript/fabric/ScreenNavigationContainerNativeComponent.d.ts +6 -0
  143. package/lib/typescript/fabric/ScreenStackHeaderConfigNativeComponent.d.ts +34 -0
  144. package/lib/typescript/fabric/ScreenStackHeaderSubviewNativeComponent.d.ts +9 -0
  145. package/lib/typescript/fabric/ScreenStackNativeComponent.d.ts +9 -0
  146. package/lib/typescript/fabric/SearchBarNativeComponent.d.ts +46 -0
  147. package/lib/typescript/index.d.ts +2 -2
  148. package/lib/typescript/native-stack/types.d.ts +64 -10
  149. package/lib/typescript/native-stack/utils/SafeAreaProviderCompat.d.ts +1 -1
  150. package/lib/typescript/native-stack/utils/getDefaultHeaderHeight.d.ts +1 -1
  151. package/lib/typescript/native-stack/views/HeaderConfig.d.ts +1 -1
  152. package/lib/typescript/native-stack/views/NativeStackView.d.ts +1 -1
  153. package/lib/typescript/reanimated/ReanimatedNativeStackScreen.d.ts +1 -1
  154. package/lib/typescript/reanimated/ReanimatedScreen.d.ts +1 -1
  155. package/lib/typescript/reanimated/ReanimatedTransitionProgressContext.d.ts +1 -1
  156. package/lib/typescript/types.d.ts +90 -11
  157. package/lib/typescript/useTransitionProgress.d.ts +3 -3
  158. package/native-stack/README.md +59 -1
  159. package/package.json +11 -14
  160. package/src/fabric/FullWindowOverlayNativeComponent.ts +6 -0
  161. package/src/fabric/ScreenContainerNativeComponent.ts +6 -0
  162. package/src/fabric/ScreenNativeComponent.ts +97 -0
  163. package/src/fabric/ScreenNavigationContainerNativeComponent.ts +9 -0
  164. package/src/fabric/ScreenStackHeaderConfigNativeComponent.ts +43 -0
  165. package/src/fabric/ScreenStackHeaderSubviewNativeComponent.ts +20 -0
  166. package/src/fabric/ScreenStackNativeComponent.ts +12 -0
  167. package/src/fabric/SearchBarNativeComponent.ts +73 -0
  168. package/src/index.native.tsx +107 -14
  169. package/src/index.tsx +4 -3
  170. package/src/native-stack/navigators/createNativeStackNavigator.tsx +23 -19
  171. package/src/native-stack/types.tsx +55 -0
  172. package/src/native-stack/views/FontProcessor.tsx +1 -0
  173. package/src/native-stack/views/HeaderConfig.tsx +3 -1
  174. package/src/native-stack/views/NativeStackView.tsx +14 -2
  175. package/src/types.tsx +84 -2
  176. package/createNativeStackNavigator/README.md +0 -522
  177. package/createNativeStackNavigator/package.json +0 -6
  178. package/lib/commonjs/createNativeStackNavigator.js +0 -374
  179. package/lib/commonjs/createNativeStackNavigator.js.map +0 -1
  180. package/lib/module/createNativeStackNavigator.js +0 -366
  181. package/lib/module/createNativeStackNavigator.js.map +0 -1
  182. package/lib/typescript/createNativeStackNavigator.d.ts +0 -51
  183. package/src/createNativeStackNavigator.tsx +0 -594
  184. package/src/fabric/FullWindowOverlayNativeComponent.js +0 -19
  185. package/src/fabric/ScreenContainerNativeComponent.js +0 -19
  186. package/src/fabric/ScreenNativeComponent.js +0 -97
  187. package/src/fabric/ScreenNavigationContainerNativeComponent.js +0 -19
  188. package/src/fabric/ScreenStackHeaderConfigNativeComponent.js +0 -54
  189. package/src/fabric/ScreenStackHeaderSubviewNativeComponent.js +0 -31
  190. package/src/fabric/ScreenStackNativeComponent.js +0 -23
  191. package/src/fabric/SearchBarNativeComponent.js +0 -62
  192. /package/android/src/main/res/{anim → base/anim}/rns_default_enter_in.xml +0 -0
  193. /package/android/src/main/res/{anim → base/anim}/rns_default_enter_out.xml +0 -0
  194. /package/android/src/main/res/{anim → base/anim}/rns_default_exit_in.xml +0 -0
  195. /package/android/src/main/res/{anim → base/anim}/rns_default_exit_out.xml +0 -0
  196. /package/android/src/main/res/{anim → base/anim}/rns_fade_from_bottom.xml +0 -0
  197. /package/android/src/main/res/{anim → base/anim}/rns_fade_in.xml +0 -0
  198. /package/android/src/main/res/{anim → base/anim}/rns_fade_out.xml +0 -0
  199. /package/android/src/main/res/{anim → base/anim}/rns_fade_to_bottom.xml +0 -0
  200. /package/android/src/main/res/{anim → base/anim}/rns_no_animation_20.xml +0 -0
  201. /package/android/src/main/res/{anim → base/anim}/rns_no_animation_250.xml +0 -0
  202. /package/android/src/main/res/{anim → base/anim}/rns_no_animation_350.xml +0 -0
  203. /package/android/src/main/res/{anim → base/anim}/rns_no_animation_medium.xml +0 -0
  204. /package/android/src/main/res/{anim → base/anim}/rns_slide_in_from_bottom.xml +0 -0
  205. /package/android/src/main/res/{anim → base/anim}/rns_slide_in_from_left.xml +0 -0
  206. /package/android/src/main/res/{anim → base/anim}/rns_slide_in_from_right.xml +0 -0
  207. /package/android/src/main/res/{anim → base/anim}/rns_slide_out_to_bottom.xml +0 -0
  208. /package/android/src/main/res/{anim → base/anim}/rns_slide_out_to_left.xml +0 -0
  209. /package/android/src/main/res/{anim → base/anim}/rns_slide_out_to_right.xml +0 -0
@@ -1,374 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
- var _react = _interopRequireDefault(require("react"));
8
- var _reactNative = require("react-native");
9
- var _reactNativeScreens = require("react-native-screens");
10
- var _reactNavigation = require("react-navigation");
11
- var _reactNavigationStack = require("react-navigation-stack");
12
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
- function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
14
- const REMOVE_ACTION = 'NativeStackNavigator/REMOVE';
15
- const isAndroid = _reactNative.Platform.OS === 'android';
16
- let didWarn = isAndroid;
17
- function renderComponentOrThunk(componentOrThunk, props) {
18
- if (typeof componentOrThunk === 'function') {
19
- return componentOrThunk(props);
20
- }
21
- return componentOrThunk;
22
- }
23
- function removeScene(route, dismissCount, navigation) {
24
- navigation.dispatch({
25
- // @ts-ignore special navigation action for native stack
26
- type: REMOVE_ACTION,
27
- immediate: true,
28
- key: route.key,
29
- dismissCount
30
- });
31
- }
32
- function onAppear(route, descriptor, navigation) {
33
- var _descriptor$options, _descriptor$options$o;
34
- (_descriptor$options = descriptor.options) === null || _descriptor$options === void 0 ? void 0 : (_descriptor$options$o = _descriptor$options.onAppear) === null || _descriptor$options$o === void 0 ? void 0 : _descriptor$options$o.call(_descriptor$options);
35
- navigation.dispatch(_reactNavigation.StackActions.completeTransition({
36
- toChildKey: route.key,
37
- key: navigation.state.key
38
- }));
39
- }
40
- function onFinishTransitioning(navigation) {
41
- const {
42
- routes
43
- } = navigation.state;
44
- const lastRoute = (routes === null || routes === void 0 ? void 0 : routes.length) && routes[routes.length - 1];
45
- if (lastRoute) {
46
- navigation.dispatch(_reactNavigation.StackActions.completeTransition({
47
- toChildKey: lastRoute.key,
48
- key: navigation.state.key
49
- }));
50
- }
51
- }
52
- function renderHeaderConfig(index, route, descriptor, navigationConfig) {
53
- const {
54
- options
55
- } = descriptor;
56
- const {
57
- headerMode
58
- } = navigationConfig;
59
- const {
60
- backButtonInCustomView,
61
- direction,
62
- disableBackButtonMenu,
63
- headerBackTitle,
64
- headerBackTitleStyle,
65
- headerBackTitleVisible,
66
- headerHideBackButton,
67
- headerHideShadow,
68
- headerLargeStyle,
69
- headerLargeTitle,
70
- headerLargeTitleHideShadow,
71
- headerLargeTitleStyle,
72
- headerShown,
73
- headerStyle,
74
- headerTintColor,
75
- headerTitleStyle,
76
- headerTopInsetEnabled = true,
77
- headerTranslucent,
78
- hideShadow,
79
- largeTitle,
80
- largeTitleHideShadow,
81
- title,
82
- translucent
83
- } = options;
84
- const scene = {
85
- index,
86
- key: route.key,
87
- route,
88
- descriptor
89
- };
90
- const headerOptions = {
91
- backButtonInCustomView,
92
- backTitle: headerBackTitleVisible === false ? '' : headerBackTitle,
93
- backTitleFontFamily: headerBackTitleStyle === null || headerBackTitleStyle === void 0 ? void 0 : headerBackTitleStyle.fontFamily,
94
- backTitleFontSize: headerBackTitleStyle === null || headerBackTitleStyle === void 0 ? void 0 : headerBackTitleStyle.fontSize,
95
- color: headerTintColor,
96
- direction,
97
- disableBackButtonMenu,
98
- topInsetEnabled: headerTopInsetEnabled,
99
- hideBackButton: headerHideBackButton,
100
- hideShadow: headerHideShadow || hideShadow,
101
- largeTitle: headerLargeTitle || largeTitle,
102
- largeTitleBackgroundColor: (headerLargeStyle === null || headerLargeStyle === void 0 ? void 0 : headerLargeStyle.backgroundColor) || ( // @ts-ignore old implementation, will not be present in TS API, but can be used here
103
- headerLargeTitleStyle === null || headerLargeTitleStyle === void 0 ? void 0 : headerLargeTitleStyle.backgroundColor),
104
- largeTitleColor: headerLargeTitleStyle === null || headerLargeTitleStyle === void 0 ? void 0 : headerLargeTitleStyle.color,
105
- largeTitleFontFamily: headerLargeTitleStyle === null || headerLargeTitleStyle === void 0 ? void 0 : headerLargeTitleStyle.fontFamily,
106
- largeTitleFontSize: headerLargeTitleStyle === null || headerLargeTitleStyle === void 0 ? void 0 : headerLargeTitleStyle.fontSize,
107
- largeTitleFontWeight: headerLargeTitleStyle === null || headerLargeTitleStyle === void 0 ? void 0 : headerLargeTitleStyle.fontWeight,
108
- largeTitleHideShadow: largeTitleHideShadow || headerLargeTitleHideShadow,
109
- title,
110
- titleColor: (headerTitleStyle === null || headerTitleStyle === void 0 ? void 0 : headerTitleStyle.color) || headerTintColor,
111
- titleFontFamily: headerTitleStyle === null || headerTitleStyle === void 0 ? void 0 : headerTitleStyle.fontFamily,
112
- titleFontSize: headerTitleStyle === null || headerTitleStyle === void 0 ? void 0 : headerTitleStyle.fontSize,
113
- titleFontWeight: headerTitleStyle === null || headerTitleStyle === void 0 ? void 0 : headerTitleStyle.fontWeight,
114
- translucent: headerTranslucent || translucent || false
115
- };
116
- const hasHeader = headerShown !== false && headerMode !== 'none' && options.header !== null;
117
- if (!hasHeader) {
118
- return /*#__PURE__*/_react.default.createElement(_reactNativeScreens.ScreenStackHeaderConfig, _extends({}, headerOptions, {
119
- hidden: true
120
- }));
121
- }
122
- if (headerStyle !== undefined) {
123
- headerOptions.backgroundColor = headerStyle.backgroundColor;
124
- headerOptions.blurEffect = headerStyle.blurEffect;
125
- }
126
- const children = [];
127
- if (options.backButtonImage) {
128
- children.push( /*#__PURE__*/_react.default.createElement(_reactNativeScreens.ScreenStackHeaderBackButtonImage, {
129
- key: "backImage",
130
- source: options.backButtonImage
131
- }));
132
- }
133
- if (_reactNative.Platform.OS === 'ios' && options.searchBar) {
134
- children.push( /*#__PURE__*/_react.default.createElement(_reactNativeScreens.ScreenStackHeaderSearchBarView, null, /*#__PURE__*/_react.default.createElement(_reactNativeScreens.SearchBar, options.searchBar)));
135
- }
136
- if (options.headerLeft !== undefined) {
137
- children.push( /*#__PURE__*/_react.default.createElement(_reactNativeScreens.ScreenStackHeaderLeftView, {
138
- key: "left"
139
- }, renderComponentOrThunk(options.headerLeft, {
140
- scene
141
- })));
142
- } else if (options.headerBackImage !== undefined) {
143
- const goBack = () => {
144
- // Go back on next tick because button ripple effect needs to happen on Android
145
- requestAnimationFrame(() => {
146
- descriptor.navigation.goBack(descriptor.key);
147
- });
148
- };
149
- children.push( /*#__PURE__*/_react.default.createElement(_reactNativeScreens.ScreenStackHeaderLeftView, {
150
- key: "left"
151
- }, /*#__PURE__*/_react.default.createElement(_reactNavigationStack.HeaderBackButton, {
152
- onPress: goBack,
153
- pressColorAndroid: options.headerPressColorAndroid,
154
- tintColor: options.headerTintColor,
155
- backImage: options.headerBackImage,
156
- label: options.backButtonTitle,
157
- truncatedLabel: options.truncatedBackButtonTitle,
158
- labelVisible: options.backTitleVisible,
159
- labelStyle: options.headerBackTitleStyle,
160
- titleLayout: options.layoutPreset
161
- // @ts-ignore old props kept for very old version of `react-navigation-stack`
162
- ,
163
- title: options.backButtonTitle,
164
- truncatedTitle: options.truncatedBackButtonTitle,
165
- backTitleVisible: options.backTitleVisible,
166
- titleStyle: options.headerBackTitleStyle,
167
- layoutPreset: options.layoutPreset,
168
- scene: scene
169
- })));
170
- }
171
- if (options.headerTitle) {
172
- if (title === undefined && typeof options.headerTitle === 'string') {
173
- headerOptions.title = options.headerTitle;
174
- } else {
175
- children.push( /*#__PURE__*/_react.default.createElement(_reactNativeScreens.ScreenStackHeaderCenterView, {
176
- key: "center"
177
- }, renderComponentOrThunk(options.headerTitle, {
178
- scene
179
- })));
180
- }
181
- }
182
- if (options.headerRight) {
183
- children.push( /*#__PURE__*/_react.default.createElement(_reactNativeScreens.ScreenStackHeaderRightView, {
184
- key: "right"
185
- }, renderComponentOrThunk(options.headerRight, {
186
- scene
187
- })));
188
- }
189
- if (children.length > 0) {
190
- headerOptions.children = children;
191
- }
192
- return /*#__PURE__*/_react.default.createElement(_reactNativeScreens.ScreenStackHeaderConfig, headerOptions);
193
- }
194
- const MaybeNestedStack = _ref => {
195
- let {
196
- isHeaderInModal,
197
- screenProps,
198
- route,
199
- navigation,
200
- SceneComponent,
201
- index,
202
- descriptor,
203
- navigationConfig
204
- } = _ref;
205
- const Screen = _react.default.useContext(_reactNativeScreens.ScreenContext);
206
- if (isHeaderInModal) {
207
- return /*#__PURE__*/_react.default.createElement(_reactNativeScreens.ScreenStack, {
208
- style: styles.scenes
209
- }, /*#__PURE__*/_react.default.createElement(Screen, {
210
- style: _reactNative.StyleSheet.absoluteFill,
211
- enabled: true,
212
- isNativeStack: true
213
- }, renderHeaderConfig(index, route, descriptor, navigationConfig), /*#__PURE__*/_react.default.createElement(_reactNavigation.SceneView, {
214
- screenProps: screenProps,
215
- navigation: navigation,
216
- component: SceneComponent
217
- })));
218
- }
219
- return /*#__PURE__*/_react.default.createElement(_reactNavigation.SceneView, {
220
- screenProps: screenProps,
221
- navigation: navigation,
222
- component: SceneComponent
223
- });
224
- };
225
- function StackView(_ref2) {
226
- let {
227
- navigation,
228
- descriptors,
229
- navigationConfig,
230
- screenProps
231
- } = _ref2;
232
- const {
233
- routes
234
- } = navigation.state;
235
- const Screen = _react.default.useContext(_reactNativeScreens.ScreenContext);
236
- return /*#__PURE__*/_react.default.createElement(_reactNativeScreens.ScreenStack, {
237
- style: styles.scenes,
238
- onFinishTransitioning: () => onFinishTransitioning(navigation)
239
- }, routes.map((route, index) => {
240
- const descriptor = descriptors[route.key];
241
- const {
242
- getComponent,
243
- options
244
- } = descriptor;
245
- const routeNavigationProp = descriptor.navigation;
246
- const {
247
- mode,
248
- transparentCard
249
- } = navigationConfig;
250
- const SceneComponent = getComponent();
251
- let stackPresentation = 'push';
252
- if (options.stackPresentation) {
253
- stackPresentation = options.stackPresentation;
254
- } else {
255
- // this shouldn't be used because we have a prop for that
256
- if (mode === 'modal' || mode === 'containedModal') {
257
- stackPresentation = mode;
258
- if (transparentCard || options.cardTransparent) {
259
- stackPresentation = mode === 'containedModal' ? 'containedTransparentModal' : 'transparentModal';
260
- }
261
- }
262
- }
263
- let stackAnimation = options.stackAnimation;
264
- if (options.animationEnabled === false) {
265
- stackAnimation = 'none';
266
- }
267
- const hasHeader = options.headerShown !== false && (navigationConfig === null || navigationConfig === void 0 ? void 0 : navigationConfig.headerMode) !== 'none' && options.header !== null;
268
- if (!didWarn && stackPresentation !== 'push' && options.headerShown !== undefined) {
269
- didWarn = true;
270
- console.warn('Be aware that changing the visibility of header in modal on iOS will result in resetting the state of the screen.');
271
- }
272
- const isHeaderInModal = isAndroid ? false : stackPresentation !== 'push' && hasHeader && options.headerShown === true;
273
- const isHeaderInPush = isAndroid ? hasHeader : stackPresentation === 'push' && hasHeader;
274
- return /*#__PURE__*/_react.default.createElement(Screen, {
275
- key: `screen_${route.key}`,
276
- enabled: true,
277
- isNativeStack: true,
278
- style: [_reactNative.StyleSheet.absoluteFill, options.cardStyle],
279
- stackAnimation: stackAnimation,
280
- customAnimationOnSwipe: options.customAnimationOnSwipe,
281
- stackPresentation: stackPresentation,
282
- replaceAnimation: options.replaceAnimation === undefined ? 'pop' : options.replaceAnimation,
283
- pointerEvents: index === navigation.state.routes.length - 1 ? 'auto' : 'none',
284
- gestureEnabled: _reactNative.Platform.OS === 'android' ? false : options.gestureEnabled === undefined ? true : options.gestureEnabled,
285
- nativeBackButtonDismissalEnabled: options.nativeBackButtonDismissalEnabled,
286
- fullScreenSwipeEnabled: options.fullScreenSwipeEnabled,
287
- screenOrientation: options.screenOrientation,
288
- statusBarAnimation: options.statusBarAnimation,
289
- statusBarColor: options.statusBarColor,
290
- statusBarHidden: options.statusBarHidden,
291
- statusBarStyle: options.statusBarStyle,
292
- statusBarTranslucent: options.statusBarTranslucent,
293
- onAppear: () => onAppear(route, descriptor, routeNavigationProp),
294
- onWillAppear: () => {
295
- var _options$onWillAppear;
296
- return options === null || options === void 0 ? void 0 : (_options$onWillAppear = options.onWillAppear) === null || _options$onWillAppear === void 0 ? void 0 : _options$onWillAppear.call(options);
297
- },
298
- onWillDisappear: () => {
299
- var _options$onWillDisapp;
300
- return options === null || options === void 0 ? void 0 : (_options$onWillDisapp = options.onWillDisappear) === null || _options$onWillDisapp === void 0 ? void 0 : _options$onWillDisapp.call(options);
301
- },
302
- onDisappear: () => {
303
- var _options$onDisappear;
304
- return options === null || options === void 0 ? void 0 : (_options$onDisappear = options.onDisappear) === null || _options$onDisappear === void 0 ? void 0 : _options$onDisappear.call(options);
305
- },
306
- onHeaderBackButtonClicked: () => removeScene(route, 1, routeNavigationProp),
307
- onDismissed: e => removeScene(route, e.nativeEvent.dismissCount, routeNavigationProp)
308
- }, isHeaderInPush && renderHeaderConfig(index, route, descriptor, navigationConfig), /*#__PURE__*/_react.default.createElement(MaybeNestedStack, {
309
- isHeaderInModal: isHeaderInModal,
310
- screenProps: screenProps,
311
- route: route,
312
- navigation: routeNavigationProp,
313
- SceneComponent: SceneComponent,
314
- index: index,
315
- descriptor: descriptor,
316
- navigationConfig: navigationConfig
317
- }));
318
- }));
319
- }
320
- const styles = _reactNative.StyleSheet.create({
321
- scenes: {
322
- flex: 1
323
- }
324
- });
325
- function createStackNavigator(routeConfigMap) {
326
- let stackConfig = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
327
- const router = (0, _reactNavigation.StackRouter)(routeConfigMap, stackConfig);
328
-
329
- // below we override getStateForAction method in order to add handling for
330
- // a custom native stack navigation action. The action REMOVE that we want to
331
- // add works in a similar way to POP, but it does not remove all the routes
332
- // that sit on top of the removed route. For example if we have three routes
333
- // [a,b,c] and call POP on b, then both b and c will go away. In case we
334
- // call REMOVE on b, only b will be removed from the stack and the resulting
335
- // state will be [a, c]
336
- const superGetStateForAction = router.getStateForAction;
337
- router.getStateForAction = (action, state) => {
338
- if (action.type === REMOVE_ACTION) {
339
- const {
340
- key,
341
- immediate,
342
- dismissCount
343
- } = action;
344
- let backRouteIndex = state.index;
345
- if (key) {
346
- const backRoute = state.routes.find(route => route.key === key);
347
- backRouteIndex = state.routes.indexOf(backRoute);
348
- }
349
- if (backRouteIndex > 0) {
350
- const newRoutes = [...state.routes];
351
- if (dismissCount > 1) {
352
- // when dismissing with iOS 14 native header back button, we can pop more than 1 screen at a time
353
- // and the `backRouteIndex` is the index of the previous screen. Since we are starting already
354
- // on the previous screen, we add 1 to start.
355
- newRoutes.splice(backRouteIndex - dismissCount + 1, dismissCount);
356
- } else {
357
- newRoutes.splice(backRouteIndex, 1);
358
- }
359
- return {
360
- ...state,
361
- routes: newRoutes,
362
- index: newRoutes.length - 1,
363
- isTransitioning: immediate !== true
364
- };
365
- }
366
- }
367
- return superGetStateForAction(action, state);
368
- };
369
- // Create a navigator with StackView as the view
370
- return (0, _reactNavigation.createNavigator)(StackView, router, stackConfig);
371
- }
372
- var _default = createStackNavigator;
373
- exports.default = _default;
374
- //# sourceMappingURL=createNativeStackNavigator.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["REMOVE_ACTION","isAndroid","Platform","OS","didWarn","renderComponentOrThunk","componentOrThunk","props","removeScene","route","dismissCount","navigation","dispatch","type","immediate","key","onAppear","descriptor","options","StackActions","completeTransition","toChildKey","state","onFinishTransitioning","routes","lastRoute","length","renderHeaderConfig","index","navigationConfig","headerMode","backButtonInCustomView","direction","disableBackButtonMenu","headerBackTitle","headerBackTitleStyle","headerBackTitleVisible","headerHideBackButton","headerHideShadow","headerLargeStyle","headerLargeTitle","headerLargeTitleHideShadow","headerLargeTitleStyle","headerShown","headerStyle","headerTintColor","headerTitleStyle","headerTopInsetEnabled","headerTranslucent","hideShadow","largeTitle","largeTitleHideShadow","title","translucent","scene","headerOptions","backTitle","backTitleFontFamily","fontFamily","backTitleFontSize","fontSize","color","topInsetEnabled","hideBackButton","largeTitleBackgroundColor","backgroundColor","largeTitleColor","largeTitleFontFamily","largeTitleFontSize","largeTitleFontWeight","fontWeight","titleColor","titleFontFamily","titleFontSize","titleFontWeight","hasHeader","header","undefined","blurEffect","children","backButtonImage","push","searchBar","headerLeft","headerBackImage","goBack","requestAnimationFrame","headerPressColorAndroid","backButtonTitle","truncatedBackButtonTitle","backTitleVisible","layoutPreset","headerTitle","headerRight","MaybeNestedStack","isHeaderInModal","screenProps","SceneComponent","Screen","React","useContext","ScreenContext","styles","scenes","StyleSheet","absoluteFill","StackView","descriptors","map","getComponent","routeNavigationProp","mode","transparentCard","stackPresentation","cardTransparent","stackAnimation","animationEnabled","console","warn","isHeaderInPush","cardStyle","customAnimationOnSwipe","replaceAnimation","gestureEnabled","nativeBackButtonDismissalEnabled","fullScreenSwipeEnabled","screenOrientation","statusBarAnimation","statusBarColor","statusBarHidden","statusBarStyle","statusBarTranslucent","onWillAppear","onWillDisappear","onDisappear","e","nativeEvent","create","flex","createStackNavigator","routeConfigMap","stackConfig","router","StackRouter","superGetStateForAction","getStateForAction","action","backRouteIndex","backRoute","find","indexOf","newRoutes","splice","isTransitioning","createNavigator"],"sources":["createNativeStackNavigator.tsx"],"sourcesContent":["import React from 'react';\nimport {\n Platform,\n StyleSheet,\n Animated,\n StyleProp,\n TextStyle,\n ViewStyle,\n} from 'react-native';\nimport {\n ScreenContext,\n ScreenStack,\n ScreenStackHeaderBackButtonImage,\n ScreenStackHeaderCenterView,\n ScreenStackHeaderConfig,\n ScreenStackHeaderConfigProps,\n ScreenStackHeaderLeftView,\n ScreenStackHeaderRightView,\n ScreenStackHeaderSearchBarView,\n SearchBar,\n StackPresentationTypes,\n} from 'react-native-screens';\nimport {\n createNavigator,\n SceneView,\n StackActions,\n StackRouter,\n NavigationRouteConfigMap,\n CreateNavigatorConfig,\n NavigationStackRouterConfig,\n NavigationParams,\n NavigationRoute,\n NavigationDescriptor,\n NavigationState,\n NavigationNavigator,\n NavigationAction,\n NavigationProp,\n NavigationScreenProp,\n} from 'react-navigation';\nimport { NativeStackNavigationOptions as NativeStackNavigationOptionsV5 } from './native-stack/types';\nimport { HeaderBackButton } from 'react-navigation-stack';\nimport {\n StackNavigationHelpers,\n StackNavigationProp,\n Layout,\n} from 'react-navigation-stack/src/vendor/types';\n\nconst REMOVE_ACTION = 'NativeStackNavigator/REMOVE';\n\nconst isAndroid = Platform.OS === 'android';\n\nlet didWarn = isAndroid;\n\nfunction renderComponentOrThunk(componentOrThunk: unknown, props: unknown) {\n if (typeof componentOrThunk === 'function') {\n return componentOrThunk(props);\n }\n return componentOrThunk;\n}\n\ntype NativeStackRemoveNavigationAction = {\n type: typeof REMOVE_ACTION;\n immediate: boolean;\n dismissCount: number;\n key?: string;\n};\n\nexport type NativeStackNavigationProp = StackNavigationProp;\n\nexport type NativeStackNavigationOptions = StackNavigatorOptions &\n NativeStackNavigationOptionsV5 &\n BackButtonProps & {\n onWillAppear?: () => void;\n onAppear?: () => void;\n onWillDisappear?: () => void;\n onDisappear?: () => void;\n // these props differ from the ones used in v5 `native-stack`, and we would like to keep the API consistent between versions\n /** Use `headerHideShadow` to be consistent with v5 `native-stack` */\n hideShadow?: boolean;\n /** Use `headerLargeTitle` to be consistent with v5 `native-stack` */\n largeTitle?: boolean;\n /** Use `headerLargeTitleHideShadow` to be consistent with v5 `native-stack` */\n largeTitleHideShadow?: boolean;\n /** Use `headerTranslucent` to be consistent with v5 `native-stack` */\n translucent?: boolean;\n };\n\n// these are adopted from `stack` navigator\ntype StackNavigatorOptions = {\n /** This is an option from `stackNavigator` and it hides the header when set to `null`. Use `headerShown` instead to be consistent with v5 `native-stack`. */\n header?: React.ComponentType<Record<string, unknown>> | null;\n /** This is an option from `stackNavigator` and it controls the stack presentation along with `mode` prop. Use `stackPresentation` instead to be consistent with v5 `native-stack` */\n cardTransparent?: boolean;\n /** This is an option from `stackNavigator` and it sets stack animation to none when `false` passed. Use `stackAnimation: 'none'` instead to be consistent with v5 `native-stack` */\n animationEnabled?: boolean;\n cardStyle?: StyleProp<ViewStyle>;\n};\n\n// these are the props used for rendering back button taken from `react-navigation-stack`\ntype BackButtonProps = {\n headerBackImage?: (props: { tintColor: string }) => React.ReactNode;\n headerPressColorAndroid?: string;\n headerTintColor?: string;\n backButtonTitle?: string;\n truncatedBackButtonTitle?: string;\n backTitleVisible?: boolean;\n headerBackTitleStyle?: Animated.WithAnimatedValue<StyleProp<TextStyle>>;\n layoutPreset?: Layout;\n};\n\ntype NativeStackDescriptor = NavigationDescriptor<\n NavigationParams,\n NativeStackNavigationOptions\n>;\n\ntype NativeStackDescriptorMap = {\n [key: string]: NativeStackDescriptor;\n};\n\n// these are the props used for rendering back button taken from `react-navigation-stack`\ntype NativeStackNavigationConfig = {\n /** This is an option from `stackNavigator` and controls the stack presentation along with `cardTransparent` prop. Use `stackPresentation` instead to be consistent with v5 `native-stack` */\n mode?: 'modal' | 'containedModal';\n /** This is an option from `stackNavigator` and makes the header hide when set to `none`. Use `headerShown` instead to be consistent with v5 `native-stack` */\n headerMode?: 'none';\n /** This is an option from `stackNavigator` and controls the stack presentation along with `mode` prop. Use `stackPresentation` instead to be consistent with v5 `native-stack` */\n transparentCard?: boolean;\n};\n\nfunction removeScene(\n route: NavigationRoute<NavigationParams>,\n dismissCount: number,\n navigation: StackNavigationHelpers\n) {\n navigation.dispatch({\n // @ts-ignore special navigation action for native stack\n type: REMOVE_ACTION,\n immediate: true,\n key: route.key,\n dismissCount,\n });\n}\n\nfunction onAppear(\n route: NavigationRoute<NavigationParams>,\n descriptor: NativeStackDescriptor,\n navigation: StackNavigationHelpers\n) {\n descriptor.options?.onAppear?.();\n navigation.dispatch(\n StackActions.completeTransition({\n toChildKey: route.key,\n key: navigation.state.key,\n })\n );\n}\n\nfunction onFinishTransitioning(navigation: StackNavigationHelpers) {\n const { routes } = navigation.state;\n const lastRoute = routes?.length && routes[routes.length - 1];\n\n if (lastRoute) {\n navigation.dispatch(\n StackActions.completeTransition({\n toChildKey: lastRoute.key,\n key: navigation.state.key,\n })\n );\n }\n}\n\nfunction renderHeaderConfig(\n index: number,\n route: NavigationRoute<NavigationParams>,\n descriptor: NativeStackDescriptor,\n navigationConfig: NativeStackNavigationConfig\n) {\n const { options } = descriptor;\n const { headerMode } = navigationConfig;\n\n const {\n backButtonInCustomView,\n direction,\n disableBackButtonMenu,\n headerBackTitle,\n headerBackTitleStyle,\n headerBackTitleVisible,\n headerHideBackButton,\n headerHideShadow,\n headerLargeStyle,\n headerLargeTitle,\n headerLargeTitleHideShadow,\n headerLargeTitleStyle,\n headerShown,\n headerStyle,\n headerTintColor,\n headerTitleStyle,\n headerTopInsetEnabled = true,\n headerTranslucent,\n hideShadow,\n largeTitle,\n largeTitleHideShadow,\n title,\n translucent,\n } = options;\n\n const scene = {\n index,\n key: route.key,\n route,\n descriptor,\n };\n\n const headerOptions: ScreenStackHeaderConfigProps = {\n backButtonInCustomView,\n backTitle: headerBackTitleVisible === false ? '' : headerBackTitle,\n backTitleFontFamily: headerBackTitleStyle?.fontFamily,\n backTitleFontSize: headerBackTitleStyle?.fontSize,\n color: headerTintColor,\n direction,\n disableBackButtonMenu,\n topInsetEnabled: headerTopInsetEnabled,\n hideBackButton: headerHideBackButton,\n hideShadow: headerHideShadow || hideShadow,\n largeTitle: headerLargeTitle || largeTitle,\n largeTitleBackgroundColor:\n headerLargeStyle?.backgroundColor ||\n // @ts-ignore old implementation, will not be present in TS API, but can be used here\n headerLargeTitleStyle?.backgroundColor,\n largeTitleColor: headerLargeTitleStyle?.color,\n largeTitleFontFamily: headerLargeTitleStyle?.fontFamily,\n largeTitleFontSize: headerLargeTitleStyle?.fontSize,\n largeTitleFontWeight: headerLargeTitleStyle?.fontWeight,\n largeTitleHideShadow: largeTitleHideShadow || headerLargeTitleHideShadow,\n title,\n titleColor: headerTitleStyle?.color || headerTintColor,\n titleFontFamily: headerTitleStyle?.fontFamily,\n titleFontSize: headerTitleStyle?.fontSize,\n titleFontWeight: headerTitleStyle?.fontWeight,\n translucent: headerTranslucent || translucent || false,\n };\n\n const hasHeader =\n headerShown !== false && headerMode !== 'none' && options.header !== null;\n if (!hasHeader) {\n return <ScreenStackHeaderConfig {...headerOptions} hidden />;\n }\n\n if (headerStyle !== undefined) {\n headerOptions.backgroundColor = headerStyle.backgroundColor;\n headerOptions.blurEffect = headerStyle.blurEffect;\n }\n\n const children = [];\n\n if (options.backButtonImage) {\n children.push(\n <ScreenStackHeaderBackButtonImage\n key=\"backImage\"\n source={options.backButtonImage}\n />\n );\n }\n\n if (Platform.OS === 'ios' && options.searchBar) {\n children.push(\n <ScreenStackHeaderSearchBarView>\n <SearchBar {...options.searchBar} />\n </ScreenStackHeaderSearchBarView>\n );\n }\n\n if (options.headerLeft !== undefined) {\n children.push(\n <ScreenStackHeaderLeftView key=\"left\">\n {renderComponentOrThunk(options.headerLeft, { scene })}\n </ScreenStackHeaderLeftView>\n );\n } else if (options.headerBackImage !== undefined) {\n const goBack = () => {\n // Go back on next tick because button ripple effect needs to happen on Android\n requestAnimationFrame(() => {\n descriptor.navigation.goBack(descriptor.key);\n });\n };\n\n children.push(\n <ScreenStackHeaderLeftView key=\"left\">\n <HeaderBackButton\n onPress={goBack}\n pressColorAndroid={options.headerPressColorAndroid}\n tintColor={options.headerTintColor}\n backImage={options.headerBackImage}\n label={options.backButtonTitle}\n truncatedLabel={options.truncatedBackButtonTitle}\n labelVisible={options.backTitleVisible}\n labelStyle={options.headerBackTitleStyle}\n titleLayout={options.layoutPreset}\n // @ts-ignore old props kept for very old version of `react-navigation-stack`\n title={options.backButtonTitle}\n truncatedTitle={options.truncatedBackButtonTitle}\n backTitleVisible={options.backTitleVisible}\n titleStyle={options.headerBackTitleStyle}\n layoutPreset={options.layoutPreset}\n scene={scene}\n />\n </ScreenStackHeaderLeftView>\n );\n }\n\n if (options.headerTitle) {\n if (title === undefined && typeof options.headerTitle === 'string') {\n headerOptions.title = options.headerTitle;\n } else {\n children.push(\n <ScreenStackHeaderCenterView key=\"center\">\n {renderComponentOrThunk(options.headerTitle, { scene })}\n </ScreenStackHeaderCenterView>\n );\n }\n }\n\n if (options.headerRight) {\n children.push(\n <ScreenStackHeaderRightView key=\"right\">\n {renderComponentOrThunk(options.headerRight, { scene })}\n </ScreenStackHeaderRightView>\n );\n }\n\n if (children.length > 0) {\n headerOptions.children = children;\n }\n\n return <ScreenStackHeaderConfig {...headerOptions} />;\n}\n\nconst MaybeNestedStack = ({\n isHeaderInModal,\n screenProps,\n route,\n navigation,\n SceneComponent,\n index,\n descriptor,\n navigationConfig,\n}: {\n isHeaderInModal: boolean;\n screenProps: unknown;\n route: NavigationRoute<NavigationParams>;\n navigation: NavigationScreenProp<\n NavigationRoute<NavigationParams>,\n NavigationParams\n >;\n SceneComponent: React.ComponentType<Record<string, unknown>>;\n index: number;\n descriptor: NativeStackDescriptor;\n navigationConfig: NativeStackNavigationConfig;\n}) => {\n const Screen = React.useContext(ScreenContext);\n\n if (isHeaderInModal) {\n return (\n <ScreenStack style={styles.scenes}>\n <Screen style={StyleSheet.absoluteFill} enabled isNativeStack>\n {renderHeaderConfig(index, route, descriptor, navigationConfig)}\n <SceneView\n screenProps={screenProps}\n navigation={navigation}\n component={SceneComponent}\n />\n </Screen>\n </ScreenStack>\n );\n }\n return (\n <SceneView\n screenProps={screenProps}\n navigation={navigation}\n component={SceneComponent}\n />\n );\n};\n\ntype StackViewProps = {\n navigation: StackNavigationHelpers;\n descriptors: NativeStackDescriptorMap;\n navigationConfig: NativeStackNavigationConfig;\n screenProps: unknown;\n};\n\nfunction StackView({\n navigation,\n descriptors,\n navigationConfig,\n screenProps,\n}: StackViewProps) {\n const { routes } = navigation.state;\n const Screen = React.useContext(ScreenContext);\n return (\n <ScreenStack\n style={styles.scenes}\n onFinishTransitioning={() => onFinishTransitioning(navigation)}\n >\n {routes.map((route, index) => {\n const descriptor = descriptors[route.key];\n const { getComponent, options } = descriptor;\n const routeNavigationProp = descriptor.navigation;\n const { mode, transparentCard } = navigationConfig;\n const SceneComponent = getComponent();\n\n let stackPresentation: StackPresentationTypes = 'push';\n\n if (options.stackPresentation) {\n stackPresentation = options.stackPresentation;\n } else {\n // this shouldn't be used because we have a prop for that\n if (mode === 'modal' || mode === 'containedModal') {\n stackPresentation = mode;\n if (transparentCard || options.cardTransparent) {\n stackPresentation =\n mode === 'containedModal'\n ? 'containedTransparentModal'\n : 'transparentModal';\n }\n }\n }\n let stackAnimation = options.stackAnimation;\n if (options.animationEnabled === false) {\n stackAnimation = 'none';\n }\n\n const hasHeader =\n options.headerShown !== false &&\n navigationConfig?.headerMode !== 'none' &&\n options.header !== null;\n\n if (\n !didWarn &&\n stackPresentation !== 'push' &&\n options.headerShown !== undefined\n ) {\n didWarn = true;\n console.warn(\n 'Be aware that changing the visibility of header in modal on iOS will result in resetting the state of the screen.'\n );\n }\n\n const isHeaderInModal = isAndroid\n ? false\n : stackPresentation !== 'push' &&\n hasHeader &&\n options.headerShown === true;\n const isHeaderInPush = isAndroid\n ? hasHeader\n : stackPresentation === 'push' && hasHeader;\n\n return (\n <Screen\n key={`screen_${route.key}`}\n enabled\n isNativeStack\n style={[StyleSheet.absoluteFill, options.cardStyle]}\n stackAnimation={stackAnimation}\n customAnimationOnSwipe={options.customAnimationOnSwipe}\n stackPresentation={stackPresentation}\n replaceAnimation={\n options.replaceAnimation === undefined\n ? 'pop'\n : options.replaceAnimation\n }\n pointerEvents={\n index === navigation.state.routes.length - 1 ? 'auto' : 'none'\n }\n gestureEnabled={\n Platform.OS === 'android'\n ? false\n : options.gestureEnabled === undefined\n ? true\n : options.gestureEnabled\n }\n nativeBackButtonDismissalEnabled={\n options.nativeBackButtonDismissalEnabled\n }\n fullScreenSwipeEnabled={options.fullScreenSwipeEnabled}\n screenOrientation={options.screenOrientation}\n statusBarAnimation={options.statusBarAnimation}\n statusBarColor={options.statusBarColor}\n statusBarHidden={options.statusBarHidden}\n statusBarStyle={options.statusBarStyle}\n statusBarTranslucent={options.statusBarTranslucent}\n onAppear={() => onAppear(route, descriptor, routeNavigationProp)}\n onWillAppear={() => options?.onWillAppear?.()}\n onWillDisappear={() => options?.onWillDisappear?.()}\n onDisappear={() => options?.onDisappear?.()}\n onHeaderBackButtonClicked={() =>\n removeScene(route, 1, routeNavigationProp)\n }\n onDismissed={(e) =>\n removeScene(\n route,\n e.nativeEvent.dismissCount,\n routeNavigationProp\n )\n }\n >\n {isHeaderInPush &&\n renderHeaderConfig(index, route, descriptor, navigationConfig)}\n <MaybeNestedStack\n isHeaderInModal={isHeaderInModal}\n screenProps={screenProps}\n route={route}\n navigation={routeNavigationProp}\n SceneComponent={SceneComponent}\n index={index}\n descriptor={descriptor}\n navigationConfig={navigationConfig}\n />\n </Screen>\n );\n })}\n </ScreenStack>\n );\n}\n\nconst styles = StyleSheet.create({\n scenes: { flex: 1 },\n});\n\nfunction createStackNavigator(\n routeConfigMap: NavigationRouteConfigMap<\n NativeStackNavigationOptions,\n StackNavigationProp\n >,\n stackConfig: CreateNavigatorConfig<\n NativeStackNavigationConfig,\n NavigationStackRouterConfig,\n NativeStackNavigationOptions,\n StackNavigationProp\n > = {}\n): NavigationNavigator<\n Record<string, unknown>,\n NavigationProp<NavigationState>\n> {\n const router = StackRouter(routeConfigMap, stackConfig);\n\n // below we override getStateForAction method in order to add handling for\n // a custom native stack navigation action. The action REMOVE that we want to\n // add works in a similar way to POP, but it does not remove all the routes\n // that sit on top of the removed route. For example if we have three routes\n // [a,b,c] and call POP on b, then both b and c will go away. In case we\n // call REMOVE on b, only b will be removed from the stack and the resulting\n // state will be [a, c]\n const superGetStateForAction = router.getStateForAction;\n router.getStateForAction = (\n action: NavigationAction | NativeStackRemoveNavigationAction,\n state\n ) => {\n if (action.type === REMOVE_ACTION) {\n const { key, immediate, dismissCount } = action;\n let backRouteIndex = state.index;\n if (key) {\n const backRoute = state.routes.find(\n (route: NavigationRoute<NavigationParams>) => route.key === key\n );\n backRouteIndex = state.routes.indexOf(backRoute);\n }\n\n if (backRouteIndex > 0) {\n const newRoutes = [...state.routes];\n if (dismissCount > 1) {\n // when dismissing with iOS 14 native header back button, we can pop more than 1 screen at a time\n // and the `backRouteIndex` is the index of the previous screen. Since we are starting already\n // on the previous screen, we add 1 to start.\n newRoutes.splice(backRouteIndex - dismissCount + 1, dismissCount);\n } else {\n newRoutes.splice(backRouteIndex, 1);\n }\n\n return {\n ...state,\n routes: newRoutes,\n index: newRoutes.length - 1,\n isTransitioning: immediate !== true,\n };\n }\n }\n return superGetStateForAction(action as NavigationAction, state);\n };\n // Create a navigator with StackView as the view\n return createNavigator(StackView, router, stackConfig);\n}\n\nexport default createStackNavigator;\n"],"mappings":"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"}