@applicaster/zapp-react-native-utils 12.0.0-alpha.4043183114 → 12.0.0-alpha.4081044014
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.
- package/analyticsUtils/AnalyticPlayerListener.ts +141 -0
- package/analyticsUtils/PlayerAnalyticsManager.ts +90 -0
- package/analyticsUtils/{analyticsTracker.ts → playerAnalyticsTracker.ts} +19 -10
- package/appUtils/HooksManager/{Hook.ts → Hook.js} +11 -17
- package/appUtils/HooksManager/{constants.ts → constants.js} +1 -1
- package/appUtils/HooksManager/{index.ts → index.js} +109 -98
- package/appUtils/RiverFocusManager/index.js +12 -17
- package/appUtils/accessibilityManager/hooks.ts +16 -7
- package/appUtils/accessibilityManager/index.ts +33 -28
- package/appUtils/focusManager/treeDataStructure/Tree/index.js +3 -2
- package/appUtils/focusManager/treeDataStructure/Utils/index.js +3 -1
- package/appUtils/{index.ts → index.js} +1 -1
- package/appUtils/keyCodes/{index.ts → index.js} +0 -2
- package/appUtils/keyCodes/{keys/keyEventMapper.ts → keys.android.js} +19 -0
- package/appUtils/keyCodes/keys.ios.js +46 -0
- package/appUtils/platform/platformUtils.ts +49 -2
- package/appUtils/playerManager/index.ts +9 -27
- package/appUtils/playerManager/playerHooks/usePlayerCurrentTime.tsx +57 -0
- package/appUtils/playerManager/playerNative.ts +1 -1
- package/appUtils/playerManager/usePlayerControllerSetup.tsx +1 -1
- package/appUtils/playerManager/usePlayerState.tsx +19 -34
- package/arrayUtils/index.ts +11 -0
- package/cellUtils/index.ts +38 -5
- package/domUtils/{cookieManager.ts → cookieManager.js} +2 -1
- package/focusManager/FocusManager.ts +20 -5
- package/focusManager/__tests__/FocusManager.test.ts +0 -1
- package/functionUtils/index.ts +49 -15
- package/index.d.ts +15 -0
- package/manifestUtils/defaultManifestConfigurations/player.js +121 -0
- package/manifestUtils/keys.js +2 -1
- package/modalState/index.ts +5 -1
- package/navigationUtils/index.ts +6 -15
- package/numberUtils/__tests__/toNumber.test.ts +2 -2
- package/numberUtils/__tests__/toPositiveNumberWithDefault.test.ts +66 -0
- package/numberUtils/__tests__/toPositiveNumberWithDefaultZero.test.ts +66 -0
- package/numberUtils/index.ts +20 -0
- package/package.json +2 -2
- package/playerUtils/configurationGenerator.ts +120 -0
- package/playerUtils/imaScriptDom.ts +59 -0
- package/reactHooks/cell-click/index.ts +17 -3
- package/reactHooks/debugging/__tests__/index.test.js +81 -11
- package/reactHooks/feed/__tests__/useBatchLoading.test.tsx +69 -6
- package/reactHooks/feed/useBatchLoading.ts +52 -28
- package/reactHooks/layout/useDimensions/__tests__/useDimensions.test.ts +134 -0
- package/reactHooks/layout/useDimensions/useDimensions.ts +2 -0
- package/reactHooks/navigation/index.ts +5 -8
- package/reactHooks/player/useAutoSeek.tsx +9 -7
- package/reactHooks/resolvers/useCellResolver.ts +5 -1
- package/reactHooks/useConfiguration.ts +2 -2
- package/reactUtils/index.ts +15 -2
- package/testUtils/index.tsx +42 -9
- package/appUtils/HooksManager/types.ts +0 -93
- package/appUtils/keyCodes/keys/index.ts +0 -3
- package/appUtils/keyCodes/keys/keys.android.ts +0 -18
- package/appUtils/keyCodes/keys/keys.ios.ts +0 -25
- package/appUtils/keyCodes/keys/keys.ts +0 -15
- /package/appUtils/HooksManager/{logger.ts → logger.js} +0 -0
- /package/appUtils/{directionHelper.ts → directionHelper.js} +0 -0
- /package/appUtils/keyCodes/{androidTVKeys.ts → androidTVKeys.js} +0 -0
- /package/appUtils/keyCodes/{keys/keys.web.ts → keys.web.js} +0 -0
- /package/appUtils/keyCodes/{keys/keysByPlatform.ts → keysByPlatform.js} +0 -0
- /package/appUtils/{localizationsHelper.ts → localizationsHelper.js} +0 -0
- /package/domUtils/{logger.ts → logger.js} +0 -0
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import { renderHook } from "@testing-library/react-hooks";
|
|
2
|
+
import { Dimensions, StatusBar } from "react-native";
|
|
3
|
+
|
|
4
|
+
const mockUsePickFromState = jest.fn();
|
|
5
|
+
const mockUseIsScreenActive = jest.fn();
|
|
6
|
+
const mockGetInitialDimensions = jest.fn();
|
|
7
|
+
const mockGetDeviceInfo = jest.fn();
|
|
8
|
+
|
|
9
|
+
jest.mock("@applicaster/zapp-react-native-redux/hooks", () => ({
|
|
10
|
+
...(jest.requireActual("@applicaster/zapp-react-native-redux/hooks") as {}),
|
|
11
|
+
usePickFromState: mockUsePickFromState,
|
|
12
|
+
}));
|
|
13
|
+
|
|
14
|
+
jest.mock("../../../navigation", () => ({
|
|
15
|
+
useIsScreenActive: mockUseIsScreenActive,
|
|
16
|
+
}));
|
|
17
|
+
|
|
18
|
+
jest.mock("../helpers", () => ({
|
|
19
|
+
getInitialDimensions: mockGetInitialDimensions,
|
|
20
|
+
}));
|
|
21
|
+
|
|
22
|
+
jest.mock("../../getDeviceInfo", () => ({
|
|
23
|
+
getDeviceInfo: mockGetDeviceInfo,
|
|
24
|
+
}));
|
|
25
|
+
|
|
26
|
+
const { useDimensions } = require("../useDimensions");
|
|
27
|
+
|
|
28
|
+
describe("useDimensions", () => {
|
|
29
|
+
const mockDimensions = { width: 100, height: 200, scale: 1, fontScale: 1 };
|
|
30
|
+
const mockAppData = { someData: "test" };
|
|
31
|
+
|
|
32
|
+
beforeEach(() => {
|
|
33
|
+
jest.clearAllMocks();
|
|
34
|
+
Dimensions.get = jest.fn().mockReturnValue(mockDimensions);
|
|
35
|
+
|
|
36
|
+
Dimensions.addEventListener = jest.fn().mockReturnValue({
|
|
37
|
+
remove: jest.fn(),
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
mockUsePickFromState.mockReturnValue({ appData: mockAppData });
|
|
41
|
+
mockUseIsScreenActive.mockReturnValue(true);
|
|
42
|
+
mockGetInitialDimensions.mockReturnValue(mockDimensions);
|
|
43
|
+
mockGetDeviceInfo.mockReturnValue({ deviceInfo: "testDeviceInfo" });
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
it("returns correct initial dimensions", () => {
|
|
47
|
+
const { result } = renderHook(() =>
|
|
48
|
+
useDimensions("window", { fullDimensions: false })
|
|
49
|
+
);
|
|
50
|
+
|
|
51
|
+
expect(result.current).toEqual({
|
|
52
|
+
...mockDimensions,
|
|
53
|
+
statusBarHeight: StatusBar.currentHeight,
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
expect(mockGetInitialDimensions).toHaveBeenCalledWith("window");
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
it("calls handler on mount", () => {
|
|
60
|
+
renderHook(() => useDimensions("window", { fullDimensions: false }));
|
|
61
|
+
|
|
62
|
+
expect(Dimensions.addEventListener).toHaveBeenCalledWith(
|
|
63
|
+
"change",
|
|
64
|
+
expect.any(Function)
|
|
65
|
+
);
|
|
66
|
+
});
|
|
67
|
+
|
|
68
|
+
it("calls handler on isActive change", () => {
|
|
69
|
+
const { rerender } = renderHook(() =>
|
|
70
|
+
useDimensions("window", { fullDimensions: false })
|
|
71
|
+
);
|
|
72
|
+
|
|
73
|
+
mockUseIsScreenActive.mockReturnValue(false);
|
|
74
|
+
rerender();
|
|
75
|
+
|
|
76
|
+
expect(Dimensions.addEventListener).toHaveBeenCalledWith(
|
|
77
|
+
"change",
|
|
78
|
+
expect.any(Function)
|
|
79
|
+
);
|
|
80
|
+
});
|
|
81
|
+
|
|
82
|
+
it("handles fullDimensions option", () => {
|
|
83
|
+
const { result } = renderHook(() =>
|
|
84
|
+
useDimensions("window", { fullDimensions: true })
|
|
85
|
+
);
|
|
86
|
+
|
|
87
|
+
expect(result.current).toEqual({
|
|
88
|
+
...mockDimensions,
|
|
89
|
+
scale: 1,
|
|
90
|
+
fontScale: 1,
|
|
91
|
+
statusBarHeight: StatusBar.currentHeight,
|
|
92
|
+
});
|
|
93
|
+
});
|
|
94
|
+
|
|
95
|
+
it("handles excludeStatusBar option", () => {
|
|
96
|
+
const { result } = renderHook(() =>
|
|
97
|
+
useDimensions("window", { excludeStatusBar: true })
|
|
98
|
+
);
|
|
99
|
+
|
|
100
|
+
expect(result.current.height).toBe(
|
|
101
|
+
mockDimensions.height - StatusBar.currentHeight ?? 0
|
|
102
|
+
);
|
|
103
|
+
});
|
|
104
|
+
|
|
105
|
+
it("handles rounded option", () => {
|
|
106
|
+
const { result } = renderHook(() =>
|
|
107
|
+
useDimensions("window", { rounded: true })
|
|
108
|
+
);
|
|
109
|
+
|
|
110
|
+
expect(result.current.width).toBe(Math.ceil(mockDimensions.width));
|
|
111
|
+
expect(result.current.height).toBe(Math.ceil(mockDimensions.height));
|
|
112
|
+
});
|
|
113
|
+
|
|
114
|
+
it("handles deviceInfo option", () => {
|
|
115
|
+
const { result } = renderHook(() =>
|
|
116
|
+
useDimensions("window", { deviceInfo: true })
|
|
117
|
+
);
|
|
118
|
+
|
|
119
|
+
expect(result.current.deviceInfo).toMatchObject({
|
|
120
|
+
deviceInfo: "testDeviceInfo",
|
|
121
|
+
});
|
|
122
|
+
});
|
|
123
|
+
|
|
124
|
+
it("logs deprecation warning when fullDimensions is boolean", () => {
|
|
125
|
+
const consoleWarnSpy = jest.spyOn(console, "warn").mockImplementation();
|
|
126
|
+
renderHook(() => useDimensions("window", true));
|
|
127
|
+
|
|
128
|
+
expect(consoleWarnSpy).toHaveBeenCalledWith(
|
|
129
|
+
"Deprecation Warning\nSecond argument is now the options object. {fullDimensions: boolean, ...}"
|
|
130
|
+
);
|
|
131
|
+
|
|
132
|
+
consoleWarnSpy.mockRestore();
|
|
133
|
+
});
|
|
134
|
+
});
|
|
@@ -17,7 +17,7 @@ import {
|
|
|
17
17
|
QUICK_BRICK_NAVBAR,
|
|
18
18
|
QUICK_BRICK_CONTENT,
|
|
19
19
|
} from "@applicaster/quick-brick-core/const";
|
|
20
|
-
import { useZappHooksModalState } from "@applicaster/zapp-react-dom-ui-components/Components/ZappHooksModal/
|
|
20
|
+
import { useZappHooksModalState } from "@applicaster/zapp-react-dom-ui-components/Components/ZappHooksModal/hooks/useZappHooksModalState";
|
|
21
21
|
import { ZappHookModalContext } from "@applicaster/zapp-react-native-ui-components/Contexts";
|
|
22
22
|
import { PathnameContext } from "@applicaster/zapp-react-native-ui-components/Contexts/PathnameContext";
|
|
23
23
|
import { HookModalContextT } from "@applicaster/zapp-react-native-ui-components/Contexts/ZappHookModalContext";
|
|
@@ -320,19 +320,16 @@ export const useZappHooksForEntry = (
|
|
|
320
320
|
callbacks?.handleHookComplete?.(props);
|
|
321
321
|
};
|
|
322
322
|
|
|
323
|
-
const hookManager = HooksManager(hooksOptions)
|
|
324
|
-
|
|
325
|
-
hookManager.subscriber
|
|
323
|
+
const hookManager = HooksManager(hooksOptions)
|
|
326
324
|
.on(HOOKS_EVENTS.PRESENT_SCREEN_HOOK, handleHookPresent)
|
|
327
325
|
.on(HOOKS_EVENTS.ERROR, handleHookError)
|
|
328
326
|
.on(HOOKS_EVENTS.CANCEL, handleHookCancel)
|
|
329
327
|
.on(HOOKS_EVENTS.START_BACKGROUND_HOOK, handleBackgroundHook)
|
|
330
|
-
.on(HOOKS_EVENTS.COMPLETE, handleHookComplete)
|
|
331
|
-
|
|
332
|
-
hookManager.handleHooks(entry);
|
|
328
|
+
.on(HOOKS_EVENTS.COMPLETE, handleHookComplete)
|
|
329
|
+
.handleHooks(entry);
|
|
333
330
|
|
|
334
331
|
return () => {
|
|
335
|
-
hookManager
|
|
332
|
+
hookManager
|
|
336
333
|
.removeHandler(HOOKS_EVENTS.PRESENT_SCREEN_HOOK, handleHookPresent)
|
|
337
334
|
.removeHandler(HOOKS_EVENTS.ERROR, handleHookError)
|
|
338
335
|
.removeHandler(HOOKS_EVENTS.CANCEL, handleHookCancel)
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import React, { useEffect, useState } from "react";
|
|
2
|
-
import * as R from "ramda";
|
|
3
2
|
import { usePrevious } from "@applicaster/zapp-react-native-utils/reactHooks/utils";
|
|
4
3
|
import { playerManager } from "@applicaster/zapp-react-native-utils/appUtils/playerManager";
|
|
5
4
|
import {
|
|
@@ -17,10 +16,6 @@ export const useAutoSeek = (resetHUDTimer = noop) => {
|
|
|
17
16
|
const intervalTimer = React.useRef(null);
|
|
18
17
|
const prevRunning = usePrevious(isRunning);
|
|
19
18
|
|
|
20
|
-
const setIntervalTimer = (cb) => {
|
|
21
|
-
intervalTimer.current = setInterval(cb, ON_HOLD_INTERVAL);
|
|
22
|
-
};
|
|
23
|
-
|
|
24
19
|
const clearIntervalTimer = () => {
|
|
25
20
|
try {
|
|
26
21
|
clearInterval(intervalTimer.current);
|
|
@@ -29,6 +24,11 @@ export const useAutoSeek = (resetHUDTimer = noop) => {
|
|
|
29
24
|
}
|
|
30
25
|
};
|
|
31
26
|
|
|
27
|
+
const setIntervalTimer = (cb) => {
|
|
28
|
+
clearIntervalTimer();
|
|
29
|
+
intervalTimer.current = setInterval(cb, ON_HOLD_INTERVAL);
|
|
30
|
+
};
|
|
31
|
+
|
|
32
32
|
const resetState = () => {
|
|
33
33
|
setIsRunning(false);
|
|
34
34
|
setDirection(null);
|
|
@@ -42,7 +42,7 @@ export const useAutoSeek = (resetHUDTimer = noop) => {
|
|
|
42
42
|
if (!player) return;
|
|
43
43
|
|
|
44
44
|
if (direction) {
|
|
45
|
-
player[direction](
|
|
45
|
+
player[direction](Math.min(MAX_SEEK_TIME, SKIP_TIME_BASE * multiplier));
|
|
46
46
|
resetHUDTimer();
|
|
47
47
|
}
|
|
48
48
|
}, [multiplier, direction]);
|
|
@@ -50,7 +50,9 @@ export const useAutoSeek = (resetHUDTimer = noop) => {
|
|
|
50
50
|
useEffect(() => {
|
|
51
51
|
if (isRunning && isRunning !== prevRunning) {
|
|
52
52
|
setIntervalTimer(() => {
|
|
53
|
-
setMultiplier(
|
|
53
|
+
setMultiplier((prev) => {
|
|
54
|
+
return prev + 1;
|
|
55
|
+
});
|
|
54
56
|
});
|
|
55
57
|
} else if (!isRunning && isRunning !== prevRunning) {
|
|
56
58
|
resetState();
|
|
@@ -48,7 +48,11 @@ export function useCellResolver({
|
|
|
48
48
|
...cellResolverOptions
|
|
49
49
|
}: Props) {
|
|
50
50
|
let _component = Object.assign({}, component);
|
|
51
|
-
|
|
51
|
+
|
|
52
|
+
const { width, height } = useDimensions("screen", {
|
|
53
|
+
updateForInactiveScreens: false,
|
|
54
|
+
});
|
|
55
|
+
|
|
52
56
|
const { plugins, cellStyles } = usePickFromState(["plugins", "cellStyles"]);
|
|
53
57
|
const isRTL = useIsRTL();
|
|
54
58
|
|
|
@@ -67,7 +67,7 @@ export const useConfiguration = ({
|
|
|
67
67
|
if (component) {
|
|
68
68
|
const remappedStylesConfiguration = remapUpdatedKeys(
|
|
69
69
|
pluginManifest,
|
|
70
|
-
component
|
|
70
|
+
component
|
|
71
71
|
);
|
|
72
72
|
|
|
73
73
|
R.forEachObjIndexed((value, key) => {
|
|
@@ -83,7 +83,7 @@ export const useConfiguration = ({
|
|
|
83
83
|
|
|
84
84
|
const styles = populateConfigurationValues(
|
|
85
85
|
pluginManifest?.styles?.fields,
|
|
86
|
-
remappedStylesConfiguration,
|
|
86
|
+
remappedStylesConfiguration.styles,
|
|
87
87
|
skipDefaults
|
|
88
88
|
);
|
|
89
89
|
|
package/reactUtils/index.ts
CHANGED
|
@@ -109,6 +109,20 @@ export const isTvOSPlatform = () => getPlatform() === "tvos";
|
|
|
109
109
|
|
|
110
110
|
export const isAndroidTVPlatform = () => getPlatform() === "android_tv";
|
|
111
111
|
|
|
112
|
+
declare global {
|
|
113
|
+
interface Window {
|
|
114
|
+
VIZIO?: {
|
|
115
|
+
Chromevox: {
|
|
116
|
+
play: (text: string) => void;
|
|
117
|
+
};
|
|
118
|
+
exitApplication: () => void;
|
|
119
|
+
setClosedCaptionHandler: (
|
|
120
|
+
callback: (isCCEnabled: boolean) => void
|
|
121
|
+
) => void;
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
|
|
112
126
|
/**
|
|
113
127
|
* Platforms found in userAgent string, please note that simulators
|
|
114
128
|
* might not have the same agents that the devices have
|
|
@@ -138,8 +152,7 @@ export const hasTizen = typeof window?.tizen !== "undefined";
|
|
|
138
152
|
*/
|
|
139
153
|
export const hasWebOS = typeof window?.webOS !== "undefined";
|
|
140
154
|
|
|
141
|
-
export const getUserAgent = () =>
|
|
142
|
-
window?.navigator?.userAgent || global?.navigator?.userAgent;
|
|
155
|
+
export const getUserAgent = () => window?.navigator?.userAgent;
|
|
143
156
|
|
|
144
157
|
export const isLgPlatform = () => {
|
|
145
158
|
const userAgent = getUserAgent();
|
package/testUtils/index.tsx
CHANGED
|
@@ -7,9 +7,11 @@ import { Provider } from "react-redux";
|
|
|
7
7
|
import thunk from "redux-thunk";
|
|
8
8
|
import configureStore from "redux-mock-store";
|
|
9
9
|
import { SafeAreaProvider } from "react-native-safe-area-context";
|
|
10
|
+
import { appStore } from "@applicaster/zapp-react-native-redux/AppStore";
|
|
10
11
|
|
|
11
12
|
import { render } from "@testing-library/react-native";
|
|
12
13
|
import { AnalyticsProvider } from "../analyticsUtils";
|
|
14
|
+
import { ThemeContext } from "../theme";
|
|
13
15
|
|
|
14
16
|
export { getByTestId } from "./getByTestId";
|
|
15
17
|
|
|
@@ -59,7 +61,9 @@ const initialState = {
|
|
|
59
61
|
appSettings: {},
|
|
60
62
|
plugins: [],
|
|
61
63
|
appState: { appReady: true, appLaunched: true },
|
|
64
|
+
pluginConfigurations: {},
|
|
62
65
|
appData: { layoutVersion: "v1" },
|
|
66
|
+
zappPipes: {},
|
|
63
67
|
contentTypes: null,
|
|
64
68
|
};
|
|
65
69
|
|
|
@@ -68,20 +72,49 @@ export const WrappedWithProviders = ({
|
|
|
68
72
|
store: storeObj = {},
|
|
69
73
|
}: any) => {
|
|
70
74
|
const _store = configureStore([thunk])(
|
|
71
|
-
R.
|
|
75
|
+
R.mergeDeepRight(initialState, { ...storeObj })
|
|
72
76
|
);
|
|
73
77
|
|
|
78
|
+
appStore.set(_store);
|
|
79
|
+
|
|
74
80
|
return (
|
|
75
|
-
<
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
81
|
+
<ThemeContext.Provider
|
|
82
|
+
value={{
|
|
83
|
+
themes: {
|
|
84
|
+
light: {
|
|
85
|
+
component_margin_top: 0,
|
|
86
|
+
component_margin_bottom: 0,
|
|
87
|
+
component_margin_left: 0,
|
|
88
|
+
component_margin_right: 0,
|
|
89
|
+
component_padding_top: 0,
|
|
90
|
+
component_padding_bottom: 0,
|
|
91
|
+
component_padding_left: 0,
|
|
92
|
+
component_padding_right: 0,
|
|
93
|
+
component_gutter_vertical: 0,
|
|
94
|
+
component_gutter_horizontal: 0,
|
|
95
|
+
component_corner_radius: 0,
|
|
96
|
+
app_background_color: "rgba(0,0,0,0)",
|
|
97
|
+
screen_margin_top: 0,
|
|
98
|
+
screen_margin_bottom: 0,
|
|
99
|
+
component_anchor_point_y: 0,
|
|
100
|
+
assets: "",
|
|
101
|
+
},
|
|
102
|
+
},
|
|
103
|
+
selectedThemeId: "light",
|
|
104
|
+
setSelectedThemeId: () => {},
|
|
79
105
|
}}
|
|
80
106
|
>
|
|
81
|
-
<
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
107
|
+
<SafeAreaProvider
|
|
108
|
+
initialMetrics={{
|
|
109
|
+
insets: { top: 0, left: 0, right: 0, bottom: 0 },
|
|
110
|
+
frame: { x: 0, y: 0, width: 0, height: 0 },
|
|
111
|
+
}}
|
|
112
|
+
>
|
|
113
|
+
<Provider store={_store}>
|
|
114
|
+
<AnalyticsProvider>{children}</AnalyticsProvider>
|
|
115
|
+
</Provider>
|
|
116
|
+
</SafeAreaProvider>
|
|
117
|
+
</ThemeContext.Provider>
|
|
85
118
|
);
|
|
86
119
|
};
|
|
87
120
|
|
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
import { SubscriberObj } from "../../functionUtils";
|
|
2
|
-
import { HOOKS_EVENTS } from "./constants";
|
|
3
|
-
|
|
4
|
-
export interface HookConfiguration {}
|
|
5
|
-
|
|
6
|
-
export interface HookModule {
|
|
7
|
-
ModalContainer: React.ComponentType<any>;
|
|
8
|
-
Component: React.ComponentType<any>;
|
|
9
|
-
presentFullScreen: boolean;
|
|
10
|
-
run: (
|
|
11
|
-
arg0: unknown,
|
|
12
|
-
callback: () => void,
|
|
13
|
-
configuration: HookConfiguration
|
|
14
|
-
) => void;
|
|
15
|
-
configuration: HookConfiguration;
|
|
16
|
-
isFlowBlocker: () => boolean;
|
|
17
|
-
skipHook: boolean;
|
|
18
|
-
setSkipHook: (skipHook: boolean) => void;
|
|
19
|
-
shouldSkipHook: () => boolean;
|
|
20
|
-
runInBackground: (
|
|
21
|
-
arg0: unknown,
|
|
22
|
-
callback: () => void,
|
|
23
|
-
hookPlugin: Hook,
|
|
24
|
-
presentUI: boolean
|
|
25
|
-
) => void;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
export type HookManagerArgs = {
|
|
29
|
-
rivers: Record<string, ZappRiver>;
|
|
30
|
-
plugins: ZappPlugin[];
|
|
31
|
-
targetScreen: ZappRiver;
|
|
32
|
-
startUpHooksData?: {
|
|
33
|
-
startUpHooks?: unknown[] | "in_process";
|
|
34
|
-
setStartUpHooks?: (arg0: string) => void;
|
|
35
|
-
};
|
|
36
|
-
};
|
|
37
|
-
|
|
38
|
-
export interface HookManager {
|
|
39
|
-
subscriber: SubscriberObj;
|
|
40
|
-
presentScreenHook: (
|
|
41
|
-
hook: Hook,
|
|
42
|
-
payload: unknown,
|
|
43
|
-
callback: (...any) => void
|
|
44
|
-
) => void;
|
|
45
|
-
executeHook: (
|
|
46
|
-
hook: Hook,
|
|
47
|
-
payload: unknown,
|
|
48
|
-
callback: (...any) => void
|
|
49
|
-
) => void;
|
|
50
|
-
handleHooks: (payload: unknown) => void;
|
|
51
|
-
runInBackground: (
|
|
52
|
-
hook: Hook,
|
|
53
|
-
payload: unknown,
|
|
54
|
-
callback: (...any) => void,
|
|
55
|
-
presentUI: boolean
|
|
56
|
-
) => void;
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
export type HookIniObj = {
|
|
60
|
-
hook: HookModule & {
|
|
61
|
-
module: HookModule;
|
|
62
|
-
general: unknown;
|
|
63
|
-
screen_id?: string;
|
|
64
|
-
identifier?: string;
|
|
65
|
-
weight?: number | string;
|
|
66
|
-
};
|
|
67
|
-
hooks: Hook<any>[];
|
|
68
|
-
manager: HookManager;
|
|
69
|
-
};
|
|
70
|
-
|
|
71
|
-
export interface Hook<T extends HookModule = HookModule> {
|
|
72
|
-
manager: HookManager;
|
|
73
|
-
lastHook: boolean;
|
|
74
|
-
state: number;
|
|
75
|
-
module: T;
|
|
76
|
-
screen_id: string;
|
|
77
|
-
identifier: string;
|
|
78
|
-
configuration: T["configuration"];
|
|
79
|
-
setStateAndNotify(
|
|
80
|
-
event: typeof HOOKS_EVENTS[keyof typeof HOOKS_EVENTS],
|
|
81
|
-
opts: {
|
|
82
|
-
error?: typeof Error;
|
|
83
|
-
route?: string;
|
|
84
|
-
hookPlugin: Hook<T>;
|
|
85
|
-
payload: unknown;
|
|
86
|
-
}
|
|
87
|
-
);
|
|
88
|
-
general?: {
|
|
89
|
-
transition_type: typeof HOOKS_EVENTS[keyof typeof HOOKS_EVENTS];
|
|
90
|
-
allow_screen_plugin_presentation: boolean;
|
|
91
|
-
is_flow_blocker: boolean;
|
|
92
|
-
};
|
|
93
|
-
}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
export const KEYS = {
|
|
2
|
-
Enter: { code: "Enter", keyCode: 13 },
|
|
3
|
-
EnterKeyboard: { code: "EnterKeyboard", keyCode: 66 },
|
|
4
|
-
Back: { code: "Back", keyCode: 8 },
|
|
5
|
-
Space: { code: "Space", keyCode: 32 },
|
|
6
|
-
m: { code: "m", keyCode: 77 },
|
|
7
|
-
ArrowLeft: { code: "ArrowLeft", keyCode: 37 },
|
|
8
|
-
ArrowUp: { code: "ArrowUp", keyCode: 38 },
|
|
9
|
-
ArrowRight: { code: "ArrowRight", keyCode: 39 },
|
|
10
|
-
ArrowDown: { code: "ArrowDown", keyCode: 40 },
|
|
11
|
-
};
|
|
12
|
-
|
|
13
|
-
export const ARROW_KEYS = [
|
|
14
|
-
KEYS.ArrowUp,
|
|
15
|
-
KEYS.ArrowLeft,
|
|
16
|
-
KEYS.ArrowDown,
|
|
17
|
-
KEYS.ArrowRight,
|
|
18
|
-
];
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
export const KEYS = {
|
|
2
|
-
Enter: { code: "Enter", keyCode: 13 },
|
|
3
|
-
Space: { code: "Space", keyCode: 32 },
|
|
4
|
-
m: { code: "m", keyCode: 77 },
|
|
5
|
-
ArrowLeft: { code: "ArrowLeft", keyCode: 37 },
|
|
6
|
-
ArrowUp: { code: "ArrowUp", keyCode: 38 },
|
|
7
|
-
ArrowRight: { code: "ArrowRight", keyCode: 39 },
|
|
8
|
-
ArrowDown: { code: "ArrowDown", keyCode: 40 },
|
|
9
|
-
Back: { code: "Backspace", keyCode: 8 },
|
|
10
|
-
Play: { code: "PlayPause", keyCode: 179 },
|
|
11
|
-
Pause: { code: "Pause", keyCode: 179 },
|
|
12
|
-
Forward: { code: "Forward", keyCode: 176 },
|
|
13
|
-
Rewind: { code: "Rewind", keyCode: 177 },
|
|
14
|
-
VolumeUp: { code: "VolumeUp", keyCode: 175 },
|
|
15
|
-
VolumeDown: { code: "VolumeDown", keyCode: 174 },
|
|
16
|
-
ToggleMute: { code: "VolumeMute", keyCode: 173 },
|
|
17
|
-
Stop: { code: "Q", keyCode: 81 },
|
|
18
|
-
};
|
|
19
|
-
|
|
20
|
-
export const ARROW_KEYS = [
|
|
21
|
-
KEYS.ArrowUp,
|
|
22
|
-
KEYS.ArrowLeft,
|
|
23
|
-
KEYS.ArrowDown,
|
|
24
|
-
KEYS.ArrowRight,
|
|
25
|
-
];
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
// dummy file to make sure the folder structure is created
|
|
2
|
-
export const KEYS: Record<string, { code: string; keyCode: number }> = {
|
|
3
|
-
ArrowLeft: { code: "ArrowLeft", keyCode: -1 },
|
|
4
|
-
ArrowUp: { code: "ArrowUp", keyCode: -1 },
|
|
5
|
-
ArrowRight: { code: "ArrowRight", keyCode: -1 },
|
|
6
|
-
ArrowDown: { code: "ArrowDown", keyCode: -1 },
|
|
7
|
-
Back: { code: "Back", keyCode: -1 },
|
|
8
|
-
};
|
|
9
|
-
|
|
10
|
-
export const ARROW_KEYS = [
|
|
11
|
-
KEYS.ArrowUp,
|
|
12
|
-
KEYS.ArrowLeft,
|
|
13
|
-
KEYS.ArrowDown,
|
|
14
|
-
KEYS.ArrowRight,
|
|
15
|
-
];
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|