@yuebai008/cli
Version:
Command line interface for rapid qg-minigame development
1 lines • 4.97 kB
JavaScript
import*as Host from"../../core/host/host.js";import*as UI from"../../ui/legacy/legacy.js";import*as ThemeSupport from"../../ui/legacy/theme_support/theme_support.js";import{DeviceModeWrapper}from"./DeviceModeWrapper.js";import{InspectedPagePlaceholder}from"./InspectedPagePlaceholder.js";let appInstance,advancedAppProviderInstance;export class AdvancedApp{rootSplitWidget;deviceModeView;inspectedPagePlaceholder;toolboxWindow;toolboxRootView;changingDockSide;constructor(){UI.DockController.DockController.instance().addEventListener("BeforeDockSideChanged",this.openToolboxWindow,this)}static instance(){return appInstance||(appInstance=new AdvancedApp),appInstance}presentUI(e){const t=new UI.RootView.RootView;this.rootSplitWidget=new UI.SplitWidget.SplitWidget(!1,!0,"InspectorView.splitViewState",555,300,!0),this.rootSplitWidget.show(t.element),this.rootSplitWidget.setSidebarWidget(UI.InspectorView.InspectorView.instance()),this.rootSplitWidget.setDefaultFocusedChild(UI.InspectorView.InspectorView.instance()),UI.InspectorView.InspectorView.instance().setOwnerSplit(this.rootSplitWidget),this.inspectedPagePlaceholder=InspectedPagePlaceholder.instance(),this.inspectedPagePlaceholder.addEventListener("Update",this.onSetInspectedPageBounds.bind(this),this),this.deviceModeView=DeviceModeWrapper.instance({inspectedPagePlaceholder:this.inspectedPagePlaceholder,forceNew:!1}),UI.DockController.DockController.instance().addEventListener("BeforeDockSideChanged",this.onBeforeDockSideChange,this),UI.DockController.DockController.instance().addEventListener("DockSideChanged",this.onDockSideChange,this),UI.DockController.DockController.instance().addEventListener("AfterDockSideChanged",this.onAfterDockSideChange,this),this.onDockSideChange(),console.timeStamp("AdvancedApp.attachToBody"),t.attachToDocument(e),t.focus(),this.inspectedPagePlaceholder.update()}openToolboxWindow(e){if("undocked"!==e.data.to)return;if(this.toolboxWindow)return;const t=window.location.href.replace("devtools_app.html","device_mode_emulation_frame.html");this.toolboxWindow=window.open(t,void 0)}deviceModeEmulationFrameLoaded(e){ThemeSupport.ThemeSupport.instance().applyTheme(e),ThemeSupport.ThemeSupport.instance().addEventListener(ThemeSupport.ThemeChangeEvent.eventName,(()=>{ThemeSupport.ThemeSupport.instance().applyTheme(e)})),UI.UIUtils.initializeUIUtils(e),UI.UIUtils.installComponentRootStyles(e.body),UI.ContextMenu.ContextMenu.installHandler(e),this.toolboxRootView=new UI.RootView.RootView,this.toolboxRootView.attachToDocument(e),this.updateDeviceModeView()}updateDeviceModeView(){this.isDocked()?this.rootSplitWidget.setMainWidget(this.deviceModeView):this.toolboxRootView&&this.deviceModeView.show(this.toolboxRootView.element)}onBeforeDockSideChange(e){"undocked"===e.data.to&&this.toolboxRootView&&(this.rootSplitWidget.hideSidebar(),this.inspectedPagePlaceholder.update()),this.changingDockSide=!0}onDockSideChange(e){this.updateDeviceModeView();const t=e?e.data.to:UI.DockController.DockController.instance().dockSide();if(void 0===t)throw new Error("Got onDockSideChange event with unexpected undefined for dockSide()");"undocked"===t?this.updateForUndocked():this.toolboxRootView&&e&&"undocked"===e.data.from?this.rootSplitWidget.hideSidebar():this.updateForDocked(t)}onAfterDockSideChange(e){this.changingDockSide&&(e.data.from&&"undocked"===e.data.from&&this.updateForDocked(e.data.to),this.changingDockSide=!1,this.inspectedPagePlaceholder.update())}updateForDocked(e){this.rootSplitWidget.resizerElement().style.transform="right"===e?"translateX(2px)":"left"===e?"translateX(-2px)":"",this.rootSplitWidget.setVertical("right"===e||"left"===e),this.rootSplitWidget.setSecondIsSidebar("right"===e||"bottom"===e),this.rootSplitWidget.toggleResizer(this.rootSplitWidget.resizerElement(),!0),this.rootSplitWidget.toggleResizer(UI.InspectorView.InspectorView.instance().topResizerElement(),"bottom"===e),this.rootSplitWidget.showBoth()}updateForUndocked(){this.rootSplitWidget.toggleResizer(this.rootSplitWidget.resizerElement(),!1),this.rootSplitWidget.toggleResizer(UI.InspectorView.InspectorView.instance().topResizerElement(),!1),this.rootSplitWidget.hideMain()}isDocked(){return"undocked"!==UI.DockController.DockController.instance().dockSide()}onSetInspectedPageBounds(e){if(this.changingDockSide)return;const t=this.inspectedPagePlaceholder.element.window();if(!t.innerWidth||!t.innerHeight)return;if(!this.inspectedPagePlaceholder.isShowing())return;const o=e.data;console.timeStamp("AdvancedApp.setInspectedPageBounds"),Host.InspectorFrontendHost.InspectorFrontendHostInstance.setInspectedPageBounds(o)}}globalThis.Emulation=globalThis.Emulation||{},globalThis.Emulation.AdvancedApp=AdvancedApp;export class AdvancedAppProvider{static instance(e={forceNew:null}){const{forceNew:t}=e;return advancedAppProviderInstance&&!t||(advancedAppProviderInstance=new AdvancedAppProvider),advancedAppProviderInstance}createApp(){return AdvancedApp.instance()}}