{"version":3,"sources":["../../src/use-pausable-layout-effect/index.ts"],"sourcesContent":["import { useCreation } from '../use-creation'\nimport { useFirstRender } from '../use-first-render'\nimport { useGetterRef } from '../use-getter-ref'\nimport { useIsomorphicLayoutEffect } from '../use-isomorphic-layout-effect'\nimport { useLayoutMount } from '../use-layout-mount'\nimport { useRender } from '../use-render'\nimport { useSafeState } from '../use-safe-state'\nimport { useStableFn } from '../use-stable-fn'\nimport { useUpdateEffect } from '../use-update-effect'\n\nimport type { DependencyList, EffectCallback } from 'react'\nimport type { Pausable } from '../use-pausable'\n\nexport function usePausableLayoutEffect(\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  useIsomorphicLayoutEffect(() => {\n    if (isActiveRef.current && !isFirstRender) {\n      updateTrigger({})\n    }\n  }, deps)\n\n  useLayoutMount(callback)\n\n  // biome-ignore lint/correctness/useExhaustiveDependencies: effect need to re-run when trigger changes\n  useUpdateEffect(callback, [trigger])\n\n  return useCreation(() => ({ isActive, pause, resume }))\n}\n"],"names":["usePausableLayoutEffect","callback","deps","render","useRender","isFirstRender","useFirstRender","useGetterRef","isActiveRef","isActive","useSafeState","trigger","updateTrigger","pause","useStableFn","update","triggerEffect","current","resume","useIsomorphicLayoutEffect","useLayoutMount","useUpdateEffect","useCreation"],"mappings":";;;;+BAagBA;;;eAAAA;;;2BAbY;8BACG;4BACF;yCACa;8BACX;yBACL;4BACG;2BACD;+BACI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKzB,SAASA,wBACdC,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,oDAAyB,EAAC;QACxB,IAAIX,YAAYS,OAAO,IAAI,CAACZ,eAAe;YACzCO,cAAc,CAAC;QACjB;IACF,GAAGV;IAEHkB,IAAAA,8BAAc,EAACnB;IAEf,sGAAsG;IACtGoB,IAAAA,gCAAe,EAACpB,UAAU;QAACU;KAAQ;IAEnC,OAAOW,IAAAA,wBAAW,EAAC;eAAO;YAAEb,UAAAA;YAAUI,OAAAA;YAAOK,QAAAA;QAAO;;AACtD"}