{"version":3,"file":"GlobalContextProvider.mjs","sources":["../../../../../../../../web/src/ui/b2b/GlobalContextProvider.tsx"],"sourcesContent":["import { AuthFlowType, Callbacks, StytchProjectConfigurationInput } from '@stytch/core/public';\nimport React, { useContext } from 'react';\n\nimport { StytchB2BClient } from '../../b2b/StytchB2BClient';\nimport { StytchB2BExtendedLoginConfig } from '../../types';\nimport { noop } from '../../utils';\nimport { useEvent } from '../hooks/useEvent';\nimport { DEFAULT_MFA_STATE } from './MfaState';\nimport { Action, reducer } from './reducer';\nimport { AppScreens } from './types/AppScreens';\nimport { AppState } from './types/AppState';\nimport { ErrorType } from './types/ErrorType';\n\nexport type AppContext<TProjectConfiguration extends StytchProjectConfigurationInput> = {\n  client: StytchB2BClient<TProjectConfiguration>;\n  config: StytchB2BExtendedLoginConfig;\n  callbacks?: Callbacks<TProjectConfiguration>;\n  state: [AppState, React.Dispatch<Action>];\n};\n\nexport const DEFAULT_STATE: AppState = {\n  screen: AppScreens.Main,\n  screenHistory: [],\n  formState: {\n    emailState: {\n      userSuppliedEmail: '',\n    },\n    otpState: {\n      codeExpiration: null,\n    },\n    discoveryState: {\n      email: '',\n      discoveredOrganizations: [],\n    },\n    passwordState: {\n      email: '',\n    },\n    ssoDiscoveryState: {\n      connections: [],\n    },\n  },\n  flowState: {\n    type: AuthFlowType.Organization,\n    organization: null,\n  },\n  mfa: DEFAULT_MFA_STATE,\n  primary: {},\n  error: {\n    type: ErrorType.Default,\n    canGoBack: false,\n  },\n};\n\nexport const GlobalContext = React.createContext<AppContext<StytchProjectConfigurationInput>>({\n  client: {} as StytchB2BClient<StytchProjectConfigurationInput>,\n  config: {} as StytchB2BExtendedLoginConfig,\n  state: [DEFAULT_STATE, () => null],\n});\n\nexport type GlobalContextProviderProps<TProjectConfiguration extends StytchProjectConfigurationInput> = {\n  children: React.ReactNode;\n  client: StytchB2BClient<TProjectConfiguration>;\n  config: StytchB2BExtendedLoginConfig;\n  callbacks?: Callbacks<TProjectConfiguration>;\n  initialState?: AppState;\n};\n\nexport const GlobalContextProvider = <TProjectConfiguration extends StytchProjectConfigurationInput>({\n  children,\n  client,\n  config,\n  callbacks,\n  initialState,\n}: GlobalContextProviderProps<TProjectConfiguration>) => {\n  const state = React.useReducer(reducer, initialState ?? DEFAULT_STATE);\n\n  return <GlobalContext.Provider value={{ client, state, config, callbacks }}>{children}</GlobalContext.Provider>;\n};\n\nexport const useGlobalContext = () => useContext(GlobalContext);\nexport const useStytch = () => useGlobalContext().client;\nexport const useGlobalReducer = () => useGlobalContext().state;\nexport const useConfig = () => useGlobalContext().config;\nexport const useErrorCallback = () => useEvent(useGlobalContext().callbacks?.onError ?? noop);\nexport const useEventCallback = () => useEvent(useGlobalContext().callbacks?.onEvent ?? noop);\n"],"names":["DEFAULT_STATE","screen","AppScreens","Main","screenHistory","formState","emailState","userSuppliedEmail","otpState","codeExpiration","discoveryState","email","discoveredOrganizations","passwordState","ssoDiscoveryState","connections","flowState","type","AuthFlowType","Organization","organization","mfa","DEFAULT_MFA_STATE","primary","error","ErrorType","Default","canGoBack","GlobalContext","React","createContext","client","config","state","GlobalContextProvider","children","callbacks","initialState","useReducer","reducer","Provider","value","useGlobalContext","useContext","useStytch","useGlobalReducer","useConfig","useErrorCallback","useEvent","onError","noop","useEventCallback","onEvent"],"mappings":";;;;;;;;;;MAoBaA,aAAAA,GAA0B;AACrCC,IAAAA,MAAAA,EAAQC,WAAWC,IAAI;AACvBC,IAAAA,aAAAA,EAAe,EAAE;IACjBC,SAAAA,EAAW;QACTC,UAAAA,EAAY;YACVC,iBAAAA,EAAmB;AACrB,SAAA;QACAC,QAAAA,EAAU;YACRC,cAAAA,EAAgB;AAClB,SAAA;QACAC,cAAAA,EAAgB;YACdC,KAAAA,EAAO,EAAA;AACPC,YAAAA,uBAAAA,EAAyB;AAC3B,SAAA;QACAC,aAAAA,EAAe;YACbF,KAAAA,EAAO;AACT,SAAA;QACAG,iBAAAA,EAAmB;AACjBC,YAAAA,WAAAA,EAAa;AACf;AACF,KAAA;IACAC,SAAAA,EAAW;AACTC,QAAAA,IAAAA,EAAMC,aAAaC,YAAY;QAC/BC,YAAAA,EAAc;AAChB,KAAA;IACAC,GAAAA,EAAKC,iBAAAA;AACLC,IAAAA,OAAAA,EAAS,EAAC;IACVC,KAAAA,EAAO;AACLP,QAAAA,IAAAA,EAAMQ,UAAUC,OAAO;QACvBC,SAAAA,EAAW;AACb;AACF;AAEO,MAAMC,aAAAA,iBAAgBC,EAAAA,CAAMC,aAAa,CAA8C;AAC5FC,IAAAA,MAAAA,EAAQ,EAAC;AACTC,IAAAA,MAAAA,EAAQ,EAAC;IACTC,KAAAA,EAAO;AAACjC,QAAAA,aAAAA;QAAe,IAAM;AAAK;AACpC,CAAA;AAUO,MAAMkC,qBAAAA,GAAwB,CAAgE,EACnGC,QAAQ,EACRJ,MAAM,EACNC,MAAM,EACNI,SAAS,EACTC,YAAY,EACsC,GAAA;AAClD,IAAA,MAAMJ,KAAAA,GAAQJ,EAAAA,CAAMS,UAAU,CAACC,SAASF,YAAAA,IAAgBrC,aAAAA,CAAAA;IAExD,qBAAO6B,EAAA,CAAA,aAAA,CAACD,cAAcY,QAAQ,EAAA;QAACC,KAAAA,EAAO;AAAEV,YAAAA,MAAAA;AAAQE,YAAAA,KAAAA;AAAOD,YAAAA,MAAAA;AAAQI,YAAAA;AAAU;AAAID,KAAAA,EAAAA,QAAAA,CAAAA;AAC/E;AAEO,MAAMO,gBAAAA,GAAmB,IAAMC,CAAAA,CAAWf,aAAAA;AAC1C,MAAMgB,SAAAA,GAAY,IAAMF,gBAAAA,EAAAA,CAAmBX;AAC3C,MAAMc,gBAAAA,GAAmB,IAAMH,gBAAAA,EAAAA,CAAmBT;AAClD,MAAMa,SAAAA,GAAY,IAAMJ,gBAAAA,EAAAA,CAAmBV;AAC3C,MAAMe,mBAAmB,IAAMC,QAAAA,CAASN,mBAAmBN,SAAS,EAAEa,WAAWC,IAAAA;AACjF,MAAMC,mBAAmB,IAAMH,QAAAA,CAASN,mBAAmBN,SAAS,EAAEgB,WAAWF,IAAAA;;;;"}