1 line
7.3 KiB
JavaScript
1 line
7.3 KiB
JavaScript
|
|
import appRouter from"./../approuter.js";import events from"./../emby-apiclient/events.js";import MethodTimer from"./../common/methodtimer.js";function createMediaElement(instance,options){let dlg=document.querySelector(".youtubePlayerContainer");return dlg?dlg.classList.add("youtubePlayerContainer"):((dlg=document.createElement("div")).classList.add("youtubePlayerContainer"),dlg.innerHTML='<div id="player"></div>',document.body.insertBefore(dlg,document.body.firstChild),instance.videoDialog=dlg),dlg.querySelector("#player")}function onVideoResize(){let instance=this;setTimeout(function(){var player=instance.currentYoutubePlayer,dlg=instance.videoDialog;player&&dlg&&player.setSize(dlg.offsetWidth,dlg.offsetHeight)},100)}function clearTimeUpdateInterval(instance){instance.timeUpdateInterval&&instance.timeUpdateInterval.destroy(),instance.timeUpdateInterval=null}function onEndedInternal(instance,triggerStopped){clearTimeUpdateInterval(instance);var resizeListener=instance.resizeListener;resizeListener&&(window.removeEventListener("resize",resizeListener),window.removeEventListener("orientationChange",resizeListener),instance.resizeListener=null),triggerStopped&&events.trigger(instance,"stopped",[{}]),instance.currentYoutubePlayer&&instance.currentYoutubePlayer.destroy(),instance.currentYoutubePlayer=null}function onTimeUpdate(e){events.trigger(this,"timeupdate")}function setCurrentSrc(instance,elem,options,signal){if(signal.aborted){let reason=signal.reason;return reason||((reason=new Error("Aborted")).name="AbortError"),Promise.reject(reason)}return options.fullscreen&&appRouter.showVideoOsd(),new Promise(function(resolve,reject){if(signal.aborted){let reason=signal.reason;reason||((reason=new Error("Aborted")).name="AbortError"),void reject(reason)}else{console.log("youtube playing: "+options.url);let params=new URLSearchParams(options.url.split("?")[1]);var tag,firstScriptTag;window.onYouTubeIframeAPIReady=function(){if(signal.aborted){let reason=signal.reason;reason||((reason=new Error("Aborted")).name="AbortError"),void reject(reason)}else{instance.currentYoutubePlayer=new YT.Player("player",{height:instance.videoDialog.offsetHeight,width:instance.videoDialog.offsetWidth,videoId:params.get("v"),events:{onReady:function(event){if(signal.aborted){stopInternal(instance,!0,!1);let reason=signal.reason;reason||((reason=new Error("Aborted")).name="AbortError"),void reject(reason)}else event.target.playVideo()},onStateChange:function(event){if(event.data===YT.PlayerState.PLAYING){var rejectFn=reject;if(reject=null,resolve){if(signal.aborted){if(stopInternal(instance,!0,!1),rejectFn){let reason=signal.reason;reason||((reason=new Error("Aborted")).name="AbortError"),rejectFn(reason)}return}resolve(),resolve=null}instance.timeUpdateInterval||(instance.timeUpdateInterval=new MethodTimer({onInterval:onTimeUpdate.bind(instance),timeoutMs:500,type:"interval"}))}else event.data===YT.PlayerState.ENDED?onEndedInternal(instance,!0):event.data===YT.PlayerState.PAUSED&&events.trigger(instance,"pause")},onError:function(event){console.log("youtubeplayer, received error code during playback : "+event.data);event=reject;event?(reject=null,event()):events.trigger(instance,"error")}},playerVars:{controls:0,enablejsapi:1,modestbranding:1,rel:0,showinfo:0,fs:0,playsinline:1}});let resizeListener=instance.resizeListener;resizeListener?window.removeEventListener("resize",resizeListener):resizeListener=instance.resizeListener=onVideoResize.bind(instance),window.addEventListener("resize",resizeListener),window.removeEventListener("orientationChange",resizeListener),window.addEventListener("orientationChange",resizeListener)}},window.YT?window.onYouTubeIframeAPIReady():((tag=document.createElement("script")).src="https://www.youtube.com/iframe_api",(firstScriptTag=document.getElementsByTagName("script")[0]).parentNode.insertBefore(tag,firstScriptTag))}})}function YoutubePlayer(){this.name="Youtube Player",this.type="mediaplayer",this.id="youtubeplayer",this.priority=1}function stopInternal(instance,destroyPlayer,triggerStopped){var currentYoutubePl
|