sprotty
Version:
A next-gen framework for graphical views
125 lines • 5.7 kB
JavaScript
;
/********************************************************************************
* Copyright (c) 2017-2024 TypeFox 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
********************************************************************************/
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);
};
var __param = (this && this.__param) || function (paramIndex, decorator) {
return function (target, key) { decorator(target, key, paramIndex); }
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.ExportSvgPostprocessor = exports.ExportSvgCommand = exports.RequestExportSvgAction = exports.ExportSvgKeyListener = void 0;
const inversify_1 = require("inversify");
const actions_1 = require("sprotty-protocol/lib/actions");
const command_1 = require("../../base/commands/command");
const model_1 = require("../select/model");
const smodel_1 = require("../../base/model/smodel");
const key_tool_1 = require("../../base/views/key-tool");
const keyboard_1 = require("../../utils/keyboard");
const model_2 = require("./model");
const svg_exporter_1 = require("./svg-exporter");
const model_3 = require("../viewport/model");
const model_4 = require("../hover/model");
const types_1 = require("../../base/types");
let ExportSvgKeyListener = class ExportSvgKeyListener extends key_tool_1.KeyListener {
keyDown(element, event) {
if ((0, keyboard_1.matchesKeystroke)(event, 'KeyE', 'ctrlCmd', 'shift'))
return [RequestExportSvgAction.create()];
else
return [];
}
};
exports.ExportSvgKeyListener = ExportSvgKeyListener;
exports.ExportSvgKeyListener = ExportSvgKeyListener = __decorate([
(0, inversify_1.injectable)()
], ExportSvgKeyListener);
var RequestExportSvgAction;
(function (RequestExportSvgAction) {
RequestExportSvgAction.KIND = 'requestExportSvg';
function create(options = {}) {
return {
kind: RequestExportSvgAction.KIND,
requestId: (0, actions_1.generateRequestId)(),
options
};
}
RequestExportSvgAction.create = create;
})(RequestExportSvgAction || (exports.RequestExportSvgAction = RequestExportSvgAction = {}));
let ExportSvgCommand = class ExportSvgCommand extends command_1.HiddenCommand {
constructor(action) {
super();
this.action = action;
}
execute(context) {
if ((0, model_2.isExportable)(context.root)) {
const root = context.modelFactory.createRoot(context.root);
if ((0, model_2.isExportable)(root)) {
if ((0, model_3.isViewport)(root)) {
root.zoom = 1;
root.scroll = { x: 0, y: 0 };
}
root.index.all().forEach(element => {
if ((0, model_1.isSelectable)(element) && element.selected)
element.selected = false;
if ((0, model_4.isHoverable)(element) && element.hoverFeedback)
element.hoverFeedback = false;
});
return {
model: root,
modelChanged: true,
cause: this.action
};
}
}
return {
model: context.root,
modelChanged: false
};
}
};
exports.ExportSvgCommand = ExportSvgCommand;
ExportSvgCommand.KIND = RequestExportSvgAction.KIND;
exports.ExportSvgCommand = ExportSvgCommand = __decorate([
__param(0, (0, inversify_1.inject)(types_1.TYPES.Action)),
__metadata("design:paramtypes", [Object])
], ExportSvgCommand);
let ExportSvgPostprocessor = class ExportSvgPostprocessor {
decorate(vnode, element) {
if (element instanceof smodel_1.SModelRootImpl)
this.root = element;
return vnode;
}
postUpdate(cause) {
if (this.root && cause !== undefined && cause.kind === RequestExportSvgAction.KIND) {
this.svgExporter.export(this.root, cause);
}
}
};
exports.ExportSvgPostprocessor = ExportSvgPostprocessor;
__decorate([
(0, inversify_1.inject)(types_1.TYPES.SvgExporter),
__metadata("design:type", svg_exporter_1.SvgExporter)
], ExportSvgPostprocessor.prototype, "svgExporter", void 0);
exports.ExportSvgPostprocessor = ExportSvgPostprocessor = __decorate([
(0, inversify_1.injectable)()
], ExportSvgPostprocessor);
//# sourceMappingURL=export.js.map