{"version":3,"file":"angx-ngx-easy-captcha.mjs","sources":["../../../../projects/angx/ngx-easy-captcha/src/lib/enums/dynamic-scripts-enum.ts","../../../../projects/angx/ngx-easy-captcha/src/lib/enums/element-selector-type.ts","../../../../projects/angx/ngx-easy-captcha/src/lib/script-store.ts","../../../../projects/angx/ngx-easy-captcha/src/lib/script-loader.service.ts","../../../../projects/angx/ngx-easy-captcha/src/lib/google-recaptcha.service.ts","../../../../projects/angx/ngx-easy-captcha/src/lib/cloudflare-turnstile.service.ts","../../../../projects/angx/ngx-easy-captcha/src/lib/enums/captcha-provider.ts","../../../../projects/angx/ngx-easy-captcha/src/lib/ngx-easy-captcha.service.ts","../../../../projects/angx/ngx-easy-captcha/src/public-api.ts","../../../../projects/angx/ngx-easy-captcha/src/angx-ngx-easy-captcha.ts"],"sourcesContent":["export enum DynamicScripts {\r\n    GoogleRecaptcha = 'google-recaptcha',\r\n    CloudFlareTurnstile = \"cloudflare-turnstile\"\r\n}","export enum ElementSelectorType {\r\n    Class,\r\n    Id\r\n}","import { DynamicScripts } from \"./enums/dynamic-scripts-enum\";\r\nimport { IScript } from \"./interfaces/scripts\";\r\n\r\nexport const ScriptStore: IScript[] = [\r\n    { name: DynamicScripts.GoogleRecaptcha, src: `https://www.google.com/recaptcha/api.js?render=CAPTCHA_SITE_KEY`, id: \"google-recaptcha\", async: true, defer: true },\r\n    { name: DynamicScripts.CloudFlareTurnstile, src: `https://challenges.cloudflare.com/turnstile/v0/api.js?render=explicit`, id: \"cloudflare-turnstile\" },\r\n];","import { isPlatformBrowser } from '@angular/common';\r\nimport { Inject, Injectable, PLATFORM_ID } from '@angular/core';\r\nimport { DynamicScripts } from './enums/dynamic-scripts-enum';\r\nimport { ElementSelectorType } from './enums/element-selector-type';\r\nimport { IScriptLoaderResponse } from './interfaces/script-loader-response';\r\nimport { IScript, IElementSelector } from './interfaces/scripts';\r\nimport { ScriptStore } from './script-store';\r\n\r\ndeclare var window: any;\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class ScriptLoaderService {\r\n  private isBrowser = false;\r\n  private scripts: IScript[] = ScriptStore;\r\n\r\n  constructor(@Inject(PLATFORM_ID) private platformId: Object) {\r\n    this.isBrowser = isPlatformBrowser(this.platformId);\r\n  }\r\n\r\n  private getScript(name: DynamicScripts): IScript | undefined {\r\n    return ScriptStore.find(s => s.name == name);\r\n  }\r\n\r\n  removeScriptAndTraces(name: DynamicScripts, ...elementSelectors: IElementSelector[]) {\r\n    const script = this.getScript(name);\r\n    if (this.isBrowser && script) {\r\n      document.getElementById(script.id ?? '')?.remove();\r\n      script.loaded = false;\r\n      if (elementSelectors && elementSelectors.length > 0) {\r\n        elementSelectors.forEach(elemSelector => {\r\n          if (elemSelector.type === ElementSelectorType.Id) {\r\n            document.getElementById(elemSelector.name)?.remove();\r\n          } else if (elemSelector.type === ElementSelectorType.Class) {\r\n            var elementsToRemove = document.getElementsByClassName(elemSelector.name);\r\n            for (let i = 0; i < elementsToRemove.length; i++) {\r\n              elementsToRemove[i]?.remove();\r\n            }\r\n          }\r\n        });\r\n      }\r\n    }\r\n  }\r\n\r\n  removeWindowTraces(name: string) {\r\n    if (this.isBrowser) {\r\n      delete window[name];\r\n    }\r\n  }\r\n\r\n  load(siteKey: String, ...scripts: string[]): Promise<IScriptLoaderResponse[]> {\r\n    var promises: any[] = [];\r\n    scripts.forEach((scriptName: string) => {\r\n      const script = this.scripts.find(s => s.name === scriptName);\r\n      if (script && siteKey) {\r\n        script.src = script?.src.replace('CAPTCHA_SITE_KEY', siteKey as string);\r\n      }\r\n      promises.push(this.loadScript(script));\r\n    });\r\n    return Promise.all<IScriptLoaderResponse>(promises);\r\n  }\r\n\r\n  loadScript(script: IScript | undefined) {\r\n    if (!script) {\r\n      console.error('Can not load null script');\r\n      return;\r\n    }\r\n    return new Promise((resolve, reject) => {\r\n      //resolve if already loaded\r\n      if (script.loaded) {\r\n        resolve({ script: script.name, loaded: true, status: 'Already Loaded' });\r\n      }\r\n      else {\r\n        if (this.isBrowser) {\r\n          let scriptElement = document.createElement('script');\r\n          scriptElement.id = script.id ?? '';\r\n          scriptElement.type = 'text/javascript';\r\n          scriptElement.src = script.src;\r\n          scriptElement.defer = script.async ?? false;\r\n          scriptElement.async = script.defer ?? false;\r\n          if ((scriptElement as any).readyState) {  //IE\r\n            (scriptElement as any).onreadystatechange = () => {\r\n              if ((scriptElement as any).readyState === \"loaded\" || (scriptElement as any).readyState === \"complete\") {\r\n                (scriptElement as any).onreadystatechange = null;\r\n                script.loaded = true;\r\n                resolve({ script: script.name, loaded: true, status: 'Loaded' });\r\n              }\r\n            };\r\n          } else {  //Others\r\n            scriptElement.onload = () => {\r\n              script.loaded = true;\r\n              resolve({ script: script.name, loaded: true, status: 'Loaded' });\r\n            };\r\n          }\r\n          scriptElement.onerror = (error: any) => resolve({ script: script.name, loaded: false, status: 'Loaded' });\r\n          document.getElementsByTagName('head')[0].appendChild(scriptElement);\r\n        }\r\n      }\r\n    });\r\n  }\r\n}\r\n","import { Inject, Injectable, InjectionToken } from '@angular/core';\r\nimport { ScriptLoaderService } from './script-loader.service';\r\nimport { Subject, BehaviorSubject, Observable, finalize } from 'rxjs';\r\nimport { DynamicScripts } from './enums/dynamic-scripts-enum';\r\nimport { ElementSelectorType } from './enums/element-selector-type';\r\nimport { IScriptLoaderResponse } from './interfaces/script-loader-response';\r\nimport { IElementSelector } from './interfaces/scripts';\r\n\r\ndeclare var grecaptcha: any;\r\n\r\n@Injectable()\r\nexport class GoogleRecaptchaService {\r\n\r\n  private recaptchaToken: Subject<string> = new BehaviorSubject<string>('');\r\n\r\n  constructor(private initializerString: String, private scriptLoader: ScriptLoaderService, private captchaSiteKey: String) {\r\n    this.scriptLoader.load(this.captchaSiteKey, DynamicScripts.GoogleRecaptcha).then((data: IScriptLoaderResponse[]) => {\r\n      if (data && data[0]?.loaded) {\r\n        this.initializeRecaptchaPromise();\r\n      }\r\n    }).catch(error => console.log(error));\r\n  }\r\n\r\n  get $(): Observable<string> {\r\n    return this.recaptchaToken.asObservable().pipe(\r\n      finalize(() => this.removeRecaptcha()) // Execute when the observable completes\r\n    );\r\n  }\r\n\r\n  private removeRecaptcha() {\r\n    this.scriptLoader.removeScriptAndTraces(DynamicScripts.GoogleRecaptcha, {name: 'grecaptcha-badge', type: ElementSelectorType.Class} as IElementSelector)\r\n  }\r\n\r\n  private initializeRecaptchaPromise() {\r\n    grecaptcha.ready(() => {\r\n      grecaptcha.execute(this.captchaSiteKey, { action: this.initializerString }).then((token: string) => {\r\n        if(token){\r\n          this.recaptchaToken.next(token);\r\n        }\r\n      });\r\n    });\r\n  }\r\n\r\n  public reset(){\r\n    grecaptcha.reset();\r\n  }\r\n}\r\n","import { AfterViewInit, Injectable } from '@angular/core';\r\nimport { ScriptLoaderService } from './script-loader.service';\r\nimport { Subject, BehaviorSubject, Observable, finalize } from 'rxjs';\r\nimport { DynamicScripts } from './enums/dynamic-scripts-enum';\r\nimport { IScriptLoaderResponse } from './interfaces/script-loader-response';\r\ndeclare var turnstile: any;\r\n\r\n@Injectable()\r\nexport class CloudFlareTurnstileService {\r\n\r\n    private turnstileToken: Subject<string> = new BehaviorSubject<string>('');\r\n    private turnstileWidgetIds: string[] = [];\r\n\r\n    constructor(private initializerString: String, private scriptLoader: ScriptLoaderService, private captchaSiteKey: String) {\r\n        this.scriptLoader.load(this.captchaSiteKey, DynamicScripts.CloudFlareTurnstile).then((data: IScriptLoaderResponse[]) => {\r\n            if (data && data[0]?.loaded) {\r\n                this.initializeTurnstilePromise();\r\n            }\r\n        }).catch(error => console.log(error));\r\n    }\r\n\r\n    get $(): Observable<string> {\r\n        return this.turnstileToken.asObservable().pipe(\r\n            finalize(() => this.removeTurnstile()) // Execute when the observable completes\r\n        );\r\n    }\r\n\r\n    private removeTurnstile() {\r\n        this.scriptLoader.removeScriptAndTraces(DynamicScripts.CloudFlareTurnstile);\r\n        this.turnstileWidgetIds.forEach(widgetId => turnstile.remove(widgetId));\r\n        this.scriptLoader.removeWindowTraces('turnstile');\r\n    }\r\n\r\n    private initializeTurnstilePromise() {\r\n        document.querySelectorAll(`[id^=\"${this.initializerString}\"]`).forEach(elem => {\r\n            turnstile.ready(() => {\r\n                this.turnstileWidgetIds.push(turnstile.render(`#${elem.id}`, {\r\n                    sitekey: this.captchaSiteKey,\r\n                    size: 'flexible',\r\n                    callback: (token: string) => {\r\n                        if (token) {\r\n                            this.turnstileToken.next(token);\r\n                        }\r\n                    },\r\n                }));\r\n            });\r\n        });\r\n    }\r\n\r\n    public reset() {\r\n        this.turnstileWidgetIds.forEach(id => turnstile.reset(id));\r\n    }\r\n}\r\n","export enum CaptchaProvider {\r\n    Google,\r\n    CloudFlare\r\n}","import { Inject, Injectable, InjectionToken, Injector } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { GoogleRecaptchaService } from './google-recaptcha.service';\r\nimport { CloudFlareTurnstileService } from './cloudflare-turnstile.service';\r\nimport { ScriptLoaderService } from './script-loader.service';\r\nimport { CaptchaProvider } from './enums/captcha-provider';\r\n\r\nexport const STRING_INITIALIZER = new InjectionToken<String>('STRING_INITIALIZER');\r\nexport const CAPTCHA_PROVIDER = new InjectionToken<CaptchaProvider>('CAPTCHA_PROVIDER');\r\nexport const CAPTCHA_SITE_KEY = new InjectionToken<CaptchaProvider>('CAPTCHA_SITE_KEY');\r\n\r\n@Injectable({\r\n    providedIn: 'root'\r\n})\r\nexport class NgxEasyCaptchaService {\r\n\r\n    private googleRecaptchaService!: GoogleRecaptchaService;\r\n    private cloudFlareTurnstileService!: CloudFlareTurnstileService;\r\n    private scriptLoaderService!: ScriptLoaderService;\r\n\r\n    constructor(private injector: Injector, @Inject(STRING_INITIALIZER) private initializerString: String, @Inject(CAPTCHA_PROVIDER) private captchaProvider: CaptchaProvider, @Inject(CAPTCHA_SITE_KEY) private captchaSiteKey: String) {\r\n        this.scriptLoaderService = <ScriptLoaderService>this.injector.get(ScriptLoaderService);\r\n        if (this.captchaProvider === CaptchaProvider.Google) {\r\n            if (!this.initializerString) {\r\n                console.error('DOM Id to render cloudflare turnstile is not provided. Please provide DOM selector Id without \"#\". For eg:\\nproviders: [{ provide: STRING_INITIALIZER, useValue: \"turnstile-captcha\" }]');\r\n            }\r\n            this.googleRecaptchaService = new GoogleRecaptchaService(this.initializerString, this.scriptLoaderService, this.captchaSiteKey);\r\n        } else if (captchaProvider === CaptchaProvider.CloudFlare) {\r\n            if (!this.initializerString) {\r\n                console.error('Re-captcha action is undefined. Please provide valid action. For eg:\\nproviders: [{ provide: STRING_INITIALIZER, useValue: \"login\" }]');\r\n            }\r\n            this.cloudFlareTurnstileService = new CloudFlareTurnstileService(this.initializerString, this.scriptLoaderService, this.captchaSiteKey);\r\n        }\r\n    }\r\n\r\n    get $(): Observable<string> {\r\n        if (this.captchaProvider === CaptchaProvider.Google) {\r\n            return this.googleRecaptchaService.$;\r\n        } else if (this.captchaProvider === CaptchaProvider.CloudFlare) {\r\n            return this.cloudFlareTurnstileService.$;\r\n        }\r\n        return new Observable<string>();\r\n    }\r\n\r\n    public reset() {\r\n        if (this.captchaProvider === CaptchaProvider.Google) {\r\n            this.googleRecaptchaService.reset();\r\n        } else if (this.captchaProvider === CaptchaProvider.CloudFlare) {\r\n            this.cloudFlareTurnstileService.reset();\r\n        }\r\n    }\r\n}\r\n","/*\r\n * Public API Surface of ngx-easy-captcha\r\n */\r\n\r\nexport * from './lib/ngx-easy-captcha.service';\r\nexport * from './lib/enums/captcha-provider';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.ScriptLoaderService"],"mappings":"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"}