UNPKG

@yuebai008/cli

Version:

Command line interface for rapid qg-minigame development

1 lines 5.38 kB
import*as Common from"../../core/common/common.js";import*as i18n from"../../core/i18n/i18n.js";import*as UI from"../../ui/legacy/legacy.js";import{IsolateSelector}from"./IsolateSelector.js";import profileLauncherViewStyles from"./profileLauncherView.css.js";const UIStrings={selectJavascriptVmInstance:"Select JavaScript VM instance",load:"Load",takeSnapshot:"Take snapshot",stop:"Stop",start:"Start",selectProfilingType:"Select profiling type"},str_=i18n.i18n.registerUIStrings("panels/profiler/ProfileLauncherView.ts",UIStrings),i18nString=i18n.i18n.getLocalizedString.bind(void 0,str_);export class ProfileLauncherView extends(Common.ObjectWrapper.eventMixin(UI.Widget.VBox)){panel;contentElementInternal;selectedProfileTypeSetting;profileTypeHeaderElement;profileTypeSelectorForm;controlButton;loadButton;recordButtonEnabled;typeIdToOptionElementAndProfileType;isProfiling;isInstantProfile;isEnabled;constructor(t){super(),this.panel=t,this.element.classList.add("profile-launcher-view"),this.contentElementInternal=this.element.createChild("div","profile-launcher-view-content vbox");const e=this.contentElementInternal.createChild("div","vbox");this.selectedProfileTypeSetting=Common.Settings.Settings.instance().createSetting("selectedProfileType","CPU"),this.profileTypeHeaderElement=e.createChild("h1"),this.profileTypeSelectorForm=e.createChild("form"),UI.ARIAUtils.markAsRadioGroup(this.profileTypeSelectorForm);const i=this.contentElementInternal.createChild("div","vbox profile-isolate-selector-block");i.createChild("h1").textContent=i18nString(UIStrings.selectJavascriptVmInstance);const o=new IsolateSelector,n=i.createChild("div","vbox profile-launcher-target-list");n.classList.add("profile-launcher-target-list-container"),o.show(n),i.appendChild(o.totalMemoryElement());const s=this.contentElementInternal.createChild("div","hbox profile-launcher-buttons");this.controlButton=UI.UIUtils.createTextButton("",this.controlButtonClicked.bind(this),"",!0),this.loadButton=UI.UIUtils.createTextButton(i18nString(UIStrings.load),this.loadButtonClicked.bind(this),""),s.appendChild(this.controlButton),s.appendChild(this.loadButton),this.recordButtonEnabled=!0,this.typeIdToOptionElementAndProfileType=new Map}loadButtonClicked(){this.panel.showLoadFromFileDialog()}updateControls(){this.isEnabled&&this.recordButtonEnabled?this.controlButton.removeAttribute("disabled"):this.controlButton.setAttribute("disabled",""),UI.Tooltip.Tooltip.install(this.controlButton,this.recordButtonEnabled?"":UI.UIUtils.anotherProfilerActiveLabel()),this.isInstantProfile?(this.controlButton.classList.remove("running"),this.controlButton.classList.add("primary-button"),this.controlButton.textContent=i18nString(UIStrings.takeSnapshot)):this.isProfiling?(this.controlButton.classList.add("running"),this.controlButton.classList.remove("primary-button"),this.controlButton.textContent=i18nString(UIStrings.stop)):(this.controlButton.classList.remove("running"),this.controlButton.classList.add("primary-button"),this.controlButton.textContent=i18nString(UIStrings.start));for(const{optionElement:t}of this.typeIdToOptionElementAndProfileType.values())t.disabled=Boolean(this.isProfiling)}profileStarted(){this.isProfiling=!0,this.updateControls()}profileFinished(){this.isProfiling=!1,this.updateControls()}updateProfileType(t,e){this.isInstantProfile=t.isInstantProfile(),this.recordButtonEnabled=e,this.isEnabled=t.isEnabled(),this.updateControls()}addProfileType(t){const e=UI.UIUtils.createRadioLabel("profile-type",t.name);this.profileTypeSelectorForm.appendChild(e);const i=e.radioElement;this.typeIdToOptionElementAndProfileType.set(t.id,{optionElement:i,profileType:t}),i.addEventListener("change",this.profileTypeChanged.bind(this,t),!1);this.profileTypeSelectorForm.createChild("p").textContent=t.description,UI.ARIAUtils.setDescription(i,t.description);const o=t.customContent();o&&(o.setAttribute("role","group"),o.setAttribute("aria-labelledby",`${i.id}`),this.profileTypeSelectorForm.createChild("p").appendChild(o),t.setCustomContentEnabled(!1));const n=this.typeIdToOptionElementAndProfileType.size>1?i18nString(UIStrings.selectProfilingType):t.name;this.profileTypeHeaderElement.textContent=n,UI.ARIAUtils.setLabel(this.profileTypeSelectorForm,n)}restoreSelectedProfileType(){let t=this.selectedProfileTypeSetting.get();this.typeIdToOptionElementAndProfileType.has(t)||(t=this.typeIdToOptionElementAndProfileType.keys().next().value,this.selectedProfileTypeSetting.set(t));const e=this.typeIdToOptionElementAndProfileType.get(t);e.optionElement.checked=!0;const i=e.profileType;for(const[e,{profileType:i}]of this.typeIdToOptionElementAndProfileType){const o=e===t;i.setCustomContentEnabled(o)}this.dispatchEventToListeners(Events.ProfileTypeSelected,i)}controlButtonClicked(){this.panel.toggleRecord()}profileTypeChanged(t){const e=this.selectedProfileTypeSetting.get();this.typeIdToOptionElementAndProfileType.get(e).profileType.setCustomContentEnabled(!1),t.setCustomContentEnabled(!0),this.dispatchEventToListeners(Events.ProfileTypeSelected,t),this.isInstantProfile=t.isInstantProfile(),this.isEnabled=t.isEnabled(),this.updateControls(),this.selectedProfileTypeSetting.set(t.id)}wasShown(){super.wasShown(),this.registerCSSFiles([profileLauncherViewStyles])}}export var Events;!function(t){t.ProfileTypeSelected="ProfileTypeSelected"}(Events||(Events={}));