@arpitbhalla/rneui-base-dev
Version:
Cross Platform React Native UI Toolkit
88 lines (87 loc) • 3.08 kB
JavaScript
;
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;