EmbyCrackedClient/web/modules/tabbedview/tabbedview.js

1 line
12 KiB
JavaScript
Raw Permalink Normal View History

2025-06-25 11:46:04 +08:00
import backdrop from"./../backdrop/backdrop.js";import globalize from"./../common/globalize.js";import layoutManager from"./../layoutmanager.js";import mainTabsManager from"./../maintabsmanager.js";import appHeader from"./../appheader/appheader.js";import userSettings from"./../common/usersettings/usersettings.js";import connectionManager from"./../emby-apiclient/connectionmanager.js";import BaseView from"./../viewmanager/baseview.js";import"./../emby-elements/emby-tabs/emby-tabs.js";import appRouter from"./../approuter.js";import queryString from"./../common/querystring.js";import loading from"./../loading/loading.js";import focusManager from"../focusmanager.js";function getResponseHelper(){return Emby.importModule("./modules/common/responsehelper.js")}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 onDataFetchError(instance,controller,response){loading.hide(),getResponseHelper().then(function(responseHelper){return responseHelper.getErrorInfo(response).then(function(errorInfo){let errorElement=controller._errorElement;var html;return errorElement||((errorElement=document.createElement("div")).classList.add("padded-left","padded-right","padded-top"),html="",html=(html='<div class="readOnlyContent"><h2 class="errorMessage" style="margin:0 0 1em;font-weight:400"></h2>')+'<button is="emby-button" type="button" class="raised btnRetryData" style="margin:0;">'+globalize.translate("Retry")+"</button></div>",errorElement.innerHTML=html,(html=controller.scroller?.getScrollSlider()||controller.view).insertBefore(errorElement,html.firstChild),(controller._errorElement=errorElement).querySelector(".btnRetryData").addEventListener("click",retryControllerResume.bind(instance))),errorElement.querySelector(".errorMessage").innerHTML=errorInfo.html,errorElement.classList.remove("hide"),focusManager.focus(errorElement.querySelector(".btnRetryData")),Promise.reject(response)})})}function resumeController(instance,controller,options,showError){return controller._errorElement&&!controller._errorElement.classList.contains("hide")&&(controller._errorElement.classList.add("hide"),(options=options||{}).refresh=!0),(controller.onResume(options)||Promise.resolve()).catch(function(errorResponse){return showError&&503===errorResponse?.status?onDataFetchError(instance,controller,errorResponse):Promise.reject(errorResponse)})}function retryControllerResume(){var currentTabController=this.currentTabController;loading.show(),resumeController(this,currentTabController,{refresh:!0,autoFocus:!0},!0)}function loadTab(instance,index,previousIndex,previousTabController){instance.getTabController(index).then(function(controller){let autoFocus=null==previousIndex;!autoFocus&&layoutManager.tv&&previousTabController&&previousTabController.view&&!appHeader.hasFocus()&&(autoFocus=!0),resumeController(instance,controller,{autoFocus:autoFocus,refresh:!controller.refreshed},!0),controller.refreshed=!0,null!=previousIndex&&layoutManager.tv&&enableTabAnimation&&controller.view&&controller.view.animate&&(index<previousIndex?fadeInLeft(controller.view):previousIndex<index&&fadeInRight(controller.view)),instance.currentTabIndex=index,instance.currentTabController=controlle