@applicaster/zapp-react-native-utils 12.0.3-rc.2 → 13.0.0-alpha.1338463240
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/actionsExecutor/ActionExecutorContext.tsx +15 -1
- package/appUtils/HooksManager/{Hook.js → Hook.ts} +35 -23
- package/appUtils/HooksManager/__tests__/__snapshots__/hook.test.js.snap +4 -2
- package/appUtils/HooksManager/__tests__/__snapshots__/hooksManager.test.js.snap +693 -0
- package/appUtils/HooksManager/__tests__/hook.test.js +196 -184
- package/appUtils/HooksManager/__tests__/hooksManager.test.js +96 -99
- package/appUtils/HooksManager/{constants.js → constants.ts} +1 -1
- package/appUtils/HooksManager/{index.js → index.ts} +121 -112
- package/appUtils/HooksManager/types.ts +116 -0
- package/appUtils/RiverFocusManager/index.js +17 -12
- package/appUtils/accessibilityManager/index.ts +1 -42
- package/appUtils/focusManager/index.ts +63 -90
- package/appUtils/focusManager/treeDataStructure/Tree/index.js +2 -26
- package/appUtils/focusManager/treeDataStructure/Utils/index.js +1 -3
- package/appUtils/{index.js → index.ts} +1 -1
- package/appUtils/keyCodes/__tests__/keyCodes.test.js +3 -3
- package/appUtils/keyCodes/{index.js → index.ts} +2 -0
- package/appUtils/keyCodes/keys/index.ts +3 -0
- package/appUtils/keyCodes/{keys.android.js → keys/keyEventMapper.ts} +0 -19
- package/appUtils/keyCodes/keys/keys.android.ts +18 -0
- package/appUtils/keyCodes/keys/keys.ios.ts +25 -0
- package/appUtils/keyCodes/keys/keys.ts +15 -0
- package/appUtils/keyCodes/keysByPlatform.ts +8 -0
- package/appUtils/platform/platformUtils.ts +0 -14
- package/appUtils/playerManager/index.ts +6 -2
- package/domUtils/{cookieManager.js → cookieManager.ts} +1 -2
- package/functionUtils/index.ts +15 -11
- 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/modalState/index.ts +1 -5
- package/navigationUtils/index.ts +14 -5
- package/package.json +2 -2
- package/reactHooks/navigation/index.ts +7 -4
- package/reactUtils/index.ts +0 -14
- package/appUtils/focusManager/utils/enums.ts +0 -4
- package/appUtils/keyCodes/keys.ios.js +0 -46
- /package/appUtils/HooksManager/{logger.js → logger.ts} +0 -0
- /package/appUtils/{directionHelper.js → directionHelper.ts} +0 -0
- /package/appUtils/keyCodes/{androidTVKeys.js → androidTVKeys.ts} +0 -0
- /package/appUtils/keyCodes/{keys.web.js → keys/keys.web.ts} +0 -0
- /package/appUtils/keyCodes/{keysByPlatform.js → keys/keysByPlatform.ts} +0 -0
- /package/appUtils/{localizationsHelper.js → localizationsHelper.ts} +0 -0
- /package/domUtils/{logger.js → logger.ts} +0 -0
|
@@ -9,20 +9,6 @@ import {
|
|
|
9
9
|
import { PLATFORM_KEYS, PLATFORMS } from "./const";
|
|
10
10
|
import { createLogger, utilsLogger } from "../../logger";
|
|
11
11
|
|
|
12
|
-
declare global {
|
|
13
|
-
interface Window {
|
|
14
|
-
VIZIO?: {
|
|
15
|
-
exitApplication: () => void;
|
|
16
|
-
Chromevox: {
|
|
17
|
-
play: (text: string) => void;
|
|
18
|
-
};
|
|
19
|
-
setClosedCaptionHandler: (
|
|
20
|
-
callback: (isCCEnabled: boolean) => void
|
|
21
|
-
) => void;
|
|
22
|
-
};
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
|
|
26
12
|
const { log_debug } = createLogger({
|
|
27
13
|
category: "General",
|
|
28
14
|
subsystem: "PlatformUtils",
|
|
@@ -169,8 +169,12 @@ export class PlayerManager {
|
|
|
169
169
|
this.addPlayer(id, playerController);
|
|
170
170
|
|
|
171
171
|
if (playerController.playerRole === PlayerRole.Primary) {
|
|
172
|
-
if (
|
|
173
|
-
RNPlayerManager
|
|
172
|
+
if (RNPlayerManager) {
|
|
173
|
+
Object.keys(RNPlayerManager).forEach((pluginId) => {
|
|
174
|
+
if (pluginId !== playerController.playerPluginId) {
|
|
175
|
+
RNPlayerManager[pluginId]?.stopBackgroundPlayback?.();
|
|
176
|
+
}
|
|
177
|
+
});
|
|
174
178
|
}
|
|
175
179
|
|
|
176
180
|
playerController.addListener({
|
|
@@ -2,7 +2,6 @@ import { domUtilsLogger } from "./logger";
|
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* Gets an object of cookies and sets them on the DOM.
|
|
5
|
-
* @param {Object} cookies selected data key for label.
|
|
6
5
|
*/
|
|
7
6
|
export function setCookies(cookies): void {
|
|
8
7
|
const cookieKeys = Object.keys(cookies);
|
|
@@ -25,7 +24,7 @@ export function setCookies(cookies): void {
|
|
|
25
24
|
/**
|
|
26
25
|
* Gets cookies set on DOM
|
|
27
26
|
*/
|
|
28
|
-
export function getCookies():
|
|
27
|
+
export function getCookies(): typeof document.cookie {
|
|
29
28
|
try {
|
|
30
29
|
if (document) {
|
|
31
30
|
return document.cookie;
|
package/functionUtils/index.ts
CHANGED
|
@@ -111,12 +111,12 @@ type SubscriberFn<T> = (
|
|
|
111
111
|
|
|
112
112
|
export type EventHandlerFn<T> = (event: string, ...args: unknown[]) => T;
|
|
113
113
|
|
|
114
|
-
type SubscriberObj =
|
|
115
|
-
on
|
|
116
|
-
invokeHandler: EventHandlerFn<SubscriberObj
|
|
117
|
-
removeHandler: EventHandlerFn<SubscriberObj
|
|
118
|
-
handlers: Record<string, SubscriberFn<SubscriberObj
|
|
119
|
-
}
|
|
114
|
+
export type SubscriberObj<T extends {} = {}> = {
|
|
115
|
+
on: SubscriberFn<SubscriberObj<T>>;
|
|
116
|
+
invokeHandler: EventHandlerFn<SubscriberObj<T>>;
|
|
117
|
+
removeHandler: EventHandlerFn<SubscriberObj<T>>;
|
|
118
|
+
handlers: Record<string, SubscriberFn<SubscriberObj<T>>[] | []>;
|
|
119
|
+
} & T;
|
|
120
120
|
|
|
121
121
|
export const clearObject = (object: { [key: string]: unknown }) =>
|
|
122
122
|
Object.keys(object).forEach((key) => delete object[key]);
|
|
@@ -126,7 +126,11 @@ export const clearObject = (object: { [key: string]: unknown }) =>
|
|
|
126
126
|
* @param {Object} obj to add the subscription feature on
|
|
127
127
|
* @returns {Object} subscriber object
|
|
128
128
|
*/
|
|
129
|
-
export function subscriber
|
|
129
|
+
export function subscriber<T extends Partial<SubscriberObj> = {}>(
|
|
130
|
+
_obj: T = {} as T
|
|
131
|
+
): SubscriberObj {
|
|
132
|
+
const obj: T = _obj;
|
|
133
|
+
|
|
130
134
|
if (!obj.handlers) {
|
|
131
135
|
obj.handlers = {};
|
|
132
136
|
}
|
|
@@ -172,7 +176,7 @@ export function subscriber(obj: SubscriberObj = {}): SubscriberObj {
|
|
|
172
176
|
| SubscriberFn<SubscriberObj>[]
|
|
173
177
|
| [];
|
|
174
178
|
|
|
175
|
-
return obj;
|
|
179
|
+
return obj as SubscriberObj;
|
|
176
180
|
};
|
|
177
181
|
|
|
178
182
|
/**
|
|
@@ -188,16 +192,16 @@ export function subscriber(obj: SubscriberObj = {}): SubscriberObj {
|
|
|
188
192
|
|
|
189
193
|
R.compose(R.forEach(callHandlerWithDispose), R.propOr([], event))(handlers);
|
|
190
194
|
|
|
191
|
-
return obj;
|
|
195
|
+
return obj as SubscriberObj;
|
|
192
196
|
};
|
|
193
197
|
|
|
194
198
|
obj.removeHandler = function (event, handler) {
|
|
195
199
|
handlers[event] = R.reject(R.equals(handler), handlers[event]);
|
|
196
200
|
|
|
197
|
-
return obj;
|
|
201
|
+
return obj as SubscriberObj;
|
|
198
202
|
};
|
|
199
203
|
|
|
200
|
-
return obj;
|
|
204
|
+
return obj as SubscriberObj;
|
|
201
205
|
}
|
|
202
206
|
|
|
203
207
|
/**
|
|
@@ -0,0 +1,304 @@
|
|
|
1
|
+
// @ts-nocheck
|
|
2
|
+
import utils from "../utils";
|
|
3
|
+
|
|
4
|
+
describe("generateFontConfiguration", () => {
|
|
5
|
+
it("should generate default configuration for tvos", () => {
|
|
6
|
+
const expected = [
|
|
7
|
+
{
|
|
8
|
+
initial_value: 20,
|
|
9
|
+
label: "tvOS font Size",
|
|
10
|
+
key: "tvos_font_size",
|
|
11
|
+
type: "number_input",
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
initial_value: 40,
|
|
15
|
+
label: "tvOS line Height",
|
|
16
|
+
key: "tvos_line_height",
|
|
17
|
+
type: "number_input",
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
initial_value: 0.4,
|
|
21
|
+
label: "tvOS letter Spacing",
|
|
22
|
+
key: "tvos_letter_spacing",
|
|
23
|
+
type: "number_input",
|
|
24
|
+
},
|
|
25
|
+
];
|
|
26
|
+
|
|
27
|
+
const platforms = {
|
|
28
|
+
tvos: "tvOS",
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
const generatedFontConfiguration =
|
|
32
|
+
utils.generateFontConfiguration(platforms);
|
|
33
|
+
|
|
34
|
+
expect(generatedFontConfiguration).toEqual(expected);
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
it("should generate default configuration for android_tv", () => {
|
|
38
|
+
const expected = [
|
|
39
|
+
{
|
|
40
|
+
initial_value: 20,
|
|
41
|
+
label: "Android TV font Size",
|
|
42
|
+
key: "android_tv_font_size",
|
|
43
|
+
type: "number_input",
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
initial_value: 40,
|
|
47
|
+
label: "Android TV line Height",
|
|
48
|
+
key: "android_tv_line_height",
|
|
49
|
+
type: "number_input",
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
initial_value: 0.4,
|
|
53
|
+
label: "Android TV letter Spacing",
|
|
54
|
+
key: "android_tv_letter_spacing",
|
|
55
|
+
type: "number_input",
|
|
56
|
+
},
|
|
57
|
+
];
|
|
58
|
+
|
|
59
|
+
const platforms = {
|
|
60
|
+
android_tv: "Android TV",
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
const generatedFontConfiguration =
|
|
64
|
+
utils.generateFontConfiguration(platforms);
|
|
65
|
+
|
|
66
|
+
expect(generatedFontConfiguration).toEqual(expected);
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
it("should generate default configuration for lg_tv", () => {
|
|
70
|
+
const expected = [
|
|
71
|
+
{
|
|
72
|
+
initial_value: 20,
|
|
73
|
+
label: "LG TV font Size",
|
|
74
|
+
key: "lg_tv_font_size",
|
|
75
|
+
type: "number_input",
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
initial_value: 40,
|
|
79
|
+
label: "LG TV line Height",
|
|
80
|
+
key: "lg_tv_line_height",
|
|
81
|
+
type: "number_input",
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
initial_value: 0.4,
|
|
85
|
+
label: "LG TV letter Spacing",
|
|
86
|
+
key: "lg_tv_letter_spacing",
|
|
87
|
+
type: "number_input",
|
|
88
|
+
},
|
|
89
|
+
];
|
|
90
|
+
|
|
91
|
+
const platforms = {
|
|
92
|
+
lg_tv: "LG TV",
|
|
93
|
+
};
|
|
94
|
+
|
|
95
|
+
const generatedFontConfiguration =
|
|
96
|
+
utils.generateFontConfiguration(platforms);
|
|
97
|
+
|
|
98
|
+
expect(generatedFontConfiguration).toEqual(expected);
|
|
99
|
+
});
|
|
100
|
+
|
|
101
|
+
it("should generate default configuration for samsung_tv", () => {
|
|
102
|
+
const expected = [
|
|
103
|
+
{
|
|
104
|
+
initial_value: 20,
|
|
105
|
+
label: "Samsung TV font Size",
|
|
106
|
+
key: "samsung_tv_font_size",
|
|
107
|
+
type: "number_input",
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
initial_value: 40,
|
|
111
|
+
label: "Samsung TV line Height",
|
|
112
|
+
key: "samsung_tv_line_height",
|
|
113
|
+
type: "number_input",
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
initial_value: 0.4,
|
|
117
|
+
label: "Samsung TV letter Spacing",
|
|
118
|
+
key: "samsung_tv_letter_spacing",
|
|
119
|
+
type: "number_input",
|
|
120
|
+
},
|
|
121
|
+
];
|
|
122
|
+
|
|
123
|
+
const platforms = {
|
|
124
|
+
samsung_tv: "Samsung TV",
|
|
125
|
+
};
|
|
126
|
+
|
|
127
|
+
const generatedFontConfiguration =
|
|
128
|
+
utils.generateFontConfiguration(platforms);
|
|
129
|
+
|
|
130
|
+
expect(generatedFontConfiguration).toEqual(expected);
|
|
131
|
+
});
|
|
132
|
+
});
|
|
133
|
+
|
|
134
|
+
test("conditional_rule helper should return correct object", () => {
|
|
135
|
+
expect(utils.conditional_rule("a", "b")).toMatchObject({
|
|
136
|
+
key: "a",
|
|
137
|
+
condition_value: "b",
|
|
138
|
+
});
|
|
139
|
+
});
|
|
140
|
+
|
|
141
|
+
test("createConditionalConfig helper should return correct object", () => {
|
|
142
|
+
expect(
|
|
143
|
+
utils.createConditionalConfig([
|
|
144
|
+
["a", "b"],
|
|
145
|
+
["c", "d"],
|
|
146
|
+
])
|
|
147
|
+
).toEqual({
|
|
148
|
+
rules: "conditional",
|
|
149
|
+
conditional_fields: [
|
|
150
|
+
{
|
|
151
|
+
key: "a",
|
|
152
|
+
condition_value: "b",
|
|
153
|
+
},
|
|
154
|
+
{
|
|
155
|
+
key: "c",
|
|
156
|
+
condition_value: "d",
|
|
157
|
+
},
|
|
158
|
+
],
|
|
159
|
+
});
|
|
160
|
+
});
|
|
161
|
+
|
|
162
|
+
test("conditional_horizontal_type should contain correct parameters", () => {
|
|
163
|
+
expect(
|
|
164
|
+
utils.conditional_horizontal_type_item_fixed.conditional_fields[0]
|
|
165
|
+
).toMatchObject({
|
|
166
|
+
key: "styles/screen_picker_type",
|
|
167
|
+
condition_value: "horizontal",
|
|
168
|
+
});
|
|
169
|
+
});
|
|
170
|
+
|
|
171
|
+
test("conditional_vertical_type should contain correct parameters", () => {
|
|
172
|
+
expect(utils.conditional_vertical_type.conditional_fields[0]).toMatchObject({
|
|
173
|
+
key: "styles/screen_picker_type",
|
|
174
|
+
condition_value: "vertical",
|
|
175
|
+
});
|
|
176
|
+
});
|
|
177
|
+
|
|
178
|
+
test("conditional_horizontal_type_item_fixed should contain correct parameters", () => {
|
|
179
|
+
expect(
|
|
180
|
+
utils.conditional_horizontal_type_item_fixed.conditional_fields[0]
|
|
181
|
+
).toMatchObject({
|
|
182
|
+
key: "styles/screen_picker_type",
|
|
183
|
+
condition_value: "horizontal",
|
|
184
|
+
});
|
|
185
|
+
|
|
186
|
+
expect(
|
|
187
|
+
utils.conditional_horizontal_type_item_fixed.conditional_fields[1]
|
|
188
|
+
).toMatchObject({
|
|
189
|
+
key: "styles/screen_picker_item_size",
|
|
190
|
+
condition_value: "fixed",
|
|
191
|
+
});
|
|
192
|
+
});
|
|
193
|
+
|
|
194
|
+
test("conditional_horizontal_display_type_fixed should contain correct parameters", () => {
|
|
195
|
+
expect(
|
|
196
|
+
utils.conditional_horizontal_display_type_fixed.conditional_fields[0]
|
|
197
|
+
).toMatchObject({
|
|
198
|
+
key: "styles/screen_picker_type",
|
|
199
|
+
condition_value: "horizontal",
|
|
200
|
+
});
|
|
201
|
+
|
|
202
|
+
expect(
|
|
203
|
+
utils.conditional_horizontal_display_type_fixed.conditional_fields[1]
|
|
204
|
+
).toMatchObject({
|
|
205
|
+
key: "styles/screen_picker_horizontal_display_type",
|
|
206
|
+
condition_value: "fixed",
|
|
207
|
+
});
|
|
208
|
+
});
|
|
209
|
+
|
|
210
|
+
test("conditional_horizontal_display_type_fixed should contain correct parameters", () => {
|
|
211
|
+
expect(
|
|
212
|
+
utils.conditional_horizontal_asset_on.conditional_fields[0]
|
|
213
|
+
).toMatchObject({
|
|
214
|
+
key: "styles/screen_picker_type",
|
|
215
|
+
condition_value: "horizontal",
|
|
216
|
+
});
|
|
217
|
+
|
|
218
|
+
expect(
|
|
219
|
+
utils.conditional_horizontal_asset_on.conditional_fields[1]
|
|
220
|
+
).toMatchObject({
|
|
221
|
+
key: "styles/screen_picker_asset_switch",
|
|
222
|
+
condition_value: true,
|
|
223
|
+
});
|
|
224
|
+
});
|
|
225
|
+
|
|
226
|
+
describe("createVariationFields", () => {
|
|
227
|
+
const defaultInput = {
|
|
228
|
+
key: "somekey",
|
|
229
|
+
label: "default somekey label",
|
|
230
|
+
variants: [
|
|
231
|
+
{
|
|
232
|
+
initial_value: "a",
|
|
233
|
+
},
|
|
234
|
+
{
|
|
235
|
+
initial_value: "b",
|
|
236
|
+
label: "custom label",
|
|
237
|
+
},
|
|
238
|
+
],
|
|
239
|
+
};
|
|
240
|
+
|
|
241
|
+
const config = utils.createVariationFields(defaultInput);
|
|
242
|
+
|
|
243
|
+
it("should return array containing object for conditional_vertical_type", () => {
|
|
244
|
+
expect(config[0].rules).toBe("conditional");
|
|
245
|
+
|
|
246
|
+
expect(config[0].conditional_fields).toEqual([
|
|
247
|
+
{
|
|
248
|
+
key: "styles/screen_picker_type",
|
|
249
|
+
condition_value: "vertical",
|
|
250
|
+
},
|
|
251
|
+
]);
|
|
252
|
+
|
|
253
|
+
expect(config[0].type).toBe("number_input");
|
|
254
|
+
expect(config[0].key).toBe("screen_picker_vertical_somekey");
|
|
255
|
+
expect(config[0].label).toBe("default somekey label");
|
|
256
|
+
expect(config[0].initial_value).toBe("a");
|
|
257
|
+
});
|
|
258
|
+
|
|
259
|
+
it("should return array containing object for conditional_horizontal_type", () => {
|
|
260
|
+
expect(config[1].rules).toBe("conditional");
|
|
261
|
+
|
|
262
|
+
expect(config[1].conditional_fields).toEqual([
|
|
263
|
+
{
|
|
264
|
+
key: "styles/screen_picker_type",
|
|
265
|
+
condition_value: "horizontal",
|
|
266
|
+
},
|
|
267
|
+
]);
|
|
268
|
+
|
|
269
|
+
expect(config[1].type).toBe("number_input");
|
|
270
|
+
expect(config[1].key).toBe("screen_picker_horizontal_somekey");
|
|
271
|
+
expect(config[1].label).toBe("custom label");
|
|
272
|
+
expect(config[1].initial_value).toBe("b");
|
|
273
|
+
});
|
|
274
|
+
|
|
275
|
+
it("should accept custom prefix (empty)", () => {
|
|
276
|
+
const config = utils.createVariationFields({
|
|
277
|
+
...defaultInput,
|
|
278
|
+
prefix: "",
|
|
279
|
+
});
|
|
280
|
+
|
|
281
|
+
expect(config[0].key).toBe("vertical_somekey");
|
|
282
|
+
expect(config[1].key).toBe("horizontal_somekey");
|
|
283
|
+
});
|
|
284
|
+
|
|
285
|
+
it("should accept custom prefix (string)", () => {
|
|
286
|
+
const config = utils.createVariationFields({
|
|
287
|
+
...defaultInput,
|
|
288
|
+
prefix: "string",
|
|
289
|
+
});
|
|
290
|
+
|
|
291
|
+
expect(config[0].key).toBe("string_vertical_somekey");
|
|
292
|
+
expect(config[1].key).toBe("string_horizontal_somekey");
|
|
293
|
+
});
|
|
294
|
+
|
|
295
|
+
it("should accept custom type (string)", () => {
|
|
296
|
+
const config = utils.createVariationFields({
|
|
297
|
+
...defaultInput,
|
|
298
|
+
type: "text_input",
|
|
299
|
+
});
|
|
300
|
+
|
|
301
|
+
expect(config[0].type).toBe("text_input");
|
|
302
|
+
expect(config[1].type).toBe("text_input");
|
|
303
|
+
});
|
|
304
|
+
});
|