@applicaster/zapp-react-native-ui-components 12.0.0-rc.10 → 12.0.0-rc.100

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 (150) hide show
  1. package/Components/AudioPlayer/AudioPlayer.tsx +9 -1
  2. package/Components/AudioPlayer/__tests__/__snapshots__/audioPlayer.test.js.snap +5 -0
  3. package/Components/AudioPlayer/helpers.tsx +1 -0
  4. package/Components/BaseFocusable/index.tsx +3 -3
  5. package/Components/Cell/Cell.tsx +32 -11
  6. package/Components/Cell/CellWithFocusable.tsx +40 -19
  7. package/Components/Cell/TvOSCellComponent.tsx +5 -9
  8. package/Components/ErrorScreen/index.tsx +1 -1
  9. package/Components/Focusable/Focusable.tsx +6 -1
  10. package/Components/FocusableCell/index.tsx +7 -7
  11. package/Components/FocusableGroup/index.tsx +11 -2
  12. package/Components/FocusableList/FocusableChild.ts +24 -14
  13. package/Components/FocusableList/FocusableItem.tsx +1 -1
  14. package/Components/FocusableList/FocusableListItemWrapper.tsx +76 -0
  15. package/Components/FocusableList/hooks/useCellState.android.ts +3 -1
  16. package/Components/FocusableList/index.tsx +26 -25
  17. package/Components/GeneralContentScreen/GeneralContentScreen.tsx +11 -8
  18. package/Components/GeneralContentScreen/utils/__tests__/useCurationAPI.test.js +13 -6
  19. package/Components/GeneralContentScreen/utils/useCurationAPI.ts +1 -1
  20. package/Components/HandlePlayable/HandlePlayable.tsx +4 -1
  21. package/Components/HookRenderer/index.tsx +1 -6
  22. package/Components/Image/Image.android.tsx +3 -26
  23. package/Components/Image/Image.tsx +18 -2
  24. package/Components/Image/utils/index.ts +39 -0
  25. package/Components/Layout/TV/ScreenContainer.tsx +79 -5
  26. package/Components/Layout/TV/ScreenLayoutContextProvider.tsx +2 -2
  27. package/Components/Layout/TV/__tests__/ScreenContainer.test.tsx +38 -28
  28. package/Components/Layout/TV/__tests__/__snapshots__/ScreenContainer.test.tsx.snap +25 -13
  29. package/Components/Layout/TV/__tests__/__snapshots__/index.test.tsx.snap +10 -50
  30. package/Components/Layout/TV/__tests__/index.test.tsx +20 -108
  31. package/Components/Layout/TV/index.tsx +15 -84
  32. package/Components/Layout/TV/index.web.tsx +33 -0
  33. package/Components/Layout/index.tsx +15 -11
  34. package/Components/MasterCell/DefaultComponents/ActionButton.tsx +4 -1
  35. package/Components/MasterCell/DefaultComponents/BorderContainerView/index.tsx +88 -113
  36. package/Components/MasterCell/DefaultComponents/CellBadge/index.tsx +21 -8
  37. package/Components/MasterCell/DefaultComponents/DynamicBadge.tsx +4 -2
  38. package/Components/MasterCell/DefaultComponents/FocusableView/index.tsx +4 -1
  39. package/Components/MasterCell/DefaultComponents/Image/Image.android.tsx +9 -26
  40. package/Components/MasterCell/DefaultComponents/Image/Image.ios.tsx +5 -3
  41. package/Components/MasterCell/DefaultComponents/Image/hooks/useImageSize.ts +65 -0
  42. package/Components/MasterCell/DefaultComponents/ImageContainer/index.tsx +5 -1
  43. package/Components/MasterCell/DefaultComponents/LiveImage/index.tsx +37 -2
  44. package/Components/MasterCell/DefaultComponents/SecondaryImage/Image.tsx +3 -2
  45. package/Components/MasterCell/DefaultComponents/Text/index.tsx +14 -2
  46. package/Components/MasterCell/DefaultComponents/Toggle.tsx +5 -1
  47. package/Components/MasterCell/DefaultComponents/__tests__/image.test.js +1 -1
  48. package/Components/MasterCell/DefaultComponents/__tests__/text.test.tsx +24 -9
  49. package/Components/MasterCell/DefaultComponents/tv/ButtonContainerView/index.android.tsx +4 -1
  50. package/Components/MasterCell/DefaultComponents/tv/ButtonContainerView/index.tsx +10 -2
  51. package/Components/MasterCell/SharedUI/CollapsibleTextContainer/index.ts +6 -10
  52. package/Components/MasterCell/dataAdapter.ts +21 -7
  53. package/Components/MasterCell/hooks/useAsyncRendering/index.ts +1 -1
  54. package/Components/MasterCell/index.tsx +3 -1
  55. package/Components/MasterCell/utils/__tests__/insertBetween.test.js +9 -0
  56. package/Components/MasterCell/utils/index.ts +33 -35
  57. package/Components/MeasurmentsPortal/BasicMeasurementsPortal.tsx +11 -7
  58. package/Components/MeasurmentsPortal/MeasurementsPortal.tsx +10 -1
  59. package/Components/ModalComponent/BottomSheetModalContent.tsx +121 -0
  60. package/Components/ModalComponent/Button/Item.tsx +82 -0
  61. package/Components/ModalComponent/Button/ItemIcon.tsx +60 -0
  62. package/Components/ModalComponent/Button/ItemLabel.tsx +101 -0
  63. package/Components/ModalComponent/Button/assets.ts +4 -0
  64. package/Components/ModalComponent/Button/index.tsx +111 -0
  65. package/Components/ModalComponent/Header/CloseButton.tsx +59 -0
  66. package/Components/ModalComponent/Header/Title.tsx +70 -0
  67. package/Components/ModalComponent/Header/assets.ts +4 -0
  68. package/Components/ModalComponent/Header/index.tsx +71 -0
  69. package/Components/ModalComponent/Header/utils.ts +79 -0
  70. package/Components/ModalComponent/index.tsx +38 -0
  71. package/Components/ModalComponent/utils.ts +126 -0
  72. package/Components/Navigator/StackNavigator.tsx +57 -0
  73. package/Components/Navigator/index.ts +1 -0
  74. package/Components/PlayerContainer/PlayerContainer.tsx +66 -31
  75. package/Components/PlayerContainer/ProgramInfo/index.tsx +3 -1
  76. package/Components/PlayerImageBackground/index.tsx +34 -8
  77. package/Components/River/ComponentsMap/ComponentsMap.tsx +97 -2
  78. package/Components/River/RefreshControl.tsx +55 -1
  79. package/Components/River/River.tsx +8 -5
  80. package/Components/River/TV/River.tsx +2 -25
  81. package/Components/River/__tests__/__snapshots__/componentsMap.test.js.snap +1 -1
  82. package/Components/River/__tests__/componentsMap.test.js +7 -0
  83. package/Components/River/useScreenConfiguration.ts +2 -2
  84. package/Components/RouteManager/__tests__/__snapshots__/routeManager.test.js.snap +1 -0
  85. package/Components/RouteManager/__tests__/routeManager.test.js +9 -2
  86. package/Components/RouteManager/index.tsx +4 -2
  87. package/Components/Screen/TV/hooks/index.ts +3 -0
  88. package/Components/Screen/TV/hooks/useInitialFocus.ts +70 -0
  89. package/Components/Screen/TV/hooks/useRestoreFocus.ts +22 -0
  90. package/Components/Screen/TV/index.web.tsx +165 -0
  91. package/Components/Screen/__tests__/Screen.test.tsx +91 -74
  92. package/Components/Screen/__tests__/__snapshots__/Screen.test.tsx.snap +24 -6
  93. package/Components/Screen/__tests__/navigationHandler.test.ts +1 -178
  94. package/Components/Screen/index.tsx +110 -54
  95. package/Components/Screen/navigationHandler.ts +5 -82
  96. package/Components/ScreenResolver/index.tsx +10 -13
  97. package/Components/Tabs/TV/styles.ts +1 -1
  98. package/Components/TrackedView/index.tsx +6 -3
  99. package/Components/Transitioner/Scene.tsx +32 -26
  100. package/Components/Transitioner/Transitioner.tsx +21 -28
  101. package/Components/Transitioner/__tests__/__snapshots__/Scene.test.js.snap +12 -4
  102. package/Components/Transitioner/__tests__/__snapshots__/transitioner.test.js.snap +1 -0
  103. package/Components/VideoLive/LiveImageManager.ts +70 -14
  104. package/Components/VideoLive/PlayerLiveImageComponent.tsx +132 -95
  105. package/Components/VideoLive/__tests__/PlayerLiveImageComponent.test.tsx +45 -3
  106. package/Components/VideoLive/__tests__/__snapshots__/PlayerLiveImageComponent.test.tsx.snap +21 -29
  107. package/Components/VideoModal/ModalAnimation/AnimatedPlayerModalWrapper.tsx +66 -0
  108. package/Components/VideoModal/ModalAnimation/AnimatedScrollModal.tsx +355 -0
  109. package/Components/VideoModal/ModalAnimation/AnimatedVideoPlayerComponent.tsx +161 -0
  110. package/Components/VideoModal/ModalAnimation/AnimationComponent.tsx +456 -0
  111. package/Components/VideoModal/ModalAnimation/ModalAnimationContext.tsx +182 -0
  112. package/Components/VideoModal/ModalAnimation/index.ts +15 -0
  113. package/Components/VideoModal/ModalAnimation/utils.ts +302 -0
  114. package/Components/VideoModal/PlayerDetails.tsx +6 -3
  115. package/Components/VideoModal/PlayerWrapper.tsx +81 -49
  116. package/Components/VideoModal/VideoModal.tsx +23 -40
  117. package/Components/VideoModal/__tests__/PlayerDetails.test.tsx +0 -2
  118. package/Components/VideoModal/__tests__/PlayerWrapper.test.tsx +12 -1
  119. package/Components/VideoModal/__tests__/__snapshots__/PlayerWrapper.test.tsx.snap +266 -166
  120. package/Components/VideoModal/hooks/useModalSize.ts +10 -12
  121. package/Components/VideoModal/utils.ts +8 -5
  122. package/Components/Viewport/ViewportAware/__tests__/viewportAware.test.js +26 -21
  123. package/Components/Viewport/ViewportTracker/ViewportTracker.tsx +31 -40
  124. package/Components/Viewport/ViewportTracker/__tests__/viewportTracker.test.js +4 -5
  125. package/Components/Viewport/ViewportTracker/index.tsx +1 -0
  126. package/Components/Viewport/utils.js +1 -1
  127. package/Components/ZappUIComponent/index.tsx +22 -12
  128. package/Components/index.js +2 -0
  129. package/Contexts/FocusableGroupContext/FocusableGroupContext.ts +3 -0
  130. package/Contexts/FocusableGroupContext/FocusableGroupContextProvider.tsx +16 -0
  131. package/Contexts/FocusableGroupContext/__tests__/FocusableGroupContextProvider.test.tsx +22 -0
  132. package/Contexts/FocusableGroupContext/__tests__/withFocusableContext.test.tsx +26 -0
  133. package/Contexts/FocusableGroupContext/index.ts +7 -0
  134. package/Contexts/FocusableGroupContext/withFocusableContext.tsx +17 -0
  135. package/Contexts/MenuToggleContext/{index.js → index.ts} +16 -0
  136. package/Contexts/ScreenContext/__tests__/__snapshots__/index.test.tsx.snap +3 -0
  137. package/Contexts/ScreenContext/__tests__/index.test.tsx +27 -0
  138. package/Contexts/ScreenContext/index.tsx +95 -29
  139. package/Contexts/ScreenDataContext/index.tsx +20 -0
  140. package/Contexts/ZappPipesContext/ZappPipesEntryContext.ts +1 -1
  141. package/Decorators/ComponentsMapWrapper/withComponentsMapProvider.tsx +7 -2
  142. package/Decorators/RiverResolver/index.tsx +0 -4
  143. package/Decorators/index.tsx +0 -4
  144. package/events/index.ts +1 -0
  145. package/package.json +5 -6
  146. package/Components/Layout/TV/TransitionOverlay.tsx +0 -64
  147. package/Components/VideoModal/hooks/usePosition.ts +0 -50
  148. /package/Components/FocusableGroup/{index.android.js → index.android.ts} +0 -0
  149. /package/Components/FocusableGroup/{index.ios.js → index.ios.ts} +0 -0
  150. /package/Contexts/{index.js → index.ts} +0 -0
@@ -14,10 +14,18 @@ import { PlayerDetails } from "./PlayerDetails";
14
14
  import { playerDimesionsHack } from "./utils";
15
15
  import { PathnameContext } from "../../Contexts/PathnameContext";
16
16
  import { ScreenContextProvider } from "../../Contexts/ScreenContext";
17
+ import { ROUTE_TYPES } from "@applicaster/zapp-react-native-utils/navigationUtils/routeTypes";
18
+
19
+ import {
20
+ AnimatedScrollModal,
21
+ AnimatedVideoPlayerComponent,
22
+ AnimationComponent,
23
+ ComponentAnimationType,
24
+ } from "@applicaster/zapp-react-native-ui-components/Components/VideoModal/ModalAnimation";
17
25
 
18
26
  type DimensionsT = {
19
27
  width: number | string;
20
- height: number | string;
28
+ height: number | string | undefined;
21
29
  aspectRatio?: number;
22
30
  };
23
31
 
@@ -33,6 +41,7 @@ type Props = {
33
41
  containerStyle?: ViewStyle;
34
42
  inline?: boolean;
35
43
  docked?: boolean;
44
+ pip?: boolean;
36
45
  isModal?: boolean;
37
46
  fullscreen?: boolean;
38
47
  isTabletPortrait?: boolean;
@@ -43,6 +52,7 @@ type Props = {
43
52
  const defaultStyles = StyleSheet.create({
44
53
  playerContainer: { position: "relative", alignSelf: "center", zIndex: 200 },
45
54
  playerDetails: { flex: 1, paddingTop: 20 },
55
+ flex: { flex: 1 },
46
56
  });
47
57
 
48
58
  const orientationStyles = StyleSheet.create({
@@ -81,18 +91,9 @@ const safeAreaStyles = (
81
91
  };
82
92
  };
83
93
 
84
- const getEdges = (
85
- isTablet: boolean,
86
- docked: boolean,
87
- isInlineModal: boolean
88
- ) => {
94
+ const getEdges = (isTablet: boolean, isInlineModal: boolean) => {
89
95
  if (isTablet) {
90
- return docked ? ["right", "left"] : ["top"];
91
- }
92
-
93
- // mobile
94
- if (isInlineModal && docked) {
95
- return ["bottom"];
96
+ return ["top"];
96
97
  }
97
98
 
98
99
  if (!isInlineModal && Platform.OS === "android") {
@@ -135,6 +136,7 @@ export const PlayerWrapper = (props: Props) => {
135
136
  children,
136
137
  isTabletPortrait,
137
138
  configuration,
139
+ pip,
138
140
  } = props;
139
141
 
140
142
  const isTablet = useIsTablet();
@@ -149,18 +151,18 @@ export const PlayerWrapper = (props: Props) => {
149
151
  () => ({
150
152
  width:
151
153
  isInlineModal && !docked && isTabletLandscape ? tabletWidth : "100%",
152
- height: isInlineModal && docked ? style.height : undefined,
154
+ height: undefined,
153
155
  }),
154
- [isInlineModal, tabletWidth, style.height, docked]
156
+ [isInlineModal, tabletWidth, docked]
155
157
  );
156
158
 
157
159
  const playerDimensions: DimensionsT = React.useMemo(
158
160
  () => ({
159
161
  ...baseDimensions,
160
162
  width: isInlineModal && docked ? undefined : baseDimensions.width,
161
- aspectRatio: !isInlineModal ? getScreenAspectRatio() : 16 / 9,
163
+ aspectRatio: !isInlineModal && !pip ? getScreenAspectRatio() : 16 / 9,
162
164
  }),
163
- [baseDimensions, isInlineModal]
165
+ [baseDimensions, isInlineModal, pip]
164
166
  );
165
167
 
166
168
  const containerDimensions: DimensionsT = React.useMemo(
@@ -179,41 +181,71 @@ export const PlayerWrapper = (props: Props) => {
179
181
  [containerDimensions, playerDimesionsHack]
180
182
  );
181
183
 
184
+ const pathname = `${ROUTE_TYPES.VIDEO_MODAL}/${entry?.id}`;
185
+
182
186
  return (
183
- <WrapperView
184
- edges={getEdges(isTablet, docked, isInlineModal) as readonly Edge[]}
185
- style={[
186
- directionStyles(isTabletLandscape),
187
- safeAreaStyles(configuration, isTablet),
188
- style,
189
- playerDimesionsHack,
190
- ]}
191
- >
192
- <ScreenContextProvider pathname={"videoModal"}>
193
- <PathnameContext.Provider value={"videoModal"}>
194
- <View
195
- testID={`${entry?.id}-player-container`}
196
- style={[
197
- defaultStyles.playerContainer,
198
- containerDimensions,
199
- containerStyle,
200
- playerDimesionsHack,
201
- ]}
187
+ <PathnameContext.Provider value={pathname}>
188
+ <ScreenContextProvider pathname={pathname}>
189
+ <WrapperView
190
+ edges={getEdges(isTablet, isInlineModal) as readonly Edge[]}
191
+ style={[
192
+ safeAreaStyles(configuration, isTablet),
193
+ style,
194
+ playerDimesionsHack,
195
+ ]}
196
+ >
197
+ <AnimationComponent
198
+ animationType={ComponentAnimationType.moveUpComponent}
199
+ additionalData={{ saveArea: true }}
200
+ style={[directionStyles(isTabletLandscape), defaultStyles.flex]}
202
201
  >
203
- {children(childrenStyles)}
204
- </View>
205
- {isInlineModal && !docked ? (
206
- <PlayerDetails
207
- configuration={configuration}
208
- style={defaultStyles.playerDetails}
209
- entry={entry}
210
- isTabletLandscape={isTabletLandscape}
211
- />
212
- ) : (
213
- <View style={defaultStyles.playerDetails} />
214
- )}
215
- </PathnameContext.Provider>
202
+ <PathnameContext.Provider value={pathname}>
203
+ <ScreenContextProvider pathname={pathname}>
204
+ <View
205
+ testID={`${entry?.id}-player-container`}
206
+ style={[
207
+ defaultStyles.playerContainer,
208
+ containerDimensions,
209
+ containerStyle,
210
+ playerDimesionsHack,
211
+ ]}
212
+ >
213
+ <AnimationComponent
214
+ animationType={ComponentAnimationType.moveUpComponent}
215
+ style={isTabletLandscape ? defaultStyles.flex : undefined}
216
+ additionalData={{
217
+ useLayoutMeasure: isTabletLandscape,
218
+ disableAnimatedComponent: !isTabletLandscape,
219
+ resetAnimationValue: isTabletLandscape && docked,
220
+ }}
221
+ >
222
+ <AnimatedVideoPlayerComponent>
223
+ {children(childrenStyles)}
224
+ </AnimatedVideoPlayerComponent>
225
+ </AnimationComponent>
226
+ </View>
227
+ <AnimatedScrollModal>
228
+ {isInlineModal && !docked ? (
229
+ <AnimationComponent
230
+ animationType={ComponentAnimationType.componentFade}
231
+ style={defaultStyles.flex}
232
+ >
233
+ <PlayerDetails
234
+ configuration={configuration}
235
+ style={defaultStyles.playerDetails}
236
+ entry={entry}
237
+ isTabletLandscape={isTabletLandscape}
238
+ />
239
+ </AnimationComponent>
240
+ ) : (
241
+ <View style={defaultStyles.playerDetails} />
242
+ )}
243
+ </AnimatedScrollModal>
244
+ </ScreenContextProvider>
245
+ </PathnameContext.Provider>
246
+ </AnimationComponent>
247
+ </WrapperView>
216
248
  </ScreenContextProvider>
217
- </WrapperView>
249
+ </PathnameContext.Provider>
218
250
  );
219
251
  };
@@ -4,9 +4,7 @@ import { StyleSheet, View } from "react-native";
4
4
 
5
5
  import { HandlePlayable } from "@applicaster/zapp-react-native-ui-components/Components/HandlePlayable";
6
6
  import {
7
- MenuTypes,
8
7
  useNavigation,
9
- useNavigationType,
10
8
  useZappHooksForEntry,
11
9
  } from "@applicaster/zapp-react-native-utils/reactHooks";
12
10
  import { useIsInitialRender } from "@applicaster/zapp-react-native-utils/reactHooks/utils";
@@ -16,12 +14,12 @@ import {
16
14
  allowedOrientationsForScreen,
17
15
  ORIENTATIONS,
18
16
  } from "@applicaster/zapp-react-native-utils/appUtils/orientationHelper";
17
+ import { useIsTablet } from "@applicaster/zapp-react-native-utils/reactHooks/device/useIsTablet";
19
18
 
20
19
  import { withModalNavigationContextProvider } from "../../Contexts/ModalNavigationContext";
21
20
  import { useModalSize } from "./hooks/useModalSize";
22
21
  import { useBackgroundColor } from "./hooks/useBackgroundColor";
23
22
  import { useInitialPlayerState } from "./hooks/useInitialPlayerState";
24
- import { usePosition } from "./hooks/usePosition";
25
23
  import { APP_EVENTS } from "@applicaster/zapp-react-native-utils/appUtils/events";
26
24
  import { Spinner } from "../Spinner";
27
25
  import { PathnameContext } from "@applicaster/zapp-react-native-ui-components/Contexts/PathnameContext";
@@ -31,6 +29,8 @@ import { requiresAuthentication } from "@applicaster/zapp-react-native-utils/con
31
29
  import { playerManager } from "@applicaster/zapp-react-native-utils/appUtils";
32
30
  import { ScreenContextProvider } from "../../Contexts/ScreenContext";
33
31
 
32
+ import { AnimatedPlayerModalWrapper } from "@applicaster/zapp-react-native-ui-components/Components/VideoModal/ModalAnimation";
33
+
34
34
  const styles = StyleSheet.create({
35
35
  container: {
36
36
  top: 0,
@@ -59,22 +59,9 @@ const VideoModalComponent = () => {
59
59
  const onVideoModalHookSuccessAnalyticsEvent = useVideoModalAnalytics();
60
60
 
61
61
  const modalSize = useModalSize();
62
-
63
62
  const isFirstRender = useIsInitialRender();
64
-
65
63
  const backgroundColor = useBackgroundColor();
66
64
 
67
- const { top, height, bottom } = usePosition();
68
-
69
- const navType = useNavigationType();
70
- const isBottomBarsNavigation = navType === MenuTypes.bottomTabBar;
71
- const heightWithSafeArea = height ? height + bottom : null;
72
-
73
- const dockedHeight =
74
- isBottomBarsNavigation && height ? height : heightWithSafeArea;
75
-
76
- const dockedBottom = isBottomBarsNavigation ? bottom : 0;
77
-
78
65
  const {
79
66
  closeVideoModal,
80
67
  setVideoModalItem,
@@ -83,8 +70,6 @@ const VideoModalComponent = () => {
83
70
  maximiseVideoModal,
84
71
  } = useNavigation();
85
72
 
86
- const docked = mode === "MINIMIZED";
87
-
88
73
  const logTimestamp = useProfilerLogging();
89
74
 
90
75
  useInitialPlayerState(fullscreenVideoModal, maximiseVideoModal, item);
@@ -105,9 +90,10 @@ const VideoModalComponent = () => {
105
90
  }, [item?.id]);
106
91
 
107
92
  const isLandscape = modalSize.width > modalSize.height;
93
+ const isTablet = useIsTablet();
108
94
 
109
95
  React.useEffect(() => {
110
- if (isLandscape && mode !== "FULLSCREEN" && mode !== "PIP") {
96
+ if (!isTablet && isLandscape && mode !== "FULLSCREEN" && mode !== "PIP") {
111
97
  fullscreenVideoModal();
112
98
  }
113
99
  }, [isLandscape]);
@@ -143,35 +129,32 @@ const VideoModalComponent = () => {
143
129
  const pathname = `${ROUTE_TYPES.VIDEO_MODAL}/${item?.id}`;
144
130
 
145
131
  return (
146
- <View
147
- style={[
148
- styles.container,
149
- {
150
- top,
151
- height: dockedHeight,
152
- bottom: dockedBottom,
153
- backgroundColor,
154
- },
155
- ]}
156
- >
132
+ <PathnameContext.Provider value={pathname}>
157
133
  <ScreenContextProvider pathname={pathname}>
158
- <PathnameContext.Provider value={pathname}>
159
- {itemIdHooksFinished === item?.id ? (
134
+ {itemIdHooksFinished === item?.id ? (
135
+ <AnimatedPlayerModalWrapper
136
+ style={[
137
+ styles.container,
138
+ {
139
+ backgroundColor,
140
+ },
141
+ ]}
142
+ >
160
143
  <HandlePlayable
161
144
  item={item}
162
145
  isModal={mode !== "PIP"}
163
- modalHeight={docked ? height : modalSize.height}
146
+ modalHeight={modalSize.height}
164
147
  modalWidth={modalSize.width}
165
148
  mode={mode}
166
149
  />
167
- ) : (
168
- <View style={styles.loaderContainer}>
169
- <Spinner />
170
- </View>
171
- )}
172
- </PathnameContext.Provider>
150
+ </AnimatedPlayerModalWrapper>
151
+ ) : (
152
+ <View style={styles.loaderContainer}>
153
+ <Spinner />
154
+ </View>
155
+ )}
173
156
  </ScreenContextProvider>
174
- </View>
157
+ </PathnameContext.Provider>
175
158
  );
176
159
  };
177
160
 
@@ -8,8 +8,6 @@ const props = {
8
8
  configuration: { modal_background_color: "transparent" },
9
9
  };
10
10
 
11
- jest.mock("react-native");
12
-
13
11
  jest.mock("react-native-safe-area-context", () => ({
14
12
  useSafeAreaInsets: jest.fn(() => ({
15
13
  top: 20,
@@ -21,8 +21,17 @@ const useIsTablet = jest.fn();
21
21
 
22
22
  jest.mock("react-native");
23
23
 
24
+ jest.mock("react-native-gesture-handler");
25
+
24
26
  jest.mock("../PlayerDetails", () => ({ PlayerDetails: View }));
25
27
 
28
+ jest.mock(
29
+ "@applicaster/zapp-react-native-utils/reactHooks/screen/useScreenContext",
30
+ () => ({
31
+ useScreenContext: jest.fn().mockReturnValue({ screen: {}, entry: {} }),
32
+ })
33
+ );
34
+
26
35
  jest.mock("@applicaster/zapp-react-native-utils/reactHooks/device", () => ({
27
36
  useIsTablet,
28
37
  }));
@@ -38,6 +47,7 @@ jest.mock("@applicaster/zapp-react-native-utils/reactUtils", () => ({
38
47
  }));
39
48
 
40
49
  jest.mock("@applicaster/zapp-react-native-utils/reactHooks/navigation", () => ({
50
+ isNavBarVisible: jest.fn(() => true),
41
51
  useRoute: jest.fn(() => ({
42
52
  pathname: "/river/testId",
43
53
  })),
@@ -45,6 +55,7 @@ jest.mock("@applicaster/zapp-react-native-utils/reactHooks/navigation", () => ({
45
55
  canGoBack: () => false,
46
56
  currentRoute: "/river/testId",
47
57
  data: { screen: { id: "testId" } },
58
+ videoModalState: { visible: false },
48
59
  })),
49
60
  }));
50
61
 
@@ -94,7 +105,7 @@ describe("PlayerWrapper", () => {
94
105
  useIsTablet.mockReturnValue(false);
95
106
 
96
107
  const children = jest.fn(() => {});
97
- const dimensions = { height: 50, width: props.style.width };
108
+ const dimensions = { height: undefined, width: props.style.width };
98
109
 
99
110
  const element = renderWithProviders(
100
111
  <PlayerWrapper