|
Server : Apache/2.4.58 (Win64) OpenSSL/3.1.3 PHP/8.2.12 System : Windows NT SERVER-PC 10.0 build 26200 (Windows 11) AMD64 User : ServerPC ( 0) PHP Version : 8.2.12 Disable Function : NONE Directory : C:/Users/ServerPC/AppData/Roaming/Emby-Server/system/dashboard-ui/modules/htmlvideoplayer/ |
Upload File : |
define(["exports","./../htmlvideoplayer/htmlmediahelper.js","./../htmlvideoplayer/basehtmlplayer.js","./../emby-apiclient/events.js","./../emby-apiclient/connectionmanager.js","./../approuter.js","./../browser.js","./../common/globalize.js","./../common/usersettings/usersettings.js","./../common/subtitleappearancehelper.js","./../common/playback/playbackmanager.js","./../common/appsettings.js"],function(_exports,_htmlmediahelper,_basehtmlplayer,_events,_connectionmanager,_approuter,_browser,_globalize,_usersettings,_subtitleappearancehelper,_playbackmanager,_appsettings){Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,require(["css!modules/htmlvideoplayer/style.css"]);var WebVTT,isNativeLG="webos"===globalThis.appMode;function enableChunkedResponse(track){return!("External"!==track.DeliveryMethod||!track.IsChunkedResponse)}function getMediaStreamTracks(mediaSource,type){return mediaSource.MediaStreams.filter(function(s){return s.Type===type})}function getMediaStreamSubtitleTracks(mediaSource){return mediaSource.MediaStreams.filter(function(s){return"Subtitle"===s.Type})}function setTracks(elem,tracksHtml){elem.innerHTML=tracksHtml}function getTextTrackUrl(track,item,mediaSource){return mediaSource.IsLocal&&track.Path?track.Path:_playbackmanager.default.getSubtitleUrl(track,item.ServerId)}function renderCues(instance,cues,hasBeenReset){var subtitleTextElement=instance.videoSubtitlesElem;subtitleTextElement&&WebVTT?WebVTT.processCues(window,cues,subtitleTextElement,instance.webVTTStyleOptions,hasBeenReset):console.log("renderCues: nothing to do")}function rejectOnAbort(signal){signal=signal.reason;return signal||((signal=new Error("Aborted")).name="AbortError"),Promise.reject(signal)}function setSubtitleAppearance(instance){var enablePositionFromSettings=instance.enableSubtitlePositionFromSettings,appearanceSettings=_usersettings.default.getSubtitleAppearanceSettings(),subtitleStyles=_subtitleappearancehelper.default.getStyleObjects(appearanceSettings),positionTop=enablePositionFromSettings?appearanceSettings.positionTop:"0";if(null!=positionTop)try{document.documentElement.style.setProperty("--subtitles-window-top",positionTop+"%")}catch(err){console.log("error setting --subtitles-window-top css variable")}positionTop=enablePositionFromSettings?appearanceSettings.positionBottom:"0";if(null!=positionTop)try{document.documentElement.style.setProperty("--subtitles-window-bottom",positionTop+"%")}catch(err){console.log("error setting --subtitles-window-bottom css variable")}instance.webVTTStyleOptions={textStyle:subtitleStyles.text,windowStyle:subtitleStyles.window}}function destroyCustomTrack(instance,videoElement){if(instance._resizeObserver&&(instance._resizeObserver.disconnect(),instance._resizeObserver=null),instance.videoSubtitlesElem){var elem=instance.videoSubtitlesElem;try{elem.remove()}catch(err){console.log("Error removing dialog element: "+err)}instance.videoSubtitlesElem=null}if(instance.currentTrackEvents=null,videoElement)for(var allTracks=videoElement.textTracks||[],i=0;i<allTracks.length;i++){var currentTrack=allTracks[i];-1!==currentTrack.label.indexOf("manualTrack")&&(currentTrack.mode="disabled")}instance.customTrackIndex=-1,instance.currentClock=null,instance._currentSubtitleOffset=0;elem=instance.currentSubtitlesOctopus,elem&&(elem.dispose(),instance.currentSubtitlesOctopus=null),videoElement=instance.currentAssRenderer;videoElement&&videoElement.setEnabled(!1),instance.currentAssRenderer=null}function setCueAppearance(instance){var instance=instance.id+"-cuestyle",styleElem=document.querySelector("#"+instance),instance=(styleElem||((styleElem=document.createElement("style")).id=instance,styleElem.type="text/css",document.getElementsByTagName("head")[0].appendChild(styleElem)),_usersettings.default.getSubtitleAppearanceSettings());styleElem.innerHTML=function(appearance,selector){for(var html=(html=selector+"::cue {")+appearance.text.map(function(s){return s.name+":"+s.value+" !important;"}).join("")+"}",i=0,length=appearance.text.length;i<length;i++){var prop=appearance.text[i];"background-color"===prop.name&&(html+=" "+selector+"::-webkit-media-text-track-display-backdrop {background-color: "+prop.value+"!important;}")}return html}(_subtitleappearancehelper.default.getStyles(instance,{isCue:!0}),".htmlvideoplayer")}function getNormalizedIndex(track){var index=track.Index||0;return"VideoSideData"===track.DeliveryMethod&&(index+=1e3),index}function sortMediaStreamTextTracks(trackA,trackB){trackA=getNormalizedIndex(trackA),trackB=getNormalizedIndex(trackB);return trackA<trackB?-1:trackB<trackA?1:0}function loadWebVTT(){return Emby.importModule("./modules/webvtt/vtt.js").then(function(response){return WebVTT=response})}function fetchSubtitleContent(url,returnNullIfSecureContext,chunked,onChunk,signal){return returnNullIfSecureContext&&(url.toLowerCase().startsWith("https://")||url.toLowerCase().startsWith("http://localhost"))?Promise.resolve(null):(returnNullIfSecureContext={method:"GET",credentials:"same-origin"},signal&&(returnNullIfSecureContext.signal=signal),fetch(url,returnNullIfSecureContext).then(function(response){var body;return chunked?null!=(body=response.body)&&body.getReader?function readChunks(reader,decoder,currentPartialChunk,onChunk,signal){return reader.read().then(function(result){return result.done?(currentPartialChunk&&onChunk(currentPartialChunk),Promise.resolve()):null!=signal&&signal.aborted?rejectOnAbort(signal):(result=result.value,(result=decoder.decode(result,{stream:!0})).trim().length?result&&(currentPartialChunk+=result):(currentPartialChunk&&onChunk(currentPartialChunk),currentPartialChunk=""),readChunks(reader,decoder,currentPartialChunk,onChunk,signal))})}(body.getReader(),new TextDecoder,"",onChunk,signal):response.text().then(onChunk):response.text()}))}function fetchVttSubtitles(track,item,mediaSource,onCue,signal){var promises=[loadWebVTT()];Promise.all(promises).then(function(responses){var url=getTextTrackUrl(track,item,mediaSource),responses=responses[0],parser=new responses.Parser(window,responses.StringDecoder());function onChunk(vtt){console.log("onchunk: "+vtt),parser.parse(vtt),parser.flush()}return parser.oncue=onCue,enableChunkedResponse(track)?fetchSubtitleContent(url,!1,!0,onChunk,signal):fetchSubtitleContent(url,!1,!1,null,signal).then(onChunk)})}var subtitleTrackIndexToSetOnPlaying,audioTrackIndexToSetOnPlaying,initialSubtitleTrackTimeout,initialAudioTrackTimeout,supportedFeatures,SupportAttachmentFonts=!_browser.default.chromecast;function getAttachmentFonts(apiClient,mediaSource,subtitleStream){return!SupportAttachmentFonts||subtitleStream.IsExternal?[]:mediaSource.MediaStreams.filter(function(i){return!("Attachment"!==i.Type||!i.DeliveryUrl||!function(codec){switch((null==codec?void 0:codec.toLowerCase())||""){case"otf":case"ttf":case"":return 1;default:return}}(i.Codec))}).map(function(i){return{title:i.DisplayTitle,codec:i.Codec,url:apiClient.serverAddress()+i.DeliveryUrl}})}function getAvailableFonts(apiClient,mediaSource,subtitleStream){return getAttachmentFonts(apiClient,mediaSource,subtitleStream).map(function(i){var _i$title,obj={};return obj[(null==(_i$title=i.title)?void 0:_i$title.toLowerCase())||"unknown"]=i.url,obj})}function getFallbackFontUrl(track){var url;return isNativeLG&&_browser.default.sdkVersion&&_browser.default.sdkVersion<5?(url=_approuter.default.baseUrl()+"/bower_components/javascriptsubtitlesoctopus/dist/default.woff2",new Promise(function(resolve,reject){var xhr=new XMLHttpRequest;xhr.open("GET",url,!0),xhr.responseType="blob",xhr.onload=function(e){resolve(URL.createObjectURL(this.response))},xhr.onerror=reject,xhr.send()})):function(track){var langsNotNeedingFont;return!(track=(track.Language||"").toLowerCase())||!(langsNotNeedingFont=["dut","nld","nl","eng","en","en-us","en-gb","fin","fi","fre","fra","fr","ger","deu","de","heb","he","hun","hu","ita","it","nor","no","pol","pl","por","pt","pob","pt-br","rus","ru","spa","es","es-mx","es-419","swe","sv"]).includes(track)&&!langsNotNeedingFont.includes(track.split("-")[0])}(track)?Promise.resolve(_approuter.default.baseUrl()+"/modules/fonts/GoNotoKurrent.woff2"):Promise.resolve(null)}function resetVideoRendererSize(instance){var width,subtitlesOctopus=instance.currentSubtitlesOctopus,subtitlesOctopus=(subtitlesOctopus&&subtitlesOctopus.resize(),instance.currentAssRenderer);subtitlesOctopus&&(width=(instance=instance._mediaElement).offsetWidth,instance=instance.offsetHeight,console.log("videoElement resized: "+width+"x"+instance),subtitlesOctopus.resize(width,instance,0,0))}function ensureCustomSubtitlesElement(instance,videoElement,enableAutomaticPositioning){var subtitlesContainer;instance.videoSubtitlesElem||((subtitlesContainer=document.createElement("div")).classList.add("videoSubtitles"),enableAutomaticPositioning&&subtitlesContainer.classList.add("videoSubtitles-autoposition"),instance.videoSubtitlesElem=subtitlesContainer,instance.enableSubtitlePositionFromSettings=enableAutomaticPositioning,setSubtitleAppearance(instance),videoElement.parentNode.appendChild(subtitlesContainer))}function removeCueEvents(instance,track){track.removeEventListener("cuechange",instance.boundOnCueChange)}function addCueEvents(instance,videoElement,track){loadWebVTT(),ensureCustomSubtitlesElement(instance,videoElement,!0),removeCueEvents(instance,track),track.addEventListener("cuechange",instance.boundOnCueChange)}function renderWithSubtitlesOctopus(instance,videoElement,track,item,mediaSource){loadWebVTT().then(function(){var textTrackUrl=getTextTrackUrl(track,item,mediaSource);Promise.all([fetchSubtitleContent(textTrackUrl,!0,!1),Emby.importModule("./bower_components/javascriptsubtitlesoctopus/dist/subtitles-octopus.js"),getFallbackFontUrl(track)]).then(function(responses){var subContent=responses[0],canvasParent=(ensureCustomSubtitlesElement(instance,videoElement,!1),instance.videoSubtitlesElem),canvas=(canvasParent.classList.add("htmlvideo-subtitles-canvas-parent","flex","align-items-flex-start","justify-content-center"),canvasParent.querySelector("canvas")),apiClient=(canvas||((canvas=document.createElement("canvas")).classList.add("htmlvideo-subtitles-canvas"),canvasParent.appendChild(canvas)),_connectionmanager.default.getApiClient(item)),SubtitlesOctopus=responses[1],fontUrls=function(apiClient,mediaSource,subtitleStream){return getAttachmentFonts(apiClient,mediaSource,subtitleStream).map(function(i){return i.url})}(apiClient,mediaSource,track);console.log("available fonts: "+JSON.stringify(getAvailableFonts(apiClient,mediaSource,track))),instance.currentSubtitlesOctopus=new SubtitlesOctopus({video:videoElement,subUrl:subContent?null:textTrackUrl,subContent:subContent,workerUrl:_approuter.default.baseUrl()+"/bower_components/javascriptsubtitlesoctopus/dist/subtitles-octopus-worker.js",legacyWorkerUrl:_approuter.default.baseUrl()+"/bower_components/javascriptsubtitlesoctopus/dist/subtitles-octopus-worker-legacy.js",fallbackFont:responses[2],fonts:fontUrls,availableFonts:null,onError:function(){instance.onError("mediadecodeerror")},lossyRender:null!=window.createImageBitmap,renderMode:null!=window.createImageBitmap?"lossy":"wasm-blend",detectAlphaBug:!_browser.default.chromecast,canvas:canvas,canvasParent:canvasParent}),instance._resizeObserver||(instance._resizeObserver=new ResizeObserver(instance.boundOnVideoResize,{}),instance._resizeObserver.observe(videoElement))})})}function renderAssSsa(instance,videoElement,track,item,mediaSource){var elem,supportedOnNativeLG=isNativeLG&&_browser.default.sdkVersion&&5<=_browser.default.sdkVersion;(window.Worker&&(elem=document.createElement("canvas")).getContext&&elem.getContext("2d")&&(!isNativeLG||supportedOnNativeLG)?renderWithSubtitlesOctopus:function(instance,videoElement,track,item,mediaSource){var rendererSettings={enableSvg:!1};Emby.importModule("./modules/libjass/libjass.js").then(function(libjass){var textTrackUrl=getTextTrackUrl(track,item,mediaSource);libjass.ASS.fromUrl(textTrackUrl).then(function(ass){var clock=new libjass.renderers.ManualClock,renderer=(instance.currentClock=clock,new libjass.renderers.WebRenderer(ass,clock,videoElement.parentNode,rendererSettings));(instance.currentAssRenderer=renderer).addEventListener("ready",function(){try{renderer.resize(videoElement.offsetWidth,videoElement.offsetHeight,0,0),instance._resizeObserver||(instance._resizeObserver=new ResizeObserver(instance.boundOnVideoResize,{}),instance._resizeObserver.observe(videoElement))}catch(ex){}})},function(e){instance.onError("mediadecodeerror")})})})(instance,videoElement,track,item,mediaSource)}function renderTracksEvents(instance,videoElement,track,item,mediaSource){if(!mediaSource.IsLocal||"External"===track.DeliveryMethod){var format=(track.Codec||"").toLowerCase();if("ssa"===format||"ass"===format)return void renderAssSsa(instance,videoElement,track,item,mediaSource)}if(function(track){return isNativeLG&&_browser.default.sdkVersion&&_browser.default.sdkVersion<3||!!enableChunkedResponse(track)}(track))!function(instance,videoElement,track,item,mediaSource){ensureCustomSubtitlesElement(instance,videoElement,!0),instance.currentTrackEvents=[],fetchVttSubtitles(track,item,mediaSource,function(cue){var _instance$currentTrac;null!=(_instance$currentTrac=instance.currentTrackEvents)&&_instance$currentTrac.push(cue)})}(instance,videoElement,track,item,mediaSource);else{for(var trackElement=null,expectedId="manualTrack"+track.Index,allTracks=videoElement.textTracks,i=0;i<allTracks.length;i++){var currentTrack=allTracks[i];if(currentTrack.label===expectedId){trackElement=currentTrack;break}currentTrack.mode="disabled",removeCueEvents(instance,currentTrack)}trackElement?(trackElement.mode="hidden",addCueEvents(instance,videoElement,trackElement)):((trackElement=videoElement.addTextTrack("subtitles","manualTrack"+track.Index,track.Language||"und")).mode="hidden",addCueEvents(instance,videoElement,trackElement),fetchVttSubtitles(track,item,mediaSource,function(trackEvent){trackEvent=new(window.VTTCue||window.TextTrackCue)(trackEvent.startTime,trackEvent.endTime,trackEvent.text);trackElement.addCue(trackEvent)}))}}function setTrackForCustomDisplay(instance,videoElement,track){var item,currentPlayOptions;track?instance.customTrackIndex!==track.Index&&(item=(currentPlayOptions=instance._currentPlayOptions).item,currentPlayOptions=currentPlayOptions.mediaSource,destroyCustomTrack(instance,videoElement),instance.customTrackIndex=track.Index,renderTracksEvents(instance,videoElement,track,item,currentPlayOptions)):destroyCustomTrack(instance,videoElement)}function setCurrentTrackElement(instance,mediaElement,streamIndex,currentPlayOptions){if(instance.setSubtitleOffset(0),currentPlayOptions){var mediaSource=currentPlayOptions.mediaSource,currentPlayOptions=(isNativeLG&&_browser.default.sdkVersion&&_browser.default.sdkVersion<3&&("DirectStream"!==(currentPlayOptions=currentPlayOptions.playMethod)&&"DirectPlay"!==currentPlayOptions||"mkv"===mediaSource.Container&&(streamIndex=-1)),console.log("setCurrentTrackElement Setting new text track index to: "+streamIndex),getMediaStreamSubtitleTracks(mediaSource)),mediaSource=-1===streamIndex?null:currentPlayOptions.filter(function(t){return t.Index===streamIndex})[0],targetIndex=(!function(currentSrc,track){if(track){if("Embed"===track.DeliveryMethod)return 1;if("Hls"===track.DeliveryMethod)return 1;if("VideoSideData"===track.DeliveryMethod)return 1;if(enableChunkedResponse(track))return;track=(track.Codec||"").toLowerCase();if("ssa"===track||"ass"===track)return}return!(_browser.default.chromecast&&-1!==(currentSrc||"").toLowerCase().indexOf(".m3u8")||isNativeLG&&_browser.default.sdkVersion&&_browser.default.sdkVersion<3)}(instance._currentSrc,mediaSource)?(setTrackForCustomDisplay(instance,mediaElement,mediaSource),streamIndex=-1,mediaSource=null):(setTrackForCustomDisplay(instance,mediaElement,null),-1!==streamIndex&&setCueAppearance(instance)),-1),expectedId="textTrack"+streamIndex;if(mediaElement){for(var found,elemTextTracks=mediaElement.textTracks,elemTextTrackslength=elemTextTracks.length,i=0;i<elemTextTrackslength;i++){var tt=elemTextTracks[i],textTrackId=tt.id;console.log("comparing textTrackId "+textTrackId+" to "+expectedId),textTrackId===expectedId&&(targetIndex=i),tt.mode="disabled",removeCueEvents(instance,tt)}if(targetIndex<0&&(currentPlayOptions=currentPlayOptions.filter(function(s){return s.IsTextSubtitleStream&&("Hls"===s.DeliveryMethod||"VideoSideData"===s.DeliveryMethod)}),console.log("mediaStreamTextTracks: "+currentPlayOptions.length),currentPlayOptions.sort(sortMediaStreamTextTracks),!mediaSource||"Hls"!==mediaSource.DeliveryMethod&&"VideoSideData"!==mediaSource.DeliveryMethod||(targetIndex=currentPlayOptions.indexOf(mediaSource))),console.log("setCurrentTrackElement targetIndex: "+targetIndex+", track language: "+(null==mediaSource?void 0:mediaSource.Language)),0<=targetIndex&&targetIndex<elemTextTrackslength){for(var _i=0,length=elemTextTracks.length;_i<length;_i++){var _textTrack=elemTextTracks[_i];console.log("element has text track: "+_textTrack.id+", language: "+_textTrack.language+", kind: "+_textTrack.kind+", label: "+_textTrack.label)}currentPlayOptions=elemTextTracks,mediaSource=(currentPlayOptions=targetIndex>=(currentPlayOptions="VideoSideData"===mediaSource.DeliveryMethod?function(tracks,kind){for(var list=[],i=0,length=tracks.length;i<length;i++){var track=tracks[i];track.kind===kind&&list.push(track)}return list}(elemTextTracks,"captions"):currentPlayOptions).length?elemTextTracks:currentPlayOptions)[targetIndex];console.log("marking track hidden: "+mediaSource.id+", language: "+mediaSource.language+", kind: "+mediaSource.kind+", label: "+mediaSource.label),mediaSource.mode="hidden",found=!0,addCueEvents(instance,mediaElement,mediaSource)}found||-1===targetIndex||console.log("could not find text track for selection. "+elemTextTrackslength+" total tracks")}}}function startInitialSubtitleTrackTimeout(instance){initialSubtitleTrackTimeout&&(clearTimeout(initialSubtitleTrackTimeout),initialSubtitleTrackTimeout=null),null!=subtitleTrackIndexToSetOnPlaying&&(initialSubtitleTrackTimeout=setTimeout(instance.boundonInitialSubtitleTrackTimeout,400))}function startInitialAudioTrackTimeout(instance){initialAudioTrackTimeout&&(clearTimeout(initialAudioTrackTimeout),initialAudioTrackTimeout=null),null!=audioTrackIndexToSetOnPlaying&&(initialAudioTrackTimeout=setTimeout(instance.boundonInitialAudioTrackTimeout,300))}function HtmlVideoPlayer(){_basehtmlplayer.default.call(this),this.name="Video Player",this.id="htmlvideoplayer",this.mediaType="video",this.priority=1,this.customTrackIndex=-1;var videoDialog,self=this;function sortDefaultTracksFirst(trackA,trackB){return trackA.IsDefault===trackB.IsDefault?0:trackA.IsDefault?-1:trackB.IsDefault?1:0}function onAddTrack(e){e=e.track;console.log("onAddTrack: "+e.id+", language: "+e.language+", kind: "+e.kind+", label: "+e.label),startInitialSubtitleTrackTimeout(self)}function onRemoveTrack(e){e=e.track;console.log("onRemoveTrack: "+e.id+", language: "+e.language+", kind: "+e.kind+", label: "+e.label)}function onClick(){_events.default.trigger(self,"click")}function onDblClick(){_events.default.trigger(self,"dblclick")}this.webVTTStyleOptions={},this.boundonUserSettingsChange=function(e,name){if("localplayersubtitleappearance3"===name){setSubtitleAppearance(this);for(var textTracks=(null==(name=this._mediaElement)?void 0:name.textTracks)||[],i=0,length=textTracks.length;i<length;i++){var track=textTracks[i],trackMode=track.mode;if("showing"===trackMode||"hidden"===trackMode)if(track.cues)try{renderCues(this,track.activeCues,!0)}catch(err){console.log("error in renderCues: "+err)}}}}.bind(this),this.boundonInitialAudioTrackTimeout=function(){var index=audioTrackIndexToSetOnPlaying;null!=index&&this.canSetAudioStreamIndex()&&this.setAudioStreamIndex(index)}.bind(this),this.boundonInitialSubtitleTrackTimeout=function(){var index=subtitleTrackIndexToSetOnPlaying;null!=index&&(console.log("setInitialSubtitleTrack"),setCurrentTrackElement(this,this._mediaElement,index,this._currentPlayOptions))}.bind(this),this.boundOnCueChange=function(e){renderCues(this,e.target.activeCues)}.bind(this),this.boundOnVideoResize=function(){_browser.default.iOS||_browser.default.osx?setTimeout(this.boundresetVideoRendererSize,500):resetVideoRendererSize(this)}.bind(this),this.boundresetVideoRendererSize=resetVideoRendererSize.bind(this),self.play=function(options,signal){var promise,elem;return signal.aborted?rejectOnAbort(signal):(promise=options.fullscreen?_approuter.default.showVideoOsd():Promise.resolve(),self._started=!1,self._timeUpdated=!1,self._currentTime=null,self._hlsPlayer&&self.stopInternal(!0,!1,!1),elem=function(){var dlg=document.querySelector(".htmlVideoPlayerContainer");dlg||((dlg=document.createElement("div")).classList.add("htmlVideoPlayerContainer"),document.body.insertBefore(dlg,document.body.firstChild),videoDialog=dlg);var videoElement=dlg.querySelector("video");videoElement||(dlg.insertAdjacentHTML("beforeend",'<video class="htmlvideoplayer" preload="metadata" autoplay="autoplay" webkit-playsinline playsinline></video>'),videoElement=dlg.querySelector("video"),self.addEventListeners(videoElement),_events.default.off(_usersettings.default,"change",self.boundonUserSettingsChange),_events.default.on(_usersettings.default,"change",self.boundonUserSettingsChange),videoElement.textTracks&&videoElement.textTracks.addEventListener&&(videoElement.textTracks.addEventListener("addtrack",onAddTrack),videoElement.textTracks.addEventListener("removetrack",onRemoveTrack)),videoElement.addEventListener("click",onClick),videoElement.addEventListener("dblclick",onDblClick),_browser.default.chromecast||videoElement.classList.add("moveUpSubtitles"),self._mediaElement=videoElement,_browser.default.chromecast&&(cast.framework.CastReceiverContext.getInstance().getPlayerManager().setMediaElement(videoElement),self.bindMediaManagerEvents()));self.useElementVolume()&&(videoElement.volume=_appsettings.default.volume()/100);return videoElement}(),promise.then(function(){return signal.aborted?rejectOnAbort(signal):function(elem,options){self.removeErrorEventListener(elem);var url=options.url;_browser.default.ps4||(seconds=(options.playerStartPositionTicks||0)/1e7)&&(url+="#t="+seconds);console.log("playing url: "+url),setCurrentTrackElement(self,elem,-1,options),elem.innerHTML="",self.destroyHlsPlayer(),self.destroyCastPlayer();var seconds=getMediaStreamSubtitleTracks(options.mediaSource);null!=(subtitleTrackIndexToSetOnPlaying=null==options.mediaSource.DefaultSubtitleStreamIndex?-1:options.mediaSource.DefaultSubtitleStreamIndex)&&0<=subtitleTrackIndexToSetOnPlaying&&((initialSubtitleStream=function(mediaStreams,index){for(var i=0,length=mediaStreams.length;i<length;i++)if(mediaStreams[i].Index===index)return mediaStreams[i];return null}(options.mediaSource.MediaStreams,subtitleTrackIndexToSetOnPlaying))&&"Encode"!==initialSubtitleStream.DeliveryMethod||(subtitleTrackIndexToSetOnPlaying=-1));audioTrackIndexToSetOnPlaying="Transcode"===options.playMethod?null:options.mediaSource.DefaultAudioStreamIndex,self._currentPlayOptions=options;var initialSubtitleStream=self.getCrossOriginValue(options.mediaSource,options.playMethod);initialSubtitleStream&&(elem.crossOrigin=initialSubtitleStream);initialSubtitleStream=function(tracks){return 0<tracks.filter(function(t){return"Hls"===t.DeliveryMethod}).length}(seconds=seconds.filter(function(s){return s.IsTextSubtitleStream})),seconds=function(tracks,item,mediaSource){return tracks.map(function(t){var textTrackUrl,language,label;return"External"!==t.DeliveryMethod||"ass"===t.Codec||"ssa"===t.Codec?"":(textTrackUrl=getTextTrackUrl(t,item,mediaSource),language=t.Language||"und",label=t.Language||"und",'<track id="textTrack'+t.Index+'" label="'+label+'" kind="subtitles" src="'+textTrackUrl+'" srclang="'+language+'" />\n')}).join("")}(seconds,options.item,options.mediaSource);return _browser.default.chromecast?self.setCurrentSrcChromecast(elem,options,url,initialSubtitleStream,seconds):_htmlmediahelper.default.enableHlsJsPlayer(options.mediaSource.RunTimeTicks,"Video")&&-1!==url.indexOf(".m3u8")?(initialSubtitleStream||setTracks(elem,seconds),self.setSrcWithHlsJs(elem,options,url)):(elem.autoplay=!0,elem.src=url,self._currentSrc=url,setTracks(elem,seconds),self.playWithPromise(elem))}(elem,options).then(function(result){return signal.aborted?(self.stopInternal(!1,!1),rejectOnAbort(signal)):Promise.resolve(result)})}))},self.loadIntoPlayer=function(elem,options,val,media,data,customData){var hasHlsTextTracks=customData.hasHlsTextTracks,customData=customData.tracksHtml;return-1!==val.indexOf(".m3u8")&&_htmlmediahelper.default.enableHlsJsPlayer(options.mediaSource.RunTimeTicks,"Video")&&-1!==val.indexOf(".m3u8")?(hasHlsTextTracks||setTracks(elem,customData),self.setSrcWithHlsJs(elem,options,val)):(elem.autoplay=!0,elem.src=val,self._currentSrc=val,setTracks(elem,customData),self.playWithPromise(elem))},self.setSubtitleStreamIndex=function(index){setCurrentTrackElement(self,self._mediaElement,index,self._currentPlayOptions)},self.setAudioStreamIndex=function(index){var streams=function(instance){var mediaSource,profile,currentPlayOptions=instance._currentPlayOptions;return currentPlayOptions?(mediaSource=currentPlayOptions.mediaSource,profile=instance._lastProfile,getMediaStreamTracks(mediaSource,"Audio").filter(function(stream){return _playbackmanager.default.isAudioStreamSupported(stream,mediaSource,profile)})):[]}(self);if(!(streams.length<2)){isNativeLG&&_browser.default.sdkVersion&&4<=_browser.default.sdkVersion&&("DirectStream"!==(playMethod=(currentPlayOptions=self._currentPlayOptions).playMethod)&&"DirectPlay"!==playMethod||"mkv"===currentPlayOptions.mediaSource.Container&&streams.sort(sortDefaultTracksFirst));for(var currentPlayOptions,playMethod,audioIndex=-1,i=0,length=streams.length;i<length&&(audioIndex++,streams[i].Index!==index);i++);if(-1!==audioIndex){var elem=self._mediaElement;if(elem){var elemAudioTracks=elem.audioTracks||[];if(!(elemAudioTracks.length<2)){for(console.log("found "+elemAudioTracks.length+" audio tracks"),i=0,length=elemAudioTracks.length;i<length;i++)audioIndex===i?(console.log("setting audio track "+i+" to enabled"),elemAudioTracks[i].enabled=!0):(console.log("setting audio track "+i+" to disabled"),elemAudioTracks[i].enabled=!1);setTimeout(function(){elem.currentTime=elem.currentTime},100)}}}}},self.stopInternal=function(destroyPlayer,triggerStopEvent,destroyInterface){var elem=self._mediaElement,src=self._currentSrc;return elem&&(src&&elem.pause(),self.onEnded(elem,triggerStopEvent),destroyPlayer)&&self.destroyInternal(destroyInterface),destroyCustomTrack(self,elem),Promise.resolve()},self.stop=function(destroyPlayer){return this.stopInternal(destroyPlayer,null,!0)},self.destroyInternal=function(destroyInterface){self.destroyHlsPlayer();var videoElement=self._mediaElement;videoElement&&(self._mediaElement=null,self._currentAspectRatio=null,destroyCustomTrack(self,videoElement),_browser.default.chromecast&&self.unBindMediaManagerEvents(),self.removeEventListeners(videoElement),videoElement.removeEventListener("click",onClick),videoElement.removeEventListener("dblclick",onDblClick),_events.default.off(_usersettings.default,"change",self.boundonUserSettingsChange),videoElement.remove()),destroyInterface&&(videoElement=videoDialog)&&(videoDialog=null,videoElement.remove())},self.destroy=function(){return self.destroyInternal(!0)}}function onPictureInPictureError(err){console.log("Picture in picture error: "+err.toString())}function setSubtitleOffset(instance,elem,val){for(var subtitlesOctopus=instance.currentSubtitlesOctopus,textTracks=(subtitlesOctopus&&(subtitlesOctopus.timeOffset=-val/1e3),elem.textTracks||[]),i=0,length=textTracks.length;i<length;i++){var track=textTracks[i],trackMode=track.mode;if("showing"===trackMode||"hidden"===trackMode){trackMode=track.cues;if(trackMode)try{!function(cues,val){val/=1e3;for(var i=0,length=cues.length;i<length;i++){var cue=cues[i];null==cue.originalStartTime&&(cue.originalStartTime=cue.startTime),null==cue.originalEndTime&&(cue.originalEndTime=cue.endTime),cue.startTime=cue.originalStartTime+val,cue.endTime=cue.originalEndTime+val}}(trackMode,val),renderCues(instance,track.activeCues)}catch(err){console.log("error in setSubtitleOffsetIntoCues: "+err)}}}}Object.assign(HtmlVideoPlayer.prototype,_basehtmlplayer.default.prototype),HtmlVideoPlayer.prototype.supports=function(feature){var video,list;return supportedFeatures||(list=["VolumeUp","VolumeDown","Mute","Unmute","ToggleMute","SetVolume"],isNativeLG||((video=document.createElement("video")).webkitSupportsPresentationMode&&"function"==typeof video.webkitSetPresentationMode&&list.push("PictureInPicture"),document.pictureInPictureEnabled&&list.push("PictureInPicture")),CSS.supports("object-fit","cover")&&list.push("SetAspectRatio"),list.push("SetSubtitleOffset"),list.push("SetSubtitleAppearance"),isNativeLG||list.push("SetPlaybackRate"),supportedFeatures=list),-1!==supportedFeatures.indexOf(feature)},HtmlVideoPlayer.prototype.canSetAudioStreamIndex=function(index){var video;return"undefined"!=typeof AudioTrack&&!(!(video=this._mediaElement)||!video.audioTracks)},HtmlVideoPlayer.prototype.setPictureInPictureEnabled=function(isEnabled){var video=this._mediaElement;document.pictureInPictureEnabled?video&&(isEnabled?video.requestPictureInPicture():document.exitPictureInPicture()).catch(onPictureInPictureError):video&&video.webkitSupportsPresentationMode&&"function"==typeof video.webkitSetPresentationMode&&video.webkitSetPresentationMode(isEnabled?"picture-in-picture":"inline")},HtmlVideoPlayer.prototype.isPictureInPictureEnabled=function(){var video;return document.pictureInPictureEnabled?!!document.pictureInPictureElement:window.Windows?this.isPip||!1:!!(video=this._mediaElement)&&"picture-in-picture"===video.webkitPresentationMode},HtmlVideoPlayer.prototype.setBrightness=function(val){var rawValue,elem=this._mediaElement;elem&&(val=Math.max(0,val),rawValue=val=Math.min(100,val),rawValue=100<=(rawValue=Math.max(20,rawValue))?"none":rawValue/100,elem.style.filter="brightness("+rawValue+");",elem.style.filter="brightness("+rawValue+")",elem.brightnessValue=val,_events.default.trigger(this,"brightnesschange"))},HtmlVideoPlayer.prototype.getBrightness=function(){var elem=this._mediaElement;if(elem)return null==(elem=elem.brightnessValue)?100:elem},HtmlVideoPlayer.prototype.setAspectRatio=function(val){var mediaElement=this._mediaElement;if(mediaElement)switch(val){case"fill":case"cover":mediaElement.style.objectFit=val;break;default:mediaElement.style.objectFit=null}this._currentAspectRatio=val},HtmlVideoPlayer.prototype.getAspectRatio=function(){return this._currentAspectRatio||"auto"},HtmlVideoPlayer.prototype.getSupportedAspectRatios=function(){return[{name:_globalize.default.translate("Auto"),id:"auto"},{name:_globalize.default.translate("Cover"),id:"cover"},{name:_globalize.default.translate("Fill"),id:"fill"}]},HtmlVideoPlayer.prototype.getSubtitleOffset=function(val){return this._currentSubtitleOffset},HtmlVideoPlayer.prototype.setSubtitleOffset=function(val){var elem=this._mediaElement;elem&&(this._currentSubtitleOffset=val,setSubtitleOffset(this,elem,val))},HtmlVideoPlayer.prototype.incrementSubtitleOffset=function(val){var currentSubtitleOffset,newVal,elem=this._mediaElement;elem&&(newVal=(currentSubtitleOffset=this._currentSubtitleOffset)+val,console.log("incrementSubtitleOffset: "+val+", currentSubtitleOffset: "+currentSubtitleOffset+", newValue: "+newVal),this._currentSubtitleOffset=newVal,setSubtitleOffset(this,elem,newVal))},HtmlVideoPlayer.prototype.togglePictureInPicture=function(){return this.setPictureInPictureEnabled(!this.isPictureInPictureEnabled())},HtmlVideoPlayer.prototype.getStats=function(){var videoCategory,mediaElement=this._mediaElement,categories=[];return mediaElement&&(categories.push(videoCategory={stats:[],type:"video"}),mediaElement.getVideoPlaybackQuality)&&(mediaElement=mediaElement.getVideoPlaybackQuality().droppedVideoFrames||0,videoCategory.stats.push({label:"Dropped Frames",value:mediaElement})),Promise.resolve({categories:categories})},HtmlVideoPlayer.prototype.onStartedPlaying=function(elem){_basehtmlplayer.default.prototype.onStartedPlaying.apply(this,arguments),startInitialSubtitleTrackTimeout(this),startInitialAudioTrackTimeout(this)},HtmlVideoPlayer.prototype.onTimeUpdate=function(elem,time,isFirstTimeUpdate){_basehtmlplayer.default.prototype.onTimeUpdate.apply(this,arguments),isFirstTimeUpdate&&function(instance,elem){elem!==instance._mediaElement||0!==elem.videoWidth||0!==elem.videoHeight||(elem=(instance._currentPlayOptions||{}).mediaSource)&&!getMediaStreamTracks(elem,"Video").length||instance.onError("mediadecodeerror")}(this,elem),null!=(_this$currentSubtitle=this.currentSubtitlesOctopus)&&_this$currentSubtitle.onTimeUpdate(time);var timeMs,_this$currentSubtitle=this._currentPlayOptions;_this$currentSubtitle&&(timeMs=1e3*time-this._currentSubtitleOffset,function(instance,timeMs){var clock=instance.currentClock;if(clock)try{clock.seek(timeMs/1e3)}catch(err){console.log("Error in libjass: "+err)}else{var trackEvents=instance.currentTrackEvents;if(trackEvents){for(var seconds=timeMs/1e3,activeCues=[],i=0;i<trackEvents.length;i++){var currentTrackEvent=trackEvents[i];if(currentTrackEvent.startTime<=seconds&¤tTrackEvent.endTime>=seconds){activeCues.push(currentTrackEvent);break}}renderCues(instance,activeCues)}}}(this,timeMs+=(_this$currentSubtitle.transcodingOffsetTicks||0)/1e4))},HtmlVideoPlayer.prototype.onEnded=function(elem,triggerStopEvent){_basehtmlplayer.default.prototype.onEnded.apply(this,arguments),destroyCustomTrack(this,elem)},HtmlVideoPlayer.prototype.onError=function(errorType){destroyCustomTrack(this,this._mediaElement),_basehtmlplayer.default.prototype.onError.apply(this,arguments)};_exports.default=HtmlVideoPlayer});