UNPKG

@yuebai008/cli

Version:

Command line interface for rapid qg-minigame development

1 lines 5.09 kB
import*as Common from"../../core/common/common.js";import*as Host from"../../core/host/host.js";import*as i18n from"../../core/i18n/i18n.js";import binaryResourceViewStyles from"./binaryResourceView.css.js";import*as SourceFrame from"../../ui/legacy/components/source_frame/source_frame.js";import*as UI from"../../ui/legacy/legacy.js";const UIStrings={copiedAsBase:"Copied as `Base64`",hexViewer:"`Hex` Viewer",copiedAsHex:"Copied as `Hex`",copiedAsUtf:"Copied as `UTF-8`",binaryViewType:"Binary view type",copyToClipboard:"Copy to clipboard",copyAsBase:"Copy as `Base64`",copyAsHex:"Copy as `Hex`",copyAsUtf:"Copy as `UTF-8`"},str_=i18n.i18n.registerUIStrings("panels/network/BinaryResourceView.ts",UIStrings),i18nString=i18n.i18n.getLocalizedString.bind(void 0,str_);export class BinaryResourceView extends UI.Widget.VBox{binaryResourceViewFactory;toolbar;binaryViewObjects;binaryViewTypeSetting;binaryViewTypeCombobox;copiedText;addFadeoutSettimeoutId;lastView;constructor(e,t,i){super(),this.binaryResourceViewFactory=new SourceFrame.BinaryResourceViewFactory.BinaryResourceViewFactory(e,t,i),this.toolbar=new UI.Toolbar.Toolbar("binary-view-toolbar",this.element),this.binaryViewObjects=[new BinaryViewObject("base64",i18n.i18n.lockedString("Base64"),i18nString(UIStrings.copiedAsBase),this.binaryResourceViewFactory.createBase64View.bind(this.binaryResourceViewFactory),this.binaryResourceViewFactory.base64.bind(this.binaryResourceViewFactory)),new BinaryViewObject("hex",i18nString(UIStrings.hexViewer),i18nString(UIStrings.copiedAsHex),this.binaryResourceViewFactory.createHexView.bind(this.binaryResourceViewFactory),this.binaryResourceViewFactory.hex.bind(this.binaryResourceViewFactory)),new BinaryViewObject("utf8",i18n.i18n.lockedString("UTF-8"),i18nString(UIStrings.copiedAsUtf),this.binaryResourceViewFactory.createUtf8View.bind(this.binaryResourceViewFactory),this.binaryResourceViewFactory.utf8.bind(this.binaryResourceViewFactory))],this.binaryViewTypeSetting=Common.Settings.Settings.instance().createSetting("binaryViewType","hex"),this.binaryViewTypeCombobox=new UI.Toolbar.ToolbarComboBox(this.binaryViewTypeChanged.bind(this),i18nString(UIStrings.binaryViewType));for(const e of this.binaryViewObjects)this.binaryViewTypeCombobox.addOption(this.binaryViewTypeCombobox.createOption(e.label,e.type));this.toolbar.appendToolbarItem(this.binaryViewTypeCombobox);const o=new UI.Toolbar.ToolbarButton(i18nString(UIStrings.copyToClipboard),"copy");o.addEventListener(UI.Toolbar.ToolbarButton.Events.Click,(e=>{this.copySelectedViewToClipboard()}),this),this.toolbar.appendToolbarItem(o),this.copiedText=new UI.Toolbar.ToolbarText,this.copiedText.element.classList.add("binary-view-copied-text"),this.toolbar.element.appendChild(this.copiedText.element),this.addFadeoutSettimeoutId=null,this.lastView=null,this.updateView()}getCurrentViewObject(){const e=this.binaryViewObjects.find((e=>e.type===this.binaryViewTypeSetting.get()));return console.assert(Boolean(e),`No binary view found for binary view type found in setting 'binaryViewType': ${this.binaryViewTypeSetting.get()}`),e||null}async copySelectedViewToClipboard(){const e=this.getCurrentViewObject();e&&(Host.InspectorFrontendHost.InspectorFrontendHostInstance.copyText((await e.content()).content),this.copiedText.setText(e.copiedMessage),this.copiedText.element.classList.remove("fadeout"),this.addFadeoutSettimeoutId&&(clearTimeout(this.addFadeoutSettimeoutId),this.addFadeoutSettimeoutId=null),this.addFadeoutSettimeoutId=window.setTimeout(function(){this.copiedText.element.classList.add("fadeout")}.bind(this),2e3))}wasShown(){this.updateView(),this.registerCSSFiles([binaryResourceViewStyles])}updateView(){const e=this.getCurrentViewObject();if(!e)return;const t=e.getView();t!==this.lastView&&(this.lastView&&this.lastView.detach(),this.lastView=t,t.show(this.element,this.toolbar.element),this.binaryViewTypeCombobox.selectElement().value=this.binaryViewTypeSetting.get())}binaryViewTypeChanged(){const e=this.binaryViewTypeCombobox.selectedOption();if(!e)return;const t=e.value;this.binaryViewTypeSetting.get()!==t&&(this.binaryViewTypeSetting.set(t),this.updateView())}addCopyToContextMenu(e,t){const i=e.clipboardSection().appendSubMenuItem(t).footerSection();i.appendItem(i18nString(UIStrings.copyAsBase),(async()=>{const e=await this.binaryResourceViewFactory.base64();Host.InspectorFrontendHost.InspectorFrontendHostInstance.copyText(e.content)})),i.appendItem(i18nString(UIStrings.copyAsHex),(async()=>{const e=await this.binaryResourceViewFactory.hex();Host.InspectorFrontendHost.InspectorFrontendHostInstance.copyText(e.content)})),i.appendItem(i18nString(UIStrings.copyAsUtf),(async()=>{const e=await this.binaryResourceViewFactory.utf8();Host.InspectorFrontendHost.InspectorFrontendHostInstance.copyText(e.content)}))}}export class BinaryViewObject{type;label;copiedMessage;content;createViewFn;view;constructor(e,t,i,o,n){this.type=e,this.label=t,this.copiedMessage=i,this.content=n,this.createViewFn=o,this.view=null}getView(){return this.view||(this.view=this.createViewFn()),this.view}}