@yuebai008/cli
Version:
Command line interface for rapid qg-minigame development
1 lines • 4.18 kB
JavaScript
import*as Root from"../../core/root/root.js";import*as SDK from"../../core/sdk/sdk.js";import*as UI from"../../ui/legacy/legacy.js";import{AXNodeSubPane}from"./AccessibilityNodeView.js";import{ARIAAttributesPane}from"./ARIAAttributesView.js";import{AXBreadcrumbsPane}from"./AXBreadcrumbsPane.js";import{SourceOrderPane}from"./SourceOrderView.js";let accessibilitySidebarViewInstance;export class AccessibilitySidebarView extends UI.ThrottledWidget.ThrottledWidget{sourceOrderViewerExperimentEnabled;nodeInternal;axNodeInternal;skipNextPullNode;sidebarPaneStack;breadcrumbsSubPane=null;ariaSubPane;axNodeSubPane;sourceOrderSubPane;constructor(e){super(!1,e),this.sourceOrderViewerExperimentEnabled=Root.Runtime.experiments.isEnabled("sourceOrderViewer"),this.nodeInternal=null,this.axNodeInternal=null,this.skipNextPullNode=!1,this.sidebarPaneStack=UI.ViewManager.ViewManager.instance().createStackLocation(),this.breadcrumbsSubPane=new AXBreadcrumbsPane(this),this.sidebarPaneStack.showView(this.breadcrumbsSubPane),this.ariaSubPane=new ARIAAttributesPane,this.sidebarPaneStack.showView(this.ariaSubPane),this.axNodeSubPane=new AXNodeSubPane,this.sidebarPaneStack.showView(this.axNodeSubPane),this.sourceOrderViewerExperimentEnabled&&(this.sourceOrderSubPane=new SourceOrderPane,this.sidebarPaneStack.showView(this.sourceOrderSubPane)),this.sidebarPaneStack.widget().show(this.element),UI.Context.Context.instance().addFlavorChangeListener(SDK.DOMModel.DOMNode,this.pullNode,this),this.pullNode()}static instance(e){return accessibilitySidebarViewInstance&&!e?.forceNew||(accessibilitySidebarViewInstance=new AccessibilitySidebarView(e?.throttlingTimeout)),accessibilitySidebarViewInstance}node(){return this.nodeInternal}axNode(){return this.axNodeInternal}setNode(e,t){this.skipNextPullNode=Boolean(t),this.nodeInternal=e,this.update()}accessibilityNodeCallback(e){e&&(this.axNodeInternal=e,e.isDOMNode()?this.sidebarPaneStack.showView(this.ariaSubPane,this.axNodeSubPane):this.sidebarPaneStack.removeView(this.ariaSubPane),this.axNodeSubPane&&this.axNodeSubPane.setAXNode(e),this.breadcrumbsSubPane&&this.breadcrumbsSubPane.setAXNode(e))}async doUpdate(){const e=this.node();if(this.axNodeSubPane.setNode(e),this.ariaSubPane.setNode(e),this.breadcrumbsSubPane&&this.breadcrumbsSubPane.setNode(e),this.sourceOrderViewerExperimentEnabled&&this.sourceOrderSubPane&&this.sourceOrderSubPane.setNodeAsync(e),!e)return;const t=e.domModel().target().model(SDK.AccessibilityModel.AccessibilityModel);t&&(Root.Runtime.experiments.isEnabled("fullAccessibilityTree")||t.clear(),await t.requestPartialAXTree(e),this.accessibilityNodeCallback(t.axNodeForDOMNode(e)))}wasShown(){super.wasShown(),this.doUpdate(),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})}willHide(){SDK.TargetManager.TargetManager.instance().removeModelListener(SDK.DOMModel.DOMModel,SDK.DOMModel.Events.AttrModified,this.onNodeChange,this),SDK.TargetManager.TargetManager.instance().removeModelListener(SDK.DOMModel.DOMModel,SDK.DOMModel.Events.AttrRemoved,this.onNodeChange,this),SDK.TargetManager.TargetManager.instance().removeModelListener(SDK.DOMModel.DOMModel,SDK.DOMModel.Events.CharacterDataModified,this.onNodeChange,this),SDK.TargetManager.TargetManager.instance().removeModelListener(SDK.DOMModel.DOMModel,SDK.DOMModel.Events.ChildNodeCountUpdated,this.onNodeChange,this)}pullNode(){this.skipNextPullNode?this.skipNextPullNode=!1:this.setNode(UI.Context.Context.instance().flavor(SDK.DOMModel.DOMNode))}onNodeChange(e){if(!this.node())return;const t=e.data,a=t instanceof SDK.DOMModel.DOMNode?t:t.node;this.node()===a&&this.update()}}