@nguyentc21/react-native-tooltip
Version:
Simple tooltip for React native app
61 lines (60 loc) • 1.77 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _reactNative = require("react-native");
var _calculateCaretWidth = _interopRequireDefault(require("./calculateCaretWidth"));
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
var _default = args => {
const {
placement,
caretSize,
targetContentLayout,
tooltipContentLayout
} = args;
if (!tooltipContentLayout) return;
const {
pageX,
pageY
} = targetContentLayout;
const halfTargetHeight = targetContentLayout.height * 0.5;
const halfTargetWidth = targetContentLayout.width * 0.5;
const _pageX = pageX - tooltipContentLayout.x;
const _pageY = pageY - tooltipContentLayout.y;
const caretWidth = (0, _calculateCaretWidth.default)(caretSize);
const caretHeight = caretWidth * 0.5;
const diffCaretSizeAfterTransform = (caretWidth - caretSize) * 0.5;
const caretOffset = -caretHeight + diffCaretSizeAfterTransform - _reactNative.StyleSheet.hairlineWidth;
const offsetX = halfTargetWidth - caretHeight + diffCaretSizeAfterTransform;
const offsetY = halfTargetHeight - caretHeight + diffCaretSizeAfterTransform;
let top, left, bottom, right;
switch (placement) {
case 'top':
left = _pageX + offsetX;
top = caretOffset;
break;
case 'bottom':
left = _pageX + offsetX;
bottom = caretOffset;
break;
case 'left':
top = _pageY + offsetY;
left = caretOffset;
break;
case 'right':
top = _pageY + offsetY;
right = caretOffset;
break;
default:
break;
}
return {
top,
left,
bottom,
right
};
};
exports.default = _default;
//# sourceMappingURL=generateCaretPosition.js.map