@jwplayer/jwplayer-react-native 1.1.3 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +114 -21
- package/RNJWPlayer.podspec +1 -1
- package/android/build.gradle +14 -1
- package/android/src/main/java/com/jwplayer/rnjwplayer/RNJWPlayerModule.java +27 -0
- package/android/src/main/java/com/jwplayer/rnjwplayer/RNJWPlayerView.java +373 -204
- package/android/src/main/java/com/jwplayer/rnjwplayer/RNJWPlayerViewManager.java +16 -0
- package/android/src/main/java/com/jwplayer/rnjwplayer/Util.java +13 -1
- package/badges/version.svg +1 -1
- package/docs/CONFIG-REFERENCE.md +747 -0
- package/docs/MIGRATION-GUIDE.md +617 -0
- package/docs/PLATFORM-DIFFERENCES.md +693 -0
- package/docs/props.md +15 -3
- package/index.d.ts +225 -216
- package/index.js +34 -0
- package/ios/RNJWPlayer/RNJWPlayerView.swift +365 -10
- package/ios/RNJWPlayer/RNJWPlayerViewController.swift +45 -16
- package/ios/RNJWPlayer/RNJWPlayerViewManager.m +2 -0
- package/ios/RNJWPlayer/RNJWPlayerViewManager.swift +13 -0
- package/package.json +2 -2
- package/types/advertising.d.ts +514 -0
- package/types/index.d.ts +21 -0
- package/types/legacy.d.ts +82 -0
- package/types/platform-specific.d.ts +641 -0
- package/types/playlist.d.ts +410 -0
- package/types/unified-config.d.ts +591 -0
- package/android/.gradle/8.9/checksums/checksums.lock +0 -0
- package/android/.gradle/8.9/checksums/md5-checksums.bin +0 -0
- package/android/.gradle/8.9/checksums/sha1-checksums.bin +0 -0
- package/android/.gradle/8.9/dependencies-accessors/gc.properties +0 -0
- package/android/.gradle/8.9/fileChanges/last-build.bin +0 -0
- package/android/.gradle/8.9/fileHashes/fileHashes.lock +0 -0
- package/android/.gradle/8.9/gc.properties +0 -0
- package/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
- package/android/.gradle/buildOutputCleanup/cache.properties +0 -2
- package/android/.gradle/vcs-1/gc.properties +0 -0
- package/docs/types.md +0 -254
|
@@ -0,0 +1,641 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Platform-Specific Configuration Types
|
|
3
|
+
*
|
|
4
|
+
* Types that are only supported on iOS or Android
|
|
5
|
+
*
|
|
6
|
+
* @see iOS: ios-json-parser/jwplayer-config.d.ts
|
|
7
|
+
* @see Android: android-json-parser/jwplayer-config-types.d.ts
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
// ============================================================================
|
|
11
|
+
// IOS-SPECIFIC TYPES
|
|
12
|
+
// ============================================================================
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Audio session category for iOS
|
|
16
|
+
* Controls how the app's audio interacts with other audio on the device
|
|
17
|
+
*
|
|
18
|
+
* @platform ios
|
|
19
|
+
* @see https://developer.apple.com/documentation/avfoundation/avaudiosession/category
|
|
20
|
+
*/
|
|
21
|
+
export type AudioSessionCategory =
|
|
22
|
+
| 'Ambient' // Mix with other audio, silence when locked
|
|
23
|
+
| 'SoloAmbient' // Default, silences other audio
|
|
24
|
+
| 'Playback' // For media playback
|
|
25
|
+
| 'Record' // For recording
|
|
26
|
+
| 'PlayAndRecord' // For VoIP, recording & playback
|
|
27
|
+
| 'MultiRoute'; // Multiple audio routes
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Audio session category options for iOS
|
|
31
|
+
* Modifies the behavior of the audio session category
|
|
32
|
+
*
|
|
33
|
+
* @platform ios
|
|
34
|
+
* @see https://developer.apple.com/documentation/avfoundation/avaudiosession/categoryoptions
|
|
35
|
+
*/
|
|
36
|
+
export type AudioSessionCategoryOptions =
|
|
37
|
+
| 'MixWithOthers' // Mix with other audio
|
|
38
|
+
| 'DuckOthers' // Lower volume of other audio
|
|
39
|
+
| 'AllowBluetooth' // Allow Bluetooth A2DP
|
|
40
|
+
| 'DefaultToSpeaker' // Route to speaker by default
|
|
41
|
+
| 'InterruptSpokenAudioAndMix' // Interrupt spoken audio
|
|
42
|
+
| 'AllowBluetoothA2DP' // Allow Bluetooth A2DP
|
|
43
|
+
| 'AllowAirPlay' // Allow AirPlay
|
|
44
|
+
| 'OverrideMutedMicrophone'; // Override muted microphone
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Audio session mode for iOS
|
|
48
|
+
* Specialized modes for specific use cases
|
|
49
|
+
*
|
|
50
|
+
* @platform ios
|
|
51
|
+
* @see https://developer.apple.com/documentation/avfoundation/avaudiosession/mode
|
|
52
|
+
*/
|
|
53
|
+
export type AudioSessionMode =
|
|
54
|
+
| 'Default' // Default mode
|
|
55
|
+
| 'VoiceChat' // For VoIP
|
|
56
|
+
| 'VideoChat' // For video calls
|
|
57
|
+
| 'GameChat' // For game chat
|
|
58
|
+
| 'VideoRecording' // For video recording
|
|
59
|
+
| 'Measurement' // For audio analysis
|
|
60
|
+
| 'MoviePlayback' // Optimized for movie playback
|
|
61
|
+
| 'SpokenAudio' // For podcasts/audiobooks
|
|
62
|
+
| 'VoicePrompt'; // For voice prompts
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* Edge styles for caption text emphasis
|
|
66
|
+
*
|
|
67
|
+
* @platform ios
|
|
68
|
+
*/
|
|
69
|
+
export type EdgeStyles = 'none' | 'dropshadow' | 'raised' | 'depressed' | 'uniform';
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* Preload values
|
|
73
|
+
*/
|
|
74
|
+
export type Preload = 'auto' | 'none';
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* Interface behavior modes
|
|
78
|
+
*
|
|
79
|
+
* @platform ios
|
|
80
|
+
*/
|
|
81
|
+
export type InterfaceBehavior = 'normal' | 'hidden' | 'onscreen';
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* UI groups that can be hidden on iOS
|
|
85
|
+
*
|
|
86
|
+
* @platform ios
|
|
87
|
+
*/
|
|
88
|
+
export type UIGroup =
|
|
89
|
+
| 'overlay'
|
|
90
|
+
| 'control_bar'
|
|
91
|
+
| 'center_controls'
|
|
92
|
+
| 'next_up'
|
|
93
|
+
| 'error'
|
|
94
|
+
| 'playlist'
|
|
95
|
+
| 'controls_container'
|
|
96
|
+
| 'settings_menu'
|
|
97
|
+
| 'quality_submenu'
|
|
98
|
+
| 'captions_submenu'
|
|
99
|
+
| 'playback_submenu'
|
|
100
|
+
| 'audiotracks_submenu'
|
|
101
|
+
| 'casting_menu';
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* Control types for visibility control
|
|
105
|
+
*
|
|
106
|
+
* @platform ios
|
|
107
|
+
*/
|
|
108
|
+
export type JWControlType =
|
|
109
|
+
| 'forward'
|
|
110
|
+
| 'rewind'
|
|
111
|
+
| 'pip'
|
|
112
|
+
| 'airplay'
|
|
113
|
+
| 'chromecast'
|
|
114
|
+
| 'next'
|
|
115
|
+
| 'previous'
|
|
116
|
+
| 'settings'
|
|
117
|
+
| 'languages'
|
|
118
|
+
| 'fullscreen';
|
|
119
|
+
|
|
120
|
+
/**
|
|
121
|
+
* Font configuration for iOS styling
|
|
122
|
+
*
|
|
123
|
+
* @platform ios
|
|
124
|
+
*/
|
|
125
|
+
export interface Font {
|
|
126
|
+
/**
|
|
127
|
+
* Font name (e.g., "Helvetica", "Arial")
|
|
128
|
+
*/
|
|
129
|
+
name?: string;
|
|
130
|
+
|
|
131
|
+
/**
|
|
132
|
+
* Font size in points
|
|
133
|
+
*/
|
|
134
|
+
size?: number;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
/**
|
|
138
|
+
* Caption styling configuration for iOS
|
|
139
|
+
*
|
|
140
|
+
* Only applies to SRT and WebVTT captions when accessibility settings allow.
|
|
141
|
+
* EIA-608 captions always use system accessibility settings.
|
|
142
|
+
*
|
|
143
|
+
* @platform ios
|
|
144
|
+
*/
|
|
145
|
+
export interface CaptionStyle {
|
|
146
|
+
/**
|
|
147
|
+
* Font configuration
|
|
148
|
+
*/
|
|
149
|
+
font?: Font;
|
|
150
|
+
|
|
151
|
+
/**
|
|
152
|
+
* Font family name
|
|
153
|
+
*/
|
|
154
|
+
fontFamily?: string;
|
|
155
|
+
|
|
156
|
+
/**
|
|
157
|
+
* Font size in points
|
|
158
|
+
*/
|
|
159
|
+
fontSize?: number;
|
|
160
|
+
|
|
161
|
+
/**
|
|
162
|
+
* Font color in hex format (e.g., "#FFFFFF")
|
|
163
|
+
* @default "#FFFFFF"
|
|
164
|
+
*/
|
|
165
|
+
fontColor?: string;
|
|
166
|
+
|
|
167
|
+
/**
|
|
168
|
+
* Alternative naming for fontColor
|
|
169
|
+
*/
|
|
170
|
+
color?: string;
|
|
171
|
+
|
|
172
|
+
/**
|
|
173
|
+
* Font opacity (0-100)
|
|
174
|
+
* @default 100
|
|
175
|
+
*/
|
|
176
|
+
fontOpacity?: number;
|
|
177
|
+
|
|
178
|
+
/**
|
|
179
|
+
* Background/highlight color in hex format
|
|
180
|
+
* The background behind the text
|
|
181
|
+
* @default "#000000"
|
|
182
|
+
*/
|
|
183
|
+
backgroundColor?: string;
|
|
184
|
+
|
|
185
|
+
/**
|
|
186
|
+
* Background/highlight opacity (0-100)
|
|
187
|
+
* @default 100
|
|
188
|
+
*/
|
|
189
|
+
backgroundOpacity?: number;
|
|
190
|
+
|
|
191
|
+
/**
|
|
192
|
+
* Highlight color (alternative naming)
|
|
193
|
+
*/
|
|
194
|
+
highlightColor?: string;
|
|
195
|
+
|
|
196
|
+
/**
|
|
197
|
+
* Window color in hex format
|
|
198
|
+
* The color of the caption window/box
|
|
199
|
+
* @default "#000000"
|
|
200
|
+
*/
|
|
201
|
+
windowColor?: string;
|
|
202
|
+
|
|
203
|
+
/**
|
|
204
|
+
* Window opacity (0-100)
|
|
205
|
+
* @default 0
|
|
206
|
+
*/
|
|
207
|
+
windowOpacity?: number;
|
|
208
|
+
|
|
209
|
+
/**
|
|
210
|
+
* Edge style for text emphasis
|
|
211
|
+
* @default "none"
|
|
212
|
+
*/
|
|
213
|
+
edgeStyle?: EdgeStyles;
|
|
214
|
+
|
|
215
|
+
/**
|
|
216
|
+
* Whether to allow dynamic text scaling
|
|
217
|
+
* @default true
|
|
218
|
+
*/
|
|
219
|
+
allowScaling?: boolean;
|
|
220
|
+
|
|
221
|
+
/**
|
|
222
|
+
* Override strategy for applying styles
|
|
223
|
+
*/
|
|
224
|
+
overrideStrategy?: string;
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
/**
|
|
228
|
+
* Menu styling configuration for iOS
|
|
229
|
+
*
|
|
230
|
+
* @platform ios
|
|
231
|
+
*/
|
|
232
|
+
export interface MenuStyle {
|
|
233
|
+
/**
|
|
234
|
+
* Font configuration
|
|
235
|
+
*/
|
|
236
|
+
font?: Font;
|
|
237
|
+
|
|
238
|
+
/**
|
|
239
|
+
* Font color in hex format
|
|
240
|
+
*/
|
|
241
|
+
fontColor?: string;
|
|
242
|
+
|
|
243
|
+
/**
|
|
244
|
+
* Background color in hex format
|
|
245
|
+
*/
|
|
246
|
+
backgroundColor?: string;
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
/**
|
|
250
|
+
* Timeslider styling configuration for iOS
|
|
251
|
+
*
|
|
252
|
+
* @platform ios
|
|
253
|
+
*/
|
|
254
|
+
export interface TimesliderStyle {
|
|
255
|
+
/**
|
|
256
|
+
* Thumb color in hex format
|
|
257
|
+
*/
|
|
258
|
+
thumb?: string;
|
|
259
|
+
|
|
260
|
+
/**
|
|
261
|
+
* Rail color in hex format
|
|
262
|
+
*/
|
|
263
|
+
rail?: string;
|
|
264
|
+
|
|
265
|
+
/**
|
|
266
|
+
* Slider/progress color in hex format
|
|
267
|
+
*/
|
|
268
|
+
slider?: string;
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
/**
|
|
272
|
+
* Colors configuration for iOS styling
|
|
273
|
+
*
|
|
274
|
+
* @platform ios
|
|
275
|
+
*/
|
|
276
|
+
export interface Colors {
|
|
277
|
+
/**
|
|
278
|
+
* Button colors in hex format
|
|
279
|
+
*/
|
|
280
|
+
buttons?: string;
|
|
281
|
+
|
|
282
|
+
/**
|
|
283
|
+
* Background color in hex format
|
|
284
|
+
*/
|
|
285
|
+
backgroundColor?: string;
|
|
286
|
+
|
|
287
|
+
/**
|
|
288
|
+
* Font color in hex format
|
|
289
|
+
*/
|
|
290
|
+
fontColor?: string;
|
|
291
|
+
|
|
292
|
+
/**
|
|
293
|
+
* Timeslider styling
|
|
294
|
+
*/
|
|
295
|
+
timeslider?: TimesliderStyle;
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
/**
|
|
299
|
+
* Styling configuration for iOS
|
|
300
|
+
*
|
|
301
|
+
* Note: Android requires overloading of JWP IDs using XML styling
|
|
302
|
+
* @see https://docs.jwplayer.com/players/docs/android-styling-guide
|
|
303
|
+
*
|
|
304
|
+
* @platform ios
|
|
305
|
+
*/
|
|
306
|
+
export interface JWStyling {
|
|
307
|
+
/**
|
|
308
|
+
* Color configuration
|
|
309
|
+
*/
|
|
310
|
+
colors?: Colors;
|
|
311
|
+
|
|
312
|
+
/**
|
|
313
|
+
* Font configuration
|
|
314
|
+
*/
|
|
315
|
+
font?: Font;
|
|
316
|
+
|
|
317
|
+
/**
|
|
318
|
+
* Show title in player UI
|
|
319
|
+
*/
|
|
320
|
+
showTitle?: boolean;
|
|
321
|
+
|
|
322
|
+
/**
|
|
323
|
+
* Show description in player UI
|
|
324
|
+
*/
|
|
325
|
+
showDesc?: boolean;
|
|
326
|
+
|
|
327
|
+
/**
|
|
328
|
+
* Caption styling
|
|
329
|
+
*/
|
|
330
|
+
captionsStyle?: CaptionStyle;
|
|
331
|
+
|
|
332
|
+
/**
|
|
333
|
+
* Menu styling
|
|
334
|
+
*/
|
|
335
|
+
menuStyle?: MenuStyle;
|
|
336
|
+
}
|
|
337
|
+
|
|
338
|
+
/**
|
|
339
|
+
* Related content click behavior
|
|
340
|
+
*
|
|
341
|
+
* @platform ios
|
|
342
|
+
*/
|
|
343
|
+
export type RelatedOnClick = 'play' | 'link';
|
|
344
|
+
|
|
345
|
+
/**
|
|
346
|
+
* Related content complete behavior
|
|
347
|
+
*
|
|
348
|
+
* @platform ios
|
|
349
|
+
*/
|
|
350
|
+
export type RelatedOnComplete = 'show' | 'hide' | 'autoplay';
|
|
351
|
+
|
|
352
|
+
/**
|
|
353
|
+
* Related content configuration for iOS
|
|
354
|
+
*
|
|
355
|
+
* @platform ios
|
|
356
|
+
*/
|
|
357
|
+
export interface JWRelatedIOS {
|
|
358
|
+
/**
|
|
359
|
+
* Behavior when user clicks a related item
|
|
360
|
+
* @default "play"
|
|
361
|
+
*/
|
|
362
|
+
onClick?: RelatedOnClick;
|
|
363
|
+
|
|
364
|
+
/**
|
|
365
|
+
* When to show the related content overlay
|
|
366
|
+
* @default "show"
|
|
367
|
+
*/
|
|
368
|
+
onComplete?: RelatedOnComplete;
|
|
369
|
+
|
|
370
|
+
/**
|
|
371
|
+
* Heading text for related content overlay
|
|
372
|
+
*/
|
|
373
|
+
heading?: string;
|
|
374
|
+
|
|
375
|
+
/**
|
|
376
|
+
* URL to the related content feed
|
|
377
|
+
*/
|
|
378
|
+
url?: string;
|
|
379
|
+
|
|
380
|
+
/**
|
|
381
|
+
* Alternative naming for url
|
|
382
|
+
*/
|
|
383
|
+
file?: string;
|
|
384
|
+
|
|
385
|
+
/**
|
|
386
|
+
* Autoplay countdown message
|
|
387
|
+
* Use `__title__` for the next video title and `xx` for countdown seconds
|
|
388
|
+
*/
|
|
389
|
+
autoplayMessage?: string;
|
|
390
|
+
|
|
391
|
+
/**
|
|
392
|
+
* Autoplay countdown timer in seconds
|
|
393
|
+
* @default 10
|
|
394
|
+
*/
|
|
395
|
+
autoplayTimer?: number;
|
|
396
|
+
}
|
|
397
|
+
|
|
398
|
+
/**
|
|
399
|
+
* Next up style configuration
|
|
400
|
+
*
|
|
401
|
+
* @platform ios
|
|
402
|
+
*/
|
|
403
|
+
export interface NextUpStyle {
|
|
404
|
+
/**
|
|
405
|
+
* Offset in seconds before end of video to show next up
|
|
406
|
+
*/
|
|
407
|
+
offsetSeconds?: number;
|
|
408
|
+
|
|
409
|
+
/**
|
|
410
|
+
* Offset as percentage of video duration
|
|
411
|
+
*/
|
|
412
|
+
offsetPercentage?: number;
|
|
413
|
+
}
|
|
414
|
+
|
|
415
|
+
/**
|
|
416
|
+
* External playback settings for AirPlay
|
|
417
|
+
*
|
|
418
|
+
* @platform ios
|
|
419
|
+
*/
|
|
420
|
+
export interface JWExternalPlaybackSettings {
|
|
421
|
+
/**
|
|
422
|
+
* Whether external playback is enabled
|
|
423
|
+
*/
|
|
424
|
+
playbackEnabled?: boolean;
|
|
425
|
+
|
|
426
|
+
/**
|
|
427
|
+
* Whether to use external playback while an external screen is active
|
|
428
|
+
*/
|
|
429
|
+
usesExternalPlaybackWhileExternalScreenIsActive?: boolean;
|
|
430
|
+
|
|
431
|
+
/**
|
|
432
|
+
* Video gravity for external playback
|
|
433
|
+
*/
|
|
434
|
+
videoGravity?: 'resize' | 'resizeAspect' | 'resizeAspectFill';
|
|
435
|
+
}
|
|
436
|
+
|
|
437
|
+
// ============================================================================
|
|
438
|
+
// ANDROID-SPECIFIC TYPES
|
|
439
|
+
// ============================================================================
|
|
440
|
+
|
|
441
|
+
/**
|
|
442
|
+
* Stretching mode for video on Android
|
|
443
|
+
*
|
|
444
|
+
* @platform android
|
|
445
|
+
*/
|
|
446
|
+
export type Stretching = 'uniform' | 'exactfit' | 'fill' | 'none';
|
|
447
|
+
|
|
448
|
+
/**
|
|
449
|
+
* Thumbnail preview quality levels
|
|
450
|
+
*
|
|
451
|
+
* @platform android
|
|
452
|
+
*/
|
|
453
|
+
export type ThumbnailPreview = 101 | 102 | 103;
|
|
454
|
+
|
|
455
|
+
/**
|
|
456
|
+
* UI Configuration for Android
|
|
457
|
+
*
|
|
458
|
+
* Controls which UI elements are visible in the player.
|
|
459
|
+
* When using this, specify all elements - unspecified elements default to false.
|
|
460
|
+
*
|
|
461
|
+
* @platform android
|
|
462
|
+
*/
|
|
463
|
+
export interface JWUiConfig {
|
|
464
|
+
/**
|
|
465
|
+
* Show overlay UI
|
|
466
|
+
* @default false
|
|
467
|
+
*/
|
|
468
|
+
hasOverlay?: boolean;
|
|
469
|
+
|
|
470
|
+
/**
|
|
471
|
+
* Show control bar
|
|
472
|
+
* @default false
|
|
473
|
+
*/
|
|
474
|
+
hasControlbar?: boolean;
|
|
475
|
+
|
|
476
|
+
/**
|
|
477
|
+
* Show center play/pause controls
|
|
478
|
+
* @default false
|
|
479
|
+
*/
|
|
480
|
+
hasCenterControls?: boolean;
|
|
481
|
+
|
|
482
|
+
/**
|
|
483
|
+
* Show next up overlay
|
|
484
|
+
* @default false
|
|
485
|
+
*/
|
|
486
|
+
hasNextUp?: boolean;
|
|
487
|
+
|
|
488
|
+
/**
|
|
489
|
+
* Show side seek controls
|
|
490
|
+
* @default false
|
|
491
|
+
*/
|
|
492
|
+
hasSideSeek?: boolean;
|
|
493
|
+
|
|
494
|
+
/**
|
|
495
|
+
* Show logo view
|
|
496
|
+
* @default false
|
|
497
|
+
*/
|
|
498
|
+
hasLogoView?: boolean;
|
|
499
|
+
|
|
500
|
+
/**
|
|
501
|
+
* Show error messages
|
|
502
|
+
* @default false
|
|
503
|
+
*/
|
|
504
|
+
hasError?: boolean;
|
|
505
|
+
|
|
506
|
+
/**
|
|
507
|
+
* Show playlist UI
|
|
508
|
+
* @default false
|
|
509
|
+
*/
|
|
510
|
+
hasPlaylist?: boolean;
|
|
511
|
+
|
|
512
|
+
/**
|
|
513
|
+
* Show quality submenu
|
|
514
|
+
* @default false
|
|
515
|
+
*/
|
|
516
|
+
hasQualitySubMenu?: boolean;
|
|
517
|
+
|
|
518
|
+
/**
|
|
519
|
+
* Show captions submenu
|
|
520
|
+
* @default false
|
|
521
|
+
*/
|
|
522
|
+
hasCaptionsSubMenu?: boolean;
|
|
523
|
+
|
|
524
|
+
/**
|
|
525
|
+
* Show playback rates submenu
|
|
526
|
+
* @default false
|
|
527
|
+
*/
|
|
528
|
+
hasPlaybackRatesSubMenu?: boolean;
|
|
529
|
+
|
|
530
|
+
/**
|
|
531
|
+
* Show audio tracks submenu
|
|
532
|
+
* @default false
|
|
533
|
+
*/
|
|
534
|
+
hasAudiotracksSubMenu?: boolean;
|
|
535
|
+
|
|
536
|
+
/**
|
|
537
|
+
* Show settings menu
|
|
538
|
+
* @default false
|
|
539
|
+
*/
|
|
540
|
+
hasMenu?: boolean;
|
|
541
|
+
|
|
542
|
+
/**
|
|
543
|
+
* Show player controls container
|
|
544
|
+
* @default false
|
|
545
|
+
*/
|
|
546
|
+
hasPlayerControlsContainer?: boolean;
|
|
547
|
+
|
|
548
|
+
/**
|
|
549
|
+
* Show casting menu
|
|
550
|
+
* @default false
|
|
551
|
+
*/
|
|
552
|
+
hasCastingMenu?: boolean;
|
|
553
|
+
|
|
554
|
+
/**
|
|
555
|
+
* Show chapters UI
|
|
556
|
+
* @default false
|
|
557
|
+
*/
|
|
558
|
+
hasChapters?: boolean;
|
|
559
|
+
|
|
560
|
+
/**
|
|
561
|
+
* Show ads UI
|
|
562
|
+
* @default false
|
|
563
|
+
*/
|
|
564
|
+
hasAds?: boolean;
|
|
565
|
+
}
|
|
566
|
+
|
|
567
|
+
/**
|
|
568
|
+
* Logo position on Android
|
|
569
|
+
*
|
|
570
|
+
* @platform android
|
|
571
|
+
*/
|
|
572
|
+
export type LogoPosition = 'topLeft' | 'topRight' | 'bottomLeft' | 'bottomRight';
|
|
573
|
+
|
|
574
|
+
/**
|
|
575
|
+
* Logo view configuration for Android
|
|
576
|
+
*
|
|
577
|
+
* @platform android
|
|
578
|
+
*/
|
|
579
|
+
export interface JWLogoView {
|
|
580
|
+
/**
|
|
581
|
+
* Path to logo image file
|
|
582
|
+
*/
|
|
583
|
+
imageFile: string;
|
|
584
|
+
|
|
585
|
+
/**
|
|
586
|
+
* Whether logo fades in/out with controls
|
|
587
|
+
* Note: Margin required for fade on Android
|
|
588
|
+
*/
|
|
589
|
+
fades: boolean;
|
|
590
|
+
|
|
591
|
+
/**
|
|
592
|
+
* Margin around logo in pixels
|
|
593
|
+
*/
|
|
594
|
+
margin?: number;
|
|
595
|
+
|
|
596
|
+
/**
|
|
597
|
+
* Logo position
|
|
598
|
+
*/
|
|
599
|
+
position?: LogoPosition;
|
|
600
|
+
|
|
601
|
+
/**
|
|
602
|
+
* Web link to open when logo is clicked
|
|
603
|
+
*/
|
|
604
|
+
webLink: string;
|
|
605
|
+
}
|
|
606
|
+
|
|
607
|
+
/**
|
|
608
|
+
* Related content configuration for Android
|
|
609
|
+
*
|
|
610
|
+
* @platform android
|
|
611
|
+
*/
|
|
612
|
+
export interface JWRelatedAndroid {
|
|
613
|
+
/**
|
|
614
|
+
* URL to the related content feed
|
|
615
|
+
*/
|
|
616
|
+
file?: string;
|
|
617
|
+
|
|
618
|
+
/**
|
|
619
|
+
* When to show the related content overlay
|
|
620
|
+
*/
|
|
621
|
+
oncomplete?: 'hide' | 'show' | 'none' | 'autoplay';
|
|
622
|
+
|
|
623
|
+
/**
|
|
624
|
+
* Behavior when user clicks a related item
|
|
625
|
+
*/
|
|
626
|
+
onclick?: 'play' | 'link';
|
|
627
|
+
|
|
628
|
+
/**
|
|
629
|
+
* Autoplay countdown timer in seconds
|
|
630
|
+
*/
|
|
631
|
+
autoplaytimer: number;
|
|
632
|
+
}
|
|
633
|
+
|
|
634
|
+
/**
|
|
635
|
+
* Unified related content configuration
|
|
636
|
+
* Supports both iOS and Android structures
|
|
637
|
+
*
|
|
638
|
+
* @platforms iOS, Android
|
|
639
|
+
*/
|
|
640
|
+
export type JWRelatedConfig = JWRelatedIOS | JWRelatedAndroid;
|
|
641
|
+
|