@yuebai008/cli
Version:
Command line interface for rapid qg-minigame development
1 lines • 3.63 kB
JavaScript
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 SDK from"../../core/sdk/sdk.js";import*as Bindings from"../../models/bindings/bindings.js";import*as UI from"../../ui/legacy/legacy.js";import outermostTargetSelectorStyles from"./outermostTargetSelector.css.js";const UIStrings={targetNotSelected:"Page: Not selected",targetS:"Page: {PH1}"},str_=i18n.i18n.registerUIStrings("entrypoints/inspector_main/OutermostTargetSelector.ts",UIStrings),i18nString=i18n.i18n.getLocalizedString.bind(void 0,str_);let outermostTargetSelectorInstance;export class OutermostTargetSelector{listItems;#t;#e;constructor(){this.listItems=new UI.ListModel.ListModel,this.#t=new UI.SoftDropDown.SoftDropDown(this.listItems,this),this.#t.setRowHeight(36),this.#e=new UI.Toolbar.ToolbarItem(this.#t.element),this.#e.setTitle(i18nString(UIStrings.targetNotSelected)),this.listItems.addEventListener(UI.ListModel.Events.ItemsReplaced,(()=>this.#e.setEnabled(Boolean(this.listItems.length)))),this.#e.element.classList.add("toolbar-has-dropdown");const t=SDK.TargetManager.TargetManager.instance();t.addModelListener(SDK.ChildTargetManager.ChildTargetManager,SDK.ChildTargetManager.Events.TargetInfoChanged,this.#r,this),t.observeTargets(this),UI.Context.Context.instance().addFlavorChangeListener(SDK.Target.Target,this.#o,this)}static instance(t={forceNew:null}){const{forceNew:e}=t;return outermostTargetSelectorInstance&&!e||(outermostTargetSelectorInstance=new OutermostTargetSelector),outermostTargetSelectorInstance}item(){return this.#e}highlightedItemChanged(t,e,r,o){r&&r.classList.remove("highlighted"),o&&o.classList.add("highlighted")}titleFor(t){if(t===SDK.TargetManager.TargetManager.instance().primaryPageTarget())return"Main";const e=t.targetInfo()?.url;if(!e)return"<unknown>";const r=Common.ParsedURL.ParsedURL.fromString(e);return r?r.lastPathComponentWithFragment():"<unknown>"}targetAdded(t){t.outermostTarget()===t&&(this.listItems.insertWithComparator(t,this.#s()),this.#e.setVisible(this.listItems.length>1),t===UI.Context.Context.instance().flavor(SDK.Target.Target)&&this.#t.selectItem(t))}targetRemoved(t){const e=this.listItems.indexOf(t);-1!==e&&(this.listItems.remove(e),this.#e.setVisible(this.listItems.length>1))}#s(){return(t,e)=>{const r=t.targetInfo(),o=e.targetInfo();return r&&o?!r.subtype?.length&&o.subtype?.length?-1:r.subtype?.length&&!o.subtype?.length?1:r.url.localeCompare(o.url):0}}#r(t){const e=SDK.TargetManager.TargetManager.instance().targetById(t.data.targetId);e&&e.outermostTarget()===e&&(this.targetRemoved(e),this.targetAdded(e))}#o({data:t}){this.#t.selectItem(t?.outermostTarget()||null)}createElementForItem(t){const e=document.createElement("div");e.classList.add("target");const r=UI.Utils.createShadowRootWithCoreStyles(e,{cssFile:[outermostTargetSelectorStyles],delegatesFocus:void 0}),o=r.createChild("div","title");UI.UIUtils.createTextChild(o,Platform.StringUtilities.trimEndWithMaxLength(this.titleFor(t),100));const s=r.createChild("div","subtitle");return UI.UIUtils.createTextChild(s,this.#a(t)),e}#a(t){const e=t.targetInfo();if(!e)return"";const r=[],o=Bindings.ResourceUtils.displayNameForURL(e.url);return o&&r.push(o),e.subtype&&r.push(e.subtype),r.join(" ")}isItemSelectable(t){return!0}itemSelected(t){const e=t?i18nString(UIStrings.targetS,{PH1:this.titleFor(t)}):i18nString(UIStrings.targetNotSelected);this.#e.setTitle(e),t&&t!==UI.Context.Context.instance().flavor(SDK.Target.Target)?.outermostTarget()&&UI.Context.Context.instance().setFlavor(SDK.Target.Target,t)}}