UNPKG

@yuebai008/cli

Version:

Command line interface for rapid qg-minigame development

1 lines 3.74 kB
import*as Common from"../../core/common/common.js";import*as i18n from"../../core/i18n/i18n.js";import*as Platform from"../../core/platform/platform.js";import*as Workspace from"../../models/workspace/workspace.js";import*as WorkspaceDiff from"../../models/workspace_diff/workspace_diff.js";import*as IconButton from"../../ui/components/icon_button/icon_button.js";import*as UI from"../../ui/legacy/legacy.js";import*as Snippets from"../snippets/snippets.js";import changesSidebarStyles from"./changesSidebar.css.js";const UIStrings={sFromSourceMap:"{PH1} (from source map)"},str_=i18n.i18n.registerUIStrings("panels/changes/ChangesSidebar.ts",UIStrings),i18nString=i18n.i18n.getLocalizedString.bind(void 0,str_);export class ChangesSidebar extends(Common.ObjectWrapper.eventMixin(UI.Widget.Widget)){treeoutline;treeElements;workspaceDiff;constructor(e){super(),this.treeoutline=new UI.TreeOutline.TreeOutlineInShadow,this.treeoutline.setFocusable(!1),this.treeoutline.setComparator(((e,t)=>Platform.StringUtilities.compare(e.titleAsText(),t.titleAsText()))),this.treeoutline.addEventListener(UI.TreeOutline.Events.ElementSelected,this.selectionChanged,this),UI.ARIAUtils.markAsTablist(this.treeoutline.contentElement),this.element.appendChild(this.treeoutline.element),this.treeElements=new Map,this.workspaceDiff=e,this.workspaceDiff.modifiedUISourceCodes().forEach(this.addUISourceCode.bind(this)),this.workspaceDiff.addEventListener("ModifiedStatusChanged",this.uiSourceCodeMofiedStatusChanged,this)}selectUISourceCode(e,t){const i=this.treeElements.get(e);i&&i.select(t)}selectedUISourceCode(){return this.treeoutline.selectedTreeElement?this.treeoutline.selectedTreeElement.uiSourceCode:null}selectionChanged(){this.dispatchEventToListeners("SelectedUISourceCodeChanged")}uiSourceCodeMofiedStatusChanged(e){e.data.isModified?this.addUISourceCode(e.data.uiSourceCode):this.removeUISourceCode(e.data.uiSourceCode)}removeUISourceCode(e){const t=this.treeElements.get(e);if(this.treeElements.delete(e),this.treeoutline.selectedTreeElement===t){const e=t.previousSibling||t.nextSibling;e?e.select(!0):(t.deselect(),this.selectionChanged())}t&&(this.treeoutline.removeChild(t),t.dispose()),0===this.treeoutline.rootElement().childCount()&&this.treeoutline.setFocusable(!1)}addUISourceCode(e){const t=new UISourceCodeTreeElement(e);this.treeElements.set(e,t),this.treeoutline.setFocusable(!0),this.treeoutline.appendChild(t),this.treeoutline.selectedTreeElement||t.select(!0)}wasShown(){super.wasShown(),this.treeoutline.registerCSSFiles([changesSidebarStyles])}}export class UISourceCodeTreeElement extends UI.TreeOutline.TreeElement{uiSourceCode;eventListeners;constructor(e){super(),this.uiSourceCode=e,this.listItemElement.classList.add("navigator-"+e.contentType().name()+"-tree-item"),UI.ARIAUtils.markAsTab(this.listItemElement);let t="document";Snippets.ScriptSnippetFileSystem.isSnippetsUISourceCode(this.uiSourceCode)&&(t="snippet");const i=new IconButton.Icon.Icon;i.data={iconName:t,color:"var(--icon-file-default)",width:"20px",height:"20px"},this.setLeadingIcons([i]),this.eventListeners=[e.addEventListener(Workspace.UISourceCode.Events.TitleChanged,this.updateTitle,this),e.addEventListener(Workspace.UISourceCode.Events.WorkingCopyChanged,this.updateTitle,this),e.addEventListener(Workspace.UISourceCode.Events.WorkingCopyCommitted,this.updateTitle,this)],this.updateTitle()}updateTitle(){let e=this.uiSourceCode.displayName();this.uiSourceCode.isDirty()&&(e="*"+e),this.title=e;let t=this.uiSourceCode.url();this.uiSourceCode.contentType().isFromSourceMap()&&(t=i18nString(UIStrings.sFromSourceMap,{PH1:this.uiSourceCode.displayName()})),this.tooltip=t}dispose(){Common.EventTarget.removeEventListeners(this.eventListeners)}}