UNPKG

@yuebai008/cli

Version:

Command line interface for rapid qg-minigame development

1 lines 4.55 kB
import*as Common from"../../core/common/common.js";import*as Host from"../../core/host/host.js";import*as i18n from"../../core/i18n/i18n.js";import*as Platform from"../../core/platform/platform.js";import{ToolbarButton}from"./Toolbar.js";import{alert}from"./ARIAUtils.js";const UIStrings={close:"Close",dockToRight:"Dock to right",dockToBottom:"Dock to bottom",dockToLeft:"Dock to left",undockIntoSeparateWindow:"Undock into separate window",devtoolsUndocked:"DevTools is undocked",devToolsDockedTo:"DevTools is docked to {PH1}"},str_=i18n.i18n.registerUIStrings("ui/legacy/DockController.ts",UIStrings),i18nString=i18n.i18n.getLocalizedString.bind(void 0,str_);let dockControllerInstance;export class DockController extends Common.ObjectWrapper.ObjectWrapper{canDockInternal;closeButton;currentDockStateSetting;lastDockStateSetting;dockSideInternal=void 0;titles;savedFocus;constructor(t){if(super(),this.canDockInternal=t,this.closeButton=new ToolbarButton(i18nString(UIStrings.close),"cross"),this.closeButton.element.classList.add("close-devtools"),this.closeButton.addEventListener(ToolbarButton.Events.Click,Host.InspectorFrontendHost.InspectorFrontendHostInstance.closeWindow.bind(Host.InspectorFrontendHost.InspectorFrontendHostInstance)),this.currentDockStateSetting=Common.Settings.Settings.instance().moduleSetting("currentDockState"),this.lastDockStateSetting=Common.Settings.Settings.instance().createSetting("lastDockState","bottom"),!t)return this.dockSideInternal="undocked",void this.closeButton.setVisible(!1);this.currentDockStateSetting.addChangeListener(this.dockSideChanged,this),-1===states.indexOf(this.currentDockStateSetting.get())&&this.currentDockStateSetting.set("right"),-1===states.indexOf(this.lastDockStateSetting.get())&&this.currentDockStateSetting.set("bottom")}static instance(t={forceNew:null,canDock:!1}){const{forceNew:e,canDock:o}=t;return dockControllerInstance&&!e||(dockControllerInstance=new DockController(o)),dockControllerInstance}initialize(){this.canDockInternal&&(this.titles=[i18nString(UIStrings.dockToRight),i18nString(UIStrings.dockToBottom),i18nString(UIStrings.dockToLeft),i18nString(UIStrings.undockIntoSeparateWindow)],this.dockSideChanged())}dockSideChanged(){this.setDockSide(this.currentDockStateSetting.get()),setTimeout(this.announceDockLocation.bind(this),2e3)}dockSide(){return this.dockSideInternal}canDock(){return this.canDockInternal}isVertical(){return"right"===this.dockSideInternal||"left"===this.dockSideInternal}setDockSide(t){if(-1===states.indexOf(t)&&(t=states[0]),this.dockSideInternal===t)return;void 0!==this.dockSideInternal&&document.body.classList.remove(this.dockSideInternal),document.body.classList.add(t),this.dockSideInternal&&this.lastDockStateSetting.set(this.dockSideInternal),this.savedFocus=Platform.DOMUtilities.deepActiveElement(document);const e={from:this.dockSideInternal,to:t};this.dispatchEventToListeners("BeforeDockSideChanged",e),console.timeStamp("DockController.setIsDocked"),this.dockSideInternal=t,this.currentDockStateSetting.set(t),Host.InspectorFrontendHost.InspectorFrontendHostInstance.setIsDocked("undocked"!==t,this.setIsDockedResponse.bind(this,e)),this.closeButton.setVisible("undocked"!==this.dockSideInternal),this.dispatchEventToListeners("DockSideChanged",e)}setIsDockedResponse(t){this.dispatchEventToListeners("AfterDockSideChanged",t),this.savedFocus&&(this.savedFocus.focus(),this.savedFocus=null)}toggleDockSide(){if(this.lastDockStateSetting.get()===this.currentDockStateSetting.get()){const t=states.indexOf(this.currentDockStateSetting.get())||0;this.lastDockStateSetting.set(states[(t+1)%states.length])}this.setDockSide(this.lastDockStateSetting.get())}announceDockLocation(){"undocked"===this.dockSideInternal?alert(i18nString(UIStrings.devtoolsUndocked)):alert(i18nString(UIStrings.devToolsDockedTo,{PH1:this.dockSideInternal||""}))}}const states=["right","bottom","left","undocked"];let toggleDockActionDelegateInstance,closeButtonProviderInstance;export class ToggleDockActionDelegate{static instance(t={forceNew:null}){const{forceNew:e}=t;return toggleDockActionDelegateInstance&&!e||(toggleDockActionDelegateInstance=new ToggleDockActionDelegate),toggleDockActionDelegateInstance}handleAction(t,e){return DockController.instance().toggleDockSide(),!0}}export class CloseButtonProvider{static instance(t={forceNew:null}){const{forceNew:e}=t;return closeButtonProviderInstance&&!e||(closeButtonProviderInstance=new CloseButtonProvider),closeButtonProviderInstance}item(){return DockController.instance().closeButton}}