@trellixio/roaster-coffee
Version:
Beans' product component library
62 lines (56 loc) • 1.69 kB
JavaScript
;
var React = require('react');
var react = require('@floating-ui/react');
function _interopNamespaceDefault(e) {
var n = Object.create(null);
if (e) {
for (var k in e) {
n[k] = e[k];
}
}
n.default = e;
return Object.freeze(n);
}
var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
function useTooltip(settings) {
const [uncontrolledOpened, setUncontrolledOpened] = React__namespace.useState(false);
const opened = settings.opened ?? uncontrolledOpened;
const setOpen = settings.onOpenChange ?? setUncontrolledOpened;
const { x, y, refs, context, placement } = react.useFloating({
placement: settings.position,
open: opened,
whileElementsMounted: react.autoUpdate,
onOpenChange: setOpen,
middleware: [
react.offset(settings.offset),
react.shift({ padding: 8 }),
react.flip({
fallbackAxisSideDirection: "start"
}),
...settings.inline ? [react.inline()] : []
]
});
const { getReferenceProps, getFloatingProps } = react.useInteractions([
react.useHover(context, {
enabled: settings.events.hover,
mouseOnly: !settings.events.touch
}),
react.useFocus(context, { enabled: settings.events.focus }),
react.useRole(context, { role: "tooltip" }),
react.useDismiss(context, { enabled: typeof settings.opened === void 0 })
]);
return {
x,
y,
reference: refs.reference,
floating: refs.floating,
setFloating: refs.setFloating,
setReference: refs.setReference,
getFloatingProps,
getReferenceProps,
opened,
placement
};
}
exports.useTooltip = useTooltip;
//# sourceMappingURL=useTooltip.js.map