{"version":3,"file":"le2xx-ng-recaptcha.mjs","sources":["../../../projects/ng-recaptcha/src/lib/tokens.ts","../../../projects/ng-recaptcha/src/lib/load-script.ts","../../../projects/ng-recaptcha/src/lib/recaptcha-loader.service.ts","../../../projects/ng-recaptcha/src/lib/recaptcha.component.ts","../../../projects/ng-recaptcha/src/lib/recaptcha-common.module.ts","../../../projects/ng-recaptcha/src/lib/recaptcha.module.ts","../../../projects/ng-recaptcha/src/lib/recaptcha-v3.service.ts","../../../projects/ng-recaptcha/src/lib/recaptcha-v3.module.ts","../../../projects/ng-recaptcha/src/lib/recaptcha-value-accessor.directive.ts","../../../projects/ng-recaptcha/src/lib/recaptcha-forms.module.ts","../../../projects/ng-recaptcha/src/le2xx-ng-recaptcha.ts"],"sourcesContent":["import { InjectionToken } from \"@angular/core\";\r\n\r\nimport { RecaptchaSettings } from \"./recaptcha-settings\";\r\n\r\n/** @deprecated Use `LOADER_OPTIONS` instead. See `RecaptchaLoaderOptions.onBeforeLoad` */\r\nexport const RECAPTCHA_LANGUAGE = new InjectionToken<string>(\"recaptcha-language\");\r\n/** @deprecated Use `LOADER_OPTIONS` instead. See `RecaptchaLoaderOptions.onBeforeLoad` */\r\nexport const RECAPTCHA_BASE_URL = new InjectionToken<string>(\"recaptcha-base-url\");\r\n/** @deprecated Use `LOADER_OPTIONS` instead. See `RecaptchaLoaderOptions.onBeforeLoad` */\r\nexport const RECAPTCHA_NONCE = new InjectionToken<string>(\"recaptcha-nonce-tag\");\r\nexport const RECAPTCHA_SETTINGS = new InjectionToken<RecaptchaSettings>(\"recaptcha-settings\");\r\nexport const RECAPTCHA_V3_SITE_KEY = new InjectionToken<string>(\"recaptcha-v3-site-key\");\r\n\r\n/**\r\n * Specifies the options for loading the reCAPTCHA script tag.\r\n */\r\nexport type RecaptchaLoaderOptions = {\r\n  /**\r\n   * Invoked before the `<script>` tag is appended to the DOM.\r\n   * Use this function as an opportunity to set `nonce`, as well as modify the URL of the tag.\r\n   *\r\n   * Use the `url.searchParams` to set additional query string attributes (including reCAPTCHA language),\r\n   * or use an entirely different base URL altogether.\r\n   *\r\n   * The URL that you provide will then properly set the `\"render\"` and `\"onload\"` attributes which are required for proper `ng-recaptcha` wire-up.\r\n   *\r\n   * @param url the current URL that was composed. Either modify it in-place, or return a completely new URL.\r\n   * @returns the final URL that is going to be used as the `src` for the `<script>` tag, along with (optionally) a nonce.\r\n   *\r\n   * @example\r\n   * Provide nonce:\r\n   * ```ts\r\n   * {\r\n   *    provide: RECAPTCHA_LOADER_OPTIONS,\r\n   *    useValue: {\r\n   *      onBeforeLoad(url) {\r\n   *        return {\r\n   *          url,\r\n   *          nonce: \"YOUR_NONCE\"\r\n   *        };\r\n   *      }\r\n   *    }\r\n   * }\r\n   * ```\r\n   *\r\n   * Set the reCAPTCHA language:\r\n   * ```ts\r\n   * {\r\n   *    provide: RECAPTCHA_LOADER_OPTIONS,\r\n   *    useValue: {\r\n   *      onBeforeLoad(url) {\r\n   *        url.searchParams.set(\"hl\", \"en-GB\")\r\n   *\r\n   *        return { url };\r\n   *      }\r\n   *    }\r\n   * }\r\n   * ```\r\n   *\r\n   * Use a different base URL for loading reCAPTCHA\r\n   * ```ts\r\n   * {\r\n   *    provide: RECAPTCHA_LOADER_OPTIONS,\r\n   *    useValue: {\r\n   *      onBeforeLoad(_url) {\r\n   *        const chinaCompatibleUrl = new URL(\"https://www.recaptcha.net/recaptcha/api.js\");\r\n   *        // optionally, set the locale:\r\n   *        // chinaCompatibleUrl.searchParams.set(\"hl\", \"zh-CN\");\r\n   *\r\n   *        return {\r\n   *          url: chinaCompatibleUrl\r\n   *        };\r\n   *      }\r\n   *    }\r\n   * }\r\n   * ```\r\n   */\r\n  onBeforeLoad?(url: URL): { url: URL; nonce?: string };\r\n\r\n  /**\r\n   * Allows you to change the `grecaptcha` that the `ng-recaptcha` will be relying on.\r\n   * This method is useful when you need to use `grecaptcha.enterprise` instead of the base `grecaptcha`\r\n   *\r\n   * @param recaptcha the value of `window.grecaptcha` upon script load.\r\n   * @returns the {ReCaptchaV2.ReCaptcha} instance that the `ng-recaptcha` lib will use.\r\n   *\r\n   * @example\r\n   * Using the Enterprise version of `grecaptcha`:\r\n   *\r\n   * ```ts\r\n   * {\r\n   *    provide: RECAPTCHA_LOADER_OPTIONS,\r\n   *    useValue: {\r\n   *      onBeforeLoad() {\r\n   *        const recaptchaEnterpriseUrl = new URL(\"https://www.google.com/recaptcha/enterprise.js\");\r\n   *        // optionally, if you're using the reCAPTCHA session-tokens, set the `&waf=session` param,\r\n   *        // see https://cloud.google.com/recaptcha-enterprise/docs/implement-waf-ca#session-token\r\n   *        // recaptchaEnterpriseUrl.searchParams.set(\"waf\", \"session\");\r\n   *\r\n   *        return {\r\n   *          url: recaptchaEnterpriseUrl,\r\n   *        }\r\n   *      },\r\n   *      onLoaded(recaptcha) {\r\n   *        return recaptcha.enterprise;\r\n   *      }\r\n   *    }\r\n   * }\r\n   * ```\r\n   */\r\n  onLoaded?(recaptcha: ReCaptchaV2.ReCaptcha): ReCaptchaV2.ReCaptcha;\r\n};\r\n\r\n/**\r\n * See the documentation for `RecaptchaLoaderOptions`.\r\n */\r\nexport const RECAPTCHA_LOADER_OPTIONS = new InjectionToken<RecaptchaLoaderOptions>(\"recaptcha-loader-options\");\r\n","import { RecaptchaLoaderOptions } from \"./tokens\";\r\n\r\ndeclare global {\r\n  interface Window {\r\n    ng2recaptchaloaded?(): void;\r\n  }\r\n}\r\n\r\nexport type RenderMode = \"explicit\" | { key: string };\r\n\r\nfunction loadScript(\r\n  renderMode: RenderMode,\r\n  onBeforeLoad: (url: URL) => { url: URL; nonce?: string },\r\n  onLoaded: (grecaptcha: ReCaptchaV2.ReCaptcha) => void,\r\n  { url, lang, nonce }: { url?: string; lang?: string; nonce?: string } = {},\r\n): void {\r\n  window.ng2recaptchaloaded = () => {\r\n    onLoaded(grecaptcha);\r\n  };\r\n  const script = document.createElement(\"script\");\r\n  script.innerHTML = \"\";\r\n\r\n  const { url: baseUrl, nonce: onBeforeLoadNonce } = onBeforeLoad(\r\n    new URL(url || \"https://www.google.com/recaptcha/api.js\"),\r\n  );\r\n  baseUrl.searchParams.set(\"render\", renderMode === \"explicit\" ? renderMode : renderMode.key);\r\n  baseUrl.searchParams.set(\"onload\", \"ng2recaptchaloaded\");\r\n  baseUrl.searchParams.set(\"trustedtypes\", \"true\");\r\n  if (lang) {\r\n    baseUrl.searchParams.set(\"hl\", lang);\r\n  }\r\n\r\n  script.src = baseUrl.href;\r\n\r\n  const nonceValue = onBeforeLoadNonce || nonce;\r\n\r\n  if (nonceValue) {\r\n    script.setAttribute(\"nonce\", nonceValue);\r\n  }\r\n  script.async = true;\r\n  script.defer = true;\r\n  document.head.appendChild(script);\r\n}\r\n\r\nfunction newLoadScript({\r\n  v3SiteKey,\r\n  onBeforeLoad,\r\n  onLoaded,\r\n}: { v3SiteKey: string | undefined; onLoaded(recaptcha: ReCaptchaV2.ReCaptcha): void } & Pick<\r\n  Required<RecaptchaLoaderOptions>,\r\n  \"onBeforeLoad\"\r\n>) {\r\n  const renderMode: RenderMode = v3SiteKey ? { key: v3SiteKey } : \"explicit\";\r\n\r\n  loader.loadScript(renderMode, onBeforeLoad, onLoaded);\r\n}\r\n\r\nexport const loader = { loadScript, newLoadScript };\r\n","import { isPlatformBrowser } from \"@angular/common\";\r\nimport { Inject, Injectable, Optional, PLATFORM_ID } from \"@angular/core\";\r\nimport { BehaviorSubject, Observable, of } from \"rxjs\";\r\nimport { filter } from \"rxjs/operators\";\r\n\r\nimport { loader } from \"./load-script\";\r\nimport {\r\n  RECAPTCHA_LOADER_OPTIONS,\r\n  RECAPTCHA_BASE_URL,\r\n  RECAPTCHA_LANGUAGE,\r\n  RECAPTCHA_NONCE,\r\n  RECAPTCHA_V3_SITE_KEY,\r\n  RecaptchaLoaderOptions,\r\n} from \"./tokens\";\r\n\r\nfunction toNonNullObservable<T>(subject: BehaviorSubject<T | null>): Observable<T> {\r\n  return subject.asObservable().pipe(filter<T>((value) => value !== null));\r\n}\r\n\r\n@Injectable()\r\nexport class RecaptchaLoaderService {\r\n  /**\r\n   * @internal\r\n   * @nocollapse\r\n   */\r\n  private static ready: BehaviorSubject<ReCaptchaV2.ReCaptcha | null> | null = null;\r\n\r\n  public ready: Observable<ReCaptchaV2.ReCaptcha>;\r\n\r\n  /** @internal */\r\n  private language?: string;\r\n  /** @internal */\r\n  private baseUrl?: string;\r\n  /** @internal */\r\n  private nonce?: string;\r\n  /** @internal */\r\n  private v3SiteKey?: string;\r\n  /** @internal */\r\n  private options?: RecaptchaLoaderOptions;\r\n\r\n  constructor(\r\n    // eslint-disable-next-line @typescript-eslint/ban-types\r\n    @Inject(PLATFORM_ID) private readonly platformId: Object,\r\n    // eslint-disable-next-line deprecation/deprecation\r\n    @Optional() @Inject(RECAPTCHA_LANGUAGE) language?: string,\r\n    // eslint-disable-next-line deprecation/deprecation\r\n    @Optional() @Inject(RECAPTCHA_BASE_URL) baseUrl?: string,\r\n    // eslint-disable-next-line deprecation/deprecation\r\n    @Optional() @Inject(RECAPTCHA_NONCE) nonce?: string,\r\n    @Optional() @Inject(RECAPTCHA_V3_SITE_KEY) v3SiteKey?: string,\r\n    @Optional() @Inject(RECAPTCHA_LOADER_OPTIONS) options?: RecaptchaLoaderOptions,\r\n  ) {\r\n    this.language = language;\r\n    this.baseUrl = baseUrl;\r\n    this.nonce = nonce;\r\n    this.v3SiteKey = v3SiteKey;\r\n    this.options = options;\r\n    const subject = this.init();\r\n    this.ready = subject ? toNonNullObservable(subject) : of();\r\n  }\r\n\r\n  /** @internal */\r\n  private init(): BehaviorSubject<ReCaptchaV2.ReCaptcha | null> | undefined {\r\n    if (RecaptchaLoaderService.ready) {\r\n      return RecaptchaLoaderService.ready;\r\n    }\r\n\r\n    if (!isPlatformBrowser(this.platformId)) {\r\n      return undefined;\r\n    }\r\n\r\n    const subject = new BehaviorSubject<ReCaptchaV2.ReCaptcha | null>(null);\r\n    RecaptchaLoaderService.ready = subject;\r\n\r\n    loader.newLoadScript({\r\n      v3SiteKey: this.v3SiteKey,\r\n      onBeforeLoad: (url) => {\r\n        if (this.options?.onBeforeLoad) {\r\n          return this.options.onBeforeLoad(url);\r\n        }\r\n\r\n        const newUrl = new URL(this.baseUrl ?? url);\r\n\r\n        if (this.language) {\r\n          newUrl.searchParams.set(\"hl\", this.language);\r\n        }\r\n\r\n        return {\r\n          url: newUrl,\r\n          nonce: this.nonce,\r\n        };\r\n      },\r\n      onLoaded: (recaptcha) => {\r\n        let value = recaptcha;\r\n        if (this.options?.onLoaded) {\r\n          value = this.options.onLoaded(recaptcha);\r\n        }\r\n\r\n        subject.next(value);\r\n      },\r\n    });\r\n\r\n    return subject;\r\n  }\r\n}\r\n","import {\r\n  AfterViewInit,\r\n  Component,\r\n  ElementRef,\r\n  EventEmitter,\r\n  HostBinding,\r\n  Inject,\r\n  Input,\r\n  NgZone,\r\n  OnDestroy,\r\n  Optional,\r\n  Output,\r\n} from \"@angular/core\";\r\nimport { Subscription } from \"rxjs\";\r\n\r\nimport { RecaptchaLoaderService } from \"./recaptcha-loader.service\";\r\nimport { RecaptchaSettings } from \"./recaptcha-settings\";\r\nimport { RECAPTCHA_SETTINGS } from \"./tokens\";\r\n\r\nlet nextId = 0;\r\n\r\nexport type NeverUndefined<T> = T extends undefined ? never : T;\r\n\r\nexport type RecaptchaErrorParameters = Parameters<NeverUndefined<ReCaptchaV2.Parameters[\"error-callback\"]>>;\r\n\r\n@Component({\r\n  exportAs: \"reCaptcha\",\r\n  selector: \"re-captcha\",\r\n  template: ``,\r\n})\r\nexport class RecaptchaComponent implements AfterViewInit, OnDestroy {\r\n  @Input()\r\n  @HostBinding(\"attr.id\")\r\n  public id = `ngrecaptcha-${nextId++}`;\r\n\r\n  @Input() public siteKey?: string;\r\n  @Input() public theme?: ReCaptchaV2.Theme;\r\n  @Input() public type?: ReCaptchaV2.Type;\r\n  @Input() public size?: ReCaptchaV2.Size;\r\n  @Input() public tabIndex?: number;\r\n  @Input() public badge?: ReCaptchaV2.Badge;\r\n  @Input() public errorMode: \"handled\" | \"default\" = \"default\";\r\n\r\n  @Output() public resolved = new EventEmitter<string | null>();\r\n  /**\r\n   * @deprecated `(error) output will be removed in the next major version. Use (errored) instead\r\n   */\r\n  // eslint-disable-next-line @angular-eslint/no-output-native\r\n  @Output() public error = new EventEmitter<RecaptchaErrorParameters>();\r\n  @Output() public errored = new EventEmitter<RecaptchaErrorParameters>();\r\n\r\n  /** @internal */\r\n  private subscription: Subscription;\r\n  /** @internal */\r\n  private widget: number;\r\n  /** @internal */\r\n  private grecaptcha: ReCaptchaV2.ReCaptcha;\r\n  /** @internal */\r\n  private executeRequested: boolean;\r\n\r\n  constructor(\r\n    private elementRef: ElementRef<HTMLElement>,\r\n    private loader: RecaptchaLoaderService,\r\n    private zone: NgZone,\r\n    @Optional() @Inject(RECAPTCHA_SETTINGS) settings?: RecaptchaSettings,\r\n  ) {\r\n    if (settings) {\r\n      this.siteKey = settings.siteKey;\r\n      this.theme = settings.theme;\r\n      this.type = settings.type;\r\n      this.size = settings.size;\r\n      this.badge = settings.badge;\r\n    }\r\n  }\r\n\r\n  public ngAfterViewInit(): void {\r\n    this.subscription = this.loader.ready.subscribe((grecaptcha: ReCaptchaV2.ReCaptcha) => {\r\n      if (grecaptcha != null && grecaptcha.render instanceof Function) {\r\n        this.grecaptcha = grecaptcha;\r\n        this.renderRecaptcha();\r\n      }\r\n    });\r\n  }\r\n\r\n  public ngOnDestroy(): void {\r\n    // reset the captcha to ensure it does not leave anything behind\r\n    // after the component is no longer needed\r\n    this.grecaptchaReset();\r\n    if (this.subscription) {\r\n      this.subscription.unsubscribe();\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Executes the invisible recaptcha.\r\n   * Does nothing if component's size is not set to \"invisible\".\r\n   */\r\n  public execute(): void {\r\n    if (this.size !== \"invisible\") {\r\n      return;\r\n    }\r\n\r\n    if (this.widget != null) {\r\n      void this.grecaptcha.execute(this.widget);\r\n    } else {\r\n      // delay execution of recaptcha until it actually renders\r\n      this.executeRequested = true;\r\n    }\r\n  }\r\n\r\n  public reset(): void {\r\n    if (this.widget != null) {\r\n      if (this.grecaptcha.getResponse(this.widget)) {\r\n        // Only emit an event in case if something would actually change.\r\n        // That way we do not trigger \"touching\" of the control if someone does a \"reset\"\r\n        // on a non-resolved captcha.\r\n        this.resolved.emit(null);\r\n      }\r\n\r\n      this.grecaptchaReset();\r\n    }\r\n  }\r\n\r\n  /**\r\n   * ⚠️ Warning! Use this property at your own risk!\r\n   *\r\n   * While this member is `public`, it is not a part of the component's public API.\r\n   * The semantic versioning guarantees _will not be honored_! Thus, you might find that this property behavior changes in incompatible ways in minor or even patch releases.\r\n   * You are **strongly advised** against using this property.\r\n   * Instead, use more idiomatic ways to get reCAPTCHA value, such as `resolved` EventEmitter, or form-bound methods (ngModel, formControl, and the likes).å\r\n   */\r\n  public get __unsafe_widgetValue(): string | null {\r\n    return this.widget != null ? this.grecaptcha.getResponse(this.widget) : null;\r\n  }\r\n\r\n  /** @internal */\r\n  private expired() {\r\n    this.resolved.emit(null);\r\n  }\r\n\r\n  /** @internal */\r\n  private onError(args: RecaptchaErrorParameters) {\r\n    // eslint-disable-next-line deprecation/deprecation\r\n    this.error.emit(args);\r\n    this.errored.emit(args);\r\n  }\r\n\r\n  /** @internal */\r\n  private captchaResponseCallback(response: string) {\r\n    this.resolved.emit(response);\r\n  }\r\n\r\n  /** @internal */\r\n  private grecaptchaReset() {\r\n    if (this.widget != null) {\r\n      this.zone.runOutsideAngular(() => this.grecaptcha.reset(this.widget));\r\n    }\r\n  }\r\n\r\n  /** @internal */\r\n  private renderRecaptcha() {\r\n    // This `any` can be removed after @types/grecaptcha get updated\r\n    const renderOptions: ReCaptchaV2.Parameters = {\r\n      badge: this.badge,\r\n      callback: (response: string) => {\r\n        this.zone.run(() => this.captchaResponseCallback(response));\r\n      },\r\n      \"expired-callback\": () => {\r\n        this.zone.run(() => this.expired());\r\n      },\r\n      sitekey: this.siteKey,\r\n      size: this.size,\r\n      tabindex: this.tabIndex,\r\n      theme: this.theme,\r\n      type: this.type,\r\n    };\r\n\r\n    if (this.errorMode === \"handled\") {\r\n      renderOptions[\"error-callback\"] = (...args: RecaptchaErrorParameters) => {\r\n        this.zone.run(() => this.onError(args));\r\n      };\r\n    }\r\n\r\n    this.widget = this.grecaptcha.render(this.elementRef.nativeElement, renderOptions);\r\n\r\n    if (this.executeRequested === true) {\r\n      this.executeRequested = false;\r\n      this.execute();\r\n    }\r\n  }\r\n}\r\n","import { NgModule } from \"@angular/core\";\r\n\r\nimport { RecaptchaComponent } from \"./recaptcha.component\";\r\n\r\n@NgModule({\r\n  declarations: [RecaptchaComponent],\r\n  exports: [RecaptchaComponent],\r\n})\r\nexport class RecaptchaCommonModule {}\r\n","import { NgModule } from \"@angular/core\";\r\n\r\nimport { RecaptchaCommonModule } from \"./recaptcha-common.module\";\r\nimport { RecaptchaLoaderService } from \"./recaptcha-loader.service\";\r\nimport { RecaptchaComponent } from \"./recaptcha.component\";\r\n\r\n@NgModule({\r\n  exports: [RecaptchaComponent],\r\n  imports: [RecaptchaCommonModule],\r\n  providers: [RecaptchaLoaderService],\r\n})\r\nexport class RecaptchaModule {}\r\n","import { Inject, Injectable, NgZone } from \"@angular/core\";\r\nimport { Observable, Subject } from \"rxjs\";\r\n\r\nimport { RECAPTCHA_V3_SITE_KEY } from \"./tokens\";\r\nimport { RecaptchaLoaderService } from \"./recaptcha-loader.service\";\r\n\r\nexport interface OnExecuteData {\r\n  /**\r\n   * The name of the action that has been executed.\r\n   */\r\n  action: string;\r\n  /**\r\n   * The token that reCAPTCHA v3 provided when executing the action.\r\n   */\r\n  token: string;\r\n}\r\n\r\nexport interface OnExecuteErrorData {\r\n  /**\r\n   * The name of the action that has been executed.\r\n   */\r\n  action: string;\r\n  /**\r\n   * The error which was encountered\r\n   */\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  error: any;\r\n}\r\n\r\ntype ActionBacklogEntry = [string, Subject<string>];\r\n\r\n/**\r\n * The main service for working with reCAPTCHA v3 APIs.\r\n *\r\n * Use the `execute` method for executing a single action, and\r\n * `onExecute` observable for listening to all actions at once.\r\n */\r\n@Injectable()\r\nexport class ReCaptchaV3Service {\r\n  /** @internal */\r\n  private readonly siteKey: string;\r\n  /** @internal */\r\n  private readonly zone: NgZone;\r\n  /** @internal */\r\n  private actionBacklog: ActionBacklogEntry[] | undefined;\r\n  /** @internal */\r\n  private grecaptcha: ReCaptchaV2.ReCaptcha;\r\n\r\n  /** @internal */\r\n  private onExecuteSubject: Subject<OnExecuteData>;\r\n  /** @internal */\r\n  private onExecuteErrorSubject: Subject<OnExecuteErrorData>;\r\n  /** @internal */\r\n  private onExecuteObservable: Observable<OnExecuteData>;\r\n  /** @internal */\r\n  private onExecuteErrorObservable: Observable<OnExecuteErrorData>;\r\n\r\n  constructor(\r\n    zone: NgZone,\r\n    public recaptchaLoader: RecaptchaLoaderService,\r\n    @Inject(RECAPTCHA_V3_SITE_KEY) siteKey: string,\r\n  ) {\r\n    this.zone = zone;\r\n    this.siteKey = siteKey;\r\n\r\n    this.init();\r\n  }\r\n\r\n  public get onExecute(): Observable<OnExecuteData> {\r\n    if (!this.onExecuteSubject) {\r\n      this.onExecuteSubject = new Subject<OnExecuteData>();\r\n      this.onExecuteObservable = this.onExecuteSubject.asObservable();\r\n    }\r\n\r\n    return this.onExecuteObservable;\r\n  }\r\n\r\n  public get onExecuteError(): Observable<OnExecuteErrorData> {\r\n    if (!this.onExecuteErrorSubject) {\r\n      this.onExecuteErrorSubject = new Subject<OnExecuteErrorData>();\r\n      this.onExecuteErrorObservable = this.onExecuteErrorSubject.asObservable();\r\n    }\r\n\r\n    return this.onExecuteErrorObservable;\r\n  }\r\n\r\n  /**\r\n   * Executes the provided `action` with reCAPTCHA v3 API.\r\n   * Use the emitted token value for verification purposes on the backend.\r\n   *\r\n   * For more information about reCAPTCHA v3 actions and tokens refer to the official documentation at\r\n   * https://developers.google.com/recaptcha/docs/v3.\r\n   *\r\n   * @param {string} action the action to execute\r\n   * @returns {Observable<string>} an `Observable` that will emit the reCAPTCHA v3 string `token` value whenever ready.\r\n   * The returned `Observable` completes immediately after emitting a value.\r\n   */\r\n  public execute(action: string): Observable<string> {\r\n    const subject = new Subject<string>();\r\n    if (!this.grecaptcha) {\r\n      if (!this.actionBacklog) {\r\n        this.actionBacklog = [];\r\n      }\r\n\r\n      this.actionBacklog.push([action, subject]);\r\n    } else {\r\n      this.executeActionWithSubject(action, subject);\r\n    }\r\n\r\n    return subject.asObservable();\r\n  }\r\n\r\n  /** @internal */\r\n  private executeActionWithSubject(action: string, subject: Subject<string>): void {\r\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n    const onError = (error: any) => {\r\n      this.zone.run(() => {\r\n        subject.error(error);\r\n        if (this.onExecuteErrorSubject) {\r\n          // We don't know any better at this point, unfortunately, so have to resort to `any`\r\n          // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\r\n          this.onExecuteErrorSubject.next({ action, error });\r\n        }\r\n      });\r\n    };\r\n\r\n    this.zone.runOutsideAngular(() => {\r\n      try {\r\n        this.grecaptcha.execute(this.siteKey, { action }).then((token: string) => {\r\n          this.zone.run(() => {\r\n            subject.next(token);\r\n            subject.complete();\r\n            if (this.onExecuteSubject) {\r\n              this.onExecuteSubject.next({ action, token });\r\n            }\r\n          });\r\n        }, onError);\r\n      } catch (e) {\r\n        onError(e);\r\n      }\r\n    });\r\n  }\r\n\r\n  /** @internal */\r\n  private init() {\r\n    this.recaptchaLoader.ready.subscribe((value) => {\r\n      this.grecaptcha = value;\r\n      if (this.actionBacklog && this.actionBacklog.length > 0) {\r\n        this.actionBacklog.forEach(([action, subject]) => this.executeActionWithSubject(action, subject));\r\n        this.actionBacklog = undefined;\r\n      }\r\n    });\r\n  }\r\n}\r\n","import { NgModule } from \"@angular/core\";\r\n\r\nimport { ReCaptchaV3Service } from \"./recaptcha-v3.service\";\r\nimport { RecaptchaLoaderService } from \"./recaptcha-loader.service\";\r\n\r\n@NgModule({\r\n  providers: [ReCaptchaV3Service, RecaptchaLoaderService],\r\n})\r\nexport class RecaptchaV3Module {}\r\n","import { Directive, forwardRef, HostListener } from \"@angular/core\";\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\r\n\r\nimport { RecaptchaComponent } from \"./recaptcha.component\";\r\n\r\n@Directive({\r\n  providers: [\r\n    {\r\n      multi: true,\r\n      provide: NG_VALUE_ACCESSOR,\r\n      useExisting: forwardRef(() => RecaptchaValueAccessorDirective),\r\n    },\r\n  ],\r\n  selector: \"re-captcha[formControlName],re-captcha[formControl],re-captcha[ngModel]\",\r\n})\r\nexport class RecaptchaValueAccessorDirective implements ControlValueAccessor {\r\n  /** @internal */\r\n  private onChange: (value: string | null) => void;\r\n\r\n  /** @internal */\r\n  private onTouched: () => void;\r\n\r\n  private requiresControllerReset = false;\r\n\r\n  constructor(private host: RecaptchaComponent) {}\r\n\r\n  public writeValue(value: string): void {\r\n    if (!value) {\r\n      this.host.reset();\r\n    } else {\r\n      // In this case, it is most likely that a form controller has requested to write a specific value into the component.\r\n      // This isn't really a supported case - reCAPTCHA values are single-use, and, in a sense, readonly.\r\n      // What this means is that the form controller has recaptcha control state of X, while reCAPTCHA itself can't \"restore\"\r\n      // to that state. In order to make form controller aware of this discrepancy, and to fix the said misalignment,\r\n      // we'll be telling the controller to \"reset\" the value back to null.\r\n      if (this.host.__unsafe_widgetValue !== value && Boolean(this.host.__unsafe_widgetValue) === false) {\r\n        this.requiresControllerReset = true;\r\n      }\r\n    }\r\n  }\r\n\r\n  public registerOnChange(fn: (value: string) => void): void {\r\n    this.onChange = fn;\r\n    if (this.requiresControllerReset) {\r\n      this.requiresControllerReset = false;\r\n      this.onChange(null);\r\n    }\r\n  }\r\n  public registerOnTouched(fn: () => void): void {\r\n    this.onTouched = fn;\r\n  }\r\n\r\n  @HostListener(\"resolved\", [\"$event\"]) public onResolve($event: string): void {\r\n    if (this.onChange) {\r\n      this.onChange($event);\r\n    }\r\n    if (this.onTouched) {\r\n      this.onTouched();\r\n    }\r\n  }\r\n}\r\n","import { NgModule } from \"@angular/core\";\r\nimport { FormsModule } from \"@angular/forms\";\r\n\r\nimport { RecaptchaCommonModule } from \"./recaptcha-common.module\";\r\nimport { RecaptchaValueAccessorDirective } from \"./recaptcha-value-accessor.directive\";\r\n\r\n@NgModule({\r\n  declarations: [RecaptchaValueAccessorDirective],\r\n  exports: [RecaptchaValueAccessorDirective],\r\n  imports: [FormsModule, RecaptchaCommonModule],\r\n})\r\nexport class RecaptchaFormsModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.RecaptchaComponent"],"mappings":"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"}