@capgo/capacitor-video-player 8.0.19 → 8.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.
@@ -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 /**\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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"}
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 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(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 /**\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 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 }\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 && this._players[playerId].videoEl)\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 var _a, _b;\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 = (_b = (_a = this._players[playerId].videoEl) === null || _a === void 0 ? void 0 : _a.duration) !== null && _b !== void 0 ? _b : 0;\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 if (this._players[playerId].videoEl)\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 var _a, _b;\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 = (_b = (_a = this._players[playerId].videoEl) === null || _a === void 0 ? void 0 : _a.playbackRate) !== null && _b !== void 0 ? _b : 1.0;\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 if (this._players[playerId].videoEl)\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 var _a, _b;\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 = (_b = (_a = this._players[playerId].videoEl) === null || _a === void 0 ? void 0 : _a.volume) !== null && _b !== void 0 ? _b : 1.0;\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 if (this._players[playerId].videoEl)\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 var _a, _b;\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 = (_b = (_a = this._players[playerId].videoEl) === null || _a === void 0 ? void 0 : _a.muted) !== null && _b !== void 0 ? _b : false;\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 var _a, _b;\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 = (_b = (_a = this._players[playerId].videoEl) === null || _a === void 0 ? void 0 : _a.duration) !== null && _b !== void 0 ? _b : 0;\n seekTime = seekTime <= duration && seekTime >= 0 ? seekTime : duration / 2;\n if (this._players[playerId].videoEl)\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 var _a, _b;\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 = (_b = (_a = this._players[playerId].videoEl) === null || _a === void 0 ? void 0 : _a.currentTime) !== null && _b !== void 0 ? _b : 0;\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 && !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
@@ -256,20 +256,22 @@ var capacitorVideoPlayer = (function (exports, core, Hls) {
256
256
  _getVideoType() {
257
257
  const sUrl = this._url ? this._url : '';
258
258
  if (sUrl != null && sUrl.length > 0) {
259
- Object.entries(videoTypes).forEach(([extension, mimeType]) => {
259
+ for (const [extension, mimeType] of Object.entries(videoTypes)) {
260
260
  // we search for dot + extension (e.g. `.mp4`) for URLs that have the extension in the filename
261
261
  // e.g. https://vimeo.com/?file=my-video.mp4
262
- const hasDotExtension = sUrl.match(new RegExp(`.(${extension})`, 'i'));
262
+ const hasDotExtension = sUrl.match(new RegExp(`\\.(${extension})(?=[?&#]|$)`, 'i'));
263
263
  if (hasDotExtension) {
264
264
  return (this._videoType = mimeType);
265
265
  }
266
+ }
267
+ for (const [extension, mimeType] of Object.entries(videoTypes)) {
266
268
  // we search for the extension (e.g. `m3u8`) for URLs that might have the extension as a query parameter
267
269
  // e.g. https://youtube.com/?v=7894289374&type=m3u8
268
270
  const hasExtensionInUrl = sUrl.match(new RegExp(`(${extension})`, 'i'));
269
271
  if (hasExtensionInUrl) {
270
272
  return (this._videoType = mimeType);
271
273
  }
272
- });
274
+ }
273
275
  // we check for not supported extensions for URLs that have the extension in the filename
274
276
  // e.g. https://vimeo.com/?file=not-supported-extension-video.mkv
275
277
  const hasNotSupportedDotExtension = sUrl.match(/\.(.*)/i);
@@ -278,7 +280,7 @@ var capacitorVideoPlayer = (function (exports, core, Hls) {
278
280
  }
279
281
  // we check for not supported extensions for URLs that might have the extension as a query parameter
280
282
  // e.g. https://youtube.com/?v=3982748927&filetype=mkv
281
- const hasNotSupportedExtensionInUrl = sUrl.match(new RegExp(`(${possibleQueryParameterExtensions.join('|')})=+(.*)&?(?=&|$))`, 'i'));
283
+ const hasNotSupportedExtensionInUrl = sUrl.match(new RegExp(`(${possibleQueryParameterExtensions.join('|')})=+(.*)&?(?=&|$)`, 'i'));
282
284
  if (hasNotSupportedExtensionInUrl) {
283
285
  return (this._videoType = null);
284
286
  }
@@ -471,6 +473,13 @@ var capacitorVideoPlayer = (function (exports, core, Hls) {
471
473
  playerId = 'fullscreen';
472
474
  }
473
475
  if (this._players[playerId]) {
476
+ if (!this._players[playerId].videoEl) {
477
+ return Promise.resolve({
478
+ method: 'play',
479
+ result: false,
480
+ message: 'Video element is not initialized for given PlayerId',
481
+ });
482
+ }
474
483
  await this._players[playerId].videoEl.play();
475
484
  return Promise.resolve({ method: 'play', result: true, value: true });
476
485
  }
@@ -500,7 +509,7 @@ var capacitorVideoPlayer = (function (exports, core, Hls) {
500
509
  playerId = 'fullscreen';
501
510
  }
502
511
  if (this._players[playerId]) {
503
- if (this._players[playerId].isPlaying)
512
+ if (this._players[playerId].isPlaying && this._players[playerId].videoEl)
504
513
  await this._players[playerId].videoEl.pause();
505
514
  return Promise.resolve({ method: 'pause', result: true, value: true });
506
515
  }
@@ -518,6 +527,7 @@ var capacitorVideoPlayer = (function (exports, core, Hls) {
518
527
  * @param options
519
528
  */
520
529
  async getDuration(options) {
530
+ var _a, _b;
521
531
  if (options == null) {
522
532
  return Promise.resolve({
523
533
  result: false,
@@ -530,7 +540,7 @@ var capacitorVideoPlayer = (function (exports, core, Hls) {
530
540
  playerId = 'fullscreen';
531
541
  }
532
542
  if (this._players[playerId]) {
533
- const duration = this._players[playerId].videoEl.duration;
543
+ const duration = (_b = (_a = this._players[playerId].videoEl) === null || _a === void 0 ? void 0 : _a.duration) !== null && _b !== void 0 ? _b : 0;
534
544
  return Promise.resolve({
535
545
  method: 'getDuration',
536
546
  result: true,
@@ -565,7 +575,8 @@ var capacitorVideoPlayer = (function (exports, core, Hls) {
565
575
  const rateList = [0.25, 0.5, 0.75, 1.0, 2.0, 4.0];
566
576
  const rate = options.rate && rateList.includes(options.rate) ? options.rate : 1.0;
567
577
  if (this._players[playerId]) {
568
- this._players[playerId].videoEl.playbackRate = rate;
578
+ if (this._players[playerId].videoEl)
579
+ this._players[playerId].videoEl.playbackRate = rate;
569
580
  return Promise.resolve({
570
581
  method: 'setRate',
571
582
  result: true,
@@ -586,6 +597,7 @@ var capacitorVideoPlayer = (function (exports, core, Hls) {
586
597
  * @param options
587
598
  */
588
599
  async getRate(options) {
600
+ var _a, _b;
589
601
  if (options == null) {
590
602
  return Promise.resolve({
591
603
  result: false,
@@ -598,7 +610,7 @@ var capacitorVideoPlayer = (function (exports, core, Hls) {
598
610
  playerId = 'fullscreen';
599
611
  }
600
612
  if (this._players[playerId]) {
601
- const rate = this._players[playerId].videoEl.playbackRate;
613
+ const rate = (_b = (_a = this._players[playerId].videoEl) === null || _a === void 0 ? void 0 : _a.playbackRate) !== null && _b !== void 0 ? _b : 1.0;
602
614
  return Promise.resolve({
603
615
  method: 'getRate',
604
616
  result: true,
@@ -632,7 +644,8 @@ var capacitorVideoPlayer = (function (exports, core, Hls) {
632
644
  }
633
645
  const volume = options.volume ? options.volume : 0.5;
634
646
  if (this._players[playerId]) {
635
- this._players[playerId].videoEl.volume = volume;
647
+ if (this._players[playerId].videoEl)
648
+ this._players[playerId].videoEl.volume = volume;
636
649
  return Promise.resolve({
637
650
  method: 'setVolume',
638
651
  result: true,
@@ -653,6 +666,7 @@ var capacitorVideoPlayer = (function (exports, core, Hls) {
653
666
  * @param options
654
667
  */
655
668
  async getVolume(options) {
669
+ var _a, _b;
656
670
  if (options == null) {
657
671
  return Promise.resolve({
658
672
  result: false,
@@ -665,7 +679,7 @@ var capacitorVideoPlayer = (function (exports, core, Hls) {
665
679
  playerId = 'fullscreen';
666
680
  }
667
681
  if (this._players[playerId]) {
668
- const volume = this._players[playerId].videoEl.volume;
682
+ const volume = (_b = (_a = this._players[playerId].videoEl) === null || _a === void 0 ? void 0 : _a.volume) !== null && _b !== void 0 ? _b : 1.0;
669
683
  return Promise.resolve({
670
684
  method: 'getVolume',
671
685
  result: true,
@@ -699,7 +713,8 @@ var capacitorVideoPlayer = (function (exports, core, Hls) {
699
713
  }
700
714
  const muted = options.muted ? options.muted : false;
701
715
  if (this._players[playerId]) {
702
- this._players[playerId].videoEl.muted = muted;
716
+ if (this._players[playerId].videoEl)
717
+ this._players[playerId].videoEl.muted = muted;
703
718
  return Promise.resolve({
704
719
  method: 'setMuted',
705
720
  result: true,
@@ -720,6 +735,7 @@ var capacitorVideoPlayer = (function (exports, core, Hls) {
720
735
  * @param options
721
736
  */
722
737
  async getMuted(options) {
738
+ var _a, _b;
723
739
  if (options == null) {
724
740
  return Promise.resolve({
725
741
  result: false,
@@ -732,7 +748,7 @@ var capacitorVideoPlayer = (function (exports, core, Hls) {
732
748
  playerId = 'fullscreen';
733
749
  }
734
750
  if (this._players[playerId]) {
735
- const muted = this._players[playerId].videoEl.muted;
751
+ const muted = (_b = (_a = this._players[playerId].videoEl) === null || _a === void 0 ? void 0 : _a.muted) !== null && _b !== void 0 ? _b : false;
736
752
  return Promise.resolve({
737
753
  method: 'getMuted',
738
754
  result: true,
@@ -753,6 +769,7 @@ var capacitorVideoPlayer = (function (exports, core, Hls) {
753
769
  * @param options
754
770
  */
755
771
  async setCurrentTime(options) {
772
+ var _a, _b;
756
773
  if (options == null) {
757
774
  return Promise.resolve({
758
775
  result: false,
@@ -766,9 +783,10 @@ var capacitorVideoPlayer = (function (exports, core, Hls) {
766
783
  }
767
784
  let seekTime = options.seektime ? options.seektime : 0;
768
785
  if (this._players[playerId]) {
769
- const duration = this._players[playerId].videoEl.duration;
786
+ const duration = (_b = (_a = this._players[playerId].videoEl) === null || _a === void 0 ? void 0 : _a.duration) !== null && _b !== void 0 ? _b : 0;
770
787
  seekTime = seekTime <= duration && seekTime >= 0 ? seekTime : duration / 2;
771
- this._players[playerId].videoEl.currentTime = seekTime;
788
+ if (this._players[playerId].videoEl)
789
+ this._players[playerId].videoEl.currentTime = seekTime;
772
790
  return Promise.resolve({
773
791
  method: 'setCurrentTime',
774
792
  result: true,
@@ -789,6 +807,7 @@ var capacitorVideoPlayer = (function (exports, core, Hls) {
789
807
  * @param options
790
808
  */
791
809
  async getCurrentTime(options) {
810
+ var _a, _b;
792
811
  if (options == null) {
793
812
  return Promise.resolve({
794
813
  result: false,
@@ -801,7 +820,7 @@ var capacitorVideoPlayer = (function (exports, core, Hls) {
801
820
  playerId = 'fullscreen';
802
821
  }
803
822
  if (this._players[playerId]) {
804
- const seekTime = this._players[playerId].videoEl.currentTime;
823
+ const seekTime = (_b = (_a = this._players[playerId].videoEl) === null || _a === void 0 ? void 0 : _a.currentTime) !== null && _b !== void 0 ? _b : 0;
805
824
  return Promise.resolve({
806
825
  method: 'getCurrentTime',
807
826
  result: true,
@@ -828,7 +847,7 @@ var capacitorVideoPlayer = (function (exports, core, Hls) {
828
847
  await doc.exitPictureInPicture();
829
848
  }
830
849
  }
831
- if (!this._players[i].videoEl.paused)
850
+ if (this._players[i].videoEl && !this._players[i].videoEl.paused)
832
851
  this._players[i].videoEl.pause();
833
852
  }
834
853
  return Promise.resolve({