@applicaster/zapp-react-native-ui-components 13.0.0-rc.11 → 13.0.0-rc.110

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 (212) hide show
  1. package/Components/AppContainer/__tests__/AppContainer.test.js +4 -6
  2. package/Components/AppContainer/__tests__/__snapshots__/AppContainer.test.js.snap +1 -1
  3. package/Components/AudioPlayer/AudioPlayer.tsx +7 -0
  4. package/Components/AudioPlayer/__tests__/Runtime.test.js +5 -8
  5. package/Components/AudioPlayer/__tests__/__snapshots__/Runtime.test.js.snap +4 -4
  6. package/Components/AudioPlayer/__tests__/__snapshots__/artWork.test.js.snap +3 -3
  7. package/Components/AudioPlayer/__tests__/__snapshots__/audioPlayer.test.js.snap +56 -113
  8. package/Components/AudioPlayer/__tests__/__snapshots__/audioPlayerLayout.test.js.snap +39 -23
  9. package/Components/AudioPlayer/__tests__/__snapshots__/channel.test.js.snap +3 -3
  10. package/Components/AudioPlayer/__tests__/__snapshots__/summary.test.js.snap +2 -2
  11. package/Components/AudioPlayer/__tests__/__snapshots__/title.test.js.snap +2 -2
  12. package/Components/AudioPlayer/__tests__/artWork.test.js +3 -5
  13. package/Components/AudioPlayer/__tests__/audioPlayer.test.js +3 -5
  14. package/Components/AudioPlayer/__tests__/audioPlayerLayout.test.js +7 -8
  15. package/Components/AudioPlayer/__tests__/channel.test.js +3 -5
  16. package/Components/AudioPlayer/__tests__/summary.test.js +3 -5
  17. package/Components/AudioPlayer/__tests__/title.test.js +3 -5
  18. package/Components/AudioPlayer/helpers.tsx +1 -0
  19. package/Components/BaseFocusable/index.ios.ts +1 -1
  20. package/Components/BaseFocusable/index.tsx +67 -31
  21. package/Components/Cell/Cell.tsx +18 -22
  22. package/Components/Cell/CellWithFocusable.tsx +51 -60
  23. package/Components/Cell/CellWrapper.tsx +18 -0
  24. package/Components/Cell/TvOSCellComponent.tsx +23 -30
  25. package/Components/Cell/__tests__/CellWIthFocusable.test.js +13 -6
  26. package/Components/Cell/index.js +3 -1
  27. package/Components/Cell/styles.ts +17 -0
  28. package/Components/CellRendererResolver/__tests__/cellRendererResolver.test.js +50 -50
  29. package/Components/CellRendererResolver/index.ts +2 -1
  30. package/Components/ComponentResolver/__tests__/__snapshots__/componentResolver.test.js.snap +1 -42
  31. package/Components/ComponentResolver/__tests__/componentResolver.test.js +26 -30
  32. package/Components/ContentScreen/__tests__/contentScreen.test.js +3 -3
  33. package/Components/DisplayState/__tests__/__snapshots__/displayState.test.js.snap +2 -2
  34. package/Components/ErrorScreen/index.tsx +14 -6
  35. package/Components/Focusable/Focusable.tsx +1 -54
  36. package/Components/Focusable/FocusableTvOS.tsx +6 -2
  37. package/Components/Focusable/Touchable.tsx +19 -20
  38. package/Components/Focusable/index.android.tsx +10 -3
  39. package/Components/FocusableCell/index.tsx +1 -1
  40. package/Components/FocusableGroup/FocusableTvOS.tsx +34 -86
  41. package/Components/FocusableGroup/index.tsx +0 -3
  42. package/Components/FocusableList/index.tsx +26 -10
  43. package/Components/FocusableScrollView/index.tsx +43 -13
  44. package/Components/GeneralContentScreen/GeneralContentScreen.tsx +3 -0
  45. package/Components/GeneralContentScreen/utils/__tests__/useCurationAPI.test.js +9 -0
  46. package/Components/GeneralContentScreen/utils/useCurationAPI.ts +1 -1
  47. package/Components/GeneralContentScreen/utils/useEventAlerts.ts +30 -0
  48. package/Components/HandlePlayable/HandlePlayable.tsx +21 -27
  49. package/Components/Layout/TV/LayoutBackground.tsx +28 -0
  50. package/Components/Layout/TV/NavBarContainer.tsx +19 -23
  51. package/Components/Layout/TV/ScreenContainer.tsx +8 -2
  52. package/Components/Layout/TV/ScreenLayoutContextProvider.tsx +5 -0
  53. package/Components/Layout/TV/__tests__/ScreenContainer.test.tsx +3 -1
  54. package/Components/Layout/TV/__tests__/__snapshots__/LayoutContainer.test.tsx.snap +1 -1
  55. package/Components/Layout/TV/__tests__/__snapshots__/NavBarContainer.test.tsx.snap +6 -5
  56. package/Components/Layout/TV/__tests__/__snapshots__/ScreenContainer.test.tsx.snap +12 -11
  57. package/Components/Layout/TV/__tests__/__snapshots__/index.test.tsx.snap +15 -10
  58. package/Components/Layout/TV/__tests__/index.test.tsx +14 -4
  59. package/Components/Layout/TV/index.tsx +6 -20
  60. package/Components/Layout/TV/index.web.tsx +4 -1
  61. package/Components/MasterCell/DefaultComponents/ActionButton.tsx +2 -3
  62. package/Components/MasterCell/DefaultComponents/BorderContainerView/__tests__/index.test.tsx +66 -0
  63. package/Components/MasterCell/DefaultComponents/BorderContainerView/index.tsx +4 -1
  64. package/Components/MasterCell/DefaultComponents/Image/Image.ios.tsx +10 -15
  65. package/Components/MasterCell/DefaultComponents/Image/hooks/useImage.ts +11 -7
  66. package/Components/MasterCell/DefaultComponents/ImageBorderContainer/__tests__/index.test.ts +93 -0
  67. package/Components/MasterCell/DefaultComponents/LiveImage/index.tsx +2 -2
  68. package/Components/MasterCell/DefaultComponents/SecondaryImage/__tests__/__snapshots__/Image.test.tsx.snap +3 -3
  69. package/Components/MasterCell/DefaultComponents/SecondaryImage/utils.ts +1 -1
  70. package/Components/MasterCell/DefaultComponents/__tests__/image.test.js +1 -1
  71. package/Components/MasterCell/DefaultComponents/tv/TvActionButtons/const.ts +3 -0
  72. package/Components/MasterCell/DefaultComponents/tv/TvActionButtons/index.ts +6 -6
  73. package/Components/MasterCell/SharedUI/CollapsibleTextContainer/__tests__/__snapshots__/index.test.tsx.snap +1 -1
  74. package/Components/MasterCell/SharedUI/ProgressBar/hooks/useFillInPercent.ts +2 -8
  75. package/Components/MasterCell/__tests__/__snapshots__/dataAdapter.test.js.snap +180 -180
  76. package/Components/MasterCell/__tests__/__snapshots__/elementMapper.test.js.snap +11 -19
  77. package/Components/MasterCell/__tests__/__snapshots__/masterCell.test.js.snap +6 -235
  78. package/Components/MasterCell/__tests__/elementMapper.test.js +18 -5
  79. package/Components/MasterCell/__tests__/masterCell.test.js +26 -26
  80. package/Components/MasterCell/hooks/useAsyncRendering/MasterCellAsyncRenderManager.ts +2 -2
  81. package/Components/MasterCell/hooks/useAsyncRendering/index.ts +2 -2
  82. package/Components/MasterCell/utils/behaviorProvider.ts +136 -0
  83. package/Components/MasterCell/utils/index.ts +9 -135
  84. package/Components/ModalComponent/BottomSheetModalContent.tsx +45 -19
  85. package/Components/ModalComponent/Button/Item.tsx +6 -5
  86. package/Components/ModalComponent/Button/assets.ts +1 -1
  87. package/Components/ModalComponent/Button/index.tsx +30 -43
  88. package/Components/ModalComponent/Header/index.tsx +3 -3
  89. package/Components/ModalComponent/utils.ts +55 -7
  90. package/Components/NativeFocusables/{index.js → index.ts} +4 -2
  91. package/Components/OfflineHandler/NotificationView/NotificationView.lg.tsx +2 -2
  92. package/Components/OfflineHandler/NotificationView/NotificationView.samsung.tsx +2 -2
  93. package/Components/OfflineHandler/NotificationView/__tests__/index.test.tsx +0 -5
  94. package/Components/OfflineHandler/__tests__/__snapshots__/index.test.tsx.snap +7 -7
  95. package/Components/OfflineHandler/__tests__/index.test.tsx +28 -25
  96. package/Components/OfflineHandler/utils/index.ts +1 -1
  97. package/Components/PlayerContainer/PlayerContainer.tsx +45 -25
  98. package/Components/PlayerContainer/PlayerContainerContext.tsx +9 -0
  99. package/Components/PlayerContainer/ProgramInfo/index.tsx +2 -2
  100. package/Components/PlayerImageBackground/index.tsx +1 -1
  101. package/Components/River/ComponentsMap/ComponentsMap.tsx +42 -65
  102. package/Components/River/ComponentsMap/hooks/useLoadingState.ts +78 -51
  103. package/Components/River/RefreshControl.tsx +1 -1
  104. package/Components/River/RiverFooter.tsx +39 -9
  105. package/Components/River/RiverItem.tsx +39 -3
  106. package/Components/River/TV/index.tsx +6 -1
  107. package/Components/River/__tests__/__snapshots__/componentsMap.test.js.snap +114 -45
  108. package/Components/River/__tests__/__snapshots__/river.test.js.snap +21 -83
  109. package/Components/River/__tests__/componentsMap.test.js +64 -17
  110. package/Components/River/__tests__/river.test.js +75 -40
  111. package/Components/RouteManager/__tests__/__snapshots__/routeManager.test.js.snap +12 -5
  112. package/Components/RouteManager/__tests__/routeManager.test.js +29 -14
  113. package/Components/RouteManager/__tests__/testId.test.js +8 -6
  114. package/Components/Screen/TV/__tests__/index.web.test.tsx +26 -0
  115. package/Components/Screen/TV/index.web.tsx +5 -6
  116. package/Components/Screen/__tests__/Screen.test.tsx +53 -31
  117. package/Components/Screen/__tests__/__snapshots__/Screen.test.tsx.snap +6 -6
  118. package/Components/Screen/hooks.ts +53 -0
  119. package/Components/Screen/index.tsx +16 -42
  120. package/Components/ScreenResolver/__tests__/screenResolver.test.js +95 -70
  121. package/Components/Tabs/Tab.tsx +12 -9
  122. package/Components/TextInputTv/__tests__/TextInputTv.test.js +42 -42
  123. package/Components/TextInputTv/__tests__/__snapshots__/TextInputTv.test.js.snap +7 -0
  124. package/Components/TextInputTv/index.tsx +6 -5
  125. package/Components/TopMarginApplicator/TopMarginApplicator.tsx +2 -3
  126. package/Components/Touchable/__tests__/__snapshots__/touchable.test.tsx.snap +2 -2
  127. package/Components/TrackedView/index.tsx +1 -0
  128. package/Components/Transitioner/AnimationManager.js +15 -15
  129. package/Components/Transitioner/Scene.tsx +53 -24
  130. package/Components/Transitioner/Transitioner.tsx +3 -3
  131. package/Components/Transitioner/__tests__/Scene.test.js +25 -14
  132. package/Components/Transitioner/__tests__/__snapshots__/AnimationManager.test.js.snap +26 -26
  133. package/Components/Transitioner/__tests__/__snapshots__/Scene.test.js.snap +10 -50
  134. package/Components/Transitioner/__tests__/__snapshots__/config.test.js.snap +20 -20
  135. package/Components/Transitioner/__tests__/__snapshots__/transitioner.test.js.snap +4 -4
  136. package/Components/Transitioner/__tests__/transitioner.test.js +13 -4
  137. package/Components/Transitioner/index.js +8 -4
  138. package/Components/VideoLive/LiveImageManager.ts +27 -1
  139. package/Components/VideoLive/PlayerLiveImageComponent.tsx +36 -24
  140. package/Components/VideoLive/__tests__/PlayerLiveImageComponent.test.tsx +63 -8
  141. package/Components/VideoLive/__tests__/__snapshots__/PlayerLiveImageComponent.test.tsx.snap +6 -10
  142. package/Components/VideoModal/ModalAnimation/AnimatedPlayerModalWrapper.tsx +1 -1
  143. package/Components/VideoModal/ModalAnimation/AnimatedScrollModal.tsx +51 -31
  144. package/Components/VideoModal/ModalAnimation/AnimatedVideoPlayerComponent.tsx +8 -4
  145. package/Components/VideoModal/ModalAnimation/AnimationComponent.tsx +48 -22
  146. package/Components/VideoModal/ModalAnimation/ModalAnimationContext.tsx +15 -15
  147. package/Components/VideoModal/ModalAnimation/__tests__/getMoveUpValue.test.ts +108 -0
  148. package/Components/VideoModal/ModalAnimation/const.ts +5 -0
  149. package/Components/VideoModal/ModalAnimation/index.ts +4 -1
  150. package/Components/VideoModal/ModalAnimation/useModalAnimationContext.ts +6 -0
  151. package/Components/VideoModal/ModalAnimation/utils.ts +38 -2
  152. package/Components/VideoModal/OpaqueLayer.tsx +33 -0
  153. package/Components/VideoModal/PlayerDetails.tsx +18 -10
  154. package/Components/VideoModal/PlayerWrapper.tsx +43 -39
  155. package/Components/VideoModal/VideoModal.tsx +17 -11
  156. package/Components/VideoModal/__tests__/PlayerDetails.test.tsx +5 -2
  157. package/Components/VideoModal/__tests__/PlayerWrapper.test.tsx +13 -10
  158. package/Components/VideoModal/__tests__/__snapshots__/PlayerDetails.test.tsx.snap +2 -40
  159. package/Components/VideoModal/__tests__/__snapshots__/PlayerWrapper.test.tsx.snap +66 -156
  160. package/Components/VideoModal/hooks/__tests__/useDelayedPlayerDetails.test.ts +89 -0
  161. package/Components/VideoModal/hooks/index.ts +7 -0
  162. package/Components/VideoModal/hooks/useDelayedPlayerDetails.ts +49 -0
  163. package/Components/VideoModal/hooks/utils/__tests__/showDetails.test.ts +91 -0
  164. package/Components/VideoModal/hooks/utils/index.ts +33 -0
  165. package/Components/VideoModal/utils.ts +6 -9
  166. package/Components/Viewport/ViewportAware/__tests__/__snapshots__/viewportAware.test.js.snap +24 -36
  167. package/Components/Viewport/ViewportAware/__tests__/viewportAware.test.js +12 -18
  168. package/Components/Viewport/ViewportTracker/__tests__/__snapshots__/viewportTracker.test.js.snap +1 -1
  169. package/Components/Viewport/__tests__/utils.test.js +5 -4
  170. package/Components/ZappUIComponent/Placeholder.tsx +3 -1
  171. package/Components/ZappUIComponent/__tests__/{ZappUIComponent.test.js → ZappUIComponent.test.tsx} +26 -10
  172. package/Components/ZappUIComponent/index.tsx +4 -17
  173. package/Components/default-cell-renderer/__tests__/defaultCellRenderer.test.tsx +20 -17
  174. package/Components/default-cell-renderer/viewTrees/tv/DefaultCell/__tests__/DefaultCell.test.tsx +15 -11
  175. package/Contexts/ComponentsMapOffsetContext/index.tsx +49 -0
  176. package/Contexts/ConfigutaionContext/__tests__/__snapshots__/ConfigurationProvider.test.tsx.snap +1 -1
  177. package/Contexts/FocusableGroupContext/withFocusableContext.tsx +4 -10
  178. package/Contexts/HeaderOffsetContext/index.tsx +4 -6
  179. package/Contexts/ScreenContext/index.tsx +6 -12
  180. package/Contexts/ScreenLayoutContext/index.tsx +5 -3
  181. package/Decorators/Analytics/{index.js → index.tsx} +11 -11
  182. package/Decorators/Navigator/__tests__/navigator.test.js +16 -16
  183. package/Decorators/Navigator/index.tsx +1 -1
  184. package/Decorators/RiverFeedLoader/__tests__/__snapshots__/riverFeedLoader.test.tsx.snap +77 -77
  185. package/Decorators/RiverFeedLoader/__tests__/riverFeedLoader.test.tsx +34 -39
  186. package/Decorators/RiverFeedLoader/__tests__/utils.test.ts +0 -9
  187. package/Decorators/RiverFeedLoader/index.tsx +1 -1
  188. package/Decorators/RiverFeedLoader/utils/getDatasourceUrl.ts +39 -0
  189. package/Decorators/RiverFeedLoader/utils/index.ts +29 -0
  190. package/Decorators/RiverFeedLoader/utils/usePipesContexts.ts +40 -0
  191. package/Decorators/RiverResolver/__tests__/riverResolver.test.tsx +27 -27
  192. package/Decorators/RiverResolver/index.tsx +6 -8
  193. package/Decorators/ZappPipesDataConnector/__tests__/Hero.js +1 -1
  194. package/Decorators/ZappPipesDataConnector/__tests__/zappPipesDataConnector.test.js +29 -22
  195. package/Decorators/ZappPipesDataConnector/index.tsx +7 -3
  196. package/package.json +13 -11
  197. package/tsconfig.json +2 -3
  198. package/.babelrc +0 -8
  199. package/Components/Cell/CellStyles/FallbackCellStyle/index.js +0 -157
  200. package/Components/Cell/CellStyles/Hero/index.js +0 -111
  201. package/Components/Cell/CellStyles/ScreenSelector/index.js +0 -68
  202. package/Components/Cell/CellStyles/cellStylesResolver.ts +0 -19
  203. package/Components/Cell/CellStyles/colors.js +0 -40
  204. package/Components/Cell/CellStyles/index.js +0 -15
  205. package/Components/CellRendererResolver/__tests__/__snapshots__/cellRendererResolver.test.js.snap +0 -53
  206. package/Components/RouteManager/__tests__/__snapshots__/testId.test.js.snap +0 -17
  207. package/Components/ScreenResolver/__tests__/__snapshots__/screenResolver.test.js.snap +0 -17
  208. package/Components/ZappUIComponent/__tests__/__snapshots__/ZappUIComponent.test.js.snap +0 -91
  209. package/Components/default-cell-renderer/__tests__/__snapshots__/defaultCellRenderer.test.tsx.snap +0 -338
  210. package/Decorators/Navigator/__tests__/__snapshots__/navigator.test.js.snap +0 -18
  211. package/Decorators/RiverFeedLoader/utils.ts +0 -100
  212. package/Decorators/RiverResolver/__tests__/__snapshots__/riverResolver.test.tsx.snap +0 -28
@@ -14,7 +14,7 @@ exports[`<Touchable /> when not running in automated tests environment renders c
14
14
  onResponderTerminationRequest={[Function]}
15
15
  onStartShouldSetResponder={[Function]}
16
16
  style={
17
- Object {
17
+ {
18
18
  "opacity": 1,
19
19
  }
20
20
  }
@@ -40,7 +40,7 @@ exports[`<Touchable /> when running in automated tests environment has accessibl
40
40
  onResponderTerminationRequest={[Function]}
41
41
  onStartShouldSetResponder={[Function]}
42
42
  style={
43
- Object {
43
+ {
44
44
  "opacity": 1,
45
45
  }
46
46
  }
@@ -12,6 +12,7 @@ type TrackedViewProps = {
12
12
  onPositionUpdated: (props: { rect?: Record<string, number> }) => void;
13
13
  testId?: string | undefined;
14
14
  groupId?: string;
15
+ clipThreshold?: number;
15
16
  };
16
17
 
17
18
  export const TrackedView = memo(function TrackedView(props: TrackedViewProps) {
@@ -2,21 +2,21 @@ import { Animated } from "react-native";
2
2
 
3
3
  import { NAV_ACTION_PUSH, NAV_ACTION_BACK } from "./Transitioner";
4
4
 
5
- type TransitionConfig = {
6
- duration: number,
7
- easing: any,
8
- from: {
9
- style: any,
10
- },
11
- to: {
12
- style: any,
13
- },
14
- };
5
+ // type TransitionConfig = {
6
+ // duration: number;
7
+ // easing: any;
8
+ // from: {
9
+ // style: any;
10
+ // };
11
+ // to: {
12
+ // style: any;
13
+ // };
14
+ // };
15
15
 
16
- type Props = {
17
- transitionConfig: TransitionConfig,
18
- contentStyle: { [string]: any },
19
- };
16
+ // type Props = {
17
+ // transitionConfig: TransitionConfig;
18
+ // contentStyle: { [string]: any };
19
+ // };
20
20
 
21
21
  /**
22
22
  * Manages animation for the Transitioner,
@@ -25,7 +25,7 @@ type Props = {
25
25
  * which must have a proper structure, see types above ^.
26
26
  */
27
27
  export class AnimationManager {
28
- constructor(props: Props) {
28
+ constructor(props) {
29
29
  this.animatedValue = new Animated.Value(0.0);
30
30
 
31
31
  this.config = props.transitionConfig(
@@ -1,4 +1,5 @@
1
1
  import React from "react";
2
+ import { equals } from "ramda";
2
3
  import { Animated, ViewProps, ViewStyle } from "react-native";
3
4
  import { useSafeAreaFrame } from "react-native-safe-area-context";
4
5
 
@@ -8,6 +9,11 @@ import { PathnameContext } from "../../Contexts/PathnameContext";
8
9
  import { ScreenDataContext } from "../../Contexts/ScreenDataContext";
9
10
  import { ScreenContextProvider } from "../../Contexts/ScreenContext";
10
11
 
12
+ const fullWidthDimensions = {
13
+ height: "100%",
14
+ width: "100%",
15
+ };
16
+
11
17
  type Props = {
12
18
  children: any;
13
19
  style: any;
@@ -20,6 +26,47 @@ type Props = {
20
26
  screenData: NavigationScreenData;
21
27
  };
22
28
 
29
+ export function CurrentScreenContextProvider({
30
+ children,
31
+ ...props
32
+ }: {
33
+ children: any;
34
+ pathname: string;
35
+ isActive: boolean;
36
+ screenData: NavigationScreenData;
37
+ }) {
38
+ const { pathname, isActive = false, screenData } = props;
39
+
40
+ const [initialScreenData, setInitialScreenData] = React.useState(screenData);
41
+
42
+ React.useLayoutEffect(() => {
43
+ const screenDataChanged = !equals(initialScreenData, screenData);
44
+
45
+ if (isActive && screenDataChanged) {
46
+ setInitialScreenData(screenData);
47
+ }
48
+ }, [initialScreenData, screenData, isActive]);
49
+
50
+ return (
51
+ <ScreenDataContext.Provider value={initialScreenData}>
52
+ <PathnameContext.Provider value={pathname}>
53
+ <ScreenContextProvider pathname={pathname}>
54
+ {children}
55
+ </ScreenContextProvider>
56
+ </PathnameContext.Provider>
57
+ </ScreenDataContext.Provider>
58
+ );
59
+ }
60
+
61
+ const withCurrentScreenContext = (Component) =>
62
+ function SceneComponent(props: Props) {
63
+ return (
64
+ <CurrentScreenContextProvider {...props}>
65
+ <Component {...props} />
66
+ </CurrentScreenContextProvider>
67
+ );
68
+ };
69
+
23
70
  /**
24
71
  * Animated View container for any purpose.
25
72
  * Renders given children with given style object.
@@ -32,53 +79,35 @@ type Props = {
32
79
  * @param contentStyle
33
80
  * @param screenUniqueId
34
81
  */
35
- export function Scene({
82
+ function SceneComponent({
36
83
  children,
37
84
  style,
38
85
  pointerEvents = "auto",
39
86
  overlayStyle,
40
87
  animating,
41
88
  contentStyle,
42
- pathname,
43
89
  isActive = false,
44
90
  screenData,
45
91
  }: Props) {
46
- const [initialScreenData, setInitialScreenData] = React.useState(screenData);
47
-
48
92
  useScreenOrientationHandler({
49
93
  screenData,
50
94
  isActive,
51
95
  });
52
96
 
53
- React.useLayoutEffect(() => {
54
- if (isActive) {
55
- setInitialScreenData(screenData);
56
- }
57
- }, [screenData, isActive]);
58
-
59
97
  const frame = useSafeAreaFrame();
60
98
  const isAnimating = animating && overlayStyle;
61
99
 
62
- const dimensions = isAnimating
63
- ? {
64
- width: "100%",
65
- height: "100%",
66
- }
67
- : frame;
100
+ const dimensions = isAnimating ? fullWidthDimensions : frame;
68
101
 
69
102
  return (
70
103
  <Animated.View
71
104
  pointerEvents={pointerEvents}
72
105
  style={[style, contentStyle, dimensions]}
73
106
  >
74
- <ScreenDataContext.Provider value={initialScreenData}>
75
- <PathnameContext.Provider value={pathname}>
76
- <ScreenContextProvider pathname={pathname}>
77
- {children}
78
- </ScreenContextProvider>
79
- </PathnameContext.Provider>
80
- </ScreenDataContext.Provider>
81
- {isAnimating && <Animated.View style={overlayStyle} />}
107
+ {children}
108
+ {isAnimating ? <Animated.View style={overlayStyle} /> : null}
82
109
  </Animated.View>
83
110
  );
84
111
  }
112
+
113
+ export const Scene = withCurrentScreenContext(SceneComponent);
@@ -1,6 +1,6 @@
1
1
  import * as React from "react";
2
2
  import { View } from "react-native";
3
- import { update, compose, tail, append, take, identity, isNil } from "ramda";
3
+ import { append, compose, identity, isNil, tail, take, update } from "ramda";
4
4
 
5
5
  import { AnimationManager } from "./AnimationManager";
6
6
  import { Scene } from "./Scene";
@@ -289,7 +289,7 @@ export class TransitionerComponent extends React.PureComponent<Props, State> {
289
289
 
290
290
  return (
291
291
  <View style={styles.container}>
292
- {scenes[to.index] && (
292
+ {scenes[to.index] ? (
293
293
  <Scene
294
294
  {...{ style: to?.style || {} }}
295
295
  pathname={pathname}
@@ -301,7 +301,7 @@ export class TransitionerComponent extends React.PureComponent<Props, State> {
301
301
  >
302
302
  {scenes[to.index].children}
303
303
  </Scene>
304
- )}
304
+ ) : null}
305
305
  </View>
306
306
  );
307
307
  }
@@ -1,6 +1,7 @@
1
1
  import React from "react";
2
- import { shallow } from "enzyme";
3
- import { shallowToJson } from "enzyme-to-json";
2
+ import { render } from "@testing-library/react-native";
3
+
4
+ import { Scene } from "../Scene";
4
5
 
5
6
  const overlayStyle = { opacity: 1 };
6
7
  const contentStyle = { paddingBottom: 49 };
@@ -23,28 +24,38 @@ jest.mock(
23
24
  })
24
25
  );
25
26
 
26
- const { Scene } = require("../Scene");
27
+ jest.mock("../../../Contexts/PathnameContext", () => ({
28
+ PathnameContext: jest.requireActual("react").createContext({ pathname: "" }),
29
+ }));
27
30
 
28
- const wrapper = shallow(
29
- <Scene
30
- style={style}
31
- overlayStyle={overlayStyle}
32
- contentStyle={contentStyle}
33
- />
34
- );
31
+ jest.mock("../../../Contexts/ScreenDataContext", () => ({
32
+ ScreenDataContext: jest.requireActual("react").createContext({}),
33
+ }));
34
+
35
+ jest.mock("../../../Contexts/ScreenContext", () => ({
36
+ ScreenContextProvider: jest.requireActual("react-native").View,
37
+ }));
35
38
 
36
39
  describe("<Scene />", () => {
40
+ const wrapper = render(
41
+ <Scene
42
+ style={style}
43
+ overlayStyle={overlayStyle}
44
+ contentStyle={contentStyle}
45
+ />
46
+ );
47
+
37
48
  it("renders correctly", () => {
38
- expect(shallowToJson(wrapper)).toMatchSnapshot();
49
+ expect(wrapper.toJSON()).toMatchSnapshot();
39
50
  });
40
51
 
41
52
  // skipped - this isn't a very useful test, and it doesn't work as it used to on the new version of RN
42
53
  it.skip("renders children surrounded by AnimatedComponent", () => {
43
- expect(shallowToJson(wrapper).type).toEqual("AnimatedComponent");
54
+ expect(wrapper.toJSON()).toEqual("AnimatedComponent");
44
55
  });
45
56
 
46
57
  it("renders the overlay while animating", () => {
47
- const wrapperWithOverlay = shallow(
58
+ const wrapperWithOverlay = render(
48
59
  <Scene
49
60
  style={style}
50
61
  overlayStyle={overlayStyle}
@@ -53,6 +64,6 @@ describe("<Scene />", () => {
53
64
  />
54
65
  );
55
66
 
56
- expect(shallowToJson(wrapperWithOverlay)).toMatchSnapshot();
67
+ expect(wrapperWithOverlay.toJSON).toMatchSnapshot();
57
68
  });
58
69
  });
@@ -1,16 +1,16 @@
1
1
  // Jest Snapshot v1, https://goo.gl/fbAQLP
2
2
 
3
3
  exports[`AnimationManager initialState() returns a state composed from the initial configuration 1`] = `
4
- Object {
4
+ {
5
5
  "animating": false,
6
6
  "duration": 123,
7
7
  "easing": [MockFunction],
8
- "from": Object {
8
+ "from": {
9
9
  "index": 0,
10
10
  },
11
- "to": Object {
11
+ "to": {
12
12
  "index": 0,
13
- "style": Object {},
13
+ "style": {},
14
14
  },
15
15
  }
16
16
  `;
@@ -18,25 +18,25 @@ Object {
18
18
  exports[`AnimationManager returns the animation manager with the injected transition configuration 1`] = `
19
19
  AnimationManager {
20
20
  "animatedValue": 0,
21
- "config": Object {
22
- "back": Object {
21
+ "config": {
22
+ "back": {
23
23
  "duration": 123,
24
24
  "easing": [MockFunction],
25
- "from": Object {
26
- "style": Object {},
25
+ "from": {
26
+ "style": {},
27
27
  },
28
- "to": Object {
29
- "style": Object {},
28
+ "to": {
29
+ "style": {},
30
30
  },
31
31
  },
32
- "push": Object {
32
+ "push": {
33
33
  "duration": 123,
34
34
  "easing": [MockFunction],
35
- "from": Object {
36
- "style": Object {},
35
+ "from": {
36
+ "style": {},
37
37
  },
38
- "to": Object {
39
- "style": Object {},
38
+ "to": {
39
+ "style": {},
40
40
  },
41
41
  },
42
42
  },
@@ -44,25 +44,25 @@ AnimationManager {
44
44
  `;
45
45
 
46
46
  exports[`AnimationManager returns the animation manager with the injected transition configuration 2`] = `
47
- Object {
48
- "back": Object {
47
+ {
48
+ "back": {
49
49
  "duration": 123,
50
50
  "easing": [MockFunction],
51
- "from": Object {
52
- "style": Object {},
51
+ "from": {
52
+ "style": {},
53
53
  },
54
- "to": Object {
55
- "style": Object {},
54
+ "to": {
55
+ "style": {},
56
56
  },
57
57
  },
58
- "push": Object {
58
+ "push": {
59
59
  "duration": 123,
60
60
  "easing": [MockFunction],
61
- "from": Object {
62
- "style": Object {},
61
+ "from": {
62
+ "style": {},
63
63
  },
64
- "to": Object {
65
- "style": Object {},
64
+ "to": {
65
+ "style": {},
66
66
  },
67
67
  },
68
68
  }
@@ -1,63 +1,23 @@
1
1
  // Jest Snapshot v1, https://goo.gl/fbAQLP
2
2
 
3
3
  exports[`<Scene /> renders correctly 1`] = `
4
- <ForwardRef(AnimatedComponentWrapper)
5
- pointerEvents="auto"
6
- style={
7
- Array [
8
- Object {
4
+ <View>
5
+ <View
6
+ collapsable={false}
7
+ pointerEvents="auto"
8
+ style={
9
+ {
9
10
  "flex": 1,
10
- },
11
- Object {
12
- "paddingBottom": 49,
13
- },
14
- Object {
15
11
  "fontScale": 2,
16
12
  "height": 1334,
13
+ "paddingBottom": 49,
17
14
  "scale": 2,
18
15
  "statusBarHeight": null,
19
16
  "width": 750,
20
- },
21
- ]
22
- }
23
- >
24
- <ContextProvider>
25
- <ContextProvider>
26
- <ScreenContextProvider />
27
- </ContextProvider>
28
- </ContextProvider>
29
- </ForwardRef(AnimatedComponentWrapper)>
30
- `;
31
-
32
- exports[`<Scene /> renders the overlay while animating 1`] = `
33
- <ForwardRef(AnimatedComponentWrapper)
34
- pointerEvents="auto"
35
- style={
36
- Array [
37
- Object {
38
- "flex": 1,
39
- },
40
- Object {
41
- "paddingBottom": 49,
42
- },
43
- Object {
44
- "height": "100%",
45
- "width": "100%",
46
- },
47
- ]
48
- }
49
- >
50
- <ContextProvider>
51
- <ContextProvider>
52
- <ScreenContextProvider />
53
- </ContextProvider>
54
- </ContextProvider>
55
- <ForwardRef(AnimatedComponentWrapper)
56
- style={
57
- Object {
58
- "opacity": 1,
59
17
  }
60
18
  }
61
19
  />
62
- </ForwardRef(AnimatedComponentWrapper)>
20
+ </View>
63
21
  `;
22
+
23
+ exports[`<Scene /> renders the overlay while animating 1`] = `[Function]`;
@@ -5,34 +5,34 @@ exports[`transitionConfig accepts an Animated.Value as a parameter 1`] = `"Canno
5
5
  exports[`transitionConfig accepts an Animated.Value as a parameter 2`] = `[Function]`;
6
6
 
7
7
  exports[`transitionConfig returns a back object is valid 1`] = `
8
- Object {
8
+ {
9
9
  "duration": 350,
10
10
  "easing": [Function],
11
- "from": Object {
12
- "style": Object {
11
+ "from": {
12
+ "style": {
13
13
  "height": 1334,
14
14
  "position": "absolute",
15
- "transform": Array [
16
- Object {
15
+ "transform": [
16
+ {
17
17
  "translateX": 0,
18
18
  },
19
19
  ],
20
20
  "width": 750,
21
21
  },
22
22
  },
23
- "to": Object {
24
- "overlayStyle": Object {
23
+ "to": {
24
+ "overlayStyle": {
25
25
  "backgroundColor": "black",
26
26
  "height": 1334,
27
27
  "opacity": 0.35,
28
28
  "position": "absolute",
29
29
  "width": 750,
30
30
  },
31
- "style": Object {
31
+ "style": {
32
32
  "height": 1334,
33
33
  "position": "absolute",
34
- "transform": Array [
35
- Object {
34
+ "transform": [
35
+ {
36
36
  "translateX": -1,
37
37
  },
38
38
  ],
@@ -43,34 +43,34 @@ Object {
43
43
  `;
44
44
 
45
45
  exports[`transitionConfig returns a push object is valid 1`] = `
46
- Object {
46
+ {
47
47
  "duration": 350,
48
48
  "easing": [Function],
49
- "from": Object {
50
- "overlayStyle": Object {
49
+ "from": {
50
+ "overlayStyle": {
51
51
  "backgroundColor": "black",
52
52
  "height": 1334,
53
53
  "opacity": 0,
54
54
  "position": "absolute",
55
55
  "width": 750,
56
56
  },
57
- "style": Object {
57
+ "style": {
58
58
  "height": 1334,
59
59
  "position": "absolute",
60
- "transform": Array [
61
- Object {
60
+ "transform": [
61
+ {
62
62
  "translateX": 0,
63
63
  },
64
64
  ],
65
65
  "width": 750,
66
66
  },
67
67
  },
68
- "to": Object {
69
- "style": Object {
68
+ "to": {
69
+ "style": {
70
70
  "height": 1334,
71
71
  "position": "absolute",
72
- "transform": Array [
73
- Object {
72
+ "transform": [
73
+ {
74
74
  "translateX": 750,
75
75
  },
76
76
  ],
@@ -3,16 +3,16 @@
3
3
  exports[`<TransitionerComponent /> renders correctly 1`] = `
4
4
  <View
5
5
  style={
6
- Object {
6
+ {
7
7
  "flex": 1,
8
8
  "overflow": "hidden",
9
9
  }
10
10
  }
11
11
  >
12
- <Scene
12
+ <View
13
13
  isActive={true}
14
14
  screenUniqueId="mocked-uuid"
15
- style={Object {}}
15
+ style={{}}
16
16
  >
17
17
  <View
18
18
  foo="bar"
@@ -23,6 +23,6 @@ exports[`<TransitionerComponent /> renders correctly 1`] = `
23
23
  children
24
24
  </Text>
25
25
  </View>
26
- </Scene>
26
+ </View>
27
27
  </View>
28
28
  `;
@@ -1,9 +1,18 @@
1
1
  import React from "react";
2
2
  import { Text, View } from "react-native";
3
- import { shallow } from "enzyme";
4
- import { shallowToJson } from "enzyme-to-json";
5
3
 
6
4
  import { TransitionerComponent } from "../Transitioner";
5
+ import { render } from "@testing-library/react-native";
6
+
7
+ jest.mock("../Scene", () => {
8
+ const View = jest.requireActual("react-native").View;
9
+
10
+ return {
11
+ Scene(props) {
12
+ return <View {...props} />;
13
+ },
14
+ };
15
+ });
7
16
 
8
17
  const children = (
9
18
  <View foo="bar">
@@ -33,12 +42,12 @@ jest.mock("uuid");
33
42
 
34
43
  describe("<TransitionerComponent />", () => {
35
44
  it("renders correctly", () => {
36
- const wrapper = shallow(
45
+ const wrapper = render(
37
46
  <TransitionerComponent {...transitionerComponentProps}>
38
47
  {children}
39
48
  </TransitionerComponent>
40
49
  );
41
50
 
42
- expect(shallowToJson(wrapper)).toMatchSnapshot();
51
+ expect(wrapper.toJSON()).toMatchSnapshot();
43
52
  });
44
53
  });
@@ -1,5 +1,4 @@
1
1
  import * as React from "react";
2
- import { useWindowDimensions } from "react-native";
3
2
  import { useNavigation } from "@applicaster/zapp-react-native-utils/reactHooks/navigation";
4
3
  import { useDimensions } from "@applicaster/zapp-react-native-utils/reactHooks/layout";
5
4
  import { usePickFromState } from "@applicaster/zapp-react-native-redux/hooks";
@@ -7,10 +6,15 @@ import { TransitionerComponent } from "./Transitioner";
7
6
 
8
7
  export const Transitioner = (props) => {
9
8
  const navigator = useNavigation();
10
- const { height, width } = useWindowDimensions();
11
9
 
12
- const dimensions = useDimensions("window", { deviceInfo: true });
13
- const isTablet = dimensions?.deviceInfo?.isTablet;
10
+ const {
11
+ width,
12
+ height,
13
+ deviceInfo: { isTablet },
14
+ } = useDimensions("window", {
15
+ updateForInactiveScreens: false,
16
+ deviceInfo: true,
17
+ });
14
18
 
15
19
  const { appData } = usePickFromState(["appData"]);
16
20
  const isTabletPortrait = appData?.isTabletPortrait;