UNPKG

@braineet/ui

Version:

Braineet design system

35 lines (34 loc) 1.45 kB
"use strict"; 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;