import ownerDocument from 'dom-helpers/ownerDocument'; import { useState, useEffect } from 'react'; export var resolveContainerRef = function resolveContainerRef(ref) { var _ref; if (typeof document === 'undefined') return null; if (ref == null) return ownerDocument().body; if (typeof ref === 'function') ref = ref(); if (ref && 'current' in ref) ref = ref.current; if ((_ref = ref) != null && _ref.nodeType) return ref || null; return null; }; export default function useWaitForDOMRef(ref, onResolved) { var _useState = useState(function () { return resolveContainerRef(ref); }), resolvedRef = _useState[0], setRef = _useState[1]; if (!resolvedRef) { var earlyRef = resolveContainerRef(ref); if (earlyRef) setRef(earlyRef); } useEffect(function () { if (onResolved && resolvedRef) { onResolved(resolvedRef); } }, [onResolved, resolvedRef]); useEffect(function () { var nextRef = resolveContainerRef(ref); if (nextRef !== resolvedRef) { setRef(nextRef); } }, [ref, resolvedRef]); return resolvedRef; }