UNPKG

le-player

Version:

The best HTML5 video player made for Lectoriy.

1 lines 11 kB
!function(t){function e(i){if(a[i])return a[i].exports;var r=a[i]={exports:{},id:i,loaded:!1};return t[i].call(r.exports,r,r.exports,e),r.loaded=!0,r.exports}var a={};return e.m=t,e.c=a,e.p="/dist/js/",e(0)}({0:function(t,e,a){t.exports=a(72)},2:function(t,e){t.exports=$},72:function(t,e,a){"use strict";function i(t){return t&&t.__esModule?t:{default:t}}function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function n(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function l(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}var o=function(){function t(t,e){for(var a=0;a<e.length;a++){var i=e[a];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}return function(e,a,i){return a&&t(e.prototype,a),i&&t(e,i),e}}(),s=function t(e,a,i){null===e&&(e=Function.prototype);var r=Object.getOwnPropertyDescriptor(e,a);if(void 0===r){var n=Object.getPrototypeOf(e);return null===n?void 0:t(n,a,i)}if("value"in r)return r.value;var l=r.get;if(void 0!==l)return l.call(i)},u=function t(e,a,i,r){var n=Object.getOwnPropertyDescriptor(e,a);if(void 0===n){var l=Object.getPrototypeOf(e);null!==l&&t(l,a,i,r)}else if("value"in n&&n.writable)n.value=i;else{var o=n.set;void 0!==o&&o.call(r,i)}return i},c=a(2),y=i(c),h=window.lePlayer||window.$.lePlayer,p=h.getComponent("Entity"),g=function(t){return null==t||null==t.languageCode?t:{language:t.languageCode,title:t.languageCode,tooltip:t.languageName,name:t.languageCode}},d=function(t){function e(t,a){r(this,e);var i=n(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,t,a));return i._paused=!0,i.src=i.player.options.src,i.player.addClass("leplayer--youtube"),i.element.on("click",i.onClick.bind(i)),i.element.on("dblclick",i.onDblclick.bind(i)),i}return l(e,t),o(e,[{key:"onClick",value:function(t){this.trigger("click")}},{key:"onDblclick",value:function(){this.trigger("dblclick")}},{key:"increaseRate",value:function(){var t=this.availableRates.indexOf(this.rate);if(!(t+1>=this.availableRates.length))return this.rate=this.availableRates[t+1]}},{key:"decreaseRate",value:function(){var t=this.availableRates.indexOf(this.rate);if(!(t-1<0))return this.rate=this.availableRates[t-1]}},{key:"getAvailableQualityLevels",value:function(){var t=this.ytPlayer.getAvailableQualityLevels(),a=t.indexOf("auto");return a>-1&&t.splice(a,1),t.map(function(t){return{title:e.QUALITY_NAMES[t]||t,name:t}})}},{key:"supportsFullScreen",value:function(){return!0}},{key:"play",value:function(){this.ytPlayer.playVideo(),this.trigger("play")}},{key:"pause",value:function(){this.ytPlayer.pauseVideo(),this.trigger("pause")}},{key:"init",value:function(){var t=this;return s(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"init",this).call(this),e.apiLoaded().then(function(){return t.initYTPlayer()})}},{key:"createElement",value:function(){return this.element=(0,y.default)("<div />").addClass("leplayer__youtube-wrapper").attr("tabindex","0"),this.youtubeElement=(0,y.default)("<div />").addClass("leplayer__youtube"),this.blocker=(0,y.default)("<div />").addClass("leplayer__youtube-blocker"),this.element.append(this.blocker).append(this.youtubeElement)}},{key:"initYTPlayer",value:function(){var t=this;this._initPromise=y.default.Deferred();var e=this.player.options,a={autoplay:e.autoplay?1:0,loop:e.loop?1:0,iv_load_policy:3,controls:0,modestbranding:1,rel:0,showinfo:0,cc_load_policy:0,disablekb:0,fs:0,start:e.time};return YT.ready(function(){t.options.ctx.replaceWith(t.element),t.ytPlayer=new YT.Player(t.youtubeElement[0],{videoId:t.videoId,width:e.width||"100%",playerVars:a,events:{onReady:t.onYTPReady.bind(t),onStateChange:t.onYTPStateChange.bind(t),onPlaybackRateChange:t.onYTPRateChange.bind(t),onPlaybackQualityChange:t.onYTPPlaybackQualityChange.bind(t)}})}),this._initPromise.promise()}},{key:"setAvailablePlaybackRates",value:function(){this.availableRates=this.ytPlayer.getAvailablePlaybackRates(),this.rateMin=this.availableRates[0],this.rateMax=this.availableRates[this.availableRates.length-1]}},{key:"onYTPReady",value:function(t){this._initPromise.resolve(),this._initRate(),this._initVolume(),this.setAvailablePlaybackRates()}},{key:"onYTPRateChange",value:function(t){this.trigger("ratechange")}},{key:"onYTPPlaybackQualityChange",value:function(t){var e=t.data;this._playbackQuality=this.getAvailableQualityLevels().find(function(t){return t.name===e}),this.trigger("qualitychange",this._playbackQuality)}},{key:"onYTPStateChange",value:function(t){var e=t.data;if(e!==this.lastState)switch(this.lastState=e,e){case YT.PlayerState.UNSTARTED:this.trigger("loadstart"),this.trigger("loadedmetadata"),this.trigger("durationchange"),this.trigger("ratechange"),this.trigger("volumechange"),this.trigger("trackschange"),this.player.options.autoplay&&this.trigger("play");break;case YT.PlayerState.ENDED:this.trigger("pause"),this.trigger("ended");break;case YT.PlayerState.PLAYING:this.trigger("timeupdate"),this.trigger("durationchange"),this.trigger("playing"),this.ytPlayer.setPlaybackQuality(this._nextPlaybackQuality),this.isSeeking&&this.onSeeked(),this.loadCaptions(),this.emitTimeupdate();break;case YT.PlayerState.PAUSED:this.trigger("canplay"),this.isSeeking&&this.onSeeked();break;case YT.PlayerState.BUFFERING:this.player.trigger("timeupdate"),this.player.trigger("waiting"),this.ytPlayer.setPlaybackQuality(this._nextPlaybackQuality)}}},{key:"onSeeked",value:function(){clearInterval(this.seekingInterval),this.isSeeking=!1,this.wasPausedBeforeSeek&&this.pause(),this.trigger("seeked")}},{key:"emitTimeupdate",value:function(){var t=this;clearInterval(this.seekingInterval),this.seekingInterval=setInterval(function(){t.lastState===YT.PlayerState.PAUSED?clearInterval(t.seekingInterval):t.currentTime!==t.timeBeforeSeek&&t.trigger("timeupdate")},250)}},{key:"loadCaptions",value:function(){var t=this,e=function(){return null==t.subtitles||0===t.subtitles.length};clearInterval(this._loadCaptionsWatcher),!this._tracksDisable&&this.checkCaptionsExist()&&e()&&(this.ytPlayer.loadModule("captions"),this._loadCaptionsWatcher=setInterval(function(){!e()&&t.checkCaptionsExist()&&(t.trigger("trackschange"),clearInterval(t._loadCaptionsWatcher))},250))}},{key:"checkCaptionsExist",value:function(){try{return null!=this.ytPlayer.getOptions("captions")}catch(t){return!1}}},{key:"src",set:function(t){if(null!=t&&(!this.src||this.src.url!==t.url)){var a=t.url||t.id;this.videoId=e.parseUrl(a),this.player.options.poster?this.poster=this.player.options.poster:this.poster="https://img.youtube.com/vi/"+this.videoId+"/0.jpg"}}},{key:"currentTime",get:function(){return this.ytPlayer?this.ytPlayer.getCurrentTime():0},set:function(t){this.lastState===YT.PlayerState.PAUSED&&(this.timeBeforeSeek=this.currentTime),this.isSeeking||(this.wasPausedBeforeSeek=this.paused);var e=void 0;e=t>=this.duration?this.duration:t<0?0:t,this.isSeeking=!0,this.ytPlayer.seekTo(e,!0),this.player.trigger("timeupdateload",{currentTime:e}),this.trigger("seeking"),this.emitTimeupdate()}},{key:"duration",get:function(){return this.ytPlayer&&this.ytPlayer.getDuration?this.ytPlayer.getDuration():NaN}},{key:"paused",get:function(){return!this.ytPlayer||this.lastState!==YT.PlayerState.PLAYING&&this.lastState!==YT.PlayerState.BUFFERING}},{key:"rate",get:function(){return this.ytPlayer.getPlaybackRate()},set:function(t){u(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"rate",t,this),this.ytPlayer.setPlaybackRate(t),this.trigger("ratechange")}},{key:"muted",set:function(t){var e=this;t?this.ytPlayer.mute():this.ytPlayer.unMute(),setTimeout(function(){e.trigger("volumechange")},50)},get:function(){return this.ytPlayer.isMuted()}},{key:"subtitles",get:function(){return this.checkCaptionsExist()?(this.ytPlayer.getOption("captions","tracklist")||[]).map(g):[]}},{key:"track",get:function(){return void 0===this._track&&this.checkCaptionsExist()?g(this.ytPlayer.getOption("captions","track")):this._track},set:function(t){return this._track=t,null===t?(this._tracksDisable=!0,this.ytPlayer.unloadModule("captions"),void this.trigger("trackschange")):(this.ytPlayer.setOption("captions","track",{languageCode:t.name}).setOption("captions","reload",!0),this._tracksDisable&&this.ytPlayer.loadModule("captions"),void this.trigger("trackschange"))}},{key:"playbackQuality",set:function(t){u(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"playbackQuality",t,this);var a=this.currentTime,i=this.ytPlayer.getPlayerState();i!==YT.PlayerState.UNSTARTED&&i!==YT.PlayerState.CUED&&this.ytPlayer.pauseVideo(),this._nextPlaybackQuality=t,this.ytPlayer.setPlaybackQuality(t),this.ytPlayer.seekTo(a),i!==YT.PlayerState.PAUSED&&this.ytPlayer.playVideo()},get:function(){var t=this;return null==this._playbackQuality&&(this._playbackQuality=this.getAvailableQualityLevels().find(function(e){return e.name===t.ytPlayer.getPlaybackQuality()})),this._playbackQuality}},{key:"volume",get:function(){return this.ytPlayer?this.ytPlayer.getVolume()/100:1},set:function(t){var a=this;u(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"volume",t,this),this.ytPlayer.setVolume(100*t),setTimeout(function(){a.trigger("volumechange")},50)}}],[{key:"parseUrl",value:function(t){var a=null,i=e.URL_REGEX,r=t.match(i);return 11===t.length?a=t:r&&11===r[2].length&&(a=r[2]),a}}]),e}(p);d.TEST_VIDEO=document.createElement("video"),d.canControlVolume=function(){try{var t=d.TEST_VIDEO.volume;return d.TEST_VIDEO.volume=t/2+.1,t!==d.TEST_VIDEO.volume}catch(t){return!1}},d.prototype.featureControlVolume=d.canControlVolume(),d.URL_REGEX=/^.*(youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=|\&v=)([^#\&\?]*).*/,d.QUALITY_NAMES={tiny:"140p",small:"240p",medium:"360p",large:"480p",hd720:"720p",hd1080:"1080p",highres:"HD",auto:"Авто"},d.apiLoaded=function(){var t=this;return this._loaded?y.default.Deferred().resolve():y.default.getScript("https://www.youtube.com/iframe_api").then(function(){return t._loaded=!0})},h.registerComponent("Youtube",d),h.preset("youtube",{options:{entity:"Youtube",controls:{common:[["play","volume","timeline","rate","backward","source","subtitle","divider","section","fullscreen"],[]],fullscreen:[["play","volume","timeline","rate","backward","source","subtitle","divider","section","fullscreen"]]}}}),h.preset("youtube-2035",{options:{entity:"Youtube",controls:{common:[["play","volume","timeline","rate","backward","section","fullscreen"]],fullscreen:[["play","volume","timeline","rate","backward","section","fullscreen"]],mini:[["play","timeline","volume","fullscreen"]]}}}),h.plugin("youtube",function(t){d.apiLoaded()})}});