{"version":3,"file":"InternalAppContainer.mjs","sources":["../../../../../../../../web/src/ui/b2b/InternalAppContainer.tsx"],"sourcesContent":["import { AuthFlowType, RedirectURLType, StytchProjectConfigurationInput } from '@stytch/core/public';\nimport React, { useEffect, useMemo, useState } from 'react';\nimport { OverrideProperties } from 'type-fest';\n\nimport { messages } from '../../messages/b2b/en';\nimport { B2BSDKConfig, StytchB2BExtendedLoginConfig } from '../../types';\nimport { readB2BInternals } from '../../utils/internal';\nimport { I18nProviderWrapper } from '../components/atoms/I18nProviderWrapper';\nimport { PresentationContext, usePresentationWithDefault } from '../components/PresentationConfig';\nimport Container from './Container';\nimport { DEFAULT_STATE, GlobalContextProvider } from './GlobalContextProvider';\nimport { AppScreens } from './types/AppScreens';\nimport { AppState } from './types/AppState';\n\nexport type InternalSDKConfig<TProjectConfiguration extends StytchProjectConfigurationInput> = OverrideProperties<\n  B2BSDKConfig<TProjectConfiguration>,\n  { config: StytchB2BExtendedLoginConfig }\n>;\n\nexport const InternalAppContainer = <TProjectConfiguration extends StytchProjectConfigurationInput>({\n  client,\n  presentation,\n  callbacks,\n  config,\n  strings,\n}: InternalSDKConfig<TProjectConfiguration>) => {\n  /**\n   * Read the watermark out of sync storage, then read it out of async storage\n   */\n  const [displayWatermark, setDisplayWatermark] = useState(() => {\n    const { displayWatermark } = readB2BInternals(client).bootstrap.getSync();\n    return displayWatermark;\n  });\n\n  useEffect(() => {\n    readB2BInternals(client)\n      .bootstrap.getAsync()\n      .then((data) => {\n        readB2BInternals(client).networkClient.logEvent({\n          name: 'render_b2b_login_screen',\n          details: { options: config, bootstrap: data },\n        });\n        setDisplayWatermark(data.displayWatermark);\n      });\n    // eslint-disable-next-line react-hooks/exhaustive-deps -- SDK-1354\n  }, [client]);\n\n  const getRedirectTypeFromUrl = () => {\n    const url = new URL(window.location.href);\n    const redirectType = url.searchParams.get('stytch_redirect_type');\n\n    return redirectType;\n  };\n\n  const redirectType = getRedirectTypeFromUrl();\n  const authFlowType =\n    redirectType === RedirectURLType.ResetPassword ? AuthFlowType.PasswordReset : config.authFlowType;\n\n  const initialState: AppState = {\n    ...DEFAULT_STATE,\n    screen: authFlowType === AuthFlowType.PasswordReset ? AppScreens.PasswordResetForm : AppScreens.Main,\n    flowState: {\n      ...DEFAULT_STATE.flowState,\n      type: authFlowType,\n    },\n  };\n\n  const configWithDefaults = useMemo(\n    () => ({\n      ...config,\n      // While `sessionOptions` is required in the types, we still want to handle the error gracefully if it's not provided.\n      // We set it to an empty object here so that future checks for `sessionOptions.sessionDurationMinutes` throw a `can't read property of undefined` error,\n      // and instead throw an error regarding a missing `sessionDurationMinutes` error from the headless client.\n      sessionOptions: config.sessionOptions ?? {},\n    }),\n    [config],\n  );\n\n  const presentationValue = usePresentationWithDefault(\n    presentation,\n    displayWatermark,\n    configWithDefaults,\n    'B2BProduct',\n  );\n\n  return (\n    <GlobalContextProvider\n      client={client}\n      callbacks={callbacks}\n      config={configWithDefaults}\n      initialState={initialState}\n    >\n      <PresentationContext.Provider value={presentationValue}>\n        <I18nProviderWrapper messages={messages} overrides={strings}>\n          <Container />\n        </I18nProviderWrapper>\n      </PresentationContext.Provider>\n    </GlobalContextProvider>\n  );\n};\n"],"names":["InternalAppContainer","client","presentation","callbacks","config","strings","displayWatermark","setDisplayWatermark","useState","readB2BInternals","bootstrap","getSync","useEffect","getAsync","then","data","networkClient","logEvent","name","details","options","getRedirectTypeFromUrl","url","URL","window","location","href","redirectType","searchParams","get","authFlowType","RedirectURLType","ResetPassword","AuthFlowType","PasswordReset","initialState","DEFAULT_STATE","screen","AppScreens","PasswordResetForm","Main","flowState","type","configWithDefaults","useMemo","sessionOptions","presentationValue","usePresentationWithDefault","React","GlobalContextProvider","PresentationContext","Provider","value","I18nProviderWrapper","messages","overrides","Container"],"mappings":";;;;;;;;;;;AAmBO,MAAMA,oBAAAA,GAAuB,CAAgE,EAClGC,MAAM,EACNC,YAAY,EACZC,SAAS,EACTC,MAAM,EACNC,OAAO,EACkC,GAAA;AACzC;;AAEC,MACD,MAAM,CAACC,gBAAAA,EAAkBC,mBAAAA,CAAoB,GAAGC,CAAAA,CAAS,IAAA;QACvD,MAAM,EAAEF,gBAAgB,EAAE,GAAGG,iBAAiBR,MAAAA,CAAAA,CAAQS,SAAS,CAACC,OAAO,EAAA;QACvE,OAAOL,gBAAAA;AACT,IAAA,CAAA,CAAA;IAEAM,CAAAA,CAAU,IAAA;AACRH,QAAAA,gBAAAA,CAAiBR,QACdS,SAAS,CAACG,QAAQ,EAAA,CAClBC,IAAI,CAAC,CAACC,IAAAA,GAAAA;AACLN,YAAAA,gBAAAA,CAAiBR,MAAAA,CAAAA,CAAQe,aAAa,CAACC,QAAQ,CAAC;gBAC9CC,IAAAA,EAAM,yBAAA;gBACNC,OAAAA,EAAS;oBAAEC,OAAAA,EAAShB,MAAAA;oBAAQM,SAAAA,EAAWK;AAAK;AAC9C,aAAA,CAAA;AACAR,YAAAA,mBAAAA,CAAoBQ,KAAKT,gBAAgB,CAAA;AAC3C,QAAA,CAAA,CAAA;;IAEJ,CAAA,EAAG;AAACL,QAAAA;AAAO,KAAA,CAAA;AAEX,IAAA,MAAMoB,sBAAAA,GAAyB,IAAA;AAC7B,QAAA,MAAMC,MAAM,IAAIC,GAAAA,CAAIC,MAAAA,CAAOC,QAAQ,CAACC,IAAI,CAAA;AACxC,QAAA,MAAMC,YAAAA,GAAeL,GAAAA,CAAIM,YAAY,CAACC,GAAG,CAAC,sBAAA,CAAA;QAE1C,OAAOF,YAAAA;AACT,IAAA,CAAA;AAEA,IAAA,MAAMA,YAAAA,GAAeN,sBAAAA,EAAAA;IACrB,MAAMS,YAAAA,GACJH,iBAAiBI,eAAAA,CAAgBC,aAAa,GAAGC,YAAAA,CAAaC,aAAa,GAAG9B,MAAAA,CAAO0B,YAAY;AAEnG,IAAA,MAAMK,YAAAA,GAAyB;AAC7B,QAAA,GAAGC,aAAa;QAChBC,MAAAA,EAAQP,YAAAA,KAAiBG,aAAaC,aAAa,GAAGI,WAAWC,iBAAiB,GAAGD,WAAWE,IAAI;QACpGC,SAAAA,EAAW;AACT,YAAA,GAAGL,cAAcK,SAAS;YAC1BC,IAAAA,EAAMZ;AACR;AACF,KAAA;IAEA,MAAMa,kBAAAA,GAAqBC,CAAAA,CACzB,KAAO;AACL,YAAA,GAAGxC,MAAM;;;;YAITyC,cAAAA,EAAgBzC,MAAAA,CAAOyC,cAAc,IAAI;AAC3C,SAAA,CAAA,EACA;AAACzC,QAAAA;AAAO,KAAA,CAAA;AAGV,IAAA,MAAM0C,iBAAAA,GAAoBC,0BAAAA,CACxB7C,YAAAA,EACAI,gBAAAA,EACAqC,kBAAAA,EACA,YAAA,CAAA;AAGF,IAAA,qBACEK,EAAA,CAAA,aAAA,CAACC,qBAAAA,EAAAA;QACChD,MAAAA,EAAQA,MAAAA;QACRE,SAAAA,EAAWA,SAAAA;QACXC,MAAAA,EAAQuC,kBAAAA;QACRR,YAAAA,EAAcA;AAEd,KAAA,gBAAAa,EAAA,CAAA,aAAA,CAACE,oBAAoBC,QAAQ,EAAA;QAACC,KAAAA,EAAON;qBACnCE,EAAA,CAAA,aAAA,CAACK,mBAAAA,EAAAA;QAAoBC,QAAAA,EAAUA,QAAAA;QAAUC,SAAAA,EAAWlD;qBAClD2C,EAAA,CAAA,aAAA,CAACQ,YAAAA,EAAAA,IAAAA,CAAAA,CAAAA,CAAAA,CAAAA;AAKX;;;;"}