@yuebai008/cli
Version:
Command line interface for rapid qg-minigame development
1 lines • 2.45 kB
JavaScript
import*as Host from"../../core/host/host.js";import*as i18n from"../../core/i18n/i18n.js";import*as UI from"../../ui/legacy/legacy.js";import{AccessibilitySubPane}from"./AccessibilitySubPane.js";const UIStrings={sourceOrderViewer:"Source Order Viewer",noSourceOrderInformation:"No source order information available",thereMayBeADelayInDisplaying:"There may be a delay in displaying source order for elements with many children",showSourceOrder:"Show source order"},str_=i18n.i18n.registerUIStrings("panels/accessibility/SourceOrderView.ts",UIStrings),i18nString=i18n.i18n.getLocalizedString.bind(void 0,str_),MAX_CHILD_ELEMENTS_THRESHOLD=300;export class SourceOrderPane extends AccessibilitySubPane{noNodeInfo;warning;checked;checkboxLabel;checkboxElement;overlayModel;constructor(){super(i18nString(UIStrings.sourceOrderViewer)),this.noNodeInfo=this.createInfo(i18nString(UIStrings.noSourceOrderInformation)),this.warning=this.createInfo(i18nString(UIStrings.thereMayBeADelayInDisplaying)),this.warning.id="source-order-warning",this.checked=!1,this.checkboxLabel=UI.UIUtils.CheckboxLabel.create(i18nString(UIStrings.showSourceOrder),!1),this.checkboxElement=this.checkboxLabel.checkboxElement,this.checkboxLabel.classList.add("source-order-checkbox"),this.checkboxElement.addEventListener("click",this.checkboxClicked.bind(this),!1),this.element.appendChild(this.checkboxLabel),this.nodeInternal=null,this.overlayModel=null}async setNodeAsync(e){if(this.checkboxLabel.classList.contains("hidden")||(this.checked=this.checkboxElement.checked),this.checkboxElement.checked=!1,this.checkboxClicked(),super.setNode(e),!this.nodeInternal)return void(this.overlayModel=null);let i=!1;const t=this.nodeInternal.childNodeCount();if(t>0){this.nodeInternal.children()||await this.nodeInternal.getSubtree(1,!1);i=this.nodeInternal.children().some((e=>e.nodeType()===Node.ELEMENT_NODE))}this.noNodeInfo.classList.toggle("hidden",i),this.warning.classList.toggle("hidden",t<300),this.checkboxLabel.classList.toggle("hidden",!i),i?(this.overlayModel=this.nodeInternal.domModel().overlayModel(),this.checkboxElement.checked=this.checked,this.checkboxClicked()):this.overlayModel=null}checkboxClicked(){this.nodeInternal&&this.overlayModel&&(this.checkboxElement.checked?(Host.userMetrics.actionTaken(Host.UserMetrics.Action.SourceOrderViewActivated),this.overlayModel.highlightSourceOrderInOverlay(this.nodeInternal)):this.overlayModel.hideSourceOrderInOverlay())}}