"use client"; import * as React from "react"; /** * Get the ref from a React element without throwing warnings. */ function getElementRef(element: React.ReactElement) { if (!React.isValidElement(element)) return undefined; // React <=18 in DEV let getter = Object.getOwnPropertyDescriptor(element.props, "ref")?.get; let mayWarn = getter && "isReactWarning" in getter && getter.isReactWarning; if (mayWarn) { // eslint-disable-next-line @typescript-eslint/no-explicit-any return (element as any).ref; } // React 19 in DEV getter = Object.getOwnPropertyDescriptor(element, "ref")?.get; mayWarn = getter && "isReactWarning" in getter && getter.isReactWarning; if (mayWarn) { return (element.props as { ref?: React.Ref }).ref; } // Not DEV return ( // eslint-disable-next-line @typescript-eslint/no-explicit-any (element.props as { ref?: React.Ref }).ref || (element as any).ref ); } export { getElementRef };