Your IP : 192.168.165.1


Current Path : C:/xampp/htdocs/moodle/media/player/videojs/amd/build/
Upload File :
Current File : C:/xampp/htdocs/moodle/media/player/videojs/amd/build/Youtube-lazy.min.js.map

{"version":3,"sources":["../src/Youtube-lazy.js"],"names":["root","factory","exports","module","videojs","require","default","define","amd","Youtube","_isOnMobile","browser","IS_IOS","IS_NATIVE_ANDROID","Tech","getTech","extend","constructor","options","ready","call","setPoster","poster","setSrc","options_","source","setTimeout","el_","parentNode","className","isApiReady","initYTPlayer","apiReadyQueue","push","bind","dispose","ytPlayer","stopVideo","destroy","index","indexOf","splice","replace","removeChild","prototype","createEl","div","document","createElement","setAttribute","techId","divWrapper","appendChild","ytControls","divBlocker","onclick","pause","playerVars","controls","modestbranding","rel","showinfo","loop","autohide","disablekb","color","fs","src","srcEndTime","match","end","parseInt","hl","language","substr","list","url","listId","listType","playlist","playsinline","srcStartTime","start","theme","customVars","Object","keys","forEach","key","activeVideoId","videoId","activeList","playerConfig","events","onReady","onPlayerReady","onPlaybackQualityChange","onPlayerPlaybackQualityChange","onPlaybackRateChange","onPlayerPlaybackRateChange","onStateChange","onPlayerStateChange","onVolumeChange","onPlayerVolumeChange","onError","onPlayerError","enablePrivacyEnhancedMode","host","YT","Player","muted","mute","playbackRates","getAvailablePlaybackRates","length","featuresPlaybackRate","playerReady_","triggerReady","playOnReady","play","cueOnReady","cueVideoById_","trigger","e","state","data","lastState","errorNumber","PlayerState","ENDED","PLAYING","isSeeking","onSeeked","PAUSED","BUFFERING","player_","error","code","message","loadVideoById_","id","startSeconds","endSeconds","loadVideoById","cueVideoById","poster_","parseUrl","checkHighResPoster","autoplay","isReady_","setAutoplay","val","setLoop","wasPausedBeforeSeek","playVideo","loadPlaylist","pauseVideo","paused","currentTime","getCurrentTime","setCurrentTime","seconds","timeBeforeSeek","seekTo","clearInterval","checkSeekedInPauseInterval","setInterval","seeking","seekable","createTimeRange","getDuration","playbackRate","getPlaybackRate","setPlaybackRate","suggestedRate","duration","currentSrc","ended","volume","getVolume","setVolume","percentAsDecimal","isMuted","setMuted","unMute","buffered","getVideoLoadedFraction","bufferedEnd","preload","load","reset","networkState","getPlayerState","readyState","supportsFullScreen","fullscreenEnabled","webkitFullscreenEnabled","mozFullScreenEnabled","msFullscreenEnabled","uri","image","Image","onload","naturalHeight","naturalWidth","height","width","onerror","isSupported","canPlaySource","canPlayType","type","result","apiLoaded","i","loadScript","callback","loaded","tag","firstScriptTag","getElementsByTagName","insertBefore","onreadystatechange","injectCss","head","style","styleSheet","cssText","createTextNode","registerTech","registerComponent"],"mappings":"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","sourcesContent":["/* The MIT License (MIT)\n\nCopyright (c) 2014-2015 Benoit Tremblay <trembl.ben@gmail.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE. */\n/*global define, YT*/\n(function (root, factory) {\n  if(typeof exports==='object' && typeof module!=='undefined') {\n    var videojs = require('video.js');\n    module.exports = factory(videojs.default || videojs);\n  } else if(typeof define === 'function' && define.amd) {\n    define(['media_videojs/video-lazy'], function(videojs){\n      return (root.Youtube = factory(videojs));\n    });\n  } else {\n    root.Youtube = factory(root.videojs);\n  }\n}(this, function(videojs) {\n  'use strict';\n\n  var _isOnMobile = videojs.browser.IS_IOS || videojs.browser.IS_NATIVE_ANDROID;\n  var Tech = videojs.getTech('Tech');\n\n  var Youtube = videojs.extend(Tech, {\n\n    constructor: function(options, ready) {\n      Tech.call(this, options, ready);\n\n      this.setPoster(options.poster);\n      this.setSrc(this.options_.source, true);\n\n      // Set the vjs-youtube class to the player\n      // Parent is not set yet so we have to wait a tick\n      this.setTimeout(function() {\n        if (this.el_) {\n          this.el_.parentNode.className += ' vjs-youtube';\n\n          if (_isOnMobile) {\n            this.el_.parentNode.className += ' vjs-youtube-mobile';\n          }\n\n          if (Youtube.isApiReady) {\n            this.initYTPlayer();\n          } else {\n            Youtube.apiReadyQueue.push(this);\n          }\n        }\n      }.bind(this));\n    },\n\n    dispose: function() {\n      if (this.ytPlayer) {\n        //Dispose of the YouTube Player\n        if (this.ytPlayer.stopVideo) {\n          this.ytPlayer.stopVideo();\n        }\n        if (this.ytPlayer.destroy) {\n          this.ytPlayer.destroy();\n        }\n      } else {\n        //YouTube API hasn't finished loading or the player is already disposed\n        var index = Youtube.apiReadyQueue.indexOf(this);\n        if (index !== -1) {\n          Youtube.apiReadyQueue.splice(index, 1);\n        }\n      }\n      this.ytPlayer = null;\n\n      this.el_.parentNode.className = this.el_.parentNode.className\n        .replace(' vjs-youtube', '')\n        .replace(' vjs-youtube-mobile', '');\n      this.el_.parentNode.removeChild(this.el_);\n\n      //Needs to be called after the YouTube player is destroyed, otherwise there will be a null reference exception\n      Tech.prototype.dispose.call(this);\n    },\n\n    createEl: function() {\n      var div = document.createElement('div');\n      div.setAttribute('id', this.options_.techId);\n      div.setAttribute('style', 'width:100%;height:100%;top:0;left:0;position:absolute');\n      div.setAttribute('class', 'vjs-tech');\n\n      var divWrapper = document.createElement('div');\n      divWrapper.appendChild(div);\n\n      if (!_isOnMobile && !this.options_.ytControls) {\n        var divBlocker = document.createElement('div');\n        divBlocker.setAttribute('class', 'vjs-iframe-blocker');\n        divBlocker.setAttribute('style', 'position:absolute;top:0;left:0;width:100%;height:100%');\n\n        // In case the blocker is still there and we want to pause\n        divBlocker.onclick = function() {\n          this.pause();\n        }.bind(this);\n\n        divWrapper.appendChild(divBlocker);\n      }\n\n      return divWrapper;\n    },\n\n    initYTPlayer: function() {\n      var playerVars = {\n        controls: 0,\n        modestbranding: 1,\n        rel: 0,\n        showinfo: 0,\n        loop: this.options_.loop ? 1 : 0\n      };\n\n      // Let the user set any YouTube parameter\n      // https://developers.google.com/youtube/player_parameters?playerVersion=HTML5#Parameters\n      // To use YouTube controls, you must use ytControls instead\n      // To use the loop or autoplay, use the video.js settings\n\n      if (typeof this.options_.autohide !== 'undefined') {\n        playerVars.autohide = this.options_.autohide;\n      }\n\n      if (typeof this.options_['cc_load_policy'] !== 'undefined') {\n        playerVars['cc_load_policy'] = this.options_['cc_load_policy'];\n      }\n\n      if (typeof this.options_.ytControls !== 'undefined') {\n        playerVars.controls = this.options_.ytControls;\n      }\n\n      if (typeof this.options_.disablekb !== 'undefined') {\n        playerVars.disablekb = this.options_.disablekb;\n      }\n\n      if (typeof this.options_.color !== 'undefined') {\n        playerVars.color = this.options_.color;\n      }\n\n      if (!playerVars.controls) {\n        // Let video.js handle the fullscreen unless it is the YouTube native controls\n        playerVars.fs = 0;\n      } else if (typeof this.options_.fs !== 'undefined') {\n        playerVars.fs = this.options_.fs;\n      }\n\n      if (this.options_.source.src.indexOf('end=') !== -1) {\n        var srcEndTime = this.options_.source.src.match(/end=([0-9]*)/);\n        this.options_.end = parseInt(srcEndTime[1]);\n      }\n\n      if (typeof this.options_.end !== 'undefined') {\n        playerVars.end = this.options_.end;\n      }\n\n      if (typeof this.options_.hl !== 'undefined') {\n        playerVars.hl = this.options_.hl;\n      } else if (typeof this.options_.language !== 'undefined') {\n        // Set the YouTube player on the same language than video.js\n        playerVars.hl = this.options_.language.substr(0, 2);\n      }\n\n      if (typeof this.options_['iv_load_policy'] !== 'undefined') {\n        playerVars['iv_load_policy'] = this.options_['iv_load_policy'];\n      }\n\n      if (typeof this.options_.list !== 'undefined') {\n        playerVars.list = this.options_.list;\n      } else if (this.url && typeof this.url.listId !== 'undefined') {\n        playerVars.list = this.url.listId;\n      }\n\n      if (typeof this.options_.listType !== 'undefined') {\n        playerVars.listType = this.options_.listType;\n      }\n\n      if (typeof this.options_.modestbranding !== 'undefined') {\n        playerVars.modestbranding = this.options_.modestbranding;\n      }\n\n      if (typeof this.options_.playlist !== 'undefined') {\n        playerVars.playlist = this.options_.playlist;\n      }\n\n      if (typeof this.options_.playsinline !== 'undefined') {\n        playerVars.playsinline = this.options_.playsinline;\n      }\n\n      if (typeof this.options_.rel !== 'undefined') {\n        playerVars.rel = this.options_.rel;\n      }\n\n      if (typeof this.options_.showinfo !== 'undefined') {\n        playerVars.showinfo = this.options_.showinfo;\n      }\n\n      if (this.options_.source.src.indexOf('start=') !== -1) {\n        var srcStartTime = this.options_.source.src.match(/start=([0-9]*)/);\n        this.options_.start = parseInt(srcStartTime[1]);\n      }\n\n      if (typeof this.options_.start !== 'undefined') {\n        playerVars.start = this.options_.start;\n      }\n\n      if (typeof this.options_.theme !== 'undefined') {\n        playerVars.theme = this.options_.theme;\n      }\n\n      // Allow undocumented options to be passed along via customVars\n      if (typeof this.options_.customVars !== 'undefined') {\n        var customVars = this.options_.customVars;\n        Object.keys(customVars).forEach(function(key) {\n          playerVars[key] = customVars[key];\n        });\n      }\n\n      this.activeVideoId = this.url ? this.url.videoId : null;\n      this.activeList = playerVars.list;\n\n      var playerConfig = {\n        videoId: this.activeVideoId,\n        playerVars: playerVars,\n        events: {\n          onReady: this.onPlayerReady.bind(this),\n          onPlaybackQualityChange: this.onPlayerPlaybackQualityChange.bind(this),\n          onPlaybackRateChange: this.onPlayerPlaybackRateChange.bind(this),\n          onStateChange: this.onPlayerStateChange.bind(this),\n          onVolumeChange: this.onPlayerVolumeChange.bind(this),\n          onError: this.onPlayerError.bind(this)\n        }\n      };\n\n      if (typeof this.options_.enablePrivacyEnhancedMode !== 'undefined' && this.options_.enablePrivacyEnhancedMode) {\n        playerConfig.host = 'https://www.youtube-nocookie.com';\n      }\n\n      this.ytPlayer = new YT.Player(this.options_.techId, playerConfig);\n    },\n\n    onPlayerReady: function() {\n      if (this.options_.muted) {\n        this.ytPlayer.mute();\n      }\n\n      var playbackRates = this.ytPlayer.getAvailablePlaybackRates();\n      if (playbackRates.length > 1) {\n        this.featuresPlaybackRate = true;\n      }\n\n      this.playerReady_ = true;\n      this.triggerReady();\n\n      if (this.playOnReady) {\n        this.play();\n      } else if (this.cueOnReady) {\n        this.cueVideoById_(this.url.videoId);\n        this.activeVideoId = this.url.videoId;\n      }\n    },\n\n    onPlayerPlaybackQualityChange: function() {\n\n    },\n\n    onPlayerPlaybackRateChange: function() {\n      this.trigger('ratechange');\n    },\n\n    onPlayerStateChange: function(e) {\n      var state = e.data;\n\n      if (state === this.lastState || this.errorNumber) {\n        return;\n      }\n\n      this.lastState = state;\n\n      switch (state) {\n        case -1:\n          this.trigger('loadstart');\n          this.trigger('loadedmetadata');\n          this.trigger('durationchange');\n          this.trigger('ratechange');\n          break;\n\n        case YT.PlayerState.ENDED:\n          this.trigger('ended');\n          break;\n\n        case YT.PlayerState.PLAYING:\n          this.trigger('timeupdate');\n          this.trigger('durationchange');\n          this.trigger('playing');\n          this.trigger('play');\n\n          if (this.isSeeking) {\n            this.onSeeked();\n          }\n          break;\n\n        case YT.PlayerState.PAUSED:\n          this.trigger('canplay');\n          if (this.isSeeking) {\n            this.onSeeked();\n          } else {\n            this.trigger('pause');\n          }\n          break;\n\n        case YT.PlayerState.BUFFERING:\n          this.player_.trigger('timeupdate');\n          this.player_.trigger('waiting');\n          break;\n      }\n    },\n\n    onPlayerVolumeChange: function() {\n      this.trigger('volumechange');\n    },\n\n    onPlayerError: function(e) {\n      this.errorNumber = e.data;\n      this.trigger('pause');\n      this.trigger('error');\n    },\n\n    error: function() {\n      var code = 1000 + this.errorNumber; // as smaller codes are reserved\n      switch (this.errorNumber) {\n        case 5:\n          return { code: code, message: 'Error while trying to play the video' };\n\n        case 2:\n        case 100:\n          return { code: code, message: 'Unable to find the video' };\n\n        case 101:\n        case 150:\n          return {\n            code: code,\n            message: 'Playback on other Websites has been disabled by the video owner.'\n          };\n      }\n\n      return { code: code, message: 'YouTube unknown error (' + this.errorNumber + ')' };\n    },\n\n    loadVideoById_: function(id) {\n      var options = {\n        videoId: id\n      };\n      if (this.options_.start) {\n        options.startSeconds = this.options_.start;\n      }\n      if (this.options_.end) {\n        options.endSeconds = this.options_.end;\n      }\n      this.ytPlayer.loadVideoById(options);\n    },\n\n    cueVideoById_: function(id) {\n      var options = {\n        videoId: id\n      };\n      if (this.options_.start) {\n        options.startSeconds = this.options_.start;\n      }\n      if (this.options_.end) {\n        options.endSeconds = this.options_.end;\n      }\n      this.ytPlayer.cueVideoById(options);\n    },\n\n    src: function(src) {\n      if (src) {\n        this.setSrc({ src: src });\n      }\n\n      return this.source;\n    },\n\n    poster: function() {\n      // You can't start programmaticlly a video with a mobile\n      // through the iframe so we hide the poster and the play button (with CSS)\n      if (_isOnMobile) {\n        return null;\n      }\n\n      return this.poster_;\n    },\n\n    setPoster: function(poster) {\n      this.poster_ = poster;\n    },\n\n    setSrc: function(source) {\n      if (!source || !source.src) {\n        return;\n      }\n\n      delete this.errorNumber;\n      this.source = source;\n      this.url = Youtube.parseUrl(source.src);\n\n      if (!this.options_.poster) {\n        if (this.url.videoId) {\n          // Set the low resolution first\n          this.poster_ = 'https://img.youtube.com/vi/' + this.url.videoId + '/0.jpg';\n          this.trigger('posterchange');\n\n          // Check if their is a high res\n          this.checkHighResPoster();\n        }\n      }\n\n      if (this.options_.autoplay && !_isOnMobile) {\n        if (this.isReady_) {\n          this.play();\n        } else {\n          this.playOnReady = true;\n        }\n      } else if (this.activeVideoId !== this.url.videoId) {\n        if (this.isReady_) {\n          this.cueVideoById_(this.url.videoId);\n          this.activeVideoId = this.url.videoId;\n        } else {\n          this.cueOnReady = true;\n        }\n      }\n    },\n\n    autoplay: function() {\n      return this.options_.autoplay;\n    },\n\n    setAutoplay: function(val) {\n      this.options_.autoplay = val;\n    },\n\n    loop: function() {\n      return this.options_.loop;\n    },\n\n    setLoop: function(val) {\n      this.options_.loop = val;\n    },\n\n    play: function() {\n      if (!this.url || !this.url.videoId) {\n        return;\n      }\n\n      this.wasPausedBeforeSeek = false;\n\n      if (this.isReady_) {\n        if (this.url.listId) {\n          if (this.activeList === this.url.listId) {\n            this.ytPlayer.playVideo();\n          } else {\n            this.ytPlayer.loadPlaylist(this.url.listId);\n            this.activeList = this.url.listId;\n          }\n        }\n\n        if (this.activeVideoId === this.url.videoId) {\n          this.ytPlayer.playVideo();\n        } else {\n          this.loadVideoById_(this.url.videoId);\n          this.activeVideoId = this.url.videoId;\n        }\n      } else {\n        this.trigger('waiting');\n        this.playOnReady = true;\n      }\n    },\n\n    pause: function() {\n      if (this.ytPlayer) {\n        this.ytPlayer.pauseVideo();\n      }\n    },\n\n    paused: function() {\n      return (this.ytPlayer) ?\n        (this.lastState !== YT.PlayerState.PLAYING && this.lastState !== YT.PlayerState.BUFFERING)\n        : true;\n    },\n\n    currentTime: function() {\n      return this.ytPlayer ? this.ytPlayer.getCurrentTime() : 0;\n    },\n\n    setCurrentTime: function(seconds) {\n      if (this.lastState === YT.PlayerState.PAUSED) {\n        this.timeBeforeSeek = this.currentTime();\n      }\n\n      if (!this.isSeeking) {\n        this.wasPausedBeforeSeek = this.paused();\n      }\n\n      this.ytPlayer.seekTo(seconds, true);\n      this.trigger('timeupdate');\n      this.trigger('seeking');\n      this.isSeeking = true;\n\n      // A seek event during pause does not return an event to trigger a seeked event,\n      // so run an interval timer to look for the currentTime to change\n      if (this.lastState === YT.PlayerState.PAUSED && this.timeBeforeSeek !== seconds) {\n        clearInterval(this.checkSeekedInPauseInterval);\n        this.checkSeekedInPauseInterval = setInterval(function() {\n          if (this.lastState !== YT.PlayerState.PAUSED || !this.isSeeking) {\n            // If something changed while we were waiting for the currentTime to change,\n            //  clear the interval timer\n            clearInterval(this.checkSeekedInPauseInterval);\n          } else if (this.currentTime() !== this.timeBeforeSeek) {\n            this.trigger('timeupdate');\n            this.onSeeked();\n          }\n        }.bind(this), 250);\n      }\n    },\n\n    seeking: function () {\n      return this.isSeeking;\n    },\n\n    seekable: function () {\n      if(!this.ytPlayer) {\n        return videojs.createTimeRange();\n      }\n\n      return videojs.createTimeRange(0, this.ytPlayer.getDuration());\n    },\n\n    onSeeked: function() {\n      clearInterval(this.checkSeekedInPauseInterval);\n      this.isSeeking = false;\n\n      if (this.wasPausedBeforeSeek) {\n        this.pause();\n      }\n\n      this.trigger('seeked');\n    },\n\n    playbackRate: function() {\n      return this.ytPlayer ? this.ytPlayer.getPlaybackRate() : 1;\n    },\n\n    setPlaybackRate: function(suggestedRate) {\n      if (!this.ytPlayer) {\n        return;\n      }\n\n      this.ytPlayer.setPlaybackRate(suggestedRate);\n    },\n\n    duration: function() {\n      return this.ytPlayer ? this.ytPlayer.getDuration() : 0;\n    },\n\n    currentSrc: function() {\n      return this.source && this.source.src;\n    },\n\n    ended: function() {\n      return this.ytPlayer ? (this.lastState === YT.PlayerState.ENDED) : false;\n    },\n\n    volume: function() {\n      return this.ytPlayer ? this.ytPlayer.getVolume() / 100.0 : 1;\n    },\n\n    setVolume: function(percentAsDecimal) {\n      if (!this.ytPlayer) {\n        return;\n      }\n\n      this.ytPlayer.setVolume(percentAsDecimal * 100.0);\n    },\n\n    muted: function() {\n      return this.ytPlayer ? this.ytPlayer.isMuted() : false;\n    },\n\n    setMuted: function(mute) {\n      if (!this.ytPlayer) {\n        return;\n      }\n      else{\n        this.muted(true);\n      }\n\n      if (mute) {\n        this.ytPlayer.mute();\n      } else {\n        this.ytPlayer.unMute();\n      }\n      this.setTimeout( function(){\n        this.trigger('volumechange');\n      }, 50);\n    },\n\n    buffered: function() {\n      if(!this.ytPlayer || !this.ytPlayer.getVideoLoadedFraction) {\n        return videojs.createTimeRange();\n      }\n\n      var bufferedEnd = this.ytPlayer.getVideoLoadedFraction() * this.ytPlayer.getDuration();\n\n      return videojs.createTimeRange(0, bufferedEnd);\n    },\n\n    // TODO: Can we really do something with this on YouTUbe?\n    preload: function() {},\n    load: function() {},\n    reset: function() {},\n    networkState: function () {\n      if (!this.ytPlayer) {\n        return 0; //NETWORK_EMPTY\n      }\n      switch (this.ytPlayer.getPlayerState()) {\n        case -1: //unstarted\n          return 0; //NETWORK_EMPTY\n        case 3: //buffering\n          return 2; //NETWORK_LOADING\n        default:\n          return 1; //NETWORK_IDLE\n      }\n    },\n    readyState: function () {\n      if (!this.ytPlayer) {\n        return 0; //HAVE_NOTHING\n      }\n      switch (this.ytPlayer.getPlayerState()) {\n        case -1: //unstarted\n          return 0; //HAVE_NOTHING\n        case 5: //video cued\n          return 1; //HAVE_METADATA\n        case 3: //buffering\n          return 2; //HAVE_CURRENT_DATA\n        default:\n          return 4; //HAVE_ENOUGH_DATA\n      }\n    },\n\n    supportsFullScreen: function() {\n      return document.fullscreenEnabled ||\n             document.webkitFullscreenEnabled ||\n             document.mozFullScreenEnabled ||\n             document.msFullscreenEnabled;\n    },\n\n    // Tries to get the highest resolution thumbnail available for the video\n    checkHighResPoster: function(){\n      var uri = 'https://img.youtube.com/vi/' + this.url.videoId + '/maxresdefault.jpg';\n\n      try {\n        var image = new Image();\n        image.onload = function(){\n          // Onload may still be called if YouTube returns the 120x90 error thumbnail\n          if('naturalHeight' in image){\n            if (image.naturalHeight <= 90 || image.naturalWidth <= 120) {\n              return;\n            }\n          } else if(image.height <= 90 || image.width <= 120) {\n            return;\n          }\n\n          this.poster_ = uri;\n          this.trigger('posterchange');\n        }.bind(this);\n        image.onerror = function(){};\n        image.src = uri;\n      }\n      catch(e){}\n    }\n  });\n\n  Youtube.isSupported = function() {\n    return true;\n  };\n\n  Youtube.canPlaySource = function(e) {\n    return Youtube.canPlayType(e.type);\n  };\n\n  Youtube.canPlayType = function(e) {\n    return (e === 'video/youtube');\n  };\n\n  Youtube.parseUrl = function(url) {\n    var result = {\n      videoId: null\n    };\n\n    var regex = /^.*(youtu.be\\/|v\\/|u\\/\\w\\/|embed\\/|watch\\?v=|\\&v=)([^#\\&\\?]*).*/;\n    var match = url.match(regex);\n\n    if (match && match[2].length === 11) {\n      result.videoId = match[2];\n    }\n\n    var regPlaylist = /[?&]list=([^#\\&\\?]+)/;\n    match = url.match(regPlaylist);\n\n    if(match && match[1]) {\n      result.listId = match[1];\n    }\n\n    return result;\n  };\n\n  function apiLoaded() {\n    YT.ready(function() {\n      Youtube.isApiReady = true;\n\n      for (var i = 0; i < Youtube.apiReadyQueue.length; ++i) {\n        Youtube.apiReadyQueue[i].initYTPlayer();\n      }\n    });\n  }\n\n  function loadScript(src, callback) {\n    var loaded = false;\n    var tag = document.createElement('script');\n    var firstScriptTag = document.getElementsByTagName('script')[0];\n    if (!firstScriptTag) {\n      // when loaded in jest without jsdom setup it doesn't get any element.\n      // In jest it doesn't really make sense to do anything, because no one is watching youtube in jest\n      return;\n    }\n    firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);\n    tag.onload = function () {\n      if (!loaded) {\n        loaded = true;\n        callback();\n      }\n    };\n    tag.onreadystatechange = function () {\n      if (!loaded && (this.readyState === 'complete' || this.readyState === 'loaded')) {\n        loaded = true;\n        callback();\n      }\n    };\n    tag.src = src;\n  }\n\n  function injectCss() {\n    var css = // iframe blocker to catch mouse events\n              '.vjs-youtube .vjs-iframe-blocker { display: none; }' +\n              '.vjs-youtube.vjs-user-inactive .vjs-iframe-blocker { display: block; }' +\n              '.vjs-youtube .vjs-poster { background-size: cover; }' +\n              '.vjs-youtube-mobile .vjs-big-play-button { display: none; }';\n\n    var head = document.head || document.getElementsByTagName('head')[0];\n\n    var style = document.createElement('style');\n    style.type = 'text/css';\n\n    if (style.styleSheet){\n      style.styleSheet.cssText = css;\n    } else {\n      style.appendChild(document.createTextNode(css));\n    }\n\n    head.appendChild(style);\n  }\n\n  Youtube.apiReadyQueue = [];\n\n  if (typeof document !== 'undefined'){\n    loadScript('https://www.youtube.com/iframe_api', apiLoaded);\n    injectCss();\n  }\n\n  // Older versions of VJS5 doesn't have the registerTech function\n  if (typeof videojs.registerTech !== 'undefined') {\n    videojs.registerTech('Youtube', Youtube);\n  } else {\n    videojs.registerComponent('Youtube', Youtube);\n  }\n}));\n"],"file":"Youtube-lazy.min.js"}