@applicaster/zapp-react-native-ui-components 16.0.0-alpha.1833861900 → 16.0.0-alpha.2024822855

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 (113) hide show
  1. package/Components/AudioPlayer/tv/__tests__/audioPlayer.test.js +19 -0
  2. package/Components/AudioPlayer/tv/__tests__/index.test.tsx +120 -0
  3. package/Components/AudioPlayer/tv/index.tsx +5 -1
  4. package/Components/CellRendererResolver/index.ts +1 -1
  5. package/Components/GeneralContentScreen/GeneralContentScreenHookAdapter.tsx +39 -0
  6. package/Components/GeneralContentScreen/__tests__/GeneralContentScreenHookAdapter.test.tsx +64 -0
  7. package/Components/GeneralContentScreen/__tests__/HookContentFocusGroup.web.test.tsx +91 -0
  8. package/Components/GeneralContentScreen/hookAdapter/__tests__/networkService.test.ts +74 -0
  9. package/Components/GeneralContentScreen/hookAdapter/__tests__/runInBackground.test.ts +139 -0
  10. package/Components/GeneralContentScreen/hookAdapter/__tests__/validationHelper.test.ts +124 -0
  11. package/Components/GeneralContentScreen/hookAdapter/logger.ts +6 -0
  12. package/Components/GeneralContentScreen/hookAdapter/networkService.ts +53 -0
  13. package/Components/GeneralContentScreen/hookAdapter/runInBackground.ts +48 -0
  14. package/Components/GeneralContentScreen/hookAdapter/validationHelper.ts +72 -0
  15. package/Components/GeneralContentScreen/hookFocus/index.tsx +13 -0
  16. package/Components/GeneralContentScreen/hookFocus/index.web.tsx +69 -0
  17. package/Components/GeneralContentScreen/index.ts +2 -0
  18. package/Components/Layout/FullWidthRow.tsx +38 -0
  19. package/Components/MasterCell/DefaultComponents/ActionButtonsCore/__tests__/placement.test.ts +47 -21
  20. package/Components/MasterCell/DefaultComponents/ActionButtonsCore/placement.ts +34 -6
  21. package/Components/MasterCell/DefaultComponents/Image/hoc/utils/__tests__/withDimensions.test.ts +420 -125
  22. package/Components/MasterCell/DefaultComponents/Image/hoc/utils/index.ts +114 -19
  23. package/Components/MasterCell/DefaultComponents/Image/hoc/withDimensions.tsx +19 -8
  24. package/Components/MasterCell/DefaultComponents/ImageContainer/index.tsx +5 -3
  25. package/Components/MasterCell/DefaultComponents/PressableView.tsx +29 -9
  26. package/Components/MasterCell/DefaultComponents/Text/hooks/useText.ts +4 -0
  27. package/Components/MasterCell/DefaultComponents/Toggle.tsx +35 -6
  28. package/Components/MasterCell/DefaultComponents/__tests__/Toggle.test.tsx +163 -0
  29. package/Components/MasterCell/DefaultComponents/mobile/MobileActionButtons/ActionButton.tsx +154 -100
  30. package/Components/MasterCell/DefaultComponents/mobile/MobileActionButtons/AssetComponent.tsx +15 -4
  31. package/Components/MasterCell/DefaultComponents/mobile/MobileActionButtons/Button.ts +56 -22
  32. package/Components/MasterCell/DefaultComponents/mobile/MobileActionButtons/Spacer.ts +6 -4
  33. package/Components/MasterCell/DefaultComponents/mobile/MobileActionButtons/TextLabelsContainer.ts +3 -1
  34. package/Components/MasterCell/DefaultComponents/mobile/MobileActionButtons/__tests__/PressableView.test.tsx +32 -21
  35. package/Components/MasterCell/DefaultComponents/mobile/MobileActionButtons/__tests__/index.test.ts +15 -4
  36. package/Components/MasterCell/DefaultComponents/mobile/MobileActionButtons/index.ts +23 -16
  37. package/Components/MasterCell/DefaultComponents/mobile/MobileActionButtons/utils/__tests__/insertButtons.test.ts +8 -3
  38. package/Components/MasterCell/DefaultComponents/mobile/MobileActionButtons/utils/index.ts +2 -2
  39. package/Components/MasterCell/DefaultComponents/tv/TvActionButtons/utils/__tests__/insertButtonsBetweenLabels.test.ts +45 -13
  40. package/Components/MasterCell/DefaultComponents/tv/TvActionButtons/utils/index.ts +2 -2
  41. package/Components/MasterCell/contexts/PressedStateContext.ts +3 -0
  42. package/Components/MasterCell/dataAdapter.ts +15 -5
  43. package/Components/MasterCell/hooks/index.ts +2 -0
  44. package/Components/MasterCell/hooks/usePressedState.ts +4 -0
  45. package/Components/MasterCell/index.tsx +30 -5
  46. package/Components/MasterCell/utils/__tests__/resolveColor.test.js +169 -132
  47. package/Components/MasterCell/utils/__tests__/resolveColorForProp.test.js +92 -0
  48. package/Components/MasterCell/utils/index.ts +85 -46
  49. package/Components/ModalComponent/AudioPlayer/Components/Action.tsx +314 -0
  50. package/Components/ModalComponent/AudioPlayer/Components/Button.tsx +395 -0
  51. package/Components/ModalComponent/AudioPlayer/Components/Header.tsx +763 -0
  52. package/Components/ModalComponent/AudioPlayer/Components/Input.tsx +653 -0
  53. package/Components/ModalComponent/AudioPlayer/Components/Item.tsx +874 -0
  54. package/Components/ModalComponent/AudioPlayer/Components/NowPlayingHeaderSection.tsx +89 -0
  55. package/Components/ModalComponent/AudioPlayer/Components/index.ts +11 -0
  56. package/Components/ModalComponent/AudioPlayer/utils/mergeStyles.ts +199 -0
  57. package/Components/ModalComponent/BottomSheetDragArea.tsx +33 -0
  58. package/Components/ModalComponent/BottomSheetModalContent.tsx +383 -42
  59. package/Components/ModalComponent/Button/index.tsx +5 -3
  60. package/Components/ModalComponent/Header/index.tsx +20 -7
  61. package/Components/ModalComponent/Header/utils.ts +1 -1
  62. package/Components/ModalComponent/ModalBlocksStyleContext.tsx +10 -0
  63. package/Components/ModalComponent/SortableList.tsx +142 -0
  64. package/Components/ModalComponent/SortableList.web.tsx +102 -0
  65. package/Components/ModalComponent/TextInputContent.tsx +100 -0
  66. package/Components/ModalComponent/__tests__/BottomSheetDragArea.test.tsx +74 -0
  67. package/Components/ModalComponent/__tests__/BottomSheetModalContent.test.tsx +238 -0
  68. package/Components/ModalComponent/__tests__/TextInputContent.test.tsx +120 -0
  69. package/Components/ModalComponent/__tests__/showTextInput.test.ts +95 -0
  70. package/Components/ModalComponent/index.tsx +11 -0
  71. package/Components/ModalComponent/presets/__tests__/getCell.test.ts +66 -0
  72. package/Components/ModalComponent/presets/dynamicCollectionCell.tsx +78 -0
  73. package/Components/ModalComponent/presets/index.ts +27 -0
  74. package/Components/ModalComponent/presets/selectableCell.tsx +28 -0
  75. package/Components/ModalComponent/presets/standardCell.tsx +41 -0
  76. package/Components/ModalComponent/presets/types.ts +35 -0
  77. package/Components/ModalComponent/showTextInput.ts +43 -0
  78. package/Components/ModalComponent/utils.ts +76 -20
  79. package/Components/OfflineHandler/__tests__/__snapshots__/index.test.tsx.snap +4 -85
  80. package/Components/OfflineHandler/__tests__/index.test.tsx +78 -18
  81. package/Components/OfflineHandler/hooks.ts +123 -0
  82. package/Components/OfflineHandler/index.tsx +51 -73
  83. package/Components/OfflineHandler/utils/index.ts +1 -13
  84. package/Components/PlayerContainer/PlayerContainer.tsx +18 -10
  85. package/Components/PlayerContainer/ProgramInfo/index.tsx +3 -4
  86. package/Components/PlayerContainer/__tests__/PlayerContainer.test.tsx +66 -13
  87. package/Components/PreloaderWrapper/index.tsx +1 -1
  88. package/Components/River/ComponentsMap/ComponentsMap.tsx +2 -2
  89. package/Components/River/__tests__/__snapshots__/componentsMap.test.js.snap +3 -15
  90. package/Components/Screen/index.tsx +8 -4
  91. package/Components/ScreenFeedLoader/ScreenFeedLoader.tsx +5 -3
  92. package/Components/ScreenResolverFeedProvider/ScreenResolverFeedProvider.tsx +1 -1
  93. package/Components/TopCutoffOverlay/index.tsx +2 -2
  94. package/Components/Transitioner/Transitioner.tsx +28 -17
  95. package/Components/VideoLive/LiveImageManager.ts +1 -1
  96. package/Components/ZappFrameworkComponents/BarView/BarView.tsx +12 -5
  97. package/Components/ZappFrameworkComponents/BarView/__tests__/BarView.test.tsx +2 -2
  98. package/Contexts/CachedDimensionsContext/__tests__/index.test.ts +154 -0
  99. package/Contexts/CachedDimensionsContext/index.ts +17 -2
  100. package/Helpers/ComponentCellSelectionHelper/index.js +0 -6
  101. package/Helpers/index.js +0 -39
  102. package/package.json +6 -5
  103. package/Components/OfflineHandler/NotificationView/NotificationView.lg.tsx +0 -112
  104. package/Components/OfflineHandler/NotificationView/NotificationView.samsung.tsx +0 -107
  105. package/Components/OfflineHandler/NotificationView/NotificationView.tsx +0 -153
  106. package/Components/OfflineHandler/NotificationView/__tests__/index.test.tsx +0 -66
  107. package/Components/OfflineHandler/NotificationView/utils.ts +0 -34
  108. package/Components/Screen/utils.ts +0 -16
  109. package/Helpers/Analytics/index.js +0 -95
  110. /package/Components/BackgroundImage/{BackgroundImage.tv.android.tsx → BackgroundImage.android.tv.tsx} +0 -0
  111. /package/Components/BackgroundImage/{BackgroundImage.tv.ios.tsx → BackgroundImage.ios.tv.tsx} +0 -0
  112. /package/Components/MasterCell/DefaultComponents/ButtonContainerView/{index.tv.android.tsx → index.android.tv.tsx} +0 -0
  113. /package/Decorators/ZappPipesDataConnector/__tests__/{Hero.js → Hero.tsx} +0 -0
@@ -1,66 +0,0 @@
1
- import React from "react";
2
- import { Text, Animated } from "react-native";
3
- import { render } from "@testing-library/react-native";
4
-
5
- import {
6
- NotificationView,
7
- onlinePhrase,
8
- offlinePhrase,
9
- } from "../NotificationView";
10
-
11
- jest.mock("@applicaster/zapp-react-native-redux", () => ({
12
- ...jest.requireActual("@applicaster/zapp-react-native-redux"),
13
- usePlugins: () => [
14
- {
15
- name: "offline experience",
16
- identifier: "offline-experience",
17
- type: "general",
18
- module: {
19
- useOfflineExperienceConfiguration: () => ({
20
- configurationFields: {},
21
- localizations: {
22
- offline_toast_message: "No internet connection",
23
- online_toast_message: "You are back online",
24
- },
25
- }),
26
- },
27
- },
28
- ],
29
- }));
30
-
31
- jest.mock("react-native-safe-area-context", () => ({
32
- useSafeAreaInsets: () => ({ top: 44 }),
33
- }));
34
-
35
- const dismiss = jest.fn();
36
-
37
- describe("NotificationView", () => {
38
- it("Show online message when Online", () => {
39
- const component = render(<NotificationView online dismiss={dismiss} />);
40
-
41
- expect(component.UNSAFE_getByType(Text).props.children).toBe(onlinePhrase);
42
- });
43
-
44
- it("Show offline message when Online", () => {
45
- const component = render(
46
- <NotificationView online={false} dismiss={dismiss} />
47
- );
48
-
49
- expect(component.UNSAFE_getByType(Text).props.children).toBe(offlinePhrase);
50
- });
51
-
52
- it("When hidden is false to true notification is visible", () => {
53
- const component = render(
54
- <NotificationView online={false} hidden={false} dismiss={dismiss} />
55
- );
56
-
57
- component.rerender(
58
- <NotificationView online={false} hidden={true} dismiss={dismiss} />
59
- );
60
-
61
- const animatedView = component.UNSAFE_getByType(Animated.View);
62
- const animatedViewStyles = animatedView.props.style;
63
-
64
- expect(animatedViewStyles.opacity).toBe(1);
65
- });
66
- });
@@ -1,34 +0,0 @@
1
- import * as React from "react";
2
- import { sessionStorage } from "@applicaster/zapp-react-native-bridge/ZappStorage/SessionStorage";
3
-
4
- export const NETWORK_STATUS_LOCALIZATIONS_KEY = "network_status_localizations";
5
-
6
- export const THEME_STORAGE_NAMESPACE = "quick-brick-theme";
7
-
8
- export function useNetworkStatusLocalizations() {
9
- const [storedLocalizations, setStoredLocalizations] = React.useState<Record<
10
- string,
11
- string
12
- > | null>(null);
13
-
14
- React.useEffect(() => {
15
- async function loadStoredLocalizations() {
16
- try {
17
- const stored = await sessionStorage.getItem(
18
- NETWORK_STATUS_LOCALIZATIONS_KEY,
19
- THEME_STORAGE_NAMESPACE
20
- );
21
-
22
- if (stored) {
23
- setStoredLocalizations(stored);
24
- }
25
- } catch (error) {
26
- console.error("Error loading network status localizations", error);
27
- }
28
- }
29
-
30
- loadStoredLocalizations();
31
- }, []);
32
-
33
- return storedLocalizations;
34
- }
@@ -1,16 +0,0 @@
1
- import { map, split, replace, compose, trim } from "ramda";
2
-
3
- function colorIsNotTransparent(color) {
4
- const layers = compose(
5
- map(trim),
6
- split(","),
7
- replace(")", ""),
8
- replace("rgba(", "")
9
- )(color);
10
-
11
- return Number(layers?.[3]) > 0;
12
- }
13
-
14
- export function isValidColor(string) {
15
- return string && string !== "transparent" && colorIsNotTransparent(string);
16
- }
@@ -1,95 +0,0 @@
1
- import * as R from "ramda";
2
- import { postAnalyticEvent } from "@applicaster/zapp-react-native-tvos-app/AnalyticsManager";
3
- import { extensionsEvents } from "@applicaster/zapp-react-native-utils/analyticsUtils/AnalyticsEvents/helper";
4
- import {
5
- ANALYTICS_CORE_EVENTS,
6
- ANALYTICS_ENTRY_EVENTS,
7
- ANALYTICS_COMPONENT_EVENTS,
8
- ANALYTICS_MENU_ITEM_EVENTS,
9
- } from "../";
10
-
11
- export function sendTapCellEvent(item, component, headerTitle, itemIndex) {
12
- const itemReadableIndex = itemIndex + 1;
13
-
14
- const analyticsProperties = R.compose(
15
- R.reject(R.isNil),
16
- R.merge(eventForEntry(item, itemReadableIndex))
17
- )(eventForComponent(component, headerTitle));
18
-
19
- postEvent(ANALYTICS_CORE_EVENTS.TAP_CELL, analyticsProperties);
20
- }
21
-
22
- export function sendTapMenuItem({ item, index, isHome }) {
23
- const analyticsProperties = R.compose(R.reject(R.isNil))(
24
- eventForMenuItemEntry({ item, index, isHome })
25
- );
26
-
27
- postEvent(ANALYTICS_CORE_EVENTS.TAP_MENU_ICON, analyticsProperties);
28
-
29
- if (isHome) {
30
- postEvent(ANALYTICS_CORE_EVENTS.HOME_SCREEN_VIEWED, null);
31
- }
32
- }
33
-
34
- function postEvent(event, properties) {
35
- postAnalyticEvent(event, properties);
36
- }
37
-
38
- function eventForEntry(item, itemIndex) {
39
- const {
40
- title,
41
- type: { value: valueType },
42
- id,
43
- } = item;
44
-
45
- const analyticsCustomProperties = extensionsEvents(item.extensions);
46
-
47
- const analyticsEvents = {
48
- [ANALYTICS_ENTRY_EVENTS.ITEM_TYPE]: valueType,
49
- [ANALYTICS_ENTRY_EVENTS.ITEM_TITLE]: title,
50
- [ANALYTICS_ENTRY_EVENTS.ITEM_ID]: id,
51
- [ANALYTICS_ENTRY_EVENTS.ITEM_INDEX]:
52
- (itemIndex && itemIndex.toString()) || null,
53
- };
54
-
55
- if (analyticsCustomProperties) {
56
- analyticsEvents.analyticsCustomProperties = analyticsCustomProperties;
57
- }
58
-
59
- return analyticsEvents;
60
- }
61
-
62
- function eventForComponent(
63
- component,
64
- headerTitle, // Zapp Pipes data passed for group components
65
- zappPipesData = null
66
- ) {
67
- const { id, component_type, styles, data } = component;
68
- const { cell_style } = styles;
69
- const source = data?.source || zappPipesData?.data?.url || null;
70
-
71
- return {
72
- [ANALYTICS_COMPONENT_EVENTS.COMPONENT_ID]: id,
73
- [ANALYTICS_COMPONENT_EVENTS.COMPONENT_TYPE]: component_type,
74
- [ANALYTICS_COMPONENT_EVENTS.CELL_STYLE]:
75
- cell_style || ANALYTICS_CORE_EVENTS.ITEM_NOT_AVAILABLE,
76
- [ANALYTICS_COMPONENT_EVENTS.COMPONENT_SOURCE]:
77
- (source && encodeURIComponent(source)) || null,
78
- [ANALYTICS_COMPONENT_EVENTS.HEADER_TITLE]: headerTitle,
79
- };
80
- }
81
-
82
- function eventForMenuItemEntry({ item, index, isHome }) {
83
- const { title, type, id } = item;
84
-
85
- const itemReadableIndex = index + 1;
86
-
87
- return {
88
- [ANALYTICS_MENU_ITEM_EVENTS.ITEM_INDEX]:
89
- (itemReadableIndex && itemReadableIndex.toString()) || null,
90
- [ANALYTICS_MENU_ITEM_EVENTS.ITEM_TYPE]: type,
91
- [ANALYTICS_MENU_ITEM_EVENTS.ITEM_TITLE]: title,
92
- [ANALYTICS_MENU_ITEM_EVENTS.ITEM_ID]: id,
93
- [ANALYTICS_MENU_ITEM_EVENTS.ITEM_HOME_SCREEN]: isHome ? "YES" : "NO",
94
- };
95
- }