UNPKG

@eclipse-glsp/client

Version:

A sprotty-based client for GLSP

50 lines 2.93 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; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.GLSPMousePositionTracker = void 0; /******************************************************************************** * Copyright (c) 2024 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 rank: number; * 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 sprotty_1 = require("@eclipse-glsp/sprotty"); const inversify_1 = require("inversify"); const ranked_1 = require("./ranked"); let GLSPMousePositionTracker = class GLSPMousePositionTracker extends sprotty_1.MousePositionTracker { constructor() { super(...arguments); /* we want to be executed before all default mouse listeners since we are just tracking the position and others may need it */ this.rank = ranked_1.Ranked.DEFAULT_RANK - 200; } mouseMove(target, event) { // we cannot simply use the offsetX and offsetY properties of the event since they also consider nested HTML elements // such as foreignObjects or the projection bars divs. Instead, we manually translate the client coordinates to the diagram const globalOrigin = target.root.canvasBounds; const clientToPosition = { x: event.clientX, y: event.clientY }; const rootToPosition = sprotty_1.Point.subtract(clientToPosition, globalOrigin); const positionOnDiagram = target.root.parentToLocal(rootToPosition); this.lastPosition = positionOnDiagram; return []; } }; exports.GLSPMousePositionTracker = GLSPMousePositionTracker; exports.GLSPMousePositionTracker = GLSPMousePositionTracker = __decorate([ (0, inversify_1.injectable)() ], GLSPMousePositionTracker); //# sourceMappingURL=mouse-position-tracker.js.map