UNPKG

handsontable

Version:

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

83 lines (77 loc) 2.24 kB
"use strict"; exports.__esModule = true; exports.isImmediatePropagationStopped = isImmediatePropagationStopped; exports.isLeftClick = isLeftClick; exports.isRightClick = isRightClick; exports.isTouchEvent = isTouchEvent; exports.offsetRelativeTo = offsetRelativeTo; exports.stopImmediatePropagation = stopImmediatePropagation; var _element = require("./element"); /** * Prevent other listeners of the same event from being called. * * @param {Event} event The mouse event object. */ 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} */ 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} */ 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} */ function isLeftClick(event) { return event.button === 0; } /** * Check if the provided event is a touch event. * * @param {Event} event The event object. * @returns {boolean} */ 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 }} */ function offsetRelativeTo(event, untilElement) { const offset = { x: event.offsetX, y: event.offsetY }; let element = event.target; if (!(0, _element.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; }