{
  "version": 3,
  "sources": ["../src/use-callback-ref.tsx"],
  "sourcesContent": ["/* eslint-disable react-hooks/rules-of-hooks */\nimport { useLayoutEffect } from '@radix-ui/react-use-layout-effect';\nimport * as React from 'react';\n\ntype AnyFunction = (...args: any[]) => any;\n\n// See https://github.com/webpack/webpack/issues/14814\nconst useReactInsertionEffect = (React as any)[' useInsertionEffect '.trim().toString()];\n\n/**\n * A custom hook that converts a callback to a ref to avoid triggering\n * re-renders when passed as a prop or avoid re-executing effects when passed as\n * a dependency.\n */\nexport function useCallbackRef<T extends AnyFunction>(callback: T | undefined): T {\n  const callbackRef = React.useRef<AnyFunction | undefined>(callback);\n\n  // See https://github.com/webpack/webpack/issues/14814\n  if (typeof useReactInsertionEffect === 'function') {\n    useReactInsertionEffect(() => {\n      callbackRef.current = callback;\n    });\n  } else {\n    useLayoutEffect(() => {\n      callbackRef.current = callback;\n    });\n  }\n\n  // https://github.com/facebook/react/issues/19240\n  return React.useMemo(() => ((...args) => callbackRef.current?.(...args)) as T, []);\n}\n"],
  "mappings": ";;;;AACA,SAAS,uBAAuB;AAChC,YAAY,WAAW;AAKvB,IAAM,0BAA2B,MAAc,uBAAuB,KAAK,EAAE,SAAS,CAAC;AAOhF,SAAS,eAAsC,UAA4B;AAChF,QAAM,cAAoB,aAAgC,QAAQ;AAGlE,MAAI,OAAO,4BAA4B,YAAY;AACjD,4BAAwB,MAAM;AAC5B,kBAAY,UAAU;AAAA,IACxB,CAAC;AAAA,EACH,OAAO;AACL,oBAAgB,MAAM;AACpB,kBAAY,UAAU;AAAA,IACxB,CAAC;AAAA,EACH;AAGA,SAAa,cAAQ,OAAO,IAAI,SAAS,YAAY,UAAU,GAAG,IAAI,IAAS,CAAC,CAAC;AACnF;AAhBgB;",
  "names": []
}
