@capgo/capacitor-video-player 8.1.23 → 8.1.25

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.
@@ -3,6 +3,7 @@ import { videoTypes, possibleQueryParameterExtensions } from './video-types';
3
3
  export class VideoPlayer {
4
4
  constructor(mode, url, playerId, rate, exitOnEnd, loopOnEnd, container, zIndex, width, height) {
5
5
  this.pipMode = false;
6
+ this.isHidden = false;
6
7
  this._videoType = null;
7
8
  this._videoContainer = null;
8
9
  this._firstReadyToPlay = true;
@@ -10,6 +11,7 @@ export class VideoPlayer {
10
11
  this._videoRate = 1.0;
11
12
  this._videoExitOnEnd = true;
12
13
  this._videoLoopOnEnd = false;
14
+ this._previousContainerDisplay = null;
13
15
  this._url = url;
14
16
  this._container = container;
15
17
  this._mode = mode;
@@ -80,6 +82,33 @@ export class VideoPlayer {
80
82
  }
81
83
  return;
82
84
  }
85
+ hide() {
86
+ var _a, _b, _c, _d;
87
+ if (this.isHidden)
88
+ return;
89
+ this.isHidden = true;
90
+ if (this._mode === 'fullscreen') {
91
+ this._closeFullscreen();
92
+ }
93
+ if (this._previousContainerDisplay == null) {
94
+ this._previousContainerDisplay = (_c = (_b = (_a = this._container) === null || _a === void 0 ? void 0 : _a.style) === null || _b === void 0 ? void 0 : _b.display) !== null && _c !== void 0 ? _c : '';
95
+ }
96
+ if ((_d = this._container) === null || _d === void 0 ? void 0 : _d.style) {
97
+ this._container.style.display = 'none';
98
+ }
99
+ }
100
+ show() {
101
+ var _a, _b;
102
+ if (!this.isHidden)
103
+ return;
104
+ this.isHidden = false;
105
+ if ((_a = this._container) === null || _a === void 0 ? void 0 : _a.style) {
106
+ this._container.style.display = (_b = this._previousContainerDisplay) !== null && _b !== void 0 ? _b : 'flex';
107
+ }
108
+ if (this._mode === 'fullscreen') {
109
+ void this._goFullscreen();
110
+ }
111
+ }
83
112
  async createVideoElement(width, height) {
84
113
  this.videoEl = document.createElement('video');
85
114
  this.videoEl.controls = true;
@@ -1 +1 @@
1
- {"version":3,"file":"videoplayer.js","sourceRoot":"","sources":["../../../src/web-utils/videoplayer.ts"],"names":[],"mappings":"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","sourcesContent":["import Hls from 'hls.js';\n\nimport type { videoMimeType } from './video-types';\nimport { videoTypes, possibleQueryParameterExtensions } from './video-types';\n\nexport class VideoPlayer {\n public videoEl: HTMLVideoElement | undefined;\n public pipMode = false;\n public pipWindow: Window | undefined;\n public isPlaying: boolean | undefined;\n\n private _url: string;\n private _playerId: string;\n private _container: any;\n private _mode: string;\n private _width: number;\n private _height: number;\n private _zIndex: number;\n private _initial: any;\n private _videoType: videoMimeType | null = null;\n private _videoContainer: any = null;\n private _firstReadyToPlay = true;\n private _isEnded = false;\n private _videoRate = 1.0;\n private _videoExitOnEnd = true;\n private _videoLoopOnEnd = false;\n\n constructor(\n mode: string,\n url: string,\n playerId: string,\n rate: number,\n exitOnEnd: boolean,\n loopOnEnd: boolean,\n container: any,\n zIndex: number,\n width?: number,\n height?: number,\n ) {\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\n public async initialize(): Promise<void> {\n // get the video type\n const urlVideoType: videoMimeType | null = 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: number =\n this._mode === 'fullscreen' ? window.innerWidth /*this._container.offsetWidth*/ : this._width;\n const height: number =\n this._mode === 'fullscreen' ? window.innerHeight /*this._container.offsetHeight*/ : this._height;\n const xmlns = 'http://www.w3.org/2000/svg';\n\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\n const heightVideo: number = (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 } else {\n this._createEvent('Exit', this._playerId, 'Url Error: type not supported');\n }\n return;\n }\n\n private async createVideoElement(width: number, height: number): Promise<boolean> {\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: boolean = 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 } 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') await this.videoEl.play();\n this._firstReadyToPlay = false;\n }\n }\n };\n this.videoEl.onplay = () => {\n this.isPlaying = true;\n if (this._firstReadyToPlay) 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: HTMLButtonElement = 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\n this._videoContainer.onmousemove = async () => {\n this._initial = await this._doHide(exitEl, 3000);\n };\n\n exitEl.onclick = () => {\n this._createEvent('Exit', this._playerId);\n };\n exitEl.ontouchstart = () => {\n this._createEvent('Exit', this._playerId);\n };\n\n this._videoContainer.appendChild(exitEl);\n this._initial = await this._doHide(exitEl, 3000);\n\n this._goFullscreen();\n }\n }\n return isSet;\n }\n\n private async _goFullscreen(): Promise<void> {\n if (this._container.mozRequestFullScreen) {\n /* Firefox */\n this._container.mozRequestFullScreen();\n } else if (this._container.webkitRequestFullscreen) {\n /* Chrome, Safari & Opera */\n this._container.webkitRequestFullscreen();\n } else if (this._container.msRequestFullscreen) {\n /* IE/Edge */\n this._container.msRequestFullscreen();\n } else if (this._container.requestFullscreen) {\n this._container.requestFullscreen();\n }\n return;\n }\n\n private async _setPlayer(): Promise<boolean> {\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 } else {\n resolve(false);\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') this.videoEl.muted = true;\n resolve(true);\n } else {\n // Not Supported\n resolve(false);\n }\n this.videoEl.addEventListener('enterpictureinpicture', (event: any) => {\n this.pipWindow = event.pictureInPictureWindow;\n this.pipMode = true;\n this._closeFullscreen();\n });\n\n this.videoEl.addEventListener('leavepictureinpicture', () => {\n this.pipMode = false;\n if (!this._isEnded) {\n this._goFullscreen();\n if (this.videoEl != null) this.videoEl.play();\n }\n });\n } else {\n resolve(false);\n }\n });\n }\n\n private _getVideoType(): videoMimeType | null {\n const sUrl: string = this._url ? this._url : '';\n if (sUrl != null && sUrl.length > 0) {\n for (const [extension, mimeType] of Object.entries(videoTypes)) {\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 }\n for (const [extension, mimeType] of Object.entries(videoTypes)) {\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(\n new RegExp(`(${possibleQueryParameterExtensions.join('|')})=+(.*)&?(?=&|$)`, 'i'),\n );\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\n private async _doHide(exitEl: HTMLButtonElement, duration: number) {\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 private _createEvent(ev: string, playerId: string, msg?: string) {\n const message = msg ? msg : null;\n let event: CustomEvent;\n if (message != null) {\n event = new CustomEvent(`videoPlayer${ev}`, {\n detail: { fromPlayerId: playerId, message: message },\n });\n } else {\n const currentTime: number = 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 private _closeFullscreen() {\n const mydoc: any = document;\n const isInFullScreen: boolean =\n (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 } else if (mydoc.webkitExitFullscreen) {\n mydoc.webkitExitFullscreen();\n } else if (mydoc.msExitFullscreen) {\n mydoc.msExitFullscreen();\n } else if (mydoc.exitFullscreen) {\n mydoc.exitFullscreen();\n }\n }\n }\n}\n"]}
1
+ {"version":3,"file":"videoplayer.js","sourceRoot":"","sources":["../../../src/web-utils/videoplayer.ts"],"names":[],"mappings":"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","sourcesContent":["import Hls from 'hls.js';\n\nimport type { videoMimeType } from './video-types';\nimport { videoTypes, possibleQueryParameterExtensions } from './video-types';\n\nexport class VideoPlayer {\n public videoEl: HTMLVideoElement | undefined;\n public pipMode = false;\n public pipWindow: Window | undefined;\n public isPlaying: boolean | undefined;\n public isHidden = false;\n\n private _url: string;\n private _playerId: string;\n private _container: any;\n private _mode: string;\n private _width: number;\n private _height: number;\n private _zIndex: number;\n private _initial: any;\n private _videoType: videoMimeType | null = null;\n private _videoContainer: any = null;\n private _firstReadyToPlay = true;\n private _isEnded = false;\n private _videoRate = 1.0;\n private _videoExitOnEnd = true;\n private _videoLoopOnEnd = false;\n private _previousContainerDisplay: string | null = null;\n\n constructor(\n mode: string,\n url: string,\n playerId: string,\n rate: number,\n exitOnEnd: boolean,\n loopOnEnd: boolean,\n container: any,\n zIndex: number,\n width?: number,\n height?: number,\n ) {\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\n public async initialize(): Promise<void> {\n // get the video type\n const urlVideoType: videoMimeType | null = 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: number =\n this._mode === 'fullscreen' ? window.innerWidth /*this._container.offsetWidth*/ : this._width;\n const height: number =\n this._mode === 'fullscreen' ? window.innerHeight /*this._container.offsetHeight*/ : this._height;\n const xmlns = 'http://www.w3.org/2000/svg';\n\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\n const heightVideo: number = (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 } else {\n this._createEvent('Exit', this._playerId, 'Url Error: type not supported');\n }\n return;\n }\n\n public hide(): void {\n if (this.isHidden) return;\n this.isHidden = true;\n if (this._mode === 'fullscreen') {\n this._closeFullscreen();\n }\n if (this._previousContainerDisplay == null) {\n this._previousContainerDisplay = this._container?.style?.display ?? '';\n }\n if (this._container?.style) {\n this._container.style.display = 'none';\n }\n }\n\n public show(): void {\n if (!this.isHidden) return;\n this.isHidden = false;\n if (this._container?.style) {\n this._container.style.display = this._previousContainerDisplay ?? 'flex';\n }\n if (this._mode === 'fullscreen') {\n void this._goFullscreen();\n }\n }\n\n private async createVideoElement(width: number, height: number): Promise<boolean> {\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: boolean = 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 } 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') await this.videoEl.play();\n this._firstReadyToPlay = false;\n }\n }\n };\n this.videoEl.onplay = () => {\n this.isPlaying = true;\n if (this._firstReadyToPlay) 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: HTMLButtonElement = 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\n this._videoContainer.onmousemove = async () => {\n this._initial = await this._doHide(exitEl, 3000);\n };\n\n exitEl.onclick = () => {\n this._createEvent('Exit', this._playerId);\n };\n exitEl.ontouchstart = () => {\n this._createEvent('Exit', this._playerId);\n };\n\n this._videoContainer.appendChild(exitEl);\n this._initial = await this._doHide(exitEl, 3000);\n\n this._goFullscreen();\n }\n }\n return isSet;\n }\n\n private async _goFullscreen(): Promise<void> {\n if (this._container.mozRequestFullScreen) {\n /* Firefox */\n this._container.mozRequestFullScreen();\n } else if (this._container.webkitRequestFullscreen) {\n /* Chrome, Safari & Opera */\n this._container.webkitRequestFullscreen();\n } else if (this._container.msRequestFullscreen) {\n /* IE/Edge */\n this._container.msRequestFullscreen();\n } else if (this._container.requestFullscreen) {\n this._container.requestFullscreen();\n }\n return;\n }\n\n private async _setPlayer(): Promise<boolean> {\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 } else {\n resolve(false);\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') this.videoEl.muted = true;\n resolve(true);\n } else {\n // Not Supported\n resolve(false);\n }\n this.videoEl.addEventListener('enterpictureinpicture', (event: any) => {\n this.pipWindow = event.pictureInPictureWindow;\n this.pipMode = true;\n this._closeFullscreen();\n });\n\n this.videoEl.addEventListener('leavepictureinpicture', () => {\n this.pipMode = false;\n if (!this._isEnded) {\n this._goFullscreen();\n if (this.videoEl != null) this.videoEl.play();\n }\n });\n } else {\n resolve(false);\n }\n });\n }\n\n private _getVideoType(): videoMimeType | null {\n const sUrl: string = this._url ? this._url : '';\n if (sUrl != null && sUrl.length > 0) {\n for (const [extension, mimeType] of Object.entries(videoTypes)) {\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 }\n for (const [extension, mimeType] of Object.entries(videoTypes)) {\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(\n new RegExp(`(${possibleQueryParameterExtensions.join('|')})=+(.*)&?(?=&|$)`, 'i'),\n );\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\n private async _doHide(exitEl: HTMLButtonElement, duration: number) {\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 private _createEvent(ev: string, playerId: string, msg?: string) {\n const message = msg ? msg : null;\n let event: CustomEvent;\n if (message != null) {\n event = new CustomEvent(`videoPlayer${ev}`, {\n detail: { fromPlayerId: playerId, message: message },\n });\n } else {\n const currentTime: number = 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 private _closeFullscreen() {\n const mydoc: any = document;\n const isInFullScreen: boolean =\n (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 } else if (mydoc.webkitExitFullscreen) {\n mydoc.webkitExitFullscreen();\n } else if (mydoc.msExitFullscreen) {\n mydoc.msExitFullscreen();\n } else if (mydoc.exitFullscreen) {\n mydoc.exitFullscreen();\n }\n }\n }\n}\n"]}
package/dist/esm/web.d.ts CHANGED
@@ -107,6 +107,8 @@ export declare class VideoPlayerWeb extends WebPlugin implements VideoPlayerPlug
107
107
  *
108
108
  */
109
109
  exitPlayer(): Promise<capVideoPlayerResult>;
110
+ hidePlayer(): Promise<capVideoPlayerResult>;
111
+ showPlayer(): Promise<capVideoPlayerResult>;
110
112
  private checkSize;
111
113
  private _initializeVideoPlayer;
112
114
  private _getContainerElement;
package/dist/esm/web.js CHANGED
@@ -552,6 +552,42 @@ export class VideoPlayerWeb extends WebPlugin {
552
552
  value: true,
553
553
  });
554
554
  }
555
+ async hidePlayer() {
556
+ const playerId = this._players['fullscreen'] ? 'fullscreen' : Object.keys(this._players)[0];
557
+ if (!playerId || !this._players[playerId]) {
558
+ return Promise.resolve({
559
+ method: 'hidePlayer',
560
+ result: false,
561
+ message: 'No active player',
562
+ });
563
+ }
564
+ if (typeof this._players[playerId].hide === 'function') {
565
+ this._players[playerId].hide();
566
+ }
567
+ return Promise.resolve({
568
+ method: 'hidePlayer',
569
+ result: true,
570
+ value: true,
571
+ });
572
+ }
573
+ async showPlayer() {
574
+ const playerId = this._players['fullscreen'] ? 'fullscreen' : Object.keys(this._players)[0];
575
+ if (!playerId || !this._players[playerId]) {
576
+ return Promise.resolve({
577
+ method: 'showPlayer',
578
+ result: false,
579
+ message: 'No active player',
580
+ });
581
+ }
582
+ if (typeof this._players[playerId].show === 'function') {
583
+ this._players[playerId].show();
584
+ }
585
+ return Promise.resolve({
586
+ method: 'showPlayer',
587
+ result: true,
588
+ value: true,
589
+ });
590
+ }
555
591
  checkSize(options) {
556
592
  const playerSize = {
557
593
  width: options.width ? options.width : 320,
@@ -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 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 /**\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 if (!this._players[playerId].videoEl) {\n return Promise.resolve({\n method: 'play',\n result: false,\n message: 'Video element is not initialized for given PlayerId',\n });\n }\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 && this._players[playerId].videoEl)\n 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 ?? 0;\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 if (this._players[playerId].videoEl) 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 ?? 1.0;\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 if (this._players[playerId].videoEl) 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 ?? 1.0;\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 if (this._players[playerId].videoEl) 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 ?? false;\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 ?? 0;\n seekTime = seekTime <= duration && seekTime >= 0 ? seekTime : duration / 2;\n if (this._players[playerId].videoEl) 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 ?? 0;\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 && !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"]}
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 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 /**\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 if (!this._players[playerId].videoEl) {\n return Promise.resolve({\n method: 'play',\n result: false,\n message: 'Video element is not initialized for given PlayerId',\n });\n }\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 && this._players[playerId].videoEl)\n 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 ?? 0;\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 if (this._players[playerId].videoEl) 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 ?? 1.0;\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 if (this._players[playerId].videoEl) 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 ?? 1.0;\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 if (this._players[playerId].videoEl) 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 ?? false;\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 ?? 0;\n seekTime = seekTime <= duration && seekTime >= 0 ? seekTime : duration / 2;\n if (this._players[playerId].videoEl) 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 ?? 0;\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 && !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\n async hidePlayer(): Promise<capVideoPlayerResult> {\n const playerId = this._players['fullscreen'] ? 'fullscreen' : Object.keys(this._players)[0];\n if (!playerId || !this._players[playerId]) {\n return Promise.resolve({\n method: 'hidePlayer',\n result: false,\n message: 'No active player',\n });\n }\n if (typeof this._players[playerId].hide === 'function') {\n this._players[playerId].hide();\n }\n return Promise.resolve({\n method: 'hidePlayer',\n result: true,\n value: true,\n });\n }\n\n async showPlayer(): Promise<capVideoPlayerResult> {\n const playerId = this._players['fullscreen'] ? 'fullscreen' : Object.keys(this._players)[0];\n if (!playerId || !this._players[playerId]) {\n return Promise.resolve({\n method: 'showPlayer',\n result: false,\n message: 'No active player',\n });\n }\n if (typeof this._players[playerId].show === 'function') {\n this._players[playerId].show();\n }\n return Promise.resolve({\n method: 'showPlayer',\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"]}
@@ -19,6 +19,7 @@ const videoTypes = {
19
19
  class VideoPlayer {
20
20
  constructor(mode, url, playerId, rate, exitOnEnd, loopOnEnd, container, zIndex, width, height) {
21
21
  this.pipMode = false;
22
+ this.isHidden = false;
22
23
  this._videoType = null;
23
24
  this._videoContainer = null;
24
25
  this._firstReadyToPlay = true;
@@ -26,6 +27,7 @@ class VideoPlayer {
26
27
  this._videoRate = 1.0;
27
28
  this._videoExitOnEnd = true;
28
29
  this._videoLoopOnEnd = false;
30
+ this._previousContainerDisplay = null;
29
31
  this._url = url;
30
32
  this._container = container;
31
33
  this._mode = mode;
@@ -96,6 +98,33 @@ class VideoPlayer {
96
98
  }
97
99
  return;
98
100
  }
101
+ hide() {
102
+ var _a, _b, _c, _d;
103
+ if (this.isHidden)
104
+ return;
105
+ this.isHidden = true;
106
+ if (this._mode === 'fullscreen') {
107
+ this._closeFullscreen();
108
+ }
109
+ if (this._previousContainerDisplay == null) {
110
+ this._previousContainerDisplay = (_c = (_b = (_a = this._container) === null || _a === void 0 ? void 0 : _a.style) === null || _b === void 0 ? void 0 : _b.display) !== null && _c !== void 0 ? _c : '';
111
+ }
112
+ if ((_d = this._container) === null || _d === void 0 ? void 0 : _d.style) {
113
+ this._container.style.display = 'none';
114
+ }
115
+ }
116
+ show() {
117
+ var _a, _b;
118
+ if (!this.isHidden)
119
+ return;
120
+ this.isHidden = false;
121
+ if ((_a = this._container) === null || _a === void 0 ? void 0 : _a.style) {
122
+ this._container.style.display = (_b = this._previousContainerDisplay) !== null && _b !== void 0 ? _b : 'flex';
123
+ }
124
+ if (this._mode === 'fullscreen') {
125
+ void this._goFullscreen();
126
+ }
127
+ }
99
128
  async createVideoElement(width, height) {
100
129
  this.videoEl = document.createElement('video');
101
130
  this.videoEl.controls = true;
@@ -891,6 +920,42 @@ class VideoPlayerWeb extends core.WebPlugin {
891
920
  value: true,
892
921
  });
893
922
  }
923
+ async hidePlayer() {
924
+ const playerId = this._players['fullscreen'] ? 'fullscreen' : Object.keys(this._players)[0];
925
+ if (!playerId || !this._players[playerId]) {
926
+ return Promise.resolve({
927
+ method: 'hidePlayer',
928
+ result: false,
929
+ message: 'No active player',
930
+ });
931
+ }
932
+ if (typeof this._players[playerId].hide === 'function') {
933
+ this._players[playerId].hide();
934
+ }
935
+ return Promise.resolve({
936
+ method: 'hidePlayer',
937
+ result: true,
938
+ value: true,
939
+ });
940
+ }
941
+ async showPlayer() {
942
+ const playerId = this._players['fullscreen'] ? 'fullscreen' : Object.keys(this._players)[0];
943
+ if (!playerId || !this._players[playerId]) {
944
+ return Promise.resolve({
945
+ method: 'showPlayer',
946
+ result: false,
947
+ message: 'No active player',
948
+ });
949
+ }
950
+ if (typeof this._players[playerId].show === 'function') {
951
+ this._players[playerId].show();
952
+ }
953
+ return Promise.resolve({
954
+ method: 'showPlayer',
955
+ result: true,
956
+ value: true,
957
+ });
958
+ }
894
959
  checkSize(options) {
895
960
  const playerSize = {
896
961
  width: options.width ? options.width : 320,