@applicaster/zapp-react-native-ui-components 12.0.0-rc.3 → 12.0.0-rc.30

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 (66) hide show
  1. package/Components/AnimatedInOut/index.tsx +18 -10
  2. package/Components/AudioPlayer/AudioPlayer.tsx +9 -1
  3. package/Components/AudioPlayer/__tests__/__snapshots__/audioPlayer.test.js.snap +5 -0
  4. package/Components/AudioPlayer/helpers.tsx +1 -0
  5. package/Components/FocusableList/FocusableChild.ts +24 -14
  6. package/Components/FocusableList/FocusableItem.tsx +1 -1
  7. package/Components/FocusableList/FocusableListItemWrapper.tsx +76 -0
  8. package/Components/FocusableList/hooks/useCellState.android.ts +3 -1
  9. package/Components/FocusableList/index.tsx +26 -25
  10. package/Components/GeneralContentScreen/GeneralContentScreen.tsx +11 -8
  11. package/Components/HandlePlayable/HandlePlayable.tsx +1 -1
  12. package/Components/HookRenderer/index.tsx +1 -4
  13. package/Components/Image/Image.android.tsx +33 -2
  14. package/Components/Layout/TV/__tests__/__snapshots__/index.test.tsx.snap +1 -41
  15. package/Components/Layout/TV/__tests__/index.test.tsx +0 -21
  16. package/Components/Layout/TV/index.tsx +20 -36
  17. package/Components/MasterCell/DefaultComponents/BorderContainerView/index.tsx +0 -1
  18. package/Components/MasterCell/DefaultComponents/CellBadge/index.tsx +21 -8
  19. package/Components/MasterCell/SharedUI/CollapsibleTextContainer/index.ts +8 -10
  20. package/Components/MasterCell/utils/index.ts +2 -2
  21. package/Components/ModalComponent/BottomSheetModalContent.tsx +121 -0
  22. package/Components/ModalComponent/Button/Item.tsx +82 -0
  23. package/Components/ModalComponent/Button/ItemIcon.tsx +60 -0
  24. package/Components/ModalComponent/Button/ItemLabel.tsx +101 -0
  25. package/Components/ModalComponent/Button/assets.ts +4 -0
  26. package/Components/ModalComponent/Button/index.tsx +111 -0
  27. package/Components/ModalComponent/Header/CloseButton.tsx +59 -0
  28. package/Components/ModalComponent/Header/Title.tsx +70 -0
  29. package/Components/ModalComponent/Header/assets.ts +4 -0
  30. package/Components/ModalComponent/Header/index.tsx +71 -0
  31. package/Components/ModalComponent/Header/utils.ts +79 -0
  32. package/Components/ModalComponent/index.tsx +38 -0
  33. package/Components/ModalComponent/utils.ts +126 -0
  34. package/Components/PlayerContainer/ErrorDisplay/ErrorDisplay.tsx +4 -7
  35. package/Components/River/ComponentsMap/ComponentsMap.tsx +25 -0
  36. package/Components/River/River.tsx +8 -5
  37. package/Components/River/TV/River.tsx +2 -2
  38. package/Components/River/__tests__/__snapshots__/componentsMap.test.js.snap +1 -1
  39. package/Components/River/useScreenConfiguration.ts +5 -6
  40. package/Components/RouteManager/__tests__/__snapshots__/routeManager.test.js.snap +1 -0
  41. package/Components/RouteManager/__tests__/routeManager.test.js +9 -2
  42. package/Components/RouteManager/index.tsx +4 -2
  43. package/Components/Screen/__tests__/Screen.test.tsx +43 -35
  44. package/Components/Screen/__tests__/__snapshots__/Screen.test.tsx.snap +10 -6
  45. package/Components/Screen/__tests__/navigationHandler.test.ts +1 -178
  46. package/Components/Screen/index.tsx +84 -45
  47. package/Components/Screen/navigationHandler.ts +0 -82
  48. package/Components/Screen/orientationHandler.ts +1 -1
  49. package/Components/ScreenResolver/index.tsx +1 -1
  50. package/Components/TrackedView/index.tsx +6 -3
  51. package/Components/VideoLive/LiveImageManager.ts +42 -13
  52. package/Components/VideoLive/PlayerLiveImageComponent.tsx +79 -73
  53. package/Components/VideoModal/PlayerDetails.tsx +3 -0
  54. package/Components/VideoModal/PlayerWrapper.tsx +66 -63
  55. package/Components/VideoModal/__tests__/PlayerDetails.test.tsx +0 -2
  56. package/Components/VideoModal/__tests__/PlayerWrapper.test.tsx +4 -4
  57. package/Components/VideoModal/__tests__/__snapshots__/PlayerWrapper.test.tsx.snap +10 -18
  58. package/Components/VideoModal/hooks/useModalSize.ts +13 -4
  59. package/Components/Viewport/ViewportAware/__tests__/viewportAware.test.js +26 -21
  60. package/Components/Viewport/ViewportTracker/__tests__/viewportTracker.test.js +4 -5
  61. package/Components/ZappUIComponent/index.tsx +22 -12
  62. package/Components/index.js +2 -0
  63. package/Contexts/ScreenContext/index.tsx +1 -4
  64. package/Decorators/RiverResolver/index.tsx +0 -4
  65. package/Decorators/index.tsx +0 -4
  66. package/package.json +5 -6
@@ -35,13 +35,11 @@ exports[`PlayerWrapper renders inline 1`] = `
35
35
  "zIndex": 200,
36
36
  },
37
37
  Object {
38
- "height": 421.875,
39
- "width": 300,
38
+ "aspectRatio": 1.7777777777777777,
39
+ "height": undefined,
40
+ "width": "100%",
40
41
  },
41
42
  Object {},
42
- Object {
43
- "height": 431.875,
44
- },
45
43
  Object {},
46
44
  ]
47
45
  }
@@ -105,13 +103,11 @@ exports[`PlayerWrapper renders inline and docked 1`] = `
105
103
  "zIndex": 200,
106
104
  },
107
105
  Object {
106
+ "aspectRatio": undefined,
108
107
  "height": 50,
109
- "width": 300,
108
+ "width": "100%",
110
109
  },
111
110
  Object {},
112
- Object {
113
- "height": 50,
114
- },
115
111
  Object {},
116
112
  ]
117
113
  }
@@ -163,13 +159,11 @@ exports[`PlayerWrapper renders inline on tablet in landscape orientation 1`] = `
163
159
  "zIndex": 200,
164
160
  },
165
161
  Object {
166
- "height": 109.6875,
162
+ "aspectRatio": 1.7777777777777777,
163
+ "height": undefined,
167
164
  "width": 195,
168
165
  },
169
166
  Object {},
170
- Object {
171
- "height": 119.6875,
172
- },
173
167
  Object {},
174
168
  ]
175
169
  }
@@ -233,13 +227,11 @@ exports[`PlayerWrapper renders properly 1`] = `
233
227
  "zIndex": 200,
234
228
  },
235
229
  Object {
236
- "height": 800,
237
- "width": 300,
230
+ "aspectRatio": 1.7786666666666666,
231
+ "height": undefined,
232
+ "width": "100%",
238
233
  },
239
234
  Object {},
240
- Object {
241
- "height": 800,
242
- },
243
235
  Object {},
244
236
  ]
245
237
  }
@@ -1,4 +1,4 @@
1
- import React from "react";
1
+ import * as React from "react";
2
2
  import { Dimensions } from "react-native";
3
3
  import { useIsTabletLandscape } from "@applicaster/zapp-react-native-utils/reactHooks/device/useMemoizedIsTablet";
4
4
  import {
@@ -39,13 +39,22 @@ export const useModalSize = (): Size => {
39
39
  MODAL_SIZE_FOR_PORTRAIT
40
40
  );
41
41
 
42
- const setNewModalSize = (size, log) => {
43
- setModalSize(size);
42
+ const setNewModalSize = React.useCallback((newSize, log) => {
43
+ setModalSize((oldSize) => {
44
+ if (
45
+ oldSize.height === newSize.height &&
46
+ oldSize.width === newSize.width
47
+ ) {
48
+ return oldSize;
49
+ }
50
+
51
+ return newSize;
52
+ });
44
53
 
45
54
  logger.debug({
46
55
  message: log,
47
56
  });
48
- };
57
+ }, []);
49
58
 
50
59
  const isTabletLandscape = useIsTabletLandscape();
51
60
 
@@ -1,35 +1,38 @@
1
1
  /* eslint-disable react/prop-types */
2
2
 
3
- jest.mock("react-native", () => {
4
- const { ScrollView } = jest.requireActual("react-native");
3
+ import * as React from "react";
4
+
5
+ import { shallow } from "enzyme";
6
+ import { create, act } from "react-test-renderer";
7
+ import { shallowToJson } from "enzyme-to-json";
8
+
9
+ import { ViewportEvents } from "../../ViewportEvents";
10
+
11
+ jest.useFakeTimers();
5
12
 
13
+ jest.mock("react-native/Libraries/ReactNative/UIManager", () => {
6
14
  return {
7
- ScrollView,
8
- UIManager: {
9
- measureLayout: jest.fn((handle, parent, error, success) => {
10
- success(100, 100, 400, 400);
11
- }),
12
- },
13
- findNodeHandle: jest.fn(() => 1234),
14
- Animated: {
15
- timing: jest.fn(() => ({ start: jest.fn() })),
15
+ ...jest.requireActual("react-native/Libraries/ReactNative/NativeUIManager"),
16
+ measureLayout: (handle, parent, error, success) => {
17
+ success(100, 100, 400, 400);
16
18
  },
17
19
  };
18
20
  });
19
21
 
20
- import * as React from "react";
22
+ jest.mock("react-native/Libraries/Renderer/shims/ReactNative", () => ({
23
+ ...jest.requireActual("react-native/Libraries/Renderer/shims/ReactNative"),
24
+ findNodeHandle: () => 1234,
25
+ }));
21
26
 
22
- import { shallow } from "enzyme";
23
- import TestRenderer from "react-test-renderer";
24
- import { act } from "@testing-library/react-hooks";
25
- import { shallowToJson } from "enzyme-to-json";
27
+ const ReactNative = require("react-native");
26
28
 
27
- import { ViewportEvents } from "../../ViewportEvents";
29
+ const { Animated, ScrollView } = ReactNative;
30
+
31
+ Animated.timing = jest.fn(() => ({ start: jest.fn() }));
28
32
 
29
33
  const viewportEventsManager = new ViewportEvents(true);
30
34
 
31
- const { ScrollView } = require("react-native");
32
- const { ViewportAware } = require("../index");
35
+ const { ViewportAware } = require("../");
33
36
  const { ViewportTracker } = require("../../ViewportTracker");
34
37
 
35
38
  const TestComponent = (props) => {
@@ -116,7 +119,7 @@ describe("<ViewportAware />", () => {
116
119
  });
117
120
 
118
121
  it("invokes the onViewportEnter function when entering the viewport", () => {
119
- const wrapper = TestRenderer.create(
122
+ const wrapper = create(
120
123
  getWrapper(() => (
121
124
  <TestComponent
122
125
  preTriggerRatio={0.1}
@@ -134,6 +137,8 @@ describe("<ViewportAware />", () => {
134
137
  width: 1920,
135
138
  height: 1080,
136
139
  });
140
+
141
+ jest.runAllTimers();
137
142
  });
138
143
 
139
144
  expect(wrapper.toJSON()).toMatchSnapshot();
@@ -151,7 +156,7 @@ describe("<ViewportAware />", () => {
151
156
  });
152
157
 
153
158
  it("invokes the onViewportLeave function when leaving the viewport", () => {
154
- const wrapper = TestRenderer.create(
159
+ const wrapper = create(
155
160
  getWrapper(() => (
156
161
  <TestComponent
157
162
  preTriggerRatio={0.1}
@@ -5,11 +5,10 @@ import { ViewportEvents } from "../../ViewportEvents";
5
5
 
6
6
  const TestComponent = () => <ScrollView />;
7
7
 
8
- jest.mock("react-native", () => {
9
- return {
10
- findNodeHandle: jest.fn(() => 1234),
11
- };
12
- });
8
+ jest.mock("react-native/Libraries/Renderer/shims/ReactNative", () => ({
9
+ ...jest.requireActual("react-native/Libraries/Renderer/shims/ReactNative"),
10
+ findNodeHandle: () => 1234,
11
+ }));
13
12
 
14
13
  const viewportEventsManager = new ViewportEvents(true);
15
14
 
@@ -10,7 +10,7 @@ import {
10
10
 
11
11
  import { Placeholder } from "./Placeholder";
12
12
  import { useInitialLoading } from "./hooks";
13
- import { FocusableContext } from "../Focusable/index.android";
13
+ import { useFocusable } from "../Focusable/index.android";
14
14
 
15
15
  type ReactComponent = React.ComponentType<any>;
16
16
 
@@ -26,13 +26,23 @@ type ZappUIComponentType = {
26
26
  options?: Options;
27
27
  };
28
28
 
29
- const renderComponent = (Component: ReactComponent | undefined, props) => {
30
- if (Component) {
31
- const { component, parent } = props;
29
+ type RenderComponentProps = any;
30
+
31
+ const RenderComponent = (
32
+ Component: ReactComponent | undefined,
33
+ args: RenderComponentProps
34
+ ) => {
35
+ const { component, parent } = args;
32
36
 
37
+ const contextValue = React.useMemo(
38
+ () => ({ ...component, parent }),
39
+ [component, parent]
40
+ );
41
+
42
+ if (Component) {
33
43
  return (
34
- <UIComponentContext.Provider value={{ ...component, parent }}>
35
- <Component {...props} />
44
+ <UIComponentContext.Provider value={contextValue}>
45
+ <Component {...args} />
36
46
  </UIComponentContext.Provider>
37
47
  );
38
48
  }
@@ -117,7 +127,7 @@ New signature: {Component, ErrorComponent, LoadingComponent, options}`
117
127
  props;
118
128
 
119
129
  const parent = useUIComponentContext();
120
- const { setIsFocusable } = React.useContext(FocusableContext) || {};
130
+ const { setIsFocusable } = useFocusable();
121
131
 
122
132
  const isLoading = toBooleanWithDefaultFalse(zappPipesData?.loading);
123
133
  const isInitialLoading = useInitialLoading(isLoading);
@@ -154,11 +164,11 @@ New signature: {Component, ErrorComponent, LoadingComponent, options}`
154
164
  }, [props.component?.rules?.component_cells_focusable]);
155
165
 
156
166
  if (isDataSourceEmpty(props) && allowsEmptyDataSource) {
157
- return renderComponent(Component, componentProps);
167
+ return RenderComponent(Component, componentProps);
158
168
  }
159
169
 
160
- if (isLoading && !zappPipesData.data && isInitialLoading) {
161
- return renderComponent(LoadingComponent || Placeholder, componentProps);
170
+ if (isLoading && !zappPipesData?.data && isInitialLoading) {
171
+ return RenderComponent(LoadingComponent || Placeholder, componentProps);
162
172
  }
163
173
 
164
174
  if (zappPipesData?.error) {
@@ -167,9 +177,9 @@ New signature: {Component, ErrorComponent, LoadingComponent, options}`
167
177
  index: componentIndex,
168
178
  });
169
179
 
170
- return renderComponent(ErrorComponent, componentProps);
180
+ return RenderComponent(ErrorComponent, componentProps);
171
181
  }
172
182
 
173
- return renderComponent(Component, componentProps);
183
+ return RenderComponent(Component, componentProps);
174
184
  };
175
185
  }
@@ -4,6 +4,8 @@ export { River } from "./River";
4
4
 
5
5
  export { PlayerContainer } from "./PlayerContainer";
6
6
 
7
+ export { ModalComponent } from "./ModalComponent";
8
+
7
9
  export { ContentScreen } from "./ContentScreen";
8
10
 
9
11
  export { TextInputTv } from "./TextInputTv";
@@ -1,13 +1,12 @@
1
1
  import React, { createContext, ReactNode, useMemo, useState } from "react";
2
- import { usePickFromState } from "@applicaster/zapp-react-native-redux/hooks";
3
2
  import {
4
3
  useCurrentScreenData,
5
4
  useNavigation,
6
5
  useRoute,
6
+ isNavBarVisible,
7
7
  } from "@applicaster/zapp-react-native-utils/reactHooks";
8
8
  import { useModalNavigationContext } from "@applicaster/zapp-react-native-ui-components/Contexts/ModalNavigationContext";
9
9
  import { useNestedNavigationContext } from "@applicaster/zapp-react-native-ui-components/Contexts/NestedNavigationContext";
10
- import { isNavBarVisible } from "../../Components/Screen/navigationHandler";
11
10
 
12
11
  type ScreenContextType = {
13
12
  navBar: {
@@ -42,8 +41,6 @@ export function ScreenContextProvider({
42
41
  }) {
43
42
  const { data, modalData, videoModalState, canGoBack } = useNavigation();
44
43
 
45
- const { rivers: _rivers } = usePickFromState(["rivers", "plugins"]);
46
-
47
44
  // There are 4 route scenarios
48
45
  // For regular screens take date from navigator stack.
49
46
  // is path is model grab screenData from modal state
@@ -1,9 +1,5 @@
1
1
  import * as React from "react";
2
2
 
3
- import type {
4
- ZappComponent,
5
- ZappRivers,
6
- } from "@applicaster/zapp-react-native-flow-types";
7
3
  import { usePickFromState } from "@applicaster/zapp-react-native-redux/hooks";
8
4
  import { isTV } from "@applicaster/zapp-react-native-utils/reactUtils";
9
5
  import { usePathname } from "@applicaster/zapp-react-native-utils/reactHooks/navigation";
@@ -1,9 +1,5 @@
1
1
  import { zappPipesDataConnector } from "./ZappPipesDataConnector";
2
2
  import * as R from "ramda";
3
- import type {
4
- ZappComponent,
5
- ZappDecorator,
6
- } from "@applicaster/zapp-react-native-flow-types";
7
3
 
8
4
  import { withNavigator } from "./Navigator";
9
5
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@applicaster/zapp-react-native-ui-components",
3
- "version": "12.0.0-rc.3",
3
+ "version": "12.0.0-rc.30",
4
4
  "description": "Applicaster Zapp React Native ui components for the Quick Brick App",
5
5
  "main": "index.js",
6
6
  "types": "index.d.ts",
@@ -29,16 +29,15 @@
29
29
  },
30
30
  "homepage": "https://github.com/applicaster/quickbrick#readme",
31
31
  "devDependencies": {
32
- "@applicaster/zapp-react-native-flow-types": "1.5.0",
33
32
  "@types/react": "17.0.2",
34
33
  "@types/react-native": "0.69.6",
35
34
  "redux-mock-store": "^1.5.3"
36
35
  },
37
36
  "dependencies": {
38
- "@applicaster/applicaster-types": "12.0.0-rc.3",
39
- "@applicaster/zapp-react-native-bridge": "12.0.0-rc.3",
40
- "@applicaster/zapp-react-native-redux": "12.0.0-rc.3",
41
- "@applicaster/zapp-react-native-utils": "12.0.0-rc.3",
37
+ "@applicaster/applicaster-types": "12.0.0-rc.30",
38
+ "@applicaster/zapp-react-native-bridge": "12.0.0-rc.30",
39
+ "@applicaster/zapp-react-native-redux": "12.0.0-rc.30",
40
+ "@applicaster/zapp-react-native-utils": "12.0.0-rc.30",
42
41
  "promise": "^8.3.0",
43
42
  "react-router-native": "^5.1.2",
44
43
  "url": "^0.11.0",