@applicaster/zapp-react-native-ui-components 14.0.0-alpha.6242515303 → 14.0.0-alpha.6461844364
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.
- package/Components/AnimatedInOut/index.tsx +5 -3
- package/Components/Cell/Cell.tsx +8 -3
- package/Components/Focusable/Focusable.tsx +5 -3
- package/Components/Focusable/FocusableTvOS.tsx +3 -3
- package/Components/FocusableList/index.tsx +4 -0
- package/Components/HandlePlayable/HandlePlayable.tsx +14 -8
- package/Components/MasterCell/elementMapper.tsx +1 -2
- package/Components/OfflineHandler/NotificationView/__tests__/index.test.tsx +13 -18
- package/Components/OfflineHandler/__tests__/__snapshots__/index.test.tsx.snap +9 -0
- package/Components/PlayerContainer/PlayerContainer.tsx +41 -28
- package/Components/River/ComponentsMap/ComponentsMap.tsx +0 -1
- package/Components/River/TV/withTVEventHandler.tsx +1 -1
- package/Components/River/__tests__/__snapshots__/componentsMap.test.js.snap +2 -0
- package/Components/Tabs/TV/Tabs.android.tsx +0 -2
- package/Components/TextInputTv/__tests__/__snapshots__/TextInputTv.test.js.snap +13 -0
- package/Components/TextInputTv/index.tsx +11 -0
- package/Components/Touchable/__tests__/__snapshots__/touchable.test.tsx.snap +34 -0
- package/Components/Transitioner/__tests__/__snapshots__/Scene.test.js.snap +15 -9
- package/Components/VideoLive/animationUtils.ts +3 -3
- package/Components/VideoModal/ModalAnimation/AnimatedScrollModal.tsx +3 -9
- package/Components/VideoModal/ModalAnimation/ModalAnimationContext.tsx +9 -1
- package/Components/VideoModal/PlayerDetails.tsx +24 -2
- package/Components/VideoModal/PlayerWrapper.tsx +26 -142
- package/Components/VideoModal/VideoModal.tsx +3 -17
- package/Components/VideoModal/__tests__/PlayerWrapper.test.tsx +1 -7
- package/Components/VideoModal/__tests__/__snapshots__/PlayerWrapper.test.tsx.snap +44 -240
- package/Components/VideoModal/hooks/index.ts +0 -2
- package/Components/VideoModal/hooks/useModalSize.ts +18 -2
- package/Components/VideoModal/utils.ts +6 -0
- package/Components/Viewport/ViewportAware/__tests__/viewportAware.test.js +12 -16
- package/Components/Viewport/ViewportTracker/__tests__/viewportTracker.test.js +84 -24
- package/Decorators/ConfigurationWrapper/withConfigurationProvider.tsx +2 -2
- package/package.json +5 -6
- package/Components/VideoModal/hooks/useBackgroundColor.ts +0 -10
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
import { Animated,
|
|
2
|
+
import { Animated, StyleSheet, View } from "react-native";
|
|
3
3
|
|
|
4
4
|
import { useNavigation } from "@applicaster/zapp-react-native-utils/reactHooks";
|
|
5
5
|
import {
|
|
6
|
-
GestureHandlerRootView,
|
|
7
6
|
NativeViewGestureHandler,
|
|
8
7
|
PanGestureHandler,
|
|
9
8
|
State,
|
|
@@ -357,15 +356,10 @@ export const AnimatedScrollModalComponent = ({ children }: Props) => {
|
|
|
357
356
|
};
|
|
358
357
|
}, [playerAnimationState, isAudioItem, isMinimizedModal]);
|
|
359
358
|
|
|
360
|
-
const Wrapper = React.useMemo(
|
|
361
|
-
() => (Platform.OS === "android" ? GestureHandlerRootView : View),
|
|
362
|
-
[]
|
|
363
|
-
);
|
|
364
|
-
|
|
365
359
|
const scrollEnabled = isMaximizedModal && isNotMinimizeMaximazeAnimation;
|
|
366
360
|
|
|
367
361
|
return (
|
|
368
|
-
<
|
|
362
|
+
<View style={generalStyles.container}>
|
|
369
363
|
<TapGestureHandler
|
|
370
364
|
maxDurationMs={100000}
|
|
371
365
|
ref={tapHandlerRef}
|
|
@@ -405,7 +399,7 @@ export const AnimatedScrollModalComponent = ({ children }: Props) => {
|
|
|
405
399
|
</PanGestureHandler>
|
|
406
400
|
</View>
|
|
407
401
|
</TapGestureHandler>
|
|
408
|
-
</
|
|
402
|
+
</View>
|
|
409
403
|
);
|
|
410
404
|
};
|
|
411
405
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React, { useEffect } from "react";
|
|
2
|
-
import { Animated } from "react-native";
|
|
2
|
+
import { Animated, Dimensions } from "react-native";
|
|
3
3
|
|
|
4
4
|
import {
|
|
5
5
|
useSafeAreaInsets,
|
|
@@ -23,6 +23,7 @@ export enum PlayerAnimationStateEnum {
|
|
|
23
23
|
export type PlayerAnimationStateT = number | PlayerAnimationStateEnum | null;
|
|
24
24
|
|
|
25
25
|
export type ModalAnimationContextT = {
|
|
26
|
+
yTranslate: React.MutableRefObject<Animated.Value | null>;
|
|
26
27
|
isActiveGesture: boolean;
|
|
27
28
|
playerAnimationState: PlayerAnimationStateT;
|
|
28
29
|
setPlayerAnimationState: (value: PlayerAnimationStateT) => void;
|
|
@@ -48,6 +49,7 @@ export type ModalAnimationContextT = {
|
|
|
48
49
|
};
|
|
49
50
|
|
|
50
51
|
export const ReactContext = React.createContext<ModalAnimationContextT>({
|
|
52
|
+
yTranslate: React.createRef<Animated.Value | null>(),
|
|
51
53
|
isActiveGesture: false,
|
|
52
54
|
playerAnimationState: null,
|
|
53
55
|
setPlayerAnimationState: () => null,
|
|
@@ -73,6 +75,10 @@ export const ReactContext = React.createContext<ModalAnimationContextT>({
|
|
|
73
75
|
});
|
|
74
76
|
|
|
75
77
|
const Provider = ({ children }: { children: React.ReactNode }) => {
|
|
78
|
+
const yTranslate = React.useRef(
|
|
79
|
+
new Animated.Value(Dimensions.get("window").height)
|
|
80
|
+
);
|
|
81
|
+
|
|
76
82
|
const [playerAnimationState, setPlayerAnimationState] =
|
|
77
83
|
React.useState<PlayerAnimationStateT>(null);
|
|
78
84
|
|
|
@@ -100,6 +106,7 @@ const Provider = ({ children }: { children: React.ReactNode }) => {
|
|
|
100
106
|
// Reset player animation state when video modal is closed
|
|
101
107
|
if (!visible) {
|
|
102
108
|
resetPlayerAnimationState();
|
|
109
|
+
yTranslate.current?.setValue(Dimensions.get("window").height);
|
|
103
110
|
}
|
|
104
111
|
}, [visible, resetPlayerAnimationState]);
|
|
105
112
|
|
|
@@ -141,6 +148,7 @@ const Provider = ({ children }: { children: React.ReactNode }) => {
|
|
|
141
148
|
return (
|
|
142
149
|
<ReactContext.Provider
|
|
143
150
|
value={{
|
|
151
|
+
yTranslate,
|
|
144
152
|
startComponentsAnimation,
|
|
145
153
|
setStartComponentsAnimation,
|
|
146
154
|
isActiveGesture: playerAnimationState !== null,
|
|
@@ -11,6 +11,8 @@ import { useTargetScreenData } from "@applicaster/zapp-react-native-utils/reactH
|
|
|
11
11
|
import { ComponentsMap } from "@applicaster/zapp-react-native-ui-components/Components/River/ComponentsMap";
|
|
12
12
|
import { useSafeAreaInsets } from "react-native-safe-area-context";
|
|
13
13
|
import { isNilOrEmpty } from "@applicaster/zapp-react-native-utils/reactUtils/helpers";
|
|
14
|
+
import { useIsTablet } from "@applicaster/zapp-react-native-utils/reactHooks";
|
|
15
|
+
import { useDelayedPlayerDetails } from "./hooks";
|
|
14
16
|
|
|
15
17
|
const { width: SCREEN_WIDTH } = Dimensions.get("screen");
|
|
16
18
|
|
|
@@ -26,6 +28,10 @@ type Props = {
|
|
|
26
28
|
isTabletLandscape?: boolean;
|
|
27
29
|
isAudioPlayer?: boolean;
|
|
28
30
|
isTablet?: boolean;
|
|
31
|
+
inline?: any;
|
|
32
|
+
docked?: boolean;
|
|
33
|
+
isModal?: boolean;
|
|
34
|
+
pip?: boolean;
|
|
29
35
|
};
|
|
30
36
|
|
|
31
37
|
const containerStyle = ({
|
|
@@ -42,8 +48,24 @@ export const PlayerDetails = ({
|
|
|
42
48
|
configuration,
|
|
43
49
|
isTabletLandscape = false,
|
|
44
50
|
isAudioPlayer,
|
|
45
|
-
|
|
51
|
+
inline,
|
|
52
|
+
docked,
|
|
53
|
+
isModal,
|
|
54
|
+
pip,
|
|
46
55
|
}: Props) => {
|
|
56
|
+
const isInlineModal = inline && isModal;
|
|
57
|
+
|
|
58
|
+
// Mounting the PlayerDetails component is a resource-intensive process.
|
|
59
|
+
// Therefore, for performance reasons, we mount it with a delay to make the rotation process as smooth as possible.
|
|
60
|
+
// The flow is as follows: the rotation occurs first, and then, after a short delay, we mount the PlayerDetails component.
|
|
61
|
+
// This helps to avoid blocking the rotation and any animations related to the rotation.
|
|
62
|
+
const isShowPlayerDetails = useDelayedPlayerDetails({
|
|
63
|
+
isInline: isInlineModal,
|
|
64
|
+
isDocked: docked,
|
|
65
|
+
isPip: pip,
|
|
66
|
+
});
|
|
67
|
+
|
|
68
|
+
const isTablet = useIsTablet();
|
|
47
69
|
const screenData = useTargetScreenData(entry);
|
|
48
70
|
const insets = useSafeAreaInsets();
|
|
49
71
|
|
|
@@ -79,7 +101,7 @@ export const PlayerDetails = ({
|
|
|
79
101
|
}
|
|
80
102
|
}, [isAudioPlayer]);
|
|
81
103
|
|
|
82
|
-
if (isNilOrEmpty(screenData?.ui_components)) {
|
|
104
|
+
if (isNilOrEmpty(screenData?.ui_components) || !isShowPlayerDetails) {
|
|
83
105
|
return null;
|
|
84
106
|
}
|
|
85
107
|
|
|
@@ -9,16 +9,8 @@ import {
|
|
|
9
9
|
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
|
-
import { PlayerDetails } from "./PlayerDetails";
|
|
13
12
|
import { playerDimensionsHack } from "./utils";
|
|
14
|
-
import {
|
|
15
|
-
|
|
16
|
-
import {
|
|
17
|
-
AnimatedScrollModal,
|
|
18
|
-
AnimatedVideoPlayerComponent,
|
|
19
|
-
AnimationComponent,
|
|
20
|
-
ComponentAnimationType,
|
|
21
|
-
} from "@applicaster/zapp-react-native-ui-components/Components/VideoModal/ModalAnimation";
|
|
13
|
+
import { getTabletWidth } from "@applicaster/zapp-react-native-utils/playerUtils";
|
|
22
14
|
|
|
23
15
|
const { width: SCREEN_WIDTH, height: SCREEN_HEIGHT } = Dimensions.get("screen");
|
|
24
16
|
|
|
@@ -44,29 +36,15 @@ type Props = {
|
|
|
44
36
|
isModal?: boolean;
|
|
45
37
|
fullscreen?: boolean;
|
|
46
38
|
isTabletPortrait?: boolean;
|
|
47
|
-
children: (playerDimensions: DimensionsT) => React.ReactNode;
|
|
48
39
|
configuration: Configuration;
|
|
40
|
+
|
|
41
|
+
playerContent: (styles: ViewStyle) => React.ReactNode;
|
|
49
42
|
};
|
|
50
43
|
|
|
51
44
|
const defaultStyles = StyleSheet.create({
|
|
52
45
|
playerContainer: { position: "relative", alignSelf: "center", zIndex: 200 },
|
|
53
|
-
playerDetails: { flex: 1, paddingTop: 20 },
|
|
54
|
-
flex: { flex: 1 },
|
|
55
|
-
});
|
|
56
|
-
|
|
57
|
-
const orientationStyles = StyleSheet.create({
|
|
58
|
-
landscape: { flexDirection: "row" },
|
|
59
|
-
portrait: { flexDirection: "column" },
|
|
60
46
|
});
|
|
61
47
|
|
|
62
|
-
const directionStyles = (isTabletLandscape: boolean): ViewStyle => {
|
|
63
|
-
if (isTabletLandscape) {
|
|
64
|
-
return orientationStyles.landscape;
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
return orientationStyles.portrait;
|
|
68
|
-
};
|
|
69
|
-
|
|
70
48
|
const getScreenAspectRatio = () => {
|
|
71
49
|
const longEdge = Math.max(SCREEN_WIDTH, SCREEN_HEIGHT);
|
|
72
50
|
const shortEdge = Math.min(SCREEN_WIDTH, SCREEN_HEIGHT);
|
|
@@ -86,51 +64,6 @@ const getEdges = (isTablet: boolean, isInlineModal: boolean) => {
|
|
|
86
64
|
return ["top"];
|
|
87
65
|
};
|
|
88
66
|
|
|
89
|
-
const isPercentage = (value: string | number): boolean => {
|
|
90
|
-
if (typeof value === "string") {
|
|
91
|
-
return value.includes("%");
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
return false;
|
|
95
|
-
};
|
|
96
|
-
|
|
97
|
-
const getPercentageOf = (percent: string, value: number) => {
|
|
98
|
-
const percentageValue = parseFloat(percent.replace("%", ""));
|
|
99
|
-
|
|
100
|
-
if (isNaN(percentageValue)) {
|
|
101
|
-
return value;
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
return (value * percentageValue) / 100;
|
|
105
|
-
};
|
|
106
|
-
|
|
107
|
-
const getTabletWidth = (
|
|
108
|
-
configuration: Configuration,
|
|
109
|
-
dimensions: DimensionsT
|
|
110
|
-
) => {
|
|
111
|
-
const tablet_landscape_sidebar_width =
|
|
112
|
-
configuration?.tablet_landscape_sidebar_width;
|
|
113
|
-
|
|
114
|
-
const { width } = dimensions;
|
|
115
|
-
let widthValue = Number(width);
|
|
116
|
-
|
|
117
|
-
if (isPercentage(width)) {
|
|
118
|
-
widthValue = getPercentageOf(width.toString(), SCREEN_WIDTH);
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
const sidebarWidth = Number(tablet_landscape_sidebar_width?.replace("%", ""));
|
|
122
|
-
|
|
123
|
-
if (tablet_landscape_sidebar_width?.includes("%")) {
|
|
124
|
-
return widthValue * (1 - sidebarWidth / 100);
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
if (Number.isNaN(sidebarWidth)) {
|
|
128
|
-
return widthValue * 0.65;
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
return widthValue - sidebarWidth;
|
|
132
|
-
};
|
|
133
|
-
|
|
134
67
|
const PlayerWrapperComponent = (props: Props) => {
|
|
135
68
|
const {
|
|
136
69
|
entry,
|
|
@@ -139,35 +72,26 @@ const PlayerWrapperComponent = (props: Props) => {
|
|
|
139
72
|
inline,
|
|
140
73
|
docked,
|
|
141
74
|
isModal,
|
|
142
|
-
children,
|
|
143
75
|
isTabletPortrait,
|
|
144
76
|
configuration,
|
|
145
|
-
fullscreen,
|
|
146
77
|
pip,
|
|
78
|
+
playerContent,
|
|
147
79
|
} = props;
|
|
148
80
|
|
|
149
81
|
const isTablet = useIsTablet();
|
|
150
82
|
|
|
151
83
|
const isInlineModal = inline && isModal;
|
|
152
84
|
|
|
153
|
-
// Mounting the PlayerDetails component is a resource-intensive process.
|
|
154
|
-
// Therefore, for performance reasons, we mount it with a delay to make the rotation process as smooth as possible.
|
|
155
|
-
// The flow is as follows: the rotation occurs first, and then, after a short delay, we mount the PlayerDetails component.
|
|
156
|
-
// This helps to avoid blocking the rotation and any animations related to the rotation.
|
|
157
|
-
const isShowPlayerDetails = useDelayedPlayerDetails({
|
|
158
|
-
isInline: isInlineModal,
|
|
159
|
-
isDocked: docked,
|
|
160
|
-
isPip: pip,
|
|
161
|
-
});
|
|
162
|
-
|
|
163
85
|
const isTabletLandscape = !isTV() && isTablet && !isTabletPortrait;
|
|
164
86
|
|
|
165
|
-
const tabletWidth = getTabletWidth(
|
|
87
|
+
const tabletWidth = getTabletWidth(
|
|
88
|
+
configuration.tablet_landscape_sidebar_width,
|
|
89
|
+
style
|
|
90
|
+
);
|
|
166
91
|
|
|
167
92
|
const baseDimensions: DimensionsT = React.useMemo(
|
|
168
93
|
() => ({
|
|
169
|
-
width:
|
|
170
|
-
isInlineModal && !docked && isTabletLandscape ? tabletWidth : "100%",
|
|
94
|
+
width: isInlineModal && isTabletLandscape ? tabletWidth : "100%",
|
|
171
95
|
height: undefined,
|
|
172
96
|
}),
|
|
173
97
|
[isInlineModal, tabletWidth, docked]
|
|
@@ -176,7 +100,7 @@ const PlayerWrapperComponent = (props: Props) => {
|
|
|
176
100
|
const playerDimensions: DimensionsT = React.useMemo(
|
|
177
101
|
() => ({
|
|
178
102
|
...baseDimensions,
|
|
179
|
-
width:
|
|
103
|
+
width: baseDimensions.width,
|
|
180
104
|
aspectRatio: !isInlineModal && !pip ? getScreenAspectRatio() : 16 / 9,
|
|
181
105
|
}),
|
|
182
106
|
[baseDimensions, isInlineModal, pip]
|
|
@@ -185,8 +109,7 @@ const PlayerWrapperComponent = (props: Props) => {
|
|
|
185
109
|
const containerDimensions: DimensionsT = React.useMemo(
|
|
186
110
|
() => ({
|
|
187
111
|
...baseDimensions,
|
|
188
|
-
aspectRatio:
|
|
189
|
-
isInlineModal && docked ? undefined : playerDimensions.aspectRatio,
|
|
112
|
+
aspectRatio: playerDimensions.aspectRatio,
|
|
190
113
|
}),
|
|
191
114
|
[baseDimensions, isInlineModal, docked, playerDimensions.aspectRatio]
|
|
192
115
|
);
|
|
@@ -194,68 +117,29 @@ const PlayerWrapperComponent = (props: Props) => {
|
|
|
194
117
|
const WrapperView = React.useMemo(() => (isTV() ? View : SafeAreaView), []);
|
|
195
118
|
|
|
196
119
|
const childrenStyles = React.useMemo(
|
|
197
|
-
() => ({
|
|
120
|
+
() => ({
|
|
121
|
+
...playerDimensions,
|
|
122
|
+
...playerDimensionsHack,
|
|
123
|
+
}),
|
|
198
124
|
[containerDimensions, playerDimensionsHack]
|
|
199
125
|
);
|
|
200
126
|
|
|
201
|
-
const wrapperViewStyle: ViewStyle = {
|
|
202
|
-
backgroundColor:
|
|
203
|
-
isTablet && !fullscreen
|
|
204
|
-
? configuration?.tablet_landscape_player_container_background_color
|
|
205
|
-
: "transparent",
|
|
206
|
-
};
|
|
207
|
-
|
|
208
127
|
return (
|
|
209
128
|
<WrapperView
|
|
210
129
|
edges={getEdges(isTablet, isInlineModal) as readonly Edge[]}
|
|
211
|
-
style={
|
|
130
|
+
style={playerDimensionsHack}
|
|
212
131
|
>
|
|
213
|
-
<
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
132
|
+
<View
|
|
133
|
+
testID={`${entry?.id}-player-container`}
|
|
134
|
+
style={[
|
|
135
|
+
defaultStyles.playerContainer,
|
|
136
|
+
playerDimensionsHack,
|
|
137
|
+
containerDimensions,
|
|
138
|
+
containerStyle,
|
|
139
|
+
]}
|
|
217
140
|
>
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
style={[
|
|
221
|
-
defaultStyles.playerContainer,
|
|
222
|
-
containerDimensions,
|
|
223
|
-
containerStyle,
|
|
224
|
-
playerDimensionsHack,
|
|
225
|
-
]}
|
|
226
|
-
>
|
|
227
|
-
<AnimationComponent
|
|
228
|
-
animationType={ComponentAnimationType.moveUpComponent}
|
|
229
|
-
style={isTabletLandscape ? defaultStyles.flex : undefined}
|
|
230
|
-
additionalData={{
|
|
231
|
-
useLayoutMeasure: isTabletLandscape,
|
|
232
|
-
disableAnimatedComponent: !isTabletLandscape,
|
|
233
|
-
resetAnimationValue: isTabletLandscape && docked,
|
|
234
|
-
}}
|
|
235
|
-
>
|
|
236
|
-
<AnimatedVideoPlayerComponent>
|
|
237
|
-
{children(childrenStyles)}
|
|
238
|
-
</AnimatedVideoPlayerComponent>
|
|
239
|
-
</AnimationComponent>
|
|
240
|
-
</View>
|
|
241
|
-
|
|
242
|
-
<AnimatedScrollModal>
|
|
243
|
-
{isShowPlayerDetails ? (
|
|
244
|
-
<AnimationComponent
|
|
245
|
-
animationType={ComponentAnimationType.componentFade}
|
|
246
|
-
style={defaultStyles.flex}
|
|
247
|
-
>
|
|
248
|
-
<PlayerDetails
|
|
249
|
-
configuration={configuration}
|
|
250
|
-
style={defaultStyles.playerDetails}
|
|
251
|
-
entry={entry}
|
|
252
|
-
isTabletLandscape={isTabletLandscape}
|
|
253
|
-
isTablet={isTablet}
|
|
254
|
-
/>
|
|
255
|
-
</AnimationComponent>
|
|
256
|
-
) : null}
|
|
257
|
-
</AnimatedScrollModal>
|
|
258
|
-
</AnimationComponent>
|
|
141
|
+
{playerContent(childrenStyles)}
|
|
142
|
+
</View>
|
|
259
143
|
</WrapperView>
|
|
260
144
|
);
|
|
261
145
|
};
|
|
@@ -17,11 +17,7 @@ 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 {
|
|
21
|
-
useModalSize,
|
|
22
|
-
useBackgroundColor,
|
|
23
|
-
useInitialPlayerState,
|
|
24
|
-
} from "./hooks";
|
|
20
|
+
import { useModalSize, useInitialPlayerState } from "./hooks";
|
|
25
21
|
|
|
26
22
|
import { APP_EVENTS } from "@applicaster/zapp-react-native-utils/appUtils/events";
|
|
27
23
|
import { PathnameContext } from "@applicaster/zapp-react-native-ui-components/Contexts/PathnameContext";
|
|
@@ -33,8 +29,6 @@ import { ScreenContextProvider } from "../../Contexts/ScreenContext";
|
|
|
33
29
|
import { Spinner } from "../Spinner";
|
|
34
30
|
import { OpaqueLayer } from "./OpaqueLayer";
|
|
35
31
|
|
|
36
|
-
import { AnimatedPlayerModalWrapper } from "@applicaster/zapp-react-native-ui-components/Components/VideoModal/ModalAnimation";
|
|
37
|
-
|
|
38
32
|
const LOADER_BACKGROUND_COLOR = "rgba(64,64,64,0.5)";
|
|
39
33
|
|
|
40
34
|
const styles = StyleSheet.create({
|
|
@@ -65,7 +59,6 @@ const VideoModalComponent = () => {
|
|
|
65
59
|
|
|
66
60
|
const modalSize = useModalSize();
|
|
67
61
|
const isFirstRender = useIsInitialRender();
|
|
68
|
-
const backgroundColor = useBackgroundColor();
|
|
69
62
|
|
|
70
63
|
const {
|
|
71
64
|
closeVideoModal,
|
|
@@ -145,20 +138,13 @@ const VideoModalComponent = () => {
|
|
|
145
138
|
{mode === "FULLSCREEN" && <OpaqueLayer />}
|
|
146
139
|
|
|
147
140
|
{itemIdHooksFinished === item?.id ? (
|
|
148
|
-
<
|
|
149
|
-
style={[
|
|
150
|
-
styles.container,
|
|
151
|
-
{
|
|
152
|
-
backgroundColor,
|
|
153
|
-
},
|
|
154
|
-
]}
|
|
155
|
-
>
|
|
141
|
+
<View pointerEvents="box-none" style={styles.container}>
|
|
156
142
|
<HandlePlayable
|
|
157
143
|
item={item}
|
|
158
144
|
isModal={mode !== "PIP"}
|
|
159
145
|
mode={mode}
|
|
160
146
|
/>
|
|
161
|
-
</
|
|
147
|
+
</View>
|
|
162
148
|
) : (
|
|
163
149
|
<View style={styles.loaderContainer}>
|
|
164
150
|
<Spinner />
|
|
@@ -13,6 +13,7 @@ const props = {
|
|
|
13
13
|
tablet_landscape_sidebar_width: "35%",
|
|
14
14
|
tablet_landscape_player_container_background_color: "red",
|
|
15
15
|
},
|
|
16
|
+
playerContent: jest.fn(() => <></>),
|
|
16
17
|
};
|
|
17
18
|
|
|
18
19
|
const mockUseIsDeviceTablet = jest.fn();
|
|
@@ -122,13 +123,6 @@ describe("PlayerWrapper", () => {
|
|
|
122
123
|
</PlayerWrapper>
|
|
123
124
|
);
|
|
124
125
|
|
|
125
|
-
const expectDimensions = {
|
|
126
|
-
...dimensions,
|
|
127
|
-
width: undefined,
|
|
128
|
-
aspectRatio: 16 / 9,
|
|
129
|
-
};
|
|
130
|
-
|
|
131
126
|
expect(element).toMatchSnapshot();
|
|
132
|
-
expect(children).toHaveBeenCalledWith(expectDimensions);
|
|
133
127
|
});
|
|
134
128
|
});
|