{"version":3,"file":"achimha-ngx-captcha.mjs","sources":["../../src/lib/services/script.service.ts","../../src/lib/components/base-re-captcha-component.directive.ts","../../src/lib/models/recaptcha-type.enum.ts","../../src/lib/components/invisible-recaptcha.component.ts","../../src/lib/components/recaptcha-2.component.ts","../../src/lib/services/recaptcha_v3.service.ts","../../src/lib/ngx-captcha.module.ts","../../src/public_api.ts","../../src/achimha-ngx-captcha.ts"],"sourcesContent":["import { Injectable, NgZone } from \"@angular/core\";\nimport { RecaptchaConfiguration } from \"../models/recaptcha-configuration\";\n\n@Injectable({\n  providedIn: \"root\",\n})\nexport class ScriptService {\n  private readonly scriptElemId: string = \"ngx-catpcha-script\";\n\n  /**\n   * Name of the global google recaptcha script\n   */\n  protected readonly windowGrecaptcha = \"grecaptcha\";\n\n  /**\n   * Name of enterpise property in the global google recaptcha script\n   */\n  protected readonly windowGrecaptchaEnterprise = \"enterprise\";\n\n  /**\n   * Name of the global callback\n   */\n  protected readonly windowOnLoadCallbackProperty =\n    \"ngx_captcha_onload_callback\";\n\n  /**\n   * Name of the global callback for enterprise\n   */\n  protected readonly windowOnLoadEnterpriseCallbackProperty =\n    \"ngx_captcha_onload_enterprise_callback\";\n\n  protected readonly globalDomain: string = \"recaptcha.net\";\n\n  protected readonly defaultDomain: string = \"google.com\";\n\n  protected readonly enterpriseApi: string = \"enterprise.js\";\n\n  protected readonly defaultApi: string = \"api.js\";\n\n  constructor(protected zone: NgZone) {}\n\n  registerCaptchaScript(\n    config: RecaptchaConfiguration,\n    render: string,\n    onLoad: (grecaptcha: any) => void,\n    language?: string\n  ): void {\n    if (this.grecaptchaScriptLoaded(config.useEnterprise)) {\n      // recaptcha script is already loaded\n      // just call the callback\n      if (config.useEnterprise) {\n        this.zone.run(() => {\n          onLoad(\n            (window as any)[this.windowGrecaptcha][\n              this.windowGrecaptchaEnterprise\n            ]\n          );\n        });\n      } else {\n        this.zone.run(() => {\n          onLoad((window as any)[this.windowGrecaptcha]);\n        });\n      }\n      return;\n    }\n\n    // we need to patch the callback through global variable, otherwise callback is not accessible\n    // note: https://github.com/Enngage/ngx-captcha/issues/2\n    if (config.useEnterprise) {\n      (window as any)[this.getCallbackName(true)] = <any>(\n        (() =>\n          this.zone.run(\n            onLoad.bind(\n              this,\n              (window as any)[this.windowGrecaptcha][\n                this.windowGrecaptchaEnterprise\n              ]\n            )\n          ))\n      );\n    } else {\n      (window as any)[this.getCallbackName(false)] = <any>(\n        (() =>\n          this.zone.run(\n            onLoad.bind(this, (window as any)[this.windowGrecaptcha])\n          ))\n      );\n    }\n\n    // prepare script elem\n    const scriptElem = document.createElement(\"script\");\n    scriptElem.id = this.scriptElemId;\n    scriptElem.innerHTML = \"\";\n    scriptElem.src = this.getCaptchaScriptUrl(config, render, language);\n    scriptElem.async = true;\n    scriptElem.defer = true;\n\n    // add script to header\n    document.getElementsByTagName(\"head\")[0].appendChild(scriptElem);\n  }\n\n  cleanup(): void {\n    const elem = document.getElementById(this.scriptElemId);\n\n    if (elem) {\n      elem.remove();\n    }\n    (window as any)[this.getCallbackName()] = undefined;\n    (window as any)[this.windowGrecaptcha] = undefined;\n  }\n\n  /**\n   * Indicates if google recaptcha script is available and ready to be used\n   */\n  private grecaptchaScriptLoaded(useEnterprise?: boolean): boolean {\n    if (\n      !(window as any)[this.getCallbackName(useEnterprise)] ||\n      !(window as any)[this.windowGrecaptcha]\n    ) {\n      return false;\n    } else if (\n      useEnterprise &&\n      (window as any)[this.windowGrecaptcha][this.windowGrecaptchaEnterprise]\n    ) {\n      return true;\n      // if only enterprise script is loaded we need to check some v3's method\n    } else if ((window as any)[this.windowGrecaptcha].execute) {\n      return true;\n    }\n    return false;\n  }\n\n  /**\n   * Gets global callback name\n   * @param useEnterprise Optional flag for enterprise script\n   * @private\n   */\n  private getCallbackName(useEnterprise?: boolean): string {\n    return useEnterprise\n      ? this.windowOnLoadEnterpriseCallbackProperty\n      : this.windowOnLoadCallbackProperty;\n  }\n\n  /**\n   * Gets language param used in script url\n   */\n  private getLanguageParam(hl?: string): string {\n    if (!hl) {\n      return \"\";\n    }\n\n    return `&hl=${hl}`;\n  }\n\n  /**\n   * Url to google api script\n   */\n  private getCaptchaScriptUrl(\n    config: RecaptchaConfiguration,\n    render: string,\n    language?: string\n  ): string {\n    const domain = config.useGlobalDomain\n      ? this.globalDomain\n      : this.defaultDomain;\n    const api = config.useEnterprise ? this.enterpriseApi : this.defaultApi;\n    const callback = this.getCallbackName(config.useEnterprise);\n\n    return `https://www.${domain}/recaptcha/${api}?onload=${callback}&render=${render}${this.getLanguageParam(\n      language\n    )}`;\n  }\n}\n","import {\n  AfterViewChecked,\n  AfterViewInit,\n  Directive,\n  ElementRef,\n  EventEmitter,\n  Injector,\n  Input,\n  NgZone,\n  OnChanges,\n  Output,\n  Renderer2,\n  SimpleChanges,\n} from \"@angular/core\";\nimport {\n  AbstractControl,\n  ControlValueAccessor,\n  NgControl,\n} from \"@angular/forms\";\n\nimport { ReCaptchaType } from \"../models/recaptcha-type.enum\";\nimport { ScriptService } from \"../services/script.service\";\n\n@Directive()\nexport abstract class BaseReCaptchaComponentDirective\n  implements OnChanges, ControlValueAccessor, AfterViewInit, AfterViewChecked\n{\n  /**\n   * Prefix of the captcha element\n   */\n  protected readonly captchaElemPrefix = \"ngx_captcha_id_\";\n\n  private setupCaptcha: boolean = true;\n\n  /**\n   * Google's site key.\n   * You can find this under https://www.google.com/recaptcha\n   */\n  @Input() siteKey?: string;\n\n  /**\n   * Indicates if global domain 'recaptcha.net' should be used instead of default domain ('google.com')\n   */\n  @Input() useGlobalDomain: boolean = false;\n\n  @Input() useEnterprise: boolean = false;\n\n  /**\n   * Type\n   */\n  @Input() type: \"audio\" | \"image\" = \"image\";\n\n  /**\n   * Language code. Auto-detects the user's language if unspecified.\n   */\n  @Input() hl?: string;\n\n  /**\n   * Tab index\n   */\n  @Input() tabIndex = 0;\n\n  /**\n   * Called when captcha receives successful response.\n   * Captcha response token is passed to event.\n   */\n  @Output() success = new EventEmitter<string>();\n\n  /**\n   * Called when captcha is loaded. Event receives id of the captcha\n   */\n  @Output() load = new EventEmitter<void>();\n\n  /**\n   * Called when captcha is reset.\n   */\n  @Output() reset = new EventEmitter<void>();\n\n  /**\n   * Called when captcha is loaded & ready. I.e. when you need to execute captcha on component load.\n   */\n  @Output() ready = new EventEmitter<void>();\n\n  /**\n   * Error callback\n   */\n  @Output() error = new EventEmitter<void>();\n\n  /**\n   * Expired callback\n   */\n  @Output() expire = new EventEmitter<void>();\n\n  abstract captchaWrapperElem?: ElementRef;\n\n  /**\n   * Indicates if captcha should be set on load\n   */\n  private setupAfterLoad = false;\n\n  /**\n   * Captcha element\n   */\n  protected captchaElem?: HTMLElement;\n\n  /**\n   * Id of the captcha elem\n   */\n  protected captchaId?: number;\n\n  /**\n   * Holds last response value\n   */\n  protected currentResponse?: string;\n\n  /**\n   * If enabled, captcha will reset after receiving success response. This is useful\n   * when invisible captcha need to be resolved multiple times on same page\n   */\n  protected resetCaptchaAfterSuccess = false;\n\n  /**\n   * Captcha type\n   */\n  protected abstract recaptchaType: ReCaptchaType;\n\n  /**\n   * Required by ControlValueAccessor\n   */\n  protected onChange: (value: string | undefined) => void = (val) => {};\n  protected onTouched: (value: string | undefined) => void = (val) => {};\n\n  /**\n   * Indicates if captcha is loaded\n   */\n  public isLoaded = false;\n\n  /**\n   * Reference to global reCaptcha API\n   */\n  public reCaptchaApi?: any;\n\n  /**\n   * Id of the DOM element wrapping captcha\n   */\n  public captchaElemId?: string;\n\n  /**\n   * Form Control to be enable usage in reactive forms\n   */\n  public control?: AbstractControl | null;\n\n  protected constructor(\n    protected renderer: Renderer2,\n    protected zone: NgZone,\n    protected injector: Injector,\n    protected scriptService: ScriptService\n  ) {}\n\n  ngAfterViewInit() {\n    this.control = this.injector.get<NgControl | undefined>(\n      NgControl,\n      undefined,\n      { optional: true }\n    )?.control;\n  }\n\n  ngAfterViewChecked(): void {\n    if (this.setupCaptcha) {\n      this.setupCaptcha = false;\n      this.setupComponent();\n    }\n  }\n\n  /**\n   * Gets reCaptcha properties\n   */\n  protected abstract getCaptchaProperties(): any;\n\n  /**\n   * Used for captcha specific setup\n   */\n  protected abstract captchaSpecificSetup(): void;\n\n  ngOnChanges(changes: SimpleChanges): void {\n    // cleanup scripts if language changed because they need to be reloaded\n    if (changes && changes.hl) {\n      // cleanup scripts when language changes\n      if (\n        !changes.hl.firstChange &&\n        changes.hl.currentValue !== changes.hl.previousValue\n      ) {\n        this.scriptService.cleanup();\n      }\n    }\n\n    if (changes && changes.useGlobalDomain) {\n      // cleanup scripts when domain changes\n      if (\n        !changes.useGlobalDomain.firstChange &&\n        changes.useGlobalDomain.currentValue !==\n          changes.useGlobalDomain.previousValue\n      ) {\n        this.scriptService.cleanup();\n      }\n    }\n\n    this.setupCaptcha = true;\n  }\n\n  /**\n   * Gets captcha response as per reCaptcha docs\n   */\n  getResponse(): string {\n    return this.reCaptchaApi.getResponse(this.captchaId);\n  }\n\n  /**\n   * Gets Id of captcha widget\n   */\n  getCaptchaId(): number | undefined {\n    return this.captchaId;\n  }\n\n  /**\n   * Resets captcha\n   */\n  resetCaptcha(): void {\n    this.zone.run(() => {\n      // reset captcha using Google js api\n      this.reCaptchaApi.reset();\n\n      // required due to forms\n      this.onChange(undefined);\n      this.onTouched(undefined);\n\n      // trigger reset event\n      this.reset.next();\n    });\n  }\n\n  /**\n   * Gets last submitted captcha response\n   */\n  getCurrentResponse(): string | undefined {\n    return this.currentResponse;\n  }\n\n  /**\n   * Reload captcha. Useful when properties (i.e. theme) changed and captcha need to reflect them\n   */\n  reloadCaptcha(): void {\n    this.setupComponent();\n  }\n\n  protected ensureCaptchaElem(captchaElemId: string): void {\n    const captchaElem = document.getElementById(captchaElemId);\n\n    if (!captchaElem) {\n      throw Error(`Captcha element with id '${captchaElemId}' was not found`);\n    }\n\n    // assign captcha alem\n    this.captchaElem = captchaElem;\n  }\n\n  /**\n   * Responsible for instantiating captcha element\n   */\n  protected renderReCaptcha(): void {\n    // run outside angular zone due to timeout issues when testing\n    // details: https://github.com/Enngage/ngx-captcha/issues/26\n    this.zone.runOutsideAngular(() => {\n      // to fix reCAPTCHA placeholder element must be an element or id\n      // https://github.com/Enngage/ngx-captcha/issues/96\n      setTimeout(() => {\n        this.captchaId = this.reCaptchaApi.render(\n          this.captchaElemId,\n          this.getCaptchaProperties()\n        );\n        this.ready.next();\n      }, 0);\n    });\n  }\n\n  /**\n   * Called when captcha receives response\n   * @param callback Callback\n   */\n  protected handleCallback(callback: any): void {\n    this.currentResponse = callback;\n    this.success.next(callback);\n\n    this.zone.run(() => {\n      this.onChange(callback);\n      this.onTouched(callback);\n    });\n\n    if (this.resetCaptchaAfterSuccess) {\n      this.resetCaptcha();\n    }\n  }\n\n  private getPseudoUniqueNumber(): number {\n    return new Date().getUTCMilliseconds() + Math.floor(Math.random() * 9999);\n  }\n\n  private setupComponent(): void {\n    // captcha specific setup\n    this.captchaSpecificSetup();\n\n    // create captcha wrapper\n    this.createAndSetCaptchaElem();\n\n    this.scriptService.registerCaptchaScript(\n      {\n        useGlobalDomain: this.useGlobalDomain,\n        useEnterprise: this.useEnterprise,\n      },\n      \"explicit\",\n      (grecaptcha) => {\n        this.onloadCallback(grecaptcha);\n      },\n      this.hl\n    );\n  }\n\n  /**\n   * Called when google's recaptcha script is ready\n   */\n  private onloadCallback(grecapcha: any): void {\n    // assign reference to reCaptcha Api once its loaded\n    this.reCaptchaApi = grecapcha;\n\n    if (!this.reCaptchaApi) {\n      throw Error(`ReCaptcha Api was not initialized correctly`);\n    }\n\n    // loaded flag\n    this.isLoaded = true;\n\n    // fire load event\n    this.load.next();\n\n    // render captcha\n    this.renderReCaptcha();\n\n    // setup component if it was flagged as such\n    if (this.setupAfterLoad) {\n      this.setupAfterLoad = false;\n      this.setupComponent();\n    }\n  }\n\n  private generateNewElemId(): string {\n    return this.captchaElemPrefix + this.getPseudoUniqueNumber();\n  }\n\n  private createAndSetCaptchaElem(): void {\n    // generate new captcha id\n    this.captchaElemId = this.generateNewElemId();\n\n    if (!this.captchaElemId) {\n      throw Error(`Captcha elem Id is not set`);\n    }\n\n    if (!this.captchaWrapperElem) {\n      throw Error(`Captcha DOM element is not initialized`);\n    }\n\n    // remove old html\n    this.captchaWrapperElem.nativeElement.innerHTML = \"\";\n\n    // create new wrapper for captcha\n    const newElem = this.renderer.createElement(\"div\");\n    newElem.id = this.captchaElemId;\n\n    this.renderer.appendChild(this.captchaWrapperElem.nativeElement, newElem);\n\n    // when use captcha in cdk stepper then throwing error Captcha element with id 'ngx_captcha_id_XXXX' not found\n    // to fix it checking ensureCaptchaElem in timeout so that its check in next call and its able to find element\n    setTimeout(() => {\n      // update captcha elem\n      if (this.captchaElemId) {\n        this.ensureCaptchaElem(this.captchaElemId);\n      }\n    }, 0);\n  }\n\n  /**\n   * To be aligned with the ControlValueAccessor interface we need to implement this method\n   * However as we don't want to update the recaptcha, this doesn't need to be implemented\n   */\n  public writeValue(obj: any): void {}\n\n  /**\n   * This method helps us tie together recaptcha and our formControl values\n   */\n  public registerOnChange(fn: any): void {\n    this.onChange = fn;\n  }\n\n  /**\n   * At some point we might be interested whether the user has touched our component\n   */\n  public registerOnTouched(fn: any): void {\n    this.onTouched = fn;\n  }\n\n  /**\n   * Handles error callback\n   */\n  protected handleErrorCallback(): void {\n    this.zone.run(() => {\n      this.onChange(undefined);\n      this.onTouched(undefined);\n    });\n\n    this.error.next();\n  }\n\n  /**\n   * Handles expired callback\n   */\n  protected handleExpireCallback(): void {\n    this.expire.next();\n\n    // reset captcha on expire callback\n    this.resetCaptcha();\n  }\n}\n","export enum ReCaptchaType {\n\n    InvisibleReCaptcha,\n    ReCaptcha2\n}\n","import {\n  Component,\n  ElementRef,\n  forwardRef,\n  Injector,\n  Input,\n  NgZone,\n  OnChanges,\n  Renderer2,\n  SimpleChanges,\n  ViewChild,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { ReCaptchaType } from '../models/recaptcha-type.enum';\nimport { ScriptService } from '../services/script.service';\nimport { BaseReCaptchaComponentDirective } from './base-re-captcha-component.directive';\n\n@Component({\n  selector: 'ngx-invisible-recaptcha',\n  template: `\n  <div #captchaWrapperElem></div>`,\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => InvisibleReCaptchaComponent),\n      multi: true,\n    }\n  ]\n})\nexport class InvisibleReCaptchaComponent extends BaseReCaptchaComponentDirective implements OnChanges {\n\n  /**\n   * This size representing invisible captcha\n   */\n  protected readonly size = 'invisible';\n\n  /**\n   * Theme\n   */\n  @Input() theme: 'dark' | 'light' = 'light';\n\n  /**\n   * Badge\n   */\n  @Input() badge: 'bottomright' | 'bottomleft' | 'inline' = 'bottomright';\n\n  @ViewChild('captchaWrapperElem', { static: false }) captchaWrapperElem?: ElementRef;\n\n  protected recaptchaType: ReCaptchaType = ReCaptchaType.InvisibleReCaptcha;\n\n  constructor(\n    protected renderer: Renderer2,\n    protected zone: NgZone,\n    protected injector: Injector,\n    protected scriptService: ScriptService\n  ) {\n    super(renderer, zone, injector, scriptService);\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    super.ngOnChanges(changes);\n  }\n\n  /**\n   * Programatically invoke the reCAPTCHA check. Used if the invisible reCAPTCHA is on a div instead of a button.\n   */\n  execute(): void {\n    // execute captcha\n    this.zone.runOutsideAngular(() => this.reCaptchaApi.execute(this.captchaId));\n  }\n\n  protected captchaSpecificSetup(): void {\n  }\n\n  /**\n  * Gets reCaptcha properties\n  */\n  protected getCaptchaProperties(): any {\n    return {\n      'sitekey': this.siteKey,\n      'callback': (response: any) => this.zone.run(() => this.handleCallback(response)),\n      'expired-callback': () => this.zone.run(() => this.handleExpireCallback()),\n      'error-callback': () => this.zone.run(() => this.handleErrorCallback()),\n      'badge': this.badge,\n      'type': this.type,\n      'tabindex': this.tabIndex,\n      'size': this.size,\n      'theme': this.theme\n    };\n  }\n\n\n}\n\n","import {\n  Component,\n  ElementRef,\n  forwardRef,\n  Injector,\n  Input,\n  NgZone,\n  OnChanges,\n  OnDestroy,\n  Renderer2,\n  SimpleChanges,\n  ViewChild,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { ReCaptchaType } from '../models/recaptcha-type.enum';\nimport { ScriptService } from '../services/script.service';\nimport { BaseReCaptchaComponentDirective } from './base-re-captcha-component.directive';\n\n@Component({\n  selector: 'ngx-recaptcha2',\n  template: `\n  <div #captchaWrapperElem></div>`,\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => ReCaptcha2Component),\n      multi: true,\n    }\n  ]\n})\nexport class ReCaptcha2Component extends BaseReCaptchaComponentDirective implements OnChanges, OnDestroy {\n\n  /**\n  * Name of the global expire callback\n  */\n  protected readonly windowOnErrorCallbackProperty = 'ngx_captcha_error_callback';\n\n  /**\n  * Name of the global error callback\n  */\n  protected readonly windowOnExpireCallbackProperty = 'ngx_captcha_expire_callback';\n\n  /**\n   * Theme\n   */\n  @Input() theme: 'dark' | 'light' = 'light';\n\n  /**\n  * Size\n  */\n  @Input() size: 'compact' | 'normal' = 'normal';\n\n  @ViewChild('captchaWrapperElem', { static: false}) captchaWrapperElem?: ElementRef;\n\n  protected recaptchaType: ReCaptchaType = ReCaptchaType.ReCaptcha2;\n\n  constructor(\n    protected renderer: Renderer2,\n    protected zone: NgZone,\n    protected injector: Injector,\n    protected scriptService: ScriptService,\n  ) {\n    super(renderer, zone, injector, scriptService);\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    super.ngOnChanges(changes);\n  }\n\n  ngOnDestroy(): void {\n    (window as any)[this.windowOnErrorCallbackProperty] = {};\n    (window as any)[this.windowOnExpireCallbackProperty] = {};\n  }\n\n  protected captchaSpecificSetup(): void {\n    this.registerCallbacks();\n  }\n\n  /**\n   * Gets reCaptcha properties\n  */\n  protected getCaptchaProperties(): any {\n    return {\n      'sitekey': this.siteKey,\n      'callback': (response: any) => this.zone.run(() => this.handleCallback(response)),\n      'expired-callback': () => this.zone.run(() => this.handleExpireCallback()),\n      'error-callback': () => this.zone.run(() => this.handleErrorCallback()),\n      'theme': this.theme,\n      'type': this.type,\n      'size': this.size,\n      'tabindex': this.tabIndex\n    };\n  }\n\n  /**\n   * Registers global callbacks\n  */\n  private registerCallbacks(): void {\n    (window as any)[this.windowOnErrorCallbackProperty] = super.handleErrorCallback.bind(this);\n    (window as any)[this.windowOnExpireCallbackProperty] = super.handleExpireCallback.bind(this);\n  }\n}\n\n","import { Injectable, NgZone } from \"@angular/core\";\n\nimport { ScriptService } from \"./script.service\";\nimport { RecaptchaConfiguration } from \"../models/recaptcha-configuration\";\n\n@Injectable({\n  providedIn: \"root\",\n})\nexport class ReCaptchaV3Service {\n  constructor(protected scriptService: ScriptService, protected zone: NgZone) {}\n\n  /**\n   * Executes reCaptcha v3/Enterprise with given action and passes token via callback. You need to verify\n   * this callback in your backend to get meaningful results.\n   *\n   * For more information see https://developers.google.com/recaptcha/docs/v3\n   * For enterprise see https://cloud.google.com/recaptcha-enterprise/docs\n   *\n   * @param siteKey Site key found in your google admin panel\n   * @param action Action to log\n   * @param callback Callback function to to handle token\n   * @param config Optional configuration like useGlobalDomain to be provided\n   * @param errorCallback Optional Callback function to handle errors\n   */\n  execute(\n    siteKey: string,\n    action: string,\n    callback: (token: string) => void,\n    config?: RecaptchaConfiguration,\n    errorCallback?: (error: any) => void\n  ): void {\n    this.executeAsPromise(siteKey, action, config)\n      .then(callback)\n      .catch((error) =>\n        errorCallback ? errorCallback(error) : console.error(error)\n      );\n  }\n\n  /**\n   * Executes reCaptcha v3/Enterprise with given action and returns token via Promise. You need to verify\n   * this token in your backend to get meaningful results.\n   *\n   * For more information see https://developers.google.com/recaptcha/docs/v3\n   * For enterprise see https://cloud.google.com/recaptcha-enterprise/docs\n   *\n   * @param siteKey Site key found in your google admin panel\n   * @param action Action to log\n   * @param config Optional configuration like useGlobalDomain to be provided\n   */\n  executeAsPromise(\n    siteKey: string,\n    action: string,\n    config?: RecaptchaConfiguration\n  ): Promise<string> {\n    return new Promise((resolve, reject) => {\n      const configuration = config || {};\n\n      const onRegister = (grecaptcha: any) => {\n        this.zone.runOutsideAngular(() => {\n          try {\n            grecaptcha\n              .execute(siteKey, { action })\n              .then((token: any) => this.zone.run(() => resolve(token)));\n          } catch (error) {\n            reject(error);\n          }\n        });\n      };\n\n      this.scriptService.registerCaptchaScript(\n        configuration,\n        siteKey,\n        onRegister\n      );\n    });\n  }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { InvisibleReCaptchaComponent } from './components/invisible-recaptcha.component';\nimport { ReCaptcha2Component } from './components/recaptcha-2.component';\nimport { ReCaptchaV3Service } from './services/recaptcha_v3.service';\nimport { ScriptService } from './services/script.service';\n\n@NgModule({\n  imports: [\n    CommonModule\n  ],\n  declarations: [\n    ReCaptcha2Component,\n    InvisibleReCaptchaComponent\n  ],\n  providers: [\n    ScriptService,\n    ReCaptchaV3Service\n  ],\n  exports: [\n    ReCaptcha2Component,\n    InvisibleReCaptchaComponent\n  ]\n})\nexport class NgxCaptchaModule {\n}\n\n\n","/*\n * Public API\n */\n\nexport * from './lib/index';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1.ScriptService"],"mappings":"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"}