@yuebai008/cli
Version:
Command line interface for rapid qg-minigame development
1 lines • 4.48 kB
JavaScript
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 categorizedBreakpointsSidebarPaneStyles from"./categorizedBreakpointsSidebarPane.css.js";const UIStrings={breakpointHit:"breakpoint hit"},str_=i18n.i18n.registerUIStrings("panels/browser_debugger/CategorizedBreakpointsSidebarPane.ts",UIStrings),i18nString=i18n.i18n.getLocalizedString.bind(void 0,str_);export class CategorizedBreakpointsSidebarPane extends UI.Widget.VBox{#e;#t;#i;#s;#n;#r;constructor(e,t,i,s){super(!0),this.#e=new UI.TreeOutline.TreeOutlineInShadow,this.#e.setShowSelectionOnKeyboardFocus(!0),this.contentElement.appendChild(this.#e.element),this.#t=i,this.#i=s,this.#s=new Map;for(const t of e)this.#s.has(t)||this.createCategory(t);if(e.length>0){const t=this.#s.get(e[0]);t&&t.element.select()}this.#n=new Map;for(const e of t)this.createBreakpoint(e);SDK.TargetManager.TargetManager.instance().addModelListener(SDK.DebuggerModel.DebuggerModel,SDK.DebuggerModel.Events.DebuggerPaused,this.update,this),SDK.TargetManager.TargetManager.instance().addModelListener(SDK.DebuggerModel.DebuggerModel,SDK.DebuggerModel.Events.DebuggerResumed,this.update,this),UI.Context.Context.instance().addFlavorChangeListener(SDK.Target.Target,this.update,this)}get categories(){return this.#s}get breakpoints(){return this.#n}focus(){this.#e.forceSelect()}handleSpaceKeyEventOnBreakpoint(e,t){e&&" "===e.key&&(t&&t.checkbox.click(),e.consume(!0))}createCategory(e){const t=UI.UIUtils.CheckboxLabel.create(e);t.checkboxElement.addEventListener("click",this.categoryCheckboxClicked.bind(this,e),!0),t.checkboxElement.tabIndex=-1;const i=new UI.TreeOutline.TreeElement(t);i.listItemElement.addEventListener("keydown",(t=>{this.handleSpaceKeyEventOnBreakpoint(t,this.#s.get(e))})),t.checkboxElement.addEventListener("keydown",(t=>{i.listItemElement.focus(),this.handleSpaceKeyEventOnBreakpoint(t,this.#s.get(e))})),UI.ARIAUtils.setChecked(i.listItemElement,!1),this.#e.appendChild(i),this.#s.set(e,{element:i,checkbox:t.checkboxElement})}createBreakpoint(e){const t=UI.UIUtils.CheckboxLabel.create(e.title());t.classList.add("source-code"),t.checkboxElement.addEventListener("click",this.breakpointCheckboxClicked.bind(this,e),!0),t.checkboxElement.tabIndex=-1;const i=new UI.TreeOutline.TreeElement(t);i.listItemElement.addEventListener("keydown",(t=>{this.handleSpaceKeyEventOnBreakpoint(t,this.#n.get(e))})),t.checkboxElement.addEventListener("keydown",(t=>{i.listItemElement.focus(),this.handleSpaceKeyEventOnBreakpoint(t,this.#n.get(e))})),UI.ARIAUtils.setChecked(i.listItemElement,!1),i.listItemElement.createChild("div","breakpoint-hit-marker");const s=this.#s.get(e.category());s&&s.element.appendChild(i),this.#n.set(e,{element:i,checkbox:t.checkboxElement})}getBreakpointFromPausedDetails(e){return null}update(){const e=UI.Context.Context.instance().flavor(SDK.Target.Target),t=e?e.model(SDK.DebuggerModel.DebuggerModel):null,i=t?t.debuggerPausedDetails():null;if(!i||i.reason!==this.#i||!i.auxData)return void(this.#r&&(UI.ARIAUtils.setDescription(this.#r,""),this.#r.classList.remove("breakpoint-hit"),this.#r=void 0));const s=this.getBreakpointFromPausedDetails(i);if(!s)return;UI.ViewManager.ViewManager.instance().showView(this.#t);const n=this.#s.get(s.category());n&&n.element.expand();const r=this.#n.get(s);r&&(this.#r=r.element.listItemElement,UI.ARIAUtils.setDescription(this.#r,i18nString(UIStrings.breakpointHit)),this.#r.classList.add("breakpoint-hit"))}categoryCheckboxClicked(e){const t=this.#s.get(e);if(!t)return;const i=t.checkbox.checked;UI.ARIAUtils.setChecked(t.element.listItemElement,i);for(const[t,s]of this.#n)if(t.category()===e){const e=this.#n.get(t);e&&(e.checkbox.checked=i,this.toggleBreakpoint(t,i),UI.ARIAUtils.setChecked(s.element.listItemElement,i))}}toggleBreakpoint(e,t){e.setEnabled(t)}breakpointCheckboxClicked(e){const t=this.#n.get(e);if(!t)return;this.toggleBreakpoint(e,t.checkbox.checked),UI.ARIAUtils.setChecked(t.element.listItemElement,t.checkbox.checked);let i=!1,s=!1;for(const t of this.#n.keys())t.category()===e.category()&&(t.enabled()?i=!0:s=!0);const n=this.#s.get(e.category());n&&(n.checkbox.checked=i,n.checkbox.indeterminate=i&&s,n.checkbox.indeterminate?UI.ARIAUtils.setCheckboxAsIndeterminate(n.element.listItemElement):UI.ARIAUtils.setChecked(n.element.listItemElement,i))}wasShown(){super.wasShown(),this.#e.registerCSSFiles([categorizedBreakpointsSidebarPaneStyles])}}