13 lines
No EOL
89 KiB
JavaScript
13 lines
No EOL
89 KiB
JavaScript
import playbackManager from"./../modules/common/playback/playbackmanager.js";import focusManager from"./../modules/focusmanager.js";import cardBuilder from"./../modules/cardbuilder/cardbuilder.js";import imageLoader from"./../modules/common/imagehelper.js";import dom from"./../modules/dom.js";import browser from"./../modules/browser.js";import globalize from"./../modules/common/globalize.js";import datetime from"./../modules/common/datetime.js";import layoutManager from"./../modules/layoutmanager.js";import itemManager from"./../modules/common/itemmanager/itemmanager.js";import loading from"./../modules/loading/loading.js";import events from"./../modules/emby-apiclient/events.js";import connectionManager from"./../modules/emby-apiclient/connectionmanager.js";import appHeader from"./../modules/appheader/appheader.js";import mediaInfo from"./../modules/mediainfo/mediainfo.js";import backdrop from"./../modules/backdrop/backdrop.js";import OsdPlayQueue from"./playqueue.js";import TvPlayQueue from"./tvplayqueue.js";import LyricsRenderer from"./lyrics.js";import appRouter from"./../modules/approuter.js";import itemContextMenu from"./../modules/itemcontextmenu.js";import itemShortcuts from"./../modules/shortcuts.js";import inputManager from"./../modules/common/inputmanager.js";import userSettings from"./../modules/common/usersettings/usersettings.js";import mouseManager from"./../modules/input/mouse.js";import"./../modules/emby-elements/emby-scroller/emby-scroller.js";import"./../modules/emby-elements/emby-button/paper-icon-button-light.js";import"./../modules/emby-elements/emby-tabs/emby-tabs.js";import"./../modules/emby-elements/emby-slider/emby-slider.js";import appSettings from"./../modules/common/appsettings.js";import{appHost}from"./../modules/common/servicelocator.js";import keyboardManager from"./../modules/input/keyboard.js";import BaseView from"./../modules/viewmanager/baseview.js";import OsdController from"./../modules/playback/osdcontroller.js";import playerSettingsMenu from"./../modules/playback/playersettingsmenu.js";require(["css!videoosd/videoosd.css"]);let useBackdropFilterForBlur=dom.allowBackdropFilter(),headerElement=document.querySelector(".skinHeader"),backdropContainer=document.querySelector(".backdropContainer"),backgroundContainer=document.querySelector(".backgroundContainer"),headerRight=document.querySelector(".headerRight");function showActionSheet(options){return Emby.importModule("./modules/actionsheet/actionsheet.js").then(function(ActionSheet){return ActionSheet.show(options)})}let enableHighResBlur=(()=>{var deviceMemory,platform,cores=navigator.hardwareConcurrency||4;return!(cores<6||(deviceMemory=navigator.deviceMemory||2)<2||(platform=(navigator.platform||"").toLowerCase(),"android"===globalThis.appMode&&(cores<4||deviceMemory<2||platform.includes("armv7"))))})();function allowTabAnimation(){var deviceMemory,platform,cores=navigator.hardwareConcurrency||4;return!(cores<4||(2400<=(screen.width||screen.availWidth||0)||1400<=(screen.height||screen.availHeight||0))&&cores<6||(deviceMemory=navigator.deviceMemory||2)<2||(platform=(navigator.platform||"").toLowerCase(),"android"===globalThis.appMode&&(cores<4||deviceMemory<2||platform.includes("armv7"))))}let enableTabAnimation=allowTabAnimation(),fadeSize="1.5%",fadeDuration=300;function fadeInLeft(elem){var keyframes=[{opacity:"0",transform:"translate3d(-"+fadeSize+", 0, 0)",offset:0},{opacity:"1",transform:"none",offset:1}],timing={duration:fadeDuration,iterations:1,easing:"ease-out"};elem.animate(keyframes,timing)}function fadeInRight(elem){var keyframes=[{opacity:"0",transform:"translate3d("+fadeSize+", 0, 0)",offset:0},{opacity:"1",transform:"none",offset:1}],timing={duration:fadeDuration,iterations:1,easing:"ease-out"};elem.animate(keyframes,timing)}function isPlaying(player,mediaType){return!(!player||!player.isLocalPlayer)&&(!!mediaType||playbackManager.isPlaying(player))}function isDisplayingLocalVideo(player,mediaType){return!(!player||!player.isLocalPlayer)&&("Video"===mediaType||!mediaType&&playbackManager.isPlayingMediaType(["Video"],player))}function getRewindIconLTR(){switch(userSettings.skipBackLength()){case 5e3:return"";case 1e4:return"";case 3e4:return"";default:return""}}function getForwardIconLTR(){switch(userSettings.skipForwardLength()){case 5e3:return"";case 1e4:return"";case 3e4:return"";default:return""}}function setForwardIcon(btnFastForward){btnFastForward.querySelector("i").innerHTML=("rtl"===document.dir?getRewindIconLTR:getForwardIconLTR)()}function setRewindIcon(btnRewind){btnRewind.querySelector("i").innerHTML=("rtl"===document.dir?getForwardIconLTR:getRewindIconLTR)()}function getBaseActionSheetOptions(positionTo,isLocalVideo){isLocalVideo=!(!layoutManager.tv||!isLocalVideo);return{positionTo:positionTo,positionX:isLocalVideo?"right":null,positionY:"above",transformOrigin:isLocalVideo?"right bottom":"center bottom",noTextWrap:!0}}function getCommandOptions(item,user,button,isLocalVideo){return Object.assign(getBaseActionSheetOptions(button,isLocalVideo),{items:[item],open:!1,play:!1,playAllFromHere:!1,queueAllFromHere:!1,cancelTimer:!1,record:!1,deleteItem:!1,shuffle:!1,instantMix:!1,user:user,share:!0,queue:!1,editSubtitles:!1,convert:!1,refreshMetadata:!1,identify:!1})}function showMoreMenu(item,button,isLocalVideo){return connectionManager.getApiClient(item.ServerId).getCurrentUser().then(function(user){return itemContextMenu.show(getCommandOptions(item,user,button,isLocalVideo))})}function focusMainOsdControls(instance){console.log("focusMainOsdControls"),focusManager.focus(instance.nowPlayingPositionSlider)}function hideOrShowAll(instance,elems,hide,focusedElement){let wasFocused;for(let i=0,length=elems.length;i<length;i++){var elem=elems[i];hide?(focusedElement&&focusedElement===elem&&(wasFocused=!0),elem.classList.add("hide")):elem.classList.remove("hide")}wasFocused&&focusMainOsdControls(instance)}function getTextActionButton(item,text,serverId){return text=text||itemManager.getDisplayName(item,{}),layoutManager.tv?text:"<button "+itemShortcuts.getShortcutAttributesHtml(item,{})+' type="button" class="itemAction button-link osdTextActionButton" is="emby-button" data-action="link">'+text+"</button>"}function getSecondaryName(item,enableLinkButton){var title=itemManager.getDisplayName(item,{includeParentInfo:"Program"!==item.Type,includeIndexNumber:"Program"!==item.Type});return enableLinkButton?getTextActionButton(item,title):title}function getAllArtistsHtml(displayItem){var html=[],artistItems=displayItem.ArtistItems;if(artistItems)for(let i=0,length=artistItems.length;i<length;i++)html.push(getTextActionButton({Id:artistItems[i].Id,ServerId:displayItem.ServerId,Name:artistItems[i].Name,Type:"MusicArtist",IsFolder:!0}));return html}function blurElementFromPreviousView(view){var activeElement=document.activeElement;if(activeElement&&!view.contains(activeElement))try{activeElement.blur()}catch(err){console.log("Error blurring element from previous view: "+err)}}function getDefaultOsdContentSection(){return layoutManager.tv||1056<=dom.getWindowSize().innerWidth?"playqueue":null}function destroyPlayQueue(instance){var playQueue=instance.playQueue;playQueue&&(playQueue.destroy(),instance.playQueue=null)}function destroyLyricsRenderer(instance){var lyricsRenderer=instance.lyricsRenderer;lyricsRenderer&&(lyricsRenderer.destroy(),instance.lyricsRenderer=null)}function destroyStats(instance){var statsOverlay=instance.statsOverlay;statsOverlay&&(statsOverlay.destroy(),instance.statsOverlay=null)}function destroySubtitleOffsetOverlay(instance){var subtitleOffsetOverlay=instance.subtitleOffsetOverlay;subtitleOffsetOverlay&&(subtitleOffsetOverlay.destroy(),instance.subtitleOffsetOverlay=null)}function closeOsdDialogs(instance){}function clearBlurFromDocumentElement(instance){backgroundContainer&&(backgroundContainer.style.backgroundImage=null)}function shouldOsdBeShown(instance){return!layoutManager.tv||!!instance.currentVisibleMenu||!(instance=instance.currentPlayer)||isDisplayingLocalVideo(instance)}function onMuteButtonClick(){playbackManager.toggleMute(this.currentPlayer)}function onVolumeSliderInputOrChange(e){e=e.target;playbackManager.setVolume(parseFloat(e.value),this.currentPlayer),this.showOsd()}let SupportsTouchEvent="ontouchstart"in document.documentElement,SupportsPointerType="undefined"!=typeof PointerEvent&&"pointerType"in PointerEvent.prototype,DefaultPointerType=SupportsPointerType?null:SupportsTouchEvent?"touch":"mouse";function onPointerMove(e){var eventX,obj;"touch"!==(e.pointerType||DefaultPointerType)&&(eventX=e.screenX||0,e=e.screenY||0,(obj=this.lastPointerMoveData)?Math.abs(eventX-obj.x)<10&&Math.abs(e-obj.y)<10||(obj.x=eventX,obj.y=e,this.showOsd()):(this.lastPointerMoveData={x:eventX,y:e},this.showOsd()))}function onPointerEnter(e){"touch"!==(e.pointerType||DefaultPointerType)&&(this.mouseOverButton=null!=e.target.closest("button,input,a"))}function onPointerLeave(e){this.mouseOverButton=null}function rewind(instance,animate){var player=instance.currentPlayer;animate&&((animate=instance.view.querySelector(".osd-rew-animationtext")).innerHTML="-"+parseInt(userSettings.skipBackLength()/1e3),fadeInAndOut(animate)),playbackManager.rewind(player)}function fadeInAndOut(elem){if(elem.animate){var keyframes=[{opacity:"1",offset:.5},{opacity:"0",transform:"none",offset:1}],timing={duration:600,iterations:1,easing:"ease-out"};try{elem.animate(keyframes,timing)}catch(err){console.log("error animating element: "+err)}}}function fastForward(instance,animate){var player=instance.currentPlayer;animate&&((animate=instance.view.querySelector(".osd-ff-animationtext")).innerHTML="+"+parseInt(userSettings.skipForwardLength()/1e3),fadeInAndOut(animate)),playbackManager.fastForward(player)}function getTimeInSeconds(ms){return 1e3<=Math.abs(ms)?(ms/=1e3).toFixed(1)+" seconds":ms+" ms"}function onWindowKeyDown(e){var key=keyboardManager.normalizeKeyFromEvent(e),target=e.target;switch(key){case"Enter":case" ":return focusManager.hasExclusiveFocusScope()||this.currentVisibleMenu&&!target.closest(".videoOsdPositionSlider")&&(this.showOsd(),"Enter"===key)?void 0:void(target.closest("BUTTON")||e.repeat||this.nowPlayingPositionSlider.dragging||(playbackManager.playPause(this.currentPlayer),shouldOsdBeShown(this)&&setTimeout(this.boundShowOsdDefaultParams,100),browser.edge&&(e.preventDefault(),e.stopPropagation())));case"b":case"B":if(!focusManager.hasExclusiveFocusScope()&&e.ctrlKey)return e.shiftKey?(e.preventDefault(),void rewind(this)):(e.preventDefault(),void playbackManager.previousChapter(this.currentPlayer));break;case"f":case"F":if(!focusManager.hasExclusiveFocusScope()){if(e.ctrlKey)return e.shiftKey?(e.preventDefault(),void fastForward(this)):(e.preventDefault(),void playbackManager.nextChapter(this.currentPlayer));playbackManager.toggleFullscreen(this.currentPlayer)}break;case"m":case"M":focusManager.hasExclusiveFocusScope()||playbackManager.toggleMute(this.currentPlayer)}}function onRecordingCommand(instance){instance=instance.btnRecord;instance.classList.contains("hide")||instance.click()}function onOsdClick(e,instance,elementToFocusIfShowing,showOsdIfNoEvent){var target=e.target;return target.closest(".videoOsdBottom")?(showOsdIfNoEvent&&instance.showOsd(),!1):!target.closest("button,.videoosd-tabsslider")&&(target=instance.currentPlayer,!e.button&&target&&isDisplayingLocalVideo(target)?(instance.showOsd(null,elementToFocusIfShowing),console.log("onOsdClick playPause"),playbackManager.playPause(target)):showOsdIfNoEvent&&instance.showOsd(),!0)}function onStatsClosed(){this.currentVisibleMenu&&!this.upNextContainer._visible&&focusManager.focus(this.btnVideoOsdSettingsRight)}function toggleStats(instance){require(["playerStats"],function(PlayerStats){var player=instance.currentPlayer;player&&(instance.statsOverlay?instance.statsOverlay.toggle():(instance.statsOverlay=new PlayerStats({player:player,view:instance.view}),events.on(instance.statsOverlay,"close",onStatsClosed.bind(instance))))})}function canSetBottomTabIndex(instance,index){return-1===index||!instance.bottomTabButtons[index].classList.contains("hide")}function setBottomTabIndex(instance,index){var bottomTabButtons,bottomTabs=instance.bottomTabs;-1===index?(document.documentElement.classList.remove("osd-tab-guide"),bottomTabs.selectedIndex(index)):(bottomTabButtons=instance.bottomTabButtons)[index].classList.contains("hide")||(instance.showOsd(null,bottomTabButtons[index]),bottomTabs.selectedIndex(index),focusManager.focus(bottomTabButtons[index]))}function onRewindInputCommand(e,instance){instance.currentVisibleMenu||e.detail.repeat||(rewind(instance),e.preventDefault()),shouldOsdBeShown(instance)&&instance.showOsd()}function onFastForwardInputCommand(e,instance){instance.currentVisibleMenu||e.detail.repeat||(fastForward(instance),e.preventDefault()),shouldOsdBeShown(instance)&&instance.showOsd()}function onOsdHideTimeout(){focusManager.hasExclusiveFocusScope()||0<=this.bottomTabs.selectedIndex()?startOsdHideTimer(this):this.mouseOverButton||this.nowPlayingPositionSlider.dragging||this.nowPlayingVolumeSlider.dragging||this.hideOsd()}function startOsdHideTimer(instance,timeoutMs){var isLocalVideo;stopOsdHideTimer(instance),instance.paused||!(isLocalVideo=isDisplayingLocalVideo(instance.currentPlayer))||0===timeoutMs||focusManager.hasExclusiveFocusScope()||(instance.osdHideTimeout=setTimeout(instance.boundOnOsdHideTimeout,timeoutMs||(isLocalVideo?4e3:1e4)))}function stopOsdHideTimer(instance){var osdHideTimeout=instance.osdHideTimeout;osdHideTimeout&&(clearTimeout(osdHideTimeout),instance.osdHideTimeout=null)}function showOsdDefaultParams(){this.showOsd()}let orientationLocked=!1;function onOrientationChangeSuccess(){orientationLocked=!0}function onOrientationChangeError(err){orientationLocked=!0,console.log("error locking orientation: "+err)}function getOrientationLockPromise(orientation){let promise;console.log("attempting to lock orientation to: "+orientation);try{return(promise=screen.orientation&&screen.orientation.lock?screen.orientation.lock(orientation):promise)&&promise.then?promise:Promise.resolve()}catch(err){return Promise.reject(err)}}let systemUIHidden;function setSystemUIHidden(hidden){if(systemUIHidden!==hidden&&(systemUIHidden=hidden,appHost.setSystemUIHidden))try{appHost.setSystemUIHidden(hidden)}catch(err){console.log("Error in setSystemUIHidden: "+err)}}let enableOrientationLock=!browser.tv;function lockOrientation(type){enableOrientationLock&&getOrientationLockPromise(type=type||screen.orientation?.type||"landscape").then(onOrientationChangeSuccess,onOrientationChangeError)}function unlockOrientation(){if(enableOrientationLock&&orientationLocked&&screen.orientation&&screen.orientation.unlock){console.log("unlocking orientation");try{screen.orientation.unlock()}catch(err){console.log("error unlocking orientation: "+err)}orientationLocked=!1}}function getTabOnItemUpdatedData(instance){return{item:instance.osdController.currentItem,displayItem:instance.osdController.currentDisplayItem,mediaSource:instance.osdController.currentMediaSource,enableProgressByTimeOfDay:instance.osdController.enableProgressByTimeOfDay,currentPlayer:instance.currentPlayer,currentChapters:instance.osdController.currentChapters,currentDisplayChapters:instance.osdController.currentDisplayChapters}}function VideoOsd(view,params){BaseView.apply(this,arguments);let self=this,currentPlayerSupportedCommands=[],currentRuntimeTicks=0,comingUpNextDisplayed,lastUpdateTime=0,isEnabled,currentIntroInfo,currentCreditsInfo,ratingTextNeedsUpdate=!0;this.currentLockState=0;let skipIntroValidated,brightnessSlider=view.querySelector(".videoOsdBrightnessSlider"),brightnessSliderContainer=view.querySelector(".brightnessSliderContainer"),videoOsdPositionText=(this.nowPlayingPositionSlider=view.querySelector(".videoOsdPositionSlider"),this.nowPlayingVolumeSlider=view.querySelector(".videoOsdVolumeSlider"),view.querySelector(".videoOsdPositionText")),videoOsdDurationText=view.querySelector(".videoOsdDurationText"),rewindButtons=(this.osdController=new OsdController({nowPlayingPositionSlider:this.nowPlayingPositionSlider,positionTextElem:videoOsdPositionText,durationTextElem:videoOsdDurationText,enableSeekThumbnails:!0}),events.on(this.osdController,"displayitemupdated",function(e,item,displayItem,state){if(displayItem){let apiClient=connectionManager.getApiClient(item),player=self.currentPlayer;apiClient.getCurrentUser().then(function(user){var displayingLocalVideo=isDisplayingLocalVideo(player,item.MediaType);if(((item,displayItem,user,displayingLocalVideo)=>{updateRecordingButton(displayItem,user),updateButtomTabsVisibility(item,displayItem);let primaryNameText,primaryNameHtml,titleElement=(displayItem.EpisodeTitle||displayItem.IsSeries?primaryNameText=displayItem.Name:displayItem.SeriesName?(primaryNameText=displayItem.SeriesName,displayItem.SeriesId&&!displayingLocalVideo&&(primaryNameHtml=getTextActionButton({Id:displayItem.SeriesId,Type:"Series",IsFolder:!0,ServerId:displayItem.ServerId,Name:displayItem.SeriesName,ParentId:displayItem.ParentId}))):displayItem.ArtistItems&&displayItem.ArtistItems.length&&(primaryNameText=displayItem.Name,primaryNameHtml=getAllArtistsHtml(displayItem).join(", ")),primaryNameHtml=primaryNameHtml||primaryNameText,((item,originalItem,title)=>{appHeader.setLogoTitle({items:[item,originalItem],titleText:"",preferredLogoImageTypes:["LogoLightColor","LogoLight","Logo"]}),(originalItem=title||(item?item.Name:null))&&(document.title=originalItem)})(displayItem,item,primaryNameText),((displayItem,item,displayingLocalVideo,mediaType)=>{let backdropItems=[displayItem];if(item.Id!==displayItem.Id&&backdropItems.push(item),displayingLocalVideo)backdrop.setBackdrops(backdropItems),view.classList.add("darkContentContainer","graphicContentContainer"),headerElement.classList.add("headroom-scrolling"),clearBlurFromDocumentElement(self);else{displayItem="Video"===mediaType?"nowPlayingVideoBackgroundStyle":"nowPlayingAudioBackgroundStyle";if("blur"===userSettings[displayItem]()&&(backdropItems=getDetailImageItemsSync().Items,item=backdropItems[0])){displayingLocalVideo=imageLoader.getImageUrl(item,connectionManager.getApiClient(item),{width:100,adjustForPixelRatio:!1}).imgUrl;if(displayingLocalVideo)return backdrop.setBackdrop(displayingLocalVideo),displayingLocalVideo?(view.classList.add("darkContentContainer"),view.classList.remove("graphicContentContainer"),headerElement.classList.remove("headroom-scrolling")):(view.classList.remove("darkContentContainer","graphicContentContainer"),headerElement.classList.remove("headroom-scrolling"),clearBlurFromDocumentElement(self))}backdrop.setBackdrops(backdropItems),clearBlurFromDocumentElement(self),headerElement.classList.remove("headroom-scrolling"),backdrop.hasBackdrop()?view.classList.add("darkContentContainer","graphicContentContainer"):view.classList.remove("darkContentContainer","graphicContentContainer")}})(displayItem,item,displayingLocalVideo,item.MediaType),displayingLocalVideo?setPoster(null):setPoster(displayItem),osdTitle),secondaryName,secondaryMediaInfo=(secondaryName="Audio"===item.MediaType?(secondaryName=getSecondaryName(displayItem,!1),user=primaryNameHtml,primaryNameHtml=secondaryName,user):getSecondaryName(displayItem,!displayingLocalVideo),primaryNameHtml||(primaryNameHtml=secondaryName,secondaryName=null),videoOsdParentTitle.innerHTML=primaryNameHtml,(videoOsdParentTitleLarge.innerHTML=primaryNameHtml)?videoOsdSecondaryText.classList.add("videoOsdSecondaryText-withparentname"):videoOsdSecondaryText.classList.remove("videoOsdSecondaryText-withparentname"),secondaryName||displayItem.Type,(titleElement.innerHTML=secondaryName)?titleElement.classList.remove("hide"):titleElement.classList.add("hide"),videoOsdSecondaryMediaInfo),secondaryMediaInfoHtml,chapters=("Audio"===displayItem.MediaType||"Program"!==displayItem.Type&&!secondaryName?secondaryMediaInfoHtml=mediaInfo.getMediaInfoHtml(displayItem,{runtime:!1,endsAt:!1,container:!displayingLocalVideo,year:"Audio"!==displayItem.MediaType,CommunityRating:!1,criticRating:!1,subtitles:!1,officialRating:!1,mediaInfoIcons:!1}):"Program"!==displayItem.Type&&"Recording"!==displayItem.Type&&(secondaryMediaInfoHtml=mediaInfo.getSecondaryMediaInfoHtml(displayItem,{startDate:!1,programTime:!1})),"Audio"===displayItem.MediaType&&displayItem.Album&&displayItem.AlbumId?(videoOsdThirdTitle.innerHTML=getTextActionButton({Type:"MusicAlbum",Id:displayItem.AlbumId,ServerId:displayItem.ServerId,Name:displayItem.Album}),videoOsdThirdTitle.classList.remove("hide")):videoOsdThirdTitle.classList.add("hide"),(item=>{var mediaStreams=((item=((item=item&&"Audio"!==item.MediaType?null:item)||{}).MediaSources||[])[0]||{}).MediaStreams||[];for(let i=0,length=mediaStreams.length;i<length;i++)if("Subtitle"===mediaStreams[i].Type)return btnLyrics.classList.remove("hide");btnLyrics.classList.add("hide"),"lyrics"===currentOsdContentSectionName&&setContentSection(getDefaultOsdContentSection(),!1)})(displayItem),secondaryMediaInfo.innerHTML=secondaryMediaInfoHtml,(videoOsdAudioInfo.innerHTML=secondaryMediaInfoHtml)?"Audio"===displayItem.MediaType?(secondaryMediaInfo.classList.add("hide"),videoOsdAudioInfo.classList.remove("hide")):(secondaryMediaInfo.classList.remove("hide"),videoOsdAudioInfo.classList.add("hide")):(secondaryMediaInfo.classList.add("hide"),videoOsdAudioInfo.classList.add("hide")),(item=self.lyricsRenderer)&&item.updateItem(displayItem),self.osdController.currentChapters),introStart,introEnd,creditsStart;for(let i=0,length=chapters.length;i<length;i++){var chapter=chapters[i];"IntroStart"===chapter.MarkerType?(introStart=chapter.StartPositionTicks,i<chapters.length-1&&(introEnd=chapters[i+1].StartPositionTicks)):"IntroEnd"===chapter.MarkerType?introEnd=chapter.StartPositionTicks:"CreditsStart"===chapter.MarkerType&&(creditsStart=chapter.StartPositionTicks)}creditsStart&&(user=introEnd||introStart)&&user>=creditsStart&&(creditsStart=null),currentIntroInfo=null!=introStart&&introEnd?{start:introStart,end:introEnd}:null,currentCreditsInfo=null!=creditsStart?{start:creditsStart}:null;var bottomTabControllers=self.bottomTabControllers;for(let i=0,length=bottomTabControllers.length;i<length;i++)bottomTabControllers[i]&&bottomTabControllers[i].onItemUpdated(getTabOnItemUpdatedData(self))})(item,displayItem,user,displayingLocalVideo),self.nowPlayingVolumeSlider.disabled=!1,"Video"===item.MediaType||item.SupportsResume){for(let i=0,length=fastForwardButtons.length;i<length;i++)fastForwardButtons[i].classList.remove("hide"),fastForwardButtons[i].disabled=!0===state.IsInitialRequest;for(let i=0,length=rewindButtons.length;i<length;i++)rewindButtons[i].classList.remove("hide"),rewindButtons[i].disabled=!0===state.IsInitialRequest}else{for(let i=0,length=fastForwardButtons.length;i<length;i++)fastForwardButtons[i].classList.add("hide");for(let i=0,length=rewindButtons.length;i<length;i++)rewindButtons[i].classList.add("hide")}1<playbackManager.audioTracks(player).length?btnAudio.classList.remove("hide"):btnAudio.classList.add("hide"),enableSkipIntro="None"!==user.Configuration.IntroSkipMode,enableAutoSkipIntro="AutoSkip"===user.Configuration.IntroSkipMode,enableSkipIntro&&validateSkipIntroFeature({showDialog:!1},!0),playbackManager.subtitleTracks(player).length||itemManager.canDownloadSubtitles(item,user)&&supportsSubtitleDownloading(apiClient)?btnSubtitles.classList.remove("hide"):btnSubtitles.classList.add("hide")})}}),view.querySelectorAll(".btnRewind")),fastForwardButtons=view.querySelectorAll(".btnOsdFastForward"),stopButtons=(this.btnPause=view.querySelector(".videoOsd-btnPause"),view.querySelectorAll(".btnVideoOsd-stop")),btnRepeatModeTopRight=view.querySelector(".btnOsdRepeatMode-topright"),btnRepeatModeBottom=view.querySelector(".btnOsdRepeatMode-bottom"),btnShuffleTopRight=view.querySelector(".btnOsdShuffle-topright"),btnShuffleBottom=view.querySelector(".btnOsdShuffle-bottom"),btnPlaybackSpeed=view.querySelector(".btnPlaybackSpeed"),btnOsdMoreBottom=view.querySelector(".btnOsdMore-bottom"),btnOsdMoreTitle=view.querySelector(".btnOsdMore-title");var transitionEndEventName=dom.whichTransitionEvent();this.osdBottomElement=view.querySelector(".videoOsdBottom");let belowTransportButtonsContainer=view.querySelector(".videoOsd-belowtransportbuttons"),btnPreviousTrack=view.querySelector(".btnPreviousTrack"),btnNextTrack=view.querySelector(".btnNextTrack"),buttonMute=view.querySelector(".buttonMute"),btnSubtitles=view.querySelector(".btnSubtitles"),btnAudio=view.querySelector(".btnAudio"),btnFullscreen=view.querySelector(".btnFullscreen"),videoOsdSecondaryText=view.querySelector(".videoOsdSecondaryText"),videoOsdBottomButtons=(this.videoOsdText=view.querySelector(".videoOsdText"),view.querySelector(".videoOsdBottom-buttons")),mainTransportButtons=view.querySelector(".videoOsd-maintransportbuttons"),videoOsdPositionContainer=view.querySelector(".videoOsdPositionContainer"),osdTitle=view.querySelector(".videoOsdTitle"),videoOsdThirdTitle=view.querySelector(".videoOsdThirdTitle"),videoOsdParentTitle=view.querySelector(".videoOsdParentTitle-small"),videoOsdParentTitleLarge=view.querySelector(".videoOsdParentTitle-large"),osdPosterContainer=view.querySelector(".osdPosterContainer"),videoOsdSecondaryMediaInfo=view.querySelector(".videoOsdSecondaryMediaInfo"),videoOsdAudioInfo=view.querySelector(".videoOsd-audioInfo"),mainLockButton=view.querySelector(".videoOsd-btnLock"),tabContainers=(this.bottomTabs=view.querySelector(".videoOsdBottom-tabs"),this.bottomTabButtons=view.querySelectorAll(".videoosd-tab-button"),view.querySelectorAll(".videoosd-tab")),btnCloseTabContent=(this.bottomTabControllers=[],this.bottomTabControllers.length=tabContainers.length,view.querySelector(".btnCloseTabContent")),tabContainersElem=view.querySelector(".videoosd-tabcontainers"),videoOsdBottomContentbuttons=view.querySelector(".videoOsdBottom-contentbuttons"),videoOsdBottomMaincontrols=(this.upNextContainer=view.querySelector(".upNextContainer"),view.querySelector(".videoOsdBottom-maincontrols")),videoOsdVolumeControlsBottom=view.querySelector(".videoOsdVolumeControls-bottom"),videoOsdButtomButtonsTopRight=view.querySelector(".videoOsdBottom-buttons-topright"),ratingInfoContainer=view.querySelector(".videoOsd-ratingInfo"),ratingTextElement=view.querySelector(".videoOsd-ratingText"),btnSkipIntro=view.querySelector(".btnSkipIntro"),skipIntroContainer=view.querySelector(".skipIntroContainer"),btnLyrics=view.querySelector(".btnLyrics"),btnVideoOsdSettingsTransportButton=(this.btnRecord=view.querySelector(".btnRecord"),this.btnVideoOsdSettingsRight=view.querySelector(".btnVideoOsdSettings-right"),view.querySelector(".btnVideoOsdSettings-transport")),btnPlayNextFromUpNextProgress=view.querySelector(".btnPlayNextFromUpNext-progress"),btnHideUpNext=view.querySelector(".btnHideUpNext"),enableSkipIntro=!0,enableAutoSkipIntro,lastPointerUpType;layoutManager.tv?videoOsdBottomButtons.classList.add("videoOsdBottom-buttons-tv"):(videoOsdPositionText.classList.add("videoOsd-customFont-x0"),videoOsdDurationText.classList.add("videoOsd-customFont-x0"),ratingTextElement.classList.add("videoOsd-customFont-x2"),videoOsdBottomButtons.classList.add("videoOsd-customFont-x2"),videoOsdButtomButtonsTopRight.classList.add("videoOsd-customFont-x2"),skipIntroContainer.classList.add("videoOsd-customFont-x2"),this.upNextContainer.classList.add("videoOsd-customFont-x2"),this.osdBottomElement.classList.add("videoOsd-nobuttonmargin"));var subtitleIcon=itemManager.getDefaultIcon({Type:"MediaStream",StreamType:"Subtitle"}),subtitleIconElement=view.querySelector(".subtitleIcon");""===subtitleIcon&&subtitleIconElement.classList.add("md-icon-pushdown-bubble"),subtitleIconElement.innerHTML=subtitleIcon,view.querySelector(".audioIcon").innerHTML=itemManager.getDefaultIcon({Type:"MediaStream",StreamType:"Audio"}),view.querySelector(".lyricsIcon").innerHTML=itemManager.getDefaultIcon({Type:"MediaStream",StreamType:"Lyrics"});let currentOsdContentSectionName;for(let i=0,length=fastForwardButtons.length;i<length;i++)setForwardIcon(fastForwardButtons[i]);for(let i=0,length=rewindButtons.length;i<length;i++)setRewindIcon(rewindButtons[i]);function updateRecordingButton(item,user){item&&"Program"===item.Type?user.Policy.EnableLiveTvManagement&&require(["recordingButton"],function(RecordingButton){let recordingButtonManager=self.recordingButtonManager;recordingButtonManager?recordingButtonManager.refreshItem(item):(recordingButtonManager=self.recordingButtonManager=new RecordingButton({item:item,button:self.btnRecord}),self.btnRecord.classList.remove("hide"))}):((user=self.recordingButtonManager)&&(user.destroy(),self.recordingButtonManager=null),self.btnRecord.classList.add("hide"))}function updateButtomTabsVisibility(item,displayItem){var apiClient;item?(apiClient=connectionManager.getApiClient(item),("Video"===item.MediaType?apiClient.getUserViews({},apiClient.getCurrentUserId()):Promise.resolve({Items:[]})).then(function(result){var bottomTabButtons=self.bottomTabButtons,result=("Video"===item.MediaType?bottomTabButtons[0].classList.remove("hide"):bottomTabButtons[0].classList.add("hide"),self.osdController.currentDisplayChapters?.length?bottomTabButtons[1].classList.remove("hide"):bottomTabButtons[1].classList.add("hide"),displayItem.People&&displayItem.People.length?bottomTabButtons[2].classList.remove("hide"):bottomTabButtons[2].classList.add("hide"),"Video"===item.MediaType&&1<playbackManager.getCurrentPlaylistLength(self.currentPlayer)?bottomTabButtons[3].classList.remove("hide"):bottomTabButtons[3].classList.add("hide"),(userViews=>{for(let i=0,length=userViews.length;i<length;i++)if("livetv"===userViews[i].CollectionType)return 1})(result.Items)?(bottomTabButtons[4].classList.remove("hide"),bottomTabButtons[5].classList.remove("hide")):(bottomTabButtons[4].classList.add("hide"),bottomTabButtons[5].classList.add("hide")),self.bottomTabs),result=(view.querySelector(".videoosd-tab-button:not(.hide)")?(tabContainersElem.classList.remove("hide"),result.classList.remove("hide")):(tabContainersElem.classList.add("hide"),result.classList.add("hide")),result.selectedIndex());0<=result&&bottomTabButtons[result].classList.contains("hide")&&setBottomTabIndex(self,-1)})):(setBottomTabIndex(self,-1),tabContainersElem.classList.add("hide"),self.bottomTabs.classList.add("hide"))}function supportsSubtitleDownloading(){return currentPlayerSupportedCommands.includes("RefreshMediaSource")}function setPoster(item){var posterContainer=osdPosterContainer;item?(posterContainer.classList.remove("hide"),posterContainer.resume({refresh:!0})):(posterContainer.classList.add("hide"),posterContainer.innerHTML="")}function updateFullscreenIcon(){let title;playbackManager.isFullscreen(self.currentPlayer)?(title=globalize.translate("ExitFullscreen"),btnFullscreen.querySelector("i").innerHTML=""):(title=globalize.translate("Fullscreen"),btnFullscreen.querySelector("i").innerHTML=""),btnFullscreen.title=title,btnFullscreen.setAttribute("aria-label",title)}function updateTransparency(player,state,mediaType,isLocalVideo){console.log("updateTransparency: isLocalVideo:"+isLocalVideo+", mediaType:"+mediaType),layoutManager.tv?videoOsdSecondaryText.classList.add("videoOsdSecondaryText-tv"):videoOsdSecondaryText.classList.remove("videoOsdSecondaryText-tv");var videoOsdText=self.videoOsdText,bottomTabs=self.bottomTabs,osdBottomElement=self.osdBottomElement;let hideTransportButtons;if(isLocalVideo){if(createOsdResizeObserver(self),!player.isLocalPlayer||player.isExternalPlayer||state.IsBackgroundPlayback)unlockOrientation(),setSystemUIHidden(!1);else{switch(userSettings.videoOrientation()){case"device":unlockOrientation();break;case"landscape":lockOrientation("landscape");break;default:lockOrientation("any")}setSystemUIHidden(!0)}self.currentVisibleMenu||(headerElement.classList.add("videoOsdHeader-hidden","hide"),osdBottomElement.classList.add("hide","videoOsdBottom-hidden")),osdBottomElement.classList.add("videoOsdBottom-video"),osdPosterContainer.classList.remove("osdPosterContainer-autoexpand"),videoOsdSecondaryText.classList.remove("videoOsdSecondaryText-remotecontrol"),videoOsdBottomMaincontrols.classList.remove("videoOsdBottomMaincontrols-autoexpand"),videoOsdPositionContainer.classList.remove("videoOsdPositionContainer-autosmall"),videoOsdPositionContainer.classList.add("focuscontainer-x"),belowTransportButtonsContainer.classList.remove("videoOsd-belowtransportbuttons-vertical"),layoutManager.tv?((()=>{var val;return!userSettings.enableVideoUnderUI()&&("true"===(val=userSettings.hideMediaTransportButtons())?1:"false"!==val&&!mouseManager.lastMouseInputTime())})()&&(hideTransportButtons=!0),mainLockButton.classList.add("hide")):mainLockButton.classList.remove("hide"),videoOsdButtomButtonsTopRight.classList.remove("videoOsdBottom-buttons-topright-remotecontrol","videoOsdBottom-buttons-topright-remotecontrol-tv"),tabContainersElem.classList.remove("videoosd-tabcontainers-autosmall"),bottomTabs.classList.remove("videoOsdBottom-tabs-remotecontrol"),videoOsdVolumeControlsBottom.classList.add("hide"),self.topVolumeControls&&self.topVolumeControls.classList.remove("hide"),videoOsdParentTitle.classList.add("hide","osdText-nowrap"),videoOsdParentTitleLarge.classList.add("osdText-nowrap"),videoOsdParentTitleLarge.classList.remove("hide"),state.IsInitialRequest?appRouter.setTransparency(0):appRouter.setTransparency("full"),hideOrShowAll(self,stopButtons,!layoutManager.tv||!userSettings.enableVideoUnderUI(),null),videoOsdText.classList.remove("videoOsdText-remotecontrol","videoOsdText-autosmall","videoOsdText-remotecontrol-tv"),videoOsdBottomButtons.classList.remove("videoOsdBottom-buttons-remotecontrol","videoOsdBottom-buttons-remotecontrol-tv"),osdBottomElement.classList.remove("videoOsdBottom-remotecontrol","videoOsdBottom-safe","padded-top-page","videoOsdBottom-tvnowplaying"),view.classList.remove("justify-content-flex-end"),osdTitle.classList.remove("secondaryText"),osdTitle.classList.add("osdText-nowrap"),videoOsdSecondaryMediaInfo.classList.remove("videoOsdSecondaryMediaInfo-remotecontrol"),videoOsdPositionText.classList.remove("videoOsd-customFont-remotecontrol"),videoOsdDurationText.classList.remove("videoOsd-customFont-remotecontrol"),videoOsdBottomButtons.classList.remove("videoOsd-customFont-remotecontrol","videoOsd-customFont-remotecontrol-buttons"),videoOsdButtomButtonsTopRight.classList.remove("videoOsd-customFont-remotecontrol","videoOsd-customFont-remotecontrol-buttons"),headerElement.classList.remove("videoosd-header-safe"),videoOsdBottomContentbuttons.classList.add("hide"),videoOsdBottomContentbuttons.classList.remove("videoOsd-customFont-remotecontrol-buttons","videoOsd-customFont-remotecontrol","videoOsd-customFont-remotecontrol-buttons","videoOsdBottom-contentbuttons-tv"),videoOsdPositionContainer.classList.remove("videoOsdPositionContainer-limitwidth"),backdropContainer.classList.remove("nowplaying-backdropcontainer-blur","nowplaying-backdropcontainer-blur-high","nowplaying-backdropcontainer-blur-extrasaturation","nowplaying-backdropcontainer-blur-backdropfilter"),backgroundContainer.classList.remove("nowplaying-backgroundcontainer-blur","nowplaying-backgroundcontainer-blur-backdropfilter"),backgroundContainer.classList.remove("nowplaying-backgroundcontainer-brighter"),self.enableStopOnBack=!0,self.enableBackOnStop=!0,btnOsdMoreTitle.classList.add("hide"),btnOsdMoreBottom.classList.add("hide")}else destroyOsdResizeObserver(self),unlockOrientation(),setSystemUIHidden(!1),osdTitle.classList.add("secondaryText"),osdTitle.classList.remove("osdText-nowrap"),osdBottomElement.classList.remove("videoOsdBottom-video","videoOsdBottom-hidden","hide","videoosd-withupnext"),self.showOsd(),"blur"===userSettings["Video"===mediaType?"nowPlayingVideoBackgroundStyle":"nowPlayingAudioBackgroundStyle"]()?(backdropContainer.classList.add("nowplaying-backdropcontainer-blur"),enableHighResBlur&&backdropContainer.classList.add("nowplaying-backdropcontainer-blur-high"),browser.chrome?backdropContainer.classList.add("nowplaying-backdropcontainer-blur-extrasaturation"):backdropContainer.classList.remove("nowplaying-backdropcontainer-blur-extrasaturation"),backgroundContainer.classList.add("nowplaying-backgroundcontainer-blur"),useBackdropFilterForBlur&&(backgroundContainer.classList.add("nowplaying-backgroundcontainer-blur-backdropfilter"),backdropContainer.classList.add("nowplaying-backdropcontainer-blur-backdropfilter")),backgroundContainer.classList.remove("nowplaying-backgroundcontainer-brighter")):(backdropContainer.classList.remove("nowplaying-backdropcontainer-blur","nowplaying-backdropcontainer-blur-high","nowplaying-backdropcontainer-blur-extrasaturation","nowplaying-backdropcontainer-blur-backdropfilter"),backgroundContainer.classList.remove("nowplaying-backgroundcontainer-blur","nowplaying-backgroundcontainer-blur-backdropfilter"),backgroundContainer.classList.add("nowplaying-backgroundcontainer-brighter")),videoOsdParentTitleLarge.classList.remove("osdText-nowrap"),videoOsdParentTitleLarge.classList.add("hide"),videoOsdParentTitle.classList.remove("hide","osdText-nowrap"),videoOsdSecondaryMediaInfo.classList.add("videoOsdSecondaryMediaInfo-remotecontrol"),mainLockButton.classList.add("hide"),headerElement.classList.add("videoosd-header-safe"),layoutManager.tv?(osdBottomElement.classList.add("videoOsdBottom-safe","padded-top-page","videoOsdBottom-tvnowplaying","videoOsdBottom-remotecontrol"),view.classList.remove("justify-content-flex-end"),belowTransportButtonsContainer.classList.remove("videoOsd-belowtransportbuttons-vertical"),videoOsdText.classList.add("videoOsdText-remotecontrol","videoOsdText-remotecontrol-tv"),videoOsdText.classList.remove("videoOsdText-autosmall"),osdPosterContainer.classList.remove("osdPosterContainer-autoexpand"),videoOsdSecondaryText.classList.add("videoOsdSecondaryText-remotecontrol"),videoOsdBottomButtons.classList.remove("videoOsdBottom-buttons-remotecontrol","videoOsd-customFont-remotecontrol","videoOsd-customFont-remotecontrol-buttons"),videoOsdBottomButtons.classList.add("videoOsdBottom-buttons-remotecontrol-tv"),videoOsdBottomMaincontrols.classList.remove("videoOsdBottomMaincontrols-autoexpand"),videoOsdPositionContainer.classList.add("focuscontainer-x"),videoOsdPositionContainer.classList.remove("videoOsdPositionContainer-autosmall"),tabContainersElem.classList.remove("videoosd-tabcontainers-autosmall"),bottomTabs.classList.remove("videoOsdBottom-tabs-remotecontrol"),videoOsdPositionText.classList.remove("videoOsd-customFont-remotecontrol"),videoOsdDurationText.classList.remove("videoOsd-customFont-remotecontrol"),videoOsdBottomContentbuttons.classList.add("videoOsdBottom-contentbuttons-tv"),videoOsdBottomContentbuttons.classList.remove("hide","videoOsd-customFont-remotecontrol-buttons","videoOsd-customFont-remotecontrol","videoOsd-customFont-remotecontrol-buttons"),videoOsdVolumeControlsBottom.classList.add("hide"),self.topVolumeControls&&self.topVolumeControls.classList.remove("hide"),videoOsdButtomButtonsTopRight.classList.remove("videoOsd-customFont-remotecontrol","videoOsd-customFont-remotecontrol-buttons","videoOsdBottom-buttons-topright-remotecontrol"),videoOsdButtomButtonsTopRight.classList.add("videoOsdBottom-buttons-topright-remotecontrol-tv"),btnOsdMoreTitle.classList.add("hide"),btnOsdMoreBottom.classList.remove("hide")):(osdBottomElement.classList.add("videoOsdBottom-remotecontrol","videoOsdBottom-safe","padded-top-page"),view.classList.remove("justify-content-flex-end"),osdPosterContainer.classList.add("osdPosterContainer-autoexpand"),belowTransportButtonsContainer.classList.add("videoOsd-belowtransportbuttons-vertical"),videoOsdText.classList.add("videoOsdText-remotecontrol","videoOsdText-autosmall"),videoOsdText.classList.remove("videoOsdText-remotecontrol-tv"),videoOsdBottomMaincontrols.classList.add("videoOsdBottomMaincontrols-autoexpand"),videoOsdPositionContainer.classList.add("videoOsdPositionContainer-autosmall"),videoOsdPositionContainer.classList.remove("focuscontainer-x"),tabContainersElem.classList.add("videoosd-tabcontainers-autosmall"),bottomTabs.classList.add("videoOsdBottom-tabs-remotecontrol"),videoOsdSecondaryText.classList.add("videoOsdSecondaryText-remotecontrol"),videoOsdBottomButtons.classList.add("videoOsdBottom-buttons-remotecontrol"),videoOsdBottomButtons.classList.remove("videoOsdBottom-buttons-remotecontrol-tv"),videoOsdPositionText.classList.add("videoOsd-customFont-remotecontrol"),videoOsdDurationText.classList.add("videoOsd-customFont-remotecontrol"),videoOsdBottomButtons.classList.add("videoOsd-customFont-remotecontrol","videoOsd-customFont-remotecontrol-buttons"),videoOsdButtomButtonsTopRight.classList.add("videoOsd-customFont-remotecontrol","videoOsd-customFont-remotecontrol-buttons"),videoOsdBottomContentbuttons.classList.remove("hide","videoOsdBottom-contentbuttons-tv"),videoOsdBottomContentbuttons.classList.add("videoOsd-customFont-remotecontrol-buttons","videoOsd-customFont-remotecontrol"),videoOsdVolumeControlsBottom.classList.remove("hide"),self.topVolumeControls&&self.topVolumeControls.classList.add("hide"),videoOsdButtomButtonsTopRight.classList.add("videoOsdBottom-buttons-topright-remotecontrol"),videoOsdButtomButtonsTopRight.classList.remove("videoOsdBottom-buttons-topright-remotecontrol-tv"),videoOsdPositionContainer.classList.add("videoOsdPositionContainer-limitwidth"),btnOsdMoreTitle.classList.remove("hide"),btnOsdMoreBottom.classList.add("hide")),appRouter.setTransparency(0),hideOrShowAll(self,stopButtons,!1,null),self.enableStopOnBack=!1,self.enableBackOnStop=!0;if(hideTransportButtons?(videoOsdBottomButtons.classList.add("hide"),self.bottomTabs.classList.add("videoOsdTabs-margintop")):(videoOsdBottomButtons.classList.remove("hide"),self.bottomTabs.classList.remove("videoOsdTabs-margintop")),isLocalVideo)destroyPlayQueue(self),destroyLyricsRenderer(self);else if(self.lyricsRenderer||(self.lyricsRenderer=new LyricsRenderer({parent:view.querySelector(".lyricsSection")})),!self.playQueue){let osdContentSection=userSettings.osdContentSection()||getDefaultOsdContentSection();layoutManager.tv?(self.playQueue=new TvPlayQueue({parent:view.querySelector(".videoOsdBottom")}),osdContentSection="playqueue"):self.playQueue=new OsdPlayQueue({parent:view.querySelector(".videoOsdBottom")}),setContentSection(osdContentSection="lyrics"===osdContentSection?getDefaultOsdContentSection():osdContentSection,!1)}player=self.btnPause;isLocalVideo&&!layoutManager.tv?(mainTransportButtons.classList.add("videoOsd-centerButtons-autolayout"),player.classList.add("videoOsd-btnPause-autolayout")):(mainTransportButtons.classList.remove("videoOsd-centerButtons-autolayout"),player.classList.remove("videoOsd-btnPause-autolayout"))}function getDetailImageItemsSync(){let item=self.osdController.currentDisplayItem;var items=[];return item&&(item.SeriesPrimaryImageTag&&(item={Id:item.SeriesId,Name:item.SeriesName,ServerId:item.ServerId,ImageTags:{Primary:item.SeriesPrimaryImageTag},IsFolder:!0,PrimaryImageAspectRatio:2/3}),items.push(item)),{Items:items,TotalRecordCount:items.length}}function getDetailImageItems(){return Promise.resolve(getDetailImageItemsSync())}function getDetailImageListOptions(items){let cardClass="osdRemoteControlImageCard";return layoutManager.tv||(cardClass+=" osdRemoteControlImageCard-automargin"),{renderer:cardBuilder,options:{overlayText:!0,fields:[],action:"none",multiSelect:!1,contextMenu:!layoutManager.tv,ratingButton:!layoutManager.tv,playedButton:!1,cardClass:cardClass,cardBoxClass:"osdRemoteControlImageCardBox",cardContentClass:"osdRemoteControlImageCardContent legacyLazyLoadImmediate",defaultIcon:!0,typeIndicator:!1,playedIndicator:!1,syncIndicator:!1,timerIndicator:!1,randomDefaultBackground:!1,staticElement:!0,progress:!1,hoverPlayButton:!1,moreButton:!1,enableUserData:!layoutManager.tv,shape:"auto"},virtualScrollLayout:"vertical-grid"}}function onStateChanged(event,state){state.NowPlayingItem&&(isEnabled=!0,((event,player,state)=>{var playState=(self.lastPlayerState=state).PlayState||{},supportedCommands=(updatePlayPauseState(playState.IsPaused,state.IsInitialRequest),playbackManager.getSupportedCommands(player));currentPlayerSupportedCommands=supportedCommands,updatePlayerVolumeState(0,playState.IsMuted,playState.VolumeLevel,supportedCommands),updatePlayerBrightnessState(player),self.osdController.updatePlayerState(event,player,state);for(let i=0,length=fastForwardButtons.length;i<length;i++)fastForwardButtons[i].disabled=!playState.CanSeek;for(let i=0,length=rewindButtons.length;i<length;i++)rewindButtons[i].disabled=!playState.CanSeek;var event=state.NowPlayingItem||{},displayingLocalVideo=isDisplayingLocalVideo(player,event.MediaType),focusedElement=(updateTransparency(player,state,event.MediaType,displayingLocalVideo),updateTimeDisplay(playState.PositionTicks,event.RunTimeTicks,playState.SeekableRanges||[]),(state=>{if(!state.NowPlayingItem){currentIntroInfo=null,currentCreditsInfo=null,ratingTextNeedsUpdate=!0,setPoster(null),updateRecordingButton(null),appHeader.setTitle(""),self.nowPlayingVolumeSlider.disabled=!0;for(let i=0,length=fastForwardButtons.length;i<length;i++)fastForwardButtons[i].classList.add("hide");for(let i=0,length=rewindButtons.length;i<length;i++)rewindButtons[i].classList.add("hide");btnSubtitles.classList.add("hide"),btnAudio.classList.add("hide"),ratingInfoContainer.classList.add("hide"),updateButtomTabsVisibility(null,null),osdTitle.innerHTML="",view.querySelector(".videoOsdMediaInfo").innerHTML=""}})(state),document.activeElement);state.MediaSource&&!state.IsInitialRequest?displayingLocalVideo||layoutManager.tv?(hideButton(btnVideoOsdSettingsTransportButton,focusedElement),self.btnVideoOsdSettingsRight.classList.remove("hide")):(btnVideoOsdSettingsTransportButton.classList.remove("hide"),hideButton(self.btnVideoOsdSettingsRight,focusedElement)):(hideButton(self.btnVideoOsdSettingsRight,focusedElement),hideButton(btnVideoOsdSettingsTransportButton,focusedElement)),!supportedCommands.includes("ToggleFullscreen")||!displayingLocalVideo||player.isLocalPlayer&&layoutManager.tv&&playbackManager.isFullscreen(player)?hideButton(btnFullscreen,focusedElement):btnFullscreen.classList.remove("hide"),state.IsInitialRequest||!supportedCommands.includes("PictureInPicture")||layoutManager.tv||supportedCommands.includes("AutoPictureInPicture")?hideButton(view.querySelector(".btnPip"),focusedElement):view.querySelector(".btnPip").classList.remove("hide"),updateRepeatModeDisplay(playState.RepeatMode),supportedCommands.includes("SetRepeatMode")&&"Video"!==event.MediaType?layoutManager.tv?(btnRepeatModeTopRight.classList.remove("hide"),hideButton(btnRepeatModeBottom,focusedElement)):(btnRepeatModeBottom.classList.remove("hide"),hideButton(btnRepeatModeTopRight,focusedElement)):(hideButton(btnRepeatModeBottom,focusedElement),hideButton(btnRepeatModeTopRight,focusedElement)),updateShuffleDisplay(playState.Shuffle),supportedCommands.includes("SetShuffle")&&"Video"!==event.MediaType?layoutManager.tv?(btnShuffleTopRight.classList.remove("hide"),hideButton(btnShuffleBottom,focusedElement)):(btnShuffleBottom.classList.remove("hide"),hideButton(btnShuffleTopRight,focusedElement)):(hideButton(btnShuffleBottom,focusedElement),hideButton(btnShuffleTopRight,focusedElement)),supportedCommands.includes("SetPlaybackRate")&&"Video"===event.MediaType&&!layoutManager.tv&&event.RunTimeTicks?btnPlaybackSpeed.classList.remove("hide"):hideButton(btnPlaybackSpeed,focusedElement),updateFullscreenIcon(),updatePlaylistButtons(displayingLocalVideo=state.PlaylistIndex,supportedCommands=state.PlaylistLength,focusedElement),(event=self.playQueue)&&(focusedElement=state.PlaylistItemId,event.updatePlaylist(player,focusedElement,displayingLocalVideo,supportedCommands))})(event,this,state))}function onPlayPauseStateChanged(e){isEnabled&&updatePlayPauseState(this.paused())}function onVolumeChanged(e){isEnabled&&updatePlayerVolumeState(0,this.isMuted(),this.getVolume(),currentPlayerSupportedCommands)}function onBrightnessChanged(e){isEnabled&&updatePlayerBrightnessState(this)}function onPlaybackStart(e,state){console.log("nowplaying event: "+e.type),self.osdController.onPlaybackStart(e,state);onStateChanged.call(this,e,state),resetUpNextDialog(),resetRatingText(),showHideSkipIntro(!1),"Video"!==state.NowPlayingItem?.MediaType&&setBottomTabIndex(self,-1)}function onShuffleChange(e){updateShuffleDisplay(playbackManager.getShuffle(this))}function onRepeatModeChange(e){updateRepeatModeDisplay(playbackManager.getRepeatMode(this))}function onSubtitleTrackChange(){destroySubtitleOffsetOverlay(self)}function onPlaylistItemAdd(e){var playlistItemId,playlistIndex=playbackManager.getCurrentPlaylistIndex(this),playlistLength=playbackManager.getCurrentPlaylistLength(this),playQueue=(updatePlaylistButtons(playlistIndex,playlistLength,document.activeElement),self.playQueue);playQueue&&(playlistItemId=playbackManager.getCurrentPlaylistItemId(this),playQueue.updatePlaylist(this,playlistItemId,playlistIndex,playlistLength))}function onPlaylistItemMove(e,info){updatePlaylistButtons(playbackManager.getCurrentPlaylistIndex(this),playbackManager.getCurrentPlaylistLength(this),document.activeElement);var playQueue=self.playQueue;playQueue&&playQueue.onPlaylistItemMoved(this,e,info)}function onPlaylistItemRemove(e,info){updatePlaylistButtons(playbackManager.getCurrentPlaylistIndex(this),playbackManager.getCurrentPlaylistLength(this),document.activeElement);var playQueue=self.playQueue;playQueue&&playQueue.onPlaylistItemRemoved(this,e,info)}function resetUpNextDialog(){showHideUpNext(comingUpNextDisplayed=!1),btnHideUpNext.classList.remove("hide")}function onPlaybackStopped(e,state){hideWaiting(),self.osdController.onPlaybackStopped(e,state),currentRuntimeTicks=null,resetRatingText();var currentItem=self.osdController.currentItem,currentItem=(currentItem&&showComingUpNextIfNeeded(0,currentItem,1,1,!0,currentCreditsInfo),btnHideUpNext===document.activeElement);btnHideUpNext.classList.add("hide"),currentItem&&focusManager.autoFocus(self.upNextContainer),showHideSkipIntro(!1),console.log("nowplaying event: "+e.type),state.NextMediaType||((currentItem=self.playQueue)&¤tItem.onPlaybackStopped(),(e=self.lyricsRenderer)&&e.onPlaybackStopped(),self.enableStopOnBack=!1,self.enableBackOnStop&&(self.enableBackOnStop=!1,self.exit()))}function onMediaStreamsChanged(e){var state=playbackManager.getPlayerState(this);onStateChanged.call(this,e,state)}function releaseCurrentPlayer(){self.osdController?.releaseCurrentPlayer(),destroyStats(self),destroySubtitleOffsetOverlay(self),closeOsdDialogs(self),resetUpNextDialog(),resetRatingText(),showHideSkipIntro(!1);var player=self.currentPlayer;player&&(hideWaiting(),events.off(player,"playbackrequest",onPlaybackStart),events.off(player,"playbackstart",onPlaybackStart),events.off(player,"playbackstop",onPlaybackStopped),events.off(player,"volumechange",onVolumeChanged),events.off(player,"brightnesschange",onBrightnessChanged),events.off(player,"pause",onPlayPauseStateChanged),events.off(player,"unpause",onPlayPauseStateChanged),events.off(player,"timeupdate",onTimeUpdate),events.off(player,"waiting",onWaiting),events.off(player,"playing",onPlaying),events.off(player,"fullscreenchange",updateFullscreenIcon),events.off(player,"mediastreamschange",onMediaStreamsChanged),events.off(player,"statechange",onStateChanged),events.off(player,"repeatmodechange",onRepeatModeChange),events.off(player,"shufflechange",onShuffleChange),events.off(player,"subtitletrackchange",onSubtitleTrackChange),events.off(player,"playlistitemadd",onPlaylistItemAdd),events.off(player,"playlistitemmove",onPlaylistItemMove),events.off(player,"playlistitemremove",onPlaylistItemRemove),self.currentPlayer=null)}function resetRatingText(){ratingInfoContainer.classList.add("hide"),ratingTextNeedsUpdate=!0}function showHideSkipIntro(show){var needToRefocus;show?skipIntroContainer._visible||(skipIntroContainer._visible=!0,skipIntroContainer.classList.remove("hide"),self.currentVisibleMenu)||(focusManager.focus(btnSkipIntro),enableAutoSkipIntro&&btnSkipIntro.click()):skipIntroContainer._visible&&(skipIntroContainer._visible=!1,show=btnSkipIntro===document.activeElement,needToRefocus=!!self.currentVisibleMenu&&show,skipIntroContainer.classList.add("hide"),needToRefocus?focusMainOsdControls(self):show&&btnSkipIntro.blur())}function showHideUpNext(show,timeRemainingTicks){var upNextContainer=self.upNextContainer;show?upNextContainer._visible||(btnPlayNextFromUpNextProgress.style.transform="scaleX(0)",upNextContainer._visible=!0,upNextContainer._timeRemainingTicks=timeRemainingTicks,upNextContainer.classList.remove("hide"),self.osdBottomElement.classList.add("videoosd-withupnext"),focusManager.focus(upNextContainer.querySelector(".btnPlayNextFromUpNext"))):upNextContainer._visible&&(upNextContainer._visible=!1,upNextContainer._timeRemainingTicks=null,show=!!self.currentVisibleMenu&&upNextContainer.contains(document.activeElement),upNextContainer.classList.add("hide"),self.osdBottomElement.classList.remove("videoosd-withupnext"),show)&&focusMainOsdControls(self)}function validateSkipIntroFeature(options,incrementAppSettings){return Emby.importModule("./modules/registrationservices/registrationservices.js").then(function(registrationServices){return registrationServices.validateFeature("dvr",Object.assign({viewOnly:!0},options)).then(function(){skipIntroValidated=!0,appSettings.introSkipDisplayCount(0)},function(err){return skipIntroValidated=!1,incrementAppSettings&&appSettings.introSkipDisplayCount(appSettings.introSkipDisplayCount()+1),Promise.reject(err)})})}self.updateTransparency=updateTransparency,(subtitleIconElement=osdPosterContainer).fetchData=getDetailImageItems,subtitleIconElement.getListOptions=getDetailImageListOptions,dom.addEventListener(btnFullscreen,"click",function(){playbackManager.toggleFullscreen(self.currentPlayer)},{passive:!0}),view.querySelector(".btnPip").addEventListener("click",function(){playbackManager.togglePictureInPicture(self.currentPlayer)}),self.btnVideoOsdSettingsRight.addEventListener("click",onSettingsButtonClick),btnVideoOsdSettingsTransportButton.addEventListener("click",onSettingsButtonClick),self.bindToPlayer=function(player,forceStateChange){player===self.currentPlayer?forceStateChange&&player&&onStateChanged.call(player,{type:"viewresume"},playbackManager.getPlayerState(player)):(releaseCurrentPlayer(),self.currentPlayer=player,self.osdController.bindToPlayer(player),player&&(onStateChanged.call(player,{type:"init"},playbackManager.getPlayerState(player)),events.on(player,"playbackrequest",onPlaybackStart),events.on(player,"playbackstart",onPlaybackStart),events.on(player,"playbackstop",onPlaybackStopped),events.on(player,"volumechange",onVolumeChanged),events.on(player,"brightnesschange",onBrightnessChanged),events.on(player,"pause",onPlayPauseStateChanged),events.on(player,"unpause",onPlayPauseStateChanged),events.on(player,"timeupdate",onTimeUpdate),events.on(player,"waiting",onWaiting),events.on(player,"playing",onPlaying),events.on(player,"fullscreenchange",updateFullscreenIcon),events.on(player,"mediastreamschange",onMediaStreamsChanged),events.on(player,"statechange",onStateChanged),events.on(player,"repeatmodechange",onRepeatModeChange),events.on(player,"shufflechange",onShuffleChange),events.on(player,"subtitletrackchange",onSubtitleTrackChange),events.on(player,"playlistitemadd",onPlaylistItemAdd),events.on(player,"playlistitemmove",onPlaylistItemMove),events.on(player,"playlistitemremove",onPlaylistItemRemove),resetUpNextDialog(),resetRatingText(),showHideSkipIntro(!1)))},self.releaseCurrentPlayer=releaseCurrentPlayer;let IntroEndToleranceTicks=2e7;function onWaiting(e){self.timeWhenWaiting=playbackManager.currentTime(this),loading.show()}function hideWaiting(){self.timeWhenWaiting=null,loading.hide()}function onPlaying(e){hideWaiting()}function onTimeUpdate(e){var now,currentTime,item;!isEnabled||(now=Date.now())-lastUpdateTime<200||((currentTime=playbackManager.currentTime(this))!==self.timeWhenWaiting&&hideWaiting(),showComingUpNextIfNeeded(0,item=self.osdController.currentItem,currentTime,currentRuntimeTicks=playbackManager.duration(this),!1,currentCreditsInfo),now-lastUpdateTime<400)||(lastUpdateTime=now,(currentTime=>{var introInfo=currentIntroInfo;introInfo&&enableSkipIntro&¤tTime>=introInfo.start&¤tTime<introInfo.end-IntroEndToleranceTicks&&(!1!==skipIntroValidated||appSettings.introSkipDisplayCount()<5)?(!0===skipIntroValidated&&appSettings.introSkipDisplayCount(0),showHideSkipIntro(!0)):showHideSkipIntro(!1)})(currentTime),(()=>{var item;ratingTextNeedsUpdate&&(item=self.osdController.currentDisplayItem)&&(ratingTextNeedsUpdate=!1,item.OfficialRating&&"Trailer"!==item.Type&&"Video"===item.MediaType&&userSettings.enableRatingInfoOnPlaybackStart()?(ratingTextElement.innerHTML=globalize.translate("RatedValue",item.OfficialRating),ratingInfoContainer.classList.add("hide"),ratingInfoContainer.offsetWidth,ratingInfoContainer.classList.remove("hide")):ratingInfoContainer.classList.add("hide"))})(),updateTimeDisplay(currentTime,currentRuntimeTicks,playbackManager.getSeekableRanges(this)),((player,item)=>{if("TvChannel"===item.Type){item=item.CurrentProgram;if(item&&item.EndDate)try{var state,endDate=datetime.parseISO8601Date(item.EndDate);Date.now()>=endDate.getTime()&&(console.log("program info needs to be refreshed"),state=playbackManager.getPlayerState(player),onStateChanged.call(player,{type:"updatemetadata"},state))}catch(e){console.log("Error parsing date: "+item.EndDate)}}})(this,item))}let fiftyMinuteTicks=3e10,fortyMinuteTicks=24e9;function showComingUpNextIfNeeded(player,currentItem,currentTimeTicks,runtimeTicks,isStopped,creditsInfo){if((runtimeTicks&¤tTimeTicks||isStopped)&&"Episode"===currentItem.Type&&self.hasNextTrack){currentItem=runtimeTicks-currentTimeTicks;if((!comingUpNextDisplayed||isStopped)&&(creditsInfo=((runtimeTicks,creditsInfo)=>(creditsInfo=creditsInfo?.start||0)&&creditsInfo<runtimeTicks?creditsInfo:runtimeTicks-1e3*(runtimeTicks>=fiftyMinuteTicks?40:runtimeTicks>=fortyMinuteTicks?35:30)*1e4)(runtimeTicks,creditsInfo),isStopped||creditsInfo<=currentTimeTicks&&3e9<=runtimeTicks&&2e8<=currentItem&&userSettings.enableNextVideoInfoOverlay())&&(isStopped&&btnHideUpNext.classList.add("hide"),showHideUpNext(comingUpNextDisplayed=!0,currentItem)),self.upNextContainer._visible){creditsInfo=self.upNextContainer._timeRemainingTicks;if(creditsInfo){let pct=isStopped?1:(creditsInfo-currentItem+15e6)/creditsInfo;pct*=100,pct=(pct=Math.min(pct,100)).toFixed(2),btnPlayNextFromUpNextProgress.style.transform="scaleX("+pct+"%)"}}}}function updatePlayPauseState(isPaused,isInitialRequest){let title;var btnPause=self.btnPause,btnPause=(title=isPaused?(btnPause.querySelector("i").innerHTML="",globalize.translate("Play")):(btnPause.querySelector("i").innerHTML="",globalize.translate("Pause")),btnPause.title=title,btnPause.setAttribute("aria-label",title),btnPause.disabled=!0===isInitialRequest,self.playQueue);btnPause&&btnPause.setPausedState(isPaused)}function hideButton(btn,focusedElement){focusedElement=btn===focusedElement;btn.classList.add("hide"),focusedElement&&focusMainOsdControls(self)}function updatePlaylistButtons(playlistIndex,playlistLength,focusedElement){playlistIndex?btnPreviousTrack.classList.remove("hide"):hideButton(btnPreviousTrack,focusedElement),null!=playlistIndex&&playlistLength&&playlistIndex<playlistLength-1?(self.hasNextTrack=!0,btnNextTrack.classList.remove("hide")):(self.hasNextTrack=!1,hideButton(btnNextTrack,focusedElement))}function updateRepeatModeDisplayForButton(button,repeatMode){var icon=button.querySelector("i");"RepeatAll"===repeatMode?(icon.innerHTML="",icon.classList.add("toggleButtonIcon-active"),button.classList.add("toggleButton-active")):"RepeatOne"===repeatMode?(icon.innerHTML="",icon.classList.add("toggleButtonIcon-active"),button.classList.add("toggleButton-active")):(icon.innerHTML="",icon.classList.remove("toggleButtonIcon-active"),button.classList.remove("toggleButton-active"))}function updateRepeatModeDisplay(repeatMode){updateRepeatModeDisplayForButton(btnRepeatModeTopRight,repeatMode),updateRepeatModeDisplayForButton(btnRepeatModeBottom,repeatMode)}function updateShuffleDisplayForButton(button,shuffle){var icon=button.querySelector("i");shuffle?(icon.classList.add("toggleButtonIcon-active"),button.classList.add("toggleButton-active")):(icon.classList.remove("toggleButtonIcon-active"),button.classList.remove("toggleButton-active"))}function updateShuffleDisplay(shuffle){updateShuffleDisplayForButton(btnShuffleTopRight,shuffle),updateShuffleDisplayForButton(btnShuffleBottom,shuffle)}function updateTimeDisplay(positionTicks,runtimeTicks,seekableRanges){self.osdController.onPlayerTimeUpdate(positionTicks,runtimeTicks,seekableRanges);var bottomTabControllers=self.bottomTabControllers;for(let i=0,length=bottomTabControllers.length;i<length;i++)bottomTabControllers[i]&&bottomTabControllers[i].onTimeUpdate(positionTicks,runtimeTicks);seekableRanges=self.lyricsRenderer;seekableRanges&&seekableRanges.onTimeUpdate(positionTicks,currentRuntimeTicks)}function setSliderValue(slider,value){slider.setValue?slider.setValue(value):((slider,value)=>{slider.waitForCustomElementUpgrade().then(function(){slider.setValue(value)})})(slider,value)}function updatePlayerBrightnessState(player){var showSlider=!layoutManager.tv&¤tPlayerSupportedCommands.includes("SetBrightness");brightnessSlider&&(showSlider?(brightnessSliderContainer.classList.remove("hide"),brightnessSlider.dragging||setSliderValue(brightnessSlider,playbackManager.getBrightness(player))):brightnessSliderContainer.classList.add("hide"))}function setMuteButtonStatus(button,isMuted,showMuteButton){isMuted?(button.setAttribute("title",globalize.translate("Unmute")),button.querySelector("i").innerHTML=""):(button.setAttribute("title",globalize.translate("Mute")),button.querySelector("i").innerHTML=""),showMuteButton?button.classList.remove("hide"):button.classList.add("hide")}function setVolumeContainerVisibility(container,slider,showVolumeSlider,volumeLevel,isMuted){(showVolumeSlider=layoutManager.tv&&appHost.supports("physicalvolumecontrol")?!1:showVolumeSlider)?container.classList.remove("osdForceHide"):container.classList.add("osdForceHide"),slider.dragging||setSliderValue(slider,isMuted?0:volumeLevel)}function updatePlayerVolumeState(player,isMuted,volumeLevel,supportedCommands){let showMuteButton=!0,showVolumeSlider=!0;supportedCommands.includes("Mute")||(showMuteButton=!1),supportedCommands.includes("SetVolume")||(showVolumeSlider=!1),setMuteButtonStatus(buttonMute,isMuted,showMuteButton),self.topMuteButton&&setMuteButtonStatus(self.topMuteButton,isMuted,showMuteButton);supportedCommands=self.nowPlayingVolumeSlider;supportedCommands&&setVolumeContainerVisibility(videoOsdVolumeControlsBottom,supportedCommands,showVolumeSlider,volumeLevel,isMuted),self.topVolumeControls&&setVolumeContainerVisibility(self.topVolumeControls,self.topVolumeSlider,showVolumeSlider,volumeLevel,isMuted)}function onSettingsButtonClick(e){var mediaType,player=self.currentPlayer;player&&(mediaType=self.osdController.currentItem.MediaType,playerSettingsMenu.show(Object.assign(getBaseActionSheetOptions(this,isDisplayingLocalVideo(player)),{player:player,stats:!0,onOption:onSettingsOption,mediaType:mediaType,speed:"Video"!==mediaType||layoutManager.tv})).then(self.boundShowOsdDefaultParams,self.boundShowOsdDefaultParams))}function onSettingsOption(selectedOption){"stats"===selectedOption?toggleStats(self):"subtitleoffset"===selectedOption&&showSubtitleOffset()}function showSubtitleOffset(){require(["subtitleOffsetOverlay"],function(SubtitleOffsetOverlay){var positionTo,player=self.currentPlayer;player&&!self.subtitleOffsetOverlay&&(positionTo=btnSubtitles,self.subtitleOffsetOverlay=new SubtitleOffsetOverlay(Object.assign(getBaseActionSheetOptions(positionTo,!0),{player:player})),SubtitleOffsetOverlay=function(){self.subtitleOffsetOverlay?.destroy(),self.subtitleOffsetOverlay=null},self.subtitleOffsetOverlay.show().then(SubtitleOffsetOverlay,SubtitleOffsetOverlay))})}let lastPointerEvent=0;function onStop(){playbackManager.stop(self.currentPlayer)}dom.addEventListener(view,window.PointerEvent&&!dom.supportsPointerTypeInClickEvent()?"pointerup":"click",function(e){var isEnoughTimeSinceLastTap,pointerType=e.pointerType||DefaultPointerType;"touch"===(lastPointerUpType=pointerType)?e.target.closest("BUTTON,INPUT,.videoosd-tabcontainers,.videoosd-tabsslider")?self.showOsd():!(isEnoughTimeSinceLastTap=300<(pointerType=Date.now())-lastPointerEvent)&&"click"!==e.type||(lastPointerEvent=pointerType,self.currentVisibleMenu?setTimeout(self.boundHideOsd,10):(self.currentVisibleMenu,isEnoughTimeSinceLastTap&&setTimeout(self.boundShowOsdDefaultParams,100))):onOsdClick(e,self,null,!0)},{passive:!0}),dom.addEventListener(view,"dblclick",function(e){e.target.closest("BUTTON,input")||"mouse"===lastPointerUpType&&playbackManager.toggleFullscreen(self.currentPlayer)},{passive:!0}),dom.addEventListener(buttonMute,"click",onMuteButtonClick.bind(self),{passive:!0}),dom.addEventListener(brightnessSlider,"change",function(){playbackManager.setBrightness(parseFloat(this.value),self.currentPlayer),self.showOsd()},{passive:!0}),dom.addEventListener(brightnessSlider,"input",function(){playbackManager.setBrightness(parseFloat(this.value),self.currentPlayer),self.showOsd()},{passive:!0}),dom.addEventListener(self.nowPlayingVolumeSlider,"change",onVolumeSliderInputOrChange.bind(self),{passive:!0}),dom.addEventListener(self.nowPlayingVolumeSlider,"input",onVolumeSliderInputOrChange.bind(self),{passive:!0}),self.nowPlayingPositionSlider.getBubbleHtml=function(value){return self.showOsd(),self.osdController.getPositionBubbleHtml(value,currentRuntimeTicks)},dom.addEventListener(self.osdBottomElement,transitionEndEventName,function(e){var elem=e.currentTarget;elem===e.target&&elem.classList.contains("videoOsdBottom-hidden")&&(elem.classList.add("hide"),headerElement.classList.add("hide"),setBottomTabIndex(self,-1),onTabTransitionEnd.call(tabContainersElem,{target:tabContainersElem,currentTarget:tabContainersElem}),2===self.currentLockState&&self.setLockState(1),view.dispatchEvent(new CustomEvent("video-osd-hide",{bubbles:!0})))},{passive:!0}),dom.addEventListener(btnPreviousTrack,"click",function(){playbackManager.previousTrack(self.currentPlayer)},{passive:!0});for(let i=0,length=stopButtons.length;i<length;i++)stopButtons[i].addEventListener("click",onStop);function onNextTrackClick(){playbackManager.nextTrack(self.currentPlayer)}function onRewindButtonClick(){rewind(self,!0)}dom.addEventListener(self.btnPause,"click",function(){playbackManager.playPause(self.currentPlayer)},{passive:!0}),dom.addEventListener(btnNextTrack,"click",onNextTrackClick,{passive:!0});for(let i=0,length=rewindButtons.length;i<length;i++)dom.addEventListener(rewindButtons[i],"click",onRewindButtonClick,{passive:!0});function onFastForwardButtonClick(){fastForward(self,!0)}for(let i=0,length=fastForwardButtons.length;i<length;i++)dom.addEventListener(fastForwardButtons[i],"click",onFastForwardButtonClick,{passive:!0});function onRepeatModeClick(){var player;(player=self.currentPlayer)&&playbackManager.toggleRepeatMode(player)}function onShuffleClick(){var player;(player=self.currentPlayer)&&playbackManager.toggleShuffle(player)}function onMoreClick(){showMoreMenu(self.osdController.currentItem,this,isDisplayingLocalVideo(self.currentPlayer))}function onCloseRequestedFromTab(){setBottomTabIndex(self,-1)}function onTabTransitionEnd(e){var elem=e.currentTarget;elem===e.target&&elem.classList.contains("videoosd-tabcontainers-hidden")&&(elem.classList.add("hide"),self.osdBottomElement.classList.remove("videoosd-bottom-with-opentab"),(e=elem.querySelector(".videoosd-activetab"))&&e.classList.remove("videoosd-activetab"),focusMainOsdControls(self))}function setContentSection(sectionName,saveToUserSettings){currentOsdContentSectionName=sectionName;var sections=view.querySelectorAll(".osdContentSection");for(let i=0,length=sections.length;i<length;i++){var section=sections[i];section.getAttribute("data-contentsection")===sectionName?section.classList.remove("hide"):section.classList.add("hide")}var buttons=view.querySelectorAll(".osdContentSectionToggleButton");for(let i=0,length=buttons.length;i<length;i++){var button=buttons[i],icon=button.querySelector("i");button.getAttribute("data-contentsection")===sectionName?(button.classList.add("toggleButton-active"),icon.classList.add("toggleButtonIcon-active")):(button.classList.remove("toggleButton-active"),icon.classList.remove("toggleButtonIcon-active"))}var playQueue=self.playQueue,playQueue=("playqueue"===sectionName?playQueue&&playQueue.resume({}):playQueue&&playQueue.pause(),self.lyricsRenderer),playQueue=("lyrics"===sectionName?playQueue&&playQueue.resume({}):playQueue&&playQueue.pause(),self.osdBottomElement);layoutManager.tv?(sectionName&&"playqueue"!==sectionName&&"art"!==sectionName?playQueue.classList.add("videoOsdBottom-split"):playQueue.classList.remove("videoOsdBottom-split"),sectionName&&"lyrics"!==sectionName&&"art"!==sectionName?playQueue.classList.remove("videoOsdBottom-art"):playQueue.classList.add("videoOsdBottom-art")):sectionName&&"art"!==sectionName?(playQueue.classList.add("videoOsdBottom-split"),playQueue.classList.remove("videoOsdBottom-art")):(playQueue.classList.remove("videoOsdBottom-split"),playQueue.classList.add("videoOsdBottom-art")),!1!==saveToUserSettings&&userSettings.osdContentSection(sectionName)}function onContentSectionToggleButtonClick(e){this.classList.contains("toggleButton-active")?setContentSection("art"):setContentSection(this.getAttribute("data-contentsection"))}function onSkipIntroClickInternal(){var info=currentIntroInfo,player=self.currentPlayer;info&&player&&(playbackManager.seek(info.end,player),showHideSkipIntro(!1),self.hideOsd())}function onLockClick(){let lockState=self.currentLockState;switch(lockState){case 0:case 1:lockState++;break;default:lockState=0}self.setLockState(lockState)}dom.addEventListener(btnPlaybackSpeed,"click",function(){var player=self.currentPlayer;player&&playerSettingsMenu.showSpeedMenu(Object.assign(getBaseActionSheetOptions(this,isDisplayingLocalVideo(player)),{player:player,mediaType:self.osdController.currentItem.MediaType})).then(self.boundShowOsdDefaultParams,self.boundShowOsdDefaultParams)},{passive:!0}),dom.addEventListener(btnRepeatModeTopRight,"click",onRepeatModeClick,{passive:!0}),dom.addEventListener(btnRepeatModeBottom,"click",onRepeatModeClick,{passive:!0}),dom.addEventListener(btnShuffleTopRight,"click",onShuffleClick,{passive:!0}),dom.addEventListener(btnShuffleBottom,"click",onShuffleClick,{passive:!0}),dom.addEventListener(btnOsdMoreBottom,"click",onMoreClick,{passive:!0}),dom.addEventListener(btnOsdMoreTitle,"click",onMoreClick,{passive:!0}),dom.addEventListener(btnAudio,"click",function(){let player=self.currentPlayer;if(player){var audioTracks=playbackManager.audioTracks(player);let currentIndex=playbackManager.getAudioStreamIndex(player);audioTracks=audioTracks.map(function(stream){var opt={name:stream.DisplayTitle,secondaryText:stream.Title&&!(stream.DisplayTitle||"").toLowerCase().includes((stream.Title||"").toLowerCase())?stream.Title:null,id:stream.Index};return stream.Index===currentIndex&&(opt.selected=!0),opt});self.showOsd(),showActionSheet(Object.assign(getBaseActionSheetOptions(this,!0),{items:audioTracks,title:globalize.translate("Audio"),hasItemSelectionState:!0,fields:["Name","ShortOverview"],noTextWrap:!1})).then(function(id){self.showOsd();id=parseInt(id);id!==currentIndex&&playbackManager.setAudioStreamIndex(id,player)},self.boundShowOsdDefaultParams)}},{passive:!0}),dom.addEventListener(btnSubtitles,"click",function(){let player=self.currentPlayer;var streams=playbackManager.subtitleTracks(player);let currentIndex=playbackManager.getSubtitleStreamIndex(player),subtitleIcon=(null==currentIndex&&(currentIndex=-1),streams.unshift({Index:-1,DisplayTitle:globalize.translate("Off")}),itemManager.getDefaultIcon({Type:"MediaStream",StreamType:"Subtitle"})),menuItems=streams.map(function(stream){var opt={name:stream.DisplayTitle,secondaryText:stream.Title&&!(stream.DisplayTitle||"").toLowerCase().includes((stream.Title||"").toLowerCase())?stream.Title:null,id:stream.Index,icon:subtitleIcon};return stream.Index===currentIndex&&(opt.selected=!0),opt}),positionTo=this,currentItem=self.osdController.currentItem,apiClient=connectionManager.getApiClient(currentItem);apiClient.getCurrentUser().then(function(user){supportsSubtitleDownloading(apiClient)&&itemManager.canDownloadSubtitles(currentItem,user)&&menuItems.push({name:globalize.translate("SearchForSubtitles"),id:"search",icon:""}),playbackManager.getSupportedCommands(player).includes("SetSubtitleOffset")&&(user=playbackManager.getSubtitleStream(player))&&("External"===user.DeliveryMethod||"Hls"===user.DeliveryMethod)&&menuItems.unshift({name:globalize.translate("HeaderSubtitleOffset"),id:"subtitleoffset",secondaryText:getTimeInSeconds(playbackManager.getSubtitleOffset(player)),icon:"",dividerAfter:0<menuItems.length}),self.showOsd(),showActionSheet(Object.assign(getBaseActionSheetOptions(positionTo,!0),{title:globalize.translate("Subtitles"),items:menuItems,hasItemSelectionState:!0,hasItemIcon:!0,fields:["Name","ShortOverview"],noTextWrap:!1})).then(function(id){var item,mediaSource;self.showOsd(),"search"===id?(item=currentItem,mediaSource=self.osdController.currentMediaSource,require(["registrationServices","subtitleEditor"]).then(function(responses){return responses[0].validateFeature("sync").then(function(){return responses[1].show({item:item,mediaSource:mediaSource,showCurrentSubtitles:!1,autoSearch:!0,closeOnDownload:!0}).then(function(result){self.showOsd(),playbackManager.setSubtitleStreamIndex(result.NewIndex,self.currentPlayer,!0)},self.boundShowOsdDefaultParams)})})):"subtitleoffset"===id?showSubtitleOffset():(id=parseInt(id))!==currentIndex&&playbackManager.setSubtitleStreamIndex(id,player)},self.boundShowOsdDefaultParams)})},{passive:!0}),self.bottomTabs.getFocusableElements=videoOsdBottomButtons.getFocusableElements=function(parent,activeElement,direction,options){switch(direction){case 0:case 1:case 2:case 3:return null;default:return canSetBottomTabIndex(self,0)?[self.bottomTabs.querySelector(".videoosd-tab-button-info")]:null}},self.bottomTabs.addEventListener("beforetabchange",function(e){var previousPanel,index=e.detail.selectedTabIndex,e=e.detail.previousIndex,newPanel=tabContainers[index];null!=e&&((previousPanel=tabContainers[e])&&newPanel&&previousPanel.classList.remove("videoosd-activetab"),previousPanel=self.bottomTabControllers[e])&&previousPanel.onPause(),newPanel?(((index,forceRefresh)=>{let tabResumeOptions=getTabOnItemUpdatedData(self),bottomTabControllers=(tabResumeOptions.refresh=forceRefresh,5===index?document.documentElement.classList.add("osd-tab-guide"):document.documentElement.classList.remove("osd-tab-guide"),self.bottomTabControllers);if(bottomTabControllers[index])return bottomTabControllers[index].onResume(tabResumeOptions);Emby.importModule(["./videoosd/infotab.js","./videoosd/chapterstab.js","./videoosd/peopletab.js","./videoosd/playqueuetab.js","./videoosd/onnowtab.js","./videoosd/guidetab.js"][index]).then(function(ControllerFactory){ControllerFactory=new ControllerFactory(tabContainers[index]);return bottomTabControllers[index]=ControllerFactory,tabResumeOptions.refresh=!0,events.on(ControllerFactory,"closerequested",onCloseRequestedFromTab),ControllerFactory.onResume(tabResumeOptions)})})(index),newPanel.classList.add("videoosd-activetab"),tabContainersElem.classList.remove("hide"),tabContainersElem.offsetWidth,tabContainersElem.classList.remove("videoosd-tabcontainers-hidden"),self.osdBottomElement.classList.add("videoosd-bottom-with-opentab"),layoutManager.tv?btnCloseTabContent.classList.add("hide"):btnCloseTabContent.classList.remove("hide"),null!=e&&enableTabAnimation&&newPanel.animate&&5!==index&&5!==e&&(index<e?fadeInLeft(newPanel):e<index&&fadeInRight(newPanel))):(tabContainersElem.classList.add("videoosd-tabcontainers-hidden"),btnCloseTabContent.classList.add("hide"))}),btnCloseTabContent.addEventListener("click",function(){setBottomTabIndex(self,-1)}),dom.addEventListener(tabContainersElem,transitionEndEventName,onTabTransitionEnd,{passive:!0}),inputManager.on(self.bottomTabs,function(e){switch(e.detail.command){case"up":-1!==self.bottomTabs.selectedIndex()&&(setBottomTabIndex(self,-1),e.preventDefault(),e.stopPropagation(),self.showOsd());break;case"down":var btn;-1===self.bottomTabs.selectedIndex()&&(btn=e.target.closest(".videoosd-tab-button"),setBottomTabIndex(self,btn?parseInt(btn.getAttribute("data-index")):-1))}});var lockButtons=view.querySelectorAll(".videoOsd-btnToggleLock");for(let i=0,length=lockButtons.length;i<length;i++)dom.addEventListener(lockButtons[i],"click",onLockClick,{passive:!0});if(dom.addEventListener(btnHideUpNext,"click",function(){showHideUpNext(!1)},{passive:!0}),dom.addEventListener(view.querySelector(".btnPlayNextFromUpNext"),"click",onNextTrackClick,{passive:!0}),dom.addEventListener(btnSkipIntro,"click",function(){if(!skipIntroValidated)return validateSkipIntroFeature().then(onSkipIntroClickInternal);onSkipIntroClickInternal()},{passive:!0}),dom.addEventListener(view.querySelector(".btnPlayQueue"),"click",onContentSectionToggleButtonClick,{passive:!0}),dom.addEventListener(btnLyrics,"click",onContentSectionToggleButtonClick,{passive:!0}),dom.allowBackdropFilter()){var toggleButtonIcons=view.querySelectorAll(".toggleButtonIcon");for(let i=0,length=toggleButtonIcons.length;i<length;i++)toggleButtonIcons[i].classList.add("toggleButtonIcon-backdropfilter")}var sections=view.querySelectorAll(".osdContentSection");for(let i=0,length=sections.length;i<length;i++){var section=sections[i];layoutManager.tv&&"lyrics"!==section.getAttribute("data-contentsection")||section.classList.add("osdContentSection-split"),layoutManager.tv&&"lyrics"===section.getAttribute("data-contentsection")&§ion.classList.add("osdContentSection-tv-split")}itemShortcuts.on(this.videoOsdText),this.boundHideOsd=this.hideOsd.bind(this),this.boundShowOsdDefaultParams=showOsdDefaultParams.bind(this),this.boundOnOsdHideTimeout=onOsdHideTimeout.bind(this)}function showMainOsdControls(instance,elementToFocus){var elem;instance.currentVisibleMenu||(elem=instance.osdBottomElement,instance.currentVisibleMenu="osd",elem.classList.remove("hide"),elem.offsetWidth,elem.classList.remove("videoOsdBottom-hidden"),focusManager.hasExclusiveFocusScope()||(elementToFocus?(console.log("showMainOsdControls - focus elementToFocus"),focusManager.focus(elementToFocus)):focusMainOsdControls(instance)),instance.view.dispatchEvent(new CustomEvent("video-osd-show",{bubbles:!0})))}function hideMainOsdControls(instance){var elem;instance.currentVisibleMenu&&((elem=instance.osdBottomElement).offsetWidth,elem.classList.add("videoOsdBottom-hidden"),instance.currentVisibleMenu=null)}function onPlayerChange(e,player){this.bindToPlayer(player),setBottomTabIndex(this,-1)}function onOsdResized(entries){for(let i=0,length=entries.length;i<length;i++)if(entries[i]){var height=this.osdBottomElement.offsetHeight;try{document.documentElement.style.setProperty("--osd-height",Math.ceil(height)+"px")}catch(err){console.log("error setting --osd-height css variable")}}}function createOsdResizeObserver(instance){instance._resizeObserver||(instance._resizeObserver=new ResizeObserver(onOsdResized.bind(instance),{}),instance._resizeObserver.observe(instance.osdBottomElement))}function destroyOsdResizeObserver(instance){instance._resizeObserver&&(instance._resizeObserver.disconnect(),instance._resizeObserver=null)}function fillHeaderRightContent(instance){let elem=instance.headerRightContainer;elem||(instance.headerRightContainer=elem=document.createElement("div"),elem.className="hide headerSectionItem",elem.innerHTML="",headerRight.insertBefore(elem,headerRight.firstElementChild),elem.innerHTML=`
|
|
<div class="videoOsdVolumeControls videoOsdVolumeControls-top hide osdForceHide videoOsd-hideWhenLocked flex flex-direction-row align-items-center hide-mouse-idle-tv">
|
|
<button is="paper-icon-button-light" tabindex="-1" class="osdIconButton buttonMute flex-shrink-zero" title="Mute" aria-label="Mute" style="margin:0;">
|
|
<i class="md-icon md-icon-fill osdIconButton-icon"></i>
|
|
</button>
|
|
|
|
<div class="videoOsdVolumeSliderWrapper videoOsdVolumeSliderWrapper-top flex-grow">
|
|
<div class="sliderContainer flex-grow">
|
|
<input is="emby-slider" data-bubble="false" type="range" step="1" min="0" max="100" value="0" class="videoOsdVolumeSlider" tabindex="-1" data-hoverthumb="true" />
|
|
</div>
|
|
</div>
|
|
</div>
|
|
`,instance.topVolumeControls=elem.querySelector(".videoOsdVolumeControls"),instance.topVolumeSlider=elem.querySelector(".videoOsdVolumeSlider"),instance.topMuteButton=elem.querySelector(".buttonMute"),instance.topMuteButton.addEventListener("click",onMuteButtonClick.bind(instance)),dom.addEventListener(instance.topVolumeSlider,"change",onVolumeSliderInputOrChange.bind(instance),{passive:!0}),dom.addEventListener(instance.topVolumeSlider,"input",onVolumeSliderInputOrChange.bind(instance),{passive:!0})),elem.classList.remove("hide")}function destroyHeaderRightContent(instance){instance.headerRightContainer?.remove(),instance.headerRightContainer=null,instance.topVolumeControls=null,instance.topVolumeSlider=null,instance.topMuteButton=null}Object.assign(VideoOsd.prototype,BaseView.prototype),VideoOsd.prototype.enableWindowInputCommands=function(){return!0},VideoOsd.prototype.onWindowInputCommand=function(e){switch(e.detail.command){case"back":var upNextContainer=e.target.closest(".upNextContainer");return upNextContainer?(e.preventDefault(),void upNextContainer.querySelector(".btnHideUpNext").click()):void(!layoutManager.tv||focusManager.hasExclusiveFocusScope()||(upNextContainer=e.detail.originalEvent?.target)&&headerElement.contains(upNextContainer)||(isDisplayingLocalVideo(this.currentPlayer)?this.currentVisibleMenu&&!this.upNextContainer._visible&&(e.preventDefault(),this.hideOsd()):!this.currentVisibleMenu&&isPlaying(this.currentPlayer)&&(e.preventDefault(),this.showOsd())));case"left":return e.target.closest(".skipIntroContainer,.upNextContainer")?void 0:void("rtl"===document.dir?onFastForwardInputCommand:onRewindInputCommand)(e,this);case"rewind":return e.preventDefault(),void onRewindInputCommand(e,this);case"right":return e.target.closest(".skipIntroContainer,.upNextContainer")?void 0:void("rtl"===document.dir?onRewindInputCommand:onFastForwardInputCommand)(e,this);case"fastforward":return e.preventDefault(),void onFastForwardInputCommand(e,this);case"pageup":return void playbackManager.nextChapter(this.currentPlayer);case"pagedown":return void playbackManager.previousChapter(this.currentPlayer);case"playpause":e.preventDefault(),e.stopPropagation();upNextContainer=this.currentPlayer?.paused();return playbackManager.playPause(this.currentPlayer),void((this.currentVisibleMenu||shouldOsdBeShown(this)&&!upNextContainer)&&this.showOsd());case"play":{e.preventDefault(),e.stopPropagation();let isPaused=this.currentPlayer?.paused();return playbackManager.unpause(this.currentPlayer),void((this.currentVisibleMenu||shouldOsdBeShown(this)&&!isPaused)&&this.showOsd())}case"select":return void(onOsdClick(e,this,null,shouldOsdBeShown(this))&&e.preventDefault());case"up":return this.currentVisibleMenu,this.currentVisibleMenu,void(shouldOsdBeShown(this)&&this.showOsd());case"down":return void(shouldOsdBeShown(this)&&(this.currentVisibleMenu||e.preventDefault(),this.showOsd()));case"menu":case"pause":case"nowplaying":return void(shouldOsdBeShown(this)&&this.showOsd());case"record":return shouldOsdBeShown(this)&&this.showOsd(),void onRecordingCommand(this);case"togglestats":return void toggleStats(this);case"movies":case"music":case"tv":case"settings":case"search":case"favorites":return void e.preventDefault();case"info":return setBottomTabIndex(this,0),void e.preventDefault();case"livetv":return setBottomTabIndex(this,4),void e.preventDefault();case"guide":return setBottomTabIndex(this,5),void e.preventDefault()}BaseView.prototype.onWindowInputCommand.apply(this,arguments)},VideoOsd.prototype.setLockState=function(lockState){((this.currentLockState=lockState)?(headerElement.classList.add("videoOsdHeader-locked"),this.osdBottomElement.classList.add("videoosd-bottom-locked"),this.view.querySelector(".videoOsdUnlockControls").classList.remove("hide"),1===lockState?(this.view.querySelector(".videoOsd-btnUnlock1").classList.remove("hide"),this.view.querySelector(".videoOsd-btnUnlock2").classList.add("hide")):(this.view.querySelector(".videoOsd-btnUnlock1").classList.add("hide"),this.view.querySelector(".videoOsd-btnUnlock2").classList.remove("hide")),lockOrientation):(headerElement.classList.remove("videoOsdHeader-locked"),this.osdBottomElement.classList.remove("videoosd-bottom-locked"),this.view.querySelector(".videoOsdUnlockControls").classList.add("hide"),this.view.querySelector(".videoOsd-btnUnlock1").classList.add("hide"),this.view.querySelector(".videoOsd-btnUnlock2").classList.add("hide"),unlockOrientation))()},VideoOsd.prototype.showOsd=function(timeoutMs,elementToFocus){this.paused||(headerElement.classList.remove("hide"),headerElement.offsetWidth,headerElement.classList.remove("videoOsdHeader-hidden"),showMainOsdControls(this,elementToFocus),startOsdHideTimer(this,timeoutMs))},VideoOsd.prototype.hideOsd=function(){var lyricsRenderer;isDisplayingLocalVideo(this.currentPlayer)&&(headerElement.classList.add("videoOsdHeader-hidden"),hideMainOsdControls(this),lyricsRenderer=this.lyricsRenderer)&&!lyricsRenderer.paused&&layoutManager.tv&&lyricsRenderer.focus()},VideoOsd.prototype.exit=function(){appRouter.back()},VideoOsd.prototype.onResume=function(options){BaseView.prototype.onResume.apply(this,arguments),headerElement.classList.add("videoOsdHeader"),fillHeaderRightContent(this);let boundOnPlayerChange=this.boundOnPlayerChange;boundOnPlayerChange=boundOnPlayerChange||(this.boundOnPlayerChange=onPlayerChange.bind(this)),events.on(playbackManager,"playerchange",boundOnPlayerChange),this.bindToPlayer(playbackManager.getCurrentPlayer(),!0);var isLocalVideo,player=this.currentPlayer,player=(player&&!options.refresh&&(isLocalVideo=isDisplayingLocalVideo(player,options=this.osdController.currentItem?.MediaType),this.updateTransparency(player,this.lastPlayerState||{},options,isLocalVideo)),this.view);let boundPointerMove=this.boundPointerMove,boundPointerEnter=(boundPointerMove=boundPointerMove||(this.boundPointerMove=onPointerMove.bind(this)),dom.addEventListener(document,window.PointerEvent?"pointermove":"mousemove",boundPointerMove,{passive:!0}),this.boundPointerEnter),boundPointerLeave=(boundPointerEnter=boundPointerEnter||(this.boundPointerEnter=onPointerEnter.bind(this)),dom.addEventListener(player,window.PointerEvent?"pointerenter":"mouseenter",boundPointerEnter,{passive:!0,capture:!0}),this.boundPointerLeave),boundWindowKeyDown=(boundPointerLeave=boundPointerLeave||(this.boundPointerLeave=onPointerLeave.bind(this)),dom.addEventListener(player,window.PointerEvent?"pointerleave":"mouseleave",boundPointerLeave,{passive:!0,capture:!0}),blurElementFromPreviousView(player),this.boundWindowKeyDown);boundWindowKeyDown=boundWindowKeyDown||(this.boundWindowKeyDown=onWindowKeyDown.bind(this)),dom.addEventListener(window,"keydown",boundWindowKeyDown,{}),mouseManager.requestMouseListening("videoosd")},VideoOsd.prototype.onPause=function(options){BaseView.prototype.onPause.apply(this,arguments),destroyOsdResizeObserver(this);var statsOverlay=this.statsOverlay,statsOverlay=(statsOverlay&&statsOverlay.enabled(!1),destroySubtitleOffsetOverlay(this),closeOsdDialogs(this),this.boundWindowKeyDown),statsOverlay=(statsOverlay&&dom.removeEventListener(window,"keydown",statsOverlay,{}),destroyHeaderRightContent(this),headerElement.classList.remove("videoOsdHeader","videoosd-header-safe","videoOsdHeader-hidden","videoOsdHeader-locked","hide","videoOsd-customFont-remotecontrol"),backdropContainer.classList.remove("nowplaying-backdropcontainer-blur","nowplaying-backdropcontainer-blur-high","nowplaying-backdropcontainer-blur-extrasaturation","nowplaying-backdropcontainer-blur-backdropfilter"),backgroundContainer.classList.remove("nowplaying-backgroundcontainer-blur","nowplaying-backgroundcontainer-brighter","nowplaying-backgroundcontainer-blur-backdropfilter"),clearBlurFromDocumentElement(this),this.boundPointerMove),statsOverlay=(statsOverlay&&dom.removeEventListener(document,window.PointerEvent?"pointermove":"mousemove",statsOverlay,{passive:!0}),this.boundOnPlayerChange),bottomTabControllers=(statsOverlay&&events.off(playbackManager,"playerchange",statsOverlay),this.bottomTabControllers);for(let i=0,length=bottomTabControllers.length;i<length;i++){var controller=bottomTabControllers[i];controller&&controller.onPause()}this.enableStopOnBack&&"true"!==options.newViewInfo?.params?.asDialog&&(document.documentElement.classList.remove("osd-tab-guide"),this.enableStopOnBack=!1,this.enableBackOnStop=!1,(statsOverlay=this.currentPlayer)?.isLocalPlayer&&userSettings.enableVideoUnderUI()?appRouter.setTransparency("backdrop"):playbackManager.stop(statsOverlay)),this.releaseCurrentPlayer(),mouseManager.releaseMouseListening("videoosd"),stopOsdHideTimer(this),backdrop.clear(),this.setLockState(0),unlockOrientation(),setSystemUIHidden(!1)},VideoOsd.prototype.destroy=function(){BaseView.prototype.destroy.apply(this,arguments);var videoOsdText=this.videoOsdText,videoOsdText=(videoOsdText&&(itemShortcuts.off(videoOsdText),this.videoOsdText=null),destroyPlayQueue(this),destroyLyricsRenderer(this),this.recordingButtonManager),bottomTabControllers=(videoOsdText&&(videoOsdText.destroy(),this.recordingButtonManager=null),destroyStats(this),destroySubtitleOffsetOverlay(this),closeOsdDialogs(this),this.osdController&&(this.osdController.destroy(),this.osdController=null),this.bottomTabControllers);if(bottomTabControllers){for(let i=0,length=bottomTabControllers.length;i<length;i++)bottomTabControllers[i]&&bottomTabControllers[i].destroy();this.bottomTabControllers=null}this.boundPointerMove=null,this.boundWindowKeyDown=null,this.boundInputCommand=null,this.boundHideOsd=null,this.boundShowOsdDefaultParams=null,this.boundOnOsdHideTimeout=null,this.boundOnPlayerChange=null,this.upNextContainer=null,this.lastPlayerState=null};export default VideoOsd; |