UNPKG

@mantine/core

Version:

React components library focused on usability, accessibility and developer experience

105 lines (101 loc) 2.98 kB
'use client'; 'use strict'; var rem = require('../../../core/utils/units-converters/rem.cjs'); require('react'); require('clsx'); require('@mantine/hooks'); require('../../../core/MantineProvider/Mantine.context.cjs'); require('../../../core/MantineProvider/default-theme.cjs'); require('../../../core/MantineProvider/MantineProvider.cjs'); require('../../../core/MantineProvider/MantineThemeProvider/MantineThemeProvider.cjs'); require('../../../core/Box/Box.cjs'); require('../../../core/DirectionProvider/DirectionProvider.cjs'); function horizontalSide(placement, arrowY, arrowOffset, arrowPosition) { if (placement === "center" || arrowPosition === "center") { return { top: arrowY }; } if (placement === "end") { return { bottom: arrowOffset }; } if (placement === "start") { return { top: arrowOffset }; } return {}; } function verticalSide(placement, arrowX, arrowOffset, arrowPosition, dir) { if (placement === "center" || arrowPosition === "center") { return { left: arrowX }; } if (placement === "end") { return { [dir === "ltr" ? "right" : "left"]: arrowOffset }; } if (placement === "start") { return { [dir === "ltr" ? "left" : "right"]: arrowOffset }; } return {}; } const radiusByFloatingSide = { bottom: "borderTopLeftRadius", left: "borderTopRightRadius", right: "borderBottomLeftRadius", top: "borderBottomRightRadius" }; function getArrowPositionStyles({ position, arrowSize, arrowOffset, arrowRadius, arrowPosition, arrowX, arrowY, dir }) { const [side, placement = "center"] = position.split("-"); const baseStyles = { width: rem.rem(arrowSize), height: rem.rem(arrowSize), transform: "rotate(45deg)", position: "absolute", [radiusByFloatingSide[side]]: rem.rem(arrowRadius) }; const arrowPlacement = rem.rem(-arrowSize / 2); if (side === "left") { return { ...baseStyles, ...horizontalSide(placement, arrowY, arrowOffset, arrowPosition), right: arrowPlacement, borderLeftColor: "transparent", borderBottomColor: "transparent" }; } if (side === "right") { return { ...baseStyles, ...horizontalSide(placement, arrowY, arrowOffset, arrowPosition), left: arrowPlacement, borderRightColor: "transparent", borderTopColor: "transparent" }; } if (side === "top") { return { ...baseStyles, ...verticalSide(placement, arrowX, arrowOffset, arrowPosition, dir), bottom: arrowPlacement, borderTopColor: "transparent", borderLeftColor: "transparent" }; } if (side === "bottom") { return { ...baseStyles, ...verticalSide(placement, arrowX, arrowOffset, arrowPosition, dir), top: arrowPlacement, borderBottomColor: "transparent", borderRightColor: "transparent" }; } return {}; } exports.getArrowPositionStyles = getArrowPositionStyles; //# sourceMappingURL=get-arrow-position-styles.cjs.map