@nex-ui/react
Version:
🎉 A beautiful, modern, and reliable React component library.
45 lines (41 loc) • 1.53 kB
JavaScript
;
var utils = require('../utils.cjs');
const offset = (options = 5)=>{
const offsetValue = typeof options === 'number' ? {
mainAxis: options,
crossAxis: 0
} : {
mainAxis: options.mainAxis ?? 0,
crossAxis: options.crossAxis ?? 0
};
return {
name: 'offset',
fn: (state)=>{
const { placement, rects, middlewareData } = state;
const minOffset = middlewareData.arrow?.minOffset ?? 0;
const side = utils.getSide(placement);
const alignment = utils.getAlignment(placement);
const mainAxis = utils.getSideAxis(placement);
const crossAxis = utils.getAlignmentAxis(placement);
const mainAxisFactor = [
'left',
'top'
].includes(side) ? -1 : 1;
const crossAxisFactor = alignment === 'end' ? -1 : 1;
const mainAxisOffset = Math.max(offsetValue.mainAxis, minOffset);
const crossAxisOffset = offsetValue.crossAxis;
const coordinates = {
[mainAxis]: rects.popper[mainAxis] + mainAxisOffset * mainAxisFactor,
[crossAxis]: rects.popper[crossAxis] + crossAxisOffset * crossAxisFactor
};
return {
...coordinates,
data: {
x: coordinates.x - rects.popper.x,
y: coordinates.y - rects.popper.y
}
};
}
};
};
exports.offset = offset;