{"version":3,"sources":["../../src/useMutationState.ts"],"sourcesContent":["import {\n  computed,\n  getCurrentScope,\n  onScopeDispose,\n  readonly,\n  ref,\n  watch,\n} from 'vue-demi'\nimport { useQueryClient } from './useQueryClient'\nimport { cloneDeepUnref } from './utils'\nimport type { DeepReadonly, Ref } from 'vue-demi'\nimport type {\n  DefaultError,\n  MutationFilters as MF,\n  Mutation,\n  MutationState,\n} from '@tanstack/query-core'\nimport type { QueryClient } from './queryClient'\nimport type { MaybeRefDeep } from './types'\nimport type { MutationCache } from './mutationCache'\n\nexport type MutationFilters = MaybeRefDeep<MF>\n\nexport function useIsMutating(\n  filters: MutationFilters = {},\n  queryClient?: QueryClient,\n): Ref<number> {\n  if (process.env.NODE_ENV === 'development') {\n    if (!getCurrentScope()) {\n      console.warn(\n        'vue-query composables like \"useQuery()\" should only be used inside a \"setup()\" function or a running effect scope. They might otherwise lead to memory leaks.',\n      )\n    }\n  }\n\n  const client = queryClient || useQueryClient()\n  const unreffedFilters = computed(() => ({\n    ...cloneDeepUnref(filters),\n    status: 'pending' as const,\n  }))\n\n  const mutationState = useMutationState({ filters: unreffedFilters }, client)\n  const length = computed(() => mutationState.value.length)\n\n  return length\n}\n\nexport type MutationStateOptions<TResult = MutationState> = {\n  filters?: MutationFilters\n  select?: (\n    mutation: Mutation<unknown, DefaultError, unknown, unknown>,\n  ) => TResult\n}\n\nfunction getResult<TResult = MutationState>(\n  mutationCache: MutationCache,\n  options: MutationStateOptions<TResult>,\n): Array<TResult> {\n  return mutationCache\n    .findAll(options.filters)\n    .map(\n      (mutation): TResult =>\n        (options.select\n          ? options.select(\n              mutation as Mutation<unknown, DefaultError, unknown, unknown>,\n            )\n          : mutation.state) as TResult,\n    )\n}\n\nexport function useMutationState<TResult = MutationState>(\n  options: MutationStateOptions<TResult> = {},\n  queryClient?: QueryClient,\n): DeepReadonly<Ref<Array<TResult>>> {\n  const filters = computed(() => cloneDeepUnref(options.filters))\n  const mutationCache = (queryClient || useQueryClient()).getMutationCache()\n  const state = ref(getResult(mutationCache, options)) as Ref<Array<TResult>>\n  const unsubscribe = mutationCache.subscribe(() => {\n    const result = getResult(mutationCache, options)\n    state.value = result\n  })\n\n  watch(filters, () => {\n    state.value = getResult(mutationCache, options)\n  })\n\n  onScopeDispose(() => {\n    unsubscribe()\n  })\n\n  return readonly(state)\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAOO;AACP,4BAA+B;AAC/B,mBAA+B;AAcxB,SAAS,cACd,UAA2B,CAAC,GAC5B,aACa;AACb,MAAI,QAAQ,IAAI,aAAa,eAAe;AAC1C,QAAI,KAAC,iCAAgB,GAAG;AACtB,cAAQ;AAAA,QACN;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,QAAM,SAAS,mBAAe,sCAAe;AAC7C,QAAM,sBAAkB,0BAAS,OAAO;AAAA,IACtC,OAAG,6BAAe,OAAO;AAAA,IACzB,QAAQ;AAAA,EACV,EAAE;AAEF,QAAM,gBAAgB,iBAAiB,EAAE,SAAS,gBAAgB,GAAG,MAAM;AAC3E,QAAM,aAAS,0BAAS,MAAM,cAAc,MAAM,MAAM;AAExD,SAAO;AACT;AASA,SAAS,UACP,eACA,SACgB;AAChB,SAAO,cACJ,QAAQ,QAAQ,OAAO,EACvB;AAAA,IACC,CAAC,aACE,QAAQ,SACL,QAAQ;AAAA,MACN;AAAA,IACF,IACA,SAAS;AAAA,EACjB;AACJ;AAEO,SAAS,iBACd,UAAyC,CAAC,GAC1C,aACmC;AACnC,QAAM,cAAU,0BAAS,UAAM,6BAAe,QAAQ,OAAO,CAAC;AAC9D,QAAM,iBAAiB,mBAAe,sCAAe,GAAG,iBAAiB;AACzE,QAAM,YAAQ,qBAAI,UAAU,eAAe,OAAO,CAAC;AACnD,QAAM,cAAc,cAAc,UAAU,MAAM;AAChD,UAAM,SAAS,UAAU,eAAe,OAAO;AAC/C,UAAM,QAAQ;AAAA,EAChB,CAAC;AAED,6BAAM,SAAS,MAAM;AACnB,UAAM,QAAQ,UAAU,eAAe,OAAO;AAAA,EAChD,CAAC;AAED,sCAAe,MAAM;AACnB,gBAAY;AAAA,EACd,CAAC;AAED,aAAO,0BAAS,KAAK;AACvB;","names":[]}