maycur-business
Version:
maycur business react components of web
57 lines (47 loc) • 1.65 kB
JavaScript
;
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;
}