{"version":3,"sources":["../../src/use-pausable-effect/index.ts"],"sourcesContent":["import { useEffect } from 'react'\nimport { useCreation } from '../use-creation'\nimport { useFirstRender } from '../use-first-render'\nimport { useGetterRef } from '../use-getter-ref'\nimport { useRender } from '../use-render'\nimport { useSafeState } from '../use-safe-state'\nimport { useStableFn } from '../use-stable-fn'\n\nimport type { DependencyList, EffectCallback } from 'react'\nimport type { Pausable } from '../use-pausable'\n\nexport function usePausableEffect(\n  callback: EffectCallback,\n  deps: DependencyList = [],\n): Pausable<[boolean?], [boolean?]> {\n  const render = useRender()\n\n  const isFirstRender = useFirstRender()\n  const [isActiveRef, isActive] = useGetterRef(true)\n  const [trigger, updateTrigger] = useSafeState({})\n\n  const pause = useStableFn((update?: boolean, triggerEffect?: boolean) => {\n    isActiveRef.current = false\n    update && render()\n    triggerEffect && updateTrigger({})\n  })\n\n  const resume = useStableFn((update?: boolean, triggerEffect?: boolean) => {\n    isActiveRef.current = true\n    update && render()\n    triggerEffect && updateTrigger({})\n  })\n\n  // biome-ignore lint/correctness/useExhaustiveDependencies: for trigger\n  useEffect(() => {\n    if (isActiveRef.current && !isFirstRender) {\n      updateTrigger({})\n    }\n  }, deps)\n\n  // biome-ignore lint/correctness/useExhaustiveDependencies: effect need to re-run when trigger changes\n  useEffect(callback, [trigger])\n\n  return useCreation(() => ({ isActive, pause, resume }))\n}\n"],"names":["usePausableEffect","callback","deps","render","useRender","isFirstRender","useFirstRender","useGetterRef","isActiveRef","isActive","useSafeState","trigger","updateTrigger","pause","useStableFn","update","triggerEffect","current","resume","useEffect","useCreation"],"mappings":";;;;+BAWgBA;;;eAAAA;;;qBAXU;2BACE;8BACG;4BACF;yBACH;4BACG;2BACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKrB,SAASA,kBACdC,QAAwB;QACxBC,OAAAA,iEAAuB,EAAE;IAEzB,IAAMC,SAASC,IAAAA,oBAAS;IAExB,IAAMC,gBAAgBC,IAAAA,8BAAc;IACpC,IAAgCC,iCAAAA,IAAAA,0BAAY,EAAC,WAAtCC,cAAyBD,kBAAZE,WAAYF;IAChC,IAAiCG,iCAAAA,IAAAA,0BAAY,EAAC,CAAC,QAAxCC,UAA0BD,kBAAjBE,gBAAiBF;IAEjC,IAAMG,QAAQC,IAAAA,wBAAW,EAAC,SAACC,QAAkBC;QAC3CR,YAAYS,OAAO,GAAG;QACtBF,UAAUZ;QACVa,iBAAiBJ,cAAc,CAAC;IAClC;IAEA,IAAMM,SAASJ,IAAAA,wBAAW,EAAC,SAACC,QAAkBC;QAC5CR,YAAYS,OAAO,GAAG;QACtBF,UAAUZ;QACVa,iBAAiBJ,cAAc,CAAC;IAClC;IAEA,uEAAuE;IACvEO,IAAAA,gBAAS,EAAC;QACR,IAAIX,YAAYS,OAAO,IAAI,CAACZ,eAAe;YACzCO,cAAc,CAAC;QACjB;IACF,GAAGV;IAEH,sGAAsG;IACtGiB,IAAAA,gBAAS,EAAClB,UAAU;QAACU;KAAQ;IAE7B,OAAOS,IAAAA,wBAAW,EAAC;eAAO;YAAEX,UAAAA;YAAUI,OAAAA;YAAOK,QAAAA;QAAO;;AACtD"}