@yuebai008/cli
Version:
Command line interface for rapid qg-minigame development
1 lines • 4.85 kB
JavaScript
import*as i18n from"../../core/i18n/i18n.js";import*as UI from"../../ui/legacy/legacy.js";import*as Platform from"../../core/platform/platform.js";import{AccessibilitySubPane}from"./AccessibilitySubPane.js";import{ariaMetadata}from"./ARIAMetadata.js";const UIStrings={ariaAttributes:"ARIA Attributes",noAriaAttributes:"No ARIA attributes"},str_=i18n.i18n.registerUIStrings("panels/accessibility/ARIAAttributesView.ts",UIStrings),i18nString=i18n.i18n.getLocalizedString.bind(void 0,str_);export class ARIAAttributesPane extends AccessibilitySubPane{noPropertiesInfo;treeOutline;constructor(){super(i18nString(UIStrings.ariaAttributes)),this.noPropertiesInfo=this.createInfo(i18nString(UIStrings.noAriaAttributes)),this.treeOutline=this.createTreeOutline()}setNode(t){if(super.setNode(t),this.treeOutline.removeChildren(),!t)return;const e=t.domModel().target(),i=t.attributes();for(let t=0;t<i.length;++t){const a=i[t];this.isARIAAttribute(a)&&this.treeOutline.appendChild(new ARIAAttributesTreeElement(this,a,e))}const a=0!==this.treeOutline.rootElement().childCount();this.noPropertiesInfo.classList.toggle("hidden",a),this.treeOutline.element.classList.toggle("hidden",!a)}isARIAAttribute(t){return ATTRIBUTES.has(t.name)}}export class ARIAAttributesTreeElement extends UI.TreeOutline.TreeElement{parentPane;attribute;nameElement;valueElement;prompt;constructor(t,e,i){super(""),this.parentPane=t,this.attribute=e,this.selectable=!1}static createARIAValueElement(t){const e=document.createElement("span");return e.classList.add("monospace"),e.setTextContentTruncatedIfNeeded(t||""),e}onattach(){this.populateListItem(),this.listItemElement.addEventListener("click",this.mouseClick.bind(this))}populateListItem(){this.listItemElement.removeChildren(),this.appendNameElement(this.attribute.name),this.listItemElement.createChild("span","separator").textContent=": ",this.appendAttributeValueElement(this.attribute.value)}appendNameElement(t){this.nameElement=document.createElement("span"),this.nameElement.textContent=t,this.nameElement.classList.add("ax-name"),this.nameElement.classList.add("monospace"),this.listItemElement.appendChild(this.nameElement)}appendAttributeValueElement(t){this.valueElement=ARIAAttributesTreeElement.createARIAValueElement(t),this.listItemElement.appendChild(this.valueElement)}mouseClick(t){t.target!==this.listItemElement&&(t.consume(!0),this.startEditing())}startEditing(){const t=this.valueElement;if(!t||UI.UIUtils.isBeingEdited(t))return;const e=t.textContent||"";const i=this.nameElement.textContent||"";this.prompt=new ARIAAttributePrompt(ariaMetadata().valuesForProperty(i),this),this.prompt.setAutocompletionTimeout(0);const a=this.prompt.attachAndStartEditing(t,function(t,e){const i=e.target.textContent||"";this.editingCommitted(i,t)}.bind(this,e));a.addEventListener("keydown",(t=>this.editingValueKeyDown(e,t)),!1);const r=t.getComponentSelection();r&&r.selectAllChildren(t)}removePrompt(){this.prompt&&(this.prompt.detach(),delete this.prompt)}editingCommitted(t,e){if(this.removePrompt(),t!==e){this.parentPane.node().setAttributeValue(this.attribute.name,t)}}editingCancelled(){this.removePrompt(),this.populateListItem()}editingValueKeyDown(t,e){if(!e.handled){if("Enter"===e.key){const i=e.target;return this.editingCommitted(i.textContent||"",t),void e.consume()}return Platform.KeyboardUtilities.isEscKey(e)?(this.editingCancelled(),void e.consume()):void 0}}}export class ARIAAttributePrompt extends UI.TextPrompt.TextPrompt{ariaCompletions;treeElement;constructor(t,e){super(),this.initialize(this.buildPropertyCompletions.bind(this)),this.ariaCompletions=t,this.treeElement=e}async buildPropertyCompletions(t,e,i){return(e=e.toLowerCase())||i||!t?this.ariaCompletions.filter((t=>t.startsWith(e))).map((t=>({text:t,title:void 0,subtitle:void 0,priority:void 0,isSecondary:void 0,subtitleRenderer:void 0,selectionRange:void 0,hideGhostText:void 0,iconElement:void 0}))):[]}}const ATTRIBUTES=new Set(["role","aria-activedescendant","aria-atomic","aria-autocomplete","aria-braillelabel","aria-brailleroledescription","aria-busy","aria-checked","aria-colcount","aria-colindex","aria-colindextext","aria-colspan","aria-controls","aria-current","aria-describedby","aria-description","aria-details","aria-disabled","aria-dropeffect","aria-errormessage","aria-expanded","aria-flowto","aria-grabbed","aria-haspopup","aria-hidden","aria-invalid","aria-keyshortcuts","aria-label","aria-labelledby","aria-level","aria-live","aria-modal","aria-multiline","aria-multiselectable","aria-orientation","aria-owns","aria-placeholder","aria-posinset","aria-pressed","aria-readonly","aria-relevant","aria-required","aria-roledescription","aria-rowcount","aria-rowindex","aria-rowindextext","aria-rowspan","aria-selected","aria-setsize","aria-sort","aria-valuemax","aria-valuemin","aria-valuenow","aria-valuetext"]);