{"version":3,"sources":["../../src/useStableMemo/useStableMemo.ts"],"names":["useRef","isEqual","useStableMemo","factory","deps","isValid","valueRef","cache","useStableMemo_default"],"mappings":"8BAAA,OAA8B,UAAAA,MAAc,QAC5C,OAAOC,MAAa,qBAGpB,MAAMC,EAAgB,CAAIC,EAAkBC,IAA6B,CACvE,IAAIC,EAAU,GAEd,MAAMC,EAAWN,EAAqB,EAEjCM,EAAS,QAMZD,EAAU,CAAC,EAAED,GAAQE,EAAS,QAAQ,MAAQL,EAAQG,EAAME,EAAS,QAAQ,IAAI,GALjFA,EAAS,QAAU,CACjB,KAAAF,EACA,OAAQD,EAAQ,CAClB,EAKF,MAAMI,EAAQF,EAAUC,EAAS,QAAU,CAAE,KAAAF,EAAM,OAAQD,EAAQ,CAAE,EAErE,OAAAG,EAAS,QAAUC,EAEZA,EAAM,MACf,EAEA,IAAOC,EAAQN","sourcesContent":["import { type DependencyList, useRef } from 'react';\nimport isEqual from 'react-fast-compare';\nimport type { DepsCache } from './types';\n\nconst useStableMemo = <T>(factory: () => T, deps?: DependencyList): T => {\n  let isValid = true;\n\n  const valueRef = useRef<DepsCache<T>>();\n\n  if (!valueRef.current) {\n    valueRef.current = {\n      deps,\n      result: factory()\n    };\n  } else {\n    isValid = !!(deps && valueRef.current.deps && isEqual(deps, valueRef.current.deps));\n  }\n\n  const cache = isValid ? valueRef.current : { deps, result: factory() };\n\n  valueRef.current = cache;\n\n  return cache.result;\n};\n\nexport default useStableMemo;\n"]}