{"version":3,"file":"ng-recaptcha-2.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/index.ts","../../../projects/ng-recaptcha/src/ng-recaptcha-2.ts"],"sourcesContent":["import { InjectionToken } from \"@angular/core\";\n\nimport { RecaptchaSettings } from \"./recaptcha-settings\";\n\n/** @deprecated Use `LOADER_OPTIONS` instead. See `RecaptchaLoaderOptions.onBeforeLoad` */\nexport const RECAPTCHA_LANGUAGE = new InjectionToken<string>(\"recaptcha-language\");\n/** @deprecated Use `LOADER_OPTIONS` instead. See `RecaptchaLoaderOptions.onBeforeLoad` */\nexport const RECAPTCHA_BASE_URL = new InjectionToken<string>(\"recaptcha-base-url\");\n/** @deprecated Use `LOADER_OPTIONS` instead. See `RecaptchaLoaderOptions.onBeforeLoad` */\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\n/**\n * Specifies the options for loading the reCAPTCHA script tag.\n */\nexport type RecaptchaLoaderOptions = {\n  /**\n   * Invoked before the `<script>` tag is appended to the DOM.\n   * Use this function as an opportunity to set `nonce`, as well as modify the URL of the tag.\n   *\n   * Use the `url.searchParams` to set additional query string attributes (including reCAPTCHA language),\n   * or use an entirely different base URL altogether.\n   *\n   * The URL that you provide will then properly set the `\"render\"` and `\"onload\"` attributes which are required for proper `ng-recaptcha` wire-up.\n   *\n   * @param url the current URL that was composed. Either modify it in-place, or return a completely new URL.\n   * @returns the final URL that is going to be used as the `src` for the `<script>` tag, along with (optionally) a nonce.\n   *\n   * @example\n   * Provide nonce:\n   * ```ts\n   * {\n   *    provide: RECAPTCHA_LOADER_OPTIONS,\n   *    useValue: {\n   *      onBeforeLoad(url) {\n   *        return {\n   *          url,\n   *          nonce: \"YOUR_NONCE\"\n   *        };\n   *      }\n   *    }\n   * }\n   * ```\n   *\n   * Set the reCAPTCHA language:\n   * ```ts\n   * {\n   *    provide: RECAPTCHA_LOADER_OPTIONS,\n   *    useValue: {\n   *      onBeforeLoad(url) {\n   *        url.searchParams.set(\"hl\", \"en-GB\")\n   *\n   *        return { url };\n   *      }\n   *    }\n   * }\n   * ```\n   *\n   * Use a different base URL for loading reCAPTCHA\n   * ```ts\n   * {\n   *    provide: RECAPTCHA_LOADER_OPTIONS,\n   *    useValue: {\n   *      onBeforeLoad(_url) {\n   *        const chinaCompatibleUrl = new URL(\"https://www.recaptcha.net/recaptcha/api.js\");\n   *        // optionally, set the locale:\n   *        // chinaCompatibleUrl.searchParams.set(\"hl\", \"zh-CN\");\n   *\n   *        return {\n   *          url: chinaCompatibleUrl\n   *        };\n   *      }\n   *    }\n   * }\n   * ```\n   */\n  onBeforeLoad?(url: URL): { url: URL; nonce?: string };\n\n  /**\n   * Allows you to change the `grecaptcha` that the `ng-recaptcha` will be relying on.\n   * This method is useful when you need to use `grecaptcha.enterprise` instead of the base `grecaptcha`\n   *\n   * @param recaptcha the value of `window.grecaptcha` upon script load.\n   * @returns the {ReCaptchaV2.ReCaptcha} instance that the `ng-recaptcha` lib will use.\n   *\n   * @example\n   * Using the Enterprise version of `grecaptcha`:\n   *\n   * ```ts\n   * {\n   *    provide: RECAPTCHA_LOADER_OPTIONS,\n   *    useValue: {\n   *      onBeforeLoad() {\n   *        const recaptchaEnterpriseUrl = new URL(\"https://www.google.com/recaptcha/enterprise.js\");\n   *        // optionally, if you're using the reCAPTCHA session-tokens, set the `&waf=session` param,\n   *        // see https://cloud.google.com/recaptcha-enterprise/docs/implement-waf-ca#session-token\n   *        // recaptchaEnterpriseUrl.searchParams.set(\"waf\", \"session\");\n   *\n   *        return {\n   *          url: recaptchaEnterpriseUrl,\n   *        }\n   *      },\n   *      onLoaded(recaptcha) {\n   *        return recaptcha.enterprise;\n   *      }\n   *    }\n   * }\n   * ```\n   */\n  onLoaded?(recaptcha: ReCaptchaV2.ReCaptcha): ReCaptchaV2.ReCaptcha;\n};\n\n/**\n * See the documentation for `RecaptchaLoaderOptions`.\n */\nexport const RECAPTCHA_LOADER_OPTIONS = new InjectionToken<RecaptchaLoaderOptions>(\"recaptcha-loader-options\");\n","import { RecaptchaLoaderOptions } from \"./tokens\";\n\ndeclare global {\n  interface Window {\n    ng2recaptchaloaded?(): void;\n  }\n}\n\nexport type RenderMode = \"explicit\" | { key: string };\n\nfunction loadScript(\n  this: void,\n  renderMode: RenderMode,\n  onBeforeLoad: (url: URL) => { url: URL; nonce?: string },\n  onLoaded: (grecaptcha: ReCaptchaV2.ReCaptcha) => void,\n  { url, lang, nonce }: { url?: string; lang?: string; nonce?: string } = {},\n): void {\n  window.ng2recaptchaloaded = () => {\n    onLoaded(grecaptcha);\n  };\n  const script = document.createElement(\"script\");\n  script.innerHTML = \"\";\n\n  const { url: baseUrl, nonce: onBeforeLoadNonce } = onBeforeLoad(\n    new URL(url || \"https://www.google.com/recaptcha/api.js\"),\n  );\n  baseUrl.searchParams.set(\"render\", renderMode === \"explicit\" ? renderMode : renderMode.key);\n  baseUrl.searchParams.set(\"onload\", \"ng2recaptchaloaded\");\n  baseUrl.searchParams.set(\"trustedtypes\", \"true\");\n  if (lang) {\n    baseUrl.searchParams.set(\"hl\", lang);\n  }\n\n  script.src = baseUrl.href;\n\n  const nonceValue = onBeforeLoadNonce || nonce;\n\n  if (nonceValue) {\n    script.setAttribute(\"nonce\", nonceValue);\n  }\n  script.async = true;\n  script.defer = true;\n  document.head.appendChild(script);\n}\n\nfunction newLoadScript(this:void, {\n  v3SiteKey,\n  onBeforeLoad,\n  onLoaded,\n}: { v3SiteKey: string | undefined; onLoaded(recaptcha: ReCaptchaV2.ReCaptcha): void } & Pick<\n  Required<RecaptchaLoaderOptions>,\n  \"onBeforeLoad\"\n>) {\n  const renderMode: RenderMode = v3SiteKey ? { key: v3SiteKey } : \"explicit\";\n\n  loader.loadScript(renderMode, onBeforeLoad, onLoaded);\n}\n\nexport const loader = { loadScript, newLoadScript };\n","import { isPlatformBrowser } from \"@angular/common\";\nimport { Inject, Injectable, Optional, PLATFORM_ID } from \"@angular/core\";\nimport { BehaviorSubject, Observable, of } from \"rxjs\";\nimport { filter } from \"rxjs/operators\";\n\nimport { loader } from \"./load-script\";\nimport {\n  RECAPTCHA_LOADER_OPTIONS,\n  RECAPTCHA_BASE_URL,\n  RECAPTCHA_LANGUAGE,\n  RECAPTCHA_NONCE,\n  RECAPTCHA_V3_SITE_KEY,\n  RecaptchaLoaderOptions,\n} from \"./tokens\";\n\nfunction toNonNullObservable<T>(subject: BehaviorSubject<T | null>): Observable<T> {\n  return subject.asObservable().pipe(filter((value) => value !== null));\n}\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  /** @internal */\n  private options?: RecaptchaLoaderOptions;\n\n  constructor(\n    // eslint-disable-next-line @typescript-eslint/ban-types\n    @Inject(PLATFORM_ID) private readonly platformId: Object,\n    // eslint-disable-next-line deprecation/deprecation\n    @Optional() @Inject(RECAPTCHA_LANGUAGE) language?: string,\n    // eslint-disable-next-line deprecation/deprecation\n    @Optional() @Inject(RECAPTCHA_BASE_URL) baseUrl?: string,\n    // eslint-disable-next-line deprecation/deprecation\n    @Optional() @Inject(RECAPTCHA_NONCE) nonce?: string,\n    @Optional() @Inject(RECAPTCHA_V3_SITE_KEY) v3SiteKey?: string,\n    @Optional() @Inject(RECAPTCHA_LOADER_OPTIONS) options?: RecaptchaLoaderOptions,\n  ) {\n    this.language = language;\n    this.baseUrl = baseUrl;\n    this.nonce = nonce;\n    this.v3SiteKey = v3SiteKey;\n    this.options = options;\n    const subject = this.init();\n    this.ready = subject ? toNonNullObservable(subject) : of();\n  }\n\n  /** @internal */\n  private init(): BehaviorSubject<ReCaptchaV2.ReCaptcha | null> | undefined {\n    if (RecaptchaLoaderService.ready) {\n      return RecaptchaLoaderService.ready;\n    }\n\n    if (!isPlatformBrowser(this.platformId)) {\n      return undefined;\n    }\n\n    const subject = new BehaviorSubject<ReCaptchaV2.ReCaptcha | null>(null);\n    RecaptchaLoaderService.ready = subject;\n\n    loader.newLoadScript({\n      v3SiteKey: this.v3SiteKey,\n      onBeforeLoad: (url) => {\n        if (this.options?.onBeforeLoad) {\n          return this.options.onBeforeLoad(url);\n        }\n\n        const newUrl = new URL(this.baseUrl ?? url);\n\n        if (this.language) {\n          newUrl.searchParams.set(\"hl\", this.language);\n        }\n\n        return {\n          url: newUrl,\n          nonce: this.nonce,\n        };\n      },\n      onLoaded: (recaptcha) => {\n        let value = recaptcha;\n        if (this.options?.onLoaded) {\n          value = this.options.onLoaded(recaptcha);\n        }\n\n        subject.next(value);\n      },\n    });\n\n    return subject;\n  }\n}\n","import {\n  AfterViewInit,\n  Component,\n  ElementRef,\n  HostBinding,\n  Inject,\n  model,\n  NgZone,\n  OnDestroy,\n  Optional,\n  output,\n  ChangeDetectionStrategy,\n} from \"@angular/core\";\nimport { Subscription } from \"rxjs\";\n\nimport { RecaptchaLoaderService } from \"./recaptcha-loader.service\";\nimport { RecaptchaSettings } from \"./recaptcha-settings\";\nimport { RECAPTCHA_SETTINGS } from \"./tokens\";\n\nlet nextId = 0;\n\nexport type NeverUndefined<T> = T extends undefined ? never : T;\n\nexport type RecaptchaErrorParameters = Parameters<NeverUndefined<ReCaptchaV2.Parameters[\"error-callback\"]>>;\n\n@Component({\n  exportAs: \"reCaptcha\",\n  selector: \"re-captcha\",\n  template: ``,\n  changeDetection: ChangeDetectionStrategy.Eager,\n  standalone: false,\n})\nexport class RecaptchaComponent implements AfterViewInit, OnDestroy {\n  @HostBinding(\"attr.id\")\n  public id = model<string>(`ngrecaptcha-${nextId++}`);\n\n  public siteKey = model<string>();\n  public theme = model<ReCaptchaV2.Theme>();\n  public type = model<ReCaptchaV2.Type>();\n  public size = model<ReCaptchaV2.Size>();\n  public tabIndex = model<number>();\n  public badge = model<ReCaptchaV2.Badge>();\n  public errorMode = model<\"handled\" | \"default\">(\"default\");\n\n  public resolved = output<string | null>();\n  /**\n   * @deprecated `(error) output will be removed in the next major version. Use (errored) instead\n   */\n  // eslint-disable-next-line @angular-eslint/no-output-native\n  public error = output<RecaptchaErrorParameters>();\n  public errored = output<RecaptchaErrorParameters>();\n\n  /** @internal */\n  private subscription: Subscription | undefined;\n  /** @internal */\n  private widget: number | null = null;\n  /** @internal */\n  private grecaptcha: ReCaptchaV2.ReCaptcha | undefined;\n  /** @internal */\n  private executeRequested: boolean = false;\n\n  constructor(\n    private elementRef: ElementRef<HTMLElement>,\n    private loader: RecaptchaLoaderService,\n    private zone: NgZone,\n    @Optional() @Inject(RECAPTCHA_SETTINGS) settings?: RecaptchaSettings,\n  ) {\n    if (settings) {\n      this.siteKey.set(settings.siteKey);\n      if (settings.theme) {\n        this.theme.set(settings.theme);\n      }\n      if (settings.type) {\n        this.type.set(settings.type);\n      }\n      if (settings.size) {\n        this.size.set(settings.size);\n      }\n      if (settings.badge) {\n        this.badge.set(settings.badge);\n      }\n    }\n  }\n\n  public ngAfterViewInit(): void {\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  public 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    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  public execute(): void {\n    if (this.size() !== \"invisible\") {\n      return;\n    }\n\n    if (this.widget != null) {\n      void 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(null);\n      }\n\n      this.grecaptchaReset();\n    }\n  }\n\n  /**\n   * ⚠️ Warning! Use this property at your own risk!\n   *\n   * While this member is `public`, it is not a part of the component's public API.\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.\n   * You are **strongly advised** against using this property.\n   * Instead, use more idiomatic ways to get reCAPTCHA value, such as `resolved` EventEmitter, or form-bound methods (ngModel, formControl, and the likes).å\n   */\n  public get __unsafe_widgetValue(): string | null {\n    return this.widget != null && this.grecaptcha ? this.grecaptcha.getResponse(this.widget) : null;\n  }\n\n  /** @internal */\n  private expired() {\n    this.resolved.emit(null);\n  }\n\n  /** @internal */\n  private onError(args: RecaptchaErrorParameters) {\n    // eslint-disable-next-line deprecation/deprecation\n    this.error.emit(args);\n    this.errored.emit(args);\n  }\n\n  /** @internal */\n  private captchaResponseCallback(response: string) {\n    this.resolved.emit(response);\n  }\n\n  /** @internal */\n  private grecaptchaReset() {\n    this.zone.runOutsideAngular(() => this.widget && this.grecaptcha?.reset(this.widget));\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.onError(args));\n      };\n    }\n\n    this.widget = this.grecaptcha?.render(this.elementRef.nativeElement, renderOptions) ?? null;\n\n    if (this.executeRequested === true) {\n      this.executeRequested = false;\n      this.execute();\n    }\n  }\n}\n","import { NgModule } from \"@angular/core\";\n\nimport { RecaptchaComponent } from \"./recaptcha.component\";\n\n@NgModule({\n  declarations: [RecaptchaComponent],\n  exports: [RecaptchaComponent],\n})\nexport class RecaptchaCommonModule {}\n","import { NgModule } from \"@angular/core\";\n\nimport { RecaptchaCommonModule } from \"./recaptcha-common.module\";\nimport { RecaptchaLoaderService } from \"./recaptcha-loader.service\";\nimport { RecaptchaComponent } from \"./recaptcha.component\";\n\n@NgModule({\n  exports: [RecaptchaComponent],\n  imports: [RecaptchaCommonModule],\n  providers: [RecaptchaLoaderService],\n})\nexport class RecaptchaModule {}\n","import { Inject, Injectable, NgZone } from \"@angular/core\";\nimport { Observable, Subject } from \"rxjs\";\n\nimport { RECAPTCHA_V3_SITE_KEY } from \"./tokens\";\nimport { RecaptchaLoaderService } from \"./recaptcha-loader.service\";\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 siteKey: string;\n  /** @internal */\n  private readonly zone: NgZone;\n  /** @internal */\n  private actionBacklog: ActionBacklogEntry[] | undefined;\n  /** @internal */\n  private grecaptcha: ReCaptchaV2.ReCaptcha | undefined;\n\n  /** @internal */\n  private onExecuteSubject: Subject<OnExecuteData> | undefined;\n  /** @internal */\n  private onExecuteErrorSubject: Subject<OnExecuteErrorData> | undefined;\n  /** @internal */\n  private onExecuteObservable: Observable<OnExecuteData> | undefined;\n  /** @internal */\n  private onExecuteErrorObservable: Observable<OnExecuteErrorData> | undefined;\n\n  constructor(\n    zone: NgZone,\n    public recaptchaLoader: RecaptchaLoaderService,\n    @Inject(RECAPTCHA_V3_SITE_KEY) siteKey: string,\n  ) {\n    this.zone = zone;\n    this.siteKey = siteKey;\n\n    this.init();\n  }\n\n  public get onExecute(): Observable<OnExecuteData> {\n    if (!this.onExecuteSubject || !this.onExecuteObservable) {\n      this.onExecuteSubject = new Subject<OnExecuteData>();\n      this.onExecuteObservable = this.onExecuteSubject.asObservable();\n    }\n\n    return this.onExecuteObservable;\n  }\n\n  public get onExecuteError(): Observable<OnExecuteErrorData> {\n    if (!this.onExecuteErrorSubject || !this.onExecuteErrorObservable) {\n      this.onExecuteErrorSubject = new Subject<OnExecuteErrorData>();\n      this.onExecuteErrorObservable = this.onExecuteErrorSubject.asObservable();\n    }\n\n    return 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.grecaptcha) {\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    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    this.recaptchaLoader.ready.subscribe((value) => {\n      this.grecaptcha = value;\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}\n","import { NgModule } from \"@angular/core\";\n\nimport { ReCaptchaV3Service } from \"./recaptcha-v3.service\";\nimport { RecaptchaLoaderService } from \"./recaptcha-loader.service\";\n\n@NgModule({\n  providers: [ReCaptchaV3Service, RecaptchaLoaderService],\n})\nexport class RecaptchaV3Module {}\n","import { Directive, forwardRef, OnDestroy } from \"@angular/core\";\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\n\nimport { RecaptchaComponent } from \"./recaptcha.component\";\nimport { Subscription } from \"rxjs\";\n\n@Directive({\n  providers: [\n    {\n      multi: true,\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => RecaptchaValueAccessorDirective),\n    },\n  ],\n  selector: \"re-captcha[formControlName],re-captcha[formControl],re-captcha[ngModel]\",\n  standalone: false,\n})\nexport class RecaptchaValueAccessorDirective implements ControlValueAccessor, OnDestroy {\n  /** @internal */\n  private onChange: undefined | ((value: string | null) => void);\n\n  /** @internal */\n  private onTouched: (() => void) | undefined;\n\n  private requiresControllerReset = false;\n  private subscription = new Subscription();\n\n  constructor(private host: RecaptchaComponent) {\n    this.subscription.add(\n      host.resolved.subscribe((value: string | null) => {\n        this.onResolve(value);\n      }),\n    );\n  }\n\n  public writeValue(value: string): void {\n    if (!value) {\n      this.host.reset();\n    } else {\n      // In this case, it is most likely that a form controller has requested to write a specific value into the component.\n      // This isn't really a supported case - reCAPTCHA values are single-use, and, in a sense, readonly.\n      // What this means is that the form controller has recaptcha control state of X, while reCAPTCHA itself can't \"restore\"\n      // to that state. In order to make form controller aware of this discrepancy, and to fix the said misalignment,\n      // we'll be telling the controller to \"reset\" the value back to null.\n      if (this.host.__unsafe_widgetValue !== value && Boolean(this.host.__unsafe_widgetValue) === false) {\n        this.requiresControllerReset = true;\n      }\n    }\n  }\n\n  public registerOnChange(fn: (value: string | null) => void): void {\n    this.onChange = fn;\n    if (this.requiresControllerReset) {\n      this.requiresControllerReset = false;\n      this.onChange(null);\n    }\n  }\n  public registerOnTouched(fn: () => void): void {\n    this.onTouched = fn;\n  }\n\n  public onResolve($event: string | null): void {\n    if (this.onChange) {\n      this.onChange($event);\n    }\n    if (this.onTouched) {\n      this.onTouched();\n    }\n  }\n\n  ngOnDestroy(): void {\n    this.subscription.unsubscribe();\n  }\n}\n","import { NgModule } from \"@angular/core\";\nimport { FormsModule } from \"@angular/forms\";\n\nimport { RecaptchaCommonModule } from \"./recaptcha-common.module\";\nimport { RecaptchaValueAccessorDirective } from \"./recaptcha-value-accessor.directive\";\n\n@NgModule({\n  declarations: [RecaptchaValueAccessorDirective],\n  exports: [RecaptchaValueAccessorDirective],\n  imports: [FormsModule, RecaptchaCommonModule],\n})\nexport class RecaptchaFormsModule {}\n","/// <reference types=\"grecaptcha\" preserve=\"true\"/>\n\nexport { RecaptchaComponent, RecaptchaErrorParameters } from \"./lib/recaptcha.component\";\nexport { RecaptchaLoaderService } from \"./lib/recaptcha-loader.service\";\nexport { RecaptchaModule } from \"./lib/recaptcha.module\";\nexport { RecaptchaSettings } from \"./lib/recaptcha-settings\";\n\nexport { RecaptchaV3Module } from \"./lib/recaptcha-v3.module\";\nexport { OnExecuteData, OnExecuteErrorData, ReCaptchaV3Service } from \"./lib/recaptcha-v3.service\";\n\nexport { RecaptchaFormsModule } from \"./lib/recaptcha-forms.module\";\nexport { RecaptchaValueAccessorDirective } from \"./lib/recaptcha-value-accessor.directive\";\n\nexport {\n  // eslint-disable-next-line deprecation/deprecation\n  RECAPTCHA_LANGUAGE,\n  // eslint-disable-next-line deprecation/deprecation\n  RECAPTCHA_BASE_URL,\n  // eslint-disable-next-line deprecation/deprecation\n  RECAPTCHA_NONCE,\n  RECAPTCHA_SETTINGS,\n  RECAPTCHA_V3_SITE_KEY,\n  RECAPTCHA_LOADER_OPTIONS,\n  RecaptchaLoaderOptions,\n} from \"./lib/tokens\";\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.RecaptchaComponent"],"mappings":"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"}