{"version":3,"file":"video-worker.cjs","sources":["../src/utils/global.js","../src/utils/deferred.js","../src/defaults.js","../src/utils/extend.js","../src/video-worker.js"],"sourcesContent":["/* eslint-disable import/no-mutable-exports */\n/* eslint-disable no-restricted-globals */\nlet win;\n\nif (typeof window !== 'undefined') {\n  win = window;\n} else if (typeof global !== 'undefined') {\n  win = global;\n} else if (typeof self !== 'undefined') {\n  win = self;\n} else {\n  win = {};\n}\n\nexport default win;\n","// Deferred\n// thanks http://stackoverflow.com/questions/18096715/implement-deferred-object-without-using-jquery\nfunction Deferred() {\n  this.doneCallbacks = [];\n  this.failCallbacks = [];\n}\n\nDeferred.prototype = {\n  execute(list, args) {\n    let i = list.length;\n    // eslint-disable-next-line no-param-reassign\n    args = Array.prototype.slice.call(args);\n\n    while (i) {\n      i -= 1;\n      list[i].apply(null, args);\n    }\n  },\n  resolve(...args) {\n    this.execute(this.doneCallbacks, args);\n  },\n  reject(...args) {\n    this.execute(this.failCallbacks, args);\n  },\n  done(callback) {\n    this.doneCallbacks.push(callback);\n  },\n  fail(callback) {\n    this.failCallbacks.push(callback);\n  },\n};\n\nexport default Deferred;\n","export default {\n  autoplay: false,\n  loop: false,\n  mute: false,\n  volume: 100,\n  showControls: true,\n  accessibilityHidden: false,\n\n  // start / end video time in seconds\n  startTime: 0,\n  endTime: 0,\n};\n","/**\n * Extend like jQuery.extend\n *\n * @param {Object} out - output object.\n * @param {...any} args - additional objects to extend.\n *\n * @returns {Object}\n */\nexport default function extend(out, ...args) {\n  out = out || {};\n\n  Object.keys(args).forEach((i) => {\n    if (!args[i]) {\n      return;\n    }\n    Object.keys(args[i]).forEach((key) => {\n      out[key] = args[i][key];\n    });\n  });\n\n  return out;\n}\n","import global from './utils/global';\nimport Deferred from './utils/deferred';\nimport defaults from './defaults';\nimport extend from './utils/extend';\n\nlet ID = 0;\nlet YoutubeAPIadded = 0;\nlet VimeoAPIadded = 0;\nlet loadingYoutubePlayer = 0;\nlet loadingVimeoPlayer = 0;\nconst loadingYoutubeDefer = new Deferred();\nconst loadingVimeoDefer = new Deferred();\n\nclass VideoWorker {\n  constructor(url, options) {\n    const self = this;\n\n    self.url = url;\n\n    self.options_default = { ...defaults };\n\n    self.options = extend({}, self.options_default, options);\n\n    // check URL\n    self.videoID = self.parseURL(url);\n\n    // init\n    if (self.videoID) {\n      self.ID = ID;\n      ID += 1;\n      self.loadAPI();\n      self.init();\n    }\n  }\n\n  parseURL(url) {\n    // parse youtube ID\n    function getYoutubeID(ytUrl) {\n      // eslint-disable-next-line no-useless-escape\n      const regExp = /.*(?:youtu.be\\/|v\\/|u\\/\\w\\/|embed\\/|shorts\\/|watch\\?v=)([^#\\&\\?]*).*/;\n      const match = ytUrl.match(regExp);\n      return match && match[1].length === 11 ? match[1] : false;\n    }\n\n    // parse vimeo ID\n    function getVimeoID(vmUrl) {\n      // eslint-disable-next-line no-useless-escape\n      const regExp =\n        /https?:\\/\\/(?:www\\.|player\\.)?vimeo.com\\/(?:channels\\/(?:\\w+\\/)?|groups\\/([^/]*)\\/videos\\/|album\\/(\\d+)\\/video\\/|video\\/|)(\\d+)(?:$|\\/|\\?)/;\n      const match = vmUrl.match(regExp);\n      return match && match[3] ? match[3] : false;\n    }\n\n    // parse local string\n    function getLocalVideos(locUrl) {\n      // eslint-disable-next-line no-useless-escape\n      const videoFormats = locUrl.split(/,(?=mp4\\:|webm\\:|ogv\\:|ogg\\:)/);\n      const result = {};\n      let ready = 0;\n      videoFormats.forEach((val) => {\n        // eslint-disable-next-line no-useless-escape\n        const match = val.match(/^(mp4|webm|ogv|ogg)\\:(.*)/);\n        if (match && match[1] && match[2]) {\n          // eslint-disable-next-line prefer-destructuring\n          result[match[1] === 'ogv' ? 'ogg' : match[1]] = match[2];\n          ready = 1;\n        }\n      });\n      return ready ? result : false;\n    }\n\n    const Youtube = getYoutubeID(url);\n    const Vimeo = getVimeoID(url);\n    const Local = getLocalVideos(url);\n\n    if (Youtube) {\n      this.type = 'youtube';\n      return Youtube;\n    }\n\n    if (Vimeo) {\n      this.type = 'vimeo';\n      return Vimeo;\n    }\n\n    if (Local) {\n      this.type = 'local';\n      return Local;\n    }\n\n    return false;\n  }\n\n  isValid() {\n    return !!this.videoID;\n  }\n\n  // events\n  on(name, callback) {\n    this.userEventsList = this.userEventsList || [];\n\n    // add new callback in events list\n    (this.userEventsList[name] || (this.userEventsList[name] = [])).push(callback);\n  }\n\n  off(name, callback) {\n    if (!this.userEventsList || !this.userEventsList[name]) {\n      return;\n    }\n\n    if (!callback) {\n      delete this.userEventsList[name];\n    } else {\n      this.userEventsList[name].forEach((val, key) => {\n        if (val === callback) {\n          this.userEventsList[name][key] = false;\n        }\n      });\n    }\n  }\n\n  fire(name, ...args) {\n    if (this.userEventsList && typeof this.userEventsList[name] !== 'undefined') {\n      this.userEventsList[name].forEach((val) => {\n        // call with all arguments\n        if (val) {\n          val.apply(this, args);\n        }\n      });\n    }\n  }\n\n  play(start) {\n    const self = this;\n    if (!self.player) {\n      return;\n    }\n\n    if (self.type === 'youtube' && self.player.playVideo) {\n      if (typeof start !== 'undefined') {\n        self.player.seekTo(start || 0);\n      }\n      if (global.YT.PlayerState.PLAYING !== self.player.getPlayerState()) {\n        self.player.playVideo();\n      }\n    }\n\n    if (self.type === 'vimeo') {\n      if (typeof start !== 'undefined') {\n        self.player.setCurrentTime(start);\n      }\n      self.player.getPaused().then((paused) => {\n        if (paused) {\n          self.player.play();\n        }\n      });\n    }\n\n    if (self.type === 'local') {\n      if (typeof start !== 'undefined') {\n        self.player.currentTime = start;\n      }\n      if (self.player.paused) {\n        self.player.play();\n      }\n    }\n  }\n\n  pause() {\n    const self = this;\n    if (!self.player) {\n      return;\n    }\n\n    if (self.type === 'youtube' && self.player.pauseVideo) {\n      if (global.YT.PlayerState.PLAYING === self.player.getPlayerState()) {\n        self.player.pauseVideo();\n      }\n    }\n\n    if (self.type === 'vimeo') {\n      self.player.getPaused().then((paused) => {\n        if (!paused) {\n          self.player.pause();\n        }\n      });\n    }\n\n    if (self.type === 'local') {\n      if (!self.player.paused) {\n        self.player.pause();\n      }\n    }\n  }\n\n  mute() {\n    const self = this;\n    if (!self.player) {\n      return;\n    }\n\n    if (self.type === 'youtube' && self.player.mute) {\n      self.player.mute();\n    }\n\n    if (self.type === 'vimeo' && self.player.setVolume) {\n      self.setVolume(0);\n    }\n\n    if (self.type === 'local') {\n      self.$video.muted = true;\n    }\n  }\n\n  unmute() {\n    const self = this;\n    if (!self.player) {\n      return;\n    }\n\n    if (self.type === 'youtube' && self.player.mute) {\n      self.player.unMute();\n    }\n\n    if (self.type === 'vimeo' && self.player.setVolume) {\n      // In case the default volume is 0, we have to set 100 when unmute.\n      self.setVolume(self.options.volume || 100);\n    }\n\n    if (self.type === 'local') {\n      self.$video.muted = false;\n    }\n  }\n\n  setVolume(volume = false) {\n    const self = this;\n    if (!self.player || typeof volume !== 'number') {\n      return;\n    }\n\n    if (self.type === 'youtube' && self.player.setVolume) {\n      self.player.setVolume(volume);\n    }\n\n    if (self.type === 'vimeo' && self.player.setVolume) {\n      self.player.setVolume(volume / 100);\n    }\n\n    if (self.type === 'local') {\n      self.$video.volume = volume / 100;\n    }\n  }\n\n  getVolume(callback) {\n    const self = this;\n    if (!self.player) {\n      callback(false);\n      return;\n    }\n\n    if (self.type === 'youtube' && self.player.getVolume) {\n      callback(self.player.getVolume());\n    }\n\n    if (self.type === 'vimeo' && self.player.getVolume) {\n      self.player.getVolume().then((volume) => {\n        callback(volume * 100);\n      });\n    }\n\n    if (self.type === 'local') {\n      callback(self.$video.volume * 100);\n    }\n  }\n\n  getMuted(callback) {\n    const self = this;\n    if (!self.player) {\n      callback(null);\n      return;\n    }\n\n    if (self.type === 'youtube' && self.player.isMuted) {\n      callback(self.player.isMuted());\n    }\n\n    if (self.type === 'vimeo' && self.player.getVolume) {\n      self.player.getVolume().then((volume) => {\n        callback(!!volume);\n      });\n    }\n\n    if (self.type === 'local') {\n      callback(self.$video.muted);\n    }\n  }\n\n  getImageURL(callback) {\n    const self = this;\n\n    if (self.videoImage) {\n      callback(self.videoImage);\n      return;\n    }\n\n    if (self.type === 'youtube') {\n      const availableSizes = ['maxresdefault', 'sddefault', 'hqdefault', '0'];\n      let step = 0;\n\n      const tempImg = new Image();\n      tempImg.onload = function () {\n        // if no thumbnail, youtube add their own image with width = 120px\n        if ((this.naturalWidth || this.width) !== 120 || step === availableSizes.length - 1) {\n          // ok\n          self.videoImage = `https://img.youtube.com/vi/${self.videoID}/${availableSizes[step]}.jpg`;\n          callback(self.videoImage);\n        } else {\n          // try another size\n          step += 1;\n          this.src = `https://img.youtube.com/vi/${self.videoID}/${availableSizes[step]}.jpg`;\n        }\n      };\n      tempImg.src = `https://img.youtube.com/vi/${self.videoID}/${availableSizes[step]}.jpg`;\n    }\n\n    if (self.type === 'vimeo') {\n      // We should provide width to get HQ thumbnail URL.\n      let width = global.innerWidth || 1920;\n      if (global.devicePixelRatio) {\n        width *= global.devicePixelRatio;\n      }\n      width = Math.min(width, 1920);\n\n      let request = new XMLHttpRequest();\n      // https://vimeo.com/api/oembed.json?url=https://vimeo.com/235212527\n      request.open('GET', `https://vimeo.com/api/oembed.json?url=${self.url}&width=${width}`, true);\n      request.onreadystatechange = function () {\n        if (this.readyState === 4) {\n          if (this.status >= 200 && this.status < 400) {\n            // Success!\n            const response = JSON.parse(this.responseText);\n\n            if (response.thumbnail_url) {\n              self.videoImage = response.thumbnail_url;\n              callback(self.videoImage);\n            }\n          } else {\n            // Error :(\n          }\n        }\n      };\n      request.send();\n      request = null;\n    }\n  }\n\n  // fallback to the old version.\n  getIframe(callback) {\n    this.getVideo(callback);\n  }\n\n  getVideo(callback) {\n    const self = this;\n\n    // return generated video block\n    if (self.$video) {\n      callback(self.$video);\n      return;\n    }\n\n    // generate new video block\n    self.onAPIready(() => {\n      let hiddenDiv;\n      if (!self.$video) {\n        hiddenDiv = document.createElement('div');\n        hiddenDiv.style.display = 'none';\n      }\n\n      // Youtube\n      if (self.type === 'youtube') {\n        self.playerOptions = {\n          // GDPR Compliance.\n          host: 'https://www.youtube-nocookie.com',\n          videoId: self.videoID,\n          playerVars: {\n            autohide: 1,\n            rel: 0,\n            autoplay: 0,\n            // autoplay enable on mobile devices\n            playsinline: 1,\n          },\n        };\n\n        // hide controls\n        if (!self.options.showControls) {\n          self.playerOptions.playerVars.iv_load_policy = 3;\n          self.playerOptions.playerVars.modestbranding = 1;\n          self.playerOptions.playerVars.controls = 0;\n          self.playerOptions.playerVars.showinfo = 0;\n          self.playerOptions.playerVars.disablekb = 1;\n        }\n\n        // events\n        let ytStarted;\n        let ytProgressInterval;\n        self.playerOptions.events = {\n          onReady(e) {\n            // mute\n            if (self.options.mute) {\n              e.target.mute();\n            } else if (typeof self.options.volume === 'number') {\n              e.target.setVolume(self.options.volume);\n            }\n\n            // autoplay\n            if (self.options.autoplay) {\n              self.play(self.options.startTime);\n            }\n            self.fire('ready', e);\n\n            // For seamless loops, set the endTime to 0.1 seconds less than the video's duration\n            // https://github.com/nk-o/video-worker/issues/2\n            if (self.options.loop && !self.options.endTime) {\n              const secondsOffset = 0.1;\n              self.options.endTime = self.player.getDuration() - secondsOffset;\n            }\n\n            // volumechange\n            setInterval(() => {\n              self.getVolume((volume) => {\n                if (self.options.volume !== volume) {\n                  self.options.volume = volume;\n                  self.fire('volumechange', e);\n                }\n              });\n            }, 150);\n          },\n          onStateChange(e) {\n            // loop\n            if (self.options.loop && e.data === global.YT.PlayerState.ENDED) {\n              self.play(self.options.startTime);\n            }\n            if (!ytStarted && e.data === global.YT.PlayerState.PLAYING) {\n              ytStarted = 1;\n              self.fire('started', e);\n            }\n            if (e.data === global.YT.PlayerState.PLAYING) {\n              self.fire('play', e);\n            }\n            if (e.data === global.YT.PlayerState.PAUSED) {\n              self.fire('pause', e);\n            }\n            if (e.data === global.YT.PlayerState.ENDED) {\n              self.fire('ended', e);\n            }\n\n            // progress check\n            if (e.data === global.YT.PlayerState.PLAYING) {\n              ytProgressInterval = setInterval(() => {\n                self.fire('timeupdate', e);\n\n                // check for end of video and play again or stop\n                if (self.options.endTime && self.player.getCurrentTime() >= self.options.endTime) {\n                  if (self.options.loop) {\n                    self.play(self.options.startTime);\n                  } else {\n                    self.pause();\n                  }\n                }\n              }, 150);\n            } else {\n              clearInterval(ytProgressInterval);\n            }\n          },\n          onError(e) {\n            self.fire('error', e);\n          },\n        };\n\n        const firstInit = !self.$video;\n        if (firstInit) {\n          const div = document.createElement('div');\n          div.setAttribute('id', self.playerID);\n          hiddenDiv.appendChild(div);\n          document.body.appendChild(hiddenDiv);\n        }\n        self.player = self.player || new global.YT.Player(self.playerID, self.playerOptions);\n        if (firstInit) {\n          self.$video = document.getElementById(self.playerID);\n\n          // add accessibility attributes\n          if (self.options.accessibilityHidden) {\n            self.$video.setAttribute('tabindex', '-1');\n            self.$video.setAttribute('aria-hidden', 'true');\n          }\n\n          // get video width and height\n          self.videoWidth = parseInt(self.$video.getAttribute('width'), 10) || 1280;\n          self.videoHeight = parseInt(self.$video.getAttribute('height'), 10) || 720;\n        }\n      }\n\n      // Vimeo\n      if (self.type === 'vimeo') {\n        self.playerOptions = {\n          // GDPR Compliance.\n          dnt: 1,\n          id: self.videoID,\n          autopause: 0,\n          transparent: 0,\n          autoplay: self.options.autoplay ? 1 : 0,\n          loop: self.options.loop ? 1 : 0,\n          muted: self.options.mute || self.options.volume === 0 ? 1 : 0,\n        };\n\n        // hide controls\n        if (!self.options.showControls) {\n          self.playerOptions.controls = 0;\n        }\n\n        // enable background option\n        if (!self.options.showControls && self.options.loop && self.options.autoplay) {\n          self.playerOptions.background = 1;\n        }\n\n        if (!self.$video) {\n          let playerOptionsString = '';\n          Object.keys(self.playerOptions).forEach((key) => {\n            if (playerOptionsString !== '') {\n              playerOptionsString += '&';\n            }\n            playerOptionsString += `${key}=${encodeURIComponent(self.playerOptions[key])}`;\n          });\n\n          // we need to create iframe manually because when we create it using API\n          // js events won't triggers after iframe moved to another place\n          self.$video = document.createElement('iframe');\n          self.$video.setAttribute('id', self.playerID);\n          self.$video.setAttribute(\n            'src',\n            `https://player.vimeo.com/video/${self.videoID}?${playerOptionsString}`\n          );\n          self.$video.setAttribute('frameborder', '0');\n          self.$video.setAttribute('mozallowfullscreen', '');\n          self.$video.setAttribute('allowfullscreen', '');\n          self.$video.setAttribute('title', 'Vimeo video player');\n\n          // add accessibility attributes\n          if (self.options.accessibilityHidden) {\n            self.$video.setAttribute('tabindex', '-1');\n            self.$video.setAttribute('aria-hidden', 'true');\n          }\n\n          hiddenDiv.appendChild(self.$video);\n          document.body.appendChild(hiddenDiv);\n        }\n        self.player = self.player || new global.Vimeo.Player(self.$video, self.playerOptions);\n\n        // Since Vimeo removed the `volume` parameter, we have to set it manually.\n        if (!self.options.mute && typeof self.options.volume === 'number') {\n          self.setVolume(self.options.volume);\n        }\n\n        // set current time for autoplay\n        if (self.options.startTime && self.options.autoplay) {\n          self.player.setCurrentTime(self.options.startTime);\n        }\n\n        // get video width and height\n        self.player.getVideoWidth().then((width) => {\n          self.videoWidth = width || 1280;\n        });\n        self.player.getVideoHeight().then((height) => {\n          self.videoHeight = height || 720;\n        });\n\n        // events\n        let vmStarted;\n        self.player.on('timeupdate', (e) => {\n          if (!vmStarted) {\n            self.fire('started', e);\n            vmStarted = 1;\n          }\n\n          self.fire('timeupdate', e);\n\n          // check for end of video and play again or stop\n          if (self.options.endTime) {\n            if (self.options.endTime && e.seconds >= self.options.endTime) {\n              if (self.options.loop) {\n                self.play(self.options.startTime);\n              } else {\n                self.pause();\n              }\n            }\n          }\n        });\n        self.player.on('play', (e) => {\n          self.fire('play', e);\n\n          // check for the start time and start with it\n          if (self.options.startTime && e.seconds === 0) {\n            self.play(self.options.startTime);\n          }\n        });\n        self.player.on('pause', (e) => {\n          self.fire('pause', e);\n        });\n        self.player.on('ended', (e) => {\n          self.fire('ended', e);\n        });\n        self.player.on('loaded', (e) => {\n          self.fire('ready', e);\n        });\n        self.player.on('volumechange', (e) => {\n          self.getVolume((volume) => {\n            self.options.volume = volume;\n          });\n          self.fire('volumechange', e);\n        });\n        self.player.on('error', (e) => {\n          self.fire('error', e);\n        });\n      }\n\n      // Local\n      function addSourceToLocal(element, src, type) {\n        const source = document.createElement('source');\n        source.src = src;\n        source.type = type;\n        element.appendChild(source);\n      }\n      if (self.type === 'local') {\n        if (!self.$video) {\n          self.$video = document.createElement('video');\n          self.player = self.$video;\n\n          // show controls\n          if (self.options.showControls) {\n            self.$video.controls = true;\n          }\n\n          // set volume\n          if (typeof self.options.volume === 'number') {\n            self.setVolume(self.options.volume);\n          }\n\n          // mute (it is required to mute after the volume set)\n          if (self.options.mute) {\n            self.mute();\n          }\n\n          // loop\n          if (self.options.loop) {\n            self.$video.loop = true;\n          }\n\n          // autoplay enable on mobile devices\n          self.$video.setAttribute('playsinline', '');\n          self.$video.setAttribute('webkit-playsinline', '');\n\n          // add accessibility attributes\n          if (self.options.accessibilityHidden) {\n            self.$video.setAttribute('tabindex', '-1');\n            self.$video.setAttribute('aria-hidden', 'true');\n          }\n\n          self.$video.setAttribute('id', self.playerID);\n          hiddenDiv.appendChild(self.$video);\n          document.body.appendChild(hiddenDiv);\n\n          Object.keys(self.videoID).forEach((key) => {\n            addSourceToLocal(self.$video, self.videoID[key], `video/${key}`);\n          });\n        }\n\n        let locStarted;\n        self.player.addEventListener('playing', (e) => {\n          if (!locStarted) {\n            self.fire('started', e);\n          }\n          locStarted = 1;\n        });\n        self.player.addEventListener('timeupdate', function (e) {\n          self.fire('timeupdate', e);\n\n          // check for end of video and play again or stop\n          if (self.options.endTime) {\n            if (self.options.endTime && this.currentTime >= self.options.endTime) {\n              if (self.options.loop) {\n                self.play(self.options.startTime);\n              } else {\n                self.pause();\n              }\n            }\n          }\n        });\n        self.player.addEventListener('play', (e) => {\n          self.fire('play', e);\n        });\n        self.player.addEventListener('pause', (e) => {\n          self.fire('pause', e);\n        });\n        self.player.addEventListener('ended', (e) => {\n          self.fire('ended', e);\n        });\n        self.player.addEventListener('loadedmetadata', function () {\n          // get video width and height\n          self.videoWidth = this.videoWidth || 1280;\n          self.videoHeight = this.videoHeight || 720;\n\n          self.fire('ready');\n\n          // autoplay\n          if (self.options.autoplay) {\n            self.play(self.options.startTime);\n          }\n        });\n        self.player.addEventListener('volumechange', (e) => {\n          self.getVolume((volume) => {\n            self.options.volume = volume;\n          });\n          self.fire('volumechange', e);\n        });\n        self.player.addEventListener('error', (e) => {\n          self.fire('error', e);\n        });\n      }\n      callback(self.$video);\n    });\n  }\n\n  init() {\n    const self = this;\n\n    self.playerID = `VideoWorker-${self.ID}`;\n  }\n\n  loadAPI() {\n    const self = this;\n\n    if (YoutubeAPIadded && VimeoAPIadded) {\n      return;\n    }\n\n    let src = '';\n\n    // load Youtube API\n    if (self.type === 'youtube' && !YoutubeAPIadded) {\n      YoutubeAPIadded = 1;\n      src = 'https://www.youtube.com/iframe_api';\n    }\n\n    // load Vimeo API\n    if (self.type === 'vimeo' && !VimeoAPIadded) {\n      VimeoAPIadded = 1;\n\n      // Useful when Vimeo API added using RequireJS https://github.com/nk-o/video-worker/pull/7\n      if (typeof global.Vimeo !== 'undefined') {\n        return;\n      }\n\n      src = 'https://player.vimeo.com/api/player.js';\n    }\n\n    if (!src) {\n      return;\n    }\n\n    // add script in head section\n    let tag = document.createElement('script');\n    let head = document.getElementsByTagName('head')[0];\n    tag.src = src;\n\n    head.appendChild(tag);\n\n    head = null;\n    tag = null;\n  }\n\n  onAPIready(callback) {\n    const self = this;\n\n    // Youtube\n    if (self.type === 'youtube') {\n      // Listen for global YT player callback\n      if ((typeof global.YT === 'undefined' || global.YT.loaded === 0) && !loadingYoutubePlayer) {\n        // Prevents Ready event from being called twice\n        loadingYoutubePlayer = 1;\n\n        // Creates deferred so, other players know when to wait.\n        global.onYouTubeIframeAPIReady = function () {\n          global.onYouTubeIframeAPIReady = null;\n          loadingYoutubeDefer.resolve('done');\n          callback();\n        };\n      } else if (typeof global.YT === 'object' && global.YT.loaded === 1) {\n        callback();\n      } else {\n        loadingYoutubeDefer.done(() => {\n          callback();\n        });\n      }\n    }\n\n    // Vimeo\n    if (self.type === 'vimeo') {\n      if (typeof global.Vimeo === 'undefined' && !loadingVimeoPlayer) {\n        loadingVimeoPlayer = 1;\n        const vimeoInterval = setInterval(() => {\n          if (typeof global.Vimeo !== 'undefined') {\n            clearInterval(vimeoInterval);\n            loadingVimeoDefer.resolve('done');\n            callback();\n          }\n        }, 20);\n      } else if (typeof global.Vimeo !== 'undefined') {\n        callback();\n      } else {\n        loadingVimeoDefer.done(() => {\n          callback();\n        });\n      }\n    }\n\n    // Local\n    if (self.type === 'local') {\n      callback();\n    }\n  }\n}\n\nexport default VideoWorker;\n"],"names":["win","window","global","self","Deferred","doneCallbacks","failCallbacks","prototype","execute","list","args","i","length","Array","slice","call","apply","resolve","reject","done","callback","push","fail","autoplay","loop","mute","volume","showControls","accessibilityHidden","startTime","endTime","extend","out","Object","keys","forEach","key","ID","YoutubeAPIadded","VimeoAPIadded","loadingYoutubePlayer","loadingVimeoPlayer","loadingYoutubeDefer","loadingVimeoDefer","VideoWorker","constructor","url","options","options_default","defaults","videoID","parseURL","loadAPI","init","getYoutubeID","ytUrl","regExp","match","getVimeoID","vmUrl","getLocalVideos","locUrl","videoFormats","split","result","ready","val","Youtube","Vimeo","Local","type","isValid","on","name","userEventsList","off","fire","play","start","player","playVideo","seekTo","YT","PlayerState","PLAYING","getPlayerState","setCurrentTime","getPaused","then","paused","currentTime","pause","pauseVideo","setVolume","$video","muted","unmute","unMute","getVolume","getMuted","isMuted","getImageURL","videoImage","availableSizes","step","tempImg","Image","onload","naturalWidth","width","src","innerWidth","devicePixelRatio","Math","min","request","XMLHttpRequest","open","onreadystatechange","readyState","status","response","JSON","parse","responseText","thumbnail_url","send","getIframe","getVideo","onAPIready","hiddenDiv","document","createElement","style","display","playerOptions","host","videoId","playerVars","autohide","rel","playsinline","iv_load_policy","modestbranding","controls","showinfo","disablekb","ytStarted","ytProgressInterval","events","onReady","e","target","secondsOffset","getDuration","setInterval","onStateChange","data","ENDED","PAUSED","getCurrentTime","clearInterval","onError","firstInit","div","setAttribute","playerID","appendChild","body","Player","getElementById","videoWidth","parseInt","getAttribute","videoHeight","dnt","id","autopause","transparent","background","playerOptionsString","encodeURIComponent","getVideoWidth","getVideoHeight","height","vmStarted","seconds","addSourceToLocal","element","source","locStarted","addEventListener","tag","head","getElementsByTagName","loaded","onYouTubeIframeAPIReady","vimeoInterval"],"mappings":"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"}