define(["loading", "events", "dialogHelper", "dom", "layoutManager", "scrollHelper", "globalize", "require", "material-icons", "emby-button", "paper-icon-button-light", "emby-input", "formDialogStyle", "flexStyles"], function(loading, events, dialogHelper, dom, layoutManager, scrollHelper, globalize, require) { "use strict"; function reloadPageWhenServerAvailable(retryCount) { var apiClient = currentApiClient; apiClient && apiClient.getJSON(apiClient.getUrl("System/Info")).then(function(info) { info.IsShuttingDown ? retryReload(retryCount) : (currentInstance.restarted = !0, dialogHelper.close(currentDlg)) }, function() { retryReload(retryCount) }) } function retryReload(retryCount) { setTimeout(function() { retryCount = retryCount || 0, ++retryCount < 150 && reloadPageWhenServerAvailable(retryCount) }, 500) } function startRestart(instance, apiClient, dlg) { currentApiClient = apiClient, currentDlg = dlg, currentInstance = instance, apiClient.restartServer().then(function() { setTimeout(reloadPageWhenServerAvailable, 250) }) } function showDialog(instance, options, template) { function onButtonClick() { dialogHelper.close(dlg) } var dialogOptions = { removeOnClose: !0, scrollY: !1 }, enableTvLayout = layoutManager.tv; enableTvLayout && (dialogOptions.size = "fullscreen"); var dlg = dialogHelper.createDialog(dialogOptions), configuredButtons = []; dlg.classList.add("formDialog"), dlg.innerHTML = globalize.translateHtml(template, "sharedcomponents"), dlg.classList.add("align-items-center"), dlg.classList.add("justify-items-center"); var formDialogContent = dlg.querySelector(".formDialogContent"); formDialogContent.style["flex-grow"] = "initial", enableTvLayout ? (formDialogContent.style["max-width"] = "50%", formDialogContent.style["max-height"] = "60%", scrollHelper.centerFocus.on(formDialogContent, !1)) : (formDialogContent.style.maxWidth = Math.min(150 * configuredButtons.length + 200, dom.getWindowSize().innerWidth - 50) + "px", dlg.classList.add("dialog-fullscreen-lowres")), dlg.querySelector(".formDialogHeaderTitle").innerHTML = globalize.translate("sharedcomponents#HeaderRestartingEmbyServer"), dlg.querySelector(".text").innerHTML = globalize.translate("sharedcomponents#RestartPleaseWaitMessage"); var i, length, html = ""; for (i = 0, length = configuredButtons.length; i < length; i++) { var item = configuredButtons[i], autoFocus = 0 === i ? " autofocus" : "", buttonClass = "btnOption raised formDialogFooterItem formDialogFooterItem-autosize"; item.type && (buttonClass += " button-" + item.type), html += '" } dlg.querySelector(".formDialogFooter").innerHTML = html; var buttons = dlg.querySelectorAll(".btnOption"); for (i = 0, length = buttons.length; i < length; i++) buttons[i].addEventListener("click", onButtonClick); var dlgPromise = dialogHelper.open(dlg); return startRestart(instance, options.apiClient, dlg), dlgPromise.then(function() { enableTvLayout && scrollHelper.centerFocus.off(dlg.querySelector(".formDialogContent"), !1), instance.destroy(), loading.hide(), instance.restarted && events.trigger(instance, "restarted") }) } function ServerRestartDialog(options) { this.options = options } var currentApiClient, currentDlg, currentInstance; return ServerRestartDialog.prototype.show = function() { var instance = this; return loading.show(), new Promise(function(resolve, reject) { require(["text!./../dialog/dialog.template.html"], function(template) { showDialog(instance, instance.options, template).then(resolve, reject) }) }) }, ServerRestartDialog.prototype.destroy = function() { currentApiClient = null, currentDlg = null, currentInstance = null, this.options = null }, ServerRestartDialog });