{"version":3,"sources":["../src/index.tsx","../src/components/pages/error/index.tsx","../src/hooks/auth/usePermissions/index.ts","../src/contexts/auth/index.tsx","../src/definitions/table/index.ts","../src/definitions/helpers/userFriendlySeconds/index.ts","../src/definitions/helpers/importCSVMapper/index.ts","../src/definitions/helpers/handleUseParams/index.tsx","../src/definitions/helpers/hasPermission/index.ts","../src/definitions/helpers/humanizeString/index.ts","../src/contexts/refine/index.tsx","../src/definitions/helpers/handleRefineOptions/index.ts","../src/definitions/helpers/redirectPage/index.ts","../src/definitions/helpers/sequentialPromises/index.ts","../src/definitions/helpers/pick-resource/index.ts","../src/definitions/helpers/pickDataProvider/index.ts","../src/definitions/helpers/handleMultiple/index.ts","../src/definitions/helpers/useInfinitePagination/index.ts","../src/definitions/helpers/router/is-parameter.ts","../src/definitions/helpers/router/split-to-segments.ts","../src/definitions/helpers/router/is-segment-counts-same.ts","../src/definitions/helpers/router/remove-leading-trailing-slashes.ts","../src/definitions/helpers/router/check-by-segments.ts","../src/definitions/helpers/router/get-action-routes-from-resource.ts","../src/definitions/helpers/router/pick-matched-route.ts","../src/definitions/helpers/router/match-resource-from-route.ts","../src/definitions/helpers/router/get-parent-resource.ts","../src/definitions/helpers/router/pick-route-params.ts","../src/definitions/helpers/router/prepare-route-params.ts","../src/definitions/helpers/router/compose-route.ts","../src/definitions/helpers/useActiveAuthProvider/index.ts","../src/definitions/helpers/handlePaginationParams/index.ts","../src/definitions/helpers/useMediaQuery/index.ts","../src/definitions/helpers/safe-translate/index.ts","../src/hooks/refine/useMutationMode.ts","../src/hooks/refine/useWarnAboutChange/index.ts","../src/contexts/unsavedWarn/index.tsx","../src/hooks/refine/useSyncWithLocation.ts","../src/hooks/refine/useRefineContext.ts","../src/definitions/helpers/useUserFriendlyName/index.ts","../src/definitions/helpers/generateDocumentTitle/index.ts","../src/definitions/helpers/keys/index.ts","../src/definitions/helpers/flatten-object-keys/index.ts","../src/definitions/helpers/property-path-to-array/index.ts","../src/definitions/helpers/downloadInBrowser/index.ts","../src/definitions/helpers/defer-execution/index.ts","../src/definitions/helpers/async-debounce/index.ts","../src/definitions/helpers/prepare-query-context/index.ts","../src/definitions/upload/file2Base64/index.ts","../src/hooks/useKeys/index.tsx","../src/hooks/auth/useGetIdentity/index.ts","../src/hooks/auth/useLogout/index.ts","../src/hooks/auth/useInvalidateAuthStore/index.ts","../src/hooks/auth/useLogin/index.ts","../src/hooks/auth/useRegister/index.ts","../src/hooks/auth/useForgotPassword/index.ts","../src/hooks/auth/useUpdatePassword/index.ts","../src/hooks/auth/useIsAuthenticated/index.ts","../src/hooks/auth/useOnError/index.ts","../src/hooks/auth/useIsExistAuthentication/index.ts","../src/hooks/data/useList.ts","../src/hooks/useLoadingOvertime/index.ts","../src/hooks/data/useOne.ts","../src/hooks/data/useMany.ts","../src/hooks/data/useUpdate.ts","../src/contexts/undoableQueue/types.ts","../src/hooks/data/useCreate.ts","../src/hooks/data/useDelete.ts","../src/hooks/data/useCreateMany.ts","../src/hooks/data/useUpdateMany.ts","../src/hooks/data/useDeleteMany.ts","../src/hooks/data/useApiUrl.ts","../src/hooks/data/useCustom.ts","../src/hooks/data/useCustomMutation.ts","../src/hooks/data/useDataProvider.tsx","../src/contexts/data/index.tsx","../src/hooks/data/useInfiniteList.ts","../src/hooks/live/useResourceSubscription/index.ts","../src/contexts/live/index.tsx","../src/hooks/invalidate/index.tsx","../src/hooks/live/useLiveMode/index.ts","../src/hooks/live/useSubscription/index.ts","../src/hooks/live/usePublish/index.ts","../src/hooks/notification/useCancelNotification/index.tsx","../src/contexts/undoableQueue/index.tsx","../src/hooks/notification/useNotification/index.ts","../src/contexts/notification/index.tsx","../src/hooks/notification/useHandleNotification/index.ts","../src/hooks/i18n/useSetLocale.ts","../src/contexts/i18n/index.tsx","../src/hooks/i18n/useTranslate.ts","../src/hooks/i18n/useGetLocale.ts","../src/hooks/i18n/useTranslation.tsx","../src/hooks/export/index.ts","../src/hooks/form/index.ts","../src/hooks/redirection/index.ts","../src/hooks/router/use-go/index.tsx","../src/contexts/router/index.tsx","../src/hooks/use-resource-params/index.ts","../src/contexts/resource/index.tsx","../src/hooks/deepMemo/index.tsx","../src/hooks/memoized/index.tsx","../src/hooks/router/use-parsed/index.tsx","../src/hooks/router/use-parse/index.tsx","../src/hooks/use-resource-params/use-id/index.tsx","../src/hooks/use-resource-params/use-action/index.tsx","../src/hooks/use-resource-params/use-resource/index.ts","../src/hooks/router/use-get-to-path/index.ts","../src/hooks/navigation/index.ts","../src/hooks/show/index.ts","../src/hooks/import/index.tsx","../src/hooks/modal/useModal/index.tsx","../src/hooks/router/use-back/index.tsx","../src/hooks/router/use-to-path/index.ts","../src/components/link/index.tsx","../src/hooks/router/use-link/index.tsx","../src/hooks/accessControl/useCan/index.ts","../src/contexts/accessControl/index.tsx","../src/definitions/helpers/sanitize-resource/index.ts","../src/hooks/accessControl/useCanWithoutCache.ts","../src/hooks/useSelect/index.ts","../src/hooks/useTable/index.ts","../src/hooks/auditLog/useLog/index.ts","../src/contexts/auditLog/index.tsx","../src/hooks/auditLog/useLogList/index.ts","../src/hooks/breadcrumb/index.ts","../src/hooks/menu/useMenu.tsx","../src/definitions/helpers/menu/create-resource-key.ts","../src/definitions/helpers/menu/create-tree.ts","../src/contexts/metaContext/index.tsx","../src/hooks/useMeta/index.ts","../src/hooks/use-refine-options/index.tsx","../src/hooks/button/actionable-button/index.tsx","../src/hooks/button/navigation-button/index.tsx","../src/hooks/button/button-can-access/index.tsx","../src/hooks/button/delete-button/index.tsx","../src/hooks/button/refresh-button/index.tsx","../src/hooks/button/index.tsx","../src/components/pages/auth/index.tsx","../src/components/pages/auth/components/login/index.tsx","../src/components/pages/auth/components/register/index.tsx","../src/components/pages/auth/components/forgotPassword/index.tsx","../src/components/pages/auth/components/updatePassword/index.tsx","../src/components/pages/welcome/index.tsx","../src/components/pages/config-success/index.tsx","../src/components/pages/config-error/index.tsx","../src/components/containers/refine/index.tsx","../src/components/telemetry/index.tsx","../src/hooks/useTelemetryData/index.ts","../src/definitions/helpers/check-router-prop-misuse/index.ts","../src/hooks/router/use-router-misuse-warning/index.ts","../src/components/undoableQueue/index.tsx","../src/components/authenticated/index.tsx","../src/components/routeChangeHandler/index.tsx","../src/components/canAccess/index.tsx","../src/components/gh-banner/index.tsx","../src/components/gh-banner/styles.ts","../src/components/autoSaveIndicator/index.tsx"],"sourcesContent":["export * from \"./components/index.js\";\nexport * from \"./hooks/index.js\";\n\n// all auth types\nexport * from \"./components/pages/auth/types.js\";\n\nexport {\n  getDefaultFilter,\n  getDefaultSortOrder,\n  parseTableParams,\n  parseTableParamsFromQuery,\n  QS_PARSE_DEPTH,\n  setInitialFilters,\n  setInitialSorters,\n  stringifyTableParams,\n  unionFilters,\n  unionSorters,\n} from \"./definitions/table/index.js\";\nexport {\n  handleUseParams,\n  importCSVMapper,\n  getNextPageParam,\n  getPreviousPageParam,\n  matchResourceFromRoute,\n  useActiveAuthProvider,\n  useUserFriendlyName,\n  pickDataProvider,\n  keys,\n  KeyBuilder,\n  flattenObjectKeys,\n  propertyPathToArray,\n} from \"./definitions/helpers/index.js\";\nexport { file2Base64 } from \"./definitions/upload/index.js\";\nexport { generateDefaultDocumentTitle } from \"./definitions/index.js\";\n\nexport { ResourceContext } from \"./contexts/resource/index.js\";\n\nexport { AccessControlContext } from \"./contexts/accessControl/index.js\";\n\nexport {\n  AccessControlProvider,\n  AccessControlProvider as AccessControlBindings,\n  CanParams,\n  CanResponse,\n  CanReturnType,\n  IAccessControlContext,\n  IAccessControlContextReturnType,\n} from \"./contexts/accessControl/types.js\";\n\nexport {\n  AuditLogProvider,\n  IAuditLogContext,\n  ILog,\n  ILogData,\n  LogParams,\n} from \"./contexts/auditLog/types.js\";\n\nexport {\n  AuthActionResponse,\n  AuthProvider,\n  CheckResponse,\n  IAuthContext,\n  IdentityResponse,\n  OnErrorResponse,\n  PermissionResponse,\n  SuccessNotificationResponse,\n} from \"./contexts/auth/types.js\";\n\nexport {\n  ConditionalFilter,\n  CreateManyResponse,\n  CreateResponse,\n  CrudFilter,\n  CrudFilters,\n  CrudOperators,\n  CrudSort,\n  CrudSorting,\n  CustomResponse,\n  DataBindings,\n  DeleteManyResponse,\n  DeleteOneResponse,\n  GetListResponse,\n  GetManyResponse,\n  GetOneResponse,\n  LogicalFilter,\n  Pagination,\n  SortOrder,\n  UpdateManyResponse,\n  UpdateResponse,\n  GetListParams,\n  GetManyParams,\n  GetOneParams,\n  CreateParams,\n  CreateManyParams,\n  UpdateParams,\n  UpdateManyParams,\n  DeleteOneParams,\n  DeleteManyParams,\n  CustomParams,\n  DataProvider,\n  BaseKey,\n  BaseRecord,\n  HttpError,\n  MetaQuery,\n  MutationMode,\n  BaseOption,\n  IQueryKeys,\n  Prettify,\n  Context,\n  ContextQuery,\n  DataProviders,\n  IDataContext,\n  GraphQLQueryOptions,\n  Fields,\n  NestedField,\n  PrevContext,\n  PreviousQuery,\n  QueryBuilderOptions,\n  QueryResponse,\n  RefineError,\n  ValidationErrors,\n  VariableOptions,\n} from \"./contexts/data/types.js\";\n\nexport {\n  I18nContext,\n  I18nContext as TranslationContext,\n} from \"./contexts/i18n/index.js\";\n\nexport {\n  I18nProvider,\n  I18nProvider as TranslationProvider,\n  I18nProvider as i18nBindings,\n  II18nContext as ITranslationContext,\n} from \"./contexts/i18n/types.js\";\n\nexport {\n  ILiveContext,\n  ILiveModeContextProvider,\n  LiveEvent,\n  LiveCommonParams,\n  LiveManyParams,\n  LiveModeProps,\n  LiveOneParams,\n  LiveProvider,\n  LiveListParams,\n} from \"./contexts/live/types.js\";\n\nexport {\n  INotificationContext,\n  NotificationProvider,\n  NotificationProvider as NotificationsBindings,\n  OpenNotificationParams,\n  SuccessErrorNotification,\n} from \"./contexts/notification/types.js\";\n\nexport {\n  IRefineContext,\n  IRefineContextOptions,\n  IRefineContextProvider,\n  IRefineOptions,\n  LayoutProps,\n  RefineProps,\n  TextTransformers,\n  TitleProps,\n} from \"./contexts/refine/types.js\";\n\nexport {\n  ResourceProps,\n  IResourceComponents,\n  IResourceComponentsProps,\n  IResourceContext,\n  IResourceItem,\n  ResourceAuditLogPermissions,\n  ResourceBindings,\n  RouteableProperties,\n  ResourceRoutePath,\n} from \"./contexts/resource/types.js\";\n\nexport {\n  Action,\n  BackFunction,\n  GoConfig,\n  GoFunction,\n  ParseResponse,\n  ParsedParams,\n  ParseFunction,\n  RouterProvider,\n} from \"./contexts/router/types.js\";\n\nexport {\n  ActionTypes,\n  IUndoableQueue,\n  IUndoableQueueContext,\n} from \"./contexts/undoableQueue/types.js\";\n\nexport { IUnsavedWarnContext } from \"./contexts/unsavedWarn/types.js\";\n\nexport {\n  MetaContextProvider,\n  useMetaContext,\n} from \"./contexts/metaContext/index.js\";\n\nexport { TreeMenuItem, UseMenuProps } from \"./hooks/menu/useMenu.js\";\n","import React, { useEffect, useState } from \"react\";\n\nimport { useTranslate, useGo, useResourceParams } from \"@hooks\";\n\n/**\n * When the app is navigated to a non-existent route, refine shows a default error page.\n * A custom error component can be used for this error page.\n *\n * @see {@link https://refine.dev/docs/packages/documentation/routers/} for more details.\n */\nexport const ErrorComponent: React.FC = () => {\n  const [errorMessage, setErrorMessage] = useState<string>();\n  const translate = useTranslate();\n  const go = useGo();\n\n  const { action, resource } = useResourceParams();\n\n  useEffect(() => {\n    if (resource && action) {\n      setErrorMessage(\n        translate(\n          \"pages.error.info\",\n          {\n            action: action,\n            resource: resource.name,\n          },\n          `You may have forgotten to add the \"${action}\" component to \"${resource.name}\" resource.`,\n        ),\n      );\n    }\n  }, [resource, action]);\n\n  return (\n    <>\n      <h1>\n        {translate(\n          \"pages.error.404\",\n          undefined,\n          \"Sorry, the page you visited does not exist.\",\n        )}\n      </h1>\n      {errorMessage && <p>{errorMessage}</p>}\n      <button\n        onClick={() => {\n          go({ to: \"/\" });\n        }}\n      >\n        {translate(\"pages.error.backHome\", undefined, \"Back Home\")}\n      </button>\n    </>\n  );\n};\n","import { getXRay } from \"@refinedev/devtools-internal\";\nimport {\n  type UseQueryOptions,\n  type UseQueryResult,\n  useQuery,\n} from \"@tanstack/react-query\";\n\nimport { useAuthProviderContext } from \"@contexts/auth\";\nimport { useKeys } from \"@hooks/useKeys\";\nimport type { PermissionResponse } from \"../../../contexts/auth/types\";\n\nexport type UsePermissionsProps<\n  TData = PermissionResponse,\n  TParams extends Record<string, any> = Record<string, any>,\n> = {\n  options?: UseQueryOptions<TData>;\n  params?: TParams;\n};\nexport type UsePermissionsReturnType<TData = PermissionResponse> =\n  UseQueryResult<TData, unknown>;\n\n/**\n * `usePermissions` calls `getPermissions` method from {@link https://refine.dev/docs/api-reference/core/providers/auth-provider `authProvider`} under the hood.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/hooks/auth/usePermissions} for more details.\n *\n * @typeParam TData - Result data of the query\n *\n */\nexport function usePermissions<\n  TData = any,\n  TParams extends Record<string, any> = Record<string, any>,\n>({\n  options,\n  params,\n}: UsePermissionsProps<TData, TParams>): UsePermissionsReturnType<TData> {\n  const { getPermissions } = useAuthProviderContext();\n  const { keys } = useKeys();\n\n  const queryResponse = useQuery<TData>({\n    queryKey: keys().auth().action(\"permissions\").get(),\n    queryFn: (getPermissions\n      ? () => getPermissions(params)\n      : () => Promise.resolve(undefined)) as (\n      params?: unknown,\n    ) => Promise<TData>,\n    enabled: !!getPermissions,\n    ...options,\n    meta: {\n      ...options?.meta,\n      ...getXRay(\"usePermissions\"),\n    },\n  });\n\n  return queryResponse;\n}\n","import React, { type PropsWithChildren } from \"react\";\n\nimport type { IAuthContext } from \"./types\";\nimport { useQueryClient } from \"@tanstack/react-query\";\n\nexport const AuthProviderContext = React.createContext<Partial<IAuthContext>>(\n  {},\n);\n\nexport const AuthProviderContextProvider: React.FC<\n  PropsWithChildren<IAuthContext>\n> = ({ children, isProvided, ...authProvider }) => {\n  const queryClient = useQueryClient();\n\n  const handleLogin = async (params: unknown) => {\n    try {\n      const result = await authProvider.login?.(params);\n\n      return result;\n    } catch (error) {\n      console.warn(\n        \"Unhandled Error in login: refine always expects a resolved promise.\",\n        error,\n      );\n      return Promise.reject(error);\n    }\n  };\n\n  const handleRegister = async (params: unknown) => {\n    try {\n      const result = await authProvider.register?.(params);\n\n      return result;\n    } catch (error) {\n      console.warn(\n        \"Unhandled Error in register: refine always expects a resolved promise.\",\n        error,\n      );\n      return Promise.reject(error);\n    }\n  };\n\n  const handleLogout = async (params: unknown) => {\n    try {\n      const result = await authProvider.logout?.(params);\n      queryClient.invalidateQueries();\n\n      return result;\n    } catch (error) {\n      console.warn(\n        \"Unhandled Error in logout: refine always expects a resolved promise.\",\n        error,\n      );\n      return Promise.reject(error);\n    }\n  };\n\n  const handleCheck = async (params: unknown) => {\n    try {\n      const result = await authProvider.check?.(params);\n\n      return Promise.resolve(result);\n    } catch (error) {\n      console.warn(\n        \"Unhandled Error in check: refine always expects a resolved promise.\",\n        error,\n      );\n      return Promise.reject(error);\n    }\n  };\n\n  const handleForgotPassword = async (params: unknown) => {\n    try {\n      const result = await authProvider.forgotPassword?.(params);\n\n      return Promise.resolve(result);\n    } catch (error) {\n      console.warn(\n        \"Unhandled Error in forgotPassword: refine always expects a resolved promise.\",\n        error,\n      );\n      return Promise.reject(error);\n    }\n  };\n\n  const handleUpdatePassword = async (params: unknown) => {\n    try {\n      const result = await authProvider.updatePassword?.(params);\n      return Promise.resolve(result);\n    } catch (error) {\n      console.warn(\n        \"Unhandled Error in updatePassword: refine always expects a resolved promise.\",\n        error,\n      );\n      return Promise.reject(error);\n    }\n  };\n\n  return (\n    <AuthProviderContext.Provider\n      value={{\n        ...authProvider,\n        login: handleLogin as IAuthContext[\"login\"],\n        logout: handleLogout as IAuthContext[\"logout\"],\n        check: handleCheck as IAuthContext[\"check\"],\n        register: handleRegister as IAuthContext[\"register\"],\n        forgotPassword: handleForgotPassword as IAuthContext[\"forgotPassword\"],\n        updatePassword: handleUpdatePassword as IAuthContext[\"updatePassword\"],\n        isProvided,\n      }}\n    >\n      {children}\n    </AuthProviderContext.Provider>\n  );\n};\n\nexport const useAuthProviderContext = () => {\n  const context = React.useContext(AuthProviderContext);\n\n  return context;\n};\n","import differenceWith from \"lodash/differenceWith\";\nimport unionWith from \"lodash/unionWith\";\nimport qs, { type IStringifyOptions } from \"qs\";\nimport warnOnce from \"warn-once\";\n\nimport type {\n  CrudFilter,\n  CrudOperators,\n  CrudSort,\n  SortOrder,\n} from \"../../contexts/data/types\";\n\n/**\n * Depth limit for `qs.parse`. Deeply nested conditional filters\n * (e.g. `or -> and -> { field, operator, value }`) require at least 7 levels.\n * We use 10 to leave comfortable headroom.\n */\nexport const QS_PARSE_DEPTH = 10;\n\nexport const parseTableParams = (url: string) => {\n  const { currentPage, pageSize, sorters, sorter, filters } = qs.parse(\n    url.substring(1), // remove first ? character\n    { depth: QS_PARSE_DEPTH },\n  );\n\n  return {\n    parsedCurrentPage: currentPage && Number(currentPage),\n    parsedPageSize: pageSize && Number(pageSize),\n    parsedSorter: (sorters as CrudSort[]) || (sorter as CrudSort[]) || [],\n    parsedFilters: (filters as CrudFilter[]) ?? [],\n  };\n};\n\nexport const parseTableParamsFromQuery = (params: any) => {\n  const { currentPage, pageSize, sorters, sorter, filters } = params;\n\n  return {\n    parsedCurrentPage: currentPage && Number(currentPage),\n    parsedPageSize: pageSize && Number(pageSize),\n    parsedSorter: (sorters as CrudSort[]) || (sorter as CrudSort[]) || [],\n    parsedFilters: (filters as CrudFilter[]) ?? [],\n  };\n};\n\n/**\n * @internal This function is used to stringify table params from the useTable hook.\n */\nexport const stringifyTableParams = (params: {\n  pagination?: { currentPage?: number; pageSize?: number };\n  sorters: CrudSort[];\n  sorter?: CrudSort[];\n  filters: CrudFilter[];\n  [key: string]: any;\n}): string => {\n  // Note: qs.stringify has no depth limit by default, so it correctly\n  // serialises deeply nested filters without extra configuration.\n  // The matching qs.parse call uses QS_PARSE_DEPTH to deserialise them.\n  const options: IStringifyOptions = {\n    skipNulls: true,\n    arrayFormat: \"indices\",\n    encode: false,\n  };\n  const { pagination, sorters, sorter, filters, ...rest } = params;\n\n  // Prioritize sorters over sorter\n  const finalSorters = sorters && sorters.length > 0 ? sorters : sorter;\n\n  const queryString = qs.stringify(\n    {\n      ...rest,\n      ...(pagination ? pagination : {}),\n      sorters: finalSorters,\n      filters,\n    },\n    options,\n  );\n\n  return queryString;\n};\n\nexport const compareFilters = (\n  left: CrudFilter,\n  right: CrudFilter,\n): boolean => {\n  if (\n    left.operator !== \"and\" &&\n    left.operator !== \"or\" &&\n    right.operator !== \"and\" &&\n    right.operator !== \"or\"\n  ) {\n    return (\n      (\"field\" in left ? left.field : undefined) ===\n        (\"field\" in right ? right.field : undefined) &&\n      left.operator === right.operator\n    );\n  }\n\n  return (\n    (\"key\" in left ? left.key : undefined) ===\n      (\"key\" in right ? right.key : undefined) &&\n    left.operator === right.operator\n  );\n};\n\nexport const compareSorters = (left: CrudSort, right: CrudSort): boolean =>\n  left.field === right.field;\n// Keep only one CrudFilter per type according to compareFilters\n// Items in the array that is passed first to unionWith have higher priority\n// CrudFilter items with undefined values are necessary to signify no filter\n// After union, don't keep CrudFilter items with undefined value in the result\n// Items in the arrays with higher priority are put at the end.\nexport const unionFilters = (\n  permanentFilter: CrudFilter[],\n  newFilters: CrudFilter[],\n  prevFilters: CrudFilter[] = [],\n): CrudFilter[] => {\n  const isKeyRequired = newFilters.filter(\n    (f) => (f.operator === \"or\" || f.operator === \"and\") && !f.key,\n  );\n\n  if (isKeyRequired.length > 1) {\n    warnOnce(\n      true,\n      \"[conditionalFilters]: You have created multiple Conditional Filters at the top level, this requires the key parameter. \\nFor more information, see https://refine.dev/docs/advanced-tutorials/data-provider/handling-filters/#top-level-multiple-conditional-filters-usage\",\n    );\n  }\n\n  return unionWith(\n    permanentFilter,\n    newFilters,\n    prevFilters,\n    compareFilters,\n  ).filter(\n    (crudFilter) =>\n      crudFilter.value !== undefined &&\n      crudFilter.value !== null &&\n      (crudFilter.operator !== \"or\" ||\n        (crudFilter.operator === \"or\" && crudFilter.value.length !== 0)) &&\n      (crudFilter.operator !== \"and\" ||\n        (crudFilter.operator === \"and\" && crudFilter.value.length !== 0)),\n  );\n};\n\nexport const unionSorters = (\n  permanentSorter: CrudSort[],\n  newSorters: CrudSort[],\n): CrudSort[] =>\n  unionWith(permanentSorter, newSorters, compareSorters).filter(\n    (crudSorter) => crudSorter.order !== undefined && crudSorter.order !== null,\n  );\n// Prioritize filters in the permanentFilter and put it at the end of result array\nexport const setInitialFilters = (\n  permanentFilter: CrudFilter[],\n  defaultFilter: CrudFilter[],\n): CrudFilter[] => [\n  ...differenceWith(defaultFilter, permanentFilter, compareFilters),\n  ...permanentFilter,\n];\n\nexport const setInitialSorters = (\n  permanentSorter: CrudSort[],\n  defaultSorter: CrudSort[],\n): CrudSort[] => [\n  ...differenceWith(defaultSorter, permanentSorter, compareSorters),\n  ...permanentSorter,\n];\n\nexport const getDefaultSortOrder = (\n  columnName: string,\n  sorter?: CrudSort[],\n): SortOrder | undefined => {\n  if (!sorter) {\n    return undefined;\n  }\n\n  const sortItem = sorter.find((item) => item.field === columnName);\n\n  if (sortItem) {\n    return sortItem.order as SortOrder;\n  }\n\n  return undefined;\n};\n\nexport const getDefaultFilter = (\n  columnName: string,\n  filters?: CrudFilter[],\n  operatorType: CrudOperators = \"eq\",\n): CrudFilter[\"value\"] | undefined => {\n  const filter = filters?.find((filter) => {\n    if (\n      filter.operator !== \"or\" &&\n      filter.operator !== \"and\" &&\n      \"field\" in filter\n    ) {\n      const { operator, field } = filter;\n      return field === columnName && operator === operatorType;\n    }\n    return undefined;\n  });\n\n  if (filter) {\n    return filter.value || [];\n  }\n\n  return undefined;\n};\n","export const userFriendlySecond = (miliseconds: number): number => {\n  return miliseconds / 1000; //convert to seconds\n};\n","import fromPairs from \"lodash/fromPairs\";\nimport zip from \"lodash/zip\";\n\nimport type { MapDataFn } from \"../../../hooks/export/types\";\n\nexport const importCSVMapper = <TItem = any, TVariables = any>(\n  data: any[][],\n  mapData: MapDataFn<TItem, TVariables> = (item) => item as any,\n): TVariables[] => {\n  const [headers, ...body] = data;\n  return body\n    .map((entry) => fromPairs(zip(headers, entry)))\n    .map((item: any, index, array: any) =>\n      mapData.call(undefined, item, index, array),\n    );\n};\n","export const handleUseParams = (params: any = {}): any => {\n  if (params?.id) {\n    return {\n      ...params,\n      id: decodeURIComponent(params.id),\n    };\n  }\n  return params;\n};\n","export const hasPermission = (\n  permissions: string[] | undefined,\n  action: string | undefined,\n): boolean => {\n  if (!permissions || !action) {\n    return false;\n  }\n  return !!permissions.find((i) => i === action);\n};\n","export const humanizeString = (text: string): string => {\n  text = text.replace(/([a-z]{1})([A-Z]{1})/g, \"$1-$2\");\n  text = text.replace(/([A-Z]{1})([A-Z]{1})([a-z]{1})/g, \"$1-$2$3\");\n\n  text = text\n    .toLowerCase()\n    .replace(/[_-]+/g, \" \")\n    .replace(/\\s{2,}/g, \" \")\n    .trim();\n  text = text.charAt(0).toUpperCase() + text.slice(1);\n\n  return text;\n};\n// https://www.npmjs.com/package/humanize-string\n","import React from \"react\";\n\nimport pluralize from \"pluralize\";\n\nimport { humanizeString } from \"../../definitions/helpers/humanizeString\";\nimport type {\n  IRefineContext,\n  IRefineContextOptions,\n  IRefineContextProvider,\n} from \"./types\";\n\nconst defaultTitle: IRefineContextOptions[\"title\"] = {\n  icon: (\n    <svg\n      width={24}\n      height={24}\n      viewBox=\"0 0 24 24\"\n      fill=\"none\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      data-testid=\"refine-logo\"\n      id=\"refine-default-logo\"\n    >\n      <path\n        fillRule=\"evenodd\"\n        clipRule=\"evenodd\"\n        d=\"M13.7889 0.422291C12.6627 -0.140764 11.3373 -0.140764 10.2111 0.422291L2.21115 4.42229C0.85601 5.09986 0 6.48491 0 8V16C0 17.5151 0.85601 18.9001 2.21115 19.5777L10.2111 23.5777C11.3373 24.1408 12.6627 24.1408 13.7889 23.5777L21.7889 19.5777C23.144 18.9001 24 17.5151 24 16V8C24 6.48491 23.144 5.09986 21.7889 4.42229L13.7889 0.422291ZM8 8C8 5.79086 9.79086 4 12 4C14.2091 4 16 5.79086 16 8V16C16 18.2091 14.2091 20 12 20C9.79086 20 8 18.2091 8 16V8Z\"\n        fill=\"currentColor\"\n      />\n      <path\n        d=\"M14 8C14 9.10457 13.1046 10 12 10C10.8954 10 10 9.10457 10 8C10 6.89543 10.8954 6 12 6C13.1046 6 14 6.89543 14 8Z\"\n        fill=\"currentColor\"\n      />\n    </svg>\n  ),\n  text: \"Refine Project\",\n};\n\nexport const defaultRefineOptions: IRefineContextOptions = {\n  mutationMode: \"pessimistic\",\n  syncWithLocation: false,\n  undoableTimeout: 5000,\n  warnWhenUnsavedChanges: false,\n  liveMode: \"off\",\n  redirect: {\n    afterCreate: \"list\",\n    afterClone: \"list\",\n    afterEdit: \"list\",\n  },\n  overtime: {\n    enabled: true,\n    interval: 1000,\n  },\n  textTransformers: {\n    humanize: humanizeString,\n    plural: pluralize.plural,\n    singular: pluralize.singular,\n  },\n  disableServerSideValidation: false,\n  disableRouteChangeHandler: false,\n  title: defaultTitle,\n};\n\nexport const RefineContext = React.createContext<IRefineContext>({\n  mutationMode: \"pessimistic\",\n  warnWhenUnsavedChanges: false,\n  syncWithLocation: false,\n  undoableTimeout: 5000,\n  liveMode: \"off\",\n  onLiveEvent: undefined,\n  options: defaultRefineOptions,\n});\n\nexport const RefineContextProvider: React.FC<IRefineContextProvider> = ({\n  mutationMode,\n  warnWhenUnsavedChanges,\n  syncWithLocation,\n  undoableTimeout,\n  children,\n  liveMode = \"off\",\n  onLiveEvent,\n  options,\n}) => {\n  return (\n    <RefineContext.Provider\n      value={{\n        __initialized: true,\n        mutationMode,\n        warnWhenUnsavedChanges,\n        syncWithLocation,\n        undoableTimeout,\n        liveMode,\n        onLiveEvent,\n        options,\n      }}\n    >\n      {children}\n    </RefineContext.Provider>\n  );\n};\n","import type { QueryClient, QueryClientConfig } from \"@tanstack/react-query\";\n\nimport { defaultRefineOptions } from \"@contexts/refine\";\n\nimport type { MutationMode } from \"../../../contexts/data/types\";\nimport type { LiveModeProps } from \"../../../contexts/live/types\";\nimport type {\n  IRefineContextOptions,\n  IRefineOptions,\n} from \"../../../contexts/refine/types\";\n\ntype HandleRefineOptionsProps = {\n  options?: IRefineOptions;\n  mutationMode?: MutationMode;\n  syncWithLocation?: boolean;\n  warnWhenUnsavedChanges?: boolean;\n  undoableTimeout?: number;\n  liveMode?: LiveModeProps[\"liveMode\"];\n  disableTelemetry?: boolean;\n  disableRouteChangeHandler?: boolean;\n  reactQueryClientConfig?: QueryClientConfig;\n  reactQueryDevtoolConfig?: any | false;\n};\n\ntype HandleRefineOptionsReturnValues = {\n  optionsWithDefaults: IRefineContextOptions;\n  disableTelemetryWithDefault: boolean;\n  reactQueryWithDefaults: {\n    clientConfig: QueryClientConfig | InstanceType<typeof QueryClient>;\n  };\n};\n\nexport const handleRefineOptions = ({\n  options,\n  disableTelemetry,\n  liveMode,\n  mutationMode,\n  reactQueryClientConfig,\n  reactQueryDevtoolConfig,\n  syncWithLocation,\n  undoableTimeout,\n  warnWhenUnsavedChanges,\n  disableRouteChangeHandler,\n}: HandleRefineOptionsProps = {}): HandleRefineOptionsReturnValues => {\n  const optionsWithDefaults: IRefineContextOptions = {\n    breadcrumb: options?.breadcrumb,\n    mutationMode:\n      options?.mutationMode ??\n      mutationMode ??\n      defaultRefineOptions.mutationMode,\n    undoableTimeout:\n      options?.undoableTimeout ??\n      undoableTimeout ??\n      defaultRefineOptions.undoableTimeout,\n    syncWithLocation:\n      options?.syncWithLocation ??\n      syncWithLocation ??\n      defaultRefineOptions.syncWithLocation,\n    warnWhenUnsavedChanges:\n      options?.warnWhenUnsavedChanges ??\n      warnWhenUnsavedChanges ??\n      defaultRefineOptions.warnWhenUnsavedChanges,\n    liveMode: options?.liveMode ?? liveMode ?? defaultRefineOptions.liveMode,\n    redirect: {\n      afterCreate:\n        options?.redirect?.afterCreate ??\n        defaultRefineOptions.redirect.afterCreate,\n      afterClone:\n        options?.redirect?.afterClone ??\n        defaultRefineOptions.redirect.afterClone,\n      afterEdit:\n        options?.redirect?.afterEdit ?? defaultRefineOptions.redirect.afterEdit,\n    },\n    overtime: options?.overtime ?? defaultRefineOptions.overtime,\n    textTransformers: {\n      humanize:\n        options?.textTransformers?.humanize ??\n        defaultRefineOptions.textTransformers.humanize,\n      plural:\n        options?.textTransformers?.plural ??\n        defaultRefineOptions.textTransformers.plural,\n      singular:\n        options?.textTransformers?.singular ??\n        defaultRefineOptions.textTransformers.singular,\n    },\n    disableServerSideValidation:\n      options?.disableServerSideValidation ??\n      defaultRefineOptions.disableServerSideValidation,\n    projectId: options?.projectId,\n    title: {\n      icon:\n        typeof options?.title?.icon === \"undefined\"\n          ? defaultRefineOptions.title.icon\n          : options?.title?.icon,\n      text:\n        typeof options?.title?.text === \"undefined\"\n          ? defaultRefineOptions.title.text\n          : options?.title?.text,\n    },\n    disableRouteChangeHandler:\n      options?.disableRouteChangeHandler ??\n      disableRouteChangeHandler ??\n      defaultRefineOptions.disableRouteChangeHandler,\n  };\n\n  const disableTelemetryWithDefault =\n    options?.disableTelemetry ?? disableTelemetry ?? false;\n\n  const reactQueryWithDefaults = {\n    clientConfig:\n      options?.reactQuery?.clientConfig ?? reactQueryClientConfig ?? {},\n    devtoolConfig: reactQueryDevtoolConfig ?? {},\n  };\n\n  return {\n    optionsWithDefaults,\n    disableTelemetryWithDefault,\n    reactQueryWithDefaults,\n  };\n};\n","import type { IRefineContextOptions } from \"../../../contexts/refine/types\";\nimport type { Action } from \"../../../contexts/router/types\";\nimport type { RedirectAction } from \"../../../hooks/form/types\";\n\ntype RedirectPageProps = {\n  redirectFromProps?: RedirectAction;\n  action: Action;\n  redirectOptions: IRefineContextOptions[\"redirect\"];\n};\n\nexport const redirectPage = ({\n  redirectFromProps,\n  action,\n  redirectOptions,\n}: RedirectPageProps): RedirectAction => {\n  if (redirectFromProps || redirectFromProps === false) {\n    return redirectFromProps;\n  }\n\n  switch (action) {\n    case \"clone\":\n      return redirectOptions.afterClone;\n    case \"create\":\n      return redirectOptions.afterCreate;\n    case \"edit\":\n      return redirectOptions.afterEdit;\n    default:\n      return false;\n  }\n};\n","type EachResolve<TResolve, Response> = (\n  result: TResolve,\n  index: number,\n) => Response;\ntype EachReject<TReject, Response> = (\n  error: TReject,\n  index: number,\n) => Response;\n\nexport const sequentialPromises = async <\n  TResolve = unknown,\n  TReject = unknown,\n  TResolveResponse = unknown,\n  TRejectResponse = unknown,\n>(\n  promises: (() => Promise<TResolve>)[],\n  onEachResolve: EachResolve<TResolve, TResolveResponse>,\n  onEachReject: EachReject<TReject, TRejectResponse>,\n): Promise<(TResolveResponse | TRejectResponse)[]> => {\n  const results = [];\n  // @ts-expect-error Remove this when we enable `downLevelIterations`\n  for (const [index, promise] of promises.entries()) {\n    try {\n      const result = await promise();\n\n      results.push(onEachResolve(result, index));\n    } catch (error) {\n      results.push(onEachReject(error as TReject, index));\n    }\n  }\n  return results;\n};\n","import type { IResourceItem } from \"../../../contexts/resource/types\";\n\n/**\n * Picks the resource based on the provided identifier.\n * It will first try to match based on the identifier, then the name.\n * Identifier fallbacks to `name` if `identifier` is not explicitly provided to the resource.\n */\nexport const pickResource = (\n  identifier?: string,\n  resources: IResourceItem[] = [],\n): IResourceItem | undefined => {\n  if (!identifier) {\n    return undefined;\n  }\n\n  let resource = resources.find((r) => r.identifier === identifier);\n  if (!resource) {\n    resource = resources.find((r) => r.name === identifier);\n  }\n\n  return resource;\n};\n","import type { IResourceItem } from \"../../../contexts/resource/types\";\nimport { pickResource } from \"../pick-resource\";\n\n/**\n * Picks the data provider name based on the provided name or fallbacks to resource definition, or `default`.\n */\nexport const pickDataProvider = (\n  resourceName?: string,\n  dataProviderName?: string,\n  resources?: IResourceItem[],\n) => {\n  if (dataProviderName) {\n    return dataProviderName;\n  }\n\n  /**\n   * In this helper, we don't do `route` based matching therefore there's no need to check for `legacy` behaviors.\n   */\n  const resource = pickResource(resourceName, resources);\n\n  const meta = resource?.meta;\n\n  if (meta?.dataProviderName) {\n    return meta.dataProviderName;\n  }\n\n  return \"default\";\n};\n","export const handleMultiple = async <TData = unknown>(\n  promises: Promise<{ data: TData }>[],\n): Promise<{ data: TData[] }> => {\n  return {\n    data: (await Promise.all(promises)).map((res) => res.data),\n  };\n};\n","import type { GetListResponse } from \"../../../contexts/data/types\";\n\nexport const getNextPageParam = (lastPage: GetListResponse) => {\n  const { pagination, cursor } = lastPage;\n\n  // cursor pagination\n  if (cursor?.next) {\n    return cursor.next;\n  }\n\n  const current = pagination?.currentPage || 1;\n\n  const pageSize = pagination?.pageSize || 10;\n  const totalPages = Math.ceil((lastPage.total || 0) / pageSize);\n\n  return current < totalPages ? Number(current) + 1 : undefined;\n};\n\nexport const getPreviousPageParam = (lastPage: GetListResponse) => {\n  const { pagination, cursor } = lastPage;\n\n  // cursor pagination\n  if (cursor?.prev) {\n    return cursor.prev;\n  }\n\n  const current = pagination?.currentPage || 1;\n\n  return current === 1 ? undefined : current - 1;\n};\n","/**\n * Check if a segment is a parameter. (e.g. :id)\n */\nexport const isParameter = (segment: string) => {\n  return segment.startsWith(\":\");\n};\n","/**\n * Split a path to segments.\n */\nexport const splitToSegments = (path: string) => {\n  const segments = path.split(\"/\").filter((segment) => segment !== \"\");\n  return segments;\n};\n","import { splitToSegments } from \"./split-to-segments\";\n\n/**\n * Checks if the both routes have the same number of segments.\n */\nexport const isSegmentCountsSame = (route: string, resourceRoute: string) => {\n  const routeSegments = splitToSegments(route);\n  const resourceRouteSegments = splitToSegments(resourceRoute);\n\n  return routeSegments.length === resourceRouteSegments.length;\n};\n","/**\n * Remove leading and trailing slashes from a route.\n */\nexport const removeLeadingTrailingSlashes = (route: string) => {\n  return route.replace(/^\\/|\\/$/g, \"\");\n};\n","import { isParameter } from \"./is-parameter\";\nimport { isSegmentCountsSame } from \"./is-segment-counts-same\";\nimport { removeLeadingTrailingSlashes } from \"./remove-leading-trailing-slashes\";\nimport { splitToSegments } from \"./split-to-segments\";\n\n/**\n * This function if the route and resourceRoute match by segments.\n * - First, trailing and leading slashes are removed\n * - Then, the route and resourceRoute are split to segments and checked if they have the same number of segments\n * - Then, each segment is checked if it is a parameter or if it matches the resourceRoute segment\n * - If all segments match, the function returns true, otherwise false\n */\nexport const checkBySegments = (route: string, resourceRoute: string) => {\n  const stdRoute = removeLeadingTrailingSlashes(route);\n  const stdResourceRoute = removeLeadingTrailingSlashes(resourceRoute);\n  // we need to check if the route and resourceRoute have the same number of segments\n  // if not, we can't match them\n  if (!isSegmentCountsSame(stdRoute, stdResourceRoute)) {\n    return false;\n  }\n\n  const routeSegments = splitToSegments(stdRoute);\n  const resourceRouteSegments = splitToSegments(stdResourceRoute);\n\n  return resourceRouteSegments.every((segment, index) => {\n    return isParameter(segment) || segment === routeSegments[index];\n  });\n};\n","import type { IResourceItem } from \"../../../contexts/resource/types\";\nimport type { Action } from \"../../../contexts/router/types\";\n\nexport type ResourceActionRoute = {\n  action: Action;\n  resource: IResourceItem;\n  route: string;\n};\n\n/**\n * This function returns all the routes for available actions for a resource.\n * - It will return an array of objects with the action, the resource and the route\n */\nexport const getActionRoutesFromResource = (\n  resource: IResourceItem,\n  resources: IResourceItem[],\n) => {\n  const actions: ResourceActionRoute[] = [];\n\n  const actionList: Action[] = [\"list\", \"show\", \"edit\", \"create\", \"clone\"];\n\n  actionList.forEach((action) => {\n    const route: string | undefined = resource[action];\n\n    if (route) {\n      actions.push({\n        action,\n        resource,\n        route: `/${route.replace(/^\\//, \"\")}`,\n      });\n    }\n  });\n\n  return actions;\n};\n","import type { ResourceActionRoute } from \"./get-action-routes-from-resource\";\nimport { isParameter } from \"./is-parameter\";\nimport { removeLeadingTrailingSlashes } from \"./remove-leading-trailing-slashes\";\nimport { splitToSegments } from \"./split-to-segments\";\n\n/**\n * Picks the most eligible route from the given matched routes.\n * - If there's only one route, it returns it.\n * - If there's more than one route, it picks the best non-greedy match.\n */\nexport const pickMatchedRoute = (\n  routes: ResourceActionRoute[],\n): ResourceActionRoute | undefined => {\n  // these routes are all matched, we should pick the least parametrized one\n\n  // no routes, no match\n  if (routes.length === 0) {\n    return undefined;\n  }\n\n  // no need to calculate the route segments if there's only one route\n  if (routes.length === 1) {\n    return routes[0];\n  }\n\n  // remove trailing and leading slashes\n  // split them to segments\n  const sanitizedRoutes = routes.map((route) => ({\n    ...route,\n    splitted: splitToSegments(removeLeadingTrailingSlashes(route.route)),\n  }));\n\n  // at this point, before calling this function, we already checked for segment lenghts and expect all of them to be the same\n  const segmentsCount = sanitizedRoutes[0]?.splitted.length ?? 0;\n\n  let eligibleRoutes: Array<(typeof sanitizedRoutes)[number]> = [\n    ...sanitizedRoutes,\n  ];\n\n  // loop through the segments\n  for (let i = 0; i < segmentsCount; i++) {\n    const nonParametrizedRoutes = eligibleRoutes.filter(\n      (route) => !isParameter(route.splitted[i]),\n    );\n\n    if (nonParametrizedRoutes.length === 0) {\n      // keep the eligible routes as they are\n      continue;\n    }\n    if (nonParametrizedRoutes.length === 1) {\n      // no need to continue, we found the route\n      eligibleRoutes = nonParametrizedRoutes;\n      break;\n    }\n\n    // we have more than one non-parametrized route, we need to check the next segment\n    eligibleRoutes = nonParametrizedRoutes;\n  }\n\n  return eligibleRoutes[0];\n};\n","import type { IResourceItem } from \"../../../contexts/resource/types\";\nimport type { Action } from \"../../../contexts/router/types\";\nimport { checkBySegments } from \"./check-by-segments\";\nimport { getActionRoutesFromResource } from \"./get-action-routes-from-resource\";\nimport { pickMatchedRoute } from \"./pick-matched-route\";\n\n/**\n * Match the resource from the route\n * - It will calculate all possible routes for resources and their actions\n * - It will check if the route matches any of the possible routes\n * - It will return the most eligible resource and action\n */\nexport const matchResourceFromRoute = (\n  route: string,\n  resources: IResourceItem[],\n): {\n  found: boolean;\n  resource?: IResourceItem;\n  action?: Action;\n  matchedRoute?: string;\n} => {\n  const allActionRoutes = resources.flatMap((resource) => {\n    return getActionRoutesFromResource(resource, resources);\n  });\n\n  const allFound = allActionRoutes.filter((actionRoute) => {\n    return checkBySegments(route, actionRoute.route);\n  });\n\n  const mostEligible = pickMatchedRoute(allFound);\n\n  return {\n    found: !!mostEligible,\n    resource: mostEligible?.resource,\n    action: mostEligible?.action,\n    matchedRoute: mostEligible?.route,\n  };\n};\n","import type { IResourceItem } from \"../../../contexts/resource/types\";\n\n/**\n * Returns the parent resource of the given resource.\n * Uses the `resource.meta.parent` property.\n */\nexport const getParentResource = (\n  resource: IResourceItem,\n  resources: IResourceItem[],\n): IResourceItem | undefined => {\n  const parentName = resource.meta?.parent;\n\n  if (!parentName) {\n    return undefined;\n  }\n\n  const parentResource = resources.find(\n    (resource) => (resource.identifier ?? resource.name) === parentName,\n  );\n\n  /**\n   * If the parent resource is not found, we return a resource object with the name of the parent resource.\n   * Because we still want to have nesting and prefixing for the resource even if the parent is not explicitly defined.\n   */\n  return parentResource ?? { name: parentName };\n};\n","import { splitToSegments } from \"./split-to-segments\";\nimport { removeLeadingTrailingSlashes } from \"./remove-leading-trailing-slashes\";\nimport { isParameter } from \"./is-parameter\";\n\n/**\n * Picks the route parameters from the given route.\n * (e.g. /users/:id/posts/:postId => ['id', 'postId'])\n */\nexport const pickRouteParams = (route: string) => {\n  const segments = splitToSegments(removeLeadingTrailingSlashes(route));\n\n  return segments.flatMap((s) => {\n    if (isParameter(s)) {\n      return [s.slice(1)];\n    }\n\n    return [];\n  });\n};\n","/**\n * Prepares the route params by checking the existing params and meta data.\n * Meta data is prioritized over params.\n * Params are prioritized over predetermined id, action and resource.\n * This means, we can use `meta` for user supplied params (both manually or from the query string)\n */\nexport const prepareRouteParams = <\n  TRouteParams extends Record<string, unknown> = Record<string, unknown>,\n>(\n  routeParams: (keyof TRouteParams)[],\n  meta: Record<string, unknown> = {},\n): Partial<TRouteParams> => {\n  return routeParams.reduce(\n    (acc, key) => {\n      const value = meta[key as string];\n      if (typeof value !== \"undefined\") {\n        acc[key] = value as TRouteParams[keyof TRouteParams];\n      }\n      return acc;\n    },\n    {} as Partial<TRouteParams>,\n  );\n};\n","import type { MetaQuery } from \"../../../contexts/data/types\";\nimport type { ParseResponse } from \"../../../contexts/router/types\";\nimport { pickRouteParams } from \"./pick-route-params\";\nimport { prepareRouteParams } from \"./prepare-route-params\";\n\n/**\n * This function will compose a route with the given params and meta.\n * - A route can have parameters like (eg: /users/:id)\n * - First we pick the route params from the route (eg: [id])\n * - Then we prepare the route params with the given params and meta (eg: { id: 1 })\n * - Then we replace the route params with the prepared route params (eg: /users/1)\n */\nexport const composeRoute = (\n  designatedRoute: string,\n  resourceMeta: MetaQuery = {},\n  parsed: ParseResponse = {},\n  meta: Record<string, unknown> = {},\n): string => {\n  // pickRouteParams (from the route)\n  const routeParams = pickRouteParams(designatedRoute);\n  // prepareRouteParams (from route params, params and meta)\n  const preparedRouteParams = prepareRouteParams(routeParams, {\n    ...resourceMeta,\n    ...(typeof parsed?.id !== \"undefined\" ? { id: parsed.id } : {}),\n    ...(typeof parsed?.action !== \"undefined\" ? { action: parsed.action } : {}),\n    ...(typeof parsed?.resource !== \"undefined\"\n      ? { resource: parsed.resource }\n      : {}),\n    ...parsed?.params,\n    ...meta,\n  });\n  // replace route params with prepared route params\n  return designatedRoute.replace(/:([^\\/]+)/g, (match, key) => {\n    const fromParams = preparedRouteParams[key];\n    if (typeof fromParams !== \"undefined\") {\n      return `${fromParams}`;\n    }\n    return match;\n  });\n};\n","import { useAuthProviderContext } from \"@contexts/auth\";\n\n/**\n * @returns authProvider if provided, otherwise null\n * @internal\n */\nexport const useActiveAuthProvider = () => {\n  const authProvider = useAuthProviderContext();\n\n  if (authProvider.isProvided) {\n    return authProvider;\n  }\n\n  return null;\n};\n","import type { Pagination } from \"../../../contexts/data/types\";\n\ntype HandlePaginationParamsProps = {\n  pagination?: Pagination;\n};\n\nexport const handlePaginationParams = ({\n  pagination,\n}: HandlePaginationParamsProps = {}): Required<Pagination> => {\n  const mode = pagination?.mode ?? \"server\";\n\n  const currentPage = pagination?.currentPage ?? 1;\n\n  const pageSize = pagination?.pageSize ?? 10;\n\n  return {\n    currentPage,\n    pageSize,\n    mode,\n  };\n};\n","import { useState, useEffect } from \"react\";\n\nexport const useMediaQuery = (query: string) => {\n  const [matches, setMatches] = useState(false);\n\n  useEffect(() => {\n    const media = window.matchMedia(query);\n    if (media.matches !== matches) {\n      setMatches(media.matches);\n    }\n    const listener = () => setMatches(media.matches);\n    window.addEventListener(\"resize\", listener);\n    return () => window.removeEventListener(\"resize\", listener);\n  }, [matches, query]);\n\n  return matches;\n};\n","import type { useTranslate } from \"../../../hooks/i18n\";\n\nexport const safeTranslate = (\n  translate: ReturnType<typeof useTranslate>,\n  key: string,\n  defaultMessage?: string,\n  options?: any,\n) => {\n  const translated = options\n    ? translate(key, options, defaultMessage)\n    : translate(key, defaultMessage);\n\n  const fallback = defaultMessage ?? key;\n\n  if (translated === key || typeof translated === \"undefined\") {\n    return fallback;\n  }\n\n  return translated;\n};\n","import { useContext } from \"react\";\n\nimport { RefineContext } from \"@contexts/refine\";\nimport type { IRefineContextOptions } from \"../../contexts/refine/types\";\nimport type { MutationMode } from \"../../contexts/data/types\";\n\ntype UseMutationModeType = (\n  preferredMutationMode?: MutationMode,\n  preferredUndoableTimeout?: number,\n) => {\n  mutationMode: IRefineContextOptions[\"mutationMode\"];\n  undoableTimeout: IRefineContextOptions[\"undoableTimeout\"];\n};\n\n/**\n * Mutation mode determines which mode the mutation runs with.\n * Mutations can run under three different modes: `pessimistic`, `optimistic` and `undoable`.\n * Each mode corresponds to a different type of user experience.\n *\n * @see {@link https://refine.dev/docs/guides-and-concepts/mutation-mode} for more details.\n */\nexport const useMutationMode: UseMutationModeType = (\n  preferredMutationMode?: MutationMode,\n  preferredUndoableTimeout?: number,\n) => {\n  const { mutationMode, undoableTimeout } = useContext(RefineContext);\n\n  return {\n    mutationMode: preferredMutationMode ?? mutationMode,\n    undoableTimeout: preferredUndoableTimeout ?? undoableTimeout,\n  };\n};\n","import { useContext } from \"react\";\n\nimport { RefineContext } from \"@contexts/refine\";\nimport { UnsavedWarnContext } from \"@contexts/unsavedWarn\";\nimport type { IRefineContextOptions } from \"../../../contexts/refine/types\";\nimport type { IUnsavedWarnContext } from \"../../../contexts/unsavedWarn/types\";\n\ntype UseWarnAboutChangeType = () => {\n  warnWhenUnsavedChanges: IRefineContextOptions[\"warnWhenUnsavedChanges\"];\n  warnWhen: NonNullable<IUnsavedWarnContext[\"warnWhen\"]>;\n  setWarnWhen: NonNullable<IUnsavedWarnContext[\"setWarnWhen\"]>;\n};\n\n/**\n * When you have unsaved changes and try to leave the current page, **refine** shows a confirmation modal box.\n * To activate this feature, set the `warnWhenUnsavedChanges` to `true`.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/components/refine-config#warnwhenunsavedchanges} for more details.\n */\nexport const useWarnAboutChange: UseWarnAboutChangeType = () => {\n  const { warnWhenUnsavedChanges } = useContext(RefineContext);\n\n  const { warnWhen, setWarnWhen } = useContext(UnsavedWarnContext);\n\n  return {\n    warnWhenUnsavedChanges,\n    warnWhen: Boolean(warnWhen),\n    setWarnWhen: setWarnWhen ?? (() => undefined),\n  };\n};\n","import React, { useState, type PropsWithChildren } from \"react\";\n\nimport type { IUnsavedWarnContext } from \"./types\";\n\nexport const UnsavedWarnContext = React.createContext<IUnsavedWarnContext>({});\n\nexport const UnsavedWarnContextProvider: React.FC<PropsWithChildren> = ({\n  children,\n}) => {\n  const [warnWhen, setWarnWhen] = useState(false);\n\n  return (\n    <UnsavedWarnContext.Provider value={{ warnWhen, setWarnWhen }}>\n      {children}\n    </UnsavedWarnContext.Provider>\n  );\n};\n","import { useContext } from \"react\";\n\nimport { RefineContext } from \"@contexts/refine\";\nimport type { IRefineContextOptions } from \"../../contexts/refine/types\";\n\ntype UseSyncWithLocationType = () => {\n  syncWithLocation: IRefineContextOptions[\"syncWithLocation\"];\n};\n\n/**\n * List query parameter values can be edited manually by typing directly in the URL.\n * To activate this feature `syncWithLocation` needs to be set to `true`.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/components/refine-config/#syncwithlocation} for more details.\n */\nexport const useSyncWithLocation: UseSyncWithLocationType = () => {\n  const { syncWithLocation } = useContext(RefineContext);\n\n  return { syncWithLocation };\n};\n","import { useContext } from \"react\";\n\nimport { RefineContext } from \"@contexts/refine\";\n\nexport const useRefineContext = () => {\n  const {\n    mutationMode,\n    syncWithLocation,\n    undoableTimeout,\n    warnWhenUnsavedChanges,\n    liveMode,\n    onLiveEvent,\n    options,\n    __initialized,\n  } = useContext(RefineContext);\n\n  return {\n    __initialized,\n    mutationMode,\n    syncWithLocation,\n    undoableTimeout,\n    warnWhenUnsavedChanges,\n    liveMode,\n    onLiveEvent,\n    options,\n  };\n};\n","import { useRefineContext } from \"@hooks/refine\";\n\n/**\n * A method that the internal uses\n * @internal\n */\nexport const useUserFriendlyName = () => {\n  const {\n    options: { textTransformers },\n  } = useRefineContext();\n\n  const getFriendlyName = (name = \"\", type: \"singular\" | \"plural\"): string => {\n    const humanizeName = textTransformers.humanize(name);\n    if (type === \"singular\") {\n      return textTransformers.singular(humanizeName);\n    }\n    return textTransformers.plural(humanizeName);\n  };\n\n  return getFriendlyName;\n};\n","import type { useTranslate } from \"../../../hooks/i18n\";\n\nimport type { IResourceItem } from \"../../../contexts/resource/types\";\nimport { safeTranslate } from \"../safe-translate\";\nimport { useUserFriendlyName } from \"../useUserFriendlyName\";\n\n/**\n * Generates document title for the given resource and action.\n */\nexport function generateDefaultDocumentTitle(\n  translate: ReturnType<typeof useTranslate>,\n  resource?: IResourceItem,\n  action?: string,\n  id?: string,\n  resourceName?: string,\n  getUserFriendlyName?: (name: string, type: \"singular\" | \"plural\") => string,\n) {\n  const getFriendlyName = getUserFriendlyName || useUserFriendlyName();\n\n  const actionPrefixMatcher = {\n    create: \"Create new \",\n    clone: `#${id ?? \"\"} Clone `,\n    edit: `#${id ?? \"\"} Edit `,\n    show: `#${id ?? \"\"} Show `,\n    list: \"\",\n  };\n\n  const identifier = resource?.identifier ?? resource?.name;\n\n  const resourceNameFallback =\n    resource?.meta?.label ??\n    (identifier\n      ? getFriendlyName(identifier, action === \"list\" ? \"plural\" : \"singular\")\n      : identifier);\n\n  const resourceNameWithFallback = resourceName ?? resourceNameFallback;\n\n  const defaultTitle = safeTranslate(\n    translate,\n    \"documentTitle.default\",\n    \"Refine\",\n  );\n  const suffix = safeTranslate(translate, \"documentTitle.suffix\", \" | Refine\");\n  let autoGeneratedTitle = defaultTitle;\n\n  if (action && identifier) {\n    autoGeneratedTitle = safeTranslate(\n      translate,\n      `documentTitle.${identifier}.${action}`,\n      `${\n        actionPrefixMatcher[action as keyof typeof actionPrefixMatcher] ?? \"\"\n      }${resourceNameWithFallback}${suffix}`,\n      { id },\n    );\n  }\n\n  return autoGeneratedTitle;\n}\n","import type { BaseKey } from \"../../../contexts/data/types\";\n\ntype ParametrizedDataActions = \"list\" | \"infinite\";\ntype IdRequiredDataActions = \"one\";\ntype IdsRequiredDataActions = \"many\";\ntype DataMutationActions =\n  | \"custom\"\n  | \"customMutation\"\n  | \"create\"\n  | \"createMany\"\n  | \"update\"\n  | \"updateMany\"\n  | \"delete\"\n  | \"deleteMany\";\n\ntype AuthActionType =\n  | \"login\"\n  | \"logout\"\n  | \"identity\"\n  | \"register\"\n  | \"forgotPassword\"\n  | \"check\"\n  | \"onError\"\n  | \"permissions\"\n  | \"updatePassword\";\n\ntype AuditActionType = \"list\" | \"log\" | \"rename\";\n\ntype IdType = BaseKey;\ntype IdsType = IdType[];\n\ntype ParamsType = any;\n\ntype KeySegment = string | IdType | IdsType | ParamsType;\n\nexport function arrayFindIndex<T>(array: T[], slice: T[]): number {\n  return array.findIndex(\n    (item, index) =>\n      index <= array.length - slice.length &&\n      slice.every(\n        (sliceItem, sliceIndex) => array[index + sliceIndex] === sliceItem,\n      ),\n  );\n}\n\nexport function arrayReplace<T>(\n  array: T[],\n  partToBeReplaced: T[],\n  newPart: T[],\n): T[] {\n  const newArray: T[] = [...array];\n  const startIndex = arrayFindIndex(array, partToBeReplaced);\n\n  if (startIndex !== -1) {\n    newArray.splice(startIndex, partToBeReplaced.length, ...newPart);\n  }\n\n  return newArray;\n}\n\nexport function stripUndefined(segments: KeySegment[]) {\n  return segments.filter((segment) => segment !== undefined);\n}\n\nclass BaseKeyBuilder {\n  segments: KeySegment[] = [];\n\n  constructor(segments: KeySegment[] = []) {\n    this.segments = segments;\n  }\n\n  key() {\n    return this.segments;\n  }\n\n  get() {\n    return this.segments;\n  }\n}\n\nclass ParamsKeyBuilder extends BaseKeyBuilder {\n  params(paramsValue?: ParamsType) {\n    return new BaseKeyBuilder([...this.segments, paramsValue]);\n  }\n}\n\nclass DataIdRequiringKeyBuilder extends BaseKeyBuilder {\n  id(idValue?: IdType) {\n    return new ParamsKeyBuilder([\n      ...this.segments,\n      idValue ? String(idValue) : undefined,\n    ]);\n  }\n}\n\nclass DataIdsRequiringKeyBuilder extends BaseKeyBuilder {\n  ids(...idsValue: IdsType) {\n    return new ParamsKeyBuilder([\n      ...this.segments,\n      ...(idsValue.length ? [idsValue.map((el) => String(el))] : []),\n    ]);\n  }\n}\n\nclass DataResourceKeyBuilder extends BaseKeyBuilder {\n  action(actionType: ParametrizedDataActions): ParamsKeyBuilder;\n  action(actionType: IdRequiredDataActions): DataIdRequiringKeyBuilder;\n  action(actionType: IdsRequiredDataActions): DataIdsRequiringKeyBuilder;\n  action(\n    actionType:\n      | ParametrizedDataActions\n      | IdRequiredDataActions\n      | IdsRequiredDataActions,\n  ): ParamsKeyBuilder | DataIdRequiringKeyBuilder | DataIdsRequiringKeyBuilder {\n    if (actionType === \"one\") {\n      return new DataIdRequiringKeyBuilder([...this.segments, actionType]);\n    }\n    if (actionType === \"many\") {\n      return new DataIdsRequiringKeyBuilder([...this.segments, actionType]);\n    }\n    if ([\"list\", \"infinite\"].includes(actionType)) {\n      return new ParamsKeyBuilder([...this.segments, actionType]);\n    }\n    throw new Error(\"Invalid action type\");\n  }\n}\n\nclass DataKeyBuilder extends BaseKeyBuilder {\n  resource(resourceName?: string) {\n    return new DataResourceKeyBuilder([...this.segments, resourceName]);\n  }\n\n  mutation(mutationName: DataMutationActions) {\n    return new ParamsKeyBuilder([\n      ...(mutationName === \"custom\" ? this.segments : [this.segments[0]]),\n      mutationName,\n    ]);\n  }\n}\n\nclass AuthKeyBuilder extends BaseKeyBuilder {\n  action(actionType: AuthActionType) {\n    return new ParamsKeyBuilder([...this.segments, actionType]);\n  }\n}\n\nclass AccessResourceKeyBuilder extends BaseKeyBuilder {\n  action(resourceName: string) {\n    return new ParamsKeyBuilder([...this.segments, resourceName]);\n  }\n}\n\nclass AccessKeyBuilder extends BaseKeyBuilder {\n  resource(resourceName?: string) {\n    return new AccessResourceKeyBuilder([...this.segments, resourceName]);\n  }\n}\n\nclass AuditActionKeyBuilder extends BaseKeyBuilder {\n  action(actionType: Extract<AuditActionType, \"list\">) {\n    return new ParamsKeyBuilder([...this.segments, actionType]);\n  }\n}\n\nclass AuditKeyBuilder extends BaseKeyBuilder {\n  resource(resourceName?: string) {\n    return new AuditActionKeyBuilder([...this.segments, resourceName]);\n  }\n\n  action(actionType: Extract<AuditActionType, \"rename\" | \"log\">) {\n    return new ParamsKeyBuilder([...this.segments, actionType]);\n  }\n}\n\nexport class KeyBuilder extends BaseKeyBuilder {\n  data(name?: string) {\n    return new DataKeyBuilder([\"data\", name || \"default\"]);\n  }\n\n  auth() {\n    return new AuthKeyBuilder([\"auth\"]);\n  }\n\n  access() {\n    return new AccessKeyBuilder([\"access\"]);\n  }\n\n  audit() {\n    return new AuditKeyBuilder([\"audit\"]);\n  }\n}\n\nexport const keys = () => new KeyBuilder([]);\n","const isNested = (obj: any) => typeof obj === \"object\" && obj !== null;\nconst isArray = (obj: any) => Array.isArray(obj);\n\nexport const flattenObjectKeys = (obj: any, prefix = \"\") => {\n  if (!isNested(obj)) {\n    return {\n      [prefix]: obj,\n    };\n  }\n\n  return Object.keys(obj).reduce(\n    (acc, key) => {\n      const currentPrefix = prefix.length ? `${prefix}.` : \"\";\n\n      if (isNested(obj[key]) && Object.keys(obj[key]).length) {\n        if (isArray(obj[key]) && obj[key].length) {\n          obj[key].forEach((item: unknown[], index: number) => {\n            Object.assign(\n              acc,\n              flattenObjectKeys(item, `${currentPrefix + key}.${index}`),\n            );\n          });\n        } else {\n          Object.assign(acc, flattenObjectKeys(obj[key], currentPrefix + key));\n        }\n        // Even if it's a nested object, it should be treated as a key as well\n        acc[currentPrefix + key] = obj[key];\n      } else {\n        acc[currentPrefix + key] = obj[key];\n      }\n      return acc;\n    },\n    {} as Record<string, unknown>,\n  );\n};\n","export const propertyPathToArray = (propertyPath: string) => {\n  return propertyPath\n    .split(\".\")\n    .map((item) => (!Number.isNaN(Number(item)) ? Number(item) : item));\n};\n","export const downloadInBrowser = (\n  filename: string,\n  content: string,\n  type?: string,\n) => {\n  if (typeof window === \"undefined\") {\n    return;\n  }\n\n  const blob = new Blob([content], { type });\n\n  const link = document.createElement(\"a\");\n  link.setAttribute(\"visibility\", \"hidden\");\n  link.download = filename;\n  const blobUrl = URL.createObjectURL(blob);\n  link.href = blobUrl;\n  document.body.appendChild(link);\n  link.click();\n  document.body.removeChild(link);\n  // As per documentation, call URL.revokeObjectURL to remove the blob from memory.\n  setTimeout(() => {\n    URL.revokeObjectURL(blobUrl);\n  });\n};\n","/**\n * Delays the execution of a callback function asynchronously.\n * This utility function is used to defer the execution of the provided\n * callback, allowing the current call stack to clear before the callback\n * is invoked. It is particularly useful for ensuring non-blocking behavior\n * and providing a clear intent when a 0 ms timeout is used.\n */\nexport const deferExecution = (fn: Function) => {\n  setTimeout(fn, 0);\n};\n","import debounce from \"lodash/debounce\";\n\ntype Callbacks<T extends (...args: any) => any> = {\n  resolve?: (value: Awaited<ReturnType<T>>) => void;\n  reject?: (reason?: any) => void;\n};\n\ntype DebouncedFunction<T extends (...args: any) => any> = {\n  (...args: Parameters<T>): Promise<Awaited<ReturnType<T>>>;\n  flush: () => void;\n  cancel: () => void;\n};\n\n/**\n * Debounces sync and async functions with given wait time. The debounced function returns a promise which can be awaited or catched.\n * Only the last call of the debounced function will resolve or reject.\n * Previous calls will be rejected with the given cancelReason.\n *\n * The original debounce function doesn't work well with async functions,\n * It won't return a promise to resolve/reject and therefore it's not possible to await the result.\n * This will always return a promise to handle and await the result.\n * Previous calls will be rejected immediately after a new call made.\n */\nexport const asyncDebounce = <T extends (...args: any[]) => any>(\n  func: T,\n  wait = 1000,\n  cancelReason?: string,\n): DebouncedFunction<T> => {\n  let callbacks: Array<Callbacks<T>> = [];\n\n  const cancelPrevious = () => {\n    callbacks.forEach((cb) => cb.reject?.(cancelReason));\n    callbacks = [];\n  };\n\n  const debouncedFunc = debounce((...args: Parameters<T>) => {\n    const { resolve, reject } = callbacks.pop() || {};\n    Promise.resolve(func(...args))\n      .then(resolve)\n      .catch(reject);\n  }, wait);\n\n  const runner = (...args: Parameters<T>) => {\n    return new Promise<Awaited<ReturnType<T>>>((resolve, reject) => {\n      cancelPrevious();\n\n      callbacks.push({\n        resolve,\n        reject,\n      });\n\n      debouncedFunc(...args);\n    });\n  };\n\n  runner.flush = () => debouncedFunc.flush();\n  runner.cancel = () => {\n    debouncedFunc.cancel();\n    cancelPrevious();\n  };\n\n  return runner;\n};\n","import type { QueryFunctionContext, QueryKey } from \"@tanstack/react-query\";\n\ntype Context =\n  | QueryFunctionContext<QueryKey, any>\n  | QueryFunctionContext<QueryKey, never>;\n\nexport const prepareQueryContext = (\n  context: Context,\n): Pick<Context, \"queryKey\" | \"signal\"> => {\n  const queryContext: Pick<Context, \"queryKey\" | \"signal\"> = {\n    queryKey: context.queryKey,\n    signal: undefined as any,\n  };\n\n  Object.defineProperty(queryContext, \"signal\", {\n    enumerable: true,\n    get: () => {\n      return context.signal;\n    },\n  });\n\n  return queryContext;\n};\n","export const file2Base64 = (file: any): Promise<string> => {\n  return new Promise((resolve, reject) => {\n    const reader = new FileReader();\n\n    const resultHandler = () => {\n      if (reader.result) {\n        reader.removeEventListener(\"load\", resultHandler, false);\n\n        resolve(reader.result as string);\n      }\n    };\n\n    reader.addEventListener(\"load\", resultHandler, false);\n\n    reader.readAsDataURL(file.originFileObj as Blob);\n    reader.onerror = (error) => {\n      reader.removeEventListener(\"load\", resultHandler, false);\n      return reject(error);\n    };\n  });\n};\n","import { keys } from \"@definitions/index\";\n\nexport const useKeys = () => {\n  return {\n    keys,\n  };\n};\n","import { getXRay } from \"@refinedev/devtools-internal\";\nimport {\n  type UseQueryResult,\n  type UseQueryOptions,\n  useQuery,\n} from \"@tanstack/react-query\";\n\nimport { useAuthProviderContext } from \"@contexts/auth\";\nimport { useKeys } from \"@hooks\";\nimport type { MakeOptional } from \"../../../definitions/types\";\n\nexport type UseGetIdentityProps<TData = any> = {\n  queryOptions?: MakeOptional<UseQueryOptions<TData>, \"queryKey\" | \"queryFn\">;\n};\n\nexport type UseGetIdentityReturnType<TData> = UseQueryResult<TData>;\n\n/**\n * `useGetIdentity` calls `getIdentity` method from {@link https://refine.dev/docs/api-reference/core/providers/auth-provider `authProvider`} under the hood.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/hooks/auth/useGetIdentity} for more details.\n *\n * @typeParam TData - Result data of the query\n *\n */\nexport function useGetIdentity<TData = any>({\n  queryOptions,\n}: UseGetIdentityProps<TData> = {}): UseGetIdentityReturnType<TData> {\n  const { getIdentity } = useAuthProviderContext();\n  const { keys } = useKeys();\n\n  const queryResponse = useQuery<TData>({\n    queryKey: keys().auth().action(\"identity\").get(),\n    queryFn:\n      (getIdentity as (params?: unknown) => Promise<TData>) ??\n      (() => Promise.resolve({})),\n    retry: false,\n    enabled: !!getIdentity,\n    ...queryOptions,\n    meta: {\n      ...queryOptions?.meta,\n      ...getXRay(\"useGetIdentity\"),\n    },\n  });\n\n  return queryResponse;\n}\n","import { getXRay } from \"@refinedev/devtools-internal\";\nimport {\n  type UseMutationOptions,\n  type UseMutationResult,\n  useMutation,\n} from \"@tanstack/react-query\";\n\nimport { useAuthProviderContext } from \"@contexts/auth\";\nimport { useGo, useKeys, useNotification } from \"@hooks\";\n\nimport type {\n  AuthActionResponse,\n  SuccessNotificationResponse,\n} from \"../../../contexts/auth/types\";\nimport type { RefineError } from \"../../../contexts/data/types\";\nimport type { OpenNotificationParams } from \"../../../contexts/notification/types\";\nimport { useInvalidateAuthStore } from \"../useInvalidateAuthStore\";\n\ntype Variables = {\n  redirectPath?: string | false;\n};\n\nexport type UseLogoutProps<TVariables> = {\n  mutationOptions?: Omit<\n    UseMutationOptions<\n      AuthActionResponse,\n      Error | RefineError,\n      (TVariables & Variables) | void,\n      unknown\n    >,\n    \"mutationFn\"\n  >;\n};\n\nexport type UseLogoutReturnType<TVariables> = UseMutationResult<\n  AuthActionResponse,\n  Error | RefineError,\n  (TVariables & Variables) | void,\n  unknown\n>;\n\n/**\n * `useLogout` calls the `logout` method from the {@link https://refine.dev/docs/api-reference/core/providers/auth-provider `authProvider`} under the hood.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/hooks/auth/useLogout} for more details.\n *\n */\nexport function useLogout<TVariables = {}>({\n  mutationOptions,\n}: UseLogoutProps<TVariables> = {}): UseLogoutReturnType<TVariables> {\n  const invalidateAuthStore = useInvalidateAuthStore();\n  const go = useGo();\n  const { open, close } = useNotification();\n  const { logout: logoutFromContext } = useAuthProviderContext();\n  const { keys } = useKeys();\n\n  const mutation = useMutation<\n    AuthActionResponse,\n    Error | RefineError,\n    (TVariables & Variables) | void,\n    unknown\n  >({\n    mutationKey: keys().auth().action(\"logout\").get(),\n    mutationFn: logoutFromContext,\n    ...mutationOptions,\n    onSuccess: (data, variables) => {\n      const { success, error, redirectTo, successNotification } = data;\n      const { redirectPath } = variables ?? {};\n\n      const redirect = redirectPath ?? redirectTo;\n\n      if (success) {\n        close?.(\"useLogout-error\");\n\n        if (successNotification) {\n          open?.(buildSuccessNotification(successNotification));\n        }\n      }\n\n      if (error || !success) {\n        open?.(buildNotification(error));\n      }\n\n      if (redirect !== false) {\n        if (redirect) {\n          go({ to: redirect });\n        }\n      }\n\n      invalidateAuthStore();\n    },\n    onError: (error) => {\n      open?.(buildNotification(error));\n    },\n    meta: {\n      ...mutationOptions?.meta,\n      ...getXRay(\"useLogout\"),\n    },\n  });\n\n  return {\n    ...mutation,\n  };\n}\n\nconst buildNotification = (\n  error?: Error | RefineError,\n): OpenNotificationParams => {\n  return {\n    key: \"useLogout-error\",\n    type: \"error\",\n    message: error?.name || \"Logout Error\",\n    description: error?.message || \"Something went wrong during logout\",\n  };\n};\n\nconst buildSuccessNotification = (\n  successNotification: SuccessNotificationResponse,\n): OpenNotificationParams => {\n  return {\n    message: successNotification.message,\n    description: successNotification.description,\n    key: \"logout-success\",\n    type: \"success\",\n  };\n};\n","import { useKeys } from \"@hooks/useKeys\";\nimport { useQueryClient } from \"@tanstack/react-query\";\n\nexport const useInvalidateAuthStore = () => {\n  const queryClient = useQueryClient();\n  const { keys } = useKeys();\n\n  const invalidate = async () => {\n    await Promise.all(\n      ([\"check\", \"identity\", \"permissions\"] as const).map((action) =>\n        queryClient.invalidateQueries({\n          queryKey: keys().auth().action(action).get(),\n        }),\n      ),\n    );\n  };\n\n  return invalidate;\n};\n","import React from \"react\";\n\nimport { getXRay } from \"@refinedev/devtools-internal\";\nimport {\n  type UseMutationOptions,\n  type UseMutationResult,\n  useMutation,\n} from \"@tanstack/react-query\";\n\nimport { useAuthProviderContext } from \"@contexts/auth\";\nimport { useGo, useKeys, useNotification, useParsed } from \"@hooks\";\n\nimport type {\n  AuthActionResponse,\n  SuccessNotificationResponse,\n} from \"../../../contexts/auth/types\";\nimport type { RefineError } from \"../../../contexts/data/types\";\nimport type { OpenNotificationParams } from \"../../../contexts/notification/types\";\nimport { useInvalidateAuthStore } from \"../useInvalidateAuthStore\";\n\nexport type UseLoginProps<TVariables> = {\n  mutationOptions?: Omit<\n    UseMutationOptions<\n      AuthActionResponse,\n      Error | RefineError,\n      TVariables,\n      unknown\n    >,\n    \"mutationFn\"\n  >;\n};\n\nexport type UseLoginReturnType<TVariables> = UseMutationResult<\n  AuthActionResponse,\n  Error | RefineError,\n  TVariables,\n  unknown\n>;\n\n/**\n * `useLogin` calls `login` method from {@link https://refine.dev/docs/api-reference/core/providers/auth-provider `authProvider`} under the hood.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/hooks/auth/useLogin} for more details.\n *\n * @typeParam TData - Result data of the query\n * @typeParam TVariables - Values for mutation function. default `{}`\n *\n */\nexport function useLogin<TVariables = {}>({\n  mutationOptions,\n}: UseLoginProps<TVariables> = {}): UseLoginReturnType<TVariables> {\n  const invalidateAuthStore = useInvalidateAuthStore();\n  const go = useGo();\n  const parsed = useParsed();\n\n  const { close, open } = useNotification();\n  const { login: loginFromContext } = useAuthProviderContext();\n  const { keys } = useKeys();\n\n  const to = parsed.params?.to;\n\n  const mutation = useMutation<\n    AuthActionResponse,\n    Error | RefineError,\n    TVariables,\n    unknown\n  >({\n    mutationKey: keys().auth().action(\"login\").get(),\n    mutationFn: loginFromContext,\n    onSuccess: async ({ success, redirectTo, error, successNotification }) => {\n      if (success) {\n        close?.(\"login-error\");\n\n        if (successNotification) {\n          open?.(buildSuccessNotification(successNotification));\n        }\n      }\n\n      if (error || !success) {\n        open?.(buildNotification(error));\n      }\n\n      if (success) {\n        if (to) {\n          go({ to: to, type: \"replace\" });\n        } else if (redirectTo) {\n          go({ to: redirectTo, type: \"replace\" });\n        }\n      }\n\n      setTimeout(() => {\n        invalidateAuthStore();\n      }, 32);\n    },\n    onError: (error: any) => {\n      open?.(buildNotification(error));\n    },\n    ...mutationOptions,\n    meta: {\n      ...mutationOptions?.meta,\n      ...getXRay(\"useLogin\"),\n    },\n  });\n\n  return {\n    ...mutation,\n  };\n}\n\nconst buildNotification = (\n  error?: Error | RefineError,\n): OpenNotificationParams => {\n  return {\n    message: error?.name || \"Login Error\",\n    description: error?.message || \"Invalid credentials\",\n    key: \"login-error\",\n    type: \"error\",\n  };\n};\n\nconst buildSuccessNotification = (\n  successNotification: SuccessNotificationResponse,\n): OpenNotificationParams => {\n  return {\n    message: successNotification.message,\n    description: successNotification.description,\n    key: \"login-success\",\n    type: \"success\",\n  };\n};\n","import { getXRay } from \"@refinedev/devtools-internal\";\nimport {\n  type UseMutationOptions,\n  type UseMutationResult,\n  useMutation,\n} from \"@tanstack/react-query\";\n\nimport { useAuthProviderContext } from \"@contexts/auth\";\nimport { useGo, useKeys, useNavigation, useNotification } from \"@hooks\";\n\nimport type {\n  AuthActionResponse,\n  SuccessNotificationResponse,\n} from \"../../../contexts/auth/types\";\nimport type { RefineError } from \"../../../contexts/data/types\";\nimport type { OpenNotificationParams } from \"../../../contexts/notification/types\";\nimport { useInvalidateAuthStore } from \"../useInvalidateAuthStore\";\n\nexport type UseRegisterProps<TVariables> = {\n  mutationOptions?: Omit<\n    UseMutationOptions<\n      AuthActionResponse,\n      Error | RefineError,\n      TVariables,\n      unknown\n    >,\n    \"mutationFn\"\n  >;\n};\n\nexport type UseRegisterReturnType<TVariables> = UseMutationResult<\n  AuthActionResponse,\n  Error | RefineError,\n  TVariables,\n  unknown\n>;\n\n/**\n * `useRegister` calls `register` method from {@link https://refine.dev/docs/api-reference/core/providers/auth-provider `authProvider`} under the hood.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/hooks/auth/useRegister} for more details.\n *\n * @typeParam TVariables - Values for mutation function. default `{}`\n *\n */\nexport function useRegister<TVariables = {}>({\n  mutationOptions,\n}: UseRegisterProps<TVariables> = {}): UseRegisterReturnType<TVariables> {\n  const invalidateAuthStore = useInvalidateAuthStore();\n  const go = useGo();\n  const { close, open } = useNotification();\n  const { register: registerFromContext } = useAuthProviderContext();\n  const { keys } = useKeys();\n\n  const mutation = useMutation<\n    AuthActionResponse,\n    Error | RefineError,\n    TVariables,\n    unknown\n  >({\n    mutationKey: keys().auth().action(\"register\").get(),\n    mutationFn: registerFromContext,\n\n    onSuccess: async ({ success, redirectTo, error, successNotification }) => {\n      if (success) {\n        close?.(\"register-error\");\n\n        if (successNotification) {\n          open?.(buildSuccessNotification(successNotification));\n        }\n      }\n\n      if (error || !success) {\n        open?.(buildNotification(error));\n      }\n\n      if (redirectTo) {\n        go({ to: redirectTo, type: \"replace\" });\n      }\n\n      if (success) {\n        setTimeout(() => {\n          invalidateAuthStore();\n        }, 32);\n      }\n    },\n    onError: (error: any) => {\n      open?.(buildNotification(error));\n    },\n    ...mutationOptions,\n    meta: {\n      ...mutationOptions?.meta,\n      ...getXRay(\"useRegister\"),\n    },\n  });\n\n  return {\n    ...mutation,\n  };\n}\n\nconst buildNotification = (\n  error?: Error | RefineError,\n): OpenNotificationParams => {\n  return {\n    message: error?.name || \"Register Error\",\n    description: error?.message || \"Error while registering\",\n    key: \"register-error\",\n    type: \"error\",\n  };\n};\n\nconst buildSuccessNotification = (\n  successNotification: SuccessNotificationResponse,\n): OpenNotificationParams => {\n  return {\n    message: successNotification.message,\n    description: successNotification.description,\n    key: \"register-success\",\n    type: \"success\",\n  };\n};\n","import { getXRay } from \"@refinedev/devtools-internal\";\nimport {\n  type UseMutationOptions,\n  type UseMutationResult,\n  useMutation,\n} from \"@tanstack/react-query\";\n\nimport { useAuthProviderContext } from \"@contexts/auth\";\nimport { useGo, useKeys, useNotification } from \"@hooks\";\n\nimport type {\n  AuthActionResponse,\n  SuccessNotificationResponse,\n  TForgotPasswordData,\n} from \"../../../contexts/auth/types\";\nimport type { RefineError } from \"../../../contexts/data/types\";\nimport type { OpenNotificationParams } from \"../../../contexts/notification/types\";\n\nexport type UseForgotPasswordProps<TVariables> = {\n  mutationOptions?: Omit<\n    UseMutationOptions<\n      AuthActionResponse | TForgotPasswordData,\n      Error | RefineError,\n      TVariables,\n      unknown\n    >,\n    \"mutationFn\"\n  >;\n};\n\nexport type UseForgotPasswordReturnType<TVariables> = UseMutationResult<\n  AuthActionResponse,\n  Error | RefineError,\n  TVariables,\n  unknown\n>;\n\n/**\n * `useForgotPassword` calls `forgotPassword` method from {@link https://refine.dev/docs/api-reference/core/providers/auth-provider `authProvider`} under the hood.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/hooks/auth/useForgotPassword} for more details.\n *\n * @typeParam TVariables - Values for mutation function. default `{}`\n *\n */\nexport function useForgotPassword<TVariables = {}>({\n  mutationOptions,\n}: UseForgotPasswordProps<TVariables> = {}): UseForgotPasswordReturnType<TVariables> {\n  const go = useGo();\n  const { open, close } = useNotification();\n  const { forgotPassword: forgotPasswordFromContext } =\n    useAuthProviderContext();\n  const { keys } = useKeys();\n\n  const mutation = useMutation<\n    AuthActionResponse,\n    Error | RefineError,\n    TVariables,\n    unknown\n  >({\n    mutationKey: keys().auth().action(\"forgotPassword\").get(),\n    mutationFn: forgotPasswordFromContext,\n\n    onSuccess: ({ success, redirectTo, error, successNotification }) => {\n      if (success) {\n        close?.(\"forgot-password-error\");\n\n        if (successNotification) {\n          open?.(buildSuccessNotification(successNotification));\n        }\n      }\n\n      if (error || !success) {\n        open?.(buildNotification(error));\n      }\n\n      if (redirectTo) {\n        go({ to: redirectTo, type: \"replace\" });\n      }\n    },\n    onError: (error: any) => {\n      open?.(buildNotification(error));\n    },\n    ...mutationOptions,\n    meta: {\n      ...mutationOptions?.meta,\n      ...getXRay(\"useForgotPassword\"),\n    },\n  });\n\n  return {\n    ...mutation,\n  };\n}\n\nconst buildNotification = (\n  error?: Error | RefineError,\n): OpenNotificationParams => {\n  return {\n    message: error?.name || \"Forgot Password Error\",\n    description: error?.message || \"Error while resetting password\",\n    key: \"forgot-password-error\",\n    type: \"error\",\n  };\n};\n\nconst buildSuccessNotification = (\n  successNotification: SuccessNotificationResponse,\n): OpenNotificationParams => {\n  return {\n    message: successNotification.message,\n    description: successNotification.description,\n    key: \"forgot-password-success\",\n    type: \"success\",\n  };\n};\n","import React from \"react\";\nimport { getXRay } from \"@refinedev/devtools-internal\";\nimport {\n  type UseMutationOptions,\n  type UseMutationResult,\n  useMutation,\n} from \"@tanstack/react-query\";\n\nimport { useAuthProviderContext } from \"@contexts/auth\";\nimport { useGo, useKeys, useNotification, useParsed } from \"@hooks\";\n\nimport type {\n  AuthActionResponse,\n  SuccessNotificationResponse,\n} from \"../../../contexts/auth/types\";\nimport type { RefineError } from \"../../../contexts/data/types\";\nimport type { OpenNotificationParams } from \"../../../contexts/notification/types\";\n\nexport type UseUpdatePasswordProps<TVariables> = {\n  mutationOptions?: Omit<\n    UseMutationOptions<\n      AuthActionResponse,\n      Error | RefineError,\n      TVariables,\n      unknown\n    >,\n    \"mutationFn\"\n  >;\n};\n\nexport type UseUpdatePasswordReturnType<TVariables> = UseMutationResult<\n  AuthActionResponse,\n  Error | RefineError,\n  TVariables,\n  unknown\n>;\n\n/**\n * `useUpdatePassword` calls `updatePassword` method from {@link https://refine.dev/docs/api-reference/core/providers/auth-provider `authProvider`} under the hood.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/hooks/auth/useUpdatePassword} for more details.\n *\n * @typeParam TVariables - Values for mutation function. default `{}`\n *\n */\nexport function useUpdatePassword<TVariables = {}>({\n  mutationOptions,\n}: UseUpdatePasswordProps<TVariables> = {}): UseUpdatePasswordReturnType<TVariables> {\n  const go = useGo();\n  const { updatePassword: updatePasswordFromContext } =\n    useAuthProviderContext();\n  const { close, open } = useNotification();\n  const { keys } = useKeys();\n  const parsed = useParsed();\n  const params = parsed.params ?? {};\n\n  const mutation = useMutation<\n    AuthActionResponse,\n    Error | RefineError,\n    TVariables,\n    unknown\n  >({\n    mutationKey: keys().auth().action(\"updatePassword\").get(),\n    mutationFn: async (variables) => {\n      return updatePasswordFromContext?.({\n        ...params,\n        ...variables,\n      }) as Promise<AuthActionResponse>;\n    },\n    onSuccess: ({ success, redirectTo, error, successNotification }) => {\n      if (success) {\n        close?.(\"update-password-error\");\n\n        if (successNotification) {\n          open?.(buildSuccessNotification(successNotification));\n        }\n      }\n\n      if (error || !success) {\n        open?.(buildNotification(error));\n      }\n\n      if (redirectTo) {\n        go({ to: redirectTo, type: \"replace\" });\n      }\n    },\n    onError: (error: any) => {\n      open?.(buildNotification(error));\n    },\n    ...mutationOptions,\n    meta: {\n      ...mutationOptions?.meta,\n      ...getXRay(\"useUpdatePassword\"),\n    },\n  });\n\n  return {\n    ...mutation,\n  };\n}\n\nconst buildNotification = (\n  error?: Error | RefineError,\n): OpenNotificationParams => {\n  return {\n    message: error?.name || \"Update Password Error\",\n    description: error?.message || \"Error while updating password\",\n    key: \"update-password-error\",\n    type: \"error\",\n  };\n};\n\nconst buildSuccessNotification = (\n  successNotification: SuccessNotificationResponse,\n): OpenNotificationParams => {\n  return {\n    message: successNotification.message,\n    description: successNotification.description,\n    key: \"update-password-success\",\n    type: \"success\",\n  };\n};\n","import { getXRay } from \"@refinedev/devtools-internal\";\nimport {\n  type UseQueryOptions,\n  type UseQueryResult,\n  useQuery,\n} from \"@tanstack/react-query\";\n\nimport { useAuthProviderContext } from \"@contexts/auth\";\nimport { useKeys } from \"@hooks\";\n\nimport type { CheckResponse } from \"../../../contexts/auth/types\";\n\nexport type UseIsAuthenticatedProps = {\n  // Make queryKey and queryFn optional\n  queryOptions?: Omit<UseQueryOptions<CheckResponse>, \"queryKey\" | \"queryFn\">;\n  params?: any;\n};\n\nexport type UseIsAuthenticatedReturnType = UseQueryResult<CheckResponse, any>;\n\n/**\n * `useIsAuthenticated` calls `check` method from {@link https://refine.dev/docs/authentication/auth-provider/#check   `authProvider`} under the hood.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/hooks/auth/useIsAuthenticated} for more details.\n *\n */\nexport function useIsAuthenticated({\n  queryOptions,\n  params,\n}: UseIsAuthenticatedProps = {}): UseIsAuthenticatedReturnType {\n  const { check } = useAuthProviderContext();\n  const { keys } = useKeys();\n\n  const queryResponse = useQuery<CheckResponse>({\n    queryKey: keys().auth().action(\"check\").get(),\n    queryFn: async () => (await check?.(params)) ?? { authenticated: true },\n    retry: false,\n    ...queryOptions,\n    meta: {\n      ...queryOptions?.meta,\n      ...getXRay(\"useIsAuthenticated\"),\n    },\n  });\n\n  return queryResponse;\n}\n","import { getXRay } from \"@refinedev/devtools-internal\";\nimport { type UseMutationResult, useMutation } from \"@tanstack/react-query\";\n\nimport { useAuthProviderContext } from \"@contexts/auth\";\nimport { useGo, useLogout } from \"@hooks\";\nimport { useKeys } from \"@hooks/useKeys\";\n\nimport type { OnErrorResponse } from \"../../../contexts/auth/types\";\n\nexport type UseOnErrorReturnType = UseMutationResult<\n  OnErrorResponse,\n  unknown,\n  unknown,\n  unknown\n>;\n\n/**\n * `useOnError` calls the `checkError` method from the {@link https://refine.dev/docs/core/providers/auth-provider `authProvider`} under the hood.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/hooks/auth/useCheckError} for more details.\n *\n */\nexport function useOnError(): UseOnErrorReturnType {\n  const go = useGo();\n\n  const { onError: onErrorFromContext } = useAuthProviderContext();\n\n  const { keys } = useKeys();\n\n  const { mutate: logout } = useLogout();\n\n  const mutation = useMutation<OnErrorResponse, unknown, unknown, unknown>({\n    mutationKey: keys().auth().action(\"onError\").get(),\n    ...(onErrorFromContext\n      ? {\n          mutationFn: onErrorFromContext,\n          onSuccess: ({ logout: shouldLogout, redirectTo }) => {\n            if (shouldLogout) {\n              logout({ redirectPath: redirectTo });\n              return;\n            }\n\n            if (redirectTo) {\n              go({ to: redirectTo, type: \"replace\" });\n              return;\n            }\n          },\n        }\n      : {\n          mutationFn: () => ({}) as Promise<OnErrorResponse>,\n        }),\n    meta: {\n      ...getXRay(\"useOnError\"),\n    },\n  });\n\n  return {\n    ...mutation,\n  };\n}\n","import { useAuthProviderContext } from \"@contexts/auth\";\n\n/**\n * A hook that the UI uses\n * @internal\n */\nexport const useIsExistAuthentication = (): boolean => {\n  const { isProvided } = useAuthProviderContext();\n\n  return Boolean(isProvided);\n};\n","import { useEffect } from \"react\";\n\nimport { getXRay } from \"@refinedev/devtools-internal\";\nimport { useMemo } from \"react\";\nimport {\n  type QueryObserverResult,\n  type UseQueryOptions,\n  useQuery,\n} from \"@tanstack/react-query\";\n\nimport {\n  handlePaginationParams,\n  pickDataProvider,\n  prepareQueryContext,\n} from \"@definitions/helpers\";\nimport {\n  useDataProvider,\n  useHandleNotification,\n  useKeys,\n  useMeta,\n  useOnError,\n  useResourceParams,\n  useResourceSubscription,\n  useTranslate,\n} from \"@hooks\";\n\nimport type {\n  BaseRecord,\n  CrudFilter,\n  CrudSort,\n  GetListResponse,\n  HttpError,\n  MetaQuery,\n  Pagination,\n  Prettify,\n} from \"../../contexts/data/types\";\nimport type { LiveModeProps } from \"../../contexts/live/types\";\nimport type { SuccessErrorNotification } from \"../../contexts/notification/types\";\nimport {\n  type UseLoadingOvertimeOptionsProps,\n  type UseLoadingOvertimeReturnType,\n  useLoadingOvertime,\n} from \"../useLoadingOvertime\";\nimport type { MakeOptional } from \"../../definitions/types/index\";\n\nexport type BaseListProps = {\n  /**\n   * Pagination properties\n   */\n  pagination?: Pagination;\n  /**\n   * Sorter parameters\n   */\n  sorters?: CrudSort[];\n  /**\n   * Filter parameters\n   */\n  filters?: CrudFilter[];\n  /**\n   * Meta data query for `dataProvider`\n   */\n  meta?: MetaQuery;\n  /**\n   * If there is more than one `dataProvider`, you should use the `dataProviderName` that you will use\n   */\n  dataProviderName?: string;\n};\n\nexport type UseListQueryOptions<TQueryFnData, TError, TData> = MakeOptional<\n  UseQueryOptions<\n    GetListResponse<TQueryFnData>,\n    TError,\n    GetListResponse<TData>\n  >,\n  \"queryKey\" | \"queryFn\"\n>;\n\nexport type UseListProps<TQueryFnData, TError, TData> = {\n  /**\n   * Resource name for API data interactions\n   */\n  resource?: string;\n\n  /**\n   * Tanstack Query's [useQuery](https://tanstack.com/query/v5/docs/framework/react/reference/useQuery) options\n   */\n  queryOptions?: UseListQueryOptions<TQueryFnData, TError, TData>;\n} & BaseListProps &\n  SuccessErrorNotification<\n    GetListResponse<TData>,\n    TError,\n    Prettify<BaseListProps>\n  > &\n  LiveModeProps &\n  UseLoadingOvertimeOptionsProps;\n\nexport type UseListReturnType<TData, TError> = {\n  query: QueryObserverResult<GetListResponse<TData>, TError>;\n  result: {\n    data: TData[];\n    total: number | undefined;\n    [key: string]: any;\n  };\n} & UseLoadingOvertimeReturnType;\n\nconst EMPTY_ARRAY = Object.freeze([]) as [];\n\n/**\n * `useList` is a modified version of `react-query`'s {@link https://tanstack.com/query/v5/docs/framework/react/guides/queries `useQuery`} used for retrieving items from a `resource` with pagination, sort, and filter configurations.\n *\n * It uses the `getList` method as the query function from the `dataProvider` which is passed to `<Refine>`.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/hooks/data/useList} for more details.\n *\n * @typeParam TQueryFnData - Result data returned by the query function. Extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}\n * @typeParam TError - Custom error object that extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#httperror `HttpError`}\n * @typeParam TData - Result data returned by the `select` function. Extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}. Defaults to `TQueryFnData`\n *\n */\n\nexport const useList = <\n  TQueryFnData extends BaseRecord = BaseRecord,\n  TError extends HttpError = HttpError,\n  TData extends BaseRecord = TQueryFnData,\n>({\n  resource: resourceFromProp,\n  filters,\n  pagination,\n  sorters,\n  queryOptions,\n  successNotification,\n  errorNotification,\n  meta,\n  liveMode,\n  onLiveEvent,\n  liveParams,\n  dataProviderName,\n  overtimeOptions,\n}: UseListProps<TQueryFnData, TError, TData> = {}): UseListReturnType<\n  TData,\n  TError\n> &\n  UseLoadingOvertimeReturnType => {\n  const { resources, resource, identifier } = useResourceParams({\n    resource: resourceFromProp,\n  });\n\n  const dataProvider = useDataProvider();\n  const translate = useTranslate();\n  const { mutate: checkError } = useOnError();\n  const handleNotification = useHandleNotification();\n  const getMeta = useMeta();\n  const { keys } = useKeys();\n\n  const pickedDataProvider = pickDataProvider(\n    identifier,\n    dataProviderName,\n    resources,\n  );\n  const preferredMeta = meta;\n  const prefferedFilters = filters;\n  const prefferedSorters = sorters;\n  const prefferedPagination = handlePaginationParams({\n    pagination,\n  });\n  const isServerPagination = prefferedPagination.mode === \"server\";\n\n  const combinedMeta = getMeta({ resource, meta: preferredMeta });\n\n  const notificationValues = {\n    meta: combinedMeta,\n    filters: prefferedFilters,\n    hasPagination: isServerPagination,\n    pagination: prefferedPagination,\n    sorters: prefferedSorters,\n  };\n\n  const isEnabled =\n    queryOptions?.enabled === undefined || queryOptions?.enabled === true;\n\n  const { getList } = dataProvider(pickedDataProvider);\n\n  useResourceSubscription({\n    resource: identifier,\n    types: [\"*\"],\n    params: {\n      meta: combinedMeta,\n      pagination: prefferedPagination,\n      hasPagination: isServerPagination,\n      sorters: prefferedSorters,\n      filters: prefferedFilters,\n      subscriptionType: \"useList\",\n      ...liveParams,\n    },\n    channel: `resources/${resource?.name}`,\n    enabled: isEnabled,\n    liveMode,\n    onLiveEvent,\n    meta: {\n      ...meta,\n      dataProviderName: pickedDataProvider,\n    },\n  });\n\n  // Memoize the select function to prevent it from running multiple times\n  // Note: If queryOptions.select is not memoized by the user, this will still\n  // re-run on every render. Users should wrap their select function in useCallback.\n  const memoizedSelect = useMemo(() => {\n    return (rawData: GetListResponse<TQueryFnData>): GetListResponse<TData> => {\n      let data = rawData;\n\n      if (prefferedPagination.mode === \"client\") {\n        data = {\n          ...data,\n          data: data.data.slice(\n            (prefferedPagination.currentPage - 1) *\n              prefferedPagination.pageSize,\n            prefferedPagination.currentPage * prefferedPagination.pageSize,\n          ),\n          total: data.total,\n        };\n      }\n\n      if (queryOptions?.select) {\n        return queryOptions?.select?.(data);\n      }\n\n      return data as unknown as GetListResponse<TData>;\n    };\n  }, [\n    prefferedPagination.currentPage,\n    prefferedPagination.pageSize,\n    prefferedPagination.mode,\n    queryOptions?.select,\n  ]);\n\n  const queryResponse = useQuery<\n    GetListResponse<TQueryFnData>,\n    TError,\n    GetListResponse<TData>\n  >({\n    queryKey: keys()\n      .data(pickedDataProvider)\n      .resource(identifier ?? \"\")\n      .action(\"list\")\n      .params({\n        ...(preferredMeta || {}),\n        filters: prefferedFilters,\n        ...(isServerPagination && {\n          pagination: prefferedPagination,\n        }),\n        ...(sorters && {\n          sorters,\n        }),\n      })\n      .get(),\n    queryFn: (context) => {\n      const meta = {\n        ...combinedMeta,\n        ...prepareQueryContext(context),\n      };\n      return getList<TQueryFnData>({\n        resource: resource?.name ?? \"\",\n        pagination: prefferedPagination,\n        filters: prefferedFilters,\n        sorters: prefferedSorters,\n        meta,\n      });\n    },\n    ...queryOptions,\n    enabled:\n      typeof queryOptions?.enabled !== \"undefined\"\n        ? queryOptions?.enabled\n        : !!resource?.name,\n    select: memoizedSelect,\n    meta: {\n      ...queryOptions?.meta,\n      ...getXRay(\"useList\", resource?.name),\n    },\n  });\n\n  // Handle success\n  useEffect(() => {\n    if (queryResponse.isSuccess && queryResponse.data) {\n      const notificationConfig =\n        typeof successNotification === \"function\"\n          ? successNotification(\n              queryResponse.data,\n              notificationValues,\n              identifier,\n            )\n          : successNotification;\n\n      handleNotification(notificationConfig);\n    }\n  }, [queryResponse.isSuccess, queryResponse.data, successNotification]);\n\n  // Handle error\n  useEffect(() => {\n    if (queryResponse.isError && queryResponse.error) {\n      checkError(queryResponse.error);\n\n      const notificationConfig =\n        typeof errorNotification === \"function\"\n          ? errorNotification(\n              queryResponse.error,\n              notificationValues,\n              identifier,\n            )\n          : errorNotification;\n\n      handleNotification(notificationConfig, {\n        key: `${identifier}-useList-notification`,\n        message: translate(\n          \"notifications.error\",\n          { statusCode: queryResponse.error.statusCode },\n          `Error (status code: ${queryResponse.error.statusCode})`,\n        ),\n        description: queryResponse.error.message,\n        type: \"error\",\n      });\n    }\n  }, [queryResponse.isError, queryResponse.error?.message]);\n\n  const { elapsedTime } = useLoadingOvertime({\n    ...overtimeOptions,\n    isLoading: queryResponse.isFetching,\n  });\n\n  return {\n    query: queryResponse,\n    result: {\n      ...queryResponse?.data,\n      data: queryResponse?.data?.data || EMPTY_ARRAY,\n      total: queryResponse?.data?.total,\n    },\n    overtime: { elapsedTime },\n  };\n};\n","import { useEffect, useState } from \"react\";\nimport { useRefineContext } from \"..\";\n\nexport type UseLoadingOvertimeRefineContext = Omit<\n  UseLoadingOvertimeCoreProps,\n  \"isLoading\" | \"interval\"\n> &\n  Required<Pick<UseLoadingOvertimeCoreProps, \"interval\">>;\n\nexport type UseLoadingOvertimeOptionsProps = {\n  overtimeOptions?: UseLoadingOvertimeCoreOptions;\n};\n\nexport type UseLoadingOvertimeReturnType = {\n  overtime: {\n    elapsedTime?: number;\n  };\n};\n\ntype UseLoadingOvertimeCoreOptions = Omit<\n  UseLoadingOvertimeCoreProps,\n  \"isLoading\"\n>;\n\ntype UseLoadingOvertimeCoreReturnType = {\n  elapsedTime?: number;\n};\n\nexport type UseLoadingOvertimeCoreProps = {\n  /**\n   * If true, the elapsed time will be calculated. If set to false; the elapsed time will be `undefined`.\n   *\n   * @default: true\n   */\n  enabled?: boolean;\n\n  /**\n   * The loading state. If true, the elapsed time will be calculated.\n   */\n  isLoading: boolean;\n\n  /**\n   * The interval in milliseconds. If the loading time exceeds this time, the `onInterval` callback will be called.\n   * If not specified, the `interval` value from the `overtime` option of the `RefineProvider` will be used.\n   *\n   * @default: 1000 (1 second)\n   */\n  interval?: number;\n\n  /**\n   * The callback function that will be called when the loading time exceeds the specified time.\n   * If not specified, the `onInterval` value from the `overtime` option of the `RefineProvider` will be used.\n   *\n   * @param elapsedInterval The elapsed time in milliseconds.\n   */\n  onInterval?: (elapsedInterval: number) => void;\n};\n\n/**\n * if you need to do something when the loading time exceeds the specified time, refine provides the `useLoadingOvertime` hook.\n * It returns the elapsed time in milliseconds.\n *\n * @example\n * const { elapsedTime } = useLoadingOvertime({\n *    isLoading,\n *    interval: 1000,\n *    onInterval(elapsedInterval) {\n *        console.log(\"loading overtime\", elapsedInterval);\n *    },\n * });\n */\nexport const useLoadingOvertime = ({\n  enabled: enabledProp,\n  isLoading,\n  interval: intervalProp,\n  onInterval: onIntervalProp,\n}: UseLoadingOvertimeCoreProps): UseLoadingOvertimeCoreReturnType => {\n  const [elapsedTime, setElapsedTime] = useState<number | undefined>(undefined);\n  // get overtime options from refine context\n  const { options } = useRefineContext();\n  const { overtime } = options;\n\n  // pick props or refine context options\n  const interval = intervalProp ?? overtime.interval;\n  const onInterval = onIntervalProp ?? overtime?.onInterval;\n  const enabled =\n    typeof enabledProp !== \"undefined\"\n      ? enabledProp\n      : typeof overtime.enabled !== \"undefined\"\n        ? overtime.enabled\n        : true;\n\n  useEffect(() => {\n    let intervalFn: ReturnType<typeof setInterval>;\n\n    if (enabled && isLoading) {\n      intervalFn = setInterval(() => {\n        // increase elapsed time\n        setElapsedTime((prevElapsedTime) => {\n          if (prevElapsedTime === undefined) {\n            return interval;\n          }\n\n          return prevElapsedTime + interval;\n        });\n      }, interval);\n    }\n\n    return () => {\n      if (typeof intervalFn !== \"undefined\") {\n        clearInterval(intervalFn);\n      }\n      // reset elapsed time\n      setElapsedTime(undefined);\n    };\n  }, [isLoading, interval, enabled]);\n\n  useEffect(() => {\n    // call onInterval callback\n    if (onInterval && elapsedTime) {\n      onInterval(elapsedTime);\n    }\n  }, [elapsedTime]);\n\n  return {\n    elapsedTime,\n  };\n};\n","import { useEffect } from \"react\";\nimport { getXRay } from \"@refinedev/devtools-internal\";\nimport {\n  type QueryObserverResult,\n  type UseQueryOptions,\n  useQuery,\n} from \"@tanstack/react-query\";\n\nimport { pickDataProvider, prepareQueryContext } from \"@definitions\";\nimport {\n  useDataProvider,\n  useHandleNotification,\n  useKeys,\n  useMeta,\n  useOnError,\n  useResourceParams,\n  useResourceSubscription,\n  useTranslate,\n} from \"@hooks\";\n\nimport type {\n  BaseKey,\n  BaseRecord,\n  GetOneResponse,\n  HttpError,\n  MetaQuery,\n  Prettify,\n} from \"../../contexts/data/types\";\nimport type { LiveModeProps } from \"../../contexts/live/types\";\nimport type { SuccessErrorNotification } from \"../../contexts/notification/types\";\nimport {\n  type UseLoadingOvertimeOptionsProps,\n  type UseLoadingOvertimeReturnType,\n  useLoadingOvertime,\n} from \"../useLoadingOvertime\";\n\nexport type UseOneProps<TQueryFnData, TError, TData> = {\n  /**\n   * Resource name for API data interactions\n   */\n  resource?: string;\n  /**\n   * id of the item in the resource\n   * @type [`BaseKey`](/docs/api-reference/core/interfaceReferences/#basekey)\n   */\n  id?: BaseKey;\n  /**\n   * react-query's [useQuery](https://tanstack.com/query/v5/docs/framework/react/reference/useQuery) options\n   */\n  queryOptions?: Omit<\n    UseQueryOptions<\n      GetOneResponse<TQueryFnData>,\n      TError,\n      GetOneResponse<TData>\n    >,\n    \"queryKey\" | \"queryFn\"\n  > & {\n    // Make queryKey and queryFn optional\n    queryKey?: UseQueryOptions<\n      GetOneResponse<TQueryFnData>,\n      TError,\n      GetOneResponse<TData>\n    >[\"queryKey\"];\n    queryFn?: UseQueryOptions<\n      GetOneResponse<TQueryFnData>,\n      TError,\n      GetOneResponse<TData>\n    >[\"queryFn\"];\n  };\n  /**\n   * Metadata query for `dataProvider`,\n   */\n  meta?: MetaQuery;\n  /**\n   * If there is more than one `dataProvider`, you should use the `dataProviderName` that you will use.\n   * @default `\"default\"``\n   */\n  dataProviderName?: string;\n} & SuccessErrorNotification<\n  GetOneResponse<TData>,\n  TError,\n  Prettify<{ id?: BaseKey } & MetaQuery>\n> &\n  LiveModeProps &\n  UseLoadingOvertimeOptionsProps;\n\nexport type UseOneReturnType<TData, TError> = {\n  query: QueryObserverResult<GetOneResponse<TData>, TError>;\n  result: TData | undefined;\n} & UseLoadingOvertimeReturnType;\n\n/**\n * `useOne` is a modified version of `react-query`'s {@link https://tanstack.com/query/v5/docs/framework/react/guides/queries `useQuery`} used for retrieving single items from a `resource`.\n *\n * It uses `getOne` method as query function from the `dataProvider` which is passed to `<Refine>`.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/hooks/data/useOne} for more details.\n *\n * @typeParam TQueryFnData - Result data returned by the query function. Extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}\n * @typeParam TError - Custom error object that extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#httperror `HttpError`}\n * @typeParam TData - Result data returned by the `select` function. Extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}. Defaults to `TQueryFnData`\n *\n */\n\nexport const useOne = <\n  TQueryFnData extends BaseRecord = BaseRecord,\n  TError extends HttpError = HttpError,\n  TData extends BaseRecord = TQueryFnData,\n>({\n  resource: resourceFromProp,\n  id,\n  queryOptions,\n  successNotification,\n  errorNotification,\n  meta,\n  liveMode,\n  onLiveEvent,\n  liveParams,\n  dataProviderName,\n  overtimeOptions,\n}: UseOneProps<TQueryFnData, TError, TData>): UseOneReturnType<TData, TError> &\n  UseLoadingOvertimeReturnType => {\n  const { resources, resource, identifier } = useResourceParams({\n    resource: resourceFromProp,\n  });\n\n  const dataProvider = useDataProvider();\n  const translate = useTranslate();\n  const { mutate: checkError } = useOnError();\n  const handleNotification = useHandleNotification();\n  const getMeta = useMeta();\n  const { keys } = useKeys();\n\n  const preferredMeta = meta;\n  const pickedDataProvider = pickDataProvider(\n    identifier,\n    dataProviderName,\n    resources,\n  );\n\n  const { getOne } = dataProvider(pickedDataProvider);\n\n  const combinedMeta = getMeta({ resource, meta: preferredMeta });\n\n  const isEnabled =\n    typeof queryOptions?.enabled !== \"undefined\"\n      ? queryOptions?.enabled === true\n      : typeof resource?.name !== \"undefined\" && typeof id !== \"undefined\";\n\n  useResourceSubscription({\n    resource: identifier,\n    types: [\"*\"],\n    channel: `resources/${resource?.name}`,\n    params: {\n      ids: id ? [id] : [],\n      id: id,\n      meta: combinedMeta,\n      subscriptionType: \"useOne\",\n      ...liveParams,\n    },\n    enabled: isEnabled,\n    liveMode,\n    onLiveEvent,\n    meta: {\n      ...meta,\n      dataProviderName: pickedDataProvider,\n    },\n  });\n\n  const queryResponse = useQuery<\n    GetOneResponse<TQueryFnData>,\n    TError,\n    GetOneResponse<TData>\n  >({\n    queryKey: keys()\n      .data(pickedDataProvider)\n      .resource(identifier ?? \"\")\n      .action(\"one\")\n      .id(id ?? \"\")\n      .params({\n        ...(preferredMeta || {}),\n      })\n      .get(),\n    queryFn: (context) =>\n      getOne<TQueryFnData>({\n        resource: resource?.name ?? \"\",\n        id: id!,\n        meta: {\n          ...combinedMeta,\n          ...prepareQueryContext(context as any),\n        },\n      }),\n    ...queryOptions,\n    enabled: isEnabled,\n    meta: {\n      ...queryOptions?.meta,\n      ...getXRay(\"useOne\", resource?.name),\n    },\n  });\n\n  // Handle success\n  useEffect(() => {\n    if (queryResponse.isSuccess && queryResponse.data) {\n      const notificationConfig =\n        typeof successNotification === \"function\"\n          ? successNotification(\n              queryResponse.data,\n              {\n                id,\n                ...combinedMeta,\n              },\n              identifier,\n            )\n          : successNotification;\n\n      handleNotification(notificationConfig);\n    }\n  }, [queryResponse.isSuccess, queryResponse.data, successNotification]);\n\n  // Handle error\n  useEffect(() => {\n    if (queryResponse.isError && queryResponse.error) {\n      checkError(queryResponse.error);\n\n      const notificationConfig =\n        typeof errorNotification === \"function\"\n          ? errorNotification(\n              queryResponse.error,\n              {\n                id,\n                ...combinedMeta,\n              },\n              identifier,\n            )\n          : errorNotification;\n\n      handleNotification(notificationConfig, {\n        key: `${id}-${identifier}-getOne-notification`,\n        message: translate(\n          \"notifications.error\",\n          { statusCode: queryResponse.error.statusCode },\n          `Error (status code: ${queryResponse.error.statusCode})`,\n        ),\n        description: queryResponse.error.message,\n        type: \"error\",\n      });\n    }\n  }, [queryResponse.isError, queryResponse.error?.message]);\n\n  const { elapsedTime } = useLoadingOvertime({\n    ...overtimeOptions,\n    isLoading: queryResponse.isFetching,\n  });\n\n  return {\n    query: queryResponse,\n    result: queryResponse.data?.data,\n    overtime: { elapsedTime },\n  };\n};\n","import { useEffect } from \"react\";\nimport { getXRay } from \"@refinedev/devtools-internal\";\nimport {\n  type QueryObserverResult,\n  type UseQueryOptions,\n  useQuery,\n} from \"@tanstack/react-query\";\n\nimport {\n  handleMultiple,\n  pickDataProvider,\n  prepareQueryContext,\n} from \"@definitions/helpers\";\nimport {\n  useDataProvider,\n  useHandleNotification,\n  useKeys,\n  useMeta,\n  useOnError,\n  useResourceParams,\n  useResourceSubscription,\n  useTranslate,\n} from \"@hooks\";\n\nimport type {\n  BaseKey,\n  BaseRecord,\n  GetManyResponse,\n  HttpError,\n  MetaQuery,\n} from \"../../contexts/data/types\";\nimport type { LiveModeProps } from \"../../contexts/live/types\";\nimport type { SuccessErrorNotification } from \"../../contexts/notification/types\";\nimport {\n  type UseLoadingOvertimeOptionsProps,\n  type UseLoadingOvertimeReturnType,\n  useLoadingOvertime,\n} from \"../useLoadingOvertime\";\nimport warnOnce from \"warn-once\";\nimport type { MakeOptional } from \"../../definitions/types\";\n\nexport type UseManyQueryOptions<TQueryFnData, TError, TData> = MakeOptional<\n  UseQueryOptions<\n    GetManyResponse<TQueryFnData>,\n    TError,\n    GetManyResponse<TData>\n  >,\n  \"queryKey\" | \"queryFn\"\n>;\n\nexport type UseManyReturnType<\n  TData extends BaseRecord = BaseRecord,\n  TError extends HttpError = HttpError,\n> = {\n  query: QueryObserverResult<GetManyResponse<TData>, TError>;\n  result: {\n    data: TData[];\n  };\n} & UseLoadingOvertimeReturnType;\n\nexport type UseManyProps<TQueryFnData, TError, TData> = {\n  /**\n   * Resource name for API data interactions\n   */\n  resource: string;\n  /**\n   * ids of the item in the resource\n   * @type [`BaseKey[]`](/docs/api-reference/core/interfaceReferences/#basekey)\n   */\n  ids: BaseKey[];\n  /**\n   * react-query's [useQuery](https://tanstack.com/query/v5/docs/framework/react/reference/useQuery) options\n   */\n  queryOptions?: UseManyQueryOptions<TQueryFnData, TError, TData>;\n  /**\n   * Meta data for `dataProvider`\n   */\n  meta?: MetaQuery;\n  /**\n   * If there is more than one `dataProvider`, you should use the `dataProviderName` that you will use.\n   * @default \"default\"\n   */\n  dataProviderName?: string;\n} & SuccessErrorNotification<GetManyResponse<TData>, TError, BaseKey[]> &\n  LiveModeProps &\n  UseLoadingOvertimeOptionsProps;\n\nconst EMPTY_ARRAY = Object.freeze([]) as [];\n\n/**\n * `useMany` is a modified version of `react-query`'s {@link https://tanstack.com/query/v5/docs/framework/react/guides/queries `useQuery`} used for retrieving multiple items from a `resource`.\n *\n * It uses `getMany` method as query function from the `dataProvider` which is passed to `<Refine>`.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/hooks/data/useMany} for more details.\n *\n * @typeParam TQueryFnData - Result data returned by the query function. Extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}\n * @typeParam TError - Custom error object that extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#httperror `HttpError`}\n * @typeParam TData - Result data returned by the `select` function. Extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}. Defaults to `TQueryFnData`\n *\n */\n\nexport const useMany = <\n  TQueryFnData extends BaseRecord = BaseRecord,\n  TError extends HttpError = HttpError,\n  TData extends BaseRecord = TQueryFnData,\n>({\n  resource: resourceFromProp,\n  ids,\n  queryOptions,\n  successNotification,\n  errorNotification,\n  meta,\n  liveMode,\n  onLiveEvent,\n  liveParams,\n  dataProviderName,\n  overtimeOptions,\n}: UseManyProps<TQueryFnData, TError, TData>): UseManyReturnType<\n  TData,\n  TError\n> &\n  UseLoadingOvertimeReturnType => {\n  const { resources, resource, identifier } = useResourceParams({\n    resource: resourceFromProp,\n  });\n  const dataProvider = useDataProvider();\n  const translate = useTranslate();\n  const { mutate: checkError } = useOnError();\n  const handleNotification = useHandleNotification();\n  const getMeta = useMeta();\n  const { keys } = useKeys();\n\n  const preferredMeta = meta;\n  const pickedDataProvider = pickDataProvider(\n    identifier,\n    dataProviderName,\n    resources,\n  );\n  const isEnabled =\n    queryOptions?.enabled === undefined || queryOptions?.enabled === true;\n\n  const { getMany, getOne } = dataProvider(pickedDataProvider);\n\n  const combinedMeta = getMeta({ resource, meta: preferredMeta });\n\n  const hasIds = Array.isArray(ids);\n  const hasResource = Boolean(resource?.name);\n  const manuallyEnabled = queryOptions?.enabled === true;\n\n  warnOnce(\n    !hasIds && !manuallyEnabled,\n    idsWarningMessage(ids, resource?.name || resource?.identifier || \"\"),\n  );\n  warnOnce(!hasResource && !manuallyEnabled, resourceWarningMessage());\n\n  useResourceSubscription({\n    resource: identifier,\n    types: [\"*\"],\n    params: {\n      ids: ids ?? [],\n      meta: combinedMeta,\n      subscriptionType: \"useMany\",\n      ...liveParams,\n    },\n    channel: `resources/${resource?.name ?? \"\"}`,\n    enabled: isEnabled,\n    liveMode,\n    onLiveEvent,\n    meta: {\n      ...meta,\n      dataProviderName: pickedDataProvider,\n    },\n  });\n\n  const queryResponse = useQuery<\n    GetManyResponse<TQueryFnData>,\n    TError,\n    GetManyResponse<TData>\n  >({\n    queryKey: keys()\n      .data(pickedDataProvider)\n      .resource(identifier)\n      .action(\"many\")\n      .ids(...(ids ?? []))\n      .params({\n        ...(preferredMeta || {}),\n      })\n      .get(),\n    queryFn: (context) => {\n      const meta = {\n        ...combinedMeta,\n        ...prepareQueryContext(context as any),\n      };\n\n      if (getMany) {\n        return getMany({\n          resource: resource?.name || \"\",\n          ids,\n          meta,\n        });\n      }\n      return handleMultiple(\n        ids.map((id) =>\n          getOne<TQueryFnData>({\n            resource: resource?.name || \"\",\n            id,\n            meta,\n          }),\n        ),\n      );\n    },\n    enabled: hasIds && hasResource,\n    ...queryOptions,\n    meta: {\n      ...queryOptions?.meta,\n      ...getXRay(\"useMany\", resource?.name),\n    },\n  });\n\n  // Handle success\n  useEffect(() => {\n    if (queryResponse.isSuccess && queryResponse.data) {\n      const notificationConfig =\n        typeof successNotification === \"function\"\n          ? successNotification(queryResponse.data, ids, identifier)\n          : successNotification;\n\n      handleNotification(notificationConfig);\n    }\n  }, [queryResponse.isSuccess, queryResponse.data, successNotification]);\n\n  // Handle error\n  useEffect(() => {\n    if (queryResponse.isError && queryResponse.error) {\n      checkError(queryResponse.error);\n\n      const notificationConfig =\n        typeof errorNotification === \"function\"\n          ? errorNotification(queryResponse.error, ids, identifier)\n          : errorNotification;\n\n      handleNotification(notificationConfig, {\n        key: `${ids[0]}-${identifier}-getMany-notification`,\n        message: translate(\n          \"notifications.error\",\n          { statusCode: queryResponse.error.statusCode },\n          `Error (status code: ${queryResponse.error.statusCode})`,\n        ),\n        description: queryResponse.error.message,\n        type: \"error\",\n      });\n    }\n  }, [queryResponse.isError, queryResponse.error?.message]);\n\n  const { elapsedTime } = useLoadingOvertime({\n    ...overtimeOptions,\n    isLoading: queryResponse.isFetching,\n  });\n\n  return {\n    query: queryResponse,\n    result: {\n      data: queryResponse?.data?.data || EMPTY_ARRAY,\n    },\n    overtime: { elapsedTime },\n  };\n};\n\nconst idsWarningMessage = (\n  ids: BaseKey[],\n  resource: string,\n) => `[useMany]: Missing \"ids\" prop. Expected an array of ids, but got \"${typeof ids}\". Resource: \"${resource}\"\n\nSee https://refine.dev/docs/data/hooks/use-many/#ids-`;\n\nconst resourceWarningMessage = () => `[useMany]: Missing \"resource\" prop. Expected a string, but got undefined.\n\nSee https://refine.dev/docs/data/hooks/use-many/#resource-`;\n","import { getXRay } from \"@refinedev/devtools-internal\";\nimport {\n  type UseMutationOptions,\n  type MutateOptions,\n  useMutation,\n  useQueryClient,\n} from \"@tanstack/react-query\";\n\nimport { pickDataProvider } from \"@definitions/helpers\";\nimport {\n  useCancelNotification,\n  useDataProvider,\n  useHandleNotification,\n  useInvalidate,\n  useKeys,\n  useLog,\n  useMeta,\n  useMutationMode,\n  useOnError,\n  usePublish,\n  useRefineContext,\n  useResourceParams,\n  useTranslate,\n} from \"@hooks\";\n\nimport type {\n  BaseKey,\n  BaseRecord,\n  GetListResponse,\n  GetManyResponse,\n  GetOneResponse,\n  HttpError,\n  IQueryKeys,\n  MetaQuery,\n  MutationMode,\n  PrevContext as UpdateContext,\n  PreviousQuery,\n  UpdateResponse,\n} from \"../../contexts/data/types\";\nimport type { UseMutationResult } from \"../../definitions/types\";\nimport type { SuccessErrorNotification } from \"../../contexts/notification/types\";\nimport { ActionTypes } from \"../../contexts/undoableQueue/types\";\nimport {\n  type UseLoadingOvertimeOptionsProps,\n  type UseLoadingOvertimeReturnType,\n  useLoadingOvertime,\n} from \"../useLoadingOvertime\";\n\nexport type OptimisticUpdateMapType<TData, TVariables> = {\n  list?:\n    | ((\n        previous: GetListResponse<TData> | null | undefined,\n        values: TVariables,\n        id: BaseKey,\n      ) => GetListResponse<TData> | null)\n    | boolean;\n  many?:\n    | ((\n        previous: GetManyResponse<TData> | null | undefined,\n        values: TVariables,\n        id: BaseKey,\n      ) => GetManyResponse<TData> | null)\n    | boolean;\n  detail?:\n    | ((\n        previous: GetOneResponse<TData> | null | undefined,\n        values: TVariables,\n        id: BaseKey,\n      ) => GetOneResponse<TData> | null)\n    | boolean;\n};\n\nexport type UpdateParams<TData, TError, TVariables> = {\n  /**\n   * Resource name for API data interactions\n   */\n  resource?: string;\n  /**\n   * id for mutation function\n   */\n  id?: BaseKey;\n  /**\n   * [Determines when mutations are executed](/docs/advanced-tutorials/mutation-mode/)\n   */\n  mutationMode?: MutationMode;\n  /**\n   * Duration in ms to wait before executing the mutation when `mutationMode = \"undoable\"`\n   */\n  undoableTimeout?: number;\n  /**\n   * Provides a function to cancel the mutation when `mutationMode = \"undoable\"`\n   */\n  onCancel?: (cancelMutation: () => void) => void;\n  /**\n   * Values for mutation function\n   */\n  values?: TVariables;\n  /**\n   * Metadata query for dataProvider\n   */\n  meta?: MetaQuery;\n  /**\n   * Metadata query for dataProvider\n  /**\n   * If there is more than one `dataProvider`, you should use the `dataProviderName` that you will use.\n   * @default \"default\"\n   */\n  dataProviderName?: string;\n  /**\n   *  You can use it to manage the invalidations that will occur at the end of the mutation.\n   */\n  invalidates?: Array<keyof IQueryKeys>;\n  /**\n   * You can use it to customize the optimistic update logic.\n   * @default {\n   *   list: true,\n   *   many: true,\n   *   detail: true,\n   * }\n   */\n  optimisticUpdateMap?: OptimisticUpdateMapType<TData, TVariables>;\n} & SuccessErrorNotification<\n  UpdateResponse<TData>,\n  TError,\n  { id: BaseKey; values: TVariables }\n>;\n\nexport type UseUpdateReturnType<\n  TData extends BaseRecord = BaseRecord,\n  TError extends HttpError = HttpError,\n  TVariables = {},\n> = UseMutationResult<\n  UpdateResponse<TData>,\n  TError,\n  UpdateParams<TData, TError, TVariables>,\n  UpdateContext<TData>\n> &\n  UseLoadingOvertimeReturnType;\n\nexport type UseUpdateProps<\n  TData extends BaseRecord = BaseRecord,\n  TError extends HttpError = HttpError,\n  TVariables = {},\n> = {\n  mutationOptions?: Omit<\n    UseMutationOptions<\n      UpdateResponse<TData>,\n      TError,\n      UpdateParams<TData, TError, TVariables>,\n      UpdateContext<TData>\n    >,\n    \"mutationFn\" | \"onMutate\"\n  >;\n} & UseLoadingOvertimeOptionsProps &\n  UpdateParams<TData, TError, TVariables>;\n\n/**\n * `useUpdate` is a modified version of `react-query`'s {@link https://tanstack.com/query/v5/docs/framework/react/reference/useMutation `useMutation`} for update mutations.\n *\n * It uses `update` method as mutation function from the `dataProvider` which is passed to `<Refine>`.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/hooks/data/useUpdate} for more details.\n *\n * @typeParam TData - Result data of the query extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}\n * @typeParam TError - Custom error object that extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences/#httperror `HttpError`}\n * @typeParam TVariables - Values for mutation function\n *\n */\nexport const useUpdate = <\n  TData extends BaseRecord = BaseRecord,\n  TError extends HttpError = HttpError,\n  TVariables = {},\n>({\n  id: idFromProps,\n  resource: resourceFromProps,\n  values: valuesFromProps,\n  dataProviderName: dataProviderNameFromProps,\n  successNotification: successNotificationFromProps,\n  errorNotification: errorNotificationFromProps,\n  meta: metaFromProps,\n  mutationMode: mutationModeFromProps,\n  undoableTimeout: undoableTimeoutFromProps,\n  onCancel: onCancelFromProps,\n  optimisticUpdateMap: optimisticUpdateMapFromProps,\n  invalidates: invalidatesFromProps,\n  mutationOptions,\n  overtimeOptions,\n}: UseUpdateProps<TData, TError, TVariables> = {}): UseUpdateReturnType<\n  TData,\n  TError,\n  TVariables\n> => {\n  const { resources, select } = useResourceParams({\n    resource: resourceFromProps,\n  });\n  const queryClient = useQueryClient();\n  const dataProvider = useDataProvider();\n\n  const {\n    mutationMode: mutationModeContext,\n    undoableTimeout: undoableTimeoutContext,\n  } = useMutationMode();\n  const { mutate: checkError } = useOnError();\n  const translate = useTranslate();\n  const publish = usePublish();\n  const { log } = useLog();\n  const { notificationDispatch } = useCancelNotification();\n  const handleNotification = useHandleNotification();\n  const invalidateStore = useInvalidate();\n  const getMeta = useMeta();\n  const {\n    options: { textTransformers },\n  } = useRefineContext();\n  const { keys } = useKeys();\n\n  const mutationResult = useMutation<\n    UpdateResponse<TData>,\n    TError,\n    UpdateParams<TData, TError, TVariables>,\n    UpdateContext<TData>\n  >({\n    mutationFn: ({\n      id = idFromProps,\n      values = valuesFromProps,\n      resource: resourceName = resourceFromProps,\n      mutationMode = mutationModeFromProps,\n      undoableTimeout = undoableTimeoutFromProps,\n      onCancel = onCancelFromProps,\n      meta = metaFromProps,\n      dataProviderName = dataProviderNameFromProps,\n    }) => {\n      if (typeof id === \"undefined\") throw missingIdError;\n      if (!values) throw missingValuesError;\n      if (!resourceName) throw missingResourceError;\n\n      const { resource, identifier } = select(resourceName);\n\n      const combinedMeta = getMeta({\n        resource,\n        meta: meta,\n      });\n\n      const mutationModePropOrContext = mutationMode ?? mutationModeContext;\n\n      const undoableTimeoutPropOrContext =\n        undoableTimeout ?? undoableTimeoutContext;\n\n      if (!(mutationModePropOrContext === \"undoable\")) {\n        return dataProvider(\n          pickDataProvider(identifier, dataProviderName, resources),\n        ).update<TData, TVariables>({\n          resource: resource.name,\n          id,\n          variables: values,\n          meta: combinedMeta,\n        });\n      }\n      const updatePromise = new Promise<UpdateResponse<TData>>(\n        (resolve, reject) => {\n          const doMutation = () => {\n            dataProvider(\n              pickDataProvider(identifier, dataProviderName, resources),\n            )\n              .update<TData, TVariables>({\n                resource: resource.name,\n                id,\n                variables: values,\n                meta: combinedMeta,\n              })\n              .then((result) => resolve(result))\n              .catch((err) => reject(err));\n          };\n\n          const cancelMutation = () => {\n            reject({ message: \"mutationCancelled\" });\n          };\n\n          if (onCancel) {\n            onCancel(cancelMutation);\n          }\n\n          notificationDispatch({\n            type: ActionTypes.ADD,\n            payload: {\n              id: id,\n              resource: identifier,\n              cancelMutation: cancelMutation,\n              doMutation: doMutation,\n              seconds: undoableTimeoutPropOrContext,\n              isSilent: !!onCancel,\n            },\n          });\n        },\n      );\n      return updatePromise;\n    },\n    onMutate: async ({\n      resource: resourceName = resourceFromProps,\n      id = idFromProps,\n      mutationMode = mutationModeFromProps,\n      values = valuesFromProps,\n      dataProviderName = dataProviderNameFromProps,\n      meta = metaFromProps,\n      optimisticUpdateMap = optimisticUpdateMapFromProps ?? {\n        list: true,\n        many: true,\n        detail: true,\n      },\n    }) => {\n      if (typeof id === \"undefined\") throw missingIdError;\n      if (!values) throw missingValuesError;\n      if (!resourceName) throw missingResourceError;\n\n      const { identifier } = select(resourceName);\n\n      const { gqlMutation: _, gqlQuery: __, ...preferredMeta } = meta ?? {};\n\n      const resourceKeys = keys()\n        .data(pickDataProvider(identifier, dataProviderName, resources))\n        .resource(identifier);\n\n      const previousQueries: PreviousQuery<TData>[] =\n        queryClient.getQueriesData({\n          queryKey: resourceKeys.get(),\n        });\n\n      const mutationModePropOrContext = mutationMode ?? mutationModeContext;\n\n      await queryClient.cancelQueries({\n        queryKey: resourceKeys.get(),\n      });\n\n      if (mutationModePropOrContext !== \"pessimistic\") {\n        if (optimisticUpdateMap.list) {\n          // Set the previous queries to the new ones:\n          queryClient.setQueriesData(\n            {\n              queryKey: resourceKeys\n                .action(\"list\")\n                .params(preferredMeta ?? {})\n                .get(),\n            },\n            (previous?: GetListResponse<TData> | null) => {\n              if (typeof optimisticUpdateMap.list === \"function\") {\n                return optimisticUpdateMap.list(previous, values, id);\n              }\n\n              if (!previous) {\n                return null;\n              }\n\n              const data = previous.data.map((record: TData) => {\n                if (record.id?.toString() === id?.toString()) {\n                  return {\n                    id,\n                    ...record,\n                    ...values,\n                  } as unknown as TData;\n                }\n                return record;\n              });\n\n              return {\n                ...previous,\n                data,\n              };\n            },\n          );\n        }\n\n        if (optimisticUpdateMap.many) {\n          queryClient.setQueriesData(\n            {\n              queryKey: resourceKeys.action(\"many\").get(),\n            },\n            (previous?: GetManyResponse<TData> | null) => {\n              if (typeof optimisticUpdateMap.many === \"function\") {\n                return optimisticUpdateMap.many(previous, values, id);\n              }\n\n              if (!previous) {\n                return null;\n              }\n\n              const data = previous.data.map((record: TData) => {\n                if (record.id?.toString() === id?.toString()) {\n                  record = {\n                    id,\n                    ...record,\n                    ...values,\n                  } as unknown as TData;\n                }\n                return record;\n              });\n              return {\n                ...previous,\n                data,\n              };\n            },\n          );\n        }\n\n        if (optimisticUpdateMap.detail) {\n          queryClient.setQueriesData(\n            {\n              queryKey: resourceKeys\n                .action(\"one\")\n                .id(id)\n                .params(preferredMeta ?? {})\n                .get(),\n            },\n            (previous?: GetOneResponse<TData> | null) => {\n              if (typeof optimisticUpdateMap.detail === \"function\") {\n                return optimisticUpdateMap.detail(previous, values, id);\n              }\n\n              if (!previous) {\n                return null;\n              }\n\n              return {\n                ...previous,\n                data: {\n                  ...previous.data,\n                  ...values,\n                },\n              };\n            },\n          );\n        }\n      }\n\n      return {\n        previousQueries,\n      };\n    },\n    onSettled: (data, error, variables, context) => {\n      const {\n        id = idFromProps,\n        resource: resourceName = resourceFromProps,\n        dataProviderName = dataProviderNameFromProps,\n        invalidates = invalidatesFromProps ?? [\"list\", \"many\", \"detail\"],\n      } = variables;\n      if (typeof id === \"undefined\") throw missingIdError;\n      if (!resourceName) throw missingResourceError;\n\n      const { identifier } = select(resourceName);\n\n      invalidateStore({\n        resource: identifier,\n        dataProviderName: pickDataProvider(\n          identifier,\n          dataProviderName,\n          resources,\n        ),\n        invalidates,\n        id,\n      });\n\n      notificationDispatch({\n        type: ActionTypes.REMOVE,\n        payload: { id, resource: identifier },\n      });\n\n      mutationOptions?.onSettled?.(data, error, variables, context);\n    },\n    onSuccess: (data, variables, context) => {\n      const {\n        id = idFromProps,\n        resource: resourceName = resourceFromProps,\n        successNotification = successNotificationFromProps,\n        dataProviderName: dataProviderNameFromProp = dataProviderNameFromProps,\n        values = valuesFromProps,\n        meta = metaFromProps,\n      } = variables;\n      if (typeof id === \"undefined\") throw missingIdError;\n      if (!values) throw missingValuesError;\n      if (!resourceName) throw missingResourceError;\n\n      const { resource, identifier } = select(resourceName);\n      const resourceSingular = textTransformers.singular(identifier);\n\n      const dataProviderName = pickDataProvider(\n        identifier,\n        dataProviderNameFromProp,\n        resources,\n      );\n\n      const combinedMeta = getMeta({\n        resource,\n        meta,\n      });\n\n      const notificationConfig =\n        typeof successNotification === \"function\"\n          ? successNotification(data, { id, values }, identifier)\n          : successNotification;\n\n      handleNotification(notificationConfig, {\n        key: `${id}-${identifier}-notification`,\n        description: translate(\"notifications.success\", \"Successful\"),\n        message: translate(\n          \"notifications.editSuccess\",\n          {\n            resource: translate(\n              `${identifier}.${identifier}`,\n              resourceSingular,\n            ),\n          },\n          `Successfully updated ${resourceSingular}`,\n        ),\n        type: \"success\",\n      });\n\n      publish?.({\n        channel: `resources/${resource.name}`,\n        type: \"updated\",\n        payload: {\n          ids: data.data?.id ? [data.data.id] : undefined,\n        },\n        date: new Date(),\n        meta: {\n          ...combinedMeta,\n          dataProviderName,\n        },\n      });\n\n      let previousData: any;\n      if (context) {\n        const resourceKeys = keys()\n          .data(pickDataProvider(identifier, dataProviderName, resources))\n          .resource(identifier);\n\n        const queryData = queryClient.getQueryData<UpdateResponse<TData>>(\n          resourceKeys.action(\"one\").id(id).get(),\n        );\n\n        previousData = Object.keys(values || {}).reduce<any>((acc, item) => {\n          acc[item] = queryData?.data?.[item];\n          return acc;\n        }, {});\n      }\n\n      const {\n        fields: _fields,\n        operation: _operation,\n        variables: _variables,\n        ...rest\n      } = combinedMeta || {};\n      log?.mutate({\n        action: \"update\",\n        resource: resource.name,\n        data: values,\n        previousData,\n        meta: {\n          ...rest,\n          dataProviderName,\n          id,\n        },\n      });\n\n      mutationOptions?.onSuccess?.(data, variables, context);\n    },\n    onError: (err: TError, variables, context) => {\n      const {\n        id = idFromProps,\n        resource: resourceName = resourceFromProps,\n        errorNotification = errorNotificationFromProps,\n        values = valuesFromProps,\n      } = variables;\n      if (typeof id === \"undefined\") throw missingIdError;\n      if (!values) throw missingValuesError;\n      if (!resourceName) throw missingResourceError;\n\n      const { identifier } = select(resourceName);\n\n      // set back the queries to the context:\n      if (context?.previousQueries) {\n        for (const query of context.previousQueries) {\n          queryClient.setQueryData(query[0], query[1]);\n        }\n      }\n\n      if (err.message !== \"mutationCancelled\") {\n        checkError?.(err);\n\n        const resourceSingular = textTransformers.singular(identifier);\n\n        const notificationConfig =\n          typeof errorNotification === \"function\"\n            ? errorNotification(err, { id, values }, identifier)\n            : errorNotification;\n\n        handleNotification(notificationConfig, {\n          key: `${id}-${identifier}-notification`,\n          message: translate(\n            \"notifications.editError\",\n            {\n              resource: translate(\n                `${identifier}.${identifier}`,\n                resourceSingular,\n              ),\n              statusCode: err.statusCode,\n            },\n            `Error when updating ${resourceSingular} (status code: ${err.statusCode})`,\n          ),\n          description: err.message,\n          type: \"error\",\n        });\n      }\n\n      mutationOptions?.onError?.(err, variables, context);\n    },\n    mutationKey: keys().data().mutation(\"update\").get(),\n    ...mutationOptions,\n    meta: {\n      ...mutationOptions?.meta,\n      ...getXRay(\"useUpdate\"),\n    },\n  });\n\n  const { mutate, mutateAsync } = mutationResult;\n\n  const { elapsedTime } = useLoadingOvertime({\n    ...overtimeOptions,\n    isLoading: mutationResult.isPending,\n  });\n\n  // this function is used to make the `variables` parameter optional\n  const handleMutation = (\n    variables?: UpdateParams<TData, TError, TVariables>,\n    options?: MutateOptions<\n      UpdateResponse<TData>,\n      TError,\n      UpdateParams<TData, TError, TVariables>,\n      UpdateContext<TData>\n    >,\n  ) => {\n    return mutate(variables || {}, options);\n  };\n\n  // this function is used to make the `variables` parameter optional\n  const handleMutateAsync = (\n    variables?: UpdateParams<TData, TError, TVariables>,\n    options?: MutateOptions<\n      UpdateResponse<TData>,\n      TError,\n      UpdateParams<TData, TError, TVariables>,\n      UpdateContext<TData>\n    >,\n  ) => {\n    return mutateAsync(variables || {}, options);\n  };\n\n  return {\n    mutation: mutationResult,\n    mutate: handleMutation,\n    mutateAsync: handleMutateAsync,\n    overtime: { elapsedTime },\n  };\n};\n\nconst missingResourceError = new Error(\n  \"[useUpdate]: `resource` is not defined or not matched but is required\",\n);\n\nconst missingIdError = new Error(\n  \"[useUpdate]: `id` is not defined but is required in edit and clone actions\",\n);\n\nconst missingValuesError = new Error(\n  \"[useUpdate]: `values` is not provided but is required\",\n);\n","import type { BaseKey } from \"../data/types\";\n\nexport enum ActionTypes {\n  ADD = \"ADD\",\n  REMOVE = \"REMOVE\",\n  DECREASE_NOTIFICATION_SECOND = \"DECREASE_NOTIFICATION_SECOND\",\n}\n\nexport interface IUndoableQueue {\n  id: BaseKey;\n  resource: string;\n  cancelMutation: () => void;\n  doMutation: () => void;\n  seconds: number;\n  isRunning: boolean;\n  isSilent: boolean;\n}\n\nexport interface IUndoableQueueContext {\n  notifications: IUndoableQueue[];\n  notificationDispatch: React.Dispatch<any>;\n}\n","import { pickDataProvider } from \"@definitions/helpers\";\nimport { getXRay } from \"@refinedev/devtools-internal\";\nimport {\n  type UseMutationOptions,\n  type MutateOptions,\n  useMutation,\n} from \"@tanstack/react-query\";\n\nimport {\n  useDataProvider,\n  useHandleNotification,\n  useInvalidate,\n  useKeys,\n  useLog,\n  useMeta,\n  useOnError,\n  usePublish,\n  useRefineContext,\n  useResourceParams,\n  useTranslate,\n} from \"@hooks\";\n\nimport type {\n  BaseRecord,\n  CreateResponse,\n  HttpError,\n  IQueryKeys,\n  MetaQuery,\n} from \"../../contexts/data/types\";\nimport type { UseMutationResult } from \"../../definitions/types\";\nimport type { SuccessErrorNotification } from \"../../contexts/notification/types\";\nimport {\n  type UseLoadingOvertimeOptionsProps,\n  type UseLoadingOvertimeReturnType,\n  useLoadingOvertime,\n} from \"../useLoadingOvertime\";\n\nexport type UseCreateParams<TData, TError, TVariables> = {\n  /**\n   * Resource name for API data interactions\n   */\n  resource?: string;\n  /**\n   * Values for mutation function\n   */\n  values?: TVariables;\n  /**\n   * Meta data for `dataProvider`\n   */\n  meta?: MetaQuery;\n  /**\n   * Meta data for `dataProvider`\n  /**\n   * If there is more than one `dataProvider`, you should use the `dataProviderName` that you will use.\n   */\n  dataProviderName?: string;\n  /**\n   * You can use it to manage the invalidations that will occur at the end of the mutation.\n   */\n  invalidates?: Array<keyof IQueryKeys>;\n} & SuccessErrorNotification<CreateResponse<TData>, TError, TVariables>;\n\nexport type UseCreateReturnType<\n  TData extends BaseRecord = BaseRecord,\n  TError extends HttpError = HttpError,\n  TVariables = {},\n> = UseMutationResult<\n  CreateResponse<TData>,\n  TError,\n  UseCreateParams<TData, TError, TVariables>,\n  unknown\n>;\n\nexport type UseCreateProps<\n  TData extends BaseRecord = BaseRecord,\n  TError extends HttpError = HttpError,\n  TVariables = {},\n> = {\n  mutationOptions?: Omit<\n    UseMutationOptions<\n      CreateResponse<TData>,\n      TError,\n      UseCreateParams<TData, TError, TVariables>,\n      unknown\n    >,\n    \"mutationFn\"\n  >;\n} & UseLoadingOvertimeOptionsProps &\n  UseCreateParams<TData, TError, TVariables>;\n\n/**\n * `useCreate` is a modified version of `react-query`'s {@link https://tanstack.com/query/v5/docs/framework/react/reference/useMutation `useMutation`} for create mutations.\n *\n * It uses `create` method as mutation function from the `dataProvider` which is passed to `<Refine>`.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/hooks/data/useCreate} for more details.\n *\n * @typeParam TData - Result data of the query extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}\n * @typeParam TError - Custom error object that extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences/#httperror `HttpError`}\n * @typeParam TVariables - Values for mutation function\n *\n */\n\nexport const useCreate = <\n  TData extends BaseRecord = BaseRecord,\n  TError extends HttpError = HttpError,\n  TVariables = {},\n>({\n  resource: resourceFromProps,\n  values: valuesFromProps,\n  dataProviderName: dataProviderNameFromProps,\n  successNotification: successNotificationFromProps,\n  errorNotification: errorNotificationFromProps,\n  invalidates: invalidatesFromProps,\n  meta: metaFromProps,\n  mutationOptions,\n  overtimeOptions,\n}: UseCreateProps<TData, TError, TVariables> = {}): UseCreateReturnType<\n  TData,\n  TError,\n  TVariables\n> &\n  UseLoadingOvertimeReturnType => {\n  const { mutate: checkError } = useOnError();\n  const dataProvider = useDataProvider();\n  const invalidateStore = useInvalidate();\n  const { resources, select } = useResourceParams();\n  const translate = useTranslate();\n  const publish = usePublish();\n  const { log } = useLog();\n  const handleNotification = useHandleNotification();\n  const getMeta = useMeta();\n  const {\n    options: { textTransformers },\n  } = useRefineContext();\n  const { keys } = useKeys();\n\n  const mutationResult = useMutation<\n    CreateResponse<TData>,\n    TError,\n    UseCreateParams<TData, TError, TVariables>,\n    unknown\n  >({\n    mutationFn: ({\n      resource: resourceName = resourceFromProps,\n      values = valuesFromProps,\n      meta = metaFromProps,\n      dataProviderName = dataProviderNameFromProps,\n    }: UseCreateParams<TData, TError, TVariables>) => {\n      if (!values) throw missingValuesError;\n      if (!resourceName) throw missingResourceError;\n\n      const { resource, identifier } = select(resourceName);\n\n      const combinedMeta = getMeta({\n        resource,\n        meta,\n      });\n\n      return dataProvider(\n        pickDataProvider(identifier, dataProviderName, resources),\n      ).create<TData, TVariables>({\n        resource: resource.name,\n        variables: values,\n        meta: combinedMeta,\n      });\n    },\n    onSuccess: (data, variables, context) => {\n      const {\n        resource: resourceName = resourceFromProps,\n        successNotification:\n          successNotificationFromProp = successNotificationFromProps,\n        dataProviderName: dataProviderNameFromProp = dataProviderNameFromProps,\n        invalidates = invalidatesFromProps ?? [\"list\", \"many\"],\n        values = valuesFromProps,\n        meta = metaFromProps,\n      } = variables;\n      if (!values) throw missingValuesError;\n      if (!resourceName) throw missingResourceError;\n\n      const { resource, identifier } = select(resourceName);\n      const resourceSingular = textTransformers.singular(identifier);\n\n      const dataProviderName = pickDataProvider(\n        identifier,\n        dataProviderNameFromProp,\n        resources,\n      );\n\n      const combinedMeta = getMeta({\n        resource,\n        meta,\n      });\n\n      const notificationConfig =\n        typeof successNotificationFromProp === \"function\"\n          ? successNotificationFromProp(data, values, identifier)\n          : successNotificationFromProp;\n\n      handleNotification(notificationConfig, {\n        key: `create-${identifier}-notification`,\n        message: translate(\n          \"notifications.createSuccess\",\n          {\n            resource: translate(\n              `${identifier}.${identifier}`,\n              resourceSingular,\n            ),\n          },\n          `Successfully created ${resourceSingular}`,\n        ),\n        description: translate(\"notifications.success\", \"Success\"),\n        type: \"success\",\n      });\n\n      invalidateStore({\n        resource: identifier,\n        dataProviderName,\n        invalidates,\n      });\n\n      publish?.({\n        channel: `resources/${resource.name}`,\n        type: \"created\",\n        payload: {\n          ids: data?.data?.id ? [data.data.id] : undefined,\n        },\n        date: new Date(),\n        meta: {\n          ...combinedMeta,\n          dataProviderName,\n        },\n      });\n\n      const {\n        fields: _fields,\n        operation: _operation,\n        variables: _variables,\n        ...rest\n      } = combinedMeta || {};\n      log?.mutate({\n        action: \"create\",\n        resource: resource.name,\n        data: values,\n        meta: {\n          ...rest,\n          dataProviderName,\n          id: data?.data?.id ?? undefined,\n        },\n      });\n\n      mutationOptions?.onSuccess?.(data, variables, context);\n    },\n    onError: (err: TError, variables, context) => {\n      const {\n        resource: resourceName = resourceFromProps,\n        errorNotification:\n          errorNotificationFromProp = errorNotificationFromProps,\n        values = valuesFromProps,\n      } = variables;\n      if (!values) throw missingValuesError;\n      if (!resourceName) throw missingResourceError;\n\n      checkError(err);\n\n      const { identifier } = select(resourceName);\n\n      const resourceSingular = textTransformers.singular(identifier);\n\n      const notificationConfig =\n        typeof errorNotificationFromProp === \"function\"\n          ? errorNotificationFromProp(err, values, identifier)\n          : errorNotificationFromProp;\n\n      handleNotification(notificationConfig, {\n        key: `create-${identifier}-notification`,\n        description: err.message,\n        message: translate(\n          \"notifications.createError\",\n          {\n            resource: translate(\n              `${identifier}.${identifier}`,\n              resourceSingular,\n            ),\n            statusCode: err.statusCode,\n          },\n          `There was an error creating ${resourceSingular} (status code: ${err.statusCode})`,\n        ),\n        type: \"error\",\n      });\n\n      mutationOptions?.onError?.(err, variables, context);\n    },\n    mutationKey: keys().data().mutation(\"create\").get(),\n    ...mutationOptions,\n    meta: {\n      ...mutationOptions?.meta,\n      ...getXRay(\"useCreate\"),\n    },\n  });\n  const { mutate, mutateAsync, ...mutation } = mutationResult;\n\n  const { elapsedTime } = useLoadingOvertime({\n    ...overtimeOptions,\n    isLoading: mutation.isPending,\n  });\n\n  // this function is used to make the `variables` parameter optional\n  const handleMutation = (\n    variables?: UseCreateParams<TData, TError, TVariables>,\n    options?: MutateOptions<\n      CreateResponse<TData>,\n      TError,\n      UseCreateParams<TData, TError, TVariables>,\n      unknown\n    >,\n  ) => {\n    return mutate(variables || {}, options);\n  };\n\n  // this function is used to make the `variables` parameter optional\n  const handleMutateAsync = (\n    variables?: UseCreateParams<TData, TError, TVariables>,\n    options?: MutateOptions<\n      CreateResponse<TData>,\n      TError,\n      UseCreateParams<TData, TError, TVariables>,\n      unknown\n    >,\n  ) => {\n    return mutateAsync(variables || {}, options);\n  };\n\n  return {\n    mutation: mutationResult,\n    mutate: handleMutation,\n    mutateAsync: handleMutateAsync,\n    overtime: { elapsedTime },\n  };\n};\n\nconst missingResourceError = new Error(\n  \"[useCreate]: `resource` is not defined or not matched but is required\",\n);\n\nconst missingValuesError = new Error(\n  \"[useCreate]: `values` is not provided but is required\",\n);\n","import { getXRay } from \"@refinedev/devtools-internal\";\nimport {\n  type UseMutationOptions,\n  type UseMutationResult,\n  useMutation,\n  useQueryClient,\n} from \"@tanstack/react-query\";\n\nimport { pickDataProvider } from \"@definitions/helpers\";\nimport {\n  useCancelNotification,\n  useDataProvider,\n  useHandleNotification,\n  useInvalidate,\n  useKeys,\n  useLog,\n  useMeta,\n  useMutationMode,\n  useOnError,\n  usePublish,\n  useRefineContext,\n  useResourceParams,\n  useTranslate,\n} from \"@hooks\";\n\nimport type {\n  BaseKey,\n  BaseRecord,\n  DeleteOneResponse,\n  GetListResponse,\n  HttpError,\n  IQueryKeys,\n  MetaQuery,\n  MutationMode,\n  PrevContext as DeleteContext,\n  PreviousQuery,\n} from \"../../contexts/data/types\";\nimport type { SuccessErrorNotification } from \"../../contexts/notification/types\";\nimport { ActionTypes } from \"../../contexts/undoableQueue/types\";\nimport {\n  type UseLoadingOvertimeOptionsProps,\n  type UseLoadingOvertimeReturnType,\n  useLoadingOvertime,\n} from \"../useLoadingOvertime\";\n\nexport type DeleteParams<TData, TError, TVariables> = {\n  /**\n   * id for mutation function\n   */\n  id: BaseKey;\n  /**\n   * Resource name for API data interactions\n   */\n  resource: string;\n  /**\n   * [Determines when mutations are executed](/docs/advanced-tutorials/mutation-mode/)\n   */\n  mutationMode?: MutationMode;\n  /**\n   * Duration in ms to wait before executing the mutation when `mutationMode = \"undoable\"`\n   */\n  undoableTimeout?: number;\n  /**\n   * Provides a function to cancel the mutation when `mutationMode = \"undoable\"`\n   */\n  onCancel?: (cancelMutation: () => void) => void;\n  /**\n   * Metadata query for dataProvider\n   */\n  meta?: MetaQuery;\n  /**\n  /**\n   * If there is more than one `dataProvider`, you should use the `dataProviderName` that you will use.\n   * @default \"default\"\n   */\n  dataProviderName?: string;\n  /**\n   *  You can use it to manage the invalidations that will occur at the end of the mutation.\n   */\n  invalidates?: Array<keyof IQueryKeys>;\n  /**\n   * Values for mutation function\n   */\n  values?: TVariables;\n} & SuccessErrorNotification<DeleteOneResponse<TData>, TError, BaseKey>;\n\nexport type UseDeleteReturnType<\n  TData extends BaseRecord = BaseRecord,\n  TError = HttpError,\n  TVariables = {},\n> = {\n  mutation: UseMutationResult<\n    DeleteOneResponse<TData>,\n    TError,\n    DeleteParams<TData, TError, TVariables>,\n    DeleteContext<TData>\n  >;\n  mutate: UseMutationResult<\n    DeleteOneResponse<TData>,\n    TError,\n    DeleteParams<TData, TError, TVariables>,\n    DeleteContext<TData>\n  >[\"mutate\"];\n  mutateAsync: UseMutationResult<\n    DeleteOneResponse<TData>,\n    TError,\n    DeleteParams<TData, TError, TVariables>,\n    DeleteContext<TData>\n  >[\"mutateAsync\"];\n} & UseLoadingOvertimeReturnType;\n\nexport type UseDeleteProps<\n  TData extends BaseRecord = BaseRecord,\n  TError extends HttpError = HttpError,\n  TVariables = {},\n> = {\n  mutationOptions?: Omit<\n    UseMutationOptions<\n      DeleteOneResponse<TData>,\n      TError,\n      DeleteParams<TData, TError, TVariables>,\n      DeleteContext<TData>\n    >,\n    \"mutationFn\" | \"onError\" | \"onSuccess\" | \"onSettled\" | \"onMutate\"\n  >;\n} & UseLoadingOvertimeOptionsProps;\n\n/**\n * `useDelete` is a modified version of `react-query`'s {@link https://tanstack.com/query/v5/docs/framework/react/reference/useMutation `useMutation`} for delete mutations.\n *\n * It uses `deleteOne` method as mutation function from the `dataProvider` which is passed to `<Refine>`.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/hooks/data/useDelete} for more details.\n *\n * @typeParam TData - Result data of the query extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}\n * @typeParam TError - Custom error object that extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences/#httperror `HttpError`}\n * @typeParam TVariables - Values for params. default `{}`\n *\n */\nexport const useDelete = <\n  TData extends BaseRecord = BaseRecord,\n  TError extends HttpError = HttpError,\n  TVariables = {},\n>({\n  mutationOptions,\n  overtimeOptions,\n}: UseDeleteProps<TData, TError, TVariables> = {}): UseDeleteReturnType<\n  TData,\n  TError,\n  TVariables\n> => {\n  const { mutate: checkError } = useOnError();\n  const dataProvider = useDataProvider();\n\n  const { resources, select } = useResourceParams();\n  const queryClient = useQueryClient();\n\n  const {\n    mutationMode: mutationModeContext,\n    undoableTimeout: undoableTimeoutContext,\n  } = useMutationMode();\n\n  const { notificationDispatch } = useCancelNotification();\n  const translate = useTranslate();\n  const publish = usePublish();\n  const { log } = useLog();\n  const handleNotification = useHandleNotification();\n  const invalidateStore = useInvalidate();\n  const getMeta = useMeta();\n  const {\n    options: { textTransformers },\n  } = useRefineContext();\n  const { keys } = useKeys();\n\n  const mutation = useMutation<\n    DeleteOneResponse<TData>,\n    TError,\n    DeleteParams<TData, TError, TVariables>,\n    DeleteContext<TData>\n  >({\n    mutationFn: ({\n      id,\n      mutationMode,\n      undoableTimeout,\n      resource: resourceName,\n      onCancel,\n      meta,\n      dataProviderName,\n      values,\n    }) => {\n      const { resource, identifier } = select(resourceName);\n\n      const combinedMeta = getMeta({\n        resource,\n        meta,\n      });\n\n      const mutationModePropOrContext = mutationMode ?? mutationModeContext;\n\n      const undoableTimeoutPropOrContext =\n        undoableTimeout ?? undoableTimeoutContext;\n\n      if (!(mutationModePropOrContext === \"undoable\")) {\n        return dataProvider(\n          pickDataProvider(identifier, dataProviderName, resources),\n        ).deleteOne<TData, TVariables>({\n          resource: resource.name,\n          id,\n          meta: combinedMeta,\n          variables: values,\n        });\n      }\n\n      const deletePromise = new Promise<DeleteOneResponse<TData>>(\n        (resolve, reject) => {\n          const doMutation = () => {\n            dataProvider(\n              pickDataProvider(identifier, dataProviderName, resources),\n            )\n              .deleteOne<TData, TVariables>({\n                resource: resource.name,\n                id,\n                meta: combinedMeta,\n                variables: values,\n              })\n              .then((result) => resolve(result))\n              .catch((err) => reject(err));\n          };\n\n          const cancelMutation = () => {\n            reject({ message: \"mutationCancelled\" });\n          };\n\n          if (onCancel) {\n            onCancel(cancelMutation);\n          }\n\n          notificationDispatch({\n            type: ActionTypes.ADD,\n            payload: {\n              id,\n              resource: identifier,\n              cancelMutation: cancelMutation,\n              doMutation: doMutation,\n              seconds: undoableTimeoutPropOrContext,\n              isSilent: !!onCancel,\n            },\n          });\n        },\n      );\n      return deletePromise;\n    },\n    onMutate: async ({\n      id,\n      resource: resourceName,\n      mutationMode,\n      dataProviderName,\n      meta,\n    }) => {\n      const { identifier } = select(resourceName);\n\n      const { gqlMutation: _, gqlQuery: __, ...preferredMeta } = meta ?? {};\n\n      const resourceKeys = keys()\n        .data(pickDataProvider(identifier, dataProviderName, resources))\n        .resource(identifier);\n\n      const mutationModePropOrContext = mutationMode ?? mutationModeContext;\n\n      await queryClient.cancelQueries({\n        queryKey: resourceKeys.get(),\n      });\n\n      const previousQueries: PreviousQuery<TData>[] =\n        queryClient.getQueriesData({\n          queryKey: resourceKeys.get(),\n        });\n\n      if (mutationModePropOrContext !== \"pessimistic\") {\n        // Set the previous queries to the new ones:\n        queryClient.setQueriesData(\n          {\n            queryKey: resourceKeys\n              .action(\"list\")\n              .params(preferredMeta ?? {})\n              .get(),\n          },\n          (previous?: GetListResponse<TData> | null) => {\n            if (!previous) {\n              return null;\n            }\n            const data = previous.data.filter(\n              (record: TData) => record.id?.toString() !== id.toString(),\n            );\n\n            return {\n              data,\n              total: previous.total - 1,\n            };\n          },\n        );\n\n        queryClient.setQueriesData(\n          {\n            queryKey: resourceKeys.action(\"many\").get(),\n          },\n          (previous?: GetListResponse<TData> | null) => {\n            if (!previous) {\n              return null;\n            }\n            const data = previous.data.filter((record: TData) => {\n              return record.id?.toString() !== id?.toString();\n            });\n\n            return {\n              ...previous,\n              data,\n            };\n          },\n        );\n      }\n\n      return {\n        previousQueries,\n        queryKey: resourceKeys.get(),\n      };\n    },\n    onSettled: (\n      _data,\n      _error,\n      {\n        id,\n        resource: resourceName,\n        dataProviderName,\n        invalidates = [\"list\", \"many\"],\n      },\n    ) => {\n      const { identifier } = select(resourceName);\n\n      // invalidate the cache for the list and many queries:\n      invalidateStore({\n        resource: identifier,\n        dataProviderName: pickDataProvider(\n          identifier,\n          dataProviderName,\n          resources,\n        ),\n        invalidates,\n      });\n\n      notificationDispatch({\n        type: ActionTypes.REMOVE,\n        payload: { id, resource: identifier },\n      });\n    },\n    onSuccess: (\n      _data,\n      {\n        id,\n        resource: resourceName,\n        successNotification,\n        dataProviderName: dataProviderNameFromProp,\n        meta,\n      },\n      context,\n    ) => {\n      const { resource, identifier } = select(resourceName);\n      const resourceSingular = textTransformers.singular(identifier);\n\n      const dataProviderName = pickDataProvider(\n        identifier,\n        dataProviderNameFromProp,\n        resources,\n      );\n\n      const combinedMeta = getMeta({\n        resource,\n        meta,\n      });\n\n      const resourceKeys = keys()\n        .data(pickDataProvider(identifier, dataProviderName, resources))\n        .resource(identifier);\n\n      // Remove the queries from the cache:\n      queryClient.removeQueries({\n        queryKey: resourceKeys.action(\"one\").get(),\n      });\n\n      const notificationConfig =\n        typeof successNotification === \"function\"\n          ? successNotification(_data, id, identifier)\n          : successNotification;\n\n      handleNotification(notificationConfig, {\n        key: `${id}-${identifier}-notification`,\n        description: translate(\"notifications.success\", \"Success\"),\n        message: translate(\n          \"notifications.deleteSuccess\",\n          {\n            resource: translate(\n              `${identifier}.${identifier}`,\n              resourceSingular,\n            ),\n          },\n          `Successfully deleted a ${resourceSingular}`,\n        ),\n        type: \"success\",\n      });\n\n      publish?.({\n        channel: `resources/${resource.name}`,\n        type: \"deleted\",\n        payload: {\n          ids: [id],\n        },\n        date: new Date(),\n        meta: {\n          ...combinedMeta,\n          dataProviderName,\n        },\n      });\n\n      const {\n        fields: _fields,\n        operation: _operation,\n        variables: _variables,\n        ...rest\n      } = combinedMeta || {};\n      log?.mutate({\n        action: \"delete\",\n        resource: resource.name,\n        meta: {\n          ...rest,\n          dataProviderName,\n          id,\n        },\n      });\n\n      // Remove the queries from the cache:\n      queryClient.removeQueries({\n        queryKey: resourceKeys.action(\"one\").get(),\n      });\n    },\n    onError: (\n      err: TError,\n      { id, resource: resourceName, errorNotification },\n      context,\n    ) => {\n      const { identifier } = select(resourceName);\n\n      // set back the queries to the context:\n      if (context) {\n        for (const query of context.previousQueries) {\n          queryClient.setQueryData(query[0], query[1]);\n        }\n      }\n\n      if (err.message !== \"mutationCancelled\") {\n        checkError(err);\n\n        const resourceSingular = textTransformers.singular(identifier);\n\n        const notificationConfig =\n          typeof errorNotification === \"function\"\n            ? errorNotification(err, id, identifier)\n            : errorNotification;\n\n        handleNotification(notificationConfig, {\n          key: `${id}-${identifier}-notification`,\n          message: translate(\n            \"notifications.deleteError\",\n            {\n              resource: resourceSingular,\n              statusCode: err.statusCode,\n            },\n            `Error (status code: ${err.statusCode})`,\n          ),\n          description: err.message,\n          type: \"error\",\n        });\n      }\n    },\n    mutationKey: keys().data().mutation(\"delete\").get(),\n    ...mutationOptions,\n    meta: {\n      ...mutationOptions?.meta,\n      ...getXRay(\"useDelete\"),\n    },\n  });\n\n  const { elapsedTime } = useLoadingOvertime({\n    ...overtimeOptions,\n    isLoading: mutation.isPending,\n  });\n\n  return {\n    mutation,\n    mutate: mutation.mutate,\n    mutateAsync: mutation.mutateAsync,\n    overtime: { elapsedTime },\n  };\n};\n","import { getXRay } from \"@refinedev/devtools-internal\";\nimport {\n  type UseMutationOptions,\n  type MutateOptions,\n  useMutation,\n} from \"@tanstack/react-query\";\n\nimport { handleMultiple, pickDataProvider } from \"@definitions\";\nimport {\n  useDataProvider,\n  useHandleNotification,\n  useInvalidate,\n  useKeys,\n  useLog,\n  useMeta,\n  usePublish,\n  useRefineContext,\n  useResourceParams,\n  useTranslate,\n} from \"@hooks\";\n\nimport type {\n  BaseRecord,\n  CreateManyResponse,\n  HttpError,\n  IQueryKeys,\n  MetaQuery,\n} from \"../../contexts/data/types\";\nimport type { UseMutationResult } from \"../../definitions/types\";\nimport type { SuccessErrorNotification } from \"../../contexts/notification/types\";\nimport {\n  type UseLoadingOvertimeOptionsProps,\n  type UseLoadingOvertimeReturnType,\n  useLoadingOvertime,\n} from \"../useLoadingOvertime\";\n\nexport type UseCreateManyParams<TData, TError, TVariables> = {\n  resource?: string;\n  values?: TVariables[];\n  meta?: MetaQuery;\n  dataProviderName?: string;\n  invalidates?: Array<keyof IQueryKeys>;\n} & SuccessErrorNotification<CreateManyResponse<TData>, TError, TVariables[]>;\n\nexport type UseCreateManyReturnType<\n  TData extends BaseRecord = BaseRecord,\n  TError = HttpError,\n  TVariables = {},\n> = UseMutationResult<\n  CreateManyResponse<TData>,\n  TError,\n  UseCreateManyParams<TData, TError, TVariables>,\n  unknown\n>;\n\nexport type UseCreateManyProps<\n  TData extends BaseRecord = BaseRecord,\n  TError extends HttpError = HttpError,\n  TVariables = {},\n> = {\n  mutationOptions?: Omit<\n    UseMutationOptions<\n      CreateManyResponse<TData>,\n      TError,\n      UseCreateManyParams<TData, TError, TVariables>\n    >,\n    \"mutationFn\"\n  >;\n} & UseLoadingOvertimeOptionsProps &\n  UseCreateManyParams<TData, TError, TVariables>;\n\n/**\n * `useCreateMany` is a modified version of `react-query`'s {@link https://tanstack.com/query/v5/docs/framework/react/reference/useMutation `useMutation`} for multiple create mutations.\n *\n * It uses `createMany` method as mutation function from the `dataProvider` which is passed to `<Refine>`.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/hooks/data/useCreateMany} for more details.\n *\n * @typeParam TData - Result data of the query extends {@link https://refine.dev/docs/core/interfaceReferences#baserecord `BaseRecord`}\n * @typeParam TError - Custom error object that extends {@link https://refine.dev/docs/core/interfaceReferences#httperror `HttpError`}\n * @typeParam TVariables - Values for mutation function\n *\n */\nexport const useCreateMany = <\n  TData extends BaseRecord = BaseRecord,\n  TError extends HttpError = HttpError,\n  TVariables = {},\n>({\n  resource: resourceFromProps,\n  values: valuesFromProps,\n  dataProviderName: dataProviderNameFromProps,\n  successNotification: successNotificationFromProps,\n  errorNotification: errorNotificationFromProps,\n  meta: metaFromProps,\n  invalidates: invalidatesFromProps,\n  mutationOptions,\n  overtimeOptions,\n}: UseCreateManyProps<TData, TError, TVariables> = {}): UseCreateManyReturnType<\n  TData,\n  TError,\n  TVariables\n> &\n  UseLoadingOvertimeReturnType => {\n  const dataProvider = useDataProvider();\n  const { resources, select } = useResourceParams();\n  const translate = useTranslate();\n  const publish = usePublish();\n  const handleNotification = useHandleNotification();\n  const invalidateStore = useInvalidate();\n  const { log } = useLog();\n  const getMeta = useMeta();\n  const {\n    options: { textTransformers },\n  } = useRefineContext();\n  const { keys } = useKeys();\n\n  const mutationResult = useMutation<\n    CreateManyResponse<TData>,\n    TError,\n    UseCreateManyParams<TData, TError, TVariables>\n  >({\n    mutationFn: ({\n      resource: resourceName = resourceFromProps,\n      values = valuesFromProps,\n      meta = metaFromProps,\n      dataProviderName = dataProviderNameFromProps,\n    }: UseCreateManyParams<TData, TError, TVariables>) => {\n      if (!values) throw missingValuesError;\n      if (!resourceName) throw missingResourceError;\n\n      const { resource, identifier } = select(resourceName);\n\n      const combinedMeta = getMeta({\n        resource,\n        meta,\n      });\n\n      const selectedDataProvider = dataProvider(\n        pickDataProvider(identifier, dataProviderName, resources),\n      );\n\n      if (selectedDataProvider.createMany) {\n        return selectedDataProvider.createMany<TData, TVariables>({\n          resource: resource.name,\n          variables: values,\n          meta: combinedMeta,\n        });\n      }\n      return handleMultiple(\n        values.map((val) =>\n          selectedDataProvider.create<TData, TVariables>({\n            resource: resource.name,\n            variables: val,\n            meta: combinedMeta,\n          }),\n        ),\n      );\n    },\n    onSuccess: (response, variables, context) => {\n      const {\n        resource: resourceName = resourceFromProps,\n        successNotification = successNotificationFromProps,\n        dataProviderName: dataProviderNameFromProp = dataProviderNameFromProps,\n        invalidates = invalidatesFromProps ?? [\"list\", \"many\"],\n        values = valuesFromProps,\n        meta = metaFromProps,\n      } = variables;\n      if (!values) throw missingValuesError;\n      if (!resourceName) throw missingResourceError;\n\n      const { resource, identifier } = select(resourceName);\n      const resourcePlural = textTransformers.plural(identifier);\n\n      const dataProviderName = pickDataProvider(\n        identifier,\n        dataProviderNameFromProp,\n        resources,\n      );\n\n      const combinedMeta = getMeta({\n        resource,\n        meta,\n      });\n\n      const notificationConfig =\n        typeof successNotification === \"function\"\n          ? successNotification(response, values, identifier)\n          : successNotification;\n\n      handleNotification(notificationConfig, {\n        key: `createMany-${identifier}-notification`,\n        message: translate(\n          \"notifications.createSuccess\",\n          {\n            resource: translate(`${identifier}.${identifier}`, identifier),\n          },\n          `Successfully created ${resourcePlural}`,\n        ),\n        description: translate(\"notifications.success\", \"Success\"),\n        type: \"success\",\n      });\n\n      invalidateStore({\n        resource: identifier,\n        dataProviderName,\n        invalidates,\n      });\n\n      const ids = response?.data\n        .filter((item) => item?.id !== undefined)\n        .map((item) => item.id!);\n      publish?.({\n        channel: `resources/${resource.name}`,\n        type: \"created\",\n        payload: {\n          ids,\n        },\n        date: new Date(),\n        meta: {\n          ...combinedMeta,\n          dataProviderName,\n        },\n      });\n\n      const {\n        fields: _fields,\n        operation: _operation,\n        variables: _variables,\n        ...rest\n      } = combinedMeta || {};\n      log?.mutate({\n        action: \"createMany\",\n        resource: resource.name,\n        data: values,\n        meta: {\n          dataProviderName,\n          ids,\n          ...rest,\n        },\n      });\n\n      mutationOptions?.onSuccess?.(response, variables, context);\n    },\n    onError: (err: TError, variables, context) => {\n      const {\n        resource: resourceName = resourceFromProps,\n        errorNotification = errorNotificationFromProps,\n        values = valuesFromProps,\n      } = variables;\n      if (!values) throw missingValuesError;\n      if (!resourceName) throw missingResourceError;\n\n      const { identifier } = select(resourceName);\n\n      const notificationConfig =\n        typeof errorNotification === \"function\"\n          ? errorNotification(err, values, identifier)\n          : errorNotification;\n\n      handleNotification(notificationConfig, {\n        key: `createMany-${identifier}-notification`,\n        description: err.message,\n        message: translate(\n          \"notifications.createError\",\n          {\n            resource: translate(`${identifier}.${identifier}`, identifier),\n            statusCode: err.statusCode,\n          },\n          `There was an error creating ${identifier} (status code: ${err.statusCode}`,\n        ),\n        type: \"error\",\n      });\n\n      mutationOptions?.onError?.(err, variables, context);\n    },\n    mutationKey: keys().data().mutation(\"createMany\").get(),\n    ...mutationOptions,\n    meta: {\n      ...mutationOptions?.meta,\n      ...getXRay(\"useCreateMany\"),\n    },\n  });\n  const { mutate, mutateAsync } = mutationResult;\n\n  const { elapsedTime } = useLoadingOvertime({\n    ...overtimeOptions,\n    isLoading: mutationResult.isPending,\n  });\n\n  // this function is used to make the `variables` parameter optional\n  const handleMutation = (\n    variables?: UseCreateManyParams<TData, TError, TVariables>,\n    options?: MutateOptions<\n      CreateManyResponse<TData>,\n      TError,\n      UseCreateManyParams<TData, TError, TVariables>,\n      unknown\n    >,\n  ) => {\n    return mutate(variables || {}, options);\n  };\n\n  // this function is used to make the `variables` parameter optional\n  const handleMutateAsync = (\n    variables?: UseCreateManyParams<TData, TError, TVariables>,\n    options?: MutateOptions<\n      CreateManyResponse<TData>,\n      TError,\n      UseCreateManyParams<TData, TError, TVariables>,\n      unknown\n    >,\n  ) => {\n    return mutateAsync(variables || {}, options);\n  };\n\n  return {\n    mutation: mutationResult,\n    mutate: handleMutation,\n    mutateAsync: handleMutateAsync,\n    overtime: { elapsedTime },\n  };\n};\n\nconst missingResourceError = new Error(\n  \"[useCreateMany]: `resource` is not defined or not matched but is required\",\n);\n\nconst missingValuesError = new Error(\n  \"[useCreateMany]: `values` is not provided but is required\",\n);\n","import { getXRay } from \"@refinedev/devtools-internal\";\nimport {\n  type UseMutationOptions,\n  type MutateOptions,\n  useMutation,\n  useQueryClient,\n} from \"@tanstack/react-query\";\n\nimport { handleMultiple, pickDataProvider } from \"@definitions/helpers\";\nimport {\n  useCancelNotification,\n  useDataProvider,\n  useHandleNotification,\n  useInvalidate,\n  useKeys,\n  useLog,\n  useMeta,\n  useMutationMode,\n  useOnError,\n  usePublish,\n  useRefineContext,\n  useResourceParams,\n  useTranslate,\n} from \"@hooks\";\n\nimport type {\n  BaseKey,\n  BaseRecord,\n  GetListResponse,\n  GetManyResponse,\n  GetOneResponse,\n  HttpError,\n  IQueryKeys,\n  MetaQuery,\n  MutationMode,\n  PrevContext as UpdateContext,\n  QueryResponse,\n  UpdateManyResponse,\n} from \"../../contexts/data/types\";\nimport type { UseMutationResult } from \"../../definitions/types\";\nimport {\n  type UseLoadingOvertimeOptionsProps,\n  type UseLoadingOvertimeReturnType,\n  useLoadingOvertime,\n} from \"../useLoadingOvertime\";\n\nimport type { SuccessErrorNotification } from \"../../contexts/notification/types\";\nimport { ActionTypes } from \"../../contexts/undoableQueue/types\";\n\nexport type OptimisticUpdateManyMapType<TData, TVariables> = {\n  list?:\n    | ((\n        previous: GetListResponse<TData> | null | undefined,\n        values: TVariables,\n        ids: BaseKey[],\n      ) => GetListResponse<TData> | null)\n    | boolean;\n  many?:\n    | ((\n        previous: GetManyResponse<TData> | null | undefined,\n        values: TVariables,\n        ids: BaseKey[],\n      ) => GetManyResponse<TData> | null)\n    | boolean;\n  detail?:\n    | ((\n        previous: GetOneResponse<TData> | null | undefined,\n        values: TVariables,\n        id: BaseKey,\n      ) => GetOneResponse<TData> | null)\n    | boolean;\n};\n\nexport type UpdateManyParams<TData, TError, TVariables> = {\n  /**\n   * ids for mutation function\n   */\n  ids?: BaseKey[];\n  /**\n   * Resource name for API data interactions\n   */\n  resource?: string;\n  /**\n   * [Determines when mutations are executed](/docs/advanced-tutorials/mutation-mode/)\n   */\n  mutationMode?: MutationMode;\n  /**\n   * Duration in ms to wait before executing the mutation when `mutationMode = \"undoable\"`\n   */\n  undoableTimeout?: number;\n  /**\n   * Provides a function to cancel the mutation when `mutationMode = \"undoable\"`\n   */\n  onCancel?: (cancelMutation: () => void) => void;\n  /**\n   * Values for mutation function\n   */\n  values?: TVariables;\n  /**\n   * meta data for `dataProvider`\n   */\n  meta?: MetaQuery;\n  /**\n   * meta data for `dataProvider`\n  /**\n   * If there is more than one `dataProvider`, you should use the `dataProviderName` that you will use.\n   * @default \"default\"\n   */\n  dataProviderName?: string;\n  /**\n   *  You can use it to manage the invalidations that will occur at the end of the mutation.\n   */\n  invalidates?: Array<keyof IQueryKeys>;\n  /**\n   * You can use it to manage the invalidations that will occur at the end of the mutation.\n   * @default {\n   *   list: true,\n   *   many: true,\n   *   detail: true,\n   * }\n   */\n  optimisticUpdateMap?: OptimisticUpdateManyMapType<TData, TVariables>;\n} & SuccessErrorNotification<\n  UpdateManyResponse<TData>,\n  TError,\n  { ids: BaseKey[]; values: TVariables }\n>;\n\nexport type UseUpdateManyReturnType<\n  TData extends BaseRecord = BaseRecord,\n  TError extends HttpError = HttpError,\n  TVariables = {},\n> = UseMutationResult<\n  UpdateManyResponse<TData>,\n  TError,\n  UpdateManyParams<TData, TError, TVariables>,\n  UpdateContext<TData>\n> &\n  UseLoadingOvertimeReturnType;\n\nexport type UseUpdateManyProps<\n  TData extends BaseRecord = BaseRecord,\n  TError extends HttpError = HttpError,\n  TVariables = {},\n> = {\n  mutationOptions?: Omit<\n    UseMutationOptions<\n      UpdateManyResponse<TData>,\n      TError,\n      UpdateManyParams<TData, TError, TVariables>,\n      UpdateContext<TData>\n    >,\n    \"mutationFn\" | \"onMutate\"\n  >;\n} & UseLoadingOvertimeOptionsProps &\n  UpdateManyParams<TData, TError, TVariables>;\n\n/**\n * `useUpdateMany` is a modified version of `react-query`'s {@link https://tanstack.com/query/v5/docs/framework/react/reference/useMutation `useMutation`} for multiple update mutations.\n *\n * It uses `updateMany` method as mutation function from the `dataProvider` which is passed to `<Refine>`.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/hooks/data/useUpdateMany} for more details.\n *\n * @typeParam TData - Result data of the query extends {@link https://refine.dev/docs/core/interfaceReferences#baserecord `BaseRecord`}\n * @typeParam TError - Custom error object that extends {@link https://refine.dev/docs/core/interfaceReferences#httperror `HttpError`}\n * @typeParam TVariables - Values for mutation function\n *\n */\nexport const useUpdateMany = <\n  TData extends BaseRecord = BaseRecord,\n  TError extends HttpError = HttpError,\n  TVariables = {},\n>({\n  ids: idsFromProps,\n  resource: resourceFromProps,\n  values: valuesFromProps,\n  dataProviderName: dataProviderNameFromProps,\n  successNotification: successNotificationFromProps,\n  errorNotification: errorNotificationFromProps,\n  meta: metaFromProps,\n  mutationMode: mutationModeFromProps,\n  undoableTimeout: undoableTimeoutFromProps,\n  onCancel: onCancelFromProps,\n  optimisticUpdateMap: optimisticUpdateMapFromProps,\n  invalidates: invalidatesFromProps,\n  mutationOptions,\n  overtimeOptions,\n}: UseUpdateManyProps<TData, TError, TVariables> = {}): UseUpdateManyReturnType<\n  TData,\n  TError,\n  TVariables\n> => {\n  const { resources, select } = useResourceParams();\n  const queryClient = useQueryClient();\n  const dataProvider = useDataProvider();\n  const translate = useTranslate();\n  const {\n    mutationMode: mutationModeContext,\n    undoableTimeout: undoableTimeoutContext,\n  } = useMutationMode();\n  const { mutate: checkError } = useOnError();\n  const { notificationDispatch } = useCancelNotification();\n  const publish = usePublish();\n  const handleNotification = useHandleNotification();\n  const invalidateStore = useInvalidate();\n  const { log } = useLog();\n  const getMeta = useMeta();\n  const {\n    options: { textTransformers },\n  } = useRefineContext();\n  const { keys } = useKeys();\n\n  const mutationResult = useMutation<\n    UpdateManyResponse<TData>,\n    TError,\n    UpdateManyParams<TData, TError, TVariables>,\n    UpdateContext<TData>\n  >({\n    mutationFn: ({\n      ids = idsFromProps,\n      values = valuesFromProps,\n      resource: resourceName = resourceFromProps,\n      onCancel = onCancelFromProps,\n      mutationMode = mutationModeFromProps,\n      undoableTimeout = undoableTimeoutFromProps,\n      meta = metaFromProps,\n      dataProviderName = dataProviderNameFromProps,\n    }: UpdateManyParams<TData, TError, TVariables>) => {\n      if (!ids) throw missingIdError;\n      if (!values) throw missingValuesError;\n      if (!resourceName) throw missingResourceError;\n\n      const { resource, identifier } = select(resourceName);\n\n      const combinedMeta = getMeta({\n        resource,\n        meta: meta,\n      });\n\n      const mutationModePropOrContext = mutationMode ?? mutationModeContext;\n\n      const undoableTimeoutPropOrContext =\n        undoableTimeout ?? undoableTimeoutContext;\n\n      const selectedDataProvider = dataProvider(\n        pickDataProvider(identifier, dataProviderName, resources),\n      );\n\n      const mutationFn = () => {\n        if (selectedDataProvider.updateMany) {\n          return selectedDataProvider.updateMany<TData, TVariables>({\n            resource: resource.name,\n            ids,\n            variables: values,\n            meta: combinedMeta,\n          });\n        }\n        return handleMultiple(\n          ids.map((id) =>\n            selectedDataProvider.update<TData, TVariables>({\n              resource: resource.name,\n              id,\n              variables: values,\n              meta: combinedMeta,\n            }),\n          ),\n        );\n      };\n\n      if (!(mutationModePropOrContext === \"undoable\")) {\n        return mutationFn();\n      }\n\n      const updatePromise = new Promise<UpdateManyResponse<TData>>(\n        (resolve, reject) => {\n          const doMutation = () => {\n            mutationFn()\n              .then((result) => resolve(result))\n              .catch((err) => reject(err));\n          };\n\n          const cancelMutation = () => {\n            reject({ message: \"mutationCancelled\" });\n          };\n\n          if (onCancel) {\n            onCancel(cancelMutation);\n          }\n\n          notificationDispatch({\n            type: ActionTypes.ADD,\n            payload: {\n              id: ids,\n              resource: identifier,\n              cancelMutation: cancelMutation,\n              doMutation: doMutation,\n              seconds: undoableTimeoutPropOrContext,\n              isSilent: !!onCancel,\n            },\n          });\n        },\n      );\n      return updatePromise;\n    },\n    onMutate: async ({\n      resource: resourceName = resourceFromProps,\n      ids = idsFromProps,\n      values = valuesFromProps,\n      mutationMode = mutationModeFromProps,\n      dataProviderName = dataProviderNameFromProps,\n      meta = metaFromProps,\n      optimisticUpdateMap = optimisticUpdateMapFromProps ?? {\n        list: true,\n        many: true,\n        detail: true,\n      },\n    }) => {\n      if (!ids) throw missingIdError;\n      if (!values) throw missingValuesError;\n      if (!resourceName) throw missingResourceError;\n\n      const { identifier } = select(resourceName);\n      const { gqlMutation: _, gqlQuery: __, ...preferredMeta } = meta ?? {};\n\n      const queryKey = keys()\n        .data(pickDataProvider(identifier, dataProviderName, resources))\n        .resource(identifier);\n\n      const resourceKeys = keys()\n        .data(pickDataProvider(identifier, dataProviderName, resources))\n        .resource(identifier);\n\n      const mutationModePropOrContext = mutationMode ?? mutationModeContext;\n\n      await queryClient.cancelQueries({\n        queryKey: resourceKeys.get(),\n      });\n\n      const previousQueries = queryClient.getQueriesData<QueryResponse<TData>>({\n        queryKey: resourceKeys.get(),\n      });\n\n      if (mutationModePropOrContext !== \"pessimistic\") {\n        if (optimisticUpdateMap.list) {\n          // Set the previous queries to the new ones:\n          queryClient.setQueriesData(\n            {\n              queryKey: resourceKeys\n                .action(\"list\")\n                .params(preferredMeta ?? {})\n                .get(),\n            },\n            (previous?: GetListResponse<TData> | null) => {\n              if (typeof optimisticUpdateMap.list === \"function\") {\n                return optimisticUpdateMap.list(previous, values, ids);\n              }\n\n              if (!previous) {\n                return null;\n              }\n\n              const data = previous.data.map((record: TData) => {\n                if (\n                  record.id !== undefined &&\n                  ids\n                    .filter((id) => id !== undefined)\n                    .map(String)\n                    .includes(record.id.toString())\n                ) {\n                  return {\n                    ...record,\n                    ...values,\n                  };\n                }\n\n                return record;\n              });\n\n              return {\n                ...previous,\n                data,\n              };\n            },\n          );\n        }\n\n        if (optimisticUpdateMap.many) {\n          queryClient.setQueriesData(\n            {\n              queryKey: resourceKeys.action(\"many\").get(),\n            },\n            (previous?: GetManyResponse<TData> | null) => {\n              if (typeof optimisticUpdateMap.many === \"function\") {\n                return optimisticUpdateMap.many(previous, values, ids);\n              }\n\n              if (!previous) {\n                return null;\n              }\n\n              const data = previous.data.map((record: TData) => {\n                if (\n                  record.id !== undefined &&\n                  ids\n                    .filter((id) => id !== undefined)\n                    .map(String)\n                    .includes(record.id.toString())\n                ) {\n                  return {\n                    ...record,\n                    ...values,\n                  };\n                }\n                return record;\n              });\n              return {\n                ...previous,\n                data,\n              };\n            },\n          );\n        }\n\n        if (optimisticUpdateMap.detail) {\n          for (const id of ids) {\n            queryClient.setQueriesData(\n              {\n                queryKey: resourceKeys\n                  .action(\"one\")\n                  .id(id)\n                  .params(preferredMeta ?? {})\n                  .get(),\n              },\n              (previous?: GetOneResponse<TData> | null) => {\n                if (typeof optimisticUpdateMap.detail === \"function\") {\n                  return optimisticUpdateMap.detail(previous, values, id);\n                }\n\n                if (!previous) {\n                  return null;\n                }\n\n                const data = {\n                  ...previous.data,\n                  ...values,\n                };\n                return {\n                  ...previous,\n                  data,\n                };\n              },\n            );\n          }\n        }\n      }\n\n      return {\n        previousQueries,\n      };\n    },\n    onSettled: (data, error, variables, context) => {\n      const {\n        ids = idsFromProps,\n        resource: resourceName = resourceFromProps,\n        dataProviderName = dataProviderNameFromProps,\n        invalidates = invalidatesFromProps,\n      } = variables;\n      if (!ids) throw missingIdError;\n      if (!resourceName) throw missingResourceError;\n\n      const { identifier } = select(resourceName);\n\n      // invalidate the cache for the list and many queries:\n      invalidateStore({\n        resource: identifier,\n        invalidates: invalidates ?? [\"list\", \"many\"],\n        dataProviderName: pickDataProvider(\n          identifier,\n          dataProviderName,\n          resources,\n        ),\n      });\n\n      ids.forEach((id) =>\n        invalidateStore({\n          resource: identifier,\n          invalidates: invalidates ?? [\"detail\"],\n          dataProviderName: pickDataProvider(\n            identifier,\n            dataProviderName,\n            resources,\n          ),\n          id,\n        }),\n      );\n\n      notificationDispatch({\n        type: ActionTypes.REMOVE,\n        payload: { id: ids, resource: identifier },\n      });\n\n      mutationOptions?.onSettled?.(data, error, variables, context);\n    },\n    onSuccess: (data, variables, context) => {\n      const {\n        ids = idsFromProps,\n        resource: resourceName = resourceFromProps,\n        values = valuesFromProps,\n        meta = metaFromProps,\n        dataProviderName: dataProviderNameFromProp = dataProviderNameFromProps,\n        successNotification = successNotificationFromProps,\n      } = variables;\n      if (!ids) throw missingIdError;\n      if (!values) throw missingValuesError;\n      if (!resourceName) throw missingResourceError;\n\n      const { resource, identifier } = select(resourceName);\n      const resourceSingular = textTransformers.singular(identifier);\n\n      const dataProviderName = pickDataProvider(\n        identifier,\n        dataProviderNameFromProp,\n        resources,\n      );\n\n      const combinedMeta = getMeta({\n        resource,\n        meta: meta,\n      });\n\n      const notificationConfig =\n        typeof successNotification === \"function\"\n          ? successNotification(data, { ids, values }, identifier)\n          : successNotification;\n\n      handleNotification(notificationConfig, {\n        key: `${ids}-${identifier}-notification`,\n        description: translate(\"notifications.success\", \"Successful\"),\n        message: translate(\n          \"notifications.editSuccess\",\n          {\n            resource: translate(`${identifier}.${identifier}`, identifier),\n          },\n          `Successfully updated ${resourceSingular}`,\n        ),\n        type: \"success\",\n      });\n\n      publish?.({\n        channel: `resources/${resource.name}`,\n        type: \"updated\",\n        payload: {\n          ids: ids.map(String),\n        },\n        date: new Date(),\n        meta: {\n          ...combinedMeta,\n          dataProviderName,\n        },\n      });\n\n      const previousData: any[] = [];\n      if (context) {\n        const resourceKeys = keys()\n          .data(pickDataProvider(identifier, dataProviderName, resources))\n          .resource(identifier);\n\n        ids.forEach((id) => {\n          const queryData = queryClient.getQueryData<UpdateManyResponse<TData>>(\n            resourceKeys.action(\"one\").id(id).get(),\n          );\n\n          previousData.push(\n            Object.keys(values || {}).reduce<any>((acc, item: any) => {\n              acc[item] = queryData?.data?.[item];\n              return acc;\n            }, {}),\n          );\n        });\n      }\n\n      const {\n        fields: _fields,\n        operation: _operation,\n        variables: _variables,\n        ...rest\n      } = combinedMeta || {};\n      log?.mutate({\n        action: \"updateMany\",\n        resource: resource.name,\n        data: values,\n        previousData,\n        meta: {\n          ...rest,\n          dataProviderName,\n          ids,\n        },\n      });\n\n      mutationOptions?.onSuccess?.(data, variables, context);\n    },\n    onError: (err: TError, variables, context) => {\n      const {\n        ids = idsFromProps,\n        resource: resourceName = resourceFromProps,\n        errorNotification = errorNotificationFromProps,\n        values = valuesFromProps,\n      } = variables;\n      if (!ids) throw missingIdError;\n      if (!values) throw missingValuesError;\n      if (!resourceName) throw missingResourceError;\n\n      const { identifier } = select(resourceName);\n\n      // set back the queries to the context:\n      if (context) {\n        for (const query of context.previousQueries) {\n          queryClient.setQueryData(query[0], query[1]);\n        }\n      }\n\n      if (err.message !== \"mutationCancelled\") {\n        checkError(err);\n\n        const resourceSingular = textTransformers.singular(identifier);\n\n        const notificationConfig =\n          typeof errorNotification === \"function\"\n            ? errorNotification(err, { ids, values }, identifier)\n            : errorNotification;\n\n        handleNotification(notificationConfig, {\n          key: `${ids}-${identifier}-updateMany-error-notification`,\n          message: translate(\n            \"notifications.editError\",\n            {\n              resource: resourceSingular,\n              statusCode: err.statusCode,\n            },\n            `Error when updating ${resourceSingular} (status code: ${err.statusCode})`,\n          ),\n          description: err.message,\n          type: \"error\",\n        });\n      }\n\n      mutationOptions?.onError?.(err, variables, context);\n    },\n    mutationKey: keys().data().mutation(\"updateMany\").get(),\n    ...mutationOptions,\n    meta: {\n      ...mutationOptions?.meta,\n      ...getXRay(\"useUpdateMany\"),\n    },\n  });\n  const { mutate, mutateAsync, ...mutation } = mutationResult;\n\n  const { elapsedTime } = useLoadingOvertime({\n    ...overtimeOptions,\n    isLoading: mutation.isPending,\n  });\n\n  // this function is used to make the `variables` parameter optional\n  const handleMutation = (\n    variables?: UpdateManyParams<TData, TError, TVariables>,\n    options?: MutateOptions<\n      UpdateManyResponse<TData>,\n      TError,\n      UpdateManyParams<TData, TError, TVariables>,\n      UpdateContext<TData>\n    >,\n  ) => {\n    return mutate(variables || {}, options);\n  };\n\n  // this function is used to make the `variables` parameter optional\n  const handleMutateAsync = (\n    variables?: UpdateManyParams<TData, TError, TVariables>,\n    options?: MutateOptions<\n      UpdateManyResponse<TData>,\n      TError,\n      UpdateManyParams<TData, TError, TVariables>,\n      UpdateContext<TData>\n    >,\n  ) => {\n    return mutateAsync(variables || {}, options);\n  };\n\n  return {\n    mutation: mutationResult,\n    mutate: handleMutation,\n    mutateAsync: handleMutateAsync,\n    overtime: { elapsedTime },\n  };\n};\n\nconst missingResourceError = new Error(\n  \"[useUpdateMany]: `resource` is not defined or not matched but is required\",\n);\n\nconst missingIdError = new Error(\n  \"[useUpdateMany]: `id` is not defined but is required in edit and clone actions\",\n);\n\nconst missingValuesError = new Error(\n  \"[useUpdateMany]: `values` is not provided but is required\",\n);\n","import { getXRay } from \"@refinedev/devtools-internal\";\nimport {\n  type UseMutationOptions,\n  type UseMutationResult,\n  useMutation,\n  useQueryClient,\n} from \"@tanstack/react-query\";\n\nimport { handleMultiple, pickDataProvider } from \"@definitions\";\nimport {\n  useCancelNotification,\n  useDataProvider,\n  useHandleNotification,\n  useInvalidate,\n  useKeys,\n  useLog,\n  useMeta,\n  useMutationMode,\n  useOnError,\n  usePublish,\n  useRefineContext,\n  useResourceParams,\n  useTranslate,\n} from \"@hooks\";\n\nimport type {\n  BaseKey,\n  BaseRecord,\n  DeleteManyResponse,\n  GetListResponse,\n  HttpError,\n  IQueryKeys,\n  MetaQuery,\n  MutationMode,\n  PrevContext as DeleteContext,\n  PreviousQuery,\n} from \"../../contexts/data/types\";\nimport type { SuccessErrorNotification } from \"../../contexts/notification/types\";\nimport { ActionTypes } from \"../../contexts/undoableQueue/types\";\nimport {\n  type UseLoadingOvertimeOptionsProps,\n  type UseLoadingOvertimeReturnType,\n  useLoadingOvertime,\n} from \"../useLoadingOvertime\";\n\nexport type DeleteManyParams<TData, TError, TVariables> = {\n  /**\n   * ids for mutation function\n   */\n  ids: BaseKey[];\n  /**\n   * Resource name for API data interactions\n   */\n  resource: string;\n  /**\n   * [Determines when mutations are executed](/docs/advanced-tutorials/mutation-mode/)\n   */\n  mutationMode?: MutationMode;\n  /**\n   * Duration in ms to wait before executing the mutation when `mutationMode = \"undoable\"`\n   */\n  undoableTimeout?: number;\n  /**\n   * Provides a function to cancel the mutation when `mutationMode = \"undoable\"`\n   */\n  onCancel?: (cancelMutation: () => void) => void;\n  /**\n   * Metadata query for dataProvider\n   */\n  meta?: MetaQuery;\n  /**\n  /**\n   * If there is more than one `dataProvider`, you should use the `dataProviderName` that you will use.\n   * @default \"default\"\n   */\n  dataProviderName?: string;\n  /**\n   *  You can use it to manage the invalidations that will occur at the end of the mutation.\n   */\n  invalidates?: Array<keyof IQueryKeys>;\n  /**\n   * Values for mutation function\n   */\n  values?: TVariables;\n} & SuccessErrorNotification<DeleteManyResponse<TData>, TError, BaseKey[]>;\n\nexport type UseDeleteManyReturnType<\n  TData extends BaseRecord = BaseRecord,\n  TError = HttpError,\n  TVariables = {},\n> = {\n  mutation: UseMutationResult<\n    DeleteManyResponse<TData>,\n    TError,\n    DeleteManyParams<TData, TError, TVariables>,\n    unknown\n  >;\n  mutate: UseMutationResult<\n    DeleteManyResponse<TData>,\n    TError,\n    DeleteManyParams<TData, TError, TVariables>,\n    DeleteContext<TData>\n  >[\"mutate\"];\n  mutateAsync: UseMutationResult<\n    DeleteManyResponse<TData>,\n    TError,\n    DeleteManyParams<TData, TError, TVariables>,\n    DeleteContext<TData>\n  >[\"mutateAsync\"];\n} & UseLoadingOvertimeReturnType;\n\nexport type UseDeleteManyProps<\n  TData extends BaseRecord = BaseRecord,\n  TError extends HttpError = HttpError,\n  TVariables = {},\n> = {\n  mutationOptions?: Omit<\n    UseMutationOptions<\n      DeleteManyResponse<TData>,\n      TError,\n      DeleteManyParams<TData, TError, TVariables>,\n      DeleteContext<TData>\n    >,\n    \"mutationFn\" | \"onError\" | \"onSuccess\" | \"onSettled\" | \"onMutate\"\n  >;\n} & UseLoadingOvertimeOptionsProps;\n\n/**\n * `useDeleteMany` is a modified version of `react-query`'s {@link https://tanstack.com/query/v5/docs/framework/react/reference/useMutation `useMutation`} for multiple delete mutations.\n *\n * It uses `deleteMany` method as mutation function from the `dataProvider` which is passed to `<Refine>`.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/hooks/data/useDeleteMany} for more details.\n *\n * @typeParam TData - Result data of the query extends {@link https://refine.dev/docs/core/interfaceReferences#baserecord `BaseRecord`}\n * @typeParam TError - Custom error object that extends {@link https://refine.dev/docs/core/interfaceReferences#httperror `HttpError`}\n * @typeParam TVariables - Values for params. default `{}`\n *\n */\nexport const useDeleteMany = <\n  TData extends BaseRecord = BaseRecord,\n  TError extends HttpError = HttpError,\n  TVariables = {},\n>({\n  mutationOptions,\n  overtimeOptions,\n}: UseDeleteManyProps<TData, TError, TVariables> = {}): UseDeleteManyReturnType<\n  TData,\n  TError,\n  TVariables\n> => {\n  const { mutate: checkError } = useOnError();\n\n  const {\n    mutationMode: mutationModeContext,\n    undoableTimeout: undoableTimeoutContext,\n  } = useMutationMode();\n  const dataProvider = useDataProvider();\n  const { notificationDispatch } = useCancelNotification();\n  const translate = useTranslate();\n  const publish = usePublish();\n  const handleNotification = useHandleNotification();\n  const invalidateStore = useInvalidate();\n  const { log } = useLog();\n  const { resources, select } = useResourceParams();\n  const queryClient = useQueryClient();\n  const getMeta = useMeta();\n  const {\n    options: { textTransformers },\n  } = useRefineContext();\n  const { keys } = useKeys();\n\n  const mutation = useMutation<\n    DeleteManyResponse<TData>,\n    TError,\n    DeleteManyParams<TData, TError, TVariables>,\n    DeleteContext<TData>\n  >({\n    mutationFn: ({\n      resource: resourceName,\n      ids,\n      mutationMode,\n      undoableTimeout,\n      onCancel,\n      meta,\n      dataProviderName,\n      values,\n    }: DeleteManyParams<TData, TError, TVariables>) => {\n      const { resource, identifier } = select(resourceName);\n\n      const combinedMeta = getMeta({\n        resource,\n        meta: meta,\n      });\n\n      const mutationModePropOrContext = mutationMode ?? mutationModeContext;\n\n      const undoableTimeoutPropOrContext =\n        undoableTimeout ?? undoableTimeoutContext;\n\n      const selectedDataProvider = dataProvider(\n        pickDataProvider(identifier, dataProviderName, resources),\n      );\n\n      const mutationFn = () => {\n        if (selectedDataProvider.deleteMany) {\n          return selectedDataProvider.deleteMany<TData, TVariables>({\n            resource: resource.name,\n            ids,\n            meta: combinedMeta,\n            variables: values,\n          });\n        }\n        return handleMultiple(\n          ids.map((id) =>\n            selectedDataProvider.deleteOne<TData, TVariables>({\n              resource: resource.name,\n              id,\n              meta: combinedMeta,\n              variables: values,\n            }),\n          ),\n        );\n      };\n\n      if (!(mutationModePropOrContext === \"undoable\")) {\n        return mutationFn();\n      }\n\n      const updatePromise = new Promise<DeleteManyResponse<TData>>(\n        (resolve, reject) => {\n          const doMutation = () => {\n            mutationFn()\n              .then((result) => resolve(result))\n              .catch((err) => reject(err));\n          };\n\n          const cancelMutation = () => {\n            reject({ message: \"mutationCancelled\" });\n          };\n\n          if (onCancel) {\n            onCancel(cancelMutation);\n          }\n\n          notificationDispatch({\n            type: ActionTypes.ADD,\n            payload: {\n              id: ids,\n              resource: identifier,\n              cancelMutation: cancelMutation,\n              doMutation: doMutation,\n              seconds: undoableTimeoutPropOrContext,\n              isSilent: !!onCancel,\n            },\n          });\n        },\n      );\n      return updatePromise;\n    },\n    onMutate: async ({\n      ids,\n      resource: resourceName,\n      mutationMode,\n      dataProviderName,\n      meta,\n    }) => {\n      const { identifier } = select(resourceName);\n\n      const { gqlMutation: _, gqlQuery: __, ...preferredMeta } = meta ?? {};\n\n      const resourceKeys = keys()\n        .data(pickDataProvider(identifier, dataProviderName, resources))\n        .resource(identifier);\n\n      const mutationModePropOrContext = mutationMode ?? mutationModeContext;\n\n      await queryClient.cancelQueries({\n        queryKey: resourceKeys.get(),\n      });\n\n      const previousQueries: PreviousQuery<TData>[] =\n        queryClient.getQueriesData({\n          queryKey: resourceKeys.get(),\n        });\n\n      if (mutationModePropOrContext !== \"pessimistic\") {\n        // Set the previous queries to the new ones:\n        queryClient.setQueriesData(\n          {\n            queryKey: resourceKeys\n              .action(\"list\")\n              .params(preferredMeta ?? {})\n              .get(),\n          },\n          (previous?: GetListResponse<TData> | null) => {\n            if (!previous) {\n              return null;\n            }\n\n            const data = previous.data.filter(\n              (item) =>\n                item.id && !ids.map(String).includes(item.id.toString()),\n            );\n\n            return {\n              data,\n              total: previous.total - 1,\n            };\n          },\n        );\n\n        queryClient.setQueriesData(\n          {\n            queryKey: resourceKeys.action(\"many\").get(),\n          },\n          (previous?: GetListResponse<TData> | null) => {\n            if (!previous) {\n              return null;\n            }\n\n            const data = previous.data.filter((record: TData) => {\n              if (record.id) {\n                return !ids.map(String).includes(record.id.toString());\n              }\n              return false;\n            });\n\n            return {\n              ...previous,\n              data,\n            };\n          },\n        );\n\n        for (const id of ids) {\n          queryClient.setQueriesData(\n            {\n              queryKey: resourceKeys\n                .action(\"one\")\n                .id(id)\n                .params(preferredMeta)\n                .get(),\n            },\n            (previous?: any | null) => {\n              if (!previous || previous.data.id === id) {\n                return null;\n              }\n              return {\n                ...previous,\n              };\n            },\n          );\n        }\n      }\n\n      return {\n        previousQueries,\n      };\n    },\n    // Always refetch after error or success:\n    onSettled: (\n      _data,\n      _error,\n      {\n        resource: resourceName,\n        ids,\n        dataProviderName,\n        invalidates = [\"list\", \"many\"],\n      },\n    ) => {\n      const { identifier } = select(resourceName);\n\n      // invalidate the cache for the list and many queries:\n      invalidateStore({\n        resource: identifier,\n        dataProviderName: pickDataProvider(\n          identifier,\n          dataProviderName,\n          resources,\n        ),\n        invalidates,\n      });\n\n      notificationDispatch({\n        type: ActionTypes.REMOVE,\n        payload: { id: ids, resource: identifier },\n      });\n    },\n    onSuccess: (\n      _data,\n      {\n        ids,\n        resource: resourceName,\n        meta,\n        dataProviderName: dataProviderNameFromProp,\n        successNotification,\n      },\n    ) => {\n      const { resource, identifier } = select(resourceName);\n\n      const dataProviderName = pickDataProvider(\n        identifier,\n        dataProviderNameFromProp,\n        resources,\n      );\n\n      const combinedMeta = getMeta({\n        resource,\n        meta: meta,\n      });\n\n      // Remove the queries from the cache:\n      const resourceKeys = keys()\n        .data(pickDataProvider(identifier, dataProviderName, resources))\n        .resource(identifier);\n\n      ids.forEach((id) =>\n        queryClient.removeQueries({\n          queryKey: resourceKeys.action(\"one\").id(id).get(),\n        }),\n      );\n\n      const notificationConfig =\n        typeof successNotification === \"function\"\n          ? successNotification(_data, ids, identifier)\n          : successNotification;\n\n      handleNotification(notificationConfig, {\n        key: `${ids}-${identifier}-notification`,\n        description: translate(\"notifications.success\", \"Success\"),\n        message: translate(\n          \"notifications.deleteSuccess\",\n          {\n            resource: translate(`${identifier}.${identifier}`, identifier),\n          },\n          `Successfully deleted ${identifier}`,\n        ),\n        type: \"success\",\n      });\n\n      publish?.({\n        channel: `resources/${resource.name}`,\n        type: \"deleted\",\n        payload: { ids },\n        date: new Date(),\n        meta: {\n          ...combinedMeta,\n          dataProviderName,\n        },\n      });\n\n      const {\n        fields: _fields,\n        operation: _operation,\n        variables: _variables,\n        ...rest\n      } = combinedMeta || {};\n      log?.mutate({\n        action: \"deleteMany\",\n        resource: resource.name,\n        meta: {\n          ids,\n          dataProviderName,\n          ...rest,\n        },\n      });\n\n      ids.forEach((id) =>\n        queryClient.removeQueries({\n          queryKey: resourceKeys.action(\"one\").id(id).get(),\n        }),\n      );\n    },\n    onError: (\n      err,\n      { ids, resource: resourceName, errorNotification },\n      context,\n    ) => {\n      const { identifier } = select(resourceName);\n\n      // set back the queries to the context:\n      if (context) {\n        for (const query of context.previousQueries) {\n          queryClient.setQueryData(query[0], query[1]);\n        }\n      }\n\n      if (err.message !== \"mutationCancelled\") {\n        checkError(err);\n        const resourceSingular = textTransformers.singular(identifier);\n\n        const notificationConfig =\n          typeof errorNotification === \"function\"\n            ? errorNotification(err, ids, identifier)\n            : errorNotification;\n\n        handleNotification(notificationConfig, {\n          key: `${ids}-${identifier}-notification`,\n          message: translate(\n            \"notifications.deleteError\",\n            {\n              resource: resourceSingular,\n              statusCode: err.statusCode,\n            },\n            `Error (status code: ${err.statusCode})`,\n          ),\n          description: err.message,\n          type: \"error\",\n        });\n      }\n    },\n    mutationKey: keys().data().mutation(\"deleteMany\").get(),\n    ...mutationOptions,\n    meta: {\n      ...mutationOptions?.meta,\n      ...getXRay(\"useDeleteMany\"),\n    },\n  });\n\n  const { elapsedTime } = useLoadingOvertime({\n    ...overtimeOptions,\n    isLoading: mutation.isPending,\n  });\n\n  return {\n    mutation,\n    mutate: mutation.mutate,\n    mutateAsync: mutation.mutateAsync,\n    overtime: { elapsedTime },\n  };\n};\n","import { useDataProvider, useResourceParams } from \"@hooks\";\n\nexport const useApiUrl = (dataProviderName?: string): string => {\n  const dataProvider = useDataProvider();\n  const { resource } = useResourceParams();\n\n  const { getApiUrl } = dataProvider(\n    dataProviderName ?? resource?.meta?.dataProviderName,\n  );\n\n  return getApiUrl();\n};\n","import { useEffect } from \"react\";\nimport { getXRay } from \"@refinedev/devtools-internal\";\nimport {\n  type QueryObserverResult,\n  type UseQueryOptions,\n  useQuery,\n} from \"@tanstack/react-query\";\n\nimport { prepareQueryContext } from \"@definitions/helpers\";\nimport {\n  useDataProvider,\n  useHandleNotification,\n  useKeys,\n  useMeta,\n  useOnError,\n  useTranslate,\n} from \"@hooks\";\n\nimport type {\n  BaseRecord,\n  CrudFilter,\n  CrudSort,\n  CustomResponse,\n  HttpError,\n  MetaQuery,\n  Prettify,\n} from \"../../contexts/data/types\";\nimport type { SuccessErrorNotification } from \"../../contexts/notification/types\";\nimport {\n  type UseLoadingOvertimeOptionsProps,\n  type UseLoadingOvertimeReturnType,\n  useLoadingOvertime,\n} from \"../useLoadingOvertime\";\n\ninterface UseCustomConfig<TQuery, TPayload> {\n  sorters?: CrudSort[];\n  filters?: CrudFilter[];\n  query?: TQuery;\n  payload?: TPayload;\n  headers?: {};\n}\n\n// Clean type without custom callback extensions\nexport type UseCustomQueryOptions<TQueryFnData, TError, TData> = Omit<\n  UseQueryOptions<CustomResponse<TQueryFnData>, TError, CustomResponse<TData>>,\n  \"queryKey\" | \"queryFn\"\n> & {\n  // Make queryKey and queryFn optional for backward compatibility\n  queryKey?: UseQueryOptions<\n    CustomResponse<TQueryFnData>,\n    TError,\n    CustomResponse<TData>\n  >[\"queryKey\"];\n  queryFn?: UseQueryOptions<\n    CustomResponse<TQueryFnData>,\n    TError,\n    CustomResponse<TData>\n  >[\"queryFn\"];\n};\n\nexport type UseCustomProps<TQueryFnData, TError, TQuery, TPayload, TData> = {\n  /**\n   * request's URL\n   */\n  url: string;\n  /**\n   * request's method (`GET`, `POST`, etc.)\n   */\n  method: \"get\" | \"delete\" | \"head\" | \"options\" | \"post\" | \"put\" | \"patch\";\n  /**\n   * The config of your request. You can send headers, payload, query, filters and sorters using this field\n   */\n  config?: UseCustomConfig<TQuery, TPayload>;\n  /**\n   * react-query's [useQuery](https://tanstack.com/query/v5/docs/framework/react/reference/useQuery) options\n   */\n  queryOptions?: UseCustomQueryOptions<TQueryFnData, TError, TData>;\n  /**\n   * meta data for `dataProvider`\n   */\n  meta?: MetaQuery;\n  /**\n   * meta data for `dataProvider`\n  /**\n   * If there is more than one `dataProvider`, you should use the `dataProviderName` that you will use.\n   */\n  dataProviderName?: string;\n} & SuccessErrorNotification<\n  CustomResponse<TData>,\n  TError,\n  Prettify<UseCustomConfig<TQuery, TPayload> & MetaQuery>\n> &\n  UseLoadingOvertimeOptionsProps;\n\n/**\n * `useCustom` is a modified version of `react-query`'s {@link https://tanstack.com/query/v5/docs/framework/react/guides/queries `useQuery`} used for custom requests.\n *\n * It uses the `custom` method from the `dataProvider` which is passed to `<Refine>`.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/hooks/data/useCustom} for more details.\n *\n * @typeParam TQueryFnData - Result data returned by the query function. Extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}\n * @typeParam TError - Custom error object that extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#httperror `HttpError`}\n * @typeParam TQuery - Values for query params\n * @typeParam TPayload - Values for params\n * @typeParam TData - Result data returned by the `select` function. Extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}. Defaults to `TQueryFnData`\n *\n */\n\nexport type UseCustomReturnType<TData, TError> = {\n  query: QueryObserverResult<CustomResponse<TData>, TError>;\n  result: {\n    data: CustomResponse<TData>[\"data\"];\n  };\n} & UseLoadingOvertimeReturnType;\n\nconst EMPTY_OBJECT = Object.freeze({}) as any;\n\nexport const useCustom = <\n  TQueryFnData extends BaseRecord = BaseRecord,\n  TError extends HttpError = HttpError,\n  TQuery = unknown,\n  TPayload = unknown,\n  TData extends BaseRecord = TQueryFnData,\n>({\n  url,\n  method,\n  config,\n  queryOptions,\n  successNotification,\n  errorNotification,\n  meta,\n  dataProviderName,\n  overtimeOptions,\n}: UseCustomProps<\n  TQueryFnData,\n  TError,\n  TQuery,\n  TPayload,\n  TData\n>): UseCustomReturnType<TData, TError> => {\n  const dataProvider = useDataProvider();\n  const translate = useTranslate();\n  const { mutate: checkError } = useOnError();\n  const handleNotification = useHandleNotification();\n  const getMeta = useMeta();\n  const { keys } = useKeys();\n\n  const preferredMeta = meta;\n\n  const { custom } = dataProvider(dataProviderName);\n\n  const combinedMeta = getMeta({ meta: preferredMeta });\n\n  if (custom) {\n    const queryResponse = useQuery<\n      CustomResponse<TQueryFnData>,\n      TError,\n      CustomResponse<TData>\n    >({\n      queryKey: keys()\n        .data(dataProviderName)\n        .mutation(\"custom\")\n        .params({\n          method,\n          url,\n          ...config,\n          ...(preferredMeta || {}),\n        })\n        .get(),\n      queryFn: (context) =>\n        custom<TQueryFnData>({\n          url,\n          method,\n          ...config,\n          meta: {\n            ...combinedMeta,\n            ...prepareQueryContext(context as any),\n          },\n        }),\n      ...queryOptions,\n      meta: {\n        ...queryOptions?.meta,\n        ...getXRay(\"useCustom\"),\n      },\n    });\n\n    // Handle success\n    useEffect(() => {\n      if (queryResponse.isSuccess && queryResponse.data) {\n        const notificationConfig =\n          typeof successNotification === \"function\"\n            ? successNotification(queryResponse.data, {\n                ...config,\n                ...combinedMeta,\n              })\n            : successNotification;\n\n        handleNotification(notificationConfig);\n      }\n    }, [queryResponse.isSuccess, queryResponse.data, successNotification]);\n\n    // Handle error\n    useEffect(() => {\n      if (queryResponse.isError && queryResponse.error) {\n        checkError(queryResponse.error);\n\n        const notificationConfig =\n          typeof errorNotification === \"function\"\n            ? errorNotification(queryResponse.error, {\n                ...config,\n                ...combinedMeta,\n              })\n            : errorNotification;\n\n        handleNotification(notificationConfig, {\n          key: `${method}-notification`,\n          message: translate(\n            \"notifications.error\",\n            { statusCode: queryResponse.error.statusCode },\n            `Error (status code: ${queryResponse.error.statusCode})`,\n          ),\n          description: queryResponse.error.message,\n          type: \"error\",\n        });\n      }\n    }, [queryResponse.isError, queryResponse.error?.message]);\n    const { elapsedTime } = useLoadingOvertime({\n      ...overtimeOptions,\n      isLoading: queryResponse.isFetching,\n    });\n\n    return {\n      query: queryResponse,\n      result: {\n        data: queryResponse.data?.data || EMPTY_OBJECT,\n      },\n      overtime: { elapsedTime },\n    };\n  }\n  throw Error(\"Not implemented custom on data provider.\");\n};\n","import { getXRay } from \"@refinedev/devtools-internal\";\nimport {\n  type UseMutationOptions,\n  type UseMutationResult,\n  useMutation,\n} from \"@tanstack/react-query\";\n\nimport {\n  useDataProvider,\n  useHandleNotification,\n  useKeys,\n  useMeta,\n  useOnError,\n  useTranslate,\n} from \"@hooks\";\n\nimport type {\n  BaseRecord,\n  CreateResponse,\n  HttpError,\n  MetaQuery,\n  Prettify,\n} from \"../../contexts/data/types\";\nimport type { SuccessErrorNotification } from \"../../contexts/notification/types\";\nimport {\n  type UseLoadingOvertimeOptionsProps,\n  type UseLoadingOvertimeReturnType,\n  useLoadingOvertime,\n} from \"../useLoadingOvertime\";\n\ninterface UseCustomMutationConfig {\n  headers?: {};\n}\n\ntype useCustomMutationParams<TData, TError, TVariables> = {\n  url: string;\n  method: \"post\" | \"put\" | \"patch\" | \"delete\";\n  values: TVariables;\n  /**\n   * Meta data for `dataProvider`\n   */\n  meta?: MetaQuery;\n  /**\n   * If there is more than one `dataProvider`, you should use the `dataProviderName` that you will use.\n   */\n  dataProviderName?: string;\n  config?: UseCustomMutationConfig;\n} & SuccessErrorNotification<\n  CreateResponse<TData>,\n  TError,\n  Prettify<UseCustomMutationConfig & MetaQuery>\n>;\n\nexport type UseCustomMutationReturnType<\n  TData extends BaseRecord = BaseRecord,\n  TError extends HttpError = HttpError,\n  TVariables = {},\n> = {\n  mutation: UseMutationResult<\n    CreateResponse<TData>,\n    TError,\n    useCustomMutationParams<TData, TError, TVariables>,\n    unknown\n  >;\n  mutate: UseMutationResult<\n    CreateResponse<TData>,\n    TError,\n    useCustomMutationParams<TData, TError, TVariables>,\n    unknown\n  >[\"mutate\"];\n  mutateAsync: UseMutationResult<\n    CreateResponse<TData>,\n    TError,\n    useCustomMutationParams<TData, TError, TVariables>,\n    unknown\n  >[\"mutateAsync\"];\n} & UseLoadingOvertimeReturnType;\n\nexport type UseCustomMutationOptions<\n  TData extends BaseRecord = BaseRecord,\n  TError extends HttpError = HttpError,\n  TVariables = {},\n> = UseMutationOptions<\n  CreateResponse<TData>,\n  TError,\n  useCustomMutationParams<TData, TError, TVariables>,\n  unknown\n>;\n\nexport type UseCustomMutationProps<\n  TData extends BaseRecord = BaseRecord,\n  TError extends HttpError = HttpError,\n  TVariables = {},\n> = {\n  mutationOptions?: UseCustomMutationOptions<TData, TError, TVariables>;\n} & UseLoadingOvertimeOptionsProps;\n\n/**\n * `useCustomMutation` is a modified version of `react-query`'s {@link https://tanstack.com/query/v5/docs/framework/react/reference/useMutation `useMutation`} for create mutations.\n *\n * It uses the `custom` method from the `dataProvider` which is passed to `<Refine>`.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/hooks/data/useCustomMutation} for more details.\n *\n * @typeParam TData - Result data of the query extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}\n * @typeParam TError - Custom error object that extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences/#httperror `HttpError`}\n * @typeParam TVariables - Values for mutation function\n *\n */\n\nexport const useCustomMutation = <\n  TData extends BaseRecord = BaseRecord,\n  TError extends HttpError = HttpError,\n  TVariables = {},\n>({\n  mutationOptions,\n  overtimeOptions,\n}: UseCustomMutationProps<\n  TData,\n  TError,\n  TVariables\n> = {}): UseCustomMutationReturnType<TData, TError, TVariables> &\n  UseLoadingOvertimeReturnType => {\n  const { mutate: checkError } = useOnError();\n  const handleNotification = useHandleNotification();\n  const dataProvider = useDataProvider();\n  const translate = useTranslate();\n  const getMeta = useMeta();\n  const { keys } = useKeys();\n\n  const mutationResult = useMutation<\n    CreateResponse<TData>,\n    TError,\n    useCustomMutationParams<TData, TError, TVariables>,\n    unknown\n  >({\n    mutationKey: keys().data().mutation(\"customMutation\").get(),\n    mutationFn: ({\n      url,\n      method,\n      values,\n      meta,\n      dataProviderName,\n      config,\n    }: useCustomMutationParams<TData, TError, TVariables>) => {\n      const combinedMeta = getMeta({\n        meta: meta,\n      });\n\n      const { custom } = dataProvider(dataProviderName);\n\n      if (custom) {\n        return custom<TData>({\n          url,\n          method,\n          payload: values,\n          meta: combinedMeta,\n          headers: { ...config?.headers },\n        });\n      }\n\n      throw Error(\"Not implemented custom on data provider.\");\n    },\n    onSuccess: (data, variables, context) => {\n      const {\n        successNotification: successNotificationFromProp,\n        config,\n        meta,\n      } = variables;\n\n      const notificationConfig =\n        typeof successNotificationFromProp === \"function\"\n          ? successNotificationFromProp(data, {\n              ...config,\n              ...(meta || {}),\n            })\n          : successNotificationFromProp;\n\n      handleNotification(notificationConfig);\n\n      mutationOptions?.onSuccess?.(data, variables, context);\n    },\n    onError: (err: TError, variables, context) => {\n      const {\n        errorNotification: errorNotificationFromProp,\n        method,\n        config,\n        meta,\n      } = variables;\n\n      checkError(err);\n\n      const notificationConfig =\n        typeof errorNotificationFromProp === \"function\"\n          ? errorNotificationFromProp(err, {\n              ...config,\n              ...(meta || {}),\n            })\n          : errorNotificationFromProp;\n\n      handleNotification(notificationConfig, {\n        key: `${method}-notification`,\n        message: translate(\n          \"notifications.error\",\n          { statusCode: err.statusCode },\n          `Error (status code: ${err.statusCode})`,\n        ),\n        description: err.message,\n        type: \"error\",\n      });\n\n      mutationOptions?.onError?.(err, variables, context);\n    },\n    ...mutationOptions,\n    meta: {\n      ...mutationOptions?.meta,\n      ...getXRay(\"useCustomMutation\"),\n    },\n  });\n\n  const { elapsedTime } = useLoadingOvertime({\n    ...overtimeOptions,\n    isLoading: mutationResult.isPending,\n  });\n\n  return {\n    mutation: mutationResult,\n    mutate: mutationResult.mutate,\n    mutateAsync: mutationResult.mutateAsync,\n    overtime: { elapsedTime },\n  };\n};\n","import { useCallback, useContext } from \"react\";\n\nimport { DataContext } from \"@contexts/data\";\nimport { type DataProvider, IDataContext } from \"../../contexts/data/types\";\nexport const useDataProvider = (): ((\n  /**\n   * The name of the `data provider` you want to access\n   */\n  dataProviderName?: string,\n) => DataProvider) => {\n  const context = useContext(DataContext);\n\n  const handleDataProvider = useCallback(\n    (dataProviderName?: string) => {\n      if (dataProviderName) {\n        const dataProvider = context?.[dataProviderName];\n        if (!dataProvider) {\n          throw new Error(`\"${dataProviderName}\" Data provider not found`);\n        }\n\n        if (dataProvider && !context?.default) {\n          throw new Error(\n            \"If you have multiple data providers, you must provide default data provider property\",\n          );\n        }\n\n        return context[dataProviderName];\n      }\n\n      if (context.default) {\n        return context.default;\n      }\n\n      throw new Error(\n        `There is no \"default\" data provider. Please pass dataProviderName.`,\n      );\n    },\n    [context],\n  );\n\n  return handleDataProvider;\n};\n","import React, { type PropsWithChildren } from \"react\";\n\nimport type { DataProvider, DataProviders, IDataContext } from \"./types\";\n\nexport const defaultDataProvider: DataProviders = {\n  default: {} as DataProvider,\n};\n\nexport const DataContext =\n  React.createContext<IDataContext>(defaultDataProvider);\n\ntype Props = PropsWithChildren<{\n  dataProvider?: DataProvider | DataProviders;\n}>;\n\nexport const DataContextProvider: React.FC<Props> = ({\n  children,\n  dataProvider,\n}) => {\n  let providerValue = defaultDataProvider;\n\n  if (dataProvider) {\n    if (\n      !(\"default\" in dataProvider) &&\n      (\"getList\" in dataProvider || \"getOne\" in dataProvider)\n    ) {\n      providerValue = {\n        default: dataProvider,\n      };\n    } else {\n      providerValue = dataProvider;\n    }\n  }\n\n  return (\n    <DataContext.Provider value={providerValue}>\n      {children}\n    </DataContext.Provider>\n  );\n};\n","import { useEffect } from \"react\";\nimport { getXRay } from \"@refinedev/devtools-internal\";\nimport {\n  type InfiniteData,\n  type UseInfiniteQueryOptions,\n  type UseInfiniteQueryResult,\n  useInfiniteQuery,\n} from \"@tanstack/react-query\";\n\nimport {\n  getNextPageParam,\n  getPreviousPageParam,\n  handlePaginationParams,\n  pickDataProvider,\n  prepareQueryContext,\n} from \"@definitions/helpers\";\nimport {\n  useDataProvider,\n  useHandleNotification,\n  useKeys,\n  useMeta,\n  useOnError,\n  useResourceParams,\n  useResourceSubscription,\n  useTranslate,\n} from \"@hooks\";\n\nimport type {\n  BaseRecord,\n  CrudFilter,\n  CrudSort,\n  GetListResponse,\n  HttpError,\n  MetaQuery,\n  Pagination,\n  Prettify,\n} from \"../../contexts/data/types\";\nimport type { LiveModeProps } from \"../../contexts/live/types\";\nimport type { SuccessErrorNotification } from \"../../contexts/notification/types\";\nimport type { MakeOptional } from \"../../definitions/types\";\n\nimport {\n  type UseLoadingOvertimeOptionsProps,\n  type UseLoadingOvertimeReturnType,\n  useLoadingOvertime,\n} from \"../useLoadingOvertime\";\n\nexport interface UseInfiniteListConfig {\n  pagination?: Pagination;\n  hasPagination?: boolean;\n  filters?: CrudFilter[];\n}\n\ntype BaseInfiniteListProps = {\n  /**\n   *  Metadata query for `dataProvider`\n   */\n  meta?: MetaQuery;\n  /**\n   * Pagination properties\n   */\n  pagination?: Pagination;\n  /**\n   * Sorter parameters\n   */\n  sorters?: CrudSort[];\n  /**\n   * Filter parameters\n   */\n  filters?: CrudFilter[];\n  /**\n   * If there is more than one `dataProvider`, you should use the `dataProviderName` that you will use\n   */\n  dataProviderName?: string;\n};\n\n// Custom type to extend UseInfiniteQueryOptions\nexport type UseInfiniteListQueryOptions<TQueryFnData, TError, TData> =\n  MakeOptional<\n    UseInfiniteQueryOptions<\n      GetListResponse<TQueryFnData>,\n      TError,\n      InfiniteData<GetListResponse<TData>>\n    >,\n    \"queryKey\" | \"queryFn\" | \"initialPageParam\"\n  >;\n\nexport type UseInfiniteListProps<TQueryFnData, TError, TData> = {\n  /**\n   * Resource name for API data interactions\n   */\n  resource: string;\n  /**\n   * Tanstack Query's [useInfiniteQuery](https://tanstack.com/query/v5/docs/framework/react/reference/useInfiniteQuery) options\n   */\n  queryOptions?: Omit<\n    UseInfiniteListQueryOptions<TQueryFnData, TError, TData>,\n    \"getNextPageParam\"\n  > & {\n    /**\n     * Make `getNextPageParam` optional to allow custom pagination logic\n     */\n    getNextPageParam?: UseInfiniteListQueryOptions<\n      TQueryFnData,\n      TError,\n      TData\n    >[\"getNextPageParam\"];\n  };\n} & BaseInfiniteListProps &\n  SuccessErrorNotification<\n    InfiniteData<GetListResponse<TData>>,\n    TError,\n    Prettify<BaseInfiniteListProps>\n  > &\n  LiveModeProps &\n  UseLoadingOvertimeOptionsProps & {\n    onSuccess?: (data: InfiniteData<GetListResponse<TData>>) => void;\n    onError?: (error: TError) => void;\n  };\n\nexport type UseInfiniteListReturnType<TData, TError> = {\n  query: UseInfiniteQueryResult<InfiniteData<GetListResponse<TData>>, TError>;\n  result: {\n    data: InfiniteData<GetListResponse<TData>> | undefined;\n    hasNextPage: boolean | undefined;\n    hasPreviousPage: boolean | undefined;\n  };\n} & UseLoadingOvertimeReturnType;\n\n/**\n * `useInfiniteList` is a modified version of `react-query`'s {@link https://tanstack.com/query/latest/docs/react/guides/infinite-queries `useInfiniteQuery`} used for retrieving items from a `resource` with pagination, sort, and filter configurations.\n *\n * It uses the `getList` method as the query function from the `dataProvider` which is passed to `<Refine>`.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/hooks/data/useInfiniteList} for more details.\n *\n * @typeParam TQueryFnData - Result data returned by the query function. Extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}\n * @typeParam TError - Custom error object that extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#httperror `HttpError`}\n * @typeParam TData - Result data returned by the `select` function. Extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}. Defaults to `TQueryFnData`\n *\n */\n\nexport const useInfiniteList = <\n  TQueryFnData extends BaseRecord = BaseRecord,\n  TError extends HttpError = HttpError,\n  TData extends BaseRecord = TQueryFnData,\n>({\n  resource: resourceFromProp,\n  filters,\n  pagination,\n  sorters,\n  queryOptions,\n  successNotification,\n  errorNotification,\n  meta,\n  liveMode,\n  onLiveEvent,\n  liveParams,\n  dataProviderName,\n  overtimeOptions,\n  onSuccess,\n  onError,\n}: UseInfiniteListProps<\n  TQueryFnData,\n  TError,\n  TData\n>): UseInfiniteListReturnType<TData, TError> => {\n  const { resources, resource, identifier } = useResourceParams({\n    resource: resourceFromProp,\n  });\n\n  const dataProvider = useDataProvider();\n  const translate = useTranslate();\n  const { mutate: checkError } = useOnError();\n  const handleNotification = useHandleNotification();\n  const getMeta = useMeta();\n  const { keys } = useKeys();\n\n  const pickedDataProvider = pickDataProvider(\n    identifier,\n    dataProviderName,\n    resources,\n  );\n  const preferredMeta = meta;\n  const prefferedFilters = filters;\n  const prefferedSorters = sorters;\n  const prefferedPagination = handlePaginationParams({\n    pagination,\n  });\n  const isServerPagination = prefferedPagination.mode === \"server\";\n  const notificationValues = {\n    meta: preferredMeta,\n    filters: prefferedFilters,\n    hasPagination: isServerPagination,\n    pagination: prefferedPagination,\n    sorters: prefferedSorters,\n  };\n\n  const isEnabled =\n    queryOptions?.enabled === undefined || queryOptions?.enabled === true;\n\n  const combinedMeta = getMeta({ resource, meta: preferredMeta });\n\n  const { getList } = dataProvider(pickedDataProvider);\n\n  useResourceSubscription({\n    resource: identifier,\n    types: [\"*\"],\n    params: {\n      meta: combinedMeta,\n      pagination: prefferedPagination,\n      hasPagination: isServerPagination,\n      sort: prefferedSorters,\n      sorters: prefferedSorters,\n      filters: prefferedFilters,\n      subscriptionType: \"useList\",\n      ...liveParams,\n    },\n    channel: `resources/${resource?.name}`,\n    enabled: isEnabled,\n    liveMode,\n    onLiveEvent,\n    meta: {\n      ...combinedMeta,\n      dataProviderName: pickedDataProvider,\n    },\n  });\n\n  const queryResponse = useInfiniteQuery<\n    GetListResponse<TQueryFnData>,\n    TError,\n    InfiniteData<GetListResponse<TData>>\n  >({\n    queryKey: keys()\n      .data(pickedDataProvider)\n      .resource(identifier)\n      .action(\"infinite\")\n      .params({\n        ...(preferredMeta || {}),\n        filters: prefferedFilters,\n        hasPagination: isServerPagination,\n        ...(isServerPagination && {\n          pagination: prefferedPagination,\n        }),\n        ...(sorters && {\n          sorters,\n        }),\n      })\n      .get(),\n    queryFn: (context) => {\n      const paginationProperties = {\n        ...prefferedPagination,\n        currentPage:\n          (context.pageParam as number) ?? prefferedPagination.currentPage,\n      };\n\n      const meta = {\n        ...combinedMeta,\n        ...prepareQueryContext(context),\n      };\n\n      return getList<TQueryFnData>({\n        resource: resource?.name || \"\",\n        pagination: paginationProperties,\n        filters: prefferedFilters,\n        sorters: prefferedSorters,\n        meta,\n      }).then(({ data, total, ...rest }) => {\n        return {\n          data,\n          total,\n          pagination: paginationProperties,\n          ...rest,\n        };\n      });\n    },\n    initialPageParam:\n      queryOptions?.initialPageParam ?? prefferedPagination.currentPage,\n    getNextPageParam: (lastPage) => getNextPageParam(lastPage),\n    getPreviousPageParam: (lastPage) => getPreviousPageParam(lastPage),\n    ...queryOptions,\n    meta: {\n      ...(queryOptions?.meta ?? {}),\n      ...getXRay(\"useInfiniteList\", resource?.name),\n    },\n  });\n\n  // Handle success\n  useEffect(() => {\n    if (queryResponse.isSuccess && queryResponse.data) {\n      const notificationConfig =\n        typeof successNotification === \"function\"\n          ? successNotification(\n              queryResponse.data as unknown as InfiniteData<\n                GetListResponse<TData>\n              >,\n              notificationValues,\n              identifier,\n            )\n          : successNotification;\n\n      handleNotification(notificationConfig);\n\n      onSuccess?.(\n        queryResponse.data as unknown as InfiniteData<GetListResponse<TData>>,\n      );\n    }\n  }, [\n    queryResponse.isSuccess,\n    queryResponse.data,\n    successNotification,\n    onSuccess,\n  ]);\n\n  // Handle error\n  useEffect(() => {\n    if (queryResponse.isError && queryResponse.error) {\n      checkError(queryResponse.error);\n\n      const notificationConfig =\n        typeof errorNotification === \"function\"\n          ? errorNotification(\n              queryResponse.error,\n              notificationValues,\n              identifier,\n            )\n          : errorNotification;\n\n      handleNotification(notificationConfig, {\n        key: `${identifier}-useInfiniteList-notification`,\n        message: translate(\n          \"notifications.error\",\n          { statusCode: queryResponse.error.statusCode },\n          `Error (status code: ${queryResponse.error.statusCode})`,\n        ),\n        description: queryResponse.error.message,\n        type: \"error\",\n      });\n\n      onError?.(queryResponse.error);\n    }\n  }, [queryResponse.isError, queryResponse.error?.message]);\n\n  const { elapsedTime } = useLoadingOvertime({\n    ...overtimeOptions,\n    isLoading: queryResponse.isFetching,\n  });\n\n  return {\n    query: queryResponse,\n    result: {\n      data: queryResponse.data,\n      hasNextPage: queryResponse.hasNextPage,\n      hasPreviousPage: queryResponse.hasPreviousPage,\n    },\n    overtime: { elapsedTime },\n  };\n};\n","import { useContext, useEffect } from \"react\";\n\nimport { LiveContext } from \"@contexts/live\";\nimport { RefineContext } from \"@contexts/refine\";\nimport { useInvalidate } from \"@hooks/invalidate\";\nimport { useResourceParams } from \"@hooks\";\n\nimport type {\n  BaseKey,\n  CrudFilter,\n  CrudSort,\n  MetaQuery,\n  Pagination,\n} from \"../../../contexts/data/types\";\nimport type { LiveEvent, LiveModeProps } from \"../../../contexts/live/types\";\nimport type { IRefineContext } from \"../../../contexts/refine/types\";\n\nexport type UseResourceSubscriptionProps = {\n  channel: string;\n  params?: {\n    ids?: BaseKey[];\n    id?: BaseKey;\n    sorters?: CrudSort[];\n    filters?: CrudFilter[];\n    subscriptionType: \"useList\" | \"useOne\" | \"useMany\";\n    [key: string]: any;\n  };\n  types: LiveEvent[\"type\"][];\n  resource?: string;\n  enabled?: boolean;\n  meta?: MetaQuery & { dataProviderName?: string };\n} & LiveModeProps;\n\nexport type PublishType = (event: LiveEvent) => void;\n\nexport const useResourceSubscription = ({\n  resource: resourceFromProp,\n  params,\n  channel,\n  types,\n  enabled = true,\n  liveMode: liveModeFromProp,\n  onLiveEvent,\n  meta,\n}: UseResourceSubscriptionProps): void => {\n  const { resource, identifier } = useResourceParams({\n    resource: resourceFromProp,\n  });\n\n  const { liveProvider } = useContext(LiveContext);\n  const {\n    liveMode: liveModeFromContext,\n    onLiveEvent: onLiveEventContextCallback,\n  } = useContext<IRefineContext>(RefineContext);\n\n  const liveMode = liveModeFromProp ?? liveModeFromContext;\n\n  const invalidate = useInvalidate();\n\n  const dataProviderName =\n    meta?.dataProviderName ?? resource?.meta?.dataProviderName;\n\n  useEffect(() => {\n    let subscription: any;\n\n    const callback = (event: LiveEvent) => {\n      if (liveMode === \"auto\") {\n        invalidate({\n          resource: identifier,\n          dataProviderName,\n          invalidates: [\"resourceAll\"],\n          invalidationFilters: {\n            type: \"active\",\n            refetchType: \"active\",\n          },\n          invalidationOptions: { cancelRefetch: false },\n        });\n      }\n\n      onLiveEvent?.(event);\n      onLiveEventContextCallback?.(event);\n    };\n\n    if (liveMode && liveMode !== \"off\" && enabled) {\n      subscription = liveProvider?.subscribe({\n        channel,\n        params: {\n          resource: resource?.name,\n          ...params,\n        },\n        types,\n        callback,\n        meta: {\n          ...meta,\n          dataProviderName,\n        },\n      });\n    }\n\n    return () => {\n      if (subscription) {\n        liveProvider?.unsubscribe(subscription);\n      }\n    };\n  }, [enabled]);\n};\n","import React, { type PropsWithChildren } from \"react\";\n\nimport type { ILiveContext } from \"./types\";\n\nexport const LiveContext = React.createContext<ILiveContext>({});\n\nexport const LiveContextProvider: React.FC<PropsWithChildren<ILiveContext>> = ({\n  liveProvider,\n  children,\n}) => {\n  return (\n    <LiveContext.Provider value={{ liveProvider }}>\n      {children}\n    </LiveContext.Provider>\n  );\n};\n","import { useCallback } from \"react\";\n\nimport {\n  type InvalidateOptions,\n  type InvalidateQueryFilters,\n  useQueryClient,\n} from \"@tanstack/react-query\";\n\nimport { pickDataProvider } from \"@definitions\";\nimport { useKeys, useResourceParams } from \"@hooks\";\n\nimport type { BaseKey, IQueryKeys } from \"../../contexts/data/types\";\n\nexport type UseInvalidateProp = {\n  resource?: string;\n  id?: BaseKey;\n  dataProviderName?: string;\n  invalidates: Array<keyof IQueryKeys> | false;\n  invalidationFilters?: InvalidateQueryFilters;\n  invalidationOptions?: InvalidateOptions;\n};\n\nexport const useInvalidate = (): ((\n  props: UseInvalidateProp,\n) => Promise<void>) => {\n  const { resources } = useResourceParams();\n  const queryClient = useQueryClient();\n  const { keys } = useKeys();\n\n  const invalidate = useCallback(\n    async ({\n      resource,\n      dataProviderName,\n      invalidates,\n      id,\n      invalidationFilters = { type: \"all\", refetchType: \"active\" },\n      invalidationOptions = { cancelRefetch: false },\n    }: UseInvalidateProp) => {\n      if (invalidates === false) {\n        return;\n      }\n      const dp = pickDataProvider(resource, dataProviderName, resources);\n\n      const queryKey = keys()\n        .data(dp)\n        .resource(resource ?? \"\");\n\n      await Promise.all(\n        invalidates.map((key) => {\n          switch (key) {\n            case \"all\":\n              return queryClient.invalidateQueries({\n                queryKey: keys().data(dp).get(),\n                ...invalidationFilters,\n                ...invalidationOptions,\n              });\n            case \"list\":\n              return queryClient.invalidateQueries({\n                queryKey: queryKey.action(\"list\").get(),\n                ...invalidationFilters,\n                ...invalidationOptions,\n              });\n            case \"many\":\n              return queryClient.invalidateQueries({\n                queryKey: queryKey.action(\"many\").get(),\n                ...invalidationFilters,\n                ...invalidationOptions,\n              });\n            case \"resourceAll\":\n              return queryClient.invalidateQueries({\n                queryKey: queryKey.get(),\n                ...invalidationFilters,\n                ...invalidationOptions,\n              });\n            case \"detail\":\n              return queryClient.invalidateQueries({\n                queryKey: queryKey\n                  .action(\"one\")\n                  .id(id || \"\")\n                  .get(),\n                ...invalidationFilters,\n                ...invalidationOptions,\n              });\n            default:\n              return;\n          }\n        }),\n      );\n\n      return;\n    },\n    [],\n  );\n\n  return invalidate;\n};\n","import { useContext } from \"react\";\n\nimport { RefineContext } from \"@contexts/refine\";\n\nimport type { LiveModeProps } from \"../../../contexts/live/types\";\nimport type { IRefineContext } from \"../../../contexts/refine/types\";\n\nexport const useLiveMode = (\n  liveMode: LiveModeProps[\"liveMode\"],\n): LiveModeProps[\"liveMode\"] => {\n  const { liveMode: liveModeFromContext } =\n    useContext<IRefineContext>(RefineContext);\n\n  return liveMode ?? liveModeFromContext;\n};\n","import { useContext, useEffect } from \"react\";\n\nimport { LiveContext } from \"@contexts/live\";\n\nimport type {\n  BaseKey,\n  CrudFilter,\n  CrudSort,\n  MetaQuery,\n  Pagination,\n} from \"../../../contexts/data/types\";\nimport type { LiveEvent } from \"../../../contexts/live/types\";\n\nexport type UseSubscriptionProps = {\n  /**\n   * Channel name to subscribe.\n   */\n  channel: string;\n  /**\n   * Callback that is run when new events from subscription arrive.\n   */\n  onLiveEvent: (event: LiveEvent) => void;\n  /**\n   * Type of events to subscribe. `\"*\"` means all events.\n   * @type Array<\"deleted\" | \"updated\" | \"created\" | \"*\" | string>\n   */\n  types?: LiveEvent[\"type\"][];\n  /**\n   * Determines subscription should subscribe or not.\n   * @type Array<\"deleted\" | \"updated\" | \"created\" | \"*\" | string>\n   */\n  enabled?: boolean;\n  params?: {\n    ids?: BaseKey[];\n    id?: BaseKey;\n    sorters?: CrudSort[];\n    filters?: CrudFilter[];\n    subscriptionType?: \"useList\" | \"useOne\" | \"useMany\";\n    resource?: string;\n    [key: string]: any;\n  };\n  meta?: MetaQuery & { dataProviderName?: string };\n};\n\nexport const useSubscription = ({\n  params,\n  channel,\n  types = [\"*\"],\n  enabled = true,\n  onLiveEvent,\n  meta,\n}: UseSubscriptionProps): void => {\n  const { liveProvider } = useContext(LiveContext);\n\n  useEffect(() => {\n    let subscription: any;\n\n    if (enabled) {\n      subscription = liveProvider?.subscribe({\n        channel,\n        params,\n        types,\n        callback: onLiveEvent,\n        meta: {\n          ...meta,\n          dataProviderName: meta?.dataProviderName ?? \"default\",\n        },\n      });\n    }\n\n    return () => {\n      if (subscription) {\n        liveProvider?.unsubscribe(subscription);\n      }\n    };\n  }, [enabled]);\n};\n","import { useContext } from \"react\";\n\nimport { LiveContext } from \"@contexts/live\";\nimport type { LiveProvider } from \"../../../contexts/live/types\";\n\nexport const usePublish: () => NonNullable<LiveProvider>[\"publish\"] = () => {\n  const { liveProvider } = useContext(LiveContext);\n\n  return liveProvider?.publish;\n};\n","import { useContext } from \"react\";\n\nimport { UndoableQueueContext } from \"@contexts/undoableQueue\";\nimport type { IUndoableQueue } from \"../../../contexts/undoableQueue/types\";\n\nexport type UseCancelNotificationType = () => {\n  notifications: IUndoableQueue[];\n  notificationDispatch: React.Dispatch<any>;\n};\n\nexport const useCancelNotification: UseCancelNotificationType = () => {\n  const { notifications, notificationDispatch } =\n    useContext(UndoableQueueContext);\n\n  return { notifications, notificationDispatch };\n};\n","import React, {\n  createContext,\n  useReducer,\n  type PropsWithChildren,\n} from \"react\";\n\nimport isEqual from \"lodash/isEqual\";\n\nimport { UndoableQueue } from \"../../components\";\nimport {\n  ActionTypes,\n  type IUndoableQueue,\n  type IUndoableQueueContext,\n} from \"./types\";\n\nexport const UndoableQueueContext = createContext<IUndoableQueueContext>({\n  notifications: [],\n  notificationDispatch: () => false,\n});\n\nconst initialState: IUndoableQueue[] = [];\n\nexport const undoableQueueReducer = (state: IUndoableQueue[], action: any) => {\n  switch (action.type) {\n    case ActionTypes.ADD: {\n      const newState = state.filter((notificationItem: IUndoableQueue) => {\n        return !(\n          isEqual(notificationItem.id, action.payload.id) &&\n          notificationItem.resource === action.payload.resource\n        );\n      });\n\n      return [\n        ...newState,\n        {\n          ...action.payload,\n          isRunning: true,\n        },\n      ];\n    }\n    case ActionTypes.REMOVE:\n      return state.filter(\n        (notificationItem: IUndoableQueue) =>\n          !(\n            isEqual(notificationItem.id, action.payload.id) &&\n            notificationItem.resource === action.payload.resource\n          ),\n      );\n    case ActionTypes.DECREASE_NOTIFICATION_SECOND:\n      return state.map((notificationItem: IUndoableQueue) => {\n        if (\n          isEqual(notificationItem.id, action.payload.id) &&\n          notificationItem.resource === action.payload.resource\n        ) {\n          return {\n            ...notificationItem,\n            seconds: action.payload.seconds - 1000,\n          };\n        }\n        return notificationItem;\n      });\n    default:\n      return state;\n  }\n};\n\nexport const UndoableQueueContextProvider: React.FC<PropsWithChildren> = ({\n  children,\n}) => {\n  const [notifications, notificationDispatch] = useReducer(\n    undoableQueueReducer,\n    initialState,\n  );\n\n  const notificationData = { notifications, notificationDispatch };\n\n  return (\n    <UndoableQueueContext.Provider value={notificationData}>\n      {children}\n      {typeof window !== \"undefined\"\n        ? notifications.map((notification) => (\n            <UndoableQueue\n              key={`${notification.id}-${notification.resource}-queue`}\n              notification={notification}\n            />\n          ))\n        : null}\n    </UndoableQueueContext.Provider>\n  );\n};\n","import { useContext } from \"react\";\n\nimport { NotificationContext } from \"@contexts/notification\";\nimport type { INotificationContext } from \"../../../contexts/notification/types\";\n\nexport const useNotification = (): INotificationContext => {\n  const { open, close } = useContext(NotificationContext);\n\n  return { open, close };\n};\n","import React, { createContext, type PropsWithChildren } from \"react\";\n\nimport type { INotificationContext } from \"./types\";\n\nexport const NotificationContext = createContext<INotificationContext>({});\n\nexport const NotificationContextProvider: React.FC<\n  PropsWithChildren<INotificationContext>\n> = ({ open, close, children }) => {\n  return (\n    <NotificationContext.Provider value={{ open, close }}>\n      {children}\n    </NotificationContext.Provider>\n  );\n};\n","import { useCallback } from \"react\";\n\nimport { useNotification } from \"@hooks\";\n\nimport type { OpenNotificationParams } from \"../../../contexts/notification/types\";\n\nexport const useHandleNotification = (): typeof handleNotification => {\n  const { open } = useNotification();\n\n  const handleNotification = useCallback(\n    (\n      notification: OpenNotificationParams | false | undefined,\n      fallbackNotification?: OpenNotificationParams,\n    ) => {\n      if (notification !== false) {\n        if (notification) {\n          open?.(notification);\n        } else if (fallbackNotification) {\n          open?.(fallbackNotification);\n        }\n      }\n    },\n    [],\n  );\n\n  return handleNotification;\n};\n","import { useCallback, useContext } from \"react\";\n\nimport { I18nContext } from \"@contexts/i18n\";\n\n/**\n * If you need to change the locale at runtime, refine provides the `useSetLocale` hook.\n * It returns the changeLocale method from `i18nProvider` under the hood.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/hooks/translate/useSetLocale} for more details.\n */\nexport const useSetLocale = () => {\n  const { i18nProvider } = useContext(I18nContext);\n\n  return useCallback((lang: string) => i18nProvider?.changeLocale(lang), []);\n};\n","import React, { type PropsWithChildren } from \"react\";\n\nimport type { II18nContext } from \"./types\";\n\nexport const I18nContext = React.createContext<II18nContext>({});\n\nexport const I18nContextProvider: React.FC<PropsWithChildren<II18nContext>> = ({\n  children,\n  i18nProvider,\n}) => {\n  return (\n    <I18nContext.Provider\n      value={{\n        i18nProvider,\n      }}\n    >\n      {children}\n    </I18nContext.Provider>\n  );\n};\n","import { useContext, useMemo } from \"react\";\n\nimport { I18nContext } from \"@contexts/i18n\";\n\n/**\n * If you need to translate the texts in your own components, refine provides the `useTranslate` hook.\n * It returns the translate method from `i18nProvider` under the hood.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/hooks/translate/useTranslate} for more details.\n */\nexport const useTranslate = () => {\n  const { i18nProvider } = useContext(I18nContext);\n\n  const fn = useMemo(() => {\n    function translate(\n      key: string,\n      options?: any,\n      defaultMessage?: string,\n    ): string;\n    function translate(key: string, defaultMessage?: string): string;\n\n    function translate(\n      key: string,\n      options?: string | any,\n      defaultMessage?: string,\n    ) {\n      return (\n        i18nProvider?.translate(key, options, defaultMessage) ??\n        defaultMessage ??\n        (typeof options === \"string\" && typeof defaultMessage === \"undefined\"\n          ? options\n          : key)\n      );\n    }\n\n    return translate;\n  }, [i18nProvider]);\n\n  return fn;\n};\n","import { useCallback, useContext } from \"react\";\n\nimport { I18nContext } from \"@contexts/i18n\";\n\nexport type UseGetLocaleType = () => () => string;\n\n/**\n * If you need to know the current locale, refine provides the `useGetLocale` hook.\n * It returns the `getLocale` method from `i18nProvider` under the hood.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/hooks/translate/useGetLocale} for more details.\n */\nexport const useGetLocale: UseGetLocaleType = () => {\n  const { i18nProvider } = useContext(I18nContext);\n\n  if (!i18nProvider) {\n    throw new Error(\n      \"useGetLocale cannot be called without i18n provider being defined.\",\n    );\n  }\n\n  return useCallback(() => i18nProvider.getLocale(), []);\n};\n","import { useGetLocale } from \"./useGetLocale\";\nimport { useSetLocale } from \"./useSetLocale\";\nimport { useTranslate } from \"./useTranslate\";\n\n/**\n * It combines `useTranslate`, `useSetLocale` and `useGetLocale` hooks for a better developer experience.\n * It returns `i18nProvider` methods under the hood.\n * @returns `translate` method to translate the texts.\n * @returns `changeLocale` method to change the locale\n * @returns `getLocale` method to get the current locale.\n *\n * @see {@link https://refine.dev/docs/i18n/i18n-provider/} for more details.\n */\nexport const useTranslation = () => {\n  const translate = useTranslate();\n  const changeLocale = useSetLocale();\n  const getLocale = useGetLocale();\n\n  return {\n    translate,\n    changeLocale,\n    getLocale,\n  };\n};\n","import { useState } from \"react\";\n\nimport papaparse from \"papaparse\";\nimport warnOnce from \"warn-once\";\n\nimport {\n  downloadInBrowser,\n  pickDataProvider,\n  useUserFriendlyName,\n} from \"@definitions\";\nimport { useDataProvider, useMeta, useResourceParams } from \"@hooks\";\n\nimport type {\n  BaseRecord,\n  CrudFilter,\n  CrudSort,\n  MetaQuery,\n} from \"../../contexts/data/types\";\nimport type { MapDataFn } from \"./types\";\n\ntype UseExportOptionsType<\n  TData extends BaseRecord = BaseRecord,\n  TVariables = any,\n> = {\n  /**\n   * Resource name for API data interactions\n   * @default Resource name that it reads from route\n   */\n  resource?: string;\n  /**\n   * A mapping function that runs for every record. Mapped data will be included in the file contents\n   */\n  mapData?: MapDataFn<TData, TVariables>;\n  /**\n   *  Sorts records\n   */\n  sorters?: CrudSort[];\n  /**\n   *  Filters records\n   */\n  filters?: CrudFilter[];\n  maxItemCount?: number;\n  /**\n   *  Requests to fetch data are made as batches by page size. By default, it is 20. Used for `getList` method of `DataProvider`\n   */\n  pageSize?: number;\n  /**\n   *  Used for exporting options\n   *  @type [UnparseConfig](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/papaparse)\n   */\n  unparseConfig?: papaparse.UnparseConfig;\n  /**\n   *  Metadata query for `dataProvider`\n   */\n  meta?: MetaQuery;\n  /**\n   * If there is more than one `dataProvider`, you should use the `dataProviderName` that you will use.\n   */\n  dataProviderName?: string;\n  /**\n   *  Callback to handle error events of this hook\n   */\n  onError?: (error: any) => void;\n  /**\n   *  Whether to generate download of the CSV in browser environments, defaults to true.\n   */\n  download?: boolean;\n  /**\n   * Custom filename for the export file\n   */\n  filename?: string;\n  /**\n   * Whether to use text file format instead of CSV\n   * @default false\n   */\n  useTextFile?: boolean;\n  /**\n   * Whether to include BOM (Byte Order Mark) in the file\n   * @default true\n   */\n  useBom?: boolean;\n  /**\n   * Title to be shown at the top of the exported file\n   */\n  title?: string;\n  /**\n   * Whether to show the title in the exported file\n   * @default false\n   */\n  showTitle?: boolean;\n};\n\ntype UseExportReturnType = {\n  isLoading: boolean;\n  triggerExport: () => Promise<string | undefined>;\n};\n\n/**\n * `useExport` hook allows you to make your resources exportable.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/hooks/import-export/useExport} for more details.\n *\n * @typeParam TData - Result data of the query extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}\n * @typeParam TVariables - Values for params.\n *\n */\nexport const useExport = <\n  TData extends BaseRecord = BaseRecord,\n  TVariables = any,\n>({\n  resource: resourceFromProps,\n  sorters,\n  filters,\n  maxItemCount,\n  pageSize = 20,\n  mapData = (item) => item as any,\n  unparseConfig,\n  meta,\n  dataProviderName,\n  onError,\n  download,\n  filename: customFilename,\n  useTextFile = false,\n  useBom = true,\n  title = \"My Generated Report\",\n  showTitle = false,\n}: UseExportOptionsType<TData, TVariables> = {}): UseExportReturnType => {\n  const [isLoading, setIsLoading] = useState(false);\n\n  const dataProvider = useDataProvider();\n  const getMeta = useMeta();\n  const { resource, resources, identifier } = useResourceParams({\n    resource: resourceFromProps,\n  });\n  const getFriendlyName = useUserFriendlyName();\n\n  const defaultFilename = `${getFriendlyName(\n    identifier,\n    \"plural\",\n  )}-${new Date().toLocaleString()}`;\n\n  const filename = customFilename ?? defaultFilename;\n\n  const { getList } = dataProvider(\n    pickDataProvider(identifier, dataProviderName, resources),\n  );\n\n  const combinedMeta = getMeta({\n    resource,\n    meta: meta,\n  });\n\n  const triggerExport = async () => {\n    setIsLoading(true);\n\n    let rawData: BaseRecord[] = [];\n\n    let currentPage = 1;\n    let preparingData = true;\n    while (preparingData) {\n      try {\n        const { data, total } = await getList<TData>({\n          resource: resource?.name ?? \"\",\n          filters,\n          sorters: sorters ?? [],\n          pagination: {\n            currentPage,\n            pageSize,\n            mode: \"server\",\n          },\n          meta: combinedMeta,\n        });\n\n        currentPage++;\n\n        rawData.push(...data);\n\n        if (maxItemCount && rawData.length >= maxItemCount) {\n          rawData = rawData.slice(0, maxItemCount);\n          preparingData = false;\n        }\n\n        if (total === rawData.length) {\n          preparingData = false;\n        }\n      } catch (error) {\n        setIsLoading(false);\n        preparingData = false;\n\n        onError?.(error);\n\n        return;\n      }\n    }\n\n    // Use provided unparseConfig or create default one\n    const finalUnparseConfig: papaparse.UnparseConfig = {\n      // Default settings for better compatibility\n      quotes: true,\n      header: true,\n      ...unparseConfig,\n    };\n\n    let csv = papaparse.unparse(\n      rawData.map(mapData as any),\n      finalUnparseConfig,\n    );\n    if (showTitle) {\n      csv = `${title}\\r\\n\\n${csv}`;\n    }\n\n    if (typeof window !== \"undefined\" && csv.length > 0 && (download ?? true)) {\n      const fileExtension = useTextFile ? \".txt\" : \".csv\";\n      const fileType = `text/${useTextFile ? \"plain\" : \"csv\"};charset=utf8;`;\n      const downloadFilename = `${filename.replace(/ /g, \"_\")}${fileExtension}`;\n\n      downloadInBrowser(\n        downloadFilename,\n        `${useBom ? \"\\ufeff\" : \"\"}${csv}`,\n        fileType,\n      );\n    }\n\n    setIsLoading(false);\n    return csv;\n  };\n\n  return {\n    isLoading,\n    triggerExport,\n  };\n};\n","import React from \"react\";\nimport warnOnce from \"warn-once\";\n\nimport {\n  useMeta,\n  useOne,\n  useCreate,\n  useUpdate,\n  useResourceParams,\n  useInvalidate,\n  useMutationMode,\n  useRefineOptions,\n  useLoadingOvertime,\n  useWarnAboutChange,\n  useRedirectionAfterSubmission,\n} from \"@hooks\";\n\nimport {\n  redirectPage,\n  asyncDebounce,\n  deferExecution,\n} from \"@definitions/helpers\";\n\nimport type { UpdateParams } from \"../data/useUpdate\";\nimport type { UseCreateParams } from \"../data/useCreate\";\nimport type { UseFormProps, UseFormReturnType } from \"./types\";\nimport type {\n  BaseKey,\n  BaseRecord,\n  CreateResponse,\n  HttpError,\n  UpdateResponse,\n} from \"../../contexts/data/types\";\n\nexport type {\n  ActionParams,\n  UseFormProps,\n  UseFormReturnType,\n  AutoSaveIndicatorElements,\n  AutoSaveProps,\n  AutoSaveReturnType,\n  FormAction,\n  RedirectAction,\n  FormWithSyncWithLocationParams,\n} from \"./types\";\n\n/**\n * This hook orchestrates Refine's data hooks to create, edit, and clone data. It also provides a set of features to make it easier for users to implement their real world needs and handle edge cases such as redirects, invalidation, auto-save and more.\n *\n * @see {@link https://refine.dev/docs/data/hooks/use-form} for more details.\n *\n * @typeParam TQueryFnData - Result data returned by the query function. Extends {@link https://refine.dev/docs/core/interface-references/#baserecord `BaseRecord`}\n * @typeParam TError - Custom error object that extends {@link https://refine.dev/docs/core/interface-references/#httperror `HttpError`}\n * @typeParam TVariables - Values for params. default `{}`\n * @typeParam TData - Result data returned by the `select` function. Extends {@link https://refine.dev/docs/core/interface-references/#baserecord `BaseRecord`}. Defaults to `TQueryFnData`\n * @typeParam TResponse - Result data returned by the mutation function. Extends {@link https://refine.dev/docs/core/interface-references/#baserecord `BaseRecord`}. Defaults to `TData`\n * @typeParam TResponseError - Custom error object that extends {@link https://refine.dev/docs/core/interface-references/#httperror `HttpError`}. Defaults to `TError`\n *\n */\nexport const useForm = <\n  TQueryFnData extends BaseRecord = BaseRecord,\n  TError extends HttpError = HttpError,\n  TVariables = {},\n  TData extends BaseRecord = TQueryFnData,\n  TResponse extends BaseRecord = TData,\n  TResponseError extends HttpError = TError,\n>(\n  props: UseFormProps<\n    TQueryFnData,\n    TError,\n    TVariables,\n    TData,\n    TResponse,\n    TResponseError\n  > = {},\n): UseFormReturnType<\n  TQueryFnData,\n  TError,\n  TVariables,\n  TData,\n  TResponse,\n  TResponseError\n> => {\n  const getMeta = useMeta();\n  const invalidate = useInvalidate();\n  const { redirect: defaultRedirect } = useRefineOptions();\n  const { mutationMode: defaultMutationMode } = useMutationMode();\n\n  const { setWarnWhen } = useWarnAboutChange();\n  const handleSubmitWithRedirect = useRedirectionAfterSubmission();\n\n  const pickedMeta = props.meta;\n  const mutationMode = props.mutationMode ?? defaultMutationMode;\n\n  const {\n    id,\n    setId,\n    resource,\n    identifier,\n    formAction: action,\n  } = useResourceParams({\n    resource: props.resource,\n    id: props.id,\n    action: props.action,\n  });\n\n  const [autosaved, setAutosaved] = React.useState(false);\n\n  const isEdit = action === \"edit\";\n  const isClone = action === \"clone\";\n  const isCreate = action === \"create\";\n\n  const combinedMeta = getMeta({\n    resource,\n    meta: pickedMeta,\n  });\n\n  const isIdRequired = (isEdit || isClone) && Boolean(props.resource);\n  const isIdDefined = typeof props.id !== \"undefined\";\n  const isQueryDisabled = props.queryOptions?.enabled === false;\n\n  /**\n   * When a custom resource is provided through props, `id` will not be inferred from the URL to avoid any potential faulty requests.\n   * In this case, `id` is required to be passed through props.\n   * If `id` is not handled, a warning will be thrown in development mode.\n   */\n  warnOnce(\n    isIdRequired && !isIdDefined && !isQueryDisabled,\n    idWarningMessage(action, identifier, id),\n  );\n\n  /**\n   * Target action to redirect after form submission.\n   */\n  const redirectAction = redirectPage({\n    redirectFromProps: props.redirect,\n    action,\n    redirectOptions: defaultRedirect,\n  });\n\n  /**\n   * Redirection function to be used in internal redirects and to be provided to the user.\n   */\n  const redirect: UseFormReturnType[\"redirect\"] = (\n    redirect = isEdit ? \"list\" : \"edit\",\n    redirectId = id,\n    routeParams = {},\n  ) => {\n    handleSubmitWithRedirect({\n      redirect: redirect,\n      resource,\n      id: redirectId,\n      meta: { ...pickedMeta, ...routeParams },\n    });\n  };\n\n  const queryResult = useOne<TQueryFnData, TError, TData>({\n    resource: identifier,\n    id,\n    queryOptions: {\n      // Only enable the query if it's not a create action and the `id` is defined\n      ...props.queryOptions,\n      // AND the external enabled condition (if provided) is also true\n      enabled:\n        !isCreate && id !== undefined && (props.queryOptions?.enabled ?? true),\n    },\n    liveMode: props.liveMode,\n    onLiveEvent: props.onLiveEvent,\n    liveParams: props.liveParams,\n    meta: { ...combinedMeta, ...props.queryMeta },\n    dataProviderName: props.dataProviderName,\n    overtimeOptions: { enabled: false },\n  });\n\n  const createMutation = useCreate<TResponse, TResponseError, TVariables>({\n    mutationOptions: props.createMutationOptions,\n    overtimeOptions: { enabled: false },\n  });\n\n  const updateMutation = useUpdate<TResponse, TResponseError, TVariables>({\n    mutationOptions: props.updateMutationOptions,\n    overtimeOptions: { enabled: false },\n  });\n\n  const mutationResult = isEdit ? updateMutation : createMutation;\n  const isMutationLoading = mutationResult.mutation.isPending;\n  const formLoading = isMutationLoading || queryResult.query.isFetching;\n\n  const { elapsedTime } = useLoadingOvertime({\n    ...props.overtimeOptions,\n    isLoading: formLoading,\n  });\n\n  React.useEffect(() => {\n    // After `autosaved` is set to `true`, it won't be set to `false` again.\n    // Therefore, the `invalidate` function will be called only once at the end of the hooks lifecycle.\n    return () => {\n      if (\n        props.autoSave?.invalidateOnUnmount &&\n        autosaved &&\n        identifier &&\n        typeof id !== \"undefined\"\n      ) {\n        invalidate({\n          id,\n          invalidates: props.invalidates || [\"list\", \"many\", \"detail\"],\n          dataProviderName: props.dataProviderName,\n          resource: identifier,\n        });\n      }\n    };\n  }, [props.autoSave?.invalidateOnUnmount, autosaved]);\n\n  const onFinish = async (\n    values: TVariables,\n    { isAutosave = false }: { isAutosave?: boolean } = {},\n  ) => {\n    const isPessimistic = mutationMode === \"pessimistic\";\n\n    // Disable warning trigger when the form is being submitted\n    setWarnWhen(false);\n\n    // Redirect after a successful form submission\n    const onSuccessRedirect = (id?: BaseKey) => redirect(redirectAction, id);\n\n    const submissionPromise = new Promise<\n      CreateResponse<TResponse> | UpdateResponse<TResponse> | void\n    >((resolve, reject) => {\n      // Reject the mutation if the resource is not defined\n      if (!resource) return reject(missingResourceError);\n      // Reject the mutation if the `id` is not defined in edit action\n      // This line is commented out because the `id` might not be set for some cases and edit is done on a resource.\n      // if (isEdit && !id) return reject(missingIdError);\n      // Reject the mutation if the `id` is not defined in clone action\n      if (isClone && !id) return reject(missingIdError);\n      // Reject the mutation if there's no `values` passed\n      if (!values) return reject(missingValuesError);\n      // Auto Save is only allowed in edit action\n      if (isAutosave && !isEdit) return reject(autosaveOnNonEditError);\n\n      if (!isPessimistic && !isAutosave) {\n        // If the mutation mode is not pessimistic, handle the redirect immediately in an async manner\n        // `setWarnWhen` blocks the redirects until set to `false`\n        // If redirect is done before the value is properly set, it will be blocked.\n        // We're deferring the execution of the redirect to ensure that the value is set properly.\n        deferExecution(() => onSuccessRedirect());\n        // Resolve the promise immediately\n        resolve();\n      }\n\n      const variables:\n        | UpdateParams<TResponse, TResponseError, TVariables>\n        | UseCreateParams<TResponse, TResponseError, TVariables> = {\n        values,\n        resource: identifier ?? resource.name,\n        meta: { ...combinedMeta, ...props.mutationMeta },\n        dataProviderName: props.dataProviderName,\n        invalidates: isAutosave ? [] : props.invalidates,\n        successNotification: isAutosave ? false : props.successNotification,\n        errorNotification: isAutosave ? false : props.errorNotification,\n        // Update specific variables\n        ...(isEdit\n          ? {\n              id: id ?? \"\",\n              mutationMode,\n              undoableTimeout: props.undoableTimeout,\n              optimisticUpdateMap: props.optimisticUpdateMap,\n            }\n          : {}),\n      };\n\n      const { mutateAsync } = isEdit ? updateMutation : createMutation;\n\n      mutateAsync(variables as any, {\n        // Call user-defined `onMutationSuccess` and `onMutationError` callbacks if provided\n        // These callbacks will not have an effect on the submission promise\n        onSuccess: props.onMutationSuccess\n          ? (data, _, context) => {\n              props.onMutationSuccess?.(data, values, context, isAutosave);\n            }\n          : undefined,\n        onError: props.onMutationError\n          ? (error: TResponseError, _, context) => {\n              props.onMutationError?.(error, values, context, isAutosave);\n            }\n          : undefined,\n      })\n        // If the mutation mode is pessimistic, resolve the promise after the mutation is succeeded\n        .then((data) => {\n          if (isPessimistic && !isAutosave) {\n            deferExecution(() => onSuccessRedirect(data?.data?.id));\n          }\n          if (isAutosave) {\n            setAutosaved(true);\n          }\n          resolve(data);\n        })\n        // If the mutation mode is pessimistic, reject the promise after the mutation is failed\n        .catch(reject);\n    });\n\n    return submissionPromise;\n  };\n\n  const onFinishRef = React.useRef(onFinish);\n  React.useEffect(() => {\n    onFinishRef.current = onFinish;\n  }, [onFinish]);\n\n  const onFinishAutoSave = React.useMemo(\n    () =>\n      asyncDebounce(\n        (values: TVariables) =>\n          onFinishRef.current(values, { isAutosave: true }),\n        props.autoSave?.debounce ?? 1000,\n        \"Cancelled by debounce\",\n      ),\n    [props.autoSave?.debounce],\n  );\n\n  React.useEffect(() => {\n    return () => {\n      onFinishAutoSave.cancel();\n    };\n  }, [onFinishAutoSave]);\n\n  const overtime = {\n    elapsedTime,\n  };\n\n  const autoSaveProps = {\n    status: updateMutation.mutation.status,\n    data: updateMutation.mutation.data,\n    error: updateMutation.mutation.error,\n  };\n\n  return {\n    onFinish,\n    onFinishAutoSave,\n    formLoading,\n    mutation: mutationResult.mutation,\n    query: queryResult.query,\n    autoSaveProps,\n    id,\n    setId,\n    redirect,\n    overtime,\n  };\n};\n\nconst missingResourceError = new Error(\n  \"[useForm]: `resource` is not defined or not matched but is required\",\n);\n\nconst missingIdError = new Error(\n  \"[useForm]: `id` is not defined but is required in edit and clone actions\",\n);\n\nconst missingValuesError = new Error(\n  \"[useForm]: `values` is not provided but is required\",\n);\n\nconst autosaveOnNonEditError = new Error(\n  \"[useForm]: `autoSave` is only allowed in edit action\",\n);\n\nconst idWarningMessage = (action?: string, identifier?: string, id?: BaseKey) =>\n  `[useForm]: action: \"${action}\", resource: \"${identifier}\", id: ${id}\n\nIf you don't use the \\`setId\\` method to set the \\`id\\`, you should pass the \\`id\\` prop to \\`useForm\\`. Otherwise, \\`useForm\\` will not be able to infer the \\`id\\` from the current URL with custom resource provided.\n\nSee https://refine.dev/docs/data/hooks/use-form/#id-`;\n","import { useCallback } from \"react\";\n\nimport { useNavigation } from \"@hooks\";\n\nimport type { BaseKey, MetaQuery } from \"../../contexts/data/types\";\nimport type { IResourceItem } from \"../../contexts/resource/types\";\nimport type { RedirectAction } from \"../form/types\";\n\nexport type UseRedirectionAfterSubmissionType = () => (options: {\n  redirect: RedirectAction;\n  resource?: IResourceItem;\n  id?: BaseKey;\n  meta?: MetaQuery;\n}) => void;\n\nexport const useRedirectionAfterSubmission: UseRedirectionAfterSubmissionType =\n  () => {\n    const { show, edit, list, create } = useNavigation();\n\n    const handleSubmitWithRedirect = useCallback(\n      ({\n        redirect,\n        resource,\n        id,\n        meta = {},\n      }: {\n        redirect: RedirectAction;\n        resource?: IResourceItem;\n        id?: BaseKey;\n        meta?: MetaQuery;\n      }) => {\n        if (redirect && resource) {\n          if (!!resource.show && redirect === \"show\" && id) {\n            return show(resource, id, undefined, meta);\n          }\n\n          if (!!resource.edit && redirect === \"edit\" && id) {\n            return edit(resource, id, undefined, meta);\n          }\n\n          if (!!resource.create && redirect === \"create\") {\n            return create(resource, undefined, meta);\n          }\n\n          return list(resource, \"push\", meta);\n        }\n        return;\n      },\n      [],\n    );\n\n    return handleSubmitWithRedirect;\n  };\n","import React, { useCallback, useContext } from \"react\";\n\nimport { RouterContext } from \"@contexts/router\";\nimport { useResourceParams } from \"@hooks/use-resource-params\";\n\nimport type { BaseKey } from \"../../../contexts/data/types\";\nimport type { IResourceItem } from \"../../../contexts/resource/types\";\nimport type {\n  Action,\n  GoConfig as GoConfigBase,\n} from \"../../../contexts/router/types\";\nimport { useGetToPath } from \"../use-get-to-path\";\n\ntype ResourceWithoutId = {\n  /**\n   *  The name or identifier of the resource.\n   */\n  resource: string;\n  action: Extract<Action, \"create\" | \"list\">;\n  id?: never;\n  meta?: Record<string, unknown>;\n};\n\ntype ResourceWithId = {\n  /**\n   *  The name or identifier of the resource.\n   */\n  resource: string;\n  action: Extract<Action, \"edit\" | \"show\" | \"clone\">;\n  id: BaseKey;\n  meta?: Record<string, unknown>;\n};\n\nexport type Resource = ResourceWithoutId | ResourceWithId;\n\nexport type GoConfigWithResource = Omit<GoConfigBase, \"to\"> & {\n  to?: GoConfigBase[\"to\"] | Resource;\n};\n\nexport const useGo = () => {\n  const routerContext = useContext(RouterContext);\n  const { select: resourceSelect } = useResourceParams();\n  const getToPath = useGetToPath();\n\n  const useGo = React.useMemo(\n    () => routerContext?.go ?? (() => () => undefined),\n    [routerContext?.go],\n  );\n\n  const goFromRouter = useGo();\n\n  const go = useCallback(\n    (config: GoConfigWithResource | GoConfigBase) => {\n      if (typeof config.to !== \"object\") {\n        return goFromRouter({ ...config, to: config.to });\n      }\n\n      // when config.to is an object, it means that we want to go to a resource.\n      // so we need to find the path for the resource.\n      const { resource } = resourceSelect(config.to.resource);\n      handleResourceErrors(config.to, resource);\n      const newTo = getToPath({\n        resource,\n        action: config.to.action,\n        meta: {\n          id: config.to.id,\n          ...config.to.meta,\n        },\n      });\n\n      return goFromRouter({\n        ...config,\n        to: newTo,\n      });\n    },\n    [resourceSelect, goFromRouter],\n  );\n\n  return go;\n};\n\n/**\n * handle errors for resource\n * @internal\n */\nexport const handleResourceErrors = (to: Resource, resource: IResourceItem) => {\n  if (!to?.action || !to?.resource) {\n    throw new Error(`[useGo]: \"action\" or \"resource\" is required.`);\n  }\n\n  if ([\"edit\", \"show\", \"clone\"].includes(to?.action) && !to.id) {\n    throw new Error(\n      `[useGo]: [action: ${to.action}] requires an \"id\" for resource [resource: ${to.resource}]`,\n    );\n  }\n\n  const actionUrl = resource[to.action];\n  if (!actionUrl) {\n    throw new Error(\n      `[useGo]: [action: ${to.action}] is not defined for [resource: ${to.resource}]`,\n    );\n  }\n};\n","import React, { createContext, type PropsWithChildren } from \"react\";\nimport type { RouterProvider } from \"./types\";\n\nconst defaultRouterProvider = {};\n\nexport const RouterContext = createContext<RouterProvider>(\n  defaultRouterProvider,\n);\n\nexport const RouterContextProvider: React.FC<\n  PropsWithChildren<{ router?: RouterProvider }>\n> = ({ children, router }) => {\n  return (\n    <RouterContext.Provider value={router ?? defaultRouterProvider}>\n      {children}\n    </RouterContext.Provider>\n  );\n};\n","import React, { useContext } from \"react\";\n\nimport { ResourceContext } from \"@contexts/resource\";\nimport { useId } from \"./use-id\";\nimport { useAction } from \"./use-action\";\nimport type { BaseKey } from \"../../contexts/data/types\";\nimport type { IResourceItem } from \"../../contexts/resource/types\";\nimport type { Action } from \"../../contexts/router/types\";\nimport type { FormAction } from \"../form/types\";\nimport { type SelectReturnType, useResource } from \"./use-resource\";\n\ntype Props = {\n  id?: BaseKey;\n  resource?: string;\n  action?: Action;\n};\n\ntype ResourceParams = {\n  id?: BaseKey;\n  setId: React.Dispatch<React.SetStateAction<BaseKey | undefined>>;\n  resource?: IResourceItem;\n  resources: IResourceItem[];\n  action?: Action;\n  identifier?: string;\n  formAction: FormAction;\n  select: <T extends boolean = true>(\n    resourceName: string,\n    force?: T,\n  ) => SelectReturnType<T>;\n};\n\n/**\n * Interactions in Refine has 3 main parameters: resource, action and id.\n *\n * This hook is used to manage these parameters based on below conditions and outputs the final parameters.\n *\n * `resource`: The resource to be used. (either the identifier or the name of the resource)\n * - If a `resource` is provided, it will be used (even if it's not defined in the <Refine/> component)\n * - If a `resource` is not provided, it will be inferred from the route.\n * `id`: The `id` of the record to be used.\n * - If an `id` is provided, it will be used.\n * - If an `id` is not provided, it will either be inferred from the route or will be `undefined`.\n * -- If a custom resource is provided and it's different from the inferred resource, the id will be undefined.\n * -- If a custom resource is provided and it's same as the inferred resource, the id will be inferred from the route.\n * -- If a custom resource is not provided, the id will be inferred from the route.\n * `action`: The action to be used.\n * - If an `action` is provided, it will be used.\n * - If an `action` is not provided, it will be inferred from the route.\n * `formAction`: The action to be used in the form.\n * - `formAction` can only be \"edit\", \"clone\" or \"create\".\n * - If action is \"edit\" or \"clone\", `formAction` will be the same as action.\n * - Same as `id`, if passed resource is different from inferred resource, `formAction` will fallback to \"create\" and ignore the action from the route.\n */\nexport function useResourceParams(props?: Props): ResourceParams {\n  const { resources } = useContext(ResourceContext);\n\n  const {\n    select,\n    identifier: inferredIdentifier,\n    resource: inferredResource,\n  } = useResource();\n  const resourceToCheck = props?.resource ?? inferredIdentifier;\n  const { identifier = undefined, resource = undefined } = resourceToCheck\n    ? select(resourceToCheck, true)\n    : {};\n\n  const isSameResource = inferredIdentifier === identifier;\n  const inferredId = useId();\n  const action = useAction(props?.action);\n\n  const defaultId = React.useMemo(() => {\n    if (!isSameResource) return props?.id;\n\n    return props?.id ?? inferredId;\n  }, [isSameResource, props?.id, inferredId]);\n\n  const [id, setId] = React.useState<BaseKey | undefined>(defaultId);\n\n  React.useMemo(() => setId(defaultId), [defaultId]);\n\n  const formAction = React.useMemo(() => {\n    if (!isSameResource && !props?.action) {\n      return \"create\";\n    }\n\n    if (action === \"edit\" || action === \"clone\") {\n      return action;\n    }\n\n    return \"create\";\n  }, [action, isSameResource, props?.action]);\n\n  return {\n    id,\n    setId,\n    resource: resource || inferredResource,\n    resources,\n    action,\n    identifier,\n    formAction,\n    select,\n  };\n}\n","import React from \"react\";\n\nimport { useDeepMemo } from \"@hooks/deepMemo\";\n\nimport type { IResourceContext, IResourceItem, ResourceProps } from \"./types\";\n\nexport const ResourceContext = React.createContext<IResourceContext>({\n  resources: [],\n});\n\nexport const ResourceContextProvider: React.FC<\n  React.PropsWithChildren<{ resources: ResourceProps[] }>\n> = ({ resources: providedResources, children }) => {\n  const resources: IResourceItem[] = useDeepMemo(() => {\n    return providedResources ?? [];\n  }, [providedResources]);\n\n  return (\n    <ResourceContext.Provider value={{ resources }}>\n      {children}\n    </ResourceContext.Provider>\n  );\n};\n","import React, { useMemo } from \"react\";\nimport { useMemoized } from \"@hooks/memoized\";\n\n/**\n * Hook that memoizes the given dependency array and checks the consecutive calls with deep equality and returns the same value as the first call if dependencies are not changed.\n * @internal\n */\nexport const useDeepMemo = <T,>(\n  fn: () => T,\n  dependencies: React.DependencyList,\n): T => {\n  const memoizedDependencies = useMemoized(dependencies);\n\n  const value = useMemo(fn, memoizedDependencies);\n\n  return value;\n};\n","import { useRef } from \"react\";\nimport isEqual from \"lodash/isEqual\";\n\n/**\n * Hook that memoizes the given value with deep equality.\n * @internal\n */\nexport const useMemoized = <T = unknown>(value: T): T => {\n  const ref = useRef(value);\n\n  if (!isEqual(ref.current, value)) {\n    ref.current = value;\n  }\n\n  return ref.current;\n};\n","import React from \"react\";\nimport { useParse } from \"../use-parse\";\n\nexport const useParsed = <\n  TParams extends Record<string, any> = Record<string, any>,\n>() => {\n  const parse = useParse();\n\n  const parsed = React.useMemo(() => parse<TParams>(), [parse]);\n\n  return parsed;\n};\n","import { RouterContext } from \"@contexts/router\";\nimport React, { useContext } from \"react\";\nimport type {\n  ParseFunction,\n  ParseResponse,\n} from \"../../../contexts/router/types\";\n\ntype UseParseType = () => <\n  TParams extends Record<string, any> = Record<string, any>,\n>() => ParseResponse<TParams>;\n\nexport const useParse: UseParseType = () => {\n  const routerContext = useContext(RouterContext);\n\n  const useParse = React.useMemo(\n    () =>\n      routerContext?.parse ??\n      (() =>\n        (() => {\n          return {};\n        }) as ParseFunction),\n    [routerContext?.parse],\n  );\n\n  const parse = useParse();\n\n  return parse as ReturnType<UseParseType>;\n};\n","import { useParsed } from \"../../router/use-parsed\";\nimport type { BaseKey } from \"../../../contexts/data/types\";\n\n/**\n * Returns the id from the router.\n *\n * Additionally, if an id is provided as a parameter, it will be used instead of the inferred id.\n *\n * @internal usage only\n */\nexport const useId = (id?: BaseKey) => {\n  const parsed = useParsed();\n\n  return id ?? parsed.id;\n};\n","import { useParsed } from \"../../router/use-parsed\";\nimport type { Action } from \"../../../contexts/router/types\";\n\n/**\n * Returns the action from the router.\n *\n * Additionally, if an action is provided as a parameter, it will be used instead of the inferred action.\n *\n * @internal usage only\n */\nexport const useAction = (action?: Action) => {\n  const parsed = useParsed();\n\n  return action ?? parsed.action;\n};\n","import { useContext } from \"react\";\n\nimport { ResourceContext } from \"@contexts/resource\";\n\nimport type { IResourceItem } from \"../../../contexts/resource/types\";\nimport { pickResource } from \"../../../definitions/helpers/pick-resource\";\nimport { useParsed } from \"../../router/use-parsed\";\n\n/**\n * Matches the resource by identifier.\n * If not provided, the resource from the route will be returned.\n * If your resource does not explicitly define an identifier, the resource name will be used.\n */\nexport type UseResourceParam = string | undefined;\n\nexport type SelectReturnType<T extends boolean> = T extends true\n  ? { resource: IResourceItem; identifier: string }\n  : { resource: IResourceItem; identifier: string } | undefined;\n\nexport type UseResourceReturnType = {\n  resources: IResourceItem[];\n  resource?: IResourceItem;\n  select: <T extends boolean = true>(\n    resourceName: string,\n    force?: T,\n  ) => SelectReturnType<T>;\n  identifier?: string;\n};\n\ntype UseResourceReturnTypeWithResource = UseResourceReturnType & {\n  resource: IResourceItem;\n  identifier: string;\n};\n\n/**\n * @internal\n */\nexport function useResource(): UseResourceReturnType;\n/**\n * @internal\n */\nexport function useResource<TIdentifier = UseResourceParam>(\n  identifier: TIdentifier,\n): TIdentifier extends NonNullable<UseResourceParam>\n  ? UseResourceReturnTypeWithResource\n  : UseResourceReturnType;\n/**\n *\n * @internal\n *\n * `useResource` is used to get `resources` that are defined as property of the `<Refine>` component.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/hooks/resource/useResource} for more details.\n *\n */\nexport function useResource(args?: UseResourceParam): UseResourceReturnType {\n  const { resources } = useContext(ResourceContext);\n\n  const params = useParsed();\n\n  const select = <T extends boolean = true>(\n    resourceName: string,\n    force = true,\n  ): SelectReturnType<T> => {\n    const pickedResource = pickResource(resourceName, resources);\n\n    if (pickedResource) {\n      return {\n        resource: pickedResource,\n        identifier: pickedResource.identifier ?? pickedResource.name,\n      } as SelectReturnType<T>;\n    }\n\n    if (force) {\n      const resource: IResourceItem = {\n        name: resourceName,\n        identifier: resourceName,\n      };\n\n      const identifier = resource.identifier ?? resource.name;\n\n      return {\n        resource,\n        identifier,\n      } as SelectReturnType<T>;\n    }\n\n    return undefined as SelectReturnType<T>;\n  };\n\n  let resource: IResourceItem | undefined = undefined;\n  // we try to pick the resource from props first\n  const identifier = args;\n  if (identifier) {\n    const pickedFromProps = pickResource(identifier, resources);\n    if (pickedFromProps) {\n      resource = pickedFromProps;\n    } else {\n      resource = {\n        name: identifier,\n      };\n    }\n  } else if (params?.resource) {\n    resource = params.resource;\n  }\n\n  return {\n    resources,\n    resource,\n    select,\n    identifier: resource?.identifier ?? resource?.name,\n  };\n}\n","import React from \"react\";\nimport warnOnce from \"warn-once\";\n\nimport type { IResourceItem } from \"../../../contexts/resource/types\";\nimport type { Action } from \"../../../contexts/router/types\";\nimport { getActionRoutesFromResource } from \"../../../definitions/helpers/router\";\nimport { composeRoute } from \"../../../definitions/helpers/router/compose-route\";\nimport { useResourceParams } from \"../../use-resource-params\";\nimport { useParsed } from \"../use-parsed\";\n\ntype UseToPathParams = {\n  resource?: IResourceItem;\n  action: Action;\n  meta?: Record<string, unknown>;\n};\n\ntype GetToPathFn = (params: UseToPathParams) => string | undefined;\n\n/**\n * Returns a function to get the route for a given action and resource.\n * If resource is not provided, it will use the resource from the route.\n * If the resource is not found, it will return undefined.\n * If the action is not found, it will return undefined.\n * `meta` can be provided to compose the routes with parameters. (Can be used for nested routes.)\n */\nexport const useGetToPath = (): GetToPathFn => {\n  const { resource: resourceFromRoute, resources } = useResourceParams();\n  const parsed = useParsed();\n\n  const fn = React.useCallback(\n    ({ resource, action, meta }: UseToPathParams): string | undefined => {\n      const selectedResource = resource || resourceFromRoute;\n\n      if (!selectedResource) {\n        return undefined;\n      }\n\n      // Always get the full resource from resources array to ensure we have all action routes\n      // Priority: identifier match > name match\n      const fullResource =\n        resources.find((r) => {\n          // to avoid matching undefined identifiers\n          if (!r.identifier) return false;\n          if (!selectedResource.identifier) return false;\n          return r.identifier === selectedResource.identifier;\n        }) ??\n        resources.find((r) => {\n          // to avoid matching undefined identifiers\n          if (!r.identifier) return false;\n          return r.identifier === selectedResource.name;\n        }) ??\n        resources.find((r) => r.name === selectedResource.name) ??\n        selectedResource;\n\n      const actionRoutes = getActionRoutesFromResource(fullResource, resources);\n\n      const actionRoute = actionRoutes.find(\n        (item) => item.action === action,\n      )?.route;\n\n      if (!actionRoute) {\n        warnOnce(\n          true,\n          `[useGetToPath]: Could not find a route for the \"${action}\" action of the \"${selectedResource.name}\" resource. Please make sure that the resource has the \"${action}\" property defined.`,\n        );\n        return undefined;\n      }\n\n      const composed = composeRoute(\n        actionRoute,\n        fullResource?.meta,\n        parsed,\n        meta,\n      );\n\n      return composed;\n    },\n    [resources, resourceFromRoute, parsed],\n  );\n\n  return fn;\n};\n","import { pickResource } from \"@definitions/helpers/pick-resource\";\nimport { getActionRoutesFromResource } from \"@definitions/helpers/router\";\nimport { composeRoute } from \"@definitions/helpers/router/compose-route\";\nimport { useResourceParams } from \"@hooks\";\nimport { useGo } from \"@hooks/router/use-go\";\nimport { useParsed } from \"@hooks/router/use-parsed\";\n\nimport type { BaseKey, MetaQuery } from \"../../contexts/data/types\";\nimport type { IResourceItem } from \"../../contexts/resource/types\";\n\nexport type HistoryType = \"push\" | \"replace\";\n\n/**\n * `refine` uses {@link https://reactrouter.com/api/hooks/useNavigate `React Router`} and comes with all redirects out of the box.\n * It allows you to manage your routing operations in refine.\n * Using this hook, you can manage all the routing operations of your application very easily.\n *\n * @internal This is an internal hook of refine. Do not use it directly.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/hooks/navigation/useNavigation} for more details.\n */\nexport const useNavigation = () => {\n  const { resources } = useResourceParams();\n  const parsed = useParsed();\n  const go = useGo();\n\n  const handleUrl = (url: string, type: HistoryType = \"push\") => {\n    go({ to: url, type });\n  };\n\n  const createUrl = (\n    resource: string | IResourceItem,\n    meta: MetaQuery = {},\n  ) => {\n    const resourceItem =\n      typeof resource === \"string\"\n        ? pickResource(resource, resources) ?? { name: resource }\n        : resource;\n\n    const createActionRoute = getActionRoutesFromResource(\n      resourceItem,\n      resources,\n    ).find((r) => r.action === \"create\")?.route;\n\n    if (!createActionRoute) {\n      return \"\";\n    }\n\n    return go({\n      to: composeRoute(createActionRoute, resourceItem?.meta, parsed, meta),\n      type: \"path\",\n      query: meta.query,\n    }) as string;\n  };\n\n  const editUrl = (\n    resource: string | IResourceItem,\n    id: BaseKey,\n    meta: MetaQuery = {},\n  ) => {\n    const encodedId = encodeURIComponent(id);\n    const resourceItem =\n      typeof resource === \"string\"\n        ? pickResource(resource, resources) ?? { name: resource }\n        : resource;\n\n    const editActionRoute = getActionRoutesFromResource(\n      resourceItem,\n      resources,\n    ).find((r) => r.action === \"edit\")?.route;\n\n    if (!editActionRoute) {\n      return \"\";\n    }\n\n    return go({\n      to: composeRoute(editActionRoute, resourceItem?.meta, parsed, {\n        ...meta,\n        id: encodedId,\n      }),\n      type: \"path\",\n      query: meta.query,\n    }) as string;\n  };\n\n  const cloneUrl = (\n    resource: string | IResourceItem,\n    id: BaseKey,\n    meta: MetaQuery = {},\n  ) => {\n    const encodedId = encodeURIComponent(id);\n    const resourceItem =\n      typeof resource === \"string\"\n        ? pickResource(resource, resources) ?? { name: resource }\n        : resource;\n\n    const cloneActionRoute = getActionRoutesFromResource(\n      resourceItem,\n      resources,\n    ).find((r) => r.action === \"clone\")?.route;\n\n    if (!cloneActionRoute) {\n      return \"\";\n    }\n\n    return go({\n      to: composeRoute(cloneActionRoute, resourceItem?.meta, parsed, {\n        ...meta,\n        id: encodedId,\n      }),\n      type: \"path\",\n      query: meta.query,\n    }) as string;\n  };\n\n  const showUrl = (\n    resource: string | IResourceItem,\n    id: BaseKey,\n    meta: MetaQuery = {},\n  ) => {\n    const encodedId = encodeURIComponent(id);\n    const resourceItem =\n      typeof resource === \"string\"\n        ? pickResource(resource, resources) ?? { name: resource }\n        : resource;\n\n    const showActionRoute = getActionRoutesFromResource(\n      resourceItem,\n      resources,\n    ).find((r) => r.action === \"show\")?.route;\n\n    if (!showActionRoute) {\n      return \"\";\n    }\n\n    return go({\n      to: composeRoute(showActionRoute, resourceItem?.meta, parsed, {\n        ...meta,\n        id: encodedId,\n      }),\n      type: \"path\",\n      query: meta.query,\n    }) as string;\n  };\n\n  const listUrl = (resource: string | IResourceItem, meta: MetaQuery = {}) => {\n    const resourceItem =\n      typeof resource === \"string\"\n        ? pickResource(resource, resources) ?? { name: resource }\n        : resource;\n\n    const listActionRoute = getActionRoutesFromResource(\n      resourceItem,\n      resources,\n    ).find((r) => r.action === \"list\")?.route;\n\n    if (!listActionRoute) {\n      return \"\";\n    }\n\n    return go({\n      to: composeRoute(listActionRoute, resourceItem?.meta, parsed, meta),\n      type: \"path\",\n      query: meta.query,\n    }) as string;\n  };\n\n  const create = (\n    resource: string | IResourceItem,\n    type: HistoryType = \"push\",\n    meta: MetaQuery = {},\n  ) => {\n    handleUrl(createUrl(resource, meta), type);\n  };\n\n  const edit = (\n    resource: string | IResourceItem,\n    id: BaseKey,\n    type: HistoryType = \"push\",\n    meta: MetaQuery = {},\n  ) => {\n    handleUrl(editUrl(resource, id, meta), type);\n  };\n\n  const clone = (\n    resource: string | IResourceItem,\n    id: BaseKey,\n    type: HistoryType = \"push\",\n    meta: MetaQuery = {},\n  ) => {\n    handleUrl(cloneUrl(resource, id, meta), type);\n  };\n\n  const show = (\n    resource: string | IResourceItem,\n    id: BaseKey,\n    type: HistoryType = \"push\",\n    meta: MetaQuery = {},\n  ) => {\n    handleUrl(showUrl(resource, id, meta), type);\n  };\n\n  const list = (\n    resource: string | IResourceItem,\n    type: HistoryType = \"push\",\n    meta: MetaQuery = {},\n  ) => {\n    handleUrl(listUrl(resource, meta), type);\n  };\n\n  return {\n    create,\n    createUrl,\n    edit,\n    editUrl,\n    clone,\n    cloneUrl,\n    show,\n    showUrl,\n    list,\n    listUrl,\n  };\n};\n","import warnOnce from \"warn-once\";\nimport { useMeta, useOne, useResourceParams } from \"@hooks\";\n\nimport type { UseShowProps, UseShowReturnType } from \"./types\";\nimport type { BaseKey, BaseRecord, HttpError } from \"../../contexts/data/types\";\n\nexport type {\n  UseShowProps,\n  UseShowReturnType,\n} from \"./types\";\n\n/**\n * `useShow` hook allows you to fetch the desired record.\n * It uses `getOne` method as query function from the dataProvider that is\n * passed to {@link https://refine.dev/docs/core/refine-component `<Refine>`}.\n *\n * @see {@link https://refine.dev/docs/data/hooks/use-show} for more details.\n *\n * @typeParam TQueryFnData - Result data returned by the query function. Extends {@link https://refine.dev/docs/core/interface-references/#baserecord `BaseRecord`}\n * @typeParam TError - Custom error object that extends {@link https://refine.dev/docs/core/interface-references/#httperror `HttpError`}\n * @typeParam TData - Result data returned by the `select` function. Extends {@link https://refine.dev/docs/core/interface-references/#baserecord `BaseRecord`}. Defaults to `TQueryFnData`\n *\n */\nexport const useShow = <\n  TQueryFnData extends BaseRecord = BaseRecord,\n  TError extends HttpError = HttpError,\n  TData extends BaseRecord = TQueryFnData,\n>({\n  resource: resourceFromProp,\n  id,\n  meta,\n  queryOptions,\n  overtimeOptions,\n  ...useOneProps\n}: UseShowProps<TQueryFnData, TError, TData> = {}): UseShowReturnType<\n  TData,\n  TError\n> => {\n  const {\n    resource,\n    identifier,\n    id: showId,\n    setId: setShowId,\n  } = useResourceParams({\n    id,\n    resource: resourceFromProp,\n  });\n\n  const getMeta = useMeta();\n\n  const combinedMeta = getMeta({\n    resource,\n    meta: meta,\n  });\n\n  warnOnce(\n    Boolean(resourceFromProp) && !showId,\n    idWarningMessage(identifier, showId),\n  );\n\n  const queryResult = useOne<TQueryFnData, TError, TData>({\n    resource: identifier,\n    id: showId ?? \"\",\n    queryOptions: {\n      enabled: showId !== undefined,\n      ...queryOptions,\n    },\n    meta: combinedMeta,\n    overtimeOptions,\n    ...useOneProps,\n  });\n\n  return {\n    query: queryResult.query,\n    result: queryResult.result,\n    showId,\n    setShowId,\n    overtime: queryResult.overtime,\n  };\n};\n\nconst idWarningMessage = (identifier?: string, id?: BaseKey) =>\n  `[useShow]: resource: \"${identifier}\", id: ${id} \\n\\nIf you don't use the \\`setShowId\\` method to set the \\`showId\\`, you should pass the \\`id\\` prop to \\`useShow\\`. Otherwise, \\`useShow\\` will not be able to infer the \\`id\\` from the current URL. \\n\\nSee https://refine.dev/docs/data/hooks/use-show/#resource`;\n","import { useEffect, useState } from \"react\";\n\nimport chunk from \"lodash/chunk\";\nimport papaparse from \"papaparse\";\n\nimport { importCSVMapper, sequentialPromises } from \"@definitions\";\nimport { useCreate, useCreateMany, useMeta, useResourceParams } from \"@hooks\";\n\nimport type {\n  BaseRecord,\n  HttpError,\n  MetaQuery,\n} from \"../../contexts/data/types\";\nimport type { UseCreateReturnType } from \"../../hooks/data/useCreate\";\nimport type { UseCreateManyReturnType } from \"../../hooks/data/useCreateMany\";\nimport type { MapDataFn } from \"../export/types\";\n\nexport type ImportSuccessResult<TVariables, TData> = {\n  request: TVariables[];\n  type: \"success\";\n  response: TData[];\n};\n\nexport type ImportErrorResult<TVariables> = {\n  request: TVariables[];\n  type: \"error\";\n  response: HttpError[];\n};\n\nexport type OnFinishParams<TVariables, TData> = {\n  succeeded: ImportSuccessResult<TVariables, TData>[];\n  errored: ImportErrorResult<TVariables>[];\n};\n\nexport type OnProgressParams = {\n  totalAmount: number;\n  processedAmount: number;\n};\n\nexport type ImportOptions<\n  TItem,\n  TVariables = any,\n  TData extends BaseRecord = BaseRecord,\n> = {\n  /**\n   * Resource name for API data interactions.\n   * @default Resource name that it reads from route\n   */\n  resource?: string;\n  /**\n   * A mapping function that runs for every record. Mapped data will be included in the file contents.\n   */\n  mapData?: MapDataFn<TItem, TVariables>;\n  /**\n   * Custom Papa Parse options.\n   * @type [`ParseConfig`](https://www.papaparse.com/docs)\n   */\n  paparseOptions?: papaparse.ParseConfig;\n  /**\n   * Requests batch size. If it is 1, all records are sent one by one. By default, it is [`Number.MAX_SAFE_INTEGER`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/MAX_SAFE_INTEGER) to send all records in one batch. If it is more than 1, `createMany` should be implemented on DataProvider.\n   */\n  batchSize?: number;\n  /**\n   * Called with errors and successful responses when all requests are sent.\n   */\n  onFinish?: (results: OnFinishParams<TVariables, TData>) => void;\n  /**\n   *  Metadata query for `dataProvider`\n   */\n  meta?: MetaQuery;\n  /**\n   *  Metadata query for `dataProvider`\n  /**\n   *  A callback function that returns a current state of uploading process.\n   *\n   *  Ex: `percentage = onProgressParams.processedAmount / onProgressParams.totalAmount * 100`\n   */\n  onProgress?: (onProgressParams: OnProgressParams) => void;\n  /**\n   * If there is more than one `dataProvider`, you should use the `dataProviderName` that you will use.\n   */\n  dataProviderName?: string;\n};\n\nexport type CreatedValuesType<TVariables, TData> =\n  | ImportSuccessResult<TVariables, TData>\n  | ImportErrorResult<TVariables>;\n\nexport type HandleChangeType<TVariables, TData> = (onChangeParams: {\n  file: Partial<File>;\n}) => Promise<CreatedValuesType<TVariables, TData>[]>;\n\nexport type UseImportInputPropsType = {\n  type: \"file\";\n  accept: string;\n  onChange: (event: React.ChangeEvent<HTMLInputElement>) => void;\n};\n\nexport type UseImportReturnType<\n  TData extends BaseRecord = BaseRecord,\n  TVariables = {},\n  TError extends HttpError = HttpError,\n> = {\n  inputProps: UseImportInputPropsType;\n  mutationResult:\n    | UseCreateReturnType<TData, TError, TVariables>\n    | UseCreateManyReturnType<TData, TError, TVariables>;\n  isLoading: boolean;\n  handleChange: HandleChangeType<TVariables, TData>;\n};\n\n/**\n * `useImport` hook allows you to handle your csv import logic easily.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/hooks/import-export/useImport} for more details.\n *\n * @typeParam TItem - Interface of parsed csv data\n * @typeParam TData - Result data of the query extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}\n * @typeParam TError - Custom error object that extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences/#httperror `HttpError`}\n * @typeParam TVariables - Values for mutation function\n *\n */\nexport const useImport = <\n  TItem = any,\n  TData extends BaseRecord = BaseRecord,\n  TError extends HttpError = HttpError,\n  TVariables = any,\n>({\n  resource: resourceFromProps,\n  mapData = (item) => item as unknown as TVariables,\n  paparseOptions,\n  batchSize = Number.MAX_SAFE_INTEGER,\n  onFinish,\n  meta,\n  onProgress,\n  dataProviderName,\n}: ImportOptions<TItem, TVariables, TData> = {}): UseImportReturnType<\n  TData,\n  TVariables,\n  TError\n> => {\n  const [processedAmount, setProcessedAmount] = useState<number>(0);\n  const [totalAmount, setTotalAmount] = useState<number>(0);\n  const [isLoading, setIsLoading] = useState(false);\n\n  const { resource, identifier } = useResourceParams({\n    resource: resourceFromProps,\n  });\n\n  const getMeta = useMeta();\n\n  const createMany = useCreateMany<TData, TError, TVariables>();\n  const create = useCreate<TData, TError, TVariables>();\n\n  const combinedMeta = getMeta({\n    resource,\n    meta: meta,\n  });\n\n  let mutationResult:\n    | UseCreateReturnType<TData, TError, TVariables>\n    | UseCreateManyReturnType<TData, TError, TVariables>;\n\n  if (batchSize === 1) {\n    mutationResult = create;\n  } else {\n    mutationResult = createMany;\n  }\n\n  const handleCleanup = () => {\n    setTotalAmount(0);\n    setProcessedAmount(0);\n    setIsLoading(false);\n  };\n\n  const handleFinish = (\n    createdValues: CreatedValuesType<TVariables, TData>[],\n  ) => {\n    const result = {\n      succeeded: createdValues.filter(\n        (item) => item.type === \"success\",\n      ) as unknown as ImportSuccessResult<TVariables, TData>[],\n      errored: createdValues.filter(\n        (item) => item.type === \"error\",\n      ) as unknown as ImportErrorResult<TVariables>[],\n    };\n\n    onFinish?.(result);\n    setIsLoading(false);\n  };\n\n  useEffect(() => {\n    onProgress?.({ totalAmount, processedAmount });\n  }, [totalAmount, processedAmount]);\n\n  const handleChange: HandleChangeType<TVariables, TData> = ({ file }) => {\n    handleCleanup();\n    return new Promise<CreatedValuesType<TVariables, TData>[]>((resolve) => {\n      setIsLoading(true);\n      papaparse.parse(file as any, {\n        complete: async ({ data }: { data: unknown[][] }) => {\n          const values = importCSVMapper(data, mapData);\n\n          setTotalAmount(values.length);\n\n          if (batchSize === 1) {\n            // Create Processor Functions\n            const valueFns = values.map((value) => {\n              const fn = async () => {\n                const response = await create.mutateAsync({\n                  resource: identifier ?? \"\",\n                  values: value,\n                  successNotification: false,\n                  errorNotification: false,\n                  dataProviderName,\n                  meta: combinedMeta,\n                });\n\n                return { response, value };\n              };\n              return fn;\n            });\n            // Sequentially run processor functions and process resolves/rejects\n            const createdValues = await sequentialPromises(\n              valueFns,\n              ({ response, value }) => {\n                setProcessedAmount((currentAmount) => {\n                  return currentAmount + 1;\n                });\n\n                return {\n                  response: [response.data],\n                  type: \"success\",\n                  request: [value],\n                } as ImportSuccessResult<TVariables, TData>;\n              },\n              (error: HttpError, index) => {\n                return {\n                  response: [error],\n                  type: \"error\",\n                  request: [values[index]],\n                } as ImportErrorResult<TVariables>;\n              },\n            );\n            // Resolve with created values\n            resolve(createdValues);\n          } else {\n            // Create Chunks\n            const chunks = chunk(values, batchSize);\n            // Create Chunk Processor Functions\n            const chunkedFns = chunks.map((chunkedValues) => {\n              const fn = async () => {\n                const response = await createMany.mutateAsync({\n                  resource: identifier ?? \"\",\n                  values: chunkedValues,\n                  successNotification: false,\n                  errorNotification: false,\n                  dataProviderName,\n                  meta: combinedMeta,\n                });\n\n                return {\n                  response,\n                  value: chunkedValues,\n                  currentBatchLength: chunkedValues.length,\n                };\n              };\n\n              return fn;\n            });\n            // Sequentially run chunked functions and process resolves/rejects\n            const createdValues = await sequentialPromises(\n              chunkedFns,\n              ({ response, currentBatchLength, value }) => {\n                setProcessedAmount((currentAmount) => {\n                  return currentAmount + currentBatchLength;\n                });\n\n                return {\n                  response: response.data,\n                  type: \"success\",\n                  request: value,\n                } as ImportSuccessResult<TVariables, TData>;\n              },\n              (error: HttpError, index) => {\n                return {\n                  response: [error],\n                  type: \"error\",\n                  request: chunks[index],\n                } as ImportErrorResult<TVariables>;\n              },\n            );\n            // resolve with all created values\n            resolve(createdValues);\n          }\n        },\n\n        ...paparseOptions,\n      });\n    }).then((createdValues) => {\n      handleFinish(createdValues);\n      return createdValues;\n    });\n  };\n\n  return {\n    inputProps: {\n      type: \"file\",\n      accept: \".csv\",\n      onChange: (event: React.ChangeEvent<HTMLInputElement>) => {\n        if (event.target.files && event.target.files.length > 0) {\n          handleChange({ file: event.target.files[0] });\n        }\n      },\n    },\n    mutationResult,\n    isLoading,\n    handleChange,\n  };\n};\n","import { useCallback, useState } from \"react\";\n\nexport type useModalReturnType = {\n  visible: boolean;\n  show: () => void;\n  close: () => void;\n};\n\nexport type useModalProps = {\n  /**\n   * Initial state of the modal\n   */\n  defaultVisible?: boolean;\n};\n\nexport const useModal = ({\n  defaultVisible = false,\n}: useModalProps = {}): useModalReturnType => {\n  const [visible, setVisible] = useState(defaultVisible);\n\n  const show = useCallback(() => setVisible(true), [visible]);\n  const close = useCallback(() => setVisible(false), [visible]);\n\n  return {\n    visible,\n    show,\n    close,\n  };\n};\n","import { RouterContext } from \"@contexts/router\";\nimport React, { useContext } from \"react\";\n\nexport const useBack = () => {\n  const routerContext = useContext(RouterContext);\n\n  const useBack = React.useMemo(\n    () => routerContext?.back ?? (() => () => undefined),\n    [routerContext?.back],\n  );\n\n  const back = useBack();\n\n  return back;\n};\n","import type { IResourceItem } from \"../../../contexts/resource/types\";\nimport type { Action } from \"../../../contexts/router/types\";\nimport { useGetToPath } from \"../use-get-to-path\";\n\ntype UseToPathParams = {\n  resource?: IResourceItem;\n  action: Action;\n  meta?: Record<string, unknown>;\n};\n\n/**\n * Returns the route for a given action and resource.\n * If resource is not provided, it will use the resource from the route.\n * If the resource is not found, it will return undefined.\n * If the action is not found, it will return undefined.\n * `meta` can be provided to compose the routes with parameters. (Can be used for nested routes.)\n */\nexport const useToPath = ({\n  resource,\n  action,\n  meta,\n}: UseToPathParams): string | undefined => {\n  const getToPath = useGetToPath();\n\n  return getToPath({ resource, action, meta });\n};\n","import React, { type Ref, forwardRef, useContext } from \"react\";\nimport { useGo } from \"@hooks/router\";\nimport { RouterContext } from \"@contexts/router\";\nimport type { GoConfigWithResource } from \"../../hooks/router/use-go\";\nimport warnOnce from \"warn-once\";\n\ntype LinkPropsWithGo = {\n  go: Omit<GoConfigWithResource, \"type\">;\n};\n\ntype LinkPropsWithTo = {\n  to: string;\n};\n\nexport type LinkProps<TProps = {}> = React.PropsWithChildren<\n  (LinkPropsWithGo | LinkPropsWithTo) & TProps\n>;\n\n/**\n * @param to The path to navigate to.\n * @param go The useGo.go params to navigate to. If `to` provided, this will be ignored.\n * @returns routerProvider.Link if it is provided, otherwise an anchor tag.\n */\nconst LinkComponent = <TProps = {}>(\n  props: LinkProps<TProps>,\n  ref: Ref<Element>,\n) => {\n  const routerContext = useContext(RouterContext);\n  const LinkFromContext = routerContext?.Link;\n\n  const goFunction = useGo();\n\n  let resolvedTo = \"\";\n  if (\"go\" in props) {\n    if (!routerContext?.go) {\n      warnOnce(\n        true,\n        \"[Link]: `routerProvider` is not found. To use `go`, Please make sure that you have provided the `routerProvider` for `<Refine />` https://refine.dev/docs/routing/router-provider/ \\n\",\n      );\n    }\n    resolvedTo = goFunction({ ...props.go, type: \"path\" }) as string;\n  }\n  if (\"to\" in props) {\n    resolvedTo = props.to;\n  }\n\n  if (LinkFromContext) {\n    return (\n      <LinkFromContext\n        ref={ref}\n        {...props}\n        to={resolvedTo}\n        // This is a workaround to avoid passing `go` to the Link component.\n        go={undefined}\n      />\n    );\n  }\n  return (\n    <a\n      ref={ref}\n      href={resolvedTo}\n      {...props}\n      // This is a workaround to avoid passing `go` and `to` to the anchor tag.\n      to={undefined}\n      go={undefined}\n    />\n  );\n};\n\nexport const Link = forwardRef(LinkComponent) as <T = {}>(\n  props: LinkProps<T> & { ref?: Ref<Element> },\n) => ReturnType<typeof LinkComponent>;\n","import { Link } from \"../../../components/link\";\n\nexport const useLink = () => {\n  return Link;\n};\n","import { useContext } from \"react\";\n\nimport { getXRay } from \"@refinedev/devtools-internal\";\nimport {\n  type UseQueryOptions,\n  type UseQueryResult,\n  useQuery,\n} from \"@tanstack/react-query\";\n\nimport { AccessControlContext } from \"@contexts/accessControl\";\nimport { sanitizeResource } from \"@definitions/helpers/sanitize-resource\";\nimport { useKeys } from \"@hooks/useKeys\";\nimport type {\n  CanParams,\n  CanReturnType,\n} from \"../../../contexts/accessControl/types\";\n\nexport type UseCanProps = CanParams & {\n  /**\n   * TansSack Query's [useQuery](https://tanstack.com/query/latest/docs/framework/react/reference/useQuery) options\n   */\n  // Make queryKey and queryFn optional\n  queryOptions?: Omit<UseQueryOptions<CanReturnType>, \"queryKey\"> & {\n    queryKey?: UseQueryOptions<CanReturnType>[\"queryKey\"];\n  };\n};\n\n/**\n * `useCan` uses the `can` as the query function for `react-query`'s {@link https://tanstack.com/query/v5/docs/framework/react/guides/queries `useQuery`}. It takes the parameters that `can` takes. It can also be configured with `queryOptions` for `useQuery`. Returns the result of `useQuery`.\n * @see {@link https://refine.dev/docs/api-reference/core/hooks/accessControl/useCan} for more details.\n *\n * @typeParam CanParams {@link https://refine.dev/docs/core/interfaceReferences#canparams}\n * @typeParam CanReturnType {@link https://refine.dev/docs/core/interfaceReferences#canreturntype}\n *\n */\nexport const useCan = ({\n  action,\n  resource,\n  params,\n  queryOptions: hookQueryOptions,\n}: UseCanProps): UseQueryResult<CanReturnType> => {\n  const { can, options: globalOptions } = useContext(AccessControlContext);\n  const { keys } = useKeys();\n\n  const { queryOptions: globalQueryOptions } = globalOptions || {};\n\n  const mergedQueryOptions = {\n    ...globalQueryOptions,\n    ...hookQueryOptions,\n  };\n\n  /**\n   * Since `react-query` stringifies the query keys, it will throw an error for a circular dependency if we include `React.ReactNode` elements inside the keys.\n   * The feature in #2220(https://github.com/refinedev/refine/issues/2220) includes such change and to fix this, we need to remove `icon` property in the `resource`\n   */\n  const { resource: _resource, ...paramsRest } = params ?? {};\n\n  const sanitizedResource = sanitizeResource(_resource);\n\n  const queryResponse = useQuery<CanReturnType>({\n    queryKey: keys()\n      .access()\n      .resource(resource)\n      .action(action)\n      .params({\n        params: { ...paramsRest, resource: sanitizedResource },\n        enabled: mergedQueryOptions?.enabled,\n      })\n      .get(),\n    // Enabled check for `can` is enough to be sure that it's defined in the query function but TS is not smart enough to know that.\n    queryFn: () =>\n      can?.({\n        action,\n        resource,\n        params: { ...paramsRest, resource: sanitizedResource },\n      }) ?? Promise.resolve({ can: true }),\n    enabled: typeof can !== \"undefined\",\n    ...mergedQueryOptions,\n    meta: {\n      ...mergedQueryOptions?.meta,\n      ...getXRay(\"useCan\", resource, [\n        \"useButtonCanAccess\",\n        \"useNavigationButton\",\n      ]),\n    },\n    retry: false,\n  });\n\n  return typeof can === \"undefined\"\n    ? ({ data: { can: true } } as typeof queryResponse)\n    : queryResponse;\n};\n","import React, { type PropsWithChildren } from \"react\";\n\nimport type {\n  IAccessControlContext,\n  IAccessControlContextReturnType,\n} from \"./types\";\n\nexport const AccessControlContext =\n  React.createContext<IAccessControlContextReturnType>({\n    options: {\n      buttons: { enableAccessControl: true, hideIfUnauthorized: false },\n    },\n  });\n\nexport const AccessControlContextProvider: React.FC<\n  PropsWithChildren<IAccessControlContext>\n> = ({ can, children, options }) => {\n  return (\n    <AccessControlContext.Provider\n      value={{\n        can,\n        options: options\n          ? {\n              ...options,\n              buttons: {\n                enableAccessControl: true,\n                hideIfUnauthorized: false,\n                ...options.buttons,\n              },\n            }\n          : {\n              buttons: {\n                enableAccessControl: true,\n                hideIfUnauthorized: false,\n              },\n              queryOptions: undefined,\n            },\n      }}\n    >\n      {children}\n    </AccessControlContext.Provider>\n  );\n};\n","import type { IResourceItem } from \"../../../contexts/resource/types\";\n\n/**\n * Remove all properties that are non-serializable from a resource object.\n */\nexport const sanitizeResource = (\n  resource?: Partial<IResourceItem> &\n    Required<Pick<IResourceItem, \"name\">> & { children?: unknown } & Record<\n      string,\n      any\n    >,\n):\n  | (Partial<IResourceItem> & Required<Pick<IResourceItem, \"name\">>)\n  | undefined => {\n  if (!resource) {\n    return undefined;\n  }\n\n  const {\n    list,\n    edit,\n    create,\n    show,\n    clone,\n    children,\n    meta,\n    icon,\n    ...restResource\n  } = resource;\n\n  const { icon: _metaIcon, ...restMeta } = meta ?? {};\n\n  return {\n    ...restResource,\n    ...(meta ? { meta: restMeta } : {}),\n  };\n};\n","import React from \"react\";\n\nimport { AccessControlContext } from \"@contexts/accessControl\";\nimport { sanitizeResource } from \"@definitions/helpers/sanitize-resource\";\n\nimport type { IAccessControlContext } from \"../../contexts/accessControl/types\";\n\nexport const useCanWithoutCache = (): IAccessControlContext => {\n  const { can: canFromContext } = React.useContext(AccessControlContext);\n\n  const can = React.useMemo(() => {\n    if (!canFromContext) {\n      return undefined;\n    }\n\n    const canWithSanitizedResource: NonNullable<typeof canFromContext> =\n      async ({ params, ...rest }) => {\n        const sanitizedResource = params?.resource\n          ? sanitizeResource(params.resource)\n          : undefined;\n\n        return canFromContext({\n          ...rest,\n          ...(params\n            ? {\n                params: {\n                  ...params,\n                  resource: sanitizedResource,\n                },\n              }\n            : {}),\n        });\n      };\n\n    return canWithSanitizedResource;\n  }, [canFromContext]);\n\n  return { can };\n};\n","import { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\n\nimport type {\n  QueryObserverResult,\n  UseQueryOptions,\n} from \"@tanstack/react-query\";\nimport debounce from \"lodash/debounce\";\nimport get from \"lodash/get\";\nimport uniqBy from \"lodash/uniqBy\";\n\nimport { useList, useMany, useMeta } from \"@hooks\";\nimport type { UseManyReturnType } from \"../data/useMany\";\n\nimport type {\n  BaseKey,\n  BaseOption,\n  BaseRecord,\n  CrudFilter,\n  CrudSort,\n  GetListResponse,\n  GetManyResponse,\n  HttpError,\n  MetaQuery,\n  Pagination,\n  Prettify,\n} from \"../../contexts/data/types\";\nimport type { LiveModeProps } from \"../../contexts/live/types\";\nimport type { SuccessErrorNotification } from \"../../contexts/notification/types\";\nimport type { BaseListProps } from \"../data/useList\";\nimport { useResourceParams } from \"../use-resource-params\";\nimport {\n  type UseLoadingOvertimeOptionsProps,\n  type UseLoadingOvertimeReturnType,\n  useLoadingOvertime,\n} from \"../useLoadingOvertime\";\nimport type { MakeOptional } from \"../../definitions/types\";\n\nexport type SelectedOptionsOrder = \"in-place\" | \"selected-first\";\n\nexport type UseSelectProps<TQueryFnData, TError, TData> = {\n  /**\n   * Resource name for API data interactions\n   */\n  resource: string;\n  /**\n   * Set the option's label value\n   * @default `\"title\"`\n   */\n  optionLabel?:\n    | (keyof TData extends string ? keyof TData : never)\n    | ((item: TData) => string);\n  /**\n   * Set the option's value\n   * @default `\"id\"`\n   */\n  optionValue?:\n    | (keyof TData extends string ? keyof TData : never)\n    | ((item: TData) => string);\n  /**\n   * Field name to search for.\n   * @description If provided `optionLabel` is a string, uses `optionLabel`'s value.\n   * @default `\"title\"`\n   * @example\n   * // when optionLabel is string.\n   * useSelect({ optionLabel: \"name\" })\n   * // uses `name` field.\n   * @example\n   * // when optionLabel is function.\n   * useSelect({ optionLabel: (field) => field.description })\n   * // uses `title`, since `optionLabel` is a function.\n   */\n  searchField?: keyof TData extends string ? keyof TData : never;\n  /**\n   * Allow us to sort the options\n   */\n  sorters?: CrudSort[];\n  /**\n   * Resource name for API data interactions\n   */\n  filters?: CrudFilter[];\n  /**\n   * Adds extra `options`\n   */\n  defaultValue?: BaseKey | BaseKey[];\n  /**\n   * Allow us to sort the selection options\n   * @default `in-place`\n   */\n  selectedOptionsOrder?: SelectedOptionsOrder;\n  /**\n   * The number of milliseconds to delay\n   * @default `300`\n   */\n  debounce?: number;\n  /**\n   * react-query [useQuery](https://react-query.tanstack.com/reference/useQuery) options\n   */\n  queryOptions?: MakeOptional<\n    UseQueryOptions<\n      GetListResponse<TQueryFnData>,\n      TError,\n      GetListResponse<TData>\n    >,\n    \"queryKey\" | \"queryFn\"\n  >;\n  /**\n   * Pagination option from [`useList()`](/docs/api-reference/core/hooks/data/useList/)\n   * @type {  currentPage?: number; pageSize?: number;}\n   * @default `undefined`\n   */\n  pagination?: Prettify<\n    Omit<Pagination, \"mode\"> & {\n      /**\n       * Whether to use server side pagination or not.\n       * @default \"off\"\n       */\n      mode?: Pagination[\"mode\"];\n    }\n  >;\n  /**\n   * react-query [useQuery](https://react-query.tanstack.com/reference/useQuery) options\n   */\n  defaultValueQueryOptions?: MakeOptional<\n    UseQueryOptions<\n      GetManyResponse<TQueryFnData>,\n      TError,\n      GetManyResponse<TData>\n    >,\n    \"queryKey\" | \"queryFn\"\n  >;\n  /**\n   * If defined, this callback allows us to override all filters for every search request.\n   * @default `undefined`\n   */\n  onSearch?: (value: string) => CrudFilter[];\n  /**\n   * Additional meta data to pass to the `useMany` from the data provider\n   */\n  meta?: MetaQuery;\n  /**\n   * Additional meta data to pass to the `useMany` from the data provider\n  /**\n   * If there is more than one `dataProvider`, you should use the `dataProviderName` that you will use.\n   * @default `default`\n   */\n  dataProviderName?: string;\n} & SuccessErrorNotification<\n  GetListResponse<TData>,\n  TError,\n  Prettify<BaseListProps>\n> &\n  LiveModeProps &\n  UseLoadingOvertimeOptionsProps;\n\nexport type UseSelectReturnType<\n  TData extends BaseRecord = BaseRecord,\n  TError extends HttpError = HttpError,\n  TOption extends BaseOption = BaseOption,\n> = {\n  query: QueryObserverResult<GetListResponse<TData>, TError>;\n  defaultValueQuery: UseManyReturnType<TData, TError>;\n  onSearch: (value: string) => void;\n  options: TOption[];\n} & UseLoadingOvertimeReturnType;\n\n/**\n * `useSelect` hook is used to fetch data from the dataProvider and return the options for the select box.\n *\n * It uses `getList` method as query function from the dataProvider that is\n * passed to {@link https://refine.dev/docs/api-reference/core/components/refine-config/ `<Refine>`}.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/hooks/useSelect} for more details.\n *\n * @typeParam TQueryFnData - Result data returned by the query function. Extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}\n * @typeParam TError - Custom error object that extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#httperror `HttpError`}\n * @typeParam TData - Result data returned by the `select` function. Extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}. Defaults to `TQueryFnData`\n *\n */\n\nexport const useSelect = <\n  TQueryFnData extends BaseRecord = BaseRecord,\n  TError extends HttpError = HttpError,\n  TData extends BaseRecord = TQueryFnData,\n  TOption extends BaseOption = BaseOption,\n>(\n  props: UseSelectProps<TQueryFnData, TError, TData>,\n): UseSelectReturnType<TData, TError, TOption> => {\n  const [search, setSearch] = useState<CrudFilter[]>([]);\n  const [options, setOptions] = useState<TOption[]>([]);\n  const [selectedOptions, setSelectedOptions] = useState<TOption[]>([]);\n\n  const {\n    resource: resourceFromProps,\n    sorters,\n    filters = [],\n    optionLabel = \"title\",\n    optionValue = \"id\",\n    searchField = typeof optionLabel === \"string\" ? optionLabel : \"title\",\n    debounce: debounceValue = 300,\n    successNotification,\n    errorNotification,\n    defaultValueQueryOptions: defaultValueQueryOptionsFromProps,\n    queryOptions,\n    pagination,\n    liveMode,\n    defaultValue = [],\n    selectedOptionsOrder = \"in-place\",\n    onLiveEvent,\n    onSearch: onSearchFromProp,\n    liveParams,\n    meta,\n    dataProviderName,\n    overtimeOptions,\n  } = props;\n\n  const getOptionLabel = useCallback(\n    (item: TData) => {\n      if (typeof optionLabel === \"string\") {\n        return get(item, optionLabel);\n      }\n\n      return optionLabel(item);\n    },\n    [optionLabel],\n  );\n\n  const getOptionValue = useCallback(\n    (item: TData) => {\n      if (typeof optionValue === \"string\") {\n        return get(item, optionValue);\n      }\n\n      return optionValue(item);\n    },\n    [optionValue],\n  );\n\n  const { resource, identifier } = useResourceParams({\n    resource: resourceFromProps,\n  });\n\n  const getMeta = useMeta();\n\n  const combinedMeta = getMeta({\n    resource,\n    meta: meta,\n  });\n\n  const defaultValues = Array.isArray(defaultValue)\n    ? defaultValue\n    : [defaultValue];\n\n  const defaultValueQueryOptions =\n    defaultValueQueryOptionsFromProps ?? (queryOptions as any);\n\n  const defaultValueQueryOnSuccess = useCallback(\n    (data: GetManyResponse<TData>) => {\n      setSelectedOptions(\n        data.data.map(\n          (item) =>\n            ({\n              label: getOptionLabel(item),\n              value: getOptionValue(item),\n            }) as TOption,\n        ),\n      );\n    },\n    [optionLabel, optionValue],\n  );\n\n  const defaultQueryOnSuccess = useCallback(\n    (data: GetListResponse<TData>) => {\n      setOptions(\n        data.data.map(\n          (item) =>\n            ({\n              label: getOptionLabel(item),\n              value: getOptionValue(item),\n            }) as TOption,\n        ),\n      );\n    },\n    [optionLabel, optionValue],\n  );\n\n  const defaultValueQueryResult = useMany<TQueryFnData, TError, TData>({\n    resource: identifier ?? resource?.name ?? \"\",\n    ids: defaultValues,\n    queryOptions: {\n      ...defaultValueQueryOptions,\n      enabled:\n        defaultValues.length > 0 && (defaultValueQueryOptions?.enabled ?? true),\n    },\n    overtimeOptions: { enabled: false },\n    meta: combinedMeta,\n    liveMode: \"off\",\n    dataProviderName,\n  });\n\n  const queryResult = useList<TQueryFnData, TError, TData>({\n    resource: identifier,\n    sorters,\n    filters: filters.concat(search),\n    pagination: {\n      currentPage: pagination?.currentPage,\n      pageSize: pagination?.pageSize ?? 10,\n      mode: pagination?.mode,\n    },\n    queryOptions,\n    overtimeOptions: { enabled: false },\n    successNotification,\n    errorNotification,\n    meta: combinedMeta,\n    liveMode,\n    liveParams,\n    onLiveEvent,\n    dataProviderName,\n  });\n\n  const { elapsedTime } = useLoadingOvertime({\n    ...overtimeOptions,\n    isLoading:\n      queryResult.query.isFetching || defaultValueQueryResult.query.isFetching,\n  });\n\n  const combinedOptions = useMemo(\n    () =>\n      uniqBy(\n        selectedOptionsOrder === \"in-place\"\n          ? [...options, ...selectedOptions]\n          : [...selectedOptions, ...options],\n        \"value\",\n      ),\n    [options, selectedOptions],\n  );\n\n  /**\n   * To avoid any changes in the `onSearch` callback,\n   * We're storing `onSearchFromProp` in a ref and accessing it in the `onSearch` callback.\n   */\n  const onSearchFromPropRef = useRef(onSearchFromProp);\n\n  const onSearch = useMemo(() => {\n    return debounce((value: string) => {\n      if (onSearchFromPropRef.current) {\n        setSearch(onSearchFromPropRef.current(value));\n        return;\n      }\n\n      if (!value) {\n        setSearch([]);\n        return;\n      }\n\n      setSearch([\n        {\n          field: searchField,\n          operator: \"contains\",\n          value,\n        },\n      ]);\n    }, debounceValue);\n  }, [searchField, debounceValue]);\n\n  useEffect(() => {\n    onSearchFromPropRef.current = onSearchFromProp;\n  }, [onSearchFromProp]);\n\n  // default value query onSuccess\n  useEffect(() => {\n    const data = defaultValueQueryResult.query.data;\n    if (data && defaultValueQueryResult.query.isSuccess) {\n      defaultValueQueryOnSuccess(data);\n    }\n  }, [\n    defaultValueQueryResult.query.data,\n    defaultValueQueryResult.query.isSuccess,\n  ]);\n\n  // query onSuccess\n  useEffect(() => {\n    const data = queryResult.query.data;\n    if (data && queryResult.query.isSuccess) {\n      defaultQueryOnSuccess(data);\n    }\n  }, [queryResult.result.data, queryResult.query.isSuccess]);\n\n  return {\n    query: queryResult.query,\n    defaultValueQuery: defaultValueQueryResult,\n    options: combinedOptions,\n    onSearch,\n    overtime: { elapsedTime },\n  };\n};\n","import React, { useState, useEffect, useCallback } from \"react\";\n\nimport type {\n  QueryObserverResult,\n  UseQueryOptions,\n} from \"@tanstack/react-query\";\nimport differenceWith from \"lodash/differenceWith\";\nimport isEqual from \"lodash/isEqual\";\nimport warnOnce from \"warn-once\";\n\nimport {\n  parseTableParams,\n  setInitialFilters,\n  setInitialSorters,\n  unionFilters,\n  unionSorters,\n} from \"@definitions/table\";\nimport {\n  useGo,\n  useList,\n  useLiveMode,\n  useMeta,\n  useParsed,\n  useResourceParams,\n  useSyncWithLocation,\n} from \"@hooks\";\n\nimport type {\n  BaseRecord,\n  CrudFilter,\n  CrudSort,\n  GetListResponse,\n  HttpError,\n  MetaQuery,\n  Pagination,\n  Prettify,\n} from \"../../contexts/data/types\";\nimport type { LiveModeProps } from \"../../contexts/live/types\";\nimport type { SuccessErrorNotification } from \"../../contexts/notification/types\";\nimport type { BaseListProps } from \"../data/useList\";\nimport type { MakeOptional } from \"../../definitions/types/index\";\nimport type {\n  UseLoadingOvertimeOptionsProps,\n  UseLoadingOvertimeReturnType,\n} from \"../useLoadingOvertime\";\n\ntype SetFilterBehavior = \"merge\" | \"replace\";\n\nexport type useTableProps<TQueryFnData, TError, TData> = {\n  /**\n   * Resource name for API data interactions\n   * @default Resource name that it reads from route\n   */\n  resource?: string;\n  /**\n   * Configuration for pagination\n   */\n  pagination?: Pagination;\n  /**\n   * Sort configs\n   */\n  sorters?: {\n    /**\n     * Initial sorter state\n     */\n    initial?: CrudSort[];\n    /**\n     * Default and unchangeable sorter state\n     *  @default `[]`\n     */\n    permanent?: CrudSort[];\n    /**\n     * Whether to use server side sorting or not.\n     * @default \"server\"\n     */\n    mode?: \"server\" | \"off\";\n  };\n  /**\n   * Filter configs\n   */\n  filters?: {\n    /**\n     * Initial filter state\n     */\n    initial?: CrudFilter[];\n    /**\n     * Default and unchangeable filter state\n     *  @default `[]`\n     */\n    permanent?: CrudFilter[];\n    /**\n     * Default behavior of the `setFilters` function\n     * @default `\"merge\"`\n     */\n    defaultBehavior?: SetFilterBehavior;\n    /**\n     * Whether to use server side filter or not.\n     * @default \"server\"\n     */\n    mode?: \"server\" | \"off\";\n  };\n  /**\n   * Sortings, filters, page index and records shown per page are tracked by browser history\n   * @default Value set in [Refine](/docs/api-reference/core/components/refine-config/#syncwithlocation). If a custom resource is given, it will be `false`\n   */\n  syncWithLocation?: boolean;\n  /**\n   * react-query's [useQuery](https://tanstack.com/query/v5/docs/framework/react/reference/useQuery) options\n   */\n  queryOptions?: MakeOptional<\n    UseQueryOptions<\n      GetListResponse<TQueryFnData>,\n      TError,\n      GetListResponse<TData>\n    >,\n    \"queryKey\" | \"queryFn\"\n  >;\n  /**\n   * Metadata query for dataProvider\n   */\n  meta?: MetaQuery;\n  /**\n   * If there is more than one `dataProvider`, you should use the `dataProviderName` that you will use.\n   */\n  dataProviderName?: string;\n} & SuccessErrorNotification<\n  GetListResponse<TData>,\n  TError,\n  Prettify<BaseListProps>\n> &\n  LiveModeProps &\n  UseLoadingOvertimeOptionsProps;\n\ntype ReactSetState<T> = React.Dispatch<React.SetStateAction<T>>;\n\ntype SyncWithLocationParams = {\n  pagination: { currentPage?: number; pageSize?: number };\n  sorters: CrudSort[];\n  filters: CrudFilter[];\n};\n\nexport type useTableReturnType<\n  TData extends BaseRecord = BaseRecord,\n  TError extends HttpError = HttpError,\n> = {\n  tableQuery: QueryObserverResult<GetListResponse<TData>, TError>;\n  sorters: CrudSort[];\n  setSorters: (sorter: CrudSort[]) => void;\n  filters: CrudFilter[];\n  setFilters: ((filters: CrudFilter[], behavior?: SetFilterBehavior) => void) &\n    ((setter: (prevFilters: CrudFilter[]) => CrudFilter[]) => void);\n  createLinkForSyncWithLocation: (params: SyncWithLocationParams) => string;\n  currentPage: number;\n  setCurrentPage: ReactSetState<useTableReturnType[\"currentPage\"]>;\n  pageSize: number;\n  setPageSize: ReactSetState<useTableReturnType[\"pageSize\"]>;\n  pageCount: number;\n  result: {\n    data: TData[];\n    total: number | undefined;\n    [key: string]: any;\n  };\n} & UseLoadingOvertimeReturnType;\n\n/**\n * By using useTable, you are able to get properties that are compatible with\n * Ant Design {@link https://ant.design/components/table/ `<Table>`} component.\n * All features such as sorting, filtering and pagination comes as out of box.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/hooks/useTable} for more details.\n *\n * @typeParam TQueryFnData - Result data returned by the query function. Extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}\n * @typeParam TError - Custom error object that extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#httperror `HttpError`}\n * @typeParam TData - Result data returned by the `select` function. Extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}. Defaults to `TQueryFnData`\n *\n */\n\nconst defaultPermanentFilter: CrudFilter[] = [];\nconst defaultPermanentSorter: CrudSort[] = [];\nconst EMPTY_ARRAY = Object.freeze([]) as [];\n\nexport function useTable<\n  TQueryFnData extends BaseRecord = BaseRecord,\n  TError extends HttpError = HttpError,\n  TData extends BaseRecord = TQueryFnData,\n>({\n  pagination,\n  filters: filtersFromProp,\n  sorters: sortersFromProp,\n  syncWithLocation: syncWithLocationProp,\n  resource: resourceFromProp,\n  successNotification,\n  errorNotification,\n  queryOptions,\n  liveMode: liveModeFromProp,\n  onLiveEvent,\n  liveParams,\n  meta,\n  dataProviderName,\n  overtimeOptions,\n}: useTableProps<TQueryFnData, TError, TData> = {}): useTableReturnType<\n  TData,\n  TError\n> {\n  const { syncWithLocation: syncWithLocationContext } = useSyncWithLocation();\n\n  const syncWithLocation = syncWithLocationProp ?? syncWithLocationContext;\n\n  const liveMode = useLiveMode(liveModeFromProp);\n\n  const getMeta = useMeta();\n  const parsedParams = useParsed();\n\n  const isServerSideFilteringEnabled =\n    (filtersFromProp?.mode || \"server\") === \"server\";\n  const isServerSideSortingEnabled =\n    (sortersFromProp?.mode || \"server\") === \"server\";\n  const isPaginationEnabled = pagination?.mode !== \"off\";\n  const prefferedCurrentPage = pagination?.currentPage;\n  const prefferedPageSize = pagination?.pageSize;\n  const preferredMeta = meta;\n\n  // Parse table params from URL if available\n  const { parsedCurrentPage, parsedPageSize, parsedSorter, parsedFilters } =\n    parseTableParams(parsedParams.params?.search ?? \"?\");\n\n  const preferredInitialFilters = filtersFromProp?.initial;\n  const preferredPermanentFilters =\n    filtersFromProp?.permanent ?? defaultPermanentFilter;\n\n  const preferredInitialSorters = sortersFromProp?.initial;\n  const preferredPermanentSorters =\n    sortersFromProp?.permanent ?? defaultPermanentSorter;\n\n  const prefferedFilterBehavior = filtersFromProp?.defaultBehavior ?? \"merge\";\n\n  let defaultCurrentPage: number;\n  let defaultPageSize: number;\n  let defaultSorter: CrudSort[] | undefined;\n  let defaultFilter: CrudFilter[] | undefined;\n\n  if (syncWithLocation) {\n    defaultCurrentPage =\n      parsedParams?.params?.currentPage ||\n      parsedCurrentPage ||\n      prefferedCurrentPage ||\n      1;\n    defaultPageSize =\n      parsedParams?.params?.pageSize ||\n      parsedPageSize ||\n      prefferedPageSize ||\n      10;\n    defaultSorter =\n      parsedParams?.params?.sorters ||\n      (parsedSorter.length ? parsedSorter : preferredInitialSorters);\n    defaultFilter =\n      parsedParams?.params?.filters ||\n      (parsedFilters.length ? parsedFilters : preferredInitialFilters);\n  } else {\n    defaultCurrentPage = prefferedCurrentPage || 1;\n    defaultPageSize = prefferedPageSize || 10;\n    defaultSorter = preferredInitialSorters;\n    defaultFilter = preferredInitialFilters;\n  }\n\n  const go = useGo();\n\n  const { resource, identifier } = useResourceParams({\n    resource: resourceFromProp,\n  });\n\n  const combinedMeta = getMeta({\n    resource,\n    meta: preferredMeta,\n  });\n\n  React.useEffect(() => {\n    warnOnce(\n      typeof identifier === \"undefined\",\n      \"useTable: `resource` is not defined.\",\n    );\n  }, [identifier]);\n\n  const [sorters, setSorters] = useState<CrudSort[]>(\n    setInitialSorters(preferredPermanentSorters, defaultSorter ?? []),\n  );\n  const [filters, setFilters] = useState<CrudFilter[]>(\n    setInitialFilters(preferredPermanentFilters, defaultFilter ?? []),\n  );\n  const [currentPage, setCurrentPage] = useState<number>(defaultCurrentPage);\n  const [pageSize, setPageSize] = useState<number>(defaultPageSize);\n\n  const getCurrentQueryParams = (): object => {\n    // We get QueryString parameters that are uncontrolled by refine.\n    const { sorters, filters, pageSize, current, ...rest } =\n      parsedParams?.params ?? {};\n\n    return rest;\n  };\n\n  const createLinkForSyncWithLocation = ({\n    pagination: { currentPage, pageSize },\n    sorters,\n    filters,\n  }: SyncWithLocationParams) => {\n    return (\n      go({\n        type: \"path\",\n        options: {\n          keepHash: true,\n          keepQuery: true,\n        },\n        query: {\n          ...(isPaginationEnabled ? { currentPage, pageSize } : {}),\n          sorters,\n          filters,\n          ...getCurrentQueryParams(),\n        },\n      }) ?? \"\"\n    );\n  };\n\n  useEffect(() => {\n    if (parsedParams?.params?.search === \"\") {\n      setCurrentPage(defaultCurrentPage);\n      setPageSize(defaultPageSize);\n      setSorters(\n        setInitialSorters(preferredPermanentSorters, defaultSorter ?? []),\n      );\n      setFilters(\n        setInitialFilters(preferredPermanentFilters, defaultFilter ?? []),\n      );\n    }\n  }, [parsedParams?.params?.search]);\n\n  useEffect(() => {\n    if (syncWithLocation) {\n      go({\n        type: \"replace\",\n        options: {\n          keepQuery: true,\n        },\n        query: {\n          ...(isPaginationEnabled ? { pageSize, currentPage } : {}),\n          sorters: differenceWith(sorters, preferredPermanentSorters, isEqual),\n          filters: differenceWith(filters, preferredPermanentFilters, isEqual),\n        },\n      });\n    }\n  }, [syncWithLocation, currentPage, pageSize, sorters, filters]);\n\n  const queryResult = useList<TQueryFnData, TError, TData>({\n    resource: identifier,\n    pagination: { currentPage: currentPage, pageSize, mode: pagination?.mode },\n    filters: isServerSideFilteringEnabled\n      ? unionFilters(preferredPermanentFilters, filters)\n      : undefined,\n    sorters: isServerSideSortingEnabled\n      ? unionSorters(preferredPermanentSorters, sorters)\n      : undefined,\n    queryOptions,\n    overtimeOptions,\n    successNotification,\n    errorNotification,\n    meta: combinedMeta,\n    liveMode,\n    liveParams,\n    onLiveEvent,\n    dataProviderName,\n  });\n\n  const setFiltersAsMerge = useCallback(\n    (newFilters: CrudFilter[]) => {\n      setFilters((prevFilters) =>\n        unionFilters(preferredPermanentFilters, newFilters, prevFilters),\n      );\n    },\n    [preferredPermanentFilters],\n  );\n\n  const setFiltersAsReplace = useCallback(\n    (newFilters: CrudFilter[]) => {\n      setFilters(unionFilters(preferredPermanentFilters, newFilters));\n    },\n    [preferredPermanentFilters],\n  );\n\n  const setFiltersWithSetter = useCallback(\n    (setter: (prevFilters: CrudFilter[]) => CrudFilter[]) => {\n      setFilters((prev) =>\n        unionFilters(preferredPermanentFilters, setter(prev)),\n      );\n    },\n    [preferredPermanentFilters],\n  );\n\n  const setFiltersFn: useTableReturnType<TQueryFnData>[\"setFilters\"] =\n    useCallback(\n      (\n        setterOrFilters,\n        behavior: SetFilterBehavior = prefferedFilterBehavior,\n      ) => {\n        if (typeof setterOrFilters === \"function\") {\n          setFiltersWithSetter(setterOrFilters);\n        } else {\n          if (behavior === \"replace\") {\n            setFiltersAsReplace(setterOrFilters);\n          } else {\n            setFiltersAsMerge(setterOrFilters);\n          }\n        }\n      },\n      [setFiltersWithSetter, setFiltersAsReplace, setFiltersAsMerge],\n    );\n\n  const setSortWithUnion = useCallback(\n    (newSorter: CrudSort[]) => {\n      setSorters(() => unionSorters(preferredPermanentSorters, newSorter));\n    },\n    [preferredPermanentSorters],\n  );\n\n  return {\n    tableQuery: queryResult.query,\n    sorters,\n    setSorters: setSortWithUnion,\n    filters,\n    setFilters: setFiltersFn,\n    currentPage,\n    setCurrentPage,\n    pageSize,\n    setPageSize,\n    pageCount: pageSize\n      ? Math.ceil((queryResult.result?.total ?? 0) / pageSize)\n      : 1,\n    createLinkForSyncWithLocation,\n    overtime: queryResult.overtime,\n    result: {\n      ...queryResult.result,\n      data: queryResult.result?.data || EMPTY_ARRAY,\n      total: queryResult.result?.total,\n    },\n  };\n}\n","import { useContext } from \"react\";\n\nimport { getXRay } from \"@refinedev/devtools-internal\";\nimport {\n  type UseMutationOptions,\n  type UseMutationResult,\n  useMutation,\n  useQueryClient,\n} from \"@tanstack/react-query\";\n\nimport { AuditLogContext } from \"@contexts/auditLog\";\nimport { ResourceContext } from \"@contexts/resource\";\nimport { hasPermission } from \"@definitions/helpers\";\nimport { pickResource } from \"@definitions/helpers/pick-resource\";\nimport { useGetIdentity } from \"@hooks/auth\";\nimport { useKeys } from \"@hooks/useKeys\";\n\nimport type { LogParams } from \"../../../contexts/auditLog/types\";\nimport type { BaseKey } from \"../../../contexts/data/types\";\n\ntype LogRenameData =\n  | {\n      resource?: string;\n    }\n  | undefined;\n\nexport type UseLogReturnType<TLogData, TLogRenameData> = {\n  log: UseMutationResult<TLogData, Error, LogParams>;\n  rename: UseMutationResult<\n    TLogRenameData,\n    Error,\n    {\n      id: BaseKey;\n      name: string;\n    }\n  >;\n};\n\nexport type UseLogMutationProps<\n  TLogData,\n  TLogRenameData extends LogRenameData = LogRenameData,\n> = {\n  logMutationOptions?: Omit<\n    UseMutationOptions<TLogData, Error, LogParams, unknown>,\n    \"mutationFn\"\n  >;\n  renameMutationOptions?: Omit<\n    UseMutationOptions<\n      TLogRenameData,\n      Error,\n      { id: BaseKey; name: string },\n      unknown\n    >,\n    \"mutationFn\" | \"onSuccess\"\n  >;\n};\n\n/**\n * useLog is used to `create` a new and `rename` the existing audit log.\n * @see {@link https://refine.dev/docs/api-reference/core/hooks/audit-log/useLog} for more details.\n */\n\nexport const useLog = <\n  TLogData,\n  TLogRenameData extends LogRenameData = LogRenameData,\n>({\n  logMutationOptions,\n  renameMutationOptions,\n}: UseLogMutationProps<TLogData, TLogRenameData> = {}): UseLogReturnType<\n  TLogData,\n  TLogRenameData\n> => {\n  const queryClient = useQueryClient();\n  const auditLogContext = useContext(AuditLogContext);\n  const { keys } = useKeys();\n\n  const { resources } = useContext(ResourceContext);\n\n  const {\n    data: identityData,\n    refetch,\n    isLoading,\n  } = useGetIdentity({\n    queryOptions: {\n      enabled: !!auditLogContext?.create,\n    },\n  });\n\n  const log = useMutation<TLogData, Error, LogParams, unknown>({\n    mutationFn: async (params: LogParams) => {\n      const resource = pickResource(params.resource, resources);\n      const logPermissions = resource?.meta?.audit;\n\n      if (logPermissions) {\n        if (!hasPermission(logPermissions, params.action)) {\n          return;\n        }\n      }\n\n      let authorData;\n      if (isLoading && !!auditLogContext?.create) {\n        authorData = await refetch();\n      }\n\n      return await auditLogContext.create?.({\n        ...params,\n        author: identityData ?? authorData?.data,\n      });\n    },\n    mutationKey: keys().audit().action(\"log\").get(),\n    ...logMutationOptions,\n    meta: {\n      ...logMutationOptions?.meta,\n      ...getXRay(\"useLog\"),\n    },\n  });\n\n  const rename = useMutation<\n    TLogRenameData,\n    Error,\n    { id: BaseKey; name: string },\n    unknown\n  >({\n    mutationFn: async (params: { id: BaseKey; name: string }) => {\n      return await auditLogContext.update?.(params);\n    },\n    onSuccess: (data: TLogRenameData) => {\n      if (data?.resource) {\n        queryClient.invalidateQueries({\n          queryKey: keys()\n            .audit()\n            .resource(data?.resource ?? \"\")\n            .action(\"list\")\n            .get(),\n        });\n      }\n    },\n    mutationKey: keys().audit().action(\"rename\").get(),\n    ...renameMutationOptions,\n    meta: {\n      ...renameMutationOptions?.meta,\n      ...getXRay(\"useLog\"),\n    },\n  });\n\n  return { log, rename };\n};\n","import React, { type PropsWithChildren } from \"react\";\n\nimport type { IAuditLogContext } from \"./types\";\n\nexport const AuditLogContext = React.createContext<IAuditLogContext>({});\n\nexport const AuditLogContextProvider: React.FC<\n  PropsWithChildren<IAuditLogContext>\n> = ({ create, get, update, children }) => {\n  return (\n    <AuditLogContext.Provider value={{ create, get, update }}>\n      {children}\n    </AuditLogContext.Provider>\n  );\n};\n","import { useContext } from \"react\";\n\nimport { getXRay } from \"@refinedev/devtools-internal\";\nimport {\n  type UseQueryOptions,\n  type UseQueryResult,\n  useQuery,\n} from \"@tanstack/react-query\";\n\nimport { AuditLogContext } from \"@contexts/auditLog\";\nimport { useKeys } from \"@hooks/useKeys\";\n\nimport type { HttpError } from \"../../../contexts/data/types\";\nimport type { MakeOptional } from \"../../../definitions/types\";\n\nexport type UseLogProps<TQueryFnData, TError, TData> = {\n  resource: string;\n  action?: string;\n  meta?: Record<number | string, any>;\n  author?: Record<number | string, any>;\n  queryOptions?: MakeOptional<\n    UseQueryOptions<TQueryFnData, TError, TData>,\n    \"queryKey\" | \"queryFn\"\n  >;\n};\n\n/**\n * useLogList is used to get and filter audit logs.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/hooks/audit-log/useLogList} for more details.\n *\n * @typeParam TQueryFnData - Result data returned by the query function.\n * @typeParam TError - Custom error object that extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#httperror `HttpError`}\n * @typeParam TData - Result data returned by the `select` function. Defaults to `TQueryFnData`\n *\n */\nexport const useLogList = <\n  TQueryFnData = any,\n  TError extends HttpError = HttpError,\n  TData = TQueryFnData,\n>({\n  resource,\n  action,\n  meta,\n  author,\n  queryOptions,\n}: UseLogProps<TQueryFnData, TError, TData>): UseQueryResult<TData, TError> => {\n  const { get } = useContext(AuditLogContext);\n  const { keys } = useKeys();\n\n  const queryResponse = useQuery<TQueryFnData, TError, TData>({\n    queryKey: keys()\n      .audit()\n      .resource(resource)\n      .action(\"list\")\n      .params(meta)\n      .get(),\n    queryFn: () =>\n      get?.({\n        resource,\n        action,\n        author,\n        meta,\n      }) ?? Promise.resolve([]),\n    enabled: typeof get !== \"undefined\",\n    ...queryOptions,\n    retry: false,\n    meta: {\n      ...queryOptions?.meta,\n      ...getXRay(\"useLogList\", resource),\n    },\n  });\n\n  return queryResponse;\n};\n","import React, { useContext } from \"react\";\n\nimport warnOnce from \"warn-once\";\n\nimport { I18nContext } from \"@contexts/i18n\";\nimport { getActionRoutesFromResource } from \"@definitions/helpers/router\";\nimport { composeRoute } from \"@definitions/helpers/router/compose-route\";\nimport { useRefineContext, useResourceParams, useTranslate } from \"@hooks\";\nimport { useParsed } from \"@hooks/router/use-parsed\";\n\nimport type { IResourceItem } from \"../../contexts/resource/types\";\nimport { pickResource } from \"../../definitions/helpers/pick-resource/index\";\n\nexport type BreadcrumbsType = {\n  label: string;\n  href?: string;\n  icon?: React.ReactNode;\n};\n\ntype UseBreadcrumbReturnType = {\n  breadcrumbs: BreadcrumbsType[];\n};\n\ntype UseBreadcrumbProps = {\n  /**\n   * Additional params to be used in the route generation process.\n   */\n  meta?: Record<string, string | number>;\n};\n\nexport const useBreadcrumb = ({\n  meta: metaFromProps = {},\n}: UseBreadcrumbProps = {}): UseBreadcrumbReturnType => {\n  const { i18nProvider } = useContext(I18nContext);\n  const parsed = useParsed();\n  const translate = useTranslate();\n  const { action, resource, resources } = useResourceParams();\n  const {\n    options: { textTransformers },\n  } = useRefineContext();\n\n  const breadcrumbs: BreadcrumbsType[] = [];\n\n  if (!resource?.name) {\n    return { breadcrumbs };\n  }\n\n  const addBreadcrumb = (parentName: string | IResourceItem) => {\n    const parentResource =\n      typeof parentName === \"string\"\n        ? pickResource(parentName, resources) ?? {\n            name: parentName,\n          }\n        : parentName;\n\n    if (parentResource) {\n      const grandParentName = parentResource?.meta?.parent;\n      if (grandParentName) {\n        addBreadcrumb(grandParentName);\n      }\n      const listActionOfResource = getActionRoutesFromResource(\n        parentResource,\n        resources,\n      ).find((r) => r.action === \"list\");\n\n      const hrefRaw = listActionOfResource?.resource?.list\n        ? listActionOfResource?.route\n        : undefined;\n\n      const href = hrefRaw\n        ? composeRoute(hrefRaw, parentResource?.meta, parsed, metaFromProps)\n        : undefined;\n\n      breadcrumbs.push({\n        label:\n          parentResource.meta?.label ??\n          translate(\n            `${parentResource.name}.${parentResource.name}`,\n            textTransformers.humanize(parentResource.name),\n          ),\n        href: href,\n        icon: parentResource.meta?.icon,\n      });\n    }\n  };\n\n  addBreadcrumb(resource);\n\n  if (action && action !== \"list\") {\n    const key = `actions.${action}`;\n    const actionLabel = translate(key);\n    if (typeof i18nProvider !== \"undefined\" && actionLabel === key) {\n      warnOnce(\n        true,\n        `[useBreadcrumb]: Breadcrumb missing translate key for the \"${action}\" action. Please add \"actions.${action}\" key to your translation file.\\nFor more information, see https://refine.dev/docs/api-reference/core/hooks/useBreadcrumb/#i18n-support`,\n      );\n      breadcrumbs.push({\n        label: translate(\n          `buttons.${action}`,\n          textTransformers.humanize(action),\n        ),\n      });\n    } else {\n      breadcrumbs.push({\n        label: translate(key, textTransformers.humanize(action)),\n      });\n    }\n  }\n\n  return {\n    breadcrumbs,\n  };\n};\n","import React from \"react\";\n\nimport { useUserFriendlyName } from \"@definitions\";\nimport { getParentResource } from \"@definitions/helpers/router\";\n\nimport { useParsed, useResourceParams, useTranslate } from \"..\";\nimport { createResourceKey } from \"../../definitions/helpers/menu/create-resource-key\";\nimport {\n  type FlatTreeItem,\n  createTree,\n} from \"../../definitions/helpers/menu/create-tree\";\nimport { useGetToPath } from \"../router/use-get-to-path/index\";\n\ntype UseMenuReturnType = {\n  defaultOpenKeys: string[];\n  selectedKey: string;\n  menuItems: TreeMenuItem[];\n};\n\nexport type UseMenuProps = {\n  meta?: Record<string, any>;\n  hideOnMissingParameter?: boolean;\n};\n\nexport type TreeMenuItem = Omit<\n  FlatTreeItem,\n  \"label\" | \"route\" | \"children\"\n> & {\n  route?: string;\n  icon?: React.ReactNode;\n  label?: string;\n  children: TreeMenuItem[];\n};\n\nconst getCleanPath = (pathname: string) => {\n  return pathname\n    .split(\"?\")[0]\n    .split(\"#\")[0]\n    .replace(/(.+)(\\/$)/, \"$1\");\n};\n\n/**\n * `useMenu` is used to get menu items of the default sidebar.\n * These items include a link to dashboard page (if it exists) and links to the user defined resources\n * (passed as children to {@link https://refine.dev/docs/core/components/refine-config `<Refine>`}).\n * This hook can also be used to build custom menus, which is also used by default sidebar to show menu items.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/hooks/ui/useMenu} for more details.\n */\nexport const useMenu = (\n  { meta, hideOnMissingParameter = true }: UseMenuProps = {\n    hideOnMissingParameter: true,\n  },\n): UseMenuReturnType => {\n  const translate = useTranslate();\n\n  const getToPath = useGetToPath();\n  const { resource, resources } = useResourceParams();\n  const { pathname } = useParsed();\n  const getFriendlyName = useUserFriendlyName();\n\n  const cleanPathname = pathname ? getCleanPath(pathname) : undefined;\n\n  const cleanRoute = `/${(cleanPathname ?? \"\").replace(/^\\//, \"\")}`;\n\n  const selectedKey = resource\n    ? createResourceKey(resource, resources)\n    : cleanRoute ?? \"\";\n\n  const defaultOpenKeys = React.useMemo(() => {\n    if (!resource) return [];\n    let parent = getParentResource(resource, resources);\n    const keys = [createResourceKey(resource, resources)];\n    while (parent) {\n      keys.push(createResourceKey(parent, resources));\n      parent = getParentResource(parent, resources);\n    }\n    return keys;\n  }, []);\n\n  const prepareItem = React.useCallback(\n    (item: FlatTreeItem): TreeMenuItem | undefined => {\n      if (item?.meta?.hide) {\n        return undefined;\n      }\n      if (!item?.list && item.children.length === 0) return undefined;\n\n      const composed = item.list\n        ? getToPath({\n            resource: item,\n            action: \"list\",\n            meta,\n          })\n        : undefined;\n\n      if (\n        hideOnMissingParameter &&\n        composed &&\n        composed.match(/(\\/|^):(.+?)(\\/|$){1}/)\n      )\n        return undefined;\n\n      return {\n        ...item,\n        route: composed,\n        icon: item.meta?.icon,\n        label:\n          item?.meta?.label ??\n          translate(\n            `${item.name}.${item.name}`,\n            getFriendlyName(item.name, \"plural\"),\n          ),\n      };\n    },\n    [meta, getToPath, translate, hideOnMissingParameter],\n  );\n\n  const treeItems = React.useMemo(() => {\n    const treeMenuItems = createTree(resources);\n\n    // add paths to items and their nodes recursively\n    const prepare = (items: TreeMenuItem[]): TreeMenuItem[] => {\n      return items.flatMap((item) => {\n        const preparedNodes = prepare(item.children);\n        const newItem = prepareItem({\n          ...item,\n          children: preparedNodes,\n        });\n\n        if (!newItem) return [];\n\n        return [newItem];\n      });\n    };\n\n    return prepare(treeMenuItems);\n  }, [resources, prepareItem]);\n\n  return {\n    defaultOpenKeys,\n    selectedKey,\n    menuItems: treeItems,\n  };\n};\n","import type { IResourceItem } from \"../../../contexts/resource/types\";\nimport {\n  getParentResource,\n  removeLeadingTrailingSlashes,\n} from \"../../helpers/router\";\n\nexport const createResourceKey = (\n  resource: IResourceItem,\n  resources: IResourceItem[],\n) => {\n  const parents: IResourceItem[] = [];\n\n  let currentParentResource = getParentResource(resource, resources);\n  while (currentParentResource) {\n    parents.push(currentParentResource);\n    currentParentResource = getParentResource(currentParentResource, resources);\n  }\n  parents.reverse();\n\n  const key = [...parents, resource]\n    .map((r) => removeLeadingTrailingSlashes(r.identifier ?? r.name))\n    .join(\"/\");\n\n  return `/${key.replace(/^\\//, \"\")}`;\n};\n","import type { IResourceItem } from \"../../../contexts/resource/types\";\nimport { getParentResource } from \"../router\";\nimport { createResourceKey } from \"./create-resource-key\";\n\nexport type Tree = {\n  item: IResourceItem;\n  children: { [key: string]: Tree };\n};\n\nexport type FlatTreeItem = IResourceItem & {\n  key: string;\n  children: FlatTreeItem[];\n};\n\nexport const createTree = (resources: IResourceItem[]): FlatTreeItem[] => {\n  const root: Tree = {\n    item: {\n      name: \"__root__\",\n    },\n    children: {},\n  };\n\n  resources.forEach((resource) => {\n    const parents: IResourceItem[] = [];\n\n    let currentParent = getParentResource(resource, resources);\n    while (currentParent) {\n      parents.push(currentParent);\n      currentParent = getParentResource(currentParent, resources);\n    }\n    parents.reverse();\n\n    let currentTree = root;\n\n    parents.forEach((parent) => {\n      const key = parent.identifier ?? parent.name;\n\n      if (!currentTree.children[key]) {\n        currentTree.children[key] = {\n          item: parent,\n          children: {},\n        };\n      }\n      currentTree = currentTree.children[key];\n    });\n\n    const key = resource.identifier ?? resource.name;\n\n    if (!currentTree.children[key]) {\n      currentTree.children[key] = {\n        item: resource,\n        children: {},\n      };\n    }\n  });\n\n  const flatten = (tree: Tree): FlatTreeItem[] => {\n    const items: FlatTreeItem[] = [];\n\n    Object.keys(tree.children).forEach((key) => {\n      const itemKey = createResourceKey(tree.children[key].item, resources);\n      const item: FlatTreeItem = {\n        ...tree.children[key].item,\n        key: itemKey,\n        children: flatten(tree.children[key]),\n      };\n      items.push(item);\n    });\n\n    return items;\n  };\n\n  return flatten(root);\n};\n","import React, {\n  type ReactNode,\n  createContext,\n  useContext,\n  useMemo,\n} from \"react\";\n\ntype MetaContextValue = Record<string, any>;\n\nexport const MetaContext = createContext<MetaContextValue>({});\n\n/**\n * Is used to provide meta data to the children components.\n * @internal\n */\nexport const MetaContextProvider = ({\n  children,\n  value,\n}: { children: ReactNode; value: MetaContextValue }) => {\n  const currentValue = useMetaContext();\n\n  const metaContext = useMemo(() => {\n    return {\n      ...currentValue,\n      ...value,\n    };\n  }, [currentValue, value]);\n\n  return (\n    <MetaContext.Provider value={metaContext}>{children}</MetaContext.Provider>\n  );\n};\n\n/**\n * @internal\n * @returns The MetaContext value.\n */\nexport const useMetaContext = () => {\n  const context = useContext(MetaContext);\n  if (!context) {\n    throw new Error(\"useMetaContext must be used within a MetaContextProvider\");\n  }\n\n  return useContext(MetaContext);\n};\n","import { useMetaContext } from \"@contexts/metaContext\";\nimport { sanitizeResource } from \"@definitions/helpers/sanitize-resource\";\nimport { useParsed } from \"@hooks/router\";\n\nimport type { MetaQuery } from \"../../contexts/data/types\";\nimport type { IResourceItem } from \"../../contexts/resource/types\";\n\n/**\n * Hook that returns a function to get meta.\n * The meta is a combination of the resource meta, hook meta, query params and metaContext value.\n * @internal\n */\nexport const useMeta = () => {\n  const { params } = useParsed();\n\n  const metaContext = useMetaContext();\n\n  const getMetaFn = ({\n    resource,\n    meta: metaFromProp,\n  }: {\n    resource?: IResourceItem;\n    meta?: MetaQuery;\n  } = {}) => {\n    const { meta } = sanitizeResource(resource) ?? { meta: {} };\n\n    // this fields came from the query params and should be removed from the meta because they are not part of the meta.\n    const {\n      filters: _filters,\n      sorters: _sorters,\n      currentPage: _currentPage,\n      pageSize: _pageSize,\n      ...additionalParams\n    } = params ?? {};\n\n    const result: Record<string, unknown> = {\n      ...meta,\n      ...additionalParams,\n      ...metaFromProp,\n    };\n\n    // when MultiTenancyProvider from \"@refinedev-ee/multi-tenancy\" is provided, we need to add tenantId to the meta\n    if (metaContext?.tenantId) {\n      result[\"tenantId\"] = metaContext.tenantId;\n    }\n\n    return result;\n  };\n\n  return getMetaFn;\n};\n","import { RefineContext } from \"@contexts/refine\";\nimport React from \"react\";\n\nexport const useRefineOptions = () => {\n  const { options } = React.useContext(RefineContext);\n\n  return options;\n};\n","import { useRefineOptions } from \"../../use-refine-options\";\nimport { useTranslate } from \"../../i18n\";\n\nexport type ActionableButtonProps = {\n  type: \"save\" | \"export\" | \"import\";\n};\n\nexport type ActionableButtonValues = {\n  label: string;\n};\n\nexport function useActionableButton({\n  type,\n}: ActionableButtonProps): ActionableButtonValues {\n  const translate = useTranslate();\n  const {\n    textTransformers: { humanize },\n  } = useRefineOptions();\n\n  const key = `buttons.${type}`;\n  const fallback = humanize(type);\n\n  const label = translate(key, fallback);\n\n  return { label };\n}\n","import React from \"react\";\n\nimport { useUserFriendlyName } from \"../../../definitions/helpers/useUserFriendlyName\";\nimport { useResourceParams } from \"../../use-resource-params\";\nimport { useRefineOptions } from \"../../use-refine-options\";\nimport { useButtonCanAccess } from \"../button-can-access\";\nimport { useNavigation } from \"../../navigation\";\nimport { useTranslate } from \"../../i18n\";\nimport { useLink } from \"../../router\";\n\nimport type { BaseKey } from \"../../../contexts/data/types\";\nimport type { Action } from \"../../../contexts/router/types\";\nimport type { CanReturnType } from \"../../../contexts/accessControl/types\";\n\nexport type NavigationButtonProps = {\n  action: Action;\n  id?: BaseKey;\n  resource?: string;\n  meta?: Record<string, unknown>;\n  accessControl?: {\n    enabled?: boolean;\n    hideIfUnauthorized?: boolean;\n  };\n};\n\nexport type NavigationButtonValues = {\n  to: string;\n  label: string;\n  disabled: boolean;\n  title: string;\n  hidden: boolean;\n  canAccess: CanReturnType | undefined;\n  LinkComponent: React.ComponentType<\n    React.PropsWithChildren<{\n      [prop: string]: any;\n      to: string;\n    }>\n  >;\n};\n\nexport function useNavigationButton(\n  props: NavigationButtonProps,\n): NavigationButtonValues {\n  const navigation = useNavigation();\n  const Link = useLink();\n  const translate = useTranslate();\n  const getUserFriendlyName = useUserFriendlyName();\n  const {\n    textTransformers: { humanize },\n  } = useRefineOptions();\n\n  const { id, resource, identifier } = useResourceParams({\n    resource: props.resource,\n    id: props.action === \"create\" ? undefined : props.id,\n  });\n\n  const { canAccess, title, hidden, disabled } = useButtonCanAccess({\n    action: props.action,\n    accessControl: props.accessControl,\n    meta: props.meta,\n    id,\n    resource,\n  });\n\n  const LinkComponent = Link;\n\n  const to = React.useMemo(() => {\n    if (!resource) return \"\";\n    switch (props.action) {\n      case \"create\":\n      case \"list\":\n        return navigation[`${props.action}Url`](resource, props.meta);\n      default:\n        if (!id) return \"\";\n        return navigation[`${props.action}Url`](resource, id, props.meta);\n    }\n  }, [resource, id, props.meta, navigation[`${props.action}Url`]]);\n\n  const label =\n    props.action === \"list\"\n      ? translate(\n          `${identifier ?? props.resource}.titles.list`,\n          getUserFriendlyName(\n            resource?.meta?.label ?? identifier ?? props.resource,\n            \"plural\",\n          ),\n        )\n      : translate(`buttons.${props.action}`, humanize(props.action));\n\n  return {\n    to,\n    label,\n    title,\n    disabled,\n    hidden,\n    canAccess,\n    LinkComponent,\n  };\n}\n","import React from \"react\";\n\nimport { AccessControlContext } from \"../../../contexts/accessControl\";\nimport { useCan } from \"../../accessControl\";\nimport { useTranslate } from \"../../i18n\";\n\nimport type { CanReturnType } from \"../../../contexts/accessControl/types\";\nimport type { IResourceItem } from \"../../../contexts/resource/types\";\nimport type { Action } from \"../../../contexts/router/types\";\nimport type { BaseKey } from \"../../../contexts/data/types\";\n\ntype ButtonCanAccessProps = {\n  action: Action | \"delete\";\n  resource?: IResourceItem;\n  id?: BaseKey;\n  accessControl?: {\n    enabled?: boolean;\n    hideIfUnauthorized?: boolean;\n  };\n  meta?: Record<string, unknown>;\n};\n\ntype ButtonCanAccessValues = {\n  title: string;\n  hidden: boolean;\n  disabled: boolean;\n  canAccess: CanReturnType | undefined;\n};\n\nexport const useButtonCanAccess = (\n  props: ButtonCanAccessProps,\n): ButtonCanAccessValues => {\n  const translate = useTranslate();\n  const accessControlContext = React.useContext(AccessControlContext);\n\n  const accessControlEnabled =\n    props.accessControl?.enabled ??\n    accessControlContext.options.buttons.enableAccessControl;\n\n  const hideIfUnauthorized =\n    props.accessControl?.hideIfUnauthorized ??\n    accessControlContext.options.buttons.hideIfUnauthorized;\n\n  const { data: canAccess } = useCan({\n    resource: props.resource?.name,\n    action: props.action === \"clone\" ? \"create\" : props.action,\n    params: { meta: props.meta, id: props.id, resource: props.resource },\n    queryOptions: {\n      enabled: accessControlEnabled,\n    },\n  });\n\n  const title = React.useMemo(() => {\n    if (canAccess?.can) return \"\";\n    if (canAccess?.reason) return canAccess.reason;\n\n    return translate(\n      \"buttons.notAccessTitle\",\n      \"You don't have permission to access\",\n    );\n  }, [canAccess?.can, canAccess?.reason, translate]);\n\n  const hidden = accessControlEnabled && hideIfUnauthorized && !canAccess?.can;\n\n  const disabled = canAccess?.can === false;\n\n  return {\n    title,\n    hidden,\n    disabled,\n    canAccess,\n  };\n};\n","import { useTranslate } from \"../../i18n\";\nimport { useDelete } from \"../../data/useDelete\";\nimport { useButtonCanAccess } from \"../button-can-access\";\nimport { useResourceParams } from \"../../use-resource-params\";\nimport { useMutationMode, useWarnAboutChange } from \"../../refine\";\n\nimport type { BaseKey, DeleteOneResponse } from \"../../../contexts/data/types\";\nimport type { CanReturnType } from \"../../../contexts/accessControl/types\";\nimport type { DeleteParams } from \"../../data/useDelete\";\n\nexport type DeleteButtonProps = {\n  resource?: string;\n  id?: BaseKey;\n  dataProviderName?: string;\n  meta?: Record<string, unknown>;\n  accessControl?: {\n    enabled?: boolean;\n    hideIfUnauthorized?: boolean;\n  };\n  onSuccess?: (value: DeleteOneResponse) => void;\n} & Pick<\n  DeleteParams<any, any, any>,\n  \"mutationMode\" | \"successNotification\" | \"errorNotification\" | \"invalidates\"\n>;\n\nexport type DeleteButtonValues = {\n  label: string;\n  title: string;\n  hidden: boolean;\n  loading: boolean;\n  disabled: boolean;\n  canAccess: CanReturnType | undefined;\n  confirmOkLabel: string;\n  cancelLabel: string;\n  confirmTitle: string;\n  onConfirm: () => void;\n};\n\nexport function useDeleteButton(props: DeleteButtonProps): DeleteButtonValues {\n  const translate = useTranslate();\n  const {\n    mutation: { mutate, isPending, variables },\n  } = useDelete();\n  const { setWarnWhen } = useWarnAboutChange();\n  const { mutationMode } = useMutationMode(props.mutationMode);\n\n  const { id, resource, identifier } = useResourceParams({\n    resource: props.resource,\n    id: props.id,\n  });\n\n  const { title, disabled, hidden, canAccess } = useButtonCanAccess({\n    action: \"delete\",\n    accessControl: props.accessControl,\n    meta: props.meta,\n    id,\n    resource,\n  });\n\n  const label = translate(\"buttons.delete\", \"Delete\");\n\n  const confirmOkLabel = translate(\"buttons.delete\", \"Delete\");\n\n  const confirmTitle = translate(\"buttons.confirm\", \"Are you sure?\");\n\n  const cancelLabel = translate(\"buttons.cancel\", \"Cancel\");\n\n  const loading = id === variables?.id && isPending;\n\n  const onConfirm = () => {\n    if (id && identifier) {\n      setWarnWhen(false);\n      mutate(\n        {\n          id,\n          resource: identifier,\n          mutationMode,\n          successNotification: props.successNotification,\n          errorNotification: props.errorNotification,\n          meta: props.meta,\n          dataProviderName: props.dataProviderName,\n          invalidates: props.invalidates,\n        },\n        {\n          onSuccess: props.onSuccess,\n        },\n      );\n    }\n  };\n\n  return {\n    label,\n    title,\n    hidden,\n    disabled,\n    canAccess,\n    loading,\n    confirmOkLabel,\n    cancelLabel,\n    confirmTitle,\n    onConfirm,\n  };\n}\n","import { useQueryClient } from \"@tanstack/react-query\";\n\nimport { useTranslate } from \"../../i18n\";\nimport { useInvalidate } from \"../../invalidate\";\nimport { useResourceParams } from \"../../use-resource-params\";\nimport { useKeys } from \"../../useKeys\";\nimport { pickDataProvider } from \"../../../definitions\";\n\nimport type { BaseKey } from \"../../../contexts/data/types\";\n\nexport type RefreshButtonProps = {\n  resource?: string;\n  id?: BaseKey;\n  dataProviderName?: string;\n  meta?: Record<string, unknown>;\n};\n\nexport type RefreshButtonValues = {\n  onClick: () => void;\n  label: string;\n  loading: boolean;\n};\n\nexport function useRefreshButton(\n  props: RefreshButtonProps,\n): RefreshButtonValues {\n  const translate = useTranslate();\n  const { keys } = useKeys();\n\n  const queryClient = useQueryClient();\n  const invalidates = useInvalidate();\n\n  const { identifier, id, resources } = useResourceParams({\n    resource: props.resource,\n    id: props.id,\n  });\n\n  const loading = !!queryClient.isFetching({\n    queryKey: keys()\n      .data(pickDataProvider(identifier, props.dataProviderName, resources))\n      .resource(identifier)\n      .action(\"one\")\n      .get(),\n  });\n\n  const onClick = () => {\n    invalidates({\n      id,\n      invalidates: [\"detail\"],\n      dataProviderName: props.dataProviderName,\n      resource: identifier,\n    });\n  };\n\n  const label = translate(\"buttons.refresh\", \"Refresh\");\n\n  return {\n    onClick,\n    label,\n    loading,\n  };\n}\n","import { useActionableButton } from \"./actionable-button\";\nimport { useNavigationButton } from \"./navigation-button\";\n\nimport type { NavigationButtonProps } from \"./navigation-button\";\nimport type { Prettify } from \"../../contexts/data/types\";\n\nexport { useDeleteButton } from \"./delete-button\";\n\nexport { useRefreshButton } from \"./refresh-button\";\n\nexport const useShowButton = (\n  props: Prettify<Omit<NavigationButtonProps, \"action\">>,\n) => useNavigationButton({ ...props, action: \"show\" });\n\nexport const useEditButton = (\n  props: Prettify<Omit<NavigationButtonProps, \"action\">>,\n) => useNavigationButton({ ...props, action: \"edit\" });\n\nexport const useCloneButton = (\n  props: Prettify<Omit<NavigationButtonProps, \"action\">>,\n) => useNavigationButton({ ...props, action: \"clone\" });\n\nexport const useCreateButton = (\n  props: Prettify<Omit<NavigationButtonProps, \"action\" | \"id\">>,\n) => useNavigationButton({ ...props, action: \"create\" });\n\nexport const useListButton = (\n  props: Prettify<Omit<NavigationButtonProps, \"action\" | \"id\">>,\n) => useNavigationButton({ ...props, action: \"list\" });\n\nexport const useSaveButton = () => useActionableButton({ type: \"save\" });\n\nexport const useExportButton = () => useActionableButton({ type: \"export\" });\n\nexport const useImportButton = () => useActionableButton({ type: \"import\" });\n","import React, {\n  type DetailedHTMLProps,\n  type HTMLAttributes,\n  type FormHTMLAttributes,\n} from \"react\";\n\nimport {\n  ForgotPasswordPage,\n  LoginPage,\n  RegisterPage,\n  UpdatePasswordPage,\n} from \"./components\";\n\nimport type { AuthPageProps } from \"./types\";\n\nexport type DivPropsType = DetailedHTMLProps<\n  HTMLAttributes<HTMLDivElement>,\n  HTMLDivElement\n>;\nexport type FormPropsType = DetailedHTMLProps<\n  FormHTMLAttributes<HTMLFormElement>,\n  HTMLFormElement\n>;\n\nexport type AuthProps = AuthPageProps<\n  DivPropsType,\n  DivPropsType,\n  FormPropsType\n>;\n\n/**\n * **refine** has a default auth page form which is served on `/login` route when the `authProvider` configuration is provided.\n * @param title is not implemented yet.\n * @see {@link https://refine.dev/docs/api-reference/core/components/auth-page/} for more details.\n */\nexport const AuthPage: React.FC<AuthProps> = (props) => {\n  const { type } = props;\n  const renderView = () => {\n    switch (type) {\n      case \"register\":\n        return <RegisterPage {...props} />;\n      case \"forgotPassword\":\n        return <ForgotPasswordPage {...props} />;\n      case \"updatePassword\":\n        return <UpdatePasswordPage {...props} />;\n      default:\n        return <LoginPage {...props} />;\n    }\n  };\n\n  return <>{renderView()}</>;\n};\n","import React, { useState } from \"react\";\n\nimport { useLink, useLogin, useTranslate } from \"@hooks\";\n\nimport type { DivPropsType, FormPropsType } from \"../..\";\nimport type { LoginFormTypes, LoginPageProps } from \"../../types\";\n\ntype LoginProps = LoginPageProps<DivPropsType, DivPropsType, FormPropsType>;\n\nexport const LoginPage: React.FC<LoginProps> = ({\n  providers,\n  registerLink,\n  forgotPasswordLink,\n  rememberMe,\n  contentProps,\n  wrapperProps,\n  renderContent,\n  formProps,\n  title = undefined,\n  hideForm,\n  mutationVariables,\n}) => {\n  const Link = useLink();\n\n  const [email, setEmail] = useState(\"\");\n  const [password, setPassword] = useState(\"\");\n  const [remember, setRemember] = useState(false);\n\n  const translate = useTranslate();\n\n  const { mutate: login } = useLogin<LoginFormTypes>();\n\n  const renderLink = (link: string, text?: string) => {\n    return <Link to={link}>{text}</Link>;\n  };\n\n  const renderProviders = () => {\n    if (providers) {\n      return providers.map((provider) => (\n        <div\n          key={provider.name}\n          style={{\n            display: \"flex\",\n            alignItems: \"center\",\n            justifyContent: \"center\",\n            marginBottom: \"1rem\",\n          }}\n        >\n          <button\n            onClick={() =>\n              login({\n                ...mutationVariables,\n                providerName: provider.name,\n              })\n            }\n            style={{\n              display: \"flex\",\n              alignItems: \"center\",\n            }}\n          >\n            {provider?.icon}\n            {provider.label ?? <label>{provider.label}</label>}\n          </button>\n        </div>\n      ));\n    }\n    return null;\n  };\n\n  const content = (\n    <div {...contentProps}>\n      <h1 style={{ textAlign: \"center\" }}>\n        {translate(\"pages.login.title\", \"Sign in to your account\")}\n      </h1>\n      {renderProviders()}\n      {!hideForm && (\n        <>\n          <hr />\n          <form\n            onSubmit={(e) => {\n              e.preventDefault();\n              login({ ...mutationVariables, email, password, remember });\n            }}\n            {...formProps}\n          >\n            <div\n              style={{\n                display: \"flex\",\n                flexDirection: \"column\",\n                padding: 25,\n              }}\n            >\n              <label htmlFor=\"email-input\">\n                {translate(\"pages.login.fields.email\", \"Email\")}\n              </label>\n              <input\n                id=\"email-input\"\n                name=\"email\"\n                type=\"text\"\n                size={20}\n                autoCorrect=\"off\"\n                spellCheck={false}\n                autoCapitalize=\"off\"\n                required\n                value={email}\n                onChange={(e) => setEmail(e.target.value)}\n              />\n              <label htmlFor=\"password-input\">\n                {translate(\"pages.login.fields.password\", \"Password\")}\n              </label>\n              <input\n                id=\"password-input\"\n                type=\"password\"\n                name=\"password\"\n                required\n                size={20}\n                value={password}\n                onChange={(e) => setPassword(e.target.value)}\n              />\n              {rememberMe ?? (\n                <>\n                  <label htmlFor=\"remember-me-input\">\n                    {translate(\"pages.login.buttons.rememberMe\", \"Remember me\")}\n                    <input\n                      id=\"remember-me-input\"\n                      name=\"remember\"\n                      type=\"checkbox\"\n                      size={20}\n                      checked={remember}\n                      value={remember.toString()}\n                      onChange={() => {\n                        setRemember(!remember);\n                      }}\n                    />\n                  </label>\n                </>\n              )}\n              <br />\n              {forgotPasswordLink ??\n                renderLink(\n                  \"/forgot-password\",\n                  translate(\n                    \"pages.login.buttons.forgotPassword\",\n                    \"Forgot password?\",\n                  ),\n                )}\n              <input\n                type=\"submit\"\n                value={translate(\"pages.login.signin\", \"Sign in\")}\n              />\n              {registerLink ?? (\n                <span>\n                  {translate(\n                    \"pages.login.buttons.noAccount\",\n                    \"Don’t have an account?\",\n                  )}{\" \"}\n                  {renderLink(\n                    \"/register\",\n                    translate(\"pages.login.register\", \"Sign up\"),\n                  )}\n                </span>\n              )}\n            </div>\n          </form>\n        </>\n      )}\n      {registerLink !== false && hideForm && (\n        <div style={{ textAlign: \"center\" }}>\n          {translate(\"pages.login.buttons.noAccount\", \"Don’t have an account?\")}{\" \"}\n          {renderLink(\n            \"/register\",\n            translate(\"pages.login.register\", \"Sign up\"),\n          )}\n        </div>\n      )}\n    </div>\n  );\n\n  return (\n    <div {...wrapperProps}>\n      {renderContent ? renderContent(content, title) : content}\n    </div>\n  );\n};\n","import React, { useState } from \"react\";\n\nimport { useLink, useRegister, useTranslate } from \"@hooks\";\n\nimport type { DivPropsType, FormPropsType } from \"../..\";\nimport type { RegisterPageProps } from \"../../types\";\n\ntype RegisterProps = RegisterPageProps<\n  DivPropsType,\n  DivPropsType,\n  FormPropsType\n>;\n\nexport const RegisterPage: React.FC<RegisterProps> = ({\n  providers,\n  loginLink,\n  wrapperProps,\n  contentProps,\n  renderContent,\n  formProps,\n  title = undefined,\n  hideForm,\n  mutationVariables,\n}) => {\n  const Link = useLink();\n\n  const [email, setEmail] = useState(\"\");\n  const [password, setPassword] = useState(\"\");\n\n  const translate = useTranslate();\n\n  const { mutate: register, isPending } = useRegister();\n\n  const renderLink = (link: string, text?: string) => {\n    return <Link to={link}>{text}</Link>;\n  };\n\n  const renderProviders = () => {\n    if (providers) {\n      return providers.map((provider) => (\n        <div\n          key={provider.name}\n          style={{\n            display: \"flex\",\n            alignItems: \"center\",\n            justifyContent: \"center\",\n            marginBottom: \"1rem\",\n          }}\n        >\n          <button\n            onClick={() =>\n              register({\n                ...mutationVariables,\n                providerName: provider.name,\n              })\n            }\n            style={{\n              display: \"flex\",\n              alignItems: \"center\",\n            }}\n          >\n            {provider?.icon}\n            {provider.label ?? <label>{provider.label}</label>}\n          </button>\n        </div>\n      ));\n    }\n    return null;\n  };\n\n  const content = (\n    <div {...contentProps}>\n      <h1 style={{ textAlign: \"center\" }}>\n        {translate(\"pages.register.title\", \"Sign up for your account\")}\n      </h1>\n      {renderProviders()}\n      {!hideForm && (\n        <>\n          <hr />\n          <form\n            onSubmit={(e) => {\n              e.preventDefault();\n              register({ ...mutationVariables, email, password });\n            }}\n            {...formProps}\n          >\n            <div\n              style={{\n                display: \"flex\",\n                flexDirection: \"column\",\n                padding: 25,\n              }}\n            >\n              <label htmlFor=\"email-input\">\n                {translate(\"pages.register.fields.email\", \"Email\")}\n              </label>\n              <input\n                id=\"email-input\"\n                name=\"email\"\n                type=\"email\"\n                size={20}\n                autoCorrect=\"off\"\n                spellCheck={false}\n                autoCapitalize=\"off\"\n                required\n                value={email}\n                onChange={(e) => setEmail(e.target.value)}\n              />\n              <label htmlFor=\"password-input\">\n                {translate(\"pages.register.fields.password\", \"Password\")}\n              </label>\n              <input\n                id=\"password-input\"\n                name=\"password\"\n                type=\"password\"\n                required\n                size={20}\n                value={password}\n                onChange={(e) => setPassword(e.target.value)}\n              />\n              <input\n                type=\"submit\"\n                value={translate(\"pages.register.buttons.submit\", \"Sign up\")}\n                disabled={isPending}\n              />\n              {loginLink ?? (\n                <>\n                  <span>\n                    {translate(\n                      \"pages.login.buttons.haveAccount\",\n                      \"Have an account?\",\n                    )}{\" \"}\n                    {renderLink(\n                      \"/login\",\n                      translate(\"pages.login.signin\", \"Sign in\"),\n                    )}\n                  </span>\n                </>\n              )}\n            </div>\n          </form>\n        </>\n      )}\n      {loginLink !== false && hideForm && (\n        <div style={{ textAlign: \"center\" }}>\n          {translate(\"pages.login.buttons.haveAccount\", \"Have an account?\")}{\" \"}\n          {renderLink(\"/login\", translate(\"pages.login.signin\", \"Sign in\"))}\n        </div>\n      )}\n    </div>\n  );\n\n  return (\n    <div {...wrapperProps}>\n      {renderContent ? renderContent(content, title) : content}\n    </div>\n  );\n};\n","import React, { useState } from \"react\";\n\nimport { useForgotPassword, useLink, useTranslate } from \"@hooks\";\n\nimport type { DivPropsType, FormPropsType } from \"../..\";\nimport type {\n  ForgotPasswordFormTypes,\n  ForgotPasswordPageProps,\n} from \"../../types\";\n\ntype ForgotPasswordProps = ForgotPasswordPageProps<\n  DivPropsType,\n  DivPropsType,\n  FormPropsType\n>;\n\nexport const ForgotPasswordPage: React.FC<ForgotPasswordProps> = ({\n  loginLink,\n  wrapperProps,\n  contentProps,\n  renderContent,\n  formProps,\n  title = undefined,\n  mutationVariables,\n}) => {\n  const translate = useTranslate();\n  const Link = useLink();\n\n  const [email, setEmail] = useState(\"\");\n\n  const { mutate: forgotPassword, isPending } =\n    useForgotPassword<ForgotPasswordFormTypes>();\n\n  const renderLink = (link: string, text?: string) => {\n    return <Link to={link}>{text}</Link>;\n  };\n\n  const content = (\n    <div {...contentProps}>\n      <h1 style={{ textAlign: \"center\" }}>\n        {translate(\"pages.forgotPassword.title\", \"Forgot your password?\")}\n      </h1>\n      <hr />\n      <form\n        onSubmit={(e) => {\n          e.preventDefault();\n          forgotPassword({ ...mutationVariables, email });\n        }}\n        {...formProps}\n      >\n        <div\n          style={{\n            display: \"flex\",\n            flexDirection: \"column\",\n            padding: 25,\n          }}\n        >\n          <label htmlFor=\"email-input\">\n            {translate(\"pages.forgotPassword.fields.email\", \"Email\")}\n          </label>\n          <input\n            id=\"email-input\"\n            name=\"email\"\n            type=\"mail\"\n            autoCorrect=\"off\"\n            spellCheck={false}\n            autoCapitalize=\"off\"\n            required\n            value={email}\n            onChange={(e) => setEmail(e.target.value)}\n          />\n          <input\n            type=\"submit\"\n            disabled={isPending}\n            value={translate(\n              \"pages.forgotPassword.buttons.submit\",\n              \"Send reset instructions\",\n            )}\n          />\n          <br />\n          {loginLink ?? (\n            <span>\n              {translate(\n                \"pages.register.buttons.haveAccount\",\n                \"Have an account? \",\n              )}{\" \"}\n              {renderLink(\"/login\", translate(\"pages.login.signin\", \"Sign in\"))}\n            </span>\n          )}\n        </div>\n      </form>\n    </div>\n  );\n\n  return (\n    <div {...wrapperProps}>\n      {renderContent ? renderContent(content, title) : content}\n    </div>\n  );\n};\n","import React, { useState } from \"react\";\n\nimport { useActiveAuthProvider } from \"@definitions/helpers\";\nimport { useTranslate, useUpdatePassword } from \"@hooks\";\n\nimport type { DivPropsType, FormPropsType } from \"../..\";\nimport type {\n  UpdatePasswordFormTypes,\n  UpdatePasswordPageProps,\n} from \"../../types\";\n\ntype UpdatePasswordProps = UpdatePasswordPageProps<\n  DivPropsType,\n  DivPropsType,\n  FormPropsType\n>;\n\nexport const UpdatePasswordPage: React.FC<UpdatePasswordProps> = ({\n  wrapperProps,\n  contentProps,\n  renderContent,\n  formProps,\n  title = undefined,\n  mutationVariables,\n}) => {\n  const translate = useTranslate();\n\n  const authProvider = useActiveAuthProvider();\n  const { mutate: updatePassword, isPending } =\n    useUpdatePassword<UpdatePasswordFormTypes>();\n\n  const [newPassword, setNewPassword] = useState(\"\");\n  const [confirmPassword, setConfirmPassword] = useState(\"\");\n\n  const content = (\n    <div {...contentProps}>\n      <h1 style={{ textAlign: \"center\" }}>\n        {translate(\"pages.updatePassword.title\", \"Update Password\")}\n      </h1>\n      <hr />\n      <form\n        onSubmit={(e) => {\n          e.preventDefault();\n          updatePassword({\n            ...mutationVariables,\n            password: newPassword,\n            confirmPassword,\n          });\n        }}\n        {...formProps}\n      >\n        <div\n          style={{\n            display: \"flex\",\n            flexDirection: \"column\",\n            padding: 25,\n          }}\n        >\n          <label htmlFor=\"password-input\">\n            {translate(\"pages.updatePassword.fields.password\", \"New Password\")}\n          </label>\n          <input\n            id=\"password-input\"\n            name=\"password\"\n            type=\"password\"\n            required\n            size={20}\n            value={newPassword}\n            onChange={(e) => setNewPassword(e.target.value)}\n          />\n          <label htmlFor=\"confirm-password-input\">\n            {translate(\n              \"pages.updatePassword.fields.confirmPassword\",\n              \"Confirm New Password\",\n            )}\n          </label>\n          <input\n            id=\"confirm-password-input\"\n            name=\"confirmPassword\"\n            type=\"password\"\n            required\n            size={20}\n            value={confirmPassword}\n            onChange={(e) => setConfirmPassword(e.target.value)}\n          />\n          <input\n            type=\"submit\"\n            disabled={isPending}\n            value={translate(\"pages.updatePassword.buttons.submit\", \"Update\")}\n          />\n        </div>\n      </form>\n    </div>\n  );\n\n  return (\n    <div {...wrapperProps}>\n      {renderContent ? renderContent(content, title) : content}\n    </div>\n  );\n};\n","import React from \"react\";\nimport { ConfigSuccessPage } from \"../config-success\";\nimport { useRefineContext } from \"@hooks/refine\";\nimport { ConfigErrorPage } from \"../config-error\";\n\nexport const WelcomePage = () => {\n  const { __initialized } = useRefineContext();\n\n  return (\n    <>\n      <ConfigSuccessPage />\n      {!__initialized && <ConfigErrorPage />}\n    </>\n  );\n};\n","import React, { useState } from \"react\";\n\nimport { useMediaQuery } from \"@definitions/helpers\";\n\ntype CardInfo = {\n  title: string;\n  description: string;\n  link: string;\n  iconUrl: string;\n};\n\nconst cards: CardInfo[] = [\n  {\n    title: \"Documentation\",\n    description:\n      \"Learn about the technical details of using Refine in your projects.\",\n    link: \"https://refine.dev/docs\",\n    iconUrl:\n      \"https://refine.ams3.cdn.digitaloceanspaces.com/welcome-page/book.svg\",\n  },\n  {\n    title: \"Tutorial\",\n    description:\n      \"Learn how to use Refine by building a fully-functioning CRUD app, from scratch to full launch.\",\n    link: \"https://refine.dev/tutorial\",\n    iconUrl:\n      \"https://refine.ams3.cdn.digitaloceanspaces.com/welcome-page/hat.svg\",\n  },\n  {\n    title: \"Templates\",\n    description:\n      \"Explore a range of pre-built templates, perfect everything from admin panels to dashboards and CRMs.\",\n    link: \"https://refine.dev/templates\",\n    iconUrl:\n      \"https://refine.ams3.cdn.digitaloceanspaces.com/welcome-page/application.svg\",\n  },\n  {\n    title: \"Community\",\n    description: \"Join our Discord community and keep up with the latest news.\",\n    link: \"https://discord.gg/refine\",\n    iconUrl:\n      \"https://refine.ams3.cdn.digitaloceanspaces.com/welcome-page/discord.svg\",\n  },\n];\n\n/**\n * It is a page that welcomes you after the configuration is completed.\n */\nexport const ConfigSuccessPage: React.FC = () => {\n  const isTablet = useMediaQuery(\"(max-width: 1010px)\");\n  const isMobile = useMediaQuery(\"(max-width: 650px)\");\n\n  const getGridTemplateColumns = () => {\n    if (isMobile) {\n      return \"1, 280px\";\n    }\n    if (isTablet) {\n      return \"2, 280px\";\n    }\n    return \"4, 1fr\";\n  };\n\n  const getHeaderFontSize = () => {\n    if (isMobile) {\n      return \"32px\";\n    }\n    if (isTablet) {\n      return \"40px\";\n    }\n    return \"48px\";\n  };\n\n  const getSubHeaderFontSize = () => {\n    if (isMobile) {\n      return \"16px\";\n    }\n    if (isTablet) {\n      return \"20px\";\n    }\n    return \"24px\";\n  };\n\n  return (\n    <div\n      style={{\n        position: \"fixed\",\n        zIndex: 10,\n        inset: 0,\n        overflow: \"auto\",\n        width: \"100dvw\",\n        height: \"100dvh\",\n      }}\n    >\n      <div\n        style={{\n          overflow: \"hidden\",\n          position: \"relative\",\n          backgroundSize: \"cover\",\n          backgroundRepeat: \"no-repeat\",\n          background: isMobile\n            ? \"url(https://refine.ams3.cdn.digitaloceanspaces.com/website/static/assets/landing-noise.webp), radial-gradient(88.89% 50% at 50% 100%, rgba(38, 217, 127, 0.10) 0%, rgba(38, 217, 127, 0.00) 100%), radial-gradient(88.89% 50% at 50% 0%, rgba(71, 235, 235, 0.15) 0%, rgba(71, 235, 235, 0.00) 100%), #1D1E30\"\n            : isTablet\n              ? \"url(https://refine.ams3.cdn.digitaloceanspaces.com/website/static/assets/landing-noise.webp), radial-gradient(66.67% 50% at 50% 100%, rgba(38, 217, 127, 0.10) 0%, rgba(38, 217, 127, 0.00) 100%), radial-gradient(66.67% 50% at 50% 0%, rgba(71, 235, 235, 0.15) 0%, rgba(71, 235, 235, 0.00) 100%), #1D1E30\"\n              : \"url(https://refine.ams3.cdn.digitaloceanspaces.com/website/static/assets/landing-noise.webp), radial-gradient(35.56% 50% at 50% 100%, rgba(38, 217, 127, 0.12) 0%, rgba(38, 217, 127, 0) 100%), radial-gradient(35.56% 50% at 50% 0%, rgba(71, 235, 235, 0.18) 0%, rgba(71, 235, 235, 0) 100%), #1D1E30\",\n          minHeight: \"100%\",\n          minWidth: \"100%\",\n          fontFamily: \"Arial\",\n          color: \"#FFFFFF\",\n        }}\n      >\n        <div\n          style={{\n            zIndex: 2,\n            position: \"absolute\",\n            width: isMobile ? \"400px\" : \"800px\",\n            height: \"552px\",\n            opacity: \"0.5\",\n            background:\n              \"url(https://refine.ams3.cdn.digitaloceanspaces.com/assets/welcome-page-hexagon.png)\",\n            backgroundRepeat: \"no-repeat\",\n            backgroundSize: \"contain\",\n            top: \"0\",\n            left: \"50%\",\n            transform: \"translateX(-50%)\",\n          }}\n        />\n        <div style={{ height: isMobile ? \"40px\" : \"80px\" }} />\n        <div style={{ display: \"flex\", justifyContent: \"center\" }}>\n          <div\n            style={{\n              backgroundRepeat: \"no-repeat\",\n              backgroundSize: isMobile ? \"112px 58px\" : \"224px 116px\",\n              backgroundImage:\n                \"url(https://refine.ams3.cdn.digitaloceanspaces.com/assets/refine-logo.svg)\",\n              width: isMobile ? 112 : 224,\n              height: isMobile ? 58 : 116,\n            }}\n          />\n        </div>\n        <div\n          style={{\n            height: isMobile ? \"120px\" : isTablet ? \"200px\" : \"30vh\",\n            minHeight: isMobile ? \"120px\" : isTablet ? \"200px\" : \"200px\",\n          }}\n        />\n        <div\n          style={{\n            display: \"flex\",\n            flexDirection: \"column\",\n            gap: \"16px\",\n            textAlign: \"center\",\n          }}\n        >\n          <h1\n            style={{\n              fontSize: getHeaderFontSize(),\n              fontWeight: 700,\n              margin: \"0px\",\n            }}\n          >\n            Welcome Aboard!\n          </h1>\n          <h4\n            style={{\n              fontSize: getSubHeaderFontSize(),\n              fontWeight: 400,\n              margin: \"0px\",\n            }}\n          >\n            Your configuration is completed.\n          </h4>\n        </div>\n        <div style={{ height: \"64px\" }} />\n        <div\n          style={{\n            display: \"grid\",\n            gridTemplateColumns: `repeat(${getGridTemplateColumns()})`,\n            justifyContent: \"center\",\n            gap: \"48px\",\n            paddingRight: \"16px\",\n            paddingLeft: \"16px\",\n            paddingBottom: \"32px\",\n            maxWidth: \"976px\",\n            margin: \"auto\",\n          }}\n        >\n          {cards.map((card) => (\n            <Card key={`welcome-page-${card.title}`} card={card} />\n          ))}\n        </div>\n      </div>\n    </div>\n  );\n};\n\ntype CardProps = {\n  card: CardInfo;\n};\n\nconst Card: React.FC<CardProps> = ({ card }) => {\n  const { title, description, iconUrl, link } = card;\n\n  const [isHover, setIsHover] = useState(false);\n\n  return (\n    <div\n      style={{\n        display: \"flex\",\n        flexDirection: \"column\",\n        gap: \"16px\",\n      }}\n    >\n      <div\n        style={{\n          display: \"flex\",\n          alignItems: \"center\",\n        }}\n      >\n        <a\n          onPointerEnter={() => setIsHover(true)}\n          onPointerLeave={() => setIsHover(false)}\n          style={{\n            display: \"flex\",\n            alignItems: \"center\",\n            color: \"#fff\",\n            textDecoration: \"none\",\n          }}\n          href={link}\n        >\n          <div\n            style={{\n              width: \"16px\",\n              height: \"16px\",\n              backgroundPosition: \"center\",\n              backgroundSize: \"contain\",\n              backgroundRepeat: \"no-repeat\",\n              backgroundImage: `url(${iconUrl})`,\n            }}\n          />\n          <span\n            style={{\n              fontSize: \"16px\",\n              fontWeight: 700,\n              marginLeft: \"13px\",\n              marginRight: \"14px\",\n            }}\n          >\n            {title}\n          </span>\n          <svg\n            style={{\n              transition:\n                \"transform 0.5s ease-in-out, opacity 0.2s ease-in-out\",\n              ...(isHover && {\n                transform: \"translateX(4px)\",\n                opacity: 1,\n              }),\n            }}\n            width=\"12\"\n            height=\"8\"\n            fill=\"none\"\n            opacity=\"0.5\"\n            xmlns=\"http://www.w3.org/2000/svg\"\n          >\n            <path\n              d=\"M7.293.293a1 1 0 0 1 1.414 0l3 3a1 1 0 0 1 0 1.414l-3 3a1 1 0 0 1-1.414-1.414L8.586 5H1a1 1 0 0 1 0-2h7.586L7.293 1.707a1 1 0 0 1 0-1.414Z\"\n              fill=\"#fff\"\n            />\n          </svg>\n        </a>\n      </div>\n      <span\n        style={{\n          fontSize: \"12px\",\n          opacity: 0.5,\n          lineHeight: \"16px\",\n        }}\n      >\n        {description}\n      </span>\n    </div>\n  );\n};\n","import React from \"react\";\n\nexport const ConfigErrorPage = () => {\n  return (\n    <div\n      style={{\n        position: \"fixed\",\n        zIndex: 11,\n        inset: 0,\n        overflow: \"auto\",\n        width: \"100dvw\",\n        height: \"100dvh\",\n      }}\n    >\n      <div\n        style={{\n          width: \"100%\",\n          height: \"100%\",\n          display: \"flex\",\n          justifyContent: \"center\",\n          alignItems: \"center\",\n          padding: \"24px\",\n          background: \"#14141FBF\",\n          backdropFilter: \"blur(3px)\",\n        }}\n      >\n        <div\n          style={{\n            maxWidth: \"640px\",\n            width: \"100%\",\n            background: \"#1D1E30\",\n            borderRadius: \"16px\",\n            border: \"1px solid #303450\",\n            boxShadow: \"0px 0px 120px -24px #000000\",\n          }}\n        >\n          <div\n            style={{\n              padding: \"16px 20px\",\n              borderBottom: \"1px solid #303450\",\n              display: \"flex\",\n              alignItems: \"center\",\n              gap: \"8px\",\n              position: \"relative\",\n            }}\n          >\n            <ErrorGradient\n              style={{\n                position: \"absolute\",\n                left: 0,\n                top: 0,\n              }}\n            />\n            <div\n              style={{\n                lineHeight: \"24px\",\n                fontSize: \"16px\",\n                color: \"#FFFFFF\",\n                display: \"flex\",\n                alignItems: \"center\",\n                gap: \"16px\",\n              }}\n            >\n              <ErrorIcon />\n              <span\n                style={{\n                  fontWeight: 400,\n                }}\n              >\n                Configuration Error\n              </span>\n            </div>\n          </div>\n          <div\n            style={{\n              padding: \"20px\",\n              color: \"#A3ADC2\",\n              lineHeight: \"20px\",\n              fontSize: \"14px\",\n              display: \"flex\",\n              flexDirection: \"column\",\n              gap: \"20px\",\n            }}\n          >\n            <p\n              style={{\n                margin: 0,\n                padding: 0,\n                lineHeight: \"28px\",\n                fontSize: \"16px\",\n              }}\n            >\n              <code\n                style={{\n                  display: \"inline-block\",\n                  background: \"#30345080\",\n                  padding: \"0 4px\",\n                  lineHeight: \"24px\",\n                  fontSize: \"16px\",\n                  borderRadius: \"4px\",\n                  color: \"#FFFFFF\",\n                }}\n              >\n                {\"<Refine />\"}\n              </code>{\" \"}\n              is not initialized. Please make sure you have it mounted in your\n              app and placed your components inside it.\n            </p>\n            <div>\n              <ExampleImplementation />\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n  );\n};\n\nconst ExampleImplementation = () => {\n  return (\n    <pre\n      style={{\n        display: \"block\",\n        overflowX: \"auto\",\n        borderRadius: \"8px\",\n        fontSize: \"14px\",\n        lineHeight: \"24px\",\n        backgroundColor: \"#14141F\",\n        color: \"#E5ECF2\",\n        padding: \"16px\",\n        margin: \"0\",\n        maxHeight: \"400px\",\n        overflow: \"auto\",\n      }}\n    >\n      <span style={{ color: \"#FF7B72\" }}>import</span> {\"{\"} Refine, WelcomePage{\" \"}\n      {\"}\"} <span style={{ color: \"#FF7B72\" }}>from</span>{\" \"}\n      <span style={{ color: \"#A5D6FF\" }}>{'\"@refinedev/core\"'}</span>;{\"\\n\"}\n      {\"\\n\"}\n      <span style={{ color: \"#FF7B72\" }}>export</span>{\" \"}\n      <span style={{ color: \"#FF7B72\" }}>default</span>{\" \"}\n      <span>\n        <span style={{ color: \"#FF7B72\" }}>function</span>{\" \"}\n        <span style={{ color: \"#FFA657\" }}>App</span>\n        (\n        <span style={{ color: \"rgb(222, 147, 95)\" }} />){\" \"}\n      </span>\n      {\"{\"}\n      {\"\\n\"}\n      {\"  \"}\n      <span style={{ color: \"#FF7B72\" }}>return</span> ({\"\\n\"}\n      {\"    \"}\n      <span>\n        <span style={{ color: \"#79C0FF\" }}>\n          &lt;\n          <span style={{ color: \"#79C0FF\" }}>Refine</span>\n          {\"\\n\"}\n          {\"      \"}\n          <span style={{ color: \"#E5ECF2\", opacity: 0.6 }}>\n            {\"// \"}\n            <span>...</span>\n          </span>\n          {\"\\n\"}\n          {\"    \"}&gt;\n        </span>\n        {\"\\n\"}\n        {\"      \"}\n        <span style={{ opacity: 0.6 }}>\n          {\"{\"}\n          {\"/* ... */\"}\n          {\"}\"}\n        </span>\n        {\"\\n\"}\n        {\"      \"}\n        <span style={{ color: \"#79C0FF\" }}>\n          &lt;\n          <span style={{ color: \"#79C0FF\" }}>WelcomePage</span> /&gt;\n        </span>\n        {\"\\n\"}\n        {\"      \"}\n        <span style={{ opacity: 0.6 }}>\n          {\"{\"}\n          {\"/* ... */\"}\n          {\"}\"}\n        </span>\n        {\"\\n\"}\n        {\"    \"}\n        <span style={{ color: \"#79C0FF\" }}>\n          &lt;/\n          <span style={{ color: \"#79C0FF\" }}>Refine</span>\n          &gt;\n        </span>\n      </span>\n      {\"\\n\"}\n      {\"  \"});{\"\\n\"}\n      {\"}\"}\n    </pre>\n  );\n};\n\nconst ErrorGradient = (props: React.SVGProps<SVGSVGElement>) => (\n  <svg\n    xmlns=\"http://www.w3.org/2000/svg\"\n    width={204}\n    height={56}\n    viewBox=\"0 0 204 56\"\n    fill=\"none\"\n    {...props}\n  >\n    <path fill=\"url(#welcome-page-error-gradient-a)\" d=\"M12 0H0v12L12 0Z\" />\n    <path\n      fill=\"url(#welcome-page-error-gradient-b)\"\n      d=\"M28 0h-8L0 20v8L28 0Z\"\n    />\n    <path\n      fill=\"url(#welcome-page-error-gradient-c)\"\n      d=\"M36 0h8L0 44v-8L36 0Z\"\n    />\n    <path\n      fill=\"url(#welcome-page-error-gradient-d)\"\n      d=\"M60 0h-8L0 52v4h4L60 0Z\"\n    />\n    <path\n      fill=\"url(#welcome-page-error-gradient-e)\"\n      d=\"M68 0h8L20 56h-8L68 0Z\"\n    />\n    <path\n      fill=\"url(#welcome-page-error-gradient-f)\"\n      d=\"M92 0h-8L28 56h8L92 0Z\"\n    />\n    <path\n      fill=\"url(#welcome-page-error-gradient-g)\"\n      d=\"M100 0h8L52 56h-8l56-56Z\"\n    />\n    <path\n      fill=\"url(#welcome-page-error-gradient-h)\"\n      d=\"M124 0h-8L60 56h8l56-56Z\"\n    />\n    <path\n      fill=\"url(#welcome-page-error-gradient-i)\"\n      d=\"M140 0h-8L76 56h8l56-56Z\"\n    />\n    <path\n      fill=\"url(#welcome-page-error-gradient-j)\"\n      d=\"M132 0h8L84 56h-8l56-56Z\"\n    />\n    <path\n      fill=\"url(#welcome-page-error-gradient-k)\"\n      d=\"M156 0h-8L92 56h8l56-56Z\"\n    />\n    <path\n      fill=\"url(#welcome-page-error-gradient-l)\"\n      d=\"M164 0h8l-56 56h-8l56-56Z\"\n    />\n    <path\n      fill=\"url(#welcome-page-error-gradient-m)\"\n      d=\"M188 0h-8l-56 56h8l56-56Z\"\n    />\n    <path\n      fill=\"url(#welcome-page-error-gradient-n)\"\n      d=\"M204 0h-8l-56 56h8l56-56Z\"\n    />\n    <defs>\n      <radialGradient\n        id=\"welcome-page-error-gradient-a\"\n        cx={0}\n        cy={0}\n        r={1}\n        gradientTransform=\"scale(124)\"\n        gradientUnits=\"userSpaceOnUse\"\n      >\n        <stop stopColor=\"#FF4C4D\" stopOpacity={0.1} />\n        <stop offset={1} stopColor=\"#FF4C4D\" stopOpacity={0} />\n      </radialGradient>\n      <radialGradient\n        id=\"welcome-page-error-gradient-b\"\n        cx={0}\n        cy={0}\n        r={1}\n        gradientTransform=\"scale(124)\"\n        gradientUnits=\"userSpaceOnUse\"\n      >\n        <stop stopColor=\"#FF4C4D\" stopOpacity={0.1} />\n        <stop offset={1} stopColor=\"#FF4C4D\" stopOpacity={0} />\n      </radialGradient>\n      <radialGradient\n        id=\"welcome-page-error-gradient-c\"\n        cx={0}\n        cy={0}\n        r={1}\n        gradientTransform=\"scale(124)\"\n        gradientUnits=\"userSpaceOnUse\"\n      >\n        <stop stopColor=\"#FF4C4D\" stopOpacity={0.1} />\n        <stop offset={1} stopColor=\"#FF4C4D\" stopOpacity={0} />\n      </radialGradient>\n      <radialGradient\n        id=\"welcome-page-error-gradient-d\"\n        cx={0}\n        cy={0}\n        r={1}\n        gradientTransform=\"scale(124)\"\n        gradientUnits=\"userSpaceOnUse\"\n      >\n        <stop stopColor=\"#FF4C4D\" stopOpacity={0.1} />\n        <stop offset={1} stopColor=\"#FF4C4D\" stopOpacity={0} />\n      </radialGradient>\n      <radialGradient\n        id=\"welcome-page-error-gradient-e\"\n        cx={0}\n        cy={0}\n        r={1}\n        gradientTransform=\"scale(124)\"\n        gradientUnits=\"userSpaceOnUse\"\n      >\n        <stop stopColor=\"#FF4C4D\" stopOpacity={0.1} />\n        <stop offset={1} stopColor=\"#FF4C4D\" stopOpacity={0} />\n      </radialGradient>\n      <radialGradient\n        id=\"welcome-page-error-gradient-f\"\n        cx={0}\n        cy={0}\n        r={1}\n        gradientTransform=\"scale(124)\"\n        gradientUnits=\"userSpaceOnUse\"\n      >\n        <stop stopColor=\"#FF4C4D\" stopOpacity={0.1} />\n        <stop offset={1} stopColor=\"#FF4C4D\" stopOpacity={0} />\n      </radialGradient>\n      <radialGradient\n        id=\"welcome-page-error-gradient-g\"\n        cx={0}\n        cy={0}\n        r={1}\n        gradientTransform=\"scale(124)\"\n        gradientUnits=\"userSpaceOnUse\"\n      >\n        <stop stopColor=\"#FF4C4D\" stopOpacity={0.1} />\n        <stop offset={1} stopColor=\"#FF4C4D\" stopOpacity={0} />\n      </radialGradient>\n      <radialGradient\n        id=\"welcome-page-error-gradient-h\"\n        cx={0}\n        cy={0}\n        r={1}\n        gradientTransform=\"scale(124)\"\n        gradientUnits=\"userSpaceOnUse\"\n      >\n        <stop stopColor=\"#FF4C4D\" stopOpacity={0.1} />\n        <stop offset={1} stopColor=\"#FF4C4D\" stopOpacity={0} />\n      </radialGradient>\n      <radialGradient\n        id=\"welcome-page-error-gradient-i\"\n        cx={0}\n        cy={0}\n        r={1}\n        gradientTransform=\"scale(124)\"\n        gradientUnits=\"userSpaceOnUse\"\n      >\n        <stop stopColor=\"#FF4C4D\" stopOpacity={0.1} />\n        <stop offset={1} stopColor=\"#FF4C4D\" stopOpacity={0} />\n      </radialGradient>\n      <radialGradient\n        id=\"welcome-page-error-gradient-j\"\n        cx={0}\n        cy={0}\n        r={1}\n        gradientTransform=\"scale(124)\"\n        gradientUnits=\"userSpaceOnUse\"\n      >\n        <stop stopColor=\"#FF4C4D\" stopOpacity={0.1} />\n        <stop offset={1} stopColor=\"#FF4C4D\" stopOpacity={0} />\n      </radialGradient>\n      <radialGradient\n        id=\"welcome-page-error-gradient-k\"\n        cx={0}\n        cy={0}\n        r={1}\n        gradientTransform=\"scale(124)\"\n        gradientUnits=\"userSpaceOnUse\"\n      >\n        <stop stopColor=\"#FF4C4D\" stopOpacity={0.1} />\n        <stop offset={1} stopColor=\"#FF4C4D\" stopOpacity={0} />\n      </radialGradient>\n      <radialGradient\n        id=\"welcome-page-error-gradient-l\"\n        cx={0}\n        cy={0}\n        r={1}\n        gradientTransform=\"scale(124)\"\n        gradientUnits=\"userSpaceOnUse\"\n      >\n        <stop stopColor=\"#FF4C4D\" stopOpacity={0.1} />\n        <stop offset={1} stopColor=\"#FF4C4D\" stopOpacity={0} />\n      </radialGradient>\n      <radialGradient\n        id=\"welcome-page-error-gradient-m\"\n        cx={0}\n        cy={0}\n        r={1}\n        gradientTransform=\"scale(124)\"\n        gradientUnits=\"userSpaceOnUse\"\n      >\n        <stop stopColor=\"#FF4C4D\" stopOpacity={0.1} />\n        <stop offset={1} stopColor=\"#FF4C4D\" stopOpacity={0} />\n      </radialGradient>\n      <radialGradient\n        id=\"welcome-page-error-gradient-n\"\n        cx={0}\n        cy={0}\n        r={1}\n        gradientTransform=\"scale(124)\"\n        gradientUnits=\"userSpaceOnUse\"\n      >\n        <stop stopColor=\"#FF4C4D\" stopOpacity={0.1} />\n        <stop offset={1} stopColor=\"#FF4C4D\" stopOpacity={0} />\n      </radialGradient>\n    </defs>\n  </svg>\n);\n\nconst ErrorIcon = (props: React.SVGProps<SVGSVGElement>) => (\n  <svg\n    xmlns=\"http://www.w3.org/2000/svg\"\n    width={16}\n    height={16}\n    viewBox=\"0 0 16 16\"\n    fill=\"none\"\n    {...props}\n  >\n    <path\n      fill=\"#FF4C4D\"\n      fillRule=\"evenodd\"\n      d=\"M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16Z\"\n      clipRule=\"evenodd\"\n    />\n    <path\n      fill=\"#fff\"\n      fillRule=\"evenodd\"\n      d=\"M7 8a1 1 0 1 0 2 0V5a1 1 0 1 0-2 0v3Zm0 3a1 1 0 1 1 2 0 1 1 0 0 1-2 0Z\"\n      clipRule=\"evenodd\"\n    />\n  </svg>\n);\n","import React from \"react\";\n\nimport { useQuerySubscription } from \"@refinedev/devtools-internal\";\nimport {\n  keepPreviousData,\n  QueryClient,\n  QueryClientProvider,\n} from \"@tanstack/react-query\";\n\nimport { RouteChangeHandler } from \"@components\";\nimport { Telemetry } from \"@components/telemetry\";\nimport { handleRefineOptions } from \"@definitions\";\nimport { useDeepMemo } from \"@hooks/deepMemo\";\n\nimport { AccessControlContextProvider } from \"../../../contexts/accessControl\";\nimport { AuditLogContextProvider } from \"../../../contexts/auditLog\";\nimport { AuthProviderContextProvider } from \"../../../contexts/auth\";\nimport { DataContextProvider } from \"../../../contexts/data\";\nimport { I18nContextProvider } from \"../../../contexts/i18n\";\nimport { LiveContextProvider } from \"../../../contexts/live\";\nimport { NotificationContextProvider } from \"../../../contexts/notification\";\nimport { RefineContextProvider } from \"../../../contexts/refine\";\nimport { ResourceContextProvider } from \"../../../contexts/resource\";\nimport { RouterContextProvider } from \"../../../contexts/router\";\nimport { UndoableQueueContextProvider } from \"../../../contexts/undoableQueue\";\nimport { UnsavedWarnContextProvider } from \"../../../contexts/unsavedWarn\";\n\nimport type { RefineProps } from \"../../../contexts/refine/types\";\nimport { useRouterMisuseWarning } from \"../../../hooks/router/use-router-misuse-warning/index\";\n\n/**\n * {@link https://refine.dev/docs/api-reference/core/components/refine-config `<Refine> component`} is the entry point of a refine app.\n * It is where the highest level of configuration of the app occurs.\n * Only a dataProvider is required to bootstrap the app. After adding a dataProvider, resources can be added as property.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/components/refine-config} for more details.\n */\nexport const Refine: React.FC<RefineProps> = ({\n  authProvider,\n  dataProvider,\n  routerProvider,\n  notificationProvider,\n  accessControlProvider,\n  auditLogProvider,\n  resources,\n  children,\n  liveProvider,\n  i18nProvider,\n  onLiveEvent,\n  options,\n}) => {\n  const {\n    optionsWithDefaults,\n    disableTelemetryWithDefault,\n    reactQueryWithDefaults,\n  } = handleRefineOptions({\n    options,\n  });\n\n  const disableRouteChangeHandler =\n    optionsWithDefaults.disableRouteChangeHandler;\n\n  const queryClient = useDeepMemo(() => {\n    if (reactQueryWithDefaults.clientConfig instanceof QueryClient) {\n      return reactQueryWithDefaults.clientConfig;\n    }\n\n    return new QueryClient({\n      ...reactQueryWithDefaults.clientConfig,\n      defaultOptions: {\n        ...reactQueryWithDefaults.clientConfig.defaultOptions,\n        queries: {\n          refetchOnWindowFocus: false,\n          placeholderData: keepPreviousData,\n          ...reactQueryWithDefaults.clientConfig.defaultOptions?.queries,\n        },\n      },\n    });\n  }, [reactQueryWithDefaults.clientConfig]);\n\n  useQuerySubscription(queryClient);\n\n  const useNotificationProviderValues = React.useMemo(() => {\n    return typeof notificationProvider === \"function\"\n      ? notificationProvider\n      : () => notificationProvider;\n  }, [notificationProvider]);\n\n  const notificationProviderContextValues = useNotificationProviderValues();\n\n  /**\n   * Warn our users if they are using the old way of routing in the wrong prop.\n   */\n  useRouterMisuseWarning(routerProvider);\n  /** */\n\n  return (\n    <QueryClientProvider client={queryClient}>\n      <NotificationContextProvider {...notificationProviderContextValues}>\n        <AuthProviderContextProvider\n          {...(authProvider ?? {})}\n          isProvided={Boolean(authProvider)}\n        >\n          <DataContextProvider dataProvider={dataProvider}>\n            <LiveContextProvider liveProvider={liveProvider}>\n              <RouterContextProvider router={routerProvider}>\n                <ResourceContextProvider resources={resources ?? []}>\n                  <I18nContextProvider i18nProvider={i18nProvider}>\n                    <AccessControlContextProvider\n                      {...(accessControlProvider ?? {})}\n                    >\n                      <AuditLogContextProvider {...(auditLogProvider ?? {})}>\n                        <UndoableQueueContextProvider>\n                          <RefineContextProvider\n                            mutationMode={optionsWithDefaults.mutationMode}\n                            warnWhenUnsavedChanges={\n                              optionsWithDefaults.warnWhenUnsavedChanges\n                            }\n                            syncWithLocation={\n                              optionsWithDefaults.syncWithLocation\n                            }\n                            undoableTimeout={\n                              optionsWithDefaults.undoableTimeout\n                            }\n                            liveMode={optionsWithDefaults.liveMode}\n                            onLiveEvent={onLiveEvent}\n                            options={optionsWithDefaults}\n                          >\n                            <UnsavedWarnContextProvider>\n                              <React.Fragment>\n                                {children}\n                                {!disableTelemetryWithDefault && <Telemetry />}\n                                {!disableRouteChangeHandler && (\n                                  <RouteChangeHandler />\n                                )}\n                              </React.Fragment>\n                            </UnsavedWarnContextProvider>\n                          </RefineContextProvider>\n                        </UndoableQueueContextProvider>\n                      </AuditLogContextProvider>\n                    </AccessControlContextProvider>\n                  </I18nContextProvider>\n                </ResourceContextProvider>\n              </RouterContextProvider>\n            </LiveContextProvider>\n          </DataContextProvider>\n        </AuthProviderContextProvider>\n      </NotificationContextProvider>\n    </QueryClientProvider>\n  );\n};\n","import React from \"react\";\n\nimport { useTelemetryData } from \"@hooks/useTelemetryData\";\n\nimport type { ITelemetryData } from \"./types\";\n\nconst encode = (payload: ITelemetryData): string | undefined => {\n  try {\n    const stringifiedPayload = JSON.stringify(payload || {});\n\n    if (typeof btoa !== \"undefined\") {\n      return btoa(stringifiedPayload);\n    }\n\n    return Buffer.from(stringifiedPayload).toString(\"base64\");\n  } catch (err) {\n    return undefined;\n  }\n};\n\nconst throughImage = (src: string) => {\n  const img = new Image();\n\n  img.src = src;\n};\n\nconst throughFetch = (src: string) => {\n  fetch(src);\n};\n\nconst transport = (src: string) => {\n  if (typeof Image !== \"undefined\") {\n    throughImage(src);\n  } else if (typeof fetch !== \"undefined\") {\n    throughFetch(src);\n  }\n};\n\nexport const Telemetry: React.FC<{}> = () => {\n  const payload = useTelemetryData();\n  const sent = React.useRef(false);\n\n  React.useEffect(() => {\n    if (sent.current) {\n      return;\n    }\n    const encoded = encode(payload);\n\n    if (!encoded) {\n      return;\n    }\n\n    transport(`https://telemetry.refine.dev/telemetry?payload=${encoded}`);\n    sent.current = true;\n  }, []);\n\n  return null;\n};\n","import { useContext } from \"react\";\n\nimport { AccessControlContext } from \"@contexts/accessControl\";\nimport { AuditLogContext } from \"@contexts/auditLog\";\nimport { DataContext } from \"@contexts/data\";\nimport { I18nContext } from \"@contexts/i18n\";\nimport { LiveContext } from \"@contexts/live\";\nimport { NotificationContext } from \"@contexts/notification\";\nimport { RouterContext } from \"@contexts/router\";\nimport { useResourceParams } from \"@hooks/use-resource-params\";\n\nimport { useIsExistAuthentication, useRefineContext } from \"..\";\nimport type { ITelemetryData } from \"../../components/telemetry/types\";\n\n// It reads and updates from package.json during build. ref: tsup.config.ts\nconst REFINE_VERSION = \"5.0.12\";\n\nexport const useTelemetryData = (): ITelemetryData => {\n  const auth = useIsExistAuthentication();\n  const auditLogContext = useContext(AuditLogContext);\n  const { liveProvider } = useContext(LiveContext);\n  const routerContext = useContext(RouterContext);\n  const dataContext = useContext(DataContext);\n  const { i18nProvider } = useContext(I18nContext);\n  const notificationContext = useContext(NotificationContext);\n  const accessControlContext = useContext(AccessControlContext);\n  const { resources } = useResourceParams();\n  const refineOptions = useRefineContext();\n\n  const auditLog =\n    !!auditLogContext.create ||\n    !!auditLogContext.get ||\n    !!auditLogContext.update;\n\n  const live =\n    !!liveProvider?.publish ||\n    !!liveProvider?.subscribe ||\n    !!liveProvider?.unsubscribe;\n\n  const router =\n    !!routerContext.Link ||\n    !!routerContext.go ||\n    !!routerContext.back ||\n    !!routerContext.parse;\n\n  const data = !!dataContext;\n\n  const i18n =\n    !!i18nProvider?.changeLocale ||\n    !!i18nProvider?.getLocale ||\n    !!i18nProvider?.translate;\n\n  const notification =\n    !!notificationContext.close || !!notificationContext.open;\n\n  const accessControl = !!accessControlContext.can;\n\n  const projectId = refineOptions?.options?.projectId;\n\n  return {\n    providers: {\n      auth,\n      auditLog,\n      live,\n      router,\n      data,\n      i18n,\n      notification,\n      accessControl,\n    },\n    version: REFINE_VERSION,\n    resourceCount: resources.length,\n    projectId,\n  };\n};\n","import type { RouterProvider } from \"../../../contexts/router/types\";\n\nexport const checkRouterPropMisuse = (value: RouterProvider) => {\n  // check if `routerProvider` prop is passed with legacy properties.\n  // If yes, console.warn the user to use `legacyRuterProvider` prop instead.\n  const bindings = [\"go\", \"parse\", \"back\", \"Link\"];\n\n  // check if `value` contains properties other than `bindings`\n  const otherProps = Object.keys(value).filter(\n    (key) => !bindings.includes(key),\n  );\n\n  const hasOtherProps = otherProps.length > 0;\n\n  if (hasOtherProps) {\n    console.warn(\n      `Unsupported properties are found in \\`routerProvider\\` prop. You provided \\`${otherProps.join(\n        \", \",\n      )}\\`. Supported properties are \\`${bindings.join(\n        \", \",\n      )}\\`. You may wanted to use \\`legacyRouterProvider\\` prop instead.`,\n    );\n\n    return true;\n  }\n\n  return false;\n};\n","import { checkRouterPropMisuse } from \"@definitions/helpers/check-router-prop-misuse\";\nimport React from \"react\";\nimport type { RouterProvider } from \"../../../contexts/router/types\";\n\nexport const useRouterMisuseWarning = (value?: RouterProvider) => {\n  const warned = React.useRef(false);\n\n  React.useEffect(() => {\n    if (warned.current === false) {\n      if (value) {\n        const warn = checkRouterPropMisuse(value);\n        if (warn) {\n          warned.current = true;\n        }\n      }\n    }\n  }, [value]);\n};\n","import React, { useEffect, useState } from \"react\";\n\nimport { useCancelNotification, useNotification, useTranslate } from \"@hooks\";\n\nimport { userFriendlySecond } from \"@definitions/helpers\";\nimport {\n  ActionTypes,\n  type IUndoableQueue,\n} from \"../../contexts/undoableQueue/types\";\n\nexport const UndoableQueue: React.FC<{\n  notification: IUndoableQueue;\n}> = ({ notification }) => {\n  const translate = useTranslate();\n\n  const { notificationDispatch } = useCancelNotification();\n  const { open } = useNotification();\n\n  const [timeoutId, setTimeoutId] = useState<number | undefined>();\n\n  const cancelNotification = () => {\n    if (notification.isRunning === true) {\n      if (notification.seconds === 0) {\n        notification.doMutation();\n      }\n      if (!notification.isSilent) {\n        open?.({\n          key: `${notification.id}-${notification.resource}-notification`,\n          type: \"progress\",\n          message: translate(\n            \"notifications.undoable\",\n            {\n              seconds: userFriendlySecond(notification.seconds),\n            },\n            `You have ${userFriendlySecond(\n              notification.seconds,\n            )} seconds to undo`,\n          ),\n          cancelMutation: notification.cancelMutation,\n          undoableTimeout: userFriendlySecond(notification.seconds),\n        });\n      }\n\n      if (notification.seconds > 0) {\n        if (timeoutId) {\n          clearTimeout(timeoutId);\n        }\n\n        const newTimeoutId = setTimeout(() => {\n          notificationDispatch({\n            type: ActionTypes.DECREASE_NOTIFICATION_SECOND,\n            payload: {\n              id: notification.id,\n              seconds: notification.seconds,\n              resource: notification.resource,\n            },\n          });\n        }, 1000) as unknown as number;\n\n        setTimeoutId(newTimeoutId);\n      }\n    }\n  };\n\n  useEffect(() => {\n    cancelNotification();\n  }, [notification]);\n\n  return null;\n};\n","import React from \"react\";\nimport { useActiveAuthProvider } from \"@definitions/index\";\nimport { useGo, useIsAuthenticated, useParsed } from \"@hooks\";\nimport type { GoConfig } from \"../../contexts/router/types\";\n\nexport type AuthCheckParams = any;\n\nexport type AuthenticatedProps = {\n  /**\n   * Unique key to identify the component.\n   * This is required if you have multiple `Authenticated` components at the same level.\n   * @required\n   */\n  key: React.Key;\n  /**\n   * Whether to redirect user if not logged in or not.\n   * If not set, user will be redirected to `redirectTo` property of the `check` function's response.\n   * If set to a string, user will be redirected to that string.\n   *\n   * This property only works if `fallback` is **not set**.\n   */\n  redirectOnFail?: string | true;\n  /**\n   * Whether to append current path to search params of the redirect url at `to` property.\n   *\n   * By default, `to` parameter is used by successful invocations of the `useLogin` hook.\n   * If `to` present, it will be used as the redirect url after successful login.\n   */\n  appendCurrentPathToQuery?: boolean;\n  /**\n   * Content to show if user is not logged in.\n   */\n  fallback?: React.ReactNode;\n  /**\n   * Content to show while checking whether user is logged in or not.\n   */\n  loading?: React.ReactNode;\n  /**\n   * Content to show if user is logged in.\n   */\n  children?: React.ReactNode;\n  /**\n   * optional params to be passed to the Auth Provider's check method via the useIsAuthenticated hook.\n   */\n  params?: AuthCheckParams;\n};\n\n/**\n * `<Authenticated>` is the component form of {@link https://refine.dev/docs/api-reference/core/hooks/auth/useAuthenticated `useAuthenticated`}. It internally uses `useAuthenticated` to provide it's functionality.\n *\n * @requires {@link https://react.dev/learn/rendering-lists#why-does-react-need-keys `key`} prop if you have multiple components at the same level.\n * In React, components don't automatically unmount and remount with prop changes, which is generally good for performance. However, for specific cases this can cause issues like unwanted content rendering (`fallback` or `children`). To solve this, assigning unique `key` values to each instance of component is necessary, forcing React to unmount and remount the component, rather than just updating its props.\n * @example\n *```tsx\n * <Authenticated key=\"dashboard\">\n *   <h1>Dashboard Page</h1>\n * </Authenticated>\n *```\n *\n * @see {@link https://refine.dev/docs/core/components/auth/authenticated `<Authenticated>`} component for more details.\n */\nexport function Authenticated({\n  redirectOnFail = true,\n  appendCurrentPathToQuery = true,\n  children,\n  fallback: fallbackContent,\n  loading: loadingContent,\n  params,\n}: AuthenticatedProps): React.JSX.Element | null {\n  const activeAuthProvider = useActiveAuthProvider();\n  const hasAuthProvider = Boolean(activeAuthProvider?.isProvided);\n  const parsed = useParsed();\n  const go = useGo();\n\n  const {\n    isFetching,\n    data: {\n      authenticated: isAuthenticatedStatus,\n      redirectTo: authenticatedRedirect,\n    } = {},\n  } = useIsAuthenticated({\n    params,\n  });\n\n  const isAuthenticated = hasAuthProvider ? isAuthenticatedStatus : true;\n  // when there is no auth provider\n  if (!hasAuthProvider) {\n    return <>{children ?? null}</>;\n  }\n\n  // when checking authentication status\n  if (isFetching) {\n    return <>{loadingContent ?? null}</>;\n  }\n\n  // when user is authenticated return children\n  if (isAuthenticated) {\n    return <>{children ?? null}</>;\n  }\n  // when user is not authenticated redirect or render fallbackContent\n\n  // render fallbackContent if it is exist\n  if (typeof fallbackContent !== \"undefined\") {\n    return <>{fallbackContent ?? null}</>;\n  }\n  // if there is no fallbackContent, redirect page\n\n  // Redirect url to use. use redirectOnFail if it is set.\n  // Otherwise use redirectTo property of the check function's response.\n  const appliedRedirect =\n    typeof redirectOnFail === \"string\"\n      ? redirectOnFail\n      : (authenticatedRedirect as string | undefined);\n\n  // Current pathname to append to the redirect url.\n  // User will be redirected to this url after successful mutation. (like login)\n  const pathname = `${parsed.pathname}`.replace(/(\\?.*|#.*)$/, \"\");\n\n  // Redirect if appliedRedirect is set, otherwise return null.\n  if (appliedRedirect) {\n    const queryToValue: string | undefined = parsed.params?.to\n      ? parsed.params.to\n      : go({\n          to: pathname,\n          options: { keepQuery: true },\n          type: \"path\",\n        });\n\n    return (\n      <Redirect\n        config={{\n          to: appliedRedirect,\n          query:\n            appendCurrentPathToQuery && (queryToValue ?? \"\").length > 1\n              ? {\n                  to: queryToValue,\n                }\n              : undefined,\n          type: \"replace\",\n        }}\n      />\n    );\n  }\n\n  return null;\n}\n\nconst Redirect = ({ config }: { config: GoConfig }) => {\n  const go = useGo();\n\n  React.useEffect(() => {\n    go(config);\n  }, [go, config]);\n\n  return null;\n};\n","import { useEffect, useContext } from \"react\";\nimport { useActiveAuthProvider } from \"@definitions/index\";\nimport { RouterContext } from \"../../contexts/router\";\n\nexport const RouteChangeHandler: React.FC = () => {\n  const routerContext = useContext(RouterContext);\n  const authProvider = useActiveAuthProvider();\n  const parse = routerContext.parse?.();\n  const pathname = parse?.()?.pathname || \"\";\n\n  useEffect(() => {\n    authProvider?.check?.().catch(() => false);\n  }, [pathname]);\n\n  return null;\n};\n","import React, { useEffect } from \"react\";\nimport type { UseQueryOptions } from \"@tanstack/react-query\";\n\nimport { useCan, useResourceParams } from \"@hooks\";\n\nimport type { CanReturnType } from \"../../contexts/accessControl/types\";\nimport type { BaseKey } from \"../../contexts/data/types\";\nimport type { IResourceItem } from \"../../contexts/resource/types\";\n\ntype ITreeResource = IResourceItem & {\n  key?: string;\n  children: ITreeResource[];\n};\n\ntype CanParams = {\n  resource?: IResourceItem & { children?: ITreeResource[] };\n  id?: BaseKey;\n  [key: string]: any;\n};\n\ntype OnUnauthorizedProps = {\n  resource?: string;\n  reason?: string;\n  action: string;\n  params: CanParams;\n};\n\ntype CanAccessBaseProps = {\n  /**\n   * Resource name for API data interactions\n   */\n  resource?: string;\n  /**\n   * Intended action on resource\n   */\n  action: string;\n  /**\n   * Parameters associated with the resource\n   * @type { resource?: [IResourceItem](https://refine.dev/docs/api-reference/core/interfaceReferences/#canparams), id?: [BaseKey](https://refine.dev/docs/api-reference/core/interfaceReferences/#basekey), [key: string]: any }\n   */\n  params?: CanParams;\n  /**\n   * Content to show if access control returns `false`\n   */\n  fallback?: React.ReactNode;\n  /**\n   * Callback function to be called if access control returns `can: false`\n   */\n  onUnauthorized?: (props: OnUnauthorizedProps) => void;\n  children: React.ReactNode;\n  queryOptions?: Omit<\n    UseQueryOptions<CanReturnType>,\n    \"queryKey\" | \"queryFn\"\n  > & {\n    queryKey?: UseQueryOptions<CanReturnType>[\"queryKey\"];\n    queryFn?: UseQueryOptions<CanReturnType>[\"queryFn\"];\n  };\n};\n\ntype CanAccessWithoutParamsProps = {\n  [key in Exclude<\n    keyof CanAccessBaseProps,\n    \"fallback\" | \"children\"\n  >]?: undefined;\n} & {\n  [key in \"fallback\" | \"children\"]?: CanAccessBaseProps[key];\n};\n\nexport type CanAccessProps = CanAccessBaseProps | CanAccessWithoutParamsProps;\n\nexport const CanAccess: React.FC<CanAccessProps> = ({\n  resource: resourceFromProp,\n  action: actionFromProp,\n  params: paramsFromProp,\n  fallback,\n  onUnauthorized,\n  children,\n  queryOptions: componentQueryOptions,\n  ...rest\n}) => {\n  const {\n    id,\n    resource,\n    action: fallbackAction = \"\",\n  } = useResourceParams({\n    resource: resourceFromProp,\n    id: paramsFromProp?.id,\n  });\n\n  const action = actionFromProp ?? fallbackAction;\n\n  const params = paramsFromProp ?? {\n    id,\n    resource,\n  };\n\n  const { data } = useCan({\n    resource: resource?.name,\n    action,\n    params,\n    queryOptions: componentQueryOptions,\n  });\n\n  useEffect(() => {\n    if (onUnauthorized && data?.can === false) {\n      onUnauthorized({\n        resource: resource?.name,\n        action,\n        reason: data?.reason,\n        params,\n      });\n    }\n  }, [data?.can]);\n\n  if (data?.can) {\n    if (React.isValidElement(children)) {\n      const Children = React.cloneElement(children, rest);\n      return Children;\n    }\n\n    return <>{children}</>;\n  }\n\n  if (data?.can === false) {\n    return <>{fallback ?? null}</>;\n  }\n\n  return null;\n};\n","import React, { type CSSProperties, type SVGProps, useEffect } from \"react\";\nimport { CSSRules } from \"./styles\";\n\nconst text =\n  \"If you find Refine useful, you can contribute to its growth by giving it a star on GitHub\";\n\ntype Props = {\n  containerStyle?: CSSProperties;\n};\n\nexport const GitHubBanner = ({ containerStyle }: Props) => {\n  useEffect(() => {\n    const styleTag = document.createElement(\"style\");\n    document.head.appendChild(styleTag);\n    CSSRules.forEach((rule) =>\n      styleTag.sheet?.insertRule(rule, styleTag.sheet.cssRules.length),\n    );\n  }, []);\n\n  return (\n    <div\n      className=\"banner bg-top-announcement\"\n      style={{\n        width: \"100%\",\n        height: \"48px\",\n      }}\n    >\n      <div\n        style={{\n          position: \"relative\",\n          display: \"flex\",\n          justifyContent: \"center\",\n          alignItems: \"center\",\n          paddingLeft: \"200px\",\n          width: \"100%\",\n          maxWidth: \"100vw\",\n          height: \"100%\",\n          borderBottom: \"1px solid #47ebeb26\",\n          ...containerStyle,\n        }}\n      >\n        <div\n          className=\"top-announcement-mask\"\n          style={{\n            position: \"absolute\",\n            left: 0,\n            top: 0,\n            width: \"100%\",\n            height: \"100%\",\n            borderBottom: \"1px solid #47ebeb26\",\n          }}\n        >\n          <div\n            style={{\n              position: \"relative\",\n              width: \"960px\",\n              height: \"100%\",\n              display: \"flex\",\n              justifyContent: \"space-between\",\n              margin: \"0 auto\",\n            }}\n          >\n            <div\n              style={{\n                width: \"calc(50% - 300px)\",\n                height: \"100%\",\n                position: \"relative\",\n              }}\n            >\n              <GlowSmall\n                style={{\n                  animationDelay: \"1.5s\",\n                  position: \"absolute\",\n                  top: \"2px\",\n                  right: \"220px\",\n                }}\n                id={\"1\"}\n              />\n              <GlowSmall\n                style={{\n                  animationDelay: \"1s\",\n                  position: \"absolute\",\n                  top: \"8px\",\n                  right: \"100px\",\n                  transform: \"rotate(180deg)\",\n                }}\n                id={\"2\"}\n              />\n              <GlowBig\n                style={{\n                  position: \"absolute\",\n                  right: \"10px\",\n                }}\n                id={\"3\"}\n              />\n            </div>\n\n            <div\n              style={{\n                width: \"calc(50% - 300px)\",\n                height: \"100%\",\n                position: \"relative\",\n              }}\n            >\n              <GlowSmall\n                style={{\n                  animationDelay: \"2s\",\n                  position: \"absolute\",\n                  top: \"6px\",\n                  right: \"180px\",\n                  transform: \"rotate(180deg)\",\n                }}\n                id={\"4\"}\n              />\n              <GlowSmall\n                style={{\n                  animationDelay: \"0.5s\",\n                  transitionDelay: \"1.3s\",\n                  position: \"absolute\",\n                  top: \"2px\",\n                  right: \"40px\",\n                }}\n                id={\"5\"}\n              />\n              <GlowBig\n                style={{\n                  position: \"absolute\",\n                  right: \"-70px\",\n                }}\n                id={\"6\"}\n              />\n            </div>\n          </div>\n        </div>\n        <Text text={text} />\n      </div>\n    </div>\n  );\n};\n\nconst Text = ({ text }: { text: string }) => {\n  return (\n    <a\n      className=\"gh-link\"\n      href=\"https://s.refine.dev/github-support\"\n      target=\"_blank\"\n      rel=\"noreferrer\"\n      style={{\n        position: \"absolute\",\n        height: \"100%\",\n        padding: \"0 60px\",\n        display: \"flex\",\n        flexWrap: \"nowrap\",\n        whiteSpace: \"nowrap\",\n        justifyContent: \"center\",\n        alignItems: \"center\",\n        backgroundImage:\n          \"linear-gradient(90deg, rgba(31, 63, 72, 0.00) 0%, #1F3F48 10%, #1F3F48 90%, rgba(31, 63, 72, 0.00) 100%)\",\n      }}\n    >\n      <div\n        style={{\n          color: \"#fff\",\n          display: \"flex\",\n          flexDirection: \"row\",\n          gap: \"8px\",\n        }}\n      >\n        <span\n          style={{\n            display: \"flex\",\n            flexDirection: \"row\",\n            justifyContent: \"center\",\n            alignItems: \"center\",\n          }}\n        >\n          ⭐️\n        </span>\n        <span\n          className=\"text\"\n          style={{\n            fontSize: \"16px\",\n            lineHeight: \"24px\",\n          }}\n        >\n          {text}\n        </span>\n        <span\n          style={{\n            display: \"flex\",\n            flexDirection: \"row\",\n            justifyContent: \"center\",\n            alignItems: \"center\",\n          }}\n        >\n          ⭐️\n        </span>\n      </div>\n    </a>\n  );\n};\n\nconst GlowSmall = ({ style, ...props }: SVGProps<SVGSVGElement>) => {\n  return (\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      width={80}\n      height={40}\n      fill=\"none\"\n      style={{\n        opacity: 1,\n        animation: \"top-announcement-glow 1s ease-in-out infinite alternate\",\n        ...style,\n      }}\n    >\n      <circle cx={40} r={40} fill={`url(#${props.id}-a)`} fillOpacity={0.5} />\n      <defs>\n        <radialGradient\n          id={`${props.id}-a`}\n          cx={0}\n          cy={0}\n          r={1}\n          gradientTransform=\"matrix(0 40 -40 0 40 0)\"\n          gradientUnits=\"userSpaceOnUse\"\n        >\n          <stop stopColor=\"#47EBEB\" />\n          <stop offset={1} stopColor=\"#47EBEB\" stopOpacity={0} />\n        </radialGradient>\n      </defs>\n    </svg>\n  );\n};\n\nconst GlowBig = ({ style, ...props }: SVGProps<SVGSVGElement>) => (\n  <svg\n    xmlns=\"http://www.w3.org/2000/svg\"\n    width={120}\n    height={48}\n    fill=\"none\"\n    {...props}\n    style={{\n      opacity: 1,\n      animation: \"top-announcement-glow 1s ease-in-out infinite alternate\",\n      ...style,\n    }}\n  >\n    <circle\n      cx={60}\n      cy={24}\n      r={60}\n      fill={`url(#${props.id}-a)`}\n      fillOpacity={0.5}\n    />\n    <defs>\n      <radialGradient\n        id={`${props.id}-a`}\n        cx={0}\n        cy={0}\n        r={1}\n        gradientTransform=\"matrix(0 60 -60 0 60 24)\"\n        gradientUnits=\"userSpaceOnUse\"\n      >\n        <stop stopColor=\"#47EBEB\" />\n        <stop offset={1} stopColor=\"#47EBEB\" stopOpacity={0} />\n      </radialGradient>\n    </defs>\n  </svg>\n);\n","export const CSSRules = [\n  `\n    .bg-top-announcement {\n        border-bottom: 1px solid rgba(71, 235, 235, 0.15);\n        background: radial-gradient(\n                218.19% 111.8% at 0% 0%,\n                rgba(71, 235, 235, 0.1) 0%,\n                rgba(71, 235, 235, 0.2) 100%\n            ),\n            #14141f;\n    }\n    `,\n  `\n    .top-announcement-mask {\n        mask-image: url(https://refine.ams3.cdn.digitaloceanspaces.com/website/static/assets/hexagon.svg);\n        -webkit-mask-image: url(https://refine.ams3.cdn.digitaloceanspaces.com/website/static/assets/hexagon.svg);\n        mask-repeat: repeat;\n        -webkit-mask-repeat: repeat;\n        background: rgba(71, 235, 235, 0.25);\n    }\n    `,\n  `\n    .banner {\n        display: flex;\n        @media (max-width: 1000px) {\n            display: none;\n        }\n    }`,\n  `\n    .gh-link, .gh-link:hover, .gh-link:active, .gh-link:visited, .gh-link:focus {\n        text-decoration: none;\n        z-index: 9;\n    }\n    `,\n  `\n    @keyframes top-announcement-glow {\n        0% {\n            opacity: 1;\n        }\n\n        100% {\n            opacity: 0;\n        }\n    }\n    `,\n];\n","import React from \"react\";\n\nimport { useTranslate } from \"@hooks/i18n\";\n\nimport type { BaseRecord, HttpError } from \"../../contexts/data/types\";\nimport type { AutoSaveIndicatorElements } from \"../../hooks/form/types\";\nimport type { UseUpdateReturnType } from \"../../hooks/data/useUpdate\";\n\nexport type AutoSaveIndicatorProps<\n  TData extends BaseRecord = BaseRecord,\n  TError extends HttpError = HttpError,\n  TVariables = {},\n> = {\n  /**\n   * The data returned by the update request.\n   */\n  data?: UseUpdateReturnType<TData, TError, TVariables>[\"mutation\"][\"data\"];\n  /**\n   * The error returned by the update request.\n   */\n  error?: UseUpdateReturnType<TData, TError, TVariables>[\"mutation\"][\"error\"];\n  /**\n   * The status of the update request.\n   */\n  status: UseUpdateReturnType<TData, TError, TVariables>[\"mutation\"][\"status\"];\n\n  /**\n   * The elements to display for each status.\n   */\n  elements?: AutoSaveIndicatorElements;\n};\n\nexport const AutoSaveIndicator: React.FC<AutoSaveIndicatorProps> = ({\n  status,\n  elements: {\n    success = (\n      <Message translationKey=\"autoSave.success\" defaultMessage=\"saved\" />\n    ),\n    error = (\n      <Message\n        translationKey=\"autoSave.error\"\n        defaultMessage=\"auto save failure\"\n      />\n    ),\n    loading = (\n      <Message translationKey=\"autoSave.loading\" defaultMessage=\"saving...\" />\n    ),\n    idle = (\n      <Message\n        translationKey=\"autoSave.idle\"\n        defaultMessage=\"waiting for changes\"\n      />\n    ),\n  } = {},\n}) => {\n  switch (status) {\n    case \"success\":\n      return <>{success}</>;\n    case \"error\":\n      return <>{error}</>;\n    case \"pending\":\n      return <>{loading}</>;\n    case \"idle\":\n      return <>{idle}</>;\n    default:\n      return <>{idle}</>;\n  }\n};\n\nconst Message = ({\n  translationKey,\n  defaultMessage,\n}: {\n  translationKey: string;\n  defaultMessage: string;\n}) => {\n  const translate = useTranslate();\n\n  return <span>{translate(translationKey, defaultMessage)}</span>;\n};\n"],"mappings":"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","names":["useNavigation","import_react","import_react_query","React","qs","warnOnce","unionWith","differenceWith","filter","fromPairs","zip","text","import_react","React","pluralize","resource","import_react","import_react","import_react","import_react","React","import_react","import_react","defaultTitle","debounce","keys","import_devtools_internal","import_react_query","keys","import_devtools_internal","import_react_query","import_react_query","keys","keys","import_devtools_internal","import_react_query","keys","buildSuccessNotification","buildNotification","import_devtools_internal","import_react_query","keys","buildSuccessNotification","buildNotification","import_devtools_internal","import_react_query","keys","buildSuccessNotification","buildNotification","import_devtools_internal","import_react_query","keys","buildSuccessNotification","buildNotification","import_devtools_internal","import_react_query","keys","import_devtools_internal","import_react_query","keys","import_react","import_devtools_internal","import_react_query","import_react","keys","_a","meta","import_react","import_devtools_internal","import_react_query","keys","import_react","import_devtools_internal","import_react_query","import_warn_once","EMPTY_ARRAY","keys","warnOnce","meta","import_devtools_internal","import_react_query","ActionTypes","keys","_a","import_devtools_internal","import_react_query","keys","missingValuesError","missingResourceError","import_devtools_internal","import_react_query","keys","import_devtools_internal","import_react_query","keys","missingValuesError","missingResourceError","import_devtools_internal","import_react_query","keys","missingIdError","missingValuesError","missingResourceError","_a","import_devtools_internal","import_react_query","keys","import_react","import_devtools_internal","import_react_query","keys","import_devtools_internal","import_react_query","keys","import_react","import_react","React","import_react","import_devtools_internal","import_react_query","keys","meta","import_react","import_react","React","import_react","import_react_query","keys","import_react","import_react","import_react","import_react","import_react","isEqual","React","import_react","import_react","React","import_react","import_react","import_react","React","import_react","import_react","import_react","papaparse","import_react","import_warn_once","React","warnOnce","redirect","_a","id","missingResourceError","missingIdError","missingValuesError","import_react","useNavigation","import_react","import_react","React","import_react","import_react","import_react","import_react","import_isEqual","isEqual","React","import_react","import_react","useParse","React","React","import_react","resource","identifier","React","import_react","import_warn_once","React","warnOnce","useGo","React","useNavigation","import_warn_once","warnOnce","idWarningMessage","import_react","import_papaparse","papaparse","chunk","import_react","import_react","useBack","React","import_react","import_warn_once","warnOnce","React","import_react","import_devtools_internal","import_react_query","import_react","React","keys","import_react","React","import_react","import_debounce","get","uniqBy","debounce","import_react","import_differenceWith","import_isEqual","import_warn_once","EMPTY_ARRAY","React","warnOnce","sorters","filters","pageSize","currentPage","_a","differenceWith","isEqual","import_react","import_devtools_internal","import_react_query","import_react","React","get","keys","import_react","import_devtools_internal","import_react_query","get","keys","import_react","import_warn_once","warnOnce","import_react","key","React","keys","import_react","React","import_react","React","import_react","import_react","React","useNavigation","Link","LinkComponent","React","import_react_query","keys","React","import_react","import_react","Link","text","React","import_react","Link","text","React","import_react","Link","text","React","import_react","React","React","import_react","import_react","React","import_react","React","React","import_react","import_devtools_internal","import_react_query","import_react","import_react","React","import_react","React","React","import_react","import_react","React","import_react","_a","import_react","React","import_react","React","text","import_react","React"]}