{"version":3,"sources":["../../src/use-tracked-effect/index.ts"],"sourcesContent":["import { useRef } from 'react'\nimport { useLatest } from '../use-latest'\nimport { useUpdateEffect } from '../use-update-effect'\n\nimport type { DependencyList as Deps } from 'react'\n\nexport type TrackedEffectCallback = (depIndexes: number[], previousDeps?: Deps, currentDeps?: Deps) => void\n\n/**\n * A React Hook for detecting dependencies that have **actually changed** between renders, only run in development mode.\n */\nexport function useTrackedEffect(callback: TrackedEffectCallback, deps?: Deps): void {\n  const previousDepsRef = useRef<Deps>(undefined)\n  const latest = useLatest({ callback })\n\n  // biome-ignore lint/correctness/useExhaustiveDependencies: for dev\n  useUpdateEffect(() => {\n    const depIndexes = findChangedIndexes(previousDepsRef.current, deps)\n\n    const previousDeps = previousDepsRef.current\n    previousDepsRef.current = deps\n\n    return latest.current.callback(depIndexes, previousDeps, deps)\n  }, deps)\n}\n\nfunction findChangedIndexes(depsA?: Deps, depsB?: Deps) {\n  if (depsA) {\n    return depsA.map((_, idx) => (!Object.is(depsA[idx], depsB?.[idx]) ? idx : -1)).filter((idx) => idx >= 0)\n  }\n  /* v8 ignore next */\n  return (depsB || []).map((_, idx) => idx)\n}\n"],"names":["useTrackedEffect","callback","deps","previousDepsRef","useRef","undefined","latest","useLatest","useUpdateEffect","depIndexes","findChangedIndexes","current","previousDeps","depsA","depsB","map","_","idx","Object","is","filter"],"mappings":";;;;+BAWgBA;;;eAAAA;;;qBAXO;yBACG;+BACM;AASzB,SAASA,iBAAiBC,QAA+B,EAAEC,IAAW;IAC3E,IAAMC,kBAAkBC,IAAAA,aAAM,EAAOC;IACrC,IAAMC,SAASC,IAAAA,oBAAS,EAAC;QAAEN,UAAAA;IAAS;IAEpC,mEAAmE;IACnEO,IAAAA,gCAAe,EAAC;QACd,IAAMC,aAAaC,mBAAmBP,gBAAgBQ,OAAO,EAAET;QAE/D,IAAMU,eAAeT,gBAAgBQ,OAAO;QAC5CR,gBAAgBQ,OAAO,GAAGT;QAE1B,OAAOI,OAAOK,OAAO,CAACV,QAAQ,CAACQ,YAAYG,cAAcV;IAC3D,GAAGA;AACL;AAEA,SAASQ,mBAAmBG,KAAY,EAAEC,KAAY;IACpD,IAAID,OAAO;QACT,OAAOA,MAAME,GAAG,CAAC,SAACC,GAAGC;mBAAS,CAACC,OAAOC,EAAE,CAACN,KAAK,CAACI,IAAI,EAAEH,kBAAAA,4BAAAA,KAAO,CAACG,IAAI,IAAIA,MAAM,CAAC;WAAIG,MAAM,CAAC,SAACH;mBAAQA,OAAO;;IACzG;IACA,kBAAkB,GAClB,OAAO,AAACH,CAAAA,SAAS,EAAE,AAAD,EAAGC,GAAG,CAAC,SAACC,GAAGC;eAAQA;;AACvC"}