@applicaster/zapp-react-native-utils 14.0.0-rc.6 → 14.0.0-rc.60

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 (117) hide show
  1. package/actionsExecutor/ActionExecutorContext.tsx +60 -84
  2. package/actionsExecutor/ScreenActions.ts +164 -0
  3. package/actionsExecutor/StorageActions.ts +110 -0
  4. package/actionsExecutor/feedDecorator.ts +171 -0
  5. package/actionsExecutor/screenResolver.ts +11 -0
  6. package/analyticsUtils/AnalyticsEvents/helper.ts +81 -0
  7. package/analyticsUtils/AnalyticsEvents/sendHeaderClickEvent.ts +1 -1
  8. package/analyticsUtils/AnalyticsEvents/sendMenuClickEvent.ts +2 -1
  9. package/analyticsUtils/AnalyticsEvents/sendOnClickEvent.ts +14 -4
  10. package/analyticsUtils/__tests__/analyticsUtils.test.js +3 -0
  11. package/analyticsUtils/events.ts +8 -0
  12. package/analyticsUtils/index.tsx +3 -4
  13. package/analyticsUtils/manager.ts +1 -1
  14. package/analyticsUtils/playerAnalyticsTracker.ts +2 -1
  15. package/appUtils/HooksManager/Hook.ts +4 -4
  16. package/appUtils/HooksManager/index.ts +11 -1
  17. package/appUtils/accessibilityManager/const.ts +13 -0
  18. package/appUtils/accessibilityManager/hooks.ts +35 -1
  19. package/appUtils/accessibilityManager/index.ts +154 -30
  20. package/appUtils/accessibilityManager/utils.ts +24 -0
  21. package/appUtils/contextKeysManager/contextResolver.ts +42 -1
  22. package/appUtils/focusManager/__tests__/__snapshots__/focusManager.test.js.snap +5 -0
  23. package/appUtils/focusManager/__tests__/focusManager.test.js +1 -1
  24. package/appUtils/focusManager/index.ios.ts +10 -0
  25. package/appUtils/focusManager/index.ts +82 -11
  26. package/appUtils/focusManager/treeDataStructure/Tree/index.js +1 -1
  27. package/appUtils/focusManagerAux/utils/index.ts +106 -3
  28. package/appUtils/platform/platformUtils.ts +31 -1
  29. package/appUtils/playerManager/OverlayObserver/OverlaysObserver.ts +0 -15
  30. package/appUtils/playerManager/useChapterMarker.tsx +0 -1
  31. package/appUtils/playerManager/usePlayerControllerSetup.tsx +16 -0
  32. package/arrayUtils/__tests__/isEmptyArray.test.ts +63 -0
  33. package/arrayUtils/__tests__/isFilledArray.test.ts +1 -1
  34. package/arrayUtils/index.ts +8 -3
  35. package/audioPlayerUtils/__tests__/getArtworkImage.test.ts +144 -0
  36. package/audioPlayerUtils/__tests__/getBackgroundImage.test.ts +72 -0
  37. package/audioPlayerUtils/__tests__/getImageFromEntry.test.ts +110 -0
  38. package/audioPlayerUtils/assets/index.ts +2 -0
  39. package/audioPlayerUtils/index.ts +242 -0
  40. package/componentsUtils/__tests__/isTabsScreen.test.ts +38 -0
  41. package/componentsUtils/index.ts +4 -1
  42. package/conf/player/__tests__/selectors.test.ts +34 -0
  43. package/conf/player/selectors.ts +10 -0
  44. package/configurationUtils/__tests__/configurationUtils.test.js +0 -31
  45. package/configurationUtils/__tests__/getMediaItems.test.ts +65 -0
  46. package/configurationUtils/__tests__/imageSrcFromMediaItem.test.ts +34 -0
  47. package/configurationUtils/__tests__/manifestKeyParser.test.ts +546 -0
  48. package/configurationUtils/index.ts +64 -35
  49. package/configurationUtils/manifestKeyParser.ts +57 -32
  50. package/focusManager/FocusManager.ts +26 -16
  51. package/focusManager/Tree.ts +25 -21
  52. package/focusManager/__tests__/FocusManager.test.ts +50 -8
  53. package/index.d.ts +1 -10
  54. package/manifestUtils/_internals/getDefaultConfiguration.js +28 -0
  55. package/manifestUtils/{_internals.js → _internals/index.js} +2 -25
  56. package/manifestUtils/createConfig.js +4 -1
  57. package/manifestUtils/defaultManifestConfigurations/player.js +1253 -200
  58. package/manifestUtils/progressBar/__tests__/mobileProgressBar.test.js +0 -30
  59. package/navigationUtils/__tests__/mapContentTypesToRivers.test.ts +130 -0
  60. package/navigationUtils/index.ts +7 -5
  61. package/package.json +2 -3
  62. package/playerUtils/PlayerTTS/PlayerTTS.ts +359 -0
  63. package/playerUtils/PlayerTTS/index.ts +1 -0
  64. package/playerUtils/__tests__/configurationUtils.test.ts +1 -65
  65. package/playerUtils/__tests__/getPlayerActionButtons.test.ts +54 -0
  66. package/playerUtils/_internals/__tests__/utils.test.ts +71 -0
  67. package/playerUtils/_internals/index.ts +1 -0
  68. package/playerUtils/_internals/utils.ts +31 -0
  69. package/playerUtils/configurationUtils.ts +0 -44
  70. package/playerUtils/getPlayerActionButtons.ts +17 -0
  71. package/playerUtils/index.ts +53 -0
  72. package/playerUtils/usePlayerTTS.ts +21 -0
  73. package/playerUtils/useValidatePlayerConfig.tsx +22 -19
  74. package/reactHooks/autoscrolling/__tests__/useTrackedView.test.tsx +15 -14
  75. package/reactHooks/cell-click/__tests__/index.test.js +3 -0
  76. package/reactHooks/cell-click/index.ts +8 -1
  77. package/reactHooks/debugging/__tests__/index.test.js +0 -1
  78. package/reactHooks/feed/__tests__/useBatchLoading.test.tsx +47 -90
  79. package/reactHooks/feed/__tests__/useFeedLoader.test.tsx +71 -31
  80. package/reactHooks/feed/index.ts +2 -0
  81. package/reactHooks/feed/useBatchLoading.ts +17 -10
  82. package/reactHooks/feed/useFeedLoader.tsx +36 -34
  83. package/reactHooks/feed/useLoadPipesDataDispatch.ts +63 -0
  84. package/reactHooks/feed/usePipesCacheReset.ts +3 -3
  85. package/reactHooks/flatList/useSequentialRenderItem.tsx +3 -3
  86. package/reactHooks/layout/__tests__/index.test.tsx +3 -1
  87. package/reactHooks/layout/isTablet/index.ts +12 -5
  88. package/reactHooks/layout/useDimensions/__tests__/useDimensions.test.ts +34 -36
  89. package/reactHooks/layout/useDimensions/useDimensions.ts +2 -3
  90. package/reactHooks/layout/useLayoutVersion.ts +5 -5
  91. package/reactHooks/navigation/index.ts +7 -5
  92. package/reactHooks/navigation/useIsScreenActive.ts +9 -5
  93. package/reactHooks/navigation/useRoute.ts +7 -2
  94. package/reactHooks/navigation/useScreenStateStore.ts +8 -0
  95. package/reactHooks/resolvers/__tests__/useCellResolver.test.tsx +4 -0
  96. package/reactHooks/screen/useScreenContext.ts +1 -1
  97. package/reactHooks/state/__tests__/ZStoreProvider.test.tsx +2 -1
  98. package/reactHooks/state/index.ts +1 -1
  99. package/reactHooks/state/useHomeRiver.ts +4 -2
  100. package/reactHooks/state/useRivers.ts +7 -8
  101. package/riverComponetsMeasurementProvider/index.tsx +1 -1
  102. package/screenPickerUtils/index.ts +7 -0
  103. package/services/js2native.ts +1 -0
  104. package/storage/ScreenSingleValueProvider.ts +204 -0
  105. package/storage/ScreenStateMultiSelectProvider.ts +293 -0
  106. package/storage/StorageMultiSelectProvider.ts +192 -0
  107. package/storage/StorageSingleSelectProvider.ts +108 -0
  108. package/testUtils/index.tsx +7 -8
  109. package/time/BackgroundTimer.ts +6 -4
  110. package/utils/__tests__/find.test.ts +36 -0
  111. package/utils/__tests__/pathOr.test.ts +37 -0
  112. package/utils/__tests__/startsWith.test.ts +30 -0
  113. package/utils/find.ts +3 -0
  114. package/utils/index.ts +24 -1
  115. package/utils/pathOr.ts +5 -0
  116. package/utils/startsWith.ts +9 -0
  117. package/playerUtils/configurationGenerator.ts +0 -2572
@@ -4,9 +4,11 @@ const {
4
4
  remapConditionalFieldsForPluginGallery,
5
5
  } = require("../utils");
6
6
 
7
+ const R = require("ramda");
8
+ const compact = R.reject(R.isNil);
9
+
7
10
  function getDevice(platform) {
8
11
  switch (platform) {
9
- case "ios":
10
12
  case "ios_for_quickbrick":
11
13
  case "android":
12
14
  case "android_for_quickbrick":
@@ -17,52 +19,110 @@ function getDevice(platform) {
17
19
  case "android_tv_for_quickbrick":
18
20
  case "lg_tv":
19
21
  case "samsung_tv":
20
- case "web":
21
22
  case "vizio":
23
+ case "web":
22
24
  return "tv";
23
25
  }
24
26
  }
25
27
 
26
- function getPlayerConfiguration({ platform }) {
28
+ const isMobile = (platform) => getDevice(platform) === "mobile";
29
+ const isTV = (platform) => getDevice(platform) === "tv";
30
+
31
+ const mobileOnly = (platform, config) => (isMobile(platform) ? config : null);
32
+
33
+ function getPlayerConfiguration({ platform, version }) {
34
+ const audioTracksSettings =
35
+ platform.includes("android") || platform.includes("amazon")
36
+ ? [
37
+ {
38
+ type: "switch",
39
+ label: "Use audio tracks based on the app language",
40
+ tooltip:
41
+ "If enabled, the default audio tracks for videos would be set according to the chosen app language and user's system language",
42
+ key: "enable_auto_audio_track_selection",
43
+ initial_value: false,
44
+ },
45
+ {
46
+ type: "switch",
47
+ label: "Collapse adaptive audio tracks",
48
+ tooltip:
49
+ "If enabled, will display only adaptive tracks group name, otherwise will display all audio tracks of all bitrates",
50
+ key: "enable_adaptive_audio_track_selection",
51
+ initial_value: false,
52
+ },
53
+ ]
54
+ : [
55
+ {
56
+ type: "switch",
57
+ label: "Use audio tracks based on the app language",
58
+ tooltip:
59
+ "If enabled, the default audio tracks for videos would be set according to the chosen app language and user's system language",
60
+ key: "enable_auto_audio_track_selection",
61
+ initial_value: false,
62
+ },
63
+ ];
64
+
65
+ const audioPlayer = [
66
+ {
67
+ key: "audio_player_rtl",
68
+ label: "Audio player layout right to left",
69
+ initial_value: false,
70
+ type: "switch",
71
+ label_tooltip:
72
+ "Disable if you don't want the content to have a right orientation",
73
+ },
74
+ ];
75
+
27
76
  const general = {
77
+ fields: [],
78
+ };
79
+
80
+ const styles = {
28
81
  fields: [
29
82
  {
30
- key: "audio_player_rtl",
31
- label: "Audio player layout right to left",
32
- initial_value: true,
33
- type: "switch",
83
+ type: "color_picker_rgba",
84
+ label: "Screen background color",
85
+ key: "screen_background_color",
34
86
  label_tooltip:
35
- "Disable if you don't want the content to have a right orientation",
87
+ "This will override the background color set in the theme",
88
+ initial_value: null,
36
89
  },
90
+ ],
91
+ };
92
+
93
+ const localizations = {
94
+ fields: [
37
95
  {
38
- key: "magic_background",
39
- label: "Enable Magic Background",
40
- initial_value: false,
41
- type: "switch",
42
- label_tooltip:
43
- "Enable if you want to have adaptive background gradient based on audio background image.",
96
+ type: "text_input",
97
+ label: "Playback Speed Modal Title",
98
+ key: "playback_speed_title",
99
+ initial_value: "Playback Speed Modal Title",
44
100
  },
45
101
  {
46
- key: "audio_player_background_image_default_color",
47
- label: "Audio Player Background Image Default Color",
48
- initial_value: "",
49
102
  type: "text_input",
50
- label_tooltip:
51
- "Set the default color for the audio player background image if not image or set of gradient colors are not provided.",
103
+ label: "Sleep Timer Modal Title",
104
+ key: "playback_sleep_title",
105
+ initial_value: "Sleep Timer Modal Title",
106
+ },
107
+ {
108
+ type: "text_input",
109
+ label: "Sleep timer countdown label",
110
+ key: "playback_sleep_countdown_label",
111
+ initial_value: "Sleep Timer",
112
+ },
113
+ {
114
+ type: "text_input",
115
+ label: "Sleep timer off label",
116
+ key: "playback_sleep_off_label",
117
+ initial_value: "Sleep timer off",
52
118
  },
53
- ],
54
- };
55
-
56
- const styles = {
57
- fields: [],
58
- };
59
-
60
- const localizations = {
61
- fields: [],
62
- };
63
119
 
64
- if (getDevice(platform) === "mobile") {
65
- localizations.fields.push(
120
+ {
121
+ type: "text_input",
122
+ label: "Skip intro button",
123
+ key: "skip_button_localization_text_skip_intro",
124
+ initial_value: "Skip Intro",
125
+ },
66
126
  {
67
127
  type: "text_input",
68
128
  label: "Locked message",
@@ -74,14 +134,421 @@ function getPlayerConfiguration({ platform }) {
74
134
  label: "Unlock message",
75
135
  key: "message_unlock",
76
136
  initial_value: "Tap again to unlock screen",
77
- }
137
+ },
138
+ {
139
+ key: "accessibility_play_label",
140
+ label: "Accessibility play label",
141
+ initial_value: "Play button",
142
+ label_tooltip: "Label for play button accessibility",
143
+ type: "text_input",
144
+ },
145
+ {
146
+ key: "accessibility_play_hint",
147
+ label: "Accessibility play hint",
148
+ initial_value: "Press to play content",
149
+ label_tooltip: "Hint for play button accessibility",
150
+ type: "text_input",
151
+ },
152
+ {
153
+ key: "accessibility_pause_label",
154
+ label: "Accessibility pause label",
155
+ initial_value: "Pause button",
156
+ label_tooltip: "Label for pause button accessibility",
157
+ type: "text_input",
158
+ },
159
+ {
160
+ key: "accessibility_pause_hint",
161
+ label: "Accessibility pause hint",
162
+ initial_value: "Press to pause content",
163
+ label_tooltip: "Hint for pause button accessibility",
164
+ type: "text_input",
165
+ },
166
+ {
167
+ key: "accessibility_down_label",
168
+ label: "Accessibility down label",
169
+ initial_value: "Minimize button",
170
+ label_tooltip: "Label for minimize button accessibility",
171
+ type: "text_input",
172
+ },
173
+ {
174
+ key: "accessibility_down_hint",
175
+ label: "Accessibility down hint",
176
+ initial_value: "Press to minimize player",
177
+ label_tooltip: "Hint for minimize button accessibility",
178
+ type: "text_input",
179
+ },
180
+ {
181
+ key: "accessibility_maximize_label",
182
+ label: "Accessibility maximize label",
183
+ initial_value: "Maximize button",
184
+ label_tooltip: "Label for maximize button accessibility",
185
+ type: "text_input",
186
+ },
187
+ {
188
+ key: "accessibility_maximize_hint",
189
+ label: "Accessibility maximize hint",
190
+ initial_value: "Press to maximize player",
191
+ label_tooltip: "Hint for maximize button accessibility",
192
+ type: "text_input",
193
+ },
194
+ {
195
+ key: "accessibility_close_label",
196
+ label: "Accessibility close label",
197
+ initial_value: "Close button",
198
+ label_tooltip: "Label for close button accessibility",
199
+ type: "text_input",
200
+ },
201
+ {
202
+ key: "accessibility_close_hint",
203
+ label: "Accessibility close hint",
204
+ initial_value: "Press to close player",
205
+ label_tooltip: "Hint for close button accessibility",
206
+ type: "text_input",
207
+ },
208
+ {
209
+ key: "accessibility_forward_label",
210
+ label: "Accessibility forward label",
211
+ initial_value: "Fast forward button",
212
+ label_tooltip: "Label for forward button accessibility",
213
+ type: "text_input",
214
+ },
215
+ {
216
+ key: "accessibility_forward_hint",
217
+ label: "Accessibility forward hint",
218
+ initial_value: "Press to forward content",
219
+ label_tooltip: "Hint for forward button accessibility",
220
+ type: "text_input",
221
+ },
222
+ {
223
+ key: "accessibility_rewind_label",
224
+ label: "Accessibility rewind label",
225
+ initial_value: "Rewind button",
226
+ label_tooltip: "Label for rewind button accessibility",
227
+ type: "text_input",
228
+ },
229
+ {
230
+ key: "accessibility_rewind_hint",
231
+ label: "Accessibility rewind hint",
232
+ initial_value: "Press to rewind content",
233
+ label_tooltip: "Hint for rewind button accessibility",
234
+ type: "text_input",
235
+ },
236
+ {
237
+ key: "accessibility_close_mini_label",
238
+ label: "Accessibility docked close button label",
239
+ initial_value: "Close mini player",
240
+ label_tooltip: "Label for docked close button accessibility",
241
+ type: "text_input",
242
+ },
243
+ {
244
+ key: "accessibility_close_mini_hint",
245
+ label: "Accessibility docked close button hint",
246
+ initial_value: "Press to close mini player",
247
+ label_tooltip: "Hint for docked close button accessibility",
248
+ type: "text_input",
249
+ },
250
+ {
251
+ key: "accessibility_pause_mini_label",
252
+ label: "Accessibility docked pause button label",
253
+ initial_value: "Pause mini player",
254
+ label_tooltip: "Label for docked pause button accessibility",
255
+ type: "text_input",
256
+ },
257
+ {
258
+ key: "accessibility_pause_mini_hint",
259
+ label: "Accessibility docked pause button hint",
260
+ initial_value: "Press to pause mini player",
261
+ label_tooltip: "Hint for docked pause button accessibility",
262
+ type: "text_input",
263
+ },
264
+ {
265
+ key: "accessibility_play_mini_label",
266
+ label: "Accessibility docked play button label",
267
+ initial_value: "Play mini player",
268
+ label_tooltip: "Label for docked play button accessibility",
269
+ type: "text_input",
270
+ },
271
+ {
272
+ key: "accessibility_play_mini_hint",
273
+ label: "Accessibility docked play button hint",
274
+ initial_value: "Press to play mini player",
275
+ label_tooltip: "Hint for docked play button accessibility",
276
+ type: "text_input",
277
+ },
278
+ {
279
+ key: "accessibility_subtitle_label",
280
+ label: "Accessibility subtitles label",
281
+ initial_value: "Subtitles button",
282
+ label_tooltip: "Label for subtitles button accessibility",
283
+ type: "text_input",
284
+ },
285
+ {
286
+ key: "accessibility_subtitle_hint",
287
+ label: "Accessibility subtitles hint",
288
+ initial_value: "Press to open subtitles menu",
289
+ label_tooltip: "Hint for subtitles button accessibility",
290
+ type: "text_input",
291
+ },
292
+ {
293
+ key: "accessibility_back_label",
294
+ label: "Accessibility back label",
295
+ initial_value: "Exit player button",
296
+ label_tooltip: "Label for back button accessibility",
297
+ type: "text_input",
298
+ },
299
+ {
300
+ key: "accessibility_back_hint",
301
+ label: "Accessibility back hint",
302
+ initial_value: "Press to go back",
303
+ label_tooltip: "Hint for back button accessibility",
304
+ type: "text_input",
305
+ },
306
+ {
307
+ key: "accessibility_fullscreen_label",
308
+ label: "Accessibility fullscreen label",
309
+ initial_value: "Fullscreen button",
310
+ label_tooltip: "Label for fullscreen button accessibility",
311
+ type: "text_input",
312
+ },
313
+ {
314
+ key: "accessibility_fullscreen_hint",
315
+ label: "Accessibility fullscreen hint",
316
+ initial_value: "Press to toggle fullscreen mode",
317
+ label_tooltip: "Hint for fullscreen button accessibility",
318
+ type: "text_input",
319
+ },
320
+ {
321
+ key: "accessibility_skip_intro_label",
322
+ label: "Accessibility skip intro label",
323
+ initial_value: "Skip intro - button",
324
+ label_tooltip: "Label for skip intro button accessibility",
325
+ type: "text_input",
326
+ },
327
+ {
328
+ key: "accessibility_skip_intro_hint",
329
+ label: "Accessibility skip intro hint",
330
+ initial_value: "Press to skip intro",
331
+ label_tooltip: "Hint for skip intro button accessibility",
332
+ type: "text_input",
333
+ },
334
+ ],
335
+ };
336
+
337
+ if (isTV(platform)) {
338
+ styles.fields.push(
339
+ fieldsGroup("Always Show Scrub Bar & Timestamp", "", [
340
+ {
341
+ key: "always_show_scrub_bar_and_timestamp",
342
+ label: "Always Show Scrub Bar & Timestamp",
343
+ initial_value: false,
344
+ type: "switch",
345
+ label_tooltip:
346
+ "When enabled, progress bar will always appear while playing in full screen. otherwise, progress bar will appear only when tapping and revealing all controllers",
347
+ },
348
+ {
349
+ section: "Default Timestamp Type",
350
+ key: "default_timestamp_type",
351
+ label: "Default Timestamp Type",
352
+ type: "select",
353
+ initial_value: "remaining_time",
354
+ label_tooltip:
355
+ "When clicking on the timestamp - users will be able to switch between both modes. this configuration only set the default mode when entering the player.",
356
+ options: [
357
+ {
358
+ text: "Remaining time",
359
+ value: "remaining_time",
360
+ },
361
+ {
362
+ text: "Complete Duration",
363
+ value: "complete_duration",
364
+ },
365
+ ],
366
+ },
367
+ ]),
368
+ fieldsGroup(
369
+ "Skip Button",
370
+ "This section allows you to configure the skip button styles for tv",
371
+ [
372
+ {
373
+ type: "switch",
374
+ key: "skip_button_enabled",
375
+ label_tooltip: "Enables Skip button on the player.",
376
+ label: "Enable",
377
+ initial_value: true,
378
+ },
379
+ {
380
+ type: "switch",
381
+ key: "skip_button_persistent",
382
+ label_tooltip:
383
+ "Show skip button always if enabled, otherwise show only when the player controls are on the screen.",
384
+ label: "Persistent Button Toggle",
385
+ initial_value: true,
386
+ },
387
+ {
388
+ type: "color_picker_rgba",
389
+ label_tooltip: "",
390
+ label: "Border Color",
391
+ key: "skip_button_style_button_border_color",
392
+ initial_value: "rgba(239, 239, 239, 0.5)",
393
+ },
394
+ {
395
+ type: "color_picker_rgba",
396
+ label_tooltip: "",
397
+ label: "Border Color Focused",
398
+ key: "skip_button_style_button_focused_border_color",
399
+ initial_value: "rgba(239, 239, 239, 1)",
400
+ },
401
+ {
402
+ type: "number_input",
403
+ label_tooltip: "",
404
+ label: "Border Width",
405
+ key: "skip_button_style_button_border_width",
406
+ initial_value: 1.5,
407
+ },
408
+ {
409
+ type: "number_input",
410
+ label_tooltip: "",
411
+ label: "Corner Radius",
412
+ key: "skip_button_style_button_border_radius",
413
+ initial_value: 10,
414
+ },
415
+ {
416
+ type: "color_picker_rgba",
417
+ label_tooltip: "",
418
+ label: "Background Color",
419
+ key: "skip_button_style_button_background_color",
420
+ initial_value: "rgba(0, 0, 0, 0.3)",
421
+ },
422
+ {
423
+ type: "color_picker_rgba",
424
+ label_tooltip: "",
425
+ label: "Background Color Focused",
426
+ key: "skip_button_style_button_focused_background_color",
427
+ initial_value: "rgba(0, 0, 0, 0)",
428
+ },
429
+ {
430
+ type: "color_picker_rgba",
431
+ label_tooltip: "",
432
+ label: "Font Color",
433
+ key: "skip_button_style_text_color",
434
+ initial_value: "rgba(255, 255, 255, 0.5)",
435
+ },
436
+ {
437
+ type: "color_picker_rgba",
438
+ label_tooltip: "",
439
+ label: "Font Color Focused",
440
+ key: "skip_button_style_text_focused_color",
441
+ initial_value: "rgba(255, 255, 255, 1)",
442
+ },
443
+ {
444
+ type: "lg_tv_font_selector",
445
+ label_tooltip: "",
446
+ label: "LG Font Family",
447
+ key: "skip_button_style_text_lg_font_family",
448
+ initial_value: "Ubuntu-Bold",
449
+ },
450
+ {
451
+ type: "number_input",
452
+ label_tooltip: "",
453
+ label: "LG Font Size",
454
+ key: "skip_button_style_text_lg_font_size",
455
+ initial_value: 24,
456
+ },
457
+ {
458
+ type: "samsung_font_selector",
459
+ label_tooltip: "",
460
+ label: "Samsung Font Family",
461
+ key: "skip_button_style_text_samsung_font_family",
462
+ initial_value: "Ubuntu-Bold",
463
+ },
464
+ {
465
+ type: "number_input",
466
+ label_tooltip: "",
467
+ label: "Samsung Font Size",
468
+ key: "skip_button_style_text_samsung_font_size",
469
+ initial_value: 24,
470
+ },
471
+ {
472
+ type: "vizio_font_selector",
473
+ label_tooltip: "",
474
+ label: "Samsung Font Family",
475
+ key: "skip_button_style_text_vizio_font_family",
476
+ initial_value: "Ubuntu-Bold",
477
+ },
478
+ {
479
+ type: "number_input",
480
+ label_tooltip: "",
481
+ label: "Vizio Font Size",
482
+ key: "skip_button_style_text_vizio_font_size",
483
+ initial_value: 24,
484
+ },
485
+ {
486
+ type: "android_font_selector",
487
+ label_tooltip: "",
488
+ label: "Android Font Family",
489
+ key: "skip_button_style_text_android_font_family",
490
+ initial_value: "Ubuntu-Bold",
491
+ },
492
+ {
493
+ type: "number_input",
494
+ label_tooltip: "",
495
+ label: "Android Font Size",
496
+ key: "skip_button_style_text_android_font_size",
497
+ initial_value: 24,
498
+ },
499
+ {
500
+ type: "select",
501
+ options: [
502
+ {
503
+ text: "None",
504
+ value: "none",
505
+ },
506
+ {
507
+ text: "Uppercase",
508
+ value: "uppercase",
509
+ },
510
+ {
511
+ text: "Lowercase",
512
+ value: "lowercase",
513
+ },
514
+ {
515
+ text: "Capitalize",
516
+ value: "capitalize",
517
+ },
518
+ ],
519
+ label: "Text Transform",
520
+ key: "skip_button_style_text_text_transform",
521
+ initial_value: "none",
522
+ },
523
+ ]
524
+ )
78
525
  );
526
+ }
79
527
 
528
+ if (isMobile(platform)) {
80
529
  general.fields.push(
530
+ {
531
+ section: "Default Timestamp Type",
532
+ key: "default_timestamp_type",
533
+ label: "Default Timestamp Type",
534
+ type: "select",
535
+ initial_value: "total_duration",
536
+ label_tooltip:
537
+ "When clicking on the timestamp - users will be able to switch between both modes. this configuration only set the default mode when entering the player.",
538
+ options: [
539
+ {
540
+ text: "Remaining time",
541
+ value: "remaining_time",
542
+ },
543
+ {
544
+ text: "Total duration",
545
+ value: "total_duration",
546
+ },
547
+ ],
548
+ },
81
549
  {
82
550
  key: "seek_duration",
83
551
  label: "Seek duration",
84
- // @ts-ignore wrong derived value
85
552
  initial_value: 10,
86
553
  type: "number_input",
87
554
  label_tooltip: "Duration of fast forward / rewind",
@@ -101,31 +568,58 @@ function getPlayerConfiguration({ platform }) {
101
568
  label_tooltip:
102
569
  "type here the identifiers of the action buttons you want to show on the player, separated by commas. Only 2 action buttons may be added at the same time",
103
570
  type: "text_input",
104
- }
105
- );
106
-
107
- if (platform.includes("ios")) {
108
- general.fields.push({
571
+ },
572
+ {
573
+ key: "liveSeekingEnabled",
574
+ label: "Live Seeking Enabled",
575
+ initial_value: false,
576
+ type: "switch",
577
+ label_tooltip: "Enable Live Seek",
578
+ },
579
+ {
580
+ key: "minimumAllowedSeekableDurationInSeconds",
581
+ label: "Minimum allowed seekable duration in seconds",
582
+ initial_value: 300,
583
+ type: "number_input",
584
+ label_tooltip:
585
+ "If duration less that this value, player will disable 'liveSeekingEnabled' value",
586
+ },
587
+ {
109
588
  key: "pictureInPictureEnabled",
110
- label: "Picture and picture enabled",
589
+ label: "Picture in picture enabled",
111
590
  initial_value: false,
112
591
  type: "switch",
113
592
  label_tooltip:
114
- "Enable this option to have a floating video player when the app is in the background (experimental)",
115
- });
116
- }
593
+ "Enable this option to have a floating video player when the app is in the background.",
594
+ }
595
+ );
117
596
 
118
- if (platform.includes("android") || platform.includes("amazon")) {
597
+ if (
598
+ platform.includes("android") ||
599
+ platform.includes("amazon") ||
600
+ platform.includes("ios") ||
601
+ platform.includes("tvos")
602
+ ) {
119
603
  general.fields.push({
120
604
  key: "user_agent",
121
605
  label: "User agent",
122
- // @ts-ignore wrong derived value
123
606
  initial_value: "",
124
607
  type: "text_input",
125
608
  label_tooltip: "Override default user agent string",
126
609
  });
127
610
  }
128
611
 
612
+ if (platform === "android_for_quickbrick") {
613
+ general.fields.push({
614
+ key: "stop_playback_on_task_removal",
615
+ label: "Stop background playback on close",
616
+ initial_value: false,
617
+ type: "switch",
618
+ label_tooltip:
619
+ "Stop background playback if user swipes app away from 'Recent' screen",
620
+ });
621
+ }
622
+
129
623
  styles.fields.push(
130
624
  fieldsGroup(
131
625
  "Player Styles",
@@ -139,6 +633,12 @@ function getPlayerConfiguration({ platform }) {
139
633
  label_tooltip:
140
634
  "Select the background overlay color for the player. The alpha channel is ignored, and a gradient is created from the provided RGB colors",
141
635
  },
636
+ {
637
+ type: "text_input",
638
+ label: "Background image key",
639
+ key: "player_preview_image_key",
640
+ initial_value: "",
641
+ },
142
642
  {
143
643
  key: "use_video_modal",
144
644
  label: "Use video modal",
@@ -192,6 +692,21 @@ function getPlayerConfiguration({ platform }) {
192
692
  },
193
693
  ],
194
694
  },
695
+ {
696
+ type: "switch",
697
+ label: "Disable Mini Player (in Inline Mode Video Modal)",
698
+ label_tooltip:
699
+ "Select whether you want to disable the mini player in the video player when in inline mode",
700
+ key: "disable_mini_player_when_inline",
701
+ initial_value: false,
702
+ rules: "conditional",
703
+ conditional_fields: [
704
+ {
705
+ key: "styles/use_video_modal",
706
+ condition_value: true,
707
+ },
708
+ ],
709
+ },
195
710
  {
196
711
  type: "switch",
197
712
  label: "Display live badge",
@@ -521,6 +1036,67 @@ function getPlayerConfiguration({ platform }) {
521
1036
  },
522
1037
  ],
523
1038
  },
1039
+ {
1040
+ key: "android_pip_action_icons",
1041
+ type: "uploader",
1042
+ label: "Android PiP Action items",
1043
+ label_tooltip:
1044
+ "Upload Assets Folder Zip File, expected format: pip_play, pip_pause, pip_seek_forward, pip_seek_backward",
1045
+ },
1046
+ {
1047
+ key: "speed_0_8",
1048
+ label: "Playback Speed 0.8x",
1049
+ type: "uploader",
1050
+ label_tooltip: "Playback Speed 0.8x",
1051
+ initial_value:
1052
+ "data:image/png;base64,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",
1053
+ },
1054
+ {
1055
+ key: "speed_1",
1056
+ label: "Playback Speed 1x",
1057
+ type: "uploader",
1058
+ label_tooltip: "Playback Speed 1x",
1059
+ initial_value:
1060
+ "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHgAAAB4CAYAAAA5ZDbSAAAACXBIWXMAACE4AAAhOAFFljFgAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAI4SURBVHgB7dzhcRJBGIDhT8cCkg6SDmIHsQNLiBUYKwAqUCtIC5ZACVqBdIAdxN3JMSLecXcE8Tt5npkdJlxyf97ZcLcLRAAAAAAAAAAAAAAAAAAAAAAAAADAMb2IiViv17fl4aGMq45fub68vFwFv3kVyZWwF+VhVsZ9MFrqwANmLT1SBm5mbQ37NniWl5FMifu+PHwPcY8izQwuYa/iadbeBkeTaQbfxf64P8r4GoyS7l90h89lXJfxLRgl+23Sqox35f52WX8o/8aDcTLP4EUZrzdxOUzGGbws40MJ6/X2CDIFrhdRNeyn4GjSBBb275jKVTQHEvg/d/aB69Lo+sljGR/jADvnmEUiZx242a2qr/0XzVP35bmHkeeY7Zxj3pw3hXOfwTctz90NjdzEnbccuo0kzj1w1712b+Q9cfed9+TOOnCzSrboONwZuSfuopz3SyRx9hdZJcY8RkQeELfr2D/hNimGR55a3Cr9m+5OpcZpdqvabnNq5HpBdtPx5ynjVmbwlp6ZPLm4lcA7eiLvSh23ErjFwMjp41YCd3t85vEUBG7Rc7W8Mc+27txG4B0D426kjyzwlp64y47nU0cWuDFgEeNNdF94pY0scAxfoeq5uk4Z2Yb/yOXHqUW24X/A2vKAyGk+OGfDv13vIsaBy5onZ8P/T4NXqPZEtuGfwdaG/yp+vfF+HiNsRV5tnSPNhv9kvoSlaj75f9F2zBewAAAAAAAAAAAAAAAAAAAAAAAAwHT8BNhH51wNSx95AAAAAElFTkSuQmCC",
1061
+ },
1062
+ {
1063
+ key: "speed_1_2",
1064
+ label: "Playback Speed 1.2x",
1065
+ type: "uploader",
1066
+ label_tooltip: "Playback Speed 1.2x",
1067
+ initial_value:
1068
+ "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHgAAAB4CAYAAAA5ZDbSAAAACXBIWXMAACE4AAAhOAFFljFgAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAUjSURBVHgB7d3bUeNIFAbgA7Xv2EUCmgiWjWBNBAwRYCKYdQQrIliIYEUEw0awymDIYDQBUFC8g+eccWsulPomteTu1v9VdZlSGyP0W1KrWxciAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgPgc0Mw8Pj4u+KUt4mm5XDaUqVED5oX5gV/ea6o3vGDvaQI8Hyt+ueAir4XmbTIvNZebnAIfJWBeoCf88g/tFqjOKS/ImkbE8/FezUdBfu5o9wVsKHGHFJBs/rjIAv1E5nBHpebjX/7xI/mHK+SL8Zk/429K3G8UiNoMykItaI/UPvZ/Lic0XMmfR7wmX1GiBq/BP621slAL2j9Z60KE25KQ/6JEDdoHD9jHieD7YJ6fNe22IjpPXG5p16Bq1DT5MpyReZciv/eO5/eJEtN7E63C/Wh5myyQBU1Hu888ODi42263lx0h1Vyu1ZdDvqxd8yvTZC0uKTFDNtGm4GQhbrjc0ERUy73QVNeLxeLctAZyXcUv56R3QQkK2or+9oGHhxXtNmfXNK2Voe6SHKhdxq2muuAvUUGJCRlww+X06Ojock/7qj810+89j2fvDHUFJSZUwLIp/mPsjgsL3S7jC/mZpHdtKkOPg2VhbPYcbEuOVbs2rw35mbJROLohAdeqYRKFgF+ywlCX3GFS7010xiMwZ5rpzVSDIyEFb0WnTLWS1111fHRQU4IQ8K+0vWCvr69J9kcjYEWNHK001c5jxNIvz2XLpfdolIyEtZ/x/Pw8qIMFAdP3ExNKTXVDjl2UqruzHZgoaDdQ4RWyGuZct5/x8vJSqRGyXmYfMC88WUNMvW6nHh03q45pziG/Cdf2uU5mHbAKtzK8xfesjloz3RqyIVzRu/U+24Adwr3y7U+XfgFujOn6srUhW8K9GnJIOsuAHcMtqYfj4+O1T8gO4ZY0wOwCdgj3duhCdQ157HDFrAJ2DHdNATiELCcmrjX1QcIVswl4ynBblpB1540FC1fMImB1nFsZ3hI83JYl5LeChiuyD1jt70yt4dHCbTmGHDxckXXAKtzS8JbRw23xYMXW8hZbfb+/S5mKKVxLa7nl3a3pItiVDaGpoTs5NVf6YeW8qjuP300t3FbwKymiDLgrIJ4m3XXWfuGEwpX/p6slHTTk6AJWIzJlR5UsDDnR/tTwu7ZwGy6Vuo6qF9dTg1w6MR4eHireN3cNBwYLOcY1+MxQt5Khs661WF0/VJJZQbtrqPpquLyzvcm1h0pa1xwyjRlyjI0s29jnief0Sfl2P/r2XfuKMWDbeczRnvimdi9rTbX2ONch5N5f3hgDrgx1N8u4r/BbaaZbOzEsIRfUU3QBq0aMXEvUvKmS1m/s1+nWHdOce6gMIffeao3dyJJj10ZTp5v+beCcN0s17farsk9uHFqvFenPqAjFuPVQ813wjx/UJO+TBiRk/gz5Oxfq7w0a8AcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANif7B8Q/dOlJHI7iEJNvlcl+8tCsg5Y3R/Ldm1QuUz46aI2ud9lx+XCr1HubhOLLNdgh6eQdjn3uZNPKnIN+DP5XzQtl6ha77+Rmuw20eoOOgX5K4bcfSdWOe6Dh9yMJYobuYSUY8BDnj2Y1XMLRY4BD7lJS3LPJrTJMeAht1lK7tmENmhF/4BWdEI25C/L3qwsA1YdFj6BXcX0LOSQcu+LLvnF1g258b2XVUrmMppUcvmdfhznNlz+43Kd+2jSV0z9PFgMpokeAAAAAElFTkSuQmCC",
1069
+ },
1070
+ {
1071
+ key: "speed_1_5",
1072
+ label: "Playback Speed 1.5x",
1073
+ type: "uploader",
1074
+ label_tooltip: "Playback Speed 1.5x",
1075
+ initial_value:
1076
+ "data:image/png;base64,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",
1077
+ },
1078
+ {
1079
+ key: "speed_2",
1080
+ label: "Playback Speed 2x",
1081
+ type: "uploader",
1082
+ label_tooltip: "Playback Speed 2x",
1083
+ initial_value:
1084
+ "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHgAAAB4CAYAAAA5ZDbSAAAACXBIWXMAACE4AAAhOAFFljFgAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAQnSURBVHgB7d2PUdRAFMfxh2MBUIGxArECjwqECjwqUCowV4FYgdABVCAdSAekg7ME35pFgnOb3ZDAvmy+n5lMGJLL3dzvkuyfZCMCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2LMnM7Hdbvd11p2ag4ODRtDLdMAa6kpnH3U61qkKrHbrp0sN/EbwiMmAfbBfdVrJMI1OZxr0leAvcwFruC7YWsY515DPBLYC1nC/6eyLTONCQz6VhXslRvg9d6pwnbX/wSyaiT1Yg6h0dhdZzZ1Xr6U9zzqHOn2QtgDW52jJhS8rAf/Q2Tqw2JWQT0JVIv/j+CnhUvaNvvZIFip7wL5+uw0sbqTdA5vINiqd/ZK2fryLbuLgtyyQhXPwYc+yTUpjhl/ne88qK1koCwGvQgs0uAtJ17duJQtlIeDQYfVWBojs6fuyUK8lP1c63hXmlOfMRZ5/newBT1WF0YJW37m8kYUy09Axgb6ABx3uSzKb7sI+vqrlqknVjsXJ9WC/HRlTpZpiG1MqZQ92zZxVYNmlJPBNpdv2z6c1cfrXjdrG1Ga/B+sX+Vln54HFV7onnUh8GytpW8O6BnVWBFrjTnJ3Xc56D/YFq1C47hCZ2mW46/y99qGlfI5QU+uhZDbbgDtt0CFJrWBeqBAWDTnSjn4jmc0y4E64oQYMF+65JPJVtU1gcTDkSLgbC71YszsHJ/QeuWuz1vK0bdfSFth2eXROTgi3FgNmFXBCuLf6xb6Xce9RSyTkuYTrzOmyWVdg6Tssu/Po0RT1z0jIjYR/YKbCdWYR8EuG23nPWsIh72IuXMd8wDnC7bx3LWkhmwzXsX7he7ZwO5+hlv6QzYbrmK0mWQjXezNyeVZW72wwEW6ktNxl9hpsc3uwfqmfZF7hOsnNmi/NVMA+3AsJh9tI24CfM9ybwP9Nhmzpzob7cEMaSbiEdoLPEWvEcH3Lg5s1c7Fy4Xss3PueoUaeKKVdeEgL1ZBmzZwsXPi+kv5eoUnoF74X+Rx9N77trArNIWQLh+hKMtOgjmVguI7/f9/h+lgyK+miuzGqwP+jjRiRkOnwN2JXh39yC1VPyFeSGQHLvwKYu3bLBd1IOwxELQP49U//28atZGahkFXJC9wcNvA+JwAAAAAAAAAAAAAAAAAAAAAAAIxWxIjvffytMW5M6e4ziO+fOTxkRNpZKjrgyGDh92oNeSOFKvbuQj9Ef8qQwrVft0hF7sEa2FpnQwdDyT78/nMoNeA7GT40RKMBv5XCFHeI9oO6VDJc5V9blBLPwWPGxcg+psbUSgx4X55uzGtNKjHgMcMcPvfItS+uxIDHDHySfdCUqVGKfkApekZSn3jWVWRrVpEB+waLIYFtSh1mqfS26FriD9U4G/KUtLlZSm9SrdM7eajnNjpd63Reem/SH2FDq35f8ateAAAAAElFTkSuQmCC",
1085
+ },
1086
+ {
1087
+ key: "sleep_timer",
1088
+ label: "Sleep Timer Default",
1089
+ type: "uploader",
1090
+ label_tooltip: "Sleep Timer Default",
1091
+ initial_value: null,
1092
+ },
1093
+ {
1094
+ key: "sleep_timer_active",
1095
+ label: "Sleep Timer Active",
1096
+ type: "uploader",
1097
+ label_tooltip: "Sleep Timer Active",
1098
+ initial_value: null,
1099
+ },
524
1100
  ]
525
1101
  ),
526
1102
  fieldsGroup(
@@ -920,6 +1496,15 @@ function getPlayerConfiguration({ platform }) {
920
1496
  },
921
1497
  ]
922
1498
  ),
1499
+ // Captions Menu for Mobile
1500
+ fieldsGroup("Captions - Overlay", "Captions overlay styles", [
1501
+ {
1502
+ type: "switch",
1503
+ label: "Disable captions overlay",
1504
+ key: "disable_captions",
1505
+ initial_value: false,
1506
+ },
1507
+ ]),
923
1508
  fieldsGroup(
924
1509
  "Player Content Subtitle",
925
1510
  "this section enables you to configure the styles of the content meta data displayed on top of the player",
@@ -1300,7 +1885,7 @@ function getPlayerConfiguration({ platform }) {
1300
1885
  key: "scrub_color",
1301
1886
  label: "Scrub font color",
1302
1887
  type: "color_picker_rgba",
1303
- initial_value: "rgba(255, 255, 255, 1)",
1888
+ initial_value: "rgba(239, 239, 239, 1)", // #EFEFEF
1304
1889
  label_tooltip:
1305
1890
  "Select the font color for the player's scrub / progress bar",
1306
1891
  },
@@ -1309,7 +1894,7 @@ function getPlayerConfiguration({ platform }) {
1309
1894
  key: "scrub_color_duration_inline",
1310
1895
  label: "Scrub total duration font color (inline player)",
1311
1896
  type: "color_picker_rgba",
1312
- initial_value: "rgba(255, 255, 255, 0.65)",
1897
+ initial_value: "rgba(239, 239, 239, 0.65)", // #EFEFEF
1313
1898
  label_tooltip:
1314
1899
  "Select the font color for the player's progress bar total duration label in inline mode",
1315
1900
  conditional_fields: [
@@ -1324,7 +1909,7 @@ function getPlayerConfiguration({ platform }) {
1324
1909
  key: "scrub_fontsize_android",
1325
1910
  label: "Android scrub font size",
1326
1911
  type: "number_input",
1327
- initial_value: 13,
1912
+ initial_value: 12,
1328
1913
  label_tooltip:
1329
1914
  "Select the font size for the android player's scrub / progress bar",
1330
1915
  },
@@ -1333,7 +1918,7 @@ function getPlayerConfiguration({ platform }) {
1333
1918
  key: "scrub_fontsize_ios",
1334
1919
  label: "iOS scrub font size",
1335
1920
  type: "number_input",
1336
- initial_value: 13,
1921
+ initial_value: 12,
1337
1922
  label_tooltip:
1338
1923
  "Select the font size for the iOS player's scrub / progress bar",
1339
1924
  },
@@ -1342,7 +1927,7 @@ function getPlayerConfiguration({ platform }) {
1342
1927
  key: "scrub_lineheight_android",
1343
1928
  label: "Android scrub line height",
1344
1929
  type: "number_input",
1345
- initial_value: 16,
1930
+ initial_value: 20,
1346
1931
  label_tooltip:
1347
1932
  "Select the line height for the android player's scrub / progress bar",
1348
1933
  },
@@ -1351,7 +1936,7 @@ function getPlayerConfiguration({ platform }) {
1351
1936
  key: "scrub_lineheight_ios",
1352
1937
  label: "iOS scrub line height",
1353
1938
  type: "number_input",
1354
- initial_value: 16,
1939
+ initial_value: 20,
1355
1940
  label_tooltip:
1356
1941
  "Select the line height for the iOS player's scrub / progress bar",
1357
1942
  },
@@ -1360,7 +1945,7 @@ function getPlayerConfiguration({ platform }) {
1360
1945
  key: "scrub_letterspacing_android",
1361
1946
  label: "Android scrub letter spacing",
1362
1947
  type: "number_input",
1363
- initial_value: 0,
1948
+ initial_value: -0.4,
1364
1949
  label_tooltip:
1365
1950
  "Select the letter spacing for the android player's scrub / progress bar",
1366
1951
  },
@@ -1369,7 +1954,7 @@ function getPlayerConfiguration({ platform }) {
1369
1954
  key: "scrub_letterspacing_ios",
1370
1955
  label: "iOS scrub letter spacing",
1371
1956
  type: "number_input",
1372
- initial_value: 0,
1957
+ initial_value: -0.4,
1373
1958
  label_tooltip:
1374
1959
  "Select the letter spacing for the iOS player's scrub / progress bar",
1375
1960
  },
@@ -1448,7 +2033,7 @@ function getPlayerConfiguration({ platform }) {
1448
2033
  },
1449
2034
  {
1450
2035
  key: "lock_controls_when_player_opens",
1451
- label: "Lock controls when player opens",
2036
+ label: "Lock controls each time the player opens",
1452
2037
  initial_value: false,
1453
2038
  type: "switch",
1454
2039
  label_tooltip:
@@ -1648,18 +2233,50 @@ function getPlayerConfiguration({ platform }) {
1648
2233
  );
1649
2234
  }
1650
2235
 
1651
- // ---- Web Platforms fields ---- //
1652
-
1653
- // Temporary option to disable not-working track selector on JW streams
1654
- if (platform.includes("samsung")) {
1655
- styles.fields.push({
2236
+ compact([
2237
+ {
2238
+ key: "liveCatchUpEnabled",
2239
+ label: "Live Catch Up",
2240
+ initial_value: true,
1656
2241
  type: "switch",
1657
- label: "Disable captions overlay",
1658
- key: "disable_captions",
1659
- initial_value: false,
1660
- });
2242
+ label_tooltip:
2243
+ "Seek to current live edge position after resuming from pause",
2244
+ },
2245
+ mobileOnly(platform, {
2246
+ type: "number_input",
2247
+ label_tooltip:
2248
+ "Interval for updating live audio metadata, including the title and subtitle",
2249
+ label: "Live Audio player info update interval",
2250
+ key: "audio_live_player_update_interval",
2251
+ initial_value: 60,
2252
+ }),
2253
+ ]).forEach((field) => {
2254
+ general.fields.push(field);
2255
+ });
2256
+
2257
+ if (isMobile(platform)) {
2258
+ general.fields.push(
2259
+ fieldsGroup("Always Show Scrub Bar & Timestamp", "", [
2260
+ {
2261
+ key: "always_show_scrub_bar_and_timestamp",
2262
+ label: "Always Show Scrub Bar & Timestamp",
2263
+ initial_value: false,
2264
+ type: "switch",
2265
+ label_tooltip:
2266
+ "When enabled, progress bar will always appear while playing in full screen. otherwise, progress bar will appear only when tapping and revealing all controllers",
2267
+ },
2268
+ ]),
2269
+ fieldsGroup(
2270
+ "Audio Tracks",
2271
+ "This section allows you to configure default audio track behavior for videos with multiple audio tracks",
2272
+ audioTracksSettings
2273
+ ),
2274
+ fieldsGroup("Legacy configuration", "", audioPlayer)
2275
+ );
1661
2276
  }
1662
2277
 
2278
+ // ---- Web Platforms fields ---- //
2279
+
1663
2280
  if (
1664
2281
  platform.includes("lg") ||
1665
2282
  platform.includes("samsung") ||
@@ -1668,13 +2285,19 @@ function getPlayerConfiguration({ platform }) {
1668
2285
  platform.includes("vizio")
1669
2286
  ) {
1670
2287
  styles.fields.push(
1671
- // Captions Menu
2288
+ // Captions Menu for TV
1672
2289
  fieldsGroup("Captions - Overlay", "Captions overlay styles", [
2290
+ {
2291
+ type: "switch",
2292
+ label: "Disable captions overlay",
2293
+ key: "disable_captions",
2294
+ initial_value: false,
2295
+ },
1673
2296
  {
1674
2297
  type: "color_picker_rgba",
1675
2298
  label: "Video Overlay",
1676
2299
  key: "overlay_color",
1677
- initial_value: "rgba(0, 0, 0, 0.5)",
2300
+ initial_value: "rgba(17, 17, 17, 0.5)",
1678
2301
  },
1679
2302
  ]),
1680
2303
  // Captions Menu - Close
@@ -1683,7 +2306,7 @@ function getPlayerConfiguration({ platform }) {
1683
2306
  type: "color_picker_rgba",
1684
2307
  label: "Background Color",
1685
2308
  key: "close_background_color",
1686
- initial_value: "rgba(16, 16, 16, 1)",
2309
+ initial_value: "rgba(30, 30, 30, 1)",
1687
2310
  },
1688
2311
  {
1689
2312
  type: "color_picker_rgba",
@@ -1710,31 +2333,31 @@ function getPlayerConfiguration({ platform }) {
1710
2333
  type: "color_picker_rgba",
1711
2334
  label: "Background Color",
1712
2335
  key: "menu_background_color",
1713
- initial_value: "rgba(16, 16, 16, 1)",
2336
+ initial_value: "rgba(30, 30, 30, 1)",
1714
2337
  },
1715
2338
  {
1716
2339
  type: "color_picker_rgba",
1717
2340
  label: "Top Gradient - Start",
1718
2341
  key: "menu_top_gradient_start_color",
1719
- initial_value: "rgba(16, 16, 16, 1)",
2342
+ initial_value: "rgba(30, 30, 30, 1)",
1720
2343
  },
1721
2344
  {
1722
2345
  type: "color_picker_rgba",
1723
2346
  label: "Top Gradient - End",
1724
2347
  key: "menu_top_gradient_end_color",
1725
- initial_value: "rgba(16, 16, 16, 0)",
2348
+ initial_value: "rgba(30, 30, 30, 0)",
1726
2349
  },
1727
2350
  {
1728
2351
  type: "color_picker_rgba",
1729
2352
  label: "Bottom Gradient - Start",
1730
2353
  key: "menu_bottom_gradient_start_color",
1731
- initial_value: "rgba(16, 16, 16, 1)",
2354
+ initial_value: "rgba(30, 30, 30, 1)",
1732
2355
  },
1733
2356
  {
1734
2357
  type: "color_picker_rgba",
1735
2358
  label: "Bottom Gradient - End",
1736
2359
  key: "menu_bottom_gradient_end_color",
1737
- initial_value: "rgba(16, 16, 16, 0)",
2360
+ initial_value: "rgba(30, 30, 30, 0)",
1738
2361
  },
1739
2362
  ]),
1740
2363
  // Captions Menu - Header Text Label
@@ -1752,7 +2375,7 @@ function getPlayerConfiguration({ platform }) {
1752
2375
  type: "lg_font_selector",
1753
2376
  label: "LG Font Family",
1754
2377
  key: "menu_header_lg_font_family",
1755
- initial_value: "Museo-Bold",
2378
+ initial_value: "Ubuntu-Bold",
1756
2379
  },
1757
2380
  {
1758
2381
  type: "number_input",
@@ -1776,7 +2399,7 @@ function getPlayerConfiguration({ platform }) {
1776
2399
  type: "samsung_font_selector",
1777
2400
  label: "Samsung Font Family",
1778
2401
  key: "menu_header_samsung_font_family",
1779
- initial_value: "SmsungOneUI-Bold",
2402
+ initial_value: "Ubuntu-Bold",
1780
2403
  },
1781
2404
  {
1782
2405
  type: "number_input",
@@ -1800,7 +2423,7 @@ function getPlayerConfiguration({ platform }) {
1800
2423
  type: "vizio_font_selector",
1801
2424
  label: "Vizio Font Family",
1802
2425
  key: "menu_header_vizio_font_family",
1803
- initial_value: "SmsungOneUI-Bold",
2426
+ initial_value: "Ubuntu-Bold",
1804
2427
  },
1805
2428
  {
1806
2429
  type: "number_input",
@@ -1855,7 +2478,7 @@ function getPlayerConfiguration({ platform }) {
1855
2478
  type: "lg_font_selector",
1856
2479
  label: "LG Font Family",
1857
2480
  key: "menu_item_lg_font_family",
1858
- initial_value: "Museo-Bold",
2481
+ initial_value: "Ubuntu-Medium",
1859
2482
  },
1860
2483
  {
1861
2484
  type: "number_input",
@@ -1879,7 +2502,7 @@ function getPlayerConfiguration({ platform }) {
1879
2502
  type: "samsung_font_selector",
1880
2503
  label: "Samsung Font Family",
1881
2504
  key: "menu_item_samsung_font_family",
1882
- initial_value: "SmsungOneUI-Bold",
2505
+ initial_value: "Ubuntu-Medium",
1883
2506
  },
1884
2507
  {
1885
2508
  type: "number_input",
@@ -1903,7 +2526,7 @@ function getPlayerConfiguration({ platform }) {
1903
2526
  type: "vizio_font_selector",
1904
2527
  label: "Vizio Font Family",
1905
2528
  key: "menu_item_vizio_font_family",
1906
- initial_value: "SmsungOneUI-Bold",
2529
+ initial_value: "Ubuntu-Medium",
1907
2530
  },
1908
2531
  {
1909
2532
  type: "number_input",
@@ -1964,7 +2587,7 @@ function getPlayerConfiguration({ platform }) {
1964
2587
  type: "number_input",
1965
2588
  label: "Border Thickness",
1966
2589
  key: "menu_item_border_thickness",
1967
- initial_value: 5,
2590
+ initial_value: 4,
1968
2591
  },
1969
2592
  ]
1970
2593
  ),
@@ -1986,8 +2609,17 @@ function getPlayerConfiguration({ platform }) {
1986
2609
 
1987
2610
  // ---- TV fields ---- //
1988
2611
 
1989
- if (getDevice(platform) === "tv") {
2612
+ if (isTV(platform)) {
1990
2613
  styles.fields.push(
2614
+ fieldsGroup("Component Styles", "Component Styles", [
2615
+ {
2616
+ type: "number_input",
2617
+ label: "TV component container height",
2618
+ key: "tv_component_container_height",
2619
+ label_tooltip: "TV component container height in px",
2620
+ initial_value: 400,
2621
+ },
2622
+ ]),
1991
2623
  // Scrub colors
1992
2624
  fieldsGroup(
1993
2625
  "Scrub bar",
@@ -1998,7 +2630,7 @@ function getPlayerConfiguration({ platform }) {
1998
2630
  key: "scrub_total",
1999
2631
  label: "Scrub bar color",
2000
2632
  type: "color_picker_rgba",
2001
- initial_value: "rgba(255, 255, 255, 0.35)",
2633
+ initial_value: "rgba(239, 239, 239, 0.35)",
2002
2634
  label_tooltip:
2003
2635
  "Select the bar color for the player's scrub / progress bar",
2004
2636
  },
@@ -2007,7 +2639,7 @@ function getPlayerConfiguration({ platform }) {
2007
2639
  key: "scrub_buffer",
2008
2640
  label: "Scrub bar buffer color",
2009
2641
  type: "color_picker_rgba",
2010
- initial_value: "rgba(255, 255, 255, 0.8)",
2642
+ initial_value: "rgba(239, 239, 239, 0.65)",
2011
2643
  label_tooltip:
2012
2644
  "Select the buffer bar color for the player's scrub / progress bar",
2013
2645
  },
@@ -2016,7 +2648,7 @@ function getPlayerConfiguration({ platform }) {
2016
2648
  key: "scrub_progress",
2017
2649
  label: "Scrub bar progress color",
2018
2650
  type: "color_picker_rgba",
2019
- initial_value: "rgba(4, 207, 153, 1)",
2651
+ initial_value: "rgba(254, 20, 72, 1)",
2020
2652
  label_tooltip:
2021
2653
  "Select the progress bar color for the player's scrub / progress bar",
2022
2654
  },
@@ -2025,7 +2657,7 @@ function getPlayerConfiguration({ platform }) {
2025
2657
  key: "scrub_handle",
2026
2658
  label: "Scrub bar handle color",
2027
2659
  type: "color_picker_rgba",
2028
- initial_value: "rgba(255, 255, 255, 1)",
2660
+ initial_value: "rgba(239, 239, 239, 1)",
2029
2661
  label_tooltip:
2030
2662
  "Select the bar handle / marker color for the player's scrub / progress bar",
2031
2663
  },
@@ -2046,25 +2678,25 @@ function getPlayerConfiguration({ platform }) {
2046
2678
  type: "lg_tv_font_selector",
2047
2679
  label: "LG Font Family",
2048
2680
  key: "lg_tv_video_player_title_font_family",
2049
- initial_value: "Museo-Bold",
2681
+ initial_value: "Ubuntu-Bold",
2050
2682
  },
2051
2683
  {
2052
2684
  type: "number_input",
2053
2685
  label: "LG Font Size",
2054
2686
  key: "lg_tv_video_player_title_font_size",
2055
- initial_value: 64,
2687
+ initial_value: 58,
2056
2688
  },
2057
2689
  {
2058
2690
  type: "samsung_font_selector",
2059
2691
  label: "Samsung Font Family",
2060
2692
  key: "samsung_tv_video_player_title_font_family",
2061
- initial_value: "SamsungOne-800",
2693
+ initial_value: "Ubuntu-Bold",
2062
2694
  },
2063
2695
  {
2064
2696
  type: "number_input",
2065
2697
  label: "Samsung Font Size",
2066
2698
  key: "samsung_tv_video_player_title_font_size",
2067
- initial_value: 64,
2699
+ initial_value: 58,
2068
2700
  },
2069
2701
  {
2070
2702
  type: "vizio_font_selector",
@@ -2076,43 +2708,43 @@ function getPlayerConfiguration({ platform }) {
2076
2708
  type: "number_input",
2077
2709
  label: "Vizio Font Size",
2078
2710
  key: "vizio_video_player_title_font_size",
2079
- initial_value: 64,
2711
+ initial_value: 58,
2080
2712
  },
2081
2713
  {
2082
2714
  type: "tvos_font_selector",
2083
2715
  label: "tvOS Font Family",
2084
2716
  key: "tv_os_video_player_title_font_family",
2085
- initial_value: "SFProText-Medium",
2717
+ initial_value: "Ubuntu-Bold",
2086
2718
  },
2087
2719
  {
2088
2720
  type: "number_input",
2089
2721
  label: "tvOS Font Size",
2090
2722
  key: "tv_os_video_player_title_font_size",
2091
- initial_value: 48,
2723
+ initial_value: 58,
2092
2724
  },
2093
2725
  {
2094
2726
  type: "android_font_selector",
2095
2727
  label: "Android TV Font Family",
2096
2728
  key: "android_tv_video_player_title_font_family",
2097
- initial_value: "Roboto-Bold",
2098
- },
2099
- {
2100
- type: "android_font_selector",
2101
- label: "Fire TV Font Family",
2102
- key: "amazon_video_player_title_font_family",
2103
- initial_value: "Roboto-Bold",
2729
+ initial_value: "Ubuntu-Bold",
2104
2730
  },
2105
2731
  {
2106
2732
  type: "number_input",
2107
2733
  label: "Android TV Font Size",
2108
2734
  key: "android_tv_video_player_title_font_size",
2109
- initial_value: 50,
2735
+ initial_value: 58,
2736
+ },
2737
+ {
2738
+ type: "android_font_selector",
2739
+ label: "Fire TV Font Family",
2740
+ key: "amazon_video_player_title_font_family",
2741
+ initial_value: "Ubuntu-Bold",
2110
2742
  },
2111
2743
  {
2112
2744
  type: "number_input",
2113
2745
  label: "Fire TV Font Size",
2114
2746
  key: "amazon_video_player_title_font_size",
2115
- initial_value: 50,
2747
+ initial_value: 58,
2116
2748
  },
2117
2749
  ]
2118
2750
  ),
@@ -2131,7 +2763,7 @@ function getPlayerConfiguration({ platform }) {
2131
2763
  type: "lg_tv_font_selector",
2132
2764
  label: "LG Font Family",
2133
2765
  key: "lg_tv_video_player_summary_font_family",
2134
- initial_value: "Museo-Bold",
2766
+ initial_value: "Ubuntu-Medium",
2135
2767
  },
2136
2768
  {
2137
2769
  type: "number_input",
@@ -2143,7 +2775,7 @@ function getPlayerConfiguration({ platform }) {
2143
2775
  type: "samsung_font_selector",
2144
2776
  label: "Samsung Font Family",
2145
2777
  key: "samsung_tv_video_player_summary_font_family",
2146
- initial_value: "SamsungOne-800",
2778
+ initial_value: "Ubuntu-Medium",
2147
2779
  },
2148
2780
  {
2149
2781
  type: "number_input",
@@ -2155,7 +2787,7 @@ function getPlayerConfiguration({ platform }) {
2155
2787
  type: "vizio_font_selector",
2156
2788
  label: "Vizio Font Family",
2157
2789
  key: "vizio_video_player_summary_font_family",
2158
- initial_value: "Ubuntu-Bold",
2790
+ initial_value: "Ubuntu-Medium",
2159
2791
  },
2160
2792
  {
2161
2793
  type: "number_input",
@@ -2167,37 +2799,37 @@ function getPlayerConfiguration({ platform }) {
2167
2799
  type: "tvos_font_selector",
2168
2800
  label: "tvOS Font Family",
2169
2801
  key: "tv_os_video_player_summary_font_family",
2170
- initial_value: "SFProText-Medium",
2802
+ initial_value: "Ubuntu-Medium",
2171
2803
  },
2172
2804
  {
2173
2805
  type: "number_input",
2174
2806
  label: "tvOS Font Size",
2175
2807
  key: "tv_os_video_player_summary_font_size",
2176
- initial_value: 24,
2808
+ initial_value: 30,
2177
2809
  },
2178
2810
  {
2179
2811
  type: "android_font_selector",
2180
2812
  label: "Android TV Font Family",
2181
2813
  key: "android_tv_video_player_summary_font_family",
2182
- initial_value: "Roboto-Medium",
2183
- },
2184
- {
2185
- type: "android_font_selector",
2186
- label: "Fire TV Font Family",
2187
- key: "amazon_video_player_summary_font_family",
2188
- initial_value: "Roboto-Medium",
2814
+ initial_value: "Ubuntu-Medium",
2189
2815
  },
2190
2816
  {
2191
2817
  type: "number_input",
2192
2818
  label: "Android TV Font Size",
2193
2819
  key: "android_tv_video_player_summary_font_size",
2194
- initial_value: 25,
2820
+ initial_value: 30,
2821
+ },
2822
+ {
2823
+ type: "android_font_selector",
2824
+ label: "Fire TV Font Family",
2825
+ key: "amazon_video_player_summary_font_family",
2826
+ initial_value: "Ubuntu-Medium",
2195
2827
  },
2196
2828
  {
2197
2829
  type: "number_input",
2198
2830
  label: "Fire TV Font Size",
2199
2831
  key: "amazon_video_player_summary_font_size",
2200
- initial_value: 25,
2832
+ initial_value: 30,
2201
2833
  },
2202
2834
  ]
2203
2835
  ),
@@ -2206,65 +2838,71 @@ function getPlayerConfiguration({ platform }) {
2206
2838
  "Audio Player - Title Text",
2207
2839
  "Audio Player Title Text Label Styles",
2208
2840
  [
2841
+ {
2842
+ key: "audio_player_title_color",
2843
+ label: "Audio player title color",
2844
+ type: "color_picker_rgba",
2845
+ initial_value: "rgba(239, 239, 239, 1)",
2846
+ },
2209
2847
  {
2210
2848
  type: "lg_tv_font_selector",
2211
2849
  label: "LG Font Family",
2212
2850
  key: "lg_tv_audio_player_title_font_family",
2213
- initial_value: "Museo-Bold",
2851
+ initial_value: "Ubuntu-Bold",
2214
2852
  },
2215
2853
  {
2216
2854
  type: "number_input",
2217
2855
  label: "LG Font Size",
2218
2856
  key: "lg_tv_audio_player_title_font_size",
2219
- initial_value: 38,
2857
+ initial_value: 40,
2220
2858
  },
2221
2859
  {
2222
2860
  type: "samsung_font_selector",
2223
2861
  label: "Samsung Font Family",
2224
2862
  key: "samsung_tv_audio_player_title_font_family",
2225
- initial_value: "SamsungOne-800",
2863
+ initial_value: "Ubuntu-Bold",
2226
2864
  },
2227
2865
  {
2228
2866
  type: "number_input",
2229
2867
  label: "Samsung Font Size",
2230
2868
  key: "samsung_tv_audio_player_title_font_size",
2231
- initial_value: 38,
2869
+ initial_value: 40,
2232
2870
  },
2233
2871
  {
2234
2872
  type: "vizio_font_selector",
2235
2873
  label: "Vizio Font Family",
2236
- key: "vizio_tv_audio_player_title_font_family",
2874
+ key: "vizio_audio_player_title_font_family",
2237
2875
  initial_value: "Ubuntu-Bold",
2238
2876
  },
2239
2877
  {
2240
2878
  type: "number_input",
2241
2879
  label: "Vizio Font Size",
2242
2880
  key: "vizio_audio_player_title_font_size",
2243
- initial_value: 38,
2881
+ initial_value: 40,
2244
2882
  },
2245
2883
  {
2246
2884
  type: "tvos_font_selector",
2247
2885
  label: "tvOS Font Family",
2248
2886
  key: "tv_os_audio_player_title_font_family",
2249
- initial_value: "SFProText-Medium",
2887
+ initial_value: "Ubuntu-Bold",
2250
2888
  },
2251
2889
  {
2252
2890
  type: "number_input",
2253
2891
  label: "tvOS Font Size",
2254
2892
  key: "tv_os_audio_player_title_font_size",
2255
- initial_value: 38,
2893
+ initial_value: 40,
2256
2894
  },
2257
2895
  {
2258
2896
  type: "android_font_selector",
2259
2897
  label: "Android TV Font Family",
2260
2898
  key: "android_tv_audio_player_title_font_family",
2261
- initial_value: "Roboto-Bold",
2899
+ initial_value: "Ubuntu-Bold",
2262
2900
  },
2263
2901
  {
2264
2902
  type: "number_input",
2265
2903
  label: "Android TV Font Size",
2266
2904
  key: "android_tv_audio_player_title_font_size",
2267
- initial_value: 50,
2905
+ initial_value: 40,
2268
2906
  },
2269
2907
  ]
2270
2908
  ),
@@ -2273,65 +2911,117 @@ function getPlayerConfiguration({ platform }) {
2273
2911
  "Audio Player - Summary Text",
2274
2912
  "Audio Player Summary Text Label Styles",
2275
2913
  [
2914
+ {
2915
+ key: "audio_player_summary_color",
2916
+ label: "Audio player summary color",
2917
+ type: "color_picker_rgba",
2918
+ initial_value: "rgba(239, 239, 239, 0.8)",
2919
+ },
2276
2920
  {
2277
2921
  type: "lg_tv_font_selector",
2278
2922
  label: "LG Font Family",
2279
2923
  key: "lg_tv_audio_player_summary_font_family",
2280
- initial_value: "Museo-Bold",
2924
+ initial_value: "Ubuntu-Medium",
2281
2925
  },
2282
2926
  {
2283
2927
  type: "number_input",
2284
2928
  label: "LG Font Size",
2285
2929
  key: "lg_tv_audio_player_summary_font_size",
2286
- initial_value: 20,
2930
+ initial_value: 22,
2287
2931
  },
2288
2932
  {
2289
2933
  type: "samsung_font_selector",
2290
2934
  label: "Samsung Font Family",
2291
2935
  key: "samsung_tv_audio_player_summary_font_family",
2292
- initial_value: "SamsungOne-800",
2936
+ initial_value: "Ubuntu-Medium",
2293
2937
  },
2294
2938
  {
2295
2939
  type: "number_input",
2296
2940
  label: "Samsung Font Size",
2297
2941
  key: "samsung_tv_audio_player_summary_font_size",
2298
- initial_value: 20,
2942
+ initial_value: 22,
2299
2943
  },
2300
2944
  {
2301
2945
  type: "vizio_font_selector",
2302
2946
  label: "Vizio Font Family",
2303
2947
  key: "vizio_audio_player_summary_font_family",
2304
- initial_value: "Ubuntu-Bold",
2948
+ initial_value: "Ubuntu-Medium",
2305
2949
  },
2306
2950
  {
2307
2951
  type: "number_input",
2308
2952
  label: "Vizio Font Size",
2309
2953
  key: "vizio_audio_player_summary_font_size",
2310
- initial_value: 20,
2954
+ initial_value: 22,
2311
2955
  },
2312
2956
  {
2313
2957
  type: "tvos_font_selector",
2314
2958
  label: "tvOS Font Family",
2315
2959
  key: "tv_os_audio_player_summary_font_family",
2316
- initial_value: "SFProText-Medium",
2960
+ initial_value: "Ubuntu-Medium",
2317
2961
  },
2318
2962
  {
2319
2963
  type: "number_input",
2320
2964
  label: "tvOS Font Size",
2321
2965
  key: "tv_os_audio_player_summary_font_size",
2322
- initial_value: 20,
2966
+ initial_value: 22,
2323
2967
  },
2324
2968
  {
2325
2969
  type: "android_font_selector",
2326
2970
  label: "Android TV Font Family",
2327
2971
  key: "android_tv_audio_player_summary_font_family",
2328
- initial_value: "Roboto-Medium",
2972
+ initial_value: "Ubuntu-Medium",
2329
2973
  },
2330
2974
  {
2331
2975
  type: "number_input",
2332
2976
  label: "Android TV Font Size",
2333
2977
  key: "android_tv_audio_player_summary_font_size",
2334
- initial_value: 25,
2978
+ initial_value: 22,
2979
+ },
2980
+ ]
2981
+ ),
2982
+ fieldsGroup(
2983
+ "Audio Player Background",
2984
+ "This section allows you to configure the audio player layout",
2985
+ [
2986
+ {
2987
+ key: "audio_player_background_color",
2988
+ label: "Background Color",
2989
+ label_tooltip:
2990
+ "Set a background color using hex format and opacity. If left empty, the default color from the app’s theme will be used.",
2991
+ type: "color_picker_rgba",
2992
+ initial_value: "rgba(17, 17, 17, 1)",
2993
+ },
2994
+ {
2995
+ key: "audio_player_background_image",
2996
+ label: "Background Image",
2997
+ label_tooltip:
2998
+ "Upload a background image for the audio player. If no image is provided, the background color will be used as a fallback.",
2999
+ type: "uploader",
3000
+ default: "",
3001
+ },
3002
+ {
3003
+ key: "audio_player_background_image_overlay",
3004
+ label: "Background Image Overlay",
3005
+ label_tooltip:
3006
+ "Add a semi-transparent color overlay to improve text readability over the background image.",
3007
+ type: "color_picker_rgba",
3008
+ initial_value: "rgba(17, 17, 17, 0.5)",
3009
+ },
3010
+ {
3011
+ type: "text_input",
3012
+ label: "Item Image Key",
3013
+ key: "audio_player_artwork_image_key",
3014
+ label_tooltip:
3015
+ "Define the key used to fetch the item’s image. If left empty, a default image will be shown.",
3016
+ initial_value: "image_base",
3017
+ },
3018
+ {
3019
+ key: "audio_player_artwork_border_radius",
3020
+ label: "Item Image Corner Radius",
3021
+ label_tooltip:
3022
+ "Set the corner radius (in pixels) for item images. Leave empty for sharp corners (0px).",
3023
+ type: "number_input",
3024
+ initial_value: 16,
2335
3025
  },
2336
3026
  ]
2337
3027
  ),
@@ -2344,7 +3034,7 @@ function getPlayerConfiguration({ platform }) {
2344
3034
  type: "lg_tv_font_selector",
2345
3035
  label: "LG Font Family",
2346
3036
  key: "lg_tv_player_time_font_family",
2347
- initial_value: "Museo-Bold",
3037
+ initial_value: "Ubuntu-Medium",
2348
3038
  },
2349
3039
  {
2350
3040
  type: "number_input",
@@ -2356,7 +3046,7 @@ function getPlayerConfiguration({ platform }) {
2356
3046
  type: "samsung_font_selector",
2357
3047
  label: "Samsung Font Family",
2358
3048
  key: "samsung_tv_player_time_font_family",
2359
- initial_value: "SamsungOne-800",
3049
+ initial_value: "Ubuntu-Medium",
2360
3050
  },
2361
3051
  {
2362
3052
  type: "number_input",
@@ -2367,12 +3057,12 @@ function getPlayerConfiguration({ platform }) {
2367
3057
  {
2368
3058
  type: "vizio_font_selector",
2369
3059
  label: "Vizio Font Family",
2370
- key: "vizio_player_time_font_family",
2371
- initial_value: "Ubuntu-Bold",
3060
+ key: "vizio_tv_player_time_font_family",
3061
+ initial_value: "Ubuntu-Medium",
2372
3062
  },
2373
3063
  {
2374
3064
  type: "number_input",
2375
- label: "Vizio Font Size",
3065
+ label: "vizio Font Size",
2376
3066
  key: "vizio_player_time_font_size",
2377
3067
  initial_value: 20,
2378
3068
  },
@@ -2380,7 +3070,7 @@ function getPlayerConfiguration({ platform }) {
2380
3070
  type: "android_font_selector",
2381
3071
  label: "Android TV Font Family",
2382
3072
  key: "android_tv_player_time_font_family",
2383
- initial_value: "Roboto-Bold",
3073
+ initial_value: "Ubuntu-Medium",
2384
3074
  },
2385
3075
  {
2386
3076
  type: "number_input",
@@ -2392,7 +3082,7 @@ function getPlayerConfiguration({ platform }) {
2392
3082
  type: "android_font_selector",
2393
3083
  label: "Fire TV Font Family",
2394
3084
  key: "amazon_player_time_font_family",
2395
- initial_value: "Roboto-Bold",
3085
+ initial_value: "Ubuntu-Medium",
2396
3086
  },
2397
3087
  {
2398
3088
  type: "number_input",
@@ -2411,7 +3101,7 @@ function getPlayerConfiguration({ platform }) {
2411
3101
  type: "lg_tv_font_selector",
2412
3102
  label: "LG Font Family",
2413
3103
  key: "lg_tv_audio_player_run_time_font_family",
2414
- initial_value: "Museo-Bold",
3104
+ initial_value: "Ubuntu-Medium",
2415
3105
  },
2416
3106
  {
2417
3107
  type: "number_input",
@@ -2423,7 +3113,7 @@ function getPlayerConfiguration({ platform }) {
2423
3113
  type: "samsung_font_selector",
2424
3114
  label: "Samsung Font Family",
2425
3115
  key: "samsung_tv_audio_player_run_time_font_family",
2426
- initial_value: "SamsungOne-800",
3116
+ initial_value: "Ubuntu-Medium",
2427
3117
  },
2428
3118
  {
2429
3119
  type: "number_input",
@@ -2435,7 +3125,7 @@ function getPlayerConfiguration({ platform }) {
2435
3125
  type: "vizio_font_selector",
2436
3126
  label: "Vizio Font Family",
2437
3127
  key: "vizio_audio_player_run_time_font_family",
2438
- initial_value: "Ubuntu-Bold",
3128
+ initial_value: "Ubuntu-Medium",
2439
3129
  },
2440
3130
  {
2441
3131
  type: "number_input",
@@ -2447,7 +3137,7 @@ function getPlayerConfiguration({ platform }) {
2447
3137
  type: "tvos_font_selector",
2448
3138
  label: "tvOS Font Family",
2449
3139
  key: "tv_os_audio_player_run_time_font_family",
2450
- initial_value: "SFProText-Medium",
3140
+ initial_value: "Ubuntu-Medium",
2451
3141
  },
2452
3142
  {
2453
3143
  type: "number_input",
@@ -2459,13 +3149,13 @@ function getPlayerConfiguration({ platform }) {
2459
3149
  type: "android_font_selector",
2460
3150
  label: "Android TV Font Family",
2461
3151
  key: "android_tv_audio_player_run_time_font_family",
2462
- initial_value: "Roboto-Medium",
3152
+ initial_value: "Ubuntu-Medium",
2463
3153
  },
2464
3154
  {
2465
3155
  type: "number_input",
2466
3156
  label: "Android TV Font Size",
2467
3157
  key: "android_tv_audio_player_run_time_font_size",
2468
- initial_value: 25,
3158
+ initial_value: 20,
2469
3159
  },
2470
3160
  ]
2471
3161
  ),
@@ -2481,7 +3171,7 @@ function getPlayerConfiguration({ platform }) {
2481
3171
  type: "color_picker_rgba",
2482
3172
  label: "Background color",
2483
3173
  key: "button_background_color",
2484
- initial_value: "rgba(255, 255, 255, 0)",
3174
+ initial_value: "rgba(0, 0, 0, 0)",
2485
3175
  },
2486
3176
  {
2487
3177
  type: "color_picker_rgba",
@@ -2493,7 +3183,7 @@ function getPlayerConfiguration({ platform }) {
2493
3183
  type: "color_picker_rgba",
2494
3184
  label: "Focused background color",
2495
3185
  key: "button_focused_background_color",
2496
- initial_value: "rgba(239, 239, 239, 1)",
3186
+ initial_value: "rgba(0, 0, 0, 0)",
2497
3187
  },
2498
3188
  ]),
2499
3189
  // Player progress bar
@@ -2502,70 +3192,433 @@ function getPlayerConfiguration({ platform }) {
2502
3192
  type: "color_picker_rgba",
2503
3193
  label: "Background color",
2504
3194
  key: "progress_bar_background_color",
2505
- initial_value: "rgba(239, 239, 239, 1)",
3195
+ initial_value: "rgba(254, 20, 72, 1)",
2506
3196
  },
2507
3197
  ])
2508
3198
  );
2509
3199
  }
2510
3200
 
2511
- // ---- Audio player background - TV & mobile ---- //
3201
+ // ---- Audio player (mobile) ---- //
2512
3202
 
2513
- styles.fields.push(
2514
- fieldsGroup(
2515
- "Audio Player",
2516
- "This section allows you to configure the audio player layout",
2517
- [
2518
- {
2519
- key: "audio_player_background_color",
2520
- label: "Audio player background color",
2521
- type: "colorpicker",
2522
- initial_value: "#00000066",
2523
- },
2524
- {
2525
- key: "audio_player_title_color",
2526
- label: "Audio player title color",
2527
- type: "colorpicker",
2528
- initial_value: "#efefefcc",
2529
- },
2530
- {
2531
- key: "audio_player_summary_color",
2532
- label: "Audio player summary color",
2533
- type: "colorpicker",
2534
- initial_value: "#efefefcc",
2535
- },
2536
- {
2537
- key: "audio_player_background_image",
2538
- type: "uploader",
2539
- default: "https://i.imgur.com/USTctfL.png",
2540
- },
2541
- {
2542
- key: "audio_player_artwork_aspect_ratio",
2543
- label: "Audio Player Artwork Aspect Ratio",
2544
- initial_value: "16:9",
2545
- type: "dropdown",
2546
- options: ["1:1", "4:3", "16:9", ""],
2547
- multiple: false,
2548
- label_tooltip: "Choose the default aspect ratio for the artwork",
2549
- },
2550
- {
2551
- key: "audio_player_artwork_border_radius",
2552
- label: "Audio Player Artwork Corner Radius",
2553
- type: "number_input",
2554
- initial_value: 16,
2555
- },
2556
- ]
2557
- )
2558
- );
3203
+ if (isMobile(platform)) {
3204
+ styles.fields.push(
3205
+ fieldsGroup(
3206
+ "Audio Player",
3207
+ "This section allows you to configure the audio player layout",
3208
+ [
3209
+ {
3210
+ key: "full_screen_audio_player",
3211
+ label: "Use audio player layout",
3212
+ initial_value: true,
3213
+ type: "switch",
3214
+ label_tooltip:
3215
+ "When disabled, audio playback will be shown in the video player layout instead",
3216
+ },
3217
+ {
3218
+ type: "text_input",
3219
+ label: "Image key",
3220
+ key: "audio_player_image_key",
3221
+ label_tooltip:
3222
+ "Specify a key where we could find the image in your entry",
3223
+ initial_value: "image_base",
3224
+ },
3225
+ {
3226
+ key: "audio_player_background_image",
3227
+ label: "Static image",
3228
+ label_tooltip:
3229
+ "If no image key is configured, or no image is found in the feed — this static image will be used instead.",
3230
+ type: "uploader",
3231
+ default: "",
3232
+ },
3233
+ {
3234
+ key: "audio_player_artwork_border_radius",
3235
+ label_tooltip:
3236
+ "Adjust the corner radius of the artwork image in the audio player",
3237
+ label: "Image Corner Radius",
3238
+ type: "number_input",
3239
+ initial_value: 16,
3240
+ rules: "conditional",
3241
+ conditional_fields: [
3242
+ {
3243
+ key: "styles/full_screen_audio_player",
3244
+ condition_value: true,
3245
+ },
3246
+ ],
3247
+ },
3248
+ {
3249
+ key: "audio_player_artwork_shadow_enabled",
3250
+ label: "Image Shadow Enabled",
3251
+ type: "switch",
3252
+ initial_value: true,
3253
+ rules: "conditional",
3254
+ conditional_fields: [
3255
+ {
3256
+ key: "styles/full_screen_audio_player",
3257
+ condition_value: true,
3258
+ },
3259
+ ],
3260
+ },
3261
+ ]
3262
+ )
3263
+ );
3264
+ }
3265
+
3266
+ if (isTV(platform)) {
3267
+ general.fields.push(
3268
+ fieldsGroup(
3269
+ "Samsung and LG TV only",
3270
+ "This section allows you to configure advanced settings for Samsung and LG TV",
3271
+ [
3272
+ {
3273
+ key: "use_legacy_player",
3274
+ label: "Use Enhanced Player",
3275
+ initial_value: true,
3276
+ type: "switch",
3277
+ label_tooltip:
3278
+ "When this option is enabled, the app will use the web optimized / enhanced player on LG, Samsung, and the browser",
3279
+ },
3280
+ {
3281
+ key: "limit_video_resolution",
3282
+ label: "Limit Video Resolution For Old LG/Samsung TVs",
3283
+ initial_value: false,
3284
+ type: "switch",
3285
+ label_tooltip:
3286
+ "The player will use 1280x720 resolution and lower for old LG/Samsung TVs(2021 and lower) to avoid player buffering issue",
3287
+ },
3288
+ {
3289
+ key: "show_debug_overlay",
3290
+ label: "Show Debug Overlay",
3291
+ initial_value: false,
3292
+ type: "switch",
3293
+ label_tooltip:
3294
+ "When this option is enabled, you will have an overlay showing some important stats about the player and content",
3295
+ },
3296
+ {
3297
+ key: "force_recovery_in_unknown_errors",
3298
+ label: "Force Recovery On Unknown Errors",
3299
+ initial_value: false,
3300
+ type: "switch",
3301
+ label_tooltip:
3302
+ "When this option is enabled, player will try to recover from unknown errors by reloading the player",
3303
+ },
3304
+ {
3305
+ key: "advanced_player_config",
3306
+ label: "Advanced Player Configuration",
3307
+ type: "text_input",
3308
+ multiline: true,
3309
+ initial_value:
3310
+ "{ html5: { vhs: { limitRenditionByPlayerDimensions: true } } }",
3311
+ label_tooltip:
3312
+ "This field allows you to override the player configuration / initialization options. i.e. html5: { vhs: { limitRenditionByPlayerDimensions: false } } Please ensure your configuration matches the player you are targeting, and that it is a valid json. See config options here: https://videojs.com/guides/options/",
3313
+ },
3314
+ {
3315
+ key: "use_dashjs_player",
3316
+ label: "Use Enhanced Player for DASH streams",
3317
+ initial_value: true,
3318
+ type: "switch",
3319
+ label_tooltip:
3320
+ "When this option is enabled, the app will use the dash.js player for MPEG-DASH streams on LG / Samsung TV and in the browser",
3321
+ },
3322
+ {
3323
+ key: "use_hlsjs_player",
3324
+ label: "Use Enhanced Player for HLS streams",
3325
+ initial_value: false,
3326
+ type: "switch",
3327
+ label_tooltip:
3328
+ "When this option is enabled, the app will use the hls.js player for HLS streams on LG / Samsung TV and in the browser",
3329
+ },
3330
+ {
3331
+ key: "use_hlsjs_subtitles",
3332
+ label: "Use HLS JS subtitles",
3333
+ initial_value: false,
3334
+ type: "switch",
3335
+ label_tooltip:
3336
+ "When this option is enabled, the app will use hls.js player funtionality to display subtitles. Otherwise, it will render them in a custom component",
3337
+ rules: "conditional",
3338
+ conditional_fields: [
3339
+ {
3340
+ key: "general/use_hlsjs_player",
3341
+ condition_value: true,
3342
+ },
3343
+ ],
3344
+ },
3345
+ ]
3346
+ ),
3347
+ fieldsGroup(
3348
+ "Audio Tracks",
3349
+ "This section allows you to configure default audio track behavior for videos with multiple audio tracks",
3350
+ audioTracksSettings
3351
+ ),
3352
+ fieldsGroup("Legacy configuration", "", audioPlayer)
3353
+ );
3354
+ }
3355
+
3356
+ if (isMobile(platform)) {
3357
+ styles.fields.push(
3358
+ fieldsGroup(
3359
+ "Skip Button",
3360
+ "This section allows you to configure the skip button styles",
3361
+ [
3362
+ {
3363
+ type: "switch",
3364
+ key: "skip_button_enabled",
3365
+ label_tooltip: "Enables Skip button on the player.",
3366
+ label: "Enable",
3367
+ initial_value: true,
3368
+ },
3369
+ {
3370
+ type: "switch",
3371
+ key: "skip_button_persistent",
3372
+ label_tooltip:
3373
+ "Show skip button always if enabled, otherwise show only when the user taps on the screen.",
3374
+ label: "Persistent Button Toggle",
3375
+ initial_value: true,
3376
+ },
3377
+ {
3378
+ type: "color_picker_rgba",
3379
+ label_tooltip: "",
3380
+ label: "Background Color",
3381
+ key: "skip_button_style_button_background_color",
3382
+ initial_value: "rgba(0, 0, 0, 0.3)",
3383
+ },
3384
+ {
3385
+ type: "color_picker_rgba",
3386
+ label_tooltip: "",
3387
+ label: "Background Color Pressed",
3388
+ key: "skip_button_style_button_pressed_background_color",
3389
+ initial_value: "rgba(0, 0, 0, 0.3)",
3390
+ },
3391
+ {
3392
+ type: "number_input",
3393
+ label_tooltip: "",
3394
+ label: "Border Width",
3395
+ key: "skip_button_style_button_border_width",
3396
+ initial_value: 1.5,
3397
+ },
3398
+ {
3399
+ type: "color_picker_rgba",
3400
+ label_tooltip: "",
3401
+ label: "Border Color",
3402
+ key: "skip_button_style_button_border_color",
3403
+ initial_value: "rgba(255, 255, 255, 1)",
3404
+ },
3405
+ {
3406
+ type: "color_picker_rgba",
3407
+ label_tooltip: "",
3408
+ label: "Border Color Pressed",
3409
+ key: "skip_button_style_button_pressed_border_color",
3410
+ initial_value: "rgba(255, 255, 255, 0.5)",
3411
+ },
3412
+ {
3413
+ type: "number_input",
3414
+ label_tooltip: "",
3415
+ label: "Corner Radius",
3416
+ key: "skip_button_style_button_border_radius",
3417
+ initial_value: 4,
3418
+ },
3419
+ {
3420
+ type: "number_input",
3421
+ label_tooltip: "",
3422
+ label: "Margin Top",
3423
+ key: "skip_button_style_button_margin_top",
3424
+ initial_value: 0,
3425
+ },
3426
+ {
3427
+ type: "number_input",
3428
+ label_tooltip: "",
3429
+ label: "Margin Right",
3430
+ key: "skip_button_style_button_margin_right",
3431
+ initial_value: 8,
3432
+ },
3433
+ {
3434
+ type: "number_input",
3435
+ label_tooltip: "",
3436
+ label: "Margin Bottom",
3437
+ key: "skip_button_style_button_margin_bottom",
3438
+ initial_value: 0,
3439
+ },
3440
+ {
3441
+ type: "number_input",
3442
+ label_tooltip: "",
3443
+ label: "Margin Left",
3444
+ key: "skip_button_style_button_margin_left",
3445
+ initial_value: 0,
3446
+ },
3447
+ {
3448
+ type: "android_font_selector",
3449
+ label_tooltip: "",
3450
+ label: "Android Font Family",
3451
+ key: "skip_button_style_text_android_font_family",
3452
+ initial_value: "Roboto-Medium",
3453
+ },
3454
+ {
3455
+ type: "number_input",
3456
+ label_tooltip: "",
3457
+ label: "Android Font Size",
3458
+ key: "skip_button_style_text_android_font_size",
3459
+ initial_value: 12,
3460
+ },
3461
+ {
3462
+ type: "number_input",
3463
+ label_tooltip: "",
3464
+ label: "Android Letter Spacing",
3465
+ key: "skip_button_style_text_android_letter_spacing",
3466
+ initial_value: 0,
3467
+ },
3468
+ {
3469
+ type: "number_input",
3470
+ label_tooltip: "",
3471
+ label: "Android Line Height",
3472
+ key: "skip_button_style_text_android_line_height",
3473
+ initial_value: 20,
3474
+ },
3475
+ {
3476
+ type: "ios_font_selector",
3477
+ label_tooltip: "",
3478
+ label: "iOS Font Family",
3479
+ key: "skip_button_style_text_ios_font_family",
3480
+ initial_value: "SFProText-Semibold",
3481
+ },
3482
+ {
3483
+ type: "number_input",
3484
+ label_tooltip: "",
3485
+ label: "iOS Font Size",
3486
+ key: "skip_button_style_text_ios_font_size",
3487
+ initial_value: 12,
3488
+ },
3489
+ {
3490
+ type: "number_input",
3491
+ label_tooltip: "",
3492
+ label: "iOS Letter Spacing",
3493
+ key: "skip_button_style_text_ios_letter_spacing",
3494
+ initial_value: -0.2,
3495
+ },
3496
+ {
3497
+ type: "number_input",
3498
+ label_tooltip: "",
3499
+ label: "iOS Line Height",
3500
+ key: "skip_button_style_text_ios_line_height",
3501
+ initial_value: 20,
3502
+ },
3503
+ {
3504
+ type: "color_picker_rgba",
3505
+ label_tooltip: "",
3506
+ label: "Font Color",
3507
+ key: "skip_button_style_text_color",
3508
+ initial_value: "rgba(255, 255, 255, 1)",
3509
+ },
3510
+ {
3511
+ type: "color_picker_rgba",
3512
+ label_tooltip: "",
3513
+ label: "Font Color Pressed",
3514
+ key: "skip_button_style_text_pressed_color",
3515
+ initial_value: "rgba(255, 255, 255, 0.5)",
3516
+ },
3517
+ {
3518
+ type: "select",
3519
+ options: [
3520
+ {
3521
+ text: "None",
3522
+ value: "none",
3523
+ },
3524
+ {
3525
+ text: "Uppercase",
3526
+ value: "uppercase",
3527
+ },
3528
+ {
3529
+ text: "Lowercase",
3530
+ value: "lowercase",
3531
+ },
3532
+ {
3533
+ text: "Capitalize",
3534
+ value: "capitalize",
3535
+ },
3536
+ ],
3537
+ label: "Text Transform",
3538
+ key: "skip_button_style_text_text_transform",
3539
+ initial_value: "none",
3540
+ },
3541
+ {
3542
+ type: "number_input",
3543
+ label_tooltip: "",
3544
+ label: "Padding Top",
3545
+ key: "skip_button_style_text_padding_top",
3546
+ initial_value: 7,
3547
+ },
3548
+ {
3549
+ type: "number_input",
3550
+ label_tooltip: "",
3551
+ label: "Padding Right",
3552
+ key: "skip_button_style_text_padding_right",
3553
+ initial_value: 10,
3554
+ },
3555
+ {
3556
+ type: "number_input",
3557
+ label_tooltip: "",
3558
+ label: "Padding Bottom",
3559
+ key: "skip_button_style_text_padding_bottom",
3560
+ initial_value: 7,
3561
+ },
3562
+ {
3563
+ type: "number_input",
3564
+ label_tooltip: "",
3565
+ label: "Padding Left",
3566
+ key: "skip_button_style_text_padding_left",
3567
+ initial_value: 10,
3568
+ },
3569
+ ]
3570
+ )
3571
+ );
3572
+ }
2559
3573
 
2560
- return {
3574
+ const customConfigurationWarning = {
3575
+ label:
3576
+ "These fields are deprecated and now moved to screen configuration inside the Studio. If you have your player setup as a screen in Studio, these fields will be overwritten with a screen configuration.",
3577
+ type: "link",
3578
+ };
3579
+
3580
+ const manifest = {
2561
3581
  styles,
2562
3582
  general,
2563
3583
  localizations,
2564
- custom_configuration_fields: remapConditionalFieldsForPluginGallery(
2565
- ...styles.fields,
2566
- ...general.fields
2567
- ),
3584
+ custom_configuration_fields: [
3585
+ customConfigurationWarning,
3586
+ ...remapConditionalFieldsForPluginGallery(
3587
+ ...styles.fields,
3588
+ ...general.fields
3589
+ ),
3590
+ ],
2568
3591
  };
3592
+
3593
+ if (platform.includes("android") || platform.includes("amazon")) {
3594
+ manifest.npm_dependencies = [
3595
+ `@applicaster/zapp-react-native-default-player@${version}`,
3596
+ ];
3597
+
3598
+ manifest.project_dependencies = [
3599
+ {
3600
+ "zapp-react-native-default-player":
3601
+ "node_modules/@applicaster/zapp-react-native-default-player/android",
3602
+ },
3603
+ ];
3604
+
3605
+ manifest.extra_dependencies = [];
3606
+ }
3607
+
3608
+ if (platform.includes("ios") || platform.includes("tvos")) {
3609
+ manifest.npm_dependencies = [
3610
+ `@applicaster/zapp-react-native-default-player@${version}`,
3611
+ ];
3612
+
3613
+ manifest.extra_dependencies = [
3614
+ {
3615
+ DefaultPlayer:
3616
+ ":path =\u003e './node_modules/@applicaster/zapp-react-native-default-player/apple/DefaultPlayer.podspec'",
3617
+ },
3618
+ ];
3619
+ }
3620
+
3621
+ return manifest;
2569
3622
  }
2570
3623
 
2571
3624
  const player = (options) => getPlayerConfiguration(options);