{
  "version": 3,
  "sources": ["apps/partner-center-client/src/app/integrations/identity-provider-config/identity-provider-config.service.ts", "apps/partner-center-client/src/app/integrations/identity-provider-config/identity-provider-config-page/delete-dialog.component.ts", "apps/partner-center-client/src/app/integrations/identity-provider-config/identity-provider-config-page/delete-dialog.component.html", "apps/partner-center-client/src/app/integrations/identity-provider-config/identity-provider-config-page/identity-provider-config-page.component.ts", "apps/partner-center-client/src/app/integrations/identity-provider-config/identity-provider-config-page/identity-provider-config-page.component.html", "apps/partner-center-client/src/app/integrations/identity-provider-config/identity-provider-config.module.ts"],
  "sourcesContent": ["import { HttpResponse } from '@angular/common/http';\nimport { Inject, Injectable } from '@angular/core';\nimport {\n  CreateIdentityProviderConfigurationRequestInterface,\n  GetIdentityProviderConfigurationResponse,\n  IdentityProviderAdminApiService,\n  IdentityProviderConfiguration,\n  UpdateIdentityProviderConfigurationRequestMutationInterface,\n} from '@vendasta/sso';\nimport { Observable } from 'rxjs';\nimport { map, switchMap } from 'rxjs/operators';\n\nexport interface OAuth2IdentityProviderConfig {\n  authorizationEndpoint: string;\n  tokenEndpoint: string;\n  userinfoEndpoint: string;\n}\n\nexport interface OpenIDIdentityProviderConfig {\n  discoveryEndpoint: string;\n}\n\nexport interface IdentityProviderConfig {\n  partnerId: string;\n  clientId: string;\n  clientSecret?: string;\n  integrationType: 'oauth2' | 'openid';\n  oauth2?: OAuth2IdentityProviderConfig;\n  openid?: OpenIDIdentityProviderConfig;\n}\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class IdentityProviderConfigService {\n  constructor(\n    private idpAdminService: IdentityProviderAdminApiService,\n    @Inject('PARTNER_ID') private partnerId$: Observable<string>,\n  ) {}\n\n  public getIdentityProviderConfig(): Observable<IdentityProviderConfig | null> {\n    return this.partnerId$.pipe(\n      switchMap((partnerId) => this.idpAdminService.getIdentityProvider({ partnerId })),\n      map((resp: GetIdentityProviderConfigurationResponse) => {\n        if (!resp || !resp.configuration) {\n          return null;\n        }\n        const respConfig: IdentityProviderConfiguration = resp.configuration;\n        const config: IdentityProviderConfig = {\n          partnerId: respConfig.partnerId || '',\n          clientId: respConfig.clientId || '',\n          integrationType: 'oauth2',\n        };\n        if (respConfig.openId) {\n          config.integrationType = 'openid';\n          config.openid = {\n            discoveryEndpoint: respConfig.openId.discoveryEndpoint || '',\n          };\n        } else {\n          config.integrationType = 'oauth2';\n          config.oauth2 = {\n            authorizationEndpoint: respConfig.oauth2.authorizationEndpoint || '',\n            tokenEndpoint: respConfig.oauth2.tokenEndpoint || '',\n            userinfoEndpoint: respConfig.oauth2.userinfoEndpoint || '',\n          };\n        }\n        return config;\n      }),\n    );\n  }\n\n  public createIdentityProviderConfig(config: IdentityProviderConfig): Observable<HttpResponse<null>> {\n    const req: CreateIdentityProviderConfigurationRequestInterface = {\n      clientId: config.clientId,\n      clientSecret: config.clientSecret,\n    };\n    switch (config.integrationType) {\n      case 'oauth2':\n        req.oauth2 = config.oauth2;\n        break;\n      case 'openid':\n        req.openId = config.openid;\n        break;\n    }\n    return this.partnerId$.pipe(\n      switchMap((partnerId) => this.idpAdminService.createIdentityProvider({ ...req, partnerId: partnerId })),\n    );\n  }\n\n  public replaceIdentityProviderConfig(config: IdentityProviderConfig): Observable<HttpResponse<null>> {\n    const mutations: UpdateIdentityProviderConfigurationRequestMutationInterface[] = [{ clientId: config.clientId }];\n    if (config.clientSecret) {\n      mutations.push({ clientSecret: config.clientSecret });\n    }\n    switch (config.integrationType) {\n      case 'oauth2':\n        mutations.push({ replaceOauth2: config.oauth2 });\n        break;\n\n      case 'openid':\n        mutations.push({ replaceOpenId: config.openid });\n        break;\n    }\n    return this.partnerId$.pipe(\n      switchMap((partnerId) =>\n        this.idpAdminService.updateIdentityProvider({ partnerId: partnerId, mutations: mutations }),\n      ),\n    );\n  }\n\n  public deleteConfig(): Observable<HttpResponse<null>> {\n    return this.partnerId$.pipe(switchMap((partnerId) => this.idpAdminService.deleteIdentityProvider({ partnerId })));\n  }\n}\n", "import { Component } from '@angular/core';\nimport { MatDialogRef } from '@angular/material/dialog';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\nimport { SnackbarService } from '@vendasta/galaxy/snackbar-service';\nimport { IdentityProviderConfigService } from '../identity-provider-config.service';\n\n@Component({\n  templateUrl: './delete-dialog.component.html',\n  standalone: false,\n})\nexport class DeleteDialogComponent {\n  loading$$: BehaviorSubject<boolean> = new BehaviorSubject(true);\n  deleting$$: BehaviorSubject<boolean> = new BehaviorSubject(false);\n  businessCenterName$: Observable<string>;\n\n  constructor(\n    public dialogRef: MatDialogRef<DeleteDialogComponent>,\n    private idpConfigService: IdentityProviderConfigService,\n    private snackbarService: SnackbarService,\n  ) {}\n\n  delete(): void {\n    this.deleting$$.next(true);\n    this.idpConfigService.deleteConfig().subscribe(\n      () => this.dialogRef.close(true),\n      () => {\n        this.deleting$$.next(false);\n        this.snackbarService.errorSnack('Sorry, something went wrong.');\n      },\n    );\n  }\n}\n", "<h2 mat-dialog-title>\n  {{ 'INTEGRATIONS.IDENTITY_PROVIDER.DELETE_DIALOG.DELETE_INTEGRATION' | translate }}\n</h2>\n<mat-dialog-content>\n  <p>\n    {{ 'INTEGRATIONS.IDENTITY_PROVIDER.DELETE_DIALOG.ONCE_DELETED' | translate }}\n  </p>\n  <p>\n    {{ 'INTEGRATIONS.IDENTITY_PROVIDER.DELETE_DIALOG.NEW_USERS' | translate }}\n  </p>\n  <p>\n    {{ 'INTEGRATIONS.IDENTITY_PROVIDER.DELETE_DIALOG.EXISTING_USERS' | translate }}\n  </p>\n</mat-dialog-content>\n<mat-dialog-actions>\n  <button mat-button matDialogClose [disabled]=\"deleting$$ | async\">\n    {{ 'COMMON.ACTION_LABELS.CANCEL' | translate }}\n  </button>\n  <button mat-raised-button color=\"warn\" [disabled]=\"deleting$$ | async\" (click)=\"delete()\">\n    {{ 'COMMON.ACTION_LABELS.DELETE' | translate }}\n  </button>\n</mat-dialog-actions>\n", "import { HttpErrorResponse } from '@angular/common/http';\nimport { Component, OnInit } from '@angular/core';\nimport { UntypedFormControl, UntypedFormGroup } from '@angular/forms';\nimport { MatDialog } from '@angular/material/dialog';\nimport { Environment, EnvironmentService } from '@galaxy/core';\nimport { GalaxyAiIconService } from '@vendasta/galaxy/ai-icon';\nimport { SnackbarService } from '@vendasta/galaxy/snackbar-service';\nimport { BehaviorSubject, EMPTY, Observable } from 'rxjs';\nimport { filter, first, map, shareReplay, switchMap } from 'rxjs/operators';\nimport { URL_REGEX } from '../../../common/form/validator';\nimport {\n  IdentityProviderConfig,\n  IdentityProviderConfigService,\n  OAuth2IdentityProviderConfig,\n  OpenIDIdentityProviderConfig,\n} from '../identity-provider-config.service';\nimport { DeleteDialogComponent } from './delete-dialog.component';\n\nconst callbackRoute = '/oauth2/callback';\n\ninterface FormValues {\n  integrationType: 'oauth2' | 'openid';\n  clientId: string;\n  clientSecret: string;\n  openid: OpenIDIdentityProviderConfig;\n  oauth2: OAuth2IdentityProviderConfig;\n}\n\n@Component({\n  selector: 'app-identity-provider-config-page',\n  templateUrl: './identity-provider-config-page.component.html',\n  styleUrls: ['./identity-provider-config-page.component.scss'],\n  standalone: false,\n})\nexport class IdentityProviderConfigPageComponent implements OnInit {\n  readonly urlPattern = 'https?://.+';\n  redirectUri: string;\n\n  readonly form = new UntypedFormGroup({\n    integrationType: new UntypedFormControl('openid'),\n    clientId: new UntypedFormControl(''),\n    clientSecret: new UntypedFormControl(''),\n    openid: new UntypedFormGroup({\n      discoveryEndpoint: new UntypedFormControl(''),\n    }),\n    oauth2: new UntypedFormGroup({\n      authorizationEndpoint: new UntypedFormControl(''),\n      tokenEndpoint: new UntypedFormControl(''),\n      userinfoEndpoint: new UntypedFormControl(''),\n    }),\n  });\n\n  private readonly loading$$: BehaviorSubject<boolean> = new BehaviorSubject(true);\n  protected readonly loading$: Observable<boolean> = this.loading$$.asObservable();\n  private readonly error$$: BehaviorSubject<boolean> = new BehaviorSubject(false);\n  protected readonly error$: Observable<boolean> = this.error$$.asObservable();\n  private readonly saving$$: BehaviorSubject<boolean> = new BehaviorSubject(false);\n  protected readonly saving$: Observable<boolean> = this.saving$$.asObservable();\n  private existingConfig$$ = new BehaviorSubject<FormValues | null>(null);\n  protected readonly existingConfig$: Observable<FormValues> = this.existingConfig$$.asObservable();\n\n  constructor(\n    private readonly idpConfigService: IdentityProviderConfigService,\n    private readonly snackbarService: SnackbarService,\n    private readonly dialog: MatDialog,\n    private readonly environmentSerivce: EnvironmentService,\n    private readonly _: GalaxyAiIconService,\n  ) {}\n\n  ngOnInit(): void {\n    this.redirectUri =\n      this.environmentSerivce.getEnvironment() === Environment.PROD\n        ? `https://sso-api-prod.apigateway.co${callbackRoute}`\n        : `https://sso-api-demo.apigateway.co${callbackRoute}`;\n\n    const config$ = this.idpConfigService.getIdentityProviderConfig().pipe(shareReplay(1));\n    this.existingConfig$\n      .pipe(\n        filter((x) => !!x),\n        first(),\n      )\n      .subscribe((newValue) => this.form.setValue(newValue));\n    config$\n      .pipe(\n        filter((x) => !!x),\n        map((config: IdentityProviderConfig) => {\n          const newValue: FormValues = {\n            integrationType: config.integrationType,\n            clientId: config.clientId,\n            clientSecret: config.clientSecret || '',\n            oauth2: {\n              userinfoEndpoint: '',\n              tokenEndpoint: '',\n              authorizationEndpoint: '',\n            },\n            openid: { discoveryEndpoint: '' },\n          };\n\n          switch (config.integrationType) {\n            case 'oauth2':\n              newValue.oauth2 = config.oauth2;\n              break;\n\n            case 'openid':\n              newValue.openid = config.openid;\n              break;\n          }\n          return newValue;\n        }),\n      )\n      .subscribe({\n        next: (newConfig) => {\n          this.existingConfig$$.next(newConfig);\n          this.loading$$.next(false);\n        },\n        error: (err) => {\n          if (err && err.status !== 404) {\n            this.error$$.next(true);\n          }\n          this.loading$$.next(false);\n        },\n      });\n  }\n\n  validateForm(hasExistingConfig: boolean): string[] {\n    // I'm using a custom function here rather than reactive form validators\n    // because it was way more annoying than it should have been to get validators\n    // dynamically adding/removing when switching integration types while still\n    // properly setting input fields as required in the view layer.\n    // This solution properly checks whether the required fields are filled in,\n    // while properly displaying a \"required\" indicator in the view.\n\n    const getField = <T>(field: string) => this.form.get(field).value as T;\n    const isEmpty = (field: string) => !getField(field);\n    const isUrl = (field: string) => URL_REGEX.test(getField<string>(field));\n\n    const oauth2Validations: string[] = [\n      ...(!isUrl('oauth2.authorizationEndpoint') ? ['Authorization Endpoint must be a URL'] : []),\n      ...(!isUrl('oauth2.tokenEndpoint') ? ['Token Endpoint must be a URL'] : []),\n      ...(!isUrl('oauth2.userinfoEndpoint') ? ['Userinfo Endpoint must be a URL'] : []),\n    ];\n    const openidValidations: string[] = [\n      ...(!isUrl('openid.discoveryEndpoint') ? ['Discovery Endpoint must be a URL'] : []),\n    ];\n\n    const validations: string[] = [\n      ...(isEmpty('clientId') ? ['Client ID is required'] : []),\n      ...(!hasExistingConfig && isEmpty('clientSecret') ? ['Client Secret is required'] : []),\n      ...(getField('integrationType') === 'oauth2' ? oauth2Validations : []),\n      ...(getField('integrationType') === 'openid' ? openidValidations : []),\n    ];\n    return validations;\n  }\n\n  onSubmit(): void {\n    this.existingConfig$\n      .pipe(\n        first(),\n        switchMap((existingConfig) => {\n          const formErrors = this.validateForm(!!existingConfig);\n          if (formErrors.length > 0) {\n            // Only alert for a single error at a time\n            this.snackbarService.openErrorSnack(formErrors.join(', '));\n            return EMPTY;\n          } else {\n            this.saving$$.next(true);\n            const newConfig = this.form.value;\n            if (existingConfig === null) {\n              // No existing config, we need to create one\n              return this.idpConfigService.createIdentityProviderConfig(newConfig).pipe(map(() => newConfig));\n            } else {\n              // Existing config, we need to update it\n\n              // If the client secret hasn't been updated, use the existing one.\n              if (!newConfig.clientSecret) {\n                newConfig.clientSecret = existingConfig.clientSecret;\n              }\n              return this.idpConfigService.replaceIdentityProviderConfig(newConfig).pipe(map(() => newConfig));\n            }\n          }\n        }),\n      )\n      .subscribe({\n        next: (savedConfig) => {\n          this.existingConfig$$.next(savedConfig);\n          this.saving$$.next(false);\n          this.snackbarService.openSuccessSnack('Integration configured');\n        },\n        error: (errResp: HttpErrorResponse) => {\n          this.saving$$.next(false);\n          this.snackbarService.openErrorSnack(errResp.error.message);\n        },\n      });\n  }\n\n  openDeleteDialog(): void {\n    const ref = this.dialog.open(DeleteDialogComponent, { maxWidth: '650px' });\n    ref.afterClosed().subscribe((result) => {\n      if (result) {\n        this.existingConfig$$.next(null);\n        this.form.setValue({\n          integrationType: 'openid',\n          clientId: '',\n          clientSecret: '',\n          oauth2: {\n            userinfoEndpoint: '',\n            tokenEndpoint: '',\n            authorizationEndpoint: '',\n          },\n          openid: { discoveryEndpoint: '' },\n        });\n        this.snackbarService.openSuccessSnack('Integration deleted');\n      }\n    });\n  }\n}\n", "<glxy-page>\n  <glxy-page-toolbar>\n    <glxy-page-title>\n      {{ 'INTEGRATIONS.IDENTITY_PROVIDER.PAGE_TITLE' | translate }}\n    </glxy-page-title>\n    <glxy-page-nav>\n      <glxy-page-nav-button\n        [previousPageTitle]=\"'ADMINISTRATION.PAGE_TITLE' | translate\"\n        [previousPageUrl]=\"'/settings'\"\n        [useHistory]=\"true\"\n        [historyBackButtonTitle]=\"'COMMON.ACTION_LABELS.BACK' | translate\"\n      ></glxy-page-nav-button>\n    </glxy-page-nav>\n    <glxy-page-actions>\n      <button mat-raised-button (click)=\"openDeleteDialog()\">\n        {{ 'INTEGRATIONS.IDENTITY_PROVIDER.DELETE' | translate }}\n      </button>\n    </glxy-page-actions>\n  </glxy-page-toolbar>\n  <glxy-page-wrapper [widthPreset]=\"'wide'\">\n    <mat-card appearance=\"outlined\" class=\"panel loading\" *ngIf=\"loading$ | async\">\n      <mat-spinner [diameter]=\"50\"></mat-spinner>\n    </mat-card>\n    <mat-card appearance=\"outlined\" class=\"panel\" *ngIf=\"(loading$ | async) === false && (error$ | async)\">\n      {{ 'INTEGRATIONS.IDENTITY_PROVIDER.SOMETHING_WENT_WRONG' | translate }}\n    </mat-card>\n    <ng-container *ngIf=\"(loading$ | async) === false && (error$ | async) === false\">\n      <mat-expansion-panel class=\"guide\" expanded>\n        <mat-expansion-panel-header>\n          <mat-panel-title>\n            {{ 'INTEGRATIONS.IDENTITY_PROVIDER.SSO_CONFIGURATION_GUIDE' | translate }}\n          </mat-panel-title>\n          <mat-panel-description>\n            {{ 'INTEGRATIONS.IDENTITY_PROVIDER.DETAILED_SETUP_INSTRUCTIONS' | translate }}\n          </mat-panel-description>\n        </mat-expansion-panel-header>\n        <p>\n          {{ 'INTEGRATIONS.IDENTITY_PROVIDER.CONFIGURE_YOUR_IDENTITY_PROVIDER' | translate }}\n        </p>\n        <p>\n          {{ 'INTEGRATIONS.IDENTITY_PROVIDER.SUPPORTED_AUTH_FLOWS' | translate }}\n        </p>\n        <ol>\n          <li [innerHtml]=\"'INTEGRATIONS.IDENTITY_PROVIDER.STEP_ONE' | translate: { redirectUri: redirectUri }\"></li>\n          <li [innerHtml]=\"'INTEGRATIONS.IDENTITY_PROVIDER.STEP_TWO' | translate\"></li>\n          <li [innerHtml]=\"'INTEGRATIONS.IDENTITY_PROVIDER.STEP_THREE' | translate\"></li>\n          <li [innerHtml]=\"'INTEGRATIONS.IDENTITY_PROVIDER.STEP_FOUR' | translate\"></li>\n          <li [innerHtml]=\"'INTEGRATIONS.IDENTITY_PROVIDER.STEP_FIVE' | translate\"></li>\n        </ol>\n      </mat-expansion-panel>\n\n      <mat-card appearance=\"outlined\" class=\"panel\">\n        <mat-card-header>\n          <mat-card-title>{{ 'INTEGRATIONS.IDENTITY_PROVIDER.REDIRECT_URI' | translate }}</mat-card-title>\n          <mat-card-subtitle>{{ 'INTEGRATIONS.IDENTITY_PROVIDER.URI_MUST_BE_ADDED' | translate }}</mat-card-subtitle>\n        </mat-card-header>\n        <mat-card-content>\n          <div class=\"redirect-uri\">\n            <app-clipboard>{{ redirectUri }}</app-clipboard>\n          </div>\n          <form [formGroup]=\"form\" (ngSubmit)=\"onSubmit()\" class=\"sso-integration-config\">\n            <mat-form-field>\n              <mat-label>\n                {{ 'INTEGRATIONS.IDENTITY_PROVIDER.OAUTH2_CLIENT_ID' | translate }}\n              </mat-label>\n              <input matInput required formControlName=\"clientId\" />\n            </mat-form-field>\n\n            <mat-form-field class=\"with-hint\">\n              <mat-label>{{ 'INTEGRATIONS.IDENTITY_PROVIDER.OAUTH2_CLIENT_SECRET' | translate }}</mat-label>\n              <input matInput [required]=\"(existingConfig$ | async) === null\" formControlName=\"clientSecret\" />\n              <mat-hint *ngIf=\"existingConfig$ | async\">\n                {{ 'INTEGRATIONS.IDENTITY_PROVIDER.LEAVE_BLANK' | translate }}\n              </mat-hint>\n            </mat-form-field>\n\n            <mat-form-field>\n              <mat-label>\n                {{ 'INTEGRATIONS.IDENTITY_PROVIDER.INTEGRATION_TYPE' | translate }}\n              </mat-label>\n              <select required matNativeControl formControlName=\"integrationType\" required>\n                <option value=\"openid\">\n                  {{ 'INTEGRATIONS.IDENTITY_PROVIDER.OPEN_ID_CONNECT_DISCOVERY' | translate }}\n                </option>\n                <option value=\"oauth2\">\n                  {{ 'INTEGRATIONS.IDENTITY_PROVIDER.OAUTH2' | translate }}\n                </option>\n              </select>\n            </mat-form-field>\n\n            <ng-container [ngSwitch]=\"form.get('integrationType').value\">\n              <ng-container formGroupName=\"openid\" *ngSwitchCase=\"'openid'\">\n                <mat-form-field>\n                  <mat-label>\n                    {{ 'INTEGRATIONS.IDENTITY_PROVIDER.OPEN_ID_CONNECT_DISCOVERY_ENDPOINT' | translate }}\n                  </mat-label>\n                  <input matInput required type=\"url\" [pattern]=\"urlPattern\" formControlName=\"discoveryEndpoint\" />\n                </mat-form-field>\n              </ng-container>\n\n              <ng-container formGroupName=\"oauth2\" *ngSwitchCase=\"'oauth2'\">\n                <mat-form-field>\n                  <mat-label>\n                    {{ 'INTEGRATIONS.IDENTITY_PROVIDER.OAUTH2_AUTH_ENDPOINT' | translate }}\n                  </mat-label>\n                  <input matInput required type=\"url\" [pattern]=\"urlPattern\" formControlName=\"authorizationEndpoint\" />\n                </mat-form-field>\n                <mat-form-field>\n                  <mat-label>\n                    {{ 'INTEGRATIONS.IDENTITY_PROVIDER.OAUTH2_TOKEN_ENDPOINT' | translate }}\n                  </mat-label>\n                  <input\n                    matInput\n                    required\n                    type=\"url\"\n                    [pattern]=\"urlPattern\"\n                    [placeholder]=\"'INTEGRATIONS.IDENTITY_PROVIDER.TOKEN_ENDPOINT' | translate\"\n                    formControlName=\"tokenEndpoint\"\n                  />\n                </mat-form-field>\n                <mat-form-field>\n                  <mat-label>\n                    {{ 'INTEGRATIONS.IDENTITY_PROVIDER.OAUTH2_USERINFO_ENDPOINT' | translate }}\n                  </mat-label>\n                  <input matInput required type=\"url\" [pattern]=\"urlPattern\" formControlName=\"userinfoEndpoint\" />\n                </mat-form-field>\n              </ng-container>\n            </ng-container>\n            <button mat-flat-button color=\"primary\" type=\"submit\" [disabled]=\"saving$ | async\">\n              {{\n                ((existingConfig$ | async) ? 'COMMON.ACTION_LABELS.SAVE' : 'COMMON.ACTION_LABELS.CREATE') | translate\n              }}\n            </button>\n          </form>\n        </mat-card-content>\n      </mat-card>\n    </ng-container>\n  </glxy-page-wrapper>\n</glxy-page>\n", "import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatExpansionModule } from '@angular/material/expansion';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatSelectModule } from '@angular/material/select';\nimport { RouterModule } from '@angular/router';\nimport { LexiconModule } from '@galaxy/lexicon';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { GalaxyBadgeModule } from '@vendasta/galaxy/badge';\nimport { GalaxyChatModule } from '@vendasta/galaxy/chat';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\nimport { GalaxyInfiniteScrollTriggerModule } from '@vendasta/galaxy/infinite-scroll-trigger';\nimport baseTranslation from '../../../assets/i18n/en_devel.json';\nimport { PageComponent } from '../../common/page.component';\nimport { WEBLATE_COMPONENT_NAME } from '../../constants';\nimport { ClipboardModule } from './../../common/clipboard/clipboard.module';\nimport { DeleteDialogComponent } from './identity-provider-config-page/delete-dialog.component';\nimport { IdentityProviderConfigPageComponent } from './identity-provider-config-page/identity-provider-config-page.component';\nimport { GalaxyPageModule } from '@vendasta/galaxy/page';\n\n@NgModule({\n  declarations: [IdentityProviderConfigPageComponent, DeleteDialogComponent],\n  imports: [\n    RouterModule.forChild([{ path: '', component: IdentityProviderConfigPageComponent }]),\n    CommonModule,\n    ReactiveFormsModule,\n    MatExpansionModule,\n    MatInputModule,\n    MatSelectModule,\n    MatFormFieldModule,\n    MatButtonModule,\n    MatCardModule,\n    MatDialogModule,\n    MatProgressSpinnerModule,\n    ClipboardModule,\n    TranslateModule,\n    MatIconModule,\n    GalaxyChatModule,\n    GalaxyBadgeModule,\n    GalaxyFormFieldModule,\n    GalaxyInfiniteScrollTriggerModule,\n    LexiconModule.forChild({\n      componentName: WEBLATE_COMPONENT_NAME,\n      baseTranslation: baseTranslation,\n    }),\n    PageComponent,\n    GalaxyPageModule,\n  ],\n})\nexport class IdentityProviderConfigModule {}\n"],
  "mappings": "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",
  "names": ["IdentityProviderConfigService", "constructor", "idpAdminService", "partnerId$", "getIdentityProviderConfig", "pipe", "switchMap", "partnerId", "getIdentityProvider", "map", "resp", "configuration", "respConfig", "config", "clientId", "integrationType", "openId", "openid", "discoveryEndpoint", "oauth2", "authorizationEndpoint", "tokenEndpoint", "userinfoEndpoint", "createIdentityProviderConfig", "req", "clientSecret", "createIdentityProvider", "__spreadProps", "__spreadValues", "replaceIdentityProviderConfig", "mutations", "push", "replaceOauth2", "replaceOpenId", "updateIdentityProvider", "deleteConfig", "deleteIdentityProvider", "\u0275\u0275inject", "IdentityProviderAdminApiService", "factory", "\u0275fac", "providedIn", "DeleteDialogComponent", "constructor", "dialogRef", "idpConfigService", "snackbarService", "loading$$", "BehaviorSubject", "deleting$$", "delete", "next", "deleteConfig", "subscribe", "close", "errorSnack", "\u0275\u0275directiveInject", "MatDialogRef", "IdentityProviderConfigService", "SnackbarService", "selectors", "standalone", "decls", "vars", "consts", "template", "rf", "ctx", "\u0275\u0275elementStart", "\u0275\u0275text", "\u0275\u0275elementEnd", "\u0275\u0275listener", "\u0275\u0275advance", "\u0275\u0275textInterpolate1", "\u0275\u0275pipeBind1", "\u0275\u0275property", "\u0275\u0275elementStart", "\u0275\u0275element", "\u0275\u0275elementEnd", "\u0275\u0275advance", "\u0275\u0275property", "\u0275\u0275text", "\u0275\u0275textInterpolate1", "\u0275\u0275pipeBind1", "\u0275\u0275elementContainerStart", "ctx_r1", "urlPattern", "\u0275\u0275listener", "\u0275\u0275restoreView", "_r1", "\u0275\u0275nextContext", "\u0275\u0275resetView", "onSubmit", "\u0275\u0275template", "IdentityProviderConfigPageComponent_ng_container_19_mat_hint_50_Template", "IdentityProviderConfigPageComponent_ng_container_19_ng_container_64_Template", "IdentityProviderConfigPageComponent_ng_container_19_ng_container_65_Template", "\u0275\u0275pipeBind2", "\u0275\u0275pureFunction1", "_c0", "redirectUri", "\u0275\u0275sanitizeHtml", "\u0275\u0275textInterpolate", "form", "existingConfig$", "get", "value", "saving$", "callbackRoute", "IdentityProviderConfigPageComponent", "constructor", "idpConfigService", "snackbarService", "dialog", "environmentSerivce", "_", "UntypedFormGroup", "integrationType", "UntypedFormControl", "clientId", "clientSecret", "openid", "discoveryEndpoint", "oauth2", "authorizationEndpoint", "tokenEndpoint", "userinfoEndpoint", "loading$$", "BehaviorSubject", "loading$", "asObservable", "error$$", "error$", "saving$$", "existingConfig$$", "ngOnInit", "getEnvironment", "Environment", "PROD", "config$", "getIdentityProviderConfig", "pipe", "shareReplay", "filter", "x", "first", "subscribe", "newValue", "setValue", "map", "config", "next", "newConfig", "error", "err", "status", "validateForm", "hasExistingConfig", "getField", "field", "isEmpty", "isUrl", "URL_REGEX", "test", "oauth2Validations", "openidValidations", "switchMap", "existingConfig", "formErrors", "length", "openErrorSnack", "join", "EMPTY", "createIdentityProviderConfig", "replaceIdentityProviderConfig", "savedConfig", "openSuccessSnack", "errResp", "message", "openDeleteDialog", "open", "DeleteDialogComponent", "maxWidth", "afterClosed", "result", "\u0275\u0275directiveInject", "IdentityProviderConfigService", "SnackbarService", "MatDialog", "EnvironmentService", "GalaxyAiIconService", "selectors", "standalone", "decls", "vars", "consts", "template", "rf", "ctx", "IdentityProviderConfigPageComponent_mat_card_14_Template", "IdentityProviderConfigPageComponent_mat_card_16_Template", "IdentityProviderConfigPageComponent_ng_container_19_Template", "IdentityProviderConfigModule", "RouterModule", "forChild", "path", "component", "IdentityProviderConfigPageComponent", "CommonModule", "ReactiveFormsModule", "MatExpansionModule", "MatInputModule", "MatSelectModule", "MatFormFieldModule", "MatButtonModule", "MatCardModule", "MatDialogModule", "MatProgressSpinnerModule", "ClipboardModule", "TranslateModule", "MatIconModule", "GalaxyChatModule", "GalaxyBadgeModule", "GalaxyFormFieldModule", "GalaxyInfiniteScrollTriggerModule", "LexiconModule", "componentName", "WEBLATE_COMPONENT_NAME", "baseTranslation", "PageComponent", "GalaxyPageModule"]
}