{"version":3,"file":"useMutationState.mjs","sources":["../../../src/react/useMutationState.ts"],"sourcesContent":["import * as React from 'react'\n\nimport { MutationCache, MutationInfoFilters, QueryClient } from '../vanilla'\nimport { MutationInfo, MutationInfoState } from '../vanilla/mutationInfo'\nimport { replaceEqualDeep } from '../vanilla/utils'\nimport { useQueryClient } from './QueryClientProvider'\n\nexport function useIsMutating<TData = unknown, TVars = unknown, TError = Error>(\n  filters?: MutationInfoFilters<TData, TVars, TError>,\n  queryClient?: QueryClient\n): number {\n  const client = useQueryClient(queryClient)\n  return useMutationState(\n    { filters: { ...filters, status: 'mutating' } },\n    client\n  ).length\n}\n\ntype MutationStateOptions<\n  TData = unknown,\n  TVars = unknown,\n  TError = Error,\n  TResult = MutationInfoState<TData, TVars, TError>\n> = {\n  filters?: MutationInfoFilters<TData, TVars, TError>\n  select?: (mutationInfo: MutationInfo<TData, TVars, TError>) => TResult\n}\n\nfunction getResult<\n  TData = unknown,\n  TVars = unknown,\n  TError = Error,\n  TResult = MutationInfoState<TData, TVars, TError>\n>(\n  mutationCache: MutationCache,\n  options: MutationStateOptions<TData, TVars, TError, TResult>\n): Array<TResult> {\n  return mutationCache\n    .findAll(options.filters)\n    .map(\n      (mutation): TResult =>\n        (options.select ? options.select(mutation) : mutation.state) as TResult\n    )\n}\n\nexport function useMutationState<\n  TData = unknown,\n  TVars = unknown,\n  TError = Error,\n  TResult = MutationInfoState<TData, TVars, TError>\n>(\n  options: MutationStateOptions<TData, TVars, TError, TResult> = {},\n  queryClient?: QueryClient\n): Array<TResult> {\n  const mutationCache = useQueryClient(queryClient).getMutationCache()\n  const optionsRef = React.useRef(options)\n  const result = React.useRef<Array<TResult>>()\n  if (!result.current) {\n    result.current = getResult(mutationCache, options)\n  }\n\n  React.useEffect(() => {\n    optionsRef.current = options\n  })\n\n  return React.useSyncExternalStore(\n    React.useCallback(\n      onStoreChange =>\n        mutationCache.subscribe(() => {\n          const nextResult = replaceEqualDeep(\n            result.current,\n            getResult(mutationCache, optionsRef.current)\n          )\n          if (result.current !== nextResult) {\n            result.current = nextResult\n            onStoreChange()\n          }\n        }),\n      [mutationCache]\n    ),\n    () => result.current,\n    () => result.current\n  )!\n}\n"],"names":["useIsMutating","filters","queryClient","client","useQueryClient","useMutationState","status","length","getResult","mutationCache","options","findAll","map","mutation","select","state","getMutationCache","optionsRef","React","useRef","result","current","useEffect","useSyncExternalStore","useCallback","onStoreChange","subscribe","nextResult","replaceEqualDeep"],"mappings":";;;;AAOO,SAASA,aAAaA,CAC3BC,OAAmD,EACnDC,WAAyB,EACjB;AACR,EAAA,MAAMC,MAAM,GAAGC,cAAc,CAACF,WAAW,CAAC,CAAA;AAC1C,EAAA,OAAOG,gBAAgB,CACrB;AAAEJ,IAAAA,OAAO,EAAE;AAAE,MAAA,GAAGA,OAAO;AAAEK,MAAAA,MAAM,EAAE,UAAA;AAAW,KAAA;AAAE,GAAC,EAC/CH,MACF,CAAC,CAACI,MAAM,CAAA;AACV,CAAA;AAYA,SAASC,SAASA,CAMhBC,aAA4B,EAC5BC,OAA4D,EAC5C;EAChB,OAAOD,aAAa,CACjBE,OAAO,CAACD,OAAO,CAACT,OAAO,CAAC,CACxBW,GAAG,CACDC,QAAQ,IACNH,OAAO,CAACI,MAAM,GAAGJ,OAAO,CAACI,MAAM,CAACD,QAAQ,CAAC,GAAGA,QAAQ,CAACE,KAC1D,CAAC,CAAA;AACL,CAAA;AAEO,SAASV,gBAAgBA,CAM9BK,OAA4D,GAAG,EAAE,EACjER,WAAyB,EACT;EAChB,MAAMO,aAAa,GAAGL,cAAc,CAACF,WAAW,CAAC,CAACc,gBAAgB,EAAE,CAAA;AACpE,EAAA,MAAMC,UAAU,GAAGC,KAAK,CAACC,MAAM,CAACT,OAAO,CAAC,CAAA;AACxC,EAAA,MAAMU,MAAM,GAAGF,KAAK,CAACC,MAAM,EAAkB,CAAA;AAC7C,EAAA,IAAI,CAACC,MAAM,CAACC,OAAO,EAAE;IACnBD,MAAM,CAACC,OAAO,GAAGb,SAAS,CAACC,aAAa,EAAEC,OAAO,CAAC,CAAA;AACpD,GAAA;EAEAQ,KAAK,CAACI,SAAS,CAAC,MAAM;IACpBL,UAAU,CAACI,OAAO,GAAGX,OAAO,CAAA;AAC9B,GAAC,CAAC,CAAA;AAEF,EAAA,OAAOQ,KAAK,CAACK,oBAAoB,CAC/BL,KAAK,CAACM,WAAW,CACfC,aAAa,IACXhB,aAAa,CAACiB,SAAS,CAAC,MAAM;AAC5B,IAAA,MAAMC,UAAU,GAAGC,gBAAgB,CACjCR,MAAM,CAACC,OAAO,EACdb,SAAS,CAACC,aAAa,EAAEQ,UAAU,CAACI,OAAO,CAC7C,CAAC,CAAA;AACD,IAAA,IAAID,MAAM,CAACC,OAAO,KAAKM,UAAU,EAAE;MACjCP,MAAM,CAACC,OAAO,GAAGM,UAAU,CAAA;AAC3BF,MAAAA,aAAa,EAAE,CAAA;AACjB,KAAA;AACF,GAAC,CAAC,EACJ,CAAChB,aAAa,CAChB,CAAC,EACD,MAAMW,MAAM,CAACC,OAAO,EACpB,MAAMD,MAAM,CAACC,OACf,CAAC,CAAA;AACH;;;;"}