{"version":3,"file":"ngx-slider-recaptcha.mjs","sources":["../../../src/lib/config/default-ngx-slider-recaptcha-config.ts","../../../src/lib/services/default-ngx-slider-recaptcha-image.service.ts","../../../src/lib/services/default-ngx-slider-recaptcha-verification.service.ts","../../../src/lib/tokens/ngx-slider-recaptcha-image-service.token.ts","../../../src/lib/tokens/ngx-slider-recaptcha-config.token.ts","../../../src/lib/tokens/ngx-slider-recaptcha-verification-service.token.ts","../../../src/lib/components/ngx-slider-recaptcha.component.ts","../../../src/lib/components/ngx-slider-recaptcha.component.html","../../../src/lib/ngx-slider-recaptcha.module.ts","../../../src/public-api.ts","../../../src/ngx-slider-recaptcha.ts"],"sourcesContent":["import { NgxSliderRecaptchaConfig } from \"./ngx-slider-recaptcha-config\";\r\n\r\nexport const DEFAULT_SLIDER_RECAPTCHA_CONFIG: NgxSliderRecaptchaConfig = {\r\n    width: 300,\r\n    height: 200,\r\n    puzzleSize: 45,\r\n    puzzleRadius: 10,\r\n\r\n    toleranceOffset: 5,\r\n    maxRetryAttempts: 3,\r\n    allowRefresh: false,\r\n    allowResponsiveWidth: false,\r\n    disabled: false,\r\n\r\n    primaryColor: '#0083c1',\r\n    errorColor: '#c4161c',\r\n    successColor: '#52ccba',\r\n    textColor: '#4b4b4b',\r\n    sliderContainerBackgroundColor: '#f7f9fa',\r\n    sliderContainerBorderColor: '#e6e8eb',\r\n    borderRadius: 4,\r\n\r\n    loadingText: 'Loading...',\r\n    instructionText: 'Slide to complete the puzzle',\r\n};","import { Injectable } from '@angular/core';\r\nimport { Observable, of } from 'rxjs';\r\nimport { NgxSliderRecaptchaImageService } from '../core/ngx-slider-recaptcha-image-service.interface';\r\n\r\n@Injectable({\r\n    providedIn: 'root'\r\n})\r\nexport class DefaultNgxSliderRecaptchaImageService implements NgxSliderRecaptchaImageService {\r\n    getSliderImage(): Observable<string> {\r\n        return of(`assets/images/ngx-slider-recaptcha-${Math.floor(Math.random() * 5)}.jpg`);\r\n    }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Observable, of } from 'rxjs';\r\nimport { NgxSliderRecaptchaVerificationService } from '../core/ngx-slider-recaptcha-verification-service.interface';\r\nimport { VerificationResponse } from '../core/ngx-slider-recaptcha-verification-response.interface';\r\nimport { VerificationRequest } from '../core/ngx-slider-recaptcha-verification-request.interface';\r\n\r\n@Injectable({\r\n    providedIn: 'root'\r\n})\r\nexport class DefaultNgxSliderRecaptchaVerificationService implements NgxSliderRecaptchaVerificationService<VerificationRequest, VerificationResponse> {\r\n    verify(verificationRequest: VerificationRequest): Observable<VerificationResponse> {\r\n        if (!verificationRequest?.sliderMovements?.length) {\r\n            return of({\r\n                success: false,\r\n                message: 'No slider movement detected. Please try again.'\r\n            });\r\n        }\r\n\r\n        const { sliderMovements, puzzleBlockPosition, puzzlePosition, toleranceOffset: offset } = verificationRequest;\r\n        const averageMovement = sliderMovements.reduce((sum, value) => sum + value, 0) / sliderMovements.length;\r\n        const movementDeviation = Math.sqrt(\r\n            sliderMovements.reduce((sum, value) => sum + Math.pow(value - averageMovement, 2), 0) / sliderMovements.length\r\n        );\r\n\r\n        const isVerified = movementDeviation !== 0;\r\n        const isSpliced = Math.abs(puzzleBlockPosition - puzzlePosition) < (offset ?? 0);\r\n\r\n\r\n        const response: VerificationResponse = {\r\n            success: isSpliced && isVerified,\r\n            message: isSpliced && isVerified ? 'Verification successful' : 'Verification failed',\r\n        };\r\n        return of(response);\r\n    }\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\nimport { NgxSliderRecaptchaImageService } from '../core/ngx-slider-recaptcha-image-service.interface';\r\n\r\nexport const NGX_SLIDER_RECAPTCHA_IMAGE_SERVICE_TOKEN = new InjectionToken<NgxSliderRecaptchaImageService>('NgxSliderRecaptchaImageService');\r\n","import { InjectionToken } from \"@angular/core\";\r\nimport { NgxSliderRecaptchaConfig } from \"../config/ngx-slider-recaptcha-config\";\r\n\r\nexport const NGX_SLIDER_RECAPTCHA_CONFIG_TOKEN = new InjectionToken<NgxSliderRecaptchaConfig>('NgxSliderRecaptchaConfig');","import { InjectionToken } from \"@angular/core\";\r\nimport { NgxSliderRecaptchaVerificationService } from \"../core/ngx-slider-recaptcha-verification-service.interface\";\r\nimport { VerificationResponse } from \"../core/ngx-slider-recaptcha-verification-response.interface\";\r\nimport { VerificationRequest } from \"../core/ngx-slider-recaptcha-verification-request.interface\";\r\n\r\nexport const NGX_SLIDER_RECAPTCHA_VERIFICATION_SERVICE_TOKEN = new InjectionToken<NgxSliderRecaptchaVerificationService<VerificationRequest, VerificationResponse>>('NgxSliderRecaptchaVerificationService');\r\n","import { AfterViewInit, ChangeDetectorRef, Component, ElementRef, EventEmitter, HostListener, Inject, Input, OnChanges, OnInit, Output, Renderer2, SimpleChanges, TemplateRef, ViewChild } from '@angular/core';\r\nimport { VerificationStatus } from '../types/verification-status.type';\r\nimport { NGX_SLIDER_RECAPTCHA_VERIFICATION_SERVICE_TOKEN } from '../tokens/ngx-slider-recaptcha-verification-service.token';\r\nimport { NgxSliderRecaptchaVerificationService } from '../core/ngx-slider-recaptcha-verification-service.interface';\r\nimport { NgxSliderRecaptchaImageService } from '../core/ngx-slider-recaptcha-image-service.interface';\r\nimport { NGX_SLIDER_RECAPTCHA_IMAGE_SERVICE_TOKEN } from '../tokens/ngx-slider-recaptcha-image-service.token';\r\nimport { NGX_SLIDER_RECAPTCHA_CONFIG_TOKEN } from '../tokens/ngx-slider-recaptcha-config.token';\r\nimport { NgxSliderRecaptchaConfig } from '../config/ngx-slider-recaptcha-config';\r\nimport { DEFAULT_SLIDER_RECAPTCHA_CONFIG } from '../config/default-ngx-slider-recaptcha-config';\r\nimport { VerificationResponse } from '../core/ngx-slider-recaptcha-verification-response.interface';\r\nimport { CommonModule } from '@angular/common';\r\nimport { VerificationRequest } from '../core/ngx-slider-recaptcha-verification-request.interface';\r\n\r\n@Component({\r\n  standalone: true,\r\n  selector: 'ngx-slider-recaptcha',\r\n  templateUrl: './ngx-slider-recaptcha.component.html',\r\n  styleUrls: ['./ngx-slider-recaptcha.component.scss'],\r\n  imports: [CommonModule]\r\n})\r\nexport class NgxSliderRecaptchaComponent implements OnInit, OnChanges, AfterViewInit {\r\n  @ViewChild('canvas', { static: true }) private canvas!: ElementRef<HTMLCanvasElement>;\r\n  @ViewChild('block', { static: true }) private block!: ElementRef<HTMLCanvasElement>;\r\n  @ViewChild('captchaContainer', { static: true }) private captchaContainer!: ElementRef<HTMLElement>;\r\n  @ViewChild('slider', { static: true }) private slider!: ElementRef<HTMLElement>;\r\n\r\n  @Input() config?: NgxSliderRecaptchaConfig;\r\n  @Input() disabled?: boolean = false;\r\n  @Input() sliderContent?: string | TemplateRef<void>;\r\n  @Input() successContent?: string | TemplateRef<void>;\r\n  @Input() failContent?: string | TemplateRef<void>;\r\n\r\n\r\n  @Output() onVerified = new EventEmitter<VerificationResponse>();\r\n  @Output() onRefresh = new EventEmitter();\r\n  @Output() onError = new EventEmitter();\r\n\r\n  private _sliderText: string | undefined = '';\r\n  private _sliderOffsetX: number = 0;\r\n  private _blockOffsetX: number = 0;\r\n  private _maskWidth: number = 0;\r\n  private _isSliderDragging = false;\r\n  private _isVerifying = false;\r\n  private _verificationStatus: VerificationStatus = 'none';\r\n  private _sliderConfig!: NgxSliderRecaptchaConfig;\r\n\r\n  private dragStartX = 0;\r\n  private dragStartY = 0;\r\n  private puzzleX = 0;\r\n  private puzzleY = 0;\r\n  private loadCount = 0;\r\n  private sliderMovements: number[] = [];\r\n  private ctx!: CanvasRenderingContext2D;\r\n  private blockCtx!: CanvasRenderingContext2D;\r\n\r\n  private readonly isUsingIE = window.navigator.userAgent.includes('Trident');\r\n  private readonly SLIDER_CONTAINER_MARGIN = 7;\r\n\r\n  constructor(\r\n    private renderer: Renderer2,\r\n    private cdr: ChangeDetectorRef,\r\n    @Inject(NGX_SLIDER_RECAPTCHA_CONFIG_TOKEN) private globalSliderConfig: NgxSliderRecaptchaConfig,\r\n    @Inject(NGX_SLIDER_RECAPTCHA_VERIFICATION_SERVICE_TOKEN) private verifier: NgxSliderRecaptchaVerificationService<VerificationRequest, VerificationResponse>,\r\n    @Inject(NGX_SLIDER_RECAPTCHA_IMAGE_SERVICE_TOKEN) private imageRetriever: NgxSliderRecaptchaImageService\r\n  ) { }\r\n\r\n  ngOnInit(): void {\r\n    this._sliderConfig = { ...this._sliderConfig, ...this.globalSliderConfig, ...DEFAULT_SLIDER_RECAPTCHA_CONFIG };\r\n  }\r\n\r\n  ngAfterViewInit() {\r\n    if (!this.ctx || !this.blockCtx) {\r\n      this.initializeCaptcha();\r\n    }\r\n  }\r\n\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    if (changes['config']?.currentValue) {\r\n      this._sliderConfig = { ...this._sliderConfig, ...this.globalSliderConfig, ...this.config };\r\n      this._sliderText = this.sliderConfig.instructionText;\r\n      this.initializeStyles();\r\n      this.cdr.detectChanges()\r\n    }\r\n  }\r\n\r\n  reset() {\r\n    setTimeout(() => {\r\n      this._maskWidth = 0;\r\n      this._sliderOffsetX = 0;\r\n      this._blockOffsetX = 0;\r\n      this.sliderMovements = [];\r\n      this._verificationStatus = 'none';\r\n      this._sliderText = this.sliderConfig.loadingText!;\r\n      this.initializeCaptcha();\r\n      this.cdr.detectChanges();\r\n    }, 500);\r\n  }\r\n\r\n  refresh(): void {\r\n    this.reset();\r\n    this.onRefresh.emit();\r\n  }\r\n\r\n  isTemplate(input: any): input is TemplateRef<void> {\r\n    return input instanceof TemplateRef;\r\n  }\r\n\r\n  get isSliderDragging() {\r\n    return this._isSliderDragging;\r\n  }\r\n\r\n  get isVerifying() {\r\n    return this._isVerifying;\r\n  }\r\n\r\n  get sliderText() {\r\n    return this._sliderText;\r\n  }\r\n\r\n  get verificationStatus() {\r\n    return this._verificationStatus;\r\n  }\r\n\r\n  get maskWidth() {\r\n    return this._maskWidth;\r\n  }\r\n\r\n  get sliderOffsetX() {\r\n    return this._sliderOffsetX;\r\n  }\r\n\r\n  get blockOffsetX() {\r\n    return this._blockOffsetX;\r\n  }\r\n\r\n  get sliderConfig() {\r\n    return this._sliderConfig;\r\n  }\r\n\r\n  get isDisabled() {\r\n    return this.disabled ?? this.sliderConfig.disabled ?? false;\r\n  }\r\n\r\n  @HostListener('document:mousedown', ['$event'])\r\n  @HostListener('document:touchstart', ['$event'])\r\n  private onDragStart(event: MouseEvent | TouchEvent): void {\r\n    const target = event.target as HTMLElement;\r\n\r\n    if (this.isVerifying || !this.slider.nativeElement.contains(target)) {\r\n      return;\r\n    }\r\n\r\n    this._isSliderDragging = true;\r\n    this.initializeDragStartCoordinates(event);\r\n  }\r\n\r\n  @HostListener('document:mousemove', ['$event'])\r\n  @HostListener('document:touchmove', ['$event'])\r\n  private onDragMove(event: MouseEvent | TouchEvent): void {\r\n    if (this.isVerifying || !this._isSliderDragging) return;\r\n\r\n    const { x, y } = this.extractEventCoordinates(event);\r\n    const { width, puzzleSize } = this.sliderConfig;\r\n\r\n    let deltaX: number = x - this.dragStartX;\r\n    let deltaY: number = y - this.dragStartY;\r\n\r\n    if (deltaX < 0 || deltaX + puzzleSize! > width!) return;\r\n\r\n    this._sliderOffsetX = (deltaX - 1);\r\n    this._maskWidth = (deltaX + 4);\r\n    this._blockOffsetX = (width! - this.sliderConfig.puzzleSize! - 20) / (width! - puzzleSize!) * deltaX;\r\n    this.sliderMovements.push(Math.round(deltaY));\r\n  }\r\n\r\n  @HostListener('document:mouseup', ['$event'])\r\n  @HostListener('document:touchend', ['$event'])\r\n  private onDragEnd(event: MouseEvent | TouchEvent): void {\r\n    if (this.isVerifying || !this._isSliderDragging) return;\r\n    this._isSliderDragging = false;\r\n    const { x } = this.extractEventCoordinates(event);\r\n    if (x === this.dragStartX) return;\r\n\r\n    const verificationRequest: VerificationRequest = {\r\n      sliderMovements: this.sliderMovements,\r\n      puzzleBlockPosition: this.blockOffsetX,\r\n      puzzlePosition: this.puzzleX,\r\n      toleranceOffset: this.sliderConfig.toleranceOffset!\r\n    };\r\n\r\n    this._isVerifying = true;\r\n\r\n    this.verifier.verify(verificationRequest).subscribe({\r\n      next: (response: VerificationResponse) => {\r\n        this._isVerifying = false;\r\n        if (response.success) {\r\n          this._verificationStatus = 'success';\r\n          this.onVerified.emit(response);\r\n        } else {\r\n          this._verificationStatus = 'fail';\r\n          this.onError.emit(\"Verification failed\");\r\n          setTimeout(() => this.reset(), 1000);\r\n        }\r\n      },\r\n      error: (error: any) => {\r\n        this._isVerifying = false;\r\n        this.onError.emit(error);\r\n        setTimeout(() => this.reset(), 1000);\r\n      }\r\n    });\r\n  }\r\n\r\n  private initializeCanvasDimensions(): void {\r\n    const { width, height, puzzleSize } = this.sliderConfig;\r\n    const sliderContainerHeight = (puzzleSize ?? 0) + this.SLIDER_CONTAINER_MARGIN;\r\n    const adjustedHeight = (height ?? 0) - sliderContainerHeight;\r\n\r\n    [this.canvas.nativeElement, this.block.nativeElement].forEach(element => {\r\n      this.renderer.setAttribute(element, 'width', width!.toString());\r\n      this.renderer.setAttribute(element, 'height', adjustedHeight.toString());\r\n    });\r\n  }\r\n\r\n  private initializeCanvasContexts(): void {\r\n    this.initializeCanvasDimensions();\r\n    this.ctx = this.canvas.nativeElement.getContext('2d', { willReadFrequently: true }) as CanvasRenderingContext2D;\r\n    this.blockCtx = this.block.nativeElement.getContext('2d', { willReadFrequently: true }) as CanvasRenderingContext2D;\r\n\r\n    if (!this.ctx || !this.blockCtx) {\r\n      throw new Error(\"Failed to initialize canvas contexts\");\r\n    }\r\n  }\r\n\r\n  private initializeCaptcha() {\r\n    this.resetCanvas();\r\n    this.initializeStyles();\r\n    this.initializeCanvasContexts();\r\n    this.renderPuzzle();\r\n  }\r\n\r\n  private renderPuzzle() {\r\n    let img = new Image();\r\n    img.crossOrigin = 'Anonymous';\r\n    img.onload = () => this.configurePuzzleImage(img);\r\n    img.onerror = () => this.retryImageLoad(img);\r\n    this.fetchImageSource(img);\r\n    this._sliderText = this.sliderConfig.loadingText;\r\n    this.cdr.detectChanges();\r\n  }\r\n\r\n  private configurePuzzleImage(img: HTMLImageElement): void {\r\n    const { width, puzzleSize, puzzleRadius, instructionText } = this.sliderConfig;\r\n    let puzzleBlockWidth = puzzleSize! + puzzleRadius! * 2 + 3;\r\n    const { width: canvasWidth, height: canvasHeight } = this.canvas.nativeElement;\r\n\r\n    this.puzzleX = this.generateRandomNumber(puzzleBlockWidth + 10, canvasWidth! - (puzzleBlockWidth + 10));\r\n    this.puzzleY = this.generateRandomNumber(10 + puzzleRadius! * 2, canvasHeight! - (puzzleBlockWidth + 10));\r\n\r\n    this.drawPuzzlePieceShape(this.ctx, 'fill');\r\n    this.drawPuzzlePieceShape(this.blockCtx, 'clip');\r\n\r\n    this.ctx.drawImage(img, 0, 0, width!, canvasHeight!);\r\n    this.blockCtx.drawImage(img, 0, 0, width!, canvasHeight!);\r\n\r\n    const yOffset = this.puzzleY - puzzleRadius! * 2 - 1;\r\n    const imageData = this.blockCtx.getImageData(this.puzzleX - 3, yOffset, puzzleBlockWidth, puzzleBlockWidth);\r\n\r\n    this.renderer.setAttribute(this.block.nativeElement, 'width', puzzleBlockWidth.toString());\r\n    this.renderer.setAttribute(this.block.nativeElement, 'height', canvasHeight.toString());\r\n\r\n    this.blockCtx.putImageData(imageData, 0, yOffset + 1);\r\n    this._sliderText = instructionText;\r\n    this.cdr.detectChanges();\r\n  }\r\n\r\n  private retryImageLoad(img: HTMLImageElement): void {\r\n    this.loadCount++;\r\n    if (this.loadCount <= this.sliderConfig.maxRetryAttempts!) {\r\n      this.renderPuzzle()\r\n    } else {\r\n      img.src = this.loadFallbackImage();\r\n    }\r\n  }\r\n\r\n  private fetchImageSource(img: HTMLImageElement): void {\r\n    this.imageRetriever.getSliderImage().subscribe({\r\n      next: (image) => img.src = image,\r\n      error: (error) => this.onError.emit(error)\r\n    })\r\n  }\r\n\r\n  private loadFallbackImage(): string {\r\n    return `assets/images/ngx-slider-recaptcha-${Math.floor(Math.random() * 4)}.jpg`;\r\n  }\r\n\r\n  private drawPuzzlePieceShape(ctx: CanvasRenderingContext2D, operation: 'fill' | 'clip'): void {\r\n    const { puzzleSize: size, puzzleRadius: radius } = this.sliderConfig;\r\n    const { PI } = Math;\r\n    const { puzzleX, puzzleY } = this;\r\n\r\n    ctx.beginPath();\r\n    ctx.moveTo(puzzleX, puzzleY);\r\n    ctx.arc(puzzleX + size! / 2, puzzleY - radius! + 2, radius!, 0.72 * PI, 2.26 * PI);\r\n    ctx.lineTo(puzzleX + size!, puzzleY);\r\n    ctx.arc(puzzleX + size! + radius! - 2, puzzleY + size! / 2, radius!, 1.21 * PI, 2.78 * PI);\r\n    ctx.lineTo(puzzleX + size!, puzzleY + size!);\r\n    ctx.lineTo(puzzleX, puzzleY + size!);\r\n    ctx.arc(puzzleX + radius! - 2, puzzleY + size! / 2, radius! + 0.4, 2.76 * PI, 1.24 * PI, true);\r\n    ctx.lineTo(puzzleX, puzzleY);\r\n    ctx.lineWidth = 2;\r\n    ctx.fillStyle = 'rgba(255, 255, 255, 0.7)';\r\n    ctx.strokeStyle = 'rgba(255, 255, 255, 0.7)';\r\n    ctx.stroke();\r\n    ctx[operation]();\r\n    ctx.globalCompositeOperation = this.isUsingIE ? 'xor' : 'destination-over';\r\n  }\r\n\r\n  private generateRandomNumber(start: number, end: number): number {\r\n    return Math.round(Math.random() * (end - start) + start);\r\n  };\r\n\r\n  private resetCanvas(): void {\r\n    const { width, height } = this.canvas.nativeElement;\r\n    this.ctx?.clearRect(0, 0, width!, height!);\r\n    this.blockCtx?.clearRect(0, 0, width!, height!);\r\n  }\r\n\r\n  private extractEventCoordinates(event: MouseEvent | TouchEvent): { x: number, y: number } {\r\n    if (event instanceof MouseEvent) {\r\n      return { x: event.clientX, y: event.clientY };\r\n    } else {\r\n      return { x: event.changedTouches[0].clientX, y: event.changedTouches[0].clientY };\r\n    }\r\n  }\r\n\r\n  private initializeDragStartCoordinates(event: MouseEvent | TouchEvent) {\r\n    const { x, y } = this.extractEventCoordinates(event);\r\n    this.dragStartX = x;\r\n    this.dragStartY = y;\r\n  }\r\n\r\n  private initializeStyles(): void {\r\n    if (this.sliderConfig.allowResponsiveWidth) {\r\n      this._sliderConfig = { ...this._sliderConfig, width: this.captchaContainer.nativeElement.offsetWidth };\r\n    }\r\n\r\n    const { width, height, primaryColor, successColor, errorColor, textColor, sliderContainerBackgroundColor: containerBackgroundColor, sliderContainerBorderColor: containerBorderColor, borderRadius: commonBorderRadius, puzzleSize } = this.sliderConfig;\r\n\r\n    this.setStyle('--recaptcha-container-width', `${width!}px`);\r\n    this.setStyle('--recaptcha-container-height', `${height!}px`);\r\n    this.setStyle('--recaptcha-canvas-width', `${width!}px`);\r\n    this.setStyle('--recaptcha-canvas-height', `${(height! - (puzzleSize! + this.SLIDER_CONTAINER_MARGIN))}px`);\r\n    this.setStyle('--recaptcha-primary-color', primaryColor!);\r\n    this.setStyle('--recaptcha-error-color', errorColor!);\r\n    this.setStyle('--recaptcha-success-color', successColor!);\r\n    this.setStyle('--recaptcha-text-color', textColor!);\r\n    this.setStyle('--recaptcha-container-background-color', containerBackgroundColor!);\r\n    this.setStyle('--recaptcha-container-border-color', containerBorderColor!);\r\n    this.setStyle('--recaptcha-common-border-radius', `${commonBorderRadius!}px`);\r\n    this.setStyle('--recaptcha-slider-container-height', `${puzzleSize!}px`);\r\n    this.setStyle('--recaptcha-slider-mask-primary-color', this.hexToRgba(primaryColor!, 0.3));\r\n    this.setStyle('--recaptcha-slider-mask-success-color', this.hexToRgba(successColor!, 0.3));\r\n    this.setStyle('--recaptcha-slider-mask-error-color', this.hexToRgba(errorColor!, 0.3));\r\n  }\r\n\r\n  private setStyle(property: string, value: string): void {\r\n    document.documentElement.style.setProperty(property, value);\r\n  }\r\n\r\n  private hexToRgba(hex: string, opacity: number): string {\r\n    const sanitizedHex = hex?.replace(/^#/, '');\r\n\r\n    const [radius, g, b] = [0, 2, 4].map((start) =>\r\n      parseInt(sanitizedHex.slice(start, start + 2), 16)\r\n    );\r\n\r\n    return `rgba(${radius}, ${g}, ${b}, ${opacity})`;\r\n  }\r\n}","<div #captchaContainer class=\"captcha-container\">\r\n    <canvas #canvas class=\"canvas\"></canvas>\r\n    <canvas #block class=\"block\" [style.left.px]=\"blockOffsetX\"></canvas>\r\n    <div class=\"slider-container\" [class.active]=\"isSliderDragging\" [class.success]=\"verificationStatus === 'success'\"\r\n        [class.fail]=\"verificationStatus === 'fail'\">\r\n        <div class=\"slider-mask\" [style.width.px]=\"maskWidth\">\r\n            <div #slider class=\"slider\" [style.left.px]=\"sliderOffsetX\">\r\n                <ng-container *ngIf=\"verificationStatus === 'none'\">\r\n                    <ng-container *ngIf=\"sliderContent; else defaultTemplate\">\r\n                        <ng-container *ngIf=\"isTemplate(sliderContent); else sliderContentStringTemplate\">\r\n                            <ng-container *ngTemplateOutlet=\"sliderContent\"></ng-container>\r\n                        </ng-container>\r\n                        <ng-template #sliderContentStringTemplate>\r\n                            {{ sliderContent }}\r\n                        </ng-template>\r\n                    </ng-container>\r\n                </ng-container>\r\n\r\n                <ng-container *ngIf=\"verificationStatus === 'success'\">\r\n                    <ng-container *ngIf=\"successContent; else defaultTemplate\">\r\n                        <ng-container *ngIf=\"isTemplate(successContent); else successContentStringTemplate\">\r\n                            <ng-container *ngTemplateOutlet=\"successContent\"></ng-container>\r\n                        </ng-container>\r\n                        <ng-template #successContentStringTemplate>\r\n                            {{ successContent }}\r\n                        </ng-template>\r\n                    </ng-container>\r\n                </ng-container>\r\n\r\n                <ng-container *ngIf=\"verificationStatus === 'fail'\">\r\n                    <ng-container *ngIf=\"failContent; else defaultTemplate\">\r\n                        <ng-container *ngIf=\"isTemplate(failContent); else failContentStringTemplate\">\r\n                            <ng-container *ngTemplateOutlet=\"failContent\"></ng-container>\r\n                        </ng-container>\r\n                        <ng-template #failContentStringTemplate>\r\n                            {{ sliderContent }}\r\n                        </ng-template>\r\n                    </ng-container>\r\n                </ng-container>\r\n\r\n                <ng-template #defaultTemplate>\r\n                    <span class=\"slider-icon\"></span>\r\n                </ng-template>\r\n            </div>\r\n        </div>\r\n        <span class=\"slider-text\" *ngIf=\"!isVerifying\">{{ sliderText }}</span>\r\n    </div>\r\n    <i *ngIf=\"sliderConfig.allowRefresh\" class=\"refresh-icon\" (click)=\"refresh()\"></i>\r\n    <div class=\"disable-wrapper\" *ngIf=\"isDisabled || isVerifying\"></div>\r\n</div>","import { ModuleWithProviders, NgModule } from '@angular/core';\r\nimport { NgxSliderRecaptchaComponent } from './components/ngx-slider-recaptcha.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { DefaultNgxSliderRecaptchaVerificationService } from './services/default-ngx-slider-recaptcha-verification.service';\r\nimport { NGX_SLIDER_RECAPTCHA_VERIFICATION_SERVICE_TOKEN } from './tokens/ngx-slider-recaptcha-verification-service.token';\r\nimport { NGX_SLIDER_RECAPTCHA_IMAGE_SERVICE_TOKEN } from './tokens/ngx-slider-recaptcha-image-service.token';\r\nimport { DefaultNgxSliderRecaptchaImageService } from './services/default-ngx-slider-recaptcha-image.service';\r\nimport { NGX_SLIDER_RECAPTCHA_CONFIG_TOKEN } from './tokens/ngx-slider-recaptcha-config.token';\r\nimport { NgxSliderRecaptchaOptions } from './config/ngx-slider-recaptcha-options';\r\nimport { DEFAULT_SLIDER_RECAPTCHA_CONFIG } from './config/default-ngx-slider-recaptcha-config';\r\n\r\n@NgModule({\r\n  imports: [\r\n    CommonModule,\r\n    NgxSliderRecaptchaComponent\r\n  ],\r\n  exports: [\r\n    NgxSliderRecaptchaComponent\r\n  ],\r\n  providers: [\r\n    {\r\n      provide: NGX_SLIDER_RECAPTCHA_CONFIG_TOKEN,\r\n      useValue: DEFAULT_SLIDER_RECAPTCHA_CONFIG\r\n    },\r\n    {\r\n      provide: NGX_SLIDER_RECAPTCHA_VERIFICATION_SERVICE_TOKEN,\r\n      useClass: DefaultNgxSliderRecaptchaVerificationService\r\n    },\r\n    {\r\n      provide: NGX_SLIDER_RECAPTCHA_IMAGE_SERVICE_TOKEN,\r\n      useClass: DefaultNgxSliderRecaptchaImageService\r\n    }\r\n  ]\r\n})\r\nexport class NgxSliderRecaptchaModule {\r\n  static forRoot(\r\n    options: NgxSliderRecaptchaOptions = {}\r\n  ): ModuleWithProviders<NgxSliderRecaptchaModule> {\r\n    const {\r\n      sliderConfig = DEFAULT_SLIDER_RECAPTCHA_CONFIG,\r\n      verificationService = DefaultNgxSliderRecaptchaVerificationService,\r\n      imageRetrievalService = DefaultNgxSliderRecaptchaImageService\r\n    } = options;\r\n    return {\r\n      ngModule: NgxSliderRecaptchaModule,\r\n      providers: [\r\n        {\r\n          provide: NGX_SLIDER_RECAPTCHA_CONFIG_TOKEN,\r\n          useValue: sliderConfig\r\n        },\r\n        {\r\n          provide: NGX_SLIDER_RECAPTCHA_VERIFICATION_SERVICE_TOKEN,\r\n          useClass: verificationService\r\n        },\r\n        {\r\n          provide: NGX_SLIDER_RECAPTCHA_IMAGE_SERVICE_TOKEN,\r\n          useClass: imageRetrievalService\r\n        }\r\n      ]\r\n    };\r\n  }\r\n}\r\n","/*\r\n * Public API Surface of ngx-slider-recaptcha\r\n */\r\n\r\nexport * from './lib/config/ngx-slider-recaptcha-config'\r\nexport * from './lib/config/default-ngx-slider-recaptcha-config'\r\nexport * from './lib/config/ngx-slider-recaptcha-options'\r\n\r\nexport * from './lib/core/ngx-slider-recaptcha-image-service.interface';\r\nexport * from './lib/core/ngx-slider-recaptcha-verification-service.interface';\r\nexport * from './lib/core/ngx-slider-recaptcha-verification-response.interface'\r\n\r\nexport * from './lib/services/default-ngx-slider-recaptcha-image.service'\r\nexport * from './lib/services/default-ngx-slider-recaptcha-verification.service'\r\n\r\nexport * from './lib/tokens/ngx-slider-recaptcha-image-service.token'\r\nexport * from './lib/tokens/ngx-slider-recaptcha-config.token'\r\nexport * from './lib/tokens/ngx-slider-recaptcha-verification-service.token'\r\n\r\nexport * from './lib/components/ngx-slider-recaptcha.component';\r\nexport * from './lib/ngx-slider-recaptcha.module';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}