@applicaster/zapp-react-native-ui-components 15.0.0-rc.7 → 15.0.0-rc.70

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 (88) 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 +8 -3
  4. package/Components/Cell/FocusableWrapper.tsx +47 -0
  5. package/Components/Cell/TvOSCellComponent.tsx +106 -19
  6. package/Components/Focusable/Focusable.tsx +4 -2
  7. package/Components/Focusable/FocusableTvOS.tsx +18 -1
  8. package/Components/Focusable/__tests__/__snapshots__/FocusableTvOS.test.tsx.snap +1 -0
  9. package/Components/FocusableGroup/FocusableTvOS.tsx +32 -1
  10. package/Components/GeneralContentScreen/utils/useCurationAPI.ts +14 -3
  11. package/Components/HandlePlayable/HandlePlayable.tsx +17 -65
  12. package/Components/HandlePlayable/const.ts +3 -0
  13. package/Components/HandlePlayable/utils.ts +74 -0
  14. package/Components/Layout/TV/LayoutBackground.tsx +5 -2
  15. package/Components/Layout/TV/ScreenContainer.tsx +2 -6
  16. package/Components/Layout/TV/index.tsx +3 -4
  17. package/Components/Layout/TV/index.web.tsx +3 -4
  18. package/Components/LinkHandler/LinkHandler.tsx +2 -2
  19. package/Components/MasterCell/DefaultComponents/BorderContainerView/__tests__/index.test.tsx +16 -1
  20. package/Components/MasterCell/DefaultComponents/BorderContainerView/index.tsx +30 -2
  21. package/Components/MasterCell/DefaultComponents/Image/Image.android.tsx +5 -1
  22. package/Components/MasterCell/DefaultComponents/Image/Image.ios.tsx +11 -3
  23. package/Components/MasterCell/DefaultComponents/Image/Image.web.tsx +9 -1
  24. package/Components/MasterCell/DefaultComponents/Image/hooks/useImage.ts +15 -14
  25. package/Components/MasterCell/DefaultComponents/LiveImage/index.tsx +10 -6
  26. package/Components/MasterCell/DefaultComponents/Text/index.tsx +8 -8
  27. package/Components/MasterCell/index.tsx +2 -0
  28. package/Components/MasterCell/utils/__tests__/resolveColor.test.js +82 -3
  29. package/Components/MasterCell/utils/index.ts +61 -31
  30. package/Components/MeasurmentsPortal/MeasurementsPortal.tsx +102 -87
  31. package/Components/MeasurmentsPortal/__tests__/MeasurementsPortal.test.tsx +355 -0
  32. package/Components/OfflineHandler/NotificationView/NotificationView.tsx +2 -2
  33. package/Components/OfflineHandler/NotificationView/__tests__/index.test.tsx +17 -18
  34. package/Components/OfflineHandler/__tests__/index.test.tsx +27 -18
  35. package/Components/PlayerContainer/PlayerContainer.tsx +51 -55
  36. package/Components/PlayerContainer/useRestrictMobilePlayback.tsx +101 -0
  37. package/Components/PlayerImageBackground/index.tsx +3 -22
  38. package/Components/River/TV/River.tsx +31 -14
  39. package/Components/River/TV/index.tsx +8 -4
  40. package/Components/River/TV/utils/__tests__/toStringOrEmpty.test.ts +30 -0
  41. package/Components/River/TV/utils/index.ts +4 -0
  42. package/Components/River/TV/withFocusableGroupForContent.tsx +71 -0
  43. package/Components/Screen/TV/hooks/useInitialFocus.ts +14 -4
  44. package/Components/Screen/TV/index.web.tsx +4 -2
  45. package/Components/Screen/__tests__/Screen.test.tsx +65 -42
  46. package/Components/Screen/__tests__/__snapshots__/Screen.test.tsx.snap +68 -42
  47. package/Components/Screen/hooks.ts +2 -3
  48. package/Components/Screen/index.tsx +24 -8
  49. package/Components/Screen/navigationHandler.ts +49 -24
  50. package/Components/Screen/orientationHandler.ts +3 -3
  51. package/Components/ScreenResolver/index.tsx +13 -7
  52. package/Components/ScreenRevealManager/ScreenRevealManager.ts +40 -8
  53. package/Components/ScreenRevealManager/__tests__/ScreenRevealManager.test.ts +86 -69
  54. package/Components/ScreenRevealManager/utils/index.ts +23 -0
  55. package/Components/ScreenRevealManager/withScreenRevealManager.tsx +54 -24
  56. package/Components/Tabs/TV/Tabs.tsx +20 -3
  57. package/Components/Transitioner/Scene.tsx +15 -2
  58. package/Components/Transitioner/index.js +3 -3
  59. package/Components/VideoLive/__tests__/__snapshots__/PlayerLiveImageComponent.test.tsx.snap +1 -0
  60. package/Components/VideoModal/ModalAnimation/ModalAnimationContext.tsx +118 -171
  61. package/Components/VideoModal/ModalAnimation/index.ts +2 -13
  62. package/Components/VideoModal/ModalAnimation/utils.ts +1 -327
  63. package/Components/VideoModal/PlayerWrapper.tsx +14 -88
  64. package/Components/VideoModal/VideoModal.tsx +1 -5
  65. package/Components/VideoModal/__tests__/PlayerWrapper.test.tsx +1 -0
  66. package/Components/VideoModal/hooks/useModalSize.ts +10 -5
  67. package/Components/VideoModal/playerWrapperStyle.ts +70 -0
  68. package/Components/VideoModal/playerWrapperUtils.ts +91 -0
  69. package/Components/VideoModal/utils.ts +19 -9
  70. package/Decorators/Analytics/index.tsx +6 -5
  71. package/Decorators/ConfigurationWrapper/__tests__/__snapshots__/withConfigurationProvider.test.tsx.snap +1 -0
  72. package/Decorators/ConfigurationWrapper/const.ts +1 -0
  73. package/Decorators/ZappPipesDataConnector/__tests__/zappPipesDataConnector.test.js +1 -1
  74. package/Decorators/ZappPipesDataConnector/index.tsx +2 -2
  75. package/Decorators/ZappPipesDataConnector/resolvers/StaticFeedResolver.tsx +1 -1
  76. package/Helpers/DataSourceHelper/__tests__/itemLimitForData.test.ts +80 -0
  77. package/Helpers/DataSourceHelper/index.ts +19 -0
  78. package/index.d.ts +7 -0
  79. package/package.json +6 -5
  80. package/Components/River/TV/withTVEventHandler.tsx +0 -27
  81. package/Components/VideoModal/ModalAnimation/AnimatedPlayerModalWrapper.tsx +0 -60
  82. package/Components/VideoModal/ModalAnimation/AnimatedScrollModal.tsx +0 -417
  83. package/Components/VideoModal/ModalAnimation/AnimatedScrollModal.web.tsx +0 -294
  84. package/Components/VideoModal/ModalAnimation/AnimatedVideoPlayerComponent.tsx +0 -176
  85. package/Components/VideoModal/ModalAnimation/AnimatedVideoPlayerComponent.web.tsx +0 -93
  86. package/Components/VideoModal/ModalAnimation/AnimationComponent.tsx +0 -500
  87. package/Components/VideoModal/ModalAnimation/__tests__/getMoveUpValue.test.ts +0 -108
  88. package/Helpers/DataSourceHelper/index.js +0 -19
@@ -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
- };