{"version":3,"file":"useControllableSuspenseTrigger.mjs","names":[],"sources":["../../../src/hooks/useControllableSuspenseTrigger.ts"],"sourcesContent":["import { usePromise } from \"@mittwald/react-use-promise\";\nimport { useId, useRef, useState } from \"react\";\n\nexport const useControllableSuspenseTrigger = () => {\n  const localId = useId();\n  const promise = useRef<PromiseWithResolvers<void>>(null);\n  const [startedCount, setStartedCount] = useState(0);\n\n  usePromise(\n    (promise: Promise<void>) => promise,\n    promise.current ? [promise.current.promise] : null,\n    {\n      keepValueWhileLoading: false,\n      loaderId: localId + startedCount,\n    },\n  );\n\n  return {\n    start: () => {\n      promise.current = Promise.withResolvers<void>();\n      setStartedCount((c) => c + 1);\n    },\n    stop: () => {\n      promise.current?.resolve();\n    },\n  };\n};\n"],"mappings":";;;;;AAGA,IAAa,uCAAuC;CAClD,MAAM,UAAU,MAAM;CACtB,MAAM,UAAU,OAAmC,IAAI;CACvD,MAAM,CAAC,cAAc,mBAAmB,SAAS,CAAC;CAElD,YACG,YAA2B,SAC5B,QAAQ,UAAU,CAAC,QAAQ,QAAQ,OAAO,IAAI,MAC9C;EACE,uBAAuB;EACvB,UAAU,UAAU;CACtB,CACF;CAEA,OAAO;EACL,aAAa;GACX,QAAQ,UAAU,QAAQ,cAAoB;GAC9C,iBAAiB,MAAM,IAAI,CAAC;EAC9B;EACA,YAAY;GACV,QAAQ,SAAS,QAAQ;EAC3B;CACF;AACF"}