/*--------------------------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ import { Emitter } from 'vs/base/common/event'; import { URI, UriComponents } from 'vs/base/common/uri'; import { ILogService } from 'vs/platform/log/common/log'; import * as extHostProtocol from 'vs/workbench/api/common/extHost.protocol'; import { ExtHostNotebookController } from 'vs/workbench/api/common/extHostNotebook'; import { SerializableObjectWithBuffers } from 'vs/workbench/services/extensions/common/proxyIdentifier'; import type * as vscode from 'vscode'; export class ExtHostNotebookDocuments implements extHostProtocol.ExtHostNotebookDocumentsShape { private readonly _onDidChangeNotebookDocumentMetadata = new Emitter(); readonly onDidChangeNotebookDocumentMetadata = this._onDidChangeNotebookDocumentMetadata.event; private _onDidSaveNotebookDocument = new Emitter(); readonly onDidSaveNotebookDocument = this._onDidSaveNotebookDocument.event; constructor( @ILogService private readonly _logService: ILogService, private readonly _notebooksAndEditors: ExtHostNotebookController, ) { } $acceptModelChanged(uri: UriComponents, event: SerializableObjectWithBuffers, isDirty: boolean): void { const document = this._notebooksAndEditors.getNotebookDocument(URI.revive(uri)); document.acceptModelChanged(event.value, isDirty); } $acceptDirtyStateChanged(uri: UriComponents, isDirty: boolean): void { const document = this._notebooksAndEditors.getNotebookDocument(URI.revive(uri)); document.acceptDirty(isDirty); } $acceptModelSaved(uri: UriComponents): void { const document = this._notebooksAndEditors.getNotebookDocument(URI.revive(uri)); this._onDidSaveNotebookDocument.fire(document.apiNotebook); } $acceptDocumentPropertiesChanged(uri: UriComponents, data: extHostProtocol.INotebookDocumentPropertiesChangeData): void { this._logService.debug('ExtHostNotebook#$acceptDocumentPropertiesChanged', uri.path, data); const document = this._notebooksAndEditors.getNotebookDocument(URI.revive(uri)); document.acceptDocumentPropertiesChanged(data); if (data.metadata) { this._onDidChangeNotebookDocumentMetadata.fire({ document: document.apiNotebook }); } } }