@amazon-devices/react-navigation__stack 7.0.1758683737 → 8.0.9000000000

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 (273) hide show
  1. package/SystemBundles/98ca5eeb45684e3e5615c766e1d3a956fee53d14cd6c2318098c23c210bd76d7.bundle +13464 -0
  2. package/SystemBundles/98ca5eeb45684e3e5615c766e1d3a956fee53d14cd6c2318098c23c210bd76d7.map +4638 -0
  3. package/SystemModules/amzn__react-navigation__stack-8.modules.txt +32 -0
  4. package/SystemModules/amzn__react-navigation__stack-8.private.modules.txt +92 -0
  5. package/SystemModules/keplerscript-system-bundle-config.json +4 -4
  6. package/kepler-compatibility.json +2 -4
  7. package/lib/module/TransitionConfigs/CardStyleInterpolators.js +57 -1
  8. package/lib/module/TransitionConfigs/CardStyleInterpolators.js.map +1 -1
  9. package/lib/module/TransitionConfigs/HeaderStyleInterpolators.js +30 -16
  10. package/lib/module/TransitionConfigs/HeaderStyleInterpolators.js.map +1 -1
  11. package/lib/module/TransitionConfigs/TransitionPresets.js +32 -4
  12. package/lib/module/TransitionConfigs/TransitionPresets.js.map +1 -1
  13. package/lib/module/TransitionConfigs/TransitionSpecs.js +32 -2
  14. package/lib/module/TransitionConfigs/TransitionSpecs.js.map +1 -1
  15. package/lib/module/index.js +13 -11
  16. package/lib/module/index.js.map +1 -1
  17. package/lib/module/navigators/createStackNavigator.js +46 -48
  18. package/lib/module/navigators/createStackNavigator.js.map +1 -1
  19. package/lib/module/package.json +1 -0
  20. package/lib/module/types.js +2 -0
  21. package/lib/module/types.js.map +1 -1
  22. package/lib/module/utils/CardAnimationContext.js +3 -1
  23. package/lib/module/utils/CardAnimationContext.js.map +1 -1
  24. package/lib/module/utils/GestureHandlerRefContext.js +3 -1
  25. package/lib/module/utils/GestureHandlerRefContext.js.map +1 -1
  26. package/lib/module/utils/ModalPresentationContext.js +3 -2
  27. package/lib/module/utils/ModalPresentationContext.js.map +1 -1
  28. package/lib/module/utils/conditional.js +3 -1
  29. package/lib/module/utils/conditional.js.map +1 -1
  30. package/lib/module/utils/findLastIndex.js +4 -2
  31. package/lib/module/utils/findLastIndex.js.map +1 -1
  32. package/lib/module/utils/gestureActivationCriteria.js +60 -0
  33. package/lib/module/utils/gestureActivationCriteria.js.map +1 -0
  34. package/lib/module/utils/getDistanceForDirection.js +5 -3
  35. package/lib/module/utils/getDistanceForDirection.js.map +1 -1
  36. package/lib/module/utils/getInvertedMultiplier.js +5 -4
  37. package/lib/module/utils/getInvertedMultiplier.js.map +1 -1
  38. package/lib/module/utils/getModalRoutesKeys.js +12 -0
  39. package/lib/module/utils/getModalRoutesKeys.js.map +1 -0
  40. package/lib/module/utils/getShadowStyle.js +24 -0
  41. package/lib/module/utils/getShadowStyle.js.map +1 -0
  42. package/lib/module/utils/{debounce.js → throttle.js} +5 -4
  43. package/lib/module/utils/throttle.js.map +1 -0
  44. package/lib/module/utils/useCardAnimation.js +4 -2
  45. package/lib/module/utils/useCardAnimation.js.map +1 -1
  46. package/lib/module/utils/useGestureHandlerRef.js +5 -3
  47. package/lib/module/utils/useGestureHandlerRef.js.map +1 -1
  48. package/lib/module/utils/useKeyboardManager.js +8 -6
  49. package/lib/module/utils/useKeyboardManager.js.map +1 -1
  50. package/lib/module/views/GestureHandler.android.js +3 -1
  51. package/lib/module/views/GestureHandler.android.js.map +1 -1
  52. package/lib/module/views/GestureHandler.ios.js +3 -1
  53. package/lib/module/views/GestureHandler.ios.js.map +1 -1
  54. package/lib/module/views/GestureHandler.js +6 -1
  55. package/lib/module/views/GestureHandler.js.map +1 -1
  56. package/lib/module/views/GestureHandler.kepler.js +4 -0
  57. package/lib/module/views/GestureHandler.kepler.js.map +1 -0
  58. package/lib/module/views/GestureHandlerNative.js +13 -9
  59. package/lib/module/views/GestureHandlerNative.js.map +1 -1
  60. package/lib/module/views/Header/Header.js +12 -8
  61. package/lib/module/views/Header/Header.js.map +1 -1
  62. package/lib/module/views/Header/HeaderContainer.js +103 -93
  63. package/lib/module/views/Header/HeaderContainer.js.map +1 -1
  64. package/lib/module/views/Header/HeaderSegment.js +43 -31
  65. package/lib/module/views/Header/HeaderSegment.js.map +1 -1
  66. package/lib/module/views/Screens.js +17 -9
  67. package/lib/module/views/Screens.js.map +1 -1
  68. package/lib/module/views/Stack/Card.js +313 -338
  69. package/lib/module/views/Stack/Card.js.map +1 -1
  70. package/lib/module/views/Stack/CardA11yWrapper.js +43 -0
  71. package/lib/module/views/Stack/CardA11yWrapper.js.map +1 -0
  72. package/lib/module/views/Stack/CardContainer.js +116 -90
  73. package/lib/module/views/Stack/CardContainer.js.map +1 -1
  74. package/lib/module/views/Stack/CardContent.js +74 -0
  75. package/lib/module/views/Stack/CardContent.js.map +1 -0
  76. package/lib/module/views/Stack/CardStack.js +241 -180
  77. package/lib/module/views/Stack/CardStack.js.map +1 -1
  78. package/lib/module/views/Stack/StackView.js +80 -64
  79. package/lib/module/views/Stack/StackView.js.map +1 -1
  80. package/lib/typescript/package.json +1 -0
  81. package/lib/typescript/src/TransitionConfigs/CardStyleInterpolators.d.ts +8 -0
  82. package/lib/typescript/src/TransitionConfigs/CardStyleInterpolators.d.ts.map +1 -1
  83. package/lib/typescript/src/TransitionConfigs/HeaderStyleInterpolators.d.ts +3 -3
  84. package/lib/typescript/src/TransitionConfigs/HeaderStyleInterpolators.d.ts.map +1 -1
  85. package/lib/typescript/src/TransitionConfigs/TransitionPresets.d.ts +8 -0
  86. package/lib/typescript/src/TransitionConfigs/TransitionPresets.d.ts.map +1 -1
  87. package/lib/typescript/src/TransitionConfigs/TransitionSpecs.d.ts +10 -0
  88. package/lib/typescript/src/TransitionConfigs/TransitionSpecs.d.ts.map +1 -1
  89. package/lib/typescript/src/index.d.ts +8 -8
  90. package/lib/typescript/src/index.d.ts.map +1 -1
  91. package/lib/typescript/src/navigators/createStackNavigator.d.ts +15 -7
  92. package/lib/typescript/src/navigators/createStackNavigator.d.ts.map +1 -1
  93. package/lib/typescript/src/types.d.ts +84 -24
  94. package/lib/typescript/src/types.d.ts.map +1 -1
  95. package/lib/typescript/src/utils/CardAnimationContext.d.ts +1 -2
  96. package/lib/typescript/src/utils/CardAnimationContext.d.ts.map +1 -1
  97. package/lib/typescript/src/utils/GestureHandlerRefContext.d.ts +1 -2
  98. package/lib/typescript/src/utils/GestureHandlerRefContext.d.ts.map +1 -1
  99. package/lib/typescript/src/utils/ModalPresentationContext.d.ts +1 -2
  100. package/lib/typescript/src/utils/ModalPresentationContext.d.ts.map +1 -1
  101. package/lib/typescript/src/utils/conditional.d.ts +1 -1
  102. package/lib/typescript/src/utils/conditional.d.ts.map +1 -1
  103. package/lib/typescript/src/utils/findLastIndex.d.ts +1 -1
  104. package/lib/typescript/src/utils/findLastIndex.d.ts.map +1 -1
  105. package/lib/typescript/src/utils/gestureActivationCriteria.d.ts +57 -0
  106. package/lib/typescript/src/utils/gestureActivationCriteria.d.ts.map +1 -0
  107. package/lib/typescript/src/utils/getDistanceForDirection.d.ts +1 -1
  108. package/lib/typescript/src/utils/getDistanceForDirection.d.ts.map +1 -1
  109. package/lib/typescript/src/utils/getInvertedMultiplier.d.ts +1 -1
  110. package/lib/typescript/src/utils/getInvertedMultiplier.d.ts.map +1 -1
  111. package/lib/typescript/src/utils/getModalRoutesKeys.d.ts +4 -0
  112. package/lib/typescript/src/utils/getModalRoutesKeys.d.ts.map +1 -0
  113. package/lib/typescript/src/utils/getShadowStyle.d.ts +27 -0
  114. package/lib/typescript/src/utils/getShadowStyle.d.ts.map +1 -0
  115. package/lib/typescript/src/utils/throttle.d.ts +2 -0
  116. package/lib/typescript/src/utils/throttle.d.ts.map +1 -0
  117. package/lib/typescript/src/utils/useCardAnimation.d.ts +1 -1
  118. package/lib/typescript/src/utils/useCardAnimation.d.ts.map +1 -1
  119. package/lib/typescript/src/utils/useGestureHandlerRef.d.ts +1 -1
  120. package/lib/typescript/src/utils/useGestureHandlerRef.d.ts.map +1 -1
  121. package/lib/typescript/src/utils/useKeyboardManager.d.ts +1 -1
  122. package/lib/typescript/src/utils/useKeyboardManager.d.ts.map +1 -1
  123. package/lib/typescript/src/views/GestureHandler.d.ts +3 -2
  124. package/lib/typescript/src/views/GestureHandler.d.ts.map +1 -1
  125. package/lib/typescript/src/views/GestureHandler.kepler.d.ts +2 -0
  126. package/lib/typescript/src/views/GestureHandler.kepler.d.ts.map +1 -0
  127. package/lib/typescript/src/views/GestureHandlerNative.d.ts +4 -5
  128. package/lib/typescript/src/views/GestureHandlerNative.d.ts.map +1 -1
  129. package/lib/typescript/src/views/Header/Header.d.ts +1 -2
  130. package/lib/typescript/src/views/Header/Header.d.ts.map +1 -1
  131. package/lib/typescript/src/views/Header/HeaderContainer.d.ts +4 -5
  132. package/lib/typescript/src/views/Header/HeaderContainer.d.ts.map +1 -1
  133. package/lib/typescript/src/views/Header/HeaderSegment.d.ts +2 -2
  134. package/lib/typescript/src/views/Header/HeaderSegment.d.ts.map +1 -1
  135. package/lib/typescript/src/views/Screens.d.ts +7 -5
  136. package/lib/typescript/src/views/Screens.d.ts.map +1 -1
  137. package/lib/typescript/src/views/Stack/Card.d.ts +14 -42
  138. package/lib/typescript/src/views/Stack/Card.d.ts.map +1 -1
  139. package/lib/typescript/src/views/Stack/CardA11yWrapper.d.ts +15 -0
  140. package/lib/typescript/src/views/Stack/CardA11yWrapper.d.ts.map +1 -0
  141. package/lib/typescript/src/views/Stack/CardContainer.d.ts +6 -8
  142. package/lib/typescript/src/views/Stack/CardContainer.d.ts.map +1 -1
  143. package/lib/typescript/src/views/Stack/CardContent.d.ts +13 -0
  144. package/lib/typescript/src/views/Stack/CardContent.d.ts.map +1 -0
  145. package/lib/typescript/src/views/Stack/CardStack.d.ts +8 -7
  146. package/lib/typescript/src/views/Stack/CardStack.d.ts.map +1 -1
  147. package/lib/typescript/src/views/Stack/StackView.d.ts +10 -81
  148. package/lib/typescript/src/views/Stack/StackView.d.ts.map +1 -1
  149. package/package.json +1 -1
  150. package/src/TransitionConfigs/CardStyleInterpolators.tsx +72 -6
  151. package/src/TransitionConfigs/HeaderStyleInterpolators.tsx +43 -25
  152. package/src/TransitionConfigs/TransitionPresets.tsx +35 -5
  153. package/src/TransitionConfigs/TransitionSpecs.tsx +30 -2
  154. package/src/index.tsx +12 -7
  155. package/src/navigators/createStackNavigator.tsx +47 -63
  156. package/src/types.tsx +116 -24
  157. package/src/utils/CardAnimationContext.tsx +3 -3
  158. package/src/utils/GestureHandlerRefContext.tsx +2 -2
  159. package/src/utils/ModalPresentationContext.tsx +1 -3
  160. package/src/utils/conditional.tsx +1 -1
  161. package/src/utils/findLastIndex.tsx +2 -5
  162. package/src/utils/gestureActivationCriteria.tsx +70 -0
  163. package/src/utils/getDistanceForDirection.tsx +5 -4
  164. package/src/utils/getInvertedMultiplier.tsx +5 -6
  165. package/src/utils/getModalRoutesKeys.ts +21 -0
  166. package/src/utils/getShadowStyle.tsx +37 -0
  167. package/src/utils/throttle.tsx +16 -0
  168. package/src/utils/useCardAnimation.tsx +2 -2
  169. package/src/utils/useGestureHandlerRef.tsx +3 -3
  170. package/src/utils/useKeyboardManager.tsx +5 -7
  171. package/src/views/GestureHandler.kepler.tsx +1 -0
  172. package/src/views/GestureHandler.tsx +2 -2
  173. package/src/views/GestureHandlerNative.tsx +5 -5
  174. package/src/views/Header/Header.tsx +8 -7
  175. package/src/views/Header/HeaderContainer.tsx +23 -18
  176. package/src/views/Header/HeaderSegment.tsx +41 -43
  177. package/src/views/Screens.tsx +4 -2
  178. package/src/views/Stack/Card.tsx +480 -462
  179. package/src/views/Stack/CardA11yWrapper.tsx +67 -0
  180. package/src/views/Stack/CardContainer.tsx +127 -108
  181. package/src/views/Stack/CardContent.tsx +92 -0
  182. package/src/views/Stack/CardStack.tsx +370 -243
  183. package/src/views/Stack/StackView.tsx +73 -62
  184. package/SystemBundles/b598f9dfffcd611d6cd7d6a3c5ab3d66234659a03b40b6579fddb628e61b8313.bundle +0 -28538
  185. package/SystemBundles/b598f9dfffcd611d6cd7d6a3c5ab3d66234659a03b40b6579fddb628e61b8313.map +0 -1
  186. package/SystemModules/amzn__react-navigation__stack-7.modules.txt +0 -95
  187. package/SystemModules/amzn__react-navigation__stack-7.private.modules.txt +0 -185
  188. package/THIRD_PARTY_NOTICES.txt +0 -24
  189. package/lib/commonjs/TransitionConfigs/CardStyleInterpolators.js +0 -353
  190. package/lib/commonjs/TransitionConfigs/CardStyleInterpolators.js.map +0 -1
  191. package/lib/commonjs/TransitionConfigs/HeaderStyleInterpolators.js +0 -259
  192. package/lib/commonjs/TransitionConfigs/HeaderStyleInterpolators.js.map +0 -1
  193. package/lib/commonjs/TransitionConfigs/TransitionPresets.js +0 -134
  194. package/lib/commonjs/TransitionConfigs/TransitionPresets.js.map +0 -1
  195. package/lib/commonjs/TransitionConfigs/TransitionSpecs.js +0 -100
  196. package/lib/commonjs/TransitionConfigs/TransitionSpecs.js.map +0 -1
  197. package/lib/commonjs/index.js +0 -69
  198. package/lib/commonjs/index.js.map +0 -1
  199. package/lib/commonjs/navigators/createStackNavigator.js +0 -82
  200. package/lib/commonjs/navigators/createStackNavigator.js.map +0 -1
  201. package/lib/commonjs/types.js +0 -6
  202. package/lib/commonjs/types.js.map +0 -1
  203. package/lib/commonjs/utils/CardAnimationContext.js +0 -11
  204. package/lib/commonjs/utils/CardAnimationContext.js.map +0 -1
  205. package/lib/commonjs/utils/GestureHandlerRefContext.js +0 -11
  206. package/lib/commonjs/utils/GestureHandlerRefContext.js.map +0 -1
  207. package/lib/commonjs/utils/ModalPresentationContext.js +0 -12
  208. package/lib/commonjs/utils/ModalPresentationContext.js.map +0 -1
  209. package/lib/commonjs/utils/conditional.js +0 -32
  210. package/lib/commonjs/utils/conditional.js.map +0 -1
  211. package/lib/commonjs/utils/debounce.js +0 -19
  212. package/lib/commonjs/utils/debounce.js.map +0 -1
  213. package/lib/commonjs/utils/findLastIndex.js +0 -15
  214. package/lib/commonjs/utils/findLastIndex.js.map +0 -1
  215. package/lib/commonjs/utils/getDistanceForDirection.js +0 -20
  216. package/lib/commonjs/utils/getDistanceForDirection.js.map +0 -1
  217. package/lib/commonjs/utils/getInvertedMultiplier.js +0 -20
  218. package/lib/commonjs/utils/getInvertedMultiplier.js.map +0 -1
  219. package/lib/commonjs/utils/memoize.js +0 -33
  220. package/lib/commonjs/utils/memoize.js.map +0 -1
  221. package/lib/commonjs/utils/useCardAnimation.js +0 -19
  222. package/lib/commonjs/utils/useCardAnimation.js.map +0 -1
  223. package/lib/commonjs/utils/useGestureHandlerRef.js +0 -19
  224. package/lib/commonjs/utils/useGestureHandlerRef.js.map +0 -1
  225. package/lib/commonjs/utils/useKeyboardManager.js +0 -96
  226. package/lib/commonjs/utils/useKeyboardManager.js.map +0 -1
  227. package/lib/commonjs/views/GestureHandler.android.js +0 -17
  228. package/lib/commonjs/views/GestureHandler.android.js.map +0 -1
  229. package/lib/commonjs/views/GestureHandler.ios.js +0 -17
  230. package/lib/commonjs/views/GestureHandler.ios.js.map +0 -1
  231. package/lib/commonjs/views/GestureHandler.js +0 -24
  232. package/lib/commonjs/views/GestureHandler.js.map +0 -1
  233. package/lib/commonjs/views/GestureHandlerNative.js +0 -34
  234. package/lib/commonjs/views/GestureHandlerNative.js.map +0 -1
  235. package/lib/commonjs/views/Header/Header.js +0 -61
  236. package/lib/commonjs/views/Header/Header.js.map +0 -1
  237. package/lib/commonjs/views/Header/HeaderContainer.js +0 -127
  238. package/lib/commonjs/views/Header/HeaderContainer.js.map +0 -1
  239. package/lib/commonjs/views/Header/HeaderSegment.js +0 -139
  240. package/lib/commonjs/views/Header/HeaderSegment.js.map +0 -1
  241. package/lib/commonjs/views/ModalStatusBarManager.js +0 -42
  242. package/lib/commonjs/views/ModalStatusBarManager.js.map +0 -1
  243. package/lib/commonjs/views/Screens.js +0 -44
  244. package/lib/commonjs/views/Screens.js.map +0 -1
  245. package/lib/commonjs/views/Stack/Card.js +0 -469
  246. package/lib/commonjs/views/Stack/Card.js.map +0 -1
  247. package/lib/commonjs/views/Stack/CardContainer.js +0 -259
  248. package/lib/commonjs/views/Stack/CardContainer.js.map +0 -1
  249. package/lib/commonjs/views/Stack/CardSheet.js +0 -54
  250. package/lib/commonjs/views/Stack/CardSheet.js.map +0 -1
  251. package/lib/commonjs/views/Stack/CardStack.js +0 -442
  252. package/lib/commonjs/views/Stack/CardStack.js.map +0 -1
  253. package/lib/commonjs/views/Stack/StackView.js +0 -333
  254. package/lib/commonjs/views/Stack/StackView.js.map +0 -1
  255. package/lib/module/utils/debounce.js.map +0 -1
  256. package/lib/module/utils/memoize.js +0 -27
  257. package/lib/module/utils/memoize.js.map +0 -1
  258. package/lib/module/views/ModalStatusBarManager.js +0 -34
  259. package/lib/module/views/ModalStatusBarManager.js.map +0 -1
  260. package/lib/module/views/Stack/CardSheet.js +0 -46
  261. package/lib/module/views/Stack/CardSheet.js.map +0 -1
  262. package/lib/typescript/src/utils/debounce.d.ts +0 -2
  263. package/lib/typescript/src/utils/debounce.d.ts.map +0 -1
  264. package/lib/typescript/src/utils/memoize.d.ts +0 -2
  265. package/lib/typescript/src/utils/memoize.d.ts.map +0 -1
  266. package/lib/typescript/src/views/ModalStatusBarManager.d.ts +0 -12
  267. package/lib/typescript/src/views/ModalStatusBarManager.d.ts.map +0 -1
  268. package/lib/typescript/src/views/Stack/CardSheet.d.ts +0 -15
  269. package/lib/typescript/src/views/Stack/CardSheet.d.ts.map +0 -1
  270. package/src/utils/debounce.tsx +0 -17
  271. package/src/utils/memoize.tsx +0 -33
  272. package/src/views/ModalStatusBarManager.tsx +0 -50
  273. package/src/views/Stack/CardSheet.tsx +0 -61
@@ -2,11 +2,12 @@ import { getHeaderTitle, HeaderBackContext } from '@amazon-devices/react-navigat
2
2
  import {
3
3
  NavigationContext,
4
4
  NavigationRouteContext,
5
- ParamListBase,
6
- Route,
5
+ type ParamListBase,
6
+ type Route,
7
+ useLinkBuilder,
7
8
  } from '@amazon-devices/react-navigation__native';
8
9
  import * as React from 'react';
9
- import { Animated, StyleProp, StyleSheet, View, ViewStyle } from 'react-native';
10
+ import { type StyleProp, StyleSheet, View, type ViewStyle } from 'react-native';
10
11
 
11
12
  import {
12
13
  forNoAnimation,
@@ -21,7 +22,7 @@ import type {
21
22
  StackHeaderProps,
22
23
  StackNavigationProp,
23
24
  } from '../../types';
24
- import Header from './Header';
25
+ import { Header } from './Header';
25
26
 
26
27
  export type Props = {
27
28
  mode: StackHeaderMode;
@@ -33,10 +34,10 @@ export type Props = {
33
34
  route: Route<string>;
34
35
  height: number;
35
36
  }) => void;
36
- style?: Animated.WithAnimatedValue<StyleProp<ViewStyle>>;
37
+ style?: StyleProp<ViewStyle>;
37
38
  };
38
39
 
39
- export default function HeaderContainer({
40
+ export function HeaderContainer({
40
41
  mode,
41
42
  scenes,
42
43
  layout,
@@ -47,10 +48,14 @@ export default function HeaderContainer({
47
48
  }: Props) {
48
49
  const focusedRoute = getFocusedRoute();
49
50
  const parentHeaderBack = React.useContext(HeaderBackContext);
51
+ const { buildHref } = useLinkBuilder();
50
52
 
51
53
  return (
52
- <Animated.View pointerEvents="box-none" style={style}>
53
- {scenes.slice(-3).map((scene, i, self) => {
54
+ <View pointerEvents="box-none" style={style}>
55
+ {/* We render header only on two top-most headers as
56
+ a workaround for https://github.com/react-navigation/react-navigation/issues/12456.
57
+ If the header is persisted, it might be placed incorrectly when navigating back. */}
58
+ {scenes.slice(-2).map((scene, i, self) => {
54
59
  if ((mode === 'screen' && i !== self.length - 1) || !scene) {
55
60
  return null;
56
61
  }
@@ -78,7 +83,10 @@ export default function HeaderContainer({
78
83
  const { options, route } = previousScene.descriptor;
79
84
 
80
85
  headerBack = previousScene
81
- ? { title: getHeaderTitle(options, route.name) }
86
+ ? {
87
+ title: getHeaderTitle(options, route.name),
88
+ href: buildHref(route.name, route.params),
89
+ }
82
90
  : parentHeaderBack;
83
91
  }
84
92
 
@@ -128,8 +136,8 @@ export default function HeaderContainer({
128
136
  nextHeaderlessGestureDirection === 'vertical-inverted'
129
137
  ? forSlideUp
130
138
  : nextHeaderlessGestureDirection === 'horizontal-inverted'
131
- ? forSlideRight
132
- : forSlideLeft
139
+ ? forSlideRight
140
+ : forSlideLeft
133
141
  : headerStyleInterpolator
134
142
  : forNoAnimation,
135
143
  };
@@ -154,10 +162,7 @@ export default function HeaderContainer({
154
162
  : undefined
155
163
  }
156
164
  pointerEvents={isFocused ? 'box-none' : 'none'}
157
- accessibilityElementsHidden={!isFocused}
158
- importantForAccessibility={
159
- isFocused ? 'auto' : 'no-hide-descendants'
160
- }
165
+ aria-hidden={!isFocused}
161
166
  style={
162
167
  // Avoid positioning the focused header absolutely
163
168
  // Otherwise accessibility tools don't seem to be able to find it
@@ -172,7 +177,7 @@ export default function HeaderContainer({
172
177
  </NavigationContext.Provider>
173
178
  );
174
179
  })}
175
- </Animated.View>
180
+ </View>
176
181
  );
177
182
  }
178
183
 
@@ -180,7 +185,7 @@ const styles = StyleSheet.create({
180
185
  header: {
181
186
  position: 'absolute',
182
187
  top: 0,
183
- left: 0,
184
- right: 0,
188
+ start: 0,
189
+ end: 0,
185
190
  },
186
191
  });
@@ -2,16 +2,16 @@ import {
2
2
  getDefaultHeaderHeight,
3
3
  Header,
4
4
  HeaderBackButton,
5
- HeaderBackButtonProps,
5
+ type HeaderBackButtonProps,
6
6
  HeaderTitle,
7
7
  } from '@amazon-devices/react-navigation__elements';
8
+ import { useLocale } from '@amazon-devices/react-navigation__native';
8
9
  import * as React from 'react';
9
10
  import {
10
- Animated,
11
- LayoutChangeEvent,
11
+ type LayoutChangeEvent,
12
12
  Platform,
13
13
  StyleSheet,
14
- ViewStyle,
14
+ type ViewStyle,
15
15
  } from 'react-native';
16
16
 
17
17
  import type {
@@ -20,7 +20,6 @@ import type {
20
20
  StackHeaderOptions,
21
21
  StackHeaderStyleInterpolator,
22
22
  } from '../../types';
23
- import memoize from '../../utils/memoize';
24
23
 
25
24
  type Props = Omit<StackHeaderOptions, 'headerStatusBarHeight'> & {
26
25
  headerStatusBarHeight: number;
@@ -28,11 +27,14 @@ type Props = Omit<StackHeaderOptions, 'headerStatusBarHeight'> & {
28
27
  title: string;
29
28
  modal: boolean;
30
29
  onGoBack?: () => void;
30
+ backHref?: string;
31
31
  progress: SceneProgress;
32
32
  styleInterpolator: StackHeaderStyleInterpolator;
33
33
  };
34
34
 
35
- export default function HeaderSegment(props: Props) {
35
+ export function HeaderSegment(props: Props) {
36
+ const { direction } = useLocale();
37
+
36
38
  const [leftLabelLayout, setLeftLabelLayout] = React.useState<
37
39
  Layout | undefined
38
40
  >(undefined);
@@ -71,36 +73,12 @@ export default function HeaderSegment(props: Props) {
71
73
  setLeftLabelLayout({ height, width });
72
74
  };
73
75
 
74
- const getInterpolatedStyle = memoize(
75
- (
76
- styleInterpolator: StackHeaderStyleInterpolator,
77
- layout: Layout,
78
- current: Animated.AnimatedInterpolation<number>,
79
- next: Animated.AnimatedInterpolation<number> | undefined,
80
- titleLayout: Layout | undefined,
81
- leftLabelLayout: Layout | undefined,
82
- headerHeight: number
83
- ) =>
84
- styleInterpolator({
85
- current: { progress: current },
86
- next: next && { progress: next },
87
- layouts: {
88
- header: {
89
- height: headerHeight,
90
- width: layout.width,
91
- },
92
- screen: layout,
93
- title: titleLayout,
94
- leftLabel: leftLabelLayout,
95
- },
96
- })
97
- );
98
-
99
76
  const {
100
77
  progress,
101
78
  layout,
102
79
  modal,
103
80
  onGoBack,
81
+ backHref,
104
82
  headerTitle: title,
105
83
  headerLeft: left = onGoBack
106
84
  ? (props: HeaderBackButtonProps) => <HeaderBackButton {...props} />
@@ -108,8 +86,8 @@ export default function HeaderSegment(props: Props) {
108
86
  headerRight: right,
109
87
  headerBackImage,
110
88
  headerBackTitle,
111
- headerBackTitleVisible = Platform.OS === 'ios',
112
- headerTruncatedBackTitle,
89
+ headerBackButtonDisplayMode = Platform.OS === 'ios' ? 'default' : 'minimal',
90
+ headerBackTruncatedTitle,
113
91
  headerBackAccessibilityLabel,
114
92
  headerBackTestID,
115
93
  headerBackAllowFontScaling,
@@ -134,33 +112,53 @@ export default function HeaderSegment(props: Props) {
134
112
  customHeaderStyle || {}
135
113
  ) as ViewStyle;
136
114
 
115
+ const headerHeight = typeof height === 'number' ? height : defaultHeight;
116
+
137
117
  const {
138
118
  titleStyle,
139
119
  leftButtonStyle,
140
120
  leftLabelStyle,
141
121
  rightButtonStyle,
142
122
  backgroundStyle,
143
- } = getInterpolatedStyle(
144
- styleInterpolator,
145
- layout,
146
- progress.current,
147
- progress.next,
148
- titleLayout,
149
- headerBackTitle ? leftLabelLayout : undefined,
150
- typeof height === 'number' ? height : defaultHeight
123
+ } = React.useMemo(
124
+ () =>
125
+ styleInterpolator({
126
+ current: { progress: progress.current },
127
+ next: progress.next && { progress: progress.next },
128
+ direction,
129
+ layouts: {
130
+ header: {
131
+ height: headerHeight,
132
+ width: layout.width,
133
+ },
134
+ screen: layout,
135
+ title: titleLayout,
136
+ leftLabel: leftLabelLayout,
137
+ },
138
+ }),
139
+ [
140
+ styleInterpolator,
141
+ progress,
142
+ direction,
143
+ headerHeight,
144
+ layout,
145
+ titleLayout,
146
+ leftLabelLayout,
147
+ ]
151
148
  );
152
149
 
153
150
  const headerLeft: StackHeaderOptions['headerLeft'] = left
154
151
  ? (props) =>
155
152
  left({
156
153
  ...props,
154
+ href: backHref,
157
155
  backImage: headerBackImage,
158
156
  accessibilityLabel: headerBackAccessibilityLabel,
159
157
  testID: headerBackTestID,
160
158
  allowFontScaling: headerBackAllowFontScaling,
161
159
  onPress: onGoBack,
162
160
  label: headerBackTitle,
163
- truncatedLabel: headerTruncatedBackTitle,
161
+ truncatedLabel: headerBackTruncatedTitle,
164
162
  labelStyle: [leftLabelStyle, headerBackTitleStyle],
165
163
  onLabelLayout: handleLeftLabelLayout,
166
164
  screenLayout: layout,
@@ -188,11 +186,11 @@ export default function HeaderSegment(props: Props) {
188
186
  layout={layout}
189
187
  headerTitle={headerTitle}
190
188
  headerLeft={headerLeft}
191
- headerLeftLabelVisible={headerBackTitleVisible}
192
189
  headerRight={headerRight}
193
190
  headerTitleContainerStyle={[titleStyle, headerTitleContainerStyle]}
194
191
  headerLeftContainerStyle={[leftButtonStyle, headerLeftContainerStyle]}
195
192
  headerRightContainerStyle={[rightButtonStyle, headerRightContainerStyle]}
193
+ headerBackButtonDisplayMode={headerBackButtonDisplayMode}
196
194
  headerBackgroundContainerStyle={[
197
195
  backgroundStyle,
198
196
  headerBackgroundContainerStyle,
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
- import { View, ViewProps } from 'react-native';
2
+ import { Animated, View, type ViewProps } from 'react-native';
3
3
 
4
4
  let Screens: typeof import('@amazon-devices/react-native-screens') | undefined;
5
5
 
@@ -29,9 +29,11 @@ export const MaybeScreen = ({
29
29
  ...rest
30
30
  }: ViewProps & {
31
31
  enabled: boolean;
32
- active: 0 | 1;
32
+ active: 0 | 1 | Animated.AnimatedInterpolation<0 | 1>;
33
33
  children: React.ReactNode;
34
34
  freezeOnBlur?: boolean;
35
+ shouldFreeze: boolean;
36
+ homeIndicatorHidden?: boolean;
35
37
  }) => {
36
38
  if (Screens != null) {
37
39
  return (