{"version":3,"file":"useCallbackRef.cjs","sources":["../../../../src/internal/hooks/useCallbackRef.ts"],"sourcesContent":["import {useCallback, useRef} from 'react';\n\nimport {useSafeLayoutEffect} from './useSafeLayoutEffect.ts';\n\n/**\n * React hook to persist any value between renders,\n * but keeps it up-to-date if it changes.\n *\n * @param fn the function to persist\n * @param deps the function dependency list\n */\n/* eslint-disable-next-line @typescript-eslint/no-explicit-any */\nexport function useCallbackRef<T extends (...args: any[]) => any>(\n    fn: T | undefined,\n    deps: React.DependencyList = []\n): T {\n    const ref = useRef(fn);\n\n    useSafeLayoutEffect(() => {\n        ref.current = fn;\n    });\n\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n    return useCallback(((...args) => ref.current?.(...args)) as T, deps);\n}\n"],"names":["useCallbackRef","fn","deps","ref","useRef","useSafeLayoutEffect","useCallback","args","_a"],"mappings":"6JAYO,SAASA,EACZC,EACAC,EAA6B,GAC5B,CACK,MAAAC,EAAMC,SAAOH,CAAE,EAErBI,OAAAA,EAAAA,oBAAoB,IAAM,CACtBF,EAAI,QAAUF,CAAA,CACjB,EAGMK,EAAA,YAAa,IAAIC,IAAS,OAAA,OAAAC,EAAAL,EAAI,UAAJ,YAAAK,EAAA,KAAAL,EAAc,GAAGI,IAAaL,CAAI,CACvE"}