import events from"events";import loading from"loading";import globalize from"globalize";import navDrawer from"./../../navdrawer/navdrawer.js";import userSettings from"userSettings";import{appHost}from"serviceLocator";import skinViewManager from"skinViewManager";import viewManager from"viewManager";import winThemeSettings from"./settings/winthemesettings.js";import layoutManager from"layoutManager";import VideoGlue from"./videoGlue.js";import playbackManager from"playbackManager";let DrawerStates={Closed:0,Open:1,Docked:2,DockedMini:3},lastDrawerState=DrawerStates.Docked,isSmallWidth=!1,mediaQueryWindowWidth,areDrawerButtonsCreated,headerFullScreenButton,headerExitButton,gluedVideo;function onPlayerChange(){bindToPlayer(playbackManager.getCurrentPlayer())}function bindToPlayer(newPlayer){var bgContainer;gluedVideo?.destroy(),gluedVideo=null,newPlayer&&newPlayer.supports("geometrycontrol")&&(bgContainer=document.querySelector(".backgroundContainer"),gluedVideo=new VideoGlue(newPlayer,bgContainer))}function onLoadingStateChange(e,isLoadingActive){isLoadingActive?window.NativeWindowControl.startLogoRotation():window.NativeWindowControl.stopLogoRotation()}function onDrawerStateChange(e,drawerState){lastDrawerState=drawerState,updateTitleBarMode(),areDrawerButtonsCreated||ensureDrawerButtons()}function onMediaQueryChange(e){isSmallWidth=e.matches,updateTitleBarMode()}function updateTitleBarMode(){isSmallWidth?window.NativeWindowControl.setTitlebarMode("TallWithConstrainedLogo"):lastDrawerState===DrawerStates.Docked?window.NativeWindowControl.setTitlebarMode("TallWithExtendedLogo"):lastDrawerState===DrawerStates.DockedMini?window.NativeWindowControl.setTitlebarMode("TallWithIconOnly"):lastDrawerState!==DrawerStates.Open&&lastDrawerState!==DrawerStates.Closed||window.NativeWindowControl.setTitlebarMode("TallWithConstrainedLogo")}function onUserSettingsChanged(e,name){"language"===name&&setTimeout(onLanguageChanged,2e3)}function onLanguageChanged(){var firstChild,strOn=globalize.translate("On"),strOn=` body.settings-view-active .checkboxContainer .emby-checkbox::after { content: '${globalize.translate("Off")}' !important; } body.settings-view-active .checkboxContainer .emby-checkbox:checked::after { content: '${strOn}' !important; } `;let styleElement=document.getElementById("native-theme-strings");styleElement||((styleElement=document.createElement("style")).id="native-theme-strings",(firstChild=document.head.firstChild)?document.head.insertBefore(styleElement,firstChild):document.head.appendChild(styleElement)),styleElement.innerHTML=strOn}function onSuperThemeStatusChanged(e){window.NativeThemeInterop.getSuperThemeStatus()?.SuperThemeEnabled?document.documentElement.classList.add("supertheme"):document.documentElement.classList.remove("supertheme")}function onThemeInfoChanged(e){let themeInfo=window.NativeThemeInterop.getNativeThemeInfo(),cssVariables="";Object.keys(themeInfo.Colors).forEach(function(key){var key=themeInfo.Colors[key],hue=key.H,saturation=key.S.toFixed(1)+"%",lightness=key.L.toFixed(1)+"%",alpha=(key.A/255).toFixed(2);key.IsExtra?cssVariables+=`--win-${key.ColorName}: ${key.HexValue}; `:cssVariables=(cssVariables=(cssVariables=(cssVariables=(cssVariables+=`--win-${key.ColorName.toLowerCase()}-color-hue: ${hue}; `)+`--win-${key.ColorName.toLowerCase()}-color-saturation: ${saturation}; `)+`--win-${key.ColorName.toLowerCase()}-color-lightness: ${lightness}; `)+`--win-${key.ColorName.toLowerCase()}-color-alpha: ${alpha}; `)+`--win-${key.ColorName.toLowerCase()}-color: ${key.HexValue}; `});var firstChild;let styleElement=document.getElementById("native-theme-styles");styleElement||((styleElement=document.createElement("style")).id="native-theme-styles",(firstChild=document.head.firstChild)?document.head.insertBefore(styleElement,firstChild):document.head.appendChild(styleElement)),styleElement.innerHTML=`:root { ${cssVariables} }`}function onDrawerToggleButtonClick(e){var state=navDrawer.getDrawerState();state===DrawerStates.Open?(userSettings.drawerStyle("closed"),navDrawer.close()):state===DrawerStates.Docked||state===DrawerStates.Open?(userSettings.drawerStyle("docked-mini"),navDrawer.open(!0,!0)):((state=!mediaQueryWindowWidth.matches)&&userSettings.drawerStyle("docked"),navDrawer.open(state))}function onDrawerCloseButtonClick(e){userSettings.drawerStyle("closed"),navDrawer.close()}function onHeaderMenuButtonClick(e){e.preventDefault(),e.stopPropagation(),e.stopImmediatePropagation();e=!mediaQueryWindowWidth.matches;e&&userSettings.drawerStyle("docked"),navDrawer.open(e)}function ensureDrawerButtons(){var mainDrawer,Menu=globalize.translate("Menu"),Close=globalize.translate("Close"),Menu=` `,Close=document.querySelector(".mainDrawer .navDrawerButtonHeader"),Menu=(Close||((mainDrawer=document.querySelector(".mainDrawer")).insertAdjacentHTML("afterbegin",Menu),(Close=mainDrawer.querySelector(".navDrawerButtonHeader")).querySelector(".drawerToggleButton").addEventListener("click",onDrawerToggleButtonClick),Close.querySelector(".drawerCloseButton").addEventListener("click",onDrawerCloseButtonClick)),document.querySelector(".skinHeader .headerLeft .headerMenuButton"));Menu&&Menu.addEventListener("click",onHeaderMenuButtonClick,!0),areDrawerButtonsCreated=!0}function cleanupDrawerButtons(){var drawerToggleButton=document.querySelector(".mainDrawer .navDrawerButtonHeader .drawerToggleButton"),drawerToggleButton=(drawerToggleButton&&(drawerToggleButton.removeEventListener("click",onDrawerToggleButtonClick),drawerToggleButton.remove()),document.querySelector(".mainDrawer .navDrawerButtonHeader .drawerCloseButton")),drawerToggleButton=(drawerToggleButton&&(drawerToggleButton.removeEventListener("click",onDrawerCloseButtonClick),drawerToggleButton.remove()),document.querySelector(".mainDrawer .navDrawerButtonHeader")),drawerToggleButton=(drawerToggleButton&&drawerToggleButton.remove(),document.querySelector(".skinHeader .headerLeft .headerMenuButton"));drawerToggleButton&&drawerToggleButton.removeEventListener("click",onHeaderMenuButtonClick,!0),areDrawerButtonsCreated=!1}function onFullScreenButtonClick(e){"Normal"===appHost.getWindowState()?appHost.setWindowState("Fullscreen"):appHost.setWindowState("Normal")}function onExitButtonClick(e){appHost.exit()}function onViewbeforeshow(e){"true"!==e.detail.params?.asDialog&&(e.detail.settingsTheme?document.body.classList.add("settings-view-active"):document.body.classList.remove("settings-view-active"))}function cleanupHeaderButtons(){headerFullScreenButton&&(headerFullScreenButton.removeEventListener("click",onFullScreenButtonClick),headerFullScreenButton.remove(),headerFullScreenButton=null),headerExitButton&&(headerExitButton.removeEventListener("click",onExitButtonClick),headerExitButton.remove(),headerExitButton=null)}function checkAndFixSettingsTheme(){try{var settingsTheme=userSettings.settingsTheme();"windows"!==settingsTheme&&"maintheme"!==settingsTheme&&settingsTheme&&userSettings.settingsTheme("")}catch(err){}return userSettings.enableBackdrops()&&userSettings.enableBackdrops(!1),!1}function showAlert(options){return Emby.importModule("./modules/common/dialogs/alert.js").then(function(alert){return alert(options)})}function monitorLayoutChange(){checkAndFixLayoutMode()&&showAlert("The Windows theme does not support any other mode than Desktop mode. Changing back to Desktop mode.").then(function(){window.location.reload()})}function checkAndFixLayoutMode(){return"tv"===layoutManager.getSavedLayout()&&"windows"===userSettings.theme()&&(layoutManager.setLayout("desktop",!0),!0)}function onFocusBlur(){document.hasFocus()?document.body.classList.add("window-focus"):document.body.classList.remove("window-focus")}function ThemeController(){}ThemeController.prototype.load=function(currentThemeInfo){if(checkAndFixSettingsTheme(),skinViewManager.setSkinOptions({showTitleOnHomeTab:!0,dontUseNativeDropDowns:!0,dialogAnimationTimeout:50}),skinViewManager.initFromTheme=!0,window.NativeWindowControl&&(window.NativeWindowControl.isLogoRotationSupported()&&events.on(loading,"loading-state-change",onLoadingStateChange),window.NativeWindowControl.isTitlebarModeSupported("TallWithExtendedLogo"))){(mediaQueryWindowWidth=window.matchMedia("not all and (min-width: 60em)")).addListener(onMediaQueryChange),isSmallWidth=mediaQueryWindowWidth.matches,events.on(navDrawer,"drawer-state-change",onDrawerStateChange);let currentState=navDrawer.getDrawerState();setTimeout(()=>{onDrawerStateChange(navDrawer,currentState),ensureDrawerButtons()})}return window.NativeThemeInterop&&(events.on(window.NativeThemeInterop,"nativethemeinfochanged",onThemeInfoChanged),onThemeInfoChanged(window.NativeThemeInterop),events.on(window.NativeThemeInterop,"superthemestatuschanged",onSuperThemeStatusChanged),onSuperThemeStatusChanged()),document.addEventListener("viewbeforeshow",onViewbeforeshow),window.addEventListener("focus",onFocusBlur),window.addEventListener("blur",onFocusBlur),onFocusBlur(),viewManager.currentViewInfo()?.settingsTheme&&setTimeout(()=>document.body.classList.add("settings-view-active"),10),events.on(userSettings,"change",onUserSettingsChanged),events.on(layoutManager,"modechange",monitorLayoutChange),layoutManager.tv&&layoutManager.setLayout("desktop",!0),document.querySelector(".headerRight").classList.add("focuscontainer-x"),document.querySelector(".headerMiddle").classList.add("focuscontainer-x"),events.on(playbackManager,"playerchange",onPlayerChange),bindToPlayer(playbackManager.getCurrentPlayer()),onLanguageChanged(),Promise.resolve()},ThemeController.prototype.hasSettings=function(){return!0},ThemeController.prototype.showSettings=function(){return winThemeSettings.showSettings(),Promise.resolve()},ThemeController.prototype.destroy=function(){window.removeEventListener("focus",onFocusBlur),window.removeEventListener("blur",onFocusBlur),document.body.classList.remove("window-focus"),document.documentElement.classList.remove("supertheme"),events.off(loading,"loading-state-change",onLoadingStateChange),events.off(navDrawer,"drawer-state-change",onDrawerStateChange),events.off(userSettings,"change",onUserSettingsChanged),events.off(layoutManager,"modechange",monitorLayoutChange),events.off(playbackManager,"playerchange",onPlayerChange),bindToPlayer(null),document.removeEventListener("viewbeforeshow",onViewbeforeshow),document.body.classList.remove("settings-view-active"),skinViewManager.clearCustomizations(),window.NativeWindowControl&&window.NativeWindowControl.setTitlebarMode("Normal"),window.NativeThemeInterop&&(events.off(window.NativeThemeInterop,"nativethemeinfochanged",onThemeInfoChanged),events.off(window.NativeThemeInterop,"superthemestatuschanged",onSuperThemeStatusChanged),document.documentElement.classList.remove("supertheme")),mediaQueryWindowWidth&&(mediaQueryWindowWidth.removeListener(onMediaQueryChange),mediaQueryWindowWidth=null),cleanupDrawerButtons(),cleanupHeaderButtons();var currentView=viewManager.currentView();currentView&¤tView.querySelectorAll(".emby-select-nopointer").forEach(selectElem=>selectElem.classList.remove("emby-select-nopointer"))};export default ThemeController;