@applicaster/zapp-react-native-ui-components 15.0.0-rc.13 → 15.0.0-rc.131

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 (189) hide show
  1. package/Components/AnimatedInOut/index.tsx +69 -26
  2. package/Components/BaseFocusable/index.ios.ts +12 -2
  3. package/Components/Cell/Cell.tsx +14 -3
  4. package/Components/Cell/CellWithFocusable.tsx +9 -0
  5. package/Components/Cell/FocusableWrapper.tsx +3 -0
  6. package/Components/Cell/TvOSCellComponent.tsx +30 -6
  7. package/Components/Focusable/Focusable.tsx +4 -2
  8. package/Components/Focusable/FocusableTvOS.tsx +18 -1
  9. package/Components/Focusable/__tests__/__snapshots__/FocusableTvOS.test.tsx.snap +1 -0
  10. package/Components/FocusableGroup/FocusableTvOS.tsx +32 -1
  11. package/Components/GeneralContentScreen/GeneralContentScreen.tsx +39 -28
  12. package/Components/GeneralContentScreen/__tests__/GeneralContentScreen.test.tsx +104 -0
  13. package/Components/GeneralContentScreen/utils/__tests__/getScreenDataSource.test.ts +19 -0
  14. package/Components/GeneralContentScreen/utils/__tests__/useCurationAPI.test.js +1 -1
  15. package/Components/GeneralContentScreen/utils/getScreenDataSource.ts +9 -0
  16. package/Components/GeneralContentScreen/utils/useCurationAPI.ts +22 -6
  17. package/Components/HandlePlayable/HandlePlayable.tsx +33 -94
  18. package/Components/HandlePlayable/const.ts +3 -0
  19. package/Components/HandlePlayable/utils.ts +105 -0
  20. package/Components/HookRenderer/HookRenderer.tsx +40 -10
  21. package/Components/HookRenderer/__tests__/HookRenderer.test.tsx +60 -0
  22. package/Components/Layout/TV/LayoutBackground.tsx +5 -2
  23. package/Components/Layout/TV/NavBarContainer.tsx +1 -10
  24. package/Components/Layout/TV/ScreenContainer.tsx +2 -6
  25. package/Components/Layout/TV/__tests__/__snapshots__/NavBarContainer.test.tsx.snap +7 -12
  26. package/Components/Layout/TV/__tests__/__snapshots__/ScreenContainer.test.tsx.snap +7 -12
  27. package/Components/Layout/TV/index.tsx +3 -4
  28. package/Components/Layout/TV/index.web.tsx +3 -4
  29. package/Components/LinkHandler/LinkHandler.tsx +2 -2
  30. package/Components/MasterCell/DefaultComponents/ActionButtonsCore/__tests__/model.test.ts +80 -0
  31. package/Components/MasterCell/DefaultComponents/ActionButtonsCore/__tests__/placement.test.ts +187 -0
  32. package/Components/MasterCell/DefaultComponents/ActionButtonsCore/__tests__/selectors.test.ts +45 -0
  33. package/Components/MasterCell/DefaultComponents/ActionButtonsCore/__tests__/style.test.ts +49 -0
  34. package/Components/MasterCell/DefaultComponents/ActionButtonsCore/model.ts +47 -0
  35. package/Components/MasterCell/DefaultComponents/ActionButtonsCore/placement.ts +170 -0
  36. package/Components/MasterCell/DefaultComponents/ActionButtonsCore/selectors.ts +26 -0
  37. package/Components/MasterCell/DefaultComponents/ActionButtonsCore/style.ts +29 -0
  38. package/Components/MasterCell/DefaultComponents/ActionButtonsCore/types.ts +37 -0
  39. package/Components/MasterCell/DefaultComponents/BorderContainerView/__tests__/index.test.tsx +16 -1
  40. package/Components/MasterCell/DefaultComponents/BorderContainerView/index.tsx +30 -2
  41. package/Components/MasterCell/DefaultComponents/Button.tsx +0 -15
  42. package/Components/MasterCell/DefaultComponents/Image/Image.android.tsx +5 -1
  43. package/Components/MasterCell/DefaultComponents/Image/Image.ios.tsx +11 -3
  44. package/Components/MasterCell/DefaultComponents/Image/Image.web.tsx +9 -1
  45. package/Components/MasterCell/DefaultComponents/Image/hooks/useImage.ts +15 -14
  46. package/Components/MasterCell/DefaultComponents/LiveImage/__tests__/prepareEntry.test.ts +352 -0
  47. package/Components/MasterCell/DefaultComponents/LiveImage/executePreloadHooks.ts +136 -0
  48. package/Components/MasterCell/DefaultComponents/LiveImage/index.tsx +43 -22
  49. package/Components/MasterCell/DefaultComponents/PressableView.tsx +196 -0
  50. package/Components/MasterCell/DefaultComponents/SecondaryImage/Image.tsx +40 -39
  51. package/Components/MasterCell/DefaultComponents/SecondaryImage/__tests__/Image.test.tsx +95 -0
  52. package/Components/MasterCell/DefaultComponents/SecondaryImage/__tests__/__snapshots__/Image.test.tsx.snap +86 -0
  53. package/Components/MasterCell/DefaultComponents/SecondaryImage/__tests__/index.test.ts +141 -0
  54. package/Components/MasterCell/DefaultComponents/SecondaryImage/hooks/__tests__/useGetImageDimensions.test.ts +7 -6
  55. package/Components/MasterCell/DefaultComponents/SecondaryImage/index.ts +1 -1
  56. package/Components/MasterCell/DefaultComponents/Text/index.tsx +10 -14
  57. package/Components/MasterCell/DefaultComponents/index.ts +2 -0
  58. package/Components/MasterCell/DefaultComponents/mobile/MobileActionButtons/Asset.ts +46 -0
  59. package/Components/MasterCell/DefaultComponents/mobile/MobileActionButtons/Button.ts +126 -0
  60. package/Components/MasterCell/DefaultComponents/mobile/MobileActionButtons/ButtonContainerView.ts +23 -0
  61. package/Components/MasterCell/DefaultComponents/mobile/MobileActionButtons/Spacer.ts +16 -0
  62. package/Components/MasterCell/DefaultComponents/mobile/MobileActionButtons/TextLabel.ts +67 -0
  63. package/Components/MasterCell/DefaultComponents/mobile/MobileActionButtons/TextLabelsContainer.ts +32 -0
  64. package/Components/MasterCell/DefaultComponents/mobile/MobileActionButtons/__tests__/PressableView.test.tsx +191 -0
  65. package/Components/MasterCell/DefaultComponents/mobile/MobileActionButtons/__tests__/builders.test.ts +140 -0
  66. package/Components/MasterCell/DefaultComponents/mobile/MobileActionButtons/__tests__/index.test.ts +222 -0
  67. package/Components/MasterCell/DefaultComponents/mobile/MobileActionButtons/helpers.ts +105 -0
  68. package/Components/MasterCell/DefaultComponents/mobile/MobileActionButtons/index.ts +104 -0
  69. package/Components/MasterCell/DefaultComponents/mobile/MobileActionButtons/utils/__tests__/insertButtons.test.ts +118 -0
  70. package/Components/MasterCell/DefaultComponents/mobile/MobileActionButtons/utils/index.ts +73 -0
  71. package/Components/MasterCell/DefaultComponents/tv/TvActionButtons/__tests__/index.test.ts +86 -0
  72. package/Components/MasterCell/DefaultComponents/tv/TvActionButtons/index.ts +35 -48
  73. package/Components/MasterCell/DefaultComponents/tv/TvActionButtons/utils/__tests__/getPluginIdentifier.test.ts +115 -29
  74. package/Components/MasterCell/DefaultComponents/tv/TvActionButtons/utils/index.ts +39 -144
  75. package/Components/MasterCell/elementMapper.tsx +1 -0
  76. package/Components/MasterCell/hoc/__tests__/withAsyncRender.test.tsx +219 -0
  77. package/Components/MasterCell/hoc/withAsyncRender.tsx +9 -7
  78. package/Components/MasterCell/index.tsx +2 -0
  79. package/Components/MasterCell/utils/__tests__/resolveColor.test.js +82 -3
  80. package/Components/MasterCell/utils/index.ts +61 -31
  81. package/Components/MeasurmentsPortal/MeasurementsPortal.tsx +102 -87
  82. package/Components/MeasurmentsPortal/__tests__/MeasurementsPortal.test.tsx +355 -0
  83. package/Components/OfflineHandler/NotificationView/NotificationView.lg.tsx +17 -9
  84. package/Components/OfflineHandler/NotificationView/NotificationView.samsung.tsx +16 -8
  85. package/Components/OfflineHandler/NotificationView/NotificationView.tsx +2 -2
  86. package/Components/OfflineHandler/NotificationView/__tests__/index.test.tsx +17 -18
  87. package/Components/OfflineHandler/NotificationView/utils.ts +34 -0
  88. package/Components/OfflineHandler/__tests__/index.test.tsx +27 -18
  89. package/Components/PlayerContainer/PlayerContainer.tsx +43 -64
  90. package/Components/PlayerImageBackground/index.tsx +3 -22
  91. package/Components/PreloaderWrapper/__tests__/index.test.tsx +26 -0
  92. package/Components/PreloaderWrapper/index.tsx +15 -0
  93. package/Components/River/ComponentsMap/ComponentsMap.tsx +16 -0
  94. package/Components/River/ComponentsMap/hooks/__tests__/useLoadingState.test.ts +1 -1
  95. package/Components/River/RefreshControl.tsx +36 -13
  96. package/Components/River/RiverItem.tsx +26 -20
  97. package/Components/River/TV/River.tsx +31 -14
  98. package/Components/River/TV/index.tsx +8 -4
  99. package/Components/River/TV/utils/__tests__/toStringOrEmpty.test.ts +30 -0
  100. package/Components/River/TV/utils/index.ts +4 -0
  101. package/Components/River/TV/withFocusableGroupForContent.tsx +71 -0
  102. package/Components/River/__tests__/__snapshots__/componentsMap.test.js.snap +2 -0
  103. package/Components/River/__tests__/componentsMap.test.js +38 -0
  104. package/Components/Screen/TV/index.web.tsx +4 -2
  105. package/Components/Screen/__tests__/Screen.test.tsx +66 -42
  106. package/Components/Screen/__tests__/__snapshots__/Screen.test.tsx.snap +68 -44
  107. package/Components/Screen/hooks.ts +75 -6
  108. package/Components/Screen/index.tsx +9 -4
  109. package/Components/Screen/navigationHandler.ts +49 -24
  110. package/Components/Screen/orientationHandler.ts +10 -13
  111. package/Components/ScreenFeedLoader/ScreenFeedLoader.tsx +46 -0
  112. package/Components/ScreenFeedLoader/__tests__/ScreenFeedLoader.test.tsx +94 -0
  113. package/Components/ScreenFeedLoader/index.ts +1 -0
  114. package/Components/ScreenResolver/__tests__/screenResolver.test.js +24 -0
  115. package/Components/ScreenResolver/hooks/index.ts +3 -0
  116. package/Components/ScreenResolver/hooks/useGetComponent.ts +15 -0
  117. package/Components/ScreenResolver/hooks/useScreenComponentResolver.tsx +90 -0
  118. package/Components/ScreenResolver/index.tsx +15 -111
  119. package/Components/ScreenResolver/utils/__tests__/getScreenTypeProps.test.ts +45 -0
  120. package/Components/ScreenResolver/utils/getScreenTypeProps.ts +43 -0
  121. package/Components/ScreenResolver/utils/index.ts +1 -0
  122. package/Components/ScreenResolver/withDefaultScreenContext.tsx +16 -0
  123. package/Components/ScreenResolverFeedProvider/ScreenResolverFeedProvider.tsx +25 -0
  124. package/Components/ScreenResolverFeedProvider/__tests__/ScreenResolverFeedProvider.test.tsx +44 -0
  125. package/Components/ScreenResolverFeedProvider/index.ts +1 -0
  126. package/Components/ScreenRevealManager/ScreenRevealManager.ts +40 -8
  127. package/Components/ScreenRevealManager/__tests__/ScreenRevealManager.test.ts +86 -69
  128. package/Components/ScreenRevealManager/withScreenRevealManager.tsx +44 -26
  129. package/Components/Tabs/TV/Tabs.tsx +20 -3
  130. package/Components/Tabs/TabContent.tsx +7 -4
  131. package/Components/Transitioner/Scene.tsx +10 -3
  132. package/Components/Transitioner/index.js +3 -3
  133. package/Components/VideoLive/LiveImageManager.ts +199 -54
  134. package/Components/VideoLive/PlayerLiveImageComponent.tsx +31 -33
  135. package/Components/VideoLive/__tests__/PlayerLiveImageComponent.test.tsx +2 -17
  136. package/Components/VideoLive/__tests__/__snapshots__/PlayerLiveImageComponent.test.tsx.snap +1 -0
  137. package/Components/VideoModal/ModalAnimation/ModalAnimationContext.tsx +118 -171
  138. package/Components/VideoModal/ModalAnimation/index.ts +2 -13
  139. package/Components/VideoModal/ModalAnimation/utils.ts +1 -327
  140. package/Components/VideoModal/PlayerWrapper.tsx +14 -88
  141. package/Components/VideoModal/VideoModal.tsx +1 -5
  142. package/Components/VideoModal/__tests__/PlayerWrapper.test.tsx +1 -0
  143. package/Components/VideoModal/hooks/__tests__/useDelayedPlayerDetails.test.ts +15 -7
  144. package/Components/VideoModal/hooks/useModalSize.ts +10 -5
  145. package/Components/VideoModal/playerWrapperStyle.ts +70 -0
  146. package/Components/VideoModal/playerWrapperUtils.ts +91 -0
  147. package/Components/VideoModal/utils.ts +19 -9
  148. package/Components/Viewport/ViewportAware/__tests__/viewportAware.test.js +0 -2
  149. package/Components/Viewport/ViewportAware/index.tsx +16 -7
  150. package/Components/Viewport/ViewportEvents/__tests__/viewportEvents.test.js +1 -1
  151. package/Components/ZappUIComponent/index.tsx +12 -6
  152. package/Components/default-cell-renderer/viewTrees/mobile/index.ts +0 -3
  153. package/Components/index.js +1 -1
  154. package/Contexts/ScreenContext/__tests__/index.test.tsx +57 -0
  155. package/Contexts/ScreenContext/index.tsx +71 -19
  156. package/Contexts/ScreenTrackedViewPositionsContext/__tests__/index.test.tsx +1 -1
  157. package/Contexts/ZappHookModalContext/index.tsx +37 -61
  158. package/Contexts/ZappPipesContext/ZappPipesContextFactory.tsx +18 -7
  159. package/Contexts/index.ts +0 -2
  160. package/Decorators/Analytics/index.tsx +6 -5
  161. package/Decorators/ConfigurationWrapper/__tests__/__snapshots__/withConfigurationProvider.test.tsx.snap +1 -0
  162. package/Decorators/ConfigurationWrapper/const.ts +1 -0
  163. package/Decorators/ZappPipesDataConnector/ResolverSelector.tsx +25 -7
  164. package/Decorators/ZappPipesDataConnector/__tests__/ResolverSelector.test.tsx +212 -5
  165. package/Decorators/ZappPipesDataConnector/__tests__/UrlFeedResolver.test.tsx +39 -21
  166. package/Decorators/ZappPipesDataConnector/__tests__/zappPipesDataConnector.test.js +1 -1
  167. package/Decorators/ZappPipesDataConnector/index.tsx +2 -2
  168. package/Decorators/ZappPipesDataConnector/resolvers/StaticFeedResolver.tsx +1 -1
  169. package/Decorators/ZappPipesDataConnector/resolvers/UrlFeedResolver.tsx +18 -7
  170. package/Helpers/DataSourceHelper/__tests__/itemLimitForData.test.ts +80 -0
  171. package/Helpers/DataSourceHelper/index.ts +19 -0
  172. package/events/index.ts +3 -0
  173. package/events/scrollEndReached.ts +15 -0
  174. package/index.d.ts +7 -0
  175. package/package.json +6 -5
  176. package/Components/MasterCell/DefaultComponents/Text/utils/__tests__/withAdjustedLineHeight.test.ts +0 -46
  177. package/Components/MasterCell/DefaultComponents/Text/utils/index.ts +0 -21
  178. package/Components/PlayerContainer/ErrorDisplay/ErrorDisplay.tsx +0 -57
  179. package/Components/PlayerContainer/ErrorDisplay/index.ts +0 -9
  180. package/Components/River/TV/withTVEventHandler.tsx +0 -27
  181. package/Components/VideoModal/ModalAnimation/AnimatedPlayerModalWrapper.tsx +0 -60
  182. package/Components/VideoModal/ModalAnimation/AnimatedScrollModal.tsx +0 -417
  183. package/Components/VideoModal/ModalAnimation/AnimatedScrollModal.web.tsx +0 -294
  184. package/Components/VideoModal/ModalAnimation/AnimatedVideoPlayerComponent.tsx +0 -176
  185. package/Components/VideoModal/ModalAnimation/AnimatedVideoPlayerComponent.web.tsx +0 -93
  186. package/Components/VideoModal/ModalAnimation/AnimationComponent.tsx +0 -500
  187. package/Components/VideoModal/ModalAnimation/__tests__/getMoveUpValue.test.ts +0 -108
  188. package/Helpers/DataSourceHelper/index.js +0 -19
  189. /package/Components/HookRenderer/{index.tsx → index.ts} +0 -0
@@ -1,176 +0,0 @@
1
- import React from "react";
2
- import { Animated, StyleSheet } from "react-native";
3
-
4
- import { useNavigation } from "@applicaster/zapp-react-native-utils/reactHooks";
5
- import { PanGestureHandler, State } from "react-native-gesture-handler";
6
-
7
- import { PlayerContainerContext } from "@applicaster/zapp-react-native-ui-components/Components/PlayerContainer/PlayerContainerContext";
8
- import {
9
- useModalAnimationContext,
10
- PlayerAnimationStateEnum,
11
- } from "@applicaster/zapp-react-native-ui-components/Components/VideoModal/ModalAnimation";
12
- import { isTV } from "@applicaster/zapp-react-native-utils/reactUtils";
13
-
14
- const generalStyles = StyleSheet.create({
15
- container: {
16
- flex: 1,
17
- width: "100%",
18
- position: "absolute",
19
- zIndex: 201,
20
- },
21
- });
22
-
23
- type Props = {
24
- children: React.ReactNode;
25
- };
26
-
27
- export const AnimatedVideoPlayer = ({ children }: Props) => {
28
- const {
29
- playerAnimationState,
30
- setPlayerAnimationState,
31
- animatedValues: { translateYOffset, dragVideoPlayerY, lastScrollY },
32
- lastScrollYValue,
33
- modalSnapPoints,
34
- lastSnap,
35
- setLastSnap,
36
- resetPlayerAnimationState,
37
- setStartComponentsAnimation,
38
- } = useModalAnimationContext();
39
-
40
- const {
41
- videoModalState: { mode: videoModalMode },
42
- } = useNavigation();
43
-
44
- const { isLanguageOverlayVisible, isSeekBarTouch } = React.useContext(
45
- PlayerContainerContext
46
- );
47
-
48
- const isMaximazedModal = videoModalMode === "MAXIMIZED";
49
- const isMinimizedModal = videoModalMode === "MINIMIZED";
50
-
51
- const isNotMinimizeMaximazeAnimation =
52
- playerAnimationState !== PlayerAnimationStateEnum.minimize &&
53
- playerAnimationState !== PlayerAnimationStateEnum.maximize;
54
-
55
- const isEnablePanGesture =
56
- !isLanguageOverlayVisible &&
57
- isNotMinimizeMaximazeAnimation &&
58
- !isSeekBarTouch &&
59
- (isMaximazedModal || isMinimizedModal);
60
-
61
- const onGestureEvent = Animated.event(
62
- [{ nativeEvent: { translationY: dragVideoPlayerY } }],
63
- { useNativeDriver: true }
64
- );
65
-
66
- const onHandlerStateChange = React.useCallback(
67
- ({ nativeEvent }) => {
68
- if (nativeEvent.oldState === State.ACTIVE) {
69
- // eslint-disable-next-line prefer-const
70
- const { velocityY, translationY } = nativeEvent;
71
- const preparedTranslationY = Math.abs(translationY);
72
- const dragToss = 0.05;
73
-
74
- if (videoModalMode === "MAXIMIZED") {
75
- if (translationY > 0) {
76
- const endOffsetY =
77
- lastSnap + preparedTranslationY + dragToss * velocityY + 200;
78
-
79
- let destSnapPoint = modalSnapPoints[0];
80
-
81
- for (const snapPoint of modalSnapPoints) {
82
- const distFromSnap = Math.abs(snapPoint - endOffsetY);
83
-
84
- if (distFromSnap < Math.abs(destSnapPoint - endOffsetY)) {
85
- destSnapPoint = snapPoint;
86
- }
87
- }
88
-
89
- setLastSnap(destSnapPoint);
90
-
91
- if (destSnapPoint === modalSnapPoints[0]) {
92
- setPlayerAnimationState(PlayerAnimationStateEnum.maximize);
93
- } else {
94
- lastScrollY.setValue(0);
95
- lastScrollYValue.current = 0;
96
- setPlayerAnimationState(PlayerAnimationStateEnum.minimize);
97
- }
98
- }
99
- } else if (videoModalMode === "MINIMIZED") {
100
- if (translationY < 0) {
101
- // from mini to full
102
- setLastSnap(modalSnapPoints[0]);
103
-
104
- translateYOffset.setValue(
105
- modalSnapPoints[1] - preparedTranslationY
106
- );
107
-
108
- setPlayerAnimationState(PlayerAnimationStateEnum.maximize);
109
- } else {
110
- resetPlayerAnimationState();
111
- }
112
- }
113
- }
114
- },
115
- [lastSnap, modalSnapPoints, videoModalMode]
116
- );
117
-
118
- React.useEffect(() => {
119
- const dragVideoPlayerYListenerId = dragVideoPlayerY.addListener(
120
- ({ value }) => {
121
- if (
122
- (isMinimizedModal && value >= 0) ||
123
- (isMaximazedModal && value <= 0)
124
- ) {
125
- if (playerAnimationState === PlayerAnimationStateEnum.drag_player) {
126
- translateYOffset.setValue(
127
- modalSnapPoints[isMinimizedModal ? 1 : 0]
128
- );
129
- }
130
- } else {
131
- const preparedValue = Math.round(Math.abs(value));
132
-
133
- if (
134
- preparedValue > 0 &&
135
- playerAnimationState !== PlayerAnimationStateEnum.drag_scroll
136
- ) {
137
- if (playerAnimationState !== PlayerAnimationStateEnum.drag_player) {
138
- isMinimizedModal && setStartComponentsAnimation(true);
139
- setPlayerAnimationState(PlayerAnimationStateEnum.drag_player);
140
- }
141
-
142
- translateYOffset.setValue(
143
- isMaximazedModal
144
- ? preparedValue
145
- : modalSnapPoints[1] - preparedValue
146
- );
147
- }
148
- }
149
- }
150
- );
151
-
152
- return () => {
153
- dragVideoPlayerY.removeListener(dragVideoPlayerYListenerId);
154
- };
155
- }, [playerAnimationState, isMinimizedModal, isMaximazedModal]);
156
-
157
- return (
158
- <PanGestureHandler
159
- enabled={isEnablePanGesture}
160
- onGestureEvent={onGestureEvent}
161
- onHandlerStateChange={onHandlerStateChange}
162
- >
163
- <Animated.View style={generalStyles.container}>{children}</Animated.View>
164
- </PanGestureHandler>
165
- );
166
- };
167
-
168
- export const AnimatedVideoPlayerComponent = ({ children }: Props) => {
169
- const {
170
- videoModalState: { visible },
171
- } = useNavigation();
172
-
173
- const Component = !isTV() && visible ? AnimatedVideoPlayer : React.Fragment;
174
-
175
- return <Component>{children}</Component>;
176
- };
@@ -1,93 +0,0 @@
1
- import React from "react";
2
- import { Animated, StyleSheet } from "react-native";
3
-
4
- import { useNavigation } from "@applicaster/zapp-react-native-utils/reactHooks";
5
-
6
- import {
7
- useModalAnimationContext,
8
- PlayerAnimationStateEnum,
9
- } from "@applicaster/zapp-react-native-ui-components/Components/VideoModal/ModalAnimation";
10
- import { isTV } from "@applicaster/zapp-react-native-utils/reactUtils";
11
-
12
- const generalStyles = StyleSheet.create({
13
- container: {
14
- flex: 1,
15
- width: "100%",
16
- position: "absolute",
17
- zIndex: 201,
18
- },
19
- });
20
-
21
- type Props = {
22
- children: React.ReactNode;
23
- };
24
-
25
- export const AnimatedVideoPlayer = ({ children }: Props) => {
26
- const {
27
- playerAnimationState,
28
- setPlayerAnimationState,
29
- animatedValues: { translateYOffset, dragVideoPlayerY },
30
- modalSnapPoints,
31
- setStartComponentsAnimation,
32
- } = useModalAnimationContext();
33
-
34
- const {
35
- videoModalState: { mode: videoModalMode },
36
- } = useNavigation();
37
-
38
- const isMaximazedModal = videoModalMode === "MAXIMIZED";
39
- const isMinimizedModal = videoModalMode === "MINIMIZED";
40
-
41
- React.useEffect(() => {
42
- const dragVideoPlayerYListenerId = dragVideoPlayerY.addListener(
43
- ({ value }) => {
44
- if (
45
- (isMinimizedModal && value >= 0) ||
46
- (isMaximazedModal && value <= 0)
47
- ) {
48
- if (playerAnimationState === PlayerAnimationStateEnum.drag_player) {
49
- translateYOffset.setValue(
50
- modalSnapPoints[isMinimizedModal ? 1 : 0]
51
- );
52
- }
53
- } else {
54
- const preparedValue = Math.round(Math.abs(value));
55
-
56
- if (
57
- preparedValue > 0 &&
58
- playerAnimationState !== PlayerAnimationStateEnum.drag_scroll
59
- ) {
60
- if (playerAnimationState !== PlayerAnimationStateEnum.drag_player) {
61
- isMinimizedModal && setStartComponentsAnimation(true);
62
- setPlayerAnimationState(PlayerAnimationStateEnum.drag_player);
63
- }
64
-
65
- translateYOffset.setValue(
66
- isMaximazedModal
67
- ? preparedValue
68
- : modalSnapPoints[1] - preparedValue
69
- );
70
- }
71
- }
72
- }
73
- );
74
-
75
- return () => {
76
- dragVideoPlayerY.removeListener(dragVideoPlayerYListenerId);
77
- };
78
- }, [playerAnimationState, isMinimizedModal, isMaximazedModal]);
79
-
80
- return (
81
- <Animated.View style={generalStyles.container}>{children}</Animated.View>
82
- );
83
- };
84
-
85
- export const AnimatedVideoPlayerComponent = ({ children }: Props) => {
86
- const {
87
- videoModalState: { visible },
88
- } = useNavigation();
89
-
90
- const Component = !isTV() && visible ? AnimatedVideoPlayer : React.Fragment;
91
-
92
- return <Component>{children}</Component>;
93
- };