@applicaster/zapp-react-native-utils 13.0.0-alpha.3755455151 → 13.0.0-alpha.3829509172
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/README.md +0 -10
- package/actionsExecutor/ActionExecutor.ts +16 -9
- package/actionsExecutor/ActionExecutorContext.tsx +59 -8
- package/alertUtils/alert.ts +148 -0
- package/alertUtils/index.ts +1 -148
- package/analyticsUtils/currentScreenProperities.ts +6 -4
- package/appUtils/HooksManager/Hook.ts +2 -2
- package/appUtils/HooksManager/index.ts +1 -1
- package/appUtils/HooksManager/types.ts +5 -2
- package/appUtils/contextKeysManager/contextResolver.ts +77 -0
- package/appUtils/contextKeysManager/index.ts +2 -2
- package/appUtils/contextKeysManager/utils/index.ts +2 -1
- package/appUtils/focusManager/__tests__/__snapshots__/focusManager.test.js.snap +1 -0
- package/appUtils/focusManager/index.ts +11 -12
- package/appUtils/focusManagerAux/utils/index.ts +4 -3
- package/appUtils/keyCodes/index.ts +11 -7
- package/appUtils/orientationHelper.ts +11 -13
- package/appUtils/platform/const.ts +14 -0
- package/appUtils/platform/platformUtils.ts +47 -4
- package/appUtils/playerManager/index.ts +1 -1
- package/appUtils/playerManager/player.ts +26 -14
- package/appUtils/playerManager/playerNative.ts +18 -3
- package/equalUtils/__tests__/isEqual/combination.test.ts +263 -0
- package/equalUtils/index.ts +49 -30
- package/focusManager/FocusManager.ts +11 -1
- package/focusManager/index.ts +41 -4
- package/functionUtils/index.ts +21 -8
- package/idleUtils/__tests__/withTimeout$.test.ts +37 -0
- package/idleUtils/index.ts +1 -1
- package/idleUtils/withTimeout.ts +15 -2
- package/logger/const.ts +9 -67
- package/manifestUtils/__tests__/createConfig.test.js +0 -2
- package/manifestUtils/defaultManifestConfigurations/player.js +8 -0
- package/manifestUtils/fonts/index.js +5 -6
- package/manifestUtils/sharedConfiguration/screenPicker/__tests__/utils.test.js +304 -0
- package/manifestUtils/sharedConfiguration/screenPicker/stylesFields.js +875 -0
- package/manifestUtils/sharedConfiguration/screenPicker/utils.js +130 -0
- package/navigationUtils/__tests__/navigationUtils.test.js +0 -65
- package/navigationUtils/index.ts +3 -34
- package/numberUtils/index.ts +7 -5
- package/package.json +4 -10
- package/playerUtils/configurationGenerator.ts +8 -0
- package/reactHooks/autoscrolling/__tests__/useTrackedView.test.tsx +5 -7
- package/reactHooks/autoscrolling/useTrackedView.ts +12 -1
- package/reactHooks/cell-click/__tests__/index.test.js +5 -0
- package/reactHooks/cell-click/index.ts +7 -1
- package/reactHooks/feed/useFeedLoader.tsx +1 -1
- package/reactHooks/layout/useDimensions/helpers/__tests__/getInitialDimensions.test.js +1 -1
- package/reactHooks/layout/useDimensions/useDimensions.ts +8 -0
- package/reactHooks/navigation/__mocks__/useNavigation.ts +3 -0
- package/reactHooks/navigation/__tests__/index.test.tsx +6 -17
- package/reactHooks/navigation/index.ts +13 -23
- package/reactHooks/navigation/useGetTabBarHeight.ts +1 -3
- package/reactHooks/navigation/useProfilerLogging.ts +15 -0
- package/reactHooks/state/useRefWithInitialValue.ts +14 -0
- package/reactHooks/state/useStateFromSubscribe.ts +23 -0
- package/reactHooks/usePluginConfiguration.ts +1 -1
- package/reactHooks/useSubscriberFor.ts +4 -3
- package/reactUtils/__tests__/__snapshots__/reactUtilsHelpers.test.js.snap +16 -4
- package/reactUtils/__tests__/reactUtils.test.js +1 -19
- package/reactUtils/__tests__/reactUtilsHelpers.test.js +72 -71
- package/reactUtils/createContext/__tests__/__snapshots__/helpers.test.js.snap +6 -72
- package/reactUtils/createContext/__tests__/__snapshots__/provider.test.js.snap +3 -28
- package/reactUtils/createContext/__tests__/__snapshots__/withConsumer.test.js.snap +3 -4
- package/reactUtils/createContext/__tests__/__snapshots__/withProvider.test.js.snap +7 -3
- package/reactUtils/createContext/__tests__/helpers.test.js +107 -121
- package/reactUtils/createContext/__tests__/{index.test.js → index.test.ts} +2 -2
- package/reactUtils/createContext/__tests__/provider.test.js +4 -6
- package/reactUtils/createContext/__tests__/withConsumer.test.js +12 -12
- package/reactUtils/createContext/__tests__/withProvider.test.js +4 -4
- package/reactUtils/createContext/helpers.ts +6 -1
- package/reactUtils/createContext/index.ts +11 -25
- package/reactUtils/index.ts +0 -11
- package/screenState/index.ts +24 -10
- package/services/js2native.ts +673 -0
- package/testUtils/index.tsx +0 -10
- package/theme/index.ts +1 -1
- package/time/BackgroundTimer.ts +55 -0
- package/time/Timer.ts +9 -6
- package/types.ts +1 -0
- package/zappFrameworkUtils/presentPluginOneTime.ts +2 -3
- package/reactUtils/createContext/__tests__/index-no-react.test.js +0 -27
- /package/reactUtils/createContext/__tests__/__snapshots__/{index.test.js.snap → index.test.ts.snap} +0 -0
package/equalUtils/index.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
/* eslint no-console: off */
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import { equals } from "ramda";
|
|
4
|
+
|
|
5
|
+
const alwaysTrue = () => true;
|
|
4
6
|
|
|
5
7
|
export const isParentFocusEqual = (
|
|
6
8
|
prevParentFocus: ParentFocus,
|
|
@@ -18,7 +20,7 @@ export const isEqual =
|
|
|
18
20
|
({
|
|
19
21
|
byValue = [],
|
|
20
22
|
byReference = [],
|
|
21
|
-
byComparator = { comparator:
|
|
23
|
+
byComparator = { comparator: alwaysTrue, keys: [] },
|
|
22
24
|
debug = false,
|
|
23
25
|
compareRemainingKeysBySameValue = false,
|
|
24
26
|
}: {
|
|
@@ -29,42 +31,59 @@ export const isEqual =
|
|
|
29
31
|
compareRemainingKeysBySameValue?: boolean;
|
|
30
32
|
}) =>
|
|
31
33
|
(prev, next) => {
|
|
32
|
-
const
|
|
33
|
-
|
|
34
|
-
|
|
34
|
+
for (const key of byReference) {
|
|
35
|
+
if (prev[key] !== next[key]) {
|
|
36
|
+
if (debug) console.log({ isEqualByReference: false });
|
|
35
37
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
38
|
+
return false;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
39
41
|
|
|
40
|
-
const
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
(key) => byComparator.comparator(prev[key], next[key]),
|
|
44
|
-
byComparator.keys
|
|
45
|
-
);
|
|
42
|
+
for (const key of byValue) {
|
|
43
|
+
if (!equals(prev[key], next[key])) {
|
|
44
|
+
if (debug) console.log({ isEqualByValue: false });
|
|
46
45
|
|
|
47
|
-
|
|
48
|
-
|
|
46
|
+
return false;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
for (const key of byComparator.keys) {
|
|
51
|
+
if (!byComparator.comparator(prev[key], next[key])) {
|
|
52
|
+
if (debug) console.log({ isEqualByComparator: false });
|
|
53
|
+
|
|
54
|
+
return false;
|
|
55
|
+
}
|
|
49
56
|
}
|
|
50
57
|
|
|
51
58
|
if (compareRemainingKeysBySameValue) {
|
|
52
|
-
const
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
59
|
+
const allKeys = new Set([...Object.keys(prev), ...Object.keys(next)]);
|
|
60
|
+
|
|
61
|
+
const declaredKeys = new Set([
|
|
62
|
+
...byValue,
|
|
63
|
+
...byReference,
|
|
64
|
+
...byComparator.keys,
|
|
65
|
+
]);
|
|
56
66
|
|
|
57
|
-
const
|
|
58
|
-
Object.is(prev[key], next[key])
|
|
59
|
-
|
|
67
|
+
for (const key of Array.from(allKeys)) {
|
|
68
|
+
if (!declaredKeys.has(key) && !Object.is(prev[key], next[key])) {
|
|
69
|
+
if (debug) console.log({ isRestKeysEqualAllBySameValue: false });
|
|
60
70
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
71
|
+
return false;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
// if we made it here, everything matched
|
|
77
|
+
if (debug) {
|
|
78
|
+
console.log({
|
|
79
|
+
isEqualByValue: true,
|
|
80
|
+
isEqualByReference: true,
|
|
81
|
+
isEqualByComparator: true,
|
|
82
|
+
isRestKeysEqualAllBySameValue: compareRemainingKeysBySameValue
|
|
83
|
+
? true
|
|
84
|
+
: undefined,
|
|
85
|
+
});
|
|
67
86
|
}
|
|
68
87
|
|
|
69
|
-
return
|
|
88
|
+
return true;
|
|
70
89
|
};
|
|
@@ -250,7 +250,17 @@ class FocusManager {
|
|
|
250
250
|
}
|
|
251
251
|
|
|
252
252
|
onDisableFocusChange = (id) => {
|
|
253
|
-
|
|
253
|
+
const isFocused = FocusManager.instance.isFocused(id);
|
|
254
|
+
|
|
255
|
+
const isDescendantFocused = (() => {
|
|
256
|
+
try {
|
|
257
|
+
return FocusManager.instance.isAnyDescendantFocused(id);
|
|
258
|
+
} catch (_e) {
|
|
259
|
+
return false;
|
|
260
|
+
}
|
|
261
|
+
})();
|
|
262
|
+
|
|
263
|
+
if (isFocused || isDescendantFocused) {
|
|
254
264
|
// Move focus to next one
|
|
255
265
|
const nextFocus = FocusManager.instance.focused?.props
|
|
256
266
|
?.nextFocusDown as string;
|
package/focusManager/index.ts
CHANGED
|
@@ -8,6 +8,8 @@ import { isNilOrEmpty } from "../reactUtils/helpers";
|
|
|
8
8
|
import { isAndroidTVPlatform } from "../reactUtils";
|
|
9
9
|
import { noop } from "../functionUtils";
|
|
10
10
|
|
|
11
|
+
const EMPTY_GROUP_COMPONENT = "empty_group_component";
|
|
12
|
+
|
|
11
13
|
export function useFocusManager() {
|
|
12
14
|
return focusManager;
|
|
13
15
|
}
|
|
@@ -74,6 +76,14 @@ export function useFocusEffect(onFocus, focusWatcher) {
|
|
|
74
76
|
}, focusWatcher);
|
|
75
77
|
}
|
|
76
78
|
|
|
79
|
+
export function shouldShowEmptyGroup(component) {
|
|
80
|
+
return (
|
|
81
|
+
component?.ui_components?.filter(
|
|
82
|
+
({ component_type }) => component_type === EMPTY_GROUP_COMPONENT
|
|
83
|
+
)?.length > 0
|
|
84
|
+
);
|
|
85
|
+
}
|
|
86
|
+
|
|
77
87
|
export const isFocusable = (component: ZappEntry | ZappUIComponent | any) =>
|
|
78
88
|
R.tryCatch(
|
|
79
89
|
R.compose(
|
|
@@ -101,15 +111,42 @@ export const useIsFocusable = (props: Props): void => {
|
|
|
101
111
|
component.rules.hide_component_if_data_is_empty
|
|
102
112
|
);
|
|
103
113
|
|
|
114
|
+
const isLoadingData = !!zappPipesData?.loading;
|
|
115
|
+
|
|
104
116
|
const hasNoData =
|
|
105
117
|
isNilOrEmpty(zappPipesData?.data) ||
|
|
106
118
|
isNilOrEmpty(zappPipesData?.data?.entry);
|
|
107
119
|
|
|
120
|
+
const hasDataError = !!zappPipesData?.error;
|
|
121
|
+
|
|
122
|
+
const hasEmptyGroup = shouldShowEmptyGroup(component);
|
|
123
|
+
|
|
124
|
+
const isGallery = component?.component_type === "gallery-qb";
|
|
125
|
+
|
|
126
|
+
const isHiddenDueToEmptyData =
|
|
127
|
+
!isLoadingData && hasNoData && hideIfDataEmpty && !hasEmptyGroup;
|
|
128
|
+
|
|
129
|
+
const defaultFocusableLogic =
|
|
130
|
+
componentCellsFocusable && (!hasNoData || !hideIfDataEmpty);
|
|
131
|
+
|
|
108
132
|
React.useEffect(() => {
|
|
109
133
|
if (isAndroidTVPlatform()) {
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
)
|
|
134
|
+
let isFocusableNew = false;
|
|
135
|
+
|
|
136
|
+
if (isGallery) {
|
|
137
|
+
isFocusableNew = true;
|
|
138
|
+
} else if (isFocusable(component)) {
|
|
139
|
+
isFocusableNew = defaultFocusableLogic;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
setIsFocusable(isFocusableNew);
|
|
113
143
|
}
|
|
114
|
-
}, [
|
|
144
|
+
}, [
|
|
145
|
+
defaultFocusableLogic,
|
|
146
|
+
isHiddenDueToEmptyData,
|
|
147
|
+
isGallery,
|
|
148
|
+
setIsFocusable,
|
|
149
|
+
hasDataError,
|
|
150
|
+
hasEmptyGroup,
|
|
151
|
+
]);
|
|
115
152
|
};
|
package/functionUtils/index.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as R from "ramda";
|
|
2
|
-
import { useRef } from "react";
|
|
2
|
+
import { useCallback, useEffect, useRef } from "react";
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
*
|
|
@@ -9,31 +9,44 @@ import { useRef } from "react";
|
|
|
9
9
|
*/
|
|
10
10
|
export const useThrottle = (callback: () => void, delay: number) => {
|
|
11
11
|
const lastCallRef = useRef<number>(0);
|
|
12
|
-
const timeoutRef = useRef<
|
|
12
|
+
const timeoutRef = useRef<NodeJS.Timeout | null>(null);
|
|
13
|
+
const callbackRef = useRef<() => void>(callback);
|
|
13
14
|
|
|
14
|
-
|
|
15
|
+
useEffect(() => {
|
|
16
|
+
callbackRef.current = callback;
|
|
17
|
+
}, [callback]);
|
|
18
|
+
|
|
19
|
+
const throttledFunction = useCallback(() => {
|
|
15
20
|
const now = Date.now();
|
|
16
21
|
|
|
17
22
|
if (now - lastCallRef.current >= delay) {
|
|
18
|
-
|
|
23
|
+
callbackRef.current();
|
|
19
24
|
lastCallRef.current = now;
|
|
20
25
|
} else if (!timeoutRef.current) {
|
|
21
26
|
const remainingTime = delay - (now - lastCallRef.current);
|
|
22
27
|
|
|
23
28
|
timeoutRef.current = setTimeout(() => {
|
|
24
|
-
|
|
29
|
+
callbackRef.current();
|
|
25
30
|
lastCallRef.current = Date.now();
|
|
26
31
|
timeoutRef.current = null;
|
|
27
32
|
}, remainingTime);
|
|
28
33
|
}
|
|
29
|
-
};
|
|
34
|
+
}, [delay]);
|
|
30
35
|
|
|
31
|
-
const cancel = () => {
|
|
36
|
+
const cancel = useCallback(() => {
|
|
32
37
|
if (timeoutRef.current) {
|
|
33
38
|
clearTimeout(timeoutRef.current);
|
|
34
39
|
timeoutRef.current = null;
|
|
35
40
|
}
|
|
36
|
-
};
|
|
41
|
+
}, []);
|
|
42
|
+
|
|
43
|
+
useEffect(() => {
|
|
44
|
+
return () => {
|
|
45
|
+
if (timeoutRef.current) {
|
|
46
|
+
clearTimeout(timeoutRef.current);
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
}, []);
|
|
37
50
|
|
|
38
51
|
return { throttledFunction, cancel };
|
|
39
52
|
};
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { TestScheduler } from "rxjs/testing";
|
|
2
|
+
|
|
3
|
+
import { withTimeout$ } from "..";
|
|
4
|
+
|
|
5
|
+
describe("withTimeout$", () => {
|
|
6
|
+
let testScheduler: TestScheduler;
|
|
7
|
+
|
|
8
|
+
beforeEach(() => {
|
|
9
|
+
testScheduler = new TestScheduler((actual, expected) => {
|
|
10
|
+
expect(actual).toEqual(expected);
|
|
11
|
+
});
|
|
12
|
+
});
|
|
13
|
+
|
|
14
|
+
it("should emit undefined after the specified timeout", () => {
|
|
15
|
+
testScheduler.run(({ expectObservable }) => {
|
|
16
|
+
const timeout = 1000;
|
|
17
|
+
const expectedMarble = "1s (a|)";
|
|
18
|
+
const expectedValues = { a: undefined };
|
|
19
|
+
|
|
20
|
+
const result$ = withTimeout$(timeout);
|
|
21
|
+
|
|
22
|
+
expectObservable(result$).toBe(expectedMarble, expectedValues);
|
|
23
|
+
});
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
it("should complete after emitting undefined", () => {
|
|
27
|
+
testScheduler.run(({ expectObservable }) => {
|
|
28
|
+
const timeout = 500;
|
|
29
|
+
const expectedMarble = "500ms (a|)";
|
|
30
|
+
const expectedValues = { a: undefined };
|
|
31
|
+
|
|
32
|
+
const result$ = withTimeout$(timeout);
|
|
33
|
+
|
|
34
|
+
expectObservable(result$).toBe(expectedMarble, expectedValues);
|
|
35
|
+
});
|
|
36
|
+
});
|
|
37
|
+
});
|
package/idleUtils/index.ts
CHANGED
package/idleUtils/withTimeout.ts
CHANGED
|
@@ -1,7 +1,20 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import { of, Observable } from "rxjs";
|
|
2
|
+
import { delay } from "rxjs/operators";
|
|
3
|
+
|
|
4
|
+
export const withTimeout = (timeout: number): Promise<void> => {
|
|
5
|
+
return new Promise<void>((resolve) => {
|
|
3
6
|
setTimeout(() => {
|
|
4
7
|
resolve(undefined);
|
|
5
8
|
}, timeout);
|
|
6
9
|
});
|
|
7
10
|
};
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Creates an observable that emits a single value after a specified timeout.
|
|
14
|
+
*
|
|
15
|
+
* @param timeout - The delay duration in milliseconds before emitting the value.
|
|
16
|
+
* @returns An observable that emits `undefined` after the specified timeout.
|
|
17
|
+
*/
|
|
18
|
+
export const withTimeout$ = (timeout: number): Observable<void> => {
|
|
19
|
+
return of(undefined).pipe(delay(timeout));
|
|
20
|
+
};
|
package/logger/const.ts
CHANGED
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
/* eslint-disable unused-imports/no-unused-vars */
|
|
2
|
-
import * as R from "ramda";
|
|
3
|
-
|
|
4
1
|
enum XRayLogLevel {
|
|
5
2
|
verbose = 0,
|
|
6
3
|
debug = 1,
|
|
@@ -11,51 +8,9 @@ enum XRayLogLevel {
|
|
|
11
8
|
off = 100,
|
|
12
9
|
}
|
|
13
10
|
|
|
14
|
-
|
|
15
|
-
off = "off",
|
|
16
|
-
verbose = "verbose",
|
|
17
|
-
debug = "debug",
|
|
18
|
-
info = "info",
|
|
19
|
-
warning = "warning",
|
|
20
|
-
error = "error",
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
const toastLevelToLogLevel = (toastLogLevel: ToastLogLevel): XRayLogLevel => {
|
|
24
|
-
if (R.isNil(toastLogLevel)) {
|
|
25
|
-
return XRayLogLevel.off;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
switch (toastLogLevel) {
|
|
29
|
-
case ToastLogLevel.verbose:
|
|
30
|
-
return XRayLogLevel.verbose;
|
|
31
|
-
case ToastLogLevel.debug:
|
|
32
|
-
return XRayLogLevel.debug;
|
|
33
|
-
case ToastLogLevel.info:
|
|
34
|
-
return XRayLogLevel.info;
|
|
35
|
-
case ToastLogLevel.error:
|
|
36
|
-
return XRayLogLevel.error;
|
|
37
|
-
default:
|
|
38
|
-
return XRayLogLevel.off;
|
|
39
|
-
}
|
|
40
|
-
};
|
|
41
|
-
|
|
42
|
-
const PLUGIN_IDENTIFIER = "xray_logging_plugin";
|
|
43
|
-
|
|
44
|
-
const wrapInObject = (obj, name) => {};
|
|
45
|
-
|
|
46
|
-
const applyConditions = (wrappedObj) => {};
|
|
47
|
-
|
|
48
|
-
const sanitizeEventPayload = () => {};
|
|
11
|
+
const wrapInObject = (_ctx: unknown, _key: string) => {};
|
|
49
12
|
|
|
50
|
-
const
|
|
51
|
-
|
|
52
|
-
const isWeb = () => {};
|
|
53
|
-
|
|
54
|
-
const isDOMApp = () => {};
|
|
55
|
-
|
|
56
|
-
const isBrowser = () => {};
|
|
57
|
-
|
|
58
|
-
const eventAllowed = () => {};
|
|
13
|
+
const applyConditions = (_fn: unknown) => {};
|
|
59
14
|
|
|
60
15
|
/**
|
|
61
16
|
* This is the mocked version of XRayLogger
|
|
@@ -90,34 +45,21 @@ export default class XRayLogger {
|
|
|
90
45
|
);
|
|
91
46
|
};
|
|
92
47
|
|
|
93
|
-
log = (
|
|
94
|
-
const logEvent = typeof event === "string" ? { message: event } : event;
|
|
95
|
-
};
|
|
48
|
+
log = (_event) => {};
|
|
96
49
|
|
|
97
|
-
debug = (
|
|
98
|
-
const logEvent = typeof event === "string" ? { message: event } : event;
|
|
99
|
-
};
|
|
50
|
+
debug = (_event) => {};
|
|
100
51
|
|
|
101
|
-
info = (
|
|
102
|
-
const logEvent = typeof event === "string" ? { message: event } : event;
|
|
103
|
-
};
|
|
52
|
+
info = (_event) => {};
|
|
104
53
|
|
|
105
|
-
warning = (
|
|
106
|
-
const logEvent = typeof event === "string" ? { message: event } : event;
|
|
107
|
-
};
|
|
54
|
+
warning = (_event) => {};
|
|
108
55
|
|
|
109
|
-
warn = (
|
|
56
|
+
warn = (_event) => {
|
|
110
57
|
this.warning(event);
|
|
111
58
|
};
|
|
112
59
|
|
|
113
|
-
error = (
|
|
114
|
-
const logEvent: XRayEventData =
|
|
115
|
-
event instanceof Error
|
|
116
|
-
? { exception: event as Error, message: event.message }
|
|
117
|
-
: (event as XRayEventData);
|
|
118
|
-
};
|
|
60
|
+
error = (_event) => {};
|
|
119
61
|
|
|
120
|
-
sendEvent = (
|
|
62
|
+
sendEvent = (_event, _eventData) => {};
|
|
121
63
|
|
|
122
64
|
// To be used by QuickBrick Hook events
|
|
123
65
|
sendAudienceEvent = (event, eventData = null) => {
|
|
@@ -50,6 +50,14 @@ function getPlayerConfiguration({ platform }) {
|
|
|
50
50
|
label_tooltip:
|
|
51
51
|
"Set the query params which control the size of the image e.g width, height. This will help to optimize the loading time, when magic background is enabled.",
|
|
52
52
|
},
|
|
53
|
+
{
|
|
54
|
+
key: "audio_player_background_image_default_color",
|
|
55
|
+
label: "Audio Player Background Image Default Color",
|
|
56
|
+
initial_value: "",
|
|
57
|
+
type: "text_input",
|
|
58
|
+
label_tooltip:
|
|
59
|
+
"Set the default color for the audio player background image if not image or set of gradient colors are not provided.",
|
|
60
|
+
},
|
|
53
61
|
],
|
|
54
62
|
};
|
|
55
63
|
|
|
@@ -224,12 +224,11 @@ function fontKey(label, defaults, conditionalField = null) {
|
|
|
224
224
|
return fields;
|
|
225
225
|
}
|
|
226
226
|
|
|
227
|
-
function tvMenuLabel(label, description, defaults) {
|
|
228
|
-
return fieldsGroup(
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
);
|
|
227
|
+
function tvMenuLabel(label, description, defaults, fields = []) {
|
|
228
|
+
return fieldsGroup(label, description, [
|
|
229
|
+
...fields,
|
|
230
|
+
...generateFieldsFromDefaults(label, defaults, TV_MENU_LABEL_FIELDS),
|
|
231
|
+
]);
|
|
233
232
|
}
|
|
234
233
|
|
|
235
234
|
function mobileCellLabel(label, description, defaults, groupFolded) {
|