@capgo/capacitor-video-player 7.0.7 → 7.1.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 CHANGED
@@ -389,6 +389,10 @@ Exit player
389
389
  | **`backgroundColor`** | <code>string</code> | Background Color in RGBA (default rgba(0,0,0,1) |
390
390
  | **`fontSize`** | <code>number</code> | Font Size in pixels (default 16) |
391
391
 
392
+ | Method | Signature | Description |
393
+ | -------------------- | -------------------------------------------- | --------------------------------------- |
394
+ | **getPluginVersion** | () =&gt; Promise&lt;{ version: string; }&gt; | Get the native Capacitor plugin version |
395
+
392
396
 
393
397
  #### capVideoPlayerIdOptions
394
398
 
@@ -38,6 +38,8 @@ import java.util.Map;
38
38
  )
39
39
  public class VideoPlayerPlugin extends Plugin {
40
40
 
41
+ private final String PLUGIN_VERSION = "7.1.1";
42
+
41
43
  // Permission alias constants
42
44
  private static final String PERMISSION_DENIED_ERROR = "Unable to access media videos, user denied permission request";
43
45
 
@@ -1236,4 +1238,15 @@ public class VideoPlayerPlugin extends Plugin {
1236
1238
  }
1237
1239
  );
1238
1240
  }
1241
+
1242
+ @PluginMethod
1243
+ public void getPluginVersion(final PluginCall call) {
1244
+ try {
1245
+ final JSObject ret = new JSObject();
1246
+ ret.put("version", this.PLUGIN_VERSION);
1247
+ call.resolve(ret);
1248
+ } catch (final Exception e) {
1249
+ call.reject("Could not get plugin version", e);
1250
+ }
1251
+ }
1239
1252
  }
package/dist/docs.json CHANGED
@@ -546,7 +546,27 @@
546
546
  "slug": "subtitleoptions",
547
547
  "docs": "",
548
548
  "tags": [],
549
- "methods": [],
549
+ "methods": [
550
+ {
551
+ "name": "getPluginVersion",
552
+ "signature": "() => Promise<{ version: string; }>",
553
+ "parameters": [],
554
+ "returns": "Promise<{ version: string; }>",
555
+ "tags": [
556
+ {
557
+ "name": "returns",
558
+ "text": "an Promise with version for this device"
559
+ },
560
+ {
561
+ "name": "throws",
562
+ "text": "An error if the something went wrong"
563
+ }
564
+ ],
565
+ "docs": "Get the native Capacitor plugin version",
566
+ "complexTypes": [],
567
+ "slug": "getpluginversion"
568
+ }
569
+ ],
550
570
  "properties": [
551
571
  {
552
572
  "name": "foregroundColor",
@@ -304,4 +304,13 @@ export interface SubTitleOptions {
304
304
  * Font Size in pixels (default 16)
305
305
  */
306
306
  fontSize?: number;
307
+ /**
308
+ * Get the native Capacitor plugin version
309
+ *
310
+ * @returns {Promise<{ id: string }>} an Promise with version for this device
311
+ * @throws An error if the something went wrong
312
+ */
313
+ getPluginVersion(): Promise<{
314
+ version: string;
315
+ }>;
307
316
  }
@@ -1 +1 @@
1
- {"version":3,"file":"definitions.js","sourceRoot":"","sources":["../../src/definitions.ts"],"names":[],"mappings":"","sourcesContent":["export interface VideoPlayerPlugin {\n /**\n * Echo\n *\n */\n echo(options: capEchoOptions): Promise<capVideoPlayerResult>;\n /**\n * Initialize a video player\n *\n */\n initPlayer(options: capVideoPlayerOptions): Promise<capVideoPlayerResult>;\n /**\n * Return if a given playerId is playing\n *\n */\n isPlaying(options: capVideoPlayerIdOptions): Promise<capVideoPlayerResult>;\n /**\n * Play the current video from a given playerId\n *\n */\n play(options: capVideoPlayerIdOptions): Promise<capVideoPlayerResult>;\n /**\n * Pause the current video from a given playerId\n *\n */\n pause(options: capVideoPlayerIdOptions): Promise<capVideoPlayerResult>;\n /**\n * Get the duration of the current video from a given playerId\n *\n */\n getDuration(options: capVideoPlayerIdOptions): Promise<capVideoPlayerResult>;\n /**\n * Get the current time of the current video from a given playerId\n *\n */\n getCurrentTime(options: capVideoPlayerIdOptions): Promise<capVideoPlayerResult>;\n /**\n * Set the current time to seek the current video to from a given playerId\n *\n */\n setCurrentTime(options: capVideoTimeOptions): Promise<capVideoPlayerResult>;\n /**\n * Get the volume of the current video from a given playerId\n *\n */\n getVolume(options: capVideoPlayerIdOptions): Promise<capVideoPlayerResult>;\n /**\n * Set the volume of the current video to from a given playerId\n *\n */\n setVolume(options: capVideoVolumeOptions): Promise<capVideoPlayerResult>;\n /**\n * Get the muted of the current video from a given playerId\n *\n */\n getMuted(options: capVideoPlayerIdOptions): Promise<capVideoPlayerResult>;\n /**\n * Set the muted of the current video to from a given playerId\n *\n */\n setMuted(options: capVideoMutedOptions): Promise<capVideoPlayerResult>;\n /**\n * Set the rate of the current video from a given playerId\n *\n */\n setRate(options: capVideoRateOptions): Promise<capVideoPlayerResult>;\n /**\n * Get the rate of the current video from a given playerId\n *\n */\n getRate(options: capVideoPlayerIdOptions): Promise<capVideoPlayerResult>;\n /**\n * Stop all players playing\n *\n */\n stopAllPlayers(): Promise<capVideoPlayerResult>;\n /**\n * Show controller\n *\n */\n showController(): Promise<capVideoPlayerResult>;\n /**\n * isControllerIsFullyVisible\n *\n */\n isControllerIsFullyVisible(): Promise<capVideoPlayerResult>;\n /**\n * Exit player\n *\n */\n exitPlayer(): Promise<capVideoPlayerResult>;\n}\nexport interface capEchoOptions {\n /**\n * String to be echoed\n */\n\n value?: string;\n}\nexport interface capVideoPlayerOptions {\n /**\n * Player mode\n * - \"fullscreen\"\n * - \"embedded\" (Web only)\n */\n mode?: string;\n /**\n * The url of the video to play\n */\n url?: string;\n /**\n * The url of subtitle associated with the video\n */\n subtitle?: string;\n /**\n * The language of subtitle\n * see https://github.com/libyal/libfwnt/wiki/Language-Code-identifiers\n */\n language?: string;\n /**\n * SubTitle Options\n */\n subtitleOptions?: SubTitleOptions;\n /**\n * Id of DIV Element parent of the player\n */\n playerId?: string;\n /**\n * Initial playing rate\n */\n rate?: number;\n /**\n * Exit on VideoEnd (iOS, Android)\n * default: true\n */\n exitOnEnd?: boolean;\n /**\n * Loop on VideoEnd when exitOnEnd false (iOS, Android)\n * default: false\n */\n loopOnEnd?: boolean;\n /**\n * Picture in Picture Enable (iOS, Android)\n * default: true\n */\n pipEnabled?: boolean;\n /**\n * Background Mode Enable (iOS, Android)\n * default: true\n */\n bkmodeEnabled?: boolean;\n /**\n * Show Controls Enable (iOS, Android)\n * default: true\n */\n showControls?: boolean;\n /**\n * Display Mode [\"all\", \"portrait\", \"landscape\"] (iOS, Android)\n * default: \"all\"\n */\n displayMode?: string;\n /**\n * Component Tag or DOM Element Tag (React app)\n */\n componentTag?: string;\n /**\n * Player Width (mode \"embedded\" only)\n */\n width?: number;\n /**\n * Player height (mode \"embedded\" only)\n */\n height?: number;\n /**\n * Headers for the request (iOS, Android)\n * by Manuel García Marín (https://github.com/PhantomPainX)\n */\n headers?: {\n [key: string]: string;\n };\n /**\n * Title shown in the player (Android)\n * by Manuel García Marín (https://github.com/PhantomPainX)\n */\n title?: string;\n /**\n * Subtitle shown below the title in the player (Android)\n * by Manuel García Marín (https://github.com/PhantomPainX)\n */\n smallTitle?: string;\n /**\n * ExoPlayer Progress Bar and Spinner color (Android)\n * by Manuel García Marín (https://github.com/PhantomPainX)\n * Must be a valid hex color code\n * default: #FFFFFF\n */\n accentColor?: string;\n /**\n * Chromecast enable/disable (Android)\n * by Manuel García Marín (https://github.com/PhantomPainX)\n * default: true\n */\n chromecast?: boolean;\n /**\n * Artwork url to be shown in Chromecast player\n * by Manuel García Marín (https://github.com/PhantomPainX)\n * default: \"\"\n */\n artwork?: string;\n}\nexport interface capVideoPlayerIdOptions {\n /**\n * Id of DIV Element parent of the player\n */\n playerId?: string;\n}\nexport interface capVideoRateOptions {\n /**\n * Id of DIV Element parent of the player\n */\n playerId?: string;\n /**\n * Rate value\n */\n rate?: number;\n}\nexport interface capVideoVolumeOptions {\n /**\n * Id of DIV Element parent of the player\n */\n playerId?: string;\n /**\n * Volume value between [0 - 1]\n */\n volume?: number;\n}\nexport interface capVideoTimeOptions {\n /**\n * Id of DIV Element parent of the player\n */\n playerId?: string;\n /**\n * Video time value you want to seek to\n */\n seektime?: number;\n}\nexport interface capVideoMutedOptions {\n /**\n * Id of DIV Element parent of the player\n */\n playerId?: string;\n /**\n * Muted value true or false\n */\n muted?: boolean;\n}\nexport interface capVideoListener {\n /**\n * Id of DIV Element parent of the player\n */\n playerId?: string;\n /**\n * Video current time when listener trigerred\n */\n currentTime?: number;\n}\nexport interface capExitListener {\n /**\n * Dismiss value true or false\n */\n dismiss?: boolean;\n /**\n * Video current time when listener trigerred\n */\n currentTime?: number;\n}\nexport interface capVideoPlayerResult {\n /**\n * result set to true when successful else false\n */\n result?: boolean;\n /**\n * method name\n */\n method?: string;\n /**\n * value returned\n */\n value?: any;\n /**\n * message string\n */\n message?: string;\n}\nexport interface SubTitleOptions {\n /**\n * Foreground Color in RGBA (default rgba(255,255,255,1)\n */\n foregroundColor?: string;\n /**\n * Background Color in RGBA (default rgba(0,0,0,1)\n */\n backgroundColor?: string;\n /**\n * Font Size in pixels (default 16)\n */\n fontSize?: number;\n}\n"]}
1
+ {"version":3,"file":"definitions.js","sourceRoot":"","sources":["../../src/definitions.ts"],"names":[],"mappings":"","sourcesContent":["export interface VideoPlayerPlugin {\n /**\n * Echo\n *\n */\n echo(options: capEchoOptions): Promise<capVideoPlayerResult>;\n /**\n * Initialize a video player\n *\n */\n initPlayer(options: capVideoPlayerOptions): Promise<capVideoPlayerResult>;\n /**\n * Return if a given playerId is playing\n *\n */\n isPlaying(options: capVideoPlayerIdOptions): Promise<capVideoPlayerResult>;\n /**\n * Play the current video from a given playerId\n *\n */\n play(options: capVideoPlayerIdOptions): Promise<capVideoPlayerResult>;\n /**\n * Pause the current video from a given playerId\n *\n */\n pause(options: capVideoPlayerIdOptions): Promise<capVideoPlayerResult>;\n /**\n * Get the duration of the current video from a given playerId\n *\n */\n getDuration(options: capVideoPlayerIdOptions): Promise<capVideoPlayerResult>;\n /**\n * Get the current time of the current video from a given playerId\n *\n */\n getCurrentTime(options: capVideoPlayerIdOptions): Promise<capVideoPlayerResult>;\n /**\n * Set the current time to seek the current video to from a given playerId\n *\n */\n setCurrentTime(options: capVideoTimeOptions): Promise<capVideoPlayerResult>;\n /**\n * Get the volume of the current video from a given playerId\n *\n */\n getVolume(options: capVideoPlayerIdOptions): Promise<capVideoPlayerResult>;\n /**\n * Set the volume of the current video to from a given playerId\n *\n */\n setVolume(options: capVideoVolumeOptions): Promise<capVideoPlayerResult>;\n /**\n * Get the muted of the current video from a given playerId\n *\n */\n getMuted(options: capVideoPlayerIdOptions): Promise<capVideoPlayerResult>;\n /**\n * Set the muted of the current video to from a given playerId\n *\n */\n setMuted(options: capVideoMutedOptions): Promise<capVideoPlayerResult>;\n /**\n * Set the rate of the current video from a given playerId\n *\n */\n setRate(options: capVideoRateOptions): Promise<capVideoPlayerResult>;\n /**\n * Get the rate of the current video from a given playerId\n *\n */\n getRate(options: capVideoPlayerIdOptions): Promise<capVideoPlayerResult>;\n /**\n * Stop all players playing\n *\n */\n stopAllPlayers(): Promise<capVideoPlayerResult>;\n /**\n * Show controller\n *\n */\n showController(): Promise<capVideoPlayerResult>;\n /**\n * isControllerIsFullyVisible\n *\n */\n isControllerIsFullyVisible(): Promise<capVideoPlayerResult>;\n /**\n * Exit player\n *\n */\n exitPlayer(): Promise<capVideoPlayerResult>;\n}\nexport interface capEchoOptions {\n /**\n * String to be echoed\n */\n\n value?: string;\n}\nexport interface capVideoPlayerOptions {\n /**\n * Player mode\n * - \"fullscreen\"\n * - \"embedded\" (Web only)\n */\n mode?: string;\n /**\n * The url of the video to play\n */\n url?: string;\n /**\n * The url of subtitle associated with the video\n */\n subtitle?: string;\n /**\n * The language of subtitle\n * see https://github.com/libyal/libfwnt/wiki/Language-Code-identifiers\n */\n language?: string;\n /**\n * SubTitle Options\n */\n subtitleOptions?: SubTitleOptions;\n /**\n * Id of DIV Element parent of the player\n */\n playerId?: string;\n /**\n * Initial playing rate\n */\n rate?: number;\n /**\n * Exit on VideoEnd (iOS, Android)\n * default: true\n */\n exitOnEnd?: boolean;\n /**\n * Loop on VideoEnd when exitOnEnd false (iOS, Android)\n * default: false\n */\n loopOnEnd?: boolean;\n /**\n * Picture in Picture Enable (iOS, Android)\n * default: true\n */\n pipEnabled?: boolean;\n /**\n * Background Mode Enable (iOS, Android)\n * default: true\n */\n bkmodeEnabled?: boolean;\n /**\n * Show Controls Enable (iOS, Android)\n * default: true\n */\n showControls?: boolean;\n /**\n * Display Mode [\"all\", \"portrait\", \"landscape\"] (iOS, Android)\n * default: \"all\"\n */\n displayMode?: string;\n /**\n * Component Tag or DOM Element Tag (React app)\n */\n componentTag?: string;\n /**\n * Player Width (mode \"embedded\" only)\n */\n width?: number;\n /**\n * Player height (mode \"embedded\" only)\n */\n height?: number;\n /**\n * Headers for the request (iOS, Android)\n * by Manuel García Marín (https://github.com/PhantomPainX)\n */\n headers?: {\n [key: string]: string;\n };\n /**\n * Title shown in the player (Android)\n * by Manuel García Marín (https://github.com/PhantomPainX)\n */\n title?: string;\n /**\n * Subtitle shown below the title in the player (Android)\n * by Manuel García Marín (https://github.com/PhantomPainX)\n */\n smallTitle?: string;\n /**\n * ExoPlayer Progress Bar and Spinner color (Android)\n * by Manuel García Marín (https://github.com/PhantomPainX)\n * Must be a valid hex color code\n * default: #FFFFFF\n */\n accentColor?: string;\n /**\n * Chromecast enable/disable (Android)\n * by Manuel García Marín (https://github.com/PhantomPainX)\n * default: true\n */\n chromecast?: boolean;\n /**\n * Artwork url to be shown in Chromecast player\n * by Manuel García Marín (https://github.com/PhantomPainX)\n * default: \"\"\n */\n artwork?: string;\n}\nexport interface capVideoPlayerIdOptions {\n /**\n * Id of DIV Element parent of the player\n */\n playerId?: string;\n}\nexport interface capVideoRateOptions {\n /**\n * Id of DIV Element parent of the player\n */\n playerId?: string;\n /**\n * Rate value\n */\n rate?: number;\n}\nexport interface capVideoVolumeOptions {\n /**\n * Id of DIV Element parent of the player\n */\n playerId?: string;\n /**\n * Volume value between [0 - 1]\n */\n volume?: number;\n}\nexport interface capVideoTimeOptions {\n /**\n * Id of DIV Element parent of the player\n */\n playerId?: string;\n /**\n * Video time value you want to seek to\n */\n seektime?: number;\n}\nexport interface capVideoMutedOptions {\n /**\n * Id of DIV Element parent of the player\n */\n playerId?: string;\n /**\n * Muted value true or false\n */\n muted?: boolean;\n}\nexport interface capVideoListener {\n /**\n * Id of DIV Element parent of the player\n */\n playerId?: string;\n /**\n * Video current time when listener trigerred\n */\n currentTime?: number;\n}\nexport interface capExitListener {\n /**\n * Dismiss value true or false\n */\n dismiss?: boolean;\n /**\n * Video current time when listener trigerred\n */\n currentTime?: number;\n}\nexport interface capVideoPlayerResult {\n /**\n * result set to true when successful else false\n */\n result?: boolean;\n /**\n * method name\n */\n method?: string;\n /**\n * value returned\n */\n value?: any;\n /**\n * message string\n */\n message?: string;\n}\nexport interface SubTitleOptions {\n /**\n * Foreground Color in RGBA (default rgba(255,255,255,1)\n */\n foregroundColor?: string;\n /**\n * Background Color in RGBA (default rgba(0,0,0,1)\n */\n backgroundColor?: string;\n /**\n * Font Size in pixels (default 16)\n */\n fontSize?: number;\n\n /**\n * Get the native Capacitor plugin version\n *\n * @returns {Promise<{ id: string }>} an Promise with version for this device\n * @throws An error if the something went wrong\n */\n getPluginVersion(): Promise<{ version: string }>;\n}\n"]}
package/dist/esm/web.d.ts CHANGED
@@ -118,4 +118,7 @@ export declare class VideoPlayerWeb extends WebPlugin implements VideoPlayerPlug
118
118
  private handlePlayerReady;
119
119
  private addListeners;
120
120
  private removeListeners;
121
+ getPluginVersion(): Promise<{
122
+ version: string;
123
+ }>;
121
124
  }
package/dist/esm/web.js CHANGED
@@ -671,5 +671,8 @@ export class VideoPlayerWeb extends WebPlugin {
671
671
  this.handlePlayerExit();
672
672
  }, false);
673
673
  }
674
+ async getPluginVersion() {
675
+ return { version: 'web' };
676
+ }
674
677
  }
675
678
  //# sourceMappingURL=web.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"web.js","sourceRoot":"","sources":["../../src/web.ts"],"names":[],"mappings":"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","sourcesContent":["import { WebPlugin } from '@capacitor/core';\n\nimport type {\n VideoPlayerPlugin,\n capEchoOptions,\n capVideoPlayerOptions,\n capVideoPlayerIdOptions,\n capVideoVolumeOptions,\n capVideoTimeOptions,\n capVideoMutedOptions,\n capVideoRateOptions,\n capVideoPlayerResult,\n} from './definitions';\nimport { VideoPlayer } from './web-utils/videoplayer';\n\nexport interface IPlayerSize {\n height: number;\n width: number;\n}\n\nexport class VideoPlayerWeb extends WebPlugin implements VideoPlayerPlugin {\n private _players: any = [];\n private videoContainer!: HTMLDivElement | null;\n private mode!: string;\n\n constructor() {\n super();\n this.addListeners();\n }\n\n async echo(options: capEchoOptions): Promise<capVideoPlayerResult> {\n return Promise.resolve({ result: true, method: 'echo', value: options });\n }\n\n /**\n * Player initialization\n *\n * @param options\n */\n async initPlayer(options: capVideoPlayerOptions): Promise<capVideoPlayerResult> {\n if (options == null) {\n return Promise.resolve({\n result: false,\n method: 'initPlayer',\n message: 'Must provide a capVideoPlayerOptions object',\n });\n }\n\n this.mode = options.mode ? options.mode : '';\n if (this.mode == null || this.mode.length === 0) {\n return Promise.resolve({\n result: false,\n method: 'initPlayer',\n message: 'Must provide a Mode (fullscreen/embedded)',\n });\n }\n if (this.mode === 'fullscreen' || this.mode === 'embedded') {\n const url: string = options.url ? options.url : '';\n if (url == null || url.length === 0) {\n return Promise.resolve({\n result: false,\n method: 'initPlayer',\n message: 'Must provide a Video Url',\n });\n }\n if (url == 'internal') {\n return Promise.resolve({\n result: false,\n method: 'initPlayer',\n message: 'Internal Videos not supported on Web Platform',\n });\n }\n const playerId: string = options.playerId ? options.playerId : '';\n if (playerId == null || playerId.length === 0) {\n return Promise.resolve({\n result: false,\n method: 'initPlayer',\n message: 'Must provide a Player Id',\n });\n }\n const rate: number = options.rate ? options.rate : 1.0;\n let exitOnEnd = true;\n if (Object.keys(options).includes('exitOnEnd')) {\n const exitRet = options.exitOnEnd;\n exitOnEnd = exitRet != null ? exitRet : true;\n }\n let loopOnEnd = false;\n if (Object.keys(options).includes('loopOnEnd') && !exitOnEnd) {\n const loopRet = options.loopOnEnd;\n loopOnEnd = loopRet != null ? loopRet : false;\n }\n const componentTag: string = options.componentTag ? options.componentTag : '';\n if (componentTag == null || componentTag.length === 0) {\n return Promise.resolve({\n result: false,\n method: 'initPlayer',\n message: 'Must provide a Component Tag',\n });\n }\n let playerSize: IPlayerSize = null as any;\n if (this.mode === 'embedded') {\n playerSize = this.checkSize(options);\n }\n const result = await this._initializeVideoPlayer(\n url,\n playerId,\n this.mode,\n rate,\n exitOnEnd,\n loopOnEnd,\n componentTag,\n playerSize,\n );\n return Promise.resolve({ result: result });\n } else {\n return Promise.resolve({\n result: false,\n method: 'initPlayer',\n message: 'Must provide a Mode either fullscreen or embedded)',\n });\n }\n }\n /**\n * Return if a given playerId is playing\n *\n * @param options\n */\n async isPlaying(options: capVideoPlayerIdOptions): Promise<capVideoPlayerResult> {\n if (options == null) {\n return Promise.resolve({\n result: false,\n method: 'isPlaying',\n message: 'Must provide a capVideoPlayerIdOptions object',\n });\n }\n let playerId: string = options.playerId ? options.playerId : '';\n if (playerId == null || playerId.length === 0) {\n playerId = 'fullscreen';\n }\n if (this._players[playerId]) {\n const playing: boolean = this._players[playerId].isPlaying;\n return Promise.resolve({\n method: 'isPlaying',\n result: true,\n value: playing,\n });\n } else {\n return Promise.resolve({\n method: 'isPlaying',\n result: false,\n message: 'Given PlayerId does not exist)',\n });\n }\n }\n\n /**\n * Play the current video from a given playerId\n *\n * @param options\n */\n async play(options: capVideoPlayerIdOptions): Promise<capVideoPlayerResult> {\n if (options == null) {\n return Promise.resolve({\n result: false,\n method: 'play',\n message: 'Must provide a capVideoPlayerIdOptions object',\n });\n }\n let playerId: string = options.playerId ? options.playerId : '';\n if (playerId == null || playerId.length === 0) {\n playerId = 'fullscreen';\n }\n if (this._players[playerId]) {\n await this._players[playerId].videoEl.play();\n return Promise.resolve({ method: 'play', result: true, value: true });\n } else {\n return Promise.resolve({\n method: 'play',\n result: false,\n message: 'Given PlayerId does not exist)',\n });\n }\n }\n /**\n * Pause the current video from a given playerId\n *\n * @param options\n */\n async pause(options: capVideoPlayerIdOptions): Promise<capVideoPlayerResult> {\n if (options == null) {\n return Promise.resolve({\n result: false,\n method: 'pause',\n message: 'Must provide a capVideoPlayerIdOptions object',\n });\n }\n let playerId: string = options.playerId ? options.playerId : '';\n if (playerId == null || playerId.length === 0) {\n playerId = 'fullscreen';\n }\n if (this._players[playerId]) {\n if (this._players[playerId].isPlaying) await this._players[playerId].videoEl.pause();\n return Promise.resolve({ method: 'pause', result: true, value: true });\n } else {\n return Promise.resolve({\n method: 'pause',\n result: false,\n message: 'Given PlayerId does not exist)',\n });\n }\n }\n /**\n * Get the duration of the current video from a given playerId\n *\n * @param options\n */\n async getDuration(options: capVideoPlayerIdOptions): Promise<capVideoPlayerResult> {\n if (options == null) {\n return Promise.resolve({\n result: false,\n method: 'getDuration',\n message: 'Must provide a capVideoPlayerIdOptions object',\n });\n }\n let playerId: string = options.playerId ? options.playerId : '';\n if (playerId == null || playerId.length === 0) {\n playerId = 'fullscreen';\n }\n if (this._players[playerId]) {\n const duration: number = this._players[playerId].videoEl.duration;\n return Promise.resolve({\n method: 'getDuration',\n result: true,\n value: duration,\n });\n } else {\n return Promise.resolve({\n method: 'getDuration',\n result: false,\n message: 'Given PlayerId does not exist)',\n });\n }\n }\n /**\n * Set the rate of the current video from a given playerId\n *\n * @param options\n */\n async setRate(options: capVideoRateOptions): Promise<capVideoPlayerResult> {\n if (options == null) {\n return Promise.resolve({\n result: false,\n method: 'setRate',\n message: 'Must provide a capVideoRateOptions object',\n });\n }\n let playerId: string = options.playerId ? options.playerId : '';\n if (playerId == null || playerId.length === 0) {\n playerId = 'fullscreen';\n }\n const rateList: number[] = [0.25, 0.5, 0.75, 1.0, 2.0, 4.0];\n const rate: number = options.rate && rateList.includes(options.rate) ? options.rate : 1.0;\n if (this._players[playerId]) {\n this._players[playerId].videoEl.playbackRate = rate;\n return Promise.resolve({\n method: 'setRate',\n result: true,\n value: rate,\n });\n } else {\n return Promise.resolve({\n method: 'setRate',\n result: false,\n message: 'Given PlayerId does not exist)',\n });\n }\n }\n /**\n * Get the volume of the current video from a given playerId\n *\n * @param options\n */\n async getRate(options: capVideoPlayerIdOptions): Promise<capVideoPlayerResult> {\n if (options == null) {\n return Promise.resolve({\n result: false,\n method: 'getRate',\n message: 'Must provide a capVideoPlayerIdOptions object',\n });\n }\n let playerId: string = options.playerId ? options.playerId : '';\n if (playerId == null || playerId.length === 0) {\n playerId = 'fullscreen';\n }\n if (this._players[playerId]) {\n const rate: number = this._players[playerId].videoEl.playbackRate;\n return Promise.resolve({\n method: 'getRate',\n result: true,\n value: rate,\n });\n } else {\n return Promise.resolve({\n method: 'getRate',\n result: false,\n message: 'Given PlayerId does not exist)',\n });\n }\n }\n\n /**\n * Set the volume of the current video from a given playerId\n *\n * @param options\n */\n async setVolume(options: capVideoVolumeOptions): Promise<capVideoPlayerResult> {\n if (options == null) {\n return Promise.resolve({\n result: false,\n method: 'setVolume',\n message: 'Must provide a capVideoVolumeOptions object',\n });\n }\n let playerId: string = options.playerId ? options.playerId : '';\n if (playerId == null || playerId.length === 0) {\n playerId = 'fullscreen';\n }\n const volume: number = options.volume ? options.volume : 0.5;\n if (this._players[playerId]) {\n this._players[playerId].videoEl.volume = volume;\n return Promise.resolve({\n method: 'setVolume',\n result: true,\n value: volume,\n });\n } else {\n return Promise.resolve({\n method: 'setVolume',\n result: false,\n message: 'Given PlayerId does not exist)',\n });\n }\n }\n /**\n * Get the volume of the current video from a given playerId\n *\n * @param options\n */\n async getVolume(options: capVideoPlayerIdOptions): Promise<capVideoPlayerResult> {\n if (options == null) {\n return Promise.resolve({\n result: false,\n method: 'getVolume',\n message: 'Must provide a capVideoPlayerIdOptions object',\n });\n }\n let playerId: string = options.playerId ? options.playerId : '';\n if (playerId == null || playerId.length === 0) {\n playerId = 'fullscreen';\n }\n if (this._players[playerId]) {\n const volume: number = this._players[playerId].videoEl.volume;\n return Promise.resolve({\n method: 'getVolume',\n result: true,\n value: volume,\n });\n } else {\n return Promise.resolve({\n method: 'getVolume',\n result: false,\n message: 'Given PlayerId does not exist)',\n });\n }\n }\n /**\n * Set the muted property of the current video from a given playerId\n *\n * @param options\n */\n async setMuted(options: capVideoMutedOptions): Promise<capVideoPlayerResult> {\n if (options == null) {\n return Promise.resolve({\n result: false,\n method: 'setMuted',\n message: 'Must provide a capVideoMutedOptions object',\n });\n }\n let playerId: string = options.playerId ? options.playerId : '';\n if (playerId == null || playerId.length === 0) {\n playerId = 'fullscreen';\n }\n const muted: boolean = options.muted ? options.muted : false;\n if (this._players[playerId]) {\n this._players[playerId].videoEl.muted = muted;\n return Promise.resolve({\n method: 'setMuted',\n result: true,\n value: muted,\n });\n } else {\n return Promise.resolve({\n method: 'setMuted',\n result: false,\n message: 'Given PlayerId does not exist)',\n });\n }\n }\n /**\n * Get the muted property of the current video from a given playerId\n *\n * @param options\n */\n async getMuted(options: capVideoPlayerIdOptions): Promise<capVideoPlayerResult> {\n if (options == null) {\n return Promise.resolve({\n result: false,\n method: 'getMuted',\n message: 'Must provide a capVideoPlayerIdOptions object',\n });\n }\n let playerId: string = options.playerId ? options.playerId : '';\n if (playerId == null || playerId.length === 0) {\n playerId = 'fullscreen';\n }\n if (this._players[playerId]) {\n const muted: boolean = this._players[playerId].videoEl.muted;\n return Promise.resolve({\n method: 'getMuted',\n result: true,\n value: muted,\n });\n } else {\n return Promise.resolve({\n method: 'getMuted',\n result: false,\n message: 'Given PlayerId does not exist)',\n });\n }\n }\n /**\n * Set the current time of the current video from a given playerId\n *\n * @param options\n */\n async setCurrentTime(options: capVideoTimeOptions): Promise<capVideoPlayerResult> {\n if (options == null) {\n return Promise.resolve({\n result: false,\n method: 'setCurrentTime',\n message: 'Must provide a capVideoTimeOptions object',\n });\n }\n let playerId: string = options.playerId ? options.playerId : '';\n if (playerId == null || playerId.length === 0) {\n playerId = 'fullscreen';\n }\n let seekTime: number = options.seektime ? options.seektime : 0;\n if (this._players[playerId]) {\n const duration: number = this._players[playerId].videoEl.duration;\n seekTime = seekTime <= duration && seekTime >= 0 ? seekTime : duration / 2;\n this._players[playerId].videoEl.currentTime = seekTime;\n return Promise.resolve({\n method: 'setCurrentTime',\n result: true,\n value: seekTime,\n });\n } else {\n return Promise.resolve({\n method: 'setCurrentTime',\n result: false,\n message: 'Given PlayerId does not exist)',\n });\n }\n }\n /**\n * Get the current time of the current video from a given playerId\n *\n * @param options\n */\n async getCurrentTime(options: capVideoPlayerIdOptions): Promise<capVideoPlayerResult> {\n if (options == null) {\n return Promise.resolve({\n result: false,\n method: 'getCurrentTime',\n message: 'Must provide a capVideoPlayerIdOptions object',\n });\n }\n let playerId: string = options.playerId ? options.playerId : '';\n if (playerId == null || playerId.length === 0) {\n playerId = 'fullscreen';\n }\n if (this._players[playerId]) {\n const seekTime: number = this._players[playerId].videoEl.currentTime;\n return Promise.resolve({\n method: 'getCurrentTime',\n result: true,\n value: seekTime,\n });\n } else {\n return Promise.resolve({\n method: 'getCurrentTime',\n result: false,\n message: 'Given PlayerId does not exist)',\n });\n }\n }\n /**\n * Get the current time of the current video from a given playerId\n *\n */\n async stopAllPlayers(): Promise<capVideoPlayerResult> {\n for (const i in this._players) {\n if (this._players[i].pipMode) {\n const doc: any = document;\n if (doc.pictureInPictureElement) {\n await doc.exitPictureInPicture();\n }\n }\n if (!this._players[i].videoEl.paused) this._players[i].videoEl.pause();\n }\n return Promise.resolve({\n method: 'stopAllPlayers',\n result: true,\n value: true,\n });\n }\n /**\n * Show controller\n *\n */\n async showController(): Promise<capVideoPlayerResult> {\n return Promise.resolve({\n method: 'showController',\n result: true,\n value: true,\n });\n }\n /**\n * isControllerIsFullyVisible\n *\n */\n async isControllerIsFullyVisible(): Promise<capVideoPlayerResult> {\n return Promise.resolve({\n method: 'isControllerIsFullyVisible',\n result: true,\n value: true,\n });\n }\n /**\n * Exit the current player\n *\n */\n async exitPlayer(): Promise<capVideoPlayerResult> {\n return Promise.resolve({\n method: 'exitPlayer',\n result: true,\n value: true,\n });\n }\n private checkSize(options: capVideoPlayerOptions): IPlayerSize {\n const playerSize: IPlayerSize = {\n width: options.width ? options.width : 320,\n height: options.height ? options.height : 180,\n };\n const ratio: number = playerSize.height / playerSize.width;\n if (playerSize.width > window.innerWidth) {\n playerSize.width = window.innerWidth;\n playerSize.height = Math.floor(playerSize.width * ratio);\n }\n if (playerSize.height > window.innerHeight) {\n playerSize.height = window.innerHeight;\n playerSize.width = Math.floor(playerSize.height / ratio);\n }\n return playerSize;\n }\n private async _initializeVideoPlayer(\n url: string,\n playerId: string,\n mode: string,\n rate: number,\n exitOnEnd: boolean,\n loopOnEnd: boolean,\n componentTag: string,\n playerSize: IPlayerSize,\n ): Promise<any> {\n const videoURL: string = url ? (url.indexOf('%2F') == -1 ? encodeURI(url) : url) : (null as any);\n if (videoURL === null) return Promise.resolve(false);\n this.videoContainer = await this._getContainerElement(playerId, componentTag);\n if (this.videoContainer === null)\n return Promise.resolve({\n method: 'initPlayer',\n result: false,\n message: 'componentTag or divContainerElement must be provided',\n });\n if (mode === 'embedded' && playerSize == null)\n return Promise.resolve({\n method: 'initPlayer',\n result: false,\n message: 'playerSize must be defined in embedded mode',\n });\n\n if (mode === 'embedded') {\n this._players[playerId] = new VideoPlayer(\n 'embedded',\n videoURL,\n playerId,\n rate,\n exitOnEnd,\n loopOnEnd,\n this.videoContainer,\n 2,\n playerSize.width,\n playerSize.height,\n );\n await this._players[playerId].initialize();\n } else if (mode === 'fullscreen') {\n this._players['fullscreen'] = new VideoPlayer(\n 'fullscreen',\n videoURL,\n 'fullscreen',\n rate,\n exitOnEnd,\n loopOnEnd,\n this.videoContainer,\n 99995,\n );\n await this._players['fullscreen'].initialize();\n } else {\n return Promise.resolve({\n method: 'initPlayer',\n result: false,\n message: 'mode not supported',\n });\n }\n return Promise.resolve({ method: 'initPlayer', result: true, value: true });\n }\n private async _getContainerElement(playerId: string, componentTag: string): Promise<HTMLDivElement | null> {\n const videoContainer: HTMLDivElement = document.createElement('div');\n videoContainer.id = `vc_${playerId}`;\n if (componentTag != null && componentTag.length > 0) {\n const cmpTagEl: HTMLElement | null = document.querySelector(`${componentTag}`);\n if (cmpTagEl === null) return Promise.resolve(null);\n let container: HTMLDivElement | null = null;\n const shadowRoot = cmpTagEl.shadowRoot ? cmpTagEl.shadowRoot : null;\n if (shadowRoot != null) {\n container = shadowRoot.querySelector(`[id='${playerId}']`);\n } else {\n container = cmpTagEl.querySelector(`[id='${playerId}']`);\n }\n if (container != null) container.appendChild(videoContainer);\n return Promise.resolve(videoContainer);\n } else {\n return Promise.resolve(null);\n }\n }\n private handlePlayerPlay(data: any) {\n this.notifyListeners('jeepCapVideoPlayerPlay', data);\n }\n private handlePlayerPause(data: any) {\n this.notifyListeners('jeepCapVideoPlayerPause', data);\n }\n private handlePlayerEnded(data: any) {\n if (this.mode === 'fullscreen') {\n this.videoContainer?.remove();\n }\n this.removeListeners();\n this.notifyListeners('jeepCapVideoPlayerEnded', data);\n }\n private handlePlayerExit() {\n if (this.mode === 'fullscreen') {\n this.videoContainer?.remove();\n }\n const retData: any = { dismiss: true };\n this.removeListeners();\n this.notifyListeners('jeepCapVideoPlayerExit', retData);\n }\n private handlePlayerReady(data: any) {\n this.notifyListeners('jeepCapVideoPlayerReady', data);\n }\n\n private addListeners() {\n document.addEventListener(\n 'videoPlayerPlay',\n (ev: any) => {\n this.handlePlayerPlay(ev.detail);\n },\n false,\n );\n document.addEventListener(\n 'videoPlayerPause',\n (ev: any) => {\n this.handlePlayerPause(ev.detail);\n },\n false,\n );\n document.addEventListener(\n 'videoPlayerEnded',\n (ev: any) => {\n this.handlePlayerEnded(ev.detail);\n },\n false,\n );\n document.addEventListener(\n 'videoPlayerReady',\n (ev: any) => {\n this.handlePlayerReady(ev.detail);\n },\n false,\n );\n document.addEventListener(\n 'videoPlayerExit',\n () => {\n this.handlePlayerExit();\n },\n false,\n );\n }\n\n private removeListeners() {\n document.removeEventListener(\n 'videoPlayerPlay',\n (ev: any) => {\n this.handlePlayerPlay(ev.detail);\n },\n false,\n );\n document.removeEventListener(\n 'videoPlayerPause',\n (ev: any) => {\n this.handlePlayerPause(ev.detail);\n },\n false,\n );\n document.removeEventListener(\n 'videoPlayerEnded',\n (ev: any) => {\n this.handlePlayerEnded(ev.detail);\n },\n false,\n );\n document.removeEventListener(\n 'videoPlayerReady',\n (ev: any) => {\n this.handlePlayerReady(ev.detail);\n },\n false,\n );\n document.removeEventListener(\n 'videoPlayerExit',\n () => {\n this.handlePlayerExit();\n },\n false,\n );\n }\n}\n"]}
1
+ {"version":3,"file":"web.js","sourceRoot":"","sources":["../../src/web.ts"],"names":[],"mappings":"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","sourcesContent":["import { WebPlugin } from '@capacitor/core';\n\nimport type {\n VideoPlayerPlugin,\n capEchoOptions,\n capVideoPlayerOptions,\n capVideoPlayerIdOptions,\n capVideoVolumeOptions,\n capVideoTimeOptions,\n capVideoMutedOptions,\n capVideoRateOptions,\n capVideoPlayerResult,\n} from './definitions';\nimport { VideoPlayer } from './web-utils/videoplayer';\n\nexport interface IPlayerSize {\n height: number;\n width: number;\n}\n\nexport class VideoPlayerWeb extends WebPlugin implements VideoPlayerPlugin {\n private _players: any = [];\n private videoContainer!: HTMLDivElement | null;\n private mode!: string;\n\n constructor() {\n super();\n this.addListeners();\n }\n\n async echo(options: capEchoOptions): Promise<capVideoPlayerResult> {\n return Promise.resolve({ result: true, method: 'echo', value: options });\n }\n\n /**\n * Player initialization\n *\n * @param options\n */\n async initPlayer(options: capVideoPlayerOptions): Promise<capVideoPlayerResult> {\n if (options == null) {\n return Promise.resolve({\n result: false,\n method: 'initPlayer',\n message: 'Must provide a capVideoPlayerOptions object',\n });\n }\n\n this.mode = options.mode ? options.mode : '';\n if (this.mode == null || this.mode.length === 0) {\n return Promise.resolve({\n result: false,\n method: 'initPlayer',\n message: 'Must provide a Mode (fullscreen/embedded)',\n });\n }\n if (this.mode === 'fullscreen' || this.mode === 'embedded') {\n const url: string = options.url ? options.url : '';\n if (url == null || url.length === 0) {\n return Promise.resolve({\n result: false,\n method: 'initPlayer',\n message: 'Must provide a Video Url',\n });\n }\n if (url == 'internal') {\n return Promise.resolve({\n result: false,\n method: 'initPlayer',\n message: 'Internal Videos not supported on Web Platform',\n });\n }\n const playerId: string = options.playerId ? options.playerId : '';\n if (playerId == null || playerId.length === 0) {\n return Promise.resolve({\n result: false,\n method: 'initPlayer',\n message: 'Must provide a Player Id',\n });\n }\n const rate: number = options.rate ? options.rate : 1.0;\n let exitOnEnd = true;\n if (Object.keys(options).includes('exitOnEnd')) {\n const exitRet = options.exitOnEnd;\n exitOnEnd = exitRet != null ? exitRet : true;\n }\n let loopOnEnd = false;\n if (Object.keys(options).includes('loopOnEnd') && !exitOnEnd) {\n const loopRet = options.loopOnEnd;\n loopOnEnd = loopRet != null ? loopRet : false;\n }\n const componentTag: string = options.componentTag ? options.componentTag : '';\n if (componentTag == null || componentTag.length === 0) {\n return Promise.resolve({\n result: false,\n method: 'initPlayer',\n message: 'Must provide a Component Tag',\n });\n }\n let playerSize: IPlayerSize = null as any;\n if (this.mode === 'embedded') {\n playerSize = this.checkSize(options);\n }\n const result = await this._initializeVideoPlayer(\n url,\n playerId,\n this.mode,\n rate,\n exitOnEnd,\n loopOnEnd,\n componentTag,\n playerSize,\n );\n return Promise.resolve({ result: result });\n } else {\n return Promise.resolve({\n result: false,\n method: 'initPlayer',\n message: 'Must provide a Mode either fullscreen or embedded)',\n });\n }\n }\n /**\n * Return if a given playerId is playing\n *\n * @param options\n */\n async isPlaying(options: capVideoPlayerIdOptions): Promise<capVideoPlayerResult> {\n if (options == null) {\n return Promise.resolve({\n result: false,\n method: 'isPlaying',\n message: 'Must provide a capVideoPlayerIdOptions object',\n });\n }\n let playerId: string = options.playerId ? options.playerId : '';\n if (playerId == null || playerId.length === 0) {\n playerId = 'fullscreen';\n }\n if (this._players[playerId]) {\n const playing: boolean = this._players[playerId].isPlaying;\n return Promise.resolve({\n method: 'isPlaying',\n result: true,\n value: playing,\n });\n } else {\n return Promise.resolve({\n method: 'isPlaying',\n result: false,\n message: 'Given PlayerId does not exist)',\n });\n }\n }\n\n /**\n * Play the current video from a given playerId\n *\n * @param options\n */\n async play(options: capVideoPlayerIdOptions): Promise<capVideoPlayerResult> {\n if (options == null) {\n return Promise.resolve({\n result: false,\n method: 'play',\n message: 'Must provide a capVideoPlayerIdOptions object',\n });\n }\n let playerId: string = options.playerId ? options.playerId : '';\n if (playerId == null || playerId.length === 0) {\n playerId = 'fullscreen';\n }\n if (this._players[playerId]) {\n await this._players[playerId].videoEl.play();\n return Promise.resolve({ method: 'play', result: true, value: true });\n } else {\n return Promise.resolve({\n method: 'play',\n result: false,\n message: 'Given PlayerId does not exist)',\n });\n }\n }\n /**\n * Pause the current video from a given playerId\n *\n * @param options\n */\n async pause(options: capVideoPlayerIdOptions): Promise<capVideoPlayerResult> {\n if (options == null) {\n return Promise.resolve({\n result: false,\n method: 'pause',\n message: 'Must provide a capVideoPlayerIdOptions object',\n });\n }\n let playerId: string = options.playerId ? options.playerId : '';\n if (playerId == null || playerId.length === 0) {\n playerId = 'fullscreen';\n }\n if (this._players[playerId]) {\n if (this._players[playerId].isPlaying) await this._players[playerId].videoEl.pause();\n return Promise.resolve({ method: 'pause', result: true, value: true });\n } else {\n return Promise.resolve({\n method: 'pause',\n result: false,\n message: 'Given PlayerId does not exist)',\n });\n }\n }\n /**\n * Get the duration of the current video from a given playerId\n *\n * @param options\n */\n async getDuration(options: capVideoPlayerIdOptions): Promise<capVideoPlayerResult> {\n if (options == null) {\n return Promise.resolve({\n result: false,\n method: 'getDuration',\n message: 'Must provide a capVideoPlayerIdOptions object',\n });\n }\n let playerId: string = options.playerId ? options.playerId : '';\n if (playerId == null || playerId.length === 0) {\n playerId = 'fullscreen';\n }\n if (this._players[playerId]) {\n const duration: number = this._players[playerId].videoEl.duration;\n return Promise.resolve({\n method: 'getDuration',\n result: true,\n value: duration,\n });\n } else {\n return Promise.resolve({\n method: 'getDuration',\n result: false,\n message: 'Given PlayerId does not exist)',\n });\n }\n }\n /**\n * Set the rate of the current video from a given playerId\n *\n * @param options\n */\n async setRate(options: capVideoRateOptions): Promise<capVideoPlayerResult> {\n if (options == null) {\n return Promise.resolve({\n result: false,\n method: 'setRate',\n message: 'Must provide a capVideoRateOptions object',\n });\n }\n let playerId: string = options.playerId ? options.playerId : '';\n if (playerId == null || playerId.length === 0) {\n playerId = 'fullscreen';\n }\n const rateList: number[] = [0.25, 0.5, 0.75, 1.0, 2.0, 4.0];\n const rate: number = options.rate && rateList.includes(options.rate) ? options.rate : 1.0;\n if (this._players[playerId]) {\n this._players[playerId].videoEl.playbackRate = rate;\n return Promise.resolve({\n method: 'setRate',\n result: true,\n value: rate,\n });\n } else {\n return Promise.resolve({\n method: 'setRate',\n result: false,\n message: 'Given PlayerId does not exist)',\n });\n }\n }\n /**\n * Get the volume of the current video from a given playerId\n *\n * @param options\n */\n async getRate(options: capVideoPlayerIdOptions): Promise<capVideoPlayerResult> {\n if (options == null) {\n return Promise.resolve({\n result: false,\n method: 'getRate',\n message: 'Must provide a capVideoPlayerIdOptions object',\n });\n }\n let playerId: string = options.playerId ? options.playerId : '';\n if (playerId == null || playerId.length === 0) {\n playerId = 'fullscreen';\n }\n if (this._players[playerId]) {\n const rate: number = this._players[playerId].videoEl.playbackRate;\n return Promise.resolve({\n method: 'getRate',\n result: true,\n value: rate,\n });\n } else {\n return Promise.resolve({\n method: 'getRate',\n result: false,\n message: 'Given PlayerId does not exist)',\n });\n }\n }\n\n /**\n * Set the volume of the current video from a given playerId\n *\n * @param options\n */\n async setVolume(options: capVideoVolumeOptions): Promise<capVideoPlayerResult> {\n if (options == null) {\n return Promise.resolve({\n result: false,\n method: 'setVolume',\n message: 'Must provide a capVideoVolumeOptions object',\n });\n }\n let playerId: string = options.playerId ? options.playerId : '';\n if (playerId == null || playerId.length === 0) {\n playerId = 'fullscreen';\n }\n const volume: number = options.volume ? options.volume : 0.5;\n if (this._players[playerId]) {\n this._players[playerId].videoEl.volume = volume;\n return Promise.resolve({\n method: 'setVolume',\n result: true,\n value: volume,\n });\n } else {\n return Promise.resolve({\n method: 'setVolume',\n result: false,\n message: 'Given PlayerId does not exist)',\n });\n }\n }\n /**\n * Get the volume of the current video from a given playerId\n *\n * @param options\n */\n async getVolume(options: capVideoPlayerIdOptions): Promise<capVideoPlayerResult> {\n if (options == null) {\n return Promise.resolve({\n result: false,\n method: 'getVolume',\n message: 'Must provide a capVideoPlayerIdOptions object',\n });\n }\n let playerId: string = options.playerId ? options.playerId : '';\n if (playerId == null || playerId.length === 0) {\n playerId = 'fullscreen';\n }\n if (this._players[playerId]) {\n const volume: number = this._players[playerId].videoEl.volume;\n return Promise.resolve({\n method: 'getVolume',\n result: true,\n value: volume,\n });\n } else {\n return Promise.resolve({\n method: 'getVolume',\n result: false,\n message: 'Given PlayerId does not exist)',\n });\n }\n }\n /**\n * Set the muted property of the current video from a given playerId\n *\n * @param options\n */\n async setMuted(options: capVideoMutedOptions): Promise<capVideoPlayerResult> {\n if (options == null) {\n return Promise.resolve({\n result: false,\n method: 'setMuted',\n message: 'Must provide a capVideoMutedOptions object',\n });\n }\n let playerId: string = options.playerId ? options.playerId : '';\n if (playerId == null || playerId.length === 0) {\n playerId = 'fullscreen';\n }\n const muted: boolean = options.muted ? options.muted : false;\n if (this._players[playerId]) {\n this._players[playerId].videoEl.muted = muted;\n return Promise.resolve({\n method: 'setMuted',\n result: true,\n value: muted,\n });\n } else {\n return Promise.resolve({\n method: 'setMuted',\n result: false,\n message: 'Given PlayerId does not exist)',\n });\n }\n }\n /**\n * Get the muted property of the current video from a given playerId\n *\n * @param options\n */\n async getMuted(options: capVideoPlayerIdOptions): Promise<capVideoPlayerResult> {\n if (options == null) {\n return Promise.resolve({\n result: false,\n method: 'getMuted',\n message: 'Must provide a capVideoPlayerIdOptions object',\n });\n }\n let playerId: string = options.playerId ? options.playerId : '';\n if (playerId == null || playerId.length === 0) {\n playerId = 'fullscreen';\n }\n if (this._players[playerId]) {\n const muted: boolean = this._players[playerId].videoEl.muted;\n return Promise.resolve({\n method: 'getMuted',\n result: true,\n value: muted,\n });\n } else {\n return Promise.resolve({\n method: 'getMuted',\n result: false,\n message: 'Given PlayerId does not exist)',\n });\n }\n }\n /**\n * Set the current time of the current video from a given playerId\n *\n * @param options\n */\n async setCurrentTime(options: capVideoTimeOptions): Promise<capVideoPlayerResult> {\n if (options == null) {\n return Promise.resolve({\n result: false,\n method: 'setCurrentTime',\n message: 'Must provide a capVideoTimeOptions object',\n });\n }\n let playerId: string = options.playerId ? options.playerId : '';\n if (playerId == null || playerId.length === 0) {\n playerId = 'fullscreen';\n }\n let seekTime: number = options.seektime ? options.seektime : 0;\n if (this._players[playerId]) {\n const duration: number = this._players[playerId].videoEl.duration;\n seekTime = seekTime <= duration && seekTime >= 0 ? seekTime : duration / 2;\n this._players[playerId].videoEl.currentTime = seekTime;\n return Promise.resolve({\n method: 'setCurrentTime',\n result: true,\n value: seekTime,\n });\n } else {\n return Promise.resolve({\n method: 'setCurrentTime',\n result: false,\n message: 'Given PlayerId does not exist)',\n });\n }\n }\n /**\n * Get the current time of the current video from a given playerId\n *\n * @param options\n */\n async getCurrentTime(options: capVideoPlayerIdOptions): Promise<capVideoPlayerResult> {\n if (options == null) {\n return Promise.resolve({\n result: false,\n method: 'getCurrentTime',\n message: 'Must provide a capVideoPlayerIdOptions object',\n });\n }\n let playerId: string = options.playerId ? options.playerId : '';\n if (playerId == null || playerId.length === 0) {\n playerId = 'fullscreen';\n }\n if (this._players[playerId]) {\n const seekTime: number = this._players[playerId].videoEl.currentTime;\n return Promise.resolve({\n method: 'getCurrentTime',\n result: true,\n value: seekTime,\n });\n } else {\n return Promise.resolve({\n method: 'getCurrentTime',\n result: false,\n message: 'Given PlayerId does not exist)',\n });\n }\n }\n /**\n * Get the current time of the current video from a given playerId\n *\n */\n async stopAllPlayers(): Promise<capVideoPlayerResult> {\n for (const i in this._players) {\n if (this._players[i].pipMode) {\n const doc: any = document;\n if (doc.pictureInPictureElement) {\n await doc.exitPictureInPicture();\n }\n }\n if (!this._players[i].videoEl.paused) this._players[i].videoEl.pause();\n }\n return Promise.resolve({\n method: 'stopAllPlayers',\n result: true,\n value: true,\n });\n }\n /**\n * Show controller\n *\n */\n async showController(): Promise<capVideoPlayerResult> {\n return Promise.resolve({\n method: 'showController',\n result: true,\n value: true,\n });\n }\n /**\n * isControllerIsFullyVisible\n *\n */\n async isControllerIsFullyVisible(): Promise<capVideoPlayerResult> {\n return Promise.resolve({\n method: 'isControllerIsFullyVisible',\n result: true,\n value: true,\n });\n }\n /**\n * Exit the current player\n *\n */\n async exitPlayer(): Promise<capVideoPlayerResult> {\n return Promise.resolve({\n method: 'exitPlayer',\n result: true,\n value: true,\n });\n }\n private checkSize(options: capVideoPlayerOptions): IPlayerSize {\n const playerSize: IPlayerSize = {\n width: options.width ? options.width : 320,\n height: options.height ? options.height : 180,\n };\n const ratio: number = playerSize.height / playerSize.width;\n if (playerSize.width > window.innerWidth) {\n playerSize.width = window.innerWidth;\n playerSize.height = Math.floor(playerSize.width * ratio);\n }\n if (playerSize.height > window.innerHeight) {\n playerSize.height = window.innerHeight;\n playerSize.width = Math.floor(playerSize.height / ratio);\n }\n return playerSize;\n }\n private async _initializeVideoPlayer(\n url: string,\n playerId: string,\n mode: string,\n rate: number,\n exitOnEnd: boolean,\n loopOnEnd: boolean,\n componentTag: string,\n playerSize: IPlayerSize,\n ): Promise<any> {\n const videoURL: string = url ? (url.indexOf('%2F') == -1 ? encodeURI(url) : url) : (null as any);\n if (videoURL === null) return Promise.resolve(false);\n this.videoContainer = await this._getContainerElement(playerId, componentTag);\n if (this.videoContainer === null)\n return Promise.resolve({\n method: 'initPlayer',\n result: false,\n message: 'componentTag or divContainerElement must be provided',\n });\n if (mode === 'embedded' && playerSize == null)\n return Promise.resolve({\n method: 'initPlayer',\n result: false,\n message: 'playerSize must be defined in embedded mode',\n });\n\n if (mode === 'embedded') {\n this._players[playerId] = new VideoPlayer(\n 'embedded',\n videoURL,\n playerId,\n rate,\n exitOnEnd,\n loopOnEnd,\n this.videoContainer,\n 2,\n playerSize.width,\n playerSize.height,\n );\n await this._players[playerId].initialize();\n } else if (mode === 'fullscreen') {\n this._players['fullscreen'] = new VideoPlayer(\n 'fullscreen',\n videoURL,\n 'fullscreen',\n rate,\n exitOnEnd,\n loopOnEnd,\n this.videoContainer,\n 99995,\n );\n await this._players['fullscreen'].initialize();\n } else {\n return Promise.resolve({\n method: 'initPlayer',\n result: false,\n message: 'mode not supported',\n });\n }\n return Promise.resolve({ method: 'initPlayer', result: true, value: true });\n }\n private async _getContainerElement(playerId: string, componentTag: string): Promise<HTMLDivElement | null> {\n const videoContainer: HTMLDivElement = document.createElement('div');\n videoContainer.id = `vc_${playerId}`;\n if (componentTag != null && componentTag.length > 0) {\n const cmpTagEl: HTMLElement | null = document.querySelector(`${componentTag}`);\n if (cmpTagEl === null) return Promise.resolve(null);\n let container: HTMLDivElement | null = null;\n const shadowRoot = cmpTagEl.shadowRoot ? cmpTagEl.shadowRoot : null;\n if (shadowRoot != null) {\n container = shadowRoot.querySelector(`[id='${playerId}']`);\n } else {\n container = cmpTagEl.querySelector(`[id='${playerId}']`);\n }\n if (container != null) container.appendChild(videoContainer);\n return Promise.resolve(videoContainer);\n } else {\n return Promise.resolve(null);\n }\n }\n private handlePlayerPlay(data: any) {\n this.notifyListeners('jeepCapVideoPlayerPlay', data);\n }\n private handlePlayerPause(data: any) {\n this.notifyListeners('jeepCapVideoPlayerPause', data);\n }\n private handlePlayerEnded(data: any) {\n if (this.mode === 'fullscreen') {\n this.videoContainer?.remove();\n }\n this.removeListeners();\n this.notifyListeners('jeepCapVideoPlayerEnded', data);\n }\n private handlePlayerExit() {\n if (this.mode === 'fullscreen') {\n this.videoContainer?.remove();\n }\n const retData: any = { dismiss: true };\n this.removeListeners();\n this.notifyListeners('jeepCapVideoPlayerExit', retData);\n }\n private handlePlayerReady(data: any) {\n this.notifyListeners('jeepCapVideoPlayerReady', data);\n }\n\n private addListeners() {\n document.addEventListener(\n 'videoPlayerPlay',\n (ev: any) => {\n this.handlePlayerPlay(ev.detail);\n },\n false,\n );\n document.addEventListener(\n 'videoPlayerPause',\n (ev: any) => {\n this.handlePlayerPause(ev.detail);\n },\n false,\n );\n document.addEventListener(\n 'videoPlayerEnded',\n (ev: any) => {\n this.handlePlayerEnded(ev.detail);\n },\n false,\n );\n document.addEventListener(\n 'videoPlayerReady',\n (ev: any) => {\n this.handlePlayerReady(ev.detail);\n },\n false,\n );\n document.addEventListener(\n 'videoPlayerExit',\n () => {\n this.handlePlayerExit();\n },\n false,\n );\n }\n\n private removeListeners() {\n document.removeEventListener(\n 'videoPlayerPlay',\n (ev: any) => {\n this.handlePlayerPlay(ev.detail);\n },\n false,\n );\n document.removeEventListener(\n 'videoPlayerPause',\n (ev: any) => {\n this.handlePlayerPause(ev.detail);\n },\n false,\n );\n document.removeEventListener(\n 'videoPlayerEnded',\n (ev: any) => {\n this.handlePlayerEnded(ev.detail);\n },\n false,\n );\n document.removeEventListener(\n 'videoPlayerReady',\n (ev: any) => {\n this.handlePlayerReady(ev.detail);\n },\n false,\n );\n document.removeEventListener(\n 'videoPlayerExit',\n () => {\n this.handlePlayerExit();\n },\n false,\n );\n }\n\n async getPluginVersion(): Promise<{ version: string }> {\n return { version: 'web' };\n }\n}\n"]}
@@ -1008,6 +1008,9 @@ class VideoPlayerWeb extends core.WebPlugin {
1008
1008
  this.handlePlayerExit();
1009
1009
  }, false);
1010
1010
  }
1011
+ async getPluginVersion() {
1012
+ return { version: 'web' };
1013
+ }
1011
1014
  }
1012
1015
 
1013
1016
  var web = /*#__PURE__*/Object.freeze({
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.cjs.js","sources":["esm/index.js","esm/web-utils/video-types.js","esm/web-utils/videoplayer.js","esm/web.js"],"sourcesContent":["import { registerPlugin } from '@capacitor/core';\nconst VideoPlayer = registerPlugin('VideoPlayer', {\n web: () => import('./web').then((m) => new m.VideoPlayerWeb()),\n});\nexport * from './definitions';\nexport { VideoPlayer };\n//# sourceMappingURL=index.js.map","export const possibleQueryParameterExtensions = ['file', 'extension', 'filetype', 'type', 'ext'];\nexport const videoTypes = {\n mp4: 'video/mp4',\n webm: 'video/mp4',\n cmaf: 'video/mp4',\n cmfv: 'video/mp4',\n m3u8: 'application/x-mpegURL',\n};\n//# sourceMappingURL=video-types.js.map","import Hls from 'hls.js';\nimport { videoTypes, possibleQueryParameterExtensions } from './video-types';\nexport class VideoPlayer {\n constructor(mode, url, playerId, rate, exitOnEnd, loopOnEnd, container, zIndex, width, height) {\n this.pipMode = false;\n this._videoType = null;\n this._videoContainer = null;\n this._firstReadyToPlay = true;\n this._isEnded = false;\n this._videoRate = 1.0;\n this._videoExitOnEnd = true;\n this._videoLoopOnEnd = false;\n this._url = url;\n this._container = container;\n this._mode = mode;\n this._width = width ? width : 320;\n this._height = height ? height : 180;\n this._mode = mode;\n this._videoRate = rate;\n this._zIndex = zIndex ? zIndex : 1;\n this._playerId = playerId;\n this._videoExitOnEnd = exitOnEnd;\n this._videoLoopOnEnd = loopOnEnd;\n }\n async initialize() {\n // get the video type\n const urlVideoType = this._getVideoType();\n if (urlVideoType) {\n // style the container\n if (this._mode === 'fullscreen') {\n this._container.style.position = 'absolute';\n this._container.style.width = '100vw';\n this._container.style.height = '100vh';\n }\n if (this._mode === 'embedded') {\n this._container.style.position = 'relative';\n this._container.style.width = this._width.toString() + 'px';\n this._container.style.height = this._height.toString() + 'px';\n }\n this._container.style.left = '0';\n this._container.style.top = '0';\n this._container.style.display = 'flex';\n this._container.style.alignItems = 'center';\n this._container.style.justifyContent = 'center';\n this._container.style.backgroundColor = '#000000';\n this._container.style.zIndex = this._zIndex.toString();\n const width = this._mode === 'fullscreen' ? window.innerWidth /*this._container.offsetWidth*/ : this._width;\n const height = this._mode === 'fullscreen' ? window.innerHeight /*this._container.offsetHeight*/ : this._height;\n const xmlns = 'http://www.w3.org/2000/svg';\n const svg = document.createElementNS(xmlns, 'svg');\n svg.setAttributeNS(null, 'width', width.toString());\n svg.setAttributeNS(null, 'height', height.toString());\n const viewbox = '0 0 ' + width.toString() + ' ' + height.toString();\n svg.setAttributeNS(null, 'viewBox', viewbox);\n svg.style.zIndex = (this._zIndex + 1).toString();\n const rect = document.createElementNS(xmlns, 'rect');\n rect.setAttributeNS(null, 'x', '0');\n rect.setAttributeNS(null, 'y', '0');\n rect.setAttributeNS(null, 'width', width.toString());\n rect.setAttributeNS(null, 'height', height.toString());\n rect.setAttributeNS(null, 'fill', '#000000');\n svg.appendChild(rect);\n this._container.appendChild(svg);\n const heightVideo = (width * this._height) / this._width;\n this._videoContainer = document.createElement('div');\n this._videoContainer.style.position = 'absolute';\n this._videoContainer.style.left = '0';\n this._videoContainer.style.width = width.toString() + 'px';\n this._videoContainer.style.height = heightVideo.toString() + 'px';\n this._videoContainer.style.zIndex = (this._zIndex + 2).toString();\n this._container.appendChild(this._videoContainer);\n /* Create Video Element */\n const isCreated = await this.createVideoElement(width, heightVideo);\n if (!isCreated) {\n this._createEvent('Exit', this._playerId, 'Video Error: failed to create the Video Element');\n }\n }\n else {\n this._createEvent('Exit', this._playerId, 'Url Error: type not supported');\n }\n return;\n }\n async createVideoElement(width, height) {\n this.videoEl = document.createElement('video');\n this.videoEl.controls = true;\n this.videoEl.style.zIndex = (this._zIndex + 3).toString();\n this.videoEl.style.width = `${width.toString()}px`;\n this.videoEl.style.height = `${height.toString()}px`;\n this.videoEl.playbackRate = this._videoRate;\n this._videoContainer.appendChild(this.videoEl);\n // set the player\n const isSet = await this._setPlayer();\n if (isSet) {\n this.videoEl.onended = async () => {\n this._isEnded = true;\n this.isPlaying = false;\n if (this.videoEl) {\n this.videoEl.currentTime = 0;\n }\n if (this._videoExitOnEnd) {\n if (this._mode === 'fullscreen') {\n this._closeFullscreen();\n }\n this._createEvent('Ended', this._playerId);\n }\n else {\n if (this._videoLoopOnEnd && this.videoEl != null) {\n await this.videoEl.play();\n }\n }\n };\n this.videoEl.oncanplay = async () => {\n if (this._firstReadyToPlay) {\n this._createEvent('Ready', this._playerId);\n if (this.videoEl != null) {\n this.videoEl.muted = false;\n if (this._mode === 'fullscreen')\n await this.videoEl.play();\n this._firstReadyToPlay = false;\n }\n }\n };\n this.videoEl.onplay = () => {\n this.isPlaying = true;\n if (this._firstReadyToPlay)\n this._firstReadyToPlay = false;\n this._createEvent('Play', this._playerId);\n };\n this.videoEl.onplaying = () => {\n this._createEvent('Playing', this._playerId);\n };\n this.videoEl.onpause = () => {\n this.isPlaying = false;\n this._createEvent('Pause', this._playerId);\n };\n if (this._mode === 'fullscreen') {\n // create the video player exit button\n const exitEl = document.createElement('button');\n exitEl.textContent = 'X';\n exitEl.style.position = 'absolute';\n exitEl.style.left = '1%';\n exitEl.style.top = '5%';\n exitEl.style.width = '5vmin';\n exitEl.style.padding = '0.5%';\n exitEl.style.fontSize = '1.2rem';\n exitEl.style.background = 'rgba(51,51,51,.4)';\n exitEl.style.color = '#fff';\n exitEl.style.visibility = 'hidden';\n exitEl.style.zIndex = (this._zIndex + 4).toString();\n exitEl.style.border = '1px solid rgba(51,51,51,.4)';\n exitEl.style.borderRadius = '20px';\n this._videoContainer.onclick = async () => {\n this._initial = await this._doHide(exitEl, 3000);\n };\n this._videoContainer.ontouchstart = async () => {\n this._initial = await this._doHide(exitEl, 3000);\n };\n this._videoContainer.onmousemove = async () => {\n this._initial = await this._doHide(exitEl, 3000);\n };\n exitEl.onclick = () => {\n this._createEvent('Exit', this._playerId);\n };\n exitEl.ontouchstart = () => {\n this._createEvent('Exit', this._playerId);\n };\n this._videoContainer.appendChild(exitEl);\n this._initial = await this._doHide(exitEl, 3000);\n this._goFullscreen();\n }\n }\n return isSet;\n }\n async _goFullscreen() {\n if (this._container.mozRequestFullScreen) {\n /* Firefox */\n this._container.mozRequestFullScreen();\n }\n else if (this._container.webkitRequestFullscreen) {\n /* Chrome, Safari & Opera */\n this._container.webkitRequestFullscreen();\n }\n else if (this._container.msRequestFullscreen) {\n /* IE/Edge */\n this._container.msRequestFullscreen();\n }\n else if (this._container.requestFullscreen) {\n this._container.requestFullscreen();\n }\n return;\n }\n async _setPlayer() {\n return new Promise((resolve) => {\n if (this.videoEl != null) {\n if (Hls.isSupported() && this._videoType === 'application/x-mpegURL') {\n const hls = new Hls();\n hls.loadSource(this._url);\n hls.attachMedia(this.videoEl);\n hls.once(Hls.Events.FRAG_PARSED, () => {\n if (this.videoEl != null) {\n this.videoEl.muted = true;\n this.videoEl.crossOrigin = 'anonymous';\n resolve(true);\n }\n else {\n resolve(false);\n }\n });\n }\n else if (this._videoType === 'video/mp4') {\n // CMAF (fMP4) && MP4\n this.videoEl.src = this._url;\n if (this._url.substring(0, 5) != 'https' && this._url.substring(0, 4) === 'http')\n this.videoEl.crossOrigin = 'anonymous';\n if (this._url.substring(0, 5) === 'https' || this._url.substring(0, 4) === 'http')\n this.videoEl.muted = true;\n resolve(true);\n }\n else {\n // Not Supported\n resolve(false);\n }\n this.videoEl.addEventListener('enterpictureinpicture', (event) => {\n this.pipWindow = event.pictureInPictureWindow;\n this.pipMode = true;\n this._closeFullscreen();\n });\n this.videoEl.addEventListener('leavepictureinpicture', () => {\n this.pipMode = false;\n if (!this._isEnded) {\n this._goFullscreen();\n if (this.videoEl != null)\n this.videoEl.play();\n }\n });\n }\n else {\n resolve(false);\n }\n });\n }\n _getVideoType() {\n const sUrl = this._url ? this._url : '';\n if (sUrl != null && sUrl.length > 0) {\n Object.entries(videoTypes).forEach(([extension, mimeType]) => {\n // we search for dot + extension (e.g. `.mp4`) for URLs that have the extension in the filename\n // e.g. https://vimeo.com/?file=my-video.mp4\n const hasDotExtension = sUrl.match(new RegExp(`.(${extension})`, 'i'));\n if (hasDotExtension) {\n return (this._videoType = mimeType);\n }\n // we search for the extension (e.g. `m3u8`) for URLs that might have the extension as a query parameter\n // e.g. https://youtube.com/?v=7894289374&type=m3u8\n const hasExtensionInUrl = sUrl.match(new RegExp(`(${extension})`, 'i'));\n if (hasExtensionInUrl) {\n return (this._videoType = mimeType);\n }\n });\n // we check for not supported extensions for URLs that have the extension in the filename\n // e.g. https://vimeo.com/?file=not-supported-extension-video.mkv\n const hasNotSupportedDotExtension = sUrl.match(/\\.(.*)/i);\n if (hasNotSupportedDotExtension) {\n return (this._videoType = null);\n }\n // we check for not supported extensions for URLs that might have the extension as a query parameter\n // e.g. https://youtube.com/?v=3982748927&filetype=mkv\n const hasNotSupportedExtensionInUrl = sUrl.match(new RegExp(`(${possibleQueryParameterExtensions.join('|')})=+(.*)&?(?=&|$))`, 'i'));\n if (hasNotSupportedExtensionInUrl) {\n return (this._videoType = null);\n }\n // No extension found, then we assume it's 'mp4' (Match case for '')\n return 'video/mp4';\n }\n // URL was not defined, we return null\n return null;\n }\n async _doHide(exitEl, duration) {\n clearTimeout(this._initial);\n exitEl.style.visibility = 'visible';\n const initial = setTimeout(() => {\n exitEl.style.visibility = 'hidden';\n }, duration);\n return initial;\n }\n _createEvent(ev, playerId, msg) {\n const message = msg ? msg : null;\n let event;\n if (message != null) {\n event = new CustomEvent(`videoPlayer${ev}`, {\n detail: { fromPlayerId: playerId, message: message },\n });\n }\n else {\n const currentTime = this.videoEl ? this.videoEl.currentTime : 0;\n event = new CustomEvent(`videoPlayer${ev}`, {\n detail: { fromPlayerId: playerId, currentTime: currentTime },\n });\n }\n document.dispatchEvent(event);\n }\n _closeFullscreen() {\n const mydoc = document;\n const isInFullScreen = (mydoc.fullscreenElement && mydoc.fullscreenElement !== null) ||\n (mydoc.webkitFullscreenElement && mydoc.webkitFullscreenElement !== null) ||\n (mydoc.mozFullScreenElement && mydoc.mozFullScreenElement !== null) ||\n (mydoc.msFullscreenElement && mydoc.msFullscreenElement !== null);\n if (isInFullScreen) {\n if (mydoc.mozCancelFullScreen) {\n mydoc.mozCancelFullScreen();\n }\n else if (mydoc.webkitExitFullscreen) {\n mydoc.webkitExitFullscreen();\n }\n else if (mydoc.msExitFullscreen) {\n mydoc.msExitFullscreen();\n }\n else if (mydoc.exitFullscreen) {\n mydoc.exitFullscreen();\n }\n }\n }\n}\n//# sourceMappingURL=videoplayer.js.map","import { WebPlugin } from '@capacitor/core';\nimport { VideoPlayer } from './web-utils/videoplayer';\nexport class VideoPlayerWeb extends WebPlugin {\n constructor() {\n super();\n this._players = [];\n this.addListeners();\n }\n async echo(options) {\n return Promise.resolve({ result: true, method: 'echo', value: options });\n }\n /**\n * Player initialization\n *\n * @param options\n */\n async initPlayer(options) {\n if (options == null) {\n return Promise.resolve({\n result: false,\n method: 'initPlayer',\n message: 'Must provide a capVideoPlayerOptions object',\n });\n }\n this.mode = options.mode ? options.mode : '';\n if (this.mode == null || this.mode.length === 0) {\n return Promise.resolve({\n result: false,\n method: 'initPlayer',\n message: 'Must provide a Mode (fullscreen/embedded)',\n });\n }\n if (this.mode === 'fullscreen' || this.mode === 'embedded') {\n const url = options.url ? options.url : '';\n if (url == null || url.length === 0) {\n return Promise.resolve({\n result: false,\n method: 'initPlayer',\n message: 'Must provide a Video Url',\n });\n }\n if (url == 'internal') {\n return Promise.resolve({\n result: false,\n method: 'initPlayer',\n message: 'Internal Videos not supported on Web Platform',\n });\n }\n const playerId = options.playerId ? options.playerId : '';\n if (playerId == null || playerId.length === 0) {\n return Promise.resolve({\n result: false,\n method: 'initPlayer',\n message: 'Must provide a Player Id',\n });\n }\n const rate = options.rate ? options.rate : 1.0;\n let exitOnEnd = true;\n if (Object.keys(options).includes('exitOnEnd')) {\n const exitRet = options.exitOnEnd;\n exitOnEnd = exitRet != null ? exitRet : true;\n }\n let loopOnEnd = false;\n if (Object.keys(options).includes('loopOnEnd') && !exitOnEnd) {\n const loopRet = options.loopOnEnd;\n loopOnEnd = loopRet != null ? loopRet : false;\n }\n const componentTag = options.componentTag ? options.componentTag : '';\n if (componentTag == null || componentTag.length === 0) {\n return Promise.resolve({\n result: false,\n method: 'initPlayer',\n message: 'Must provide a Component Tag',\n });\n }\n let playerSize = null;\n if (this.mode === 'embedded') {\n playerSize = this.checkSize(options);\n }\n const result = await this._initializeVideoPlayer(url, playerId, this.mode, rate, exitOnEnd, loopOnEnd, componentTag, playerSize);\n return Promise.resolve({ result: result });\n }\n else {\n return Promise.resolve({\n result: false,\n method: 'initPlayer',\n message: 'Must provide a Mode either fullscreen or embedded)',\n });\n }\n }\n /**\n * Return if a given playerId is playing\n *\n * @param options\n */\n async isPlaying(options) {\n if (options == null) {\n return Promise.resolve({\n result: false,\n method: 'isPlaying',\n message: 'Must provide a capVideoPlayerIdOptions object',\n });\n }\n let playerId = options.playerId ? options.playerId : '';\n if (playerId == null || playerId.length === 0) {\n playerId = 'fullscreen';\n }\n if (this._players[playerId]) {\n const playing = this._players[playerId].isPlaying;\n return Promise.resolve({\n method: 'isPlaying',\n result: true,\n value: playing,\n });\n }\n else {\n return Promise.resolve({\n method: 'isPlaying',\n result: false,\n message: 'Given PlayerId does not exist)',\n });\n }\n }\n /**\n * Play the current video from a given playerId\n *\n * @param options\n */\n async play(options) {\n if (options == null) {\n return Promise.resolve({\n result: false,\n method: 'play',\n message: 'Must provide a capVideoPlayerIdOptions object',\n });\n }\n let playerId = options.playerId ? options.playerId : '';\n if (playerId == null || playerId.length === 0) {\n playerId = 'fullscreen';\n }\n if (this._players[playerId]) {\n await this._players[playerId].videoEl.play();\n return Promise.resolve({ method: 'play', result: true, value: true });\n }\n else {\n return Promise.resolve({\n method: 'play',\n result: false,\n message: 'Given PlayerId does not exist)',\n });\n }\n }\n /**\n * Pause the current video from a given playerId\n *\n * @param options\n */\n async pause(options) {\n if (options == null) {\n return Promise.resolve({\n result: false,\n method: 'pause',\n message: 'Must provide a capVideoPlayerIdOptions object',\n });\n }\n let playerId = options.playerId ? options.playerId : '';\n if (playerId == null || playerId.length === 0) {\n playerId = 'fullscreen';\n }\n if (this._players[playerId]) {\n if (this._players[playerId].isPlaying)\n await this._players[playerId].videoEl.pause();\n return Promise.resolve({ method: 'pause', result: true, value: true });\n }\n else {\n return Promise.resolve({\n method: 'pause',\n result: false,\n message: 'Given PlayerId does not exist)',\n });\n }\n }\n /**\n * Get the duration of the current video from a given playerId\n *\n * @param options\n */\n async getDuration(options) {\n if (options == null) {\n return Promise.resolve({\n result: false,\n method: 'getDuration',\n message: 'Must provide a capVideoPlayerIdOptions object',\n });\n }\n let playerId = options.playerId ? options.playerId : '';\n if (playerId == null || playerId.length === 0) {\n playerId = 'fullscreen';\n }\n if (this._players[playerId]) {\n const duration = this._players[playerId].videoEl.duration;\n return Promise.resolve({\n method: 'getDuration',\n result: true,\n value: duration,\n });\n }\n else {\n return Promise.resolve({\n method: 'getDuration',\n result: false,\n message: 'Given PlayerId does not exist)',\n });\n }\n }\n /**\n * Set the rate of the current video from a given playerId\n *\n * @param options\n */\n async setRate(options) {\n if (options == null) {\n return Promise.resolve({\n result: false,\n method: 'setRate',\n message: 'Must provide a capVideoRateOptions object',\n });\n }\n let playerId = options.playerId ? options.playerId : '';\n if (playerId == null || playerId.length === 0) {\n playerId = 'fullscreen';\n }\n const rateList = [0.25, 0.5, 0.75, 1.0, 2.0, 4.0];\n const rate = options.rate && rateList.includes(options.rate) ? options.rate : 1.0;\n if (this._players[playerId]) {\n this._players[playerId].videoEl.playbackRate = rate;\n return Promise.resolve({\n method: 'setRate',\n result: true,\n value: rate,\n });\n }\n else {\n return Promise.resolve({\n method: 'setRate',\n result: false,\n message: 'Given PlayerId does not exist)',\n });\n }\n }\n /**\n * Get the volume of the current video from a given playerId\n *\n * @param options\n */\n async getRate(options) {\n if (options == null) {\n return Promise.resolve({\n result: false,\n method: 'getRate',\n message: 'Must provide a capVideoPlayerIdOptions object',\n });\n }\n let playerId = options.playerId ? options.playerId : '';\n if (playerId == null || playerId.length === 0) {\n playerId = 'fullscreen';\n }\n if (this._players[playerId]) {\n const rate = this._players[playerId].videoEl.playbackRate;\n return Promise.resolve({\n method: 'getRate',\n result: true,\n value: rate,\n });\n }\n else {\n return Promise.resolve({\n method: 'getRate',\n result: false,\n message: 'Given PlayerId does not exist)',\n });\n }\n }\n /**\n * Set the volume of the current video from a given playerId\n *\n * @param options\n */\n async setVolume(options) {\n if (options == null) {\n return Promise.resolve({\n result: false,\n method: 'setVolume',\n message: 'Must provide a capVideoVolumeOptions object',\n });\n }\n let playerId = options.playerId ? options.playerId : '';\n if (playerId == null || playerId.length === 0) {\n playerId = 'fullscreen';\n }\n const volume = options.volume ? options.volume : 0.5;\n if (this._players[playerId]) {\n this._players[playerId].videoEl.volume = volume;\n return Promise.resolve({\n method: 'setVolume',\n result: true,\n value: volume,\n });\n }\n else {\n return Promise.resolve({\n method: 'setVolume',\n result: false,\n message: 'Given PlayerId does not exist)',\n });\n }\n }\n /**\n * Get the volume of the current video from a given playerId\n *\n * @param options\n */\n async getVolume(options) {\n if (options == null) {\n return Promise.resolve({\n result: false,\n method: 'getVolume',\n message: 'Must provide a capVideoPlayerIdOptions object',\n });\n }\n let playerId = options.playerId ? options.playerId : '';\n if (playerId == null || playerId.length === 0) {\n playerId = 'fullscreen';\n }\n if (this._players[playerId]) {\n const volume = this._players[playerId].videoEl.volume;\n return Promise.resolve({\n method: 'getVolume',\n result: true,\n value: volume,\n });\n }\n else {\n return Promise.resolve({\n method: 'getVolume',\n result: false,\n message: 'Given PlayerId does not exist)',\n });\n }\n }\n /**\n * Set the muted property of the current video from a given playerId\n *\n * @param options\n */\n async setMuted(options) {\n if (options == null) {\n return Promise.resolve({\n result: false,\n method: 'setMuted',\n message: 'Must provide a capVideoMutedOptions object',\n });\n }\n let playerId = options.playerId ? options.playerId : '';\n if (playerId == null || playerId.length === 0) {\n playerId = 'fullscreen';\n }\n const muted = options.muted ? options.muted : false;\n if (this._players[playerId]) {\n this._players[playerId].videoEl.muted = muted;\n return Promise.resolve({\n method: 'setMuted',\n result: true,\n value: muted,\n });\n }\n else {\n return Promise.resolve({\n method: 'setMuted',\n result: false,\n message: 'Given PlayerId does not exist)',\n });\n }\n }\n /**\n * Get the muted property of the current video from a given playerId\n *\n * @param options\n */\n async getMuted(options) {\n if (options == null) {\n return Promise.resolve({\n result: false,\n method: 'getMuted',\n message: 'Must provide a capVideoPlayerIdOptions object',\n });\n }\n let playerId = options.playerId ? options.playerId : '';\n if (playerId == null || playerId.length === 0) {\n playerId = 'fullscreen';\n }\n if (this._players[playerId]) {\n const muted = this._players[playerId].videoEl.muted;\n return Promise.resolve({\n method: 'getMuted',\n result: true,\n value: muted,\n });\n }\n else {\n return Promise.resolve({\n method: 'getMuted',\n result: false,\n message: 'Given PlayerId does not exist)',\n });\n }\n }\n /**\n * Set the current time of the current video from a given playerId\n *\n * @param options\n */\n async setCurrentTime(options) {\n if (options == null) {\n return Promise.resolve({\n result: false,\n method: 'setCurrentTime',\n message: 'Must provide a capVideoTimeOptions object',\n });\n }\n let playerId = options.playerId ? options.playerId : '';\n if (playerId == null || playerId.length === 0) {\n playerId = 'fullscreen';\n }\n let seekTime = options.seektime ? options.seektime : 0;\n if (this._players[playerId]) {\n const duration = this._players[playerId].videoEl.duration;\n seekTime = seekTime <= duration && seekTime >= 0 ? seekTime : duration / 2;\n this._players[playerId].videoEl.currentTime = seekTime;\n return Promise.resolve({\n method: 'setCurrentTime',\n result: true,\n value: seekTime,\n });\n }\n else {\n return Promise.resolve({\n method: 'setCurrentTime',\n result: false,\n message: 'Given PlayerId does not exist)',\n });\n }\n }\n /**\n * Get the current time of the current video from a given playerId\n *\n * @param options\n */\n async getCurrentTime(options) {\n if (options == null) {\n return Promise.resolve({\n result: false,\n method: 'getCurrentTime',\n message: 'Must provide a capVideoPlayerIdOptions object',\n });\n }\n let playerId = options.playerId ? options.playerId : '';\n if (playerId == null || playerId.length === 0) {\n playerId = 'fullscreen';\n }\n if (this._players[playerId]) {\n const seekTime = this._players[playerId].videoEl.currentTime;\n return Promise.resolve({\n method: 'getCurrentTime',\n result: true,\n value: seekTime,\n });\n }\n else {\n return Promise.resolve({\n method: 'getCurrentTime',\n result: false,\n message: 'Given PlayerId does not exist)',\n });\n }\n }\n /**\n * Get the current time of the current video from a given playerId\n *\n */\n async stopAllPlayers() {\n for (const i in this._players) {\n if (this._players[i].pipMode) {\n const doc = document;\n if (doc.pictureInPictureElement) {\n await doc.exitPictureInPicture();\n }\n }\n if (!this._players[i].videoEl.paused)\n this._players[i].videoEl.pause();\n }\n return Promise.resolve({\n method: 'stopAllPlayers',\n result: true,\n value: true,\n });\n }\n /**\n * Show controller\n *\n */\n async showController() {\n return Promise.resolve({\n method: 'showController',\n result: true,\n value: true,\n });\n }\n /**\n * isControllerIsFullyVisible\n *\n */\n async isControllerIsFullyVisible() {\n return Promise.resolve({\n method: 'isControllerIsFullyVisible',\n result: true,\n value: true,\n });\n }\n /**\n * Exit the current player\n *\n */\n async exitPlayer() {\n return Promise.resolve({\n method: 'exitPlayer',\n result: true,\n value: true,\n });\n }\n checkSize(options) {\n const playerSize = {\n width: options.width ? options.width : 320,\n height: options.height ? options.height : 180,\n };\n const ratio = playerSize.height / playerSize.width;\n if (playerSize.width > window.innerWidth) {\n playerSize.width = window.innerWidth;\n playerSize.height = Math.floor(playerSize.width * ratio);\n }\n if (playerSize.height > window.innerHeight) {\n playerSize.height = window.innerHeight;\n playerSize.width = Math.floor(playerSize.height / ratio);\n }\n return playerSize;\n }\n async _initializeVideoPlayer(url, playerId, mode, rate, exitOnEnd, loopOnEnd, componentTag, playerSize) {\n const videoURL = url ? (url.indexOf('%2F') == -1 ? encodeURI(url) : url) : null;\n if (videoURL === null)\n return Promise.resolve(false);\n this.videoContainer = await this._getContainerElement(playerId, componentTag);\n if (this.videoContainer === null)\n return Promise.resolve({\n method: 'initPlayer',\n result: false,\n message: 'componentTag or divContainerElement must be provided',\n });\n if (mode === 'embedded' && playerSize == null)\n return Promise.resolve({\n method: 'initPlayer',\n result: false,\n message: 'playerSize must be defined in embedded mode',\n });\n if (mode === 'embedded') {\n this._players[playerId] = new VideoPlayer('embedded', videoURL, playerId, rate, exitOnEnd, loopOnEnd, this.videoContainer, 2, playerSize.width, playerSize.height);\n await this._players[playerId].initialize();\n }\n else if (mode === 'fullscreen') {\n this._players['fullscreen'] = new VideoPlayer('fullscreen', videoURL, 'fullscreen', rate, exitOnEnd, loopOnEnd, this.videoContainer, 99995);\n await this._players['fullscreen'].initialize();\n }\n else {\n return Promise.resolve({\n method: 'initPlayer',\n result: false,\n message: 'mode not supported',\n });\n }\n return Promise.resolve({ method: 'initPlayer', result: true, value: true });\n }\n async _getContainerElement(playerId, componentTag) {\n const videoContainer = document.createElement('div');\n videoContainer.id = `vc_${playerId}`;\n if (componentTag != null && componentTag.length > 0) {\n const cmpTagEl = document.querySelector(`${componentTag}`);\n if (cmpTagEl === null)\n return Promise.resolve(null);\n let container = null;\n const shadowRoot = cmpTagEl.shadowRoot ? cmpTagEl.shadowRoot : null;\n if (shadowRoot != null) {\n container = shadowRoot.querySelector(`[id='${playerId}']`);\n }\n else {\n container = cmpTagEl.querySelector(`[id='${playerId}']`);\n }\n if (container != null)\n container.appendChild(videoContainer);\n return Promise.resolve(videoContainer);\n }\n else {\n return Promise.resolve(null);\n }\n }\n handlePlayerPlay(data) {\n this.notifyListeners('jeepCapVideoPlayerPlay', data);\n }\n handlePlayerPause(data) {\n this.notifyListeners('jeepCapVideoPlayerPause', data);\n }\n handlePlayerEnded(data) {\n var _a;\n if (this.mode === 'fullscreen') {\n (_a = this.videoContainer) === null || _a === void 0 ? void 0 : _a.remove();\n }\n this.removeListeners();\n this.notifyListeners('jeepCapVideoPlayerEnded', data);\n }\n handlePlayerExit() {\n var _a;\n if (this.mode === 'fullscreen') {\n (_a = this.videoContainer) === null || _a === void 0 ? void 0 : _a.remove();\n }\n const retData = { dismiss: true };\n this.removeListeners();\n this.notifyListeners('jeepCapVideoPlayerExit', retData);\n }\n handlePlayerReady(data) {\n this.notifyListeners('jeepCapVideoPlayerReady', data);\n }\n addListeners() {\n document.addEventListener('videoPlayerPlay', (ev) => {\n this.handlePlayerPlay(ev.detail);\n }, false);\n document.addEventListener('videoPlayerPause', (ev) => {\n this.handlePlayerPause(ev.detail);\n }, false);\n document.addEventListener('videoPlayerEnded', (ev) => {\n this.handlePlayerEnded(ev.detail);\n }, false);\n document.addEventListener('videoPlayerReady', (ev) => {\n this.handlePlayerReady(ev.detail);\n }, false);\n document.addEventListener('videoPlayerExit', () => {\n this.handlePlayerExit();\n }, false);\n }\n removeListeners() {\n document.removeEventListener('videoPlayerPlay', (ev) => {\n this.handlePlayerPlay(ev.detail);\n }, false);\n document.removeEventListener('videoPlayerPause', (ev) => {\n this.handlePlayerPause(ev.detail);\n }, false);\n document.removeEventListener('videoPlayerEnded', (ev) => {\n this.handlePlayerEnded(ev.detail);\n }, false);\n document.removeEventListener('videoPlayerReady', (ev) => {\n this.handlePlayerReady(ev.detail);\n }, false);\n document.removeEventListener('videoPlayerExit', () => {\n this.handlePlayerExit();\n }, false);\n }\n}\n//# sourceMappingURL=web.js.map"],"names":["VideoPlayer","registerPlugin","WebPlugin"],"mappings":"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"}
1
+ {"version":3,"file":"plugin.cjs.js","sources":["esm/index.js","esm/web-utils/video-types.js","esm/web-utils/videoplayer.js","esm/web.js"],"sourcesContent":["import { registerPlugin } from '@capacitor/core';\nconst VideoPlayer = registerPlugin('VideoPlayer', {\n web: () => import('./web').then((m) => new m.VideoPlayerWeb()),\n});\nexport * from './definitions';\nexport { VideoPlayer };\n//# sourceMappingURL=index.js.map","export const possibleQueryParameterExtensions = ['file', 'extension', 'filetype', 'type', 'ext'];\nexport const videoTypes = {\n mp4: 'video/mp4',\n webm: 'video/mp4',\n cmaf: 'video/mp4',\n cmfv: 'video/mp4',\n m3u8: 'application/x-mpegURL',\n};\n//# sourceMappingURL=video-types.js.map","import Hls from 'hls.js';\nimport { videoTypes, possibleQueryParameterExtensions } from './video-types';\nexport class VideoPlayer {\n constructor(mode, url, playerId, rate, exitOnEnd, loopOnEnd, container, zIndex, width, height) {\n this.pipMode = false;\n this._videoType = null;\n this._videoContainer = null;\n this._firstReadyToPlay = true;\n this._isEnded = false;\n this._videoRate = 1.0;\n this._videoExitOnEnd = true;\n this._videoLoopOnEnd = false;\n this._url = url;\n this._container = container;\n this._mode = mode;\n this._width = width ? width : 320;\n this._height = height ? height : 180;\n this._mode = mode;\n this._videoRate = rate;\n this._zIndex = zIndex ? zIndex : 1;\n this._playerId = playerId;\n this._videoExitOnEnd = exitOnEnd;\n this._videoLoopOnEnd = loopOnEnd;\n }\n async initialize() {\n // get the video type\n const urlVideoType = this._getVideoType();\n if (urlVideoType) {\n // style the container\n if (this._mode === 'fullscreen') {\n this._container.style.position = 'absolute';\n this._container.style.width = '100vw';\n this._container.style.height = '100vh';\n }\n if (this._mode === 'embedded') {\n this._container.style.position = 'relative';\n this._container.style.width = this._width.toString() + 'px';\n this._container.style.height = this._height.toString() + 'px';\n }\n this._container.style.left = '0';\n this._container.style.top = '0';\n this._container.style.display = 'flex';\n this._container.style.alignItems = 'center';\n this._container.style.justifyContent = 'center';\n this._container.style.backgroundColor = '#000000';\n this._container.style.zIndex = this._zIndex.toString();\n const width = this._mode === 'fullscreen' ? window.innerWidth /*this._container.offsetWidth*/ : this._width;\n const height = this._mode === 'fullscreen' ? window.innerHeight /*this._container.offsetHeight*/ : this._height;\n const xmlns = 'http://www.w3.org/2000/svg';\n const svg = document.createElementNS(xmlns, 'svg');\n svg.setAttributeNS(null, 'width', width.toString());\n svg.setAttributeNS(null, 'height', height.toString());\n const viewbox = '0 0 ' + width.toString() + ' ' + height.toString();\n svg.setAttributeNS(null, 'viewBox', viewbox);\n svg.style.zIndex = (this._zIndex + 1).toString();\n const rect = document.createElementNS(xmlns, 'rect');\n rect.setAttributeNS(null, 'x', '0');\n rect.setAttributeNS(null, 'y', '0');\n rect.setAttributeNS(null, 'width', width.toString());\n rect.setAttributeNS(null, 'height', height.toString());\n rect.setAttributeNS(null, 'fill', '#000000');\n svg.appendChild(rect);\n this._container.appendChild(svg);\n const heightVideo = (width * this._height) / this._width;\n this._videoContainer = document.createElement('div');\n this._videoContainer.style.position = 'absolute';\n this._videoContainer.style.left = '0';\n this._videoContainer.style.width = width.toString() + 'px';\n this._videoContainer.style.height = heightVideo.toString() + 'px';\n this._videoContainer.style.zIndex = (this._zIndex + 2).toString();\n this._container.appendChild(this._videoContainer);\n /* Create Video Element */\n const isCreated = await this.createVideoElement(width, heightVideo);\n if (!isCreated) {\n this._createEvent('Exit', this._playerId, 'Video Error: failed to create the Video Element');\n }\n }\n else {\n this._createEvent('Exit', this._playerId, 'Url Error: type not supported');\n }\n return;\n }\n async createVideoElement(width, height) {\n this.videoEl = document.createElement('video');\n this.videoEl.controls = true;\n this.videoEl.style.zIndex = (this._zIndex + 3).toString();\n this.videoEl.style.width = `${width.toString()}px`;\n this.videoEl.style.height = `${height.toString()}px`;\n this.videoEl.playbackRate = this._videoRate;\n this._videoContainer.appendChild(this.videoEl);\n // set the player\n const isSet = await this._setPlayer();\n if (isSet) {\n this.videoEl.onended = async () => {\n this._isEnded = true;\n this.isPlaying = false;\n if (this.videoEl) {\n this.videoEl.currentTime = 0;\n }\n if (this._videoExitOnEnd) {\n if (this._mode === 'fullscreen') {\n this._closeFullscreen();\n }\n this._createEvent('Ended', this._playerId);\n }\n else {\n if (this._videoLoopOnEnd && this.videoEl != null) {\n await this.videoEl.play();\n }\n }\n };\n this.videoEl.oncanplay = async () => {\n if (this._firstReadyToPlay) {\n this._createEvent('Ready', this._playerId);\n if (this.videoEl != null) {\n this.videoEl.muted = false;\n if (this._mode === 'fullscreen')\n await this.videoEl.play();\n this._firstReadyToPlay = false;\n }\n }\n };\n this.videoEl.onplay = () => {\n this.isPlaying = true;\n if (this._firstReadyToPlay)\n this._firstReadyToPlay = false;\n this._createEvent('Play', this._playerId);\n };\n this.videoEl.onplaying = () => {\n this._createEvent('Playing', this._playerId);\n };\n this.videoEl.onpause = () => {\n this.isPlaying = false;\n this._createEvent('Pause', this._playerId);\n };\n if (this._mode === 'fullscreen') {\n // create the video player exit button\n const exitEl = document.createElement('button');\n exitEl.textContent = 'X';\n exitEl.style.position = 'absolute';\n exitEl.style.left = '1%';\n exitEl.style.top = '5%';\n exitEl.style.width = '5vmin';\n exitEl.style.padding = '0.5%';\n exitEl.style.fontSize = '1.2rem';\n exitEl.style.background = 'rgba(51,51,51,.4)';\n exitEl.style.color = '#fff';\n exitEl.style.visibility = 'hidden';\n exitEl.style.zIndex = (this._zIndex + 4).toString();\n exitEl.style.border = '1px solid rgba(51,51,51,.4)';\n exitEl.style.borderRadius = '20px';\n this._videoContainer.onclick = async () => {\n this._initial = await this._doHide(exitEl, 3000);\n };\n this._videoContainer.ontouchstart = async () => {\n this._initial = await this._doHide(exitEl, 3000);\n };\n this._videoContainer.onmousemove = async () => {\n this._initial = await this._doHide(exitEl, 3000);\n };\n exitEl.onclick = () => {\n this._createEvent('Exit', this._playerId);\n };\n exitEl.ontouchstart = () => {\n this._createEvent('Exit', this._playerId);\n };\n this._videoContainer.appendChild(exitEl);\n this._initial = await this._doHide(exitEl, 3000);\n this._goFullscreen();\n }\n }\n return isSet;\n }\n async _goFullscreen() {\n if (this._container.mozRequestFullScreen) {\n /* Firefox */\n this._container.mozRequestFullScreen();\n }\n else if (this._container.webkitRequestFullscreen) {\n /* Chrome, Safari & Opera */\n this._container.webkitRequestFullscreen();\n }\n else if (this._container.msRequestFullscreen) {\n /* IE/Edge */\n this._container.msRequestFullscreen();\n }\n else if (this._container.requestFullscreen) {\n this._container.requestFullscreen();\n }\n return;\n }\n async _setPlayer() {\n return new Promise((resolve) => {\n if (this.videoEl != null) {\n if (Hls.isSupported() && this._videoType === 'application/x-mpegURL') {\n const hls = new Hls();\n hls.loadSource(this._url);\n hls.attachMedia(this.videoEl);\n hls.once(Hls.Events.FRAG_PARSED, () => {\n if (this.videoEl != null) {\n this.videoEl.muted = true;\n this.videoEl.crossOrigin = 'anonymous';\n resolve(true);\n }\n else {\n resolve(false);\n }\n });\n }\n else if (this._videoType === 'video/mp4') {\n // CMAF (fMP4) && MP4\n this.videoEl.src = this._url;\n if (this._url.substring(0, 5) != 'https' && this._url.substring(0, 4) === 'http')\n this.videoEl.crossOrigin = 'anonymous';\n if (this._url.substring(0, 5) === 'https' || this._url.substring(0, 4) === 'http')\n this.videoEl.muted = true;\n resolve(true);\n }\n else {\n // Not Supported\n resolve(false);\n }\n this.videoEl.addEventListener('enterpictureinpicture', (event) => {\n this.pipWindow = event.pictureInPictureWindow;\n this.pipMode = true;\n this._closeFullscreen();\n });\n this.videoEl.addEventListener('leavepictureinpicture', () => {\n this.pipMode = false;\n if (!this._isEnded) {\n this._goFullscreen();\n if (this.videoEl != null)\n this.videoEl.play();\n }\n });\n }\n else {\n resolve(false);\n }\n });\n }\n _getVideoType() {\n const sUrl = this._url ? this._url : '';\n if (sUrl != null && sUrl.length > 0) {\n Object.entries(videoTypes).forEach(([extension, mimeType]) => {\n // we search for dot + extension (e.g. `.mp4`) for URLs that have the extension in the filename\n // e.g. https://vimeo.com/?file=my-video.mp4\n const hasDotExtension = sUrl.match(new RegExp(`.(${extension})`, 'i'));\n if (hasDotExtension) {\n return (this._videoType = mimeType);\n }\n // we search for the extension (e.g. `m3u8`) for URLs that might have the extension as a query parameter\n // e.g. https://youtube.com/?v=7894289374&type=m3u8\n const hasExtensionInUrl = sUrl.match(new RegExp(`(${extension})`, 'i'));\n if (hasExtensionInUrl) {\n return (this._videoType = mimeType);\n }\n });\n // we check for not supported extensions for URLs that have the extension in the filename\n // e.g. https://vimeo.com/?file=not-supported-extension-video.mkv\n const hasNotSupportedDotExtension = sUrl.match(/\\.(.*)/i);\n if (hasNotSupportedDotExtension) {\n return (this._videoType = null);\n }\n // we check for not supported extensions for URLs that might have the extension as a query parameter\n // e.g. https://youtube.com/?v=3982748927&filetype=mkv\n const hasNotSupportedExtensionInUrl = sUrl.match(new RegExp(`(${possibleQueryParameterExtensions.join('|')})=+(.*)&?(?=&|$))`, 'i'));\n if (hasNotSupportedExtensionInUrl) {\n return (this._videoType = null);\n }\n // No extension found, then we assume it's 'mp4' (Match case for '')\n return 'video/mp4';\n }\n // URL was not defined, we return null\n return null;\n }\n async _doHide(exitEl, duration) {\n clearTimeout(this._initial);\n exitEl.style.visibility = 'visible';\n const initial = setTimeout(() => {\n exitEl.style.visibility = 'hidden';\n }, duration);\n return initial;\n }\n _createEvent(ev, playerId, msg) {\n const message = msg ? msg : null;\n let event;\n if (message != null) {\n event = new CustomEvent(`videoPlayer${ev}`, {\n detail: { fromPlayerId: playerId, message: message },\n });\n }\n else {\n const currentTime = this.videoEl ? this.videoEl.currentTime : 0;\n event = new CustomEvent(`videoPlayer${ev}`, {\n detail: { fromPlayerId: playerId, currentTime: currentTime },\n });\n }\n document.dispatchEvent(event);\n }\n _closeFullscreen() {\n const mydoc = document;\n const isInFullScreen = (mydoc.fullscreenElement && mydoc.fullscreenElement !== null) ||\n (mydoc.webkitFullscreenElement && mydoc.webkitFullscreenElement !== null) ||\n (mydoc.mozFullScreenElement && mydoc.mozFullScreenElement !== null) ||\n (mydoc.msFullscreenElement && mydoc.msFullscreenElement !== null);\n if (isInFullScreen) {\n if (mydoc.mozCancelFullScreen) {\n mydoc.mozCancelFullScreen();\n }\n else if (mydoc.webkitExitFullscreen) {\n mydoc.webkitExitFullscreen();\n }\n else if (mydoc.msExitFullscreen) {\n mydoc.msExitFullscreen();\n }\n else if (mydoc.exitFullscreen) {\n mydoc.exitFullscreen();\n }\n }\n }\n}\n//# sourceMappingURL=videoplayer.js.map","import { WebPlugin } from '@capacitor/core';\nimport { VideoPlayer } from './web-utils/videoplayer';\nexport class VideoPlayerWeb extends WebPlugin {\n constructor() {\n super();\n this._players = [];\n this.addListeners();\n }\n async echo(options) {\n return Promise.resolve({ result: true, method: 'echo', value: options });\n }\n /**\n * Player initialization\n *\n * @param options\n */\n async initPlayer(options) {\n if (options == null) {\n return Promise.resolve({\n result: false,\n method: 'initPlayer',\n message: 'Must provide a capVideoPlayerOptions object',\n });\n }\n this.mode = options.mode ? options.mode : '';\n if (this.mode == null || this.mode.length === 0) {\n return Promise.resolve({\n result: false,\n method: 'initPlayer',\n message: 'Must provide a Mode (fullscreen/embedded)',\n });\n }\n if (this.mode === 'fullscreen' || this.mode === 'embedded') {\n const url = options.url ? options.url : '';\n if (url == null || url.length === 0) {\n return Promise.resolve({\n result: false,\n method: 'initPlayer',\n message: 'Must provide a Video Url',\n });\n }\n if (url == 'internal') {\n return Promise.resolve({\n result: false,\n method: 'initPlayer',\n message: 'Internal Videos not supported on Web Platform',\n });\n }\n const playerId = options.playerId ? options.playerId : '';\n if (playerId == null || playerId.length === 0) {\n return Promise.resolve({\n result: false,\n method: 'initPlayer',\n message: 'Must provide a Player Id',\n });\n }\n const rate = options.rate ? options.rate : 1.0;\n let exitOnEnd = true;\n if (Object.keys(options).includes('exitOnEnd')) {\n const exitRet = options.exitOnEnd;\n exitOnEnd = exitRet != null ? exitRet : true;\n }\n let loopOnEnd = false;\n if (Object.keys(options).includes('loopOnEnd') && !exitOnEnd) {\n const loopRet = options.loopOnEnd;\n loopOnEnd = loopRet != null ? loopRet : false;\n }\n const componentTag = options.componentTag ? options.componentTag : '';\n if (componentTag == null || componentTag.length === 0) {\n return Promise.resolve({\n result: false,\n method: 'initPlayer',\n message: 'Must provide a Component Tag',\n });\n }\n let playerSize = null;\n if (this.mode === 'embedded') {\n playerSize = this.checkSize(options);\n }\n const result = await this._initializeVideoPlayer(url, playerId, this.mode, rate, exitOnEnd, loopOnEnd, componentTag, playerSize);\n return Promise.resolve({ result: result });\n }\n else {\n return Promise.resolve({\n result: false,\n method: 'initPlayer',\n message: 'Must provide a Mode either fullscreen or embedded)',\n });\n }\n }\n /**\n * Return if a given playerId is playing\n *\n * @param options\n */\n async isPlaying(options) {\n if (options == null) {\n return Promise.resolve({\n result: false,\n method: 'isPlaying',\n message: 'Must provide a capVideoPlayerIdOptions object',\n });\n }\n let playerId = options.playerId ? options.playerId : '';\n if (playerId == null || playerId.length === 0) {\n playerId = 'fullscreen';\n }\n if (this._players[playerId]) {\n const playing = this._players[playerId].isPlaying;\n return Promise.resolve({\n method: 'isPlaying',\n result: true,\n value: playing,\n });\n }\n else {\n return Promise.resolve({\n method: 'isPlaying',\n result: false,\n message: 'Given PlayerId does not exist)',\n });\n }\n }\n /**\n * Play the current video from a given playerId\n *\n * @param options\n */\n async play(options) {\n if (options == null) {\n return Promise.resolve({\n result: false,\n method: 'play',\n message: 'Must provide a capVideoPlayerIdOptions object',\n });\n }\n let playerId = options.playerId ? options.playerId : '';\n if (playerId == null || playerId.length === 0) {\n playerId = 'fullscreen';\n }\n if (this._players[playerId]) {\n await this._players[playerId].videoEl.play();\n return Promise.resolve({ method: 'play', result: true, value: true });\n }\n else {\n return Promise.resolve({\n method: 'play',\n result: false,\n message: 'Given PlayerId does not exist)',\n });\n }\n }\n /**\n * Pause the current video from a given playerId\n *\n * @param options\n */\n async pause(options) {\n if (options == null) {\n return Promise.resolve({\n result: false,\n method: 'pause',\n message: 'Must provide a capVideoPlayerIdOptions object',\n });\n }\n let playerId = options.playerId ? options.playerId : '';\n if (playerId == null || playerId.length === 0) {\n playerId = 'fullscreen';\n }\n if (this._players[playerId]) {\n if (this._players[playerId].isPlaying)\n await this._players[playerId].videoEl.pause();\n return Promise.resolve({ method: 'pause', result: true, value: true });\n }\n else {\n return Promise.resolve({\n method: 'pause',\n result: false,\n message: 'Given PlayerId does not exist)',\n });\n }\n }\n /**\n * Get the duration of the current video from a given playerId\n *\n * @param options\n */\n async getDuration(options) {\n if (options == null) {\n return Promise.resolve({\n result: false,\n method: 'getDuration',\n message: 'Must provide a capVideoPlayerIdOptions object',\n });\n }\n let playerId = options.playerId ? options.playerId : '';\n if (playerId == null || playerId.length === 0) {\n playerId = 'fullscreen';\n }\n if (this._players[playerId]) {\n const duration = this._players[playerId].videoEl.duration;\n return Promise.resolve({\n method: 'getDuration',\n result: true,\n value: duration,\n });\n }\n else {\n return Promise.resolve({\n method: 'getDuration',\n result: false,\n message: 'Given PlayerId does not exist)',\n });\n }\n }\n /**\n * Set the rate of the current video from a given playerId\n *\n * @param options\n */\n async setRate(options) {\n if (options == null) {\n return Promise.resolve({\n result: false,\n method: 'setRate',\n message: 'Must provide a capVideoRateOptions object',\n });\n }\n let playerId = options.playerId ? options.playerId : '';\n if (playerId == null || playerId.length === 0) {\n playerId = 'fullscreen';\n }\n const rateList = [0.25, 0.5, 0.75, 1.0, 2.0, 4.0];\n const rate = options.rate && rateList.includes(options.rate) ? options.rate : 1.0;\n if (this._players[playerId]) {\n this._players[playerId].videoEl.playbackRate = rate;\n return Promise.resolve({\n method: 'setRate',\n result: true,\n value: rate,\n });\n }\n else {\n return Promise.resolve({\n method: 'setRate',\n result: false,\n message: 'Given PlayerId does not exist)',\n });\n }\n }\n /**\n * Get the volume of the current video from a given playerId\n *\n * @param options\n */\n async getRate(options) {\n if (options == null) {\n return Promise.resolve({\n result: false,\n method: 'getRate',\n message: 'Must provide a capVideoPlayerIdOptions object',\n });\n }\n let playerId = options.playerId ? options.playerId : '';\n if (playerId == null || playerId.length === 0) {\n playerId = 'fullscreen';\n }\n if (this._players[playerId]) {\n const rate = this._players[playerId].videoEl.playbackRate;\n return Promise.resolve({\n method: 'getRate',\n result: true,\n value: rate,\n });\n }\n else {\n return Promise.resolve({\n method: 'getRate',\n result: false,\n message: 'Given PlayerId does not exist)',\n });\n }\n }\n /**\n * Set the volume of the current video from a given playerId\n *\n * @param options\n */\n async setVolume(options) {\n if (options == null) {\n return Promise.resolve({\n result: false,\n method: 'setVolume',\n message: 'Must provide a capVideoVolumeOptions object',\n });\n }\n let playerId = options.playerId ? options.playerId : '';\n if (playerId == null || playerId.length === 0) {\n playerId = 'fullscreen';\n }\n const volume = options.volume ? options.volume : 0.5;\n if (this._players[playerId]) {\n this._players[playerId].videoEl.volume = volume;\n return Promise.resolve({\n method: 'setVolume',\n result: true,\n value: volume,\n });\n }\n else {\n return Promise.resolve({\n method: 'setVolume',\n result: false,\n message: 'Given PlayerId does not exist)',\n });\n }\n }\n /**\n * Get the volume of the current video from a given playerId\n *\n * @param options\n */\n async getVolume(options) {\n if (options == null) {\n return Promise.resolve({\n result: false,\n method: 'getVolume',\n message: 'Must provide a capVideoPlayerIdOptions object',\n });\n }\n let playerId = options.playerId ? options.playerId : '';\n if (playerId == null || playerId.length === 0) {\n playerId = 'fullscreen';\n }\n if (this._players[playerId]) {\n const volume = this._players[playerId].videoEl.volume;\n return Promise.resolve({\n method: 'getVolume',\n result: true,\n value: volume,\n });\n }\n else {\n return Promise.resolve({\n method: 'getVolume',\n result: false,\n message: 'Given PlayerId does not exist)',\n });\n }\n }\n /**\n * Set the muted property of the current video from a given playerId\n *\n * @param options\n */\n async setMuted(options) {\n if (options == null) {\n return Promise.resolve({\n result: false,\n method: 'setMuted',\n message: 'Must provide a capVideoMutedOptions object',\n });\n }\n let playerId = options.playerId ? options.playerId : '';\n if (playerId == null || playerId.length === 0) {\n playerId = 'fullscreen';\n }\n const muted = options.muted ? options.muted : false;\n if (this._players[playerId]) {\n this._players[playerId].videoEl.muted = muted;\n return Promise.resolve({\n method: 'setMuted',\n result: true,\n value: muted,\n });\n }\n else {\n return Promise.resolve({\n method: 'setMuted',\n result: false,\n message: 'Given PlayerId does not exist)',\n });\n }\n }\n /**\n * Get the muted property of the current video from a given playerId\n *\n * @param options\n */\n async getMuted(options) {\n if (options == null) {\n return Promise.resolve({\n result: false,\n method: 'getMuted',\n message: 'Must provide a capVideoPlayerIdOptions object',\n });\n }\n let playerId = options.playerId ? options.playerId : '';\n if (playerId == null || playerId.length === 0) {\n playerId = 'fullscreen';\n }\n if (this._players[playerId]) {\n const muted = this._players[playerId].videoEl.muted;\n return Promise.resolve({\n method: 'getMuted',\n result: true,\n value: muted,\n });\n }\n else {\n return Promise.resolve({\n method: 'getMuted',\n result: false,\n message: 'Given PlayerId does not exist)',\n });\n }\n }\n /**\n * Set the current time of the current video from a given playerId\n *\n * @param options\n */\n async setCurrentTime(options) {\n if (options == null) {\n return Promise.resolve({\n result: false,\n method: 'setCurrentTime',\n message: 'Must provide a capVideoTimeOptions object',\n });\n }\n let playerId = options.playerId ? options.playerId : '';\n if (playerId == null || playerId.length === 0) {\n playerId = 'fullscreen';\n }\n let seekTime = options.seektime ? options.seektime : 0;\n if (this._players[playerId]) {\n const duration = this._players[playerId].videoEl.duration;\n seekTime = seekTime <= duration && seekTime >= 0 ? seekTime : duration / 2;\n this._players[playerId].videoEl.currentTime = seekTime;\n return Promise.resolve({\n method: 'setCurrentTime',\n result: true,\n value: seekTime,\n });\n }\n else {\n return Promise.resolve({\n method: 'setCurrentTime',\n result: false,\n message: 'Given PlayerId does not exist)',\n });\n }\n }\n /**\n * Get the current time of the current video from a given playerId\n *\n * @param options\n */\n async getCurrentTime(options) {\n if (options == null) {\n return Promise.resolve({\n result: false,\n method: 'getCurrentTime',\n message: 'Must provide a capVideoPlayerIdOptions object',\n });\n }\n let playerId = options.playerId ? options.playerId : '';\n if (playerId == null || playerId.length === 0) {\n playerId = 'fullscreen';\n }\n if (this._players[playerId]) {\n const seekTime = this._players[playerId].videoEl.currentTime;\n return Promise.resolve({\n method: 'getCurrentTime',\n result: true,\n value: seekTime,\n });\n }\n else {\n return Promise.resolve({\n method: 'getCurrentTime',\n result: false,\n message: 'Given PlayerId does not exist)',\n });\n }\n }\n /**\n * Get the current time of the current video from a given playerId\n *\n */\n async stopAllPlayers() {\n for (const i in this._players) {\n if (this._players[i].pipMode) {\n const doc = document;\n if (doc.pictureInPictureElement) {\n await doc.exitPictureInPicture();\n }\n }\n if (!this._players[i].videoEl.paused)\n this._players[i].videoEl.pause();\n }\n return Promise.resolve({\n method: 'stopAllPlayers',\n result: true,\n value: true,\n });\n }\n /**\n * Show controller\n *\n */\n async showController() {\n return Promise.resolve({\n method: 'showController',\n result: true,\n value: true,\n });\n }\n /**\n * isControllerIsFullyVisible\n *\n */\n async isControllerIsFullyVisible() {\n return Promise.resolve({\n method: 'isControllerIsFullyVisible',\n result: true,\n value: true,\n });\n }\n /**\n * Exit the current player\n *\n */\n async exitPlayer() {\n return Promise.resolve({\n method: 'exitPlayer',\n result: true,\n value: true,\n });\n }\n checkSize(options) {\n const playerSize = {\n width: options.width ? options.width : 320,\n height: options.height ? options.height : 180,\n };\n const ratio = playerSize.height / playerSize.width;\n if (playerSize.width > window.innerWidth) {\n playerSize.width = window.innerWidth;\n playerSize.height = Math.floor(playerSize.width * ratio);\n }\n if (playerSize.height > window.innerHeight) {\n playerSize.height = window.innerHeight;\n playerSize.width = Math.floor(playerSize.height / ratio);\n }\n return playerSize;\n }\n async _initializeVideoPlayer(url, playerId, mode, rate, exitOnEnd, loopOnEnd, componentTag, playerSize) {\n const videoURL = url ? (url.indexOf('%2F') == -1 ? encodeURI(url) : url) : null;\n if (videoURL === null)\n return Promise.resolve(false);\n this.videoContainer = await this._getContainerElement(playerId, componentTag);\n if (this.videoContainer === null)\n return Promise.resolve({\n method: 'initPlayer',\n result: false,\n message: 'componentTag or divContainerElement must be provided',\n });\n if (mode === 'embedded' && playerSize == null)\n return Promise.resolve({\n method: 'initPlayer',\n result: false,\n message: 'playerSize must be defined in embedded mode',\n });\n if (mode === 'embedded') {\n this._players[playerId] = new VideoPlayer('embedded', videoURL, playerId, rate, exitOnEnd, loopOnEnd, this.videoContainer, 2, playerSize.width, playerSize.height);\n await this._players[playerId].initialize();\n }\n else if (mode === 'fullscreen') {\n this._players['fullscreen'] = new VideoPlayer('fullscreen', videoURL, 'fullscreen', rate, exitOnEnd, loopOnEnd, this.videoContainer, 99995);\n await this._players['fullscreen'].initialize();\n }\n else {\n return Promise.resolve({\n method: 'initPlayer',\n result: false,\n message: 'mode not supported',\n });\n }\n return Promise.resolve({ method: 'initPlayer', result: true, value: true });\n }\n async _getContainerElement(playerId, componentTag) {\n const videoContainer = document.createElement('div');\n videoContainer.id = `vc_${playerId}`;\n if (componentTag != null && componentTag.length > 0) {\n const cmpTagEl = document.querySelector(`${componentTag}`);\n if (cmpTagEl === null)\n return Promise.resolve(null);\n let container = null;\n const shadowRoot = cmpTagEl.shadowRoot ? cmpTagEl.shadowRoot : null;\n if (shadowRoot != null) {\n container = shadowRoot.querySelector(`[id='${playerId}']`);\n }\n else {\n container = cmpTagEl.querySelector(`[id='${playerId}']`);\n }\n if (container != null)\n container.appendChild(videoContainer);\n return Promise.resolve(videoContainer);\n }\n else {\n return Promise.resolve(null);\n }\n }\n handlePlayerPlay(data) {\n this.notifyListeners('jeepCapVideoPlayerPlay', data);\n }\n handlePlayerPause(data) {\n this.notifyListeners('jeepCapVideoPlayerPause', data);\n }\n handlePlayerEnded(data) {\n var _a;\n if (this.mode === 'fullscreen') {\n (_a = this.videoContainer) === null || _a === void 0 ? void 0 : _a.remove();\n }\n this.removeListeners();\n this.notifyListeners('jeepCapVideoPlayerEnded', data);\n }\n handlePlayerExit() {\n var _a;\n if (this.mode === 'fullscreen') {\n (_a = this.videoContainer) === null || _a === void 0 ? void 0 : _a.remove();\n }\n const retData = { dismiss: true };\n this.removeListeners();\n this.notifyListeners('jeepCapVideoPlayerExit', retData);\n }\n handlePlayerReady(data) {\n this.notifyListeners('jeepCapVideoPlayerReady', data);\n }\n addListeners() {\n document.addEventListener('videoPlayerPlay', (ev) => {\n this.handlePlayerPlay(ev.detail);\n }, false);\n document.addEventListener('videoPlayerPause', (ev) => {\n this.handlePlayerPause(ev.detail);\n }, false);\n document.addEventListener('videoPlayerEnded', (ev) => {\n this.handlePlayerEnded(ev.detail);\n }, false);\n document.addEventListener('videoPlayerReady', (ev) => {\n this.handlePlayerReady(ev.detail);\n }, false);\n document.addEventListener('videoPlayerExit', () => {\n this.handlePlayerExit();\n }, false);\n }\n removeListeners() {\n document.removeEventListener('videoPlayerPlay', (ev) => {\n this.handlePlayerPlay(ev.detail);\n }, false);\n document.removeEventListener('videoPlayerPause', (ev) => {\n this.handlePlayerPause(ev.detail);\n }, false);\n document.removeEventListener('videoPlayerEnded', (ev) => {\n this.handlePlayerEnded(ev.detail);\n }, false);\n document.removeEventListener('videoPlayerReady', (ev) => {\n this.handlePlayerReady(ev.detail);\n }, false);\n document.removeEventListener('videoPlayerExit', () => {\n this.handlePlayerExit();\n }, false);\n }\n async getPluginVersion() {\n return { version: 'web' };\n }\n}\n//# sourceMappingURL=web.js.map"],"names":["VideoPlayer","registerPlugin","WebPlugin"],"mappings":"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"}
package/dist/plugin.js CHANGED
@@ -1006,6 +1006,9 @@ var capacitorVideoPlayer = (function (exports, core, Hls) {
1006
1006
  this.handlePlayerExit();
1007
1007
  }, false);
1008
1008
  }
1009
+ async getPluginVersion() {
1010
+ return { version: 'web' };
1011
+ }
1009
1012
  }
1010
1013
 
1011
1014
  var web = /*#__PURE__*/Object.freeze({
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.js","sources":["esm/index.js","esm/web-utils/video-types.js","esm/web-utils/videoplayer.js","esm/web.js"],"sourcesContent":["import { registerPlugin } from '@capacitor/core';\nconst VideoPlayer = registerPlugin('VideoPlayer', {\n web: () => import('./web').then((m) => new m.VideoPlayerWeb()),\n});\nexport * from './definitions';\nexport { VideoPlayer };\n//# sourceMappingURL=index.js.map","export const possibleQueryParameterExtensions = ['file', 'extension', 'filetype', 'type', 'ext'];\nexport const videoTypes = {\n mp4: 'video/mp4',\n webm: 'video/mp4',\n cmaf: 'video/mp4',\n cmfv: 'video/mp4',\n m3u8: 'application/x-mpegURL',\n};\n//# sourceMappingURL=video-types.js.map","import Hls from 'hls.js';\nimport { videoTypes, possibleQueryParameterExtensions } from './video-types';\nexport class VideoPlayer {\n constructor(mode, url, playerId, rate, exitOnEnd, loopOnEnd, container, zIndex, width, height) {\n this.pipMode = false;\n this._videoType = null;\n this._videoContainer = null;\n this._firstReadyToPlay = true;\n this._isEnded = false;\n this._videoRate = 1.0;\n this._videoExitOnEnd = true;\n this._videoLoopOnEnd = false;\n this._url = url;\n this._container = container;\n this._mode = mode;\n this._width = width ? width : 320;\n this._height = height ? height : 180;\n this._mode = mode;\n this._videoRate = rate;\n this._zIndex = zIndex ? zIndex : 1;\n this._playerId = playerId;\n this._videoExitOnEnd = exitOnEnd;\n this._videoLoopOnEnd = loopOnEnd;\n }\n async initialize() {\n // get the video type\n const urlVideoType = this._getVideoType();\n if (urlVideoType) {\n // style the container\n if (this._mode === 'fullscreen') {\n this._container.style.position = 'absolute';\n this._container.style.width = '100vw';\n this._container.style.height = '100vh';\n }\n if (this._mode === 'embedded') {\n this._container.style.position = 'relative';\n this._container.style.width = this._width.toString() + 'px';\n this._container.style.height = this._height.toString() + 'px';\n }\n this._container.style.left = '0';\n this._container.style.top = '0';\n this._container.style.display = 'flex';\n this._container.style.alignItems = 'center';\n this._container.style.justifyContent = 'center';\n this._container.style.backgroundColor = '#000000';\n this._container.style.zIndex = this._zIndex.toString();\n const width = this._mode === 'fullscreen' ? window.innerWidth /*this._container.offsetWidth*/ : this._width;\n const height = this._mode === 'fullscreen' ? window.innerHeight /*this._container.offsetHeight*/ : this._height;\n const xmlns = 'http://www.w3.org/2000/svg';\n const svg = document.createElementNS(xmlns, 'svg');\n svg.setAttributeNS(null, 'width', width.toString());\n svg.setAttributeNS(null, 'height', height.toString());\n const viewbox = '0 0 ' + width.toString() + ' ' + height.toString();\n svg.setAttributeNS(null, 'viewBox', viewbox);\n svg.style.zIndex = (this._zIndex + 1).toString();\n const rect = document.createElementNS(xmlns, 'rect');\n rect.setAttributeNS(null, 'x', '0');\n rect.setAttributeNS(null, 'y', '0');\n rect.setAttributeNS(null, 'width', width.toString());\n rect.setAttributeNS(null, 'height', height.toString());\n rect.setAttributeNS(null, 'fill', '#000000');\n svg.appendChild(rect);\n this._container.appendChild(svg);\n const heightVideo = (width * this._height) / this._width;\n this._videoContainer = document.createElement('div');\n this._videoContainer.style.position = 'absolute';\n this._videoContainer.style.left = '0';\n this._videoContainer.style.width = width.toString() + 'px';\n this._videoContainer.style.height = heightVideo.toString() + 'px';\n this._videoContainer.style.zIndex = (this._zIndex + 2).toString();\n this._container.appendChild(this._videoContainer);\n /* Create Video Element */\n const isCreated = await this.createVideoElement(width, heightVideo);\n if (!isCreated) {\n this._createEvent('Exit', this._playerId, 'Video Error: failed to create the Video Element');\n }\n }\n else {\n this._createEvent('Exit', this._playerId, 'Url Error: type not supported');\n }\n return;\n }\n async createVideoElement(width, height) {\n this.videoEl = document.createElement('video');\n this.videoEl.controls = true;\n this.videoEl.style.zIndex = (this._zIndex + 3).toString();\n this.videoEl.style.width = `${width.toString()}px`;\n this.videoEl.style.height = `${height.toString()}px`;\n this.videoEl.playbackRate = this._videoRate;\n this._videoContainer.appendChild(this.videoEl);\n // set the player\n const isSet = await this._setPlayer();\n if (isSet) {\n this.videoEl.onended = async () => {\n this._isEnded = true;\n this.isPlaying = false;\n if (this.videoEl) {\n this.videoEl.currentTime = 0;\n }\n if (this._videoExitOnEnd) {\n if (this._mode === 'fullscreen') {\n this._closeFullscreen();\n }\n this._createEvent('Ended', this._playerId);\n }\n else {\n if (this._videoLoopOnEnd && this.videoEl != null) {\n await this.videoEl.play();\n }\n }\n };\n this.videoEl.oncanplay = async () => {\n if (this._firstReadyToPlay) {\n this._createEvent('Ready', this._playerId);\n if (this.videoEl != null) {\n this.videoEl.muted = false;\n if (this._mode === 'fullscreen')\n await this.videoEl.play();\n this._firstReadyToPlay = false;\n }\n }\n };\n this.videoEl.onplay = () => {\n this.isPlaying = true;\n if (this._firstReadyToPlay)\n this._firstReadyToPlay = false;\n this._createEvent('Play', this._playerId);\n };\n this.videoEl.onplaying = () => {\n this._createEvent('Playing', this._playerId);\n };\n this.videoEl.onpause = () => {\n this.isPlaying = false;\n this._createEvent('Pause', this._playerId);\n };\n if (this._mode === 'fullscreen') {\n // create the video player exit button\n const exitEl = document.createElement('button');\n exitEl.textContent = 'X';\n exitEl.style.position = 'absolute';\n exitEl.style.left = '1%';\n exitEl.style.top = '5%';\n exitEl.style.width = '5vmin';\n exitEl.style.padding = '0.5%';\n exitEl.style.fontSize = '1.2rem';\n exitEl.style.background = 'rgba(51,51,51,.4)';\n exitEl.style.color = '#fff';\n exitEl.style.visibility = 'hidden';\n exitEl.style.zIndex = (this._zIndex + 4).toString();\n exitEl.style.border = '1px solid rgba(51,51,51,.4)';\n exitEl.style.borderRadius = '20px';\n this._videoContainer.onclick = async () => {\n this._initial = await this._doHide(exitEl, 3000);\n };\n this._videoContainer.ontouchstart = async () => {\n this._initial = await this._doHide(exitEl, 3000);\n };\n this._videoContainer.onmousemove = async () => {\n this._initial = await this._doHide(exitEl, 3000);\n };\n exitEl.onclick = () => {\n this._createEvent('Exit', this._playerId);\n };\n exitEl.ontouchstart = () => {\n this._createEvent('Exit', this._playerId);\n };\n this._videoContainer.appendChild(exitEl);\n this._initial = await this._doHide(exitEl, 3000);\n this._goFullscreen();\n }\n }\n return isSet;\n }\n async _goFullscreen() {\n if (this._container.mozRequestFullScreen) {\n /* Firefox */\n this._container.mozRequestFullScreen();\n }\n else if (this._container.webkitRequestFullscreen) {\n /* Chrome, Safari & Opera */\n this._container.webkitRequestFullscreen();\n }\n else if (this._container.msRequestFullscreen) {\n /* IE/Edge */\n this._container.msRequestFullscreen();\n }\n else if (this._container.requestFullscreen) {\n this._container.requestFullscreen();\n }\n return;\n }\n async _setPlayer() {\n return new Promise((resolve) => {\n if (this.videoEl != null) {\n if (Hls.isSupported() && this._videoType === 'application/x-mpegURL') {\n const hls = new Hls();\n hls.loadSource(this._url);\n hls.attachMedia(this.videoEl);\n hls.once(Hls.Events.FRAG_PARSED, () => {\n if (this.videoEl != null) {\n this.videoEl.muted = true;\n this.videoEl.crossOrigin = 'anonymous';\n resolve(true);\n }\n else {\n resolve(false);\n }\n });\n }\n else if (this._videoType === 'video/mp4') {\n // CMAF (fMP4) && MP4\n this.videoEl.src = this._url;\n if (this._url.substring(0, 5) != 'https' && this._url.substring(0, 4) === 'http')\n this.videoEl.crossOrigin = 'anonymous';\n if (this._url.substring(0, 5) === 'https' || this._url.substring(0, 4) === 'http')\n this.videoEl.muted = true;\n resolve(true);\n }\n else {\n // Not Supported\n resolve(false);\n }\n this.videoEl.addEventListener('enterpictureinpicture', (event) => {\n this.pipWindow = event.pictureInPictureWindow;\n this.pipMode = true;\n this._closeFullscreen();\n });\n this.videoEl.addEventListener('leavepictureinpicture', () => {\n this.pipMode = false;\n if (!this._isEnded) {\n this._goFullscreen();\n if (this.videoEl != null)\n this.videoEl.play();\n }\n });\n }\n else {\n resolve(false);\n }\n });\n }\n _getVideoType() {\n const sUrl = this._url ? this._url : '';\n if (sUrl != null && sUrl.length > 0) {\n Object.entries(videoTypes).forEach(([extension, mimeType]) => {\n // we search for dot + extension (e.g. `.mp4`) for URLs that have the extension in the filename\n // e.g. https://vimeo.com/?file=my-video.mp4\n const hasDotExtension = sUrl.match(new RegExp(`.(${extension})`, 'i'));\n if (hasDotExtension) {\n return (this._videoType = mimeType);\n }\n // we search for the extension (e.g. `m3u8`) for URLs that might have the extension as a query parameter\n // e.g. https://youtube.com/?v=7894289374&type=m3u8\n const hasExtensionInUrl = sUrl.match(new RegExp(`(${extension})`, 'i'));\n if (hasExtensionInUrl) {\n return (this._videoType = mimeType);\n }\n });\n // we check for not supported extensions for URLs that have the extension in the filename\n // e.g. https://vimeo.com/?file=not-supported-extension-video.mkv\n const hasNotSupportedDotExtension = sUrl.match(/\\.(.*)/i);\n if (hasNotSupportedDotExtension) {\n return (this._videoType = null);\n }\n // we check for not supported extensions for URLs that might have the extension as a query parameter\n // e.g. https://youtube.com/?v=3982748927&filetype=mkv\n const hasNotSupportedExtensionInUrl = sUrl.match(new RegExp(`(${possibleQueryParameterExtensions.join('|')})=+(.*)&?(?=&|$))`, 'i'));\n if (hasNotSupportedExtensionInUrl) {\n return (this._videoType = null);\n }\n // No extension found, then we assume it's 'mp4' (Match case for '')\n return 'video/mp4';\n }\n // URL was not defined, we return null\n return null;\n }\n async _doHide(exitEl, duration) {\n clearTimeout(this._initial);\n exitEl.style.visibility = 'visible';\n const initial = setTimeout(() => {\n exitEl.style.visibility = 'hidden';\n }, duration);\n return initial;\n }\n _createEvent(ev, playerId, msg) {\n const message = msg ? msg : null;\n let event;\n if (message != null) {\n event = new CustomEvent(`videoPlayer${ev}`, {\n detail: { fromPlayerId: playerId, message: message },\n });\n }\n else {\n const currentTime = this.videoEl ? this.videoEl.currentTime : 0;\n event = new CustomEvent(`videoPlayer${ev}`, {\n detail: { fromPlayerId: playerId, currentTime: currentTime },\n });\n }\n document.dispatchEvent(event);\n }\n _closeFullscreen() {\n const mydoc = document;\n const isInFullScreen = (mydoc.fullscreenElement && mydoc.fullscreenElement !== null) ||\n (mydoc.webkitFullscreenElement && mydoc.webkitFullscreenElement !== null) ||\n (mydoc.mozFullScreenElement && mydoc.mozFullScreenElement !== null) ||\n (mydoc.msFullscreenElement && mydoc.msFullscreenElement !== null);\n if (isInFullScreen) {\n if (mydoc.mozCancelFullScreen) {\n mydoc.mozCancelFullScreen();\n }\n else if (mydoc.webkitExitFullscreen) {\n mydoc.webkitExitFullscreen();\n }\n else if (mydoc.msExitFullscreen) {\n mydoc.msExitFullscreen();\n }\n else if (mydoc.exitFullscreen) {\n mydoc.exitFullscreen();\n }\n }\n }\n}\n//# sourceMappingURL=videoplayer.js.map","import { WebPlugin } from '@capacitor/core';\nimport { VideoPlayer } from './web-utils/videoplayer';\nexport class VideoPlayerWeb extends WebPlugin {\n constructor() {\n super();\n this._players = [];\n this.addListeners();\n }\n async echo(options) {\n return Promise.resolve({ result: true, method: 'echo', value: options });\n }\n /**\n * Player initialization\n *\n * @param options\n */\n async initPlayer(options) {\n if (options == null) {\n return Promise.resolve({\n result: false,\n method: 'initPlayer',\n message: 'Must provide a capVideoPlayerOptions object',\n });\n }\n this.mode = options.mode ? options.mode : '';\n if (this.mode == null || this.mode.length === 0) {\n return Promise.resolve({\n result: false,\n method: 'initPlayer',\n message: 'Must provide a Mode (fullscreen/embedded)',\n });\n }\n if (this.mode === 'fullscreen' || this.mode === 'embedded') {\n const url = options.url ? options.url : '';\n if (url == null || url.length === 0) {\n return Promise.resolve({\n result: false,\n method: 'initPlayer',\n message: 'Must provide a Video Url',\n });\n }\n if (url == 'internal') {\n return Promise.resolve({\n result: false,\n method: 'initPlayer',\n message: 'Internal Videos not supported on Web Platform',\n });\n }\n const playerId = options.playerId ? options.playerId : '';\n if (playerId == null || playerId.length === 0) {\n return Promise.resolve({\n result: false,\n method: 'initPlayer',\n message: 'Must provide a Player Id',\n });\n }\n const rate = options.rate ? options.rate : 1.0;\n let exitOnEnd = true;\n if (Object.keys(options).includes('exitOnEnd')) {\n const exitRet = options.exitOnEnd;\n exitOnEnd = exitRet != null ? exitRet : true;\n }\n let loopOnEnd = false;\n if (Object.keys(options).includes('loopOnEnd') && !exitOnEnd) {\n const loopRet = options.loopOnEnd;\n loopOnEnd = loopRet != null ? loopRet : false;\n }\n const componentTag = options.componentTag ? options.componentTag : '';\n if (componentTag == null || componentTag.length === 0) {\n return Promise.resolve({\n result: false,\n method: 'initPlayer',\n message: 'Must provide a Component Tag',\n });\n }\n let playerSize = null;\n if (this.mode === 'embedded') {\n playerSize = this.checkSize(options);\n }\n const result = await this._initializeVideoPlayer(url, playerId, this.mode, rate, exitOnEnd, loopOnEnd, componentTag, playerSize);\n return Promise.resolve({ result: result });\n }\n else {\n return Promise.resolve({\n result: false,\n method: 'initPlayer',\n message: 'Must provide a Mode either fullscreen or embedded)',\n });\n }\n }\n /**\n * Return if a given playerId is playing\n *\n * @param options\n */\n async isPlaying(options) {\n if (options == null) {\n return Promise.resolve({\n result: false,\n method: 'isPlaying',\n message: 'Must provide a capVideoPlayerIdOptions object',\n });\n }\n let playerId = options.playerId ? options.playerId : '';\n if (playerId == null || playerId.length === 0) {\n playerId = 'fullscreen';\n }\n if (this._players[playerId]) {\n const playing = this._players[playerId].isPlaying;\n return Promise.resolve({\n method: 'isPlaying',\n result: true,\n value: playing,\n });\n }\n else {\n return Promise.resolve({\n method: 'isPlaying',\n result: false,\n message: 'Given PlayerId does not exist)',\n });\n }\n }\n /**\n * Play the current video from a given playerId\n *\n * @param options\n */\n async play(options) {\n if (options == null) {\n return Promise.resolve({\n result: false,\n method: 'play',\n message: 'Must provide a capVideoPlayerIdOptions object',\n });\n }\n let playerId = options.playerId ? options.playerId : '';\n if (playerId == null || playerId.length === 0) {\n playerId = 'fullscreen';\n }\n if (this._players[playerId]) {\n await this._players[playerId].videoEl.play();\n return Promise.resolve({ method: 'play', result: true, value: true });\n }\n else {\n return Promise.resolve({\n method: 'play',\n result: false,\n message: 'Given PlayerId does not exist)',\n });\n }\n }\n /**\n * Pause the current video from a given playerId\n *\n * @param options\n */\n async pause(options) {\n if (options == null) {\n return Promise.resolve({\n result: false,\n method: 'pause',\n message: 'Must provide a capVideoPlayerIdOptions object',\n });\n }\n let playerId = options.playerId ? options.playerId : '';\n if (playerId == null || playerId.length === 0) {\n playerId = 'fullscreen';\n }\n if (this._players[playerId]) {\n if (this._players[playerId].isPlaying)\n await this._players[playerId].videoEl.pause();\n return Promise.resolve({ method: 'pause', result: true, value: true });\n }\n else {\n return Promise.resolve({\n method: 'pause',\n result: false,\n message: 'Given PlayerId does not exist)',\n });\n }\n }\n /**\n * Get the duration of the current video from a given playerId\n *\n * @param options\n */\n async getDuration(options) {\n if (options == null) {\n return Promise.resolve({\n result: false,\n method: 'getDuration',\n message: 'Must provide a capVideoPlayerIdOptions object',\n });\n }\n let playerId = options.playerId ? options.playerId : '';\n if (playerId == null || playerId.length === 0) {\n playerId = 'fullscreen';\n }\n if (this._players[playerId]) {\n const duration = this._players[playerId].videoEl.duration;\n return Promise.resolve({\n method: 'getDuration',\n result: true,\n value: duration,\n });\n }\n else {\n return Promise.resolve({\n method: 'getDuration',\n result: false,\n message: 'Given PlayerId does not exist)',\n });\n }\n }\n /**\n * Set the rate of the current video from a given playerId\n *\n * @param options\n */\n async setRate(options) {\n if (options == null) {\n return Promise.resolve({\n result: false,\n method: 'setRate',\n message: 'Must provide a capVideoRateOptions object',\n });\n }\n let playerId = options.playerId ? options.playerId : '';\n if (playerId == null || playerId.length === 0) {\n playerId = 'fullscreen';\n }\n const rateList = [0.25, 0.5, 0.75, 1.0, 2.0, 4.0];\n const rate = options.rate && rateList.includes(options.rate) ? options.rate : 1.0;\n if (this._players[playerId]) {\n this._players[playerId].videoEl.playbackRate = rate;\n return Promise.resolve({\n method: 'setRate',\n result: true,\n value: rate,\n });\n }\n else {\n return Promise.resolve({\n method: 'setRate',\n result: false,\n message: 'Given PlayerId does not exist)',\n });\n }\n }\n /**\n * Get the volume of the current video from a given playerId\n *\n * @param options\n */\n async getRate(options) {\n if (options == null) {\n return Promise.resolve({\n result: false,\n method: 'getRate',\n message: 'Must provide a capVideoPlayerIdOptions object',\n });\n }\n let playerId = options.playerId ? options.playerId : '';\n if (playerId == null || playerId.length === 0) {\n playerId = 'fullscreen';\n }\n if (this._players[playerId]) {\n const rate = this._players[playerId].videoEl.playbackRate;\n return Promise.resolve({\n method: 'getRate',\n result: true,\n value: rate,\n });\n }\n else {\n return Promise.resolve({\n method: 'getRate',\n result: false,\n message: 'Given PlayerId does not exist)',\n });\n }\n }\n /**\n * Set the volume of the current video from a given playerId\n *\n * @param options\n */\n async setVolume(options) {\n if (options == null) {\n return Promise.resolve({\n result: false,\n method: 'setVolume',\n message: 'Must provide a capVideoVolumeOptions object',\n });\n }\n let playerId = options.playerId ? options.playerId : '';\n if (playerId == null || playerId.length === 0) {\n playerId = 'fullscreen';\n }\n const volume = options.volume ? options.volume : 0.5;\n if (this._players[playerId]) {\n this._players[playerId].videoEl.volume = volume;\n return Promise.resolve({\n method: 'setVolume',\n result: true,\n value: volume,\n });\n }\n else {\n return Promise.resolve({\n method: 'setVolume',\n result: false,\n message: 'Given PlayerId does not exist)',\n });\n }\n }\n /**\n * Get the volume of the current video from a given playerId\n *\n * @param options\n */\n async getVolume(options) {\n if (options == null) {\n return Promise.resolve({\n result: false,\n method: 'getVolume',\n message: 'Must provide a capVideoPlayerIdOptions object',\n });\n }\n let playerId = options.playerId ? options.playerId : '';\n if (playerId == null || playerId.length === 0) {\n playerId = 'fullscreen';\n }\n if (this._players[playerId]) {\n const volume = this._players[playerId].videoEl.volume;\n return Promise.resolve({\n method: 'getVolume',\n result: true,\n value: volume,\n });\n }\n else {\n return Promise.resolve({\n method: 'getVolume',\n result: false,\n message: 'Given PlayerId does not exist)',\n });\n }\n }\n /**\n * Set the muted property of the current video from a given playerId\n *\n * @param options\n */\n async setMuted(options) {\n if (options == null) {\n return Promise.resolve({\n result: false,\n method: 'setMuted',\n message: 'Must provide a capVideoMutedOptions object',\n });\n }\n let playerId = options.playerId ? options.playerId : '';\n if (playerId == null || playerId.length === 0) {\n playerId = 'fullscreen';\n }\n const muted = options.muted ? options.muted : false;\n if (this._players[playerId]) {\n this._players[playerId].videoEl.muted = muted;\n return Promise.resolve({\n method: 'setMuted',\n result: true,\n value: muted,\n });\n }\n else {\n return Promise.resolve({\n method: 'setMuted',\n result: false,\n message: 'Given PlayerId does not exist)',\n });\n }\n }\n /**\n * Get the muted property of the current video from a given playerId\n *\n * @param options\n */\n async getMuted(options) {\n if (options == null) {\n return Promise.resolve({\n result: false,\n method: 'getMuted',\n message: 'Must provide a capVideoPlayerIdOptions object',\n });\n }\n let playerId = options.playerId ? options.playerId : '';\n if (playerId == null || playerId.length === 0) {\n playerId = 'fullscreen';\n }\n if (this._players[playerId]) {\n const muted = this._players[playerId].videoEl.muted;\n return Promise.resolve({\n method: 'getMuted',\n result: true,\n value: muted,\n });\n }\n else {\n return Promise.resolve({\n method: 'getMuted',\n result: false,\n message: 'Given PlayerId does not exist)',\n });\n }\n }\n /**\n * Set the current time of the current video from a given playerId\n *\n * @param options\n */\n async setCurrentTime(options) {\n if (options == null) {\n return Promise.resolve({\n result: false,\n method: 'setCurrentTime',\n message: 'Must provide a capVideoTimeOptions object',\n });\n }\n let playerId = options.playerId ? options.playerId : '';\n if (playerId == null || playerId.length === 0) {\n playerId = 'fullscreen';\n }\n let seekTime = options.seektime ? options.seektime : 0;\n if (this._players[playerId]) {\n const duration = this._players[playerId].videoEl.duration;\n seekTime = seekTime <= duration && seekTime >= 0 ? seekTime : duration / 2;\n this._players[playerId].videoEl.currentTime = seekTime;\n return Promise.resolve({\n method: 'setCurrentTime',\n result: true,\n value: seekTime,\n });\n }\n else {\n return Promise.resolve({\n method: 'setCurrentTime',\n result: false,\n message: 'Given PlayerId does not exist)',\n });\n }\n }\n /**\n * Get the current time of the current video from a given playerId\n *\n * @param options\n */\n async getCurrentTime(options) {\n if (options == null) {\n return Promise.resolve({\n result: false,\n method: 'getCurrentTime',\n message: 'Must provide a capVideoPlayerIdOptions object',\n });\n }\n let playerId = options.playerId ? options.playerId : '';\n if (playerId == null || playerId.length === 0) {\n playerId = 'fullscreen';\n }\n if (this._players[playerId]) {\n const seekTime = this._players[playerId].videoEl.currentTime;\n return Promise.resolve({\n method: 'getCurrentTime',\n result: true,\n value: seekTime,\n });\n }\n else {\n return Promise.resolve({\n method: 'getCurrentTime',\n result: false,\n message: 'Given PlayerId does not exist)',\n });\n }\n }\n /**\n * Get the current time of the current video from a given playerId\n *\n */\n async stopAllPlayers() {\n for (const i in this._players) {\n if (this._players[i].pipMode) {\n const doc = document;\n if (doc.pictureInPictureElement) {\n await doc.exitPictureInPicture();\n }\n }\n if (!this._players[i].videoEl.paused)\n this._players[i].videoEl.pause();\n }\n return Promise.resolve({\n method: 'stopAllPlayers',\n result: true,\n value: true,\n });\n }\n /**\n * Show controller\n *\n */\n async showController() {\n return Promise.resolve({\n method: 'showController',\n result: true,\n value: true,\n });\n }\n /**\n * isControllerIsFullyVisible\n *\n */\n async isControllerIsFullyVisible() {\n return Promise.resolve({\n method: 'isControllerIsFullyVisible',\n result: true,\n value: true,\n });\n }\n /**\n * Exit the current player\n *\n */\n async exitPlayer() {\n return Promise.resolve({\n method: 'exitPlayer',\n result: true,\n value: true,\n });\n }\n checkSize(options) {\n const playerSize = {\n width: options.width ? options.width : 320,\n height: options.height ? options.height : 180,\n };\n const ratio = playerSize.height / playerSize.width;\n if (playerSize.width > window.innerWidth) {\n playerSize.width = window.innerWidth;\n playerSize.height = Math.floor(playerSize.width * ratio);\n }\n if (playerSize.height > window.innerHeight) {\n playerSize.height = window.innerHeight;\n playerSize.width = Math.floor(playerSize.height / ratio);\n }\n return playerSize;\n }\n async _initializeVideoPlayer(url, playerId, mode, rate, exitOnEnd, loopOnEnd, componentTag, playerSize) {\n const videoURL = url ? (url.indexOf('%2F') == -1 ? encodeURI(url) : url) : null;\n if (videoURL === null)\n return Promise.resolve(false);\n this.videoContainer = await this._getContainerElement(playerId, componentTag);\n if (this.videoContainer === null)\n return Promise.resolve({\n method: 'initPlayer',\n result: false,\n message: 'componentTag or divContainerElement must be provided',\n });\n if (mode === 'embedded' && playerSize == null)\n return Promise.resolve({\n method: 'initPlayer',\n result: false,\n message: 'playerSize must be defined in embedded mode',\n });\n if (mode === 'embedded') {\n this._players[playerId] = new VideoPlayer('embedded', videoURL, playerId, rate, exitOnEnd, loopOnEnd, this.videoContainer, 2, playerSize.width, playerSize.height);\n await this._players[playerId].initialize();\n }\n else if (mode === 'fullscreen') {\n this._players['fullscreen'] = new VideoPlayer('fullscreen', videoURL, 'fullscreen', rate, exitOnEnd, loopOnEnd, this.videoContainer, 99995);\n await this._players['fullscreen'].initialize();\n }\n else {\n return Promise.resolve({\n method: 'initPlayer',\n result: false,\n message: 'mode not supported',\n });\n }\n return Promise.resolve({ method: 'initPlayer', result: true, value: true });\n }\n async _getContainerElement(playerId, componentTag) {\n const videoContainer = document.createElement('div');\n videoContainer.id = `vc_${playerId}`;\n if (componentTag != null && componentTag.length > 0) {\n const cmpTagEl = document.querySelector(`${componentTag}`);\n if (cmpTagEl === null)\n return Promise.resolve(null);\n let container = null;\n const shadowRoot = cmpTagEl.shadowRoot ? cmpTagEl.shadowRoot : null;\n if (shadowRoot != null) {\n container = shadowRoot.querySelector(`[id='${playerId}']`);\n }\n else {\n container = cmpTagEl.querySelector(`[id='${playerId}']`);\n }\n if (container != null)\n container.appendChild(videoContainer);\n return Promise.resolve(videoContainer);\n }\n else {\n return Promise.resolve(null);\n }\n }\n handlePlayerPlay(data) {\n this.notifyListeners('jeepCapVideoPlayerPlay', data);\n }\n handlePlayerPause(data) {\n this.notifyListeners('jeepCapVideoPlayerPause', data);\n }\n handlePlayerEnded(data) {\n var _a;\n if (this.mode === 'fullscreen') {\n (_a = this.videoContainer) === null || _a === void 0 ? void 0 : _a.remove();\n }\n this.removeListeners();\n this.notifyListeners('jeepCapVideoPlayerEnded', data);\n }\n handlePlayerExit() {\n var _a;\n if (this.mode === 'fullscreen') {\n (_a = this.videoContainer) === null || _a === void 0 ? void 0 : _a.remove();\n }\n const retData = { dismiss: true };\n this.removeListeners();\n this.notifyListeners('jeepCapVideoPlayerExit', retData);\n }\n handlePlayerReady(data) {\n this.notifyListeners('jeepCapVideoPlayerReady', data);\n }\n addListeners() {\n document.addEventListener('videoPlayerPlay', (ev) => {\n this.handlePlayerPlay(ev.detail);\n }, false);\n document.addEventListener('videoPlayerPause', (ev) => {\n this.handlePlayerPause(ev.detail);\n }, false);\n document.addEventListener('videoPlayerEnded', (ev) => {\n this.handlePlayerEnded(ev.detail);\n }, false);\n document.addEventListener('videoPlayerReady', (ev) => {\n this.handlePlayerReady(ev.detail);\n }, false);\n document.addEventListener('videoPlayerExit', () => {\n this.handlePlayerExit();\n }, false);\n }\n removeListeners() {\n document.removeEventListener('videoPlayerPlay', (ev) => {\n this.handlePlayerPlay(ev.detail);\n }, false);\n document.removeEventListener('videoPlayerPause', (ev) => {\n this.handlePlayerPause(ev.detail);\n }, false);\n document.removeEventListener('videoPlayerEnded', (ev) => {\n this.handlePlayerEnded(ev.detail);\n }, false);\n document.removeEventListener('videoPlayerReady', (ev) => {\n this.handlePlayerReady(ev.detail);\n }, false);\n document.removeEventListener('videoPlayerExit', () => {\n this.handlePlayerExit();\n }, false);\n }\n}\n//# sourceMappingURL=web.js.map"],"names":["VideoPlayer","registerPlugin","WebPlugin"],"mappings":"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"}
1
+ {"version":3,"file":"plugin.js","sources":["esm/index.js","esm/web-utils/video-types.js","esm/web-utils/videoplayer.js","esm/web.js"],"sourcesContent":["import { registerPlugin } from '@capacitor/core';\nconst VideoPlayer = registerPlugin('VideoPlayer', {\n web: () => import('./web').then((m) => new m.VideoPlayerWeb()),\n});\nexport * from './definitions';\nexport { VideoPlayer };\n//# sourceMappingURL=index.js.map","export const possibleQueryParameterExtensions = ['file', 'extension', 'filetype', 'type', 'ext'];\nexport const videoTypes = {\n mp4: 'video/mp4',\n webm: 'video/mp4',\n cmaf: 'video/mp4',\n cmfv: 'video/mp4',\n m3u8: 'application/x-mpegURL',\n};\n//# sourceMappingURL=video-types.js.map","import Hls from 'hls.js';\nimport { videoTypes, possibleQueryParameterExtensions } from './video-types';\nexport class VideoPlayer {\n constructor(mode, url, playerId, rate, exitOnEnd, loopOnEnd, container, zIndex, width, height) {\n this.pipMode = false;\n this._videoType = null;\n this._videoContainer = null;\n this._firstReadyToPlay = true;\n this._isEnded = false;\n this._videoRate = 1.0;\n this._videoExitOnEnd = true;\n this._videoLoopOnEnd = false;\n this._url = url;\n this._container = container;\n this._mode = mode;\n this._width = width ? width : 320;\n this._height = height ? height : 180;\n this._mode = mode;\n this._videoRate = rate;\n this._zIndex = zIndex ? zIndex : 1;\n this._playerId = playerId;\n this._videoExitOnEnd = exitOnEnd;\n this._videoLoopOnEnd = loopOnEnd;\n }\n async initialize() {\n // get the video type\n const urlVideoType = this._getVideoType();\n if (urlVideoType) {\n // style the container\n if (this._mode === 'fullscreen') {\n this._container.style.position = 'absolute';\n this._container.style.width = '100vw';\n this._container.style.height = '100vh';\n }\n if (this._mode === 'embedded') {\n this._container.style.position = 'relative';\n this._container.style.width = this._width.toString() + 'px';\n this._container.style.height = this._height.toString() + 'px';\n }\n this._container.style.left = '0';\n this._container.style.top = '0';\n this._container.style.display = 'flex';\n this._container.style.alignItems = 'center';\n this._container.style.justifyContent = 'center';\n this._container.style.backgroundColor = '#000000';\n this._container.style.zIndex = this._zIndex.toString();\n const width = this._mode === 'fullscreen' ? window.innerWidth /*this._container.offsetWidth*/ : this._width;\n const height = this._mode === 'fullscreen' ? window.innerHeight /*this._container.offsetHeight*/ : this._height;\n const xmlns = 'http://www.w3.org/2000/svg';\n const svg = document.createElementNS(xmlns, 'svg');\n svg.setAttributeNS(null, 'width', width.toString());\n svg.setAttributeNS(null, 'height', height.toString());\n const viewbox = '0 0 ' + width.toString() + ' ' + height.toString();\n svg.setAttributeNS(null, 'viewBox', viewbox);\n svg.style.zIndex = (this._zIndex + 1).toString();\n const rect = document.createElementNS(xmlns, 'rect');\n rect.setAttributeNS(null, 'x', '0');\n rect.setAttributeNS(null, 'y', '0');\n rect.setAttributeNS(null, 'width', width.toString());\n rect.setAttributeNS(null, 'height', height.toString());\n rect.setAttributeNS(null, 'fill', '#000000');\n svg.appendChild(rect);\n this._container.appendChild(svg);\n const heightVideo = (width * this._height) / this._width;\n this._videoContainer = document.createElement('div');\n this._videoContainer.style.position = 'absolute';\n this._videoContainer.style.left = '0';\n this._videoContainer.style.width = width.toString() + 'px';\n this._videoContainer.style.height = heightVideo.toString() + 'px';\n this._videoContainer.style.zIndex = (this._zIndex + 2).toString();\n this._container.appendChild(this._videoContainer);\n /* Create Video Element */\n const isCreated = await this.createVideoElement(width, heightVideo);\n if (!isCreated) {\n this._createEvent('Exit', this._playerId, 'Video Error: failed to create the Video Element');\n }\n }\n else {\n this._createEvent('Exit', this._playerId, 'Url Error: type not supported');\n }\n return;\n }\n async createVideoElement(width, height) {\n this.videoEl = document.createElement('video');\n this.videoEl.controls = true;\n this.videoEl.style.zIndex = (this._zIndex + 3).toString();\n this.videoEl.style.width = `${width.toString()}px`;\n this.videoEl.style.height = `${height.toString()}px`;\n this.videoEl.playbackRate = this._videoRate;\n this._videoContainer.appendChild(this.videoEl);\n // set the player\n const isSet = await this._setPlayer();\n if (isSet) {\n this.videoEl.onended = async () => {\n this._isEnded = true;\n this.isPlaying = false;\n if (this.videoEl) {\n this.videoEl.currentTime = 0;\n }\n if (this._videoExitOnEnd) {\n if (this._mode === 'fullscreen') {\n this._closeFullscreen();\n }\n this._createEvent('Ended', this._playerId);\n }\n else {\n if (this._videoLoopOnEnd && this.videoEl != null) {\n await this.videoEl.play();\n }\n }\n };\n this.videoEl.oncanplay = async () => {\n if (this._firstReadyToPlay) {\n this._createEvent('Ready', this._playerId);\n if (this.videoEl != null) {\n this.videoEl.muted = false;\n if (this._mode === 'fullscreen')\n await this.videoEl.play();\n this._firstReadyToPlay = false;\n }\n }\n };\n this.videoEl.onplay = () => {\n this.isPlaying = true;\n if (this._firstReadyToPlay)\n this._firstReadyToPlay = false;\n this._createEvent('Play', this._playerId);\n };\n this.videoEl.onplaying = () => {\n this._createEvent('Playing', this._playerId);\n };\n this.videoEl.onpause = () => {\n this.isPlaying = false;\n this._createEvent('Pause', this._playerId);\n };\n if (this._mode === 'fullscreen') {\n // create the video player exit button\n const exitEl = document.createElement('button');\n exitEl.textContent = 'X';\n exitEl.style.position = 'absolute';\n exitEl.style.left = '1%';\n exitEl.style.top = '5%';\n exitEl.style.width = '5vmin';\n exitEl.style.padding = '0.5%';\n exitEl.style.fontSize = '1.2rem';\n exitEl.style.background = 'rgba(51,51,51,.4)';\n exitEl.style.color = '#fff';\n exitEl.style.visibility = 'hidden';\n exitEl.style.zIndex = (this._zIndex + 4).toString();\n exitEl.style.border = '1px solid rgba(51,51,51,.4)';\n exitEl.style.borderRadius = '20px';\n this._videoContainer.onclick = async () => {\n this._initial = await this._doHide(exitEl, 3000);\n };\n this._videoContainer.ontouchstart = async () => {\n this._initial = await this._doHide(exitEl, 3000);\n };\n this._videoContainer.onmousemove = async () => {\n this._initial = await this._doHide(exitEl, 3000);\n };\n exitEl.onclick = () => {\n this._createEvent('Exit', this._playerId);\n };\n exitEl.ontouchstart = () => {\n this._createEvent('Exit', this._playerId);\n };\n this._videoContainer.appendChild(exitEl);\n this._initial = await this._doHide(exitEl, 3000);\n this._goFullscreen();\n }\n }\n return isSet;\n }\n async _goFullscreen() {\n if (this._container.mozRequestFullScreen) {\n /* Firefox */\n this._container.mozRequestFullScreen();\n }\n else if (this._container.webkitRequestFullscreen) {\n /* Chrome, Safari & Opera */\n this._container.webkitRequestFullscreen();\n }\n else if (this._container.msRequestFullscreen) {\n /* IE/Edge */\n this._container.msRequestFullscreen();\n }\n else if (this._container.requestFullscreen) {\n this._container.requestFullscreen();\n }\n return;\n }\n async _setPlayer() {\n return new Promise((resolve) => {\n if (this.videoEl != null) {\n if (Hls.isSupported() && this._videoType === 'application/x-mpegURL') {\n const hls = new Hls();\n hls.loadSource(this._url);\n hls.attachMedia(this.videoEl);\n hls.once(Hls.Events.FRAG_PARSED, () => {\n if (this.videoEl != null) {\n this.videoEl.muted = true;\n this.videoEl.crossOrigin = 'anonymous';\n resolve(true);\n }\n else {\n resolve(false);\n }\n });\n }\n else if (this._videoType === 'video/mp4') {\n // CMAF (fMP4) && MP4\n this.videoEl.src = this._url;\n if (this._url.substring(0, 5) != 'https' && this._url.substring(0, 4) === 'http')\n this.videoEl.crossOrigin = 'anonymous';\n if (this._url.substring(0, 5) === 'https' || this._url.substring(0, 4) === 'http')\n this.videoEl.muted = true;\n resolve(true);\n }\n else {\n // Not Supported\n resolve(false);\n }\n this.videoEl.addEventListener('enterpictureinpicture', (event) => {\n this.pipWindow = event.pictureInPictureWindow;\n this.pipMode = true;\n this._closeFullscreen();\n });\n this.videoEl.addEventListener('leavepictureinpicture', () => {\n this.pipMode = false;\n if (!this._isEnded) {\n this._goFullscreen();\n if (this.videoEl != null)\n this.videoEl.play();\n }\n });\n }\n else {\n resolve(false);\n }\n });\n }\n _getVideoType() {\n const sUrl = this._url ? this._url : '';\n if (sUrl != null && sUrl.length > 0) {\n Object.entries(videoTypes).forEach(([extension, mimeType]) => {\n // we search for dot + extension (e.g. `.mp4`) for URLs that have the extension in the filename\n // e.g. https://vimeo.com/?file=my-video.mp4\n const hasDotExtension = sUrl.match(new RegExp(`.(${extension})`, 'i'));\n if (hasDotExtension) {\n return (this._videoType = mimeType);\n }\n // we search for the extension (e.g. `m3u8`) for URLs that might have the extension as a query parameter\n // e.g. https://youtube.com/?v=7894289374&type=m3u8\n const hasExtensionInUrl = sUrl.match(new RegExp(`(${extension})`, 'i'));\n if (hasExtensionInUrl) {\n return (this._videoType = mimeType);\n }\n });\n // we check for not supported extensions for URLs that have the extension in the filename\n // e.g. https://vimeo.com/?file=not-supported-extension-video.mkv\n const hasNotSupportedDotExtension = sUrl.match(/\\.(.*)/i);\n if (hasNotSupportedDotExtension) {\n return (this._videoType = null);\n }\n // we check for not supported extensions for URLs that might have the extension as a query parameter\n // e.g. https://youtube.com/?v=3982748927&filetype=mkv\n const hasNotSupportedExtensionInUrl = sUrl.match(new RegExp(`(${possibleQueryParameterExtensions.join('|')})=+(.*)&?(?=&|$))`, 'i'));\n if (hasNotSupportedExtensionInUrl) {\n return (this._videoType = null);\n }\n // No extension found, then we assume it's 'mp4' (Match case for '')\n return 'video/mp4';\n }\n // URL was not defined, we return null\n return null;\n }\n async _doHide(exitEl, duration) {\n clearTimeout(this._initial);\n exitEl.style.visibility = 'visible';\n const initial = setTimeout(() => {\n exitEl.style.visibility = 'hidden';\n }, duration);\n return initial;\n }\n _createEvent(ev, playerId, msg) {\n const message = msg ? msg : null;\n let event;\n if (message != null) {\n event = new CustomEvent(`videoPlayer${ev}`, {\n detail: { fromPlayerId: playerId, message: message },\n });\n }\n else {\n const currentTime = this.videoEl ? this.videoEl.currentTime : 0;\n event = new CustomEvent(`videoPlayer${ev}`, {\n detail: { fromPlayerId: playerId, currentTime: currentTime },\n });\n }\n document.dispatchEvent(event);\n }\n _closeFullscreen() {\n const mydoc = document;\n const isInFullScreen = (mydoc.fullscreenElement && mydoc.fullscreenElement !== null) ||\n (mydoc.webkitFullscreenElement && mydoc.webkitFullscreenElement !== null) ||\n (mydoc.mozFullScreenElement && mydoc.mozFullScreenElement !== null) ||\n (mydoc.msFullscreenElement && mydoc.msFullscreenElement !== null);\n if (isInFullScreen) {\n if (mydoc.mozCancelFullScreen) {\n mydoc.mozCancelFullScreen();\n }\n else if (mydoc.webkitExitFullscreen) {\n mydoc.webkitExitFullscreen();\n }\n else if (mydoc.msExitFullscreen) {\n mydoc.msExitFullscreen();\n }\n else if (mydoc.exitFullscreen) {\n mydoc.exitFullscreen();\n }\n }\n }\n}\n//# sourceMappingURL=videoplayer.js.map","import { WebPlugin } from '@capacitor/core';\nimport { VideoPlayer } from './web-utils/videoplayer';\nexport class VideoPlayerWeb extends WebPlugin {\n constructor() {\n super();\n this._players = [];\n this.addListeners();\n }\n async echo(options) {\n return Promise.resolve({ result: true, method: 'echo', value: options });\n }\n /**\n * Player initialization\n *\n * @param options\n */\n async initPlayer(options) {\n if (options == null) {\n return Promise.resolve({\n result: false,\n method: 'initPlayer',\n message: 'Must provide a capVideoPlayerOptions object',\n });\n }\n this.mode = options.mode ? options.mode : '';\n if (this.mode == null || this.mode.length === 0) {\n return Promise.resolve({\n result: false,\n method: 'initPlayer',\n message: 'Must provide a Mode (fullscreen/embedded)',\n });\n }\n if (this.mode === 'fullscreen' || this.mode === 'embedded') {\n const url = options.url ? options.url : '';\n if (url == null || url.length === 0) {\n return Promise.resolve({\n result: false,\n method: 'initPlayer',\n message: 'Must provide a Video Url',\n });\n }\n if (url == 'internal') {\n return Promise.resolve({\n result: false,\n method: 'initPlayer',\n message: 'Internal Videos not supported on Web Platform',\n });\n }\n const playerId = options.playerId ? options.playerId : '';\n if (playerId == null || playerId.length === 0) {\n return Promise.resolve({\n result: false,\n method: 'initPlayer',\n message: 'Must provide a Player Id',\n });\n }\n const rate = options.rate ? options.rate : 1.0;\n let exitOnEnd = true;\n if (Object.keys(options).includes('exitOnEnd')) {\n const exitRet = options.exitOnEnd;\n exitOnEnd = exitRet != null ? exitRet : true;\n }\n let loopOnEnd = false;\n if (Object.keys(options).includes('loopOnEnd') && !exitOnEnd) {\n const loopRet = options.loopOnEnd;\n loopOnEnd = loopRet != null ? loopRet : false;\n }\n const componentTag = options.componentTag ? options.componentTag : '';\n if (componentTag == null || componentTag.length === 0) {\n return Promise.resolve({\n result: false,\n method: 'initPlayer',\n message: 'Must provide a Component Tag',\n });\n }\n let playerSize = null;\n if (this.mode === 'embedded') {\n playerSize = this.checkSize(options);\n }\n const result = await this._initializeVideoPlayer(url, playerId, this.mode, rate, exitOnEnd, loopOnEnd, componentTag, playerSize);\n return Promise.resolve({ result: result });\n }\n else {\n return Promise.resolve({\n result: false,\n method: 'initPlayer',\n message: 'Must provide a Mode either fullscreen or embedded)',\n });\n }\n }\n /**\n * Return if a given playerId is playing\n *\n * @param options\n */\n async isPlaying(options) {\n if (options == null) {\n return Promise.resolve({\n result: false,\n method: 'isPlaying',\n message: 'Must provide a capVideoPlayerIdOptions object',\n });\n }\n let playerId = options.playerId ? options.playerId : '';\n if (playerId == null || playerId.length === 0) {\n playerId = 'fullscreen';\n }\n if (this._players[playerId]) {\n const playing = this._players[playerId].isPlaying;\n return Promise.resolve({\n method: 'isPlaying',\n result: true,\n value: playing,\n });\n }\n else {\n return Promise.resolve({\n method: 'isPlaying',\n result: false,\n message: 'Given PlayerId does not exist)',\n });\n }\n }\n /**\n * Play the current video from a given playerId\n *\n * @param options\n */\n async play(options) {\n if (options == null) {\n return Promise.resolve({\n result: false,\n method: 'play',\n message: 'Must provide a capVideoPlayerIdOptions object',\n });\n }\n let playerId = options.playerId ? options.playerId : '';\n if (playerId == null || playerId.length === 0) {\n playerId = 'fullscreen';\n }\n if (this._players[playerId]) {\n await this._players[playerId].videoEl.play();\n return Promise.resolve({ method: 'play', result: true, value: true });\n }\n else {\n return Promise.resolve({\n method: 'play',\n result: false,\n message: 'Given PlayerId does not exist)',\n });\n }\n }\n /**\n * Pause the current video from a given playerId\n *\n * @param options\n */\n async pause(options) {\n if (options == null) {\n return Promise.resolve({\n result: false,\n method: 'pause',\n message: 'Must provide a capVideoPlayerIdOptions object',\n });\n }\n let playerId = options.playerId ? options.playerId : '';\n if (playerId == null || playerId.length === 0) {\n playerId = 'fullscreen';\n }\n if (this._players[playerId]) {\n if (this._players[playerId].isPlaying)\n await this._players[playerId].videoEl.pause();\n return Promise.resolve({ method: 'pause', result: true, value: true });\n }\n else {\n return Promise.resolve({\n method: 'pause',\n result: false,\n message: 'Given PlayerId does not exist)',\n });\n }\n }\n /**\n * Get the duration of the current video from a given playerId\n *\n * @param options\n */\n async getDuration(options) {\n if (options == null) {\n return Promise.resolve({\n result: false,\n method: 'getDuration',\n message: 'Must provide a capVideoPlayerIdOptions object',\n });\n }\n let playerId = options.playerId ? options.playerId : '';\n if (playerId == null || playerId.length === 0) {\n playerId = 'fullscreen';\n }\n if (this._players[playerId]) {\n const duration = this._players[playerId].videoEl.duration;\n return Promise.resolve({\n method: 'getDuration',\n result: true,\n value: duration,\n });\n }\n else {\n return Promise.resolve({\n method: 'getDuration',\n result: false,\n message: 'Given PlayerId does not exist)',\n });\n }\n }\n /**\n * Set the rate of the current video from a given playerId\n *\n * @param options\n */\n async setRate(options) {\n if (options == null) {\n return Promise.resolve({\n result: false,\n method: 'setRate',\n message: 'Must provide a capVideoRateOptions object',\n });\n }\n let playerId = options.playerId ? options.playerId : '';\n if (playerId == null || playerId.length === 0) {\n playerId = 'fullscreen';\n }\n const rateList = [0.25, 0.5, 0.75, 1.0, 2.0, 4.0];\n const rate = options.rate && rateList.includes(options.rate) ? options.rate : 1.0;\n if (this._players[playerId]) {\n this._players[playerId].videoEl.playbackRate = rate;\n return Promise.resolve({\n method: 'setRate',\n result: true,\n value: rate,\n });\n }\n else {\n return Promise.resolve({\n method: 'setRate',\n result: false,\n message: 'Given PlayerId does not exist)',\n });\n }\n }\n /**\n * Get the volume of the current video from a given playerId\n *\n * @param options\n */\n async getRate(options) {\n if (options == null) {\n return Promise.resolve({\n result: false,\n method: 'getRate',\n message: 'Must provide a capVideoPlayerIdOptions object',\n });\n }\n let playerId = options.playerId ? options.playerId : '';\n if (playerId == null || playerId.length === 0) {\n playerId = 'fullscreen';\n }\n if (this._players[playerId]) {\n const rate = this._players[playerId].videoEl.playbackRate;\n return Promise.resolve({\n method: 'getRate',\n result: true,\n value: rate,\n });\n }\n else {\n return Promise.resolve({\n method: 'getRate',\n result: false,\n message: 'Given PlayerId does not exist)',\n });\n }\n }\n /**\n * Set the volume of the current video from a given playerId\n *\n * @param options\n */\n async setVolume(options) {\n if (options == null) {\n return Promise.resolve({\n result: false,\n method: 'setVolume',\n message: 'Must provide a capVideoVolumeOptions object',\n });\n }\n let playerId = options.playerId ? options.playerId : '';\n if (playerId == null || playerId.length === 0) {\n playerId = 'fullscreen';\n }\n const volume = options.volume ? options.volume : 0.5;\n if (this._players[playerId]) {\n this._players[playerId].videoEl.volume = volume;\n return Promise.resolve({\n method: 'setVolume',\n result: true,\n value: volume,\n });\n }\n else {\n return Promise.resolve({\n method: 'setVolume',\n result: false,\n message: 'Given PlayerId does not exist)',\n });\n }\n }\n /**\n * Get the volume of the current video from a given playerId\n *\n * @param options\n */\n async getVolume(options) {\n if (options == null) {\n return Promise.resolve({\n result: false,\n method: 'getVolume',\n message: 'Must provide a capVideoPlayerIdOptions object',\n });\n }\n let playerId = options.playerId ? options.playerId : '';\n if (playerId == null || playerId.length === 0) {\n playerId = 'fullscreen';\n }\n if (this._players[playerId]) {\n const volume = this._players[playerId].videoEl.volume;\n return Promise.resolve({\n method: 'getVolume',\n result: true,\n value: volume,\n });\n }\n else {\n return Promise.resolve({\n method: 'getVolume',\n result: false,\n message: 'Given PlayerId does not exist)',\n });\n }\n }\n /**\n * Set the muted property of the current video from a given playerId\n *\n * @param options\n */\n async setMuted(options) {\n if (options == null) {\n return Promise.resolve({\n result: false,\n method: 'setMuted',\n message: 'Must provide a capVideoMutedOptions object',\n });\n }\n let playerId = options.playerId ? options.playerId : '';\n if (playerId == null || playerId.length === 0) {\n playerId = 'fullscreen';\n }\n const muted = options.muted ? options.muted : false;\n if (this._players[playerId]) {\n this._players[playerId].videoEl.muted = muted;\n return Promise.resolve({\n method: 'setMuted',\n result: true,\n value: muted,\n });\n }\n else {\n return Promise.resolve({\n method: 'setMuted',\n result: false,\n message: 'Given PlayerId does not exist)',\n });\n }\n }\n /**\n * Get the muted property of the current video from a given playerId\n *\n * @param options\n */\n async getMuted(options) {\n if (options == null) {\n return Promise.resolve({\n result: false,\n method: 'getMuted',\n message: 'Must provide a capVideoPlayerIdOptions object',\n });\n }\n let playerId = options.playerId ? options.playerId : '';\n if (playerId == null || playerId.length === 0) {\n playerId = 'fullscreen';\n }\n if (this._players[playerId]) {\n const muted = this._players[playerId].videoEl.muted;\n return Promise.resolve({\n method: 'getMuted',\n result: true,\n value: muted,\n });\n }\n else {\n return Promise.resolve({\n method: 'getMuted',\n result: false,\n message: 'Given PlayerId does not exist)',\n });\n }\n }\n /**\n * Set the current time of the current video from a given playerId\n *\n * @param options\n */\n async setCurrentTime(options) {\n if (options == null) {\n return Promise.resolve({\n result: false,\n method: 'setCurrentTime',\n message: 'Must provide a capVideoTimeOptions object',\n });\n }\n let playerId = options.playerId ? options.playerId : '';\n if (playerId == null || playerId.length === 0) {\n playerId = 'fullscreen';\n }\n let seekTime = options.seektime ? options.seektime : 0;\n if (this._players[playerId]) {\n const duration = this._players[playerId].videoEl.duration;\n seekTime = seekTime <= duration && seekTime >= 0 ? seekTime : duration / 2;\n this._players[playerId].videoEl.currentTime = seekTime;\n return Promise.resolve({\n method: 'setCurrentTime',\n result: true,\n value: seekTime,\n });\n }\n else {\n return Promise.resolve({\n method: 'setCurrentTime',\n result: false,\n message: 'Given PlayerId does not exist)',\n });\n }\n }\n /**\n * Get the current time of the current video from a given playerId\n *\n * @param options\n */\n async getCurrentTime(options) {\n if (options == null) {\n return Promise.resolve({\n result: false,\n method: 'getCurrentTime',\n message: 'Must provide a capVideoPlayerIdOptions object',\n });\n }\n let playerId = options.playerId ? options.playerId : '';\n if (playerId == null || playerId.length === 0) {\n playerId = 'fullscreen';\n }\n if (this._players[playerId]) {\n const seekTime = this._players[playerId].videoEl.currentTime;\n return Promise.resolve({\n method: 'getCurrentTime',\n result: true,\n value: seekTime,\n });\n }\n else {\n return Promise.resolve({\n method: 'getCurrentTime',\n result: false,\n message: 'Given PlayerId does not exist)',\n });\n }\n }\n /**\n * Get the current time of the current video from a given playerId\n *\n */\n async stopAllPlayers() {\n for (const i in this._players) {\n if (this._players[i].pipMode) {\n const doc = document;\n if (doc.pictureInPictureElement) {\n await doc.exitPictureInPicture();\n }\n }\n if (!this._players[i].videoEl.paused)\n this._players[i].videoEl.pause();\n }\n return Promise.resolve({\n method: 'stopAllPlayers',\n result: true,\n value: true,\n });\n }\n /**\n * Show controller\n *\n */\n async showController() {\n return Promise.resolve({\n method: 'showController',\n result: true,\n value: true,\n });\n }\n /**\n * isControllerIsFullyVisible\n *\n */\n async isControllerIsFullyVisible() {\n return Promise.resolve({\n method: 'isControllerIsFullyVisible',\n result: true,\n value: true,\n });\n }\n /**\n * Exit the current player\n *\n */\n async exitPlayer() {\n return Promise.resolve({\n method: 'exitPlayer',\n result: true,\n value: true,\n });\n }\n checkSize(options) {\n const playerSize = {\n width: options.width ? options.width : 320,\n height: options.height ? options.height : 180,\n };\n const ratio = playerSize.height / playerSize.width;\n if (playerSize.width > window.innerWidth) {\n playerSize.width = window.innerWidth;\n playerSize.height = Math.floor(playerSize.width * ratio);\n }\n if (playerSize.height > window.innerHeight) {\n playerSize.height = window.innerHeight;\n playerSize.width = Math.floor(playerSize.height / ratio);\n }\n return playerSize;\n }\n async _initializeVideoPlayer(url, playerId, mode, rate, exitOnEnd, loopOnEnd, componentTag, playerSize) {\n const videoURL = url ? (url.indexOf('%2F') == -1 ? encodeURI(url) : url) : null;\n if (videoURL === null)\n return Promise.resolve(false);\n this.videoContainer = await this._getContainerElement(playerId, componentTag);\n if (this.videoContainer === null)\n return Promise.resolve({\n method: 'initPlayer',\n result: false,\n message: 'componentTag or divContainerElement must be provided',\n });\n if (mode === 'embedded' && playerSize == null)\n return Promise.resolve({\n method: 'initPlayer',\n result: false,\n message: 'playerSize must be defined in embedded mode',\n });\n if (mode === 'embedded') {\n this._players[playerId] = new VideoPlayer('embedded', videoURL, playerId, rate, exitOnEnd, loopOnEnd, this.videoContainer, 2, playerSize.width, playerSize.height);\n await this._players[playerId].initialize();\n }\n else if (mode === 'fullscreen') {\n this._players['fullscreen'] = new VideoPlayer('fullscreen', videoURL, 'fullscreen', rate, exitOnEnd, loopOnEnd, this.videoContainer, 99995);\n await this._players['fullscreen'].initialize();\n }\n else {\n return Promise.resolve({\n method: 'initPlayer',\n result: false,\n message: 'mode not supported',\n });\n }\n return Promise.resolve({ method: 'initPlayer', result: true, value: true });\n }\n async _getContainerElement(playerId, componentTag) {\n const videoContainer = document.createElement('div');\n videoContainer.id = `vc_${playerId}`;\n if (componentTag != null && componentTag.length > 0) {\n const cmpTagEl = document.querySelector(`${componentTag}`);\n if (cmpTagEl === null)\n return Promise.resolve(null);\n let container = null;\n const shadowRoot = cmpTagEl.shadowRoot ? cmpTagEl.shadowRoot : null;\n if (shadowRoot != null) {\n container = shadowRoot.querySelector(`[id='${playerId}']`);\n }\n else {\n container = cmpTagEl.querySelector(`[id='${playerId}']`);\n }\n if (container != null)\n container.appendChild(videoContainer);\n return Promise.resolve(videoContainer);\n }\n else {\n return Promise.resolve(null);\n }\n }\n handlePlayerPlay(data) {\n this.notifyListeners('jeepCapVideoPlayerPlay', data);\n }\n handlePlayerPause(data) {\n this.notifyListeners('jeepCapVideoPlayerPause', data);\n }\n handlePlayerEnded(data) {\n var _a;\n if (this.mode === 'fullscreen') {\n (_a = this.videoContainer) === null || _a === void 0 ? void 0 : _a.remove();\n }\n this.removeListeners();\n this.notifyListeners('jeepCapVideoPlayerEnded', data);\n }\n handlePlayerExit() {\n var _a;\n if (this.mode === 'fullscreen') {\n (_a = this.videoContainer) === null || _a === void 0 ? void 0 : _a.remove();\n }\n const retData = { dismiss: true };\n this.removeListeners();\n this.notifyListeners('jeepCapVideoPlayerExit', retData);\n }\n handlePlayerReady(data) {\n this.notifyListeners('jeepCapVideoPlayerReady', data);\n }\n addListeners() {\n document.addEventListener('videoPlayerPlay', (ev) => {\n this.handlePlayerPlay(ev.detail);\n }, false);\n document.addEventListener('videoPlayerPause', (ev) => {\n this.handlePlayerPause(ev.detail);\n }, false);\n document.addEventListener('videoPlayerEnded', (ev) => {\n this.handlePlayerEnded(ev.detail);\n }, false);\n document.addEventListener('videoPlayerReady', (ev) => {\n this.handlePlayerReady(ev.detail);\n }, false);\n document.addEventListener('videoPlayerExit', () => {\n this.handlePlayerExit();\n }, false);\n }\n removeListeners() {\n document.removeEventListener('videoPlayerPlay', (ev) => {\n this.handlePlayerPlay(ev.detail);\n }, false);\n document.removeEventListener('videoPlayerPause', (ev) => {\n this.handlePlayerPause(ev.detail);\n }, false);\n document.removeEventListener('videoPlayerEnded', (ev) => {\n this.handlePlayerEnded(ev.detail);\n }, false);\n document.removeEventListener('videoPlayerReady', (ev) => {\n this.handlePlayerReady(ev.detail);\n }, false);\n document.removeEventListener('videoPlayerExit', () => {\n this.handlePlayerExit();\n }, false);\n }\n async getPluginVersion() {\n return { version: 'web' };\n }\n}\n//# sourceMappingURL=web.js.map"],"names":["VideoPlayer","registerPlugin","WebPlugin"],"mappings":"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"}
@@ -7,10 +7,12 @@ import Capacitor
7
7
  */
8
8
  @objc(VideoPlayerPlugin)
9
9
  public class VideoPlayerPlugin: CAPPlugin, CAPBridgedPlugin {
10
+ private let PLUGIN_VERSION: String = "7.1.1"
10
11
  public let identifier = "VideoPlayerPlugin"
11
12
  public let jsName = "VideoPlayer"
12
13
  public let pluginMethods: [CAPPluginMethod] = [
13
- CAPPluginMethod(name: "echo", returnType: CAPPluginReturnPromise)
14
+ CAPPluginMethod(name: "echo", returnType: CAPPluginReturnPromise),
15
+ CAPPluginMethod(name: "getPluginVersion", returnType: CAPPluginReturnPromise)
14
16
  ]
15
17
  private let implementation = VideoPlayer()
16
18
 
@@ -20,4 +22,9 @@ public class VideoPlayerPlugin: CAPPlugin, CAPBridgedPlugin {
20
22
  "value": implementation.echo(value)
21
23
  ])
22
24
  }
25
+
26
+ @objc func getPluginVersion(_ call: CAPPluginCall) {
27
+ call.resolve(["version": self.PLUGIN_VERSION])
28
+ }
29
+
23
30
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@capgo/capacitor-video-player",
3
- "version": "7.0.7",
3
+ "version": "7.1.1",
4
4
  "description": "Capacitor plugin to play video in native player",
5
5
  "main": "dist/plugin.cjs.js",
6
6
  "module": "dist/esm/index.js",