@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
@@ -10,7 +10,8 @@ import { Edge, SafeAreaView } from "react-native-safe-area-context";
10
10
  import { isTV } from "@applicaster/zapp-react-native-utils/reactUtils";
11
11
  import { useIsTablet } from "@applicaster/zapp-react-native-utils/reactHooks";
12
12
  import { PlayerDetails } from "./PlayerDetails";
13
- import { playerDimesionsHack } from "./utils";
13
+ import { playerDimensionsHack } from "./utils";
14
+ import { useDelayedPlayerDetails } from "./hooks";
14
15
 
15
16
  import {
16
17
  AnimatedScrollModal,
@@ -99,6 +100,24 @@ const getEdges = (isTablet: boolean, isInlineModal: boolean) => {
99
100
  return ["top"];
100
101
  };
101
102
 
103
+ const isPercentage = (value: string | number): boolean => {
104
+ if (typeof value === "string") {
105
+ return value.includes("%");
106
+ }
107
+
108
+ return false;
109
+ };
110
+
111
+ const getPercentageOf = (percent: string, value: number) => {
112
+ const percentageValue = parseFloat(percent.replace("%", ""));
113
+
114
+ if (isNaN(percentageValue)) {
115
+ return value;
116
+ }
117
+
118
+ return (value * percentageValue) / 100;
119
+ };
120
+
102
121
  const getTabletWidth = (
103
122
  configuration: Configuration,
104
123
  dimensions: DimensionsT
@@ -107,46 +126,23 @@ const getTabletWidth = (
107
126
  configuration?.tablet_landscape_sidebar_width;
108
127
 
109
128
  const { width } = dimensions;
129
+ let widthValue = Number(width);
130
+
131
+ if (isPercentage(width)) {
132
+ widthValue = getPercentageOf(width.toString(), SCREEN_WIDTH);
133
+ }
110
134
 
111
135
  const sidebarWidth = Number(tablet_landscape_sidebar_width?.replace("%", ""));
112
136
 
113
137
  if (tablet_landscape_sidebar_width?.includes("%")) {
114
- return Number(width) * (1 - sidebarWidth / 100);
138
+ return widthValue * (1 - sidebarWidth / 100);
115
139
  }
116
140
 
117
141
  if (Number.isNaN(sidebarWidth)) {
118
- return Number(width) * 0.65;
119
- }
120
-
121
- return Number(width) - sidebarWidth;
122
- };
123
-
124
- const showDetails = (
125
- isMobile: boolean,
126
- docked: boolean,
127
- isInlineModal,
128
- pip
129
- ): boolean => {
130
- if (pip) {
131
- return false;
132
- }
133
-
134
- if (!isInlineModal) {
135
- return false;
136
- }
137
-
138
- // for mobile we always show details. Mounting of it very heavy operation.
139
- if (isMobile) {
140
- return true;
141
- }
142
-
143
- // workaround for tablets we need to mount/unmount in order to avoid PlayerDetails content dissappearing
144
- // FIXME - find out the reason of dissapearing of content
145
- if (docked) {
146
- return false;
142
+ return widthValue * 0.65;
147
143
  }
148
144
 
149
- return true;
145
+ return widthValue - sidebarWidth;
150
146
  };
151
147
 
152
148
  const PlayerWrapperComponent = (props: Props) => {
@@ -167,7 +163,15 @@ const PlayerWrapperComponent = (props: Props) => {
167
163
 
168
164
  const isInlineModal = inline && isModal;
169
165
 
170
- // const style = getStyles(baseStyle, !isTablet, isInlineModal, pip);
166
+ // Mounting the PlayerDetails component is a resource-intensive process.
167
+ // Therefore, for performance reasons, we mount it with a delay to make the rotation process as smooth as possible.
168
+ // The flow is as follows: the rotation occurs first, and then, after a short delay, we mount the PlayerDetails component.
169
+ // This helps to avoid blocking the rotation and any animations related to the rotation.
170
+ const isShowPlayerDetails = useDelayedPlayerDetails({
171
+ isInline: isInlineModal,
172
+ isDocked: docked,
173
+ isPip: pip,
174
+ });
171
175
 
172
176
  const isTabletLandscape = !isTV() && isTablet && !isTabletPortrait;
173
177
 
@@ -203,8 +207,8 @@ const PlayerWrapperComponent = (props: Props) => {
203
207
  const WrapperView = React.useMemo(() => (isTV() ? View : SafeAreaView), []);
204
208
 
205
209
  const childrenStyles = React.useMemo(
206
- () => ({ ...playerDimensions, ...playerDimesionsHack }),
207
- [containerDimensions, playerDimesionsHack]
210
+ () => ({ ...playerDimensions, ...playerDimensionsHack }),
211
+ [containerDimensions, playerDimensionsHack]
208
212
  );
209
213
 
210
214
  return (
@@ -213,7 +217,7 @@ const PlayerWrapperComponent = (props: Props) => {
213
217
  style={[
214
218
  safeAreaStyles(configuration, isTablet),
215
219
  style,
216
- playerDimesionsHack,
220
+ playerDimensionsHack,
217
221
  ]}
218
222
  >
219
223
  <AnimationComponent
@@ -227,7 +231,7 @@ const PlayerWrapperComponent = (props: Props) => {
227
231
  defaultStyles.playerContainer,
228
232
  containerDimensions,
229
233
  containerStyle,
230
- playerDimesionsHack,
234
+ playerDimensionsHack,
231
235
  ]}
232
236
  >
233
237
  <AnimationComponent
@@ -246,7 +250,7 @@ const PlayerWrapperComponent = (props: Props) => {
246
250
  </View>
247
251
 
248
252
  <AnimatedScrollModal>
249
- {showDetails(!isTablet, docked, isInlineModal, pip) && (
253
+ {isShowPlayerDetails ? (
250
254
  <AnimationComponent
251
255
  animationType={ComponentAnimationType.componentFade}
252
256
  style={defaultStyles.flex}
@@ -259,7 +263,7 @@ const PlayerWrapperComponent = (props: Props) => {
259
263
  isTablet={isTablet}
260
264
  />
261
265
  </AnimationComponent>
262
- )}
266
+ ) : null}
263
267
  </AnimatedScrollModal>
264
268
  </AnimationComponent>
265
269
  </WrapperView>
@@ -1,6 +1,6 @@
1
1
  import React from "react";
2
- import * as R from "ramda";
3
- import { StyleSheet, View, StatusBar } from "react-native";
2
+ import { equals } from "ramda";
3
+ import { StyleSheet, StatusBar, View } from "react-native";
4
4
 
5
5
  import { HandlePlayable } from "@applicaster/zapp-react-native-ui-components/Components/HandlePlayable";
6
6
  import {
@@ -17,20 +17,26 @@ import {
17
17
  import { useIsTablet } from "@applicaster/zapp-react-native-utils/reactHooks/device/useIsTablet";
18
18
 
19
19
  import { withModalNavigationContextProvider } from "../../Contexts/ModalNavigationContext";
20
- import { useModalSize } from "./hooks/useModalSize";
21
- import { useBackgroundColor } from "./hooks/useBackgroundColor";
22
- import { useInitialPlayerState } from "./hooks/useInitialPlayerState";
20
+ import {
21
+ useModalSize,
22
+ useBackgroundColor,
23
+ useInitialPlayerState,
24
+ } from "./hooks";
25
+
23
26
  import { APP_EVENTS } from "@applicaster/zapp-react-native-utils/appUtils/events";
24
- import { Spinner } from "../Spinner";
25
27
  import { PathnameContext } from "@applicaster/zapp-react-native-ui-components/Contexts/PathnameContext";
26
28
  import { ROUTE_TYPES } from "@applicaster/zapp-react-native-utils/navigationUtils/routeTypes";
27
29
  import { useSubscriberFor } from "@applicaster/zapp-react-native-utils/reactHooks/useSubscriberFor";
28
30
  import { requiresAuthentication } from "@applicaster/zapp-react-native-utils/configurationUtils";
29
31
  import { playerManager } from "@applicaster/zapp-react-native-utils/appUtils";
30
32
  import { ScreenContextProvider } from "../../Contexts/ScreenContext";
33
+ import { Spinner } from "../Spinner";
34
+ import { OpaqueLayer } from "./OpaqueLayer";
31
35
 
32
36
  import { AnimatedPlayerModalWrapper } from "@applicaster/zapp-react-native-ui-components/Components/VideoModal/ModalAnimation";
33
37
 
38
+ const LOADER_BACKGROUND_COLOR = "rgba(64,64,64,0.5)";
39
+
34
40
  const styles = StyleSheet.create({
35
41
  container: {
36
42
  top: 0,
@@ -39,7 +45,6 @@ const styles = StyleSheet.create({
39
45
  bottom: 0,
40
46
  position: "absolute",
41
47
  },
42
- // eslint-disable-next-line react-native/no-color-literals
43
48
  loaderContainer: {
44
49
  top: 0,
45
50
  left: 0,
@@ -48,7 +53,7 @@ const styles = StyleSheet.create({
48
53
  position: "absolute",
49
54
  alignItems: "center",
50
55
  justifyContent: "center",
51
- backgroundColor: "rgba(64,64,64,.5)",
56
+ backgroundColor: LOADER_BACKGROUND_COLOR,
52
57
  },
53
58
  });
54
59
 
@@ -100,7 +105,7 @@ const VideoModalComponent = () => {
100
105
 
101
106
  const onHooksSuccess = ({ payload }) => {
102
107
  // set new modified entry
103
- if (!R.equals(payload, item)) {
108
+ if (!equals(payload, item)) {
104
109
  onVideoModalHookSuccessAnalyticsEvent();
105
110
  setVideoModalItem(payload);
106
111
  }
@@ -136,6 +141,9 @@ const VideoModalComponent = () => {
136
141
 
137
142
  <PathnameContext.Provider value={pathname}>
138
143
  <ScreenContextProvider pathname={pathname}>
144
+ {/* Hide content underneath when we switch to next video in fullscreen mode */}
145
+ {mode === "FULLSCREEN" && <OpaqueLayer />}
146
+
139
147
  {itemIdHooksFinished === item?.id ? (
140
148
  <AnimatedPlayerModalWrapper
141
149
  style={[
@@ -148,8 +156,6 @@ const VideoModalComponent = () => {
148
156
  <HandlePlayable
149
157
  item={item}
150
158
  isModal={mode !== "PIP"}
151
- modalHeight={modalSize.height}
152
- modalWidth={modalSize.width}
153
159
  mode={mode}
154
160
  />
155
161
  </AnimatedPlayerModalWrapper>
@@ -1,6 +1,5 @@
1
1
  import React from "react";
2
2
  import renderer from "react-test-renderer";
3
- import { View } from "react-native";
4
3
 
5
4
  const props = {
6
5
  entry: {},
@@ -24,7 +23,11 @@ jest.mock("react-native-safe-area-context", () => ({
24
23
 
25
24
  jest.mock(
26
25
  "@applicaster/zapp-react-native-ui-components/Components/River/ComponentsMap",
27
- () => ({ ComponentsMap: View })
26
+ () => {
27
+ const View = jest.requireActual("react-native").View;
28
+
29
+ return { ComponentsMap: View };
30
+ }
28
31
  );
29
32
 
30
33
  jest.mock("@applicaster/zapp-react-native-utils/reactHooks/screen", () => ({
@@ -1,7 +1,5 @@
1
1
  import React from "react";
2
2
 
3
- import { View } from "react-native";
4
-
5
3
  import { renderWithProviders } from "@applicaster/zapp-react-native-utils/testUtils";
6
4
 
7
5
  const props = {
@@ -17,13 +15,17 @@ const props = {
17
15
  },
18
16
  };
19
17
 
20
- const useIsTablet = jest.fn();
18
+ const mockUseIsDeviceTablet = jest.fn();
21
19
 
22
20
  jest.mock("react-native");
23
21
 
24
22
  jest.mock("react-native-gesture-handler");
25
23
 
26
- jest.mock("../PlayerDetails", () => ({ PlayerDetails: View }));
24
+ jest.mock("../PlayerDetails", () => {
25
+ const View = jest.requireActual("react-native").View;
26
+
27
+ return { PlayerDetails: View };
28
+ });
27
29
 
28
30
  jest.mock(
29
31
  "@applicaster/zapp-react-native-utils/reactHooks/screen/useScreenContext",
@@ -33,10 +35,11 @@ jest.mock(
33
35
  );
34
36
 
35
37
  jest.mock("@applicaster/zapp-react-native-utils/reactHooks/device", () => ({
36
- useIsTablet,
38
+ useIsTablet: mockUseIsDeviceTablet,
37
39
  }));
38
40
 
39
41
  jest.mock("@applicaster/zapp-react-native-utils/theme", () => ({
42
+ ...jest.requireActual("@applicaster/zapp-react-native-utils/theme"),
40
43
  useTheme: jest.fn(() => ({})),
41
44
  }));
42
45
 
@@ -59,7 +62,7 @@ jest.mock("@applicaster/zapp-react-native-utils/reactHooks/navigation", () => ({
59
62
  })),
60
63
  }));
61
64
 
62
- jest.mock("../utils", () => ({ playerDimesionsHack: {} }));
65
+ jest.mock("../utils", () => ({ playerDimensionsHack: {} }));
63
66
 
64
67
  const { PlayerWrapper } = require("../PlayerWrapper");
65
68
 
@@ -68,7 +71,7 @@ const children = jest.fn(() => {});
68
71
 
69
72
  describe("PlayerWrapper", () => {
70
73
  it("renders properly", () => {
71
- useIsTablet.mockReturnValue(false);
74
+ mockUseIsDeviceTablet.mockReturnValue(false);
72
75
 
73
76
  const element = renderWithProviders(
74
77
  <PlayerWrapper {...props}>{children}</PlayerWrapper>
@@ -78,7 +81,7 @@ describe("PlayerWrapper", () => {
78
81
  });
79
82
 
80
83
  it("renders inline", () => {
81
- useIsTablet.mockReturnValue(false);
84
+ mockUseIsDeviceTablet.mockReturnValue(false);
82
85
 
83
86
  const element = renderWithProviders(
84
87
  <PlayerWrapper {...props} inline={true} isModal={true}>
@@ -90,7 +93,7 @@ describe("PlayerWrapper", () => {
90
93
  });
91
94
 
92
95
  it("renders inline on tablet in landscape orientation", () => {
93
- useIsTablet.mockReturnValue(true);
96
+ mockUseIsDeviceTablet.mockReturnValue(true);
94
97
 
95
98
  const element = renderWithProviders(
96
99
  <PlayerWrapper {...props} inline={true} isModal={true}>
@@ -102,7 +105,7 @@ describe("PlayerWrapper", () => {
102
105
  });
103
106
 
104
107
  it("renders inline and docked", () => {
105
- useIsTablet.mockReturnValue(false);
108
+ mockUseIsDeviceTablet.mockReturnValue(false);
106
109
 
107
110
  const children = jest.fn(() => {});
108
111
  const dimensions = { height: undefined, width: props.style.width };
@@ -1,43 +1,5 @@
1
1
  // Jest Snapshot v1, https://goo.gl/fbAQLP
2
2
 
3
- exports[`PlayerDetails renders properly 1`] = `
4
- <View
5
- collapsable={false}
6
- style={
7
- Object {
8
- "backgroundColor": "transparent",
9
- "flex": 1,
10
- "marginTop": -8,
11
- "paddingTop": -8,
12
- "width": 750,
13
- }
14
- }
15
- >
16
- <View
17
- feed="test-source"
18
- riverComponents={Array []}
19
- riverId="test-id"
20
- />
21
- </View>
22
- `;
3
+ exports[`PlayerDetails renders properly 1`] = `null`;
23
4
 
24
- exports[`PlayerDetails renders properly on tablet in landscape orientation 1`] = `
25
- <View
26
- collapsable={false}
27
- style={
28
- Object {
29
- "backgroundColor": "transparent",
30
- "flex": 1,
31
- "marginTop": -20,
32
- "paddingTop": 40,
33
- "width": 750,
34
- }
35
- }
36
- >
37
- <View
38
- feed="test-source"
39
- riverComponents={Array []}
40
- riverId="test-id"
41
- />
42
- </View>
43
- `;
5
+ exports[`PlayerDetails renders properly on tablet in landscape orientation 1`] = `null`;