import type { RefObject } from "react"; import { useRef } from "react"; import { emitInteractionAnalyticsEvent } from "utils/AppsmithUtils"; export default function useInteractionAnalyticsEvent( isCallbackRef = false, ref?: React.RefObject, ) { let eventEmitterRef: RefObject; let element: T | null = null; const internalRef = useRef(null); const eventEmitterRefCallback = (elm: T | null) => { element = elm; }; if (ref) { eventEmitterRef = ref; } else { eventEmitterRef = internalRef; } function dispatchInteractionAnalyticsEvent(args: Record) { if (isCallbackRef) emitInteractionAnalyticsEvent(element, args); else emitInteractionAnalyticsEvent(eventEmitterRef.current, args); } return { dispatchInteractionAnalyticsEvent, eventEmitterRef, eventEmitterRefCallback, }; }