UNPKG

@yuebai008/cli

Version:

Command line interface for rapid qg-minigame development

1 lines 3.34 kB
import*as i18n from"../../core/i18n/i18n.js";import*as SDK from"../../core/sdk/sdk.js";import*as UI from"../../ui/legacy/legacy.js";import{ElementsPanel}from"./ElementsPanel.js";import elementStatePaneWidgetStyles from"./elementStatePaneWidget.css.js";const UIStrings={forceElementState:"Force element state",toggleElementState:"Toggle Element State"},str_=i18n.i18n.registerUIStrings("panels/elements/ElementStatePaneWidget.ts",UIStrings),i18nString=i18n.i18n.getLocalizedString.bind(void 0,str_);export class ElementStatePaneWidget extends UI.Widget.Widget{inputs;inputStates;cssModel;constructor(){super(!0),this.contentElement.className="styles-element-state-pane",UI.UIUtils.createTextChild(this.contentElement.createChild("div"),i18nString(UIStrings.forceElementState));const e=document.createElement("table");e.classList.add("source-code"),UI.ARIAUtils.markAsPresentation(e);const t=[];this.inputs=t,this.inputStates=new WeakMap;const n=e=>{const t=UI.Context.Context.instance().flavor(SDK.DOMModel.DOMNode);if(!(t&&e.target instanceof HTMLInputElement))return;const n=this.inputStates.get(e.target);n&&t.domModel().cssModel().forcePseudoState(t,n,e.target.checked)},s=e=>{const s=document.createElement("td"),i=UI.UIUtils.CheckboxLabel.create(":"+e),o=i.checkboxElement;return this.inputStates.set(o,e),o.addEventListener("click",n,!1),t.push(o),s.appendChild(i),s};let i=e.createChild("tr");i.appendChild(s("active")),i.appendChild(s("hover")),i=e.createChild("tr"),i.appendChild(s("focus")),i.appendChild(s("visited")),i=e.createChild("tr"),i.appendChild(s("focus-within")),i.appendChild(s("focus-visible")),i=e.createChild("tr"),i.appendChild(s("target")),this.contentElement.appendChild(e),UI.Context.Context.instance().addFlavorChangeListener(SDK.DOMModel.DOMNode,this.update,this)}updateModel(e){this.cssModel!==e&&(this.cssModel&&this.cssModel.removeEventListener(SDK.CSSModel.Events.PseudoStateForced,this.update,this),this.cssModel=e,this.cssModel&&this.cssModel.addEventListener(SDK.CSSModel.Events.PseudoStateForced,this.update,this))}wasShown(){super.wasShown(),this.registerCSSFiles([elementStatePaneWidgetStyles]),this.update()}update(){let e=UI.Context.Context.instance().flavor(SDK.DOMModel.DOMNode);if(e&&(e=e.enclosingElementOrSelf()),this.updateModel(e?e.domModel().cssModel():null),e){const t=e.domModel().cssModel().pseudoState(e);for(const n of this.inputs){n.disabled=Boolean(e.pseudoType());const s=this.inputStates.get(n);n.checked=!(!t||void 0===s)&&t.indexOf(s)>=0}}else for(const e of this.inputs)e.disabled=!0,e.checked=!1;ButtonProvider.instance().item().setToggled(this.inputs.some((e=>e.checked)))}}let buttonProviderInstance;export class ButtonProvider{button;view;constructor(){this.button=new UI.Toolbar.ToolbarToggle(i18nString(UIStrings.toggleElementState),""),this.button.setText(i18n.i18n.lockedString(":hov")),this.button.setToggleWithDot(!0),this.button.addEventListener(UI.Toolbar.ToolbarButton.Events.Click,this.clicked,this),this.button.element.classList.add("monospace"),this.view=new ElementStatePaneWidget}static instance(e={forceNew:null}){const{forceNew:t}=e;return buttonProviderInstance&&!t||(buttonProviderInstance=new ButtonProvider),buttonProviderInstance}clicked(){ElementsPanel.instance().showToolbarPane(this.view.isShowing()?null:this.view,null)}item(){return this.button}}