UNPKG

@arpitbhalla/rneui-base-dev

Version:
88 lines (87 loc) 3.08 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getElementVisibleWidth = void 0; var getArea = function (a, b) { return a * b; }; var getPointDistance = function (a, b) { return Math.sqrt(Math.pow(a[0] - b[0], 2) + Math.pow(a[1] - b[1], 2)); }; var getElementVisibleWidth = function (elementWidth, xOffset, ScreenWidth) { if (xOffset >= 0) { return xOffset + elementWidth <= ScreenWidth ? elementWidth : ScreenWidth - xOffset; } return elementWidth - xOffset; }; exports.getElementVisibleWidth = getElementVisibleWidth; var getTooltipCoordinate = function (x, y, width, height, ScreenWidth, ScreenHeight, tooltipWidth, tooltipHeight, withPointer) { var center = [ x + (0, exports.getElementVisibleWidth)(width, x, ScreenWidth) / 2, y + height / 2, ]; var pOne = [center[0], 0]; var pTwo = [ScreenWidth, center[1]]; var pThree = [center[0], ScreenHeight]; var pFour = [0, center[1]]; var vOne = getPointDistance(center, pOne); var vTwo = getPointDistance(center, pTwo); var vThree = getPointDistance(center, pThree); var vFour = getPointDistance(center, pFour); var areas = [ getArea(vOne, vFour), getArea(vOne, vTwo), getArea(vTwo, vThree), getArea(vThree, vFour), ].map(function (each, index) { return ({ area: each, id: index }); }); var sortedArea = areas.sort(function (a, b) { return b.area - a.area; }); var dX = 0.001; var dY = height / 2; var directionCorrection = [ [-1, -1], [1, -1], [1, 1], [-1, 1], ]; var dislocateReferencePoint = [ [-tooltipWidth, -tooltipHeight], [0, -tooltipHeight], [0, 0], [-tooltipWidth, 0], ]; var qIndex = sortedArea[0].id; var getWithPointerOffsetY = function () { return withPointer ? 10 * directionCorrection[qIndex][1] : 0; }; var getWithPointerOffsetX = function () { return withPointer ? center[0] - 18 * directionCorrection[qIndex][0] : center[0]; }; var newX = getWithPointerOffsetX() + (dX * directionCorrection[qIndex][0] + dislocateReferencePoint[qIndex][0]); return { x: constraintX(newX, qIndex, center[0], ScreenWidth, tooltipWidth), y: center[1] + (dY * directionCorrection[qIndex][1] + dislocateReferencePoint[qIndex][1]) + getWithPointerOffsetY(), }; }; var constraintX = function (newX, qIndex, x, ScreenWidth, tooltipWidth) { switch (qIndex) { case 0: case 3: { var maxWidth = newX > ScreenWidth ? ScreenWidth - 10 : newX; return newX < 1 ? 10 : maxWidth; } case 1: case 2: { var leftOverSpace = ScreenWidth - newX; return leftOverSpace >= tooltipWidth ? newX : newX - (tooltipWidth - leftOverSpace + 10); } default: { return 0; } } }; exports.default = getTooltipCoordinate;