UNPKG

handsontable

Version:

Handsontable is a JavaScript Data Grid available for React, Angular and Vue.

74 lines (69 loc) 1.95 kB
import { isHTMLElement } from "./element.mjs"; /** * Prevent other listeners of the same event from being called. * * @param {Event} event The mouse event object. */ export function stopImmediatePropagation(event) { event.isImmediatePropagationEnabled = false; event.cancelBubble = true; } /** * Check if event was stopped by `stopImmediatePropagation`. * * @param {Event} event The mouse event object. * @returns {boolean} */ export function isImmediatePropagationStopped(event) { return event.isImmediatePropagationEnabled === false; } /** * Check if provided event was triggered by clicking the right mouse button. * * @param {Event} event The mouse event object. * @returns {boolean} */ export function isRightClick(event) { return event.button === 2; } /** * Check if provided event was triggered by clicking the left mouse button. * * @param {Event} event The mouse event object. * @returns {boolean} */ export function isLeftClick(event) { return event.button === 0; } /** * Check if the provided event is a touch event. * * @param {Event} event The event object. * @returns {boolean} */ export function isTouchEvent(event) { return event instanceof TouchEvent; } /** * Calculates the event offset until reaching the element defined by `relativeElement` argument. * * @param {Event} event The mouse event object. * @param {HTMLElement|undefined} [untilElement] The element to which the offset will be calculated. * @returns {{ x: number, y: number }} */ export function offsetRelativeTo(event, untilElement) { const offset = { x: event.offsetX, y: event.offsetY }; let element = event.target; if (!isHTMLElement(untilElement) || element !== untilElement && element.contains(untilElement)) { return offset; } while (element !== untilElement) { offset.x += element.offsetLeft; offset.y += element.offsetTop; element = element.offsetParent; } return offset; }