UNPKG

@yuebai008/cli

Version:

Command line interface for rapid qg-minigame development

1 lines 4.59 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 SDK from"../../core/sdk/sdk.js";import*as ObjectUI from"../../ui/legacy/components/object_ui/object_ui.js";import*as UI from"../../ui/legacy/legacy.js";import propertiesWidgetStyles from"./propertiesWidget.css.js";import{StylesSidebarPane}from"./StylesSidebarPane.js";const OBJECT_GROUP_NAME="properties-sidebar-pane",UIStrings={filter:"Filter",filterProperties:"Filter Properties",showAll:"Show all",showAllTooltip:"When unchecked, only properties whose values are neither null nor undefined will be shown",noMatchingProperty:"No matching property"},str_=i18n.i18n.registerUIStrings("panels/elements/PropertiesWidget.ts",UIStrings),i18nString=i18n.i18n.getLocalizedString.bind(void 0,str_);let propertiesWidgetInstance;export class PropertiesWidget extends UI.ThrottledWidget.ThrottledWidget{node;showAllPropertiesSetting;filterRegex=null;noMatchesElement;treeOutline;expandController;lastRequestedNode;constructor(e){super(!0,e),this.showAllPropertiesSetting=Common.Settings.Settings.instance().createSetting("showAllProperties",!1),this.showAllPropertiesSetting.addChangeListener(this.filterList.bind(this)),SDK.TargetManager.TargetManager.instance().addModelListener(SDK.DOMModel.DOMModel,SDK.DOMModel.Events.AttrModified,this.onNodeChange,this,{scoped:!0}),SDK.TargetManager.TargetManager.instance().addModelListener(SDK.DOMModel.DOMModel,SDK.DOMModel.Events.AttrRemoved,this.onNodeChange,this,{scoped:!0}),SDK.TargetManager.TargetManager.instance().addModelListener(SDK.DOMModel.DOMModel,SDK.DOMModel.Events.CharacterDataModified,this.onNodeChange,this,{scoped:!0}),SDK.TargetManager.TargetManager.instance().addModelListener(SDK.DOMModel.DOMModel,SDK.DOMModel.Events.ChildNodeCountUpdated,this.onNodeChange,this,{scoped:!0}),UI.Context.Context.instance().addFlavorChangeListener(SDK.DOMModel.DOMNode,this.setNode,this),this.node=UI.Context.Context.instance().flavor(SDK.DOMModel.DOMNode);const t=this.contentElement.createChild("div","hbox properties-widget-toolbar"),i=t.createChild("div","properties-widget-filter-box"),o=StylesSidebarPane.createPropertyFilterElement(i18nString(UIStrings.filter),t,this.filterProperties.bind(this));UI.ARIAUtils.setLabel(o,i18nString(UIStrings.filterProperties)),i.appendChild(o);new UI.Toolbar.Toolbar("styles-pane-toolbar",t).appendToolbarItem(new UI.Toolbar.ToolbarSettingCheckbox(this.showAllPropertiesSetting,i18nString(UIStrings.showAllTooltip),i18nString(UIStrings.showAll))),this.noMatchesElement=this.contentElement.createChild("div","gray-info-message hidden"),this.noMatchesElement.textContent=i18nString(UIStrings.noMatchingProperty),this.treeOutline=new ObjectUI.ObjectPropertiesSection.ObjectPropertiesSectionsTreeOutline({readOnly:!0}),this.treeOutline.setShowSelectionOnKeyboardFocus(!0,!1),this.expandController=new ObjectUI.ObjectPropertiesSection.ObjectPropertiesSectionsTreeExpandController(this.treeOutline),this.contentElement.appendChild(this.treeOutline.element),this.treeOutline.addEventListener(UI.TreeOutline.Events.ElementExpanded,(()=>{Host.userMetrics.actionTaken(Host.UserMetrics.Action.DOMPropertiesExpanded)})),this.update()}static instance(e){return propertiesWidgetInstance&&!e?.forceNew||(propertiesWidgetInstance=new PropertiesWidget(e?.throttlingTimeout)),propertiesWidgetInstance}filterProperties(e){this.filterRegex=e,this.filterList()}filterList(){let e=!0;for(const t of this.treeOutline.rootElement().children()){const{property:i}=t,o=!i?.match({includeNullOrUndefinedValues:this.showAllPropertiesSetting.get(),regex:this.filterRegex});o||(e=!1),t.hidden=o}this.noMatchesElement.classList.toggle("hidden",!e)}setNode(e){this.node=e.data,this.update()}async doUpdate(){if(this.lastRequestedNode&&(this.lastRequestedNode.domModel().runtimeModel().releaseObjectGroup(OBJECT_GROUP_NAME),delete this.lastRequestedNode),!this.node)return void this.treeOutline.removeChildren();this.lastRequestedNode=this.node;const e=await this.node.resolveToObject(OBJECT_GROUP_NAME);if(!e)return;const t=this.treeOutline.rootElement();let{properties:i}=await SDK.RemoteObject.RemoteObject.loadFromObjectPerProto(e,!0);t.removeChildren(),null===i&&(i=[]),ObjectUI.ObjectPropertiesSection.ObjectPropertyTreeElement.populateWithProperties(t,i,null,!0,!0,e),this.filterList()}onNodeChange(e){if(!this.node)return;const t=e.data,i=t instanceof SDK.DOMModel.DOMNode?t:t.node;this.node===i&&this.update()}wasShown(){super.wasShown(),this.registerCSSFiles([propertiesWidgetStyles])}}