PHP 7.4.33
Preview: useMutationState.ts Size: 1.94 KB
/var/www/gtechmarathon2026.bitkit.dk/httpdocs/node_modules/@tanstack/react-query/src/useMutationState.ts
'use client'
import * as React from 'react'

import { notifyManager, replaceEqualDeep } from '@tanstack/query-core'
import { useQueryClient } from './QueryClientProvider'
import type {
  Mutation,
  MutationCache,
  MutationFilters,
  MutationState,
  QueryClient,
} from '@tanstack/query-core'

export function useIsMutating(
  filters?: MutationFilters,
  queryClient?: QueryClient,
): number {
  const client = useQueryClient(queryClient)
  return useMutationState(
    { filters: { ...filters, status: 'pending' } },
    client,
  ).length
}

type MutationStateOptions<TResult = MutationState> = {
  filters?: MutationFilters
  select?: (mutation: Mutation) => TResult
}

function getResult<TResult = MutationState>(
  mutationCache: MutationCache,
  options: MutationStateOptions<TResult>,
): Array<TResult> {
  return mutationCache
    .findAll(options.filters)
    .map(
      (mutation): TResult =>
        (options.select ? options.select(mutation) : mutation.state) as TResult,
    )
}

export function useMutationState<TResult = MutationState>(
  options: MutationStateOptions<TResult> = {},
  queryClient?: QueryClient,
): Array<TResult> {
  const mutationCache = useQueryClient(queryClient).getMutationCache()
  const optionsRef = React.useRef(options)
  const result = React.useRef<Array<TResult>>(null)
  if (!result.current) {
    result.current = getResult(mutationCache, options)
  }

  React.useEffect(() => {
    optionsRef.current = options
  })

  return React.useSyncExternalStore(
    React.useCallback(
      (onStoreChange) =>
        mutationCache.subscribe(() => {
          const nextResult = replaceEqualDeep(
            result.current,
            getResult(mutationCache, optionsRef.current),
          )
          if (result.current !== nextResult) {
            result.current = nextResult
            notifyManager.schedule(onStoreChange)
          }
        }),
      [mutationCache],
    ),
    () => result.current,
    () => result.current,
  )!
}

Directory Contents

Dirs: 0 × Files: 23
Name Size Perms Modified Actions
1.75 KB lrw-r--r-- 2025-07-14 06:33:17
Edit Download
3.79 KB lrw-r--r-- 2025-07-14 06:33:17
Edit Download
2.00 KB lrw-r--r-- 2025-07-14 06:33:17
Edit Download
3.10 KB lrw-r--r-- 2025-07-14 06:33:17
Edit Download
236 B lrw-r--r-- 2025-07-14 06:33:17
Edit Download
1023 B lrw-r--r-- 2025-07-14 06:33:17
Edit Download
919 B lrw-r--r-- 2025-07-14 06:33:17
Edit Download
1.35 KB lrw-r--r-- 2025-07-14 06:33:17
Edit Download
2.41 KB lrw-r--r-- 2025-07-14 06:33:17
Edit Download
2.11 KB lrw-r--r-- 2025-07-14 06:33:17
Edit Download
5.54 KB lrw-r--r-- 2025-07-14 06:33:17
Edit Download
5.11 KB lrw-r--r-- 2025-07-14 06:33:17
Edit Download
1.77 KB lrw-r--r-- 2025-07-14 06:33:17
Edit Download
677 B lrw-r--r-- 2025-07-14 06:33:17
Edit Download
1.59 KB lrw-r--r-- 2025-07-14 06:33:17
Edit Download
1.94 KB lrw-r--r-- 2025-07-14 06:33:17
Edit Download
647 B lrw-r--r-- 2025-07-14 06:33:17
Edit Download
588 B lrw-r--r-- 2025-07-14 06:33:17
Edit Download
11.25 KB lrw-r--r-- 2025-07-14 06:33:17
Edit Download
1.39 KB lrw-r--r-- 2025-07-14 06:33:17
Edit Download
1.25 KB lrw-r--r-- 2025-07-14 06:33:17
Edit Download
7.97 KB lrw-r--r-- 2025-07-14 06:33:17
Edit Download
1.04 KB lrw-r--r-- 2025-07-14 06:33:17
Edit Download
If ZipArchive is unavailable, a .tar will be created (no compression).