{"version":3,"file":"index.mjs","sources":["../../../../../../../../../web/src/ui/b2b/reducer/index.ts"],"sourcesContent":["import {\n  AuthFlowType,\n  DiscoveredOrganization,\n  OrganizationBySlugMatch,\n  SSOActiveConnection,\n} from '@stytch/core/public';\n\nimport { AppScreens } from '../types/AppScreens';\nimport { AppState } from '../types/AppState';\nimport { ErrorType } from '../types/ErrorType';\nimport { MfaAction, mfaReducer } from './mfa';\nimport { pushHistory, replaceHistory } from './navigation';\n\nexport type Action =\n  | { type: 'transition'; screen: AppScreens; history?: 'push' | 'reset' }\n  | { type: 'navigate_back' }\n  | { type: 'set_error_message_and_transition'; errorType: ErrorType; canGoBack: boolean }\n  | { type: 'set_user_supplied_email'; email: string }\n  | { type: 'set_organization'; organization: OrganizationBySlugMatch }\n  | { type: 'set_password_state'; email: string }\n  | {\n      type: 'set_discovery_state';\n      email: string;\n      discoveredOrganizations: DiscoveredOrganization[];\n    }\n  | { type: 'select_discovered_organization'; discoveredOrganization: DiscoveredOrganization }\n  | { type: 'send_email_otp'; codeExpiration: Date }\n  | { type: 'set_sso_discovery_state'; connections: SSOActiveConnection[] }\n  | { type: 'use_password_auth'; email: string }\n  | MfaAction;\n\nexport const reducer = (state: AppState, action: Action): AppState => {\n  switch (action.type) {\n    case 'transition':\n      return action.history === 'push' ? pushHistory(action.screen, state) : replaceHistory(action.screen, state);\n\n    case 'navigate_back': {\n      const screen = state.screenHistory.at(-1);\n\n      if (!screen) {\n        return state;\n      }\n\n      const screenHistory = state.screenHistory.slice(0, -1);\n\n      return {\n        ...state,\n        screen,\n        screenHistory,\n      };\n    }\n    case 'set_error_message_and_transition':\n      return {\n        ...state,\n        screen: AppScreens.Error,\n        error: {\n          type: action.errorType,\n          canGoBack: action.canGoBack,\n        },\n      };\n    case 'set_user_supplied_email': {\n      return {\n        ...state,\n        formState: {\n          ...state.formState,\n          emailState: { userSuppliedEmail: action.email },\n          passwordState: { email: action.email },\n        },\n      };\n    }\n    case 'set_organization': {\n      return {\n        ...state,\n        flowState: {\n          type: AuthFlowType.Organization,\n          organization: action.organization,\n        },\n      };\n    }\n    case 'set_discovery_state': {\n      const discoveredOrganizations = action.discoveredOrganizations;\n\n      return {\n        ...state,\n        formState: {\n          ...state.formState,\n          discoveryState: {\n            email: action.email,\n            discoveredOrganizations,\n          },\n        },\n        screen: AppScreens.Discovery,\n      };\n    }\n    case 'select_discovered_organization': {\n      const { membership, organization, primary_required } = action.discoveredOrganization;\n      const email = membership.member?.email_address ?? state.formState.discoveryState.email;\n\n      const primaryAuthMethods = primary_required ? primary_required.allowed_auth_methods : undefined;\n\n      const newBaseState = {\n        ...state,\n        flowState: {\n          type: AuthFlowType.Organization,\n          organization,\n        },\n        formState: {\n          ...state.formState,\n          passwordState: { email },\n        },\n        primary: {\n          primaryAuthMethods,\n          email,\n          emailVerified: membership.member?.email_address_verified,\n        },\n        screen: AppScreens.Main,\n      };\n\n      if (primaryAuthMethods?.length === 0) {\n        return {\n          ...newBaseState,\n          screen: AppScreens.Error,\n          error: {\n            type: ErrorType.CannotJoinOrgDueToAuthPolicy,\n            canGoBack: true,\n          },\n        };\n      }\n\n      return newBaseState;\n    }\n    case 'set_password_state': {\n      return {\n        ...state,\n        formState: {\n          ...state.formState,\n          passwordState: { email: action.email },\n        },\n      };\n    }\n    case 'send_email_otp': {\n      return pushHistory(AppScreens.EmailOTPEntry, {\n        ...state,\n        formState: {\n          ...state.formState,\n          otpState: { codeExpiration: action.codeExpiration },\n        },\n      });\n    }\n    case 'set_sso_discovery_state': {\n      const connections = action.connections;\n\n      if (!connections.length) {\n        return pushHistory(AppScreens.SSODiscoveryFallback, state);\n      }\n\n      return pushHistory(AppScreens.SSODiscoveryMenu, {\n        ...state,\n        formState: {\n          ...state.formState,\n          ssoDiscoveryState: { connections: action.connections },\n        },\n      });\n    }\n    case 'use_password_auth': {\n      return pushHistory(AppScreens.PasswordAuthenticate, {\n        ...state,\n        formState: { ...state.formState, passwordState: { email: action.email } },\n      });\n    }\n\n    default:\n      return mfaReducer(state, action);\n  }\n};\n"],"names":["reducer","state","action","type","history","pushHistory","screen","replaceHistory","screenHistory","at","slice","AppScreens","Error","error","errorType","canGoBack","formState","emailState","userSuppliedEmail","email","passwordState","flowState","AuthFlowType","Organization","organization","discoveredOrganizations","discoveryState","Discovery","membership","primary_required","discoveredOrganization","member","email_address","primaryAuthMethods","allowed_auth_methods","undefined","newBaseState","primary","emailVerified","email_address_verified","Main","length","ErrorType","CannotJoinOrgDueToAuthPolicy","EmailOTPEntry","otpState","codeExpiration","connections","SSODiscoveryFallback","SSODiscoveryMenu","ssoDiscoveryState","PasswordAuthenticate","mfaReducer"],"mappings":"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"}