UNPKG

@yuebai008/cli

Version:

Command line interface for rapid qg-minigame development

1 lines 3.78 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*as SDK from"../../core/sdk/sdk.js";import*as UI from"../../ui/legacy/legacy.js";import*as Workspace from"../workspace/workspace.js";import{NetworkPersistenceManager}from"./NetworkPersistenceManager.js";import{PersistenceImpl}from"./PersistenceImpl.js";const UIStrings={saveAs:"Save as...",saveImage:"Save image",showOverrides:"Show all overrides",overrideContent:"Override content",openInContainingFolder:"Open in containing folder"},str_=i18n.i18n.registerUIStrings("models/persistence/PersistenceActions.ts",UIStrings),i18nString=i18n.i18n.getLocalizedString.bind(void 0,str_);let contextMenuProviderInstance;export class ContextMenuProvider{static instance(e={forceNew:null}){const{forceNew:t}=e;return contextMenuProviderInstance&&!t||(contextMenuProviderInstance=new ContextMenuProvider),contextMenuProviderInstance}appendApplicableItems(e,t,n){const o=n;o.contentType().isDocumentOrScriptOrStyleSheet()?t.saveSection().appendItem(i18nString(UIStrings.saveAs),(async function(){o instanceof Workspace.UISourceCode.UISourceCode&&o.commitWorkingCopy();const e=await o.requestContent();let t=e.content||"";e.isEncoded&&(t=window.atob(t));const n=o.contentURL();Workspace.FileManager.FileManager.instance().save(n,t,!0),Workspace.FileManager.FileManager.instance().close(n)})):o instanceof SDK.Resource.Resource&&o.contentType().isImage()&&t.saveSection().appendItem(i18nString(UIStrings.saveImage),(async function(){const e=o,t=(await e.requestContent()).content||"",n=document.createElement("a");n.download=e.displayName,n.href="data:"+e.mimeType+";base64,"+t,n.click()}));const r=Workspace.Workspace.WorkspaceImpl.instance().uiSourceCodeForURL(o.contentURL()),s=NetworkPersistenceManager.instance(),i=r&&PersistenceImpl.instance().binding(r),c=i?i.fileSystem.contentURL():o.contentURL();if(c.startsWith("file://")){const e=Common.ParsedURL.ParsedURL.urlToRawPathString(c,Host.Platform.isWin());t.revealSection().appendItem(i18nString(UIStrings.openInContainingFolder),(()=>Host.InspectorFrontendHost.InspectorFrontendHostInstance.showItemInFolder(e)))}o instanceof Workspace.UISourceCode.UISourceCode&&(o.project().type()===Workspace.Workspace.projectTypes.FileSystem||r?.contentType().isFromSourceMap())||(r&&s.isUISourceCodeOverridable(r)?t.overrideSection().appendItem(i18nString(UIStrings.overrideContent),(async()=>{await s.setupAndStartLocalOverrides(r)&&await Common.Revealer.reveal(r),o instanceof SDK.NetworkRequest.NetworkRequest?Host.userMetrics.actionTaken(Host.UserMetrics.Action.OverrideContentFromNetworkContextMenu):o instanceof Workspace.UISourceCode.UISourceCode&&Host.userMetrics.actionTaken(Host.UserMetrics.Action.OverrideContentFromSourcesContextMenu),r.isFetchXHR()?Host.userMetrics.actionTaken(Host.UserMetrics.Action.OverrideFetchXHR):o.contentType().isScript()?Host.userMetrics.actionTaken(Host.UserMetrics.Action.OverrideScript):o.contentType().isDocument()?Host.userMetrics.actionTaken(Host.UserMetrics.Action.OverrideDocument):o.contentType().isStyleSheet()?Host.userMetrics.actionTaken(Host.UserMetrics.Action.OverrideStyleSheet):o.contentType().isImage()?Host.userMetrics.actionTaken(Host.UserMetrics.Action.OverrideImage):o.contentType().isFont()&&Host.userMetrics.actionTaken(Host.UserMetrics.Action.OverrideFont)})):t.overrideSection().appendItem(i18nString(UIStrings.overrideContent),(()=>{}),!0),o instanceof SDK.NetworkRequest.NetworkRequest&&t.overrideSection().appendItem(i18nString(UIStrings.showOverrides),(async()=>{await UI.ViewManager.ViewManager.instance().showView("navigator-overrides"),Host.userMetrics.actionTaken(Host.UserMetrics.Action.ShowAllOverridesFromNetworkContextMenu)})))}}