UNPKG

maycur-business

Version:

maycur business react components of web

57 lines (47 loc) 1.65 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = cursorIsOutsideInteractiveBorder; var _getCorePlacement = _interopRequireDefault(require("../utils/getCorePlacement")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } /** * Determines if the mouse's cursor is outside the interactive border * @param {MouseEvent} event * @param {Element} popper * @param {Object} settings * @return {Boolean} */ function cursorIsOutsideInteractiveBorder(event, popper, settings) { if (!popper.getAttribute('x-placement')) return true; var x = event.clientX, y = event.clientY; var interactiveBorder = settings.interactiveBorder, distance = settings.distance; var rect = popper.getBoundingClientRect(); var corePosition = (0, _getCorePlacement["default"])(popper.getAttribute('x-placement')); var borderWithDistance = interactiveBorder + distance; var exceeds = { top: rect.top - y > interactiveBorder, bottom: y - rect.bottom > interactiveBorder, left: rect.left - x > interactiveBorder, right: x - rect.right > interactiveBorder }; switch (corePosition) { case 'top': exceeds.top = rect.top - y > borderWithDistance; break; case 'bottom': exceeds.bottom = y - rect.bottom > borderWithDistance; break; case 'left': exceeds.left = rect.left - x > borderWithDistance; break; case 'right': exceeds.right = x - rect.right > borderWithDistance; break; default: break; } return exceeds.top || exceeds.bottom || exceeds.left || exceeds.right; }