{"version":3,"file":"useEffectEvent.mjs","sources":["../../../src/common/hooks/useEffectEvent.ts"],"sourcesContent":["import { useCallback, useEffect, useRef } from 'react';\n\n/*\n * Inspired by:\n *\n * - https://react.dev/learn/separating-events-from-effects#declaring-an-effect-event\n * - https://legacy.reactjs.org/docs/hooks-faq.html#how-to-read-an-often-changing-value-from-usecallback\n */\n\nexport function useEffectEvent<A extends unknown[], R>(\n  callback: (...args: A) => R,\n): typeof callback {\n  const ref = useRef<typeof callback>(() => {\n    throw new Error('Cannot call an event handler while rendering.');\n  });\n\n  useEffect(() => {\n    ref.current = callback;\n  });\n\n  return useCallback((...args) => ref.current(...args), []);\n}\n"],"names":["useEffectEvent","callback","ref","useRef","Error","useEffect","current","useCallback","args"],"mappings":";;AAEA;;;;;AAKG;AAEG,SAAUA,cAAcA,CAC5BC,QAA2B,EAAA;AAE3B,EAAA,MAAMC,GAAG,GAAGC,MAAM,CAAkB,MAAK;AACvC,IAAA,MAAM,IAAIC,KAAK,CAAC,+CAA+C,CAAC;AAClE,EAAA,CAAC,CAAC;AAEFC,EAAAA,SAAS,CAAC,MAAK;IACbH,GAAG,CAACI,OAAO,GAAGL,QAAQ;AACxB,EAAA,CAAC,CAAC;AAEF,EAAA,OAAOM,WAAW,CAAC,CAAC,GAAGC,IAAI,KAAKN,GAAG,CAACI,OAAO,CAAC,GAAGE,IAAI,CAAC,EAAE,EAAE,CAAC;AAC3D;;;;"}