@yuebai008/cli
Version:
Command line interface for rapid qg-minigame development
1 lines • 2.46 kB
JavaScript
import*as Common from"../../core/common/common.js";import*as SDK from"../../core/sdk/sdk.js";import*as UI from"../../ui/legacy/legacy.js";import{ElementsTreeElement}from"./ElementsTreeElement.js";import{ElementsTreeOutline}from"./ElementsTreeOutline.js";export class ElementsTreeElementHighlighter{throttler;treeOutline;currentHighlightedElement;alreadyExpandedParentElement;pendingHighlightNode;isModifyingTreeOutline;constructor(e,t){this.throttler=t,this.treeOutline=e,this.treeOutline.addEventListener(UI.TreeOutline.Events.ElementExpanded,this.clearState,this),this.treeOutline.addEventListener(UI.TreeOutline.Events.ElementCollapsed,this.clearState,this),this.treeOutline.addEventListener(ElementsTreeOutline.Events.SelectedNodeChanged,this.clearState,this),SDK.TargetManager.TargetManager.instance().addModelListener(SDK.OverlayModel.OverlayModel,SDK.OverlayModel.Events.HighlightNodeRequested,this.highlightNode,this,{scoped:!0}),SDK.TargetManager.TargetManager.instance().addModelListener(SDK.OverlayModel.OverlayModel,SDK.OverlayModel.Events.InspectModeWillBeToggled,this.clearState,this,{scoped:!0}),this.currentHighlightedElement=null,this.alreadyExpandedParentElement=null,this.pendingHighlightNode=null,this.isModifyingTreeOutline=!1}highlightNode(e){if(!Common.Settings.Settings.instance().moduleSetting("highlightNodeOnHoverInOverlay").get())return;const t=e.data;this.throttler.schedule((async()=>{this.highlightNodeInternal(this.pendingHighlightNode),this.pendingHighlightNode=null})),this.pendingHighlightNode=this.treeOutline===ElementsTreeOutline.forDOMModel(t.domModel())?t:null}highlightNodeInternal(e){this.isModifyingTreeOutline=!0;let t=null;if(this.currentHighlightedElement){let e=this.currentHighlightedElement;for(;e&&e!==this.alreadyExpandedParentElement;){e.expanded&&e.collapse();const t=e.parent;e=t instanceof ElementsTreeElement?t:null}}if(this.currentHighlightedElement=null,this.alreadyExpandedParentElement=null,e){let n=e;const i=this.treeOutline.treeElementByNode,l=e=>{const t=i.get(e);return!t||!t.expanded};for(;n&&l(n);)n=n.parentNode;this.alreadyExpandedParentElement=n?i.get(n):this.treeOutline.rootElement(),t=this.treeOutline.createTreeElementFor(e)}this.currentHighlightedElement=t,this.treeOutline.setHoverEffect(t),t&&t.reveal(!0),this.isModifyingTreeOutline=!1}clearState(){this.isModifyingTreeOutline||(this.currentHighlightedElement=null,this.alreadyExpandedParentElement=null,this.pendingHighlightNode=null)}}