{"version":3,"sources":["../../../src/utils/create-effect/update.ts"],"sourcesContent":["import { useRef } from 'react'\nimport { useLatest } from '../../use-latest'\nimport { createEffectOnce } from './once'\n\nimport type { DependencyList } from 'react'\nimport type { ExtendedReactEffect } from '../basic'\n\nexport type UseUpdateEffect<T = unknown> = (callback: () => void, deps?: DependencyList, ...args: T[]) => void\n\nexport function createUpdateEffect<T = unknown>(effect: ExtendedReactEffect<T>): UseUpdateEffect<T> {\n  const effectOnce = createEffectOnce<T>(effect)\n\n  return (callback: () => void, deps?: DependencyList, ...args: T[]): void => {\n    const isActualUpdate = useRef(false)\n    const latest = useLatest({ callback })\n\n    effectOnce(\n      () => {\n        return () => {\n          isActualUpdate.current = false\n        }\n      },\n      ...args,\n    )\n\n    effect(\n      () => {\n        if (!isActualUpdate.current) {\n          isActualUpdate.current = true\n        } else {\n          return latest.current.callback()\n        }\n      },\n      deps,\n      ...args,\n    )\n  }\n}\n"],"names":["createUpdateEffect","effect","effectOnce","createEffectOnce","callback","deps","args","isActualUpdate","useRef","latest","useLatest","current"],"mappings":";;;;+BASgBA;;;eAAAA;;;qBATO;yBACG;oBACO;;;;;;;;;;;;;;;;;;;;;;;;;;AAO1B,SAASA,mBAAgCC,MAA8B;IAC5E,IAAMC,aAAaC,IAAAA,sBAAgB,EAAIF;IAEvC,OAAO,SAACG,UAAsBC;yCAA0BC;YAAAA;;QACtD,IAAMC,iBAAiBC,IAAAA,aAAM,EAAC;QAC9B,IAAMC,SAASC,IAAAA,oBAAS,EAAC;YAAEN,UAAAA;QAAS;QAEpCF,iBAAAA,KAAAA,GAAAA;YACE;gBACE,OAAO;oBACLK,eAAeI,OAAO,GAAG;gBAC3B;YACF;SAED,CAPDT,OAME,qBAAGI;QAGLL,aAAAA,KAAAA,GAAAA;YACE;gBACE,IAAI,CAACM,eAAeI,OAAO,EAAE;oBAC3BJ,eAAeI,OAAO,GAAG;gBAC3B,OAAO;oBACL,OAAOF,OAAOE,OAAO,CAACP,QAAQ;gBAChC;YACF;YACAC;SAED,CAVDJ,OASE,qBAAGK;IAEP;AACF"}