@applicaster/zapp-react-native-utils 14.0.0-alpha.5621117258 → 14.0.0-alpha.6242515303

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 (54) hide show
  1. package/actionsExecutor/ActionExecutorContext.tsx +1 -1
  2. package/analyticsUtils/AnalyticsEvents/helper.ts +81 -0
  3. package/analyticsUtils/AnalyticsEvents/sendOnClickEvent.ts +14 -4
  4. package/analyticsUtils/__tests__/analyticsUtils.test.js +14 -0
  5. package/analyticsUtils/events.ts +8 -0
  6. package/appUtils/accessibilityManager/index.ts +5 -2
  7. package/appUtils/playerManager/OverlayObserver/OverlaysObserver.ts +0 -15
  8. package/appUtils/playerManager/useChapterMarker.tsx +0 -1
  9. package/appUtils/playerManager/usePlayerControllerSetup.tsx +16 -0
  10. package/arrayUtils/__tests__/isEmptyArray.test.ts +63 -0
  11. package/arrayUtils/__tests__/isFilledArray.test.ts +1 -1
  12. package/arrayUtils/index.ts +7 -2
  13. package/audioPlayerUtils/__tests__/getArtworkImage.test.ts +144 -0
  14. package/audioPlayerUtils/__tests__/getBackgroundImage.test.ts +72 -0
  15. package/audioPlayerUtils/__tests__/getImageFromEntry.test.ts +110 -0
  16. package/audioPlayerUtils/assets/index.ts +2 -0
  17. package/audioPlayerUtils/index.ts +242 -0
  18. package/conf/player/__tests__/selectors.test.ts +34 -0
  19. package/conf/player/selectors.ts +10 -0
  20. package/configurationUtils/__tests__/configurationUtils.test.js +0 -31
  21. package/configurationUtils/__tests__/getMediaItems.test.ts +65 -0
  22. package/configurationUtils/__tests__/imageSrcFromMediaItem.test.ts +34 -0
  23. package/configurationUtils/index.ts +63 -34
  24. package/focusManager/FocusManager.ts +26 -16
  25. package/focusManager/Tree.ts +25 -21
  26. package/focusManager/__tests__/FocusManager.test.ts +50 -8
  27. package/manifestUtils/_internals/getDefaultConfiguration.js +28 -0
  28. package/manifestUtils/{_internals.js → _internals/index.js} +2 -25
  29. package/manifestUtils/createConfig.js +4 -1
  30. package/manifestUtils/defaultManifestConfigurations/player.js +2431 -1244
  31. package/manifestUtils/keys.js +12 -0
  32. package/manifestUtils/progressBar/__tests__/mobileProgressBar.test.js +0 -30
  33. package/manifestUtils/sharedConfiguration/screenPicker/stylesFields.js +6 -0
  34. package/package.json +2 -2
  35. package/playerUtils/__tests__/configurationUtils.test.ts +1 -65
  36. package/playerUtils/__tests__/getPlayerActionButtons.test.ts +54 -0
  37. package/playerUtils/_internals/__tests__/utils.test.ts +71 -0
  38. package/playerUtils/_internals/index.ts +1 -0
  39. package/playerUtils/_internals/utils.ts +31 -0
  40. package/playerUtils/configurationUtils.ts +0 -44
  41. package/playerUtils/getPlayerActionButtons.ts +17 -0
  42. package/playerUtils/index.ts +2 -51
  43. package/playerUtils/useValidatePlayerConfig.tsx +22 -19
  44. package/reactHooks/feed/useBatchLoading.ts +3 -3
  45. package/reactHooks/feed/usePipesCacheReset.ts +1 -1
  46. package/reactHooks/layout/isTablet/index.ts +5 -2
  47. package/reactHooks/navigation/useIsScreenActive.ts +9 -5
  48. package/reactHooks/screen/useScreenContext.ts +1 -1
  49. package/reactHooks/state/__tests__/ZStoreProvider.test.tsx +2 -1
  50. package/riverComponetsMeasurementProvider/index.tsx +1 -1
  51. package/services/js2native.ts +1 -0
  52. package/time/BackgroundTimer.ts +5 -3
  53. package/utils/index.ts +16 -1
  54. 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,
89
+ },
90
+ ],
91
+ };
92
+
93
+ const localizations = {
94
+ fields: [
95
+ {
96
+ type: "text_input",
97
+ label: "Playback Speed Modal Title",
98
+ key: "playback_speed_title",
99
+ initial_value: "Playback Speed Modal Title",
36
100
  },
37
101
  {
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.",
102
+ type: "text_input",
103
+ label: "Sleep Timer Modal Title",
104
+ key: "playback_sleep_title",
105
+ initial_value: "Sleep Timer Modal Title",
44
106
  },
45
107
  {
46
- key: "audio_player_background_image_default_color",
47
- label: "Audio Player Background Image Default Color",
48
- initial_value: "",
49
108
  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.",
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,390 +134,606 @@ function getPlayerConfiguration({ platform }) {
74
134
  label: "Unlock message",
75
135
  key: "message_unlock",
76
136
  initial_value: "Tap again to unlock screen",
77
- }
78
- );
79
-
80
- general.fields.push(
137
+ },
81
138
  {
82
- key: "seek_duration",
83
- label: "Seek duration",
84
- // @ts-ignore wrong derived value
85
- initial_value: 10,
86
- type: "number_input",
87
- label_tooltip: "Duration of fast forward / rewind",
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",
88
144
  },
89
145
  {
90
- key: "nowPlayingEnabled",
91
- label: "Now Playing enabled",
92
- initial_value: false,
93
- type: "switch",
94
- label_tooltip:
95
- "Enable this option to keep video and audio content playing in the background. Please know that on Android it has to be enabled in the plugin and for iOS on the player screen.",
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",
96
151
  },
97
152
  {
98
- key: "player_action_buttons",
99
- label: "Player action buttons",
100
- initial_value: null,
101
- label_tooltip:
102
- "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",
153
+ key: "accessibility_pause_label",
154
+ label: "Accessibility pause label",
155
+ initial_value: "Pause button",
156
+ label_tooltip: "Label for pause button accessibility",
103
157
  type: "text_input",
104
- }
105
- );
106
-
107
- if (platform.includes("ios")) {
108
- general.fields.push({
109
- key: "pictureInPictureEnabled",
110
- label: "Picture and picture enabled",
111
- initial_value: false,
112
- type: "switch",
113
- label_tooltip:
114
- "Enable this option to have a floating video player when the app is in the background (experimental)",
115
- });
116
- }
117
-
118
- if (platform.includes("android") || platform.includes("amazon")) {
119
- general.fields.push({
120
- key: "user_agent",
121
- label: "User agent",
122
- // @ts-ignore wrong derived value
123
- initial_value: "",
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",
124
164
  type: "text_input",
125
- label_tooltip: "Override default user agent string",
126
- });
127
- }
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: "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: "Back 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
+ };
128
322
 
323
+ if (isTV(platform)) {
129
324
  styles.fields.push(
325
+ fieldsGroup("Always Show Scrub Bar & Timestamp", "", [
326
+ {
327
+ key: "always_show_scrub_bar_and_timestamp",
328
+ label: "Always Show Scrub Bar & Timestamp",
329
+ initial_value: false,
330
+ type: "switch",
331
+ label_tooltip:
332
+ "When enabled, progress bar will always appear while playing in full screen. otherwise, progress bar will appear only when tapping and revealing all controllers",
333
+ },
334
+ {
335
+ section: "Default Timestamp Type",
336
+ key: "default_timestamp_type",
337
+ label: "Default Timestamp Type",
338
+ type: "select",
339
+ initial_value: "remaining_time",
340
+ label_tooltip:
341
+ "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.",
342
+ options: [
343
+ {
344
+ text: "Remaining time",
345
+ value: "remaining_time",
346
+ },
347
+ {
348
+ text: "Complete Duration",
349
+ value: "complete_duration",
350
+ },
351
+ ],
352
+ },
353
+ ]),
130
354
  fieldsGroup(
131
- "Player Styles",
132
- "This section allows you to configure the main styles of the player",
355
+ "Partial Player (Roku only)",
356
+ "This section allows you to configure width and height of video player in Partial Player",
133
357
  [
134
358
  {
135
- key: "overlay_color",
136
- label: "Player overlay color",
137
- type: "color_picker_rgba",
138
- initial_value: "rgba(0, 0, 0, 0)",
139
- label_tooltip:
140
- "Select the background overlay color for the player. The alpha channel is ignored, and a gradient is created from the provided RGB colors",
359
+ key: "video_theater_width",
360
+ label: "Width of player",
361
+ type: "number_input",
362
+ initial_value: "1420",
363
+ placeHolder: "1420",
141
364
  },
142
365
  {
143
- key: "use_video_modal",
144
- label: "Use video modal",
145
- initial_value: false,
146
- type: "switch",
147
- label_tooltip:
148
- "Select whether you want to present player inside the video modal",
366
+ key: "video_theater_height",
367
+ label: "Height of player",
368
+ type: "number_input",
369
+ initial_value: "900",
370
+ placeHolder: "900",
149
371
  },
150
372
  {
151
- type: "switch",
152
- label: "Disable Fullscreen Mode",
153
- tooltip:
154
- "Removes the ability to play the media content in fullscreen",
155
- key: "disable_fullscreen",
156
- initial_value: false,
157
- rules: "conditional",
158
- conditional_fields: [
159
- {
160
- key: "styles/use_video_modal",
161
- condition_value: true,
162
- },
163
- ],
373
+ key: "full_screen_button_offset_x",
374
+ label: "Fullscreen button X",
375
+ type: "number_input",
376
+ initial_value: 160,
377
+ placeHolder: "160",
164
378
  },
165
379
  {
166
- type: "switch",
167
- label: "Inline Player Close Button",
168
- tooltip:
169
- "Select whether you want to include a close button in the inline player mode",
170
- key: "inline_player_close_button_enabled",
171
- initial_value: false,
172
- rules: "conditional",
173
- conditional_fields: [
174
- {
175
- key: "styles/use_video_modal",
176
- condition_value: true,
177
- },
178
- ],
380
+ key: "full_screen_button_offset_y",
381
+ label: "Fullscreen button Y",
382
+ type: "number_input",
383
+ initial_value: 160,
384
+ placeHolder: "160",
179
385
  },
180
386
  {
181
- type: "switch",
182
- label: "Fullscreen Player Close Button",
183
- tooltip:
184
- "Select whether you want to include a close button in the fullscreen player mode",
185
- key: "fullscreen_player_close_button_enabled",
186
- initial_value: false,
187
- rules: "conditional",
188
- conditional_fields: [
189
- {
190
- key: "styles/use_video_modal",
191
- condition_value: true,
192
- },
193
- ],
387
+ key: "full_screen_button_w",
388
+ label: "Fullscreen button width",
389
+ type: "number_input",
390
+ initial_value: 120,
391
+ placeHolder: "120",
194
392
  },
195
393
  {
196
- type: "switch",
197
- label: "Display live badge",
198
- tooltip:
199
- "Select whether you want to include a badge for live content",
200
- key: "live_badge_enabled",
201
- initial_value: true,
394
+ key: "full_screen_button_h",
395
+ label: "Fullscreen button height",
396
+ type: "number_input",
397
+ initial_value: 120,
398
+ placeHolder: "120",
202
399
  },
203
400
  {
204
- type: "number_input",
205
- label: "Minimised height (Mobile)",
206
- tooltip: "Height of the minimised modal - Applies only to mobile",
207
- key: "minimised_height",
208
- initial_value: 60,
209
- rules: "conditional",
210
- conditional_fields: [
211
- {
212
- key: "styles/use_video_modal",
213
- condition_value: true,
214
- },
215
- ],
401
+ key: "full_screen_button_background_color",
402
+ type: "color_picker",
403
+ label: "Fullscreen Button background color",
404
+ initial_value: "#00000000",
405
+ placeHolder: "color",
406
+ label_tooltip: "Pick Color",
216
407
  },
217
408
  {
218
- type: "number_input",
219
- label: "Minimised height (Tablet)",
220
- tooltip: "Height of the minimised modal - Applies only to Tablets",
221
- key: "minimised_height_tablet",
222
- initial_value: 64,
223
- rules: "conditional",
224
- conditional_fields: [
225
- {
226
- key: "styles/use_video_modal",
227
- condition_value: true,
228
- },
229
- ],
409
+ key: "full_screen_button_background_url",
410
+ type: "text_input",
411
+ label: "Fullscreen Button background Url",
412
+ initial_value: "pkg:/images/tv_fullscreen.png",
413
+ placeHolder: "",
414
+ label_tooltip: "",
230
415
  },
231
416
  {
232
- type: "select",
233
- label: "VideoModal StatusBar content style",
234
- key: "status_bar_content_style",
235
- tooltip: "Color of the modal status bar content",
236
- options: [
237
- {
238
- text: "Dark",
239
- value: "dark-content",
240
- },
241
- {
242
- text: "Light",
243
- value: "light-content",
244
- },
245
- ],
246
- initial_value: null,
247
- rules: "conditional",
248
- conditional_fields: [
249
- {
250
- key: "styles/use_video_modal",
251
- condition_value: true,
252
- },
253
- ],
417
+ key: "full_screen_button_highlighted_background_color",
418
+ type: "color_picker",
419
+ label: "Fullscreen Button highlighted background color",
420
+ initial_value: "#00000000",
421
+ placeHolder: "color",
422
+ label_tooltip: "Pick Color",
423
+ },
424
+ {
425
+ key: "full_screen_button_highlighted_background_url",
426
+ type: "text_input",
427
+ label: "Fullscreen Button highlighted Url",
428
+ initial_value: "pkg:/images/tv_fullscreen.png",
429
+ placeHolder: "",
430
+ label_tooltip: "",
431
+ },
432
+ ]
433
+ ),
434
+ fieldsGroup(
435
+ "Skip Button",
436
+ "This section allows you to configure the skip button styles for tv",
437
+ [
438
+ {
439
+ type: "switch",
440
+ key: "skip_button_enabled",
441
+ label_tooltip: "Enables Skip button on the player.",
442
+ label: "Enable",
443
+ initial_value: true,
444
+ },
445
+ {
446
+ type: "switch",
447
+ key: "skip_button_persistent",
448
+ label_tooltip:
449
+ "Show skip button always if enabled, otherwise show only when the player controls are on the screen.",
450
+ label: "Persistent Button Toggle",
451
+ initial_value: true,
254
452
  },
255
453
  {
256
454
  type: "color_picker_rgba",
257
- label: "Modal Background Color",
258
- key: "modal_background_color",
259
- tooltip: "Color of the modal background (can be transparent)",
260
- initial_value: "rgba(255, 255, 255, 0)",
261
- rules: "conditional",
262
- conditional_fields: [
263
- {
264
- key: "styles/use_video_modal",
265
- condition_value: true,
266
- },
267
- ],
455
+ label_tooltip: "",
456
+ label: "Border Color",
457
+ key: "skip_button_style_button_border_color",
458
+ initial_value: "rgba(239, 239, 239, 0.5)",
268
459
  },
269
460
  {
270
461
  type: "color_picker_rgba",
271
- label: "Buffering spinner color",
272
- key: "buffering_color",
273
- initial_value: "rgba(255, 255, 255, 1)",
462
+ label_tooltip: "",
463
+ label: "Border Color Focused",
464
+ key: "skip_button_style_button_focused_border_color",
465
+ initial_value: "rgba(239, 239, 239, 1)",
466
+ },
467
+ {
468
+ type: "number_input",
469
+ label_tooltip: "",
470
+ label: "Border Width",
471
+ key: "skip_button_style_button_border_width",
472
+ initial_value: 1.5,
473
+ },
474
+ {
475
+ type: "number_input",
476
+ label_tooltip: "",
477
+ label: "Corner Radius",
478
+ key: "skip_button_style_button_border_radius",
479
+ initial_value: 10,
274
480
  },
275
481
  {
276
- key: "docked_player_background_color",
277
- label: "Docked player background color",
278
482
  type: "color_picker_rgba",
279
- initial_value: "rgba(15,15,15,1)",
280
- rules: "conditional",
281
- conditional_fields: [
282
- {
283
- key: "styles/use_video_modal",
284
- condition_value: true,
285
- },
286
- ],
483
+ label_tooltip: "",
484
+ label: "Background Color",
485
+ key: "skip_button_style_button_background_color",
486
+ initial_value: "rgba(0, 0, 0, 0.3)",
287
487
  },
288
488
  {
289
489
  type: "color_picker_rgba",
290
- label: "Tablet landscape Player container background color",
291
- key: "tablet_landscape_player_container_background_color",
292
- initial_value: "rgba(0,0,0,1)",
293
- conditional_fields: [
294
- {
295
- key: "styles/use_video_modal",
296
- condition_value: true,
297
- },
298
- ],
490
+ label_tooltip: "",
491
+ label: "Background Color Focused",
492
+ key: "skip_button_style_button_focused_background_color",
493
+ initial_value: "rgba(0, 0, 0, 0)",
299
494
  },
300
495
  {
301
- type: "text_input",
302
- label: "Tablet landscape sidebar width",
303
- key: "tablet_landscape_sidebar_width",
304
- label_tooltip:
305
- "This setting allow you to define the width of the sidebar, when using the inline player on tablet landscape mode. You can choose either a fix width or a % of the screen",
306
- initial_value: "35%",
307
- conditional_fields: [
308
- {
309
- key: "styles/use_video_modal",
310
- condition_value: true,
311
- },
312
- ],
496
+ type: "color_picker_rgba",
497
+ label_tooltip: "",
498
+ label: "Font Color",
499
+ key: "skip_button_style_text_color",
500
+ initial_value: "rgba(255, 255, 255, 0.5)",
313
501
  },
314
- ]
315
- ),
316
- fieldsGroup(
317
- "Assets",
318
- "This section enables you to configure the assets used in the player",
319
- [
320
502
  {
321
- key: "play",
322
- label: "Play badge",
323
- type: "uploader",
324
- label_tooltip: "Override default play badge / icon",
503
+ type: "color_picker_rgba",
504
+ label_tooltip: "",
505
+ label: "Font Color Focused",
506
+ key: "skip_button_style_text_focused_color",
507
+ initial_value: "rgba(255, 255, 255, 1)",
325
508
  },
326
509
  {
327
- key: "pause",
328
- label: "Pause badge",
329
- type: "uploader",
330
- label_tooltip: "Override default pause badge / icon",
510
+ type: "lg_tv_font_selector",
511
+ label_tooltip: "",
512
+ label: "LG Font Family",
513
+ key: "skip_button_style_text_lg_font_family",
514
+ initial_value: "Ubuntu-Bold",
331
515
  },
332
516
  {
333
- key: "forward",
334
- label: "Forward badge",
335
- type: "uploader",
336
- label_tooltip: "Override default forward badge / icon",
517
+ type: "number_input",
518
+ label_tooltip: "",
519
+ label: "LG Font Size",
520
+ key: "skip_button_style_text_lg_font_size",
521
+ initial_value: 24,
337
522
  },
338
523
  {
339
- key: "rewind",
340
- label: "Rewind badge",
341
- type: "uploader",
342
- label_tooltip: "Override default rewind badge / icon",
524
+ type: "samsung_font_selector",
525
+ label_tooltip: "",
526
+ label: "Samsung Font Family",
527
+ key: "skip_button_style_text_samsung_font_family",
528
+ initial_value: "Ubuntu-Bold",
343
529
  },
344
530
  {
345
- key: "stop",
346
- label: "Stop badge",
347
- type: "uploader",
348
- label_tooltip:
349
- "Set stop badge / icon. Pause badge is used if this field is empty",
531
+ type: "number_input",
532
+ label_tooltip: "",
533
+ label: "Samsung Font Size",
534
+ key: "skip_button_style_text_samsung_font_size",
535
+ initial_value: 24,
350
536
  },
351
537
  {
352
- key: "subtitle_off",
353
- label: "Subtitle off badge",
354
- type: "uploader",
355
- label_tooltip: "Override default subtitle_off badge / icon",
538
+ type: "vizio_font_selector",
539
+ label_tooltip: "",
540
+ label: "Samsung Font Family",
541
+ key: "skip_button_style_text_vizio_font_family",
542
+ initial_value: "Ubuntu-Bold",
356
543
  },
357
544
  {
358
- key: "subtitle_on",
359
- label: "Subtitle on badge",
360
- type: "uploader",
361
- label_tooltip: "Override default subtitle_on badge / icon",
545
+ type: "number_input",
546
+ label_tooltip: "",
547
+ label: "Vizio Font Size",
548
+ key: "skip_button_style_text_vizio_font_size",
549
+ initial_value: 24,
362
550
  },
363
551
  {
364
- key: "close",
365
- label: "Close badge",
366
- type: "uploader",
367
- label_tooltip: "Override default close badge / icon",
552
+ type: "android_font_selector",
553
+ label_tooltip: "",
554
+ label: "Android Font Family",
555
+ key: "skip_button_style_text_android_font_family",
556
+ initial_value: "Ubuntu-Bold",
368
557
  },
369
558
  {
370
- key: "lock",
371
- label: "Lock player badge",
372
- type: "uploader",
373
- label_tooltip: "Override default lock player badge / icon",
559
+ type: "number_input",
560
+ label_tooltip: "",
561
+ label: "Android Font Size",
562
+ key: "skip_button_style_text_android_font_size",
563
+ initial_value: 24,
374
564
  },
375
- // Modal section
376
565
  {
377
- key: "minimize",
378
- label: "Minimize badge",
379
- type: "uploader",
380
- label_tooltip: "Override default minimize badge / icon",
381
- rules: "conditional",
382
- conditional_fields: [
383
- {
384
- key: "styles/use_video_modal",
385
- condition_value: true,
386
- },
387
- ],
566
+ type: "roku_font_selector",
567
+ label_tooltip: "",
568
+ label: "Android Font Family",
569
+ key: "skip_button_style_text_roku_font_family",
570
+ initial_value: "Ubuntu-Bold",
388
571
  },
389
572
  {
390
- key: "maximize",
391
- label: "Maximize badge",
392
- type: "uploader",
393
- label_tooltip: "Override default maximize badge / icon",
394
- rules: "conditional",
395
- conditional_fields: [
396
- {
397
- key: "styles/use_video_modal",
398
- condition_value: true,
399
- },
400
- ],
573
+ type: "number_input",
574
+ label_tooltip: "",
575
+ label: "Roku Font Size",
576
+ key: "skip_button_style_text_roku_font_size",
577
+ initial_value: 24,
401
578
  },
402
579
  {
403
- key: "down",
404
- label: "Down badge",
405
- type: "uploader",
406
- label_tooltip: "Override default down badge / icon",
407
- rules: "conditional",
408
- conditional_fields: [
580
+ type: "select",
581
+ options: [
409
582
  {
410
- key: "styles/use_video_modal",
411
- condition_value: true,
583
+ text: "None",
584
+ value: "none",
412
585
  },
413
- ],
414
- },
415
- // Docked section
416
- {
417
- key: "play_mini",
418
- label: "Docked play badge",
419
- type: "uploader",
420
- label_tooltip: "Override default play badge / icon in docked mode",
421
- rules: "conditional",
422
- conditional_fields: [
423
586
  {
424
- key: "styles/use_video_modal",
425
- condition_value: true,
587
+ text: "Uppercase",
588
+ value: "uppercase",
426
589
  },
427
- ],
428
- },
429
- {
430
- key: "pause_mini",
431
- label: "Docked pause badge",
432
- type: "uploader",
433
- label_tooltip: "Override default pause badge / icon in docked mode",
434
- rules: "conditional",
435
- conditional_fields: [
436
590
  {
437
- key: "styles/use_video_modal",
438
- condition_value: true,
591
+ text: "Lowercase",
592
+ value: "lowercase",
439
593
  },
440
- ],
441
- },
442
- {
443
- key: "close_mini",
444
- label: "Docked close badge",
445
- type: "uploader",
446
- label_tooltip: "Override default close badge / icon in docked mode",
447
- rules: "conditional",
448
- conditional_fields: [
449
594
  {
450
- key: "styles/use_video_modal",
451
- condition_value: true,
595
+ text: "Capitalize",
596
+ value: "capitalize",
452
597
  },
453
598
  ],
599
+ label: "Text Transform",
600
+ key: "skip_button_style_text_text_transform",
601
+ initial_value: "none",
454
602
  },
455
- {
456
- key: "stop_mini",
457
- label: "Docked stop badge",
458
- type: "uploader",
603
+ ]
604
+ )
605
+ );
606
+ }
607
+
608
+ if (isMobile(platform)) {
609
+ general.fields.push(
610
+ {
611
+ section: "Default Timestamp Type",
612
+ key: "default_timestamp_type",
613
+ label: "Default Timestamp Type",
614
+ type: "select",
615
+ initial_value: "total_duration",
616
+ label_tooltip:
617
+ "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.",
618
+ options: [
619
+ {
620
+ text: "Remaining time",
621
+ value: "remaining_time",
622
+ },
623
+ {
624
+ text: "Total duration",
625
+ value: "total_duration",
626
+ },
627
+ ],
628
+ },
629
+ {
630
+ key: "seek_duration",
631
+ label: "Seek duration",
632
+ initial_value: 10,
633
+ type: "number_input",
634
+ label_tooltip: "Duration of fast forward / rewind",
635
+ },
636
+ {
637
+ key: "nowPlayingEnabled",
638
+ label: "Now Playing enabled",
639
+ initial_value: false,
640
+ type: "switch",
641
+ label_tooltip:
642
+ "Enable this option to keep video and audio content playing in the background. Please know that on Android it has to be enabled in the plugin and for iOS on the player screen.",
643
+ },
644
+ {
645
+ key: "player_action_buttons",
646
+ label: "Player action buttons",
647
+ initial_value: null,
648
+ label_tooltip:
649
+ "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",
650
+ type: "text_input",
651
+ },
652
+ {
653
+ key: "liveSeekingEnabled",
654
+ label: "Live Seeking Enabled",
655
+ initial_value: false,
656
+ type: "switch",
657
+ label_tooltip: "Enable Live Seek",
658
+ },
659
+ {
660
+ key: "minimumAllowedSeekableDurationInSeconds",
661
+ label: "Minimum allowed seekable duration in seconds",
662
+ initial_value: 300,
663
+ type: "number_input",
664
+ label_tooltip:
665
+ "If duration less that this value, player will disable 'liveSeekingEnabled' value",
666
+ },
667
+ {
668
+ key: "pictureInPictureEnabled",
669
+ label: "Picture in picture enabled",
670
+ initial_value: false,
671
+ type: "switch",
672
+ label_tooltip:
673
+ "Enable this option to have a floating video player when the app is in the background.",
674
+ }
675
+ );
676
+
677
+ if (
678
+ platform.includes("android") ||
679
+ platform.includes("amazon") ||
680
+ platform.includes("ios") ||
681
+ platform.includes("tvos")
682
+ ) {
683
+ general.fields.push({
684
+ key: "user_agent",
685
+ label: "User agent",
686
+ initial_value: "",
687
+ type: "text_input",
688
+ label_tooltip: "Override default user agent string",
689
+ });
690
+ }
691
+
692
+ if (platform === "android_for_quickbrick") {
693
+ general.fields.push({
694
+ key: "stop_playback_on_task_removal",
695
+ label: "Stop background playback on close",
696
+ initial_value: false,
697
+ type: "switch",
698
+ label_tooltip:
699
+ "Stop background playback if user swipes app away from 'Recent' screen",
700
+ });
701
+ }
702
+
703
+ styles.fields.push(
704
+ fieldsGroup(
705
+ "Player Styles",
706
+ "This section allows you to configure the main styles of the player",
707
+ [
708
+ {
709
+ key: "overlay_color",
710
+ label: "Player overlay color",
711
+ type: "color_picker_rgba",
712
+ initial_value: "rgba(0, 0, 0, 0)",
459
713
  label_tooltip:
460
- "Set stop badge / icon in docked mode. Docked pause badge is used if this field is empty",
714
+ "Select the background overlay color for the player. The alpha channel is ignored, and a gradient is created from the provided RGB colors",
715
+ },
716
+ {
717
+ type: "text_input",
718
+ label: "Background image key",
719
+ key: "player_preview_image_key",
720
+ initial_value: "",
721
+ },
722
+ {
723
+ key: "use_video_modal",
724
+ label: "Use video modal",
725
+ initial_value: false,
726
+ type: "switch",
727
+ label_tooltip:
728
+ "Select whether you want to present player inside the video modal",
729
+ },
730
+ {
731
+ type: "switch",
732
+ label: "Disable Fullscreen Mode",
733
+ tooltip:
734
+ "Removes the ability to play the media content in fullscreen",
735
+ key: "disable_fullscreen",
736
+ initial_value: false,
461
737
  rules: "conditional",
462
738
  conditional_fields: [
463
739
  {
@@ -467,194 +743,237 @@ function getPlayerConfiguration({ platform }) {
467
743
  ],
468
744
  },
469
745
  {
470
- key: "live_image",
471
- label: "Live badge",
472
- type: "uploader",
473
- label_tooltip: "Override default live badge / icon",
746
+ type: "switch",
747
+ label: "Inline Player Close Button",
748
+ tooltip:
749
+ "Select whether you want to include a close button in the inline player mode",
750
+ key: "inline_player_close_button_enabled",
751
+ initial_value: false,
474
752
  rules: "conditional",
475
753
  conditional_fields: [
476
754
  {
477
- key: "styles/live_badge_enabled",
755
+ key: "styles/use_video_modal",
478
756
  condition_value: true,
479
757
  },
480
758
  ],
481
759
  },
482
760
  {
483
- key: "live_image_gray",
484
- label: "Live Badge On Rewound State",
485
- type: "uploader",
486
- label_tooltip:
487
- "This badge indicates that the stream is live but currently being viewed in a rewound state.",
761
+ type: "switch",
762
+ label: "Fullscreen Player Close Button",
763
+ tooltip:
764
+ "Select whether you want to include a close button in the fullscreen player mode",
765
+ key: "fullscreen_player_close_button_enabled",
766
+ initial_value: false,
488
767
  rules: "conditional",
489
768
  conditional_fields: [
490
769
  {
491
- key: "styles/live_badge_enabled",
770
+ key: "styles/use_video_modal",
492
771
  condition_value: true,
493
772
  },
494
773
  ],
495
774
  },
496
775
  {
497
- key: "live_width",
498
- label: "Live badge width",
499
- type: "number_input",
500
- label_tooltip: "Max value 230",
501
- initial_value: 38,
776
+ type: "switch",
777
+ label: "Disable Mini Player (in Inline Mode Video Modal)",
778
+ label_tooltip:
779
+ "Select whether you want to disable the mini player in the video player when in inline mode",
780
+ key: "disable_mini_player_when_inline",
781
+ initial_value: false,
502
782
  rules: "conditional",
503
783
  conditional_fields: [
504
784
  {
505
- key: "styles/live_badge_enabled",
785
+ key: "styles/use_video_modal",
506
786
  condition_value: true,
507
787
  },
508
788
  ],
509
789
  },
510
790
  {
511
- key: "live_height",
512
- label: "Live badge height",
791
+ type: "switch",
792
+ label: "Display live badge",
793
+ tooltip:
794
+ "Select whether you want to include a badge for live content",
795
+ key: "live_badge_enabled",
796
+ initial_value: true,
797
+ },
798
+ {
513
799
  type: "number_input",
514
- label_tooltip: "Max value 40",
515
- initial_value: 20,
800
+ label: "Minimised height (Mobile)",
801
+ tooltip: "Height of the minimised modal - Applies only to mobile",
802
+ key: "minimised_height",
803
+ initial_value: 60,
516
804
  rules: "conditional",
517
805
  conditional_fields: [
518
806
  {
519
- key: "styles/live_badge_enabled",
807
+ key: "styles/use_video_modal",
520
808
  condition_value: true,
521
809
  },
522
810
  ],
523
811
  },
524
- ]
525
- ),
526
- fieldsGroup(
527
- "Player Content Title",
528
- "this section enables you to configure the styles of the content meta data displayed on top of the player",
529
- [
530
- // Title section
531
812
  {
532
- section: "title",
533
- key: "title",
534
- label: "Player content title",
535
- initial_value: true,
536
- type: "switch",
537
- label_tooltip: "Select whether you want to display title in player",
813
+ type: "number_input",
814
+ label: "Minimised height (Tablet)",
815
+ tooltip: "Height of the minimised modal - Applies only to Tablets",
816
+ key: "minimised_height_tablet",
817
+ initial_value: 64,
818
+ rules: "conditional",
819
+ conditional_fields: [
820
+ {
821
+ key: "styles/use_video_modal",
822
+ condition_value: true,
823
+ },
824
+ ],
538
825
  },
539
826
  {
540
- section: "title",
541
- key: "title_font_android",
542
- label: "Android title font",
543
- type: "android_font_selector",
544
- initial_value: "Roboto-Bold",
545
- label_tooltip: "Select the font for the android player's title",
827
+ type: "select",
828
+ label: "VideoModal StatusBar content style",
829
+ key: "status_bar_content_style",
830
+ tooltip: "Color of the modal status bar content",
831
+ options: [
832
+ {
833
+ text: "Dark",
834
+ value: "dark-content",
835
+ },
836
+ {
837
+ text: "Light",
838
+ value: "light-content",
839
+ },
840
+ ],
841
+ initial_value: null,
842
+ rules: "conditional",
843
+ conditional_fields: [
844
+ {
845
+ key: "styles/use_video_modal",
846
+ condition_value: true,
847
+ },
848
+ ],
546
849
  },
547
850
  {
548
- section: "title",
549
- key: "title_font_ios",
550
- label: "iOS title font",
551
- type: "ios_font_selector",
552
- initial_value: "SFProText-Semibold",
553
- label_tooltip: "Select the font for the iOS player's title",
851
+ type: "color_picker_rgba",
852
+ label: "Modal Background Color",
853
+ key: "modal_background_color",
854
+ tooltip: "Color of the modal background (can be transparent)",
855
+ initial_value: "rgba(255, 255, 255, 0)",
856
+ rules: "conditional",
857
+ conditional_fields: [
858
+ {
859
+ key: "styles/use_video_modal",
860
+ condition_value: true,
861
+ },
862
+ ],
554
863
  },
555
864
  {
556
- section: "title",
557
- key: "title_color",
558
- label: "Title color",
559
865
  type: "color_picker_rgba",
866
+ label: "Buffering spinner color",
867
+ key: "buffering_color",
560
868
  initial_value: "rgba(255, 255, 255, 1)",
561
- label_tooltip: "Select the font color for the player's title",
562
- },
563
- {
564
- section: "title",
565
- key: "title_fontsize_android",
566
- label: "Android title font size",
567
- type: "number_input",
568
- initial_value: 16,
569
- label_tooltip:
570
- "Select the font size for the android player's title",
571
869
  },
572
870
  {
573
- section: "title",
574
- key: "title_fontsize_ios",
575
- label: "iOS title font size",
576
- type: "number_input",
577
- initial_value: 16,
578
- label_tooltip: "Select the font size for the iOS player's title",
871
+ key: "docked_player_background_color",
872
+ label: "Docked player background color",
873
+ type: "color_picker_rgba",
874
+ initial_value: "rgba(15,15,15,1)",
875
+ rules: "conditional",
876
+ conditional_fields: [
877
+ {
878
+ key: "styles/use_video_modal",
879
+ condition_value: true,
880
+ },
881
+ ],
579
882
  },
580
883
  {
581
- section: "title",
582
- key: "title_lineheight_android",
583
- label: "Android title line height",
584
- type: "number_input",
585
- initial_value: 20,
884
+ type: "color_picker_rgba",
885
+ label: "Tablet landscape Player container background color",
886
+ key: "tablet_landscape_player_container_background_color",
887
+ initial_value: "rgba(0,0,0,1)",
888
+ conditional_fields: [
889
+ {
890
+ key: "styles/use_video_modal",
891
+ condition_value: true,
892
+ },
893
+ ],
894
+ },
895
+ {
896
+ type: "text_input",
897
+ label: "Tablet landscape sidebar width",
898
+ key: "tablet_landscape_sidebar_width",
586
899
  label_tooltip:
587
- "Select the line height for the android player's title",
900
+ "This setting allow you to define the width of the sidebar, when using the inline player on tablet landscape mode. You can choose either a fix width or a % of the screen",
901
+ initial_value: "35%",
902
+ conditional_fields: [
903
+ {
904
+ key: "styles/use_video_modal",
905
+ condition_value: true,
906
+ },
907
+ ],
588
908
  },
909
+ ]
910
+ ),
911
+ fieldsGroup(
912
+ "Assets",
913
+ "This section enables you to configure the assets used in the player",
914
+ [
589
915
  {
590
- section: "title",
591
- key: "title_lineheight_ios",
592
- label: "iOS title line height",
593
- type: "number_input",
594
- initial_value: 20,
595
- label_tooltip: "Select the line height for the iOS player's title",
916
+ key: "play",
917
+ label: "Play badge",
918
+ type: "uploader",
919
+ label_tooltip: "Override default play badge / icon",
596
920
  },
597
921
  {
598
- section: "title",
599
- key: "title_letterspacing_android",
600
- label: "Android title letter spacing",
601
- type: "number_input",
602
- initial_value: 0,
603
- label_tooltip:
604
- "Select the letter spacing for the android player's title",
922
+ key: "pause",
923
+ label: "Pause badge",
924
+ type: "uploader",
925
+ label_tooltip: "Override default pause badge / icon",
605
926
  },
606
927
  {
607
- section: "title",
608
- key: "title_letterspacing_ios",
609
- label: "iOS title letter spacing",
610
- type: "number_input",
611
- initial_value: -0.4,
928
+ key: "forward",
929
+ label: "Forward badge",
930
+ type: "uploader",
931
+ label_tooltip: "Override default forward badge / icon",
932
+ },
933
+ {
934
+ key: "rewind",
935
+ label: "Rewind badge",
936
+ type: "uploader",
937
+ label_tooltip: "Override default rewind badge / icon",
938
+ },
939
+ {
940
+ key: "stop",
941
+ label: "Stop badge",
942
+ type: "uploader",
612
943
  label_tooltip:
613
- "Select the letter spacing for the iOS player's title",
944
+ "Set stop badge / icon. Pause badge is used if this field is empty",
614
945
  },
615
946
  {
616
- section: "title",
617
- key: "title_margin_bottom",
618
- label: "Title margin bottom",
619
- type: "number_input",
620
- initial_value: 2,
621
- label_tooltip: "Select the margin bottom for the player's title",
947
+ key: "subtitle_off",
948
+ label: "Subtitle off badge",
949
+ type: "uploader",
950
+ label_tooltip: "Override default subtitle_off badge / icon",
622
951
  },
623
952
  {
624
- section: "title",
625
- key: "title_text_transform",
626
- label: "Title Text Transform",
627
- type: "select",
628
- initial_value: "default",
629
- options: [
630
- {
631
- text: "Default",
632
- value: "default",
633
- },
634
- {
635
- text: "Uppercase",
636
- value: "uppercase",
637
- },
638
- {
639
- text: "Lowercase",
640
- value: "lowercase",
641
- },
642
- {
643
- text: "Capitalize",
644
- value: "capitalize",
645
- },
646
- ],
953
+ key: "subtitle_on",
954
+ label: "Subtitle on badge",
955
+ type: "uploader",
956
+ label_tooltip: "Override default subtitle_on badge / icon",
647
957
  },
648
- // Docked Player Title section
649
958
  {
650
- section: "Docked Player Title",
651
- key: "docked_player_title",
652
- label: "Docked player content title",
653
- initial_value: true,
654
- type: "switch",
655
- label_tooltip:
656
- "Select whether you want to display the title in the docked player",
657
- rules: "all_conditions",
959
+ key: "close",
960
+ label: "Close badge",
961
+ type: "uploader",
962
+ label_tooltip: "Override default close badge / icon",
963
+ },
964
+ {
965
+ key: "lock",
966
+ label: "Lock player badge",
967
+ type: "uploader",
968
+ label_tooltip: "Override default lock player badge / icon",
969
+ },
970
+ // Modal section
971
+ {
972
+ key: "minimize",
973
+ label: "Minimize badge",
974
+ type: "uploader",
975
+ label_tooltip: "Override default minimize badge / icon",
976
+ rules: "conditional",
658
977
  conditional_fields: [
659
978
  {
660
979
  key: "styles/use_video_modal",
@@ -663,134 +982,351 @@ function getPlayerConfiguration({ platform }) {
663
982
  ],
664
983
  },
665
984
  {
666
- section: "Docked Player Title",
667
- key: "docked_player_title_font_android",
668
- label: "Android Docked player content title font",
669
- type: "android_font_selector",
670
- initial_value: "Roboto-Bold",
671
- rules: "all_conditions",
672
- label_tooltip:
673
- "Select the font for the docked player's title on Android",
985
+ key: "maximize",
986
+ label: "Maximize badge",
987
+ type: "uploader",
988
+ label_tooltip: "Override default maximize badge / icon",
989
+ rules: "conditional",
674
990
  conditional_fields: [
675
991
  {
676
992
  key: "styles/use_video_modal",
677
993
  condition_value: true,
678
994
  },
679
- {
680
- key: "styles/docked_player_title",
681
- condition_value: true,
682
- },
683
995
  ],
684
996
  },
685
997
  {
686
- section: "Docked Player Title",
687
- key: "docked_player_title_font_ios",
688
- label: "iOS Docked player content title font",
689
- type: "ios_font_selector",
690
- initial_value: "SFProText-Semibold",
691
- label_tooltip:
692
- "Select the font for the docked player's title on iOS",
693
- rules: "all_conditions",
998
+ key: "down",
999
+ label: "Down badge",
1000
+ type: "uploader",
1001
+ label_tooltip: "Override default down badge / icon",
1002
+ rules: "conditional",
694
1003
  conditional_fields: [
695
1004
  {
696
1005
  key: "styles/use_video_modal",
697
1006
  condition_value: true,
698
1007
  },
1008
+ ],
1009
+ },
1010
+ // Docked section
1011
+ {
1012
+ key: "play_mini",
1013
+ label: "Docked play badge",
1014
+ type: "uploader",
1015
+ label_tooltip: "Override default play badge / icon in docked mode",
1016
+ rules: "conditional",
1017
+ conditional_fields: [
699
1018
  {
700
- key: "styles/docked_player_title",
1019
+ key: "styles/use_video_modal",
701
1020
  condition_value: true,
702
1021
  },
703
1022
  ],
704
1023
  },
705
1024
  {
706
- section: "Docked Player Title",
707
- key: "docked_player_title_color",
708
- label: "Docked player content title color",
709
- type: "color_picker_rgba",
710
- initial_value: "rgba(255, 255, 255, 1)",
711
- label_tooltip:
712
- "Select the font color for the docked player's title",
713
- rules: "all_conditions",
1025
+ key: "pause_mini",
1026
+ label: "Docked pause badge",
1027
+ type: "uploader",
1028
+ label_tooltip: "Override default pause badge / icon in docked mode",
1029
+ rules: "conditional",
714
1030
  conditional_fields: [
715
1031
  {
716
1032
  key: "styles/use_video_modal",
717
1033
  condition_value: true,
718
1034
  },
1035
+ ],
1036
+ },
1037
+ {
1038
+ key: "close_mini",
1039
+ label: "Docked close badge",
1040
+ type: "uploader",
1041
+ label_tooltip: "Override default close badge / icon in docked mode",
1042
+ rules: "conditional",
1043
+ conditional_fields: [
719
1044
  {
720
- key: "styles/docked_player_title",
1045
+ key: "styles/use_video_modal",
721
1046
  condition_value: true,
722
1047
  },
723
1048
  ],
724
1049
  },
725
1050
  {
726
- section: "Docked Player Title",
727
- key: "docked_player_title_fontsize_android",
728
- label: "Android Docked player content title font size",
729
- type: "number_input",
730
- initial_value: 15,
1051
+ key: "stop_mini",
1052
+ label: "Docked stop badge",
1053
+ type: "uploader",
731
1054
  label_tooltip:
732
- "Select the font size for the docked player's title on Android",
733
- rules: "all_conditions",
1055
+ "Set stop badge / icon in docked mode. Docked pause badge is used if this field is empty",
1056
+ rules: "conditional",
734
1057
  conditional_fields: [
735
1058
  {
736
1059
  key: "styles/use_video_modal",
737
1060
  condition_value: true,
738
1061
  },
1062
+ ],
1063
+ },
1064
+ {
1065
+ key: "live_image",
1066
+ label: "Live badge",
1067
+ type: "uploader",
1068
+ label_tooltip: "Override default live badge / icon",
1069
+ rules: "conditional",
1070
+ conditional_fields: [
739
1071
  {
740
- key: "styles/docked_player_title",
1072
+ key: "styles/live_badge_enabled",
741
1073
  condition_value: true,
742
1074
  },
743
1075
  ],
744
1076
  },
745
1077
  {
746
- section: "Docked Player Title",
747
- key: "docked_player_title_fontsize_ios",
748
- label: "iOS Docked player content title font size",
749
- type: "number_input",
750
- initial_value: 15,
1078
+ key: "live_image_gray",
1079
+ label: "Live Badge On Rewound State",
1080
+ type: "uploader",
751
1081
  label_tooltip:
752
- "Select the font size for the docked player's title on iOS",
753
- rules: "all_conditions",
1082
+ "This badge indicates that the stream is live but currently being viewed in a rewound state.",
1083
+ rules: "conditional",
754
1084
  conditional_fields: [
755
1085
  {
756
- key: "styles/use_video_modal",
1086
+ key: "styles/live_badge_enabled",
757
1087
  condition_value: true,
758
1088
  },
1089
+ ],
1090
+ },
1091
+ {
1092
+ key: "live_width",
1093
+ label: "Live badge width",
1094
+ type: "number_input",
1095
+ label_tooltip: "Max value 230",
1096
+ initial_value: 38,
1097
+ rules: "conditional",
1098
+ conditional_fields: [
759
1099
  {
760
- key: "styles/docked_player_title",
1100
+ key: "styles/live_badge_enabled",
761
1101
  condition_value: true,
762
1102
  },
763
1103
  ],
764
1104
  },
765
1105
  {
766
- section: "Docked Player Title",
767
- key: "docked_player_title_lineheight_android",
768
- label: "Android Docked player content title line height",
1106
+ key: "live_height",
1107
+ label: "Live badge height",
769
1108
  type: "number_input",
770
- initial_value: 18,
771
- label_tooltip:
772
- "Select the line height for the docked player's title on Android",
773
- rules: "all_conditions",
1109
+ label_tooltip: "Max value 40",
1110
+ initial_value: 20,
1111
+ rules: "conditional",
774
1112
  conditional_fields: [
775
1113
  {
776
- key: "styles/use_video_modal",
1114
+ key: "styles/live_badge_enabled",
777
1115
  condition_value: true,
778
1116
  },
1117
+ ],
1118
+ },
1119
+ {
1120
+ key: "android_pip_action_icons",
1121
+ type: "uploader",
1122
+ label: "Android PiP Action items",
1123
+ label_tooltip:
1124
+ "Upload Assets Folder Zip File, expected format: pip_play, pip_pause, pip_seek_forward, pip_seek_backward",
1125
+ },
1126
+ {
1127
+ key: "speed_0_8",
1128
+ label: "Playback Speed 0.8x",
1129
+ type: "uploader",
1130
+ label_tooltip: "Playback Speed 0.8x",
1131
+ initial_value:
1132
+ "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHgAAAB4CAYAAAA5ZDbSAAAACXBIWXMAACE4AAAhOAFFljFgAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAeMSURBVHgB7Z3/Vds6FMcvnPc/yQRVJyhM8MIEhQkaJihM8MIEwAQNE0AnwJ2g6QR1J4Au0D5dfHNqUuvqShbUcb+fc3R8Elm2oq9+3msrRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMjx0qyP39/cQfZj44H175wJ8ffPjuw4rDdDqtaSAE8st8oya/tc/viraYIgL7gpr5w3/UFFaMyodrX3BL+gOIqHMf3pItvzU1eT4fUuW00ktgX1jOHz6QraA2qX04fMlCk4rI+XWUx8Ln95y2iGyBpbBu6Fe3lgN33ye+0G7pmfH55R5mQf3hLvt4W1pzlsC+sPb94TOVg1tyRc9EQXHX1D4c+Dw/0MDZpUSkW76hstzIdYvjrzunuLgsVOXDUo515HxHzZxj8CQL7LkgfQyrfDj2wVfwKfcQUx9OSC807uY/0POgCfE4RPjw2ueVe5ETOb723x2SnudTGaYGTVIXLa1BE4JnmgslPcdpBV60q/b3O6Jwb1OTYZLnr3FHgUnk7u7ucm9v74QGTGoLfh+8kP+xmriMxF8pp5Tu9mZKnHXZw71R51j748ePIxo4ZoFlYrUfiK79j7UuHxYUKDDPrHC39ybw/YN1HS4TqY+B6ImsqwdLSgueK3HX1mWDFJjWil+iVdSURq3EjUbgf5W4JaVxqcS9pXKEeopiogx9PWwSWLqhUPdcpf5IacVVINoV7Pa+BL5P7VpDXf3g7dTWFryvxH2hPLR0MypDFfiexTUNBbI+D537iQZOCYErykOr/Y4KIEuuKhB9YTSuXAS+515IG2oGgVVgp8TlmuueXWCB16ldeeRWfCdr+9/g2bysgUOtN8m7xENCX2tdzjX+MZ73SomrKY9gxfBr6j0qBIvgC4WtUizW5rjrfPggtupVK0/akpBhcc2t11//HTWtnQWqKcOL5tOxDWKReg1rC9YmJFktWMucX1M7Kog47Q8oXBkdNS11LiEkLv/Ws5hBp41M5vj8SetedyktUSrg5cY1Ti1pc2zRT9gGjwrDFaplY64ojbbNOnXcZVHcxnf82SSy4gl7QwZ6C7wtyPjFhcW26RmlsXaGXIhFz4z0VHVHlKOIyBE3p2n18lcILGPgV3raVeYw9+Gzv95FYrqQZ8pRQOSIuGw5fJkueuhIQS1JF7aSc9iefiWftaGHXYXmBx6kFZtFNog7JyPWWfS3UARnLMdcFxl/vlMBYs7+nZ2d258/f5515V8mR9xKQh6ufW7JPu0ZGZDZPHumQrP5O5ntvwvlmfM7mUzmlECJFpzb5TklrqaeSAXS3I/nvrCOQ5WTJ48yW+bZd6g1Jzn9ZTZ/GLieo+YxqEUg+cpXxmTfs1VgzSiRNOlooVWMmvozo0Alsviu14goWsEm+bAjIofK5DFNzorFKnCtxOUKrKUrYcQPPpyQ4Lt+RJ76rALRs1TnSETkTbLFZawCV0qcaT3WgeZ+LCFw0FiR6eLTliVHlIhR5F7iMiaB5QZ1IDq5Bsv4OAtEr/oaTyITuNzKo+Updx7yJpJ2Qj191ymTrI9KnGlN1mIWivDjY4nWq+GoPMkiyNp8GTnNUaJZc5MUgW+VuPfWViznBScmfny8pv5orS33gYJiQ4pR3DWOeohsFjjiW1VF24DPc4G4WntsVsyNvDRZhNx8TOSJkXUezMjjtzPlFLPAEXHbHq02jjJFTl0Haw/LnYoFJojEa935uZJ2bW5kMyFfh918X5Uf/alPXlv3dRR2+jPmV2IN4h6Svk5OFjn53STtQXCBM8rWncfJUut5rtjrpWtvT9c9HTXidt7PpzvoSDORNFp3vPThatrxDrCk56XWaeQaJ5ZHcC3irieX4tDosngxNSX4k3MEdtRYXHrN7jbgH3YQynTuGxGRNxva1BLaDn9nSHdlMfqniNtKU0TkZFOlXNRkf03gJJJZRzqd8WKgsBg1HDW9y5EEZ0hTGcVlgZaB6E5xmZhZ0682TENMli1auqRS7+RY3g9e5caLSZIrpDazToVb7qHx3Gzzoyay9amXbGeDiKw9BhOjpqZbXhrO5XNCBXE7jeyjIU9hcF77LsEqakSJttzWvWv6vYyi4rbSh0T+RAaSx+AuZMmiLX/acIbZaHKZYrGSMelm4x4Vxbv3zes4aiZOvK7dNyThPHIPcz3NfPOxtdUFH7mSJf32rmtYnSVFBG5lggtsRk93ramp8e/ysZr23LVGJk6P1532fNW0NcN39LTiPEhIfmsDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArCn66soQkXd6+EXu9muhKwlb+Z/AKYxaYNkl/TJy2mLb/hM4hdHuNtvaJT3GwrpfxzYyyhZs+BPNLo6nL/BH1S/NWAXmzVccpRHcBGabGV0XLdv7OkrH3W/B/wGnMsYx2PLW/nOkHSRjFLjP9k590g6SMQrcZzedkjvxDIIxCtxnD5Be+4cMEcyif4FZ9BaRsxPfKK1ZoxQ4YQvDNefGDdm2jrHbohcU3xv6bJr+f4Rbw9/iTVpQ8/8I63VuTb9226tpxPwPlwURv/dAZk0AAAAASUVORK5CYII=",
1133
+ },
1134
+ {
1135
+ key: "speed_1",
1136
+ label: "Playback Speed 1x",
1137
+ type: "uploader",
1138
+ label_tooltip: "Playback Speed 1x",
1139
+ initial_value:
1140
+ "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",
1141
+ },
1142
+ {
1143
+ key: "speed_1_2",
1144
+ label: "Playback Speed 1.2x",
1145
+ type: "uploader",
1146
+ label_tooltip: "Playback Speed 1.2x",
1147
+ initial_value:
1148
+ "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",
1149
+ },
1150
+ {
1151
+ key: "speed_1_5",
1152
+ label: "Playback Speed 1.5x",
1153
+ type: "uploader",
1154
+ label_tooltip: "Playback Speed 1.5x",
1155
+ initial_value:
1156
+ "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHgAAAB4CAYAAAA5ZDbSAAAACXBIWXMAACE4AAAhOAFFljFgAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAVySURBVHgB7Z2NVeQ2EMcHXgrYrSCmghwVxFdBuApuqSBQAaaCgwrgKoBUgFPBkQrOqQDSAGTmeZbbt2d9WmZl7f/3nvAi2bLX/5U8Gn2YCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAID8OKDCeHp6WvBmQYlZLpcdzZBfaCL0Rv/JoR5K5xv2kaZhxeELJYa/z9EcRZ5EYL4ZJ7y5oQlKkge7OGe2JBWYha2oF7am3VEReOOQEsHiSnX8jXYrrvArgTdGl+BMSu0mqKI3GCUwi3vBmzPK66ZWQ5GHh4e3Ly8v/1I8zzRDoptJLO4V9VZyFGyRTtJE4+t6NSTN0goey5hnsK3UdhykGdTSO6KPi0H2UVwhmZGlSDV2yTdTSktL709liO9oT0nZTGo5nO64pJhqlY72lBQCr0vtFe2eyhD/H+0pYwVuafeldhOU4C3GCNxkaLhUhvhu8x/1k9e6v3yWWuhR9ivNGIsWONMbYfJidfKHha15I2332pQB79Py5it/v1sqgNRW9K4xNt1YuDvePJDb4ybpN7z/d1uzay6UJnBliJfuwxMKz+ub9ozNln0pwRXF53fHIn/wPUA6XZ56XjlE9Utv5XFBIyhG4IDqdG1QtRp8fMx3apj5XIM0F9f7nnHcDQWggm7m0XDciiIpqQRXjvSWevepeNmOZUSJhiXHnZK9KVVRb5y5qAfiVr4iq7jNdjx3lPxOkRQjsLpGjzl84nDJ4Z76kiqcq5gth+eBY2/Fvcq9TV8tp1h5lOLOcqxVZJO4Al/X3xTJpIPu+KKNVutUvUljsV0z9T+UK8fxDZlLu/yQTgeOMYpLvZfQlOakNCMrBZeWtD/IgYphyuOnkjyluAIE3kKr+taQ7GVN+4rsEPd6rLgCBB7mH0P8wseaFjxElvFrjSFdPGlnlAAIPMyjJc17eJJDZFNtIOKuKBEQeGIcIm+TVFxhspkN743F0fE81DRyUJkSYjpZRGS+Pvloa0snF1coRmDmuyH+mvqRnyGYHAu2qtvF68j0KEqqojtD/GcKQGuCeiiNPUpRAjus5TXeHq8QshVY+m7FaaCh9jjE5O0Ry9erBKuF/GBKd3i6THn6iLsmuchZCqxfUm70hYYHj16VW0vaF5fIKq70GVeGXbrQkaIOcU21QVKRsxNYb8pqIKmxieRwUAgi8s12bSBVsp5TnuG15XhfS3idr01cMaiOKcDjFUt2vmgZSUH2UnRE5vNJ21LO6dNWXVvWPvtehzgePMRdbewr+wX5rkPIsYquItPkRyPV3jn54bsSgOTZkCch4gqhvutQchS4s6Q5rVgdLCddhqFt3yHEqPro245WC7wx5WVq53qIvKJIchT4OjLtDb5h0hd8fHBwcE9xiKDSNbgKdJLUhninEyPSrekkO4G1v3Xoi56HDGUVj9NisZCSLKM4pCT6CNXquY+WcTM1uoE4bw+VReRoB8vURlZNhuemSyyt7uSXK8/J+wh341CeH/R6NkuE5NtxaBOd44T6UZxy3VFdfmp4fdY8cpkWBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEEiW60WmRKfAyBvaZEpJpdGPGi5Le0fDNkULrG9Edc3rkZeLBM3enxPFLoS2sbC2i2bsquo5U2QJ1gnToTPjP+m84qIoVWDbOh8mrOt/zJXiqmjbnGQHled6XLOixGdw9HIHI4/NkhIF9l7uN/GxWVKiwGOWYUixMk9WlCjwmBVhxxybJbCifwArekb4rna3SZHerCIFVodFiGCXy0JeJ7tN6b7ohtyvpDsveR2qfelNajj8Rj/auR2Hvzhcld6b9D8EYh6U+B0kAAAAAABJRU5ErkJggg==",
1157
+ },
1158
+ {
1159
+ key: "speed_2",
1160
+ label: "Playback Speed 2x",
1161
+ type: "uploader",
1162
+ label_tooltip: "Playback Speed 2x",
1163
+ initial_value:
1164
+ "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",
1165
+ },
1166
+ {
1167
+ key: "sleep_timer",
1168
+ label: "Sleep Timer Default",
1169
+ type: "uploader",
1170
+ label_tooltip: "Sleep Timer Default",
1171
+ initial_value: null,
1172
+ },
1173
+ {
1174
+ key: "sleep_timer_active",
1175
+ label: "Sleep Timer Active",
1176
+ type: "uploader",
1177
+ label_tooltip: "Sleep Timer Active",
1178
+ initial_value: null,
1179
+ },
1180
+ ]
1181
+ ),
1182
+ fieldsGroup(
1183
+ "Player Content Title",
1184
+ "this section enables you to configure the styles of the content meta data displayed on top of the player",
1185
+ [
1186
+ // Title section
1187
+ {
1188
+ section: "title",
1189
+ key: "title",
1190
+ label: "Player content title",
1191
+ initial_value: true,
1192
+ type: "switch",
1193
+ label_tooltip: "Select whether you want to display title in player",
1194
+ },
1195
+ {
1196
+ section: "title",
1197
+ key: "title_font_android",
1198
+ label: "Android title font",
1199
+ type: "android_font_selector",
1200
+ initial_value: "Roboto-Bold",
1201
+ label_tooltip: "Select the font for the android player's title",
1202
+ },
1203
+ {
1204
+ section: "title",
1205
+ key: "title_font_ios",
1206
+ label: "iOS title font",
1207
+ type: "ios_font_selector",
1208
+ initial_value: "SFProText-Semibold",
1209
+ label_tooltip: "Select the font for the iOS player's title",
1210
+ },
1211
+ {
1212
+ section: "title",
1213
+ key: "title_color",
1214
+ label: "Title color",
1215
+ type: "color_picker_rgba",
1216
+ initial_value: "rgba(255, 255, 255, 1)",
1217
+ label_tooltip: "Select the font color for the player's title",
1218
+ },
1219
+ {
1220
+ section: "title",
1221
+ key: "title_fontsize_android",
1222
+ label: "Android title font size",
1223
+ type: "number_input",
1224
+ initial_value: 16,
1225
+ label_tooltip:
1226
+ "Select the font size for the android player's title",
1227
+ },
1228
+ {
1229
+ section: "title",
1230
+ key: "title_fontsize_ios",
1231
+ label: "iOS title font size",
1232
+ type: "number_input",
1233
+ initial_value: 16,
1234
+ label_tooltip: "Select the font size for the iOS player's title",
1235
+ },
1236
+ {
1237
+ section: "title",
1238
+ key: "title_lineheight_android",
1239
+ label: "Android title line height",
1240
+ type: "number_input",
1241
+ initial_value: 20,
1242
+ label_tooltip:
1243
+ "Select the line height for the android player's title",
1244
+ },
1245
+ {
1246
+ section: "title",
1247
+ key: "title_lineheight_ios",
1248
+ label: "iOS title line height",
1249
+ type: "number_input",
1250
+ initial_value: 20,
1251
+ label_tooltip: "Select the line height for the iOS player's title",
1252
+ },
1253
+ {
1254
+ section: "title",
1255
+ key: "title_letterspacing_android",
1256
+ label: "Android title letter spacing",
1257
+ type: "number_input",
1258
+ initial_value: 0,
1259
+ label_tooltip:
1260
+ "Select the letter spacing for the android player's title",
1261
+ },
1262
+ {
1263
+ section: "title",
1264
+ key: "title_letterspacing_ios",
1265
+ label: "iOS title letter spacing",
1266
+ type: "number_input",
1267
+ initial_value: -0.4,
1268
+ label_tooltip:
1269
+ "Select the letter spacing for the iOS player's title",
1270
+ },
1271
+ {
1272
+ section: "title",
1273
+ key: "title_margin_bottom",
1274
+ label: "Title margin bottom",
1275
+ type: "number_input",
1276
+ initial_value: 2,
1277
+ label_tooltip: "Select the margin bottom for the player's title",
1278
+ },
1279
+ {
1280
+ section: "title",
1281
+ key: "title_text_transform",
1282
+ label: "Title Text Transform",
1283
+ type: "select",
1284
+ initial_value: "default",
1285
+ options: [
1286
+ {
1287
+ text: "Default",
1288
+ value: "default",
1289
+ },
779
1290
  {
780
- key: "styles/docked_player_title",
781
- condition_value: true,
1291
+ text: "Uppercase",
1292
+ value: "uppercase",
1293
+ },
1294
+ {
1295
+ text: "Lowercase",
1296
+ value: "lowercase",
1297
+ },
1298
+ {
1299
+ text: "Capitalize",
1300
+ value: "capitalize",
782
1301
  },
783
1302
  ],
784
1303
  },
1304
+ // Docked Player Title section
785
1305
  {
786
1306
  section: "Docked Player Title",
787
- key: "docked_player_title_lineheight_ios",
788
- label: "iOS Docked player content title line height",
789
- type: "number_input",
790
- initial_value: 18,
1307
+ key: "docked_player_title",
1308
+ label: "Docked player content title",
1309
+ initial_value: true,
1310
+ type: "switch",
791
1311
  label_tooltip:
792
- "Select the line height for the docked player's title on iOS",
1312
+ "Select whether you want to display the title in the docked player",
793
1313
  rules: "all_conditions",
1314
+ conditional_fields: [
1315
+ {
1316
+ key: "styles/use_video_modal",
1317
+ condition_value: true,
1318
+ },
1319
+ ],
1320
+ },
1321
+ {
1322
+ section: "Docked Player Title",
1323
+ key: "docked_player_title_font_android",
1324
+ label: "Android Docked player content title font",
1325
+ type: "android_font_selector",
1326
+ initial_value: "Roboto-Bold",
1327
+ rules: "all_conditions",
1328
+ label_tooltip:
1329
+ "Select the font for the docked player's title on Android",
794
1330
  conditional_fields: [
795
1331
  {
796
1332
  key: "styles/use_video_modal",
@@ -804,12 +1340,12 @@ function getPlayerConfiguration({ platform }) {
804
1340
  },
805
1341
  {
806
1342
  section: "Docked Player Title",
807
- key: "docked_player_title_letterspacing_android",
808
- label: "Android Docked player content title letter spacing",
809
- type: "number_input",
810
- initial_value: 0,
1343
+ key: "docked_player_title_font_ios",
1344
+ label: "iOS Docked player content title font",
1345
+ type: "ios_font_selector",
1346
+ initial_value: "SFProText-Semibold",
811
1347
  label_tooltip:
812
- "Select the letter spacing for the docked player's title on Android",
1348
+ "Select the font for the docked player's title on iOS",
813
1349
  rules: "all_conditions",
814
1350
  conditional_fields: [
815
1351
  {
@@ -824,12 +1360,12 @@ function getPlayerConfiguration({ platform }) {
824
1360
  },
825
1361
  {
826
1362
  section: "Docked Player Title",
827
- key: "docked_player_title_letterspacing_ios",
828
- label: "iOS Docked player content title letter spacing",
829
- type: "number_input",
830
- initial_value: -0.2,
1363
+ key: "docked_player_title_color",
1364
+ label: "Docked player content title color",
1365
+ type: "color_picker_rgba",
1366
+ initial_value: "rgba(255, 255, 255, 1)",
831
1367
  label_tooltip:
832
- "Select the letter spacing for the docked player's title on iOS",
1368
+ "Select the font color for the docked player's title",
833
1369
  rules: "all_conditions",
834
1370
  conditional_fields: [
835
1371
  {
@@ -844,12 +1380,12 @@ function getPlayerConfiguration({ platform }) {
844
1380
  },
845
1381
  {
846
1382
  section: "Docked Player Title",
847
- key: "docked_player_title_margin_bottom",
848
- label: "Docked player content title margin bottom",
1383
+ key: "docked_player_title_fontsize_android",
1384
+ label: "Android Docked player content title font size",
849
1385
  type: "number_input",
850
- initial_value: 0,
1386
+ initial_value: 15,
851
1387
  label_tooltip:
852
- "Select the margin bottom for the docked player's title",
1388
+ "Select the font size for the docked player's title on Android",
853
1389
  rules: "all_conditions",
854
1390
  conditional_fields: [
855
1391
  {
@@ -864,12 +1400,12 @@ function getPlayerConfiguration({ platform }) {
864
1400
  },
865
1401
  {
866
1402
  section: "Docked Player Title",
867
- key: "docked_player_title_number_of_lines",
868
- label: "Docked player content title number of lines",
1403
+ key: "docked_player_title_fontsize_ios",
1404
+ label: "iOS Docked player content title font size",
869
1405
  type: "number_input",
870
- initial_value: 1,
1406
+ initial_value: 15,
871
1407
  label_tooltip:
872
- "Select the number of lines for the docked player's title (maximum of 2 if subtitle is turned off)",
1408
+ "Select the font size for the docked player's title on iOS",
873
1409
  rules: "all_conditions",
874
1410
  conditional_fields: [
875
1411
  {
@@ -884,29 +1420,149 @@ function getPlayerConfiguration({ platform }) {
884
1420
  },
885
1421
  {
886
1422
  section: "Docked Player Title",
887
- key: "docked_player_title_text_transform",
888
- label: "Docked player content title Text Transform",
889
- type: "select",
1423
+ key: "docked_player_title_lineheight_android",
1424
+ label: "Android Docked player content title line height",
1425
+ type: "number_input",
1426
+ initial_value: 18,
1427
+ label_tooltip:
1428
+ "Select the line height for the docked player's title on Android",
890
1429
  rules: "all_conditions",
891
- initial_value: "default",
892
- options: [
893
- {
894
- text: "Default",
895
- value: "default",
896
- },
897
- {
898
- text: "Uppercase",
899
- value: "uppercase",
900
- },
901
- {
902
- text: "Lowercase",
903
- value: "lowercase",
904
- },
905
- {
906
- text: "Capitalize",
907
- value: "capitalize",
908
- },
909
- ],
1430
+ conditional_fields: [
1431
+ {
1432
+ key: "styles/use_video_modal",
1433
+ condition_value: true,
1434
+ },
1435
+ {
1436
+ key: "styles/docked_player_title",
1437
+ condition_value: true,
1438
+ },
1439
+ ],
1440
+ },
1441
+ {
1442
+ section: "Docked Player Title",
1443
+ key: "docked_player_title_lineheight_ios",
1444
+ label: "iOS Docked player content title line height",
1445
+ type: "number_input",
1446
+ initial_value: 18,
1447
+ label_tooltip:
1448
+ "Select the line height for the docked player's title on iOS",
1449
+ rules: "all_conditions",
1450
+ conditional_fields: [
1451
+ {
1452
+ key: "styles/use_video_modal",
1453
+ condition_value: true,
1454
+ },
1455
+ {
1456
+ key: "styles/docked_player_title",
1457
+ condition_value: true,
1458
+ },
1459
+ ],
1460
+ },
1461
+ {
1462
+ section: "Docked Player Title",
1463
+ key: "docked_player_title_letterspacing_android",
1464
+ label: "Android Docked player content title letter spacing",
1465
+ type: "number_input",
1466
+ initial_value: 0,
1467
+ label_tooltip:
1468
+ "Select the letter spacing for the docked player's title on Android",
1469
+ rules: "all_conditions",
1470
+ conditional_fields: [
1471
+ {
1472
+ key: "styles/use_video_modal",
1473
+ condition_value: true,
1474
+ },
1475
+ {
1476
+ key: "styles/docked_player_title",
1477
+ condition_value: true,
1478
+ },
1479
+ ],
1480
+ },
1481
+ {
1482
+ section: "Docked Player Title",
1483
+ key: "docked_player_title_letterspacing_ios",
1484
+ label: "iOS Docked player content title letter spacing",
1485
+ type: "number_input",
1486
+ initial_value: -0.2,
1487
+ label_tooltip:
1488
+ "Select the letter spacing for the docked player's title on iOS",
1489
+ rules: "all_conditions",
1490
+ conditional_fields: [
1491
+ {
1492
+ key: "styles/use_video_modal",
1493
+ condition_value: true,
1494
+ },
1495
+ {
1496
+ key: "styles/docked_player_title",
1497
+ condition_value: true,
1498
+ },
1499
+ ],
1500
+ },
1501
+ {
1502
+ section: "Docked Player Title",
1503
+ key: "docked_player_title_margin_bottom",
1504
+ label: "Docked player content title margin bottom",
1505
+ type: "number_input",
1506
+ initial_value: 0,
1507
+ label_tooltip:
1508
+ "Select the margin bottom for the docked player's title",
1509
+ rules: "all_conditions",
1510
+ conditional_fields: [
1511
+ {
1512
+ key: "styles/use_video_modal",
1513
+ condition_value: true,
1514
+ },
1515
+ {
1516
+ key: "styles/docked_player_title",
1517
+ condition_value: true,
1518
+ },
1519
+ ],
1520
+ },
1521
+ {
1522
+ section: "Docked Player Title",
1523
+ key: "docked_player_title_number_of_lines",
1524
+ label: "Docked player content title number of lines",
1525
+ type: "number_input",
1526
+ initial_value: 1,
1527
+ label_tooltip:
1528
+ "Select the number of lines for the docked player's title (maximum of 2 if subtitle is turned off)",
1529
+ rules: "all_conditions",
1530
+ conditional_fields: [
1531
+ {
1532
+ key: "styles/use_video_modal",
1533
+ condition_value: true,
1534
+ },
1535
+ {
1536
+ key: "styles/docked_player_title",
1537
+ condition_value: true,
1538
+ },
1539
+ ],
1540
+ },
1541
+ {
1542
+ section: "Docked Player Title",
1543
+ key: "docked_player_title_text_transform",
1544
+ label: "Docked player content title Text Transform",
1545
+ type: "select",
1546
+ rules: "all_conditions",
1547
+ initial_value: "default",
1548
+ options: [
1549
+ {
1550
+ text: "Default",
1551
+ value: "default",
1552
+ },
1553
+ {
1554
+ text: "Uppercase",
1555
+ value: "uppercase",
1556
+ },
1557
+ {
1558
+ text: "Lowercase",
1559
+ value: "lowercase",
1560
+ },
1561
+ {
1562
+ text: "Capitalize",
1563
+ value: "capitalize",
1564
+ },
1565
+ ],
910
1566
  conditional_fields: [
911
1567
  {
912
1568
  key: "styles/use_video_modal",
@@ -920,6 +1576,15 @@ function getPlayerConfiguration({ platform }) {
920
1576
  },
921
1577
  ]
922
1578
  ),
1579
+ // Captions Menu for Mobile
1580
+ fieldsGroup("Captions - Overlay", "Captions overlay styles", [
1581
+ {
1582
+ type: "switch",
1583
+ label: "Disable captions overlay",
1584
+ key: "disable_captions",
1585
+ initial_value: false,
1586
+ },
1587
+ ]),
923
1588
  fieldsGroup(
924
1589
  "Player Content Subtitle",
925
1590
  "this section enables you to configure the styles of the content meta data displayed on top of the player",
@@ -1300,7 +1965,7 @@ function getPlayerConfiguration({ platform }) {
1300
1965
  key: "scrub_color",
1301
1966
  label: "Scrub font color",
1302
1967
  type: "color_picker_rgba",
1303
- initial_value: "rgba(255, 255, 255, 1)",
1968
+ initial_value: "rgba(239, 239, 239, 1)", // #EFEFEF
1304
1969
  label_tooltip:
1305
1970
  "Select the font color for the player's scrub / progress bar",
1306
1971
  },
@@ -1309,7 +1974,7 @@ function getPlayerConfiguration({ platform }) {
1309
1974
  key: "scrub_color_duration_inline",
1310
1975
  label: "Scrub total duration font color (inline player)",
1311
1976
  type: "color_picker_rgba",
1312
- initial_value: "rgba(255, 255, 255, 0.65)",
1977
+ initial_value: "rgba(239, 239, 239, 0.65)", // #EFEFEF
1313
1978
  label_tooltip:
1314
1979
  "Select the font color for the player's progress bar total duration label in inline mode",
1315
1980
  conditional_fields: [
@@ -1324,7 +1989,7 @@ function getPlayerConfiguration({ platform }) {
1324
1989
  key: "scrub_fontsize_android",
1325
1990
  label: "Android scrub font size",
1326
1991
  type: "number_input",
1327
- initial_value: 13,
1992
+ initial_value: 12,
1328
1993
  label_tooltip:
1329
1994
  "Select the font size for the android player's scrub / progress bar",
1330
1995
  },
@@ -1333,7 +1998,7 @@ function getPlayerConfiguration({ platform }) {
1333
1998
  key: "scrub_fontsize_ios",
1334
1999
  label: "iOS scrub font size",
1335
2000
  type: "number_input",
1336
- initial_value: 13,
2001
+ initial_value: 12,
1337
2002
  label_tooltip:
1338
2003
  "Select the font size for the iOS player's scrub / progress bar",
1339
2004
  },
@@ -1342,7 +2007,7 @@ function getPlayerConfiguration({ platform }) {
1342
2007
  key: "scrub_lineheight_android",
1343
2008
  label: "Android scrub line height",
1344
2009
  type: "number_input",
1345
- initial_value: 16,
2010
+ initial_value: 20,
1346
2011
  label_tooltip:
1347
2012
  "Select the line height for the android player's scrub / progress bar",
1348
2013
  },
@@ -1351,7 +2016,7 @@ function getPlayerConfiguration({ platform }) {
1351
2016
  key: "scrub_lineheight_ios",
1352
2017
  label: "iOS scrub line height",
1353
2018
  type: "number_input",
1354
- initial_value: 16,
2019
+ initial_value: 20,
1355
2020
  label_tooltip:
1356
2021
  "Select the line height for the iOS player's scrub / progress bar",
1357
2022
  },
@@ -1360,7 +2025,7 @@ function getPlayerConfiguration({ platform }) {
1360
2025
  key: "scrub_letterspacing_android",
1361
2026
  label: "Android scrub letter spacing",
1362
2027
  type: "number_input",
1363
- initial_value: 0,
2028
+ initial_value: -0.4,
1364
2029
  label_tooltip:
1365
2030
  "Select the letter spacing for the android player's scrub / progress bar",
1366
2031
  },
@@ -1369,7 +2034,7 @@ function getPlayerConfiguration({ platform }) {
1369
2034
  key: "scrub_letterspacing_ios",
1370
2035
  label: "iOS scrub letter spacing",
1371
2036
  type: "number_input",
1372
- initial_value: 0,
2037
+ initial_value: -0.4,
1373
2038
  label_tooltip:
1374
2039
  "Select the letter spacing for the iOS player's scrub / progress bar",
1375
2040
  },
@@ -1448,7 +2113,7 @@ function getPlayerConfiguration({ platform }) {
1448
2113
  },
1449
2114
  {
1450
2115
  key: "lock_controls_when_player_opens",
1451
- label: "Lock controls when player opens",
2116
+ label: "Lock controls each time the player opens",
1452
2117
  initial_value: false,
1453
2118
  type: "switch",
1454
2119
  label_tooltip:
@@ -1563,1009 +2228,1531 @@ function getPlayerConfiguration({ platform }) {
1563
2228
  "this section enables you to configure the styles of the content meta data displayed on top of the player",
1564
2229
  [
1565
2230
  {
1566
- section: "extra_info_text",
1567
- key: "extra_info_text_font_android",
1568
- label: "Android extra info text font",
1569
- type: "android_font_selector",
1570
- initial_value: "Roboto-Regular",
2231
+ section: "extra_info_text",
2232
+ key: "extra_info_text_font_android",
2233
+ label: "Android extra info text font",
2234
+ type: "android_font_selector",
2235
+ initial_value: "Roboto-Regular",
2236
+ label_tooltip:
2237
+ "Select the font for the android player's extra info text",
2238
+ },
2239
+ {
2240
+ section: "extra_info_text",
2241
+ key: "extra_info_text_font_ios",
2242
+ label: "iOS extra info text font",
2243
+ type: "ios_font_selector",
2244
+ initial_value: "SFProText-Regular",
2245
+ label_tooltip:
2246
+ "Select the font for the iOS player's extra info text",
2247
+ },
2248
+ {
2249
+ section: "extra_info_text",
2250
+ key: "extra_info_text_color",
2251
+ label: "Extra info text color",
2252
+ type: "color_picker_rgba",
2253
+ initial_value: "rgba(255, 255, 255, 1)",
2254
+ label_tooltip:
2255
+ "Select the font color for the player's extra info text",
2256
+ },
2257
+ {
2258
+ section: "extra_info_text",
2259
+ key: "extra_info_text_fontsize_android",
2260
+ label: "Android extra info text font size",
2261
+ type: "number_input",
2262
+ initial_value: 13,
2263
+ label_tooltip:
2264
+ "Select the font size for the android player's extra info text",
2265
+ },
2266
+ {
2267
+ section: "extra_info_text",
2268
+ key: "extra_info_text_fontsize_ios",
2269
+ label: "iOS extra info text font size",
2270
+ type: "number_input",
2271
+ initial_value: 13,
2272
+ label_tooltip:
2273
+ "Select the font size for the iOS player's extra info text",
2274
+ },
2275
+ {
2276
+ section: "extra_info_text",
2277
+ key: "extra_info_text_lineheight_android",
2278
+ label: "Android extra info text line height",
2279
+ type: "number_input",
2280
+ initial_value: 15,
2281
+ label_tooltip:
2282
+ "Select the line height for the android player's extra info text",
2283
+ },
2284
+ {
2285
+ section: "extra_info_text",
2286
+ key: "extra_info_text_lineheight_ios",
2287
+ label: "iOS extra info text line height",
2288
+ type: "number_input",
2289
+ initial_value: 15,
2290
+ label_tooltip:
2291
+ "Select the line height for the iOS player's extra info text",
2292
+ },
2293
+ {
2294
+ section: "extra_info_text",
2295
+ key: "extra_info_text_letterspacing_android",
2296
+ label: "Android extra info text letter spacing",
2297
+ type: "number_input",
2298
+ initial_value: 0,
2299
+ label_tooltip:
2300
+ "Select the letter spacing for the android player's extra info text",
2301
+ },
2302
+ {
2303
+ section: "extra_info_text",
2304
+ key: "extra_info_text_letterspacing_ios",
2305
+ label: "iOS extra info text letter spacing",
2306
+ type: "number_input",
2307
+ initial_value: -0.2,
2308
+ label_tooltip:
2309
+ "Select the letter spacing for the iOS player's extra info text",
2310
+ },
2311
+ ]
2312
+ )
2313
+ );
2314
+ }
2315
+
2316
+ compact([
2317
+ {
2318
+ key: "liveCatchUpEnabled",
2319
+ label: "Live Catch Up",
2320
+ initial_value: true,
2321
+ type: "switch",
2322
+ label_tooltip:
2323
+ "Seek to current live edge position after resuming from pause",
2324
+ },
2325
+ mobileOnly(platform, {
2326
+ type: "number_input",
2327
+ label_tooltip:
2328
+ "Interval for updating live audio metadata, including the title and subtitle",
2329
+ label: "Live Audio player info update interval",
2330
+ key: "audio_live_player_update_interval",
2331
+ initial_value: 60,
2332
+ }),
2333
+ ]).forEach((field) => {
2334
+ general.fields.push(field);
2335
+ });
2336
+
2337
+ if (isMobile(platform)) {
2338
+ general.fields.push(
2339
+ fieldsGroup("Always Show Scrub Bar & Timestamp", "", [
2340
+ {
2341
+ key: "always_show_scrub_bar_and_timestamp",
2342
+ label: "Always Show Scrub Bar & Timestamp",
2343
+ initial_value: false,
2344
+ type: "switch",
2345
+ label_tooltip:
2346
+ "When enabled, progress bar will always appear while playing in full screen. otherwise, progress bar will appear only when tapping and revealing all controllers",
2347
+ },
2348
+ ]),
2349
+ fieldsGroup(
2350
+ "Audio Tracks",
2351
+ "This section allows you to configure default audio track behavior for videos with multiple audio tracks",
2352
+ audioTracksSettings
2353
+ ),
2354
+ fieldsGroup("Legacy configuration", "", audioPlayer)
2355
+ );
2356
+ }
2357
+
2358
+ // ---- Web Platforms fields ---- //
2359
+
2360
+ if (
2361
+ platform.includes("lg") ||
2362
+ platform.includes("samsung") ||
2363
+ platform.includes("android_tv") ||
2364
+ platform.includes("amazon") ||
2365
+ platform.includes("vizio")
2366
+ ) {
2367
+ styles.fields.push(
2368
+ // Captions Menu for TV
2369
+ fieldsGroup("Captions - Overlay", "Captions overlay styles", [
2370
+ {
2371
+ type: "switch",
2372
+ label: "Disable captions overlay",
2373
+ key: "disable_captions",
2374
+ initial_value: false,
2375
+ },
2376
+ {
2377
+ type: "color_picker_rgba",
2378
+ label: "Video Overlay",
2379
+ key: "overlay_color",
2380
+ initial_value: "rgba(17, 17, 17, 0.5)",
2381
+ },
2382
+ ]),
2383
+ // Captions Menu - Close
2384
+ fieldsGroup("Captions - Menu Close Button", "Close Button Styles", [
2385
+ {
2386
+ type: "color_picker_rgba",
2387
+ label: "Background Color",
2388
+ key: "close_background_color",
2389
+ initial_value: "rgba(30, 30, 30, 1)",
2390
+ },
2391
+ {
2392
+ type: "color_picker_rgba",
2393
+ label: "Focus Border Color",
2394
+ key: "close_focus_border_color",
2395
+ initial_value: "rgba(239, 239, 239, 1)",
2396
+ },
2397
+ {
2398
+ type: "color_picker_rgba",
2399
+ label: "Icon Color",
2400
+ key: "close_icon_color",
2401
+ initial_value: "rgba(239, 239, 239, 1)",
2402
+ },
2403
+ {
2404
+ type: "number_input",
2405
+ label: "Border Thickness",
2406
+ key: "close_border_thickness",
2407
+ initial_value: 4,
2408
+ },
2409
+ ]),
2410
+ // Captions Menu - Styles
2411
+ fieldsGroup("Captions - Menu", "Captions Menu Styles", [
2412
+ {
2413
+ type: "color_picker_rgba",
2414
+ label: "Background Color",
2415
+ key: "menu_background_color",
2416
+ initial_value: "rgba(30, 30, 30, 1)",
2417
+ },
2418
+ {
2419
+ type: "color_picker_rgba",
2420
+ label: "Top Gradient - Start",
2421
+ key: "menu_top_gradient_start_color",
2422
+ initial_value: "rgba(30, 30, 30, 1)",
2423
+ },
2424
+ {
2425
+ type: "color_picker_rgba",
2426
+ label: "Top Gradient - End",
2427
+ key: "menu_top_gradient_end_color",
2428
+ initial_value: "rgba(30, 30, 30, 0)",
2429
+ },
2430
+ {
2431
+ type: "color_picker_rgba",
2432
+ label: "Bottom Gradient - Start",
2433
+ key: "menu_bottom_gradient_start_color",
2434
+ initial_value: "rgba(30, 30, 30, 1)",
2435
+ },
2436
+ {
2437
+ type: "color_picker_rgba",
2438
+ label: "Bottom Gradient - End",
2439
+ key: "menu_bottom_gradient_end_color",
2440
+ initial_value: "rgba(30, 30, 30, 0)",
2441
+ },
2442
+ ]),
2443
+ // Captions Menu - Header Text Label
2444
+ fieldsGroup(
2445
+ "Captions - Menu Header Text",
2446
+ "Captions Menu Header Text Label Styles",
2447
+ [
2448
+ {
2449
+ type: "color_picker_rgba",
2450
+ label: "Font Color",
2451
+ key: "menu_header_font_color",
2452
+ initial_value: "rgba(239, 239, 239, 1)",
2453
+ },
2454
+ {
2455
+ type: "lg_font_selector",
2456
+ label: "LG Font Family",
2457
+ key: "menu_header_lg_font_family",
2458
+ initial_value: "Ubuntu-Bold",
2459
+ },
2460
+ {
2461
+ type: "number_input",
2462
+ label: "LG Font Size",
2463
+ key: "menu_header_lg_font_size",
2464
+ initial_value: 30,
2465
+ },
2466
+ {
2467
+ type: "number_input",
2468
+ label: "LG Line Height",
2469
+ key: "menu_header_lg_line_height",
2470
+ initial_value: 60,
2471
+ },
2472
+ {
2473
+ type: "number_input",
2474
+ label: "LG Letter Spacing",
2475
+ key: "menu_header_lg_letter_spacing",
2476
+ initial_value: 0,
2477
+ },
2478
+ {
2479
+ type: "samsung_font_selector",
2480
+ label: "Samsung Font Family",
2481
+ key: "menu_header_samsung_font_family",
2482
+ initial_value: "Ubuntu-Bold",
2483
+ },
2484
+ {
2485
+ type: "number_input",
2486
+ label: "Samsung Font Size",
2487
+ key: "menu_header_samsung_font_size",
2488
+ initial_value: 30,
2489
+ },
2490
+ {
2491
+ type: "number_input",
2492
+ label: "Samsung Line Height",
2493
+ key: "menu_header_samsung_line_height",
2494
+ initial_value: 60,
2495
+ },
2496
+ {
2497
+ type: "number_input",
2498
+ label: "Samsung Letter Spacing",
2499
+ key: "menu_header_samsung_letter_spacing",
2500
+ initial_value: 0,
2501
+ },
2502
+ {
2503
+ type: "vizio_font_selector",
2504
+ label: "Vizio Font Family",
2505
+ key: "menu_header_vizio_font_family",
2506
+ initial_value: "Ubuntu-Bold",
2507
+ },
2508
+ {
2509
+ type: "number_input",
2510
+ label: "Vizio Font Size",
2511
+ key: "menu_header_vizio_font_size",
2512
+ initial_value: 30,
2513
+ },
2514
+ {
2515
+ type: "number_input",
2516
+ label: "Vizio Line Height",
2517
+ key: "menu_header_vizio_line_height",
2518
+ initial_value: 60,
2519
+ },
2520
+ {
2521
+ type: "number_input",
2522
+ label: "Vizio Letter Spacing",
2523
+ key: "menu_header_vizio_letter_spacing",
2524
+ initial_value: 0,
2525
+ },
2526
+ ]
2527
+ ),
2528
+ // Captions Menu - Item Text Label
2529
+ fieldsGroup(
2530
+ "Captions - Item Text",
2531
+ "Captions Menu Item Text Label Styles",
2532
+ [
2533
+ {
2534
+ type: "color_picker_rgba",
2535
+ label: "Font Color - Default",
2536
+ key: "menu_item_default_font_color",
2537
+ initial_value: "rgba(239, 239, 239, 0.5)",
2538
+ },
2539
+ {
2540
+ type: "color_picker_rgba",
2541
+ label: "Font Color - Focused",
2542
+ key: "menu_item_focused_font_color",
2543
+ initial_value: "rgba(239, 239, 239, 1)",
2544
+ },
2545
+ {
2546
+ type: "color_picker_rgba",
2547
+ label: "Font Color - Selected",
2548
+ key: "menu_item_selected_font_color",
2549
+ initial_value: "rgba(239, 239, 239, 1)",
2550
+ },
2551
+ {
2552
+ type: "color_picker_rgba",
2553
+ label: "Font Color - Focused & Selected",
2554
+ key: "menu_item_select_focused_font_color",
2555
+ initial_value: "rgba(239, 239, 239, 1)",
2556
+ },
2557
+ {
2558
+ type: "lg_font_selector",
2559
+ label: "LG Font Family",
2560
+ key: "menu_item_lg_font_family",
2561
+ initial_value: "Ubuntu-Medium",
2562
+ },
2563
+ {
2564
+ type: "number_input",
2565
+ label: "LG Font Size",
2566
+ key: "menu_item_lg_font_size",
2567
+ initial_value: 25,
2568
+ },
2569
+ {
2570
+ type: "number_input",
2571
+ label: "LG Line Height",
2572
+ key: "menu_item_lg_line_height",
2573
+ initial_value: 40,
2574
+ },
2575
+ {
2576
+ type: "number_input",
2577
+ label: "LG Letter Spacing",
2578
+ key: "menu_item_lg_letter_spacing",
2579
+ initial_value: 0,
2580
+ },
2581
+ {
2582
+ type: "samsung_font_selector",
2583
+ label: "Samsung Font Family",
2584
+ key: "menu_item_samsung_font_family",
2585
+ initial_value: "Ubuntu-Medium",
2586
+ },
2587
+ {
2588
+ type: "number_input",
2589
+ label: "Samsung Font Size",
2590
+ key: "menu_item_samsung_font_size",
2591
+ initial_value: 25,
2592
+ },
2593
+ {
2594
+ type: "number_input",
2595
+ label: "Samsung Line Height",
2596
+ key: "menu_item_samsung_line_height",
2597
+ initial_value: 40,
2598
+ },
2599
+ {
2600
+ type: "number_input",
2601
+ label: "Samsung Letter Spacing",
2602
+ key: "menu_item_samsung_letter_spacing",
2603
+ initial_value: 0,
2604
+ },
2605
+ {
2606
+ type: "vizio_font_selector",
2607
+ label: "Vizio Font Family",
2608
+ key: "menu_item_vizio_font_family",
2609
+ initial_value: "Ubuntu-Medium",
2610
+ },
2611
+ {
2612
+ type: "number_input",
2613
+ label: "Vizio Font Size",
2614
+ key: "menu_item_vizio_font_size",
2615
+ initial_value: 25,
2616
+ },
2617
+ {
2618
+ type: "number_input",
2619
+ label: "Vizio Line Height",
2620
+ key: "menu_item_vizio_line_height",
2621
+ initial_value: 40,
2622
+ },
2623
+ {
2624
+ type: "number_input",
2625
+ label: "Vizio Letter Spacing",
2626
+ key: "menu_item_vizio_letter_spacing",
2627
+ initial_value: 0,
2628
+ },
2629
+ ]
2630
+ ),
2631
+ // Captions Menu - Item Border
2632
+ fieldsGroup(
2633
+ "Captions - Item Border",
2634
+ "Captions Menu Item Border Styles",
2635
+ [
2636
+ {
2637
+ type: "color_picker_rgba",
2638
+ label: "Border Color - Default",
2639
+ key: "menu_item_border_default_color",
2640
+ initial_value: "rgba(0, 0, 0, 0)",
2641
+ },
2642
+ {
2643
+ type: "color_picker_rgba",
2644
+ label: "Border Color - Focused",
2645
+ key: "menu_item_border_focused_color",
2646
+ initial_value: "rgba(239, 239, 239, 1)",
2647
+ },
2648
+ {
2649
+ type: "color_picker_rgba",
2650
+ label: "Border Color - Selected",
2651
+ key: "menu_item_border_selected_color",
2652
+ initial_value: "rgba(239, 239, 239, 1)",
2653
+ },
2654
+ {
2655
+ type: "color_picker_rgba",
2656
+ label: "Border Color - Focused & Selected",
2657
+ key: "menu_item_border_select_focused_color",
2658
+ initial_value: "rgba(239, 239, 239, 1)",
2659
+ },
2660
+ {
2661
+ type: "number_input",
2662
+ label: "Border Corner Radius",
2663
+ key: "menu_item_border_radius",
2664
+ initial_value: 5,
2665
+ },
2666
+ {
2667
+ type: "number_input",
2668
+ label: "Border Thickness",
2669
+ key: "menu_item_border_thickness",
2670
+ initial_value: 4,
2671
+ },
2672
+ ]
2673
+ ),
2674
+ // Captions Menu - Item Tick Icon
2675
+ fieldsGroup(
2676
+ "Captions - Item Tick Icon",
2677
+ "Captions Menu Item Tick Icon Styles",
2678
+ [
2679
+ {
2680
+ type: "color_picker_rgba",
2681
+ label: "Color",
2682
+ key: "menu_item_tick_color",
2683
+ initial_value: "rgba(239, 239, 239, 1)",
2684
+ },
2685
+ ]
2686
+ )
2687
+ );
2688
+ }
2689
+
2690
+ // ---- TV fields ---- //
2691
+
2692
+ if (isTV(platform)) {
2693
+ styles.fields.push(
2694
+ fieldsGroup("Component Styles", "Component Styles", [
2695
+ {
2696
+ type: "number_input",
2697
+ label: "TV component container height",
2698
+ key: "tv_component_container_height",
2699
+ label_tooltip: "TV component container height in px",
2700
+ initial_value: 400,
2701
+ },
2702
+ ]),
2703
+ // Scrub colors
2704
+ fieldsGroup(
2705
+ "Scrub bar",
2706
+ "This section allows you to configure the styling of the scrub bar",
2707
+ [
2708
+ {
2709
+ section: "scrub",
2710
+ key: "scrub_total",
2711
+ label: "Scrub bar color",
2712
+ type: "color_picker_rgba",
2713
+ initial_value: "rgba(239, 239, 239, 0.35)",
2714
+ label_tooltip:
2715
+ "Select the bar color for the player's scrub / progress bar",
2716
+ },
2717
+ {
2718
+ section: "scrub",
2719
+ key: "scrub_buffer",
2720
+ label: "Scrub bar buffer color",
2721
+ type: "color_picker_rgba",
2722
+ initial_value: "rgba(239, 239, 239, 0.65)",
1571
2723
  label_tooltip:
1572
- "Select the font for the android player's extra info text",
2724
+ "Select the buffer bar color for the player's scrub / progress bar",
1573
2725
  },
1574
2726
  {
1575
- section: "extra_info_text",
1576
- key: "extra_info_text_font_ios",
1577
- label: "iOS extra info text font",
1578
- type: "ios_font_selector",
1579
- initial_value: "SFProText-Regular",
2727
+ section: "scrub",
2728
+ key: "scrub_progress",
2729
+ label: "Scrub bar progress color",
2730
+ type: "color_picker_rgba",
2731
+ initial_value: "rgba(254, 20, 72, 1)",
1580
2732
  label_tooltip:
1581
- "Select the font for the iOS player's extra info text",
2733
+ "Select the progress bar color for the player's scrub / progress bar",
1582
2734
  },
1583
2735
  {
1584
- section: "extra_info_text",
1585
- key: "extra_info_text_color",
1586
- label: "Extra info text color",
2736
+ section: "scrub",
2737
+ key: "scrub_handle",
2738
+ label: "Scrub bar handle color",
1587
2739
  type: "color_picker_rgba",
1588
- initial_value: "rgba(255, 255, 255, 1)",
2740
+ initial_value: "rgba(239, 239, 239, 1)",
1589
2741
  label_tooltip:
1590
- "Select the font color for the player's extra info text",
2742
+ "Select the bar handle / marker color for the player's scrub / progress bar",
2743
+ },
2744
+ ]
2745
+ ),
2746
+ // Video Player Title Text
2747
+ fieldsGroup(
2748
+ "Video Player - Title Text",
2749
+ "Video Player Title Text Label Styles",
2750
+ [
2751
+ {
2752
+ key: "player_title_color",
2753
+ label: "Font color",
2754
+ type: "color_picker_rgba",
2755
+ initial_value: "rgba(239, 239, 239, 1)",
2756
+ },
2757
+ {
2758
+ type: "lg_tv_font_selector",
2759
+ label: "LG Font Family",
2760
+ key: "lg_tv_video_player_title_font_family",
2761
+ initial_value: "Ubuntu-Bold",
1591
2762
  },
1592
2763
  {
1593
- section: "extra_info_text",
1594
- key: "extra_info_text_fontsize_android",
1595
- label: "Android extra info text font size",
1596
2764
  type: "number_input",
1597
- initial_value: 13,
1598
- label_tooltip:
1599
- "Select the font size for the android player's extra info text",
2765
+ label: "LG Font Size",
2766
+ key: "lg_tv_video_player_title_font_size",
2767
+ initial_value: 58,
2768
+ },
2769
+ {
2770
+ type: "samsung_font_selector",
2771
+ label: "Samsung Font Family",
2772
+ key: "samsung_tv_video_player_title_font_family",
2773
+ initial_value: "Ubuntu-Bold",
1600
2774
  },
1601
2775
  {
1602
- section: "extra_info_text",
1603
- key: "extra_info_text_fontsize_ios",
1604
- label: "iOS extra info text font size",
1605
2776
  type: "number_input",
1606
- initial_value: 13,
1607
- label_tooltip:
1608
- "Select the font size for the iOS player's extra info text",
2777
+ label: "Samsung Font Size",
2778
+ key: "samsung_tv_video_player_title_font_size",
2779
+ initial_value: 58,
2780
+ },
2781
+ {
2782
+ type: "vizio_font_selector",
2783
+ label: "Vizio Font Family",
2784
+ key: "vizio_video_player_title_font_family",
2785
+ initial_value: "Ubuntu-Bold",
1609
2786
  },
1610
2787
  {
1611
- section: "extra_info_text",
1612
- key: "extra_info_text_lineheight_android",
1613
- label: "Android extra info text line height",
1614
2788
  type: "number_input",
1615
- initial_value: 15,
1616
- label_tooltip:
1617
- "Select the line height for the android player's extra info text",
2789
+ label: "Vizio Font Size",
2790
+ key: "vizio_video_player_title_font_size",
2791
+ initial_value: 58,
2792
+ },
2793
+ {
2794
+ type: "tvos_font_selector",
2795
+ label: "tvOS Font Family",
2796
+ key: "tv_os_video_player_title_font_family",
2797
+ initial_value: "Ubuntu-Bold",
1618
2798
  },
1619
2799
  {
1620
- section: "extra_info_text",
1621
- key: "extra_info_text_lineheight_ios",
1622
- label: "iOS extra info text line height",
1623
2800
  type: "number_input",
1624
- initial_value: 15,
1625
- label_tooltip:
1626
- "Select the line height for the iOS player's extra info text",
2801
+ label: "tvOS Font Size",
2802
+ key: "tv_os_video_player_title_font_size",
2803
+ initial_value: 58,
2804
+ },
2805
+ {
2806
+ type: "android_font_selector",
2807
+ label: "Android TV Font Family",
2808
+ key: "android_tv_video_player_title_font_family",
2809
+ initial_value: "Ubuntu-Bold",
1627
2810
  },
1628
2811
  {
1629
- section: "extra_info_text",
1630
- key: "extra_info_text_letterspacing_android",
1631
- label: "Android extra info text letter spacing",
1632
2812
  type: "number_input",
1633
- initial_value: 0,
1634
- label_tooltip:
1635
- "Select the letter spacing for the android player's extra info text",
2813
+ label: "Android TV Font Size",
2814
+ key: "android_tv_video_player_title_font_size",
2815
+ initial_value: 58,
2816
+ },
2817
+ {
2818
+ type: "android_font_selector",
2819
+ label: "Fire TV Font Family",
2820
+ key: "amazon_video_player_title_font_family",
2821
+ initial_value: "Ubuntu-Bold",
1636
2822
  },
1637
2823
  {
1638
- section: "extra_info_text",
1639
- key: "extra_info_text_letterspacing_ios",
1640
- label: "iOS extra info text letter spacing",
1641
2824
  type: "number_input",
1642
- initial_value: -0.2,
1643
- label_tooltip:
1644
- "Select the letter spacing for the iOS player's extra info text",
2825
+ label: "Fire TV Font Size",
2826
+ key: "amazon_video_player_title_font_size",
2827
+ initial_value: 58,
1645
2828
  },
1646
2829
  ]
1647
- )
1648
- );
1649
- }
1650
-
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({
1656
- type: "switch",
1657
- label: "Disable captions overlay",
1658
- key: "disable_captions",
1659
- initial_value: false,
1660
- });
1661
- }
1662
-
1663
- if (
1664
- platform.includes("lg") ||
1665
- platform.includes("samsung") ||
1666
- platform.includes("android_tv") ||
1667
- platform.includes("amazon") ||
1668
- platform.includes("vizio")
1669
- ) {
1670
- styles.fields.push(
1671
- // Captions Menu
1672
- fieldsGroup("Captions - Overlay", "Captions overlay styles", [
1673
- {
1674
- type: "color_picker_rgba",
1675
- label: "Video Overlay",
1676
- key: "overlay_color",
1677
- initial_value: "rgba(0, 0, 0, 0.5)",
1678
- },
1679
- ]),
1680
- // Captions Menu - Close
1681
- fieldsGroup("Captions - Menu Close Button", "Close Button Styles", [
1682
- {
1683
- type: "color_picker_rgba",
1684
- label: "Background Color",
1685
- key: "close_background_color",
1686
- initial_value: "rgba(16, 16, 16, 1)",
1687
- },
1688
- {
1689
- type: "color_picker_rgba",
1690
- label: "Focus Border Color",
1691
- key: "close_focus_border_color",
1692
- initial_value: "rgba(239, 239, 239, 1)",
1693
- },
1694
- {
1695
- type: "color_picker_rgba",
1696
- label: "Icon Color",
1697
- key: "close_icon_color",
1698
- initial_value: "rgba(239, 239, 239, 1)",
1699
- },
1700
- {
1701
- type: "number_input",
1702
- label: "Border Thickness",
1703
- key: "close_border_thickness",
1704
- initial_value: 4,
1705
- },
1706
- ]),
1707
- // Captions Menu - Styles
1708
- fieldsGroup("Captions - Menu", "Captions Menu Styles", [
1709
- {
1710
- type: "color_picker_rgba",
1711
- label: "Background Color",
1712
- key: "menu_background_color",
1713
- initial_value: "rgba(16, 16, 16, 1)",
1714
- },
1715
- {
1716
- type: "color_picker_rgba",
1717
- label: "Top Gradient - Start",
1718
- key: "menu_top_gradient_start_color",
1719
- initial_value: "rgba(16, 16, 16, 1)",
1720
- },
1721
- {
1722
- type: "color_picker_rgba",
1723
- label: "Top Gradient - End",
1724
- key: "menu_top_gradient_end_color",
1725
- initial_value: "rgba(16, 16, 16, 0)",
1726
- },
1727
- {
1728
- type: "color_picker_rgba",
1729
- label: "Bottom Gradient - Start",
1730
- key: "menu_bottom_gradient_start_color",
1731
- initial_value: "rgba(16, 16, 16, 1)",
1732
- },
1733
- {
1734
- type: "color_picker_rgba",
1735
- label: "Bottom Gradient - End",
1736
- key: "menu_bottom_gradient_end_color",
1737
- initial_value: "rgba(16, 16, 16, 0)",
1738
- },
1739
- ]),
1740
- // Captions Menu - Header Text Label
2830
+ ),
2831
+ // Video Player Summary Font Family
1741
2832
  fieldsGroup(
1742
- "Captions - Menu Header Text",
1743
- "Captions Menu Header Text Label Styles",
2833
+ "Video Player - Summary Text",
2834
+ "Video Player Summary Text Label Styles",
1744
2835
  [
1745
2836
  {
2837
+ key: "player_summary_color",
2838
+ label: "Font color",
1746
2839
  type: "color_picker_rgba",
1747
- label: "Font Color",
1748
- key: "menu_header_font_color",
1749
2840
  initial_value: "rgba(239, 239, 239, 1)",
1750
2841
  },
1751
2842
  {
1752
- type: "lg_font_selector",
2843
+ type: "lg_tv_font_selector",
1753
2844
  label: "LG Font Family",
1754
- key: "menu_header_lg_font_family",
1755
- initial_value: "Museo-Bold",
2845
+ key: "lg_tv_video_player_summary_font_family",
2846
+ initial_value: "Ubuntu-Medium",
1756
2847
  },
1757
2848
  {
1758
2849
  type: "number_input",
1759
2850
  label: "LG Font Size",
1760
- key: "menu_header_lg_font_size",
2851
+ key: "lg_tv_video_player_summary_font_size",
1761
2852
  initial_value: 30,
1762
2853
  },
1763
2854
  {
1764
- type: "number_input",
1765
- label: "LG Line Height",
1766
- key: "menu_header_lg_line_height",
1767
- initial_value: 60,
2855
+ type: "samsung_font_selector",
2856
+ label: "Samsung Font Family",
2857
+ key: "samsung_tv_video_player_summary_font_family",
2858
+ initial_value: "Ubuntu-Medium",
1768
2859
  },
1769
2860
  {
1770
2861
  type: "number_input",
1771
- label: "LG Letter Spacing",
1772
- key: "menu_header_lg_letter_spacing",
1773
- initial_value: 0,
2862
+ label: "Samsung Font Size",
2863
+ key: "samsung_tv_video_player_summary_font_size",
2864
+ initial_value: 30,
1774
2865
  },
1775
2866
  {
1776
- type: "samsung_font_selector",
1777
- label: "Samsung Font Family",
1778
- key: "menu_header_samsung_font_family",
1779
- initial_value: "SmsungOneUI-Bold",
2867
+ type: "vizio_font_selector",
2868
+ label: "Vizio Font Family",
2869
+ key: "vizio_video_player_summary_font_family",
2870
+ initial_value: "Ubuntu-Medium",
1780
2871
  },
1781
2872
  {
1782
2873
  type: "number_input",
1783
- label: "Samsung Font Size",
1784
- key: "menu_header_samsung_font_size",
2874
+ label: "Vizio Font Size",
2875
+ key: "vizio_video_player_summary_font_size",
1785
2876
  initial_value: 30,
1786
2877
  },
1787
2878
  {
1788
- type: "number_input",
1789
- label: "Samsung Line Height",
1790
- key: "menu_header_samsung_line_height",
1791
- initial_value: 60,
2879
+ type: "tvos_font_selector",
2880
+ label: "tvOS Font Family",
2881
+ key: "tv_os_video_player_summary_font_family",
2882
+ initial_value: "Ubuntu-Medium",
1792
2883
  },
1793
2884
  {
1794
2885
  type: "number_input",
1795
- label: "Samsung Letter Spacing",
1796
- key: "menu_header_samsung_letter_spacing",
1797
- initial_value: 0,
2886
+ label: "tvOS Font Size",
2887
+ key: "tv_os_video_player_summary_font_size",
2888
+ initial_value: 30,
1798
2889
  },
1799
2890
  {
1800
- type: "vizio_font_selector",
1801
- label: "Vizio Font Family",
1802
- key: "menu_header_vizio_font_family",
1803
- initial_value: "SmsungOneUI-Bold",
2891
+ type: "android_font_selector",
2892
+ label: "Android TV Font Family",
2893
+ key: "android_tv_video_player_summary_font_family",
2894
+ initial_value: "Ubuntu-Medium",
1804
2895
  },
1805
2896
  {
1806
2897
  type: "number_input",
1807
- label: "Vizio Font Size",
1808
- key: "menu_header_vizio_font_size",
2898
+ label: "Android TV Font Size",
2899
+ key: "android_tv_video_player_summary_font_size",
1809
2900
  initial_value: 30,
1810
2901
  },
1811
2902
  {
1812
- type: "number_input",
1813
- label: "Vizio Line Height",
1814
- key: "menu_header_vizio_line_height",
1815
- initial_value: 60,
2903
+ type: "android_font_selector",
2904
+ label: "Fire TV Font Family",
2905
+ key: "amazon_video_player_summary_font_family",
2906
+ initial_value: "Ubuntu-Medium",
1816
2907
  },
1817
2908
  {
1818
2909
  type: "number_input",
1819
- label: "Vizio Letter Spacing",
1820
- key: "menu_header_vizio_letter_spacing",
1821
- initial_value: 0,
2910
+ label: "Fire TV Font Size",
2911
+ key: "amazon_video_player_summary_font_size",
2912
+ initial_value: 30,
1822
2913
  },
1823
2914
  ]
1824
2915
  ),
1825
- // Captions Menu - Item Text Label
2916
+ // Audio Player Title Font Family
1826
2917
  fieldsGroup(
1827
- "Captions - Item Text",
1828
- "Captions Menu Item Text Label Styles",
2918
+ "Audio Player - Title Text",
2919
+ "Audio Player Title Text Label Styles",
1829
2920
  [
1830
2921
  {
2922
+ key: "audio_player_title_color",
2923
+ label: "Audio player title color",
1831
2924
  type: "color_picker_rgba",
1832
- label: "Font Color - Default",
1833
- key: "menu_item_default_font_color",
1834
- initial_value: "rgba(239, 239, 239, 0.5)",
1835
- },
1836
- {
1837
- type: "color_picker_rgba",
1838
- label: "Font Color - Focused",
1839
- key: "menu_item_focused_font_color",
1840
- initial_value: "rgba(239, 239, 239, 1)",
1841
- },
1842
- {
1843
- type: "color_picker_rgba",
1844
- label: "Font Color - Selected",
1845
- key: "menu_item_selected_font_color",
1846
- initial_value: "rgba(239, 239, 239, 1)",
1847
- },
1848
- {
1849
- type: "color_picker_rgba",
1850
- label: "Font Color - Focused & Selected",
1851
- key: "menu_item_select_focused_font_color",
1852
2925
  initial_value: "rgba(239, 239, 239, 1)",
1853
2926
  },
1854
2927
  {
1855
- type: "lg_font_selector",
2928
+ type: "lg_tv_font_selector",
1856
2929
  label: "LG Font Family",
1857
- key: "menu_item_lg_font_family",
1858
- initial_value: "Museo-Bold",
2930
+ key: "lg_tv_audio_player_title_font_family",
2931
+ initial_value: "Ubuntu-Bold",
1859
2932
  },
1860
2933
  {
1861
2934
  type: "number_input",
1862
2935
  label: "LG Font Size",
1863
- key: "menu_item_lg_font_size",
1864
- initial_value: 25,
1865
- },
1866
- {
1867
- type: "number_input",
1868
- label: "LG Line Height",
1869
- key: "menu_item_lg_line_height",
2936
+ key: "lg_tv_audio_player_title_font_size",
1870
2937
  initial_value: 40,
1871
2938
  },
1872
- {
1873
- type: "number_input",
1874
- label: "LG Letter Spacing",
1875
- key: "menu_item_lg_letter_spacing",
1876
- initial_value: 0,
1877
- },
1878
2939
  {
1879
2940
  type: "samsung_font_selector",
1880
2941
  label: "Samsung Font Family",
1881
- key: "menu_item_samsung_font_family",
1882
- initial_value: "SmsungOneUI-Bold",
2942
+ key: "samsung_tv_audio_player_title_font_family",
2943
+ initial_value: "Ubuntu-Bold",
1883
2944
  },
1884
2945
  {
1885
2946
  type: "number_input",
1886
2947
  label: "Samsung Font Size",
1887
- key: "menu_item_samsung_font_size",
1888
- initial_value: 25,
1889
- },
1890
- {
1891
- type: "number_input",
1892
- label: "Samsung Line Height",
1893
- key: "menu_item_samsung_line_height",
2948
+ key: "samsung_tv_audio_player_title_font_size",
1894
2949
  initial_value: 40,
1895
2950
  },
1896
- {
1897
- type: "number_input",
1898
- label: "Samsung Letter Spacing",
1899
- key: "menu_item_samsung_letter_spacing",
1900
- initial_value: 0,
1901
- },
1902
2951
  {
1903
2952
  type: "vizio_font_selector",
1904
2953
  label: "Vizio Font Family",
1905
- key: "menu_item_vizio_font_family",
1906
- initial_value: "SmsungOneUI-Bold",
2954
+ key: "vizio_audio_player_title_font_family",
2955
+ initial_value: "Ubuntu-Bold",
1907
2956
  },
1908
2957
  {
1909
2958
  type: "number_input",
1910
2959
  label: "Vizio Font Size",
1911
- key: "menu_item_vizio_font_size",
1912
- initial_value: 25,
2960
+ key: "vizio_audio_player_title_font_size",
2961
+ initial_value: 40,
2962
+ },
2963
+ {
2964
+ type: "tvos_font_selector",
2965
+ label: "tvOS Font Family",
2966
+ key: "tv_os_audio_player_title_font_family",
2967
+ initial_value: "Ubuntu-Bold",
1913
2968
  },
1914
2969
  {
1915
2970
  type: "number_input",
1916
- label: "Vizio Line Height",
1917
- key: "menu_item_vizio_line_height",
2971
+ label: "tvOS Font Size",
2972
+ key: "tv_os_audio_player_title_font_size",
1918
2973
  initial_value: 40,
1919
2974
  },
2975
+ {
2976
+ type: "android_font_selector",
2977
+ label: "Android TV Font Family",
2978
+ key: "android_tv_audio_player_title_font_family",
2979
+ initial_value: "Ubuntu-Bold",
2980
+ },
1920
2981
  {
1921
2982
  type: "number_input",
1922
- label: "Vizio Letter Spacing",
1923
- key: "menu_item_vizio_letter_spacing",
1924
- initial_value: 0,
2983
+ label: "Android TV Font Size",
2984
+ key: "android_tv_audio_player_title_font_size",
2985
+ initial_value: 40,
1925
2986
  },
1926
2987
  ]
1927
2988
  ),
1928
- // Captions Menu - Item Border
2989
+ // Audio Player Summary Font Family
1929
2990
  fieldsGroup(
1930
- "Captions - Item Border",
1931
- "Captions Menu Item Border Styles",
2991
+ "Audio Player - Summary Text",
2992
+ "Audio Player Summary Text Label Styles",
1932
2993
  [
1933
2994
  {
2995
+ key: "audio_player_summary_color",
2996
+ label: "Audio player summary color",
1934
2997
  type: "color_picker_rgba",
1935
- label: "Border Color - Default",
1936
- key: "menu_item_border_default_color",
1937
- initial_value: "rgba(0, 0, 0, 0)",
2998
+ initial_value: "rgba(239, 239, 239, 0.8)",
1938
2999
  },
1939
3000
  {
1940
- type: "color_picker_rgba",
1941
- label: "Border Color - Focused",
1942
- key: "menu_item_border_focused_color",
1943
- initial_value: "rgba(239, 239, 239, 1)",
3001
+ type: "lg_tv_font_selector",
3002
+ label: "LG Font Family",
3003
+ key: "lg_tv_audio_player_summary_font_family",
3004
+ initial_value: "Ubuntu-Medium",
1944
3005
  },
1945
3006
  {
1946
- type: "color_picker_rgba",
1947
- label: "Border Color - Selected",
1948
- key: "menu_item_border_selected_color",
1949
- initial_value: "rgba(239, 239, 239, 1)",
3007
+ type: "number_input",
3008
+ label: "LG Font Size",
3009
+ key: "lg_tv_audio_player_summary_font_size",
3010
+ initial_value: 22,
1950
3011
  },
1951
3012
  {
1952
- type: "color_picker_rgba",
1953
- label: "Border Color - Focused & Selected",
1954
- key: "menu_item_border_select_focused_color",
1955
- initial_value: "rgba(239, 239, 239, 1)",
3013
+ type: "samsung_font_selector",
3014
+ label: "Samsung Font Family",
3015
+ key: "samsung_tv_audio_player_summary_font_family",
3016
+ initial_value: "Ubuntu-Medium",
1956
3017
  },
1957
3018
  {
1958
3019
  type: "number_input",
1959
- label: "Border Corner Radius",
1960
- key: "menu_item_border_radius",
1961
- initial_value: 5,
3020
+ label: "Samsung Font Size",
3021
+ key: "samsung_tv_audio_player_summary_font_size",
3022
+ initial_value: 22,
3023
+ },
3024
+ {
3025
+ type: "vizio_font_selector",
3026
+ label: "Vizio Font Family",
3027
+ key: "vizio_audio_player_summary_font_family",
3028
+ initial_value: "Ubuntu-Medium",
1962
3029
  },
1963
3030
  {
1964
3031
  type: "number_input",
1965
- label: "Border Thickness",
1966
- key: "menu_item_border_thickness",
1967
- initial_value: 5,
3032
+ label: "Vizio Font Size",
3033
+ key: "vizio_audio_player_summary_font_size",
3034
+ initial_value: 22,
3035
+ },
3036
+ {
3037
+ type: "tvos_font_selector",
3038
+ label: "tvOS Font Family",
3039
+ key: "tv_os_audio_player_summary_font_family",
3040
+ initial_value: "Ubuntu-Medium",
3041
+ },
3042
+ {
3043
+ type: "number_input",
3044
+ label: "tvOS Font Size",
3045
+ key: "tv_os_audio_player_summary_font_size",
3046
+ initial_value: 22,
3047
+ },
3048
+ {
3049
+ type: "android_font_selector",
3050
+ label: "Android TV Font Family",
3051
+ key: "android_tv_audio_player_summary_font_family",
3052
+ initial_value: "Ubuntu-Medium",
3053
+ },
3054
+ {
3055
+ type: "number_input",
3056
+ label: "Android TV Font Size",
3057
+ key: "android_tv_audio_player_summary_font_size",
3058
+ initial_value: 22,
1968
3059
  },
1969
3060
  ]
1970
3061
  ),
1971
- // Captions Menu - Item Tick Icon
1972
3062
  fieldsGroup(
1973
- "Captions - Item Tick Icon",
1974
- "Captions Menu Item Tick Icon Styles",
3063
+ "Audio Player Background",
3064
+ "This section allows you to configure the audio player layout",
1975
3065
  [
1976
3066
  {
3067
+ key: "audio_player_background_color",
3068
+ label: "Background Color",
3069
+ label_tooltip:
3070
+ "Set a background color using hex format and opacity. If left empty, the default color from the app’s theme will be used.",
1977
3071
  type: "color_picker_rgba",
1978
- label: "Color",
1979
- key: "menu_item_tick_color",
1980
- initial_value: "rgba(239, 239, 239, 1)",
3072
+ initial_value: "rgba(17, 17, 17, 1)",
1981
3073
  },
1982
- ]
1983
- )
1984
- );
1985
- }
1986
-
1987
- // ---- TV fields ---- //
1988
-
1989
- if (getDevice(platform) === "tv") {
1990
- styles.fields.push(
1991
- // Scrub colors
1992
- fieldsGroup(
1993
- "Scrub bar",
1994
- "This section allows you to configure the styling of the scrub bar",
1995
- [
1996
3074
  {
1997
- section: "scrub",
1998
- key: "scrub_total",
1999
- label: "Scrub bar color",
2000
- type: "color_picker_rgba",
2001
- initial_value: "rgba(255, 255, 255, 0.35)",
3075
+ key: "audio_player_background_image",
3076
+ label: "Background Image",
2002
3077
  label_tooltip:
2003
- "Select the bar color for the player's scrub / progress bar",
3078
+ "Upload a background image for the audio player. If no image is provided, the background color will be used as a fallback.",
3079
+ type: "uploader",
3080
+ default: "",
2004
3081
  },
2005
3082
  {
2006
- section: "scrub",
2007
- key: "scrub_buffer",
2008
- label: "Scrub bar buffer color",
2009
- type: "color_picker_rgba",
2010
- initial_value: "rgba(255, 255, 255, 0.8)",
3083
+ key: "audio_player_background_image_overlay",
3084
+ label: "Background Image Overlay",
2011
3085
  label_tooltip:
2012
- "Select the buffer bar color for the player's scrub / progress bar",
3086
+ "Add a semi-transparent color overlay to improve text readability over the background image.",
3087
+ type: "color_picker_rgba",
3088
+ initial_value: "rgba(17, 17, 17, 0.5)",
2013
3089
  },
2014
3090
  {
2015
- section: "scrub",
2016
- key: "scrub_progress",
2017
- label: "Scrub bar progress color",
2018
- type: "color_picker_rgba",
2019
- initial_value: "rgba(4, 207, 153, 1)",
3091
+ type: "text_input",
3092
+ label: "Item Image Key",
3093
+ key: "audio_player_artwork_image_key",
2020
3094
  label_tooltip:
2021
- "Select the progress bar color for the player's scrub / progress bar",
3095
+ "Define the key used to fetch the item’s image. If left empty, a default image will be shown.",
3096
+ initial_value: "image_base",
2022
3097
  },
2023
3098
  {
2024
- section: "scrub",
2025
- key: "scrub_handle",
2026
- label: "Scrub bar handle color",
2027
- type: "color_picker_rgba",
2028
- initial_value: "rgba(255, 255, 255, 1)",
3099
+ key: "audio_player_artwork_border_radius",
3100
+ label: "Item Image Corner Radius",
2029
3101
  label_tooltip:
2030
- "Select the bar handle / marker color for the player's scrub / progress bar",
3102
+ "Set the corner radius (in pixels) for item images. Leave empty for sharp corners (0px).",
3103
+ type: "number_input",
3104
+ initial_value: 16,
2031
3105
  },
2032
3106
  ]
2033
3107
  ),
2034
- // Video Player Title Text
3108
+ // Player Time Font Family
2035
3109
  fieldsGroup(
2036
- "Video Player - Title Text",
2037
- "Video Player Title Text Label Styles",
3110
+ "Player Time Indicator Text",
3111
+ "Player Time Indicator Text Label Styles",
2038
3112
  [
2039
- {
2040
- key: "player_title_color",
2041
- label: "Font color",
2042
- type: "color_picker_rgba",
2043
- initial_value: "rgba(239, 239, 239, 1)",
2044
- },
2045
3113
  {
2046
3114
  type: "lg_tv_font_selector",
2047
3115
  label: "LG Font Family",
2048
- key: "lg_tv_video_player_title_font_family",
2049
- initial_value: "Museo-Bold",
3116
+ key: "lg_tv_player_time_font_family",
3117
+ initial_value: "Ubuntu-Medium",
2050
3118
  },
2051
3119
  {
2052
3120
  type: "number_input",
2053
3121
  label: "LG Font Size",
2054
- key: "lg_tv_video_player_title_font_size",
2055
- initial_value: 64,
3122
+ key: "lg_tv_player_time_font_size",
3123
+ initial_value: 20,
2056
3124
  },
2057
3125
  {
2058
3126
  type: "samsung_font_selector",
2059
3127
  label: "Samsung Font Family",
2060
- key: "samsung_tv_video_player_title_font_family",
2061
- initial_value: "SamsungOne-800",
3128
+ key: "samsung_tv_player_time_font_family",
3129
+ initial_value: "Ubuntu-Medium",
2062
3130
  },
2063
3131
  {
2064
3132
  type: "number_input",
2065
3133
  label: "Samsung Font Size",
2066
- key: "samsung_tv_video_player_title_font_size",
2067
- initial_value: 64,
3134
+ key: "samsung_tv_player_time_font_size",
3135
+ initial_value: 20,
2068
3136
  },
2069
3137
  {
2070
3138
  type: "vizio_font_selector",
2071
3139
  label: "Vizio Font Family",
2072
- key: "vizio_video_player_title_font_family",
2073
- initial_value: "Ubuntu-Bold",
3140
+ key: "vizio_tv_player_time_font_family",
3141
+ initial_value: "Ubuntu-Medium",
2074
3142
  },
2075
3143
  {
2076
3144
  type: "number_input",
2077
- label: "Vizio Font Size",
2078
- key: "vizio_video_player_title_font_size",
2079
- initial_value: 64,
3145
+ label: "vizio Font Size",
3146
+ key: "vizio_player_time_font_size",
3147
+ initial_value: 20,
2080
3148
  },
2081
3149
  {
2082
- type: "tvos_font_selector",
2083
- label: "tvOS Font Family",
2084
- key: "tv_os_video_player_title_font_family",
2085
- initial_value: "SFProText-Medium",
3150
+ type: "android_font_selector",
3151
+ label: "Android TV Font Family",
3152
+ key: "android_tv_player_time_font_family",
3153
+ initial_value: "Ubuntu-Medium",
2086
3154
  },
2087
3155
  {
2088
3156
  type: "number_input",
2089
- label: "tvOS Font Size",
2090
- key: "tv_os_video_player_title_font_size",
2091
- initial_value: 48,
2092
- },
2093
- {
2094
- type: "android_font_selector",
2095
- label: "Android TV Font Family",
2096
- key: "android_tv_video_player_title_font_family",
2097
- initial_value: "Roboto-Bold",
3157
+ label: "Android Font Size",
3158
+ key: "android_tv_player_time_font_size",
3159
+ initial_value: 20,
2098
3160
  },
2099
3161
  {
2100
3162
  type: "android_font_selector",
2101
3163
  label: "Fire TV Font Family",
2102
- key: "amazon_video_player_title_font_family",
2103
- initial_value: "Roboto-Bold",
2104
- },
2105
- {
2106
- type: "number_input",
2107
- label: "Android TV Font Size",
2108
- key: "android_tv_video_player_title_font_size",
2109
- initial_value: 50,
3164
+ key: "amazon_player_time_font_family",
3165
+ initial_value: "Ubuntu-Medium",
2110
3166
  },
2111
3167
  {
2112
3168
  type: "number_input",
2113
3169
  label: "Fire TV Font Size",
2114
- key: "amazon_video_player_title_font_size",
2115
- initial_value: 50,
3170
+ key: "amazon_player_time_font_size",
3171
+ initial_value: 20,
2116
3172
  },
2117
3173
  ]
2118
3174
  ),
2119
- // Video Player Summary Font Family
3175
+ // Player Run Time Font
2120
3176
  fieldsGroup(
2121
- "Video Player - Summary Text",
2122
- "Video Player Summary Text Label Styles",
3177
+ "Player Run Time Indicator Text",
3178
+ "Player Run Time Indicator Text Label Styles",
2123
3179
  [
2124
- {
2125
- key: "player_summary_color",
2126
- label: "Font color",
2127
- type: "color_picker_rgba",
2128
- initial_value: "rgba(239, 239, 239, 1)",
2129
- },
2130
3180
  {
2131
3181
  type: "lg_tv_font_selector",
2132
3182
  label: "LG Font Family",
2133
- key: "lg_tv_video_player_summary_font_family",
2134
- initial_value: "Museo-Bold",
3183
+ key: "lg_tv_audio_player_run_time_font_family",
3184
+ initial_value: "Ubuntu-Medium",
2135
3185
  },
2136
3186
  {
2137
3187
  type: "number_input",
2138
3188
  label: "LG Font Size",
2139
- key: "lg_tv_video_player_summary_font_size",
2140
- initial_value: 30,
3189
+ key: "lg_tv_audio_player_run_time_font_size",
3190
+ initial_value: 20,
2141
3191
  },
2142
3192
  {
2143
3193
  type: "samsung_font_selector",
2144
3194
  label: "Samsung Font Family",
2145
- key: "samsung_tv_video_player_summary_font_family",
2146
- initial_value: "SamsungOne-800",
3195
+ key: "samsung_tv_audio_player_run_time_font_family",
3196
+ initial_value: "Ubuntu-Medium",
2147
3197
  },
2148
3198
  {
2149
3199
  type: "number_input",
2150
3200
  label: "Samsung Font Size",
2151
- key: "samsung_tv_video_player_summary_font_size",
2152
- initial_value: 30,
3201
+ key: "samsung_tv_audio_player_run_time_font_size",
3202
+ initial_value: 20,
2153
3203
  },
2154
3204
  {
2155
3205
  type: "vizio_font_selector",
2156
3206
  label: "Vizio Font Family",
2157
- key: "vizio_video_player_summary_font_family",
2158
- initial_value: "Ubuntu-Bold",
3207
+ key: "vizio_audio_player_run_time_font_family",
3208
+ initial_value: "Ubuntu-Medium",
2159
3209
  },
2160
3210
  {
2161
3211
  type: "number_input",
2162
3212
  label: "Vizio Font Size",
2163
- key: "vizio_video_player_summary_font_size",
2164
- initial_value: 30,
3213
+ key: "vizio_audio_player_run_time_font_size",
3214
+ initial_value: 20,
2165
3215
  },
2166
3216
  {
2167
3217
  type: "tvos_font_selector",
2168
3218
  label: "tvOS Font Family",
2169
- key: "tv_os_video_player_summary_font_family",
2170
- initial_value: "SFProText-Medium",
3219
+ key: "tv_os_audio_player_run_time_font_family",
3220
+ initial_value: "Ubuntu-Medium",
2171
3221
  },
2172
3222
  {
2173
3223
  type: "number_input",
2174
3224
  label: "tvOS Font Size",
2175
- key: "tv_os_video_player_summary_font_size",
2176
- initial_value: 24,
3225
+ key: "tv_os_audio_player_run_time_font_size",
3226
+ initial_value: 20,
2177
3227
  },
2178
3228
  {
2179
3229
  type: "android_font_selector",
2180
3230
  label: "Android TV Font Family",
2181
- 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",
3231
+ key: "android_tv_audio_player_run_time_font_family",
3232
+ initial_value: "Ubuntu-Medium",
2189
3233
  },
2190
3234
  {
2191
3235
  type: "number_input",
2192
3236
  label: "Android TV Font Size",
2193
- key: "android_tv_video_player_summary_font_size",
2194
- initial_value: 25,
3237
+ key: "android_tv_audio_player_run_time_font_size",
3238
+ initial_value: 20,
3239
+ },
3240
+ ]
3241
+ ),
3242
+ // Player Buttons
3243
+ fieldsGroup("Player Buttons", "Player Buttons styles", [
3244
+ {
3245
+ type: "color_picker_rgba",
3246
+ label: "Border color",
3247
+ key: "button_border_color",
3248
+ initial_value: "rgba(239, 239, 239, 1)",
3249
+ },
3250
+ {
3251
+ type: "color_picker_rgba",
3252
+ label: "Background color",
3253
+ key: "button_background_color",
3254
+ initial_value: "rgba(0, 0, 0, 0)",
3255
+ },
3256
+ {
3257
+ type: "color_picker_rgba",
3258
+ label: "Focused border color",
3259
+ key: "button_focused_border_color",
3260
+ initial_value: "rgba(239, 239, 239, 1)",
3261
+ },
3262
+ {
3263
+ type: "color_picker_rgba",
3264
+ label: "Focused background color",
3265
+ key: "button_focused_background_color",
3266
+ initial_value: "rgba(0, 0, 0, 0)",
3267
+ },
3268
+ ]),
3269
+ // Player progress bar
3270
+ fieldsGroup("Player progress bar", "Progress bar styles", [
3271
+ {
3272
+ type: "color_picker_rgba",
3273
+ label: "Background color",
3274
+ key: "progress_bar_background_color",
3275
+ initial_value: "rgba(254, 20, 72, 1)",
3276
+ },
3277
+ ])
3278
+ );
3279
+ }
3280
+
3281
+ // ---- Audio player (mobile) ---- //
3282
+
3283
+ if (isMobile(platform)) {
3284
+ styles.fields.push(
3285
+ fieldsGroup(
3286
+ "Audio Player",
3287
+ "This section allows you to configure the audio player layout",
3288
+ [
3289
+ {
3290
+ key: "full_screen_audio_player",
3291
+ label: "Use audio player layout",
3292
+ initial_value: true,
3293
+ type: "switch",
3294
+ label_tooltip:
3295
+ "When disabled, audio playback will be shown in the video player layout instead",
3296
+ },
3297
+ {
3298
+ type: "text_input",
3299
+ label: "Image key",
3300
+ key: "audio_player_image_key",
3301
+ label_tooltip:
3302
+ "Specify a key where we could find the image in your entry",
3303
+ initial_value: "image_base",
3304
+ },
3305
+ {
3306
+ key: "audio_player_background_image",
3307
+ label: "Static image",
3308
+ label_tooltip:
3309
+ "If no image key is configured, or no image is found in the feed — this static image will be used instead.",
3310
+ type: "uploader",
3311
+ default: "",
2195
3312
  },
2196
3313
  {
3314
+ key: "audio_player_artwork_border_radius",
3315
+ label_tooltip:
3316
+ "Adjust the corner radius of the artwork image in the audio player",
3317
+ label: "Image Corner Radius",
2197
3318
  type: "number_input",
2198
- label: "Fire TV Font Size",
2199
- key: "amazon_video_player_summary_font_size",
2200
- initial_value: 25,
3319
+ initial_value: 16,
3320
+ rules: "conditional",
3321
+ conditional_fields: [
3322
+ {
3323
+ key: "styles/full_screen_audio_player",
3324
+ condition_value: true,
3325
+ },
3326
+ ],
3327
+ },
3328
+ {
3329
+ key: "audio_player_artwork_shadow_enabled",
3330
+ label: "Image Shadow Enabled",
3331
+ type: "switch",
3332
+ initial_value: true,
3333
+ rules: "conditional",
3334
+ conditional_fields: [
3335
+ {
3336
+ key: "styles/full_screen_audio_player",
3337
+ condition_value: true,
3338
+ },
3339
+ ],
2201
3340
  },
2202
3341
  ]
2203
- ),
2204
- // Audio Player Title Font Family
3342
+ )
3343
+ );
3344
+ }
3345
+
3346
+ if (isTV(platform)) {
3347
+ general.fields.push(
2205
3348
  fieldsGroup(
2206
- "Audio Player - Title Text",
2207
- "Audio Player Title Text Label Styles",
3349
+ "Samsung and LG TV only",
3350
+ "This section allows you to configure advanced settings for Samsung and LG TV",
2208
3351
  [
2209
3352
  {
2210
- type: "lg_tv_font_selector",
2211
- label: "LG Font Family",
2212
- key: "lg_tv_audio_player_title_font_family",
2213
- initial_value: "Museo-Bold",
3353
+ key: "use_legacy_player",
3354
+ label: "Use Enhanced Player",
3355
+ initial_value: true,
3356
+ type: "switch",
3357
+ label_tooltip:
3358
+ "When this option is enabled, the app will use the web optimized / enhanced player on LG, Samsung, and the browser",
2214
3359
  },
2215
3360
  {
2216
- type: "number_input",
2217
- label: "LG Font Size",
2218
- key: "lg_tv_audio_player_title_font_size",
2219
- initial_value: 38,
3361
+ key: "limit_video_resolution",
3362
+ label: "Limit Video Resolution For Old LG/Samsung TVs",
3363
+ initial_value: false,
3364
+ type: "switch",
3365
+ label_tooltip:
3366
+ "The player will use 1280x720 resolution and lower for old LG/Samsung TVs(2021 and lower) to avoid player buffering issue",
2220
3367
  },
2221
3368
  {
2222
- type: "samsung_font_selector",
2223
- label: "Samsung Font Family",
2224
- key: "samsung_tv_audio_player_title_font_family",
2225
- initial_value: "SamsungOne-800",
3369
+ key: "show_debug_overlay",
3370
+ label: "Show Debug Overlay",
3371
+ initial_value: false,
3372
+ type: "switch",
3373
+ label_tooltip:
3374
+ "When this option is enabled, you will have an overlay showing some important stats about the player and content",
2226
3375
  },
2227
3376
  {
2228
- type: "number_input",
2229
- label: "Samsung Font Size",
2230
- key: "samsung_tv_audio_player_title_font_size",
2231
- initial_value: 38,
3377
+ key: "force_recovery_in_unknown_errors",
3378
+ label: "Force Recovery On Unknown Errors",
3379
+ initial_value: false,
3380
+ type: "switch",
3381
+ label_tooltip:
3382
+ "When this option is enabled, player will try to recover from unknown errors by reloading the player",
2232
3383
  },
2233
3384
  {
2234
- type: "vizio_font_selector",
2235
- label: "Vizio Font Family",
2236
- key: "vizio_tv_audio_player_title_font_family",
2237
- initial_value: "Ubuntu-Bold",
3385
+ key: "advanced_player_config",
3386
+ label: "Advanced Player Configuration",
3387
+ type: "text_input",
3388
+ multiline: true,
3389
+ initial_value:
3390
+ "{ html5: { vhs: { limitRenditionByPlayerDimensions: true } } }",
3391
+ label_tooltip:
3392
+ "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/",
2238
3393
  },
2239
3394
  {
2240
- type: "number_input",
2241
- label: "Vizio Font Size",
2242
- key: "vizio_audio_player_title_font_size",
2243
- initial_value: 38,
3395
+ key: "use_dashjs_player",
3396
+ label: "Use Enhanced Player for DASH streams",
3397
+ initial_value: true,
3398
+ type: "switch",
3399
+ label_tooltip:
3400
+ "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",
2244
3401
  },
2245
3402
  {
2246
- type: "tvos_font_selector",
2247
- label: "tvOS Font Family",
2248
- key: "tv_os_audio_player_title_font_family",
2249
- initial_value: "SFProText-Medium",
3403
+ key: "use_hlsjs_player",
3404
+ label: "Use Enhanced Player for HLS streams",
3405
+ initial_value: false,
3406
+ type: "switch",
3407
+ label_tooltip:
3408
+ "When this option is enabled, the app will use the hls.js player for HLS streams on LG / Samsung TV and in the browser",
2250
3409
  },
2251
3410
  {
2252
- type: "number_input",
2253
- label: "tvOS Font Size",
2254
- key: "tv_os_audio_player_title_font_size",
2255
- initial_value: 38,
3411
+ key: "use_hlsjs_subtitles",
3412
+ label: "Use HLS JS subtitles",
3413
+ initial_value: false,
3414
+ type: "switch",
3415
+ label_tooltip:
3416
+ "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",
3417
+ rules: "conditional",
3418
+ conditional_fields: [
3419
+ {
3420
+ key: "general/use_hlsjs_player",
3421
+ condition_value: true,
3422
+ },
3423
+ ],
3424
+ },
3425
+ ]
3426
+ ),
3427
+ fieldsGroup(
3428
+ "Roku only",
3429
+ "This section allows you to configure RAF - Roku Ad Framework settings",
3430
+ [
3431
+ {
3432
+ key: "raf_enabled",
3433
+ type: "switch",
3434
+ initial_value: false,
3435
+ },
3436
+ {
3437
+ key: "raf_url",
3438
+ type: "text_input",
3439
+ label: "Ad Url",
3440
+ label_tooltip:
3441
+ "Publisher's ad URL. The default is he roku ad server with single preroll placeholder, with revenue spilt ad sharing by default. TO GET PAID A URL MUST BE PASSED IN HERE. Note: If you are putting ads in child targetted content then your ad url will have to use the ROKU_ADS_KIDS_CONTENT macro value, as per the docs here: developer.roku.com/docs/developer-program/advertising/integrating-roku-advertising-framework.md#url-parameter-macros",
3442
+ },
3443
+ {
3444
+ key: "genre",
3445
+ type: "text_input",
3446
+ label: "Roku Genre",
3447
+ initial_value: "Entertainment",
3448
+ label_tooltip:
3449
+ "Choose value from Roku genre tags, from developer.roku.com/en-gb/docs/developer-program/advertising/integrating-roku-advertising-framework.md",
3450
+ },
3451
+ {
3452
+ key: "nielsen_enabled",
3453
+ type: "checkbox",
3454
+ initial_value: false,
3455
+ label_tooltip:
3456
+ "Required only for apps launched in the US market, See developer.roku.com/en-gb/docs/developer-program/advertising/integrating-roku-advertising-framework.md for details on configuration",
3457
+ },
3458
+ {
3459
+ key: "nielsen_app_id",
3460
+ type: "text_input",
3461
+ initial_value: "",
3462
+ label_tooltip:
3463
+ "id of your app for nielsen leave blank if you don't have a specific id (that is almost always the case)",
2256
3464
  },
2257
3465
  {
2258
- type: "android_font_selector",
2259
- label: "Android TV Font Family",
2260
- key: "android_tv_audio_player_title_font_family",
2261
- initial_value: "Roboto-Bold",
3466
+ key: "nielsen_genre",
3467
+ type: "text_input",
3468
+ initial_value: "General",
3469
+ label_tooltip:
3470
+ "genre from developer.roku.com/en-gb/docs/developer-program/advertising/integrating-roku-advertising-framework.md#nielsen-dar-genre-tags",
2262
3471
  },
2263
3472
  {
2264
- type: "number_input",
2265
- label: "Android TV Font Size",
2266
- key: "android_tv_audio_player_title_font_size",
2267
- initial_value: 50,
3473
+ key: "is_kids_content",
3474
+ type: "checkbox",
3475
+ initial_value: false,
3476
+ label_tooltip:
3477
+ "If your content is directed at kids, this must be checked. See developer.roku.com/docs/developer-program/advertising/raf-api.md#setcontentgenregenres-as-string-kidscontent-as-boolean for more info. Also note your ad urls will have to use the ROKU_ADS_KIDS_CONTENT macro value, as per the docs here: developer.roku.com/docs/developer-program/advertising/integrating-roku-advertising-framework.md#url-parameter-macros",
2268
3478
  },
2269
3479
  ]
2270
3480
  ),
2271
- // Audio Player Summary Font Family
2272
3481
  fieldsGroup(
2273
- "Audio Player - Summary Text",
2274
- "Audio Player Summary Text Label Styles",
3482
+ "Audio Tracks",
3483
+ "This section allows you to configure default audio track behavior for videos with multiple audio tracks",
3484
+ audioTracksSettings
3485
+ ),
3486
+ fieldsGroup("Legacy configuration", "", audioPlayer)
3487
+ );
3488
+ }
3489
+
3490
+ if (isMobile(platform)) {
3491
+ styles.fields.push(
3492
+ fieldsGroup(
3493
+ "Skip Button",
3494
+ "This section allows you to configure the skip button styles",
2275
3495
  [
2276
3496
  {
2277
- type: "lg_tv_font_selector",
2278
- label: "LG Font Family",
2279
- key: "lg_tv_audio_player_summary_font_family",
2280
- initial_value: "Museo-Bold",
2281
- },
2282
- {
2283
- type: "number_input",
2284
- label: "LG Font Size",
2285
- key: "lg_tv_audio_player_summary_font_size",
2286
- initial_value: 20,
3497
+ type: "switch",
3498
+ key: "skip_button_enabled",
3499
+ label_tooltip: "Enables Skip button on the player.",
3500
+ label: "Enable",
3501
+ initial_value: true,
2287
3502
  },
2288
3503
  {
2289
- type: "samsung_font_selector",
2290
- label: "Samsung Font Family",
2291
- key: "samsung_tv_audio_player_summary_font_family",
2292
- initial_value: "SamsungOne-800",
3504
+ type: "switch",
3505
+ key: "skip_button_persistent",
3506
+ label_tooltip:
3507
+ "Show skip button always if enabled, otherwise show only when the user taps on the screen.",
3508
+ label: "Persistent Button Toggle",
3509
+ initial_value: true,
2293
3510
  },
2294
3511
  {
2295
- type: "number_input",
2296
- label: "Samsung Font Size",
2297
- key: "samsung_tv_audio_player_summary_font_size",
2298
- initial_value: 20,
3512
+ type: "color_picker_rgba",
3513
+ label_tooltip: "",
3514
+ label: "Background Color",
3515
+ key: "skip_button_style_button_background_color",
3516
+ initial_value: "rgba(0, 0, 0, 0.3)",
2299
3517
  },
2300
3518
  {
2301
- type: "vizio_font_selector",
2302
- label: "Vizio Font Family",
2303
- key: "vizio_audio_player_summary_font_family",
2304
- initial_value: "Ubuntu-Bold",
3519
+ type: "color_picker_rgba",
3520
+ label_tooltip: "",
3521
+ label: "Background Color Pressed",
3522
+ key: "skip_button_style_button_pressed_background_color",
3523
+ initial_value: "rgba(0, 0, 0, 0.3)",
2305
3524
  },
2306
3525
  {
2307
3526
  type: "number_input",
2308
- label: "Vizio Font Size",
2309
- key: "vizio_audio_player_summary_font_size",
2310
- initial_value: 20,
2311
- },
2312
- {
2313
- type: "tvos_font_selector",
2314
- label: "tvOS Font Family",
2315
- key: "tv_os_audio_player_summary_font_family",
2316
- initial_value: "SFProText-Medium",
3527
+ label_tooltip: "",
3528
+ label: "Border Width",
3529
+ key: "skip_button_style_button_border_width",
3530
+ initial_value: 1.5,
2317
3531
  },
2318
3532
  {
2319
- type: "number_input",
2320
- label: "tvOS Font Size",
2321
- key: "tv_os_audio_player_summary_font_size",
2322
- initial_value: 20,
3533
+ type: "color_picker_rgba",
3534
+ label_tooltip: "",
3535
+ label: "Border Color",
3536
+ key: "skip_button_style_button_border_color",
3537
+ initial_value: "rgba(255, 255, 255, 1)",
2323
3538
  },
2324
3539
  {
2325
- type: "android_font_selector",
2326
- label: "Android TV Font Family",
2327
- key: "android_tv_audio_player_summary_font_family",
2328
- initial_value: "Roboto-Medium",
3540
+ type: "color_picker_rgba",
3541
+ label_tooltip: "",
3542
+ label: "Border Color Pressed",
3543
+ key: "skip_button_style_button_pressed_border_color",
3544
+ initial_value: "rgba(255, 255, 255, 0.5)",
2329
3545
  },
2330
3546
  {
2331
3547
  type: "number_input",
2332
- label: "Android TV Font Size",
2333
- key: "android_tv_audio_player_summary_font_size",
2334
- initial_value: 25,
2335
- },
2336
- ]
2337
- ),
2338
- // Player Time Font Family
2339
- fieldsGroup(
2340
- "Player Time Indicator Text",
2341
- "Player Time Indicator Text Label Styles",
2342
- [
2343
- {
2344
- type: "lg_tv_font_selector",
2345
- label: "LG Font Family",
2346
- key: "lg_tv_player_time_font_family",
2347
- initial_value: "Museo-Bold",
3548
+ label_tooltip: "",
3549
+ label: "Corner Radius",
3550
+ key: "skip_button_style_button_border_radius",
3551
+ initial_value: 4,
2348
3552
  },
2349
3553
  {
2350
3554
  type: "number_input",
2351
- label: "LG Font Size",
2352
- key: "lg_tv_player_time_font_size",
2353
- initial_value: 20,
2354
- },
2355
- {
2356
- type: "samsung_font_selector",
2357
- label: "Samsung Font Family",
2358
- key: "samsung_tv_player_time_font_family",
2359
- initial_value: "SamsungOne-800",
3555
+ label_tooltip: "",
3556
+ label: "Margin Top",
3557
+ key: "skip_button_style_button_margin_top",
3558
+ initial_value: 0,
2360
3559
  },
2361
3560
  {
2362
3561
  type: "number_input",
2363
- label: "Samsung Font Size",
2364
- key: "samsung_tv_player_time_font_size",
2365
- initial_value: 20,
3562
+ label_tooltip: "",
3563
+ label: "Margin Right",
3564
+ key: "skip_button_style_button_margin_right",
3565
+ initial_value: 8,
2366
3566
  },
2367
3567
  {
2368
- type: "vizio_font_selector",
2369
- label: "Vizio Font Family",
2370
- key: "vizio_player_time_font_family",
2371
- initial_value: "Ubuntu-Bold",
3568
+ type: "number_input",
3569
+ label_tooltip: "",
3570
+ label: "Margin Bottom",
3571
+ key: "skip_button_style_button_margin_bottom",
3572
+ initial_value: 0,
2372
3573
  },
2373
3574
  {
2374
3575
  type: "number_input",
2375
- label: "Vizio Font Size",
2376
- key: "vizio_player_time_font_size",
2377
- initial_value: 20,
3576
+ label_tooltip: "",
3577
+ label: "Margin Left",
3578
+ key: "skip_button_style_button_margin_left",
3579
+ initial_value: 0,
2378
3580
  },
2379
3581
  {
2380
3582
  type: "android_font_selector",
2381
- label: "Android TV Font Family",
2382
- key: "android_tv_player_time_font_family",
2383
- initial_value: "Roboto-Bold",
3583
+ label_tooltip: "",
3584
+ label: "Android Font Family",
3585
+ key: "skip_button_style_text_android_font_family",
3586
+ initial_value: "Roboto-Medium",
2384
3587
  },
2385
3588
  {
2386
3589
  type: "number_input",
3590
+ label_tooltip: "",
2387
3591
  label: "Android Font Size",
2388
- key: "android_tv_player_time_font_size",
2389
- initial_value: 20,
3592
+ key: "skip_button_style_text_android_font_size",
3593
+ initial_value: 12,
2390
3594
  },
2391
3595
  {
2392
- type: "android_font_selector",
2393
- label: "Fire TV Font Family",
2394
- key: "amazon_player_time_font_family",
2395
- initial_value: "Roboto-Bold",
3596
+ type: "number_input",
3597
+ label_tooltip: "",
3598
+ label: "Android Letter Spacing",
3599
+ key: "skip_button_style_text_android_letter_spacing",
3600
+ initial_value: 0,
2396
3601
  },
2397
3602
  {
2398
3603
  type: "number_input",
2399
- label: "Fire TV Font Size",
2400
- key: "amazon_player_time_font_size",
3604
+ label_tooltip: "",
3605
+ label: "Android Line Height",
3606
+ key: "skip_button_style_text_android_line_height",
2401
3607
  initial_value: 20,
2402
3608
  },
2403
- ]
2404
- ),
2405
- // Player Run Time Font
2406
- fieldsGroup(
2407
- "Player Run Time Indicator Text",
2408
- "Player Run Time Indicator Text Label Styles",
2409
- [
2410
3609
  {
2411
- type: "lg_tv_font_selector",
2412
- label: "LG Font Family",
2413
- key: "lg_tv_audio_player_run_time_font_family",
2414
- initial_value: "Museo-Bold",
3610
+ type: "ios_font_selector",
3611
+ label_tooltip: "",
3612
+ label: "iOS Font Family",
3613
+ key: "skip_button_style_text_ios_font_family",
3614
+ initial_value: "SFProText-Semibold",
2415
3615
  },
2416
3616
  {
2417
3617
  type: "number_input",
2418
- label: "LG Font Size",
2419
- key: "lg_tv_audio_player_run_time_font_size",
2420
- initial_value: 20,
3618
+ label_tooltip: "",
3619
+ label: "iOS Font Size",
3620
+ key: "skip_button_style_text_ios_font_size",
3621
+ initial_value: 12,
2421
3622
  },
2422
3623
  {
2423
- type: "samsung_font_selector",
2424
- label: "Samsung Font Family",
2425
- key: "samsung_tv_audio_player_run_time_font_family",
2426
- initial_value: "SamsungOne-800",
3624
+ type: "number_input",
3625
+ label_tooltip: "",
3626
+ label: "iOS Letter Spacing",
3627
+ key: "skip_button_style_text_ios_letter_spacing",
3628
+ initial_value: -0.2,
2427
3629
  },
2428
3630
  {
2429
3631
  type: "number_input",
2430
- label: "Samsung Font Size",
2431
- key: "samsung_tv_audio_player_run_time_font_size",
3632
+ label_tooltip: "",
3633
+ label: "iOS Line Height",
3634
+ key: "skip_button_style_text_ios_line_height",
2432
3635
  initial_value: 20,
2433
3636
  },
2434
3637
  {
2435
- type: "vizio_font_selector",
2436
- label: "Vizio Font Family",
2437
- key: "vizio_audio_player_run_time_font_family",
2438
- initial_value: "Ubuntu-Bold",
3638
+ type: "color_picker_rgba",
3639
+ label_tooltip: "",
3640
+ label: "Font Color",
3641
+ key: "skip_button_style_text_color",
3642
+ initial_value: "rgba(255, 255, 255, 1)",
2439
3643
  },
2440
3644
  {
2441
- type: "number_input",
2442
- label: "Vizio Font Size",
2443
- key: "vizio_audio_player_run_time_font_size",
2444
- initial_value: 20,
3645
+ type: "color_picker_rgba",
3646
+ label_tooltip: "",
3647
+ label: "Font Color Pressed",
3648
+ key: "skip_button_style_text_pressed_color",
3649
+ initial_value: "rgba(255, 255, 255, 0.5)",
2445
3650
  },
2446
3651
  {
2447
- type: "tvos_font_selector",
2448
- label: "tvOS Font Family",
2449
- key: "tv_os_audio_player_run_time_font_family",
2450
- initial_value: "SFProText-Medium",
3652
+ type: "select",
3653
+ options: [
3654
+ {
3655
+ text: "None",
3656
+ value: "none",
3657
+ },
3658
+ {
3659
+ text: "Uppercase",
3660
+ value: "uppercase",
3661
+ },
3662
+ {
3663
+ text: "Lowercase",
3664
+ value: "lowercase",
3665
+ },
3666
+ {
3667
+ text: "Capitalize",
3668
+ value: "capitalize",
3669
+ },
3670
+ ],
3671
+ label: "Text Transform",
3672
+ key: "skip_button_style_text_text_transform",
3673
+ initial_value: "none",
2451
3674
  },
2452
3675
  {
2453
3676
  type: "number_input",
2454
- label: "tvOS Font Size",
2455
- key: "tv_os_audio_player_run_time_font_size",
2456
- initial_value: 20,
3677
+ label_tooltip: "",
3678
+ label: "Padding Top",
3679
+ key: "skip_button_style_text_padding_top",
3680
+ initial_value: 7,
2457
3681
  },
2458
3682
  {
2459
- type: "android_font_selector",
2460
- label: "Android TV Font Family",
2461
- key: "android_tv_audio_player_run_time_font_family",
2462
- initial_value: "Roboto-Medium",
3683
+ type: "number_input",
3684
+ label_tooltip: "",
3685
+ label: "Padding Right",
3686
+ key: "skip_button_style_text_padding_right",
3687
+ initial_value: 10,
2463
3688
  },
2464
3689
  {
2465
3690
  type: "number_input",
2466
- label: "Android TV Font Size",
2467
- key: "android_tv_audio_player_run_time_font_size",
2468
- initial_value: 25,
3691
+ label_tooltip: "",
3692
+ label: "Padding Bottom",
3693
+ key: "skip_button_style_text_padding_bottom",
3694
+ initial_value: 7,
3695
+ },
3696
+ {
3697
+ type: "number_input",
3698
+ label_tooltip: "",
3699
+ label: "Padding Left",
3700
+ key: "skip_button_style_text_padding_left",
3701
+ initial_value: 10,
2469
3702
  },
2470
3703
  ]
2471
- ),
2472
- // Player Buttons
2473
- fieldsGroup("Player Buttons", "Player Buttons styles", [
2474
- {
2475
- type: "color_picker_rgba",
2476
- label: "Border color",
2477
- key: "button_border_color",
2478
- initial_value: "rgba(239, 239, 239, 1)",
2479
- },
2480
- {
2481
- type: "color_picker_rgba",
2482
- label: "Background color",
2483
- key: "button_background_color",
2484
- initial_value: "rgba(255, 255, 255, 0)",
2485
- },
2486
- {
2487
- type: "color_picker_rgba",
2488
- label: "Focused border color",
2489
- key: "button_focused_border_color",
2490
- initial_value: "rgba(239, 239, 239, 1)",
2491
- },
2492
- {
2493
- type: "color_picker_rgba",
2494
- label: "Focused background color",
2495
- key: "button_focused_background_color",
2496
- initial_value: "rgba(239, 239, 239, 1)",
2497
- },
2498
- ]),
2499
- // Player progress bar
2500
- fieldsGroup("Player progress bar", "Progress bar styles", [
2501
- {
2502
- type: "color_picker_rgba",
2503
- label: "Background color",
2504
- key: "progress_bar_background_color",
2505
- initial_value: "rgba(239, 239, 239, 1)",
2506
- },
2507
- ])
3704
+ )
2508
3705
  );
2509
3706
  }
2510
3707
 
2511
- // ---- Audio player background - TV & mobile ---- //
2512
-
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
- );
3708
+ const customConfigurationWarning = {
3709
+ label:
3710
+ "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.",
3711
+ type: "link",
3712
+ };
2559
3713
 
2560
- return {
3714
+ const manifest = {
2561
3715
  styles,
2562
3716
  general,
2563
3717
  localizations,
2564
- custom_configuration_fields: remapConditionalFieldsForPluginGallery(
2565
- ...styles.fields,
2566
- ...general.fields
2567
- ),
3718
+ custom_configuration_fields: [
3719
+ customConfigurationWarning,
3720
+ ...remapConditionalFieldsForPluginGallery(
3721
+ ...styles.fields,
3722
+ ...general.fields
3723
+ ),
3724
+ ],
2568
3725
  };
3726
+
3727
+ if (platform.includes("android") || platform.includes("amazon")) {
3728
+ manifest.npm_dependencies = [
3729
+ `@applicaster/zapp-react-native-default-player@${version}`,
3730
+ ];
3731
+
3732
+ manifest.project_dependencies = [
3733
+ {
3734
+ "zapp-react-native-default-player":
3735
+ "node_modules/@applicaster/zapp-react-native-default-player/android",
3736
+ },
3737
+ ];
3738
+
3739
+ manifest.extra_dependencies = [];
3740
+ }
3741
+
3742
+ if (platform.includes("ios") || platform.includes("tvos")) {
3743
+ manifest.npm_dependencies = [
3744
+ `@applicaster/zapp-react-native-default-player@${version}`,
3745
+ ];
3746
+
3747
+ manifest.extra_dependencies = [
3748
+ {
3749
+ DefaultPlayer:
3750
+ ":path =\u003e './node_modules/@applicaster/zapp-react-native-default-player/apple/DefaultPlayer.podspec'",
3751
+ },
3752
+ ];
3753
+ }
3754
+
3755
+ return manifest;
2569
3756
  }
2570
3757
 
2571
3758
  const player = (options) => getPlayerConfiguration(options);