{"version":3,"names":["DynamicMiddlewareInstance","GetDispatch","GetState","MiddlewareApiConfig","TSHelpersExtractDispatchExtensions","createDynamicMiddleware","cDM","Context","ReactReduxContextValue","createDispatchHook","ReactReduxContext","useDispatch","useDefaultDispatch","Action","Dispatch","Middleware","UnknownAction","UseDispatchWithMiddlewareHook","State","DispatchType","Middlewares","CreateDispatchWithMiddlewareHook","middlewares","withTypes","MiddlewareConfig","ActionFromDispatch","ReactDynamicMiddlewareInstance","createDispatchWithMiddlewareHookFactory","context","createDispatchWithMiddlewareHook","instance","addMiddleware"],"sources":["../../src/dynamicMiddleware/react/index.ts"],"sourcesContent":["import type {\n  DynamicMiddlewareInstance,\n  GetDispatch,\n  GetState,\n  MiddlewareApiConfig,\n  TSHelpersExtractDispatchExtensions,\n} from '@reduxjs/toolkit'\nimport { createDynamicMiddleware as cDM } from '@reduxjs/toolkit'\nimport type { Context } from 'react'\nimport type { ReactReduxContextValue } from 'react-redux'\nimport {\n  createDispatchHook,\n  ReactReduxContext,\n  useDispatch as useDefaultDispatch,\n} from 'react-redux'\nimport type { Action, Dispatch, Middleware, UnknownAction } from 'redux'\n\nexport type UseDispatchWithMiddlewareHook<\n  Middlewares extends Middleware<any, State, DispatchType>[] = [],\n  State = any,\n  DispatchType extends Dispatch<UnknownAction> = Dispatch<UnknownAction>,\n> = () => TSHelpersExtractDispatchExtensions<Middlewares> & DispatchType\n\nexport type CreateDispatchWithMiddlewareHook<\n  State = any,\n  DispatchType extends Dispatch<UnknownAction> = Dispatch<UnknownAction>,\n> = {\n  <\n    Middlewares extends [\n      Middleware<any, State, DispatchType>,\n      ...Middleware<any, State, DispatchType>[],\n    ],\n  >(\n    ...middlewares: Middlewares\n  ): UseDispatchWithMiddlewareHook<Middlewares, State, DispatchType>\n  withTypes<\n    MiddlewareConfig extends MiddlewareApiConfig,\n  >(): CreateDispatchWithMiddlewareHook<\n    GetState<MiddlewareConfig>,\n    GetDispatch<MiddlewareConfig>\n  >\n}\n\ntype ActionFromDispatch<DispatchType extends Dispatch<Action>> =\n  DispatchType extends Dispatch<infer Action> ? Action : never\n\ntype ReactDynamicMiddlewareInstance<\n  State = any,\n  DispatchType extends Dispatch<UnknownAction> = Dispatch<UnknownAction>,\n> = DynamicMiddlewareInstance<State, DispatchType> & {\n  createDispatchWithMiddlewareHookFactory: (\n    context?: Context<ReactReduxContextValue<\n      State,\n      ActionFromDispatch<DispatchType>\n    > | null>,\n  ) => CreateDispatchWithMiddlewareHook<State, DispatchType>\n  createDispatchWithMiddlewareHook: CreateDispatchWithMiddlewareHook<\n    State,\n    DispatchType\n  >\n}\n\nexport const createDynamicMiddleware = <\n  State = any,\n  DispatchType extends Dispatch<UnknownAction> = Dispatch<UnknownAction>,\n>(): ReactDynamicMiddlewareInstance<State, DispatchType> => {\n  const instance = cDM<State, DispatchType>()\n  const createDispatchWithMiddlewareHookFactory = (\n    // @ts-ignore\n    context: Context<ReactReduxContextValue<\n      State,\n      ActionFromDispatch<DispatchType>\n    > | null> = ReactReduxContext,\n  ) => {\n    const useDispatch =\n      context === ReactReduxContext\n        ? useDefaultDispatch\n        : createDispatchHook(context)\n    function createDispatchWithMiddlewareHook<\n      Middlewares extends Middleware<any, State, DispatchType>[],\n    >(...middlewares: Middlewares) {\n      instance.addMiddleware(...middlewares)\n      return useDispatch\n    }\n    createDispatchWithMiddlewareHook.withTypes = () =>\n      createDispatchWithMiddlewareHook\n    return createDispatchWithMiddlewareHook as CreateDispatchWithMiddlewareHook<\n      State,\n      DispatchType\n    >\n  }\n\n  const createDispatchWithMiddlewareHook =\n    createDispatchWithMiddlewareHookFactory()\n\n  return {\n    ...instance,\n    createDispatchWithMiddlewareHookFactory,\n    createDispatchWithMiddlewareHook,\n  }\n}\n"],"mappings":"kLA8DA,MAAaK,MAG+C,CAC1D,IAAMyB,EAAWxB,EAAyB,EACpCqB,GAEJC,EAGYlB,IACT,CACH,IAAMC,EACJiB,IAAYlB,EACRE,EACAH,EAAmBmB,CAAO,EAChC,SAASC,EAEP,GAAGP,EAA0B,CAE7B,OADAQ,EAASC,cAAc,GAAGT,CAAW,EAC9BX,CACT,CAGA,MAFAkB,GAAiCN,cAC/BM,EACKA,CAIT,EAEMA,EACJF,EAAwC,EAE1C,MAAO,CACL,GAAGG,EACHH,0CACAE,kCACF,CACF"}