@yuebai008/cli
Version:
Command line interface for rapid qg-minigame development
1 lines • 4.65 kB
JavaScript
import*as Common from"../../core/common/common.js";import*as i18n from"../../core/i18n/i18n.js";import*as SDK from"../../core/sdk/sdk.js";import*as UI from"../../ui/legacy/legacy.js";import*as LayerViewer from"../layer_viewer/layer_viewer.js";import{LayerPaintProfilerView}from"./LayerPaintProfilerView.js";import{Events,LayerTreeModel}from"./LayerTreeModel.js";const UIStrings={details:"Details",profiler:"Profiler"},str_=i18n.i18n.registerUIStrings("panels/layers/LayersPanel.ts",UIStrings),i18nString=i18n.i18n.getLocalizedString.bind(void 0,str_);let layersPanelInstance;export class LayersPanel extends UI.Panel.PanelWithSidebar{model;layerViewHost;layerTreeOutline;rightSplitWidget;layers3DView;tabbedPane;layerDetailsView;paintProfilerView;updateThrottler;layerBeingProfiled;constructor(){super("layers",225),this.model=null,SDK.TargetManager.TargetManager.instance().observeTargets(this,{scoped:!0}),this.layerViewHost=new LayerViewer.LayerViewHost.LayerViewHost,this.layerTreeOutline=new LayerViewer.LayerTreeOutline.LayerTreeOutline(this.layerViewHost),this.layerTreeOutline.addEventListener("PaintProfilerRequested",this.onPaintProfileRequested,this),this.panelSidebarElement().appendChild(this.layerTreeOutline.element),this.setDefaultFocusedElement(this.layerTreeOutline.element),this.rightSplitWidget=new UI.SplitWidget.SplitWidget(!1,!0,"layerDetailsSplitViewState"),this.splitWidget().setMainWidget(this.rightSplitWidget),this.layers3DView=new LayerViewer.Layers3DView.Layers3DView(this.layerViewHost),this.rightSplitWidget.setMainWidget(this.layers3DView),this.layers3DView.addEventListener(LayerViewer.Layers3DView.Events.PaintProfilerRequested,this.onPaintProfileRequested,this),this.layers3DView.addEventListener(LayerViewer.Layers3DView.Events.ScaleChanged,this.onScaleChanged,this),this.tabbedPane=new UI.TabbedPane.TabbedPane,this.rightSplitWidget.setSidebarWidget(this.tabbedPane),this.layerDetailsView=new LayerViewer.LayerDetailsView.LayerDetailsView(this.layerViewHost),this.layerDetailsView.addEventListener(LayerViewer.LayerDetailsView.Events.PaintProfilerRequested,this.onPaintProfileRequested,this),this.tabbedPane.appendTab(DetailsViewTabs.Details,i18nString(UIStrings.details),this.layerDetailsView),this.paintProfilerView=new LayerPaintProfilerView(this.showImage.bind(this)),this.tabbedPane.addEventListener(UI.TabbedPane.Events.TabClosed,this.onTabClosed,this),this.updateThrottler=new Common.Throttler.Throttler(100)}static instance(e){return layersPanelInstance&&!e?.forceNew||(layersPanelInstance=new LayersPanel),layersPanelInstance}focus(){this.layerTreeOutline.focus()}wasShown(){super.wasShown(),this.model&&this.model.enable()}willHide(){this.model&&this.model.disable(),super.willHide()}targetAdded(e){e===e.outermostTarget()&&(this.model=e.model(LayerTreeModel),this.model&&(this.model.addEventListener(Events.LayerTreeChanged,this.onLayerTreeUpdated,this),this.model.addEventListener(Events.LayerPainted,this.onLayerPainted,this),this.isShowing()&&(this.model.enable(),this.update())))}targetRemoved(e){this.model&&this.model.target()===e&&(this.model.removeEventListener(Events.LayerTreeChanged,this.onLayerTreeUpdated,this),this.model.removeEventListener(Events.LayerPainted,this.onLayerPainted,this),this.model.disable(),this.model=null)}onLayerTreeUpdated(){this.updateThrottler.schedule(this.update.bind(this))}update(){if(this.model){this.layerViewHost.setLayerTree(this.model.layerTree());const e=this.model.target().model(SDK.ResourceTreeModel.ResourceTreeModel);if(e){const i=e.mainFrame;if(i){const e=i.url;this.element.setAttribute("test-current-url",e)}}}return Promise.resolve()}onLayerPainted({data:e}){if(!this.model)return;const i=this.layerViewHost.selection();i&&i.layer()===e&&this.layerDetailsView.update(),this.layers3DView.updateLayerSnapshot(e)}onPaintProfileRequested({data:e}){this.layers3DView.snapshotForSelection(e).then((i=>{i&&(this.layerBeingProfiled=e.layer(),this.tabbedPane.hasTab(DetailsViewTabs.Profiler)||this.tabbedPane.appendTab(DetailsViewTabs.Profiler,i18nString(UIStrings.profiler),this.paintProfilerView,void 0,!0,!0),this.tabbedPane.selectTab(DetailsViewTabs.Profiler),this.paintProfilerView.profile(i.snapshot))}))}onTabClosed(e){e.data.tabId===DetailsViewTabs.Profiler&&this.layerBeingProfiled&&(this.paintProfilerView.reset(),this.layers3DView.showImageForLayer(this.layerBeingProfiled,void 0),this.layerBeingProfiled=null)}showImage(e){this.layerBeingProfiled&&this.layers3DView.showImageForLayer(this.layerBeingProfiled,e)}onScaleChanged(e){this.paintProfilerView.setScale(e.data)}}export const DetailsViewTabs={Details:"details",Profiler:"profiler"};