{"version":3,"file":"SCIMNewConnectionScreen.mjs","sources":["../../../../../../../../web/src/adminPortal/scim/SCIMNewConnectionScreen.tsx"],"sourcesContent":["import { Organization } from '@stytch/core/public';\nimport React, { useCallback, useState } from 'react';\nimport { useSWRConfig } from 'swr';\n\nimport { Button } from '../components/Button';\nimport { FlexBox } from '../components/FlexBox';\nimport { Input } from '../components/Input';\nimport { Select } from '../components/Select';\nimport { Typography } from '../components/Typography';\nimport { organizationGetKey } from '../utils/organizationGetKey';\nimport { useStytchClient } from '../utils/useStytchClient';\nimport { KnownSCIMIdp, scimIdpMap } from './scimInfo';\nimport { useScimRouterController } from './SCIMRouter';\n\nconst idpSelectItems = Object.entries(scimIdpMap).map(([idp, { displayName }]) => ({\n  value: idp,\n  label: displayName,\n}));\nexport const SCIMNewConnectionScreen = () => {\n  const { navigate } = useScimRouterController();\n  const [idp, setIdp] = useState<KnownSCIMIdp>();\n  const [displayName, setDisplayName] = useState<string>('');\n  const canCreate = displayName && idp;\n\n  const client = useStytchClient();\n  const { mutate } = useSWRConfig();\n\n  const handleSubmit = useCallback<React.FormEventHandler<HTMLFormElement>>(\n    async (e) => {\n      e.preventDefault();\n\n      if (!canCreate) {\n        return;\n      }\n\n      const response = await mutate('scim_create', async () => {\n        const params = { display_name: displayName, identity_provider: idp };\n        const result = await client.scim.createConnection(params);\n        const connection = result.connection;\n\n        mutate(organizationGetKey(connection.organization_id), async (org?: Organization | null) => {\n          if (org) {\n            return {\n              ...org,\n              scim_active_connection: {\n                connection_id: connection.connection_id,\n                display_name: connection.display_name,\n              },\n            };\n          }\n        });\n        return connection;\n      });\n\n      if (response) {\n        navigate({\n          screen: 'newConnectionConfigure',\n          params: {\n            connection: response,\n          },\n        });\n      }\n    },\n    [canCreate, client.scim, displayName, idp, mutate, navigate],\n  );\n\n  return (\n    <form onSubmit={handleSubmit}>\n      <FlexBox flexDirection=\"column\" gap={3}>\n        <Typography variant=\"h2\">Create SCIM Connection</Typography>\n        <FlexBox flexDirection=\"column\">\n          <Typography>Select your IdP.</Typography>\n          <Select\n            width={360}\n            placeholder=\"Select\"\n            value={idp}\n            selectItems={idpSelectItems}\n            onChange={(value) => setIdp(value)}\n          />\n        </FlexBox>\n        <FlexBox flexDirection=\"column\">\n          <Typography>Enter a display name for your SCIM connection.</Typography>\n          <Input value={displayName} onChange={(value) => setDisplayName(value)} placeholder=\"Display name\" />\n        </FlexBox>\n        <Typography>\n          Once you click “Create” the SCIM connection will be created. If you need to change your IdP after this, you\n          will need to delete the connection and recreate.\n        </Typography>\n        <FlexBox flexDirection=\"row\" gap={2}>\n          <Button\n            variant=\"ghost\"\n            onClick={() => {\n              navigate({ screen: 'scimConnection' });\n            }}\n          >\n            Cancel\n          </Button>\n          <Button type=\"submit\" disabled={!canCreate}>\n            Create\n          </Button>\n        </FlexBox>\n      </FlexBox>\n    </form>\n  );\n};\n"],"names":["idpSelectItems","Object","entries","scimIdpMap","map","idp","displayName","value","label","SCIMNewConnectionScreen","navigate","useScimRouterController","setIdp","useState","setDisplayName","canCreate","client","useStytchClient","mutate","useSWRConfig","handleSubmit","useCallback","e","preventDefault","response","params","display_name","identity_provider","result","scim","createConnection","connection","organizationGetKey","organization_id","org","scim_active_connection","connection_id","screen","React","form","onSubmit","FlexBox","flexDirection","gap","Typography","variant","Select","width","placeholder","selectItems","onChange","Input","Button","onClick","type","disabled"],"mappings":"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"}