EmbyCrackedClient/web/modules/nowplayingbar/nowplayingbar.js
2025-06-25 11:46:04 +08:00

1 line
No EOL
23 KiB
JavaScript

import playbackManager from"./../common/playback/playbackmanager.js";import connectionManager from"./../emby-apiclient/connectionmanager.js";import events from"./../emby-apiclient/events.js";import globalize from"./../common/globalize.js";import layoutManager from"./../layoutmanager.js";import dom from"./../dom.js";import itemManager from"./../common/itemmanager/itemmanager.js";import itemShortcuts from"./../shortcuts.js";import"./../mediainfo/mediainfo.js";import"./../emby-elements/emby-button/paper-icon-button-light.js";import"./../emby-elements/userdatabuttons/emby-ratingbutton.js";import inputManager from"./../common/inputmanager.js";import focusManager from"./../focusmanager.js";import userSettings from"./../common/usersettings/usersettings.js";import OsdController from"./../playback/osdcontroller.js";let currentPlayer,osdController,currentPlayerSupportedCommands=[],nowPlayingImageElement,nowPlayingTextElement,nowPlayingBarTVTextElement,nowPlayingBarFavoriteButton,muteButton,volumeSlider,volumeSliderContainer,playPauseButtons,positionSlider,toggleRepeatButton,toggleShuffleButton,remoteControlButton,stopButtonRight,lastUpdateTime=0,isEnabled,currentRuntimeTicks=0,isVisibilityAllowed=!0,appFooter,headerElement=document.querySelector(".skinHeader"),currentMode;function getNowPlayingBarHtml(){let html="",className="";"tv"===currentMode?className+=" nowPlayingBar-tv headerNowPlaying headerSection":className+=" nowPlayingBar-footer nowPlayingBar-footer-transition",html+='<div class="nowPlayingBar focuscontainer-x hide nowPlayingBar-hidden'+className+'">',"tv"!==currentMode&&(html+='<div class="nowPlayingBarTop">'),"tv"===currentMode?html+='<div class="nowPlayingBarPositionContainer nowPlayingBarPositionContainer-tv sliderContainer">':html+='<div class="nowPlayingBarPositionContainer sliderContainer">',html+='<input type="range" is="emby-slider" pin step=".01" min="0" max="100" value="0" class="nowPlayingBarPositionSlider" tabindex="-1" data-defaultinputhandling="false" data-hoverthumb="true" data-thumbclass="nowPlayingBarPositionSliderThumb" data-sliderbackgroundclass="nowPlayingBarPositionContainer-background" /></div>',"tv"===currentMode?html+='<div class="nowPlayingBarInfoContainer nowPlayingBarInfoContainer-tv">':html+='<div class="nowPlayingBarInfoContainer">',"tv"===currentMode?html+='<div class="nowPlayingBarImage nowPlayingBarImage-tv" loading="lazy"></div>':html+='<div class="nowPlayingBarImage" loading="lazy"></div>',html+='<div class="nowPlayingBarText nowPlayingBar-hidetv"></div></div>';var tvTextClass="tv"===currentMode?"":" hide";html+='<button is="emby-button" type="button" class="nowPlayingBarTVText'+tvTextClass+' button-link button-link-color-inherit" tabindex="-1"></button>',"tv"===currentMode?html+='<div class="nowPlayingBarCenter nowPlayingBarCenter-tv">':html+='<div class="nowPlayingBarCenter nowPlayingBarCenter-autohide">',html=(html+='<button is="paper-icon-button-light" class="nowPlayingBar-hidetv previousTrackButton mediaButton md-icon md-icon-fill">&#xe045;</button><button is="paper-icon-button-light" class="nowPlayingBar-hidetv playPauseButton mediaButton md-icon md-icon-fill">&#xe034;</button>')+'<button is="paper-icon-button-light" class="nowPlayingBar-hidetv stopButton mediaButton md-icon md-icon-fill">&#xe047;</button><button is="paper-icon-button-light" class="nowPlayingBar-hidetv nextTrackButton mediaButton md-icon md-icon-fill">&#xe044;</button>',"tv"===currentMode?html+='<div class="nowPlayingBarCurrentTime"></div>':html+='<div class="nowPlayingBarCurrentTime nowPlayingBarCurrentTime-autohide"></div>',html=(html=(html+='</div><div class="nowPlayingBarRight nowPlayingBar-hidetv">')+'<button is="paper-icon-button-light" class="nowPlayingBar-hidetv nowPlayingBarMuteButton muteButton mediaButton hide md-icon md-icon-fill">&#xe050;</button><div class="sliderContainer nowPlayingBarVolumeSliderContainer hide" style="width:100px;vertical-align:middle;display:inline-flex;">')+'<input type="range" is="emby-slider" pin step="1" min="0" max="100" value="0" class="nowPlayingBarVolumeSlider" tabindex="-1" data-hoverthumb="true" /></div>';let toggleButtonIconClass="toggleButtonIcon";return dom.allowBackdropFilter()&&(toggleButtonIconClass+=" toggleButtonIcon-backdropfilter"),html=(html=(html=(html=(html+='<button is="paper-icon-button-light" class="nowPlayingBar-hidetv toggleShuffleButton toggleButton mediaButton" style="padding:.24em;" title="'+globalize.translate("Shuffle")+'"><i style="font-size:inherit;padding:.1em;" class="md-icon '+toggleButtonIconClass+'">&#xe043;</i></button>')+('<button is="paper-icon-button-light" class="nowPlayingBar-hidetv toggleRepeatButton toggleButton mediaButton" style="padding:.24em;" title="'+globalize.translate("HeaderRepeatMode")+'"><i style="font-size:inherit;padding:.1em;" class="md-icon '+toggleButtonIconClass+'">&#xe040;</i></button>'))+'<button is="emby-ratingbutton" type="button" class="nowPlayingBar-hidetv nowPlayingBarFavoriteButton listItemButton paper-icon-button-light md-icon">&#xe87D;</button>'+'<button is="paper-icon-button-light" class="nowPlayingBar-hidetv playPauseButton playPauseButton-right mediaButton md-icon md-icon-fill">&#xe034;</button>')+'<button is="paper-icon-button-light" class="nowPlayingBar-hidetv stopButton stopButton-right mediaButton md-icon md-icon-fill">&#xe047;</button>'+'<button is="paper-icon-button-light" class="nowPlayingBar-hidetv remoteControlButton mediaButton md-icon autortl">&#xe241;</button>')+"</div>"+"</div>",html="tv"!==currentMode?(html=(html+='<div class="nowPlayingBarDropOverlay">')+'<h3 style="margin:0;"><i class="md-icon button-icon button-icon-left autortl" style="font-size:150%;">&#xe03b;</i>'+globalize.translate("HeaderAddToPlayQueue")+"</h3>")+"</div></div>":html}function onSlideDownComplete(e){var elem=e.currentTarget;elem===e.target&&elem.classList.contains("nowPlayingBar-hidden")&&elem.classList.add("hide")}function slideDown(elem){elem._visible&&(elem._visible=!1,"tv"===currentMode?(inputManager.off(headerElement,onInputCommand),elem.classList.add("nowPlayingBar-hidden","hide"),headerElement.classList.remove("skinHeader-withnowplaying"),document.documentElement.classList.remove("withheadernowplaying")):(elem.classList.remove("nowPlayingBar-footer-transition"),elem.offsetWidth,elem.classList.add("nowPlayingBar-footer-transition"),elem.offsetWidth,elem.classList.add("nowPlayingBar-hidden")))}function onInputCommand(e){"up"===e.detail.command&&focusManager.focus(nowPlayingBarTVTextElement)}function slideUp(elem){elem._visible||(elem._visible=!0,"tv"===currentMode?(elem.classList.remove("nowPlayingBar-hidden","hide"),headerElement.classList.add("skinHeader-withnowplaying"),document.documentElement.classList.add("withheadernowplaying"),inputManager.off(headerElement,onInputCommand),inputManager.on(headerElement,onInputCommand)):(elem.classList.remove("hide"),elem.offsetWidth,elem.classList.remove("nowPlayingBar-hidden")))}function onPlayPauseClick(){playbackManager.playPause(currentPlayer)}function onStopClick(){currentPlayer&&playbackManager.stop(currentPlayer)}let dragCounter=0;function onDragEnter(e){e.dataTransfer.dropEffect="copy";e=window.CurrentDragInfo,e=e?e.item:null;e&&playbackManager.canQueue(e)&&(this.classList.add("nowPlayingBar-dragging-over"),dragCounter++)}function onDragOver(e){e.dataTransfer.dropEffect="copy";var data=window.CurrentDragInfo,data=data?data.item:null;data&&playbackManager.canQueue(data)&&e.preventDefault()}function onDragLeave(e){var data=window.CurrentDragInfo,data=data?data.item:null;data&&playbackManager.canQueue(data)&&0===--dragCounter&&this.classList.remove("nowPlayingBar-dragging-over")}function onDragEnd(e){this.classList.remove("nowPlayingBar-dragging-over")}function showToast(options){return Emby.importModule("./modules/toast/toast.js").then(function(toast){return toast(options)})}function onDrop(e){dragCounter=0,e.preventDefault(),this.classList.remove("nowPlayingBar-dragging-over");let items=window.CurrentDragInfo?.items||[];items.length&&(items=items.filter(function(i){return playbackManager.canQueue(i)})).length&&(playbackManager.queue({items:items}),showToast({text:globalize.translate("HeaderAddedToPlayQueue"),icon:"&#xe03b;"}))}function bindEvents(elem){"tv"!==currentMode&&dom.addEventListener(elem,dom.whichTransitionEvent(),onSlideDownComplete,{passive:!0}),nowPlayingImageElement=elem.querySelector(".nowPlayingBarImage"),nowPlayingTextElement=elem.querySelector(".nowPlayingBarText"),nowPlayingBarTVTextElement=elem.querySelector(".nowPlayingBarTVText"),nowPlayingBarFavoriteButton=elem.querySelector(".nowPlayingBarFavoriteButton"),positionSlider=elem.querySelector(".nowPlayingBarPositionSlider"),osdController=new OsdController({nowPlayingPositionSlider:positionSlider,positionTextElem:elem.querySelector(".nowPlayingBarCurrentTime"),durationTextElem:null,enableSeekThumbnails:!1}),events.on(osdController,"displayitemupdated",onDisplayItemUpdated),osdController.bindToPlayer(currentPlayer),(muteButton=elem.querySelector(".muteButton")).addEventListener("click",function(){currentPlayer&&playbackManager.toggleMute(currentPlayer)}),stopButtonRight=elem.querySelector(".stopButton-right");var stopButtons=elem.querySelectorAll(".stopButton");for(let i=0,length=stopButtons.length;i<length;i++)stopButtons[i].addEventListener("click",onStopClick);for(let i=0,length=(playPauseButtons=elem.querySelectorAll(".playPauseButton")).length;i<length;i++)playPauseButtons[i].addEventListener("click",onPlayPauseClick);elem.querySelector(".nextTrackButton").addEventListener("click",function(){currentPlayer&&playbackManager.nextTrack(currentPlayer)}),elem.querySelector(".previousTrackButton").addEventListener("click",function(){currentPlayer&&playbackManager.previousTrack(currentPlayer)}),(remoteControlButton=elem.querySelector(".remoteControlButton")).addEventListener("click",showRemoteControl),(toggleRepeatButton=elem.querySelector(".toggleRepeatButton")).addEventListener("click",function(){currentPlayer&&playbackManager.toggleRepeatMode(currentPlayer)}),(toggleShuffleButton=elem.querySelector(".toggleShuffleButton")).addEventListener("click",function(){currentPlayer&&playbackManager.toggleShuffle(currentPlayer)}),volumeSlider=elem.querySelector(".nowPlayingBarVolumeSlider"),volumeSliderContainer=elem.querySelector(".nowPlayingBarVolumeSliderContainer"),volumeSlider.addEventListener("change",function(){currentPlayer&&currentPlayer.setVolume(this.value)}),volumeSlider.addEventListener("input",function(){currentPlayer&&currentPlayer.setVolume(this.value)}),positionSlider.getBubbleHtml=function(value){return osdController.getPositionBubbleHtml(value,currentRuntimeTicks)},elem.addEventListener("click",function(e){e.target.closest("BUTTON:not(.nowPlayingBarTVText),INPUT,A")||showRemoteControl(0)}),elem.addEventListener("dragover",onDragOver),elem.addEventListener("dragend",onDragEnd),elem.addEventListener("dragenter",onDragEnter),elem.addEventListener("dragleave",onDragLeave),elem.addEventListener("drop",onDrop)}function showRemoteControl(){Emby.importModule("./modules/approuter.js").then(function(appRouter){appRouter.showNowPlaying()})}let nowPlayingBarElement;function getNowPlayingBar(){var parentModule;return nowPlayingBarElement?Promise.resolve(nowPlayingBarElement):(parentModule="tv"===(currentMode=layoutManager.tv?"tv":null)?"./modules/appheader/appheader.js":"./modules/appfooter/appfooter.js",Promise.all([Emby.importModule(parentModule),require(["css!modules/nowplayingbar/nowplayingbar.css"]),Emby.importModule("./modules/emby-elements/emby-slider/emby-slider.js")]).then(function(responses){appFooter=responses[0];responses="tv"===currentMode?headerElement:appFooter.element;return(nowPlayingBarElement=responses.querySelector(".nowPlayingBar"))||(responses.insertAdjacentHTML("afterbegin",getNowPlayingBarHtml()),nowPlayingBarElement=responses.querySelector(".nowPlayingBar"),itemShortcuts.on(nowPlayingBarElement),bindEvents(nowPlayingBarElement)),Promise.resolve(nowPlayingBarElement)}))}function updatePlayPauseState(isPaused){let i,length;if(playPauseButtons)if(isPaused)for(i=0,length=playPauseButtons.length;i<length;i++)playPauseButtons[i].innerHTML="&#xe037;";else for(i=0,length=playPauseButtons.length;i<length;i++)playPauseButtons[i].innerHTML="&#xe034;"}function updatePlayerStateInternal(event,state,player){showNowPlayingBar();var playerInfo=playbackManager.getPlayerInfo(player),playState=state.PlayState||{},event=(osdController&&(osdController.disablePositionSlider="tv"===currentMode,osdController.updatePlayerState(event,player,state)),updatePlayPauseState(playState.IsPaused),playerInfo.supportedCommands||[]),playerInfo=(currentPlayerSupportedCommands=event,state.NowPlayingItem||{});!event.includes("SetRepeatMode")||player.isLocalPlayer&&"Video"===playerInfo.MediaType?toggleRepeatButton.classList.add("hide"):toggleRepeatButton.classList.remove("hide"),!event.includes("SetShuffle")||player.isLocalPlayer&&"Video"===playerInfo.MediaType?toggleShuffleButton.classList.add("hide"):toggleShuffleButton.classList.remove("hide"),player.isLocalPlayer&&"Video"===playerInfo.MediaType?(remoteControlButton.innerHTML="&#xe5d0;",stopButtonRight.classList.remove("hide")):(remoteControlButton.innerHTML="&#xe241;",stopButtonRight.classList.add("hide")),updateRepeatModeDisplay(playState.RepeatMode),updateShuffleDisplay(playState.Shuffle),updatePlayerVolumeState(playState.IsMuted,playState.VolumeLevel),updateTimeDisplay(playState.PositionTicks,playerInfo.RunTimeTicks,playbackManager.getSeekableRanges(player))}function updateRepeatModeDisplay(repeatMode){var icon=toggleRepeatButton.querySelector("i"),btnRepeatMode=toggleRepeatButton;"RepeatAll"===repeatMode?(icon.innerHTML="&#xe040;",icon.classList.add("toggleButtonIcon-active"),btnRepeatMode.classList.add("toggleButton-active")):"RepeatOne"===repeatMode?(icon.innerHTML="&#xe041;",icon.classList.add("toggleButtonIcon-active"),btnRepeatMode.classList.add("toggleButton-active")):(icon.innerHTML="&#xe040;",icon.classList.remove("toggleButtonIcon-active"),btnRepeatMode.classList.remove("toggleButton-active"))}function updateShuffleDisplay(shuffle){var icon=toggleShuffleButton.querySelector("i"),btn=toggleShuffleButton;shuffle?(icon.classList.add("toggleButtonIcon-active"),btn.classList.add("toggleButton-active")):(icon.classList.remove("toggleButtonIcon-active"),btn.classList.remove("toggleButton-active"))}function updateTimeDisplay(positionTicks,runtimeTicks,seekableRanges){osdController?.onPlayerTimeUpdate(positionTicks,runtimeTicks,seekableRanges)}function setSliderValueAfterUpgrade(slider,value){slider.waitForCustomElementUpgrade().then(function(){slider.setValue(value)})}function setSliderValue(slider,value){slider.setValue?slider.setValue(value):setSliderValueAfterUpgrade(slider,value)}function updatePlayerVolumeState(isMuted,volumeLevel){var supportedCommands=currentPlayerSupportedCommands;let showMuteButton=!0,showVolumeSlider=!0;-1===supportedCommands.indexOf("ToggleMute")&&(showMuteButton=!1),muteButton.innerHTML=isMuted?"&#xe04F;":"&#xe050;",-1===supportedCommands.indexOf("SetVolume")&&(showVolumeSlider=!1),showMuteButton?muteButton.classList.remove("hide"):muteButton.classList.add("hide"),volumeSlider&&(showVolumeSlider?volumeSliderContainer.classList.remove("hide"):volumeSliderContainer.classList.add("hide"),volumeSlider.dragging||setSliderValue(volumeSlider,isMuted?0:volumeLevel))}function getTextActionButton(item,text,serverId,enableButton,addComma){text=text||itemManager.getDisplayName(item)||"",addComma&&(text+=", ");let html="";return html=enableButton?(addComma=itemShortcuts.getShortcutAttributesHtml(item,{serverId:serverId}),html="<button "+addComma+' type="button" class="itemAction button-link button-inherit-color nowPlayingBarButton-autohide textItem" data-action="link" is="emby-button">',(html=(html+=text)+'</button><div class="nowPlayingBarText-autohide textItem">')+text+"</div>"):(html+='<div class="textItem">')+text+"</div>"}function seriesImageUrl(item,options){if(item)return"Episode"!==item.Type?null:((options=options||{}).type=options.type||"Primary","Primary"===options.type&&item.SeriesPrimaryImageTag?(options.tag=item.SeriesPrimaryImageTag,{url:connectionManager.getApiClient(item).getImageUrl(item.SeriesId,options),aspect:"2/3"}):"Thumb"===options.type&&item.ParentThumbImageTag?(options.tag=item.ParentThumbImageTag,{url:connectionManager.getApiClient(item).getImageUrl(item.ParentThumbItemId,options),aspect:"16/9"}):null);throw new Error("item cannot be null!")}function imageUrl(item,options){if(!item)throw new Error("item cannot be null!");(options=options||{}).type=options.type||"Primary";var imageTags=item.ImageTags||{};return options.tag=item.PrimaryImageTag||imageTags[options.type],options.tag?{url:connectionManager.getApiClient(item).getImageUrl(item.PrimaryImageItemId||item.Id||item.ItemId,options),aspect:item.PrimaryImageAspectRatio?item.PrimaryImageAspectRatio.toString():"1"}:item.AlbumId&&item.AlbumPrimaryImageTag?(options.tag=item.AlbumPrimaryImageTag,{url:connectionManager.getApiClient(item).getImageUrl(item.AlbumId,options),aspect:"1"}):null}function getNowPlayingNames(nowPlayingItem,includeNonNameInfo,enableTextLinks){let topText=nowPlayingItem.Name,bottomText=(topText=nowPlayingItem.AlbumId&&"Audio"===nowPlayingItem.MediaType?getTextActionButton({Id:nowPlayingItem.AlbumId,Name:nowPlayingItem.Album,Type:"MusicAlbum",IsFolder:!0,ServerId:nowPlayingItem.ServerId},topText,null,enableTextLinks):itemManager.getDisplayName(nowPlayingItem,{})||nowPlayingItem.Name,"");nowPlayingItem.ArtistItems&&nowPlayingItem.ArtistItems.length?bottomText=nowPlayingItem.ArtistItems.map(function(a,index){return getTextActionButton({Id:a.Id,Name:a.Name,Type:"MusicArtist",IsFolder:!0,ServerId:nowPlayingItem.ServerId},null,null,enableTextLinks,index<nowPlayingItem.ArtistItems.length-1)}).join(""):nowPlayingItem.SeriesName||nowPlayingItem.Album?(bottomText=topText,topText=nowPlayingItem.SeriesName||nowPlayingItem.Album,nowPlayingItem.SeriesId&&(topText=getTextActionButton({Id:nowPlayingItem.SeriesId,Name:nowPlayingItem.SeriesName,Type:"Series",IsFolder:!0,ServerId:nowPlayingItem.ServerId},topText,null,enableTextLinks))):nowPlayingItem.ProductionYear&&!1!==includeNonNameInfo&&(bottomText=nowPlayingItem.ProductionYear);includeNonNameInfo=[];return enableTextLinks?(includeNonNameInfo.push('<div class="textItems nowplayingbar-textitems">'+topText+"</div>"),bottomText&&includeNonNameInfo.push('<div class="textItems secondaryText nowplayingbar-textitems">'+bottomText+"</div>")):(includeNonNameInfo.push('<div class="textItems nowplayingbar-textitems">'+topText+"</div>"),bottomText&&includeNonNameInfo.push('<div class="textItems nowplayingbar-textitems">'+bottomText+"</div>")),includeNonNameInfo}let currentImgUrl;function onDisplayItemUpdated(e,item,displayItem,state){var textLines=displayItem?getNowPlayingNames(displayItem,null,!0):[],textLines=(nowPlayingTextElement.innerHTML=textLines.join(""),nowPlayingBarTVTextElement.innerHTML=(displayItem?getNowPlayingNames(displayItem):[]).join('<div style="margin: 0.5em;"> - </div>'),displayItem?seriesImageUrl(displayItem,{height:70})||imageUrl(displayItem,{height:70}):null),url=textLines?textLines.url:null;url!==currentImgUrl&&((currentImgUrl=url)?(nowPlayingImageElement.style["aspect-ratio"]=textLines.aspect,nowPlayingImageElement.style.backgroundImage="url('"+url+"')",nowPlayingImageElement.classList.remove("defaultCardBackground"),nowPlayingImageElement.innerHTML=""):(nowPlayingImageElement.style.backgroundImage="",nowPlayingImageElement.style["aspect-ratio"]="1",nowPlayingImageElement.classList.add("defaultCardBackground"),nowPlayingImageElement.innerHTML='<i class="md-icon nowPlayingBarDefaultItemIcon autortl">'+itemManager.getDefaultIcon(displayItem)+"</i>")),displayItem&&itemManager.canRate(item)?(nowPlayingBarFavoriteButton.setItem(displayItem),nowPlayingBarFavoriteButton.classList.remove("hide")):(nowPlayingBarFavoriteButton.classList.add("hide"),nowPlayingBarFavoriteButton.setItem(null))}function onPlaybackStart(e,state){osdController?.onPlaybackStart(e,state);onStateChanged.call(this,e,state)}function onShuffleChange(e){isEnabled&&updateShuffleDisplay(playbackManager.getShuffle(this))}function onRepeatModeChange(e){isEnabled&&updateRepeatModeDisplay(playbackManager.getRepeatMode(this))}function showNowPlayingBar(){isVisibilityAllowed?("tv"!==currentMode&&appFooter&&appFooter.setWithContent(!0),getNowPlayingBar().then(slideUp)):hideNowPlayingBar()}function hideNowPlayingBar(){isEnabled=!1;var elem=nowPlayingBarElement;elem&&slideDown(elem),"tv"!==currentMode&&appFooter&&appFooter.setWithContent(!1)}function onPlaybackStopped(e,state){osdController?.onPlaybackStopped(e,state);this.isLocalPlayer?"Audio"!==state.NextMediaType&&"Video"!==state.NextMediaType&&hideNowPlayingBar():state.NextMediaType||hideNowPlayingBar()}function onPlayPauseStateChanged(e){isEnabled&&updatePlayPauseState(this.paused())}function onStateChanged(event,state){let player=this;if(state.IsBackgroundPlayback)hideNowPlayingBar();else if(state.NowPlayingItem){if(player.isLocalPlayer&&state.NowPlayingItem){if("Video"===state.NowPlayingItem.MediaType)if(!userSettings.enableVideoUnderUI())return void hideNowPlayingBar();if("Audio"!==state.NowPlayingItem.MediaType&&"Video"!==state.NowPlayingItem.MediaType)return void hideNowPlayingBar()}isEnabled=!0,nowPlayingBarElement?updatePlayerStateInternal(event,state,player):getNowPlayingBar().then(function(){updatePlayerStateInternal(event,state,player)})}else hideNowPlayingBar()}function onTimeUpdate(e){var now;!isEnabled||(now=Date.now())-lastUpdateTime<700||(lastUpdateTime=now,currentRuntimeTicks=playbackManager.duration(this),updateTimeDisplay(playbackManager.currentTime(this),currentRuntimeTicks,playbackManager.getSeekableRanges(this)))}function releaseCurrentPlayer(){osdController?.releaseCurrentPlayer();var player=currentPlayer;player&&(events.off(player,"playbackstart",onPlaybackStart),events.off(player,"statechange",onPlaybackStart),events.off(player,"repeatmodechange",onRepeatModeChange),events.off(player,"shufflechange",onShuffleChange),events.off(player,"playbackstop",onPlaybackStopped),events.off(player,"volumechange",onVolumeChanged),events.off(player,"pause",onPlayPauseStateChanged),events.off(player,"unpause",onPlayPauseStateChanged),events.off(player,"timeupdate",onTimeUpdate),currentPlayer=null,hideNowPlayingBar())}function onVolumeChanged(e){isEnabled&&updatePlayerVolumeState(this.isMuted(),this.getVolume())}function refreshFromPlayer(player){var state=playbackManager.getPlayerState(player);onStateChanged.call(player,{type:"init"},state)}function bindToPlayer(player){osdController?.bindToPlayer(player),player!==currentPlayer&&(releaseCurrentPlayer(),currentPlayer=player)&&(refreshFromPlayer(player),events.on(player,"playbackstart",onPlaybackStart),events.on(player,"statechange",onPlaybackStart),events.on(player,"repeatmodechange",onRepeatModeChange),events.on(player,"shufflechange",onShuffleChange),events.on(player,"playbackstop",onPlaybackStopped),events.on(player,"volumechange",onVolumeChanged),events.on(player,"pause",onPlayPauseStateChanged),events.on(player,"unpause",onPlayPauseStateChanged),events.on(player,"timeupdate",onTimeUpdate))}function isEnabledForView(e){return!1!==e.detail.enableMediaControl&&!("tv"===currentMode&&!e.detail.enableMediaControlTV)}events.on(playbackManager,"playerchange",function(e,player){bindToPlayer(player)}),bindToPlayer(playbackManager.getCurrentPlayer()),document.addEventListener("viewbeforeshow",function(e){"true"!==e.detail.params?.asDialog&&(isEnabledForView(e)?isVisibilityAllowed||(isVisibilityAllowed=!0,currentPlayer?refreshFromPlayer(currentPlayer):hideNowPlayingBar()):isVisibilityAllowed&&(isVisibilityAllowed=!1,hideNowPlayingBar()))});