@applicaster/zapp-react-native-utils 13.0.0-alpha.5033140607 → 13.0.0-alpha.5153173047

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 (143) hide show
  1. package/README.md +0 -10
  2. package/actionsExecutor/ActionExecutor.ts +16 -9
  3. package/actionsExecutor/ActionExecutorContext.tsx +74 -9
  4. package/alertUtils/alert.ts +148 -0
  5. package/alertUtils/index.ts +1 -148
  6. package/analyticsUtils/AnalyticPlayerListener.ts +18 -1
  7. package/analyticsUtils/__tests__/__snapshots__/analyticsManagerNoModule.test.js.snap +9 -9
  8. package/analyticsUtils/currentScreenProperities.ts +6 -4
  9. package/analyticsUtils/helpers/hooks.ts +1 -1
  10. package/appUtils/HooksManager/{Hook.js → Hook.ts} +35 -23
  11. package/appUtils/HooksManager/__tests__/__snapshots__/hook.test.js.snap +10 -8
  12. package/appUtils/HooksManager/__tests__/__snapshots__/hooksManager.test.js.snap +693 -0
  13. package/appUtils/HooksManager/__tests__/hook.test.js +196 -184
  14. package/appUtils/HooksManager/__tests__/hooksManager.test.js +96 -99
  15. package/appUtils/HooksManager/{constants.js → constants.ts} +1 -1
  16. package/appUtils/HooksManager/{index.js → index.ts} +122 -113
  17. package/appUtils/HooksManager/types.ts +119 -0
  18. package/appUtils/RiverFocusManager/index.js +17 -12
  19. package/appUtils/accessibilityManager/index.ts +42 -1
  20. package/appUtils/contextKeysManager/contextResolver.ts +77 -0
  21. package/appUtils/contextKeysManager/index.ts +2 -2
  22. package/appUtils/contextKeysManager/utils/index.ts +2 -1
  23. package/appUtils/focusManager/__tests__/__snapshots__/focusManager.test.js.snap +7 -6
  24. package/appUtils/focusManager/index.ts +100 -74
  25. package/appUtils/focusManager/treeDataStructure/Tree/index.js +25 -3
  26. package/appUtils/focusManager/treeDataStructure/Utils/index.js +1 -3
  27. package/appUtils/focusManager/utils/enums.ts +4 -0
  28. package/appUtils/focusManagerAux/utils/index.ts +4 -3
  29. package/appUtils/{index.js → index.ts} +1 -1
  30. package/appUtils/keyCodes/__tests__/__snapshots__/keyCodes.test.js.snap +2 -2
  31. package/appUtils/keyCodes/__tests__/keyCodes.test.js +4 -4
  32. package/appUtils/keyCodes/{index.js → index.ts} +13 -7
  33. package/appUtils/keyCodes/keys/index.ts +3 -0
  34. package/appUtils/keyCodes/{keys.android.js → keys/keyEventMapper.ts} +0 -19
  35. package/appUtils/keyCodes/keys/keys.android.ts +18 -0
  36. package/appUtils/keyCodes/keys/keys.ios.ts +25 -0
  37. package/appUtils/keyCodes/keys/keys.ts +15 -0
  38. package/appUtils/keyCodes/{keysByPlatform.js → keys/keysByPlatform.ts} +4 -0
  39. package/appUtils/keyCodes/keysByPlatform.ts +8 -0
  40. package/appUtils/keyInputHandler/KeyInputHandler.ts +68 -0
  41. package/appUtils/orientationHelper.ts +1 -2
  42. package/appUtils/platform/const.ts +14 -0
  43. package/appUtils/platform/platformUtils.ts +47 -18
  44. package/appUtils/playerManager/index.ts +1 -1
  45. package/appUtils/playerManager/player.ts +19 -7
  46. package/appUtils/playerManager/playerNative.ts +3 -2
  47. package/appUtils/playerManager/usePlayerControllerSetup.tsx +3 -3
  48. package/arrayUtils/__tests__/__snapshots__/arrayUtils.test.ts.snap +4 -4
  49. package/domUtils/{cookieManager.js → cookieManager.ts} +1 -2
  50. package/equalUtils/__tests__/isEqual/combination.test.ts +263 -0
  51. package/equalUtils/index.ts +49 -30
  52. package/focusManager/FocusManager.ts +11 -1
  53. package/focusManager/index.ts +41 -4
  54. package/functionUtils/__tests__/__snapshots__/functionUtils.test.js.snap +4 -4
  55. package/functionUtils/index.ts +36 -19
  56. package/idleUtils/__tests__/withTimeout$.test.ts +37 -0
  57. package/idleUtils/index.ts +1 -1
  58. package/idleUtils/withTimeout.ts +15 -2
  59. package/logger/const.ts +9 -67
  60. package/manifestUtils/__tests__/createConfig.test.js +16 -16
  61. package/manifestUtils/sharedConfiguration/screenPicker/__tests__/utils.test.js +304 -0
  62. package/manifestUtils/sharedConfiguration/screenPicker/stylesFields.js +875 -0
  63. package/manifestUtils/sharedConfiguration/screenPicker/utils.js +130 -0
  64. package/modalState/index.ts +1 -5
  65. package/navigationUtils/__tests__/__snapshots__/navigationUtils.test.js.snap +6 -6
  66. package/navigationUtils/__tests__/itemTypes.test.js +2 -2
  67. package/navigationUtils/__tests__/navigationUtils.test.js +2 -2
  68. package/navigationUtils/index.ts +17 -8
  69. package/numberUtils/index.ts +7 -5
  70. package/package.json +5 -9
  71. package/reactHooks/autoscrolling/__tests__/useTrackCurrentAutoScrollingElement.test.ts +1 -1
  72. package/reactHooks/autoscrolling/__tests__/useTrackedView.test.tsx +6 -8
  73. package/reactHooks/autoscrolling/useTrackedView.ts +12 -1
  74. package/reactHooks/cell-click/__tests__/index.test.js +10 -2
  75. package/reactHooks/cell-click/index.ts +7 -1
  76. package/reactHooks/feed/__tests__/useBuildPipesUrl.test.tsx +4 -4
  77. package/reactHooks/feed/__tests__/useFeedLoader.test.tsx +10 -11
  78. package/reactHooks/feed/useFeedLoader.tsx +1 -1
  79. package/reactHooks/feed/usePipesCacheReset.ts +5 -5
  80. package/reactHooks/flatList/__tests__/index.test.tsx +30 -21
  81. package/reactHooks/layout/__tests__/index.test.tsx +10 -10
  82. package/reactHooks/layout/useDimensions/helpers/__tests__/getInitialDimensions.native.test.js +14 -28
  83. package/reactHooks/layout/useDimensions/helpers/__tests__/getInitialDimensions.test.js +1 -1
  84. package/reactHooks/layout/useDimensions/useDimensions.ts +8 -0
  85. package/reactHooks/navigation/__mocks__/useNavigation.ts +3 -0
  86. package/reactHooks/navigation/__tests__/index.test.tsx +0 -4
  87. package/reactHooks/navigation/index.ts +35 -236
  88. package/reactHooks/navigation/useGetBottomTabBarHeight.ts +12 -0
  89. package/reactHooks/navigation/useGetNavBarTopBorderWidth.ts +14 -0
  90. package/reactHooks/navigation/useGetTabBarHeight.ts +10 -0
  91. package/reactHooks/navigation/useIsScreenActive.ts +17 -0
  92. package/reactHooks/navigation/useNavigationPluginData.ts +15 -0
  93. package/reactHooks/navigation/useNavigationType.ts +15 -0
  94. package/reactHooks/navigation/usePathname.ts +4 -0
  95. package/reactHooks/navigation/useProfilerLogging.ts +15 -0
  96. package/reactHooks/navigation/useRoute.ts +100 -0
  97. package/reactHooks/navigation/useUniqueRouteSuffix.ts +41 -0
  98. package/reactHooks/player/TVSeekControlller/ISeekController.ts +32 -0
  99. package/reactHooks/player/TVSeekControlller/LongPressSeekController.ts +71 -0
  100. package/reactHooks/player/TVSeekControlller/TVSeekController.ts +258 -0
  101. package/reactHooks/player/TVSeekControlller/TapSeekController.ts +53 -0
  102. package/reactHooks/player/__tests__/{useAutoSeek.test.tsx → useAutoSeek._test.tsx} +2 -3
  103. package/reactHooks/player/const.ts +0 -4
  104. package/reactHooks/player/index.ts +0 -6
  105. package/reactHooks/state/useRefWithInitialValue.ts +14 -0
  106. package/reactHooks/state/useStateFromSubscribe.ts +23 -0
  107. package/reactHooks/usePluginConfiguration.ts +1 -1
  108. package/reactHooks/useSubscriberFor.ts +4 -3
  109. package/reactUtils/__tests__/__snapshots__/reactUtilsHelpers.test.js.snap +16 -4
  110. package/reactUtils/__tests__/reactUtils.test.js +1 -37
  111. package/reactUtils/__tests__/reactUtilsHelpers.test.js +72 -71
  112. package/reactUtils/createContext/__tests__/__snapshots__/helpers.test.js.snap +13 -79
  113. package/reactUtils/createContext/__tests__/__snapshots__/{index.test.js.snap → index.test.ts.snap} +2 -2
  114. package/reactUtils/createContext/__tests__/__snapshots__/provider.test.js.snap +3 -28
  115. package/reactUtils/createContext/__tests__/__snapshots__/withConsumer.test.js.snap +3 -4
  116. package/reactUtils/createContext/__tests__/__snapshots__/withProvider.test.js.snap +7 -3
  117. package/reactUtils/createContext/__tests__/helpers.test.js +107 -121
  118. package/reactUtils/createContext/__tests__/{index.test.js → index.test.ts} +2 -2
  119. package/reactUtils/createContext/__tests__/provider.test.js +4 -6
  120. package/reactUtils/createContext/__tests__/withConsumer.test.js +12 -12
  121. package/reactUtils/createContext/__tests__/withProvider.test.js +4 -4
  122. package/reactUtils/createContext/helpers.ts +6 -1
  123. package/reactUtils/createContext/index.ts +11 -25
  124. package/reactUtils/index.ts +0 -25
  125. package/screenState/index.ts +24 -10
  126. package/testUtils/index.tsx +0 -10
  127. package/theme/__mocks__/index.ts +4 -0
  128. package/theme/index.ts +1 -1
  129. package/time/Timer.ts +5 -2
  130. package/types.ts +1 -0
  131. package/zappFrameworkUtils/presentPluginOneTime.ts +2 -3
  132. package/appUtils/keyCodes/keys.ios.js +0 -46
  133. package/reactHooks/player/useAutoSeek.tsx +0 -87
  134. package/reactHooks/player/useSeek.tsx +0 -66
  135. package/reactHooks/player/useTapSeek.tsx +0 -58
  136. package/reactUtils/createContext/__tests__/index-no-react.test.js +0 -27
  137. /package/appUtils/HooksManager/{logger.js → logger.ts} +0 -0
  138. /package/appUtils/{directionHelper.js → directionHelper.ts} +0 -0
  139. /package/appUtils/keyCodes/{androidTVKeys.js → androidTVKeys.ts} +0 -0
  140. /package/appUtils/keyCodes/{keys.web.js → keys/keys.web.ts} +0 -0
  141. /package/appUtils/{localizationsHelper.js → localizationsHelper.ts} +0 -0
  142. /package/domUtils/{logger.js → logger.ts} +0 -0
  143. /package/reactHooks/player/__tests__/{useTapSeek.test.ts → useTapSeek._test.ts} +0 -0
@@ -1,87 +0,0 @@
1
- import React, { useEffect, useState } from "react";
2
- import { usePrevious } from "@applicaster/zapp-react-native-utils/reactHooks/utils";
3
- import { playerManager } from "@applicaster/zapp-react-native-utils/appUtils/playerManager";
4
- import {
5
- MAX_SEEK_TIME,
6
- ON_HOLD_INTERVAL,
7
- SEEK_TYPE,
8
- SKIP_TIME_BASE,
9
- } from "./const";
10
- import { noop } from "../../functionUtils";
11
-
12
- export const useAutoSeek = (resetHUDTimer = noop) => {
13
- const [isRunning, setIsRunning] = useState<boolean>(false);
14
- const [direction, setDirection] = useState<Nullable<SEEK_TYPE>>(null);
15
- const [multiplier, setMultiplier] = useState(1);
16
- const intervalTimer = React.useRef(null);
17
- const prevRunning = usePrevious(isRunning);
18
-
19
- const clearIntervalTimer = () => {
20
- try {
21
- clearInterval(intervalTimer.current);
22
- } catch (err) {
23
- intervalTimer.current = null;
24
- }
25
- };
26
-
27
- const setIntervalTimer = (cb) => {
28
- clearIntervalTimer();
29
- intervalTimer.current = setInterval(cb, ON_HOLD_INTERVAL);
30
- };
31
-
32
- const resetState = () => {
33
- setIsRunning(false);
34
- setDirection(null);
35
- setMultiplier(1);
36
- clearIntervalTimer();
37
- };
38
-
39
- useEffect(() => {
40
- const player = playerManager.getInstanceController();
41
-
42
- if (!player) return;
43
-
44
- if (direction) {
45
- player[direction](Math.min(MAX_SEEK_TIME, SKIP_TIME_BASE * multiplier));
46
- resetHUDTimer();
47
- }
48
- }, [multiplier, direction]);
49
-
50
- useEffect(() => {
51
- if (isRunning && isRunning !== prevRunning) {
52
- setIntervalTimer(() => {
53
- setMultiplier((prev) => {
54
- return prev + 1;
55
- });
56
- });
57
- } else if (!isRunning && isRunning !== prevRunning) {
58
- resetState();
59
- }
60
-
61
- return () => {
62
- clearIntervalTimer();
63
- };
64
- }, [isRunning, direction]);
65
-
66
- const autoSeekStop = React.useCallback(() => {
67
- resetState();
68
- }, []);
69
-
70
- const autoSeekStart = React.useCallback(
71
- (eventType: SEEK_TYPE) => {
72
- // Check if there is another session running
73
- if (isRunning) {
74
- autoSeekStop();
75
- }
76
-
77
- setDirection(eventType);
78
- setIsRunning(true);
79
- },
80
- [isRunning]
81
- );
82
-
83
- return React.useMemo(
84
- () => ({ autoSeekStart, autoSeekStop }),
85
- [autoSeekStart, autoSeekStop]
86
- );
87
- };
@@ -1,66 +0,0 @@
1
- import React from "react";
2
- import { SEEK_TYPE } from "./const";
3
- import { useTapSeek } from "./useTapSeek";
4
- import { useAutoSeek } from "./useAutoSeek";
5
- import { noop } from "../../functionUtils";
6
-
7
- export const useSeek = (resetHUDTimer = noop) => {
8
- const handlePressEvent = useTapSeek();
9
- const { autoSeekStart, autoSeekStop } = useAutoSeek(resetHUDTimer);
10
-
11
- const onForwardPress = () => {
12
- handlePressEvent(SEEK_TYPE.FORWARD);
13
- };
14
-
15
- const onRewindPress = () => {
16
- handlePressEvent(SEEK_TYPE.REWIND);
17
- };
18
-
19
- const onForwardPressIn = () => {
20
- autoSeekStart(SEEK_TYPE.FORWARD);
21
- };
22
-
23
- const onForwardPressOut = () => {
24
- autoSeekStop();
25
- };
26
-
27
- const onRewindPressIn = () => {
28
- autoSeekStart(SEEK_TYPE.REWIND);
29
- };
30
-
31
- const onRewindLongPress = () => {
32
- autoSeekStart(SEEK_TYPE.REWIND);
33
- };
34
-
35
- const onForwardLongPress = () => {
36
- autoSeekStart(SEEK_TYPE.FORWARD);
37
- };
38
-
39
- const onRewindPressOut = () => {
40
- autoSeekStop();
41
- };
42
-
43
- return React.useMemo(
44
- () => ({
45
- onForwardPress,
46
- onRewindPress,
47
- onForwardPressIn,
48
- onForwardPressOut,
49
- onRewindPressIn,
50
- onRewindPressOut,
51
- onRewindLongPress,
52
- onForwardLongPress,
53
- }),
54
- [handlePressEvent, autoSeekStart]
55
- );
56
- };
57
-
58
- export const withUseSeek = (Component) =>
59
- Object.assign(
60
- (props) => {
61
- const seekMethods = useSeek(props?.resetHUDTimer);
62
-
63
- return <Component {...props} seekMethods={seekMethods} />;
64
- },
65
- { displayName: "WithUseSeek" }
66
- );
@@ -1,58 +0,0 @@
1
- import { useCallback, useRef } from "react";
2
- import * as R from "ramda";
3
- import {
4
- MAX_SEEK_TIME,
5
- ON_PRESS_RESET_DURATION,
6
- SEEK_TYPE,
7
- SKIP_TIME_BASE,
8
- } from "./const";
9
- import { playerManager } from "@applicaster/zapp-react-native-utils/appUtils";
10
-
11
- type SeekType = SEEK_TYPE | null;
12
-
13
- const getSkipTime = (multiplier) => {
14
- const skipTime = R.min(MAX_SEEK_TIME, SKIP_TIME_BASE * multiplier);
15
-
16
- return skipTime;
17
- };
18
-
19
- export const useTapSeek = () => {
20
- const onPressMultiplier = useRef(1);
21
- const lastPressTime = useRef(0);
22
- const currentOnPressEventType = useRef<SeekType>(null);
23
-
24
- const resetMultiplier = useCallback(() => {
25
- onPressMultiplier.current = 1;
26
- }, []);
27
-
28
- const handlePressEvent = useCallback(
29
- (eventType) => {
30
- const player = playerManager.getInstanceController();
31
- if (!player) return;
32
-
33
- const now = Date.now();
34
- const timeSinceLastPress = now - lastPressTime.current;
35
- const isSameEventType = eventType === currentOnPressEventType.current;
36
-
37
- const isWithinResetDuration =
38
- timeSinceLastPress <= ON_PRESS_RESET_DURATION;
39
-
40
- const shouldIncreaseMultiplier = isSameEventType && isWithinResetDuration;
41
-
42
- if (shouldIncreaseMultiplier) {
43
- onPressMultiplier.current += 1;
44
- } else {
45
- resetMultiplier();
46
- }
47
-
48
- const seekTime = getSkipTime(onPressMultiplier.current);
49
- player[eventType](seekTime);
50
-
51
- lastPressTime.current = now;
52
- currentOnPressEventType.current = eventType;
53
- },
54
- [resetMultiplier]
55
- );
56
-
57
- return handlePressEvent;
58
- };
@@ -1,27 +0,0 @@
1
- jest.mock("create-react-context", () =>
2
- jest.fn(() => ({
3
- Consumer: jest.fn(),
4
- Provider: jest.fn(),
5
- }))
6
- );
7
-
8
- jest.mock("react", () => ({
9
- ...jest.requireActual("react"),
10
- createContext: undefined,
11
- }));
12
-
13
- const { createContext } = require("../index");
14
- const createReactContext = require("create-react-context");
15
-
16
- describe("when react context api is not defined", () => {
17
- it("uses the polyfill", () => {
18
- createContext({ foo: "bar" });
19
-
20
- expect(createReactContext).toHaveBeenCalledWith(
21
- expect.objectContaining({
22
- foo: "bar",
23
- setFoo: expect.any(Function),
24
- })
25
- );
26
- });
27
- });
File without changes
File without changes