import * as vscode from 'vscode';
import { WebviewProvider } from './core/ViewerProvider';
import { HttpBridge } from './core/HttpBridge';
let httpBridge: HttpBridge | undefined;
export function activate(context: vscode.ExtensionContext) {
console.log('Web viewer extension is now active!');
const webviewProvider = new WebviewProvider(context.extensionUri, {
viewType: 'webViewer.mainView',
title: 'Web viewer',
mediaFolder: 'media',
});
// Register command
context.subscriptions.push(
vscode.commands.registerCommand('webViewer.openPanel', () => {
webviewProvider.createOrShowPanel();
})
);
// Start HTTP Bridge
httpBridge = new HttpBridge((message, type) => {
if (type === 'error') {
vscode.window.showErrorMessage(message);
} else {
vscode.window.showInformationMessage(message);
}
});
// Register panel commands
httpBridge.registerHandlers({
'open': () => webviewProvider.createOrShowPanel(),
'close': () => webviewProvider.closePanel(),
});
// Generic handler: forward all other commands to webview
httpBridge.setDefaultHandler((command, payload) => {
return webviewProvider.sendCommand(command, payload);
});
httpBridge.start();
context.subscriptions.push({
dispose: () => httpBridge?.stop()
});
console.log('HTTP Bridge started on port 54321');
}
export function deactivate() {
httpBridge?.stop();
}