define(["exports","./emby-apiclient/events.js","./emby-apiclient/connectionmanager.js","./common/globalize.js","./common/appsettings.js","./common/pluginmanager.js","./browser.js","./layoutmanager.js","./skinmanager.js","./loading/loading.js","./common/servicelocator.js","./viewmanager/viewmanager.js","./backdrop/backdrop.js","./pagejs/page.js","./emby-apiclient/apiclient.js"],function(_exports,_events,_connectionmanager,_globalize,_appsettings,_pluginmanager,_browser,_layoutmanager,_skinmanager,_loading,_servicelocator,_viewmanager,_backdrop,_page,_apiclient){function showAlert(options){return Emby.importModule("./modules/common/dialogs/alert.js").then(function(alert){return alert(options)})}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0;var appRouter={showLocalLogin:function(serverId,manualLogin){return show("/startup/"+(manualLogin?"manuallogin":"login")+".html?serverId="+serverId)},showSelectServer:function(){return show(getRouteUrl("selectserver"))},showWelcome:function(){return _servicelocator.appHost.supports("multiserver")?show("/startup/welcome.html"):show("/startup/login.html?serverId="+_connectionmanager.default.currentApiClient().serverId())},showConnectLogin:function(){return show(getRouteUrl("connectlogin"))},showSettings:function(){return show(getRouteUrl("settings",{serverId:_connectionmanager.default.currentApiClient().serverId()}))},showUserMenu:function(options){return require(["backMenu"]).then(function(responses){return responses[0](options)})},showSearch:function(){return show(getRouteUrl("search"))},showGuide:function(){return show(appRouter.getRouteUrl("livetv",{serverId:_connectionmanager.default.currentApiClient().serverId(),section:"guide"}))},showLiveTV:function(){return show(appRouter.getRouteUrl("livetv",{serverId:_connectionmanager.default.currentApiClient().serverId()}))},showRecordedTV:function(){return show(appRouter.getRouteUrl("recordedtv",{serverId:_connectionmanager.default.currentApiClient().serverId()}))},showFavorites:function(){return show("/home&tab=favorites")},showNowPlaying:function(){return showVideoOsd()}};function showLocalLoginFromApiClient(apiClient){return console.log("appRouter - showLocalLoginFromApiClient: "+apiClient.serverId()),apiClient.getPublicUsersQueryResult({Limit:0}).then(function(result){return result.TotalRecordCount?appRouter.showLocalLogin(apiClient.serverId()):appRouter.showLocalLogin(apiClient.serverId(),!0)})}function beginConnectionWizard(){return _backdrop.default.clear(),_loading.default.show(),_servicelocator.appHost.supports("multiserver")?_connectionmanager.default.connect({enableAutoLogin:_appsettings.default.enableAutoLogin()}).then(function(result){return handleConnectionResult(result,!1,!0)}):showLocalLoginFromApiClient(_connectionmanager.default.currentApiClient())}function onRedirectToLocalServerNotNeeded(result){switch(result.State){case"SignedIn":_loading.default.hide(),_skinmanager.default.loadUserSkin();break;case"ServerSignIn":showLocalLoginFromApiClient(result.ApiClient)}}function hasConnectedToLocalServer(connectionResult){connectionResult=connectionResult.ApiClient;if(connectionResult&&_servicelocator.appHost.supports("redirecttolocalserver")){connectionResult=connectionResult.serverId();if(connectionResult)return"true"===_appsettings.default.get(connectionResult+"-haslocalconnection")}}function handleConnectionResult(result,allowServerUpdateNeedAlert,useWelcomeForConnectSignIn,logoutOnCancelledRedirect){switch(console.log("appRouter.handleConnectionResult: "+(result.State||"")),result.State){case"SignedIn":!function(result){var apiClient=result.ApiClient;if(apiClient&&_servicelocator.appHost.supports("redirecttolocalserver")&&_connectionmanager.default.isLoggedIntoConnect()&&!hasConnectedToLocalServer(result))return apiClient.getEndpointInfo().then(function(endpointInfo){return endpointInfo.IsInNetwork&&(endpointInfo=apiClient.serverId()+"-haslocalconnection",_appsettings.default.set(endpointInfo,"true")),onRedirectToLocalServerNotNeeded(result)},function(){return onRedirectToLocalServerNotNeeded(result)});onRedirectToLocalServerNotNeeded(result)}(result);break;case"ServerSignIn":showLocalLoginFromApiClient(result.ApiClient);break;case"ServerSelection":_servicelocator.appHost.supports("multiserver")?appRouter.showSelectServer():showLocalLoginFromApiClient(_connectionmanager.default.currentApiClient());break;case"ConnectSignIn":!0===useWelcomeForConnectSignIn?appRouter.showWelcome():appRouter.showConnectLogin();break;case"ServerUpdateNeeded":!1===allowServerUpdateNeedAlert?appRouter.showSelectServer():(_loading.default.hide(),showAlert({html:_globalize.default.translate("ServerUpdateNeeded",'https://emby.media')}).then(function(){show("/startup/selectserver.html")}));break;case"Unavailable":_loading.default.hide(),showAlert({text:_globalize.default.translate("MessageUnableToConnectToServer"),title:_globalize.default.translate("HeaderConnectionFailure")})}}var currentViewLoadRequest,connectionType,firstConnectionResult,loadedTranslations={};function loadPluginTranslations(pageName){if(loadedTranslations[pageName])return Promise.resolve();loadedTranslations[pageName]=!0;var apiClient=_connectionmanager.default.currentApiClient();return apiClient.getJSON(apiClient.getUrl("web/configurationpages",{Name:pageName})).then(function(configPages){if(configPages.length)return function(apiClient,configPage){var languages=configPage.Translations;return languages&&languages.length?(languages=(languages||[]).map(function(i){return{lang:i,path:apiClient.getUrl("web/strings",{PluginId:configPage.PluginId,Locale:i})}}),_globalize.default.loadStrings({name:"plugin-"+configPage.PluginId,translations:languages})):Promise.resolve()}(apiClient,configPages[0])})}function loadContentUrl(ctx,request,signal){var url=request.contentPath&&"function"==typeof request.contentPath?request.contentPath(ctx.querystring):request.contentPath||request.path,url=(url.includes("://")||(url.startsWith("/")||(url="/"+url),url=baseRoute+url),ctx.querystring&&request.enableContentQueryString&&(url+="?"+ctx.querystring),[require(["text!"+url])]);return request.isPluginPage=request.url.toLowerCase().includes("/configurationpage"),request.isPluginPage&&url.push(loadPluginTranslations(request.params.name)),Promise.all(url).then(function(responses){responses=responses[0][0];return function(ctx,html,request,signal){return request.view=_globalize.default.translateDocument(html),ctx.handled=!0,_viewmanager.default.loadView(request,signal)}(ctx,responses,request,signal)})}function getControllerFactory(route){return route.controller?function(route){var url;return"module"===route.controllerType?((url=route.controller).includes("://")||(url="./"+url),Emby.importModule(url)):require([route.controller]).then(function(deps){return deps[0]})}(route):Promise.resolve()}function initRoute(ctx,route){var currentRequest=Object.assign({},route),isBackNav=ctx.isBack;_events.default.trigger(appRouter,"initrouterequest",[currentRequest]),getControllerFactory(currentRequest).then(function(controllerFactory){currentViewLoadRequest&¤tViewLoadRequest.abortController.abort(),console.log("appRouter.sendRouteToViewManager - processing path: isBack: "+ctx.isBack),currentRequest.url=baseRoute+ctx.path,currentRequest.controllerFactory=controllerFactory,currentRequest.state=ctx.state,currentRequest.isBack=isBackNav,currentRequest.abortController=new AbortController,currentRequest.contextPath=ctx.path,currentRequest.params=ctx.params;var signal=(currentViewLoadRequest=currentRequest).abortController.signal;return isBackNav?_viewmanager.default.tryRestoreView(currentRequest,signal).catch(function(result){if(!signal.aborted)return loadContentUrl(ctx,currentRequest,signal)}):loadContentUrl(ctx,currentRequest,signal)})}function onBeforeExit(e){(globalThis.webos||globalThis.PalmSystem)&&_page.default.restorePreviousState()}function getMaxBandwidth(){var connection=navigator.connection;if(connection){var downlink=connection.downlink;if(downlink&&0