@braineet/ui
Version:
Braineet design system
35 lines (34 loc) • 1.45 kB
JavaScript
;
exports.__esModule = true;
exports.useCombobox = void 0;
var _react = require("react");
var _combobox = require("ariakit/combobox");
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
var useEnhancedEffect = typeof window !== 'undefined' ? _react.useLayoutEffect : _react.useEffect;
var useCombobox = function useCombobox(options) {
var wrapperRef = (0, _react.useRef)();
var combobox = (0, _combobox.useComboboxState)(_extends({
gutter: 4,
sameWidth: true,
getAnchorRect: function getAnchorRect() {
var _wrapperRef$current;
if (!wrapperRef.current) return null;
return ((_wrapperRef$current = wrapperRef.current) == null ? void 0 : _wrapperRef$current.getBoundingClientRect()) || null;
}
}, options));
useEnhancedEffect(function () {
if (wrapperRef.current) {
var observer = new ResizeObserver(function () {
combobox.render();
});
observer.observe(wrapperRef.current);
return function () {
observer.unobserve(wrapperRef.current);
};
}
}, []);
return _extends({}, combobox, {
wrapperRef: wrapperRef
});
};
exports.useCombobox = useCombobox;