@jwplayer/jwplayer-react-native 1.0.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/.github/CODEOWNERS +2 -0
- package/.github/ISSUE_TEMPLATE/bug_report.md +38 -0
- package/.github/ISSUE_TEMPLATE/feature_request.md +20 -0
- package/.github/ISSUE_TEMPLATE/question.md +11 -0
- package/.github/PULL_REQUEST_TEMPLATE.md +15 -0
- package/CODE_OF_CONDUCT.md +128 -0
- package/LICENSE +21 -0
- package/README.md +425 -0
- package/RNJWPlayer.podspec +44 -0
- package/android/.gradle/8.1.1/checksums/checksums.lock +0 -0
- package/android/.gradle/8.1.1/dependencies-accessors/dependencies-accessors.lock +0 -0
- package/android/.gradle/8.1.1/dependencies-accessors/gc.properties +0 -0
- package/android/.gradle/8.1.1/fileChanges/last-build.bin +0 -0
- package/android/.gradle/8.1.1/fileHashes/fileHashes.lock +0 -0
- package/android/.gradle/8.1.1/gc.properties +0 -0
- package/android/.gradle/8.2/checksums/checksums.lock +0 -0
- package/android/.gradle/8.2/dependencies-accessors/dependencies-accessors.lock +0 -0
- package/android/.gradle/8.2/dependencies-accessors/gc.properties +0 -0
- package/android/.gradle/8.2/fileChanges/last-build.bin +0 -0
- package/android/.gradle/8.2/fileHashes/fileHashes.lock +0 -0
- package/android/.gradle/8.2/gc.properties +0 -0
- package/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
- package/android/.gradle/buildOutputCleanup/cache.properties +2 -0
- package/android/.gradle/config.properties +2 -0
- package/android/.gradle/vcs-1/gc.properties +0 -0
- package/android/.idea/gradle.xml +12 -0
- package/android/.idea/migrations.xml +10 -0
- package/android/.idea/misc.xml +10 -0
- package/android/.idea/vcs.xml +6 -0
- package/android/.idea/workspace.xml +54 -0
- package/android/build.gradle +110 -0
- package/android/local.properties +8 -0
- package/android/src/main/AndroidManifest.xml +25 -0
- package/android/src/main/java/com/jwplayer/rnjwplayer/ArrayUtil.java +129 -0
- package/android/src/main/java/com/jwplayer/rnjwplayer/CastOptionsProvider.java +55 -0
- package/android/src/main/java/com/jwplayer/rnjwplayer/MapUtil.java +136 -0
- package/android/src/main/java/com/jwplayer/rnjwplayer/RNJWPlayer.java +76 -0
- package/android/src/main/java/com/jwplayer/rnjwplayer/RNJWPlayerAds.java +239 -0
- package/android/src/main/java/com/jwplayer/rnjwplayer/RNJWPlayerModule.java +526 -0
- package/android/src/main/java/com/jwplayer/rnjwplayer/RNJWPlayerPackage.java +30 -0
- package/android/src/main/java/com/jwplayer/rnjwplayer/RNJWPlayerView.java +1499 -0
- package/android/src/main/java/com/jwplayer/rnjwplayer/RNJWPlayerViewManager.java +171 -0
- package/android/src/main/java/com/jwplayer/rnjwplayer/Util.java +219 -0
- package/android/src/main/java/com/jwplayer/rnjwplayer/WidevineCallback.java +62 -0
- package/badges/license.svg +1 -0
- package/badges/version.svg +1 -0
- package/docs/legacy_readme.md +634 -0
- package/docs/props.md +43 -0
- package/docs/types.md +254 -0
- package/index.d.ts +564 -0
- package/index.js +699 -0
- package/ios/RNJWPlayer/RCTConvert+RNJWPlayer.swift +119 -0
- package/ios/RNJWPlayer/RNJWPlayer-Bridging-Header.h +5 -0
- package/ios/RNJWPlayer/RNJWPlayerAds.swift +260 -0
- package/ios/RNJWPlayer/RNJWPlayerModels.swift +149 -0
- package/ios/RNJWPlayer/RNJWPlayerView.swift +1837 -0
- package/ios/RNJWPlayer/RNJWPlayerViewController.swift +616 -0
- package/ios/RNJWPlayer/RNJWPlayerViewManager.m +132 -0
- package/ios/RNJWPlayer/RNJWPlayerViewManager.swift +500 -0
- package/ios/RNJWPlayer.xcodeproj/project.pbxproj +323 -0
- package/package.json +45 -0
package/index.d.ts
ADDED
|
@@ -0,0 +1,564 @@
|
|
|
1
|
+
declare module "jwplayer-react-native" {
|
|
2
|
+
import React from "react";
|
|
3
|
+
import { ViewStyle } from "react-native";
|
|
4
|
+
|
|
5
|
+
interface JwConfig {
|
|
6
|
+
pid?: string;
|
|
7
|
+
mute?: boolean;
|
|
8
|
+
forceLegacyConfig?: boolean;
|
|
9
|
+
useTextureView?: boolean;
|
|
10
|
+
autostart?: boolean;
|
|
11
|
+
nextupoffset?: string | number; // String with % or number
|
|
12
|
+
repeat?: boolean;
|
|
13
|
+
allowCrossProtocolRedirectsSupport?: boolean; // maybe android only?
|
|
14
|
+
displaytitle?: boolean;
|
|
15
|
+
displaydescription?: boolean;
|
|
16
|
+
stretching?: JwStretching;
|
|
17
|
+
thumbnailPreview?: JwThumbnailPreview;
|
|
18
|
+
preload?: boolean;
|
|
19
|
+
playlist?: JwPlaylistItem[] | string;
|
|
20
|
+
sources?: JwSource[]; // Can be used in place of `playlist` to build a playlist, but not recommended (cannot be used for DRM)
|
|
21
|
+
file?: string; // Can be used in place of `playlist` to build a playlist, but not recommended (cannot be used for DRM)
|
|
22
|
+
playlistIndex?: number;
|
|
23
|
+
related?: JwRelatedConfig;
|
|
24
|
+
uiConfig?: JwUiConfig;
|
|
25
|
+
logoView?: JwLogoView;
|
|
26
|
+
advertising?: JwAdvertisingConfig;
|
|
27
|
+
playbackRates?: number[];
|
|
28
|
+
playbackRateControls?: boolean;
|
|
29
|
+
license: string;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
type JwThumbnailPreview = 101 | 102 | 103;
|
|
33
|
+
|
|
34
|
+
type JwStretching = "uniform" | "fill" | "exactfit" | "none";
|
|
35
|
+
|
|
36
|
+
type JwAdvertisingConfig = VmapAdvertisingConfig | VastAdvertisingConfig | ImaVmapAdvertisingConfig
|
|
37
|
+
| ImaAdvertisingConfig | ImaDaiAdvertisingConfig;
|
|
38
|
+
|
|
39
|
+
interface JwAdRules {
|
|
40
|
+
startOn?: number;
|
|
41
|
+
frequency?: number;
|
|
42
|
+
timeBetweenAds?: number;
|
|
43
|
+
startOnSeek?: JwStartOnSeek;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
type JwStartOnSeek = "pre" | "none";
|
|
47
|
+
interface VmapAdvertisingConfig {
|
|
48
|
+
cuetext?: string;
|
|
49
|
+
adpodmessage?: string;
|
|
50
|
+
vpaidcontrols?: boolean;
|
|
51
|
+
requestTimeout?: number;
|
|
52
|
+
creativeTimeout?: number;
|
|
53
|
+
conditionaladoptout?: boolean;
|
|
54
|
+
schedule: string; // Must bestring for VMAP
|
|
55
|
+
rules?: JwAdRules;
|
|
56
|
+
allowedOmidVendors?: string[];
|
|
57
|
+
omidSupport?: JwOmidSupport;
|
|
58
|
+
admessage?: string;
|
|
59
|
+
skipmessage?: string;
|
|
60
|
+
skiptext?: string;
|
|
61
|
+
skipoffset?: number;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
interface VastAdvertisingConfig {
|
|
65
|
+
cuetext?: string;
|
|
66
|
+
adpodmessage?: string;
|
|
67
|
+
vpaidcontrols?: boolean;
|
|
68
|
+
requestTimeout?: number;
|
|
69
|
+
creativeTimeout?: number;
|
|
70
|
+
conditionaladoptout?: boolean;
|
|
71
|
+
schedule?: JwAdBreak[]; // Array of breaks or object of breaks
|
|
72
|
+
rules: JwAdRules;
|
|
73
|
+
allowedOmidVendors?: string[];
|
|
74
|
+
omidSupport?: JwOmidSupport;
|
|
75
|
+
admessage?: string;
|
|
76
|
+
skipmessage?: string;
|
|
77
|
+
skiptext?: string;
|
|
78
|
+
skipoffset?: number;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
type JwOmidSupport = "auto" | "enabled" | "disabled";
|
|
82
|
+
|
|
83
|
+
interface ImaVmapAdvertisingConfig {
|
|
84
|
+
imaSdkSettings?: JwImaSdkSettings;
|
|
85
|
+
tag?: string;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
interface ImaAdvertisingConfig {
|
|
89
|
+
imaSdkSettings?: JwImaSdkSettings;
|
|
90
|
+
schedule?: JwAdBreak[] | JwAdBreak; // Array of breaks or object of breaks
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
interface ImaDaiAdvertisingConfig {
|
|
94
|
+
imaDaiSettings?: JwImaDaiSettings;
|
|
95
|
+
imaSdkSettings?: JwImaSdkSettings;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
interface JwImaSdkSettings {
|
|
99
|
+
sessionId?: string;
|
|
100
|
+
ppid?: string;
|
|
101
|
+
autoPlayAdBreaks?: boolean;
|
|
102
|
+
language?: string;
|
|
103
|
+
maxRedirects?: number; //int
|
|
104
|
+
playerType?: string;
|
|
105
|
+
playerVersion?: string;
|
|
106
|
+
isDebugMode?: boolean;
|
|
107
|
+
doesRestrictToCustomPlayer?: boolean;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
interface JwLogoView {
|
|
111
|
+
imageFile: string;
|
|
112
|
+
fades: boolean; // margin required for fade on Android
|
|
113
|
+
margin?: number;
|
|
114
|
+
position?: JwLogoPosition;
|
|
115
|
+
webLink: string;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
type JwLogoPosition = "topLeft" | "topRight" | "bottomLeft" | "bottomRight";
|
|
119
|
+
|
|
120
|
+
interface JwUiConfig { // all default to false. When using this, it's specify all or they are assumed false
|
|
121
|
+
hasOverlay?: boolean;
|
|
122
|
+
hasControlbar?: boolean;
|
|
123
|
+
hasCenterControls?: boolean;
|
|
124
|
+
hasNextUp?: boolean;
|
|
125
|
+
hasSideSeek?: boolean;
|
|
126
|
+
hasLogoView?: boolean;
|
|
127
|
+
hasError?: boolean;
|
|
128
|
+
hasPlaylist?: boolean;
|
|
129
|
+
hasQualitySubMenu?: boolean;
|
|
130
|
+
hasCaptionsSubMenu?: boolean;
|
|
131
|
+
hasPlaybackRatesSubMenu?: boolean;
|
|
132
|
+
hasAudiotracksSubMenu?: boolean;
|
|
133
|
+
hasMenu?: boolean;
|
|
134
|
+
hasPlayerControlsContainer?: boolean;
|
|
135
|
+
hasCastingMenu?: boolean;
|
|
136
|
+
hasChapters?: boolean;
|
|
137
|
+
hasAds?: boolean;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
interface JwRelatedConfig {
|
|
141
|
+
file?: string;
|
|
142
|
+
oncomplete?: JwRelatedOnComplete;
|
|
143
|
+
onclick?: JwOnRelatedClick;
|
|
144
|
+
// autoplaymessage: string; // deprecated
|
|
145
|
+
autoplaytimer: number;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
interface JwPlaylistItem {
|
|
149
|
+
title?: string;
|
|
150
|
+
description?: string;
|
|
151
|
+
file?: string;
|
|
152
|
+
image?: string;
|
|
153
|
+
mediaid?: string;
|
|
154
|
+
feedid?: string;
|
|
155
|
+
recommendations?: string;
|
|
156
|
+
starttime?: number; // double -- default 0.0
|
|
157
|
+
duration: number; // int -- default 0
|
|
158
|
+
tracks?: JwTrack[];
|
|
159
|
+
sources?: JwSource[];
|
|
160
|
+
externalMetadata?: JwExternalMetadata[];
|
|
161
|
+
adschedule?: JwAdBreak[]; // array of schedules
|
|
162
|
+
schedule?: { [key: string]: JwAdBreak };
|
|
163
|
+
imaDaiSettings?: JwImaDaiSettings;
|
|
164
|
+
httpheaders?: { [key: string]: string };
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
interface JwImaDaiSettings {
|
|
168
|
+
videoID?: string;
|
|
169
|
+
cmsID?: string;
|
|
170
|
+
assetKey?: string;
|
|
171
|
+
apiKey?: string;
|
|
172
|
+
streamType?: string;
|
|
173
|
+
adTagParameters?: { [key: string]: string };
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
interface JwAdBreak {
|
|
177
|
+
ad?: string | string[];
|
|
178
|
+
offset?: string;
|
|
179
|
+
skipoffset?: number;
|
|
180
|
+
type?: JwAdType;
|
|
181
|
+
custParams?: { [key: string]: string };
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
type JwAdType = "LINEAR" | "NONLINEAR";
|
|
185
|
+
|
|
186
|
+
interface JwExternalMetadata {
|
|
187
|
+
startTime?: number; // double
|
|
188
|
+
endTime?: number; // double
|
|
189
|
+
id: number; // int
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
interface JwSource {
|
|
193
|
+
drm?: JwDrm;
|
|
194
|
+
file?: string;
|
|
195
|
+
label?: string;
|
|
196
|
+
default?: string;
|
|
197
|
+
type?: string;
|
|
198
|
+
httpheaders?: { [key: string]: string };
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
interface JwDrm {
|
|
202
|
+
widevine?: JwWidevine;
|
|
203
|
+
fairplay?: JwFairplay;
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
interface JwFairplay {
|
|
207
|
+
processSpcUrl?: string;
|
|
208
|
+
certificateUrl?: string;
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
interface JwWidevine {
|
|
212
|
+
url?: string;
|
|
213
|
+
keySetId?: string;
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
interface JwTrack {
|
|
217
|
+
id?: string;
|
|
218
|
+
file?: string;
|
|
219
|
+
kind: string;
|
|
220
|
+
label?: string;
|
|
221
|
+
default?: boolean;
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
type JwRelatedOnComplete = "hide" | "show" | "none" | "autoplay";
|
|
225
|
+
|
|
226
|
+
type JwOnRelatedClick = "play" | "link";
|
|
227
|
+
|
|
228
|
+
interface AudioTrack {
|
|
229
|
+
autoSelect: boolean;
|
|
230
|
+
defaultTrack: boolean;
|
|
231
|
+
groupId: string;
|
|
232
|
+
language: string;
|
|
233
|
+
name: string;
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
export interface QualityLevel {
|
|
237
|
+
playListPosition: number;
|
|
238
|
+
bitRate: number;
|
|
239
|
+
label: string;
|
|
240
|
+
height: number;
|
|
241
|
+
width: number;
|
|
242
|
+
index: number;
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
interface CastingDevice {
|
|
246
|
+
name?: string;
|
|
247
|
+
identifier?: string;
|
|
248
|
+
}
|
|
249
|
+
interface Source {
|
|
250
|
+
file: string;
|
|
251
|
+
label: string;
|
|
252
|
+
default?: boolean;
|
|
253
|
+
}
|
|
254
|
+
interface Track {
|
|
255
|
+
file: string;
|
|
256
|
+
label: string;
|
|
257
|
+
default?: boolean;
|
|
258
|
+
}
|
|
259
|
+
interface JWAdSettings {
|
|
260
|
+
allowsBackgroundPlayback?: boolean;
|
|
261
|
+
// Add other ad settings properties as needed
|
|
262
|
+
}
|
|
263
|
+
interface IMASettings {
|
|
264
|
+
locale?: string;
|
|
265
|
+
ppid?: string;
|
|
266
|
+
maxRedirects?: number;
|
|
267
|
+
sessionID?: string;
|
|
268
|
+
debugMode?: boolean;
|
|
269
|
+
}
|
|
270
|
+
interface AdSchedule {
|
|
271
|
+
tag: string;
|
|
272
|
+
offset: string;
|
|
273
|
+
}
|
|
274
|
+
// interface CompanionAdSlot {
|
|
275
|
+
// viewId: string; // Reference to a UIView in the application
|
|
276
|
+
// size?: { width: number; height: number };
|
|
277
|
+
// }
|
|
278
|
+
interface GoogleDAIStream {
|
|
279
|
+
videoID?: string;
|
|
280
|
+
cmsID?: string;
|
|
281
|
+
assetKey?: string;
|
|
282
|
+
apiKey?: string;
|
|
283
|
+
adTagParameters?: { [key: string]: string };
|
|
284
|
+
}
|
|
285
|
+
interface AdRule {
|
|
286
|
+
startOn: number;
|
|
287
|
+
frequency: number;
|
|
288
|
+
timeBetweenAds: number;
|
|
289
|
+
startOnSeek: 'none' | 'pre'; // Mapped from JWAdShownOnSeek
|
|
290
|
+
}
|
|
291
|
+
// interface FriendlyObstruction {
|
|
292
|
+
// viewId: string;
|
|
293
|
+
// purpose: 'mediaControls' | 'closeAd' | 'notVisible' | 'other'; // Mapped from JWFriendlyObstructionPurpose
|
|
294
|
+
// reason?: string;
|
|
295
|
+
// }
|
|
296
|
+
type ClientTypes = "vast" | "ima" | "ima_dai";
|
|
297
|
+
interface VASTAdvertising {
|
|
298
|
+
adSchedule?: AdSchedule[];
|
|
299
|
+
adVmap?: string;
|
|
300
|
+
tag?: string; // Vast xml url
|
|
301
|
+
openBrowserOnAdClick?: boolean;
|
|
302
|
+
adClient: "vast";
|
|
303
|
+
adRules?: AdRule;
|
|
304
|
+
adSettings?: JWAdSettings;
|
|
305
|
+
}
|
|
306
|
+
interface IMAAdvertising {
|
|
307
|
+
adSchedule?: AdSchedule[];
|
|
308
|
+
adVmap?: string;
|
|
309
|
+
tag?: string; // Vast xml url
|
|
310
|
+
adClient: "ima";
|
|
311
|
+
adRules?: AdRule;
|
|
312
|
+
imaSettings?: IMASettings;
|
|
313
|
+
// companionAdSlots?: CompanionAdSlot[];
|
|
314
|
+
// friendlyObstructions?: FriendlyObstruction[];
|
|
315
|
+
}
|
|
316
|
+
interface IMA_DAIAdvertising {
|
|
317
|
+
adClient: "ima_dai";
|
|
318
|
+
imaSettings?: IMASettings;
|
|
319
|
+
// friendlyObstructions?: FriendlyObstruction[];
|
|
320
|
+
googleDAIStream?: GoogleDAIStream;
|
|
321
|
+
}
|
|
322
|
+
type Advertising = VASTAdvertising | IMAAdvertising | IMA_DAIAdvertising;
|
|
323
|
+
interface PlaylistItem {
|
|
324
|
+
file: string;
|
|
325
|
+
sources?: Source[];
|
|
326
|
+
image?: string;
|
|
327
|
+
title?: string;
|
|
328
|
+
description?: string;
|
|
329
|
+
mediaId?: string;
|
|
330
|
+
adSchedule?: AdSchedule[];
|
|
331
|
+
adVmap?: string;
|
|
332
|
+
tracks?: Track[];
|
|
333
|
+
recommendations?: string;
|
|
334
|
+
startTime?: number;
|
|
335
|
+
autostart?: boolean;
|
|
336
|
+
}
|
|
337
|
+
type RelatedOnClicks = "play" | "link";
|
|
338
|
+
type RelatedOnCompletes = "show" | "hide" | "autoplay";
|
|
339
|
+
interface Related {
|
|
340
|
+
onClick?: RelatedOnClicks;
|
|
341
|
+
onComplete?: RelatedOnCompletes;
|
|
342
|
+
heading?: string;
|
|
343
|
+
url?: string;
|
|
344
|
+
autoplayMessage?: string;
|
|
345
|
+
autoplayTimer?: number;
|
|
346
|
+
}
|
|
347
|
+
interface Font {
|
|
348
|
+
name?: string;
|
|
349
|
+
size?: number;
|
|
350
|
+
}
|
|
351
|
+
type EdgeStyles = "none" | "dropshadow" | "raised" | "depressed" | "uniform";
|
|
352
|
+
interface Styling {
|
|
353
|
+
colors?: {
|
|
354
|
+
buttons?: string;
|
|
355
|
+
backgroundColor?: string;
|
|
356
|
+
fontColor?: string;
|
|
357
|
+
timeslider?: { progress?: string; rail?: string; thumb?: string };
|
|
358
|
+
};
|
|
359
|
+
font?: Font;
|
|
360
|
+
displayTitle?: boolean;
|
|
361
|
+
displayDescription?: boolean;
|
|
362
|
+
captionsStyle?: {
|
|
363
|
+
font?: Font;
|
|
364
|
+
fontColor?: string;
|
|
365
|
+
backgroundColor?: string;
|
|
366
|
+
highlightColor?: string;
|
|
367
|
+
edgeStyle?: EdgeStyles;
|
|
368
|
+
};
|
|
369
|
+
menuStyle: {
|
|
370
|
+
font?: Font;
|
|
371
|
+
fontColor?: string;
|
|
372
|
+
backgroundColor?: string;
|
|
373
|
+
};
|
|
374
|
+
}
|
|
375
|
+
type Preloads = "auto" | "none";
|
|
376
|
+
type InterfaceBehaviors = "normal" | "hidden" | "onscreen";
|
|
377
|
+
type UIGroups =
|
|
378
|
+
| "overlay"
|
|
379
|
+
| "control_bar"
|
|
380
|
+
| "center_controls"
|
|
381
|
+
| "next_up"
|
|
382
|
+
| "error"
|
|
383
|
+
| "playlist"
|
|
384
|
+
| "controls_container"
|
|
385
|
+
| "settings_menu"
|
|
386
|
+
| "quality_submenu"
|
|
387
|
+
| "captions_submenu"
|
|
388
|
+
| "playback_submenu"
|
|
389
|
+
| "audiotracks_submenu"
|
|
390
|
+
| "casting_menu";
|
|
391
|
+
type AudioSessionCategory =
|
|
392
|
+
| "Ambient"
|
|
393
|
+
| "SoloAmbient"
|
|
394
|
+
| "Playback"
|
|
395
|
+
| "Record"
|
|
396
|
+
| "PlayAndRecord"
|
|
397
|
+
| "MultiRoute";
|
|
398
|
+
type AudioSessionCategoryOptions =
|
|
399
|
+
| "MixWithOthers"
|
|
400
|
+
| "DuckOthers"
|
|
401
|
+
| "AllowBluetooth"
|
|
402
|
+
| "DefaultToSpeaker"
|
|
403
|
+
| "InterruptSpokenAudioAndMix"
|
|
404
|
+
| "AllowBluetoothA2DP"
|
|
405
|
+
| "AllowAirPlay"
|
|
406
|
+
| "OverrideMutedMicrophone";
|
|
407
|
+
type AudioSessionMode =
|
|
408
|
+
| "Default"
|
|
409
|
+
| "VoiceChat"
|
|
410
|
+
| "VideoChat"
|
|
411
|
+
| "GameChat"
|
|
412
|
+
| "VideoRecording"
|
|
413
|
+
| "Measurement"
|
|
414
|
+
| "MoviePlayback"
|
|
415
|
+
| "SpokenAudio"
|
|
416
|
+
| "VoicePrompt";
|
|
417
|
+
type JWControlType =
|
|
418
|
+
| "forward"
|
|
419
|
+
| "rewind"
|
|
420
|
+
| "pip"
|
|
421
|
+
| "airplay"
|
|
422
|
+
| "chromecast"
|
|
423
|
+
| "next"
|
|
424
|
+
| "previous"
|
|
425
|
+
| "settings"
|
|
426
|
+
| "languages"
|
|
427
|
+
| "fullscreen";
|
|
428
|
+
interface Config {
|
|
429
|
+
license: string;
|
|
430
|
+
advertising?: Advertising;
|
|
431
|
+
autostart?: boolean;
|
|
432
|
+
controls?: boolean;
|
|
433
|
+
repeat?: boolean;
|
|
434
|
+
nextUpStyle?: { offsetSeconds: number; offsetPercentage: number };
|
|
435
|
+
styling?: Styling;
|
|
436
|
+
backgroundAudioEnabled?: boolean;
|
|
437
|
+
category?: AudioSessionCategory;
|
|
438
|
+
categoryOptions?: Array<AudioSessionCategoryOptions>;
|
|
439
|
+
mode?: AudioSessionMode;
|
|
440
|
+
fullScreenOnLandscape?: boolean;
|
|
441
|
+
landscapeOnFullScreen?: boolean;
|
|
442
|
+
portraitOnExitFullScreen?: boolean;
|
|
443
|
+
exitFullScreenOnPortrait?: boolean;
|
|
444
|
+
playlist?: PlaylistItem[];
|
|
445
|
+
stretching?: string;
|
|
446
|
+
related?: Related;
|
|
447
|
+
preload?: Preloads;
|
|
448
|
+
interfaceBehavior?: InterfaceBehaviors;
|
|
449
|
+
interfaceFadeDelay?: number;
|
|
450
|
+
hideUIGroups?: UIGroups[];
|
|
451
|
+
processSpcUrl?: string;
|
|
452
|
+
fairplayCertUrl?: string;
|
|
453
|
+
contentUUID?: string;
|
|
454
|
+
viewOnly?: boolean;
|
|
455
|
+
enableLockScreenControls: boolean;
|
|
456
|
+
pipEnabled: boolean;
|
|
457
|
+
}
|
|
458
|
+
interface BaseEvent<T> {
|
|
459
|
+
nativeEvent: T;
|
|
460
|
+
}
|
|
461
|
+
interface SeekEventProps {
|
|
462
|
+
position: number;
|
|
463
|
+
offset: number;
|
|
464
|
+
}
|
|
465
|
+
interface SeekedEventProps {
|
|
466
|
+
position: number;
|
|
467
|
+
}
|
|
468
|
+
interface RateChangedEventProps {
|
|
469
|
+
rate: number;
|
|
470
|
+
at: number;
|
|
471
|
+
}
|
|
472
|
+
interface TimeEventProps {
|
|
473
|
+
position: number;
|
|
474
|
+
duration: number;
|
|
475
|
+
}
|
|
476
|
+
interface ControlBarVisibleEventProps {
|
|
477
|
+
visible: boolean;
|
|
478
|
+
}
|
|
479
|
+
interface PlaylistEventProps {
|
|
480
|
+
playlist: PlaylistItem[]
|
|
481
|
+
}
|
|
482
|
+
interface PlaylistItemEventProps {
|
|
483
|
+
playlistItem: PlaylistItem
|
|
484
|
+
}
|
|
485
|
+
interface PlayerErrorEventProps {
|
|
486
|
+
code: string;
|
|
487
|
+
error: string;
|
|
488
|
+
}
|
|
489
|
+
interface PlayerWarningEventProps {
|
|
490
|
+
code: string;
|
|
491
|
+
warning: string;
|
|
492
|
+
}
|
|
493
|
+
interface AdEventProps {
|
|
494
|
+
client?: string;
|
|
495
|
+
reason?: string;
|
|
496
|
+
type: number;
|
|
497
|
+
}
|
|
498
|
+
type NativeError = (event: BaseEvent<PlayerErrorEventProps>) => void;
|
|
499
|
+
type NativeWarning = (event: BaseEvent<PlayerWarningEventProps>) => void;
|
|
500
|
+
interface PropsType {
|
|
501
|
+
config: Config | JwConfig;
|
|
502
|
+
style?: ViewStyle;
|
|
503
|
+
controls?: boolean;
|
|
504
|
+
forceLegacyConfig?: boolean;
|
|
505
|
+
onPlayerReady?: () => void;
|
|
506
|
+
onPlaylist?: (event: BaseEvent<PlaylistEventProps>) => void;
|
|
507
|
+
onBeforePlay?: () => void;
|
|
508
|
+
onBeforeComplete?: () => void;
|
|
509
|
+
onComplete?: () => void;
|
|
510
|
+
onPlay?: () => void;
|
|
511
|
+
onPause?: () => void;
|
|
512
|
+
onSeek?: (event: BaseEvent<SeekEventProps>) => void;
|
|
513
|
+
onSeeked?: (event?: BaseEvent<SeekedEventProps>) => void;
|
|
514
|
+
onRateChanged?: (event?: BaseEvent<RateChangedEventProps>) => void;
|
|
515
|
+
onSetupPlayerError?: NativeError;
|
|
516
|
+
onPlayerError?: NativeError;
|
|
517
|
+
onPlayerWarning?: NativeWarning;
|
|
518
|
+
onPlayerAdError?: NativeError;
|
|
519
|
+
onPlayerAdWarning?: NativeWarning;
|
|
520
|
+
onAdEvent?: (event: BaseEvent<AdEventProps>) => void;
|
|
521
|
+
onAdTime?: (event: BaseEvent<TimeEventProps>) => void;
|
|
522
|
+
onBuffer?: () => void;
|
|
523
|
+
onTime?: (event: BaseEvent<TimeEventProps>) => void;
|
|
524
|
+
onFullScreenRequested?: () => void;
|
|
525
|
+
onFullScreen?: () => void;
|
|
526
|
+
onFullScreenExitRequested?: () => void;
|
|
527
|
+
onFullScreenExit?: () => void;
|
|
528
|
+
onControlBarVisible?: (event: BaseEvent<ControlBarVisibleEventProps>) => void;
|
|
529
|
+
onPlaylistComplete?: () => void;
|
|
530
|
+
onPlaylistItem?: (event: BaseEvent<PlaylistItemEventProps>) => void;
|
|
531
|
+
onAudioTracks?: () => void;
|
|
532
|
+
shouldComponentUpdate?: (nextProps: any, nextState: any) => boolean;
|
|
533
|
+
}
|
|
534
|
+
|
|
535
|
+
export default class JWPlayer extends React.Component<PropsType> {
|
|
536
|
+
pause(): void;
|
|
537
|
+
play(): void;
|
|
538
|
+
stop(): void;
|
|
539
|
+
toggleSpeed(): void;
|
|
540
|
+
setSpeed(speed: number): void;
|
|
541
|
+
setCurrentQuality(index: number): void;
|
|
542
|
+
currentQuality(): number;
|
|
543
|
+
getQualityLevels(): Promise<QualityLevel[] | null>;
|
|
544
|
+
setVolume(volume: number): void;
|
|
545
|
+
setPlaylistIndex(index: number): void;
|
|
546
|
+
setControls(show: boolean): void;
|
|
547
|
+
setLockScreenControls(show: boolean): void;
|
|
548
|
+
seekTo(time: number): void;
|
|
549
|
+
loadPlaylist(playlistItems: PlaylistItem[]): void;
|
|
550
|
+
setFullscreen(fullScreen: boolean): void;
|
|
551
|
+
position(): Promise<number>;
|
|
552
|
+
setUpCastController(): void;
|
|
553
|
+
presentCastDialog(): void;
|
|
554
|
+
connectedDevice(): Promise<CastingDevice | null>;
|
|
555
|
+
availableDevices(): Promise<CastingDevice[] | null>;
|
|
556
|
+
castState(): Promise<number | null>;
|
|
557
|
+
playerState(): Promise<number | null>;
|
|
558
|
+
getAudioTracks(): Promise<AudioTrack[] | null>;
|
|
559
|
+
getCurrentAudioTrack(): Promise<number | null>;
|
|
560
|
+
setCurrentAudioTrack(index: number): void;
|
|
561
|
+
setCurrentCaptions(index: number): void;
|
|
562
|
+
setVisibility(visibility: boolean, controls: JWControlType[]): void;
|
|
563
|
+
}
|
|
564
|
+
}
|