UNPKG

@braineet/ui

Version:

Braineet design system

30 lines 1.28 kB
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); } import { useRef, useLayoutEffect, useEffect } from 'react'; import { useComboboxState } from 'ariakit/combobox'; var useEnhancedEffect = typeof window !== 'undefined' ? useLayoutEffect : useEffect; export var useCombobox = function useCombobox(options) { var wrapperRef = useRef(); var 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 }); };