{"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":";;;;AA8DA,MAAaK,gCAG+C;CAC1D,MAAMyB,WAAWxB,0BAAyB;CAC1C,MAAMqB,2CAEJC,UAGYlB,sBACT;EACH,MAAMC,gBACJiB,YAAYlB,oBACRE,cACAH,mBAAmBmB,OAAO;EAChC,SAASC,iCAEP,GAAGP,aAA0B;GAC7BQ,SAASC,cAAc,GAAGT,WAAW;GACrC,OAAOX;EACT;EACAkB,iCAAiCN,kBAC/BM;EACF,OAAOA;CAIT;CAEA,MAAMA,mCACJF,wCAAwC;CAE1C,OAAO;EACL,GAAGG;EACHH;EACAE;CACF;AACF"}