/*--------------------------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ import { createDecorator } from 'vs/platform/instantiation/common/instantiation'; import { URI } from 'vs/base/common/uri'; import { NotebookProviderInfo } from 'vs/workbench/contrib/notebook/common/notebookProvider'; import { Event } from 'vs/base/common/event'; import { INotebookRendererInfo, NotebookData, TransientOptions, IOrderedMimeType, IOutputDto, INotebookContributionData, NotebookExtensionDescription } from 'vs/workbench/contrib/notebook/common/notebookCommon'; import { NotebookTextModel } from 'vs/workbench/contrib/notebook/common/model/notebookTextModel'; import { CancellationToken } from 'vs/base/common/cancellation'; import { NotebookCellTextModel } from 'vs/workbench/contrib/notebook/common/model/notebookCellTextModel'; import { IDisposable } from 'vs/base/common/lifecycle'; import { VSBuffer } from 'vs/base/common/buffer'; import { ConfigurationTarget } from 'vs/platform/configuration/common/configuration'; export const INotebookService = createDecorator('notebookService'); export interface INotebookContentProvider { options: TransientOptions; open(uri: URI, backupId: string | VSBuffer | undefined, untitledDocumentData: VSBuffer | undefined, token: CancellationToken): Promise<{ data: NotebookData; transientOptions: TransientOptions }>; save(uri: URI, token: CancellationToken): Promise; saveAs(uri: URI, target: URI, token: CancellationToken): Promise; backup(uri: URI, token: CancellationToken): Promise; } export interface INotebookSerializer { options: TransientOptions; dataToNotebook(data: VSBuffer): Promise; notebookToData(data: NotebookData): Promise; } export interface INotebookRawData { data: NotebookData; transientOptions: TransientOptions; } export class ComplexNotebookProviderInfo { constructor( readonly viewType: string, readonly controller: INotebookContentProvider, readonly extensionData: NotebookExtensionDescription ) { } } export class SimpleNotebookProviderInfo { constructor( readonly viewType: string, readonly serializer: INotebookSerializer, readonly extensionData: NotebookExtensionDescription ) { } } export interface INotebookService { readonly _serviceBrand: undefined; canResolve(viewType: string): Promise; readonly onWillRemoveViewType: Event; readonly onWillAddNotebookDocument: Event; readonly onDidAddNotebookDocument: Event; readonly onWillRemoveNotebookDocument: Event; readonly onDidRemoveNotebookDocument: Event; registerNotebookController(viewType: string, extensionData: NotebookExtensionDescription, controller: INotebookContentProvider): IDisposable; registerNotebookSerializer(viewType: string, extensionData: NotebookExtensionDescription, serializer: INotebookSerializer): IDisposable; withNotebookDataProvider(viewType: string): Promise; getOutputMimeTypeInfo(textModel: NotebookTextModel, kernelProvides: readonly string[] | undefined, output: IOutputDto): readonly IOrderedMimeType[]; getRendererInfo(id: string): INotebookRendererInfo | undefined; getRenderers(): INotebookRendererInfo[]; /** Updates the preferred renderer for the given mimetype in the workspace. */ updateMimePreferredRenderer(viewType: string, mimeType: string, rendererId: string, otherMimetypes: readonly string[]): void; saveMimeDisplayOrder(target: ConfigurationTarget): void; createNotebookTextModel(viewType: string, uri: URI, data: NotebookData, transientOptions: TransientOptions): NotebookTextModel; getNotebookTextModel(uri: URI): NotebookTextModel | undefined; getNotebookTextModels(): Iterable; listNotebookDocuments(): readonly NotebookTextModel[]; registerContributedNotebookType(viewType: string, data: INotebookContributionData): IDisposable; getContributedNotebookType(viewType: string): NotebookProviderInfo | undefined; getContributedNotebookTypes(resource?: URI): readonly NotebookProviderInfo[]; getNotebookProviderResourceRoots(): URI[]; setToCopy(items: NotebookCellTextModel[], isCopy: boolean): void; getToCopy(): { items: NotebookCellTextModel[]; isCopy: boolean } | undefined; clearEditorCache(): void; }