{"version":3,"file":"AdminPortalSCIMContainer.mjs","sources":["../../../../../../../../web/src/adminPortal/scim/AdminPortalSCIMContainer.tsx"],"sourcesContent":["import { StytchProjectConfigurationInput } from '@stytch/core/public';\nimport React, { useEffect, useRef } from 'react';\n\nimport { readB2BInternals } from '../../utils/internal';\nimport { AdminPortalWrapper } from '../AdminPortalWrapper';\nimport { MappedPropsFromRouteMap, RouterStateEntry } from '../Router';\nimport { AdminPortalCommonProps } from '../utils/AdminPortalCommonProps';\nimport { AdminPortalUIConfigRoleDisplayProvider } from '../utils/AdminPortalUIConfigRoleDisplayProvider';\nimport { FeatureStateComponent } from '../utils/FeatureStateComponent';\nimport { getFeatureState } from '../utils/getFeatureState';\nimport { useAdminPortalConfig } from '../utils/useAdminPortalConfig';\nimport { useRbac } from '../utils/useRbac';\nimport { useSelf } from '../utils/useSelf';\nimport { SCIMConnectionDetailsScreen } from './SCIMConnectionDetailsScreen';\nimport { SCIMNewConnectionConfigureScreen } from './SCIMNewConnectionConfigureScreen';\nimport { SCIMNewConnectionScreen } from './SCIMNewConnectionScreen';\nimport { ScimRouter, ScimRouterProvider } from './SCIMRouter';\nimport { SCIMScreen } from './SCIMScreen';\n\n/**\n * The UI configuration object for SCIM used in the Admin Portal.\n */\nexport type AdminPortalSCIMUIConfig = AdminPortalUIConfigRoleDisplayProvider;\n\nexport interface AdminPortalSCIMMountOptions<\n  TProjectConfiguration extends StytchProjectConfigurationInput = Stytch.DefaultProjectConfiguration,\n> extends AdminPortalCommonProps<TProjectConfiguration> {\n  /**\n   * An {@link AdminPortalSCIMUIConfig} object containing custom configuration.\n   */\n  config?: AdminPortalSCIMUIConfig;\n}\n\nconst routeMap = {\n  scimConnection: SCIMScreen,\n  newConnection: SCIMNewConnectionScreen,\n  newConnectionConfigure: SCIMNewConnectionConfigureScreen,\n  scimConnectionDetails: SCIMConnectionDetailsScreen,\n};\n\nexport type ScimRouterMappedProps = MappedPropsFromRouteMap<typeof routeMap>;\n\nconst initialRoute = { screen: 'scimConnection' } satisfies RouterStateEntry<ScimRouterMappedProps>;\n\nexport const Content = () => {\n  const { self, fromCache } = useSelf();\n  const { error: adminPortalConfigError, data: adminPortalConfig } = useAdminPortalConfig({ shouldFetch: !!self });\n  const isScimEnabled = adminPortalConfig?.scim_config.scim_enabled;\n  const { data: canGetScim } = useRbac('stytch.scim', 'get');\n\n  const scimState = getFeatureState({\n    self,\n    fromCache,\n    adminPortalConfigError,\n    isFeatureEnabled: isScimEnabled,\n    hasPermission: canGetScim,\n  });\n  return (\n    <FeatureStateComponent\n      featureState={scimState}\n      notLoggedInValue={'Please log in to manage SCIM.'}\n      errorValue={'SCIM could not be loaded. Please contact your admin if you think this is a mistake.'}\n      featureNotEnabledValue={\n        'SCIM Connections are not supported. Please contact your admin if you think this is a mistake.'\n      }\n      noPermissionValue={\n        'You do not have permission to view SCIM Connections. Please contact your admin if you think this is a mistake.'\n      }\n    >\n      <ScimRouterProvider initialRoute={initialRoute}>\n        <ScimRouter routeMap={routeMap} />\n      </ScimRouterProvider>\n    </FeatureStateComponent>\n  );\n};\n\nexport const AdminPortalSCIMContainer = <TProjectConfiguration extends StytchProjectConfigurationInput>(\n  props: AdminPortalSCIMMountOptions<TProjectConfiguration>,\n) => {\n  const initialClient = useRef(props.client);\n  // only send an event on initial mount, even if the client changes\n  useEffect(() => {\n    readB2BInternals(initialClient.current).networkClient.logEvent({\n      name: 'render_b2b_admin_portal_scim',\n      details: {},\n    });\n  }, []);\n\n  return (\n    <AdminPortalWrapper options={props}>\n      <Content />\n    </AdminPortalWrapper>\n  );\n};\n"],"names":["routeMap","scimConnection","SCIMScreen","newConnection","SCIMNewConnectionScreen","newConnectionConfigure","SCIMNewConnectionConfigureScreen","scimConnectionDetails","SCIMConnectionDetailsScreen","initialRoute","screen","Content","self","fromCache","useSelf","error","adminPortalConfigError","data","adminPortalConfig","useAdminPortalConfig","shouldFetch","isScimEnabled","scim_config","scim_enabled","canGetScim","useRbac","scimState","getFeatureState","isFeatureEnabled","hasPermission","React","FeatureStateComponent","featureState","notLoggedInValue","errorValue","featureNotEnabledValue","noPermissionValue","ScimRouterProvider","ScimRouter","AdminPortalSCIMContainer","props","initialClient","useRef","client","useEffect","readB2BInternals","current","networkClient","logEvent","name","details","AdminPortalWrapper","options"],"mappings":";;;;;;;;;;;;;;;AAiCA,MAAMA,UAAAA,GAAW;IACfC,cAAAA,EAAgBC,UAAAA;IAChBC,aAAAA,EAAeC,uBAAAA;IACfC,sBAAAA,EAAwBC,gCAAAA;IACxBC,qBAAAA,EAAuBC;AACzB,CAAA;AAIA,MAAMC,cAAAA,GAAe;IAAEC,MAAAA,EAAQ;AAAiB,CAAA;MAEnCC,SAAAA,GAAU,IAAA;AACrB,IAAA,MAAM,EAAEC,IAAI,EAAEC,SAAS,EAAE,GAAGC,OAAAA,EAAAA;IAC5B,MAAM,EAAEC,OAAOC,sBAAsB,EAAEC,MAAMC,iBAAiB,EAAE,GAAGC,oBAAAA,CAAqB;AAAEC,QAAAA,WAAAA,EAAa,CAAC,CAACR;AAAK,KAAA,CAAA;IAC9G,MAAMS,aAAAA,GAAgBH,mBAAmBI,WAAAA,CAAYC,YAAAA;AACrD,IAAA,MAAM,EAAEN,IAAAA,EAAMO,UAAU,EAAE,GAAGC,QAAQ,aAAA,EAAe,KAAA,CAAA;AAEpD,IAAA,MAAMC,YAAYC,eAAAA,CAAgB;AAChCf,QAAAA,IAAAA;AACAC,QAAAA,SAAAA;AACAG,QAAAA,sBAAAA;QACAY,gBAAAA,EAAkBP,aAAAA;QAClBQ,aAAAA,EAAeL;AACjB,KAAA,CAAA;AACA,IAAA,qBACEM,EAAA,CAAA,aAAA,CAACC,qBAAAA,EAAAA;QACCC,YAAAA,EAAcN,SAAAA;QACdO,gBAAAA,EAAkB,+BAAA;QAClBC,UAAAA,EAAY,qFAAA;QACZC,sBAAAA,EACE,+FAAA;QAEFC,iBAAAA,EACE;qBAGFN,EAAA,CAAA,aAAA,CAACO,kBAAAA,EAAAA;QAAmB5B,YAAAA,EAAcA;qBAChCqB,EAAA,CAAA,aAAA,CAACQ,UAAAA,EAAAA;QAAWtC,QAAAA,EAAUA;;AAI9B;AAEO,MAAMuC,2BAA2B,CACtCC,KAAAA,GAAAA;IAEA,MAAMC,aAAAA,GAAgBC,CAAAA,CAAOF,KAAAA,CAAMG,MAAM,CAAA;;IAEzCC,CAAAA,CAAU,IAAA;AACRC,QAAAA,gBAAAA,CAAiBJ,cAAcK,OAAO,CAAA,CAAEC,aAAa,CAACC,QAAQ,CAAC;YAC7DC,IAAAA,EAAM,8BAAA;AACNC,YAAAA,OAAAA,EAAS;AACX,SAAA,CAAA;AACF,IAAA,CAAA,EAAG,EAAE,CAAA;AAEL,IAAA,qBACEpB,EAAA,CAAA,aAAA,CAACqB,kBAAAA,EAAAA;QAAmBC,OAAAA,EAASZ;qBAC3BV,EAAA,CAAA,aAAA,CAACnB,SAAAA,EAAAA,IAAAA,CAAAA,CAAAA;AAGP;;;;"}