{
  "version": 3,
  "sources": ["../../../../src/use-waitable/internal/wait-for-binding-values.ts"],
  "sourcesContent": ["import type { ReadonlyBinding, TypeOrDeferredType } from 'react-bindings';\nimport { resolveTypeOrDeferredType, waitForCondition } from 'react-bindings';\n\nimport type { WaitResult } from '../../waitable/types/wait';\n\n/**\n * With respect to a waitable, waits for one of the following:\n * - the value binding to have a defined value\n * - the error binding to have a defined value (unless `continueWaitingOnFailure` is `true`)\n * - a reset (unless `continueWaitingOnReset` is true, which it is by default)\n * - timeout (if `timeoutMSec` is set)\n *\n * @returns `'success'` if the value binding has a defined value, `'failure'` if the error binding has a defined value, `'reset'` if the\n * waitable was reset, or `'timeout'` if no value was defined before the allowed time elapsed.\n */\nexport const waitForBindingValues = async ({\n  continueWaitingOnFailure = false,\n  continueWaitingOnReset = true,\n  error,\n  resetCount,\n  timeoutMSec,\n  value\n}: {\n  continueWaitingOnFailure?: TypeOrDeferredType<boolean>;\n  continueWaitingOnReset?: TypeOrDeferredType<boolean>;\n  error: ReadonlyBinding;\n  resetCount: ReadonlyBinding;\n  timeoutMSec?: number;\n  value: ReadonlyBinding;\n}): Promise<WaitResult> => {\n  let stopReason: 'failure' | 'reset' = 'failure';\n  const initialResetCountChangeUid = resetCount.getChangeUid();\n  const waited = await waitForCondition(\n    { error, resetCount, value },\n    {\n      checkCondition: ({ error, value }) => {\n        if (value !== undefined) {\n          return 'satisfied';\n        }\n\n        if (error !== undefined && !resolveTypeOrDeferredType(continueWaitingOnFailure)) {\n          stopReason = 'failure';\n          return 'stop';\n        }\n\n        if (resetCount.getChangeUid() !== initialResetCountChangeUid && !resolveTypeOrDeferredType(continueWaitingOnReset)) {\n          stopReason = 'reset';\n          return 'stop';\n        }\n\n        return 'continue';\n      },\n      timeoutMSec\n    }\n  );\n\n  switch (waited) {\n    case 'satisfied':\n      return 'success';\n    case 'timeout':\n      return 'timeout';\n    case 'stopped':\n      return stopReason;\n  }\n};\n"],
  "mappings": "AACA,SAAS,2BAA2B,wBAAwB;AAcrD,MAAM,uBAAuB,OAAO;AAAA,EACzC,2BAA2B;AAAA,EAC3B,yBAAyB;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAO2B;AACzB,MAAI,aAAkC;AACtC,QAAM,6BAA6B,WAAW,aAAa;AAC3D,QAAM,SAAS,MAAM;AAAA,IACnB,EAAE,OAAO,YAAY,MAAM;AAAA,IAC3B;AAAA,MACE,gBAAgB,CAAC,EAAE,OAAAA,QAAO,OAAAC,OAAM,MAAM;AACpC,YAAIA,WAAU,QAAW;AACvB,iBAAO;AAAA,QACT;AAEA,YAAID,WAAU,UAAa,CAAC,0BAA0B,wBAAwB,GAAG;AAC/E,uBAAa;AACb,iBAAO;AAAA,QACT;AAEA,YAAI,WAAW,aAAa,MAAM,8BAA8B,CAAC,0BAA0B,sBAAsB,GAAG;AAClH,uBAAa;AACb,iBAAO;AAAA,QACT;AAEA,eAAO;AAAA,MACT;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAEA,UAAQ,QAAQ;AAAA,IACd,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,EACX;AACF;",
  "names": ["error", "value"]
}
