{"version":3,"file":"ng-hcaptcha-latest.mjs","sources":["../../../projects/ng-hcaptcha/src/lib/ng-hcaptcha-config.ts","../../../projects/ng-hcaptcha/src/lib/hcaptcha-utils.ts","../../../projects/ng-hcaptcha/src/lib/ng-hcaptcha.component.ts","../../../projects/ng-hcaptcha/src/lib/ng-hcaptcha-invisible-button.directive.ts","../../../projects/ng-hcaptcha/src/lib/ng-hcaptcha.service.ts","../../../projects/ng-hcaptcha/src/lib/ng-hcaptcha.module.ts","../../../projects/ng-hcaptcha/src/public_api.ts","../../../projects/ng-hcaptcha/src/ng-hcaptcha-latest.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\r\n\r\nexport interface CaptchaConfig {\r\n    /**\r\n     * The sitekey to use when no sitekey has been\r\n     * specified on the hcaptcha element.\r\n     */\r\n    siteKey?: string;\r\n    /**\r\n     * The language code to use instead of the\r\n     * language automatically detected by hCaptcha.\r\n     * @see {@link https://docs.hcaptcha.com/languages}\r\n     */\r\n    languageCode?: string;\r\n}\r\n\r\nexport const CAPTCHA_CONFIG = new InjectionToken<CaptchaConfig>('CAPTCHA_CONFIG');\r\n","import { Observable, Subscriber } from 'rxjs';\r\n\r\ndeclare const window: any;\r\n\r\n/**\r\n * Load the hCaptcha script by appending a script element to the head element.\r\n * The script won't be loaded again if it has already been loaded.\r\n * Async and defer are set to prevent blocking the renderer while loading hCaptcha.\r\n */\r\nexport function loadHCaptcha(languageCode?: string): Observable<void> {\r\n  return new Observable<void>((observer: Subscriber<void>) => {\r\n    // No window object (ssr)\r\n    if (!window) {\r\n      return;\r\n    }\r\n\r\n    // The hCaptcha script has already been loaded\r\n    if (typeof window.hcaptcha !== 'undefined') {\r\n      observer.next();\r\n      observer.complete();\r\n      return;\r\n    }\r\n\r\n    let src = 'https://hcaptcha.com/1/api.js?render=explicit';\r\n\r\n    // Set language code\r\n    if (languageCode) {\r\n      src += `&hl=${languageCode}`;\r\n    }\r\n\r\n    const script = document.createElement('script');\r\n    script.src = src;\r\n    script.async = true;\r\n    script.defer = true;\r\n    script.onerror = (e) => observer.error(e);\r\n    script.onload = () => {\r\n      observer.next();\r\n      observer.complete();\r\n    };\r\n    document.head.appendChild(script);\r\n  });\r\n}\r\n","import {\r\n  Component,\r\n  Input,\r\n  ViewChild,\r\n  ElementRef,\r\n  OnInit,\r\n  Inject,\r\n  NgZone,\r\n  Output,\r\n  EventEmitter,\r\n  forwardRef,\r\n  PLATFORM_ID,\r\n  OnDestroy\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { isPlatformBrowser, isPlatformServer } from '@angular/common';\r\nimport { Subscription } from 'rxjs';\r\nimport { CAPTCHA_CONFIG, CaptchaConfig } from './ng-hcaptcha-config';\r\nimport { loadHCaptcha } from './hcaptcha-utils';\r\n\r\ndeclare const window: any;\r\n\r\n@Component({\r\n  selector: 'ng-hcaptcha',\r\n  template: '<div #captcha class=\"h-captcha\"></div>',\r\n  styles: [],\r\n  providers: [\r\n    {\r\n      provide: NG_VALUE_ACCESSOR,\r\n      useExisting: forwardRef(() => NgHcaptchaComponent),\r\n      multi: true\r\n    }\r\n  ]\r\n})\r\nexport class NgHcaptchaComponent implements OnInit, OnDestroy, ControlValueAccessor {\r\n\r\n  @Input() siteKey: string;\r\n  @Input() theme: string;\r\n  @Input() size: string;\r\n  @Input() tabIndex: number;\r\n  @Input() languageCode: string;\r\n\r\n  @ViewChild('captcha', { static: true }) captcha: ElementRef;\r\n\r\n  @Output() verify: EventEmitter<string> = new EventEmitter<string>();\r\n  @Output() expired: EventEmitter<any> = new EventEmitter<any>();\r\n  @Output() error: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n  private _value: string;\r\n  private widgetId: string;\r\n  private captcha$: Subscription;\r\n\r\n  onChange: any = () => {};\r\n  onTouched: any = () => {};\r\n\r\n\r\n  constructor(\r\n    @Inject(CAPTCHA_CONFIG) private config: CaptchaConfig,\r\n    private zone: NgZone,\r\n    @Inject(PLATFORM_ID) private platformId\r\n  ) {}\r\n\r\n\r\n  // Initialization\r\n\r\n  ngOnInit() {\r\n    // Use language code from module config when input parameter is not set\r\n    if (!this.languageCode) {\r\n      this.languageCode = this.config.languageCode;\r\n    }\r\n\r\n    // Do not load hCaptcha if platform is server\r\n    if (isPlatformServer(this.platformId)) {\r\n      return;\r\n    }\r\n\r\n    this.captcha$ = loadHCaptcha(this.languageCode).subscribe(\r\n      () => {\r\n        setTimeout((context) => {\r\n          // Configure hCaptcha\r\n          const options = {\r\n            sitekey: (context.siteKey || context.config.siteKey),\r\n            theme: context.theme,\r\n            size: context.size,\r\n            tabindex: context.tabIndex,\r\n            callback: (res) => { context.zone.run(() => context.onVerify(res)); },\r\n            'expired-callback': (res) => { context.zone.run(() => context.onExpired(res)); },\r\n            'error-callback': (err) => { context.zone.run(() => context.onError(err)); }\r\n          };\r\n\r\n          // Render hCaptcha using the defined options\r\n          context.widgetId = window.hcaptcha.render(context.captcha.nativeElement, options);\r\n        }, 50, this);\r\n      },\r\n      (error) => {\r\n        console.error('Failed to load hCaptcha script', error);\r\n      }\r\n    );\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    if (isPlatformServer(this.platformId)) {\r\n      return;\r\n    }\r\n\r\n    this.captcha$.unsubscribe();\r\n  }\r\n\r\n  // ControlValueAccessor implementation\r\n\r\n  writeValue(value: string) {\r\n    // Needs to be implemented to make the FormGroup's reset function work\r\n    this.value = value;\r\n\r\n    // Reset hCaptcha.\r\n    // We need to check whether window.hcaptcha is defined because\r\n    // writeValue(value: any) can be called before hCaptcha has been intialized.\r\n    if (isPlatformBrowser(this.platformId) && !this.value && window.hcaptcha) {\r\n      window.hcaptcha.reset(this.widgetId);\r\n    }\r\n  }\r\n\r\n  registerOnChange(fn: any) {\r\n    this.onChange = fn;\r\n  }\r\n\r\n  registerOnTouched(fn: any) {\r\n    this.onTouched = fn;\r\n  }\r\n\r\n  reset() {\r\n    window.hcaptcha.reset(this.widgetId);\r\n  }\r\n\r\n  get value() {\r\n    return this._value;\r\n  }\r\n\r\n  set value(value: string) {\r\n    this._value = value;\r\n    this.onChange(value);\r\n    this.onTouched();\r\n  }\r\n\r\n\r\n  // Internal functions\r\n\r\n  /**\r\n   * Is called when the verification was successful\r\n   * @param response The verification token\r\n   */\r\n  private onVerify(response: string) {\r\n    this.value = response;\r\n    this.verify.emit(response);\r\n  }\r\n\r\n  /**\r\n   * Is called when the verification has expired\r\n   * @param response The verification response\r\n   */\r\n  private onExpired(response: any) {\r\n    this.expired.emit(response);\r\n  }\r\n\r\n  /**\r\n   * Is called when an error occurs during the verification process\r\n   * @param error The error returned by hCaptcha\r\n   */\r\n  private onError(error: any) {\r\n    this.error.emit(error);\r\n  }\r\n}\r\n","import { Directive, ElementRef, EventEmitter, HostListener, Inject, Input, NgZone, OnInit, Output, PLATFORM_ID, OnDestroy } from '@angular/core';\r\nimport { isPlatformBrowser, isPlatformServer } from '@angular/common';\r\nimport { Subscription } from 'rxjs';\r\nimport { CAPTCHA_CONFIG, CaptchaConfig } from './ng-hcaptcha-config';\r\nimport { loadHCaptcha } from './hcaptcha-utils';\r\n\r\ndeclare const window: any;\r\n\r\n@Directive({\r\n  selector: '[ngHcaptchaInvisibleButton]'\r\n})\r\nexport class NgHcaptchaInvisibleButtonDirective implements OnInit, OnDestroy {\r\n\r\n  @Input() siteKey: string;\r\n  @Input() languageCode: string;\r\n\r\n  @Output() verify: EventEmitter<string> = new EventEmitter<string>();\r\n  @Output() expired: EventEmitter<any> = new EventEmitter<any>();\r\n  @Output() error: EventEmitter<any> = new EventEmitter<any>();\r\n  @Output() click: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n  private lastClickEvent: any;\r\n  private captcha$: Subscription;\r\n  private widgetId: string;\r\n\r\n  constructor(private elRef: ElementRef,\r\n              @Inject(CAPTCHA_CONFIG) private config: CaptchaConfig,\r\n              private zone: NgZone,\r\n              @Inject(PLATFORM_ID) private platformId) { }\r\n\r\n  ngOnInit() {\r\n    // Use language code from module config when input parameter is not set\r\n    if (!this.languageCode) {\r\n      this.languageCode = this.config.languageCode;\r\n    }\r\n\r\n    // Do not load hCaptcha if platform is server\r\n    if (isPlatformServer(this.platformId)) {\r\n      return;\r\n    }\r\n\r\n    // Load the hCaptcha script\r\n    this.captcha$ = loadHCaptcha(this.languageCode).subscribe(\r\n      () => {\r\n        setTimeout((context) => {\r\n          // Configure hCaptcha\r\n          const options = {\r\n            sitekey: (context.siteKey || context.config.siteKey),\r\n            size: 'invisible',\r\n            callback: (res) => { context.zone.run(() => context.onVerify(res)); },\r\n            'expired-callback': (res) => { context.zone.run(() => context.onExpired(res)); },\r\n            'error-callback': (err) => { context.zone.run(() => context.onError(err)); }\r\n          };\r\n\r\n          // Render hCaptcha using the defined options\r\n          context.widgetId = window.hcaptcha.render(context.elRef.nativeElement, options);\r\n        }, 50, this);\r\n      });\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    if (isPlatformServer(this.platformId)) {\r\n      return;\r\n    }\r\n\r\n    this.captcha$.unsubscribe();\r\n  }\r\n\r\n  @HostListener('click', ['$event'])\r\n  onClick(event: any): boolean {\r\n    if (event.hCaptchaToken) {\r\n      return;\r\n    }\r\n\r\n    this.lastClickEvent = event;\r\n    event.stopPropagation();\r\n    event.preventDefault();\r\n    event.cancelBubble = true;\r\n    event.stopImmediatePropagation();\r\n\r\n    // Only execute hCaptcha if platform is browser\r\n    if (isPlatformBrowser(this.platformId)) {\r\n      window.hcaptcha.execute(this.widgetId);\r\n    }\r\n\r\n    return false;\r\n  }\r\n\r\n  reset() {\r\n    window.hcaptcha.reset(this.widgetId);\r\n  }\r\n\r\n  /**\r\n   * Is called when the verification was successful\r\n   * @param response The verification token\r\n   */\r\n  private onVerify(response: string): void {\r\n    const event = this.lastClickEvent || {};\r\n    event.hCaptchaToken = response;\r\n    this.click.emit(event);\r\n    this.verify.emit(response);\r\n  }\r\n\r\n  /**\r\n   * Is called when the verification has expired\r\n   * @param response The verification response\r\n   */\r\n  private onExpired(response: any): void {\r\n    this.expired.emit(response);\r\n  }\r\n\r\n  /**\r\n   * Is called when an error occurs during the verification process\r\n   * @param error The error returned by hCaptcha\r\n   */\r\n  private onError(error: any): void {\r\n    this.error.emit(error);\r\n  }\r\n\r\n}\r\n","import { Inject, Injectable } from \"@angular/core\";\r\nimport { Observable, Subscriber } from \"rxjs\";\r\nimport { loadHCaptcha } from \"./hcaptcha-utils\";\r\nimport { CaptchaConfig, CAPTCHA_CONFIG } from \"./ng-hcaptcha-config\";\r\n\r\ndeclare const window: any;\r\n\r\n@Injectable()\r\nexport class NgHcaptchaService {\r\n\r\n    private hCaptchaElement: HTMLElement;\r\n    private hCaptchaWidgetId: string;\r\n\r\n    constructor(@Inject(CAPTCHA_CONFIG) private captchaConfig: CaptchaConfig) { }\r\n\r\n    verify(): Observable<any> {\r\n        return new Observable((subscriber: Subscriber<any>) => {\r\n            loadHCaptcha(this.captchaConfig.languageCode).subscribe(() => {\r\n                setTimeout((context) => {\r\n                    // Create hCaptcha element\r\n                    if (!this.hCaptchaElement) {\r\n                        this.hCaptchaElement = document.createElement('div');\r\n                        document.body.appendChild(this.hCaptchaElement);\r\n                    }\r\n\r\n                    // Render hCaptcha using the defined options\r\n                    if (!this.hCaptchaWidgetId) {\r\n                        // Configure hCaptcha\r\n                        const options = {\r\n                            sitekey: this.captchaConfig.siteKey,\r\n                            size: 'invisible',\r\n                            callback: (res) => {\r\n                                subscriber.next(res);\r\n                                subscriber.complete();\r\n                                this.resetHcaptcha();\r\n                            },\r\n                            'expired-callback': (res) => {\r\n                                subscriber.error(res);\r\n                                this.resetHcaptcha();\r\n                            },\r\n                            'error-callback': (err) => {\r\n                                subscriber.error(err);\r\n                                this.resetHcaptcha();\r\n                            },\r\n                        };\r\n                        this.hCaptchaWidgetId = window.hcaptcha.render(this.hCaptchaElement, options);\r\n                    }\r\n\r\n                    // Immediately execute hCaptcha\r\n                    window.hcaptcha.execute(this.hCaptchaWidgetId);\r\n                }, 50, this);\r\n            });\r\n        });\r\n    }\r\n\r\n    private resetHcaptcha() {\r\n        window.hcaptcha.remove(this.hCaptchaWidgetId);\r\n        this.hCaptchaElement = null;\r\n        this.hCaptchaWidgetId = null;\r\n    }\r\n\r\n}\r\n","import { NgModule, ModuleWithProviders } from '@angular/core';\r\nimport { NgHcaptchaComponent } from './ng-hcaptcha.component';\r\nimport { CAPTCHA_CONFIG, CaptchaConfig } from './ng-hcaptcha-config';\r\nimport { NgHcaptchaInvisibleButtonDirective } from './ng-hcaptcha-invisible-button.directive';\r\nimport { NgHcaptchaService } from './ng-hcaptcha.service';\r\n\r\n@NgModule({\r\n  imports: [],\r\n  declarations: [NgHcaptchaComponent, NgHcaptchaInvisibleButtonDirective],\r\n  exports: [NgHcaptchaComponent, NgHcaptchaInvisibleButtonDirective],\r\n})\r\nexport class NgHcaptchaModule {\r\n\r\n  static forRoot(config?: CaptchaConfig): ModuleWithProviders<NgHcaptchaModule> {\r\n    return {\r\n      ngModule: NgHcaptchaModule,\r\n      providers: [\r\n        NgHcaptchaService,\r\n        {\r\n          provide: CAPTCHA_CONFIG,\r\n          useValue: config || []\r\n        },\r\n      ]\r\n    };\r\n  }\r\n\r\n}\r\n","/*\r\n * Public API Surface of ng-hcaptcha\r\n */\r\n\r\nexport * from './lib/ng-hcaptcha-config';\r\nexport * from './lib/ng-hcaptcha.component';\r\nexport * from './lib/ng-hcaptcha-invisible-button.directive';\r\nexport * from './lib/ng-hcaptcha.service';\r\nexport * from './lib/ng-hcaptcha.module';\r\nexport * from './lib/hcaptcha-utils';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}