make NotebookCellData and NotebookData classes, rename NotebookCellData#cellKind to NotebookCellData#kind
This commit is contained in:
parent
86df444212
commit
6117524374
|
@ -11,10 +11,10 @@ suite('Notebook Document', function () {
|
||||||
|
|
||||||
const contentProvider = new class implements vscode.NotebookContentProvider {
|
const contentProvider = new class implements vscode.NotebookContentProvider {
|
||||||
async openNotebook(uri: vscode.Uri, _openContext: vscode.NotebookDocumentOpenContext): Promise<vscode.NotebookData> {
|
async openNotebook(uri: vscode.Uri, _openContext: vscode.NotebookDocumentOpenContext): Promise<vscode.NotebookData> {
|
||||||
return {
|
return new vscode.NotebookData(
|
||||||
cells: [{ cellKind: vscode.NotebookCellKind.Code, source: uri.toString(), language: 'javascript', metadata: new vscode.NotebookCellMetadata(), outputs: [] }],
|
[new vscode.NotebookCellData(vscode.NotebookCellKind.Code, uri.toString(), 'javascript')],
|
||||||
metadata: new vscode.NotebookDocumentMetadata()
|
new vscode.NotebookDocumentMetadata()
|
||||||
};
|
);
|
||||||
}
|
}
|
||||||
async resolveNotebook(_document: vscode.NotebookDocument, _webview: vscode.NotebookCommunication) {
|
async resolveNotebook(_document: vscode.NotebookDocument, _webview: vscode.NotebookCommunication) {
|
||||||
//
|
//
|
||||||
|
@ -125,13 +125,13 @@ suite('Notebook Document', function () {
|
||||||
{
|
{
|
||||||
const edit = new vscode.WorkspaceEdit();
|
const edit = new vscode.WorkspaceEdit();
|
||||||
edit.replaceNotebookCells(document.uri, 0, 0, [{
|
edit.replaceNotebookCells(document.uri, 0, 0, [{
|
||||||
cellKind: vscode.NotebookCellKind.Markdown,
|
kind: vscode.NotebookCellKind.Markdown,
|
||||||
language: 'markdown',
|
language: 'markdown',
|
||||||
metadata: undefined,
|
metadata: undefined,
|
||||||
outputs: [],
|
outputs: [],
|
||||||
source: 'new_markdown'
|
source: 'new_markdown'
|
||||||
}, {
|
}, {
|
||||||
cellKind: vscode.NotebookCellKind.Code,
|
kind: vscode.NotebookCellKind.Code,
|
||||||
language: 'fooLang',
|
language: 'fooLang',
|
||||||
metadata: undefined,
|
metadata: undefined,
|
||||||
outputs: [],
|
outputs: [],
|
||||||
|
@ -162,13 +162,13 @@ suite('Notebook Document', function () {
|
||||||
{
|
{
|
||||||
const edit = new vscode.WorkspaceEdit();
|
const edit = new vscode.WorkspaceEdit();
|
||||||
edit.replaceNotebookCells(document.uri, 0, 1, [{
|
edit.replaceNotebookCells(document.uri, 0, 1, [{
|
||||||
cellKind: vscode.NotebookCellKind.Markdown,
|
kind: vscode.NotebookCellKind.Markdown,
|
||||||
language: 'markdown',
|
language: 'markdown',
|
||||||
metadata: undefined,
|
metadata: undefined,
|
||||||
outputs: [],
|
outputs: [],
|
||||||
source: 'new2_markdown'
|
source: 'new2_markdown'
|
||||||
}, {
|
}, {
|
||||||
cellKind: vscode.NotebookCellKind.Code,
|
kind: vscode.NotebookCellKind.Code,
|
||||||
language: 'fooLang',
|
language: 'fooLang',
|
||||||
metadata: undefined,
|
metadata: undefined,
|
||||||
outputs: [],
|
outputs: [],
|
||||||
|
@ -198,13 +198,13 @@ suite('Notebook Document', function () {
|
||||||
|
|
||||||
const edit = new vscode.WorkspaceEdit();
|
const edit = new vscode.WorkspaceEdit();
|
||||||
edit.replaceNotebookCells(document.uri, 0, 0, [{
|
edit.replaceNotebookCells(document.uri, 0, 0, [{
|
||||||
cellKind: vscode.NotebookCellKind.Markdown,
|
kind: vscode.NotebookCellKind.Markdown,
|
||||||
language: 'markdown',
|
language: 'markdown',
|
||||||
metadata: undefined,
|
metadata: undefined,
|
||||||
outputs: [],
|
outputs: [],
|
||||||
source: 'new_markdown'
|
source: 'new_markdown'
|
||||||
}, {
|
}, {
|
||||||
cellKind: vscode.NotebookCellKind.Code,
|
kind: vscode.NotebookCellKind.Code,
|
||||||
language: 'fooLang',
|
language: 'fooLang',
|
||||||
metadata: undefined,
|
metadata: undefined,
|
||||||
outputs: [],
|
outputs: [],
|
||||||
|
@ -306,13 +306,13 @@ suite('Notebook Document', function () {
|
||||||
|
|
||||||
const edit = new vscode.WorkspaceEdit();
|
const edit = new vscode.WorkspaceEdit();
|
||||||
edit.replaceNotebookCells(notebook.uri, 0, 0, [{
|
edit.replaceNotebookCells(notebook.uri, 0, 0, [{
|
||||||
cellKind: vscode.NotebookCellKind.Markdown,
|
kind: vscode.NotebookCellKind.Markdown,
|
||||||
language: 'markdown',
|
language: 'markdown',
|
||||||
metadata: undefined,
|
metadata: undefined,
|
||||||
outputs: [],
|
outputs: [],
|
||||||
source: 'new_markdown'
|
source: 'new_markdown'
|
||||||
}, {
|
}, {
|
||||||
cellKind: vscode.NotebookCellKind.Code,
|
kind: vscode.NotebookCellKind.Code,
|
||||||
language: 'fooLang',
|
language: 'fooLang',
|
||||||
metadata: undefined,
|
metadata: undefined,
|
||||||
outputs: [],
|
outputs: [],
|
||||||
|
|
|
@ -11,10 +11,11 @@ suite('Notebook Editor', function () {
|
||||||
|
|
||||||
const contentProvider = new class implements vscode.NotebookContentProvider {
|
const contentProvider = new class implements vscode.NotebookContentProvider {
|
||||||
async openNotebook(uri: vscode.Uri, _openContext: vscode.NotebookDocumentOpenContext): Promise<vscode.NotebookData> {
|
async openNotebook(uri: vscode.Uri, _openContext: vscode.NotebookDocumentOpenContext): Promise<vscode.NotebookData> {
|
||||||
return {
|
return new vscode.NotebookData(
|
||||||
cells: [{ cellKind: vscode.NotebookCellKind.Code, source: uri.toString(), language: 'javascript', metadata: new vscode.NotebookCellMetadata(), outputs: [] }],
|
[new vscode.NotebookCellData(vscode.NotebookCellKind.Code, uri.toString(), 'javascript')],
|
||||||
metadata: new vscode.NotebookDocumentMetadata()
|
new vscode.NotebookDocumentMetadata()
|
||||||
};
|
);
|
||||||
|
|
||||||
}
|
}
|
||||||
async resolveNotebook(_document: vscode.NotebookDocument, _webview: vscode.NotebookCommunication) {
|
async resolveNotebook(_document: vscode.NotebookDocument, _webview: vscode.NotebookCommunication) {
|
||||||
//
|
//
|
||||||
|
|
|
@ -96,14 +96,14 @@ suite('Notebook API tests', function () {
|
||||||
{
|
{
|
||||||
source: 'test',
|
source: 'test',
|
||||||
language: 'typescript',
|
language: 'typescript',
|
||||||
cellKind: vscode.NotebookCellKind.Code,
|
kind: vscode.NotebookCellKind.Code,
|
||||||
outputs: [],
|
outputs: [],
|
||||||
metadata: new vscode.NotebookCellMetadata().with({ custom: { testCellMetadata: 123 } })
|
metadata: new vscode.NotebookCellMetadata().with({ custom: { testCellMetadata: 123 } })
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
source: 'test2',
|
source: 'test2',
|
||||||
language: 'typescript',
|
language: 'typescript',
|
||||||
cellKind: vscode.NotebookCellKind.Code,
|
kind: vscode.NotebookCellKind.Code,
|
||||||
outputs: [
|
outputs: [
|
||||||
new vscode.NotebookCellOutput([
|
new vscode.NotebookCellOutput([
|
||||||
new vscode.NotebookCellOutputItem('text/plain', 'Hello World', { testOutputItemMetadata: true })
|
new vscode.NotebookCellOutputItem('text/plain', 'Hello World', { testOutputItemMetadata: true })
|
||||||
|
@ -488,7 +488,7 @@ suite('Notebook API tests', function () {
|
||||||
const cellMetadataChangeEvent = asPromise<vscode.NotebookCellMetadataChangeEvent>(vscode.notebook.onDidChangeCellMetadata);
|
const cellMetadataChangeEvent = asPromise<vscode.NotebookCellMetadataChangeEvent>(vscode.notebook.onDidChangeCellMetadata);
|
||||||
const version = vscode.window.activeNotebookEditor!.document.version;
|
const version = vscode.window.activeNotebookEditor!.document.version;
|
||||||
await vscode.window.activeNotebookEditor!.edit(editBuilder => {
|
await vscode.window.activeNotebookEditor!.edit(editBuilder => {
|
||||||
editBuilder.replaceCells(1, 0, [{ cellKind: vscode.NotebookCellKind.Code, language: 'javascript', source: 'test 2', outputs: [], metadata: undefined }]);
|
editBuilder.replaceCells(1, 0, [{ kind: vscode.NotebookCellKind.Code, language: 'javascript', source: 'test 2', outputs: [], metadata: undefined }]);
|
||||||
editBuilder.replaceCellMetadata(0, new vscode.NotebookCellMetadata().with({ runnable: false }));
|
editBuilder.replaceCellMetadata(0, new vscode.NotebookCellMetadata().with({ runnable: false }));
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -506,7 +506,7 @@ suite('Notebook API tests', function () {
|
||||||
const cellMetadataChangeEvent = asPromise<vscode.NotebookCellMetadataChangeEvent>(vscode.notebook.onDidChangeCellMetadata);
|
const cellMetadataChangeEvent = asPromise<vscode.NotebookCellMetadataChangeEvent>(vscode.notebook.onDidChangeCellMetadata);
|
||||||
const version = vscode.window.activeNotebookEditor!.document.version;
|
const version = vscode.window.activeNotebookEditor!.document.version;
|
||||||
await vscode.window.activeNotebookEditor!.edit(editBuilder => {
|
await vscode.window.activeNotebookEditor!.edit(editBuilder => {
|
||||||
editBuilder.replaceCells(1, 0, [{ cellKind: vscode.NotebookCellKind.Code, language: 'javascript', source: 'test 2', outputs: [], metadata: undefined }]);
|
editBuilder.replaceCells(1, 0, [{ kind: vscode.NotebookCellKind.Code, language: 'javascript', source: 'test 2', outputs: [], metadata: undefined }]);
|
||||||
editBuilder.replaceCellMetadata(0, new vscode.NotebookCellMetadata().with({ runnable: false }));
|
editBuilder.replaceCellMetadata(0, new vscode.NotebookCellMetadata().with({ runnable: false }));
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -1187,7 +1187,7 @@ suite('Notebook API tests', function () {
|
||||||
|
|
||||||
const cellsChangeEvent = asPromise<vscode.NotebookCellsChangeEvent>(vscode.notebook.onDidChangeNotebookCells);
|
const cellsChangeEvent = asPromise<vscode.NotebookCellsChangeEvent>(vscode.notebook.onDidChangeNotebookCells);
|
||||||
await vscode.window.activeNotebookEditor!.edit(editBuilder => {
|
await vscode.window.activeNotebookEditor!.edit(editBuilder => {
|
||||||
editBuilder.replaceCells(1, 0, [{ cellKind: vscode.NotebookCellKind.Code, language: 'javascript', source: 'test 2', outputs: [], metadata: undefined }]);
|
editBuilder.replaceCells(1, 0, [{ kind: vscode.NotebookCellKind.Code, language: 'javascript', source: 'test 2', outputs: [], metadata: undefined }]);
|
||||||
});
|
});
|
||||||
|
|
||||||
const cellChangeEventRet = await cellsChangeEvent;
|
const cellChangeEventRet = await cellsChangeEvent;
|
||||||
|
|
|
@ -28,14 +28,14 @@ export function activate(context: vscode.ExtensionContext): any {
|
||||||
{
|
{
|
||||||
source: 'code()',
|
source: 'code()',
|
||||||
language: 'typescript',
|
language: 'typescript',
|
||||||
cellKind: vscode.NotebookCellKind.Code,
|
kind: vscode.NotebookCellKind.Code,
|
||||||
outputs: [],
|
outputs: [],
|
||||||
metadata: new vscode.NotebookCellMetadata().with({ custom: { testCellMetadata: 123 } })
|
metadata: new vscode.NotebookCellMetadata().with({ custom: { testCellMetadata: 123 } })
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
source: 'Markdown Cell',
|
source: 'Markdown Cell',
|
||||||
language: 'markdown',
|
language: 'markdown',
|
||||||
cellKind: vscode.NotebookCellKind.Markdown,
|
kind: vscode.NotebookCellKind.Markdown,
|
||||||
outputs: [],
|
outputs: [],
|
||||||
metadata: new vscode.NotebookCellMetadata().with({ custom: { testCellMetadata: 123 } })
|
metadata: new vscode.NotebookCellMetadata().with({ custom: { testCellMetadata: 123 } })
|
||||||
}
|
}
|
||||||
|
|
25
src/vs/vscode.proposed.d.ts
vendored
25
src/vs/vscode.proposed.d.ts
vendored
|
@ -1352,21 +1352,22 @@ declare module 'vscode' {
|
||||||
readonly visibleRanges: ReadonlyArray<NotebookCellRange>;
|
readonly visibleRanges: ReadonlyArray<NotebookCellRange>;
|
||||||
}
|
}
|
||||||
|
|
||||||
// todo@API make class
|
|
||||||
// todo@API support ids https://github.com/jupyter/enhancement-proposals/blob/master/62-cell-id/cell-id.md
|
// todo@API support ids https://github.com/jupyter/enhancement-proposals/blob/master/62-cell-id/cell-id.md
|
||||||
export interface NotebookCellData {
|
export class NotebookCellData {
|
||||||
readonly cellKind: NotebookCellKind;
|
kind: NotebookCellKind;
|
||||||
readonly source: string;
|
// todo@API better names: value? text?
|
||||||
readonly language: string;
|
source: string;
|
||||||
// todo@API maybe use a separate data type?
|
// todo@API how does language and MD relate?
|
||||||
readonly outputs: NotebookCellOutput[];
|
language: string;
|
||||||
readonly metadata: NotebookCellMetadata | undefined;
|
outputs?: NotebookCellOutput[];
|
||||||
|
metadata?: NotebookCellMetadata;
|
||||||
|
constructor(kind: NotebookCellKind, source: string, language: string, outputs?: NotebookCellOutput[], metadata?: NotebookCellMetadata)
|
||||||
}
|
}
|
||||||
|
|
||||||
// todo@API make class
|
export class NotebookData {
|
||||||
export interface NotebookData {
|
cells: NotebookCellData[];
|
||||||
readonly cells: NotebookCellData[];
|
metadata?: NotebookDocumentMetadata;
|
||||||
readonly metadata: NotebookDocumentMetadata;
|
constructor(cells: NotebookCellData[], metadata?: NotebookDocumentMetadata);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1230,6 +1230,8 @@ export function createApiFactoryAndRegisterActors(accessor: ServicesAccessor): I
|
||||||
NotebookCellRunState: extHostTypes.NotebookCellRunState,
|
NotebookCellRunState: extHostTypes.NotebookCellRunState,
|
||||||
NotebookDocumentMetadata: extHostTypes.NotebookDocumentMetadata,
|
NotebookDocumentMetadata: extHostTypes.NotebookDocumentMetadata,
|
||||||
NotebookCellMetadata: extHostTypes.NotebookCellMetadata,
|
NotebookCellMetadata: extHostTypes.NotebookCellMetadata,
|
||||||
|
NotebookCellData: extHostTypes.NotebookCellData,
|
||||||
|
NotebookData: extHostTypes.NotebookData,
|
||||||
NotebookRunState: extHostTypes.NotebookRunState,
|
NotebookRunState: extHostTypes.NotebookRunState,
|
||||||
NotebookCellStatusBarAlignment: extHostTypes.NotebookCellStatusBarAlignment,
|
NotebookCellStatusBarAlignment: extHostTypes.NotebookCellStatusBarAlignment,
|
||||||
NotebookEditorRevealType: extHostTypes.NotebookEditorRevealType,
|
NotebookEditorRevealType: extHostTypes.NotebookEditorRevealType,
|
||||||
|
|
|
@ -1462,19 +1462,11 @@ export namespace NotebookCellData {
|
||||||
|
|
||||||
export function from(data: vscode.NotebookCellData): notebooks.ICellDto2 {
|
export function from(data: vscode.NotebookCellData): notebooks.ICellDto2 {
|
||||||
return {
|
return {
|
||||||
cellKind: NotebookCellKind.from(data.cellKind),
|
cellKind: NotebookCellKind.from(data.kind),
|
||||||
language: data.language,
|
language: data.language,
|
||||||
source: data.source,
|
source: data.source,
|
||||||
metadata: data.metadata,
|
metadata: data.metadata,
|
||||||
outputs: data.outputs.map(output => ({
|
outputs: data.outputs ? data.outputs.map(NotebookCellOutput.from) : []
|
||||||
outputId: output.id,
|
|
||||||
metadata: output.metadata,
|
|
||||||
outputs: (output.outputs || []).map(op => ({
|
|
||||||
mime: op.mime,
|
|
||||||
value: op.value,
|
|
||||||
metadata: op.metadata
|
|
||||||
}))
|
|
||||||
}))
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -3138,11 +3138,38 @@ export class NotebookDocumentMetadata {
|
||||||
runState,
|
runState,
|
||||||
trusted
|
trusted
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export class NotebookCellData {
|
||||||
|
|
||||||
|
kind: NotebookCellKind;
|
||||||
|
source: string;
|
||||||
|
language: string;
|
||||||
|
outputs?: NotebookCellOutput[];
|
||||||
|
metadata?: NotebookCellMetadata;
|
||||||
|
|
||||||
|
constructor(kind: NotebookCellKind, source: string, language: string, outputs?: NotebookCellOutput[], metadata?: NotebookCellMetadata) {
|
||||||
|
this.kind = kind;
|
||||||
|
this.source = source;
|
||||||
|
this.language = language;
|
||||||
|
this.outputs = outputs ?? [];
|
||||||
|
this.metadata = metadata;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export class NotebookData {
|
||||||
|
|
||||||
|
cells: NotebookCellData[];
|
||||||
|
metadata?: NotebookDocumentMetadata;
|
||||||
|
|
||||||
|
constructor(cells: NotebookCellData[], metadata?: NotebookDocumentMetadata) {
|
||||||
|
this.cells = cells;
|
||||||
|
this.metadata = metadata;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
export class NotebookCellOutputItem {
|
export class NotebookCellOutputItem {
|
||||||
|
|
||||||
static isNotebookCellOutputItem(obj: unknown): obj is vscode.NotebookCellOutputItem {
|
static isNotebookCellOutputItem(obj: unknown): obj is vscode.NotebookCellOutputItem {
|
||||||
|
|
Loading…
Reference in a new issue