@ngx-rock/yandex-smart-captcha 19.1.1 → 20.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/fesm2022/ngx-rock-yandex-smart-captcha.mjs +28 -37
- package/fesm2022/ngx-rock-yandex-smart-captcha.mjs.map +1 -1
- package/index.d.ts +94 -1
- package/package.json +1 -1
- package/lib/helpers/is-valid-host.d.ts +0 -1
- package/lib/types/index.d.ts +0 -31
- package/lib/yandex-smart-captcha/yandex-smart-captcha.component.d.ts +0 -59
package/README.md
CHANGED
|
@@ -218,9 +218,9 @@ Distributed under the MIT License.
|
|
|
218
218
|
|
|
219
219
|
---
|
|
220
220
|
|
|
221
|
-
## References
|
|
221
|
+
## References
|
|
222
222
|
|
|
223
|
-
- [Yandex SmartCaptcha Documentation (React)](https://yandex.cloud/en-ru/docs/smartcaptcha/concepts/react?utm_referrer=about%3Ablank)
|
|
223
|
+
- [Yandex SmartCaptcha 2.9.0 Documentation (React)](https://yandex.cloud/en-ru/docs/smartcaptcha/concepts/react?utm_referrer=about%3Ablank)
|
|
224
224
|
|
|
225
225
|
---
|
|
226
226
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { input, output, viewChild,
|
|
2
|
+
import { input, output, viewChild, inject, Renderer2, DOCUMENT, PLATFORM_ID, signal, effect, forwardRef, ChangeDetectionStrategy, Component } from '@angular/core';
|
|
3
3
|
import { NG_VALUE_ACCESSOR, NG_VALIDATORS } from '@angular/forms';
|
|
4
|
-
import { isPlatformBrowser
|
|
4
|
+
import { isPlatformBrowser } from '@angular/common';
|
|
5
5
|
|
|
6
6
|
const domainRE = /^(\S+)$/;
|
|
7
7
|
const localhostDomainRE = /^localhost[:?\d]*(?:[^:?\d]\S*)?$/;
|
|
@@ -34,29 +34,29 @@ const API_LINK = (host = 'smartcaptcha.yandexcloud.net') => {
|
|
|
34
34
|
const callbacks = [];
|
|
35
35
|
const startLoading = new Map();
|
|
36
36
|
class SmartCaptchaComponent {
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
shieldPosition = input();
|
|
45
|
-
language = input();
|
|
46
|
-
host = input();
|
|
37
|
+
sitekey = input.required(...(ngDevMode ? [{ debugName: "sitekey" }] : []));
|
|
38
|
+
invisible = input(false, ...(ngDevMode ? [{ debugName: "invisible" }] : []));
|
|
39
|
+
visible = input(...(ngDevMode ? [undefined, { debugName: "visible" }] : [])); // For InvisibleCaptcha to execute
|
|
40
|
+
hideShield = input(...(ngDevMode ? [undefined, { debugName: "hideShield" }] : []));
|
|
41
|
+
shieldPosition = input(...(ngDevMode ? [undefined, { debugName: "shieldPosition" }] : []));
|
|
42
|
+
language = input(...(ngDevMode ? [undefined, { debugName: "language" }] : []));
|
|
43
|
+
host = input(...(ngDevMode ? [undefined, { debugName: "host" }] : []));
|
|
47
44
|
/**
|
|
48
45
|
* @deprecated This setting is deprecated and must only be changed via the Yandex Cloud interface.
|
|
49
46
|
*/
|
|
50
|
-
theme = input('auto');
|
|
51
|
-
test = input();
|
|
52
|
-
webview = input();
|
|
47
|
+
theme = input('auto', ...(ngDevMode ? [{ debugName: "theme" }] : []));
|
|
48
|
+
test = input(...(ngDevMode ? [undefined, { debugName: "test" }] : []));
|
|
49
|
+
webview = input(...(ngDevMode ? [undefined, { debugName: "webview" }] : []));
|
|
53
50
|
challengeHidden = output();
|
|
54
51
|
challengeVisible = output();
|
|
55
52
|
success = output();
|
|
56
53
|
networkError = output();
|
|
57
54
|
tokenExpired = output();
|
|
58
55
|
javascriptError = output();
|
|
59
|
-
captchaContainer = viewChild('captchaContainer');
|
|
56
|
+
captchaContainer = viewChild('captchaContainer', ...(ngDevMode ? [{ debugName: "captchaContainer" }] : []));
|
|
57
|
+
renderer2 = inject(Renderer2);
|
|
58
|
+
document = inject(DOCUMENT);
|
|
59
|
+
platformId = inject(PLATFORM_ID);
|
|
60
60
|
widgetId;
|
|
61
61
|
smartCaptchaInstance;
|
|
62
62
|
destroyed = false;
|
|
@@ -68,12 +68,9 @@ class SmartCaptchaComponent {
|
|
|
68
68
|
onTouched = () => {
|
|
69
69
|
// onTouched
|
|
70
70
|
};
|
|
71
|
-
_innerValue = signal(null
|
|
71
|
+
_innerValue = signal(null, ...(ngDevMode ? [{ debugName: "_innerValue" }] : []));
|
|
72
72
|
callbackIndex = null;
|
|
73
|
-
constructor(
|
|
74
|
-
this.renderer2 = renderer2;
|
|
75
|
-
this.document = document;
|
|
76
|
-
this.platformId = platformId;
|
|
73
|
+
constructor() {
|
|
77
74
|
// Effect for theme changes
|
|
78
75
|
effect(() => {
|
|
79
76
|
if (this.theme() &&
|
|
@@ -95,7 +92,7 @@ class SmartCaptchaComponent {
|
|
|
95
92
|
}
|
|
96
93
|
ngOnInit() {
|
|
97
94
|
if (!isPlatformBrowser(this.platformId)) {
|
|
98
|
-
return;
|
|
95
|
+
return;
|
|
99
96
|
}
|
|
100
97
|
if (this.host() !== undefined && !isValidHost(this.host())) {
|
|
101
98
|
console.error(`[SmartCaptcha] ${this.host()} host is invalid. It should be of a kind: domain.ru, localhost:3000`);
|
|
@@ -285,8 +282,8 @@ class SmartCaptchaComponent {
|
|
|
285
282
|
}
|
|
286
283
|
return null;
|
|
287
284
|
}
|
|
288
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
289
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "
|
|
285
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: SmartCaptchaComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
286
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.3.9", type: SmartCaptchaComponent, isStandalone: true, selector: "smart-captcha", inputs: { sitekey: { classPropertyName: "sitekey", publicName: "sitekey", isSignal: true, isRequired: true, transformFunction: null }, invisible: { classPropertyName: "invisible", publicName: "invisible", isSignal: true, isRequired: false, transformFunction: null }, visible: { classPropertyName: "visible", publicName: "visible", isSignal: true, isRequired: false, transformFunction: null }, hideShield: { classPropertyName: "hideShield", publicName: "hideShield", isSignal: true, isRequired: false, transformFunction: null }, shieldPosition: { classPropertyName: "shieldPosition", publicName: "shieldPosition", isSignal: true, isRequired: false, transformFunction: null }, language: { classPropertyName: "language", publicName: "language", isSignal: true, isRequired: false, transformFunction: null }, host: { classPropertyName: "host", publicName: "host", isSignal: true, isRequired: false, transformFunction: null }, theme: { classPropertyName: "theme", publicName: "theme", isSignal: true, isRequired: false, transformFunction: null }, test: { classPropertyName: "test", publicName: "test", isSignal: true, isRequired: false, transformFunction: null }, webview: { classPropertyName: "webview", publicName: "webview", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { challengeHidden: "challengeHidden", challengeVisible: "challengeVisible", success: "success", networkError: "networkError", tokenExpired: "tokenExpired", javascriptError: "javascriptError" }, providers: [
|
|
290
287
|
{
|
|
291
288
|
provide: NG_VALUE_ACCESSOR,
|
|
292
289
|
useExisting: forwardRef(() => SmartCaptchaComponent),
|
|
@@ -299,7 +296,7 @@ class SmartCaptchaComponent {
|
|
|
299
296
|
},
|
|
300
297
|
], viewQueries: [{ propertyName: "captchaContainer", first: true, predicate: ["captchaContainer"], descendants: true, isSignal: true }], ngImport: i0, template: ` <div class="smart-captcha" #captchaContainer></div> `, isInline: true, styles: [".smart-captcha{height:102px}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
301
298
|
}
|
|
302
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
299
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: SmartCaptchaComponent, decorators: [{
|
|
303
300
|
type: Component,
|
|
304
301
|
args: [{ selector: 'smart-captcha', template: ` <div class="smart-captcha" #captchaContainer></div> `, providers: [
|
|
305
302
|
{
|
|
@@ -313,23 +310,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.2", ngImpor
|
|
|
313
310
|
multi: true,
|
|
314
311
|
},
|
|
315
312
|
], changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, styles: [".smart-captcha{height:102px}\n"] }]
|
|
316
|
-
}], ctorParameters: () => [{ type: i0.
|
|
317
|
-
type: Inject,
|
|
318
|
-
args: [DOCUMENT]
|
|
319
|
-
}] }, { type: undefined, decorators: [{
|
|
320
|
-
type: Inject,
|
|
321
|
-
args: [PLATFORM_ID]
|
|
322
|
-
}] }] });
|
|
313
|
+
}], ctorParameters: () => [], propDecorators: { sitekey: [{ type: i0.Input, args: [{ isSignal: true, alias: "sitekey", required: true }] }], invisible: [{ type: i0.Input, args: [{ isSignal: true, alias: "invisible", required: false }] }], visible: [{ type: i0.Input, args: [{ isSignal: true, alias: "visible", required: false }] }], hideShield: [{ type: i0.Input, args: [{ isSignal: true, alias: "hideShield", required: false }] }], shieldPosition: [{ type: i0.Input, args: [{ isSignal: true, alias: "shieldPosition", required: false }] }], language: [{ type: i0.Input, args: [{ isSignal: true, alias: "language", required: false }] }], host: [{ type: i0.Input, args: [{ isSignal: true, alias: "host", required: false }] }], theme: [{ type: i0.Input, args: [{ isSignal: true, alias: "theme", required: false }] }], test: [{ type: i0.Input, args: [{ isSignal: true, alias: "test", required: false }] }], webview: [{ type: i0.Input, args: [{ isSignal: true, alias: "webview", required: false }] }], challengeHidden: [{ type: i0.Output, args: ["challengeHidden"] }], challengeVisible: [{ type: i0.Output, args: ["challengeVisible"] }], success: [{ type: i0.Output, args: ["success"] }], networkError: [{ type: i0.Output, args: ["networkError"] }], tokenExpired: [{ type: i0.Output, args: ["tokenExpired"] }], javascriptError: [{ type: i0.Output, args: ["javascriptError"] }], captchaContainer: [{ type: i0.ViewChild, args: ['captchaContainer', { isSignal: true }] }] } });
|
|
323
314
|
class InvisibleSmartCaptchaComponent extends SmartCaptchaComponent {
|
|
324
315
|
// Always set invisible to true
|
|
325
|
-
invisible = input(true);
|
|
316
|
+
invisible = input(true, ...(ngDevMode ? [{ debugName: "invisible" }] : []));
|
|
326
317
|
// Override ngOnInit to ensure invisible is always true
|
|
327
318
|
ngOnInit() {
|
|
328
319
|
// Call parent initialization
|
|
329
320
|
super.ngOnInit();
|
|
330
321
|
}
|
|
331
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
332
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "
|
|
322
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: InvisibleSmartCaptchaComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
323
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.3.9", type: InvisibleSmartCaptchaComponent, isStandalone: true, selector: "invisible-smart-captcha", inputs: { invisible: { classPropertyName: "invisible", publicName: "invisible", isSignal: true, isRequired: false, transformFunction: null } }, providers: [
|
|
333
324
|
{
|
|
334
325
|
provide: NG_VALUE_ACCESSOR,
|
|
335
326
|
useExisting: forwardRef(() => InvisibleSmartCaptchaComponent),
|
|
@@ -342,7 +333,7 @@ class InvisibleSmartCaptchaComponent extends SmartCaptchaComponent {
|
|
|
342
333
|
},
|
|
343
334
|
], usesInheritance: true, ngImport: i0, template: ` <div class="smart-captcha" #captchaContainer></div> `, isInline: true, styles: [""], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
344
335
|
}
|
|
345
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
336
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: InvisibleSmartCaptchaComponent, decorators: [{
|
|
346
337
|
type: Component,
|
|
347
338
|
args: [{ selector: 'invisible-smart-captcha', template: ` <div class="smart-captcha" #captchaContainer></div> `, providers: [
|
|
348
339
|
{
|
|
@@ -356,7 +347,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.2", ngImpor
|
|
|
356
347
|
multi: true,
|
|
357
348
|
},
|
|
358
349
|
], standalone: true, changeDetection: ChangeDetectionStrategy.OnPush }]
|
|
359
|
-
}] });
|
|
350
|
+
}], propDecorators: { invisible: [{ type: i0.Input, args: [{ isSignal: true, alias: "invisible", required: false }] }] } });
|
|
360
351
|
|
|
361
352
|
/**
|
|
362
353
|
* Generated bundle index. Do not edit.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngx-rock-yandex-smart-captcha.mjs","sources":["../../../../libs/yandex-smart-captcha/src/lib/helpers/is-valid-host.ts","../../../../libs/yandex-smart-captcha/src/lib/yandex-smart-captcha/yandex-smart-captcha.component.ts","../../../../libs/yandex-smart-captcha/src/ngx-rock-yandex-smart-captcha.ts"],"sourcesContent":["const domainRE = /^(\\S+)$/;\nconst localhostDomainRE = /^localhost[:?\\d]*(?:[^:?\\d]\\S*)?$/;\nconst nonLocalhostDomainRE = /^[^\\s.]+\\.\\S{2,}$/;\nconst IPv4RE = /^(https?:\\/\\/)?([0-9]{1,3}\\.){3}[0-9]{1,3}:\\d+$/;\nconst IPv6RE =\n /^(https?:\\/\\/)?\\[([0-9a-fA-F]{0,4}:){7}([0-9a-fA-F]){0,4}]:\\d+$/;\n\nexport function isValidHost(str: string | undefined): boolean {\n if (typeof str !== 'string') {\n return false;\n }\n const match = str.match(domainRE);\n if (!match) {\n return false;\n }\n const everythingAfterProtocol = match[0];\n if (!everythingAfterProtocol) {\n return false;\n }\n return (\n localhostDomainRE.test(everythingAfterProtocol) ||\n nonLocalhostDomainRE.test(everythingAfterProtocol) ||\n IPv4RE.test(everythingAfterProtocol) ||\n IPv6RE.test(everythingAfterProtocol)\n );\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n effect,\n ElementRef,\n forwardRef,\n Inject,\n input,\n OnDestroy,\n OnInit,\n output,\n PLATFORM_ID,\n Renderer2,\n signal,\n viewChild,\n} from '@angular/core';\nimport {\n ControlValueAccessor,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator,\n} from '@angular/forms';\nimport { DOCUMENT, isPlatformBrowser } from '@angular/common';\nimport { isValidHost } from '../helpers/is-valid-host';\nimport {\n JavascriptErrorPayload,\n SmartCaptchaInstance,\n SmartCaptchaParams,\n} from '../types';\n\nconst API_LINK = (host = 'smartcaptcha.yandexcloud.net') => {\n const base = /^https?/.test(host) ? host : `https://${host}`;\n return `${base}/captcha.js?render=onload&onload=__onSmartCaptchaReady`;\n};\n\n// Shared callbacks array\nconst callbacks: (() => void)[] = [];\nexport const startLoading = new Map<string, boolean>();\n\n@Component({\n selector: 'smart-captcha',\n template: ` <div class=\"smart-captcha\" #captchaContainer></div> `,\n styles: [\n `\n .smart-captcha {\n height: 102px;\n }\n `,\n ],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SmartCaptchaComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => SmartCaptchaComponent),\n multi: true,\n },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n})\nexport class SmartCaptchaComponent\n implements ControlValueAccessor, Validator, OnInit, AfterViewInit, OnDestroy\n{\n sitekey = input.required<string>();\n invisible = input<boolean>(false);\n visible = input<boolean>(); // For InvisibleCaptcha to execute\n hideShield = input<boolean>();\n shieldPosition = input<\n 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right'\n >();\n language = input<string>();\n host = input<string>();\n /**\n * @deprecated This setting is deprecated and must only be changed via the Yandex Cloud interface.\n */\n theme = input<'light' | 'dark' | 'auto'>('auto');\n test = input<boolean>();\n webview = input<boolean>();\n\n challengeHidden = output<void>();\n challengeVisible = output<void>();\n success = output<string>();\n networkError = output<void>();\n tokenExpired = output<void>();\n javascriptError = output<JavascriptErrorPayload>();\n\n captchaContainer = viewChild<ElementRef<HTMLDivElement>>('captchaContainer');\n\n protected widgetId: number | undefined;\n protected smartCaptchaInstance: SmartCaptchaInstance | undefined;\n protected destroyed = false;\n private unsubscribeFns: Array<(() => void) | undefined> = [];\n private errorEventHandler: ((e: ErrorEvent) => void) | undefined;\n\n private onChange: (value: string | null) => void = () => {\n // onChange\n };\n private onTouched = () => {\n // onTouched\n };\n private _innerValue = signal<string | null>(null); // Use a signal for innerValue\n private callbackIndex: number | null = null;\n\n constructor(\n private renderer2: Renderer2,\n @Inject(DOCUMENT) private document: Document,\n @Inject(PLATFORM_ID) private platformId: object\n ) {\n // Effect for theme changes\n effect(() => {\n if (\n this.theme() &&\n this.widgetId !== undefined &&\n this.smartCaptchaInstance?.setTheme\n ) {\n this.smartCaptchaInstance.setTheme(this.widgetId, this.theme());\n }\n });\n\n // Effect for visible changes (Invisible Captcha)\n effect(() => {\n if (\n this.visible() &&\n this.invisible() &&\n this.smartCaptchaInstance &&\n typeof this.widgetId === 'number' &&\n !this.destroyed\n ) {\n this.smartCaptchaInstance.execute(this.widgetId);\n }\n });\n }\n\n ngOnInit(): void {\n if (!isPlatformBrowser(this.platformId)) {\n return; // Don't proceed on server-side\n }\n\n if (this.host() !== undefined && !isValidHost(this.host())) {\n console.error(\n `[SmartCaptcha] ${this.host()} host is invalid. It should be of a kind: domain.ru, localhost:3000`\n );\n return;\n }\n\n if (typeof window !== 'undefined') {\n // Setup global callback if not already defined\n if (window.__onSmartCaptchaReady === undefined) {\n window.__onSmartCaptchaReady = () => {\n callbacks.forEach((callback) => callback());\n };\n }\n\n // Check if SmartCaptcha is already loaded\n if (window.smartCaptcha) {\n this.smartCaptchaInstance = window.smartCaptcha;\n }\n\n // Add our callback to the shared array\n this.callbackIndex = callbacks.push(() => {\n this.smartCaptchaInstance = window.smartCaptcha;\n this.renderCaptcha();\n });\n\n // Load script if not already loading\n const hostKey = this.host() || 'default';\n if (!startLoading.get(hostKey)) {\n this.loadScript();\n startLoading.set(hostKey, true);\n }\n }\n }\n\n ngAfterViewInit(): void {\n if (this.smartCaptchaInstance) {\n this.renderCaptcha();\n }\n }\n\n ngOnDestroy(): void {\n this.destroyed = true;\n\n // Remove callback from shared array\n if (this.callbackIndex !== null) {\n callbacks.splice(this.callbackIndex - 1, 1);\n }\n\n // Destroy widget if it exists\n if (this.widgetId !== undefined && this.smartCaptchaInstance) {\n this.smartCaptchaInstance.destroy(this.widgetId);\n this.widgetId = undefined;\n }\n\n // Clean up subscriptions\n this.unsubscribeFns.forEach((fn) => fn && fn());\n this.unsubscribeFns = [];\n\n // Remove error event handler\n if (this.errorEventHandler && typeof window !== 'undefined') {\n window.removeEventListener('error', this.errorEventHandler);\n }\n }\n\n private loadScript(): void {\n const src = API_LINK(this.host());\n const script = this.renderer2.createElement('script');\n this.renderer2.setAttribute(script, 'src', src);\n this.renderer2.setAttribute(script, 'type', 'text/javascript');\n this.renderer2.setAttribute(script, 'crossOrigin', 'anonymous');\n\n // Handle regular onload/onerror\n script.onload = () => {\n if (window.smartCaptcha && !this.smartCaptchaInstance) {\n this.smartCaptchaInstance = window.smartCaptcha;\n this.renderCaptcha();\n }\n };\n\n script.onerror = () => {\n this.handleJavascriptError({\n filename: src,\n message: 'Unknown error on script loading',\n col: 0,\n line: 0,\n });\n };\n\n // Add error event listener for JS errors in the captcha script\n if (typeof window !== 'undefined') {\n this.errorEventHandler = (e: ErrorEvent) => {\n if (e.filename?.indexOf(src) === 0) {\n this.handleJavascriptError({\n filename: e.filename,\n message: e.message,\n col: e.colno,\n line: e.lineno,\n });\n }\n };\n window.addEventListener('error', this.errorEventHandler);\n }\n\n // Add script to document\n this.renderer2.appendChild(this.document.body, script);\n }\n\n private renderCaptcha(): void {\n const container = this.captchaContainer()?.nativeElement;\n if (\n !container ||\n !this.smartCaptchaInstance ||\n this.widgetId !== undefined ||\n this.destroyed\n ) {\n return;\n }\n\n const params: SmartCaptchaParams = {\n sitekey: this.sitekey(),\n hl: this.language(),\n theme: this.theme(),\n invisible: this.invisible(),\n hideShield: this.hideShield(),\n shieldPosition: this.shieldPosition(),\n test: this.test(),\n webview: this.webview(),\n };\n\n try {\n this.widgetId = this.smartCaptchaInstance.render(container, params);\n this.setupSubscriptions();\n } catch (error: unknown) {\n console.error('[SmartCaptcha] Error rendering captcha widget:', error);\n\n let message = 'Unknown error during rendering';\n if (error instanceof Error) {\n message = error.message;\n }\n\n this.handleJavascriptError({\n filename: API_LINK(this.host()),\n message,\n col: 0,\n line: 0,\n });\n }\n }\n\n private setupSubscriptions(): void {\n if (this.widgetId === undefined || !this.smartCaptchaInstance) {\n return;\n }\n\n // Store unsubscribe functions for cleanup\n this.unsubscribeFns = [\n this.smartCaptchaInstance.subscribe(\n this.widgetId,\n 'challenge-visible',\n () => {\n this.challengeVisible.emit();\n }\n ),\n\n this.smartCaptchaInstance.subscribe(\n this.widgetId,\n 'challenge-hidden',\n () => {\n console.error('hidden');\n this.challengeHidden.emit();\n }\n ),\n\n this.smartCaptchaInstance.subscribe(\n this.widgetId,\n 'network-error',\n () => {\n this.networkError.emit();\n }\n ),\n\n this.smartCaptchaInstance.subscribe(\n this.widgetId,\n 'success',\n (...args: unknown[]) => {\n const [token] = args as [string];\n\n this._innerValue.set(token);\n this.onChange(token);\n this.onTouched();\n this.success.emit(token);\n }\n ),\n\n this.smartCaptchaInstance.subscribe(\n this.widgetId,\n 'token-expired',\n () => {\n this._innerValue.set(null);\n this.onChange(null);\n this.onTouched();\n this.tokenExpired.emit();\n }\n ),\n\n this.smartCaptchaInstance.subscribe(\n this.widgetId,\n 'javascript-error',\n (...args: unknown[]) => {\n const [error] = args as [JavascriptErrorPayload];\n this.handleJavascriptError(error);\n }\n ),\n ];\n }\n\n private handleJavascriptError(error: JavascriptErrorPayload): void {\n console.error('[SmartCaptcha] Javascript error:', error);\n this.javascriptError.emit(error);\n }\n\n // ControlValueAccessor methods\n writeValue(value: string): void {\n this._innerValue.set(value); // Set the signal value\n }\n\n registerOnChange(fn: (value: string | null) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n // Validator method\n validate(): ValidationErrors | null {\n // When using invisible captcha, don't validate until user interacts\n if (this.invisible() && !this._innerValue()) {\n return null;\n }\n\n // For standard captcha, require token\n if (!this.invisible() && !this._innerValue()) {\n // Access signal value\n return { captchaRequired: true };\n }\n\n return null;\n }\n}\n\n@Component({\n selector: 'invisible-smart-captcha',\n template: ` <div class=\"smart-captcha\" #captchaContainer></div> `,\n styles: [\n `\n .smart-captcha {\n /* No height needed for invisible captcha */\n }\n `,\n ],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => InvisibleSmartCaptchaComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => InvisibleSmartCaptchaComponent),\n multi: true,\n },\n ],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class InvisibleSmartCaptchaComponent\n extends SmartCaptchaComponent\n implements OnInit\n{\n // Always set invisible to true\n override invisible = input(true);\n\n // Override ngOnInit to ensure invisible is always true\n override ngOnInit(): void {\n // Call parent initialization\n super.ngOnInit();\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ngx-rock-yandex-smart-captcha.mjs","sources":["../tmp-esm2022/lib/helpers/is-valid-host.js","../tmp-esm2022/lib/yandex-smart-captcha/yandex-smart-captcha.component.js","../tmp-esm2022/ngx-rock-yandex-smart-captcha.js"],"sourcesContent":["const domainRE = /^(\\S+)$/;\nconst localhostDomainRE = /^localhost[:?\\d]*(?:[^:?\\d]\\S*)?$/;\nconst nonLocalhostDomainRE = /^[^\\s.]+\\.\\S{2,}$/;\nconst IPv4RE = /^(https?:\\/\\/)?([0-9]{1,3}\\.){3}[0-9]{1,3}:\\d+$/;\nconst IPv6RE = /^(https?:\\/\\/)?\\[([0-9a-fA-F]{0,4}:){7}([0-9a-fA-F]){0,4}]:\\d+$/;\nexport function isValidHost(str) {\n if (typeof str !== 'string') {\n return false;\n }\n const match = str.match(domainRE);\n if (!match) {\n return false;\n }\n const everythingAfterProtocol = match[0];\n if (!everythingAfterProtocol) {\n return false;\n }\n return (localhostDomainRE.test(everythingAfterProtocol) ||\n nonLocalhostDomainRE.test(everythingAfterProtocol) ||\n IPv4RE.test(everythingAfterProtocol) ||\n IPv6RE.test(everythingAfterProtocol));\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXMtdmFsaWQtaG9zdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMveWFuZGV4LXNtYXJ0LWNhcHRjaGEvc3JjL2xpYi9oZWxwZXJzL2lzLXZhbGlkLWhvc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxRQUFRLEdBQUcsU0FBUyxDQUFDO0FBQzNCLE1BQU0saUJBQWlCLEdBQUcsbUNBQW1DLENBQUM7QUFDOUQsTUFBTSxvQkFBb0IsR0FBRyxtQkFBbUIsQ0FBQztBQUNqRCxNQUFNLE1BQU0sR0FBRyxpREFBaUQsQ0FBQztBQUNqRSxNQUFNLE1BQU0sR0FDVixpRUFBaUUsQ0FBQztBQUVwRSxNQUFNLFVBQVUsV0FBVyxDQUFDLEdBQXVCO0lBQ2pELElBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDNUIsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBQ0QsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNsQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDWCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFDRCxNQUFNLHVCQUF1QixHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN6QyxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztRQUM3QixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFDRCxPQUFPLENBQ0wsaUJBQWlCLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDO1FBQy9DLG9CQUFvQixDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQztRQUNsRCxNQUFNLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDO1FBQ3BDLE1BQU0sQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsQ0FDckMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBkb21haW5SRSA9IC9eKFxcUyspJC87XG5jb25zdCBsb2NhbGhvc3REb21haW5SRSA9IC9ebG9jYWxob3N0Wzo/XFxkXSooPzpbXjo/XFxkXVxcUyopPyQvO1xuY29uc3Qgbm9uTG9jYWxob3N0RG9tYWluUkUgPSAvXlteXFxzLl0rXFwuXFxTezIsfSQvO1xuY29uc3QgSVB2NFJFID0gL14oaHR0cHM/OlxcL1xcLyk/KFswLTldezEsM31cXC4pezN9WzAtOV17MSwzfTpcXGQrJC87XG5jb25zdCBJUHY2UkUgPVxuICAvXihodHRwcz86XFwvXFwvKT9cXFsoWzAtOWEtZkEtRl17MCw0fTopezd9KFswLTlhLWZBLUZdKXswLDR9XTpcXGQrJC87XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkSG9zdChzdHI6IHN0cmluZyB8IHVuZGVmaW5lZCk6IGJvb2xlYW4ge1xuICBpZiAodHlwZW9mIHN0ciAhPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgY29uc3QgbWF0Y2ggPSBzdHIubWF0Y2goZG9tYWluUkUpO1xuICBpZiAoIW1hdGNoKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGNvbnN0IGV2ZXJ5dGhpbmdBZnRlclByb3RvY29sID0gbWF0Y2hbMF07XG4gIGlmICghZXZlcnl0aGluZ0FmdGVyUHJvdG9jb2wpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIChcbiAgICBsb2NhbGhvc3REb21haW5SRS50ZXN0KGV2ZXJ5dGhpbmdBZnRlclByb3RvY29sKSB8fFxuICAgIG5vbkxvY2FsaG9zdERvbWFpblJFLnRlc3QoZXZlcnl0aGluZ0FmdGVyUHJvdG9jb2wpIHx8XG4gICAgSVB2NFJFLnRlc3QoZXZlcnl0aGluZ0FmdGVyUHJvdG9jb2wpIHx8XG4gICAgSVB2NlJFLnRlc3QoZXZlcnl0aGluZ0FmdGVyUHJvdG9jb2wpXG4gICk7XG59XG4iXX0=","import { ChangeDetectionStrategy, Component, DOCUMENT, effect, forwardRef, inject, input, output, PLATFORM_ID, Renderer2, signal, viewChild, } from '@angular/core';\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR, } from '@angular/forms';\nimport { isPlatformBrowser } from '@angular/common';\nimport { isValidHost } from '../helpers/is-valid-host';\nimport * as i0 from \"@angular/core\";\nconst API_LINK = (host = 'smartcaptcha.yandexcloud.net') => {\n const base = /^https?/.test(host) ? host : `https://${host}`;\n return `${base}/captcha.js?render=onload&onload=__onSmartCaptchaReady`;\n};\n// Shared callbacks array\nconst callbacks = [];\nexport const startLoading = new Map();\nexport class SmartCaptchaComponent {\n sitekey = input.required(...(ngDevMode ? [{ debugName: \"sitekey\" }] : []));\n invisible = input(false, ...(ngDevMode ? [{ debugName: \"invisible\" }] : []));\n visible = input(...(ngDevMode ? [undefined, { debugName: \"visible\" }] : [])); // For InvisibleCaptcha to execute\n hideShield = input(...(ngDevMode ? [undefined, { debugName: \"hideShield\" }] : []));\n shieldPosition = input(...(ngDevMode ? [undefined, { debugName: \"shieldPosition\" }] : []));\n language = input(...(ngDevMode ? [undefined, { debugName: \"language\" }] : []));\n host = input(...(ngDevMode ? [undefined, { debugName: \"host\" }] : []));\n /**\n * @deprecated This setting is deprecated and must only be changed via the Yandex Cloud interface.\n */\n theme = input('auto', ...(ngDevMode ? [{ debugName: \"theme\" }] : []));\n test = input(...(ngDevMode ? [undefined, { debugName: \"test\" }] : []));\n webview = input(...(ngDevMode ? [undefined, { debugName: \"webview\" }] : []));\n challengeHidden = output();\n challengeVisible = output();\n success = output();\n networkError = output();\n tokenExpired = output();\n javascriptError = output();\n captchaContainer = viewChild('captchaContainer', ...(ngDevMode ? [{ debugName: \"captchaContainer\" }] : []));\n renderer2 = inject(Renderer2);\n document = inject(DOCUMENT);\n platformId = inject(PLATFORM_ID);\n widgetId;\n smartCaptchaInstance;\n destroyed = false;\n unsubscribeFns = [];\n errorEventHandler;\n onChange = () => {\n // onChange\n };\n onTouched = () => {\n // onTouched\n };\n _innerValue = signal(null, ...(ngDevMode ? [{ debugName: \"_innerValue\" }] : []));\n callbackIndex = null;\n constructor() {\n // Effect for theme changes\n effect(() => {\n if (this.theme() &&\n this.widgetId !== undefined &&\n this.smartCaptchaInstance?.setTheme) {\n this.smartCaptchaInstance.setTheme(this.widgetId, this.theme());\n }\n });\n // Effect for visible changes (Invisible Captcha)\n effect(() => {\n if (this.visible() &&\n this.invisible() &&\n this.smartCaptchaInstance &&\n typeof this.widgetId === 'number' &&\n !this.destroyed) {\n this.smartCaptchaInstance.execute(this.widgetId);\n }\n });\n }\n ngOnInit() {\n if (!isPlatformBrowser(this.platformId)) {\n return;\n }\n if (this.host() !== undefined && !isValidHost(this.host())) {\n console.error(`[SmartCaptcha] ${this.host()} host is invalid. It should be of a kind: domain.ru, localhost:3000`);\n return;\n }\n if (typeof window !== 'undefined') {\n // Setup global callback if not already defined\n if (window.__onSmartCaptchaReady === undefined) {\n window.__onSmartCaptchaReady = () => {\n callbacks.forEach((callback) => callback());\n };\n }\n // Check if SmartCaptcha is already loaded\n if (window.smartCaptcha) {\n this.smartCaptchaInstance = window.smartCaptcha;\n }\n // Add our callback to the shared array\n this.callbackIndex = callbacks.push(() => {\n this.smartCaptchaInstance = window.smartCaptcha;\n this.renderCaptcha();\n });\n // Load script if not already loading\n const hostKey = this.host() || 'default';\n if (!startLoading.get(hostKey)) {\n this.loadScript();\n startLoading.set(hostKey, true);\n }\n }\n }\n ngAfterViewInit() {\n if (this.smartCaptchaInstance) {\n this.renderCaptcha();\n }\n }\n ngOnDestroy() {\n this.destroyed = true;\n // Remove callback from shared array\n if (this.callbackIndex !== null) {\n callbacks.splice(this.callbackIndex - 1, 1);\n }\n // Destroy widget if it exists\n if (this.widgetId !== undefined && this.smartCaptchaInstance) {\n this.smartCaptchaInstance.destroy(this.widgetId);\n this.widgetId = undefined;\n }\n // Clean up subscriptions\n this.unsubscribeFns.forEach((fn) => fn && fn());\n this.unsubscribeFns = [];\n // Remove error event handler\n if (this.errorEventHandler && typeof window !== 'undefined') {\n window.removeEventListener('error', this.errorEventHandler);\n }\n }\n loadScript() {\n const src = API_LINK(this.host());\n const script = this.renderer2.createElement('script');\n this.renderer2.setAttribute(script, 'src', src);\n this.renderer2.setAttribute(script, 'type', 'text/javascript');\n this.renderer2.setAttribute(script, 'crossOrigin', 'anonymous');\n // Handle regular onload/onerror\n script.onload = () => {\n if (window.smartCaptcha && !this.smartCaptchaInstance) {\n this.smartCaptchaInstance = window.smartCaptcha;\n this.renderCaptcha();\n }\n };\n script.onerror = () => {\n this.handleJavascriptError({\n filename: src,\n message: 'Unknown error on script loading',\n col: 0,\n line: 0,\n });\n };\n // Add error event listener for JS errors in the captcha script\n if (typeof window !== 'undefined') {\n this.errorEventHandler = (e) => {\n if (e.filename?.indexOf(src) === 0) {\n this.handleJavascriptError({\n filename: e.filename,\n message: e.message,\n col: e.colno,\n line: e.lineno,\n });\n }\n };\n window.addEventListener('error', this.errorEventHandler);\n }\n // Add script to document\n this.renderer2.appendChild(this.document.body, script);\n }\n renderCaptcha() {\n const container = this.captchaContainer()?.nativeElement;\n if (!container ||\n !this.smartCaptchaInstance ||\n this.widgetId !== undefined ||\n this.destroyed) {\n return;\n }\n const params = {\n sitekey: this.sitekey(),\n hl: this.language(),\n theme: this.theme(),\n invisible: this.invisible(),\n hideShield: this.hideShield(),\n shieldPosition: this.shieldPosition(),\n test: this.test(),\n webview: this.webview(),\n };\n try {\n this.widgetId = this.smartCaptchaInstance.render(container, params);\n this.setupSubscriptions();\n }\n catch (error) {\n console.error('[SmartCaptcha] Error rendering captcha widget:', error);\n let message = 'Unknown error during rendering';\n if (error instanceof Error) {\n message = error.message;\n }\n this.handleJavascriptError({\n filename: API_LINK(this.host()),\n message,\n col: 0,\n line: 0,\n });\n }\n }\n setupSubscriptions() {\n if (this.widgetId === undefined || !this.smartCaptchaInstance) {\n return;\n }\n // Store unsubscribe functions for cleanup\n this.unsubscribeFns = [\n this.smartCaptchaInstance.subscribe(this.widgetId, 'challenge-visible', () => {\n this.challengeVisible.emit();\n }),\n this.smartCaptchaInstance.subscribe(this.widgetId, 'challenge-hidden', () => {\n console.error('hidden');\n this.challengeHidden.emit();\n }),\n this.smartCaptchaInstance.subscribe(this.widgetId, 'network-error', () => {\n this.networkError.emit();\n }),\n this.smartCaptchaInstance.subscribe(this.widgetId, 'success', (...args) => {\n const [token] = args;\n this._innerValue.set(token);\n this.onChange(token);\n this.onTouched();\n this.success.emit(token);\n }),\n this.smartCaptchaInstance.subscribe(this.widgetId, 'token-expired', () => {\n this._innerValue.set(null);\n this.onChange(null);\n this.onTouched();\n this.tokenExpired.emit();\n }),\n this.smartCaptchaInstance.subscribe(this.widgetId, 'javascript-error', (...args) => {\n const [error] = args;\n this.handleJavascriptError(error);\n }),\n ];\n }\n handleJavascriptError(error) {\n console.error('[SmartCaptcha] Javascript error:', error);\n this.javascriptError.emit(error);\n }\n // ControlValueAccessor methods\n writeValue(value) {\n this._innerValue.set(value); // Set the signal value\n }\n registerOnChange(fn) {\n this.onChange = fn;\n }\n registerOnTouched(fn) {\n this.onTouched = fn;\n }\n // Validator method\n validate() {\n // When using invisible captcha, don't validate until user interacts\n if (this.invisible() && !this._innerValue()) {\n return null;\n }\n // For standard captcha, require token\n if (!this.invisible() && !this._innerValue()) {\n // Access signal value\n return { captchaRequired: true };\n }\n return null;\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: SmartCaptchaComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.2.0\", version: \"20.3.9\", type: SmartCaptchaComponent, isStandalone: true, selector: \"smart-captcha\", inputs: { sitekey: { classPropertyName: \"sitekey\", publicName: \"sitekey\", isSignal: true, isRequired: true, transformFunction: null }, invisible: { classPropertyName: \"invisible\", publicName: \"invisible\", isSignal: true, isRequired: false, transformFunction: null }, visible: { classPropertyName: \"visible\", publicName: \"visible\", isSignal: true, isRequired: false, transformFunction: null }, hideShield: { classPropertyName: \"hideShield\", publicName: \"hideShield\", isSignal: true, isRequired: false, transformFunction: null }, shieldPosition: { classPropertyName: \"shieldPosition\", publicName: \"shieldPosition\", isSignal: true, isRequired: false, transformFunction: null }, language: { classPropertyName: \"language\", publicName: \"language\", isSignal: true, isRequired: false, transformFunction: null }, host: { classPropertyName: \"host\", publicName: \"host\", isSignal: true, isRequired: false, transformFunction: null }, theme: { classPropertyName: \"theme\", publicName: \"theme\", isSignal: true, isRequired: false, transformFunction: null }, test: { classPropertyName: \"test\", publicName: \"test\", isSignal: true, isRequired: false, transformFunction: null }, webview: { classPropertyName: \"webview\", publicName: \"webview\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { challengeHidden: \"challengeHidden\", challengeVisible: \"challengeVisible\", success: \"success\", networkError: \"networkError\", tokenExpired: \"tokenExpired\", javascriptError: \"javascriptError\" }, providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SmartCaptchaComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => SmartCaptchaComponent),\n multi: true,\n },\n ], viewQueries: [{ propertyName: \"captchaContainer\", first: true, predicate: [\"captchaContainer\"], descendants: true, isSignal: true }], ngImport: i0, template: ` <div class=\"smart-captcha\" #captchaContainer></div> `, isInline: true, styles: [\".smart-captcha{height:102px}\\n\"], changeDetection: i0.ChangeDetectionStrategy.OnPush });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: SmartCaptchaComponent, decorators: [{\n type: Component,\n args: [{ selector: 'smart-captcha', template: ` <div class=\"smart-captcha\" #captchaContainer></div> `, providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SmartCaptchaComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => SmartCaptchaComponent),\n multi: true,\n },\n ], changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, styles: [\".smart-captcha{height:102px}\\n\"] }]\n }], ctorParameters: () => [], propDecorators: { sitekey: [{ type: i0.Input, args: [{ isSignal: true, alias: \"sitekey\", required: true }] }], invisible: [{ type: i0.Input, args: [{ isSignal: true, alias: \"invisible\", required: false }] }], visible: [{ type: i0.Input, args: [{ isSignal: true, alias: \"visible\", required: false }] }], hideShield: [{ type: i0.Input, args: [{ isSignal: true, alias: \"hideShield\", required: false }] }], shieldPosition: [{ type: i0.Input, args: [{ isSignal: true, alias: \"shieldPosition\", required: false }] }], language: [{ type: i0.Input, args: [{ isSignal: true, alias: \"language\", required: false }] }], host: [{ type: i0.Input, args: [{ isSignal: true, alias: \"host\", required: false }] }], theme: [{ type: i0.Input, args: [{ isSignal: true, alias: \"theme\", required: false }] }], test: [{ type: i0.Input, args: [{ isSignal: true, alias: \"test\", required: false }] }], webview: [{ type: i0.Input, args: [{ isSignal: true, alias: \"webview\", required: false }] }], challengeHidden: [{ type: i0.Output, args: [\"challengeHidden\"] }], challengeVisible: [{ type: i0.Output, args: [\"challengeVisible\"] }], success: [{ type: i0.Output, args: [\"success\"] }], networkError: [{ type: i0.Output, args: [\"networkError\"] }], tokenExpired: [{ type: i0.Output, args: [\"tokenExpired\"] }], javascriptError: [{ type: i0.Output, args: [\"javascriptError\"] }], captchaContainer: [{ type: i0.ViewChild, args: ['captchaContainer', { isSignal: true }] }] } });\nexport class InvisibleSmartCaptchaComponent extends SmartCaptchaComponent {\n // Always set invisible to true\n invisible = input(true, ...(ngDevMode ? [{ debugName: \"invisible\" }] : []));\n // Override ngOnInit to ensure invisible is always true\n ngOnInit() {\n // Call parent initialization\n super.ngOnInit();\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: InvisibleSmartCaptchaComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.1.0\", version: \"20.3.9\", type: InvisibleSmartCaptchaComponent, isStandalone: true, selector: \"invisible-smart-captcha\", inputs: { invisible: { classPropertyName: \"invisible\", publicName: \"invisible\", isSignal: true, isRequired: false, transformFunction: null } }, providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => InvisibleSmartCaptchaComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => InvisibleSmartCaptchaComponent),\n multi: true,\n },\n ], usesInheritance: true, ngImport: i0, template: ` <div class=\"smart-captcha\" #captchaContainer></div> `, isInline: true, styles: [\"\"], changeDetection: i0.ChangeDetectionStrategy.OnPush });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: InvisibleSmartCaptchaComponent, decorators: [{\n type: Component,\n args: [{ selector: 'invisible-smart-captcha', template: ` <div class=\"smart-captcha\" #captchaContainer></div> `, providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => InvisibleSmartCaptchaComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => InvisibleSmartCaptchaComponent),\n multi: true,\n },\n ], standalone: true, changeDetection: ChangeDetectionStrategy.OnPush }]\n }], propDecorators: { invisible: [{ type: i0.Input, args: [{ isSignal: true, alias: \"invisible\", required: false }] }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieWFuZGV4LXNtYXJ0LWNhcHRjaGEuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy95YW5kZXgtc21hcnQtY2FwdGNoYS9zcmMvbGliL3lhbmRleC1zbWFydC1jYXB0Y2hhL3lhbmRleC1zbWFydC1jYXB0Y2hhLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxRQUFRLEVBQ1IsTUFBTSxFQUVOLFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxFQUdMLE1BQU0sRUFDTixXQUFXLEVBQ1gsU0FBUyxFQUNULE1BQU0sRUFDTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUVMLGFBQWEsRUFDYixpQkFBaUIsR0FHbEIsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7O0FBT3ZELE1BQU0sUUFBUSxHQUFHLENBQUMsSUFBSSxHQUFHLDhCQUE4QixFQUFFLEVBQUU7SUFDekQsTUFBTSxJQUFJLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxXQUFXLElBQUksRUFBRSxDQUFDO0lBQzdELE9BQU8sR0FBRyxJQUFJLHdEQUF3RCxDQUFDO0FBQ3pFLENBQUMsQ0FBQztBQUVGLHlCQUF5QjtBQUN6QixNQUFNLFNBQVMsR0FBbUIsRUFBRSxDQUFDO0FBQ3JDLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxJQUFJLEdBQUcsRUFBbUIsQ0FBQztBQTJCdkQsTUFBTSxPQUFPLHFCQUFxQjtJQUdoQyxPQUFPLEdBQUcsS0FBSyxDQUFDLFFBQVEsa0RBQVUsQ0FBQztJQUNuQyxTQUFTLEdBQUcs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V0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsK0JBQStCLENBQUM7NEJBQzdELEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGLGNBQ1csSUFBSSxtQkFDQyx1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRE9DVU1FTlQsXG4gIGVmZmVjdCxcbiAgRWxlbWVudFJlZixcbiAgZm9yd2FyZFJlZixcbiAgaW5qZWN0LFxuICBpbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIG91dHB1dCxcbiAgUExBVEZPUk1fSUQsXG4gIFJlbmRlcmVyMixcbiAgc2lnbmFsLFxuICB2aWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXG4gIE5HX1ZBTElEQVRPUlMsXG4gIE5HX1ZBTFVFX0FDQ0VTU09SLFxuICBWYWxpZGF0aW9uRXJyb3JzLFxuICBWYWxpZGF0b3IsXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IGlzVmFsaWRIb3N0IH0gZnJvbSAnLi4vaGVscGVycy9pcy12YWxpZC1ob3N0JztcbmltcG9ydCB7XG4gIEphdmFzY3JpcHRFcnJvclBheWxvYWQsXG4gIFNtYXJ0Q2FwdGNoYUluc3RhbmNlLFxuICBTbWFydENhcHRjaGFQYXJhbXMsXG59IGZyb20gJy4uL3R5cGVzJztcblxuY29uc3QgQVBJX0xJTksgPSAoaG9zdCA9ICdzbWFydGNhcHRjaGEueWFuZGV4Y2xvdWQubmV0JykgPT4ge1xuICBjb25zdCBiYXNlID0gL15odHRwcz8vLnRlc3QoaG9zdCkgPyBob3N0IDogYGh0dHBzOi8vJHtob3N0fWA7XG4gIHJldHVybiBgJHtiYXNlfS9jYXB0Y2hhLmpzP3JlbmRlcj1vbmxvYWQmb25sb2FkPV9fb25TbWFydENhcHRjaGFSZWFkeWA7XG59O1xuXG4vLyBTaGFyZWQgY2FsbGJhY2tzIGFycmF5XG5jb25zdCBjYWxsYmFja3M6ICgoKSA9PiB2b2lkKVtdID0gW107XG5leHBvcnQgY29uc3Qgc3RhcnRMb2FkaW5nID0gbmV3IE1hcDxzdHJpbmcsIGJvb2xlYW4+KCk7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NtYXJ0LWNhcHRjaGEnLFxuICB0ZW1wbGF0ZTogYCA8ZGl2IGNsYXNzPVwic21hcnQtY2FwdGNoYVwiICNjYXB0Y2hhQ29udGFpbmVyPjwvZGl2PiBgLFxuICBzdHlsZXM6IFtcbiAgICBgXG4gICAgICAuc21hcnQtY2FwdGNoYSB7XG4gICAgICAgIGhlaWdodDogMTAycHg7XG4gICAgICB9XG4gICAgYCxcbiAgXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBTbWFydENhcHRjaGFDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxJREFUT1JTLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gU21hcnRDYXB0Y2hhQ29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gIF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBTbWFydENhcHRjaGFDb21wb25lbnRcbiAgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgVmFsaWRhdG9yLCBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveVxue1xuICBzaXRla2V5ID0gaW5wdXQucmVxdWlyZWQ8c3RyaW5nPigpO1xuICBpbnZpc2libGUgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIHZpc2libGUgPSBpbnB1dDxib29sZWFuPigpOyAvLyBGb3IgSW52aXNpYmxlQ2FwdGNoYSB0byBleGVjdXRlXG4gIGhpZGVTaGllbGQgPSBpbnB1dDxib29sZWFuPigpO1xuICBzaGllbGRQb3NpdGlvbiA9IGlucHV0PFxuICAgICd0b3AtbGVmdCcgfCAndG9wLXJpZ2h0JyB8ICdib3R0b20tbGVmdCcgfCAnYm90dG9tLXJpZ2h0J1xuICA+KCk7XG4gIGxhbmd1YWdlID0gaW5wdXQ8U21hcnRDYXB0Y2hhUGFyYW1zWydobCddPigpO1xuICBob3N0ID0gaW5wdXQ8c3RyaW5nPigpO1xuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVGhpcyBzZXR0aW5nIGlzIGRlcHJlY2F0ZWQgYW5kIG11c3Qgb25seSBiZSBjaGFuZ2VkIHZpYSB0aGUgWWFuZGV4IENsb3VkIGludGVyZmFjZS5cbiAgICovXG4gIHRoZW1lID0gaW5wdXQ8J2xpZ2h0JyB8ICdkYXJrJyB8ICdhdXRvJz4oJ2F1dG8nKTtcbiAgdGVzdCA9IGlucHV0PGJvb2xlYW4+KCk7XG4gIHdlYnZpZXcgPSBpbnB1dDxib29sZWFuPigpO1xuXG4gIGNoYWxsZW5nZUhpZGRlbiA9IG91dHB1dDx2b2lkPigpO1xuICBjaGFsbGVuZ2VWaXNpYmxlID0gb3V0cHV0PHZvaWQ+KCk7XG4gIHN1Y2Nlc3MgPSBvdXRwdXQ8c3RyaW5nPigpO1xuICBuZXR3b3JrRXJyb3IgPSBvdXRwdXQ8dm9pZD4oKTtcbiAgdG9rZW5FeHBpcmVkID0gb3V0cHV0PHZvaWQ+KCk7XG4gIGphdmFzY3JpcHRFcnJvciA9IG91dHB1dDxKYXZhc2NyaXB0RXJyb3JQYXlsb2FkPigpO1xuXG4gIGNhcHRjaGFDb250YWluZXIgPSB2aWV3Q2hpbGQ8RWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD4+KCdjYXB0Y2hhQ29udGFpbmVyJyk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSByZW5kZXJlcjIgPSBpbmplY3QoUmVuZGVyZXIyKTtcbiAgcHJpdmF0ZSByZWFkb25seSBkb2N1bWVudCA9IGluamVjdChET0NVTUVOVCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgcGxhdGZvcm1JZCA9IGluamVjdChQTEFURk9STV9JRCk7XG5cbiAgcHJvdGVjdGVkIHdpZGdldElkOiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gIHByb3RlY3RlZCBzbWFydENhcHRjaGFJbnN0YW5jZTogU21hcnRDYXB0Y2hhSW5zdGFuY2UgfCB1bmRlZmluZWQ7XG4gIHByb3RlY3RlZCBkZXN0cm95ZWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSB1bnN1YnNjcmliZUZuczogQXJyYXk8KCgpID0+IHZvaWQpIHwgdW5kZWZpbmVkPiA9IFtdO1xuICBwcml2YXRlIGVycm9yRXZlbnRIYW5kbGVyOiAoKGU6IEVycm9yRXZlbnQpID0+IHZvaWQpIHwgdW5kZWZpbmVkO1xuXG4gIHByaXZhdGUgb25DaGFuZ2U6ICh2YWx1ZTogc3RyaW5nIHwgbnVsbCkgPT4gdm9pZCA9ICgpID0+IHtcbiAgICAvLyBvbkNoYW5nZVxuICB9O1xuICBwcml2YXRlIG9uVG91Y2hlZCA9ICgpID0+IHtcbiAgICAvLyBvblRvdWNoZWRcbiAgfTtcbiAgcHJpdmF0ZSByZWFkb25seSBfaW5uZXJWYWx1ZSA9IHNpZ25hbDxzdHJpbmcgfCBudWxsPihudWxsKTtcbiAgcHJpdmF0ZSBjYWxsYmFja0luZGV4OiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICAvLyBFZmZlY3QgZm9yIHRoZW1lIGNoYW5nZXNcbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgaWYgKFxuICAgICAgICB0aGlzLnRoZW1lKCkgJiZcbiAgICAgICAgdGhpcy53aWRnZXRJZCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgIHRoaXMuc21hcnRDYXB0Y2hhSW5zdGFuY2U/LnNldFRoZW1lXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5zbWFydENhcHRjaGFJbnN0YW5jZS5zZXRUaGVtZSh0aGlzLndpZGdldElkLCB0aGlzLnRoZW1lKCkpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gRWZmZWN0IGZvciB2aXNpYmxlIGNoYW5nZXMgKEludmlzaWJsZSBDYXB0Y2hhKVxuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBpZiAoXG4gICAgICAgIHRoaXMudmlzaWJsZSgpICYmXG4gICAgICAgIHRoaXMuaW52aXNpYmxlKCkgJiZcbiAgICAgICAgdGhpcy5zbWFydENhcHRjaGFJbnN0YW5jZSAmJlxuICAgICAgICB0eXBlb2YgdGhpcy53aWRnZXRJZCA9PT0gJ251bWJlcicgJiZcbiAgICAgICAgIXRoaXMuZGVzdHJveWVkXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5zbWFydENhcHRjaGFJbnN0YW5jZS5leGVjdXRlKHRoaXMud2lkZ2V0SWQpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaG9zdCgpICE9PSB1bmRlZmluZWQgJiYgIWlzVmFsaWRIb3N0KHRoaXMuaG9zdCgpKSkge1xuICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgYFtTbWFydENhcHRjaGFdICR7dGhpcy5ob3N0KCl9IGhvc3QgaXMgaW52YWxpZC4gSXQgc2hvdWxkIGJlIG9mIGEga2luZDogZG9tYWluLnJ1LCBsb2NhbGhvc3Q6MzAwMGBcbiAgICAgICk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAvLyBTZXR1cCBnbG9iYWwgY2FsbGJhY2sgaWYgbm90IGFscmVhZHkgZGVmaW5lZFxuICAgICAgaWYgKHdpbmRvdy5fX29uU21hcnRDYXB0Y2hhUmVhZHkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICB3aW5kb3cuX19vblNtYXJ0Q2FwdGNoYVJlYWR5ID0gKCkgPT4ge1xuICAgICAgICAgIGNhbGxiYWNrcy5mb3JFYWNoKChjYWxsYmFjaykgPT4gY2FsbGJhY2soKSk7XG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIC8vIENoZWNrIGlmIFNtYXJ0Q2FwdGNoYSBpcyBhbHJlYWR5IGxvYWRlZFxuICAgICAgaWYgKHdpbmRvdy5zbWFydENhcHRjaGEpIHtcbiAgICAgICAgdGhpcy5zbWFydENhcHRjaGFJbnN0YW5jZSA9IHdpbmRvdy5zbWFydENhcHRjaGE7XG4gICAgICB9XG5cbiAgICAgIC8vIEFkZCBvdXIgY2FsbGJhY2sgdG8gdGhlIHNoYXJlZCBhcnJheVxuICAgICAgdGhpcy5jYWxsYmFja0luZGV4ID0gY2FsbGJhY2tzLnB1c2goKCkgPT4ge1xuICAgICAgICB0aGlzLnNtYXJ0Q2FwdGNoYUluc3RhbmNlID0gd2luZG93LnNtYXJ0Q2FwdGNoYTtcbiAgICAgICAgdGhpcy5yZW5kZXJDYXB0Y2hhKCk7XG4gICAgICB9KTtcblxuICAgICAgLy8gTG9hZCBzY3JpcHQgaWYgbm90IGFscmVhZHkgbG9hZGluZ1xuICAgICAgY29uc3QgaG9zdEtleSA9IHRoaXMuaG9zdCgpIHx8ICdkZWZhdWx0JztcbiAgICAgIGlmICghc3RhcnRMb2FkaW5nLmdldChob3N0S2V5KSkge1xuICAgICAgICB0aGlzLmxvYWRTY3JpcHQoKTtcbiAgICAgICAgc3RhcnRMb2FkaW5nLnNldChob3N0S2V5LCB0cnVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc21hcnRDYXB0Y2hhSW5zdGFuY2UpIHtcbiAgICAgIHRoaXMucmVuZGVyQ2FwdGNoYSgpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGVzdHJveWVkID0gdHJ1ZTtcblxuICAgIC8vIFJlbW92ZSBjYWxsYmFjayBmcm9tIHNoYXJlZCBhcnJheVxuICAgIGlmICh0aGlzLmNhbGxiYWNrSW5kZXggIT09IG51bGwpIHtcbiAgICAgIGNhbGxiYWNrcy5zcGxpY2UodGhpcy5jYWxsYmFja0luZGV4IC0gMSwgMSk7XG4gICAgfVxuXG4gICAgLy8gRGVzdHJveSB3aWRnZXQgaWYgaXQgZXhpc3RzXG4gICAgaWYgKHRoaXMud2lkZ2V0SWQgIT09IHVuZGVmaW5lZCAmJiB0aGlzLnNtYXJ0Q2FwdGNoYUluc3RhbmNlKSB7XG4gICAgICB0aGlzLnNtYXJ0Q2FwdGNoYUluc3RhbmNlLmRlc3Ryb3kodGhpcy53aWRnZXRJZCk7XG4gICAgICB0aGlzLndpZGdldElkID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8vIENsZWFuIHVwIHN1YnNjcmlwdGlvbnNcbiAgICB0aGlzLnVuc3Vic2NyaWJlRm5zLmZvckVhY2goKGZuKSA9PiBmbiAmJiBmbigpKTtcbiAgICB0aGlzLnVuc3Vic2NyaWJlRm5zID0gW107XG5cbiAgICAvLyBSZW1vdmUgZXJyb3IgZXZlbnQgaGFuZGxlclxuICAgIGlmICh0aGlzLmVycm9yRXZlbnRIYW5kbGVyICYmIHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignZXJyb3InLCB0aGlzLmVycm9yRXZlbnRIYW5kbGVyKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGxvYWRTY3JpcHQoKTogdm9pZCB7XG4gICAgY29uc3Qgc3JjID0gQVBJX0xJTksodGhpcy5ob3N0KCkpO1xuICAgIGNvbnN0IHNjcmlwdCA9IHRoaXMucmVuZGVyZXIyLmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpO1xuICAgIHRoaXMucmVuZGVyZXIyLnNldEF0dHJpYnV0ZShzY3JpcHQsICdzcmMnLCBzcmMpO1xuICAgIHRoaXMucmVuZGVyZXIyLnNldEF0dHJpYnV0ZShzY3JpcHQsICd0eXBlJywgJ3RleHQvamF2YXNjcmlwdCcpO1xuICAgIHRoaXMucmVuZGVyZXIyLnNldEF0dHJpYnV0ZShzY3JpcHQsICdjcm9zc09yaWdpbicsICdhbm9ueW1vdXMnKTtcblxuICAgIC8vIEhhbmRsZSByZWd1bGFyIG9ubG9hZC9vbmVycm9yXG4gICAgc2NyaXB0Lm9ubG9hZCA9ICgpID0+IHtcbiAgICAgIGlmICh3aW5kb3cuc21hcnRDYXB0Y2hhICYmICF0aGlzLnNtYXJ0Q2FwdGNoYUluc3RhbmNlKSB7XG4gICAgICAgIHRoaXMuc21hcnRDYXB0Y2hhSW5zdGFuY2UgPSB3aW5kb3cuc21hcnRDYXB0Y2hhO1xuICAgICAgICB0aGlzLnJlbmRlckNhcHRjaGEoKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgc2NyaXB0Lm9uZXJyb3IgPSAoKSA9PiB7XG4gICAgICB0aGlzLmhhbmRsZUphdmFzY3JpcHRFcnJvcih7XG4gICAgICAgIGZpbGVuYW1lOiBzcmMsXG4gICAgICAgIG1lc3NhZ2U6ICdVbmtub3duIGVycm9yIG9uIHNjcmlwdCBsb2FkaW5nJyxcbiAgICAgICAgY29sOiAwLFxuICAgICAgICBsaW5lOiAwLFxuICAgICAgfSk7XG4gICAgfTtcblxuICAgIC8vIEFkZCBlcnJvciBldmVudCBsaXN0ZW5lciBmb3IgSlMgZXJyb3JzIGluIHRoZSBjYXB0Y2hhIHNjcmlwdFxuICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgdGhpcy5lcnJvckV2ZW50SGFuZGxlciA9IChlOiBFcnJvckV2ZW50KSA9PiB7XG4gICAgICAgIGlmIChlLmZpbGVuYW1lPy5pbmRleE9mKHNyYykgPT09IDApIHtcbiAgICAgICAgICB0aGlzLmhhbmRsZUphdmFzY3JpcHRFcnJvcih7XG4gICAgICAgICAgICBmaWxlbmFtZTogZS5maWxlbmFtZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6IGUubWVzc2FnZSxcbiAgICAgICAgICAgIGNvbDogZS5jb2xubyxcbiAgICAgICAgICAgIGxpbmU6IGUubGluZW5vLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgdGhpcy5lcnJvckV2ZW50SGFuZGxlcik7XG4gICAgfVxuXG4gICAgLy8gQWRkIHNjcmlwdCB0byBkb2N1bWVudFxuICAgIHRoaXMucmVuZGVyZXIyLmFwcGVuZENoaWxkKHRoaXMuZG9jdW1lbnQuYm9keSwgc2NyaXB0KTtcbiAgfVxuXG4gIHByaXZhdGUgcmVuZGVyQ2FwdGNoYSgpOiB2b2lkIHtcbiAgICBjb25zdCBjb250YWluZXIgPSB0aGlzLmNhcHRjaGFDb250YWluZXIoKT8ubmF0aXZlRWxlbWVudDtcbiAgICBpZiAoXG4gICAgICAhY29udGFpbmVyIHx8XG4gICAgICAhdGhpcy5zbWFydENhcHRjaGFJbnN0YW5jZSB8fFxuICAgICAgdGhpcy53aWRnZXRJZCAhPT0gdW5kZWZpbmVkIHx8XG4gICAgICB0aGlzLmRlc3Ryb3llZFxuICAgICkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHBhcmFtczogU21hcnRDYXB0Y2hhUGFyYW1zID0ge1xuICAgICAgc2l0ZWtleTogdGhpcy5zaXRla2V5KCksXG4gICAgICBobDogdGhpcy5sYW5ndWFnZSgpLFxuICAgICAgdGhlbWU6IHRoaXMudGhlbWUoKSxcbiAgICAgIGludmlzaWJsZTogdGhpcy5pbnZpc2libGUoKSxcbiAgICAgIGhpZGVTaGllbGQ6IHRoaXMuaGlkZVNoaWVsZCgpLFxuICAgICAgc2hpZWxkUG9zaXRpb246IHRoaXMuc2hpZWxkUG9zaXRpb24oKSxcbiAgICAgIHRlc3Q6IHRoaXMudGVzdCgpLFxuICAgICAgd2VidmlldzogdGhpcy53ZWJ2aWV3KCksXG4gICAgfTtcblxuICAgIHRyeSB7XG4gICAgICB0aGlzLndpZGdldElkID0gdGhpcy5zbWFydENhcHRjaGFJbnN0YW5jZS5yZW5kZXIoY29udGFpbmVyLCBwYXJhbXMpO1xuICAgICAgdGhpcy5zZXR1cFN1YnNjcmlwdGlvbnMoKTtcbiAgICB9IGNhdGNoIChlcnJvcjogdW5rbm93bikge1xuICAgICAgY29uc29sZS5lcnJvcignW1NtYXJ0Q2FwdGNoYV0gRXJyb3IgcmVuZGVyaW5nIGNhcHRjaGEgd2lkZ2V0OicsIGVycm9yKTtcblxuICAgICAgbGV0IG1lc3NhZ2UgPSAnVW5rbm93biBlcnJvciBkdXJpbmcgcmVuZGVyaW5nJztcbiAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICAgIG1lc3NhZ2UgPSBlcnJvci5tZXNzYWdlO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmhhbmRsZUphdmFzY3JpcHRFcnJvcih7XG4gICAgICAgIGZpbGVuYW1lOiBBUElfTElOSyh0aGlzLmhvc3QoKSksXG4gICAgICAgIG1lc3NhZ2UsXG4gICAgICAgIGNvbDogMCxcbiAgICAgICAgbGluZTogMCxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0dXBTdWJzY3JpcHRpb25zKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLndpZGdldElkID09PSB1bmRlZmluZWQgfHwgIXRoaXMuc21hcnRDYXB0Y2hhSW5zdGFuY2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBTdG9yZSB1bnN1YnNjcmliZSBmdW5jdGlvbnMgZm9yIGNsZWFudXBcbiAgICB0aGlzLnVuc3Vic2NyaWJlRm5zID0gW1xuICAgICAgdGhpcy5zbWFydENhcHRjaGFJbnN0YW5jZS5zdWJzY3JpYmUoXG4gICAgICAgIHRoaXMud2lkZ2V0SWQsXG4gICAgICAgICdjaGFsbGVuZ2UtdmlzaWJsZScsXG4gICAgICAgICgpID0+IHtcbiAgICAgICAgICB0aGlzLmNoYWxsZW5nZVZpc2libGUuZW1pdCgpO1xuICAgICAgICB9XG4gICAgICApLFxuXG4gICAgICB0aGlzLnNtYXJ0Q2FwdGNoYUluc3RhbmNlLnN1YnNjcmliZShcbiAgICAgICAgdGhpcy53aWRnZXRJZCxcbiAgICAgICAgJ2NoYWxsZW5nZS1oaWRkZW4nLFxuICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcignaGlkZGVuJyk7XG4gICAgICAgICAgdGhpcy5jaGFsbGVuZ2VIaWRkZW4uZW1pdCgpO1xuICAgICAgICB9XG4gICAgICApLFxuXG4gICAgICB0aGlzLnNtYXJ0Q2FwdGNoYUluc3RhbmNlLnN1YnNjcmliZShcbiAgICAgICAgdGhpcy53aWRnZXRJZCxcbiAgICAgICAgJ25ldHdvcmstZXJyb3InLFxuICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5uZXR3b3JrRXJyb3IuZW1pdCgpO1xuICAgICAgICB9XG4gICAgICApLFxuXG4gICAgICB0aGlzLnNtYXJ0Q2FwdGNoYUluc3RhbmNlLnN1YnNjcmliZShcbiAgICAgICAgdGhpcy53aWRnZXRJZCxcbiAgICAgICAgJ3N1Y2Nlc3MnLFxuICAgICAgICAoLi4uYXJnczogdW5rbm93bltdKSA9PiB7XG4gICAgICAgICAgY29uc3QgW3Rva2VuXSA9IGFyZ3MgYXMgW3N0cmluZ107XG5cbiAgICAgICAgICB0aGlzLl9pbm5lclZhbHVlLnNldCh0b2tlbik7XG4gICAgICAgICAgdGhpcy5vbkNoYW5nZSh0b2tlbik7XG4gICAgICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICAgICAgICB0aGlzLnN1Y2Nlc3MuZW1pdCh0b2tlbik7XG4gICAgICAgIH1cbiAgICAgICksXG5cbiAgICAgIHRoaXMuc21hcnRDYXB0Y2hhSW5zdGFuY2Uuc3Vic2NyaWJlKFxuICAgICAgICB0aGlzLndpZGdldElkLFxuICAgICAgICAndG9rZW4tZXhwaXJlZCcsXG4gICAgICAgICgpID0+IHtcbiAgICAgICAgICB0aGlzLl9pbm5lclZhbHVlLnNldChudWxsKTtcbiAgICAgICAgICB0aGlzLm9uQ2hhbmdlKG51bGwpO1xuICAgICAgICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgICAgICAgdGhpcy50b2tlbkV4cGlyZWQuZW1pdCgpO1xuICAgICAgICB9XG4gICAgICApLFxuXG4gICAgICB0aGlzLnNtYXJ0Q2FwdGNoYUluc3RhbmNlLnN1YnNjcmliZShcbiAgICAgICAgdGhpcy53aWRnZXRJZCxcbiAgICAgICAgJ2phdmFzY3JpcHQtZXJyb3InLFxuICAgICAgICAoLi4uYXJnczogdW5rbm93bltdKSA9PiB7XG4gICAgICAgICAgY29uc3QgW2Vycm9yXSA9IGFyZ3MgYXMgW0phdmFzY3JpcHRFcnJvclBheWxvYWRdO1xuICAgICAgICAgIHRoaXMuaGFuZGxlSmF2YXNjcmlwdEVycm9yKGVycm9yKTtcbiAgICAgICAgfVxuICAgICAgKSxcbiAgICBdO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVKYXZhc2NyaXB0RXJyb3IoZXJyb3I6IEphdmFzY3JpcHRFcnJvclBheWxvYWQpOiB2b2lkIHtcbiAgICBjb25zb2xlLmVycm9yKCdbU21hcnRDYXB0Y2hhXSBKYXZhc2NyaXB0IGVycm9yOicsIGVycm9yKTtcbiAgICB0aGlzLmphdmFzY3JpcHRFcnJvci5lbWl0KGVycm9yKTtcbiAgfVxuXG4gIC8vIENvbnRyb2xWYWx1ZUFjY2Vzc29yIG1ldGhvZHNcbiAgd3JpdGVWYWx1ZSh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5faW5uZXJWYWx1ZS5zZXQodmFsdWUpOyAvLyBTZXQgdGhlIHNpZ25hbCB2YWx1ZVxuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBzdHJpbmcgfCBudWxsKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgLy8gVmFsaWRhdG9yIG1ldGhvZFxuICB2YWxpZGF0ZSgpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgLy8gV2hlbiB1c2luZyBpbnZpc2libGUgY2FwdGNoYSwgZG9uJ3QgdmFsaWRhdGUgdW50aWwgdXNlciBpbnRlcmFjdHNcbiAgICBpZiAodGhpcy5pbnZpc2libGUoKSAmJiAhdGhpcy5faW5uZXJWYWx1ZSgpKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICAvLyBGb3Igc3RhbmRhcmQgY2FwdGNoYSwgcmVxdWlyZSB0b2tlblxuICAgIGlmICghdGhpcy5pbnZpc2libGUoKSAmJiAhdGhpcy5faW5uZXJWYWx1ZSgpKSB7XG4gICAgICAvLyBBY2Nlc3Mgc2lnbmFsIHZhbHVlXG4gICAgICByZXR1cm4geyBjYXB0Y2hhUmVxdWlyZWQ6IHRydWUgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpbnZpc2libGUtc21hcnQtY2FwdGNoYScsXG4gIHRlbXBsYXRlOiBgIDxkaXYgY2xhc3M9XCJzbWFydC1jYXB0Y2hhXCIgI2NhcHRjaGFDb250YWluZXI+PC9kaXY+IGAsXG4gIHN0eWxlczogW1xuICAgIGBcbiAgICAgIC5zbWFydC1jYXB0Y2hhIHtcbiAgICAgICAgLyogTm8gaGVpZ2h0IG5lZWRlZCBmb3IgaW52aXNpYmxlIGNhcHRjaGEgKi9cbiAgICAgIH1cbiAgICBgLFxuICBdLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEludmlzaWJsZVNtYXJ0Q2FwdGNoYUNvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBJbnZpc2libGVTbWFydENhcHRjaGFDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIEludmlzaWJsZVNtYXJ0Q2FwdGNoYUNvbXBvbmVudFxuICBleHRlbmRzIFNtYXJ0Q2FwdGNoYUNvbXBvbmVudFxuICBpbXBsZW1lbnRzIE9uSW5pdFxue1xuICAvLyBBbHdheXMgc2V0IGludmlzaWJsZSB0byB0cnVlXG4gIG92ZXJyaWRlIGludmlzaWJsZSA9IGlucHV0KHRydWUpO1xuXG4gIC8vIE92ZXJyaWRlIG5nT25Jbml0IHRvIGVuc3VyZSBpbnZpc2libGUgaXMgYWx3YXlzIHRydWVcbiAgb3ZlcnJpZGUgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgLy8gQ2FsbCBwYXJlbnQgaW5pdGlhbGl6YXRpb25cbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuICB9XG59XG4iXX0=","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXJvY2steWFuZGV4LXNtYXJ0LWNhcHRjaGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL3lhbmRleC1zbWFydC1jYXB0Y2hhL3NyYy9uZ3gtcm9jay15YW5kZXgtc21hcnQtY2FwdGNoYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":[],"mappings":"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"}
|
package/index.d.ts
CHANGED
|
@@ -1 +1,94 @@
|
|
|
1
|
-
|
|
1
|
+
import * as _angular_core from '@angular/core';
|
|
2
|
+
import { OnInit, AfterViewInit, OnDestroy, ElementRef } from '@angular/core';
|
|
3
|
+
import { ControlValueAccessor, Validator, ValidationErrors } from '@angular/forms';
|
|
4
|
+
|
|
5
|
+
declare global {
|
|
6
|
+
interface Window {
|
|
7
|
+
smartCaptcha: SmartCaptchaInstance;
|
|
8
|
+
__onSmartCaptchaReady: () => void;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
interface SmartCaptchaInstance {
|
|
12
|
+
render: (container: HTMLElement, params: SmartCaptchaParams) => number;
|
|
13
|
+
destroy: (widgetId: number) => void;
|
|
14
|
+
executePromise: (widgetId?: number) => Promise<string>;
|
|
15
|
+
subscribe: (widgetId: number, event: SmartCaptchaEvent, callback: (...args: unknown[]) => void) => (() => void) | undefined;
|
|
16
|
+
execute: (widgetId: number) => void;
|
|
17
|
+
setTheme?: (widgetId: number, theme: 'light' | 'dark' | 'auto') => void;
|
|
18
|
+
}
|
|
19
|
+
interface SmartCaptchaParams {
|
|
20
|
+
sitekey: string;
|
|
21
|
+
hl?: 'ru' | 'en' | 'be' | 'kk' | 'tt' | 'uk' | 'uz' | 'tr';
|
|
22
|
+
theme?: 'light' | 'dark' | 'auto';
|
|
23
|
+
invisible?: boolean;
|
|
24
|
+
hideShield?: boolean;
|
|
25
|
+
shieldPosition?: 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right';
|
|
26
|
+
test?: boolean;
|
|
27
|
+
webview?: boolean;
|
|
28
|
+
}
|
|
29
|
+
type SmartCaptchaEvent = 'challenge-visible' | 'challenge-hidden' | 'network-error' | 'success' | 'token-expired' | 'javascript-error';
|
|
30
|
+
interface JavascriptErrorPayload {
|
|
31
|
+
filename: string;
|
|
32
|
+
message: string;
|
|
33
|
+
col: number;
|
|
34
|
+
line: number;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
declare const startLoading: Map<string, boolean>;
|
|
38
|
+
declare class SmartCaptchaComponent implements ControlValueAccessor, Validator, OnInit, AfterViewInit, OnDestroy {
|
|
39
|
+
sitekey: _angular_core.InputSignal<string>;
|
|
40
|
+
invisible: _angular_core.InputSignal<boolean>;
|
|
41
|
+
visible: _angular_core.InputSignal<boolean | undefined>;
|
|
42
|
+
hideShield: _angular_core.InputSignal<boolean | undefined>;
|
|
43
|
+
shieldPosition: _angular_core.InputSignal<"top-left" | "top-right" | "bottom-left" | "bottom-right" | undefined>;
|
|
44
|
+
language: _angular_core.InputSignal<"ru" | "en" | "be" | "kk" | "tt" | "uk" | "uz" | "tr" | undefined>;
|
|
45
|
+
host: _angular_core.InputSignal<string | undefined>;
|
|
46
|
+
/**
|
|
47
|
+
* @deprecated This setting is deprecated and must only be changed via the Yandex Cloud interface.
|
|
48
|
+
*/
|
|
49
|
+
theme: _angular_core.InputSignal<"light" | "dark" | "auto">;
|
|
50
|
+
test: _angular_core.InputSignal<boolean | undefined>;
|
|
51
|
+
webview: _angular_core.InputSignal<boolean | undefined>;
|
|
52
|
+
challengeHidden: _angular_core.OutputEmitterRef<void>;
|
|
53
|
+
challengeVisible: _angular_core.OutputEmitterRef<void>;
|
|
54
|
+
success: _angular_core.OutputEmitterRef<string>;
|
|
55
|
+
networkError: _angular_core.OutputEmitterRef<void>;
|
|
56
|
+
tokenExpired: _angular_core.OutputEmitterRef<void>;
|
|
57
|
+
javascriptError: _angular_core.OutputEmitterRef<JavascriptErrorPayload>;
|
|
58
|
+
captchaContainer: _angular_core.Signal<ElementRef<HTMLDivElement> | undefined>;
|
|
59
|
+
private readonly renderer2;
|
|
60
|
+
private readonly document;
|
|
61
|
+
private readonly platformId;
|
|
62
|
+
protected widgetId: number | undefined;
|
|
63
|
+
protected smartCaptchaInstance: SmartCaptchaInstance | undefined;
|
|
64
|
+
protected destroyed: boolean;
|
|
65
|
+
private unsubscribeFns;
|
|
66
|
+
private errorEventHandler;
|
|
67
|
+
private onChange;
|
|
68
|
+
private onTouched;
|
|
69
|
+
private readonly _innerValue;
|
|
70
|
+
private callbackIndex;
|
|
71
|
+
constructor();
|
|
72
|
+
ngOnInit(): void;
|
|
73
|
+
ngAfterViewInit(): void;
|
|
74
|
+
ngOnDestroy(): void;
|
|
75
|
+
private loadScript;
|
|
76
|
+
private renderCaptcha;
|
|
77
|
+
private setupSubscriptions;
|
|
78
|
+
private handleJavascriptError;
|
|
79
|
+
writeValue(value: string): void;
|
|
80
|
+
registerOnChange(fn: (value: string | null) => void): void;
|
|
81
|
+
registerOnTouched(fn: () => void): void;
|
|
82
|
+
validate(): ValidationErrors | null;
|
|
83
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SmartCaptchaComponent, never>;
|
|
84
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SmartCaptchaComponent, "smart-captcha", never, { "sitekey": { "alias": "sitekey"; "required": true; "isSignal": true; }; "invisible": { "alias": "invisible"; "required": false; "isSignal": true; }; "visible": { "alias": "visible"; "required": false; "isSignal": true; }; "hideShield": { "alias": "hideShield"; "required": false; "isSignal": true; }; "shieldPosition": { "alias": "shieldPosition"; "required": false; "isSignal": true; }; "language": { "alias": "language"; "required": false; "isSignal": true; }; "host": { "alias": "host"; "required": false; "isSignal": true; }; "theme": { "alias": "theme"; "required": false; "isSignal": true; }; "test": { "alias": "test"; "required": false; "isSignal": true; }; "webview": { "alias": "webview"; "required": false; "isSignal": true; }; }, { "challengeHidden": "challengeHidden"; "challengeVisible": "challengeVisible"; "success": "success"; "networkError": "networkError"; "tokenExpired": "tokenExpired"; "javascriptError": "javascriptError"; }, never, never, true, never>;
|
|
85
|
+
}
|
|
86
|
+
declare class InvisibleSmartCaptchaComponent extends SmartCaptchaComponent implements OnInit {
|
|
87
|
+
invisible: _angular_core.InputSignal<boolean>;
|
|
88
|
+
ngOnInit(): void;
|
|
89
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<InvisibleSmartCaptchaComponent, never>;
|
|
90
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<InvisibleSmartCaptchaComponent, "invisible-smart-captcha", never, { "invisible": { "alias": "invisible"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
export { InvisibleSmartCaptchaComponent, SmartCaptchaComponent, startLoading };
|
|
94
|
+
export type { JavascriptErrorPayload, SmartCaptchaInstance, SmartCaptchaParams };
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare function isValidHost(str: string | undefined): boolean;
|
package/lib/types/index.d.ts
DELETED
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
export {};
|
|
2
|
-
declare global {
|
|
3
|
-
interface Window {
|
|
4
|
-
smartCaptcha: SmartCaptchaInstance;
|
|
5
|
-
__onSmartCaptchaReady: () => void;
|
|
6
|
-
}
|
|
7
|
-
}
|
|
8
|
-
export interface SmartCaptchaInstance {
|
|
9
|
-
render: (container: HTMLElement, params: SmartCaptchaParams) => number;
|
|
10
|
-
destroy: (widgetId: number) => void;
|
|
11
|
-
subscribe: (widgetId: number, event: SmartCaptchaEvent, callback: (...args: unknown[]) => void) => (() => void) | undefined;
|
|
12
|
-
execute: (widgetId: number) => void;
|
|
13
|
-
setTheme?: (widgetId: number, theme: 'light' | 'dark' | 'auto') => void;
|
|
14
|
-
}
|
|
15
|
-
export interface SmartCaptchaParams {
|
|
16
|
-
sitekey: string;
|
|
17
|
-
hl?: string;
|
|
18
|
-
theme?: 'light' | 'dark' | 'auto';
|
|
19
|
-
invisible?: boolean;
|
|
20
|
-
hideShield?: boolean;
|
|
21
|
-
shieldPosition?: 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right';
|
|
22
|
-
test?: boolean;
|
|
23
|
-
webview?: boolean;
|
|
24
|
-
}
|
|
25
|
-
type SmartCaptchaEvent = 'challenge-visible' | 'challenge-hidden' | 'network-error' | 'success' | 'token-expired' | 'javascript-error';
|
|
26
|
-
export interface JavascriptErrorPayload {
|
|
27
|
-
filename: string;
|
|
28
|
-
message: string;
|
|
29
|
-
col: number;
|
|
30
|
-
line: number;
|
|
31
|
-
}
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
import { AfterViewInit, ElementRef, OnDestroy, OnInit, Renderer2 } from '@angular/core';
|
|
2
|
-
import { ControlValueAccessor, ValidationErrors, Validator } from '@angular/forms';
|
|
3
|
-
import { JavascriptErrorPayload, SmartCaptchaInstance } from '../types';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
export declare const startLoading: Map<string, boolean>;
|
|
6
|
-
export declare class SmartCaptchaComponent implements ControlValueAccessor, Validator, OnInit, AfterViewInit, OnDestroy {
|
|
7
|
-
private renderer2;
|
|
8
|
-
private document;
|
|
9
|
-
private platformId;
|
|
10
|
-
sitekey: import("@angular/core").InputSignal<string>;
|
|
11
|
-
invisible: import("@angular/core").InputSignal<boolean>;
|
|
12
|
-
visible: import("@angular/core").InputSignal<boolean | undefined>;
|
|
13
|
-
hideShield: import("@angular/core").InputSignal<boolean | undefined>;
|
|
14
|
-
shieldPosition: import("@angular/core").InputSignal<"top-left" | "top-right" | "bottom-left" | "bottom-right" | undefined>;
|
|
15
|
-
language: import("@angular/core").InputSignal<string | undefined>;
|
|
16
|
-
host: import("@angular/core").InputSignal<string | undefined>;
|
|
17
|
-
/**
|
|
18
|
-
* @deprecated This setting is deprecated and must only be changed via the Yandex Cloud interface.
|
|
19
|
-
*/
|
|
20
|
-
theme: import("@angular/core").InputSignal<"light" | "dark" | "auto">;
|
|
21
|
-
test: import("@angular/core").InputSignal<boolean | undefined>;
|
|
22
|
-
webview: import("@angular/core").InputSignal<boolean | undefined>;
|
|
23
|
-
challengeHidden: import("@angular/core").OutputEmitterRef<void>;
|
|
24
|
-
challengeVisible: import("@angular/core").OutputEmitterRef<void>;
|
|
25
|
-
success: import("@angular/core").OutputEmitterRef<string>;
|
|
26
|
-
networkError: import("@angular/core").OutputEmitterRef<void>;
|
|
27
|
-
tokenExpired: import("@angular/core").OutputEmitterRef<void>;
|
|
28
|
-
javascriptError: import("@angular/core").OutputEmitterRef<JavascriptErrorPayload>;
|
|
29
|
-
captchaContainer: import("@angular/core").Signal<ElementRef<HTMLDivElement> | undefined>;
|
|
30
|
-
protected widgetId: number | undefined;
|
|
31
|
-
protected smartCaptchaInstance: SmartCaptchaInstance | undefined;
|
|
32
|
-
protected destroyed: boolean;
|
|
33
|
-
private unsubscribeFns;
|
|
34
|
-
private errorEventHandler;
|
|
35
|
-
private onChange;
|
|
36
|
-
private onTouched;
|
|
37
|
-
private _innerValue;
|
|
38
|
-
private callbackIndex;
|
|
39
|
-
constructor(renderer2: Renderer2, document: Document, platformId: object);
|
|
40
|
-
ngOnInit(): void;
|
|
41
|
-
ngAfterViewInit(): void;
|
|
42
|
-
ngOnDestroy(): void;
|
|
43
|
-
private loadScript;
|
|
44
|
-
private renderCaptcha;
|
|
45
|
-
private setupSubscriptions;
|
|
46
|
-
private handleJavascriptError;
|
|
47
|
-
writeValue(value: string): void;
|
|
48
|
-
registerOnChange(fn: (value: string | null) => void): void;
|
|
49
|
-
registerOnTouched(fn: () => void): void;
|
|
50
|
-
validate(): ValidationErrors | null;
|
|
51
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<SmartCaptchaComponent, never>;
|
|
52
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<SmartCaptchaComponent, "smart-captcha", never, { "sitekey": { "alias": "sitekey"; "required": true; "isSignal": true; }; "invisible": { "alias": "invisible"; "required": false; "isSignal": true; }; "visible": { "alias": "visible"; "required": false; "isSignal": true; }; "hideShield": { "alias": "hideShield"; "required": false; "isSignal": true; }; "shieldPosition": { "alias": "shieldPosition"; "required": false; "isSignal": true; }; "language": { "alias": "language"; "required": false; "isSignal": true; }; "host": { "alias": "host"; "required": false; "isSignal": true; }; "theme": { "alias": "theme"; "required": false; "isSignal": true; }; "test": { "alias": "test"; "required": false; "isSignal": true; }; "webview": { "alias": "webview"; "required": false; "isSignal": true; }; }, { "challengeHidden": "challengeHidden"; "challengeVisible": "challengeVisible"; "success": "success"; "networkError": "networkError"; "tokenExpired": "tokenExpired"; "javascriptError": "javascriptError"; }, never, never, true, never>;
|
|
53
|
-
}
|
|
54
|
-
export declare class InvisibleSmartCaptchaComponent extends SmartCaptchaComponent implements OnInit {
|
|
55
|
-
invisible: import("@angular/core").InputSignal<boolean>;
|
|
56
|
-
ngOnInit(): void;
|
|
57
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<InvisibleSmartCaptchaComponent, never>;
|
|
58
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<InvisibleSmartCaptchaComponent, "invisible-smart-captcha", never, { "invisible": { "alias": "invisible"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
59
|
-
}
|