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","./../common/servicelocator.js"],function(_exports,_htmlmediahelper,_basehtmlplayer,_events,_connectionmanager,_approuter,_browser,_globalize,_usersettings,_subtitleappearancehelper,_playbackmanager,_appsettings,_servicelocator){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=(currentPlayOptions="VideoSideData"===mediaSource.DeliveryMethod?function(tracks,kind){for(var list=[],i=0,length=tracks.length;i'),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\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=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});