@capgo/capacitor-youtube-player 8.2.0 → 8.2.1
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 +306 -190
- package/dist/docs.json +663 -441
- package/dist/esm/definitions.d.ts +139 -96
- package/dist/esm/web.d.ts +42 -42
- package/dist/esm/web.js +44 -44
- package/dist/esm/web.js.map +1 -1
- package/dist/plugin.cjs.js +44 -44
- package/dist/plugin.cjs.js.map +1 -1
- package/dist/plugin.js +44 -44
- package/dist/plugin.js.map +1 -1
- package/ios/Sources/YoutubePlayerPlugin/YoutubePlayerPlugin.swift +1 -1
- package/package.json +1 -1
package/dist/plugin.js
CHANGED
|
@@ -202,7 +202,7 @@ var capacitorYoutubePlayer = (function (exports, core) {
|
|
|
202
202
|
return Promise.resolve(playerReady);
|
|
203
203
|
}
|
|
204
204
|
}
|
|
205
|
-
async destroy(playerId) {
|
|
205
|
+
async destroy({ playerId }) {
|
|
206
206
|
this.playerLogger.log(`player "${playerId}" -> destroy`);
|
|
207
207
|
this.players[playerId].destroy();
|
|
208
208
|
return Promise.resolve({ result: { method: 'destroy', value: true } });
|
|
@@ -212,27 +212,27 @@ var capacitorYoutubePlayer = (function (exports, core) {
|
|
|
212
212
|
// Stops and cancels loading of the current video. This function should be reserved for rare situations when you know that the user will not be watching
|
|
213
213
|
// additional video in the player. If your intent is to pause the video, you should just call the pauseVideo function. If you want to change the video
|
|
214
214
|
// that the player is playing, you can call one of the queueing functions without calling stopVideo first.
|
|
215
|
-
async stopVideo(playerId) {
|
|
215
|
+
async stopVideo({ playerId }) {
|
|
216
216
|
this.playerLogger.log(`player "${playerId}" -> stopVideo`);
|
|
217
217
|
this.players[playerId].stopVideo();
|
|
218
218
|
return Promise.resolve({ result: { method: 'stopVideo', value: true } });
|
|
219
219
|
}
|
|
220
220
|
// Plays the currently cued/loaded video. The final player state after this function executes will be playing (1).
|
|
221
|
-
async playVideo(playerId) {
|
|
221
|
+
async playVideo({ playerId }) {
|
|
222
222
|
this.playerLogger.log(`player "${playerId}" -> playVideo`);
|
|
223
223
|
this.players[playerId].playVideo();
|
|
224
224
|
return Promise.resolve({ result: { method: 'playVideo', value: true } });
|
|
225
225
|
}
|
|
226
226
|
// Pauses the currently playing video. The final player state after this function executes will be paused (2) unless the player is in the ended (0)
|
|
227
227
|
// state when the function is called, in which case the player state will not change.
|
|
228
|
-
async pauseVideo(playerId) {
|
|
228
|
+
async pauseVideo({ playerId }) {
|
|
229
229
|
this.playerLogger.log(`player "${playerId}" -> pauseVideo`);
|
|
230
230
|
this.players[playerId].pauseVideo();
|
|
231
231
|
return Promise.resolve({ result: { method: 'pauseVideo', value: true } });
|
|
232
232
|
}
|
|
233
233
|
// Seeks to a specified time in the video. If the player is paused when the function is called, it will remain paused. If the function is called from
|
|
234
234
|
// another state (playing, video cued, etc.), the player will play the video.
|
|
235
|
-
async seekTo(playerId, seconds, allowSeekAhead) {
|
|
235
|
+
async seekTo({ playerId, seconds, allowSeekAhead, }) {
|
|
236
236
|
this.playerLogger.log(`player "${playerId}" -> seekTo ${seconds} seconds`);
|
|
237
237
|
this.players[playerId].seekTo(seconds, allowSeekAhead);
|
|
238
238
|
return Promise.resolve({
|
|
@@ -240,23 +240,23 @@ var capacitorYoutubePlayer = (function (exports, core) {
|
|
|
240
240
|
});
|
|
241
241
|
}
|
|
242
242
|
// Loads and plays the specified video.
|
|
243
|
-
async loadVideoById(playerId, options) {
|
|
243
|
+
async loadVideoById({ playerId, options, }) {
|
|
244
244
|
this.playerLogger.log(`player "${playerId}" -> loadVideoById with options ${options}`);
|
|
245
245
|
this.players[playerId].loadVideoById(options);
|
|
246
246
|
return Promise.resolve({ result: { method: 'loadVideoById', value: true, options: options } });
|
|
247
247
|
}
|
|
248
248
|
// Loads the specified video's thumbnail and prepares the player to play the video. The player does not request the FLV until playVideo() or seekTo() is called.
|
|
249
|
-
async cueVideoById(playerId, options) {
|
|
249
|
+
async cueVideoById({ playerId, options, }) {
|
|
250
250
|
this.playerLogger.log(`player "${playerId}" -> cueVideoById with options ${options}`);
|
|
251
251
|
this.players[playerId].cueVideoById(options);
|
|
252
252
|
return Promise.resolve({ result: { method: 'cueVideoById', value: true, options: options } });
|
|
253
253
|
}
|
|
254
|
-
async loadVideoByUrl(playerId, options) {
|
|
254
|
+
async loadVideoByUrl({ playerId, options, }) {
|
|
255
255
|
this.playerLogger.log(`player "${playerId}" -> loadVideoByUrl with options ${options}`);
|
|
256
256
|
this.players[playerId].loadVideoByUrl(options);
|
|
257
257
|
return Promise.resolve({ result: { method: 'loadVideoByUrl', value: true, options: options } });
|
|
258
258
|
}
|
|
259
|
-
async cueVideoByUrl(playerId, options) {
|
|
259
|
+
async cueVideoByUrl({ playerId, options, }) {
|
|
260
260
|
this.playerLogger.log(`player "${playerId}" -> cueVideoByUrl with options ${options}`);
|
|
261
261
|
this.players[playerId].cueVideoByUrl(options);
|
|
262
262
|
return Promise.resolve({ result: { method: 'cueVideoByUrl', value: true, options: options } });
|
|
@@ -264,12 +264,12 @@ var capacitorYoutubePlayer = (function (exports, core) {
|
|
|
264
264
|
/*********/
|
|
265
265
|
// Methods for playing playlist.
|
|
266
266
|
/*********/
|
|
267
|
-
async cuePlaylist(playerId, playlistOptions) {
|
|
267
|
+
async cuePlaylist({ playerId, playlistOptions, }) {
|
|
268
268
|
this.playerLogger.log(`player "${playerId}" -> cuePlaylist with options ${JSON.stringify(playlistOptions)}`);
|
|
269
269
|
this.players[playerId].cuePlaylist(playlistOptions);
|
|
270
270
|
return Promise.resolve({ result: { method: 'cuePlaylist', value: true } });
|
|
271
271
|
}
|
|
272
|
-
async loadPlaylist(playerId, playlistOptions) {
|
|
272
|
+
async loadPlaylist({ playerId, playlistOptions, }) {
|
|
273
273
|
this.playerLogger.log(`player "${playerId}" -> loadPlaylist with options ${playlistOptions}`);
|
|
274
274
|
this.players[playerId].loadPlaylist(playlistOptions);
|
|
275
275
|
return Promise.resolve({ result: { method: 'loadPlaylist', value: true } });
|
|
@@ -277,33 +277,33 @@ var capacitorYoutubePlayer = (function (exports, core) {
|
|
|
277
277
|
/*********/
|
|
278
278
|
// Methods for playing video in playlist.
|
|
279
279
|
/*********/
|
|
280
|
-
async nextVideo(playerId) {
|
|
280
|
+
async nextVideo({ playerId }) {
|
|
281
281
|
this.playerLogger.log(`player "${playerId}" -> nextVideo`);
|
|
282
282
|
this.players[playerId].nextVideo();
|
|
283
283
|
return Promise.resolve({ result: { method: 'nextVideo', value: true } });
|
|
284
284
|
}
|
|
285
|
-
async previousVideo(playerId) {
|
|
285
|
+
async previousVideo({ playerId }) {
|
|
286
286
|
this.playerLogger.log(`player "${playerId}" -> previousVideo`);
|
|
287
287
|
this.players[playerId].previousVideo();
|
|
288
288
|
return Promise.resolve({ result: { method: 'previousVideo', value: true } });
|
|
289
289
|
}
|
|
290
|
-
async playVideoAt(playerId, index) {
|
|
290
|
+
async playVideoAt({ playerId, index }) {
|
|
291
291
|
this.playerLogger.log(`player "${playerId}" -> playVideoAt`);
|
|
292
292
|
this.players[playerId].playVideoAt(index);
|
|
293
293
|
return Promise.resolve({ result: { method: 'playVideoAt', value: true } });
|
|
294
294
|
}
|
|
295
295
|
/*********/
|
|
296
296
|
// Methods for adjusting the playback speed.
|
|
297
|
-
async getPlaybackRate(playerId) {
|
|
297
|
+
async getPlaybackRate({ playerId }) {
|
|
298
298
|
this.playerLogger.log(`player "${playerId}" -> getPlaybackRate`);
|
|
299
299
|
return Promise.resolve({ result: { method: 'getPlaybackRate', value: this.players[playerId].getPlaybackRate() } });
|
|
300
300
|
}
|
|
301
|
-
async setPlaybackRate(playerId,
|
|
301
|
+
async setPlaybackRate({ playerId, suggestedRate, }) {
|
|
302
302
|
this.playerLogger.log(`player "${playerId}" -> setPlaybackRate`);
|
|
303
|
-
this.players[playerId].setPlaybackRate(
|
|
303
|
+
this.players[playerId].setPlaybackRate(suggestedRate);
|
|
304
304
|
return Promise.resolve({ result: { method: 'setPlaybackRate', value: true } });
|
|
305
305
|
}
|
|
306
|
-
async getAvailablePlaybackRates(playerId) {
|
|
306
|
+
async getAvailablePlaybackRates({ playerId, }) {
|
|
307
307
|
this.playerLogger.log(`player -> getAvailablePlaybackRates`);
|
|
308
308
|
return Promise.resolve({
|
|
309
309
|
result: { method: 'getAvailablePlaybackRates', value: this.players[playerId].getAvailablePlaybackRates() },
|
|
@@ -313,44 +313,44 @@ var capacitorYoutubePlayer = (function (exports, core) {
|
|
|
313
313
|
/*********/
|
|
314
314
|
// Methods for playlist playback settings
|
|
315
315
|
/*********/
|
|
316
|
-
async setLoop(playerId,
|
|
316
|
+
async setLoop({ playerId, loopPlaylists }) {
|
|
317
317
|
this.playerLogger.log(`player "${playerId}" -> setLoop`);
|
|
318
|
-
this.players[playerId].setLoop(
|
|
318
|
+
this.players[playerId].setLoop(loopPlaylists);
|
|
319
319
|
return Promise.resolve({ result: { method: 'setLoop', value: true } });
|
|
320
320
|
}
|
|
321
|
-
async setShuffle(playerId,
|
|
321
|
+
async setShuffle({ playerId, shufflePlaylist, }) {
|
|
322
322
|
this.playerLogger.log(`player "${playerId}" -> setShuffle`);
|
|
323
|
-
this.players[playerId].setShuffle(
|
|
323
|
+
this.players[playerId].setShuffle(shufflePlaylist);
|
|
324
324
|
return Promise.resolve({ result: { method: 'setShuffle', value: true } });
|
|
325
325
|
}
|
|
326
326
|
/*********/
|
|
327
327
|
// Methods changing the player volume.
|
|
328
328
|
/*********/
|
|
329
329
|
// Mutes the player.
|
|
330
|
-
async mute(playerId) {
|
|
330
|
+
async mute({ playerId }) {
|
|
331
331
|
this.playerLogger.log(`player "${playerId}" -> mute`);
|
|
332
332
|
this.players[playerId].mute();
|
|
333
333
|
return Promise.resolve({ result: { method: 'mute', value: true } });
|
|
334
334
|
}
|
|
335
335
|
// Unmutes the player.
|
|
336
|
-
async unMute(playerId) {
|
|
336
|
+
async unMute({ playerId }) {
|
|
337
337
|
this.playerLogger.log(`player "${playerId}" -> unMute`);
|
|
338
338
|
this.players[playerId].unMute();
|
|
339
339
|
return Promise.resolve({ result: { method: 'unMute', value: true } });
|
|
340
340
|
}
|
|
341
341
|
// Returns true if the player is muted, false if not.
|
|
342
|
-
async isMuted(playerId) {
|
|
342
|
+
async isMuted({ playerId }) {
|
|
343
343
|
this.playerLogger.log(`player "${playerId}" -> isMuted`);
|
|
344
344
|
return Promise.resolve({ result: { method: 'isMuted', value: this.players[playerId].isMuted() } });
|
|
345
345
|
}
|
|
346
346
|
// Sets the volume. Accepts an integer between 0 and 100.
|
|
347
|
-
async setVolume(playerId, volume) {
|
|
347
|
+
async setVolume({ playerId, volume }) {
|
|
348
348
|
this.playerLogger.log(`player "${playerId}" -> setVolume ${volume}`);
|
|
349
349
|
this.players[playerId].setVolume(volume);
|
|
350
350
|
return Promise.resolve({ result: { method: 'setVolume', value: volume } });
|
|
351
351
|
}
|
|
352
352
|
// Returns the player's current volume, an integer between 0 and 100. Note that getVolume() will return the volume even if the player is muted.
|
|
353
|
-
async getVolume(playerId) {
|
|
353
|
+
async getVolume({ playerId }) {
|
|
354
354
|
this.playerLogger.log(`player "${playerId}" -> getVolume`);
|
|
355
355
|
return Promise.resolve({ result: { method: 'getVolume', value: this.players[playerId].getVolume() } });
|
|
356
356
|
}
|
|
@@ -358,7 +358,7 @@ var capacitorYoutubePlayer = (function (exports, core) {
|
|
|
358
358
|
// Methods setting the player size.
|
|
359
359
|
/*********/
|
|
360
360
|
// Sets the size in pixels of the <iframe> that contains the player.
|
|
361
|
-
async setSize(playerId, width, height) {
|
|
361
|
+
async setSize({ playerId, width, height, }) {
|
|
362
362
|
this.playerLogger.log(`player "${playerId}" -> setSize width: ${width} height: ${height}`);
|
|
363
363
|
this.players[playerId].setSize(width, height);
|
|
364
364
|
return Promise.resolve({ result: { method: 'setSize', value: { width: width, height: height } } });
|
|
@@ -368,7 +368,7 @@ var capacitorYoutubePlayer = (function (exports, core) {
|
|
|
368
368
|
/*********/
|
|
369
369
|
// Returns a number between 0 and 1 that specifies the percentage of the video that the player shows as buffered.
|
|
370
370
|
// This method returns a more reliable number than the now-deprecated getVideoBytesLoaded and getVideoBytesTotal methods.
|
|
371
|
-
async getVideoLoadedFraction(playerId) {
|
|
371
|
+
async getVideoLoadedFraction({ playerId }) {
|
|
372
372
|
this.playerLogger.log(`player "${playerId}" -> getVideoLoadedFraction`);
|
|
373
373
|
return Promise.resolve({
|
|
374
374
|
result: { method: 'getVideoLoadedFraction', value: this.players[playerId].getVideoLoadedFraction() },
|
|
@@ -381,7 +381,7 @@ var capacitorYoutubePlayer = (function (exports, core) {
|
|
|
381
381
|
// 2 – paused
|
|
382
382
|
// 3 – buffering
|
|
383
383
|
// 5 – video cued
|
|
384
|
-
async getPlayerState(playerId) {
|
|
384
|
+
async getPlayerState({ playerId }) {
|
|
385
385
|
this.playerLogger.log(`player "${playerId}" -> getPlayerState`);
|
|
386
386
|
return Promise.resolve({ result: { method: 'getPlayerState', value: this.players[playerId].getPlayerState() } });
|
|
387
387
|
}
|
|
@@ -390,11 +390,11 @@ var capacitorYoutubePlayer = (function (exports, core) {
|
|
|
390
390
|
return Promise.resolve({ result: { method: 'getAllPlayersEventsState', value: this.playersEventsState } });
|
|
391
391
|
}
|
|
392
392
|
// Returns the elapsed time in seconds since the video started playing.
|
|
393
|
-
async getCurrentTime(playerId) {
|
|
393
|
+
async getCurrentTime({ playerId }) {
|
|
394
394
|
this.playerLogger.log(`player "${playerId}" -> getCurrentTime`);
|
|
395
395
|
return Promise.resolve({ result: { method: 'getCurrentTime', value: this.players[playerId].getCurrentTime() } });
|
|
396
396
|
}
|
|
397
|
-
async toggleFullScreen(playerId, isFullScreen) {
|
|
397
|
+
async toggleFullScreen({ playerId, isFullScreen, }) {
|
|
398
398
|
this.playerLogger.log(`player "${playerId}" -> toggleFullScreen`);
|
|
399
399
|
let { height, width } = this.defaultSizes;
|
|
400
400
|
if (!isFullScreen) {
|
|
@@ -407,18 +407,18 @@ var capacitorYoutubePlayer = (function (exports, core) {
|
|
|
407
407
|
/*********/
|
|
408
408
|
// Methods playback quality.
|
|
409
409
|
/*********/
|
|
410
|
-
async getPlaybackQuality(playerId) {
|
|
410
|
+
async getPlaybackQuality({ playerId, }) {
|
|
411
411
|
this.playerLogger.log(`player "${playerId}" -> getPlaybackQuality`);
|
|
412
412
|
return Promise.resolve({
|
|
413
413
|
result: { method: 'getPlaybackQuality', value: this.players[playerId].getPlaybackQuality() },
|
|
414
414
|
});
|
|
415
415
|
}
|
|
416
|
-
async setPlaybackQuality(playerId,
|
|
416
|
+
async setPlaybackQuality({ playerId, suggestedQuality, }) {
|
|
417
417
|
this.playerLogger.log(`player "${playerId}" -> setPlaybackQuality`);
|
|
418
|
-
this.players[playerId].setPlaybackQuality(
|
|
418
|
+
this.players[playerId].setPlaybackQuality(suggestedQuality);
|
|
419
419
|
return Promise.resolve({ result: { method: 'setPlaybackQuality', value: true } });
|
|
420
420
|
}
|
|
421
|
-
async getAvailableQualityLevels(playerId) {
|
|
421
|
+
async getAvailableQualityLevels({ playerId, }) {
|
|
422
422
|
this.playerLogger.log(`player "${playerId}" -> getAvailableQualityLevels`);
|
|
423
423
|
return Promise.resolve({
|
|
424
424
|
result: { method: 'getAvailableQualityLevels', value: this.players[playerId].getAvailableQualityLevels() },
|
|
@@ -427,15 +427,15 @@ var capacitorYoutubePlayer = (function (exports, core) {
|
|
|
427
427
|
/*********/
|
|
428
428
|
// Methods for retrieving video information.
|
|
429
429
|
/*********/
|
|
430
|
-
async getDuration(playerId) {
|
|
430
|
+
async getDuration({ playerId }) {
|
|
431
431
|
this.playerLogger.log(`player "${playerId}" -> getDuration`);
|
|
432
432
|
return Promise.resolve({ result: { method: 'getDuration', value: this.players[playerId].getDuration() } });
|
|
433
433
|
}
|
|
434
|
-
async getVideoUrl(playerId) {
|
|
434
|
+
async getVideoUrl({ playerId }) {
|
|
435
435
|
this.playerLogger.log(`player "${playerId}" -> getVideoUrl`);
|
|
436
436
|
return Promise.resolve({ result: { method: 'getVideoUrl', value: this.players[playerId].getVideoUrl() } });
|
|
437
437
|
}
|
|
438
|
-
async getVideoEmbedCode(playerId) {
|
|
438
|
+
async getVideoEmbedCode({ playerId }) {
|
|
439
439
|
this.playerLogger.log(`player "${playerId}" -> getVideoEmbedCode`);
|
|
440
440
|
return Promise.resolve({
|
|
441
441
|
result: { method: 'getVideoEmbedCode', value: this.players[playerId].getVideoEmbedCode() },
|
|
@@ -444,11 +444,11 @@ var capacitorYoutubePlayer = (function (exports, core) {
|
|
|
444
444
|
/*********/
|
|
445
445
|
// Methods for retrieving playlist information.
|
|
446
446
|
/*********/
|
|
447
|
-
async getPlaylist(playerId) {
|
|
447
|
+
async getPlaylist({ playerId }) {
|
|
448
448
|
this.playerLogger.log(`player "${playerId}" -> getPlaylist`);
|
|
449
449
|
return Promise.resolve({ result: { method: 'getPlaylist', value: this.players[playerId].getPlaylist() } });
|
|
450
450
|
}
|
|
451
|
-
async getPlaylistIndex(playerId) {
|
|
451
|
+
async getPlaylistIndex({ playerId }) {
|
|
452
452
|
this.playerLogger.log(`player "${playerId}" -> getPlaylistIndex`);
|
|
453
453
|
return Promise.resolve({
|
|
454
454
|
result: { method: 'getPlaylistIndex', value: this.players[playerId].getPlaylistIndex() },
|
|
@@ -457,17 +457,17 @@ var capacitorYoutubePlayer = (function (exports, core) {
|
|
|
457
457
|
/*********/
|
|
458
458
|
// Methods accessing and modifying DOM nodes.
|
|
459
459
|
/*********/
|
|
460
|
-
async getIframe(playerId) {
|
|
460
|
+
async getIframe({ playerId }) {
|
|
461
461
|
this.playerLogger.log(`player "${playerId}" -> getIframe`);
|
|
462
462
|
return Promise.resolve({ result: { method: 'getIframe', value: this.players[playerId].getIframe() } });
|
|
463
463
|
}
|
|
464
464
|
/*********/
|
|
465
465
|
// Player event listeners.
|
|
466
|
-
addEventListener(playerId, eventName, listener) {
|
|
466
|
+
addEventListener({ playerId, eventName, listener, }) {
|
|
467
467
|
this.playerLogger.log(`player "${playerId}" -> addEventListener "${eventName}"`);
|
|
468
468
|
this.players[playerId].addEventListener(eventName, listener);
|
|
469
469
|
}
|
|
470
|
-
removeEventListener(playerId, eventName, listener) {
|
|
470
|
+
removeEventListener({ playerId, eventName, listener, }) {
|
|
471
471
|
this.playerLogger.log(`player "${playerId}" -> removeEventListener "${eventName}"`);
|
|
472
472
|
this.players[playerId].removeEventListener(eventName, listener);
|
|
473
473
|
}
|
package/dist/plugin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.js","sources":["esm/index.js","esm/log.js","esm/web.js"],"sourcesContent":["import { registerPlugin } from '@capacitor/core';\nconst YoutubePlayer = registerPlugin('YoutubePlayer', {\n web: () => import('./web').then((m) => new m.YoutubePlayerPluginWeb()),\n});\nexport * from './definitions';\nexport { YoutubePlayer };\n//# sourceMappingURL=index.js.map","export class Log {\n constructor(logEnabled = false) {\n this.logEnabled = false;\n this.logEnabled = logEnabled;\n }\n log(msg, ...supportingDetails) {\n this.emitLogMessage('log', msg, supportingDetails);\n }\n debug(msg, ...supportingDetails) {\n this.emitLogMessage('debug', msg, supportingDetails);\n }\n warn(msg, ...supportingDetails) {\n this.emitLogMessage('warn', msg, supportingDetails);\n }\n error(msg, ...supportingDetails) {\n this.emitLogMessage('error', msg, supportingDetails);\n }\n info(msg, ...supportingDetails) {\n this.emitLogMessage('info', msg, supportingDetails);\n }\n emitLogMessage(msgType, msg, supportingDetails) {\n if (this.logEnabled) {\n supportingDetails.length > 0\n ? console[msgType]('[Youtube Player Plugin Web]: ' + msg, supportingDetails)\n : console[msgType]('[Youtube Player Plugin Web]: ' + msg);\n }\n }\n}\n//# sourceMappingURL=log.js.map","import { WebPlugin } from '@capacitor/core';\nimport { Log } from './log';\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nexport function YT() {\n return window['YT'];\n}\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nexport function Player() {\n return YT().Player;\n}\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nexport function PlayerState() {\n return YT().PlayerState;\n}\nexport class YoutubePlayerPluginWeb extends WebPlugin {\n constructor() {\n super();\n this.players = [];\n this.playersEventsState = new Map();\n this.playerApiLoaded = false;\n this.defaultSizes = {\n height: 270,\n width: 367,\n };\n }\n setCookies(cookies) {\n this.playerLogger.log('setCookies', { cookies });\n try {\n // Parse and set cookies for the YouTube domain\n const cookiePairs = cookies.split(';').map((c) => c.trim());\n cookiePairs.forEach((pair) => {\n if (pair) {\n // Set cookie with appropriate domain for YouTube\n // Note: This sets cookies for the current domain. For cross-domain cookies,\n // the user must handle this at a higher level (e.g., through their backend)\n document.cookie = pair + '; path=/; SameSite=None; Secure';\n this.playerLogger.log('Cookie set:', pair);\n }\n });\n }\n catch (error) {\n this.playerLogger.error('Error setting cookies:', error);\n }\n }\n async loadPlayerApi(privacyEnhanced = false) {\n this.playerLogger.log('loadPlayerApi', { privacyEnhanced });\n return await new Promise((resolve) => {\n window.onYouTubeIframeAPIReady = () => {\n this.playerLogger.log('onYouTubeIframeAPIReady');\n this.playerApiLoaded = true;\n resolve(true);\n };\n // This code loads the IFrame Player API code asynchronously.\n const tag = document.createElement('script');\n tag.type = 'text/javascript';\n // Use privacy-enhanced domain if requested (youtube-nocookie.com for GDPR compliance)\n tag.src = privacyEnhanced ? 'https://www.youtube-nocookie.com/iframe_api' : 'https://www.youtube.com/iframe_api';\n const firstScriptTag = document.getElementsByTagName('script')[0];\n firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);\n });\n }\n checkSize(options) {\n const playerSize = {\n height: options.playerSize.height || this.defaultSizes.height,\n width: options.playerSize.width || this.defaultSizes.width,\n };\n if (playerSize.height > window.innerHeight)\n playerSize.height = window.innerHeight;\n if (playerSize.width > window.innerWidth)\n playerSize.width = window.innerWidth;\n return playerSize;\n }\n // This function creates an <iframe> (and YouTube player)\n // after the API code downloads.\n async createPlayer(options) {\n this.playerLogger.log('createPlayer');\n const playerSize = this.checkSize(options);\n return await new Promise((resolve) => {\n const player = Player();\n this.players[options.playerId] = new player(options.playerId, Object.assign(Object.assign({ playerVars: options.playerVars }, playerSize), { fullscreen: options.fullscreen, videoId: options.videoId, events: {\n // The API will call this function when the video player is ready.\n onReady: (event) => {\n var _a;\n this.playerLogger.log(`player \"${options.playerId}\" -> onPlayerReady`);\n const state = { events: { onReady: { text: 'onReady', value: true } } };\n this.playersEventsState.set(options.playerId, state);\n if (((_a = options === null || options === void 0 ? void 0 : options.playerVars) === null || _a === void 0 ? void 0 : _a.autoplay) === 1) {\n event.target.mute();\n event.target.playVideo();\n }\n return resolve({ playerReady: true, player: this.players[options.playerId] });\n },\n onStateChange: (event) => {\n this.playerLogger.log(`player \"${options.playerId}\" -> onPlayerStateChange`);\n switch (event.data) {\n case PlayerState().PLAYING:\n this.playerLogger.log(`player \"${options.playerId}\" -> playing`);\n this.playersEventsState.get(options.playerId).events.onStateChange = {\n text: 'playing',\n value: PlayerState().PLAYING,\n };\n if (options.fullscreen) {\n const iframe = document.getElementById(options.playerId);\n const requestFullScreen = iframe === null || iframe === void 0 ? void 0 : iframe.requestFullscreen;\n if (requestFullScreen) {\n requestFullScreen.bind(iframe)();\n }\n }\n break;\n case PlayerState().PAUSED:\n this.playerLogger.log(`player \"${options.playerId}\" -> paused`);\n this.playersEventsState.get(options.playerId).events.onStateChange = {\n text: 'paused',\n value: PlayerState().PAUSED,\n };\n break;\n case PlayerState().ENDED:\n this.playerLogger.log(`player \"${options.playerId}\" -> ended`);\n this.playersEventsState.get(options.playerId).events.onStateChange = {\n text: 'ended',\n value: PlayerState().ENDED,\n };\n break;\n case PlayerState().BUFFERING:\n this.playerLogger.log(`player \"${options.playerId}\" -> buffering`);\n this.playersEventsState.get(options.playerId).events.onStateChange = {\n text: 'buffering',\n value: PlayerState().BUFFERING,\n };\n break;\n case PlayerState().CUED:\n this.playerLogger.log(`player \"${options.playerId}\" -> cued`);\n this.playersEventsState.get(options.playerId).events.onStateChange = {\n text: 'cued',\n value: PlayerState().CUED,\n };\n break;\n }\n },\n onPlaybackQualityChange: (event) => {\n this.playerLogger.log(`player \"${options.playerId}\" -> onPlayerPlaybackQualityChange quality ${event.data}`);\n this.playersEventsState.get(options.playerId).events.onPlaybackQualityChange = {\n text: 'onPlaybackQualityChange',\n value: event.data,\n };\n },\n onError: (error) => {\n this.playerLogger.error(`player \"${options.playerId}\" -> onPlayerError`, { error: error });\n this.playersEventsState.get(options.playerId).events.onError = { text: 'onError', value: error };\n },\n } }));\n });\n }\n async initialize(options) {\n this.playerLogger = new Log(options.debug);\n this.playerLogger.log('initialize', { privacyEnhanced: options.privacyEnhanced, cookies: options.cookies });\n // Set cookies before loading the player if provided\n if (options.cookies) {\n this.setCookies(options.cookies);\n }\n if (!this.playerApiLoaded) {\n const result = await this.loadPlayerApi(options.privacyEnhanced || false);\n this.playerLogger.log('loadPlayerApi result', { result: result });\n }\n if (this.playerApiLoaded) {\n const playerReady = (await this.createPlayer(options));\n this.playerLogger.log('loadPlayerApi initialize completed', { playerReady: playerReady });\n return Promise.resolve(playerReady);\n }\n }\n async destroy(playerId) {\n this.playerLogger.log(`player \"${playerId}\" -> destroy`);\n this.players[playerId].destroy();\n return Promise.resolve({ result: { method: 'destroy', value: true } });\n }\n // Methods playback controls and player settings.\n /*********/\n // Stops and cancels loading of the current video. This function should be reserved for rare situations when you know that the user will not be watching\n // additional video in the player. If your intent is to pause the video, you should just call the pauseVideo function. If you want to change the video\n // that the player is playing, you can call one of the queueing functions without calling stopVideo first.\n async stopVideo(playerId) {\n this.playerLogger.log(`player \"${playerId}\" -> stopVideo`);\n this.players[playerId].stopVideo();\n return Promise.resolve({ result: { method: 'stopVideo', value: true } });\n }\n // Plays the currently cued/loaded video. The final player state after this function executes will be playing (1).\n async playVideo(playerId) {\n this.playerLogger.log(`player \"${playerId}\" -> playVideo`);\n this.players[playerId].playVideo();\n return Promise.resolve({ result: { method: 'playVideo', value: true } });\n }\n // Pauses the currently playing video. The final player state after this function executes will be paused (2) unless the player is in the ended (0)\n // state when the function is called, in which case the player state will not change.\n async pauseVideo(playerId) {\n this.playerLogger.log(`player \"${playerId}\" -> pauseVideo`);\n this.players[playerId].pauseVideo();\n return Promise.resolve({ result: { method: 'pauseVideo', value: true } });\n }\n // Seeks to a specified time in the video. If the player is paused when the function is called, it will remain paused. If the function is called from\n // another state (playing, video cued, etc.), the player will play the video.\n async seekTo(playerId, seconds, allowSeekAhead) {\n this.playerLogger.log(`player \"${playerId}\" -> seekTo ${seconds} seconds`);\n this.players[playerId].seekTo(seconds, allowSeekAhead);\n return Promise.resolve({\n result: { method: 'seekTo', value: true, seconds: seconds, allowSeekAhead: allowSeekAhead },\n });\n }\n // Loads and plays the specified video.\n async loadVideoById(playerId, options) {\n this.playerLogger.log(`player \"${playerId}\" -> loadVideoById with options ${options}`);\n this.players[playerId].loadVideoById(options);\n return Promise.resolve({ result: { method: 'loadVideoById', value: true, options: options } });\n }\n // Loads the specified video's thumbnail and prepares the player to play the video. The player does not request the FLV until playVideo() or seekTo() is called.\n async cueVideoById(playerId, options) {\n this.playerLogger.log(`player \"${playerId}\" -> cueVideoById with options ${options}`);\n this.players[playerId].cueVideoById(options);\n return Promise.resolve({ result: { method: 'cueVideoById', value: true, options: options } });\n }\n async loadVideoByUrl(playerId, options) {\n this.playerLogger.log(`player \"${playerId}\" -> loadVideoByUrl with options ${options}`);\n this.players[playerId].loadVideoByUrl(options);\n return Promise.resolve({ result: { method: 'loadVideoByUrl', value: true, options: options } });\n }\n async cueVideoByUrl(playerId, options) {\n this.playerLogger.log(`player \"${playerId}\" -> cueVideoByUrl with options ${options}`);\n this.players[playerId].cueVideoByUrl(options);\n return Promise.resolve({ result: { method: 'cueVideoByUrl', value: true, options: options } });\n }\n /*********/\n // Methods for playing playlist.\n /*********/\n async cuePlaylist(playerId, playlistOptions) {\n this.playerLogger.log(`player \"${playerId}\" -> cuePlaylist with options ${JSON.stringify(playlistOptions)}`);\n this.players[playerId].cuePlaylist(playlistOptions);\n return Promise.resolve({ result: { method: 'cuePlaylist', value: true } });\n }\n async loadPlaylist(playerId, playlistOptions) {\n this.playerLogger.log(`player \"${playerId}\" -> loadPlaylist with options ${playlistOptions}`);\n this.players[playerId].loadPlaylist(playlistOptions);\n return Promise.resolve({ result: { method: 'loadPlaylist', value: true } });\n }\n /*********/\n // Methods for playing video in playlist.\n /*********/\n async nextVideo(playerId) {\n this.playerLogger.log(`player \"${playerId}\" -> nextVideo`);\n this.players[playerId].nextVideo();\n return Promise.resolve({ result: { method: 'nextVideo', value: true } });\n }\n async previousVideo(playerId) {\n this.playerLogger.log(`player \"${playerId}\" -> previousVideo`);\n this.players[playerId].previousVideo();\n return Promise.resolve({ result: { method: 'previousVideo', value: true } });\n }\n async playVideoAt(playerId, index) {\n this.playerLogger.log(`player \"${playerId}\" -> playVideoAt`);\n this.players[playerId].playVideoAt(index);\n return Promise.resolve({ result: { method: 'playVideoAt', value: true } });\n }\n /*********/\n // Methods for adjusting the playback speed.\n async getPlaybackRate(playerId) {\n this.playerLogger.log(`player \"${playerId}\" -> getPlaybackRate`);\n return Promise.resolve({ result: { method: 'getPlaybackRate', value: this.players[playerId].getPlaybackRate() } });\n }\n async setPlaybackRate(playerId, rate) {\n this.playerLogger.log(`player \"${playerId}\" -> setPlaybackRate`);\n this.players[playerId].setPlaybackRate(rate);\n return Promise.resolve({ result: { method: 'setPlaybackRate', value: true } });\n }\n async getAvailablePlaybackRates(playerId) {\n this.playerLogger.log(`player -> getAvailablePlaybackRates`);\n return Promise.resolve({\n result: { method: 'getAvailablePlaybackRates', value: this.players[playerId].getAvailablePlaybackRates() },\n });\n }\n /*********/\n /*********/\n // Methods for playlist playback settings\n /*********/\n async setLoop(playerId, loop) {\n this.playerLogger.log(`player \"${playerId}\" -> setLoop`);\n this.players[playerId].setLoop(loop);\n return Promise.resolve({ result: { method: 'setLoop', value: true } });\n }\n async setShuffle(playerId, shuffle) {\n this.playerLogger.log(`player \"${playerId}\" -> setShuffle`);\n this.players[playerId].setShuffle(shuffle);\n return Promise.resolve({ result: { method: 'setShuffle', value: true } });\n }\n /*********/\n // Methods changing the player volume.\n /*********/\n // Mutes the player.\n async mute(playerId) {\n this.playerLogger.log(`player \"${playerId}\" -> mute`);\n this.players[playerId].mute();\n return Promise.resolve({ result: { method: 'mute', value: true } });\n }\n // Unmutes the player.\n async unMute(playerId) {\n this.playerLogger.log(`player \"${playerId}\" -> unMute`);\n this.players[playerId].unMute();\n return Promise.resolve({ result: { method: 'unMute', value: true } });\n }\n // Returns true if the player is muted, false if not.\n async isMuted(playerId) {\n this.playerLogger.log(`player \"${playerId}\" -> isMuted`);\n return Promise.resolve({ result: { method: 'isMuted', value: this.players[playerId].isMuted() } });\n }\n // Sets the volume. Accepts an integer between 0 and 100.\n async setVolume(playerId, volume) {\n this.playerLogger.log(`player \"${playerId}\" -> setVolume ${volume}`);\n this.players[playerId].setVolume(volume);\n return Promise.resolve({ result: { method: 'setVolume', value: volume } });\n }\n // Returns the player's current volume, an integer between 0 and 100. Note that getVolume() will return the volume even if the player is muted.\n async getVolume(playerId) {\n this.playerLogger.log(`player \"${playerId}\" -> getVolume`);\n return Promise.resolve({ result: { method: 'getVolume', value: this.players[playerId].getVolume() } });\n }\n /*********/\n // Methods setting the player size.\n /*********/\n // Sets the size in pixels of the <iframe> that contains the player.\n async setSize(playerId, width, height) {\n this.playerLogger.log(`player \"${playerId}\" -> setSize width: ${width} height: ${height}`);\n this.players[playerId].setSize(width, height);\n return Promise.resolve({ result: { method: 'setSize', value: { width: width, height: height } } });\n }\n /*********/\n // Methods playback status.\n /*********/\n // Returns a number between 0 and 1 that specifies the percentage of the video that the player shows as buffered.\n // This method returns a more reliable number than the now-deprecated getVideoBytesLoaded and getVideoBytesTotal methods.\n async getVideoLoadedFraction(playerId) {\n this.playerLogger.log(`player \"${playerId}\" -> getVideoLoadedFraction`);\n return Promise.resolve({\n result: { method: 'getVideoLoadedFraction', value: this.players[playerId].getVideoLoadedFraction() },\n });\n }\n // Returns the state of the player. Possible values are:\n // -1 – unstarted\n // 0 – ended\n // 1 – playing\n // 2 – paused\n // 3 – buffering\n // 5 – video cued\n async getPlayerState(playerId) {\n this.playerLogger.log(`player \"${playerId}\" -> getPlayerState`);\n return Promise.resolve({ result: { method: 'getPlayerState', value: this.players[playerId].getPlayerState() } });\n }\n async getAllPlayersEventsState() {\n this.playerLogger.log('getAllPlayersEventsState');\n return Promise.resolve({ result: { method: 'getAllPlayersEventsState', value: this.playersEventsState } });\n }\n // Returns the elapsed time in seconds since the video started playing.\n async getCurrentTime(playerId) {\n this.playerLogger.log(`player \"${playerId}\" -> getCurrentTime`);\n return Promise.resolve({ result: { method: 'getCurrentTime', value: this.players[playerId].getCurrentTime() } });\n }\n async toggleFullScreen(playerId, isFullScreen) {\n this.playerLogger.log(`player \"${playerId}\" -> toggleFullScreen`);\n let { height, width } = this.defaultSizes;\n if (!isFullScreen) {\n height = window.innerHeight;\n width = window.innerWidth;\n }\n this.players[playerId].setSize(width, height);\n return Promise.resolve({ result: { method: 'toggleFullScreen', value: isFullScreen } });\n }\n /*********/\n // Methods playback quality.\n /*********/\n async getPlaybackQuality(playerId) {\n this.playerLogger.log(`player \"${playerId}\" -> getPlaybackQuality`);\n return Promise.resolve({\n result: { method: 'getPlaybackQuality', value: this.players[playerId].getPlaybackQuality() },\n });\n }\n async setPlaybackQuality(playerId, playbackQuality) {\n this.playerLogger.log(`player \"${playerId}\" -> setPlaybackQuality`);\n this.players[playerId].setPlaybackQuality(playbackQuality);\n return Promise.resolve({ result: { method: 'setPlaybackQuality', value: true } });\n }\n async getAvailableQualityLevels(playerId) {\n this.playerLogger.log(`player \"${playerId}\" -> getAvailableQualityLevels`);\n return Promise.resolve({\n result: { method: 'getAvailableQualityLevels', value: this.players[playerId].getAvailableQualityLevels() },\n });\n }\n /*********/\n // Methods for retrieving video information.\n /*********/\n async getDuration(playerId) {\n this.playerLogger.log(`player \"${playerId}\" -> getDuration`);\n return Promise.resolve({ result: { method: 'getDuration', value: this.players[playerId].getDuration() } });\n }\n async getVideoUrl(playerId) {\n this.playerLogger.log(`player \"${playerId}\" -> getVideoUrl`);\n return Promise.resolve({ result: { method: 'getVideoUrl', value: this.players[playerId].getVideoUrl() } });\n }\n async getVideoEmbedCode(playerId) {\n this.playerLogger.log(`player \"${playerId}\" -> getVideoEmbedCode`);\n return Promise.resolve({\n result: { method: 'getVideoEmbedCode', value: this.players[playerId].getVideoEmbedCode() },\n });\n }\n /*********/\n // Methods for retrieving playlist information.\n /*********/\n async getPlaylist(playerId) {\n this.playerLogger.log(`player \"${playerId}\" -> getPlaylist`);\n return Promise.resolve({ result: { method: 'getPlaylist', value: this.players[playerId].getPlaylist() } });\n }\n async getPlaylistIndex(playerId) {\n this.playerLogger.log(`player \"${playerId}\" -> getPlaylistIndex`);\n return Promise.resolve({\n result: { method: 'getPlaylistIndex', value: this.players[playerId].getPlaylistIndex() },\n });\n }\n /*********/\n // Methods accessing and modifying DOM nodes.\n /*********/\n async getIframe(playerId) {\n this.playerLogger.log(`player \"${playerId}\" -> getIframe`);\n return Promise.resolve({ result: { method: 'getIframe', value: this.players[playerId].getIframe() } });\n }\n /*********/\n // Player event listeners.\n addEventListener(playerId, eventName, listener) {\n this.playerLogger.log(`player \"${playerId}\" -> addEventListener \"${eventName}\"`);\n this.players[playerId].addEventListener(eventName, listener);\n }\n removeEventListener(playerId, eventName, listener) {\n this.playerLogger.log(`player \"${playerId}\" -> removeEventListener \"${eventName}\"`);\n this.players[playerId].removeEventListener(eventName, listener);\n }\n /*********/\n async getPluginVersion() {\n return { version: 'web' };\n }\n}\n//# sourceMappingURL=web.js.map"],"names":["registerPlugin","WebPlugin"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"plugin.js","sources":["esm/index.js","esm/log.js","esm/web.js"],"sourcesContent":["import { registerPlugin } from '@capacitor/core';\nconst YoutubePlayer = registerPlugin('YoutubePlayer', {\n web: () => import('./web').then((m) => new m.YoutubePlayerPluginWeb()),\n});\nexport * from './definitions';\nexport { YoutubePlayer };\n//# sourceMappingURL=index.js.map","export class Log {\n constructor(logEnabled = false) {\n this.logEnabled = false;\n this.logEnabled = logEnabled;\n }\n log(msg, ...supportingDetails) {\n this.emitLogMessage('log', msg, supportingDetails);\n }\n debug(msg, ...supportingDetails) {\n this.emitLogMessage('debug', msg, supportingDetails);\n }\n warn(msg, ...supportingDetails) {\n this.emitLogMessage('warn', msg, supportingDetails);\n }\n error(msg, ...supportingDetails) {\n this.emitLogMessage('error', msg, supportingDetails);\n }\n info(msg, ...supportingDetails) {\n this.emitLogMessage('info', msg, supportingDetails);\n }\n emitLogMessage(msgType, msg, supportingDetails) {\n if (this.logEnabled) {\n supportingDetails.length > 0\n ? console[msgType]('[Youtube Player Plugin Web]: ' + msg, supportingDetails)\n : console[msgType]('[Youtube Player Plugin Web]: ' + msg);\n }\n }\n}\n//# sourceMappingURL=log.js.map","import { WebPlugin } from '@capacitor/core';\nimport { Log } from './log';\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nexport function YT() {\n return window['YT'];\n}\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nexport function Player() {\n return YT().Player;\n}\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nexport function PlayerState() {\n return YT().PlayerState;\n}\nexport class YoutubePlayerPluginWeb extends WebPlugin {\n constructor() {\n super();\n this.players = [];\n this.playersEventsState = new Map();\n this.playerApiLoaded = false;\n this.defaultSizes = {\n height: 270,\n width: 367,\n };\n }\n setCookies(cookies) {\n this.playerLogger.log('setCookies', { cookies });\n try {\n // Parse and set cookies for the YouTube domain\n const cookiePairs = cookies.split(';').map((c) => c.trim());\n cookiePairs.forEach((pair) => {\n if (pair) {\n // Set cookie with appropriate domain for YouTube\n // Note: This sets cookies for the current domain. For cross-domain cookies,\n // the user must handle this at a higher level (e.g., through their backend)\n document.cookie = pair + '; path=/; SameSite=None; Secure';\n this.playerLogger.log('Cookie set:', pair);\n }\n });\n }\n catch (error) {\n this.playerLogger.error('Error setting cookies:', error);\n }\n }\n async loadPlayerApi(privacyEnhanced = false) {\n this.playerLogger.log('loadPlayerApi', { privacyEnhanced });\n return await new Promise((resolve) => {\n window.onYouTubeIframeAPIReady = () => {\n this.playerLogger.log('onYouTubeIframeAPIReady');\n this.playerApiLoaded = true;\n resolve(true);\n };\n // This code loads the IFrame Player API code asynchronously.\n const tag = document.createElement('script');\n tag.type = 'text/javascript';\n // Use privacy-enhanced domain if requested (youtube-nocookie.com for GDPR compliance)\n tag.src = privacyEnhanced ? 'https://www.youtube-nocookie.com/iframe_api' : 'https://www.youtube.com/iframe_api';\n const firstScriptTag = document.getElementsByTagName('script')[0];\n firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);\n });\n }\n checkSize(options) {\n const playerSize = {\n height: options.playerSize.height || this.defaultSizes.height,\n width: options.playerSize.width || this.defaultSizes.width,\n };\n if (playerSize.height > window.innerHeight)\n playerSize.height = window.innerHeight;\n if (playerSize.width > window.innerWidth)\n playerSize.width = window.innerWidth;\n return playerSize;\n }\n // This function creates an <iframe> (and YouTube player)\n // after the API code downloads.\n async createPlayer(options) {\n this.playerLogger.log('createPlayer');\n const playerSize = this.checkSize(options);\n return await new Promise((resolve) => {\n const player = Player();\n this.players[options.playerId] = new player(options.playerId, Object.assign(Object.assign({ playerVars: options.playerVars }, playerSize), { fullscreen: options.fullscreen, videoId: options.videoId, events: {\n // The API will call this function when the video player is ready.\n onReady: (event) => {\n var _a;\n this.playerLogger.log(`player \"${options.playerId}\" -> onPlayerReady`);\n const state = { events: { onReady: { text: 'onReady', value: true } } };\n this.playersEventsState.set(options.playerId, state);\n if (((_a = options === null || options === void 0 ? void 0 : options.playerVars) === null || _a === void 0 ? void 0 : _a.autoplay) === 1) {\n event.target.mute();\n event.target.playVideo();\n }\n return resolve({ playerReady: true, player: this.players[options.playerId] });\n },\n onStateChange: (event) => {\n this.playerLogger.log(`player \"${options.playerId}\" -> onPlayerStateChange`);\n switch (event.data) {\n case PlayerState().PLAYING:\n this.playerLogger.log(`player \"${options.playerId}\" -> playing`);\n this.playersEventsState.get(options.playerId).events.onStateChange = {\n text: 'playing',\n value: PlayerState().PLAYING,\n };\n if (options.fullscreen) {\n const iframe = document.getElementById(options.playerId);\n const requestFullScreen = iframe === null || iframe === void 0 ? void 0 : iframe.requestFullscreen;\n if (requestFullScreen) {\n requestFullScreen.bind(iframe)();\n }\n }\n break;\n case PlayerState().PAUSED:\n this.playerLogger.log(`player \"${options.playerId}\" -> paused`);\n this.playersEventsState.get(options.playerId).events.onStateChange = {\n text: 'paused',\n value: PlayerState().PAUSED,\n };\n break;\n case PlayerState().ENDED:\n this.playerLogger.log(`player \"${options.playerId}\" -> ended`);\n this.playersEventsState.get(options.playerId).events.onStateChange = {\n text: 'ended',\n value: PlayerState().ENDED,\n };\n break;\n case PlayerState().BUFFERING:\n this.playerLogger.log(`player \"${options.playerId}\" -> buffering`);\n this.playersEventsState.get(options.playerId).events.onStateChange = {\n text: 'buffering',\n value: PlayerState().BUFFERING,\n };\n break;\n case PlayerState().CUED:\n this.playerLogger.log(`player \"${options.playerId}\" -> cued`);\n this.playersEventsState.get(options.playerId).events.onStateChange = {\n text: 'cued',\n value: PlayerState().CUED,\n };\n break;\n }\n },\n onPlaybackQualityChange: (event) => {\n this.playerLogger.log(`player \"${options.playerId}\" -> onPlayerPlaybackQualityChange quality ${event.data}`);\n this.playersEventsState.get(options.playerId).events.onPlaybackQualityChange = {\n text: 'onPlaybackQualityChange',\n value: event.data,\n };\n },\n onError: (error) => {\n this.playerLogger.error(`player \"${options.playerId}\" -> onPlayerError`, { error: error });\n this.playersEventsState.get(options.playerId).events.onError = { text: 'onError', value: error };\n },\n } }));\n });\n }\n async initialize(options) {\n this.playerLogger = new Log(options.debug);\n this.playerLogger.log('initialize', { privacyEnhanced: options.privacyEnhanced, cookies: options.cookies });\n // Set cookies before loading the player if provided\n if (options.cookies) {\n this.setCookies(options.cookies);\n }\n if (!this.playerApiLoaded) {\n const result = await this.loadPlayerApi(options.privacyEnhanced || false);\n this.playerLogger.log('loadPlayerApi result', { result: result });\n }\n if (this.playerApiLoaded) {\n const playerReady = (await this.createPlayer(options));\n this.playerLogger.log('loadPlayerApi initialize completed', { playerReady: playerReady });\n return Promise.resolve(playerReady);\n }\n }\n async destroy({ playerId }) {\n this.playerLogger.log(`player \"${playerId}\" -> destroy`);\n this.players[playerId].destroy();\n return Promise.resolve({ result: { method: 'destroy', value: true } });\n }\n // Methods playback controls and player settings.\n /*********/\n // Stops and cancels loading of the current video. This function should be reserved for rare situations when you know that the user will not be watching\n // additional video in the player. If your intent is to pause the video, you should just call the pauseVideo function. If you want to change the video\n // that the player is playing, you can call one of the queueing functions without calling stopVideo first.\n async stopVideo({ playerId }) {\n this.playerLogger.log(`player \"${playerId}\" -> stopVideo`);\n this.players[playerId].stopVideo();\n return Promise.resolve({ result: { method: 'stopVideo', value: true } });\n }\n // Plays the currently cued/loaded video. The final player state after this function executes will be playing (1).\n async playVideo({ playerId }) {\n this.playerLogger.log(`player \"${playerId}\" -> playVideo`);\n this.players[playerId].playVideo();\n return Promise.resolve({ result: { method: 'playVideo', value: true } });\n }\n // Pauses the currently playing video. The final player state after this function executes will be paused (2) unless the player is in the ended (0)\n // state when the function is called, in which case the player state will not change.\n async pauseVideo({ playerId }) {\n this.playerLogger.log(`player \"${playerId}\" -> pauseVideo`);\n this.players[playerId].pauseVideo();\n return Promise.resolve({ result: { method: 'pauseVideo', value: true } });\n }\n // Seeks to a specified time in the video. If the player is paused when the function is called, it will remain paused. If the function is called from\n // another state (playing, video cued, etc.), the player will play the video.\n async seekTo({ playerId, seconds, allowSeekAhead, }) {\n this.playerLogger.log(`player \"${playerId}\" -> seekTo ${seconds} seconds`);\n this.players[playerId].seekTo(seconds, allowSeekAhead);\n return Promise.resolve({\n result: { method: 'seekTo', value: true, seconds: seconds, allowSeekAhead: allowSeekAhead },\n });\n }\n // Loads and plays the specified video.\n async loadVideoById({ playerId, options, }) {\n this.playerLogger.log(`player \"${playerId}\" -> loadVideoById with options ${options}`);\n this.players[playerId].loadVideoById(options);\n return Promise.resolve({ result: { method: 'loadVideoById', value: true, options: options } });\n }\n // Loads the specified video's thumbnail and prepares the player to play the video. The player does not request the FLV until playVideo() or seekTo() is called.\n async cueVideoById({ playerId, options, }) {\n this.playerLogger.log(`player \"${playerId}\" -> cueVideoById with options ${options}`);\n this.players[playerId].cueVideoById(options);\n return Promise.resolve({ result: { method: 'cueVideoById', value: true, options: options } });\n }\n async loadVideoByUrl({ playerId, options, }) {\n this.playerLogger.log(`player \"${playerId}\" -> loadVideoByUrl with options ${options}`);\n this.players[playerId].loadVideoByUrl(options);\n return Promise.resolve({ result: { method: 'loadVideoByUrl', value: true, options: options } });\n }\n async cueVideoByUrl({ playerId, options, }) {\n this.playerLogger.log(`player \"${playerId}\" -> cueVideoByUrl with options ${options}`);\n this.players[playerId].cueVideoByUrl(options);\n return Promise.resolve({ result: { method: 'cueVideoByUrl', value: true, options: options } });\n }\n /*********/\n // Methods for playing playlist.\n /*********/\n async cuePlaylist({ playerId, playlistOptions, }) {\n this.playerLogger.log(`player \"${playerId}\" -> cuePlaylist with options ${JSON.stringify(playlistOptions)}`);\n this.players[playerId].cuePlaylist(playlistOptions);\n return Promise.resolve({ result: { method: 'cuePlaylist', value: true } });\n }\n async loadPlaylist({ playerId, playlistOptions, }) {\n this.playerLogger.log(`player \"${playerId}\" -> loadPlaylist with options ${playlistOptions}`);\n this.players[playerId].loadPlaylist(playlistOptions);\n return Promise.resolve({ result: { method: 'loadPlaylist', value: true } });\n }\n /*********/\n // Methods for playing video in playlist.\n /*********/\n async nextVideo({ playerId }) {\n this.playerLogger.log(`player \"${playerId}\" -> nextVideo`);\n this.players[playerId].nextVideo();\n return Promise.resolve({ result: { method: 'nextVideo', value: true } });\n }\n async previousVideo({ playerId }) {\n this.playerLogger.log(`player \"${playerId}\" -> previousVideo`);\n this.players[playerId].previousVideo();\n return Promise.resolve({ result: { method: 'previousVideo', value: true } });\n }\n async playVideoAt({ playerId, index }) {\n this.playerLogger.log(`player \"${playerId}\" -> playVideoAt`);\n this.players[playerId].playVideoAt(index);\n return Promise.resolve({ result: { method: 'playVideoAt', value: true } });\n }\n /*********/\n // Methods for adjusting the playback speed.\n async getPlaybackRate({ playerId }) {\n this.playerLogger.log(`player \"${playerId}\" -> getPlaybackRate`);\n return Promise.resolve({ result: { method: 'getPlaybackRate', value: this.players[playerId].getPlaybackRate() } });\n }\n async setPlaybackRate({ playerId, suggestedRate, }) {\n this.playerLogger.log(`player \"${playerId}\" -> setPlaybackRate`);\n this.players[playerId].setPlaybackRate(suggestedRate);\n return Promise.resolve({ result: { method: 'setPlaybackRate', value: true } });\n }\n async getAvailablePlaybackRates({ playerId, }) {\n this.playerLogger.log(`player -> getAvailablePlaybackRates`);\n return Promise.resolve({\n result: { method: 'getAvailablePlaybackRates', value: this.players[playerId].getAvailablePlaybackRates() },\n });\n }\n /*********/\n /*********/\n // Methods for playlist playback settings\n /*********/\n async setLoop({ playerId, loopPlaylists }) {\n this.playerLogger.log(`player \"${playerId}\" -> setLoop`);\n this.players[playerId].setLoop(loopPlaylists);\n return Promise.resolve({ result: { method: 'setLoop', value: true } });\n }\n async setShuffle({ playerId, shufflePlaylist, }) {\n this.playerLogger.log(`player \"${playerId}\" -> setShuffle`);\n this.players[playerId].setShuffle(shufflePlaylist);\n return Promise.resolve({ result: { method: 'setShuffle', value: true } });\n }\n /*********/\n // Methods changing the player volume.\n /*********/\n // Mutes the player.\n async mute({ playerId }) {\n this.playerLogger.log(`player \"${playerId}\" -> mute`);\n this.players[playerId].mute();\n return Promise.resolve({ result: { method: 'mute', value: true } });\n }\n // Unmutes the player.\n async unMute({ playerId }) {\n this.playerLogger.log(`player \"${playerId}\" -> unMute`);\n this.players[playerId].unMute();\n return Promise.resolve({ result: { method: 'unMute', value: true } });\n }\n // Returns true if the player is muted, false if not.\n async isMuted({ playerId }) {\n this.playerLogger.log(`player \"${playerId}\" -> isMuted`);\n return Promise.resolve({ result: { method: 'isMuted', value: this.players[playerId].isMuted() } });\n }\n // Sets the volume. Accepts an integer between 0 and 100.\n async setVolume({ playerId, volume }) {\n this.playerLogger.log(`player \"${playerId}\" -> setVolume ${volume}`);\n this.players[playerId].setVolume(volume);\n return Promise.resolve({ result: { method: 'setVolume', value: volume } });\n }\n // Returns the player's current volume, an integer between 0 and 100. Note that getVolume() will return the volume even if the player is muted.\n async getVolume({ playerId }) {\n this.playerLogger.log(`player \"${playerId}\" -> getVolume`);\n return Promise.resolve({ result: { method: 'getVolume', value: this.players[playerId].getVolume() } });\n }\n /*********/\n // Methods setting the player size.\n /*********/\n // Sets the size in pixels of the <iframe> that contains the player.\n async setSize({ playerId, width, height, }) {\n this.playerLogger.log(`player \"${playerId}\" -> setSize width: ${width} height: ${height}`);\n this.players[playerId].setSize(width, height);\n return Promise.resolve({ result: { method: 'setSize', value: { width: width, height: height } } });\n }\n /*********/\n // Methods playback status.\n /*********/\n // Returns a number between 0 and 1 that specifies the percentage of the video that the player shows as buffered.\n // This method returns a more reliable number than the now-deprecated getVideoBytesLoaded and getVideoBytesTotal methods.\n async getVideoLoadedFraction({ playerId }) {\n this.playerLogger.log(`player \"${playerId}\" -> getVideoLoadedFraction`);\n return Promise.resolve({\n result: { method: 'getVideoLoadedFraction', value: this.players[playerId].getVideoLoadedFraction() },\n });\n }\n // Returns the state of the player. Possible values are:\n // -1 – unstarted\n // 0 – ended\n // 1 – playing\n // 2 – paused\n // 3 – buffering\n // 5 – video cued\n async getPlayerState({ playerId }) {\n this.playerLogger.log(`player \"${playerId}\" -> getPlayerState`);\n return Promise.resolve({ result: { method: 'getPlayerState', value: this.players[playerId].getPlayerState() } });\n }\n async getAllPlayersEventsState() {\n this.playerLogger.log('getAllPlayersEventsState');\n return Promise.resolve({ result: { method: 'getAllPlayersEventsState', value: this.playersEventsState } });\n }\n // Returns the elapsed time in seconds since the video started playing.\n async getCurrentTime({ playerId }) {\n this.playerLogger.log(`player \"${playerId}\" -> getCurrentTime`);\n return Promise.resolve({ result: { method: 'getCurrentTime', value: this.players[playerId].getCurrentTime() } });\n }\n async toggleFullScreen({ playerId, isFullScreen, }) {\n this.playerLogger.log(`player \"${playerId}\" -> toggleFullScreen`);\n let { height, width } = this.defaultSizes;\n if (!isFullScreen) {\n height = window.innerHeight;\n width = window.innerWidth;\n }\n this.players[playerId].setSize(width, height);\n return Promise.resolve({ result: { method: 'toggleFullScreen', value: isFullScreen } });\n }\n /*********/\n // Methods playback quality.\n /*********/\n async getPlaybackQuality({ playerId, }) {\n this.playerLogger.log(`player \"${playerId}\" -> getPlaybackQuality`);\n return Promise.resolve({\n result: { method: 'getPlaybackQuality', value: this.players[playerId].getPlaybackQuality() },\n });\n }\n async setPlaybackQuality({ playerId, suggestedQuality, }) {\n this.playerLogger.log(`player \"${playerId}\" -> setPlaybackQuality`);\n this.players[playerId].setPlaybackQuality(suggestedQuality);\n return Promise.resolve({ result: { method: 'setPlaybackQuality', value: true } });\n }\n async getAvailableQualityLevels({ playerId, }) {\n this.playerLogger.log(`player \"${playerId}\" -> getAvailableQualityLevels`);\n return Promise.resolve({\n result: { method: 'getAvailableQualityLevels', value: this.players[playerId].getAvailableQualityLevels() },\n });\n }\n /*********/\n // Methods for retrieving video information.\n /*********/\n async getDuration({ playerId }) {\n this.playerLogger.log(`player \"${playerId}\" -> getDuration`);\n return Promise.resolve({ result: { method: 'getDuration', value: this.players[playerId].getDuration() } });\n }\n async getVideoUrl({ playerId }) {\n this.playerLogger.log(`player \"${playerId}\" -> getVideoUrl`);\n return Promise.resolve({ result: { method: 'getVideoUrl', value: this.players[playerId].getVideoUrl() } });\n }\n async getVideoEmbedCode({ playerId }) {\n this.playerLogger.log(`player \"${playerId}\" -> getVideoEmbedCode`);\n return Promise.resolve({\n result: { method: 'getVideoEmbedCode', value: this.players[playerId].getVideoEmbedCode() },\n });\n }\n /*********/\n // Methods for retrieving playlist information.\n /*********/\n async getPlaylist({ playerId }) {\n this.playerLogger.log(`player \"${playerId}\" -> getPlaylist`);\n return Promise.resolve({ result: { method: 'getPlaylist', value: this.players[playerId].getPlaylist() } });\n }\n async getPlaylistIndex({ playerId }) {\n this.playerLogger.log(`player \"${playerId}\" -> getPlaylistIndex`);\n return Promise.resolve({\n result: { method: 'getPlaylistIndex', value: this.players[playerId].getPlaylistIndex() },\n });\n }\n /*********/\n // Methods accessing and modifying DOM nodes.\n /*********/\n async getIframe({ playerId }) {\n this.playerLogger.log(`player \"${playerId}\" -> getIframe`);\n return Promise.resolve({ result: { method: 'getIframe', value: this.players[playerId].getIframe() } });\n }\n /*********/\n // Player event listeners.\n addEventListener({ playerId, eventName, listener, }) {\n this.playerLogger.log(`player \"${playerId}\" -> addEventListener \"${eventName}\"`);\n this.players[playerId].addEventListener(eventName, listener);\n }\n removeEventListener({ playerId, eventName, listener, }) {\n this.playerLogger.log(`player \"${playerId}\" -> removeEventListener \"${eventName}\"`);\n this.players[playerId].removeEventListener(eventName, listener);\n }\n /*********/\n async getPluginVersion() {\n return { version: 'web' };\n }\n}\n//# sourceMappingURL=web.js.map"],"names":["registerPlugin","WebPlugin"],"mappings":"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"}
|
|
@@ -9,7 +9,7 @@ import UIKit
|
|
|
9
9
|
*/
|
|
10
10
|
@objc(YoutubePlayerPlugin)
|
|
11
11
|
public class YoutubePlayerPlugin: CAPPlugin, CAPBridgedPlugin {
|
|
12
|
-
private let pluginVersion: String = "8.2.
|
|
12
|
+
private let pluginVersion: String = "8.2.1"
|
|
13
13
|
public let identifier = "YoutubePlayerPlugin"
|
|
14
14
|
public let jsName = "YoutubePlayer"
|
|
15
15
|
|
package/package.json
CHANGED