1 line
13 KiB
JavaScript
1 line
13 KiB
JavaScript
!function(e){"use strict";function t(e,t){m.debug&&window.console&&console[t?"error":"log"](e)}function n(){var e,t,n,r=navigator.userAgent,s=navigator.appName,a=""+parseFloat(navigator.appVersion),o=parseInt(navigator.appVersion,10);return-1!==navigator.appVersion.indexOf("Windows NT")&&-1!==navigator.appVersion.indexOf("rv:11")?(s="IE",a="11;"):-1!==(t=r.indexOf("MSIE"))?(s="IE",a=r.substring(t+5)):-1!==(t=r.indexOf("Chrome"))?(s="Chrome",a=r.substring(t+7)):-1!==(t=r.indexOf("Safari"))?(s="Safari",a=r.substring(t+7),-1!==(t=r.indexOf("Version"))&&(a=r.substring(t+8))):-1!==(t=r.indexOf("Firefox"))?(s="Firefox",a=r.substring(t+8)):(e=r.lastIndexOf(" ")+1)<(t=r.lastIndexOf("/"))&&(s=r.substring(e,t),a=r.substring(t+1),s.toLowerCase()==s.toUpperCase()&&(s=navigator.appName)),-1!==(n=a.indexOf(";"))&&(a=a.substring(0,n)),-1!==(n=a.indexOf(" "))&&(a=a.substring(0,n)),o=parseInt(""+a,10),isNaN(o)&&(a=""+parseFloat(navigator.appVersion),o=parseInt(navigator.appVersion,10)),[s,o]}function r(e,t,n){return e.replace(new RegExp(t.replace(/([.*+?^=!:${}()|\[\]\/\\])/g,"\\$1"),"g"),n)}function s(e,t){e.length||(e=[e]);for(var n=e.length-1;n>=0;n--){var r=n>0?t.cloneNode(!0):t,s=e[n],a=s.parentNode,o=s.nextSibling;r.appendChild(s),o?a.insertBefore(r,o):a.appendChild(r)}}function a(e,t,n){if(e)if(e.classList)e.classList[n?"add":"remove"](t);else{var r=(" "+e.className+" ").replace(/\s+/g," ").replace(" "+t+" ","");e.className=r+(n?" "+t:"")}}function o(e,t,n){e.addEventListener(t,n,!1)}function i(e,t,n){e.removeEventListener(t,n,!1)}function c(e){var t=d().isFullScreen()?{x:0,y:0}:l(e.currentTarget);return{x:e.clientX-t.x,y:e.clientY-t.y}}function l(e){for(var t=0,n=0;e;)t+=e.offsetLeft-e.scrollLeft+e.clientLeft,n+=e.offsetTop-e.scrollTop+e.clientTop,e=e.offsetParent;return{x:t,y:n}}function u(e,t){for(var n in t)t[n]&&t[n].constructor&&t[n].constructor===Object?(e[n]=e[n]||{},u(e[n],t[n])):e[n]=t[n];return e}function d(){var e={supportsFullScreen:!1,isFullScreen:function(){return!1},requestFullScreen:function(){},cancelFullScreen:function(){},fullScreenEventName:"",element:null,prefix:""},t="webkit moz o ms khtml".split(" ");if("undefined"!=typeof document.cancelFullScreen)e.supportsFullScreen=!0;else for(var n=0,r=t.length;r>n;n++){if(e.prefix=t[n],"undefined"!=typeof document[e.prefix+"CancelFullScreen"]){e.supportsFullScreen=!0;break}if("undefined"!=typeof document.msExitFullscreen&&document.msFullscreenEnabled){e.prefix="ms",e.supportsFullScreen=!0;break}}return"webkit"===e.prefix&&navigator.userAgent.match(/Version\/[\d\.]+.*Safari/)&&(e.supportsFullScreen=!1),e.supportsFullScreen&&(e.fullScreenEventName="ms"==e.prefix?"MSFullscreenChange":e.prefix+"fullscreenchange",e.isFullScreen=function(){switch(this.prefix){case"":return document.fullScreen;case"webkit":return document.webkitIsFullScreen;case"ms":return null!==document.msFullscreenElement;default:return document[this.prefix+"FullScreen"]}},e.requestFullScreen=function(e){return""===this.prefix?e.requestFullScreen():e[this.prefix+("ms"==this.prefix?"RequestFullscreen":"RequestFullScreen")]("webkit"===this.prefix?e.ALLOW_KEYBOARD_INPUT:null)},e.cancelFullScreen=function(){return""===this.prefix?document.cancelFullScreen():document[this.prefix+("ms"==this.prefix?"ExitFullscreen":"CancelFullScreen")]()},e.element=function(){return""===this.prefix?document.fullscreenElement:document[this.prefix+"FullscreenElement"]}),e}function p(e){function l(){for(B.subcount=0;b(B.captions[B.subcount][0])<B.media.currentTime.toFixed(1);)if(B.subcount++,B.subcount>B.captions.length-1){B.subcount=B.captions.length-1;break}}function u(){a(B.container,m.classes.captions.enabled,!0),m.captions.defaultActive&&(a(B.container,m.classes.captions.active,!0),B.buttons.captions.setAttribute("checked","checked"))}function p(e){var t=[];return t=e.split(" --> "),v(t[0])}function b(e){var t=[];return t=e.split(" --> "),v(t[1])}function v(e){if(null===e||void 0===e)return 0;var t,n=[],r=[];return n=e.split(","),r=n[0].split(":"),t=Math.floor(60*r[0]*60)+Math.floor(60*r[1])+Math.floor(r[2])}function g(e){return B.container.querySelectorAll(e)}function y(e){return g(e)[0]}function h(){try{return window.self!==window.top}catch(e){return!0}}function x(){t("Injecting custom controls");var e=m.html;e=r(e,"{aria-label}",m.playAriaLabel),e=r(e,"{id}",B.random),B.container.insertAdjacentHTML("beforeend",e)}function k(){B.controls=y(m.selectors.controls),B.buttons={},B.buttons.play=y(m.selectors.buttons.play),B.buttons.pause=y(m.selectors.buttons.pause),B.buttons.restart=y(m.selectors.buttons.restart),B.buttons.rewind=y(m.selectors.buttons.rewind),B.buttons.forward=y(m.selectors.buttons.forward),B.buttons.mute=y(m.selectors.buttons.mute),B.buttons.captions=y(m.selectors.buttons.captions),B.buttons.fullscreen=y(m.selectors.buttons.fullscreen),B.progress={},B.progress.bar=y(m.selectors.progress),B.progress.text=B.progress.bar.getElementsByTagName("span")[0],B.volume=y(m.selectors.buttons.volume),B.duration=y(m.selectors.duration),B.seekTime=g(m.selectors.seekTime)}function w(){if(B.media=B.container.querySelectorAll("audio, video")[0],!B.media)return t("No audio or video element found!",!0),!1;if(B.media.removeAttribute("controls"),B.type="video"==B.media.tagName.toLowerCase()?"video":"audio",a(B.container,m.classes[B.type],!0),a(B.container,m.classes.stopped,null===B.media.getAttribute("autoplay")),"video"===B.type){var e=document.createElement("div");e.setAttribute("class",m.classes.videoWrapper),s(B.media,e),B.videoContainer=e}}function T(){if("video"===B.type){B.videoContainer.insertAdjacentHTML("afterbegin","<div class='"+m.selectors.captions.replace(".","")+"'></div>"),B.captionsContainer=y(m.selectors.captions),B.isTextTracks=!1,B.media.textTracks&&(B.isTextTracks=!0);for(var e,n="",r=B.media.childNodes,s=0;s<r.length;s++)"track"===r[s].nodeName.toLowerCase()&&(e=r[s].getAttribute("kind"),"captions"===e&&(n=r[s].getAttribute("src")));if(B.captionExists=!0,""===n?(B.captionExists=!1,t("No caption track found.")):t("Caption track found; URI: "+n),B.captionExists){var i,c,l={};if("IE"===B.browserName&&10===B.browserMajorVersion||"IE"===B.browserName&&11===B.browserMajorVersion||"Firefox"===B.browserName&&B.browserMajorVersion>=31||"Safari"===B.browserName&&B.browserMajorVersion>=7)for(t("Detected IE 10/11 or Firefox 31+ or Safari 7+"),B.isTextTracks=!1,l={},i=B.media.textTracks,c=0;c<i.length;c++)l=B.media.textTracks[c],l.mode="hidden";if(B.isTextTracks)for(t("textTracks supported"),u(B),l={},i=B.media.textTracks,c=0;c<i.length;c++)l=B.media.textTracks[c],l.mode="hidden","captions"===l.kind&&o(l,"cuechange",function(){this.activeCues[0]&&this.activeCues[0].hasOwnProperty("text")&&(B.captionsContainer.innerHTML=this.activeCues[0].text)});else if(t("textTracks not supported so rendering captions manually"),u(B),B.currentCaption="",B.subcount=0,B.captions=[],o(B.media,"timeupdate",function(){B.media.currentTime.toFixed(1)>p(B.captions[B.subcount][0])&&B.media.currentTime.toFixed(1)<b(B.captions[B.subcount][0])&&(B.currentCaption=B.captions[B.subcount][1]),B.media.currentTime.toFixed(1)>b(B.captions[B.subcount][0])&&B.subcount<B.captions.length-1&&B.subcount++,B.captionsContainer.innerHTML=B.currentCaption}),""!==n){var d=new XMLHttpRequest;d.onreadystatechange=function(){if(4===d.readyState)if(200===d.status){B.captions=[];var e,n=[],r=d.responseText;n=r.split("\n\n");for(var s=0;s<n.length;s++)e=n[s],B.captions[s]=[],B.captions[s]=e.split("\n");B.captions.shift(),t("Successfully loaded the caption file via ajax.")}else t("There was a problem loading the caption file via ajax.",!0)},d.open("get",n,!0),d.send()}"Safari"===B.browserName&&7===B.browserMajorVersion&&(t("Safari 7 detected; removing track from DOM"),i=B.media.getElementsByTagName("track"),B.media.removeChild(i[0]))}else a(B.container,m.classes.captions.enabled)}}function S(){B.seekTime[0].innerHTML=m.seekInterval,B.seekTime[1].innerHTML=m.seekInterval}function F(){if("video"===B.type&&m.fullscreen.enabled){var e=f.supportsFullScreen;e||m.fullscreen.fallback&&!h()?(t((e?"Native":"Fallback")+" fullscreen enabled"),a(B.container,m.classes.fullscreen.enabled,!0)):t("Fullscreen not supported and fallback disabled.")}}function N(){B.media.play(),a(B.container,m.classes.stopped),a(B.container,m.classes.playing,!0)}function C(){B.media.pause(),a(B.container,m.classes.playing),a(B.container,m.classes.stopped,!0)}function I(){B.media.currentTime=0,B.isTextTracks||(B.subcount=0),N()}function M(e){"undefined"==typeof e&&(e=m.seekInterval);var t=B.media.currentTime-e;B.media.currentTime=0>t?0:t,B.isTextTracks||"video"!==B.type||l(B)}function E(e){"undefined"==typeof e&&(e=m.seekInterval);var t=B.media.currentTime+e;B.media.currentTime=t>B.media.duration?B.media.duration:t,B.isTextTracks||"video"!==B.type||l(B)}function L(){var e=f.supportsFullScreen;event.type===f.fullScreenEventName?m.fullscreen.active=f.isFullScreen():e?(f.isFullScreen()?f.cancelFullScreen():f.requestFullScreen(B.container),m.fullscreen.active=f.isFullScreen()):(m.fullscreen.active=!m.fullscreen.active,m.fullscreen.active?(o(document,"keyup",A),document.body.style.overflow="hidden"):(i(document,"keyup",A),document.body.style.overflow="")),a(B.container,m.classes.fullscreen.active,m.fullscreen.active)}function A(e){27===(e.which||e.charCode||e.keyCode)&&m.fullscreen.active&&L()}function V(e){"undefined"==typeof e&&(e=m.storage.enabled&&m.storage.supported?window.localStorage.plyr_volume||m.volume:m.volume),e>10&&(e=10),B.volume.value=e,B.media.volume=parseFloat(e/10),q(),m.storage.enabled&&m.storage.supported&&(window.localStorage.plyr_volume=e)}function O(e){"undefined"==typeof active&&(e=!B.media.muted,B.buttons.mute.checked=e),B.media.muted=e,q()}function j(e){"undefined"==typeof e&&(e=-1===B.container.className.indexOf(m.classes.captions.active),B.buttons.captions.checked=e),e?a(B.container,m.classes.captions.active,!0):a(B.container,m.classes.captions.active)}function q(){a(B.container,m.classes.muted,0===B.media.volume||B.media.muted)}function H(){o(B.buttons.play,"click",function(){N(),B.buttons.pause.focus()}),o(B.buttons.pause,"click",function(){C(),B.buttons.play.focus()}),o(B.buttons.restart,"click",I),o(B.buttons.rewind,"click",function(){M(m.seekInterval)}),o(B.buttons.forward,"click",function(){E(m.seekInterval)}),o(B.volume,"change",function(){V(this.value)}),o(B.buttons.mute,"change",function(){O(this.checked)}),o(B.buttons.fullscreen,"click",L),o(document,f.fullScreenEventName,L),"video"===B.type&&m.click&&o(B.videoContainer,"click",function(){B.media.paused?N():B.media.ended?I():C()}),o(B.media,"timeupdate",function(){B.secs=parseInt(B.media.currentTime%60),B.mins=parseInt(B.media.currentTime/60%60),B.secs=("0"+B.secs).slice(-2),B.mins=("0"+B.mins).slice(-2),B.duration.innerHTML=B.mins+":"+B.secs}),o(B.media,"timeupdate",function(){B.percent=100/B.media.duration*B.media.currentTime,B.percent>0&&(B.progress.bar.value=B.percent,B.progress.text.innerHTML=B.percent)}),o(B.progress.bar,"click",function(e){B.pos=c(e).x/this.offsetWidth,B.media.currentTime=B.pos*B.media.duration,B.isTextTracks||"video"!==B.type||l(B)}),o(B.buttons.captions,"click",function(){j(this.checked)}),o(B.media,"ended",function(){"video"===B.type&&(B.captionsContainer.innerHTML=""),a(B.container,m.classes.stopped,!0),a(B.container,m.classes.playing)})}function R(){return f=d(),B.browserInfo=n(),B.browserName=B.browserInfo[0],B.browserMajorVersion=B.browserInfo[1],t(B.browserName+" "+B.browserMajorVersion),"IE"!==B.browserName||8!==B.browserMajorVersion&&9!==B.browserMajorVersion?(m.playAriaLabel="undefined"!=typeof m.title&&m.title.length?"Play "+m.title:"Play",w(),B.random=Math.floor(1e4*Math.random()),x(),k(),V(),F(),T(),S(),H(),void 0):(t("Browser not suppported.",!0),!1)}var B=this;return B.container=e,R(),{media:B.media,play:N,pause:C,restart:I,rewind:M,forward:E,setVolume:V,toggleMute:O,toggleCaptions:j}}var f,m,b={enabled:!0,debug:!1,seekInterval:10,volume:5,click:!0,selectors:{container:".player",controls:".player-controls",buttons:{play:"[data-player='play']",pause:"[data-player='pause']",restart:"[data-player='restart']",rewind:"[data-player='rewind']",forward:"[data-player='fast-forward']",mute:"[data-player='mute']",volume:"[data-player='volume']",captions:"[data-player='captions']",fullscreen:"[data-player='fullscreen']"},progress:".player-progress",captions:".player-captions",duration:".player-duration",seekTime:".player-seek-time"},classes:{video:"player-video",videoWrapper:"player-video-wrapper",audio:"player-audio",stopped:"stopped",playing:"playing",muted:"muted",captions:{enabled:"captions-enabled",active:"captions-active"},fullscreen:{enabled:"fullscreen-enabled",active:"fullscreen-active"}},captions:{defaultActive:!1},fullscreen:{enabled:!0,fallback:!0},storage:{enabled:!0,supported:function(){try{return"localStorage"in window&&null!==window.localStorage}catch(e){return!1}}}};e.setup=function(e){if(m=u(b,e),!m.enabled)return!1;for(var t=document.querySelectorAll(m.selectors.container),n=[],r=t.length-1;r>=0;r--){var s=t[r];"undefined"==typeof s.plyr&&(s.plyr=new p(s)),n.push(s.plyr)}return n}}(this.plyr=this.plyr||{}); |