dotfiles/vscode/.vscode/extensions/randomfractalsinc.vscode-data-preview-2.3.0/out/extension.js
Errol Sancaktar ff17c17e23 vscode
2024-06-14 09:31:58 -06:00

137 lines
6.1 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.deactivate = exports.activate = void 0;
const vscode_1 = require("vscode");
const path = require("path");
const config = require("./config");
const logger_1 = require("./logger");
const data_preview_1 = require("./data.preview");
const preview_manager_1 = require("./preview.manager");
const template_manager_1 = require("./template.manager");
const logger = new logger_1.Logger('data.preview:', config.logLevel);
let status;
/**
* Activates this extension per rules set in package.json.
* @param context vscode extension context.
* @see https://code.visualstudio.com/api/references/activation-events for more info.
*/
function activate(context) {
const extensionPath = context.extensionPath;
logger.debug('activate(): activating from extPath:', context.extensionPath);
// initialize data preview webview panel html template
const templateManager = new template_manager_1.TemplateManager(context.asAbsolutePath('web'));
const dataViewTemplate = templateManager.getTemplate('data.view.html');
// create extension status bar items
status = vscode_1.window.createStatusBarItem(vscode_1.StatusBarAlignment.Right, 300); // left align priority
status.text = ''; // '🈸 Activated!';
status.show();
// register Data preview serializer for restore on vscode restart
vscode_1.window.registerWebviewPanelSerializer('data.preview', new data_preview_1.DataPreviewSerializer('data.preview', extensionPath, dataViewTemplate, status));
// add Preview Data command
const dataWebview = createDataPreviewCommand('data.preview', 'data.preview', extensionPath, dataViewTemplate);
context.subscriptions.push(dataWebview);
// add Preview Data on Side command
const dataWebviewOnSide = createDataPreviewCommand('data.preview.on.side', 'data.preview', extensionPath, dataViewTemplate);
context.subscriptions.push(dataWebviewOnSide);
// add Preview Remote data command
const dataWebviewRemote = vscode_1.commands.registerCommand('data.preview.remote', () => {
vscode_1.window.showInputBox({
ignoreFocusOut: true,
placeHolder: 'https://',
prompt: 'Enter remote data url'
}).then((dataUrl) => {
if (dataUrl && dataUrl !== undefined && dataUrl.length > 0) {
const dataUri = vscode_1.Uri.parse(dataUrl);
// launch new data preview
vscode_1.commands.executeCommand('data.preview', dataUri);
}
});
});
context.subscriptions.push(dataWebviewRemote);
// refresh associated preview on data file save
vscode_1.workspace.onDidSaveTextDocument((document) => {
if (isDataFile(document)) {
const dataUri = document.uri; // .with({scheme: 'data'});
const previews = preview_manager_1.previewManager.find(dataUri);
previews.forEach(preview => preview.refresh());
}
});
// reset associated preview on data file change
vscode_1.workspace.onDidChangeTextDocument((changeEvent) => {
if (isDataFile(changeEvent.document)) {
const dataUri = changeEvent.document.uri; //.with({scheme: 'data'});
const previews = preview_manager_1.previewManager.find(dataUri);
if (previews && changeEvent.contentChanges.length > 0) {
// TODO: add refresh interval before enabling this
// previews.forEach(preview => preview.refresh());
}
}
});
// reset all previews on config change
vscode_1.workspace.onDidChangeConfiguration(() => {
preview_manager_1.previewManager.configure();
});
logger.debug('activate(): activated! extPath:', context.extensionPath);
} // end of activate()
exports.activate = activate;
/**
* Deactivates this vscode extension to free up resources.
*/
function deactivate() {
status.text = '';
status.hide();
// add other extension cleanup code here, if needed
}
exports.deactivate = deactivate;
/**
* Creates a data preview command.
* @param commandType Preview Data command type: data.preview || data.preview.on.side for now.
* @param viewType Preview Data view type: only data.preview for now. might add maps & help later.
* @param extensionPath Extension path for loading scripts, styles, images and data templates.
* @param viewTemplate Preview html template.
*/
function createDataPreviewCommand(commandType, viewType, extensionPath, viewTemplate) {
const dataWebview = vscode_1.commands.registerCommand(commandType, (uri) => {
let resource = uri;
let viewColumn = getViewColumn();
if (commandType.endsWith('.on.side')) {
// bump view column
viewColumn++;
}
if (!(resource instanceof vscode_1.Uri)) {
if (vscode_1.window.activeTextEditor) {
resource = vscode_1.window.activeTextEditor.document.uri;
}
else {
vscode_1.window.showInformationMessage('Open a Data file to Preview.');
return;
}
}
const preview = new data_preview_1.DataPreview(viewType, extensionPath, resource, '', // default data table
{}, // data view config
{}, // other data views
viewColumn, viewTemplate);
preview.status = status;
preview_manager_1.previewManager.add(preview);
return preview.webview;
});
return dataWebview;
}
/**
* Checks if the vscode text document is a data file.
* @param document The vscode text document to check.
*/
function isDataFile(document) {
const fileName = path.basename(document.uri.fsPath);
logger.debug('isDataFile(): document:', document);
logger.debug('isDataFile(): file:', fileName);
return config.supportedDataFiles.test(fileName);
}
/**
* Gets active editor view column for data preview display.
*/
function getViewColumn() {
const activeEditor = vscode_1.window.activeTextEditor;
return activeEditor ? (activeEditor.viewColumn) : vscode_1.ViewColumn.One;
}
//# sourceMappingURL=extension.js.map