/*--------------------------------------------------------------------------------------------- * 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 '../../../base/common/event.js'; import { URI, UriComponents } from '../../../base/common/uri.js'; import * as extHostProtocol from './extHost.protocol.js'; import { ExtHostNotebookController } from './extHostNotebook.js'; import { NotebookDocumentMetadata } from '../../contrib/notebook/common/notebookCommon.js'; import { SerializableObjectWithBuffers } from '../../services/extensions/common/proxyIdentifier.js'; import type * as vscode from 'vscode'; export class ExtHostNotebookDocuments implements extHostProtocol.ExtHostNotebookDocumentsShape { private readonly _onDidSaveNotebookDocument = new Emitter(); readonly onDidSaveNotebookDocument = this._onDidSaveNotebookDocument.event; private readonly _onDidChangeNotebookDocument = new Emitter(); readonly onDidChangeNotebookDocument = this._onDidChangeNotebookDocument.event; constructor( private readonly _notebooksAndEditors: ExtHostNotebookController, ) { } $acceptModelChanged(uri: UriComponents, event: SerializableObjectWithBuffers, isDirty: boolean, newMetadata?: NotebookDocumentMetadata): void { const document = this._notebooksAndEditors.getNotebookDocument(URI.revive(uri)); const e = document.acceptModelChanged(event.value, isDirty, newMetadata); this._onDidChangeNotebookDocument.fire(e); } $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); } }