diff --git a/src/vs/workbench/api/common/extHostNotebook.ts b/src/vs/workbench/api/common/extHostNotebook.ts index 2e76b5fe7c9..347418f4927 100644 --- a/src/vs/workbench/api/common/extHostNotebook.ts +++ b/src/vs/workbench/api/common/extHostNotebook.ts @@ -729,7 +729,7 @@ export class ExtHostNotebookController implements ExtHostNotebookShape, ExtHostN emitDocumentMetadataChange(event: vscode.NotebookDocumentMetadataChangeEvent): void { that._onDidChangeNotebookDocumentMetadata.fire(event); } - }, viewType, modelData.contentOptions, { ...notebookDocumentMetadataDefaults, ...modelData.metadata }, uri, storageRoot); + }, viewType, modelData.contentOptions, new extHostTypes.NotebookDocumentMetadata().with(modelData.metadata ?? {}), uri, storageRoot); document.acceptModelChanged({ versionId: modelData.versionId, diff --git a/src/vs/workbench/api/common/extHostNotebookDocument.ts b/src/vs/workbench/api/common/extHostNotebookDocument.ts index 0fe42bd9de4..b8a9bc12073 100644 --- a/src/vs/workbench/api/common/extHostNotebookDocument.ts +++ b/src/vs/workbench/api/common/extHostNotebookDocument.ts @@ -12,7 +12,8 @@ import { URI } from 'vs/base/common/uri'; import { CellKind, INotebookDocumentPropertiesChangeData } from 'vs/workbench/api/common/extHost.protocol'; import { ExtHostDocumentsAndEditors, IExtHostModelAddedData } from 'vs/workbench/api/common/extHostDocumentsAndEditors'; import * as extHostTypeConverters from 'vs/workbench/api/common/extHostTypeConverters'; -import { IMainCellDto, IOutputDto, NotebookCellMetadata, NotebookCellsChangedEventDto, NotebookCellsChangeType, NotebookCellsSplice2, notebookDocumentMetadataDefaults } from 'vs/workbench/contrib/notebook/common/notebookCommon'; +import * as extHostTypes from 'vs/workbench/api/common/extHostTypes'; +import { IMainCellDto, IOutputDto, NotebookCellMetadata, NotebookCellsChangedEventDto, NotebookCellsChangeType, NotebookCellsSplice2 } from 'vs/workbench/contrib/notebook/common/notebookCommon'; import * as vscode from 'vscode'; class RawContentChangeEvent { @@ -47,7 +48,7 @@ export class ExtHostCell { readonly onDidDispose: Event = this._onDidDispose.event; private _outputs: IOutputDto[]; - private _metadata: vscode.NotebookCellMetadata; + private _metadata: extHostTypes.NotebookCellMetadata; readonly handle: number; readonly uri: URI; @@ -64,7 +65,7 @@ export class ExtHostCell { this.uri = URI.revive(_cellData.uri); this.cellKind = _cellData.cellKind; this._outputs = _cellData.outputs; - this._metadata = _cellData.metadata ?? {}; + this._metadata = new extHostTypes.NotebookCellMetadata().with(_cellData.metadata ?? {}); } dispose() { @@ -99,8 +100,8 @@ export class ExtHostCell { this._outputs = newOutputs; } - setMetadata(newMetadata: vscode.NotebookCellMetadata): void { - this._metadata = newMetadata; + setMetadata(newMetadata: NotebookCellMetadata): void { + this._metadata = this._metadata.with(newMetadata); } } @@ -138,7 +139,7 @@ export class ExtHostNotebookDocument extends Disposable { private readonly _emitter: INotebookEventEmitter, private readonly _viewType: string, private readonly _contentOptions: vscode.NotebookDocumentContentOptions, - private _metadata: Required, + private _metadata: extHostTypes.NotebookDocumentMetadata, public readonly uri: URI, private readonly _storagePath: URI | undefined ) { @@ -190,11 +191,9 @@ export class ExtHostNotebookDocument extends Disposable { } acceptDocumentPropertiesChanged(data: INotebookDocumentPropertiesChangeData) { - const newMetadata = { - ...notebookDocumentMetadataDefaults, - ...data.metadata - }; - this._metadata = newMetadata; + if (data.metadata) { + this._metadata = this._metadata.with(data.metadata); + } this._emitter.emitDocumentMetadataChange({ document: this.notebookDocument }); }