{"version":3,"file":"dshch-rad-ui-captcha.mjs","sources":["../../../projects/rad-ui/captcha/tokens.ts","../../../projects/rad-ui/captcha/load-script.ts","../../../projects/rad-ui/captcha/recaptcha-loader.service.ts","../../../projects/rad-ui/captcha/recaptcha-v3.service.ts","../../../projects/rad-ui/captcha/captcha.component.ts","../../../projects/rad-ui/captcha/captcha.component.html","../../../projects/rad-ui/captcha/recaptcha-value-accessor.directive.ts","../../../projects/rad-ui/captcha/module.ts","../../../projects/rad-ui/captcha/dshch-rad-ui-captcha.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nimport { RecaptchaSettings } from './recaptcha-settings';\n\nexport const RECAPTCHA_LANGUAGE = new InjectionToken<string>('recaptcha-language');\nexport const RECAPTCHA_BASE_URL = new InjectionToken<string>('recaptcha-base-url');\nexport const RECAPTCHA_NONCE = new InjectionToken<string>('recaptcha-nonce-tag');\nexport const RECAPTCHA_SETTINGS = new InjectionToken<RecaptchaSettings>('recaptcha-settings');\nexport const RECAPTCHA_V3_SITE_KEY = new InjectionToken<string>('recaptcha-v3-site-key');\n","declare global {\n  interface Window {\n    grecaptcha: ReCaptchaV2.ReCaptcha;\n    appRecaptchaLoaded: () => void;\n  }\n}\n\nfunction loadScript(\n  renderMode: 'explicit' | string,\n  onLoaded: (grecaptcha: ReCaptchaV2.ReCaptcha) => void,\n  urlParams: string,\n  url?: string,\n  nonce?: string,\n): void {\n  window.appRecaptchaLoaded = () => {\n    onLoaded(window.grecaptcha);\n  };\n  const script = document.createElement('script');\n  script.innerHTML = '';\n  const baseUrl = url || 'https://www.google.com/recaptcha/api.js';\n\n  script.src = `${baseUrl}?render=${renderMode}&onload=appRecaptchaLoaded${urlParams}`;\n  if (nonce) {\n    script.nonce = nonce;\n  }\n  script.async = true;\n  script.defer = true;\n  document.head.appendChild(script);\n}\n\nexport const loader = { loadScript };\n","import { isPlatformBrowser } from '@angular/common';\nimport { Inject, Injectable, Optional, PLATFORM_ID } from '@angular/core';\n\nimport { RECAPTCHA_BASE_URL, RECAPTCHA_LANGUAGE, RECAPTCHA_NONCE, RECAPTCHA_V3_SITE_KEY } from './tokens';\nimport { BehaviorSubject, Observable, of } from 'rxjs';\nimport { loader } from './load-script';\n\n@Injectable()\nexport class RecaptchaLoaderService {\n  /**\n   * @internal\n   * @nocollapse\n   */\n  private static ready: BehaviorSubject<ReCaptchaV2.ReCaptcha | null> | null = null;\n\n  public ready: Observable<ReCaptchaV2.ReCaptcha>;\n\n  /** @internal */\n  private language: string;\n  /** @internal */\n  private baseUrl: string;\n  /** @internal */\n  private nonce: string;\n  /** @internal */\n  private v3SiteKey: string;\n\n  constructor(\n    // eslint-disable-next-line @typescript-eslint/ban-types\n    @Inject(PLATFORM_ID) private readonly platformId: Object,\n    @Optional() @Inject(RECAPTCHA_LANGUAGE) language?: string,\n    @Optional() @Inject(RECAPTCHA_BASE_URL) baseUrl?: string,\n    @Optional() @Inject(RECAPTCHA_NONCE) nonce?: string,\n    @Optional() @Inject(RECAPTCHA_V3_SITE_KEY) v3SiteKey?: string,\n  ) {\n    this.language = <string>language;\n    this.baseUrl = <string>baseUrl;\n    this.nonce = <string>nonce;\n    this.v3SiteKey = <string>v3SiteKey;\n    this.init();\n    this.ready = isPlatformBrowser(this.platformId)\n      ? <Observable<ReCaptchaV2.ReCaptcha>>RecaptchaLoaderService.ready?.asObservable()\n      : of();\n  }\n\n  /** @internal */\n  private init() {\n    if (RecaptchaLoaderService.ready) {\n      return;\n    }\n    if (isPlatformBrowser(this.platformId)) {\n      const subject = new BehaviorSubject(<ReCaptchaV2.ReCaptcha | null>null);\n      RecaptchaLoaderService.ready = subject;\n      const langParam = this.language ? '&hl=' + this.language : '';\n\n      const renderMode = this.v3SiteKey || 'explicit';\n      loader.loadScript(renderMode, (grecaptcha) => subject.next(grecaptcha), langParam, this.baseUrl, this.nonce);\n    }\n  }\n}\n","import { isPlatformBrowser } from '@angular/common';\nimport { Inject, Injectable, NgZone, Optional, PLATFORM_ID } from '@angular/core';\n\nimport { RECAPTCHA_BASE_URL, RECAPTCHA_LANGUAGE, RECAPTCHA_NONCE, RECAPTCHA_V3_SITE_KEY } from './tokens';\nimport { Observable, Subject } from 'rxjs';\nimport { loader } from './load-script';\n\nexport interface OnExecuteData {\n  /**\n   * The name of the action that has been executed.\n   */\n  action: string;\n  /**\n   * The token that reCAPTCHA v3 provided when executing the action.\n   */\n  token: string;\n}\n\nexport interface OnExecuteErrorData {\n  /**\n   * The name of the action that has been executed.\n   */\n  action: string;\n  /**\n   * The error which was encountered\n   */\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  error: any;\n}\n\ntype ActionBacklogEntry = [string, Subject<string>];\n\n/**\n * The main service for working with reCAPTCHA v3 APIs.\n *\n * Use the `execute` method for executing a single action, and\n * `onExecute` observable for listening to all actions at once.\n */\n@Injectable()\nexport class ReCaptchaV3Service {\n  /** @internal */\n  private readonly isBrowser: boolean;\n  /** @internal */\n  private readonly siteKey: string;\n  /** @internal */\n  private readonly zone: NgZone;\n  /** @internal */\n  private actionBacklog: ActionBacklogEntry[] | undefined;\n  /** @internal */\n  private nonce: string;\n  /** @internal */\n  private language?: string;\n  /** @internal */\n  private baseUrl: string;\n  /** @internal */\n  private grecaptcha?: ReCaptchaV2.ReCaptcha;\n\n  /** @internal */\n  private onExecuteSubject?: Subject<OnExecuteData>;\n  /** @internal */\n  private onExecuteErrorSubject?: Subject<OnExecuteErrorData>;\n  /** @internal */\n  private onExecuteObservable?: Observable<OnExecuteData>;\n  /** @internal */\n  private onExecuteErrorObservable?: Observable<OnExecuteErrorData>;\n\n  constructor(\n    zone: NgZone,\n    @Inject(RECAPTCHA_V3_SITE_KEY) siteKey: string,\n    @Inject(PLATFORM_ID) platformId: Object,\n    @Optional() @Inject(RECAPTCHA_BASE_URL) baseUrl?: string,\n    @Optional() @Inject(RECAPTCHA_NONCE) nonce?: string,\n    @Optional() @Inject(RECAPTCHA_LANGUAGE) language?: string,\n  ) {\n    this.zone = zone;\n    this.isBrowser = isPlatformBrowser(platformId);\n    this.siteKey = siteKey;\n    this.nonce = <string>nonce;\n    this.language = language;\n    this.baseUrl = <string>baseUrl;\n\n    this.init();\n  }\n\n  public get onExecute(): Observable<OnExecuteData> {\n    if (!this.onExecuteSubject) {\n      this.onExecuteSubject = new Subject<OnExecuteData>();\n      this.onExecuteObservable = this.onExecuteSubject.asObservable();\n    }\n\n    return <Observable<OnExecuteData>>this.onExecuteObservable;\n  }\n\n  public get onExecuteError(): Observable<OnExecuteErrorData> {\n    if (!this.onExecuteErrorSubject) {\n      this.onExecuteErrorSubject = new Subject<OnExecuteErrorData>();\n      this.onExecuteErrorObservable = this.onExecuteErrorSubject.asObservable();\n    }\n\n    return <Observable<OnExecuteErrorData>>this.onExecuteErrorObservable;\n  }\n\n  /**\n   * Executes the provided `action` with reCAPTCHA v3 API.\n   * Use the emitted token value for verification purposes on the backend.\n   *\n   * For more information about reCAPTCHA v3 actions and tokens refer to the official documentation at\n   * https://developers.google.com/recaptcha/docs/v3.\n   *\n   * @param {string} action the action to execute\n   * @returns {Observable<string>} an `Observable` that will emit the reCAPTCHA v3 string `token` value whenever ready.\n   * The returned `Observable` completes immediately after emitting a value.\n   */\n  public execute(action: string): Observable<string> {\n    const subject = new Subject<string>();\n    if (this.isBrowser) {\n      if (!this.grecaptcha) {\n        // todo: add to array of later executions\n        if (!this.actionBacklog) {\n          this.actionBacklog = [];\n        }\n\n        this.actionBacklog.push([action, subject]);\n      } else {\n        this.executeActionWithSubject(action, subject);\n      }\n    }\n\n    return subject.asObservable();\n  }\n\n  /** @internal */\n  private executeActionWithSubject(action: string, subject: Subject<string>): void {\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    const onError = (error: any) => {\n      this.zone.run(() => {\n        subject.error(error);\n        if (this.onExecuteErrorSubject) {\n          // We don't know any better at this point, unfortunately, so have to resort to `any`\n          // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n          this.onExecuteErrorSubject.next({ action, error });\n        }\n      });\n    };\n\n    this.zone.runOutsideAngular(() => {\n      try {\n        this.grecaptcha?.execute(this.siteKey, { action }).then((token: string) => {\n          this.zone.run(() => {\n            subject.next(token);\n            subject.complete();\n            if (this.onExecuteSubject) {\n              this.onExecuteSubject.next({ action, token });\n            }\n          });\n        }, onError);\n      } catch (e) {\n        onError(e);\n      }\n    });\n  }\n\n  /** @internal */\n  private init() {\n    if (this.isBrowser) {\n      if (window.hasOwnProperty('grecaptcha')) {\n        this.grecaptcha = window.grecaptcha;\n      } else {\n        const langParam = this.language ? '&hl=' + this.language : '';\n        loader.loadScript(this.siteKey, this.onLoadComplete, langParam, this.baseUrl, this.nonce);\n      }\n    }\n  }\n\n  /** @internal */\n  private onLoadComplete = (grecaptcha: ReCaptchaV2.ReCaptcha) => {\n    this.grecaptcha = grecaptcha;\n    if (this.actionBacklog && this.actionBacklog.length > 0) {\n      this.actionBacklog.forEach(([action, subject]) => this.executeActionWithSubject(action, subject));\n      this.actionBacklog = undefined;\n    }\n  };\n}\n","import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  Component,\n  ElementRef,\n  EventEmitter,\n  HostBinding,\n  Inject,\n  Input,\n  NgZone,\n  OnDestroy,\n  OnInit,\n  Optional,\n  Output,\n  ViewChild,\n} from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { ClassListCtor, Element, mixinClassList } from '@dshch/rad-ui/common';\nimport { RecaptchaLoaderService } from './recaptcha-loader.service';\nimport { RECAPTCHA_SETTINGS } from './tokens';\nimport { RecaptchaSettings } from './recaptcha-settings';\nimport { takeUntil } from 'rxjs/operators';\nimport { Subject } from 'rxjs';\n\nexport type NeverUndefined<T> = T extends undefined ? never : T;\n\nexport type RecaptchaErrorParameters = Parameters<NeverUndefined<ReCaptchaV2.Parameters['error-callback']>>;\n\nclass CaptchaBase {\n  constructor() {}\n}\n\nconst _CaptchaMixinBase: ClassListCtor & typeof CaptchaBase = mixinClassList(CaptchaBase);\n\n@Component({\n  selector: 'rad-ui-captcha',\n  templateUrl: './captcha.component.html',\n  styleUrls: ['./captcha.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CaptchaComponent extends _CaptchaMixinBase implements OnInit, AfterViewInit, OnDestroy {\n  @Input()\n  @HostBinding('attr.id')\n  @Input()\n  id: string = '';\n  @Input() override label: string = '';\n  @Input() tooltip: string = '';\n  @Input() required = false;\n  @Input() formControl: FormControl = new FormControl();\n  @Input() errorMessages = {};\n\n  @Input() override inputClassList: string = '';\n  @Input() override labelClassList: string = '';\n  @Input() override wrapClassList: string = '';\n\n  @Input() public siteKey: string = '';\n  @Input() public theme: ReCaptchaV2.Theme = 'light';\n  @Input() public type: ReCaptchaV2.Type = 'image';\n  @Input() public size: ReCaptchaV2.Size = 'normal';\n  @Input() public tabIndex?: number;\n  @Input() public badge: ReCaptchaV2.Badge = 'bottomright';\n  @Input() public errorMode: 'handled' | 'default' = 'default';\n\n  @Output() public resolved = new EventEmitter<string>();\n  // The rename will happen a bit later\n  // eslint-disable-next-line @angular-eslint/no-output-native\n  @Output() public error = new EventEmitter<RecaptchaErrorParameters>();\n\n  @ViewChild('recaptchaElement', { static: true }) recaptchaElement?: ElementRef<HTMLDivElement>;\n\n  /** @internal */\n  private widget?: number;\n  /** @internal */\n  private grecaptcha?: ReCaptchaV2.ReCaptcha;\n  /** @internal */\n  private executeRequested: boolean = false;\n\n  private unsubscribe$ = new Subject();\n\n  constructor(\n    private loader: RecaptchaLoaderService,\n    private zone: NgZone,\n    @Optional() @Inject(RECAPTCHA_SETTINGS) protected settings?: RecaptchaSettings,\n  ) {\n    super();\n  }\n\n  ngOnInit() {\n    if (!this.id) {\n      this.id = Element.generateId();\n    }\n\n    if (this.settings) {\n      this.siteKey = <string>this.settings.siteKey;\n      this.theme = <ReCaptchaV2.Theme>this.settings.theme;\n      this.type = <ReCaptchaV2.Type>this.settings.type;\n      this.size = <ReCaptchaV2.Size>this.settings.size;\n      this.badge = <ReCaptchaV2.Badge>this.settings.badge;\n    }\n  }\n\n  ngAfterViewInit(): void {\n    this.loader.ready.pipe(takeUntil(this.unsubscribe$)).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(): void {\n    // reset the captcha to ensure it does not leave anything behind\n    // after the component is no longer needed\n    this.grecaptchaReset();\n    this.unsubscribe$.next();\n    this.unsubscribe$.complete();\n  }\n\n  /**\n   * Executes the invisible recaptcha.\n   * Does nothing if component's size is not set to \"invisible\".\n   */\n  public 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  public reset(): void {\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  /** @internal */\n  private expired() {\n    this.resolved.emit('');\n  }\n\n  /** @internal */\n  private errored(args: RecaptchaErrorParameters) {\n    this.error.emit(args);\n  }\n\n  /** @internal */\n  private captchaResponseCallback(response: string) {\n    this.resolved.emit(response);\n  }\n\n  /** @internal */\n  private grecaptchaReset() {\n    if (this.widget != null) {\n      this.zone.runOutsideAngular(() => this.grecaptcha?.reset(this.widget));\n    }\n  }\n\n  /** @internal */\n  private renderRecaptcha() {\n    // This `any` can be removed after @types/grecaptcha get updated\n    const renderOptions: ReCaptchaV2.Parameters = {\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.errorMode === 'handled') {\n      renderOptions['error-callback'] = (...args: RecaptchaErrorParameters) => {\n        this.zone.run(() => this.errored(args));\n      };\n    }\n\n    this.widget = this.grecaptcha?.render(<HTMLDivElement>this.recaptchaElement?.nativeElement, renderOptions);\n\n    if (this.executeRequested === true) {\n      this.executeRequested = false;\n      this.execute();\n    }\n  }\n}\n","<div [ngClass]=\"getWrapClassList()\">\n  <rad-ui-label\n    *ngIf=\"label\"\n    [id]=\"id\"\n    [label]=\"label\"\n    [required]=\"required\"\n    [tooltip]=\"tooltip\"\n    [ngClass]=\"getLabelClassList()\"\n  ></rad-ui-label>\n\n  <div\n    [ngClass]=\"getInputClassList()\"\n  >\n    <div\n      #recaptchaElement\n      [id]=\"id\"\n    ></div>\n\n    <rad-ui-control-errors\n      [control]=\"formControl\"\n      [touched]=\"formControl.touched\"\n      [errorMessages]=\"errorMessages\"\n    ></rad-ui-control-errors>\n  </div>\n</div>\n","import { Directive, forwardRef, HostListener } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { CaptchaComponent } from './captcha.component';\n\n@Directive({\n  providers: [\n    {\n      multi: true,\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => RecaptchaValueAccessorDirective),\n    },\n  ],\n  selector:\n    'rad-ui-captcha[formControlName],rad-ui-captcha[formControl],rad-ui-captcha[ngModel]',\n})\nexport class RecaptchaValueAccessorDirective implements ControlValueAccessor {\n  /** @internal */\n  private onChange: (value: string) => void = (value) => {};\n\n  /** @internal */\n  private onTouched: () => void = () => {};\n\n  constructor(private host: CaptchaComponent) {}\n\n  public writeValue(value: string): void {\n    if (!value) {\n      this.host.reset();\n    }\n  }\n\n  public registerOnChange(fn: (value: string) => void): void {\n    this.onChange = fn;\n  }\n  public registerOnTouched(fn: () => void): void {\n    this.onTouched = fn;\n  }\n\n  @HostListener('resolved', ['$event']) public onResolve($event: string): void {\n    if (this.onChange) {\n      this.onChange($event);\n    }\n    if (this.onTouched) {\n      this.onTouched();\n    }\n  }\n}\n","import { NgModule } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { RecaptchaLoaderService } from \"./recaptcha-loader.service\";\nimport { ReCaptchaV3Service } from \"./recaptcha-v3.service\";\nimport { CaptchaComponent } from \"./captcha.component\";\nimport { RadUILabelModule } from \"@dshch/rad-ui/label\";\nimport { RadUIControlErrorsModule } from \"@dshch/rad-ui/control-errors\";\nimport {\n  RecaptchaValueAccessorDirective\n} from \"./recaptcha-value-accessor.directive\";\n\n@NgModule({\n  imports: [\n    CommonModule,\n    RadUILabelModule,\n    RadUIControlErrorsModule,\n  ],\n  exports: [\n    CaptchaComponent,\n    RecaptchaValueAccessorDirective,\n  ],\n  declarations: [\n    CaptchaComponent,\n    RecaptchaValueAccessorDirective,\n  ],\n  providers: [\n    RecaptchaLoaderService,\n    ReCaptchaV3Service,\n  ],\n})\nexport class RadUICaptchaModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.CaptchaComponent"],"mappings":"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"}