diff --git a/extensions/image-preview/package.json b/extensions/image-preview/package.json index ea7927fd612..1ad08ffa55e 100644 --- a/extensions/image-preview/package.json +++ b/extensions/image-preview/package.json @@ -45,6 +45,11 @@ "command": "imagePreview.zoomOut", "title": "%command.zoomOut%", "category": "Image Preview" + }, + { + "command": "imagePreview.testing.makeEdit", + "title": "Make test edit", + "category": "Image Preview" } ], "menus": { @@ -58,6 +63,11 @@ "command": "imagePreview.zoomOut", "when": "imagePreviewFocus", "group": "1_imagePreview" + }, + { + "command": "imagePreview.testing.makeEdit", + "when": "imagePreviewTestMode", + "group": "1_imagePreview" } ] } diff --git a/extensions/image-preview/src/extension.ts b/extensions/image-preview/src/extension.ts index 81e2451e35b..49563c75ee5 100644 --- a/extensions/image-preview/src/extension.ts +++ b/extensions/image-preview/src/extension.ts @@ -34,5 +34,20 @@ export function activate(context: vscode.ExtensionContext) { context.subscriptions.push(vscode.commands.registerCommand('imagePreview.zoomOut', () => { previewManager.activePreview?.zoomOut(); })); + + context.subscriptions.push(vscode.commands.registerCommand('imagePreview.testing.makeEdit', () => { + previewManager.activePreview?.test_makeEdit(); + })); + + context.subscriptions.push(vscode.workspace.onDidChangeConfiguration(e => { + if (e.affectsConfiguration('imagePreview.customEditorTestMode')) { + updateTestMode(); + } + })); + updateTestMode(); } +function updateTestMode() { + const isInTestMode = vscode.workspace.getConfiguration('imagePreview').get('customEditorTestMode', false); + vscode.commands.executeCommand('setContext', 'imagePreviewTestMode', isInTestMode); +} diff --git a/extensions/image-preview/src/preview.ts b/extensions/image-preview/src/preview.ts index 962ea5e4866..8aa6d1fe395 100644 --- a/extensions/image-preview/src/preview.ts +++ b/extensions/image-preview/src/preview.ts @@ -43,15 +43,8 @@ export class PreviewManager { } }); - const onEdit = new vscode.EventEmitter<{ now: number }>(); return { - editingCapability: { - onEdit: onEdit.event, - save: async () => { }, - hotExit: async () => { }, - applyEdits: async () => { }, - undoEdits: async (edits) => { console.log('undo', edits); }, - } + editingCapability: preview }; } @@ -73,7 +66,7 @@ const enum PreviewState { Active, } -class Preview extends Disposable { +class Preview extends Disposable implements vscode.WebviewEditorEditingCapability { private readonly id: string = `${Date.now()}-${Math.random().toString()}`; @@ -246,6 +239,24 @@ class Preview extends Disposable { path: this.extensionRoot.path + path })); } + + //#region WebviewEditorCapabilities + private readonly _onEdit = this._register(new vscode.EventEmitter<{ now: number }>()); + public readonly onEdit = this._onEdit.event; + + async save() { } + + async hotExit() { } + + async applyEdits(_edits: any[]) { } + + async undoEdits(edits: any[]) { console.log('undo', edits); } + + //#endregion + + public test_makeEdit() { + this._onEdit.fire({ now: Date.now() }); + } } function escapeAttribute(value: string | vscode.Uri): string {