@yuebai008/cli
Version:
Command line interface for rapid qg-minigame development
1 lines • 12.1 kB
JavaScript
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 Root from"../../core/root/root.js";import{Dialog}from"./Dialog.js";import{DockController}from"./DockController.js";import{GlassPane}from"./GlassPane.js";import{Infobar,Type as InfobarType}from"./Infobar.js";import{KeyboardShortcut}from"./KeyboardShortcut.js";import{SplitWidget,ShowMode}from"./SplitWidget.js";import{Events as TabbedPaneEvents}from"./TabbedPane.js";import{ToolbarButton}from"./Toolbar.js";import{ViewManager}from"./ViewManager.js";import{VBox,WidgetFocusRestorer}from"./Widget.js";import*as ARIAUtils from"./ARIAUtils.js";import inspectorViewTabbedPaneStyles from"./inspectorViewTabbedPane.css.legacy.js";const UIStrings={moreTools:"More Tools",closeDrawer:"Close drawer",panels:"Panels",reloadDevtools:"Reload DevTools",moveToTop:"Move to top",moveToBottom:"Move to bottom",devToolsLanguageMissmatch:"DevTools is now available in {PH1}!",setToBrowserLanguage:"Always match Chrome's language",setToSpecificLanguage:"Switch DevTools to {PH1}",mainToolbar:"Main toolbar",drawer:"Tool drawer",drawerShown:"Drawer shown",drawerHidden:"Drawer hidden",selectOverrideFolder:"Select a folder to store override files in.",selectFolder:"Select folder"},str_=i18n.i18n.registerUIStrings("ui/legacy/InspectorView.ts",UIStrings),i18nString=i18n.i18n.getLocalizedString.bind(void 0,str_);let actionDelegateInstance,inspectorViewInstance=null;export class InspectorView extends VBox{drawerSplitWidget;tabDelegate;drawerTabbedLocation;drawerTabbedPane;infoBarDiv;tabbedLocation;tabbedPane;keyDownBound;currentPanelLocked;focusRestorer;ownerSplitWidget;reloadRequiredInfobar;#e;constructor(){super(),GlassPane.setContainer(this.element),this.setMinimumSize(250,72),this.drawerSplitWidget=new SplitWidget(!1,!0,"Inspector.drawerSplitViewState",200,200),this.drawerSplitWidget.hideSidebar(),this.drawerSplitWidget.enableShowModeSaving(),this.drawerSplitWidget.show(this.element),this.tabDelegate=new InspectorViewTabDelegate,this.drawerTabbedLocation=ViewManager.instance().createTabbedLocation(this.showDrawer.bind(this,!1),"drawer-view",!0,!0);this.drawerTabbedLocation.enableMoreTabsButton().setTitle(i18nString(UIStrings.moreTools)),this.drawerTabbedPane=this.drawerTabbedLocation.tabbedPane(),this.drawerTabbedPane.setMinimumSize(0,27),this.drawerTabbedPane.element.classList.add("drawer-tabbed-pane");const e=new ToolbarButton(i18nString(UIStrings.closeDrawer),"cross");e.addEventListener(ToolbarButton.Events.Click,this.closeDrawer,this),this.drawerTabbedPane.addEventListener(TabbedPaneEvents.TabSelected,this.tabSelected,this);const t=this.drawerTabbedPane.selectedTabId;this.drawerSplitWidget.showMode()!==ShowMode.OnlyMain&&t&&Host.userMetrics.panelShown(t,!0),this.drawerTabbedPane.setTabDelegate(this.tabDelegate);const n=this.drawerTabbedPane.element;ARIAUtils.markAsComplementary(n),ARIAUtils.setLabel(n,i18nString(UIStrings.drawer)),this.drawerSplitWidget.installResizer(this.drawerTabbedPane.headerElement()),this.drawerSplitWidget.setSidebarWidget(this.drawerTabbedPane),this.drawerTabbedPane.rightToolbar().appendToolbarItem(e),this.tabbedLocation=ViewManager.instance().createTabbedLocation(Host.InspectorFrontendHost.InspectorFrontendHostInstance.bringToFront.bind(Host.InspectorFrontendHost.InspectorFrontendHostInstance),"panel",!0,!0,Root.Runtime.Runtime.queryParam("panel")),this.tabbedPane=this.tabbedLocation.tabbedPane(),this.tabbedPane.element.classList.add("main-tabbed-pane");const a=Root.Runtime.Runtime.queryParam(Root.Runtime.ConditionName.CAN_DOCK)?"69px":"41px";this.tabbedPane.leftToolbar().element.style.minWidth=a,this.tabbedPane.registerRequiredCSS(inspectorViewTabbedPaneStyles),this.tabbedPane.addEventListener(TabbedPaneEvents.TabSelected,this.tabSelected,this);const i=this.tabbedPane.selectedTabId;i&&Host.userMetrics.panelShown(i,!0),this.tabbedPane.setAccessibleName(i18nString(UIStrings.panels)),this.tabbedPane.setTabDelegate(this.tabDelegate);const o=this.tabbedPane.headerElement();if(ARIAUtils.markAsNavigation(o),ARIAUtils.setLabel(o,i18nString(UIStrings.mainToolbar)),Host.userMetrics.setLaunchPanel(this.tabbedPane.selectedTabId),Host.InspectorFrontendHost.isUnderTest()&&this.tabbedPane.setAutoSelectFirstItemOnShow(!1),this.drawerSplitWidget.setMainWidget(this.tabbedPane),this.keyDownBound=this.keyDown.bind(this),Host.InspectorFrontendHost.InspectorFrontendHostInstance.events.addEventListener(Host.InspectorFrontendHostAPI.Events.ShowPanel,function({data:e}){this.showPanel(e)}.bind(this)),shouldShowLocaleInfobar()){const e=createLocaleInfobar();e.setParentView(this),this.attachInfobar(e)}}static instance(e={forceNew:null}){const{forceNew:t}=e;return inspectorViewInstance&&!t||(inspectorViewInstance=new InspectorView),inspectorViewInstance}static maybeGetInspectorViewInstance(){return inspectorViewInstance}static removeInstance(){inspectorViewInstance=null}wasShown(){this.element.ownerDocument.addEventListener("keydown",this.keyDownBound,!1)}willHide(){this.element.ownerDocument.removeEventListener("keydown",this.keyDownBound,!1)}resolveLocation(e){return"drawer-view"===e?this.drawerTabbedLocation:"panel"===e?this.tabbedLocation:null}async createToolbars(){await this.tabbedPane.leftToolbar().appendItemsAtLocation("main-toolbar-left"),await this.tabbedPane.rightToolbar().appendItemsAtLocation("main-toolbar-right")}addPanel(e){this.tabbedLocation.appendView(e)}hasPanel(e){return this.tabbedPane.hasTab(e)}async panel(e){const t=ViewManager.instance().view(e);if(!t)throw new Error(`Expected view for panel '${e}'`);return t.widget()}onSuspendStateChanged(e){this.currentPanelLocked=e,this.tabbedPane.setCurrentTabLocked(this.currentPanelLocked),this.tabbedPane.leftToolbar().setEnabled(!this.currentPanelLocked),this.tabbedPane.rightToolbar().setEnabled(!this.currentPanelLocked)}canSelectPanel(e){return!this.currentPanelLocked||this.tabbedPane.selectedTabId===e}async showPanel(e){await ViewManager.instance().showView(e)}setPanelIcon(e,t){const n=this.getTabbedPaneForTabId(e);n&&n.setTabIcon(e,t)}emitDrawerChangeEvent(e){const t=new CustomEvent(Events.DrawerChange,{bubbles:!0,cancelable:!0,detail:{isDrawerOpen:e}});document.body.dispatchEvent(t)}getTabbedPaneForTabId(e){return this.tabbedPane.hasTab(e)?this.tabbedPane:this.drawerTabbedPane.hasTab(e)?this.drawerTabbedPane:null}currentPanelDeprecated(){return ViewManager.instance().materializedWidget(this.tabbedPane.selectedTabId||"")}showDrawer(e){this.drawerTabbedPane.isShowing()||(this.drawerSplitWidget.showBoth(),this.focusRestorer=e?new WidgetFocusRestorer(this.drawerTabbedPane):null,this.emitDrawerChangeEvent(!0),ARIAUtils.alert(i18nString(UIStrings.drawerShown)))}drawerVisible(){return this.drawerTabbedPane.isShowing()}closeDrawer(){this.drawerTabbedPane.isShowing()&&(this.focusRestorer&&this.focusRestorer.restore(),this.drawerSplitWidget.hideSidebar(!0),this.emitDrawerChangeEvent(!1),ARIAUtils.alert(i18nString(UIStrings.drawerHidden)))}setDrawerMinimized(e){this.drawerSplitWidget.setSidebarMinimized(e),this.drawerSplitWidget.setResizable(!e)}isDrawerMinimized(){return this.drawerSplitWidget.isSidebarMinimized()}closeDrawerTab(e,t){this.drawerTabbedPane.closeTab(e,t),Host.userMetrics.panelClosed(e)}keyDown(e){const t=e;if(!KeyboardShortcut.eventHasCtrlEquivalentKey(t)||t.altKey||t.shiftKey)return;if(Common.Settings.moduleSetting("shortcutPanelSwitch").get()){let n=-1;if(t.keyCode>48&&t.keyCode<58?n=t.keyCode-49:t.keyCode>96&&t.keyCode<106&&t.location===KeyboardEvent.DOM_KEY_LOCATION_NUMPAD&&(n=t.keyCode-97),-1!==n){const t=this.tabbedPane.tabIds()[n];t&&(Dialog.hasInstance()||this.currentPanelLocked||this.showPanel(t),e.consume(!0))}}}onResize(){GlassPane.containerMoved(this.element)}topResizerElement(){return this.tabbedPane.headerElement()}toolbarItemResized(){this.tabbedPane.headerResized()}tabSelected(e){const{tabId:t}=e.data;Host.userMetrics.panelShown(t)}setOwnerSplit(e){this.ownerSplitWidget=e}ownerSplit(){return this.ownerSplitWidget||null}minimize(){this.ownerSplitWidget&&this.ownerSplitWidget.setSidebarMinimized(!0)}restore(){this.ownerSplitWidget&&this.ownerSplitWidget.setSidebarMinimized(!1)}displayReloadRequiredWarning(e){if(!this.reloadRequiredInfobar){const t=new Infobar(InfobarType.Info,e,[{text:i18nString(UIStrings.reloadDevtools),highlight:!0,delegate:()=>reloadDevTools(),dismiss:!1}]);t.setParentView(this),this.attachInfobar(t),this.reloadRequiredInfobar=t,t.setCloseCallback((()=>{delete this.reloadRequiredInfobar}))}}displaySelectOverrideFolderInfobar(e){if(!this.#e){const t=new Infobar(InfobarType.Info,i18nString(UIStrings.selectOverrideFolder),[{text:i18nString(UIStrings.selectFolder),highlight:!0,delegate:()=>e(),dismiss:!0}]);t.setParentView(this),this.attachInfobar(t),this.#e=t,t.setCloseCallback((()=>{this.#e=void 0}))}}createInfoBarDiv(){this.infoBarDiv||(this.infoBarDiv=document.createElement("div"),this.infoBarDiv.classList.add("flex-none"),this.contentElement.insertBefore(this.infoBarDiv,this.contentElement.firstChild))}attachInfobar(e){this.createInfoBarDiv(),this.infoBarDiv?.appendChild(e.element)}}function getDisableLocaleInfoBarSetting(){return Common.Settings.Settings.instance().createSetting("disableLocaleInfoBar",!1)}function shouldShowLocaleInfobar(){if(getDisableLocaleInfoBarSetting().get())return!1;const e=Common.Settings.Settings.instance().moduleSetting("language").get();return"en-US"===e&&(!i18n.DevToolsLocale.localeLanguagesMatch(navigator.language,e)&&i18n.DevToolsLocale.DevToolsLocale.instance().languageIsSupportedByDevTools(navigator.language))}function createLocaleInfobar(){const e=i18n.DevToolsLocale.DevToolsLocale.instance(),t=e.lookupClosestDevToolsLocale(navigator.language),n=new Intl.Locale(t),a=new Intl.DisplayNames([e.locale],{type:"language"}).of(n.language||"en")||"English",i=Common.Settings.Settings.instance().moduleSetting("language");return new Infobar(InfobarType.Info,i18nString(UIStrings.devToolsLanguageMissmatch,{PH1:a}),[{text:i18nString(UIStrings.setToBrowserLanguage),highlight:!0,delegate:()=>{i.set("browserLanguage"),getDisableLocaleInfoBarSetting().set(!0),reloadDevTools()},dismiss:!0},{text:i18nString(UIStrings.setToSpecificLanguage,{PH1:a}),highlight:!0,delegate:()=>{i.set(t),getDisableLocaleInfoBarSetting().set(!0),reloadDevTools()},dismiss:!0}],getDisableLocaleInfoBarSetting())}function reloadDevTools(){DockController.instance().canDock()&&"undocked"===DockController.instance().dockSide()&&Host.InspectorFrontendHost.InspectorFrontendHostInstance.setIsDocked(!0,(function(){})),Host.InspectorFrontendHost.InspectorFrontendHostInstance.reattach((()=>window.location.reload()))}export class ActionDelegate{static instance(e={forceNew:null}){const{forceNew:t}=e;return actionDelegateInstance&&!t||(actionDelegateInstance=new ActionDelegate),actionDelegateInstance}handleAction(e,t){switch(t){case"main.toggle-drawer":return InspectorView.instance().drawerVisible()?InspectorView.instance().closeDrawer():InspectorView.instance().showDrawer(!0),!0;case"main.next-tab":return InspectorView.instance().tabbedPane.selectNextTab(),InspectorView.instance().tabbedPane.focus(),!0;case"main.previous-tab":return InspectorView.instance().tabbedPane.selectPrevTab(),InspectorView.instance().tabbedPane.focus(),!0}return!1}}export class InspectorViewTabDelegate{closeTabs(e,t){e.closeTabs(t,!0),t.forEach((e=>{Host.userMetrics.panelClosed(e)}))}moveToDrawer(e){Host.userMetrics.actionTaken(Host.UserMetrics.Action.TabMovedToDrawer),ViewManager.instance().moveView(e,"drawer-view")}moveToMainPanel(e){Host.userMetrics.actionTaken(Host.UserMetrics.Action.TabMovedToMainPanel),ViewManager.instance().moveView(e,"panel")}onContextMenu(e,t){if("console"===e||"console-view"===e)return;"drawer-view"===ViewManager.instance().locationNameForViewId(e)?t.defaultSection().appendItem(i18nString(UIStrings.moveToTop),this.moveToMainPanel.bind(this,e)):t.defaultSection().appendItem(i18nString(UIStrings.moveToBottom),this.moveToDrawer.bind(this,e))}}export var Events;!function(e){e.DrawerChange="drawerchange"}(Events||(Events={}));