import { AppConfig, IContextKeyService, IOpenerService, IScopedContextKeyService, PreferenceService } from '@opensumi/ide-core-browser'; import { IMergeEditorEditor } from '@opensumi/ide-core-browser/lib/monaco/merge-editor-widget'; import { Deferred, Emitter, Event, IDisposable, ILogger, IStorage, MaybeNull, StorageProvider, URI, WithEventBus } from '@opensumi/ide-core-common'; import { IFileServiceClient } from '@opensumi/ide-file-service'; import { IDialogService } from '@opensumi/ide-overlay'; import { CursorStatus, EditorCollectionService, EditorGroupSplitAction, ICodeEditor, IDiffEditor, IEditor, IEditorGroup, IEditorGroupState, IEditorOpenType, IOpenResourceResult, IResource, IResourceOpenOptions, IUntitledOptions, ResourceDecorationChangeEvent, ResourceService, SaveReason, WorkbenchEditorService } from '../common'; import { IEditorDocumentModelRef } from '../common/editor'; import { IMultiDiffEditor } from '../common/multi-diff'; import { IEditorDocumentModelService } from './doc-model/types'; import { EditorGrid, IGridEditorGroup } from './grid/grid.service'; import { DragOverPosition, EditorComponentRegistry, EditorGroupChangeEvent, EditorGroupCloseEvent, IEditorComponent, IEditorDocumentModel, ResourceOpenTypeChangedEvent } from './types'; export declare class WorkbenchEditorServiceImpl extends WithEventBus implements WorkbenchEditorService { editorGroups: EditorGroup[]; _onDidEditorGroupsChanged: Emitter; onDidEditorGroupsChanged: Event; private _sortedEditorGroups; private injector; private resourceService; protected readonly fileServiceClient: IFileServiceClient; private appConfig; private readonly _onActiveResourceChange; readonly onActiveResourceChange: Event>; private readonly _onActiveEditorUriChange; readonly onActiveEditorUriChange: Event>; private readonly _onCursorChange; readonly onCursorChange: Event; topGrid: EditorGrid; private _currentEditorGroup; private _onDidCurrentEditorGroupChanged; onDidCurrentEditorGroupChanged: Event; getStorage: StorageProvider; protected dialogService: IDialogService; openedResourceState: IStorage; private _restoring; contributionsReady: Deferred; private initializing; editorContextKeyService: IScopedContextKeyService; openner: IOpenerService; private readonly contributions; protected documentModelManager: IEditorDocumentModelService; private untitledIndex; private readonly windowDialogService; private untitledCloseIndex; gridReady: boolean; private _onDidGridReady; onDidGridReady: Event; constructor(); setEditorContextKeyService(contextKeyService: IScopedContextKeyService): void; setCurrentGroup(editorGroup: EditorGroup): void; onEditorGroupChangeEvent(e: EditorGroupChangeEvent): void; getAllOpenedUris(): URI[]; getAllOpenedDocuments(): Promise; save(uri: URI): Promise; private getDefaultSavePath; saveAs(uri: URI): Promise; saveAll(includeUntitled?: boolean, reason?: SaveReason): Promise; hasDirty(): boolean; calcDirtyCount(): number; private editorGroupIdGen; createEditorGroup(): EditorGroup; /** * 随机生成一个不重复的editor Group */ private generateRandomEditorGroupName; initialize(): Promise; private doInitialize; private initializeState; get currentEditor(): IEditor | null; get currentCodeEditor(): ICodeEditor | null; get currentEditorGroup(): EditorGroup; get currentOrPreviousFocusedEditor(): IEditor | null; open(uri: URI, options?: IResourceOpenOptions): Promise; openUris(uris: URI[]): Promise; getEditorGroup(name: string): EditorGroup | undefined; get currentResource(): MaybeNull; removeGroup(group: EditorGroup): void; saveOpenedResourceState(): Promise; prepareContextKeyService(): void; onDomCreated(domNode: HTMLElement): void; private notifyGroupChanged; restoreState(): Promise; closeAll(uri?: URI, force?: boolean): Promise; /** * Return true in order to prevent exit. */ closeAllOnlyConfirmOnce(): Promise; close(uri: URI, force?: boolean): Promise; get sortedEditorGroups(): EditorGroup[]; handleOnCloseUntitledResource(e: EditorGroupCloseEvent): void; private createUntitledURI; createUntitledResource(options?: IUntitledOptions): Promise; } export interface IEditorCurrentState { currentResource: IResource; currentOpenType: IEditorOpenType; } /** * Editor Group是一个可视的编辑区域 * 它由tab,editor,diff-editor,富组件container组成 */ export declare class EditorGroup extends WithEventBus implements IGridEditorGroup { readonly name: string; readonly groupId: number; collectionService: EditorCollectionService; resourceService: ResourceService; editorComponentRegistry: EditorComponentRegistry; workbenchEditorService: WorkbenchEditorServiceImpl; protected documentModelManager: IEditorDocumentModelService; private commands; protected readonly preferenceService: PreferenceService; private readonly recentFilesManager; private messageService; private reporterService; config: AppConfig; private readonly openerService; logger: ILogger; codeEditor: ICodeEditor; diffEditor: IDiffEditor; multiDiffEditor: IMultiDiffEditor; mergeEditor: IMergeEditorEditor; private openingPromise; _onDidEditorFocusChange: Emitter; onDidEditorFocusChange: Event; /** * 当编辑器的tab部分发生变更 */ _onDidEditorGroupTabChanged: Emitter; onDidEditorGroupTabChanged: Event; /** * 当编辑器的tab部分发生变更 */ _onDidEditorGroupTabOperation: Emitter; onDidEditorGroupTabOperation: Event; /** * 当编辑器的主体部分发生变更 */ _onDidEditorGroupBodyChanged: Emitter; onDidEditorGroupBodyChanged: Event; /** * 当编辑器有内容处于加载状态 */ _onDidEditorGroupContentLoading: Emitter>; onDidEditorGroupContentLoading: Event; /** * 每个group只能有一个preview */ previewURI: URI | null; /** * 当前打开的所有resource */ resources: IResource[]; resourceStatus: Map>; _currentResource: IResource | null; _currentOpenType: IEditorOpenType | null; /** * 当前resource的打开方式 */ private cachedResourcesActiveOpenTypes; private cachedResourcesOpenTypes; availableOpenTypes: IEditorOpenType[]; activeComponents: Map, IResource[]>; activateComponentsProps: Map, any>; grid: EditorGrid; private holdDocumentModelRefs; private readonly toDispose; private _contextKeyService; private _resourceContext; private _editorLangIDContextKey; private _activeEditorIsDirtyContextKey; private _isInDiffEditorContextKey; private _isInMultiDiffEditorContextKey; private _diffResourceContextKey; private _isInDiffRightEditorContextKey; private _isInEditorComponentContextKey; private _prevDomHeight; private _prevDomWidth; private _onCurrentEditorCursorChange; onCurrentEditorCursorChange: Event; private resourceOpenHistory; private _domNode; private _diffEditorDomNode; private _diffEditorDomNodeAttached; private _multiFileDiffEditorDomNode; private _multiFileDiffEditorDomNodeAttached; private _mergeEditorDomNode; private _mergeEditorDomNodeAttached; private codeEditorReady; private diffEditorReady; private diffEditorDomReady; private multiDiffEditorDomReady; private mergeEditorReady; private mergeEditorDomReady; private _restoringState; private updateContextKeyWhenEditorChangesFocusDisposer; private _currentOrPreviousFocusedEditor; private _multiDiffEditorDomNode; private _multiDiffEditorDomNodeAttached; constructor(name: string, groupId: number); private explorerAutoRevealConfig; private listenToExplorerAutoRevealConfig; attachDiffEditorDom(domNode: HTMLElement | null | undefined): void; attachMergeEditorDom(domNode: HTMLElement | null | undefined): void; attachToDom(domNode: HTMLElement | null | undefined): void; layoutEditors(): void; private _layoutEditorWorker; protected _measure: IDisposable | undefined; doLayoutEditors(): void; setContextKeys(): void; private updateContextKeyWhenDiffEditorChangesFocus; get contextKeyService(): IContextKeyService; get index(): number; onResourceDecorationChangeEvent(e: ResourceDecorationChangeEvent): void; resetOpenType(): void; oResourceOpenTypeChangedEvent(e: ResourceOpenTypeChangedEvent): void; onRegisterEditorComponentEvent(): Promise; pinPreviewed(uri?: URI): void; private notifyTabChanged; private notifyBodyChanged; private notifyTabLoading; get currentEditor(): IEditor | null; get currentOrPreviousFocusedEditor(): IEditor | null; get currentFocusedEditor(): IEditor | null; get currentCodeEditor(): ICodeEditor | null; createEditor(dom: HTMLElement): void; createMergeEditor(dom: HTMLElement): void; createDiffEditor(dom: HTMLElement): void; private addDiffEditorEventListeners; split(action: EditorGroupSplitAction, uri: URI, options?: IResourceOpenOptions): Promise; open(uri: URI, options?: IResourceOpenOptions): Promise; pin(uri: URI): Promise; protected getPreventScrollOption(options?: IResourceOpenOptions): boolean | undefined; doOpen(uri: URI, options?: IResourceOpenOptions): Promise<{ group: IEditorGroup; resource: IResource; } | false>; private locationInTree; private locateInFileTree; private locateInOpenedEditor; openUris(uris: URI[]): Promise; getDocumentModelRef(uri: URI): Promise; disposeDocumentRef(uri: URI): void; protected doDisposeDocRef(uri: URI): void; private openCodeEditor; private openDiffEditor; private openMergeEditor; private openCustomEditor; private displayResourceComponent; private resolveTabChanged; getLastOpenType(resource: IResource): IEditorOpenType | undefined; private resolveOpenType; close(uri: URI, { treatAsNotCurrent, force, }?: { treatAsNotCurrent?: boolean; force?: boolean; }): Promise; private removeResouceFromActiveComponents; private shouldClose; private backToEmpty; /** * 关闭全部 */ closeAll(): Promise; /** * 关闭已保存(非dirty) */ closeSaved(): Promise; /** * 关闭向右的tab * @param uri */ closeToRight(uri: URI): Promise; clearResourceOnClose(resource: IResource): void; closeOthers(uri: URI): Promise; /** * current opened resource */ get currentResource(): MaybeNull; get currentOpenType(): MaybeNull; changeOpenType(id: string): Promise; /** * 拖拽drop方法 */ dropUri(uri: URI, position: DragOverPosition, sourceGroup?: EditorGroup, targetResource?: IResource): Promise; gainFocus(): void; focus(): void; dispose(): void; getState(): IEditorGroupState; isCodeEditorMode(): boolean; isDiffEditorMode(): boolean; isMultiDiffEditorMode(): boolean; activeEditorIsDirty(): boolean; isComponentMode(): boolean; restoreState(state: IEditorGroupState): Promise; saveAll(includeUntitled?: boolean, reason?: SaveReason): Promise; saveResource(resource: IResource, reason?: SaveReason): Promise; saveByOpenType(resource: IResource, reason: SaveReason): Promise; saveCurrent(reason?: SaveReason): Promise; hasDirty(): boolean; /** * 计算 dirty 数量 */ calcDirtyCount(countedUris?: Set): number; componentUndo(): void; componentRedo(): void; /** * 防止作为参数被抛入插件进程时出错 */ toJSON(): { name: string; }; attachMultiDiffEditorDom(domNode: HTMLElement | null | undefined): void; createMultiDiffEditor(dom: HTMLElement): void; private openMultiDiffEditor; } export interface IResourceTabOperation { type: 'open' | 'close' | 'move'; resource: IResource; oldIndex?: number; index: number; } //# sourceMappingURL=workbench-editor.service.d.ts.map