UNPKG

3.65 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3exports.getWheelDelta = exports.getMouseCoords = exports.getCenter = exports.getHeight = exports.getWidth = exports.getY = exports.getX = void 0;
4/**
5 * Sigma.js Captor Utils
6 * ======================
7 *
8 * Miscellenous helper functions related to the captors.
9 */
10var utils_1 = require("../renderers/utils");
11/**
12 * Extract the local X position from a mouse or touch event.
13 *
14 * @param {event} e - A mouse or touch event.
15 * @return {number} The local X value of the mouse.
16 */
17function getX(e) {
18 if (typeof e.offsetX !== "undefined")
19 return e.offsetX;
20 if (typeof e.clientX !== "undefined")
21 return e.clientX;
22 throw new Error("sigma/captors/utils.getX: could not extract x from event.");
23}
24exports.getX = getX;
25/**
26 * Extract the local Y position from a mouse or touch event.
27 *
28 * @param {event} e - A mouse or touch event.
29 * @return {number} The local Y value of the mouse.
30 */
31function getY(e) {
32 if (typeof e.offsetY !== "undefined")
33 return e.offsetY;
34 if (typeof e.clientY !== "undefined")
35 return e.clientY;
36 throw new Error("sigma/captors/utils.getY: could not extract y from event.");
37}
38exports.getY = getY;
39/**
40 * Extract the width from a mouse or touch event.
41 *
42 * @param {event} e - A mouse or touch event.
43 * @return {number} The width of the event's target.
44 */
45function getWidth(e) {
46 var w = e.target.width;
47 if (typeof w === "number")
48 return w;
49 throw new Error("sigma/captors/utils.getWidth: could not extract width from event.");
50}
51exports.getWidth = getWidth;
52/**
53 * Extract the height from a mouse or touch event.
54 *
55 * @param {event} e - A mouse or touch event.
56 * @return {number} The height of the event's target.
57 */
58function getHeight(e) {
59 var w = e.target.height;
60 if (typeof w === "number")
61 return w;
62 throw new Error("sigma/captors/utils.getHeight: could not extract height from event.");
63}
64exports.getHeight = getHeight;
65/**
66 * Extract the center from a mouse or touch event.
67 *
68 * @param {event} e - A mouse or touch event.
69 * @return {object} The center of the event's target.
70 */
71function getCenter(e) {
72 var ratio = utils_1.getPixelRatio();
73 return {
74 x: getWidth(e) / (2 * ratio),
75 y: getHeight(e) / (2 * ratio),
76 };
77}
78exports.getCenter = getCenter;
79/**
80 * Convert mouse coords to sigma coords.
81 *
82 * @param {event} e - A mouse or touch event.
83 * @param {number} [x] - The x coord to convert
84 * @param {number} [y] - The y coord to convert
85 *
86 * @return {object}
87 */
88function getMouseCoords(e) {
89 return {
90 x: getX(e),
91 y: getY(e),
92 clientX: e.clientX,
93 clientY: e.clientY,
94 ctrlKey: e.ctrlKey,
95 metaKey: e.metaKey,
96 altKey: e.altKey,
97 shiftKey: e.shiftKey,
98 // TODO: this is not ideal... But I am wondering why we don't just pass the event through
99 preventDefault: e.preventDefault.bind(e),
100 original: e,
101 };
102}
103exports.getMouseCoords = getMouseCoords;
104/**
105 * Extract the wheel delta from a mouse or touch event.
106 *
107 * @param {event} e - A mouse or touch event.
108 * @return {number} The wheel delta of the mouse.
109 */
110function getWheelDelta(e) {
111 // TODO: check those ratios again to ensure a clean Chrome/Firefox compat
112 if (typeof e.deltaY !== "undefined")
113 return (e.deltaY * -3) / 360;
114 if (typeof e.detail !== "undefined")
115 return e.detail / -9;
116 throw new Error("sigma/captors/utils.getDelta: could not extract delta from event.");
117}
118exports.getWheelDelta = getWheelDelta;