{"version":3,"file":"captcha.mjs","sources":["../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/angular/captcha/captcha/captcha-settings.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/angular/captcha/captcha/windowref.service.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/angular/captcha/captcha/captcha-loader.service.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/angular/captcha/captcha/captcha.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/angular/captcha/captcha.module.ts"],"sourcesContent":["// Workaround for: https://github.com/bazelbuild/rules_nodejs/issues/1265\n/// <reference types=\"grecaptcha\" preserve=\"true\" />\n\nimport { InjectionToken } from '@angular/core';\n\nexport const SBB_RECAPTCHA_SETTINGS = new InjectionToken<SbbRecaptchaSettings>(\n  'recaptcha-settings',\n);\n\nexport interface SbbRecaptchaSettings {\n  /**\n   * SiteKey of the user.\n   * It is optional.\n   */\n  siteKey?: string;\n  /**\n   * The color theme of the widget.\n   * It is optional.\n   */\n  theme?: ReCaptchaV2.Theme;\n  /**\n   * Type of the widget.\n   * It is optional.\n   */\n  type?: ReCaptchaV2.Type;\n  /**\n   * The size of the widget.\n   * It is optional.\n   */\n  size?: ReCaptchaV2.Size;\n  /**\n   * Badge of the widget.\n   * It is optional.\n   */\n  badge?: ReCaptchaV2.Badge;\n}\n\nexport const SBB_RECAPTCHA_DEFAULT_BASE_URL = 'https://www.google.com/recaptcha/api.js';\n\nexport const SBB_RECAPTCHA_CALLBACK_NAME = 'ng2recaptchaloaded';\n","import { Injectable } from '@angular/core';\n\nfunction _window(): any {\n  // return the global native browser window object\n  return window;\n}\n\n@Injectable()\nexport class SbbWindowRef {\n  /** The global native browser window object. */\n  get nativeWindow(): any {\n    return _window();\n  }\n}\n\ndeclare global {\n  interface Window {\n    ng2recaptchaloaded: () => void;\n  }\n}\n","// Workaround for: https://github.com/bazelbuild/rules_nodejs/issues/1265\n/// <reference types=\"grecaptcha\" preserve=\"true\" />\n\nimport { DOCUMENT } from '@angular/common';\nimport { inject, Injectable, InjectionToken } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\nimport { SBB_RECAPTCHA_CALLBACK_NAME, SBB_RECAPTCHA_DEFAULT_BASE_URL } from './captcha-settings';\nimport { SbbWindowRef } from './windowref.service';\n\nexport const SBB_RECAPTCHA_LANGUAGE = new InjectionToken<string>('recaptcha-language');\nexport const SBB_RECAPTCHA_BASE_URL = new InjectionToken<string>('recaptcha-base-url');\nexport const SBB_RECAPTCHA_NONCE = new InjectionToken<string>('recaptcha-nonce-tag');\n\n@Injectable()\nexport class SbbCaptchaLoaderService {\n  private _windowRef = inject(SbbWindowRef);\n\n  /** @nocollapse */\n  private static _ready: BehaviorSubject<ReCaptchaV2.ReCaptcha | null> | null = null;\n\n  ready: Observable<ReCaptchaV2.ReCaptcha>;\n\n  private _language: string | null;\n  private _baseUrl: string | null;\n  private _nonce: string | null;\n\n  private _document: Document;\n\n  constructor(...args: unknown[]);\n  constructor() {\n    const document = inject(DOCUMENT);\n    const language = inject(SBB_RECAPTCHA_LANGUAGE, { optional: true });\n    const baseUrl = inject(SBB_RECAPTCHA_BASE_URL, { optional: true });\n    const nonce = inject(SBB_RECAPTCHA_NONCE, { optional: true });\n\n    this._language = language || null;\n    this._baseUrl = baseUrl || null;\n    this._nonce = nonce || null;\n    this._document = document;\n    this._init();\n    this.ready = SbbCaptchaLoaderService._ready!.pipe(\n      filter((e): e is ReCaptchaV2.ReCaptcha => !!e),\n    );\n  }\n\n  private _init() {\n    if (SbbCaptchaLoaderService._ready) {\n      return;\n    }\n    this._windowRef.nativeWindow.ng2recaptchaloaded = () => {\n      SbbCaptchaLoaderService._ready!.next(grecaptcha);\n    };\n    SbbCaptchaLoaderService._ready = new BehaviorSubject<ReCaptchaV2.ReCaptcha | null>(null);\n    const script = this._document.createElement('script') as HTMLScriptElement;\n    script.innerHTML = '';\n    const langParam = this._language ? '&hl=' + this._language : '';\n    const baseUrl = this._baseUrl || SBB_RECAPTCHA_DEFAULT_BASE_URL;\n    script.src = `${baseUrl}?render=explicit&onload=${SBB_RECAPTCHA_CALLBACK_NAME}${langParam}`;\n    if (this._nonce) {\n      script.nonce = this._nonce;\n    }\n    script.async = true;\n    script.defer = true;\n    this._document.head.appendChild(script);\n  }\n}\n","// Workaround for: https://github.com/bazelbuild/rules_nodejs/issues/1265\n/// <reference types=\"grecaptcha\" preserve=\"true\" />\n\nimport { _IdGenerator } from '@angular/cdk/a11y';\nimport {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  Component,\n  ElementRef,\n  EventEmitter,\n  forwardRef,\n  HostListener,\n  inject,\n  Input,\n  NgZone,\n  OnDestroy,\n  Output,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { Subscription } from 'rxjs';\n\nimport { SbbCaptchaLoaderService } from './captcha-loader.service';\nimport { SbbRecaptchaSettings, SBB_RECAPTCHA_SETTINGS } from './captcha-settings';\n\n@Component({\n  exportAs: 'sbbCaptcha',\n  selector: 'sbb-captcha',\n  template: ``,\n  providers: [\n    {\n      multi: true,\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => SbbCaptcha),\n    },\n  ],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  host: {\n    class: 'sbb-captcha',\n    '[attr.id]': 'id',\n  },\n})\nexport class SbbCaptcha implements AfterViewInit, OnDestroy, ControlValueAccessor {\n  private _elementRef = inject(ElementRef);\n  private _loader = inject(SbbCaptchaLoaderService);\n  private _zone = inject(NgZone);\n\n  /** Identifier of sbb-captcha. */\n  @Input() id: string = inject(_IdGenerator).getId('sbbcaptcha-');\n\n  /**\n   * SiteKey of the user.\n   * It is optional.\n   */\n  @Input() siteKey?: string;\n\n  /**\n   * The color theme of the widget.\n   * It is optional.\n   */\n  @Input() theme?: ReCaptchaV2.Theme;\n\n  /**\n   * The type of the widget.\n   * It is optional.\n   */\n  @Input() type?: ReCaptchaV2.Type;\n\n  /**\n   * The size of the widget.\n   * It is optional.\n   */\n  @Input() size?: ReCaptchaV2.Size;\n\n  /**\n   * The tabindex of the widget and challenge.\n   * It is optional.\n   */\n  @Input() tabIndex?: number;\n\n  /**\n   * The badge of the widget.\n   * It is optional.\n   */\n  @Input() badge?: ReCaptchaV2.Badge;\n\n  /** Event generated on captcha checkbox. */\n  @Output() resolved: EventEmitter<string> = new EventEmitter<string>();\n\n  private _subscription!: Subscription;\n  private _widget!: number;\n  private _grecaptcha!: ReCaptchaV2.ReCaptcha;\n  private _executeRequested: boolean = false;\n\n  private _onChange!: (value: string) => void;\n\n  private _onTouched?: () => void;\n\n  constructor(...args: unknown[]);\n  constructor() {\n    const settings = inject<SbbRecaptchaSettings>(SBB_RECAPTCHA_SETTINGS, { optional: true });\n    if (settings) {\n      this.siteKey = settings.siteKey;\n      this.theme = settings.theme;\n      this.type = settings.type;\n      this.size = settings.size;\n      this.badge = settings.badge;\n    }\n  }\n\n  @HostListener('resolved', ['$event'])\n  _onResolve($event: string) {\n    if (this._onChange) {\n      this._onChange($event);\n    }\n    if (this._onTouched) {\n      this._onTouched();\n    }\n  }\n\n  writeValue(value: string): void {\n    if (!value) {\n      this.reset();\n    }\n  }\n\n  registerOnChange(fn: (value: string) => void): void {\n    this._onChange = fn;\n  }\n  registerOnTouched(fn: () => void): void {\n    this._onTouched = fn;\n  }\n\n  ngAfterViewInit() {\n    this._subscription = this._loader.ready.subscribe((grecaptcha: ReCaptchaV2.ReCaptcha) => {\n      if (grecaptcha != null && grecaptcha.render instanceof Function) {\n        this._grecaptcha = grecaptcha;\n        this._renderRecaptcha();\n      }\n    });\n  }\n\n  ngOnDestroy() {\n    // reset the captcha to ensure it does not leave anything behind\n    // after the component is no longer needed\n    this._grecaptchaReset();\n    if (this._subscription) {\n      this._subscription.unsubscribe();\n    }\n  }\n\n  /**\n   * Executes the invisible recaptcha.\n   * Does nothing if component's size is not set to \"invisible\".\n   */\n  execute(): void {\n    if (this.size !== 'invisible') {\n      return;\n    }\n\n    if (this._widget != null) {\n      this._grecaptcha.execute(this._widget);\n    } else {\n      // delay execution of recaptcha until it actually renders\n      this._executeRequested = true;\n    }\n  }\n\n  reset() {\n    if (this._widget != null) {\n      if (this._grecaptcha.getResponse(this._widget)) {\n        // Only emit an event in case if something would actually change.\n        // That way we do not trigger \"touching\" of the control if someone does a \"reset\"\n        // on a non-resolved captcha.\n        this.resolved.emit('');\n      }\n\n      this._grecaptchaReset();\n    }\n  }\n\n  private _expired() {\n    this.resolved.emit('');\n  }\n\n  private _captchaResponseCallback(response: string) {\n    this.resolved.emit(response);\n  }\n\n  private _grecaptchaReset() {\n    if (this._widget != null) {\n      this._zone.runOutsideAngular(() => this._grecaptcha.reset(this._widget));\n    }\n  }\n\n  private _renderRecaptcha() {\n    this._widget = this._grecaptcha.render(this._elementRef.nativeElement, {\n      badge: this.badge,\n      callback: (response: string) => {\n        this._zone.run(() => this._captchaResponseCallback(response));\n      },\n      'expired-callback': () => {\n        this._zone.run(() => this._expired());\n      },\n      sitekey: this.siteKey,\n      size: this.size,\n      tabindex: this.tabIndex,\n      theme: this.theme,\n      type: this.type,\n    });\n\n    if (this._executeRequested === true) {\n      this._executeRequested = false;\n      this.execute();\n    }\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { SbbCommonModule } from '@sbb-esta/angular/core';\n\nimport { SbbCaptcha } from './captcha/captcha';\nimport { SbbCaptchaLoaderService } from './captcha/captcha-loader.service';\nimport { SbbWindowRef } from './captcha/windowref.service';\n\n@NgModule({\n  imports: [SbbCommonModule, SbbCaptcha],\n  exports: [SbbCaptcha],\n  providers: [SbbCaptchaLoaderService, SbbWindowRef],\n})\nexport class SbbCaptchaModule {}\n"],"names":["expired-callback"],"mappings":"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"}