@yuebai008/cli
Version:
Command line interface for rapid qg-minigame development
1 lines • 9.27 kB
JavaScript
import*as Common from"../../core/common/common.js";import*as i18n from"../../core/i18n/i18n.js";import*as IssuesManager from"../../models/issues_manager/issues_manager.js";import*as IssueCounter from"../../ui/components/issue_counter/issue_counter.js";import*as UI from"../../ui/legacy/legacy.js";import{HiddenIssuesRow}from"./HiddenIssuesRow.js";import issuesPaneStyles from"./issuesPane.css.js";import issuesTreeStyles from"./issuesTree.css.js";import{IssueAggregator}from"./IssueAggregator.js";import{IssueView}from"./IssueView.js";import{IssueKindView,getGroupIssuesByKindSetting,issueKindViewSortPriority}from"./IssueKindView.js";const UIStrings={crossOriginEmbedderPolicy:"Cross Origin Embedder Policy",mixedContent:"Mixed Content",samesiteCookie:"SameSite Cookie",heavyAds:"Heavy Ads",contentSecurityPolicy:"Content Security Policy",other:"Other",lowTextContrast:"Low Text Contrast",cors:"Cross Origin Resource Sharing",groupDisplayedIssuesUnder:"Group displayed issues under associated categories",groupByCategory:"Group by category",groupDisplayedIssuesUnderKind:"Group displayed issues as Page errors, Breaking changes and Improvements",groupByKind:"Group by kind",includeCookieIssuesCausedBy:"Include cookie Issues caused by third-party sites",includeThirdpartyCookieIssues:"Include third-party cookie issues",onlyThirdpartyCookieIssues:"Only third-party cookie issues detected so far",noIssuesDetectedSoFar:"No issues detected so far",attributionReporting:"Attribution Reporting `API`",quirksMode:"Quirks Mode",generic:"Generic"},str_=i18n.i18n.registerUIStrings("panels/issues/IssuesPane.ts",UIStrings),i18nString=i18n.i18n.getLocalizedString.bind(void 0,str_);class IssueCategoryView extends UI.TreeOutline.TreeElement{#e;constructor(e){super(),this.#e=e,this.toggleOnClick=!0,this.listItemElement.classList.add("issue-category"),this.childrenListElement.classList.add("issue-category-body")}getCategoryName(){switch(this.#e){case IssuesManager.Issue.IssueCategory.CrossOriginEmbedderPolicy:return i18nString(UIStrings.crossOriginEmbedderPolicy);case IssuesManager.Issue.IssueCategory.MixedContent:return i18nString(UIStrings.mixedContent);case IssuesManager.Issue.IssueCategory.Cookie:return i18nString(UIStrings.samesiteCookie);case IssuesManager.Issue.IssueCategory.HeavyAd:return i18nString(UIStrings.heavyAds);case IssuesManager.Issue.IssueCategory.ContentSecurityPolicy:return i18nString(UIStrings.contentSecurityPolicy);case IssuesManager.Issue.IssueCategory.LowTextContrast:return i18nString(UIStrings.lowTextContrast);case IssuesManager.Issue.IssueCategory.Cors:return i18nString(UIStrings.cors);case IssuesManager.Issue.IssueCategory.AttributionReporting:return i18nString(UIStrings.attributionReporting);case IssuesManager.Issue.IssueCategory.QuirksMode:return i18nString(UIStrings.quirksMode);case IssuesManager.Issue.IssueCategory.Generic:return i18nString(UIStrings.generic);case IssuesManager.Issue.IssueCategory.Other:return i18nString(UIStrings.other)}}onattach(){this.#s()}#s(){const e=document.createElement("div");e.classList.add("header");const s=document.createElement("div");s.classList.add("title"),s.textContent=this.getCategoryName(),e.appendChild(s),this.listItemElement.appendChild(e)}}export function getGroupIssuesByCategorySetting(){return Common.Settings.Settings.instance().createSetting("groupIssuesByCategory",!1)}let issuesPaneInstance;export class IssuesPane extends UI.Widget.VBox{#t;#i;#n;#r;#o;#a;#u;#d;#g;#I=Promise.resolve();constructor(){super(!0),this.contentElement.classList.add("issues-pane"),this.#t=new Map,this.#n=new Map,this.#i=new Map,this.#r=null,this.#c(),this.#o=new UI.TreeOutline.TreeOutlineInShadow,this.#o.setShowSelectionOnKeyboardFocus(!0),this.#o.contentElement.classList.add("issues"),this.contentElement.appendChild(this.#o.element),this.#a=new HiddenIssuesRow,this.#o.appendChild(this.#a),this.#u=document.createElement("div"),this.#u.classList.add("issues-pane-no-issues"),this.contentElement.appendChild(this.#u),this.#d=IssuesManager.IssuesManager.IssuesManager.instance(),this.#g=new IssueAggregator(this.#d),this.#g.addEventListener("AggregatedIssueUpdated",this.#h,this),this.#g.addEventListener("FullUpdateRequired",this.#l,this),this.#a.hidden=0===this.#d.numberOfHiddenIssues(),this.#l(),this.#d.addEventListener("IssuesCountUpdated",this.#p,this)}static instance(e={forceNew:null}){const{forceNew:s}=e;return issuesPaneInstance&&!s||(issuesPaneInstance=new IssuesPane),issuesPaneInstance}elementsToRestoreScrollPositionsFor(){return[this.#o.element]}#c(){const e=this.contentElement.createChild("div","issues-toolbar-container");new UI.Toolbar.Toolbar("issues-toolbar-left",e);const s=new UI.Toolbar.Toolbar("issues-toolbar-right",e),t=getGroupIssuesByCategorySetting(),i=new UI.Toolbar.ToolbarSettingCheckbox(t,i18nString(UIStrings.groupDisplayedIssuesUnder),i18nString(UIStrings.groupByCategory));i.setVisible(!1),s.appendToolbarItem(i),t.addChangeListener((()=>{this.#y(!0)}));const n=getGroupIssuesByKindSetting(),r=new UI.Toolbar.ToolbarSettingCheckbox(n,i18nString(UIStrings.groupDisplayedIssuesUnderKind),i18nString(UIStrings.groupByKind));s.appendToolbarItem(r),n.addChangeListener((()=>{this.#y(!0)})),r.setVisible(!0);const o=IssuesManager.Issue.getShowThirdPartyIssuesSetting();this.#r=new UI.Toolbar.ToolbarSettingCheckbox(o,i18nString(UIStrings.includeCookieIssuesCausedBy),i18nString(UIStrings.includeThirdpartyCookieIssues)),s.appendToolbarItem(this.#r),this.setDefaultFocusedElement(this.#r.inputElement),s.appendSeparator();const a=new IssueCounter.IssueCounter.IssueCounter;a.data={tooltipCallback:()=>{const e=IssueCounter.IssueCounter.getIssueCountsEnumeration(IssuesManager.IssuesManager.IssuesManager.instance(),!1);a.title=e},displayMode:"ShowAlways",issuesManager:IssuesManager.IssuesManager.IssuesManager.instance()},a.id="console-issues-counter";const u=new UI.Toolbar.ToolbarItem(a);return s.appendToolbarItem(u),{toolbarContainer:e}}#h(e){this.#w(e.data)}#w(e){this.#I=this.#I.then((()=>this.#m(e)))}async#m(e){let s=this.#i.get(e.aggregationKey());if(s){s.setIssue(e);const t=this.#C(e);s.parent===t||t instanceof UI.TreeOutline.TreeOutline&&s.parent===t.rootElement()||(s.parent?.removeChild(s),this.appendIssueViewToParent(s,t))}else{const t=e.getDescription();if(!t)return void console.warn("Could not find description for issue code:",e.code());const i=await IssuesManager.MarkdownIssueDescription.createIssueDescriptionFromMarkdown(t);s=new IssueView(e,i),this.#i.set(e.aggregationKey(),s);const n=this.#C(e);this.appendIssueViewToParent(s,n)}s.update(),this.#p()}appendIssueViewToParent(e,s){s.appendChild(e,((e,s)=>e instanceof HiddenIssuesRow?1:s instanceof HiddenIssuesRow?-1:e instanceof IssueView&&s instanceof IssueView?e.getIssueTitle().localeCompare(s.getIssueTitle()):(console.error("The issues tree should only contain IssueView objects as direct children"),0))),s instanceof UI.TreeOutline.TreeElement&&this.#S(s)}#S(e){const s=e.childrenListNode.children;let t=0;for(let e=0;e<s.length;e++){const i=s[e];i.classList.contains("issue")&&(UI.ARIAUtils.setPositionInSet(i,++t),UI.ARIAUtils.setSetSize(i,s.length/2))}}#C(e){if(e.isHidden())return this.#a;if(getGroupIssuesByKindSetting().get()){const s=e.getKind(),t=this.#n.get(s);if(t)return t;const i=new IssueKindView(s);return this.#o.appendChild(i,((e,s)=>e instanceof IssueKindView&&s instanceof IssueKindView?issueKindViewSortPriority(e,s):0)),this.#n.set(s,i),i}if(getGroupIssuesByCategorySetting().get()){const s=e.getCategory(),t=this.#t.get(s);if(t)return t;const i=new IssueCategoryView(s);return this.#o.appendChild(i,((e,s)=>e instanceof IssueCategoryView&&s instanceof IssueCategoryView?e.getCategoryName().localeCompare(s.getCategoryName()):0)),this.#t.set(s,i),i}return this.#o}#T(e,s){for(const[t,i]of Array.from(e.entries()))s?.has(t)||(i.parent&&i.parent.removeChild(i),e.delete(t))}#l(){this.#y(!1)}#y(e){if(this.#T(this.#t,e?void 0:this.#g.aggregatedIssueCategories()),this.#T(this.#n,e?void 0:this.#g.aggregatedIssueKinds()),this.#T(this.#i,e?void 0:this.#g.aggregatedIssueCodes()),this.#g)for(const e of this.#g.aggregatedIssues())this.#w(e);this.#p()}#f(){for(const e of this.#n.values()){const s=this.#d.numberOfIssues(e.getKind());e.update(s)}}#p(){this.#U(this.#d.numberOfIssues(),this.#d.numberOfHiddenIssues()),getGroupIssuesByKindSetting().get()&&this.#f()}#U(e,s){if(e>0||s>0){this.#a.hidden=0===s,this.#a.update(s),this.#o.element.hidden=!1,this.#u.style.display="none";const e=this.#o.firstChild();e&&(e.select(!0),this.setDefaultFocusedElement(e.listItemElement))}else{this.#o.element.hidden=!0,this.#r&&this.setDefaultFocusedElement(this.#r.inputElement);const e=this.#d.numberOfAllStoredIssues()>0;this.#u.textContent=i18nString(e?UIStrings.onlyThirdpartyCookieIssues:UIStrings.noIssuesDetectedSoFar),this.#u.style.display="flex"}}async reveal(e){await this.#I;const s=this.#g.keyForIssue(e),t=this.#i.get(s);if(t){if(t.isForHiddenIssue()&&(this.#a.expand(),this.#a.reveal()),getGroupIssuesByKindSetting().get()&&!t.isForHiddenIssue()){const e=this.#n.get(t.getIssueKind());e?.expand(),e?.reveal()}t.expand(),t.reveal(),t.select(!1,!0)}}wasShown(){super.wasShown(),this.#o.registerCSSFiles([issuesTreeStyles]),this.registerCSSFiles([issuesPaneStyles])}}