UNPKG

@eclipse-glsp/theia-integration

Version:

Glue code to integrate GLSP clients into Eclipse Theia

85 lines 4.37 kB
"use strict"; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var __metadata = (this && this.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.TheiaExportSvgActionHandler = void 0; /******************************************************************************** * Copyright (c) 2023-2026 EclipseSource and others. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v. 2.0 which is available at * http://www.eclipse.org/legal/epl-2.0. * * This Source Code may also be made available under the following Secondary * Licenses when the conditions for such availability set forth in the Eclipse * Public License v. 2.0 are satisfied: GNU General Public License, version 2 * with the GNU Classpath Exception which is available at * https://www.gnu.org/software/classpath/license.html. * * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 ********************************************************************************/ const client_1 = require("@eclipse-glsp/client"); const core_1 = require("@theia/core"); const inversify_1 = require("@theia/core/shared/inversify"); const file_dialog_service_1 = require("@theia/filesystem/lib/browser/file-dialog/file-dialog-service"); const file_service_1 = require("@theia/filesystem/lib/browser/file-service"); /** * Default {@link IActionHandler} for SVG {@link ExportResultAction}s in Theia * (bound in Diagram child DI container). Other export formats are ignored so binary * payloads (e.g. base64-encoded PNG) are not text-written to disk by accident. */ let TheiaExportSvgActionHandler = class TheiaExportSvgActionHandler { handle(action) { if (action.format === 'svg') { this.export(action); } } async export(action) { const folder = await this.getExportFolder(); let file = await this.fileDialogService.showSaveDialog({ title: 'Export Diagram', filters: { 'Images (*.svg)': ['svg'] } }, folder); if (file) { try { if (!file.path.ext) { file = new core_1.URI(file.path.fsPath() + '.svg'); } await this.fileService.write(file, action.data); this.messageService.info(`Diagram exported to '${file.path.name}'`); } catch (error) { this.messageService.info(`Error exporting diagram '${error}'`); } } } getExportFolder() { const uri = this.editorContextService.sourceUri; return this.fileService.resolve(new core_1.URI(uri)); } }; exports.TheiaExportSvgActionHandler = TheiaExportSvgActionHandler; __decorate([ (0, inversify_1.inject)(file_service_1.FileService), __metadata("design:type", file_service_1.FileService) ], TheiaExportSvgActionHandler.prototype, "fileService", void 0); __decorate([ (0, inversify_1.inject)(file_dialog_service_1.FileDialogService), __metadata("design:type", Object) ], TheiaExportSvgActionHandler.prototype, "fileDialogService", void 0); __decorate([ (0, inversify_1.inject)(core_1.MessageService), __metadata("design:type", core_1.MessageService) ], TheiaExportSvgActionHandler.prototype, "messageService", void 0); __decorate([ (0, inversify_1.inject)(client_1.EditorContextService), __metadata("design:type", client_1.EditorContextService) ], TheiaExportSvgActionHandler.prototype, "editorContextService", void 0); exports.TheiaExportSvgActionHandler = TheiaExportSvgActionHandler = __decorate([ (0, inversify_1.injectable)() ], TheiaExportSvgActionHandler); //# sourceMappingURL=theia-export-svg-action-handler.js.map