@applicaster/zapp-react-native-utils 14.0.0-rc.9 → 15.0.0-alpha.1089439460

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