EmbyCrackedClient/web/modules/viewmanager/baseview.js

1 line
9.3 KiB
JavaScript
Raw Normal View History

2025-06-25 11:46:04 +08:00
import layoutManager from"./../layoutmanager.js";import focusManager from"./../focusmanager.js";import mainTabsManager from"./../maintabsmanager.js";import inputManager from"./../common/inputmanager.js";import navDrawerInstance from"./../navdrawer/navdrawer.js";import viewManager from"./viewmanager.js";import appRouter from"./../approuter.js";import connectionManager from"./../emby-apiclient/connectionmanager.js";import userSettings from"./../common/usersettings/usersettings.js";import dialogHelper from"./../dialoghelper/dialoghelper.js";import backdrop from"./../backdrop/backdrop.js";let EnableNativeTransitions=document.startViewTransition,docElem=document.documentElement,appHeader=document.querySelector(".skinHeader");function allowAnimation(){var cores,deviceMemory,platform;return!!EnableNativeTransitions&&!((cores=navigator.hardwareConcurrency||4)<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 EnableAnimation=allowAnimation();function onFinished(result){return Promise.resolve(result)}function transitionWithStartViewTransition(detail,newView,oldView,isBack){if(oldView===newView)return Promise.resolve();let newViewClassList=newView.classList;if(!EnableAnimation||!layoutManager.tv)return oldView&&(oldView.classList.add("hide"),oldView.classList.remove("animatedView")),newViewClassList.remove("hide","animatedView"),Promise.resolve();function onStarted(){oldView&&(oldView.classList.add("hide"),isBack)&&newViewClassList.remove("hide")}layoutManager.tv&&detail.transition&&newViewClassList.add("view-transition-scale","animatedView");newView=docElem.classList;return newViewClassList.contains("view-transition-scale")||isBack&&oldView.classList.contains("view-transition-scale")?newView.add("transition-scale"):newView.remove("transition-scale"),newViewClassList.contains("animatedView")||isBack&&oldView.classList.contains("animatedView")?document.startViewTransition(onStarted).finished.then(onFinished):(onStarted(),Promise.resolve())}function getTransitionPromise(instance,e){var detail=e.detail;if(instance.getTransitionPromise)return instance.getTransitionPromise(detail);let previousViewInfo=detail.previousViewInfo;if(!previousViewInfo)return Promise.resolve();var isBack=detail.isBack;let newView=instance.view;if(detail.params?.asDialog){dialogHelper.createDialog({dialog:newView,autoFocus:!1,size:layoutManager.tv?"fullscreen-border-force":"medium-tall",blockInputCommandNavigation:!1});let viewInfo=e.detail;return new Promise(function(resolve,reject){newView.addEventListener("opened",resolve),newView.addEventListener("closing",function(){newView._closedForNavigation||(viewManager.dispatchViewBeforeHide(viewInfo,previousViewInfo),viewManager.dispatchViewBeforeShow(previousViewInfo,!0,!0,viewInfo))}),dialogHelper.open(newView).then(function(){newView._closedForNavigation||viewManager.onViewChange(viewInfo,previousViewInfo,!0,!0)})})}return"true"===previousViewInfo.params.asDialog?Promise.resolve():transitionWithStartViewTransition(detail,newView,previousViewInfo.view,isBack)}function getResumeOptions(e){return{refresh:!e.detail.isRestored,previousViewInfo:e.detail.previousViewInfo}}function onViewBeforeShow(e){var resumeOptions=getResumeOptions(e);let instance=this;instance.transitionPromise=(this.onBeginResume(resumeOptions)||Promise.resolve()).then(function(){return getTransitionPromise(instance,e)})}function onViewShow(e){let instance=this,resumeOptions=getResumeOptions(e);resumeOptions.autoFocus=!e.detail.isRestored,this.transitionPromise.then(function(){instance.onResume(resumeOptions)})}function onViewBeforeHide(e){this.onPause({event:e,newViewInfo:e.detail?.newViewInfo})}function getScrollerNavOutDestination(direction){return direction===focusManager.directions.up?appHeader:null}function BaseView(view,params){this.view=view,this.params=params,this.requestedItemFields="BasicSyncInfo,CanDe