{"version":3,"file":"sso.cjs","sources":["../src/sso/utils/htmlIdGenerator.ts","../src/sso/utils/getUniqueId.ts","../src/sso/login/index.tsx","../src/sso/connections/utils.ts","../src/shared/Separator/index.tsx","../src/shared/Anchor/index.tsx","../src/sso/connections/CreateConnection/oidc/index.tsx","../src/shared/inputs/TextArea/index.tsx","../src/sso/connections/CreateConnection/saml/index.tsx","../src/shared/RadioGroup/index.tsx","../src/shared/Radio/index.tsx","../src/sso/connections/CreateConnection/index.tsx","../src/sso/connections/ConnectionList/index.tsx","../src/sso/connections/ToggleConnectionStatus/index.tsx","../src/shared/Card/index.tsx","../src/sso/connections/EditConnection/oidc/index.tsx","../src/sso/connections/EditConnection/saml/index.tsx","../src/sso/connections/ConnectionsWrapper/index.tsx"],"sourcesContent":["/**\n * Util function that helps to generate unique HTML ids that are namespaced by\n * the prefix and element type\n * @param prefix Pass anything that needs to be prefixed to the id\n * @param elementType Pass the HTML element type here (e.g., input)\n * @returns {string} Id that is gauranteed to be unique and suitable for html id attributes across various components\n */\n\nconst htmlIdGenerator = (prefix: string, elementType: string) => {\n  return `boxyhq-${prefix}-${elementType}`;\n};\nexport default htmlIdGenerator","import htmlIdGenerator from './htmlIdGenerator';\n\n/**\n *\n * @param component Pass the SDK component name here (e.g., sso)\n * @param elementType Pass the HTML element type for which the Id is to be generated (e.g., input)\n * @returns {string} Id that is gauranteed to be unique suitable for use as HTML id attributes\n */\n\nconst getUniqueId = (component: string, elementType: string) => {\n  let id = '';\n\n  // call the htmlIdGenerator function to set a unique id for the user and then return it\n  id = htmlIdGenerator(component, elementType);\n  return id;\n};\nexport default getUniqueId","\"use client\";\nimport * as React from \"react\";\nimport { useState } from \"react\";\nimport type { LoginProps } from \"./types\";\nimport getUniqueId from \"../utils/getUniqueId\";\nimport cssClassAssembler from \"../utils/cssClassAssembler\";\nimport defaultClasses from \"./index.module.css\";\nconst COMPONENT = \"sso\";\nconst DEFAULT_VALUES = {\n  ssoIdentifier: \"\",\n  inputLabel: \"Tenant\",\n  placeholder: \"\",\n  buttonText: \"Sign-in with SSO\",\n};\n\nfunction Login(props: LoginProps) {\n  const [_ssoIdentifier, set_ssoIdentifier] = useState(\n    () => DEFAULT_VALUES.ssoIdentifier\n  );\n\n  const [errMsg, setErrMsg] = useState(() => \"\");\n\n  const [isProcessing, setIsProcessing] = useState(() => false);\n\n  function isError() {\n    return !!errMsg;\n  }\n\n  function disableButton() {\n    return !(_ssoIdentifier || props.ssoIdentifier) || isProcessing;\n  }\n\n  function shouldRenderInput() {\n    return !props.ssoIdentifier;\n  }\n\n  function InputId() {\n    return getUniqueId(COMPONENT, \"input\");\n  }\n\n  function ErrorSpanId() {\n    return getUniqueId(COMPONENT, \"span\");\n  }\n\n  function classes() {\n    return {\n      container: cssClassAssembler(\n        props.classNames?.container,\n        defaultClasses.container\n      ),\n      label: cssClassAssembler(props.classNames?.label, defaultClasses.label),\n      input: cssClassAssembler(props.classNames?.input, defaultClasses.input),\n      button: cssClassAssembler(\n        props.classNames?.button,\n        defaultClasses.button\n      ),\n    };\n  }\n\n  function handleChange(event: Event) {\n    setErrMsg(\"\");\n    set_ssoIdentifier((event.currentTarget as HTMLInputElement)?.value);\n  }\n\n  function onSubmitButton(event: Event) {\n    event.preventDefault();\n    setIsProcessing(true);\n    const ssoIdentifierToSubmit = (_ssoIdentifier || props.ssoIdentifier) ?? \"\";\n    props.onSubmit({\n      ssoIdentifier: ssoIdentifierToSubmit,\n      cb: (err) => {\n        setIsProcessing(false);\n        if (err?.error.message) {\n          setErrMsg(err.error.message);\n        }\n      },\n    });\n  }\n\n  return (\n    <div\n      style={props.styles?.container}\n      className={classes().container}\n      {...props.innerProps?.container}\n    >\n      {shouldRenderInput() ? (\n        <>\n          <label\n            htmlFor={InputId()}\n            style={props.styles?.label}\n            className={classes().label}\n            {...props.innerProps?.label}\n          >\n            {props.inputLabel || DEFAULT_VALUES.inputLabel}\n          </label>\n          <input\n            id={InputId()}\n            value={_ssoIdentifier}\n            placeholder={props.placeholder || DEFAULT_VALUES.placeholder}\n            onInput={(event) => handleChange(event)}\n            style={props.styles?.input}\n            className={classes().input}\n            aria-invalid={isError()}\n            aria-describedby={ErrorSpanId()}\n            {...props.innerProps?.input}\n          />\n          {isError() ? <span id={ErrorSpanId()}>{errMsg}</span> : null}\n        </>\n      ) : null}\n      <button\n        type=\"button\"\n        disabled={disableButton()}\n        onClick={(event) => onSubmitButton(event)}\n        style={props.styles?.button}\n        className={classes().button}\n        {...props.innerProps?.button}\n      >\n        {props.buttonText || DEFAULT_VALUES.buttonText}\n      </button>\n    </div>\n  );\n}\n\nexport default Login;\n","import { sendHTTPRequest, ApiResponse } from '../../shared/http';\nimport type { FormObj, OIDCSSORecord, SAMLSSORecord } from './types';\nexport const saveConnection = async <T = SAMLSSORecord | OIDCSSORecord,>({\n  formObj,\n  isEditView,\n  connectionIsSAML,\n  connectionIsOIDC,\n  callback,\n  url\n}: {\n  formObj: FormObj;\n  isEditView?: boolean;\n  connectionIsSAML?: boolean;\n  connectionIsOIDC?: boolean;\n  callback: (res: ApiResponse<T>) => Promise<void>;\n  url: string;\n}) => {\n  const {\n    rawMetadata,\n    redirectUrl,\n    oidcDiscoveryUrl,\n    oidcMetadata,\n    oidcClientId,\n    oidcClientSecret,\n    metadataUrl,\n    ...rest\n  } = formObj;\n  const encodedRawMetadata = window.btoa(rawMetadata as string || '');\n  const res = await sendHTTPRequest<T>(url, {\n    method: isEditView ? 'PATCH' : 'POST',\n    headers: {\n      'Content-Type': 'application/json'\n    },\n    body: JSON.stringify({\n      ...rest,\n      encodedRawMetadata: connectionIsSAML ? encodedRawMetadata : undefined,\n      oidcDiscoveryUrl: connectionIsOIDC ? oidcDiscoveryUrl : undefined,\n      oidcMetadata: connectionIsOIDC ? oidcMetadata : undefined,\n      oidcClientId: connectionIsOIDC ? oidcClientId : undefined,\n      oidcClientSecret: connectionIsOIDC ? oidcClientSecret : undefined,\n      redirectUrl: JSON.stringify(redirectUrl),\n      // TODO: validate redirect url inside form to have atlease one entry\n      metadataUrl: connectionIsSAML ? metadataUrl : undefined\n    })\n  });\n  callback(res);\n};\nexport const deleteConnection = async ({\n  url,\n  clientId,\n  clientSecret,\n  callback\n}: {\n  url: string;\n  clientId: string;\n  clientSecret: string;\n  callback: (res: ApiResponse<undefined>) => Promise<void>;\n}) => {\n  const queryParams = new URLSearchParams({\n    clientID: clientId,\n    clientSecret\n  });\n  const res = await sendHTTPRequest<undefined>(`${url}?${queryParams}`, {\n    method: 'DELETE'\n  });\n  callback(res);\n}","import * as React from \"react\";\n\ninterface SeparatorProps {\n  text?: string;\n}\n\nimport styles from \"./index.module.css\";\n\nfunction Separator(props: SeparatorProps) {\n  return <div className={styles.separator}>{props.text}</div>;\n}\n\nexport default Separator;\n","import * as React from \"react\";\nimport { LinkProps } from \"../types\";\nimport styles from \"./index.module.css\";\n\nfunction Anchor(props: LinkProps) {\n  function className() {\n    return (\n      styles.a +\n      (props.variant ? ` ${styles[props.variant]}` : \"\") +\n      (props.cssClass ? ` ${props.cssClass}` : \"\")\n    );\n  }\n\n  return (\n    <a target=\"_blank\" href={props.href} className={className()}>\n      {props.linkText}\n    </a>\n  );\n}\n\nexport default Anchor;\n","\"use client\";\nimport * as React from \"react\";\nimport { useState, useEffect } from \"react\";\n\ntype Keys = keyof typeof INITIAL_VALUES.oidcConnection;\ntype Values = (typeof INITIAL_VALUES.oidcConnection)[Keys];\nimport type {\n  CreateConnectionProps,\n  FormObj,\n  OIDCSSOConnection,\n} from \"../../types\";\nimport { saveConnection } from \"../../utils\";\nimport defaultClasses from \"./index.module.css\";\nimport cssClassAssembler from \"../../../utils/cssClassAssembler\";\nimport Button from \"../../../../shared/Button/index\";\nimport Spacer from \"../../../../shared/Spacer/index\";\nimport Separator from \"../../../../shared/Separator/index\";\nimport Anchor from \"../../../../shared/Anchor/index\";\nimport InputField from \"../../../../shared/inputs/InputField/index\";\nimport SecretInputFormControl from \"../../../../shared/inputs/SecretInputFormControl/index\";\nimport Select from \"../../../../shared/Select/index\";\nimport ItemList from \"../../../../shared/inputs/ItemList/index\";\nconst DEFAULT_VALUES = {\n  variant: \"basic\",\n} satisfies Partial<CreateConnectionProps>;\nconst INITIAL_VALUES = {\n  oidcConnection: {\n    name: \"\",\n    label: \"\",\n    description: \"\",\n    tenant: \"\",\n    product: \"\",\n    redirectUrl: [\"\"],\n    defaultRedirectUrl: \"\",\n    oidcClientSecret: \"\",\n    oidcClientId: \"\",\n    oidcDiscoveryUrl: \"\",\n    \"oidcMetadata.issuer\": \"\",\n    \"oidcMetadata.authorization_endpoint\": \"\",\n    \"oidcMetadata.token_endpoint\": \"\",\n    \"oidcMetadata.jwks_uri\": \"\",\n    \"oidcMetadata.userinfo_endpoint\": \"\",\n    sortOrder: \"\" as unknown as string | number,\n  },\n};\n\nfunction CreateOIDCConnection(props: CreateConnectionProps) {\n  const [oidcConnection, setOidcConnection] = useState(\n    () => INITIAL_VALUES.oidcConnection\n  );\n\n  const [isSaving, setIsSaving] = useState(() => false);\n\n  function updateConnection(data: Partial<OIDCSSOConnection>) {\n    return {\n      ...oidcConnection,\n      ...data,\n    };\n  }\n\n  function handleChange(event: Event) {\n    const target = event.target as HTMLInputElement | HTMLTextAreaElement;\n    const id = target.id as Keys;\n    const targetValue = (\n      event.currentTarget as HTMLInputElement | HTMLTextAreaElement\n    )?.value as Values;\n    setOidcConnection(\n      updateConnection({\n        [id]: targetValue,\n      })\n    );\n  }\n\n  function handleItemListUpdate(fieldName: string, listValue: string[]) {\n    setOidcConnection(\n      updateConnection({\n        [fieldName]: listValue,\n      })\n    );\n  }\n\n  function save(event: Event) {\n    event.preventDefault();\n    const formObj = {} as any;\n    Object.entries(oidcConnection).map(([key, val]) => {\n      if (key.startsWith(\"oidcMetadata.\")) {\n        if (formObj.oidcMetadata === undefined) {\n          formObj.oidcMetadata = {} as Exclude<\n            OIDCSSOConnection[\"oidcMetadata\"],\n            undefined\n          >;\n        }\n        formObj.oidcMetadata[key.replace(\"oidcMetadata.\", \"\")] = val;\n      } else if (key === \"sortOrder\") {\n        // pass sortOrder only if set to non-empty string\n        val !== \"\" && (formObj[key] = +val); // convert sortOrder into number\n      } else {\n        formObj[key] = val;\n      }\n    });\n    setIsSaving(true);\n    saveConnection({\n      url: props.urls.post,\n      formObj: formObj as FormObj,\n      connectionIsOIDC: true,\n      callback: async (data) => {\n        setIsSaving(false);\n        if (data && typeof data === \"object\") {\n          if (\"error\" in data) {\n            typeof props.errorCallback === \"function\" &&\n              props.errorCallback(data.error.message);\n          } else {\n            typeof props.successCallback === \"function\" &&\n              props.successCallback({\n                operation: \"CREATE\",\n                connection: data,\n                connectionIsOIDC: true,\n              });\n          }\n        }\n      },\n    });\n  }\n\n  function classes() {\n    return {\n      form: cssClassAssembler(props.classNames?.form, defaultClasses.form),\n      inputField: {\n        label: props.classNames?.label,\n        input: props.classNames?.input,\n        container: props.classNames?.fieldContainer,\n      },\n      select: {\n        label: props.classNames?.label,\n        select: props.classNames?.select,\n      },\n      textarea: {\n        label: props.classNames?.label,\n        textarea: props.classNames?.textarea,\n        container: props.classNames?.fieldContainer,\n      },\n    };\n  }\n\n  function formVariant() {\n    return props.variant || DEFAULT_VALUES.variant;\n  }\n\n  function isExcluded(fieldName: keyof OIDCSSOConnection) {\n    return !!(props.excludeFields as (keyof OIDCSSOConnection)[])?.includes(\n      fieldName\n    );\n  }\n\n  function isReadOnly(fieldName: keyof OIDCSSOConnection) {\n    if (\n      fieldName === \"tenant\" &&\n      Array.isArray(props.defaults?.tenant) &&\n      props.defaults.tenant.length === 1\n    ) {\n      return true;\n    }\n    return !!(props.readOnlyFields as (keyof OIDCSSOConnection)[])?.includes(\n      fieldName\n    );\n  }\n\n  function isTenantADropdown() {\n    return (\n      Array.isArray(props.defaults?.tenant) && props.defaults.tenant.length > 1\n    );\n  }\n\n  function tenantOptions() {\n    return Array.isArray(props.defaults?.tenant)\n      ? props.defaults?.tenant.map((tenant: string) => ({\n          value: tenant,\n          text: tenant,\n        }))\n      : [];\n  }\n\n  function shouldDisplayHeader() {\n    if (props.displayHeader !== undefined) {\n      return props.displayHeader;\n    }\n    return true;\n  }\n\n  useEffect(() => {\n    if (props.defaults) {\n      // forceAuthn is a SAML only setting, remove it\n      const { forceAuthn, tenant, ...rest } = props.defaults;\n      const _tenant = Array.isArray(tenant) ? tenant[0] : tenant;\n      setOidcConnection(\n        updateConnection({\n          ...rest,\n          tenant: _tenant,\n        })\n      );\n    }\n  }, [props.defaults]);\n\n  return (\n    <div>\n      {shouldDisplayHeader() ? (\n        <h5 className={defaultClasses.h5}>Create SSO Connection</h5>\n      ) : null}\n      <form\n        method=\"post\"\n        onSubmit={(event) => save(event)}\n        className={classes().form}\n      >\n        {formVariant() === \"advanced\" ? (\n          <>\n            {!isExcluded(\"name\") ? (\n              <>\n                <InputField\n                  label=\"Connection name (Optional)\"\n                  id=\"name\"\n                  placeholder=\"MyApp\"\n                  classNames={classes().inputField}\n                  required={false}\n                  readOnly={isReadOnly(\"name\")}\n                  value={oidcConnection.name}\n                  handleInputChange={handleChange}\n                />\n                <Spacer y={6} />\n              </>\n            ) : null}\n            {!isExcluded(\"label\") ? (\n              <>\n                <InputField\n                  label=\"Connection label (Optional)\"\n                  id=\"label\"\n                  placeholder=\"An internal label to identify the connection\"\n                  classNames={classes().inputField}\n                  required={false}\n                  readOnly={isReadOnly(\"label\")}\n                  value={oidcConnection.label}\n                  handleInputChange={handleChange}\n                />\n                <Spacer y={6} />\n              </>\n            ) : null}\n            {!isExcluded(\"description\") ? (\n              <>\n                <InputField\n                  label=\"Description (Optional)\"\n                  id=\"description\"\n                  placeholder=\"A short description not more than 100 characters\"\n                  classNames={classes().inputField}\n                  required={false}\n                  readOnly={isReadOnly(\"description\")}\n                  maxLength={100}\n                  value={oidcConnection.description}\n                  handleInputChange={handleChange}\n                />\n                <Spacer y={6} />\n              </>\n            ) : null}\n            {!isExcluded(\"tenant\") ? (\n              <>\n                {!isTenantADropdown() ? (\n                  <InputField\n                    label=\"Tenant\"\n                    id=\"tenant\"\n                    placeholder=\"acme.com\"\n                    aria-describedby=\"tenant-hint\"\n                    classNames={classes().inputField}\n                    required\n                    readOnly={isReadOnly(\"tenant\")}\n                    value={oidcConnection.tenant}\n                    handleInputChange={handleChange}\n                  />\n                ) : null}\n                {isTenantADropdown() ? (\n                  <div className={defaultClasses.selectContainer}>\n                    <Select\n                      label=\"Tenant\"\n                      name=\"tenant\"\n                      id=\"tenant\"\n                      options={tenantOptions()}\n                      classNames={classes().select}\n                      selectedValue={oidcConnection.tenant}\n                      handleChange={handleChange}\n                    />\n                  </div>\n                ) : null}\n                <div id=\"tenant-hint\" className={defaultClasses.hint}>\n                  Unique identifier for the tenant to which this SSO connection\n                  is linked.See\n                  <Spacer x={1} />\n                  <Anchor\n                    href=\"https://boxyhq.com/guides/jackson/configuring-saml-sso#sso-connection-identifier\"\n                    linkText=\"SSO connection identifier.\"\n                  />\n                </div>\n                <Spacer y={6} />\n              </>\n            ) : null}\n            {!isExcluded(\"product\") ? (\n              <>\n                <InputField\n                  label=\"Product\"\n                  id=\"product\"\n                  placeholder=\"demo\"\n                  aria-describedby=\"product-hint\"\n                  classNames={classes().inputField}\n                  required\n                  readOnly={isReadOnly(\"product\")}\n                  value={oidcConnection.product}\n                  handleInputChange={handleChange}\n                />\n                <div id=\"product-hint\" className={defaultClasses.hint}>\n                  Identifies the product/app to which this SSO connection is\n                  linked.\n                </div>\n                <Spacer y={6} />\n              </>\n            ) : null}\n            {!isExcluded(\"redirectUrl\") ? (\n              <>\n                <ItemList\n                  inputType=\"url\"\n                  label=\"Allowed redirect URLs\"\n                  fieldName=\"redirectUrl\"\n                  currentlist={oidcConnection.redirectUrl}\n                  handleItemListUpdate={handleItemListUpdate}\n                  classNames={classes().inputField}\n                />\n                <div id=\"redirectUrl-hint\" className={defaultClasses.hint}>\n                  URL(s) to redirect the user to after login. Only the URLs in\n                  this list are allowed in the OAuth flow.\n                </div>\n                <Spacer y={6} />\n              </>\n            ) : null}\n            {!isExcluded(\"defaultRedirectUrl\") ? (\n              <>\n                <InputField\n                  label=\"Default redirect URL\"\n                  id=\"defaultRedirectUrl\"\n                  aria-describedby=\"defaultRedirectUrl-hint\"\n                  placeholder=\"http://localhost:3366\"\n                  type=\"url\"\n                  classNames={classes().inputField}\n                  required\n                  readOnly={isReadOnly(\"defaultRedirectUrl\")}\n                  value={oidcConnection.defaultRedirectUrl}\n                  handleInputChange={handleChange}\n                />\n                <div\n                  id=\"defaultRedirectUrl-hint\"\n                  className={defaultClasses.hint}\n                >\n                  URL to redirect the user to after an IdP initiated login.\n                </div>\n                <Spacer y={6} />\n              </>\n            ) : null}\n            <Separator text=\"OIDC Provider Metadata\" />\n            <Spacer y={6} />\n          </>\n        ) : null}\n        <InputField\n          label=\"Client ID\"\n          id=\"oidcClientId\"\n          aria-describedby=\"oidc-clientid-hint\"\n          classNames={classes().inputField}\n          value={oidcConnection.oidcClientId}\n          handleInputChange={handleChange}\n        />\n        <div id=\"oidc-clientid-hint\" className={defaultClasses.hint}>\n          ClientId of the app created on the OIDC Provider.\n        </div>\n        <Spacer y={6} />\n        <SecretInputFormControl\n          label=\"Client Secret\"\n          id=\"oidcClientSecret\"\n          aria-describedby=\"oidc-clientsecret-hint\"\n          readOnly={false}\n          classNames={classes().inputField}\n          handleChange={handleChange}\n          value={oidcConnection.oidcClientSecret}\n          required\n        />\n        <div id=\"oidc-clientsecret-hint\" className={defaultClasses.hint}>\n          ClientSecret of the app created on the OIDC Provider.\n        </div>\n        <Spacer y={6} />\n        <InputField\n          id=\"oidcDiscoveryUrl\"\n          type=\"url\"\n          label=\"Well-known URL of OpenID Provider\"\n          placeholder=\"https://example.com/.well-known/openid-configuration\"\n          aria-describedby=\"oidc-metadata-hint\"\n          classNames={classes().inputField}\n          value={oidcConnection.oidcDiscoveryUrl}\n          handleInputChange={handleChange}\n        />\n        <div id=\"oidc-metadata-hint\" className={defaultClasses.hint}>\n          Enter the well known discovery path of OpenID provider or manually\n          enter the OpenId provider metadata below.\n        </div>\n        <Spacer y={6} />\n        <Separator text=\"OR\" />\n        <Spacer y={6} />\n        <InputField\n          id=\"oidcMetadata.issuer\"\n          label=\"Issuer\"\n          placeholder=\"https://example.com\"\n          classNames={classes().inputField}\n          value={oidcConnection[\"oidcMetadata.issuer\"]}\n          handleInputChange={handleChange}\n        />\n        <Spacer y={6} />\n        <InputField\n          id=\"oidcMetadata.authorization_endpoint\"\n          type=\"url\"\n          label=\"Authorization Endpoint\"\n          placeholder=\"https://example.com/oauth/authorize\"\n          classNames={classes().inputField}\n          value={oidcConnection[\"oidcMetadata.authorization_endpoint\"]}\n          handleInputChange={handleChange}\n        />\n        <Spacer y={6} />\n        <InputField\n          id=\"oidcMetadata.token_endpoint\"\n          type=\"url\"\n          label=\"Token endpoint\"\n          placeholder=\"https://example.com/oauth/token\"\n          classNames={classes().inputField}\n          value={oidcConnection[\"oidcMetadata.token_endpoint\"]}\n          handleInputChange={handleChange}\n        />\n        <Spacer y={6} />\n        <InputField\n          id=\"oidcMetadata.jwks_uri\"\n          type=\"url\"\n          label=\"JWKS URI\"\n          placeholder=\"https://example.com/.well-known/jwks.json\"\n          classNames={classes().inputField}\n          value={oidcConnection[\"oidcMetadata.jwks_uri\"]}\n          handleInputChange={handleChange}\n        />\n        <Spacer y={6} />\n        <InputField\n          id=\"oidcMetadata.userinfo_endpoint\"\n          type=\"url\"\n          label=\"UserInfo endpoint\"\n          placeholder=\"https://example.com/userinfo\"\n          autoComplete=\"one-time-code\"\n          classNames={classes().inputField}\n          value={oidcConnection[\"oidcMetadata.userinfo_endpoint\"]}\n          handleInputChange={handleChange}\n        />\n        <Spacer y={6} />\n        {formVariant() === \"advanced\" ? (\n          <>\n            {!isExcluded(\"sortOrder\") ? (\n              <>\n                <InputField\n                  label=\"Sort Order\"\n                  id=\"sortOrder\"\n                  type=\"number\"\n                  min=\"0\"\n                  placeholder=\"10\"\n                  classNames={classes().inputField}\n                  readOnly={isReadOnly(\"sortOrder\")}\n                  value={oidcConnection.sortOrder as string}\n                  handleInputChange={handleChange}\n                />\n                <div id=\"sortOrder-hint\" className={defaultClasses.hint}>\n                  Connections will be sorted (in a listing view like IdP\n                  Selection) using this setting. Higher values will be displayed\n                  first.\n                </div>\n              </>\n            ) : null}\n          </>\n        ) : null}\n        <Spacer y={6} />\n        <div className={defaultClasses.formAction}>\n          {typeof props.cancelCallback === \"function\" ? (\n            <Button\n              type=\"button\"\n              name=\"Cancel\"\n              variant=\"outline\"\n              handleClick={props.cancelCallback}\n              classNames={props.classNames?.button?.cancel}\n            />\n          ) : null}\n          <Button\n            type=\"submit\"\n            name=\"Save\"\n            classNames={props.classNames?.button?.ctoa}\n            isLoading={isSaving}\n          />\n        </div>\n      </form>\n    </div>\n  );\n}\n\nexport default CreateOIDCConnection;\n","\"use client\";\nimport * as React from \"react\";\n\ntype TextAreaProps = {\n  id: string;\n  label: string;\n  value: string;\n  classNames?: {\n    textarea?: string;\n    label?: string;\n    container?: string;\n  };\n  handleInputChange: (e: any) => void;\n} & JSX.InputHTMLAttributes<HTMLTextAreaElement>;\nimport styles from \"../index.module.css\";\nimport Spacer from \"../../Spacer/index\";\nimport cssClassAssembler from \"../../../sso/utils/cssClassAssembler\";\n\nfunction TextArea(props: TextAreaProps) {\n  function textAreaHTMLAttributes() {\n    const { id, label, value, classNames, handleInputChange, ...rest } = props;\n    return rest;\n  }\n\n  function cssClass() {\n    return {\n      container: cssClassAssembler(\n        props.classNames?.container,\n        styles.container\n      ),\n      textarea: cssClassAssembler(props.classNames?.textarea, styles.textarea),\n      label: cssClassAssembler(props.classNames?.label, styles.label),\n    };\n  }\n\n  return (\n    <div className={styles.container}>\n      <label htmlFor={props.id} className={styles.label}>\n        {props.label}\n      </label>\n      <Spacer y={2} />\n      <textarea\n        id={props.id}\n        value={props.value}\n        className={cssClass().textarea}\n        onChange={(event) => props.handleInputChange(event)}\n        {...textAreaHTMLAttributes()}\n      />\n    </div>\n  );\n}\n\nexport default TextArea;\n","\"use client\";\nimport * as React from \"react\";\nimport { useState, useEffect } from \"react\";\n\ntype Keys = keyof typeof INITIAL_VALUES.samlConnection;\ntype Values = (typeof INITIAL_VALUES.samlConnection)[Keys];\nimport type {\n  CreateConnectionProps,\n  SAMLSSOConnection,\n  SAMLSSORecord,\n} from \"../../types\";\nimport { saveConnection } from \"../../utils\";\nimport defaultClasses from \"./index.module.css\";\nimport cssClassAssembler from \"../../../utils/cssClassAssembler\";\nimport Button from \"../../../../shared/Button/index\";\nimport Spacer from \"../../../../shared/Spacer/index\";\nimport Separator from \"../../../../shared/Separator/index\";\nimport Anchor from \"../../../../shared/Anchor/index\";\nimport Checkbox from \"../../../../shared/Checkbox/index\";\nimport InputField from \"../../../../shared/inputs/InputField/index\";\nimport TextArea from \"../../../../shared/inputs/TextArea/index\";\nimport Select from \"../../../../shared/Select/index\";\nimport ItemList from \"../../../../shared/inputs/ItemList/index\";\nconst DEFAULT_VALUES = {\n  variant: \"basic\",\n} satisfies Partial<CreateConnectionProps>;\nconst INITIAL_VALUES = {\n  samlConnection: {\n    name: \"\",\n    label: \"\",\n    description: \"\",\n    tenant: \"\",\n    product: \"\",\n    redirectUrl: [\"\"],\n    defaultRedirectUrl: \"\",\n    rawMetadata: \"\",\n    metadataUrl: \"\",\n    sortOrder: \"\" as unknown as string | number,\n    forceAuthn: false as boolean,\n    acsUrlOverride: \"\",\n  },\n};\n\nfunction CreateSAMLConnection(props: CreateConnectionProps) {\n  const [samlConnection, setSamlConnection] = useState(\n    () => INITIAL_VALUES.samlConnection\n  );\n\n  function updateConnection(data: Partial<SAMLSSOConnection>) {\n    return {\n      ...samlConnection,\n      ...data,\n    };\n  }\n\n  const [isSaving, setIsSaving] = useState(() => false);\n\n  function handleChange(event: Event) {\n    const target = event.target as HTMLInputElement | HTMLTextAreaElement;\n    const id = target.id as Keys;\n    const targetValue = (\n      id !== \"forceAuthn\" ? target.value : (target as HTMLInputElement).checked\n    ) as Values;\n    setSamlConnection(\n      updateConnection({\n        [id]: targetValue,\n      })\n    );\n  }\n\n  function handleItemListUpdate(fieldName: string, listValue: string[]) {\n    setSamlConnection(\n      updateConnection({\n        [fieldName]: listValue,\n      })\n    );\n  }\n\n  function save(event: Event) {\n    event.preventDefault();\n    setIsSaving(true);\n    const { sortOrder, ...rest } = samlConnection;\n    // pass sortOrder only if set to non-empty string\n    const payload =\n      sortOrder === \"\"\n        ? rest\n        : {\n            ...samlConnection,\n            sortOrder: +sortOrder,\n          };\n    saveConnection<SAMLSSORecord>({\n      url: props.urls.post,\n      formObj: payload,\n      connectionIsSAML: true,\n      callback: async (data) => {\n        setIsSaving(false);\n        if (data && typeof data === \"object\") {\n          if (\"error\" in data) {\n            typeof props.errorCallback === \"function\" &&\n              props.errorCallback(data.error.message);\n          } else {\n            typeof props.successCallback === \"function\" &&\n              props.successCallback({\n                operation: \"CREATE\",\n                connection: data,\n                connectionIsSAML: true,\n              });\n          }\n        }\n      },\n    });\n  }\n\n  function formVariant() {\n    return props.variant || DEFAULT_VALUES.variant;\n  }\n\n  function classes() {\n    return {\n      form: cssClassAssembler(props.classNames?.form, defaultClasses.form),\n      inputField: {\n        label: props.classNames?.label,\n        input: props.classNames?.input,\n        container: props.classNames?.fieldContainer,\n      },\n      select: {\n        label: props.classNames?.label,\n        select: props.classNames?.select,\n      },\n      textarea: {\n        label: props.classNames?.label,\n        textarea: props.classNames?.textarea,\n        container: props.classNames?.fieldContainer,\n      },\n    };\n  }\n\n  function isExcluded(fieldName: keyof SAMLSSOConnection) {\n    return !!(props.excludeFields as (keyof SAMLSSOConnection)[])?.includes(\n      fieldName\n    );\n  }\n\n  function isReadOnly(fieldName: keyof SAMLSSOConnection) {\n    if (\n      fieldName === \"tenant\" &&\n      Array.isArray(props.defaults?.tenant) &&\n      props.defaults.tenant.length === 1\n    ) {\n      return true;\n    }\n    return !!(props.readOnlyFields as (keyof SAMLSSOConnection)[])?.includes(\n      fieldName\n    );\n  }\n\n  function isTenantADropdown() {\n    return (\n      Array.isArray(props.defaults?.tenant) && props.defaults.tenant.length > 1\n    );\n  }\n\n  function tenantOptions() {\n    return Array.isArray(props.defaults?.tenant)\n      ? props.defaults?.tenant.map((tenant: string) => ({\n          value: tenant,\n          text: tenant,\n        }))\n      : [];\n  }\n\n  function shouldDisplayHeader() {\n    if (props.displayHeader !== undefined) {\n      return props.displayHeader;\n    }\n    return true;\n  }\n\n  useEffect(() => {\n    if (props.defaults) {\n      const _tenant = Array.isArray(props.defaults.tenant)\n        ? props.defaults.tenant[0]\n        : props.defaults.tenant;\n      setSamlConnection(\n        updateConnection({\n          ...props.defaults,\n          tenant: _tenant,\n        })\n      );\n    }\n  }, [props.defaults]);\n\n  return (\n    <div>\n      {shouldDisplayHeader() ? (\n        <h5 className={defaultClasses.h5}>Create SSO Connection</h5>\n      ) : null}\n      <form\n        method=\"post\"\n        onSubmit={(event) => save(event)}\n        className={classes().form}\n      >\n        {formVariant() === \"advanced\" ? (\n          <>\n            {!isExcluded(\"name\") ? (\n              <>\n                <InputField\n                  label=\"Connection name (Optional)\"\n                  id=\"name\"\n                  placeholder=\"MyApp\"\n                  classNames={classes().inputField}\n                  required={false}\n                  readOnly={isReadOnly(\"name\")}\n                  value={samlConnection.name}\n                  handleInputChange={handleChange}\n                />\n                <Spacer y={6} />\n              </>\n            ) : null}\n            {!isExcluded(\"label\") ? (\n              <>\n                <InputField\n                  label=\"Connection label (Optional)\"\n                  id=\"label\"\n                  placeholder=\"An internal label to identify the connection\"\n                  classNames={classes().inputField}\n                  required={false}\n                  readOnly={isReadOnly(\"label\")}\n                  value={samlConnection.label}\n                  handleInputChange={handleChange}\n                />\n                <Spacer y={6} />\n              </>\n            ) : null}\n            {!isExcluded(\"description\") ? (\n              <>\n                <InputField\n                  label=\"Description (Optional)\"\n                  id=\"description\"\n                  placeholder=\"A short description not more than 100 characters\"\n                  classNames={classes().inputField}\n                  required={false}\n                  readOnly={isReadOnly(\"description\")}\n                  maxLength={100}\n                  value={samlConnection.description}\n                  handleInputChange={handleChange}\n                />\n                <Spacer y={6} />\n              </>\n            ) : null}\n            {!isExcluded(\"tenant\") ? (\n              <>\n                {!isTenantADropdown() ? (\n                  <InputField\n                    label=\"Tenant\"\n                    id=\"tenant\"\n                    placeholder=\"acme.com\"\n                    aria-describedby=\"tenant-hint\"\n                    classNames={classes().inputField}\n                    required\n                    readOnly={isReadOnly(\"tenant\")}\n                    value={samlConnection.tenant}\n                    handleInputChange={handleChange}\n                  />\n                ) : null}\n                {isTenantADropdown() ? (\n                  <div className={defaultClasses.selectContainer}>\n                    <Select\n                      label=\"Tenant\"\n                      name=\"tenant\"\n                      id=\"tenant\"\n                      options={tenantOptions()}\n                      classNames={classes().select}\n                      selectedValue={samlConnection.tenant}\n                      handleChange={handleChange}\n                    />\n                  </div>\n                ) : null}\n                <div id=\"tenant-hint\" className={defaultClasses.hint}>\n                  Unique identifier for the tenant to which this SSO connection\n                  is linked.See\n                  <Spacer x={1} />\n                  <Anchor\n                    href=\"https://boxyhq.com/guides/jackson/configuring-saml-sso#sso-connection-identifier\"\n                    linkText=\"SSO connection identifier.\"\n                  />\n                </div>\n                <Spacer y={6} />\n              </>\n            ) : null}\n            {!isExcluded(\"product\") ? (\n              <>\n                <InputField\n                  label=\"Product\"\n                  id=\"product\"\n                  placeholder=\"demo\"\n                  aria-describedby=\"product-hint\"\n                  classNames={classes().inputField}\n                  required\n                  readOnly={isReadOnly(\"product\")}\n                  value={samlConnection.product}\n                  handleInputChange={handleChange}\n                />\n                <div id=\"product-hint\" className={defaultClasses.hint}>\n                  Identifies the product/app to which this SSO connection is\n                  linked.\n                </div>\n                <Spacer y={6} />\n              </>\n            ) : null}\n            {!isExcluded(\"redirectUrl\") ? (\n              <>\n                <ItemList\n                  inputType=\"url\"\n                  label=\"Allowed redirect URLs\"\n                  fieldName=\"redirectUrl\"\n                  currentlist={samlConnection.redirectUrl}\n                  handleItemListUpdate={handleItemListUpdate}\n                  classNames={classes().inputField}\n                />\n                <div id=\"redirectUrl-hint\" className={defaultClasses.hint}>\n                  URL(s) to redirect the user to after login. Only the URLs in\n                  this list are allowed in the OAuth flow.\n                </div>\n                <Spacer y={6} />\n              </>\n            ) : null}\n            {!isExcluded(\"defaultRedirectUrl\") ? (\n              <>\n                <InputField\n                  label=\"Default redirect URL\"\n                  id=\"defaultRedirectUrl\"\n                  aria-describedby=\"defaultRedirectUrl-hint\"\n                  placeholder=\"http://localhost:3366/login/saml\"\n                  type=\"url\"\n                  classNames={classes().inputField}\n                  required\n                  readOnly={isReadOnly(\"defaultRedirectUrl\")}\n                  value={samlConnection.defaultRedirectUrl}\n                  handleInputChange={handleChange}\n                />\n                <div\n                  id=\"defaultRedirectUrl-hint\"\n                  className={defaultClasses.hint}\n                >\n                  URL to redirect the user to after an IdP initiated SAML login.\n                </div>\n              </>\n            ) : null}\n            <Spacer y={6} />\n            <Separator text=\"SAML Provider Metadata\" />\n            <Spacer y={6} />\n          </>\n        ) : null}\n        <TextArea\n          label=\"Raw IdP XML\"\n          id=\"rawMetadata\"\n          aria-describedby=\"xml-metadata-hint\"\n          placeholder=\"Paste the raw XML here\"\n          classNames={classes().textarea}\n          required={samlConnection.metadataUrl === \"\"}\n          value={samlConnection.rawMetadata}\n          handleInputChange={handleChange}\n        />\n        <div id=\"xml-metadata-hint\" className={defaultClasses.hint}>\n          Paste the raw XML metadata obtained from SAML provider or enter the\n          metadata URL below.\n        </div>\n        <Spacer y={6} />\n        <Separator text=\"OR\" />\n        <Spacer y={6} />\n        <InputField\n          label=\"Metadata URL\"\n          id=\"metadataUrl\"\n          type=\"url\"\n          placeholder=\"Paste the Metadata URL here\"\n          classNames={classes().inputField}\n          required={samlConnection.rawMetadata === \"\"}\n          value={samlConnection.metadataUrl}\n          handleInputChange={handleChange}\n        />\n        <Spacer y={6} />\n        {formVariant() === \"advanced\" ? (\n          <>\n            {!isExcluded(\"sortOrder\") ? (\n              <>\n                <InputField\n                  label=\"Sort Order\"\n                  id=\"sortOrder\"\n                  type=\"number\"\n                  min=\"0\"\n                  placeholder=\"10\"\n                  classNames={classes().inputField}\n                  readOnly={isReadOnly(\"sortOrder\")}\n                  value={samlConnection.sortOrder as string}\n                  handleInputChange={handleChange}\n                />\n                <div id=\"sortOrder-hint\" className={defaultClasses.hint}>\n                  Connections will be sorted (in a listing view like IdP\n                  Selection) using this setting. Higher values will be displayed\n                  first.\n                </div>\n              </>\n            ) : null}\n          </>\n        ) : null}\n        <Spacer y={6} />\n        {formVariant() === \"advanced\" ? (\n          <>\n            {!isExcluded(\"acsUrlOverride\") ? (\n              <InputField\n                label=\"ACS URL Override\"\n                id=\"acsUrlOverride\"\n                placeholder=\"https://yourcompany.com/app/saml/acs\"\n                type=\"url\"\n                classNames={classes().inputField}\n                value={samlConnection.acsUrlOverride}\n                handleInputChange={handleChange}\n              />\n            ) : null}\n          </>\n        ) : null}\n        <Spacer y={6} />\n        {formVariant() === \"advanced\" ? (\n          <>\n            {!isExcluded(\"forceAuthn\") ? (\n              <Checkbox\n                label=\"Force Authentication\"\n                name=\"forceAuthn\"\n                id=\"forceAuthn\"\n                checked={samlConnection.forceAuthn}\n                handleChange={handleChange}\n              />\n            ) : null}\n          </>\n        ) : null}\n        <Spacer y={6} />\n        <div className={defaultClasses.formAction}>\n          {typeof props.cancelCallback === \"function\" ? (\n            <Button\n              type=\"button\"\n              name=\"Cancel\"\n              variant=\"outline\"\n              handleClick={props.cancelCallback}\n              classNames={props.classNames?.button?.cancel}\n            />\n          ) : null}\n          <Button\n            type=\"submit\"\n            name=\"Save\"\n            classNames={props.classNames?.button?.ctoa}\n            isLoading={isSaving}\n          />\n        </div>\n      </form>\n    </div>\n  );\n}\n\nexport default CreateSAMLConnection;\n","import * as React from \"react\";\nimport styles from \"./index.module.css\";\nimport { RadioGroupProps } from \"../types\";\nimport Spacer from \"../Spacer/index\";\n\nfunction RadioGroup(props: RadioGroupProps) {\n  function id() {\n    return props.label.replace(/ /g, \"\");\n  }\n\n  function orientationValue() {\n    return props.orientation || \"horizontal\";\n  }\n\n  return (\n    <div\n      role=\"radiogroup\"\n      className={styles.container}\n      aria-labelledby={id()}\n      aria-orientation={orientationValue()}\n    >\n      <div className={styles.label} id={id()}>\n        {props.label}\n      </div>\n      {orientationValue() === \"horizontal\" ? <Spacer x={1} /> : null}\n      {orientationValue() === \"horizontal\" ? <Spacer y={1} /> : null}\n      <div className={styles.inputs}>{props.children}</div>\n    </div>\n  );\n}\n\nexport default RadioGroup;\n","\"use client\";\nimport * as React from \"react\";\nimport { RadioProps } from \"../types\";\nimport styles from \"./index.module.css\";\nimport Spacer from \"../Spacer/index\";\n\nfunction Radio(props: RadioProps) {\n  function id() {\n    return props.value.replace(/ /g, \"\");\n  }\n\n  return (\n    <div className={styles.radioDiv}>\n      <input\n        type=\"radio\"\n        value={props.value}\n        checked={props.checked}\n        name={props.name}\n        id={id()}\n        className={styles.radio}\n        onChange={(event) => props.handleInputChange(event)}\n      />\n      <Spacer x={1} />\n      <label htmlFor={id()}>{props.children}</label>\n    </div>\n  );\n}\n\nexport default Radio;\n","\"use client\";\nimport * as React from \"react\";\nimport { useState } from \"react\";\nimport CreateOIDCConnection from \"./oidc/index\";\nimport CreateSAMLConnection from \"./saml/index\";\nimport type { CreateConnectionProps, CreateSSOConnectionProps } from \"../types\";\nimport RadioGroup from \"../../../shared/RadioGroup/index\";\nimport Radio from \"../../../shared/Radio/index\";\nimport Spacer from \"../../../shared/Spacer/index\";\n\nfunction CreateSSOConnection(props: CreateSSOConnectionProps) {\n  const [newConnectionType, setNewConnectionType] = useState(() => \"saml\");\n\n  function connectionIsSAML() {\n    return newConnectionType === \"saml\";\n  }\n\n  function connectionIsOIDC() {\n    return newConnectionType === \"oidc\";\n  }\n\n  function sanitizedDefaults() {\n    return {\n      ...props.defaults,\n      tenant: props.defaults?.tenants || props.defaults?.tenant,\n    };\n  }\n\n  function handleNewConnectionTypeChange(event: Event) {\n    setNewConnectionType((event.target as HTMLInputElement).value);\n  }\n\n  return (\n    <div>\n      <RadioGroup label=\"Select SSO type:\">\n        <Radio\n          name=\"connection\"\n          value=\"saml\"\n          checked={newConnectionType === \"saml\"}\n          handleInputChange={handleNewConnectionTypeChange}\n        >\n          SAML\n        </Radio>\n        <Radio\n          name=\"connection\"\n          value=\"oidc\"\n          checked={newConnectionType === \"oidc\"}\n          handleInputChange={handleNewConnectionTypeChange}\n        >\n          OIDC\n        </Radio>\n      </RadioGroup>\n      <Spacer y={4} />\n      {connectionIsSAML() ? (\n        <CreateSAMLConnection\n          urls={props.urls}\n          excludeFields={props.excludeFields?.saml}\n          readOnlyFields={props.readOnlyFields?.saml}\n          classNames={props.classNames}\n          variant={props.variant?.saml}\n          errorCallback={props.errorCallback}\n          successCallback={props.successCallback}\n          cancelCallback={props.cancelCallback}\n          displayHeader={false}\n          defaults={sanitizedDefaults()}\n        />\n      ) : null}\n      {connectionIsOIDC() ? (\n        <CreateOIDCConnection\n          urls={props.urls}\n          excludeFields={props.excludeFields?.oidc}\n          readOnlyFields={props.readOnlyFields?.oidc}\n          classNames={props.classNames}\n          variant={props.variant?.oidc}\n          errorCallback={props.errorCallback}\n          successCallback={props.successCallback}\n          cancelCallback={props.cancelCallback}\n          displayHeader={false}\n          defaults={sanitizedDefaults()}\n        />\n      ) : null}\n    </div>\n  );\n}\n\nexport default CreateSSOConnection;\n","\"use client\";\nimport * as React from \"react\";\nimport { useState, useEffect } from \"react\";\nimport type {\n  ConnectionData,\n  ConnectionListProps,\n  OIDCSSORecord,\n  SAMLSSORecord,\n} from \"../types\";\nimport LoadingContainer from \"../../../shared/LoadingContainer/index\";\nimport {\n  BadgeProps,\n  PageToken,\n  PaginatePayload,\n  TableProps,\n} from \"../../../shared/types\";\nimport { sendHTTPRequest } from \"../../../shared/http\";\nimport Paginate from \"../../../shared/Paginate/index\";\nimport PaginatedTable from \"../../../shared/Table/paginated\";\nimport NonPaginatedTable from \"../../../shared/Table/non-paginated\";\nconst DEFAULT_VALUES = {\n  isSettingsView: false,\n  connectionListData: [] as ConnectionData<any>[],\n};\n\nfunction ConnectionList(props: ConnectionListProps) {\n  const [connectionListData, setConnectionListData] = useState(\n    () => DEFAULT_VALUES.connectionListData\n  );\n\n  const [isConnectionListLoading, setIsConnectionListLoading] = useState(\n    () => true\n  );\n\n  const [pageTokenMap, setPageTokenMap] = useState(() => ({}));\n\n  const [showErrorComponent, setShowErrorComponent] = useState(() => false);\n\n  const [errorMessage, setErrorMessage] = useState(() => \"\");\n\n  function getUrl() {\n    return props.urls.get;\n  }\n\n  function isPaginated() {\n    return props.paginate?.itemsPerPage !== undefined;\n  }\n\n  function colsToDisplay() {\n    return (\n      props.cols || [\n        \"name\",\n        \"provider\",\n        \"tenant\",\n        \"product\",\n        \"type\",\n        \"status\",\n        \"actions\",\n      ]\n    ).map((_col) => {\n      if (_col === \"status\") {\n        return {\n          name: \"status\",\n          badge: {\n            position: \"surround\",\n            variantSelector(rowData) {\n              let _variant: BadgeProps[\"variant\"];\n              if (rowData.deactivated) {\n                _variant = \"warning\";\n              }\n              if (!rowData.deactivated) {\n                _variant = \"success\";\n              }\n              return _variant;\n            },\n          },\n        };\n      } else if (_col === \"name\") {\n        return {\n          name: \"name\",\n          badge: {\n            position: \"right\",\n            badgeText: \"System\",\n            variant: \"info\",\n            shouldDisplayBadge(rowData) {\n              return rowData.isSystemSSO;\n            },\n          },\n        };\n      } else {\n        return _col;\n      }\n    }) as TableProps[\"cols\"];\n  }\n\n  function connectionProviderName(connection: SAMLSSORecord | OIDCSSORecord) {\n    if (\"idpMetadata\" in connection) {\n      return (\n        connection.idpMetadata.friendlyProviderName ||\n        connection.idpMetadata.provider\n      );\n    }\n    if (\"oidcProvider\" in connection) {\n      return (\n        connection.oidcProvider.friendlyProviderName ||\n        connection.oidcProvider.provider\n      );\n    }\n    return \"Unknown\";\n  }\n\n  function actions() {\n    return [\n      {\n        icon: \"PencilIcon\",\n        label: \"Edit\",\n        handleClick: (connection: ConnectionData<any>) =>\n          props.handleActionClick(\"edit\", connection),\n      },\n    ];\n  }\n\n  function listFetchUrl(\n    params: Partial<PaginatePayload> &\n      Pick<ConnectionListProps, \"tenant\" | \"product\" | \"displaySorted\"> & {\n        getUrl: string;\n      }\n  ) {\n    let _url = params.getUrl;\n    const [urlPath, qs] = _url.split(\"?\");\n    const urlParams = new URLSearchParams(qs);\n    if (params.tenant) {\n      if (Array.isArray(params.tenant)) {\n        for (const _tenant of params.tenant) {\n          urlParams.append(\"tenant\", _tenant);\n        }\n      } else {\n        urlParams.set(\"tenant\", params.tenant);\n      }\n    }\n    if (params.product) {\n      urlParams.set(\"product\", params.product);\n    }\n    if (params.pageToken) {\n      urlParams.set(\"pageToken\", params.pageToken);\n    }\n    if (params.displaySorted) {\n      urlParams.set(\"sort\", \"true\");\n    }\n    if (params?.offset !== undefined) {\n      urlParams.set(\"pageOffset\", `${params.offset}`);\n      urlParams.set(\"pageLimit\", `${params.limit}`);\n    }\n    if (urlParams.toString()) {\n      return `${urlPath}?${urlParams}`;\n    }\n    return _url;\n  }\n\n  function baseFetchUrl() {\n    return listFetchUrl({\n      getUrl: getUrl(),\n      tenant: props.tenant,\n      product: props.product,\n      displaySorted: props.displaySorted,\n    });\n  }\n\n  function updateTokenMap(offset: number, token: PageToken) {\n    return {\n      ...pageTokenMap,\n      [offset]: token,\n    };\n  }\n\n  async function getFieldsData(url: string) {\n    setIsConnectionListLoading(true);\n    type ConnectionList = ConnectionData<SAMLSSORecord | OIDCSSORecord>[];\n    const response = await sendHTTPRequest<\n      | ConnectionList\n      | {\n          data: ConnectionList;\n          pageToken: PageToken;\n        }\n    >(url);\n    setIsConnectionListLoading(false);\n    if (response && typeof response === \"object\") {\n      if (\"error\" in response && response.error) {\n        setShowErrorComponent(true);\n        setErrorMessage(response.error.message);\n        typeof props.errorCallback === \"function\" &&\n          props.errorCallback(response.error.message);\n      } else {\n        const isTokenizedPagination =\n          typeof response === \"object\" && \"pageToken\" in response;\n        const _data = isTokenizedPagination ? response.data : response;\n        if (Array.isArray(_data)) {\n          const _connectionsListData = _data.map(\n            (connection: ConnectionData<any>) => {\n              return {\n                ...connection,\n                provider: connectionProviderName(connection),\n                type: \"oidcProvider\" in connection ? \"OIDC\" : \"SAML\",\n                status: connection.deactivated ? \"Inactive\" : \"Active\",\n                isSystemSSO: connection.isSystemSSO,\n              };\n            }\n          );\n          setConnectionListData(_connectionsListData);\n          typeof props.handleListFetchComplete === \"function\" &&\n            props.handleListFetchComplete(_connectionsListData);\n        }\n        if (isTokenizedPagination) {\n          return response.pageToken;\n        }\n      }\n    }\n  }\n\n  async function reFetch(payload: PaginatePayload) {\n    const pageToken = await getFieldsData(\n      listFetchUrl({\n        getUrl: baseFetchUrl(),\n        ...payload,\n      })\n    );\n    if (pageToken) {\n      setPageTokenMap(updateTokenMap(payload.offset, pageToken));\n    }\n  }\n\n  useEffect(() => {\n    if (!isPaginated()) {\n      getFieldsData(baseFetchUrl());\n    }\n  }, [baseFetchUrl(), isPaginated()]);\n\n  return (\n    <LoadingContainer isBusy={isConnectionListLoading}>\n      {isPaginated() ? (\n        <Paginate\n          itemsPerPage={props.paginate!.itemsPerPage}\n          currentPageItemsCount={connectionListData.length}\n          handlePageChange={props.paginate?.handlePageChange}\n          reFetch={reFetch}\n          pageTokenMap={pageTokenMap}\n        >\n          <PaginatedTable\n            emptyStateMessage=\"No connections found.\"\n            cols={colsToDisplay()}\n            data={connectionListData}\n            actions={actions()}\n            showErrorComponent={showErrorComponent}\n            errorMessage={errorMessage}\n            tableProps={props.tableProps}\n          />\n        </Paginate>\n      ) : null}\n      {!isPaginated() ? (\n        <NonPaginatedTable\n          emptyStateMessage=\"No connections found.\"\n          cols={colsToDisplay()}\n          data={connectionListData}\n          actions={actions()}\n          showErrorComponent={showErrorComponent}\n          errorMessage={errorMessage}\n          tableProps={props.tableProps}\n        />\n      ) : null}\n    </LoadingContainer>\n  );\n}\n\nexport default ConnectionList;\n","\"use client\";\nimport * as React from \"react\";\nimport { useState } from \"react\";\nimport type { ToggleConnectionStatusProps } from \"../types\";\nimport defaultClasses from \"./index.module.css\";\nimport cssClassAssembler from \"../../utils/cssClassAssembler\";\nimport ToggleSwitch from \"../../../shared/ToggleSwitch/index\";\nimport ConfirmationPrompt from \"../../../shared/ConfirmationPrompt/index\";\nimport { sendHTTPRequest } from \"../../../shared/http\";\n\nfunction ToggleConnectionStatus(props: ToggleConnectionStatusProps) {\n  const [displayPrompt, setDisplayPrompt] = useState(() => false);\n\n  function connectionStatus() {\n    return props.connection.deactivated ? \"Inactive\" : \"Active\";\n  }\n\n  function connectionAction() {\n    return props.connection.deactivated ? \"activate\" : \"deactivate\";\n  }\n\n  function askForConfirmation() {\n    setDisplayPrompt(true);\n  }\n\n  function onCancel() {\n    setDisplayPrompt(false);\n  }\n\n  function onConfirm() {\n    updateConnectionStatus(!props.connection.deactivated);\n  }\n\n  function classes() {\n    return {\n      container: cssClassAssembler(\n        props.classNames?.container,\n        defaultClasses.container\n      ),\n    };\n  }\n\n  function updateConnectionStatus(status: boolean) {\n    async function updateConnection() {\n      type payload = {\n        [key: string]: string | boolean;\n      };\n      const body: payload = {\n        clientID: props.connection.clientID,\n        clientSecret: props.connection.clientSecret,\n        tenant: props.connection.tenant,\n        product: props.connection.product,\n        deactivated: status,\n      };\n      const connectionIsSAML = \"idpMetadata\" in props.connection ? true : false;\n      const connectionIsOIDC =\n        \"oidcProvider\" in props.connection ? true : false;\n      if (connectionIsSAML) {\n        body[\"isSAML\"] = true;\n      } else if (connectionIsOIDC) {\n        body[\"isOIDC\"] = true;\n      }\n      const data = await sendHTTPRequest<undefined>(props.urls.patch, {\n        method: \"PATCH\",\n        headers: {\n          \"Content-Type\": \"application/json\",\n        },\n        body: JSON.stringify(body),\n      });\n      setDisplayPrompt(false);\n      if (data?.error) {\n        typeof props.errorCallback === \"function\" &&\n          props.errorCallback(data.error.message);\n      } else {\n        typeof props.successCallback === \"function\" &&\n          props.successCallback({\n            operation: \"UPDATE\",\n            connectionIsSAML,\n            connectionIsOIDC,\n          });\n      }\n    }\n    updateConnection();\n  }\n\n  return (\n    <>\n      {props.connection !== undefined || props.connection !== null ? (\n        <>\n          <div className={classes().container}>\n            {displayPrompt ? (\n              <ConfirmationPrompt\n                ctoaVariant={\n                  props.connection.deactivated ? \"primary\" : \"destructive\"\n                }\n                classNames={props.classNames?.confirmationPrompt}\n                cancelCallback={onCancel}\n                confirmationCallback={onConfirm}\n                promptMessage={`Do you want to ${connectionAction()} the connection?`}\n              />\n            ) : null}\n            {!displayPrompt ? (\n              <ToggleSwitch\n                label={connectionStatus()}\n                handleChange={askForConfirmation}\n                checked={!props.connection.deactivated}\n                disabled={displayPrompt}\n              />\n            ) : null}\n          </div>\n        </>\n      ) : null}\n    </>\n  );\n}\n\nexport default ToggleConnectionStatus;\n","import * as React from \"react\";\nimport { CardProps } from \"../types\";\nimport styles from \"./index.module.css\";\nimport CheckMarkIcon from \"../icons/CheckMarkIcon\";\nimport InfoIcon from \"../icons/InfoIcon\";\n\nfunction Card(props: CardProps) {\n  function variantCss() {\n    return props.variant ? \" \" + styles[props.variant] : \"\";\n  }\n\n  function flexCss() {\n    return props.arrangement === \"vertical\" ? \" \" + styles[\"vertical\"] : \"\";\n  }\n\n  function shouldDisplayIcon() {\n    return typeof props.displayIcon === \"boolean\" ? props.displayIcon : true;\n  }\n\n  return (\n    <article className={`${styles.container}${variantCss()}${flexCss()}`}>\n      {props.title ? (\n        <h3 className={styles.title}>\n          {shouldDisplayIcon() ? (\n            <>\n              {props.variant === \"success\" ? (\n                <CheckMarkIcon\n                  svgAttrs={{\n                    class: styles.svg,\n                  }}\n                />\n              ) : null}\n              {props.variant === \"info\" ? (\n                <InfoIcon\n                  svgAttrs={{\n                    class: styles.svg,\n                  }}\n                />\n              ) : null}\n            </>\n          ) : null}\n          {props.title}\n        </h3>\n      ) : null}\n      <div className={styles.body}>{props.children}</div>\n    </article>\n  );\n}\n\nexport default Card;\n","\"use client\";\nimport * as React from \"react\";\nimport { useState, useEffect } from \"react\";\n\ntype Keys = keyof typeof INITIAL_VALUES;\ntype Values = (typeof INITIAL_VALUES)[Keys];\nimport SecretInputFormControl from \"../../../../shared/inputs/SecretInputFormControl/index\";\nimport ToggleConnectionStatus from \"../../ToggleConnectionStatus/index\";\nimport type {\n  EditOIDCConnectionProps,\n  FormObj,\n  OIDCSSOConnection,\n  OIDCSSORecord,\n  OIDCFormState,\n} from \"../../types\";\nimport { saveConnection, deleteConnection } from \"../../utils\";\nimport defaultClasses from \"./index.module.css\";\nimport cssClassAssembler from \"../../../utils/cssClassAssembler\";\nimport Button from \"../../../../shared/Button/index\";\nimport Spacer from \"../../../../shared/Spacer/index\";\nimport ConfirmationPrompt from \"../../../../shared/ConfirmationPrompt/index\";\nimport InputField from \"../../../../shared/inputs/InputField/index\";\nimport Separator from \"../../../../shared/Separator/index\";\nimport Card from \"../../../../shared/Card/index\";\nimport { InputWithCopyButton } from \"../../../../shared\";\nimport LoadingContainer from \"../../../../shared/LoadingContainer/index\";\nimport { ApiResponse, sendHTTPRequest } from \"../../../../shared/http\";\nimport ItemList from \"../../../../shared/inputs/ItemList/index\";\nconst INITIAL_VALUES = {\n  name: \"\",\n  tenant: \"\",\n  product: \"\",\n  description: \"\",\n  redirectUrl: [\"\"],\n  defaultRedirectUrl: \"\",\n  oidcClientSecret: \"\",\n  oidcClientId: \"\",\n  oidcDiscoveryUrl: \"\",\n  \"oidcMetadata.issuer\": \"\",\n  \"oidcMetadata.authorization_endpoint\": \"\",\n  \"oidcMetadata.token_endpoint\": \"\",\n  \"oidcMetadata.jwks_uri\": \"\",\n  \"oidcMetadata.userinfo_endpoint\": \"\",\n} as OIDCFormState;\n\nfunction EditOIDCConnection(props: EditOIDCConnectionProps) {\n  const [oidcConnection, setOidcConnection] = useState(() => INITIAL_VALUES);\n\n  const [isConnectionLoading, setIsConnectionLoading] = useState(() => true);\n\n  const [isSaving, setIsSaving] = useState(() => false);\n\n  const [showDelConfirmation, setShowDelConfirmation] = useState(() => false);\n\n  function toggleDelConfirmation() {\n    setShowDelConfirmation(!showDelConfirmation);\n  }\n\n  function formVariant() {\n    return props.variant || \"basic\";\n  }\n\n  function classes() {\n    return {\n      formDiv: cssClassAssembler(\n        props.classNames?.formDiv,\n        defaultClasses.formDiv\n      ),\n      label: cssClassAssembler(props.classNames?.label, defaultClasses.label),\n      inputField: {\n        label: props.classNames?.label,\n        input: props.classNames?.input,\n        container: props.classNames?.fieldContainer,\n      },\n      textarea: {\n        label: props.classNames?.label,\n        textarea: props.classNames?.textarea,\n        container: props.classNames?.fieldContainer,\n      },\n      section: cssClassAssembler(\n        props.classNames?.section,\n        defaultClasses.section\n      ),\n    };\n  }\n\n  function isExcluded(fieldName: keyof OIDCSSOConnection) {\n    return !!(props.excludeFields as (keyof OIDCSSOConnection)[])?.includes(\n      fieldName\n    );\n  }\n\n  function updateConnection(data: Partial<OIDCSSOConnection>) {\n    return {\n      ...oidcConnection,\n      ...data,\n    };\n  }\n\n  function handleChange(event: Event) {\n    const target = event.target as HTMLInputElement | HTMLTextAreaElement;\n    const id = target.id as Keys;\n    const targetValue = (\n      event.currentTarget as HTMLInputElement | HTMLTextAreaElement\n    )?.value;\n    setOidcConnection(\n      updateConnection({\n        [id]: targetValue,\n      })\n    );\n  }\n\n  function handleItemListUpdate(fieldName: string, listValue: string[]) {\n    setOidcConnection(\n      updateConnection({\n        [fieldName]: listValue,\n      })\n    );\n  }\n\n  function resetOIDCMetadataFields() {\n    const currentVal = oidcConnection;\n    setOidcConnection({\n      ...currentVal,\n      \"oidcMetadata.issuer\": \"\",\n      \"oidcMetadata.authorization_endpoint\": \"\",\n      \"oidcMetadata.token_endpoint\": \"\",\n      \"oidcMetadata.jwks_uri\": \"\",\n      \"oidcMetadata.userinfo_endpoint\": \"\",\n    });\n  }\n\n  function saveSSOConnection(event: Event) {\n    event.preventDefault();\n    const formObj: any = {\n      connectionIsOIDC: true,\n    };\n    Object.entries(oidcConnection).map(([key, val]) => {\n      if (key.startsWith(\"oidcMetadata.\")) {\n        if (formObj.oidcMetadata === undefined) {\n          formObj.oidcMetadata = {} as OIDCSSOConnection[\"oidcMetadata\"];\n        }\n        formObj.oidcMetadata![key.replace(\"oidcMetadata.\", \"\")] = val;\n      } else if (key === \"sortOrder\") {\n        // pass sortOrder only if set to non-empty string\n        val !== \"\" && (formObj[key] = +val); // convert sortOrder into number\n      } else {\n        formObj[key as keyof Omit<OIDCSSOConnection, \"oidcMetadata\">] = val;\n      }\n    });\n    setIsSaving(true);\n    saveConnection<undefined>({\n      url: props.urls.patch,\n      isEditView: true,\n      formObj: formObj as FormObj,\n      connectionIsOIDC: true,\n      callback: async (data) => {\n        setIsSaving(false);\n        if (data?.error) {\n          typeof props.errorCallback === \"function\" &&\n            props.errorCallback(data.error.message);\n        } else {\n          if (oidcConnection.oidcDiscoveryUrl) {\n            resetOIDCMetadataFields();\n          }\n          typeof props.successCallback === \"function\" &&\n            props.successCallback({\n              operation: \"UPDATE\",\n              connection: formObj,\n              connectionIsOIDC: true,\n            });\n        }\n      },\n    });\n  }\n\n  function deleteSSOConnection(event: Event) {\n    event.preventDefault();\n    deleteConnection({\n      url: props.urls.delete,\n      clientId: oidcConnection.clientID!,\n      clientSecret: oidcConnection.clientSecret!,\n      callback: async (data: ApiResponse<undefined>) => {\n        if (data?.error) {\n          typeof props.errorCallback === \"function\" &&\n            props.errorCallback(data.error.message);\n        } else {\n          typeof props.successCallback === \"function\" &&\n            props.successCallback({\n              operation: \"DELETE\",\n              connectionIsOIDC: true,\n            });\n        }\n      },\n    });\n  }\n\n  function shouldDisplayHeader() {\n    if (props.displayHeader !== undefined) {\n      return props.displayHeader;\n    }\n    return true;\n  }\n\n  function shouldDisplayInfoCard() {\n    if (props.displayInfo !== undefined) {\n      return props.displayInfo;\n    }\n    return true;\n  }\n\n  function connectionFetchUrl() {\n    return props.urls.get;\n  }\n\n  useEffect(() => {\n    async function getConnection(url: string) {\n      const data = await sendHTTPRequest<OIDCSSORecord[]>(url);\n      setIsConnectionLoading(false);\n      if (data && typeof data === \"object\") {\n        if (\"error\" in data && data.error) {\n          typeof props.errorCallback === \"function\" &&\n            props.errorCallback(data.error.message);\n        } else if (Array.isArray(data)) {\n          const _connection = data[0];\n          if (_connection) {\n            setOidcConnection({\n              ..._connection,\n              name: _connection.name || \"\",\n              label: _connection.label || \"\",\n              tenant: _connection.tenant || \"\",\n              product: _connection.product || \"\",\n              description: _connection.description || \"\",\n              redirectUrl: _connection.redirectUrl,\n              defaultRedirectUrl: _connection.defaultRedirectUrl,\n              oidcClientId: _connection.oidcProvider.clientId || \"\",\n              oidcClientSecret: _connection.oidcProvider.clientSecret || \"\",\n              oidcDiscoveryUrl: _connection.oidcProvider.discoveryUrl || \"\",\n              \"oidcMetadata.issuer\":\n                _connection.oidcProvider.metadata?.issuer || \"\",\n              \"oidcMetadata.authorization_endpoint\":\n                _connection.oidcProvider.metadata?.authorization_endpoint || \"\",\n              \"oidcMetadata.token_endpoint\":\n                _connection.oidcProvider.metadata?.token_endpoint || \"\",\n              \"oidcMetadata.jwks_uri\":\n                _connection.oidcProvider.metadata?.jwks_uri || \"\",\n              \"oidcMetadata.userinfo_endpoint\":\n                _connection.oidcProvider.metadata?.userinfo_endpoint || \"\",\n              sortOrder: _connection.sortOrder ?? \"\",\n            });\n          }\n        }\n      }\n    }\n    getConnection(connectionFetchUrl());\n  }, [connectionFetchUrl()]);\n\n  return (\n    <LoadingContainer isBusy={isConnectionLoading}>\n      <div className={classes().formDiv}>\n        <div className={defaultClasses.headingContainer}>\n          {shouldDisplayHeader() ? (\n            <h5 className={defaultClasses.h5}>Edit SSO Connection</h5>\n          ) : null}\n          <ToggleConnectionStatus\n            connection={oidcConnection}\n            urls={{\n              patch: props.urls.patch,\n            }}\n            classNames={{\n              confirmationPrompt: {\n                button: {\n                  ctoa: `${\n                    props.classNames?.confirmationPrompt?.button?.ctoa\n                  } ${\n                    oidcConnection.deactivated\n                      ? props.classNames?.button?.ctoa\n                      : props.classNames?.button?.destructive\n                  }`.trim(),\n                  cancel: props.classNames?.confirmationPrompt?.button?.cancel,\n                },\n              },\n            }}\n            errorCallback={props.errorCallback}\n            successCallback={props.successCallback}\n          />\n        </div>\n        <div>\n          <form method=\"post\" onSubmit={(event) => saveSSOConnection(event)}>\n            {formVariant() === \"advanced\" ? (\n              <>\n                {!isExcluded(\"name\") ? (\n                  <>\n                    <InputField\n                      label=\"Connection name (Optional)\"\n                      id=\"name\"\n                      placeholder=\"MyApp\"\n                      classNames={classes().inputField}\n                      required={false}\n                      value={oidcConnection.name || \"\"}\n                      handleInputChange={handleChange}\n                    />\n                    <Spacer y={6} />\n                  </>\n                ) : null}\n                {!isExcluded(\"label\") ? (\n                  <>\n                    <InputField\n                      label=\"Connection label (Optional)\"\n                      id=\"label\"\n                      placeholder=\"An internal label to identify the connection\"\n                      classNames={classes().inputField}\n                      required={false}\n                      value={oidcConnection.label!}\n                      handleInputChange={handleChange}\n                    />\n                    <Spacer y={6} />\n                  </>\n                ) : null}\n                {!isExcluded(\"description\") ? (\n                  <>\n                    <InputField\n                      label=\"Description (Optional)\"\n                      id=\"description\"\n                      placeholder=\"A short description not more than 100 characters\"\n                      classNames={classes().inputField}\n                      required={false}\n                      maxLength={100}\n                      value={oidcConnection.description || \"\"}\n                      handleInputChange={handleChange}\n                    />\n                    <Spacer y={6} />\n                  </>\n                ) : null}\n                {!isExcluded(\"redirectUrl\") ? (\n                  <>\n                    <ItemList\n                      inputType=\"url\"\n                      label=\"Allowed redirect URLs\"\n                      fieldName=\"redirectUrl\"\n                      currentlist={oidcConnection.redirectUrl}\n                      handleItemListUpdate={handleItemListUpdate}\n                      classNames={classes().inputField}\n                    />\n                    <div id=\"redirectUrl-hint\" className={defaultClasses.hint}>\n                      URL(s) to redirect the user to after login. Only the URLs\n                      in this list are allowed in the OAuth flow.\n                    </div>\n                    <Spacer y={6} />\n                  </>\n                ) : null}\n                {!isExcluded(\"defaultRedirectUrl\") ? (\n                  <>\n                    <InputField\n                      label=\"Default redirect URL\"\n                      id=\"defaultRedirectUrl\"\n                      aria-describedby=\"defaultRedirectUrl-hint\"\n                      placeholder=\"http://localhost:3366/login/saml\"\n                      type=\"url\"\n                      classNames={classes().inputField}\n                      required\n                      value={oidcConnection.defaultRedirectUrl || \"\"}\n                      handleInputChange={handleChange}\n                    />\n                    <div\n                      id=\"defaultRedirectUrl-hint\"\n                      className={defaultClasses.hint}\n                    >\n                      URL to redirect the user to after an IdP initiated login.\n                    </div>\n                    <Spacer y={6} />\n                  </>\n                ) : null}\n              </>\n            ) : null}\n            <InputField\n              label=\"Client ID [OIDC Provider]\"\n              id=\"oidcClientId\"\n              aria-describedby=\"oidc-clientid-hint\"\n              required\n              readOnly\n              classNames={classes().inputField}\n              value={oidcConnection.oidcClientId || \"\"}\n            />\n            <Spacer y={6} />\n            <SecretInputFormControl\n              label=\"Client Secret [OIDC Provider]\"\n              id=\"oidcClientSecret\"\n              classNames={{\n                input: props.classNames?.secretInput,\n              }}\n              value={oidcConnection.oidcClientSecret}\n              required\n              readOnly={false}\n              copyDoneCallback={props.successCallback}\n              handleChange={handleChange}\n            />\n            <Spacer y={6} />\n            <InputField\n              id=\"oidcDiscoveryUrl\"\n              type=\"url\"\n              label=\"Well-known URL of OpenID Provider\"\n              placeholder=\"https://example.com/.well-known/openid-configuration\"\n              aria-describedby=\"oidc-metadata-hint\"\n              classNames={classes().inputField}\n              value={oidcConnection.oidcDiscoveryUrl || \"\"}\n              handleInputChange={handleChange}\n            />\n            <div id=\"oidc-metadata-hint\" className={defaultClasses.hint}>\n              Enter the well known discovery path of OpenID provider or manually\n              enter the OpenId provider metadata below.\n            </div>\n            <Spacer y={6} />\n            <Separator text=\"OR\" />\n            <Spacer y={6} />\n            <InputField\n              id=\"oidcMetadata.issuer\"\n              label=\"Issuer\"\n              placeholder=\"https://example.com\"\n              classNames={classes().inputField}\n              value={oidcConnection[\"oidcMetadata.issuer\"]!}\n              handleInputChange={handleChange}\n            />\n            <Spacer y={6} />\n            <InputField\n              id=\"oidcMetadata.authorization_endpoint\"\n              type=\"url\"\n              label=\"Authorization Endpoint\"\n              placeholder=\"https://example.com/oauth/authorize\"\n              classNames={classes().inputField}\n              value={oidcConnection[\"oidcMetadata.authorization_endpoint\"]!}\n              handleInputChange={handleChange}\n            />\n            <Spacer y={6} />\n            <InputField\n              id=\"oidcMetadata.token_endpoint\"\n              type=\"url\"\n              label=\"Token endpoint\"\n              placeholder=\"https://example.com/oauth/token\"\n              classNames={classes().inputField}\n              value={oidcConnection[\"oidcMetadata.token_endpoint\"]!}\n              handleInputChange={handleChange}\n            />\n            <Spacer y={6} />\n            <InputField\n              id=\"oidcMetadata.jwks_uri\"\n              type=\"url\"\n              label=\"JWKS URI\"\n              placeholder=\"https://example.com/.well-known/jwks.json\"\n              classNames={classes().inputField}\n              value={oidcConnection[\"oidcMetadata.jwks_uri\"]!}\n              handleInputChange={handleChange}\n            />\n            <Spacer y={6} />\n            <InputField\n              id=\"oidcMetadata.userinfo_endpoint\"\n              type=\"url\"\n              label=\"UserInfo endpoint\"\n              placeholder=\"https://example.com/userinfo\"\n              classNames={classes().inputField}\n              value={oidcConnection[\"oidcMetadata.userinfo_endpoint\"]!}\n              handleInputChange={handleChange}\n            />\n            <Spacer y={6} />\n            {formVariant() === \"advanced\" ? (\n              <>\n                {!isExcluded(\"sortOrder\") ? (\n                  <>\n                    <InputField\n                      label=\"Sort Order\"\n                      id=\"sortOrder\"\n                      type=\"number\"\n                      min=\"0\"\n                      placeholder=\"10\"\n                      classNames={classes().inputField}\n                      value={oidcConnection.sortOrder as string}\n                      handleInputChange={handleChange}\n                    />\n                    <div id=\"sortOrder-hint\" className={defaultClasses.hint}>\n                      Connections will be sorted (in a listing view like IdP\n                      Selection) using this setting. Higher values will be\n                      displayed first.\n                    </div>\n                  </>\n                ) : null}\n              </>\n            ) : null}\n            <div className={defaultClasses.formAction}>\n              {typeof props.cancelCallback === \"function\" ? (\n                <Button\n                  type=\"button\"\n                  name=\"Cancel\"\n                  variant=\"outline\"\n                  handleClick={props.cancelCallback}\n                  classNames={props.classNames?.button?.cancel}\n                />\n              ) : null}\n              <Button\n                type=\"submit\"\n                name=\"Save\"\n                classNames={props.classNames?.button?.ctoa}\n                isLoading={isSaving}\n              />\n            </div>\n            <Spacer y={6} />\n            {shouldDisplayInfoCard() ? (\n              <Card\n                title=\"Connection info\"\n                variant=\"info\"\n                arrangement=\"vertical\"\n              >\n                <div className={defaultClasses.info}>\n                  {formVariant() === \"advanced\" ? (\n                    <>\n                      {!isExcluded(\"tenant\") ? (\n                        <>\n                          <InputField\n                            label=\"Tenant\"\n                            id=\"tenant\"\n                            placeholder=\"acme.com\"\n                            classNames={classes().inputField}\n                            required\n                            readOnly\n                            value={oidcConnection.tenant!}\n                          />\n                          <Spacer y={6} />\n                        </>\n                      ) : null}\n                      {!isExcluded(\"product\") ? (\n                        <>\n                          <InputField\n                            label=\"Product\"\n                            id=\"product\"\n                            placeholder=\"demo\"\n                            classNames={classes().inputField}\n                            required\n                            readOnly\n                            value={oidcConnection.product!}\n                          />\n                          <Spacer y={6} />\n                        </>\n                      ) : null}\n                    </>\n                  ) : null}\n                  <InputWithCopyButton\n                    label=\"Client ID\"\n                    text={oidcConnection.clientID || \"\"}\n                    classNames={classes().inputField}\n                    copyDoneCallback={props.successCallback}\n                  />\n                  <Spacer y={6} />\n                  <SecretInputFormControl\n                    label=\"Client Secret\"\n                    id=\"clientSecret\"\n                    classNames={{\n                      input: props.classNames?.secretInput,\n                    }}\n                    value={oidcConnection.clientSecret}\n                    required\n                    readOnly\n                    copyDoneCallback={props.successCallback}\n                    handleChange={handleChange}\n                  />\n                </div>\n                <Spacer y={6} />\n              </Card>\n            ) : null}\n            <Spacer y={4} />\n            {oidcConnection.clientID && oidcConnection.clientSecret ? (\n              <section className={classes().section}>\n                <div className={defaultClasses.info}>\n                  <h6 className={defaultClasses.sectionHeading}>\n                    Delete this connection\n                  </h6>\n                  <p className={defaultClasses.sectionPara}>\n                    All your apps using this connection will stop working.\n                  </p>\n                </div>\n                {!showDelConfirmation ? (\n                  <Button\n                    name=\"Delete\"\n                    variant=\"destructive\"\n                    type=\"button\"\n                    handleClick={toggleDelConfirmation}\n                    classNames={props.classNames?.button?.destructive}\n                  />\n                ) : null}\n                {showDelConfirmation ? (\n                  <ConfirmationPrompt\n                    ctoaVariant=\"destructive\"\n                    promptMessage=\"Are you sure you want to delete the Connection? This action cannot be undone and will permanently delete the Connection.\"\n                    classNames={{\n                      button: {\n                        ctoa: `${props.classNames?.button?.destructive} ${props.classNames?.confirmationPrompt?.button?.ctoa}`.trim(),\n                        cancel:\n                          props.classNames?.confirmationPrompt?.button?.cancel,\n                      },\n                    }}\n                    cancelCallback={toggleDelConfirmation}\n                    confirmationCallback={deleteSSOConnection}\n                  />\n                ) : null}\n              </section>\n            ) : null}\n          </form>\n        </div>\n      </div>\n    </LoadingContainer>\n  );\n}\n\nexport default EditOIDCConnection;\n","\"use client\";\nimport * as React from \"react\";\nimport { useState, useEffect } from \"react\";\n\ntype Keys = keyof typeof INITIAL_VALUES.samlConnection;\ntype Values = (typeof INITIAL_VALUES.samlConnection)[Keys];\nimport ToggleConnectionStatus from \"../../ToggleConnectionStatus/index\";\nimport type {\n  EditSAMLConnectionProps,\n  SAMLSSOConnection,\n  SAMLSSORecord,\n  SAMLFormState,\n} from \"../../types\";\nimport { saveConnection, deleteConnection } from \"../../utils\";\nimport defaultClasses from \"./index.module.css\";\nimport cssClassAssembler from \"../../../utils/cssClassAssembler\";\nimport SecretInputFormControl from \"../../../../shared/inputs/SecretInputFormControl/index\";\nimport Card from \"../../../../shared/Card/index\";\nimport Button from \"../../../../shared/Button/index\";\nimport Spacer from \"../../../../shared/Spacer/index\";\nimport Separator from \"../../../../shared/Separator/index\";\nimport ConfirmationPrompt from \"../../../../shared/ConfirmationPrompt/index\";\nimport Checkbox from \"../../../../shared/Checkbox/index\";\nimport InputField from \"../../../../shared/inputs/InputField/index\";\nimport TextArea from \"../../../../shared/inputs/TextArea/index\";\nimport { InputWithCopyButton } from \"../../../../shared\";\nimport LoadingContainer from \"../../../../shared/LoadingContainer/index\";\nimport { ApiResponse, sendHTTPRequest } from \"../../../../shared/http\";\nimport ItemList from \"../../../../shared/inputs/ItemList/index\";\nconst DEFAULT_VALUES = {\n  variant: \"basic\",\n} satisfies Partial<EditSAMLConnectionProps>;\nconst INITIAL_VALUES = {\n  samlConnection: {\n    name: \"\",\n    label: \"\",\n    tenant: \"\",\n    product: \"\",\n    clientID: \"\",\n    clientSecret: \"\",\n    description: \"\",\n    redirectUrl: [\"\"],\n    defaultRedirectUrl: \"\",\n    rawMetadata: \"\",\n    metadataUrl: \"\",\n    forceAuthn: false as boolean,\n    sortOrder: \"\" as unknown as string | number,\n    acsUrlOverride: \"\",\n  } as SAMLFormState,\n};\n\nfunction EditSAMLConnection(props: EditSAMLConnectionProps) {\n  const [samlConnection, setSamlConnection] = useState(\n    () => INITIAL_VALUES.samlConnection\n  );\n\n  const [isConnectionLoading, setIsConnectionLoading] = useState(() => true);\n\n  const [isSaving, setIsSaving] = useState(() => false);\n\n  const [showDelConfirmation, setShowDelConfirmation] = useState(() => false);\n\n  function toggleDelConfirmation() {\n    setShowDelConfirmation(!showDelConfirmation);\n  }\n\n  function formVariant() {\n    return props.variant || DEFAULT_VALUES.variant;\n  }\n\n  function classes() {\n    return {\n      formDiv: cssClassAssembler(\n        props.classNames?.formDiv,\n        defaultClasses.formDiv\n      ),\n      label: cssClassAssembler(props.classNames?.label, defaultClasses.label),\n      inputField: {\n        label: props.classNames?.label,\n        input: props.classNames?.input,\n        container: props.classNames?.fieldContainer,\n      },\n      textarea: {\n        label: props.classNames?.label,\n        textarea: props.classNames?.textarea,\n        container: props.classNames?.fieldContainer,\n      },\n      section: cssClassAssembler(\n        props.classNames?.section,\n        defaultClasses.section\n      ),\n    };\n  }\n\n  function isExcluded(fieldName: keyof SAMLSSOConnection) {\n    return !!(props.excludeFields as (keyof SAMLSSOConnection)[])?.includes(\n      fieldName\n    );\n  }\n\n  function updateConnection(data: Partial<SAMLSSOConnection>) {\n    return {\n      ...samlConnection,\n      ...data,\n    };\n  }\n\n  function handleChange(event: Event) {\n    const target = event.target as HTMLInputElement | HTMLTextAreaElement;\n    const id = target.id as Keys;\n    const targetValue =\n      id !== \"forceAuthn\" ? target.value : (target as HTMLInputElement).checked;\n    setSamlConnection(\n      updateConnection({\n        [id]: targetValue,\n      })\n    );\n  }\n\n  function handleItemListUpdate(fieldName: string, listValue: string[]) {\n    setSamlConnection(\n      updateConnection({\n        [fieldName]: listValue,\n      })\n    );\n  }\n\n  function saveSSOConnection(event: Event) {\n    event.preventDefault();\n    const { sortOrder, ...rest } = samlConnection;\n    // pass sortOrder only if set to non-empty string\n    const payload =\n      sortOrder === \"\"\n        ? rest\n        : {\n            ...samlConnection,\n            sortOrder: +sortOrder!,\n          };\n    setIsSaving(true);\n    saveConnection<undefined>({\n      url: props.urls.patch,\n      isEditView: true,\n      formObj: payload,\n      connectionIsSAML: true,\n      callback: async (data) => {\n        setIsSaving(false);\n        if (data?.error) {\n          typeof props.errorCallback === \"function\" &&\n            props.errorCallback(data.error.message);\n        } else {\n          typeof props.successCallback === \"function\" &&\n            props.successCallback({\n              operation: \"UPDATE\",\n              connection: payload,\n              connectionIsSAML: true,\n            });\n        }\n      },\n    });\n  }\n\n  function deleteSSOConnection(event: Event) {\n    event.preventDefault();\n    deleteConnection({\n      url: props.urls.delete,\n      clientId: samlConnection.clientID!,\n      clientSecret: samlConnection.clientSecret!,\n      callback: async (data: ApiResponse<undefined>) => {\n        if (data?.error) {\n          typeof props.errorCallback === \"function\" &&\n            props.errorCallback(data.error.message);\n        } else {\n          typeof props.successCallback === \"function\" &&\n            props.successCallback({\n              operation: \"DELETE\",\n              connectionIsSAML: true,\n            });\n        }\n      },\n    });\n  }\n\n  function shouldDisplayHeader() {\n    if (props.displayHeader !== undefined) {\n      return props.displayHeader;\n    }\n    return true;\n  }\n\n  function shouldDisplayInfoCard() {\n    if (props.displayInfo !== undefined) {\n      return props.displayInfo;\n    }\n    return true;\n  }\n\n  function connectionFetchUrl() {\n    return props.urls.get;\n  }\n\n  useEffect(() => {\n    async function getConnection(url: string) {\n      const data = await sendHTTPRequest<SAMLSSORecord[]>(url);\n      setIsConnectionLoading(false);\n      if (data && typeof data === \"object\") {\n        if (\"error\" in data && data.error) {\n          typeof props.errorCallback === \"function\" &&\n            props.errorCallback(data.error.message);\n        } else if (Array.isArray(data)) {\n          const _connection = data[0];\n          if (_connection) {\n            setSamlConnection({\n              ..._connection,\n              name: _connection.name || \"\",\n              label: _connection.label || \"\",\n              tenant: _connection.tenant || \"\",\n              product: _connection.product || \"\",\n              clientID: _connection.clientID,\n              clientSecret: _connection.clientSecret,\n              description: _connection.description || \"\",\n              redirectUrl: _connection.redirectUrl,\n              defaultRedirectUrl: _connection.defaultRedirectUrl,\n              rawMetadata: _connection.rawMetadata || \"\",\n              metadataUrl: _connection.metadataUrl || \"\",\n              forceAuthn: _connection.forceAuthn === true,\n              sortOrder: _connection.sortOrder ?? \"\",\n            });\n          }\n        }\n      }\n    }\n    getConnection(connectionFetchUrl());\n  }, [connectionFetchUrl()]);\n\n  return (\n    <LoadingContainer isBusy={isConnectionLoading}>\n      <div className={classes().formDiv}>\n        <div className={defaultClasses.headingContainer}>\n          {shouldDisplayHeader() ? (\n            <h5 className={defaultClasses.h5}>Edit SSO Connection</h5>\n          ) : null}\n          <ToggleConnectionStatus\n            connection={samlConnection}\n            urls={{\n              patch: props.urls.patch,\n            }}\n            classNames={{\n              confirmationPrompt: {\n                button: {\n                  ctoa: `${\n                    props.classNames?.confirmationPrompt?.button?.ctoa\n                  } ${\n                    samlConnection.deactivated\n                      ? props.classNames?.button?.ctoa\n                      : props.classNames?.button?.destructive\n                  }`.trim(),\n                  cancel: props.classNames?.confirmationPrompt?.button?.cancel,\n                },\n              },\n            }}\n            errorCallback={props.errorCallback}\n            successCallback={props.successCallback}\n          />\n        </div>\n        <div>\n          <form method=\"post\" onSubmit={(event) => saveSSOConnection(event)}>\n            {formVariant() === \"advanced\" ? (\n              <>\n                {!isExcluded(\"name\") ? (\n                  <>\n                    <InputField\n                      label=\"Connection name (Optional)\"\n                      id=\"name\"\n                      placeholder=\"MyApp\"\n                      classNames={classes().inputField}\n                      required={false}\n                      value={samlConnection.name!}\n                      handleInputChange={handleChange}\n                    />\n                    <Spacer y={6} />\n                  </>\n                ) : null}\n                {!isExcluded(\"label\") ? (\n                  <>\n                    <InputField\n                      label=\"Connection label (Optional)\"\n                      id=\"label\"\n                      placeholder=\"An internal label to identify the connection\"\n                      classNames={classes().inputField}\n                      required={false}\n                      value={samlConnection.label!}\n                      handleInputChange={handleChange}\n                    />\n                    <Spacer y={6} />\n                  </>\n                ) : null}\n                {!isExcluded(\"description\") ? (\n                  <>\n                    <InputField\n                      label=\"Description (Optional)\"\n                      id=\"description\"\n                      placeholder=\"A short description not more than 100 characters\"\n                      classNames={classes().inputField}\n                      required={false}\n                      maxLength={100}\n                      value={samlConnection.description!}\n                      handleInputChange={handleChange}\n                    />\n                    <Spacer y={6} />\n                  </>\n                ) : null}\n                {!isExcluded(\"redirectUrl\") ? (\n                  <>\n                    <ItemList\n                      inputType=\"url\"\n                      label=\"Allowed redirect URLs\"\n                      fieldName=\"redirectUrl\"\n                      currentlist={samlConnection.redirectUrl}\n                      handleItemListUpdate={handleItemListUpdate}\n                      classNames={classes().inputField}\n                    />\n                    <div id=\"redirectUrl-hint\" className={defaultClasses.hint}>\n                      URL(s) to redirect the user to after login. Only the URLs\n                      in this list are allowed in the OAuth flow.\n                    </div>\n                    <Spacer y={6} />\n                  </>\n                ) : null}\n                {!isExcluded(\"defaultRedirectUrl\") ? (\n                  <>\n                    <InputField\n                      label=\"Default redirect URL\"\n                      id=\"defaultRedirectUrl\"\n                      aria-describedby=\"defaultRedirectUrl-hint\"\n                      placeholder=\"http://localhost:3366/login/saml\"\n                      type=\"url\"\n                      required\n                      classNames={classes().inputField}\n                      value={samlConnection.defaultRedirectUrl!}\n                      handleInputChange={handleChange}\n                    />\n                    <div\n                      id=\"defaultRedirectUrl-hint\"\n                      className={defaultClasses.hint}\n                    >\n                      URL to redirect the user to after an IdP initiated SAML\n                      login.\n                    </div>\n                    <Spacer y={6} />\n                  </>\n                ) : null}\n              </>\n            ) : null}\n            <TextArea\n              label=\"Raw IdP XML\"\n              id=\"rawMetadata\"\n              aria-describedby=\"xml-metadata-hint\"\n              placeholder=\"Paste the raw XML here\"\n              classNames={classes().textarea}\n              required={\n                !samlConnection.idpMetadata && samlConnection.metadataUrl === \"\"\n              }\n              value={samlConnection.rawMetadata!}\n              handleInputChange={handleChange}\n            />\n            <div id=\"xml-metadata-hint\" className={defaultClasses.hint}>\n              Paste the raw XML metadata obtained from SAML provider or enter\n              the metadata URL below.\n            </div>\n            <Spacer y={6} />\n            <Separator text=\"OR\" />\n            <Spacer y={6} />\n            <InputField\n              label=\"Metadata URL\"\n              id=\"metadataUrl\"\n              type=\"url\"\n              placeholder=\"Paste the Metadata URL here\"\n              classNames={classes().inputField}\n              required={\n                !samlConnection.idpMetadata && samlConnection.rawMetadata === \"\"\n              }\n              value={samlConnection.metadataUrl!}\n              handleInputChange={handleChange}\n            />\n            <Spacer y={6} />\n            {formVariant() === \"advanced\" ? (\n              <>\n                {!isExcluded(\"forceAuthn\") ? (\n                  <Checkbox\n                    label=\"Force Authentication\"\n                    name=\"forceAuthn\"\n                    id=\"forceAuthn\"\n                    checked={samlConnection.forceAuthn === true}\n                    handleChange={handleChange}\n                  />\n                ) : null}\n              </>\n            ) : null}\n            <Spacer y={6} />\n            {formVariant() === \"advanced\" ? (\n              <>\n                {!isExcluded(\"sortOrder\") ? (\n                  <>\n                    <InputField\n                      label=\"Sort Order\"\n                      id=\"sortOrder\"\n                      type=\"number\"\n                      min=\"0\"\n                      placeholder=\"10\"\n                      classNames={classes().inputField}\n                      value={samlConnection.sortOrder as string}\n                      handleInputChange={handleChange}\n                    />\n                    <div id=\"sortOrder-hint\" className={defaultClasses.hint}>\n                      Connections will be sorted (in a listing view like IdP\n                      Selection) using this setting. Higher values will be\n                      displayed first.\n                    </div>\n                  </>\n                ) : null}\n              </>\n            ) : null}\n            <Spacer y={6} />\n            {formVariant() === \"advanced\" ? (\n              <>\n                {!isExcluded(\"acsUrlOverride\") ? (\n                  <InputField\n                    label=\"ACS Url Override\"\n                    id=\"acsUrlOverride\"\n                    type=\"url\"\n                    placeholder=\"https://yourcompany.com/app/saml/acs\"\n                    classNames={classes().inputField}\n                    value={samlConnection.acsUrlOverride as string}\n                    handleInputChange={handleChange}\n                  />\n                ) : null}\n              </>\n            ) : null}\n            <Spacer y={6} />\n            <div className={defaultClasses.formAction}>\n              {typeof props.cancelCallback === \"function\" ? (\n                <Button\n                  type=\"button\"\n                  name=\"Cancel\"\n                  variant=\"outline\"\n                  handleClick={props.cancelCallback}\n                  classNames={props.classNames?.button?.cancel}\n                />\n              ) : null}\n              <Button\n                type=\"submit\"\n                name=\"Save\"\n                classNames={props.classNames?.button?.ctoa}\n                isLoading={isSaving}\n              />\n            </div>\n            {shouldDisplayInfoCard() ? (\n              <Card\n                title=\"Connection info\"\n                variant=\"info\"\n                arrangement=\"vertical\"\n              >\n                <div className={defaultClasses.info}>\n                  {formVariant() === \"advanced\" ? (\n                    <>\n                      {!isExcluded(\"tenant\") ? (\n                        <>\n                          <InputField\n                            label=\"Tenant\"\n                            id=\"tenant\"\n                            placeholder=\"acme.com\"\n                            classNames={classes().inputField}\n                            required\n                            readOnly\n                            value={samlConnection.tenant!}\n                          />\n                          <Spacer y={6} />\n                        </>\n                      ) : null}\n                      {!isExcluded(\"product\") ? (\n                        <>\n                          <InputField\n                            label=\"Product\"\n                            id=\"product\"\n                            placeholder=\"demo\"\n                            classNames={classes().inputField}\n                            required\n                            readOnly\n                            value={samlConnection.product!}\n                          />\n                          <Spacer y={6} />\n                        </>\n                      ) : null}\n                    </>\n                  ) : null}\n                  {props.displayIdpMetadata === true ? (\n                    <>\n                      <div className={defaultClasses.container}>\n                        <span className={classes().label}>IdP Metadata</span>\n                        <Spacer y={2} />\n                        <pre aria-readonly className={defaultClasses.pre}>\n                          {JSON.stringify(samlConnection.idpMetadata, null, 2)}\n                        </pre>\n                      </div>\n                      <Spacer y={6} />\n                    </>\n                  ) : null}\n                  <div className={defaultClasses.container}>\n                    <InputField\n                      id=\"idp_cert_validity\"\n                      label=\"IdP Certificate Validity\"\n                      readOnly\n                      classNames={classes().inputField}\n                      value={samlConnection.idpMetadata?.validTo!}\n                    />\n                  </div>\n                  <Spacer y={6} />\n                  <InputWithCopyButton\n                    label=\"Client ID\"\n                    text={samlConnection.clientID || \"\"}\n                    classNames={classes().inputField}\n                    copyDoneCallback={props.successCallback}\n                  />\n                  <Spacer y={6} />\n                  <SecretInputFormControl\n                    label=\"Client Secret\"\n                    id=\"clientSecret\"\n                    classNames={{\n                      input: props.classNames?.secretInput,\n                    }}\n                    value={samlConnection.clientSecret!}\n                    readOnly\n                    required\n                    copyDoneCallback={props.successCallback}\n                    handleChange={handleChange}\n                  />\n                  <Spacer y={6} />\n                </div>\n              </Card>\n            ) : null}\n            <Spacer y={4} />\n            {samlConnection?.clientID && samlConnection.clientSecret ? (\n              <section className={classes().section}>\n                <div className={defaultClasses.info}>\n                  <h6 className={defaultClasses.sectionHeading}>\n                    Delete this connection\n                  </h6>\n                  <p className={defaultClasses.sectionPara}>\n                    All your apps using this connection will stop working.\n                  </p>\n                </div>\n                {!showDelConfirmation ? (\n                  <Button\n                    name=\"Delete\"\n                    variant=\"destructive\"\n                    type=\"button\"\n                    handleClick={toggleDelConfirmation}\n                    classNames={props.classNames?.button?.destructive}\n                  />\n                ) : null}\n                {showDelConfirmation ? (\n                  <ConfirmationPrompt\n                    ctoaVariant=\"destructive\"\n                    promptMessage=\" Are you sure you want to delete the Connection? This action cannot be undone and will permanently delete the Connection.\"\n                    classNames={{\n                      button: {\n                        ctoa: `${props.classNames?.button?.destructive} ${props.classNames?.confirmationPrompt?.button?.ctoa}`.trim(),\n                        cancel:\n                          props.classNames?.confirmationPrompt?.button?.cancel,\n                      },\n                    }}\n                    cancelCallback={toggleDelConfirmation}\n                    confirmationCallback={deleteSSOConnection}\n                  />\n                ) : null}\n              </section>\n            ) : null}\n          </form>\n        </div>\n      </div>\n    </LoadingContainer>\n  );\n}\n\nexport default EditSAMLConnection;\n","\"use client\";\nimport * as React from \"react\";\nimport { useState } from \"react\";\nimport ConnectionList from \"../ConnectionList/index\";\nimport type {\n  ConnectionData,\n  ConnectionsWrapperProp,\n  OIDCSSORecord,\n  SAMLSSORecord,\n} from \"../types\";\nimport defaultClasses from \"./index.module.css\";\nimport EditOIDCConnection from \"../EditConnection/oidc/index\";\nimport EditSAMLConnection from \"../EditConnection/saml/index\";\nimport Button from \"../../../shared/Button/index\";\nimport Spacer from \"../../../shared/Spacer/index\";\nimport Anchor from \"../../../shared/Anchor/index\";\nimport CreateSSOConnection from \"../CreateConnection/index\";\nimport { PaginatePayload } from \"../../../shared/types\";\nconst DEFAULT_VALUES = {\n  connectionListData: [] as ConnectionData<any>[],\n  view: \"LIST\" as \"LIST\" | \"EDIT\" | \"CREATE\",\n};\n\nfunction ConnectionsWrapper(props: ConnectionsWrapperProp) {\n  const [ssoType, setSsoType] = useState(() => \"saml\");\n\n  function handleNewConnectionTypeChange(event: any) {\n    setSsoType(event.target.value);\n  }\n\n  const [connections, setConnections] = useState(\n    () => DEFAULT_VALUES.connectionListData\n  );\n\n  function handleListFetchComplete(connectionsList: ConnectionData<any>[]) {\n    setConnections(connectionsList);\n  }\n\n  const [view, setView] = useState(() => DEFAULT_VALUES.view);\n\n  const [connectionToEdit, setConnectionToEdit] = useState(() => ({}));\n\n  function connectionsAdded() {\n    return connections.length > 0;\n  }\n\n  function ssoEnabled() {\n    return (\n      connectionsAdded() &&\n      connections.some((connection) => connection.deactivated === false)\n    );\n  }\n\n  function connectionFetchURL() {\n    let _url = props.urls.get;\n    const [urlPath, qs] = _url.split(\"?\");\n    const urlParams = new URLSearchParams(qs);\n    urlParams.set(\"clientID\", connectionToEdit.clientID);\n    return `${urlPath}?${urlParams}`;\n  }\n\n  function switchToCreateView() {\n    setView(\"CREATE\");\n  }\n\n  function handleConnectionListActionClick(\n    action: \"edit\" | \"pageChange\",\n    payload: ConnectionData<any> | PaginatePayload\n  ) {\n    if (action === \"edit\") {\n      setView(\"EDIT\");\n      setConnectionToEdit(payload);\n    }\n    if (action === \"pageChange\") {\n      // call route change callback\n    }\n  }\n\n  function switchToListView() {\n    setView(\"LIST\");\n  }\n\n  function createSuccessCallback(info: {\n    operation: \"CREATE\";\n    connection?: SAMLSSORecord | OIDCSSORecord;\n    connectionIsSAML?: boolean;\n    connectionIsOIDC?: boolean;\n  }) {\n    const { operation, connection, connectionIsSAML, connectionIsOIDC } = info;\n    if (typeof props.successCallback === \"function\") {\n      props.successCallback({\n        operation,\n        connection,\n        connectionIsSAML,\n        connectionIsOIDC,\n      });\n    }\n    switchToListView();\n  }\n\n  function updateSuccessCallback(info: {\n    connection: any;\n    operation: \"UPDATE\" | \"DELETE\" | \"COPY\";\n    connectionIsSAML?: boolean;\n    connectionIsOIDC?: boolean;\n  }) {\n    const {\n      connection,\n      operation,\n      connectionIsSAML = false,\n      connectionIsOIDC = false,\n    } = info;\n    if (typeof props.successCallback === \"function\") {\n      props.successCallback({\n        operation,\n        connection,\n        connectionIsSAML,\n        connectionIsOIDC,\n      });\n    }\n    if (operation !== \"COPY\") {\n      switchToListView();\n    }\n  }\n\n  return (\n    <div>\n      {view === \"LIST\" ? (\n        <div className={defaultClasses.listView}>\n          <div className={defaultClasses.header}>\n            <h5 className={defaultClasses.h5}>\n              {props.title || \"Manage SSO Connections\"}\n            </h5>\n            <div className={defaultClasses.ctoa}>\n              {props.urls?.spMetadata ? (\n                <>\n                  <Anchor\n                    linkText=\"Access SP Metadata\"\n                    variant=\"button\"\n                    href={props.urls!.spMetadata!}\n                  />\n                  <Spacer x={4} />\n                </>\n              ) : null}\n              <Button\n                name=\"New Connection\"\n                handleClick={switchToCreateView}\n                classNames={props.classNames?.button?.ctoa}\n              />\n            </div>\n          </div>\n          <Spacer y={8} />\n          <ConnectionList\n            {...props.componentProps.connectionList}\n            urls={{\n              get: props.urls.get,\n            }}\n            handleActionClick={handleConnectionListActionClick}\n            handleListFetchComplete={handleListFetchComplete}\n            tenant={props.defaults?.tenants || props.defaults?.tenant}\n            product={props.defaults?.product}\n          />\n        </div>\n      ) : null}\n      {view === \"EDIT\" ? (\n        <>\n          <div className={defaultClasses.header}>\n            <h5 className={defaultClasses.h5}>Edit SSO Connection</h5>\n          </div>\n          {connectionToEdit && \"oidcProvider\" in connectionToEdit ? (\n            <EditOIDCConnection\n              variant=\"basic\"\n              classNames={props.classNames}\n              cancelCallback={switchToListView}\n              errorCallback={props.errorCallback}\n              successCallback={updateSuccessCallback}\n              displayHeader={false}\n              urls={{\n                delete: props.urls.delete,\n                patch: props.urls.patch,\n                get: connectionFetchURL(),\n              }}\n              {...props.componentProps.editOIDCConnection}\n            />\n          ) : null}\n          {connectionToEdit && \"idpMetadata\" in connectionToEdit ? (\n            <EditSAMLConnection\n              variant=\"basic\"\n              classNames={props.classNames}\n              cancelCallback={switchToListView}\n              errorCallback={props.errorCallback}\n              successCallback={updateSuccessCallback}\n              displayHeader={false}\n              urls={{\n                delete: props.urls.delete,\n                patch: props.urls.patch,\n                get: connectionFetchURL(),\n              }}\n              {...props.componentProps.editSAMLConnection}\n            />\n          ) : null}\n        </>\n      ) : null}\n      {view === \"CREATE\" ? (\n        <>\n          <div className={defaultClasses.header}>\n            <h5 className={defaultClasses.h5}>Create SSO Connection</h5>\n          </div>\n          <Spacer y={8} />\n          <CreateSSOConnection\n            classNames={props.classNames}\n            cancelCallback={switchToListView}\n            successCallback={createSuccessCallback}\n            errorCallback={props.errorCallback}\n            defaults={props.defaults}\n            urls={{\n              post: props.urls.post,\n            }}\n            {...props.componentProps.createSSOConnection}\n          />\n        </>\n      ) : null}\n    </div>\n  );\n}\n\nexport default ConnectionsWrapper;\n"],"names":["htmlIdGenerator","prefix","elementType","getUniqueId","component","id","COMPONENT","DEFAULT_VALUES","Login","props","_ssoIdentifier","set_ssoIdentifier","useState","errMsg","setErrMsg","isProcessing","setIsProcessing","isError","disableButton","shouldRenderInput","InputId","ErrorSpanId","classes","cssClassAssembler","_a","defaultClasses","_b","_c","_d","handleChange","event","onSubmitButton","ssoIdentifierToSubmit","err","jsxs","Fragment","jsx","_e","_f","_g","_h","saveConnection","formObj","isEditView","connectionIsSAML","connectionIsOIDC","callback","url","rawMetadata","redirectUrl","oidcDiscoveryUrl","oidcMetadata","oidcClientId","oidcClientSecret","metadataUrl","rest","encodedRawMetadata","res","sendHTTPRequest","deleteConnection","clientId","clientSecret","queryParams","Separator","styles","Anchor","className","INITIAL_VALUES","CreateOIDCConnection","oidcConnection","setOidcConnection","isSaving","setIsSaving","updateConnection","data","targetValue","handleItemListUpdate","fieldName","listValue","save","key","val","_i","formVariant","isExcluded","isReadOnly","isTenantADropdown","tenantOptions","tenant","shouldDisplayHeader","useEffect","forceAuthn","_tenant","InputField","Spacer","Select","ItemList","SecretInputFormControl","Button","TextArea","textAreaHTMLAttributes","label","value","classNames","handleInputChange","cssClass","CreateSAMLConnection","samlConnection","setSamlConnection","target","sortOrder","payload","Checkbox","RadioGroup","orientationValue","Radio","CreateSSOConnection","newConnectionType","setNewConnectionType","sanitizedDefaults","handleNewConnectionTypeChange","ConnectionList","connectionListData","setConnectionListData","isConnectionListLoading","setIsConnectionListLoading","pageTokenMap","setPageTokenMap","showErrorComponent","setShowErrorComponent","errorMessage","setErrorMessage","getUrl","isPaginated","colsToDisplay","_col","rowData","_variant","connectionProviderName","connection","actions","listFetchUrl","params","_url","urlPath","qs","urlParams","baseFetchUrl","updateTokenMap","offset","token","getFieldsData","response","isTokenizedPagination","_data","_connectionsListData","reFetch","pageToken","LoadingContainer","Paginate","PaginatedTable","NonPaginatedTable","ToggleConnectionStatus","displayPrompt","setDisplayPrompt","connectionStatus","connectionAction","askForConfirmation","onCancel","onConfirm","updateConnectionStatus","status","body","ConfirmationPrompt","ToggleSwitch","Card","variantCss","flexCss","shouldDisplayIcon","CheckMarkIcon","InfoIcon","EditOIDCConnection","isConnectionLoading","setIsConnectionLoading","showDelConfirmation","setShowDelConfirmation","toggleDelConfirmation","resetOIDCMetadataFields","saveSSOConnection","deleteSSOConnection","shouldDisplayInfoCard","connectionFetchUrl","getConnection","_connection","_j","_k","_m","_l","_o","_n","InputWithCopyButton","_p","_r","_q","_t","_s","_w","_v","_u","_z","_y","_x","EditSAMLConnection","ConnectionsWrapper","ssoType","setSsoType","connections","setConnections","handleListFetchComplete","connectionsList","view","setView","connectionToEdit","setConnectionToEdit","connectionFetchURL","switchToCreateView","handleConnectionListActionClick","action","switchToListView","createSuccessCallback","info","operation","updateSuccessCallback"],"mappings":"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"}