import * as React from 'react'; import { isFunction } from '@aws-amplify/ui'; export interface UseComposeRefsCallbackProps { externalRef?: React.ForwardedRef; internalRef: React.MutableRefObject; } export type UseComposeRefsCallback = (node: RefType) => void; /** * Creates ref callback to compose together external and internal refs */ export function useComposeRefsCallback({ externalRef, internalRef, }: UseComposeRefsCallbackProps): UseComposeRefsCallback { return React.useCallback( (node) => { // Handle callback ref if (isFunction(externalRef)) { externalRef(node); } else if (externalRef) { externalRef.current = node; } internalRef.current = node; }, [externalRef, internalRef] ); }