ng-recaptcha
Version:
Angular component for Google reCAPTCHA
1 lines • 39.5 kB
Source Map (JSON)
{"version":3,"file":"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/ng-recaptcha.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 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({\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<T>((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 EventEmitter,\n HostBinding,\n Inject,\n Input,\n NgZone,\n OnDestroy,\n Optional,\n Output,\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})\nexport class RecaptchaComponent implements AfterViewInit, OnDestroy {\n @Input()\n @HostBinding(\"attr.id\")\n public id = `ngrecaptcha-${nextId++}`;\n\n @Input() public siteKey?: string;\n @Input() public theme?: ReCaptchaV2.Theme;\n @Input() public type?: ReCaptchaV2.Type;\n @Input() public size?: ReCaptchaV2.Size;\n @Input() public tabIndex?: number;\n @Input() public badge?: ReCaptchaV2.Badge;\n @Input() public errorMode: \"handled\" | \"default\" = \"default\";\n\n @Output() public resolved = new EventEmitter<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 @Output() public error = new EventEmitter<RecaptchaErrorParameters>();\n @Output() public errored = new EventEmitter<RecaptchaErrorParameters>();\n\n /** @internal */\n private subscription: Subscription;\n /** @internal */\n private widget: number;\n /** @internal */\n private grecaptcha: ReCaptchaV2.ReCaptcha;\n /** @internal */\n private executeRequested: boolean;\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 = settings.siteKey;\n this.theme = settings.theme;\n this.type = settings.type;\n this.size = settings.size;\n this.badge = settings.badge;\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.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 if (this.widget != null) {\n this.zone.runOutsideAngular(() => this.grecaptcha.reset(this.widget));\n }\n }\n\n /** @internal */\n private renderRecaptcha() {\n // This `any` can be removed after @types/grecaptcha get updated\n const renderOptions: ReCaptchaV2.Parameters = {\n badge: this.badge,\n callback: (response: string) => {\n this.zone.run(() => this.captchaResponseCallback(response));\n },\n \"expired-callback\": () => {\n this.zone.run(() => this.expired());\n },\n sitekey: this.siteKey,\n size: this.size,\n tabindex: this.tabIndex,\n theme: this.theme,\n type: this.type,\n };\n\n if (this.errorMode === \"handled\") {\n renderOptions[\"error-callback\"] = (...args: RecaptchaErrorParameters) => {\n this.zone.run(() => this.onError(args));\n };\n }\n\n this.widget = this.grecaptcha.render(this.elementRef.nativeElement, renderOptions);\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;\n\n /** @internal */\n private onExecuteSubject: Subject<OnExecuteData>;\n /** @internal */\n private onExecuteErrorSubject: Subject<OnExecuteErrorData>;\n /** @internal */\n private onExecuteObservable: Observable<OnExecuteData>;\n /** @internal */\n private onExecuteErrorObservable: Observable<OnExecuteErrorData>;\n\n constructor(\n zone: NgZone,\n 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) {\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) {\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, HostListener } from \"@angular/core\";\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\n\nimport { RecaptchaComponent } from \"./recaptcha.component\";\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})\nexport class RecaptchaValueAccessorDirective implements ControlValueAccessor {\n /** @internal */\n private onChange: (value: string | null) => void;\n\n /** @internal */\n private onTouched: () => void;\n\n private requiresControllerReset = false;\n\n constructor(private host: RecaptchaComponent) {}\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) => 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 @HostListener(\"resolved\", [\"$event\"]) public onResolve($event: string): void {\n if (this.onChange) {\n this.onChange($event);\n }\n if (this.onTouched) {\n this.onTouched();\n }\n }\n}\n","import { NgModule } from \"@angular/core\";\nimport { 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","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.RecaptchaComponent"],"mappings":"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"}