{"version":3,"file":"vinlos-ngx-gallery.mjs","sources":["../../../projects/gallery/src/lib/ngx-gallery.service.ts","../../../projects/gallery/src/lib/ngx-gallery-arrows/ngx-gallery-arrows.component.ts","../../../projects/gallery/src/lib/ngx-gallery-arrows/ngx-gallery-arrows.component.html","../../../projects/gallery/src/lib/ngx-gallery-action/ngx-gallery-action.component.ts","../../../projects/gallery/src/lib/ngx-gallery-action/ngx-gallery-action.component.html","../../../projects/gallery/src/lib/ngx-gallery-bullets/ngx-gallery-bullets.component.ts","../../../projects/gallery/src/lib/ngx-gallery-bullets/ngx-gallery-bullets.component.html","../../../projects/gallery/src/lib/ngx-gallery-preview/ngx-gallery-preview.component.ts","../../../projects/gallery/src/lib/ngx-gallery-preview/ngx-gallery-preview.component.html","../../../projects/gallery/src/lib/ngx-gallery-animation.ts","../../../projects/gallery/src/lib/ngx-gallery-image/ngx-gallery-image.component.ts","../../../projects/gallery/src/lib/ngx-gallery-image/ngx-gallery-image.component.html","../../../projects/gallery/src/lib/ngx-gallery-order.ts","../../../projects/gallery/src/lib/ngx-gallery-thumbnails/ngx-gallery-thumbnails.component.ts","../../../projects/gallery/src/lib/ngx-gallery-thumbnails/ngx-gallery-thumbnails.component.html","../../../projects/gallery/src/lib/ngx-gallery-action.ts","../../../projects/gallery/src/lib/ngx-gallery-layout.ts","../../../projects/gallery/src/lib/ngx-gallery-image-size.ts","../../../projects/gallery/src/lib/ngx-gallery-options.ts","../../../projects/gallery/src/lib/ngx-gallery-ordered-image.ts","../../../projects/gallery/src/lib/ngx-gallery.component.ts","../../../projects/gallery/src/lib/ngx-gallery.component.html","../../../projects/gallery/src/lib/ngx-gallery.module.ts","../../../projects/gallery/src/lib/ngx-gallery-image.ts","../../../projects/gallery/src/public-api.ts","../../../projects/gallery/src/vinlos-ngx-gallery.ts"],"sourcesContent":["import { ElementRef, Injectable, Renderer2, inject } from '@angular/core';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class NgxGalleryService {\n  private renderer = inject(Renderer2);\n\n  private swipeHandlers: Map<string, (() => void)[]> = new Map<string, (() => void)[]>();\n\n  manageSwipe(status: boolean, element: ElementRef, id: string, nextHandler: () => void, prevHandler: () => void): void {\n\n    const handlers = this.getSwipeHandlers(id);\n\n    // swipeleft and swiperight are available only if hammerjs is included\n    try {\n      if (status && !handlers) {\n        this.swipeHandlers.set(id, [\n          this.renderer.listen(element.nativeElement, 'swipeleft', () => nextHandler()),\n          this.renderer.listen(element.nativeElement, 'swiperight', () => prevHandler())\n        ]);\n      } else if (!status && handlers) {\n        handlers.map((handler) => handler());\n        this.removeSwipeHandlers(id);\n      }\n    } catch (e) {\n    }\n  }\n\n  validateUrl(url: string): string {\n    if (url.replace) {\n      return url.replace(new RegExp(' ', 'g'), '%20')\n        .replace(new RegExp('\\'', 'g'), '%27');\n    } else {\n      return url;\n    }\n  }\n\n  getBackgroundUrl(image: string) {\n    return 'url(\\'' + this.validateUrl(image) + '\\')';\n  }\n\n  getFileType (fileSource: string): string {\n    const fileExtension = fileSource.split('.').pop().toLowerCase();\n    if (fileExtension === 'avi' || fileExtension === 'flv'\n      || fileExtension === 'wmv' || fileExtension === 'mov'\n      || fileExtension === 'mp4') {\n      return 'video';\n    }\n    return 'image';\n}\n\n  private getSwipeHandlers(id: string): (() => void)[] | undefined {\n    return this.swipeHandlers.get(id);\n  }\n\n  private removeSwipeHandlers(id: string): void {\n    this.swipeHandlers.delete(id);\n  }\n}\n","import {ChangeDetectionStrategy, Component, OnInit, input, output} from '@angular/core';\n\n@Component({\n    selector: 'ngx-gallery-arrows',\n    templateUrl: './ngx-gallery-arrows.component.html',\n    styleUrls: ['./ngx-gallery-arrows.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NgxGalleryArrowsComponent {\n  readonly prevDisabled = input<boolean>(undefined);\n  readonly nextDisabled = input<boolean>(undefined);\n  readonly arrowPrevIcon = input<string>(undefined);\n  readonly arrowNextIcon = input<string>(undefined);\n\n  readonly prevClick = output();\n  readonly nextClick = output();\n\n  constructor() { }\n\n  handlePrevClick(): void {\n    this.prevClick.emit();\n  }\n\n  handleNextClick(): void {\n    this.nextClick.emit();\n  }\n}\n","<div class=\"ngx-gallery-arrows-wrapper ngx-gallery-arrow-left\">\n  <div class=\"ngx-gallery-icon ngx-gallery-arrow\" aria-hidden=\"true\" (click)=\"handlePrevClick()\" [class.ngx-gallery-disabled]=\"prevDisabled()\">\n    <i class=\"ngx-gallery-icon-content {{arrowPrevIcon()}}\"></i>\n  </div>\n</div>\n<div class=\"ngx-gallery-arrows-wrapper ngx-gallery-arrow-right\">\n  <div class=\"ngx-gallery-icon ngx-gallery-arrow\" aria-hidden=\"true\" (click)=\"handleNextClick()\" [class.ngx-gallery-disabled]=\"nextDisabled()\">\n    <i class=\"ngx-gallery-icon-content {{arrowNextIcon()}}\"></i>\n  </div>\n</div>\n","import {ChangeDetectionStrategy, Component, OnInit, input, output} from '@angular/core';\n\n@Component({\n    selector: 'ngx-gallery-action',\n    templateUrl: './ngx-gallery-action.component.html',\n    styleUrls: ['./ngx-gallery-action.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NgxGalleryActionComponent {\n  readonly icon = input<string>(undefined);\n  readonly disabled = input(false);\n  readonly titleText = input('');\n\n  readonly closeClick = output<Event>();\n\n  constructor() {\n  }\n\n  handleClick(event: Event) {\n    if (!this.disabled()) {\n      this.closeClick.emit(event);\n    }\n\n    event.stopPropagation();\n    event.preventDefault();\n  }\n}\n","<div class=\"ngx-gallery-icon\" [class.ngx-gallery-icon-disabled]=\"disabled()\"\n     aria-hidden=\"true\"\n     title=\"{{ titleText() }}\"\n     (click)=\"handleClick($event)\">\n  <i class=\"ngx-gallery-icon-content {{ icon() }}\"></i>\n</div>\n","import {ChangeDetectionStrategy, Component, OnInit, input, output} from '@angular/core';\nimport { NgClass } from '@angular/common';\n\n@Component({\n    selector: 'ngx-gallery-bullets',\n    templateUrl: './ngx-gallery-bullets.component.html',\n    styleUrls: ['./ngx-gallery-bullets.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [NgClass]\n})\nexport class NgxGalleryBulletsComponent {\n  readonly count = input<number>(undefined);\n  readonly active = input(0);\n\n  readonly bulletChange = output<number>();\n\n  constructor() { }\n\n  getBullets(): number[] {\n    return Array(this.count());\n  }\n\n  handleChange(event: Event, index: number): void {\n    this.bulletChange.emit(index);\n  }\n}\n","@for (bullet of getBullets(); track bullet; let i = $index) {\n  <div class=\"ngx-gallery-bullet\" (click)=\"handleChange($event, i)\"\n  [ngClass]=\"{ 'ngx-gallery-active': i === active() }\"></div>\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, HostListener, Input, OnChanges, OnDestroy, OnInit, Renderer2, SimpleChanges, inject, input, viewChild, output } from '@angular/core';\nimport {DomSanitizer, SafeResourceUrl, SafeStyle, SafeUrl} from '@angular/platform-browser';\nimport {NgxGalleryService} from '../ngx-gallery.service';\nimport {NgxGalleryAction} from '../ngx-gallery-action';\nimport { NgxGalleryArrowsComponent } from '../ngx-gallery-arrows/ngx-gallery-arrows.component';\nimport { NgxGalleryActionComponent } from '../ngx-gallery-action/ngx-gallery-action.component';\nimport { NgxGalleryBulletsComponent } from '../ngx-gallery-bullets/ngx-gallery-bullets.component';\n\n\n@Component({\n    selector: 'ngx-gallery-preview',\n    templateUrl: './ngx-gallery-preview.component.html',\n    styleUrls: ['./ngx-gallery-preview.component.scss'],\n    // encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [NgxGalleryArrowsComponent, NgxGalleryActionComponent, NgxGalleryBulletsComponent]\n})\nexport class NgxGalleryPreviewComponent implements OnInit, OnDestroy, OnChanges {\n  private sanitization = inject(DomSanitizer);\n  private elementRef = inject(ElementRef);\n  private helperService = inject(NgxGalleryService);\n  private renderer = inject(Renderer2);\n  private changeDetectorRef = inject(ChangeDetectorRef);\n\n  src: SafeUrl;\n  srcIndex: number;\n  description: string;\n  type: string;\n  showSpinner = false;\n  positionLeft = 0;\n  positionTop = 0;\n  zoomValue = 1;\n  loading = false;\n  rotateValue = 0;\n  index = 0;\n\n  readonly images = input<string[] | SafeResourceUrl[]>(undefined);\n  readonly descriptions = input<string[]>(undefined);\n  readonly showDescription = input<boolean>(undefined);\n  @Input() arrows: boolean;\n  readonly arrowsAutoHide = input<boolean>(undefined);\n  readonly swipe = input<boolean>(undefined);\n  readonly fullscreen = input<boolean>(undefined);\n  readonly forceFullscreen = input<boolean>(undefined);\n  readonly closeOnClick = input<boolean>(undefined);\n  readonly closeOnEsc = input<boolean>(undefined);\n  readonly keyboardNavigation = input<boolean>(undefined);\n  readonly arrowPrevIcon = input<string>(undefined);\n  readonly arrowNextIcon = input<string>(undefined);\n  readonly closeIcon = input<string>(undefined);\n  readonly fullscreenIcon = input<string>(undefined);\n  readonly spinnerIcon = input<string>(undefined);\n  readonly autoPlay = input<boolean>(undefined);\n  readonly autoPlayInterval = input<number>(undefined);\n  readonly autoPlayPauseOnHover = input<boolean>(undefined);\n  readonly infinityMove = input<boolean>(undefined);\n  readonly zoom = input<boolean>(undefined);\n  readonly zoomStep = input<number>(undefined);\n  readonly zoomMax = input<number>(undefined);\n  readonly zoomMin = input<number>(undefined);\n  readonly zoomInIcon = input<string>(undefined);\n  readonly zoomOutIcon = input<string>(undefined);\n  readonly animation = input<boolean>(undefined);\n  readonly actions = input<NgxGalleryAction[]>(undefined);\n  readonly rotate = input<boolean>(undefined);\n  readonly rotateLeftIcon = input<string>(undefined);\n  readonly rotateRightIcon = input<string>(undefined);\n  readonly download = input<boolean>(undefined);\n  readonly downloadIcon = input<string>(undefined);\n  readonly bullets = input<boolean>(undefined);\n\n  readonly previewOpen = output();\n  readonly previewClose = output();\n  readonly activeChange = output<number>();\n\n  readonly previewImage = viewChild<any>('previewImage');\n\n  private isOpen = false;\n  private timer;\n  private initialX = 0;\n  private initialY = 0;\n  private initialLeft = 0;\n  private initialTop = 0;\n  private isMove = false;\n\n  private keyDownListener: () => void;\n\n  ngOnInit() {\n    if (this.arrows && this.arrowsAutoHide()) {\n      this.arrows = false;\n    }\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes['swipe']) {\n      this.helperService.manageSwipe(this.swipe(), this.elementRef,\n        'preview', () => this.showNext(), () => this.showPrev());\n    }\n  }\n\n  ngOnDestroy() {\n    if (this.keyDownListener) {\n      this.keyDownListener();\n    }\n  }\n\n  @HostListener('mouseenter') onMouseEnter() {\n    if (this.arrowsAutoHide() && !this.arrows) {\n      this.arrows = true;\n    }\n  }\n\n  @HostListener('mouseleave') onMouseLeave() {\n    if (this.arrowsAutoHide() && this.arrows) {\n      this.arrows = false;\n    }\n  }\n\n  onKeyDown(e) {\n    if (this.isOpen) {\n      if (this.keyboardNavigation()) {\n        if (this.isKeyboardPrev(e)) {\n          this.showPrev();\n        } else if (this.isKeyboardNext(e)) {\n          this.showNext();\n        }\n      }\n      if (this.closeOnEsc() && this.isKeyboardEsc(e)) {\n        this.close();\n      }\n    }\n  }\n\n  open(index: number): void {\n    this.previewOpen.emit();\n\n    this.index = index;\n    this.isOpen = true;\n    this.show(true);\n\n    if (this.forceFullscreen()) {\n      this.manageFullscreen();\n    }\n\n    this.keyDownListener = this.renderer.listen('window', 'keydown', (e) => this.onKeyDown(e));\n  }\n\n  close(): void {\n    this.isOpen = false;\n    const video = this.previewImage().nativeElement;\n    if (\n      video.currentTime > 0 &&\n      !video.paused &&\n      !video.ended &&\n      video.readyState > 2\n    ) {\n      video.pause();\n    }\n    this.closeFullscreen();\n    this.previewClose.emit();\n\n    this.stopAutoPlay();\n\n    if (this.keyDownListener) {\n      this.keyDownListener();\n    }\n  }\n\n  imageMouseEnter(): void {\n    if (this.autoPlay() && this.autoPlayPauseOnHover()) {\n      this.stopAutoPlay();\n    }\n  }\n\n  imageMouseLeave(): void {\n    if (this.autoPlay() && this.autoPlayPauseOnHover()) {\n      this.startAutoPlay();\n    }\n  }\n\n  startAutoPlay(): void {\n    if (this.autoPlay()) {\n      this.stopAutoPlay();\n\n      this.timer = setTimeout(() => {\n        if (!this.showNext()) {\n          this.index = -1;\n          this.showNext();\n        }\n      }, this.autoPlayInterval());\n    }\n  }\n\n  stopAutoPlay(): void {\n    if (this.timer) {\n      clearTimeout(this.timer);\n    }\n  }\n\n  showAtIndex(index: number): void {\n    this.index = index;\n    this.show();\n  }\n\n  showNext(): boolean {\n    if (this.canShowNext()) {\n      this.index++;\n\n      if (this.index === this.images().length) {\n        this.index = 0;\n      }\n\n      this.show();\n      return true;\n    } else {\n      return false;\n    }\n  }\n\n  showPrev(): void {\n    if (this.canShowPrev()) {\n      this.index--;\n\n      if (this.index < 0) {\n        this.index = this.images().length - 1;\n      }\n\n      this.show();\n    }\n  }\n\n  canShowNext(): boolean {\n    const images = this.images();\n    if (this.loading) {\n      return false;\n    } else if (images) {\n      return this.infinityMove() || this.index < images.length - 1;\n    } else {\n      return false;\n    }\n  }\n\n  canShowPrev(): boolean {\n    if (this.loading) {\n      return false;\n    } else if (this.images()) {\n      return this.infinityMove() || this.index > 0;\n    } else {\n      return false;\n    }\n  }\n\n  manageFullscreen(): void {\n    if (this.fullscreen() || this.forceFullscreen()) {\n      const doc = document as any;\n\n      if (!doc.fullscreenElement && !doc.mozFullScreenElement\n        && !doc.webkitFullscreenElement && !doc.msFullscreenElement) {\n        this.openFullscreen();\n      } else {\n        this.closeFullscreen();\n      }\n    }\n  }\n\n  getSafeUrl(image: string): SafeUrl {\n    return this.sanitization.bypassSecurityTrustUrl(image);\n  }\n\n  getFileType(fileSource: string): string {\n    return this.helperService.getFileType(fileSource);\n  }\n\n  zoomIn(): void {\n    if (this.canZoomIn()) {\n      this.zoomValue += this.zoomStep();\n\n      if (this.zoomValue > this.zoomMax()) {\n        this.zoomValue = this.zoomMax();\n      }\n    }\n  }\n\n  zoomOut(): void {\n    if (this.canZoomOut()) {\n      this.zoomValue -= this.zoomStep();\n\n      if (this.zoomValue < this.zoomMin()) {\n        this.zoomValue = this.zoomMin();\n      }\n\n      if (this.zoomValue <= 1) {\n        this.resetPosition();\n      }\n    }\n  }\n\n  rotateLeft(): void {\n    this.rotateValue -= 90;\n  }\n\n  rotateRight(): void {\n    this.rotateValue += 90;\n  }\n\n  getTransform(): SafeStyle {\n    return this.sanitization.bypassSecurityTrustStyle('scale(' + this.zoomValue + ') rotate(' + this.rotateValue + 'deg)');\n  }\n\n  canZoomIn(): boolean {\n    return this.zoomValue < this.zoomMax();\n  }\n\n  canZoomOut(): boolean {\n    return this.zoomValue > this.zoomMin();\n  }\n\n  canDragOnZoom() {\n    return this.zoom() && this.zoomValue > 1;\n  }\n\n  mouseDownHandler(e): void {\n    if (this.canDragOnZoom()) {\n      this.initialX = this.getClientX(e);\n      this.initialY = this.getClientY(e);\n      this.initialLeft = this.positionLeft;\n      this.initialTop = this.positionTop;\n      this.isMove = true;\n\n      e.preventDefault();\n    }\n  }\n\n  mouseUpHandler(e): void {\n    this.isMove = false;\n  }\n\n  mouseMoveHandler(e) {\n    if (this.isMove) {\n      this.positionLeft = this.initialLeft + (this.getClientX(e) - this.initialX);\n      this.positionTop = this.initialTop + (this.getClientY(e) - this.initialY);\n    }\n  }\n\n  private getClientX(e): number {\n    return e.touches && e.touches.length ? e.touches[0].clientX : e.clientX;\n  }\n\n  private getClientY(e): number {\n    return e.touches && e.touches.length ? e.touches[0].clientY : e.clientY;\n  }\n\n  private resetPosition() {\n    if (this.zoom()) {\n      this.positionLeft = 0;\n      this.positionTop = 0;\n    }\n  }\n\n  private isKeyboardNext(e): boolean {\n    return e.keyCode === 39;\n  }\n\n  private isKeyboardPrev(e): boolean {\n    return e.keyCode === 37;\n  }\n\n  private isKeyboardEsc(e): boolean {\n    return e.keyCode === 27;\n  }\n\n  private openFullscreen(): void {\n    const element = document.documentElement as any;\n\n    if (element.requestFullscreen) {\n      element.requestFullscreen();\n    } else if (element.msRequestFullscreen) {\n      element.msRequestFullscreen();\n    } else if (element.mozRequestFullScreen) {\n      element.mozRequestFullScreen();\n    } else if (element.webkitRequestFullscreen) {\n      element.webkitRequestFullscreen();\n    }\n  }\n\n  private closeFullscreen(): void {\n    if (this.isFullscreen()) {\n      const doc = document as any;\n\n      if (doc.exitFullscreen) {\n        doc.exitFullscreen();\n      } else if (doc.msExitFullscreen) {\n        doc.msExitFullscreen();\n      } else if (doc.mozCancelFullScreen) {\n        doc.mozCancelFullScreen();\n      } else if (doc.webkitExitFullscreen) {\n        doc.webkitExitFullscreen();\n      }\n    }\n  }\n\n  private isFullscreen() {\n    const doc = document as any;\n\n    return doc.fullscreenElement || doc.webkitFullscreenElement\n      || doc.mozFullScreenElement || doc.msFullscreenElement;\n  }\n\n\n  private show(first = false) {\n    this.loading = true;\n    this.stopAutoPlay();\n\n    this.activeChange.emit(this.index);\n\n    if (first || !this.animation()) {\n      this._show();\n    } else {\n      setTimeout(() => this._show(), 600);\n    }\n  }\n\n  private _show() {\n    this.zoomValue = 1;\n    this.rotateValue = 0;\n    this.resetPosition();\n\n    this.src = this.getSafeUrl(this.images()[this.index] as string);\n    this.type = this.getFileType(this.images()[this.index] as string);\n    this.srcIndex = this.index;\n    this.description = this.descriptions()[this.index];\n    this.changeDetectorRef.markForCheck();\n\n    setTimeout(() => {\n      const previewImage = this.previewImage();\n      if (this.isLoaded(previewImage.nativeElement) || this.type === 'video') {\n        this.loading = false;\n        this.startAutoPlay();\n        this.changeDetectorRef.markForCheck();\n      } else if (this.type === 'video') {\n\n      }\n      else {\n        setTimeout(() => {\n          if (this.loading) {\n            this.showSpinner = true;\n            this.changeDetectorRef.markForCheck();\n          }\n        });\n\n        previewImage.nativeElement.onload = () => {\n          this.loading = false;\n          this.showSpinner = false;\n          this.previewImage().nativeElement.onload = null;\n          this.startAutoPlay();\n          this.changeDetectorRef.markForCheck();\n        };\n      }\n    });\n  }\n\n  private isLoaded(img): boolean {\n    if (!img.complete) {\n      return false;\n    }\n\n    return !(typeof img.naturalWidth !== 'undefined' && img.naturalWidth === 0);\n  }\n\n}\n","@if (arrows) {\n  <ngx-gallery-arrows (prevClick)=\"showPrev()\" (nextClick)=\"showNext()\" [prevDisabled]=\"!canShowPrev()\"\n    [nextDisabled]=\"!canShowNext()\" [arrowPrevIcon]=\"arrowPrevIcon()\"\n  [arrowNextIcon]=\"arrowNextIcon()\" />\n}\n<div class=\"ngx-gallery-preview-top\">\n  <div class=\"ngx-gallery-preview-icons\">\n    @for (action of actions(); track action) {\n      <ngx-gallery-action [icon]=\"action.icon\" [disabled]=\"action.disabled\"\n      [titleText]=\"action.titleText\" (closeClick)=\"action.onClick($event, index)\" />\n    }\n    @if (download() && src) {\n      <a [href]=\"src\" class=\"ngx-gallery-icon\" aria-hidden=\"true\" download>\n        <i class=\"ngx-gallery-icon-content {{ downloadIcon() }}\"></i>\n      </a>\n    }\n    @if (zoom()) {\n      <ngx-gallery-action [icon]=\"zoomOutIcon()\" [disabled]=\"!canZoomOut()\"\n      (closeClick)=\"zoomOut()\" />\n    }\n    @if (zoom()) {\n      <ngx-gallery-action [icon]=\"zoomInIcon()\" [disabled]=\"!canZoomIn()\"\n      (closeClick)=\"zoomIn()\" />\n    }\n    @if (rotate()) {\n      <ngx-gallery-action [icon]=\"rotateLeftIcon()\" (closeClick)=\"rotateLeft()\" />\n    }\n    @if (rotate()) {\n      <ngx-gallery-action [icon]=\"rotateRightIcon()\" (closeClick)=\"rotateRight()\" />\n    }\n    @if (fullscreen()) {\n      <ngx-gallery-action [icon]=\"'ngx-gallery-fullscreen ' + fullscreenIcon()\"\n      (closeClick)=\"manageFullscreen()\" />\n    }\n    <ngx-gallery-action [icon]=\"'ngx-gallery-close ' + closeIcon()\" (closeClick)=\"close()\" /> \n  </div>\n</div>\n<div class=\"ngx-spinner-wrapper ngx-gallery-center\" [class.ngx-gallery-active]=\"showSpinner\">\n  <i class=\"ngx-gallery-icon ngx-gallery-spinner {{spinnerIcon()}}\" aria-hidden=\"true\"></i>\n</div>\n<div class=\"ngx-gallery-preview-wrapper\" (click)=\"closeOnClick() && close()\" (mouseup)=\"mouseUpHandler($event)\"\n  (mousemove)=\"mouseMoveHandler($event)\" (touchend)=\"mouseUpHandler($event)\" (touchmove)=\"mouseMoveHandler($event)\">\n  <div class=\"ngx-gallery-preview-img-wrapper\">\n    @if (src && type === 'image') {\n      <img #previewImage class=\"ngx-gallery-preview-img ngx-gallery-center\" [src]=\"src\"\n        (click)=\"$event.stopPropagation()\" (mouseenter)=\"imageMouseEnter()\" (mouseleave)=\"imageMouseLeave()\"\n        (mousedown)=\"mouseDownHandler($event)\" (touchstart)=\"mouseDownHandler($event)\"\n        [class.ngx-gallery-active]=\"!loading\" [class.animation]=\"animation()\" [class.ngx-gallery-grab]=\"canDragOnZoom()\"\n        [style.transform]=\"getTransform()\" [style.left]=\"positionLeft + 'px'\" [style.top]=\"positionTop + 'px'\"/>\n    }\n    @if (src && type === 'video') {\n      <video  #previewImage controls style=\"width: 100%; height: 100%;\"\n        class=\"ngx-gallery-preview-img ngx-gallery-center\"\n        (click)=\"$event.stopPropagation()\" (mouseenter)=\"imageMouseEnter()\" (mouseleave)=\"imageMouseLeave()\" (mousedown)=\"mouseDownHandler($event)\" (touchstart)=\"mouseDownHandler($event)\"\n        [class.ngx-gallery-active]=\"!loading\" [class.animation]=\"animation()\" [class.ngx-gallery-grab]=\"canDragOnZoom()\" [style.transform]=\"getTransform()\" [style.left]=\"positionLeft + 'px'\" [style.top]=\"positionTop + 'px'\">\n        <source [src]=\"src\">\n        Your browser does not support the video tag.\n      </video>\n    }\n    @if (bullets()) {\n      <ngx-gallery-bullets [count]=\"images().length\" [active]=\"index\"\n      (bulletChange)=\"showAtIndex($event)\" />\n    }\n  </div>\n  @if (showDescription() && description) {\n    <div class=\"ngx-gallery-preview-text\" [innerHTML]=\"description\"\n    (click)=\"$event.stopPropagation()\"></div>\n  }\n</div>\n","export class NgxGalleryAnimation {\n    static Fade = 'fade';\n    static Slide = 'slide';\n    static Rotate = 'rotate';\n    static Zoom = 'zoom';\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, HostListener, Input, OnChanges, OnInit, SimpleChanges, inject, input, output } from '@angular/core';\nimport { DomSanitizer, SafeResourceUrl, SafeStyle } from '@angular/platform-browser';\nimport { NgxGalleryService } from '../ngx-gallery.service';\nimport { NgxGalleryOrderedImage } from '../ngx-gallery-ordered-image';\nimport { NgxGalleryAction } from '../ngx-gallery-action';\nimport { NgxGalleryAnimation } from '../ngx-gallery-animation';\nimport { animate, AnimationEvent, state, style, transition, trigger } from '@angular/animations';\nimport { NgClass } from '@angular/common';\nimport { NgxGalleryActionComponent } from '../ngx-gallery-action/ngx-gallery-action.component';\nimport { NgxGalleryBulletsComponent } from '../ngx-gallery-bullets/ngx-gallery-bullets.component';\nimport { NgxGalleryArrowsComponent } from '../ngx-gallery-arrows/ngx-gallery-arrows.component';\n\ntype Orientation = ('slideLeft' | 'slideRight' | 'fade' | 'rotateLeft' | 'rotateRight' | 'zoom' | 'none');\n\n@Component({\n    selector: 'ngx-gallery-image',\n    templateUrl: './ngx-gallery-image.component.html',\n    styleUrls: ['./ngx-gallery-image.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    animations: [\n        trigger('animation', [\n            // ...\n            state('slideRight', style({})),\n            state('slideLeft', style({})),\n            state('fade', style({})),\n            state('rotateLeft', style({})),\n            state('rotateRight', style({})),\n            state('zoom', style({})),\n            transition('slideRight => void', [\n                animate('500ms ease-in-out', style({ transform: 'translateX(-100%)' }))\n            ]),\n            transition('void => slideRight', [\n                style({ transform: 'translateX(100%)' }),\n                animate('500ms ease-in-out', style({ transform: 'translateX(0)' }))\n            ]),\n            transition('slideLeft => void', [\n                animate('500ms ease-in-out', style({ transform: 'translateX(100%)' }))\n            ]),\n            transition('void => slideLeft', [\n                style({ transform: 'translateX(-100%)' }),\n                animate('500ms ease-in-out', style({ transform: 'translateX(0)' }))\n            ]),\n            transition('fade => void', [\n                animate('500ms ease-in-out', style({ opacity: '0' }))\n            ]),\n            transition('void => fade', [\n                style({ opacity: '0' }),\n                animate('500ms ease-in-out', style({ opacity: '1' }))\n            ]),\n            transition('rotateLeft => void', [\n                animate('500ms ease-in-out', style({ transform: 'scale(1, 1) rotate(-90deg)', opacity: '0' }))\n            ]),\n            transition('void => rotateLeft', [\n                style({ transform: 'scale(1, 1) rotate(-90deg)', opacity: '0' }),\n                animate('500ms ease-in-out', style({ transform: 'scale(1, 1) rotate(0deg)', opacity: '1' }))\n            ]),\n            transition('rotateRight => void', [\n                animate('500ms ease-in-out', style({ transform: 'scale(1, 1) rotate(90deg)', opacity: '0' }))\n            ]),\n            transition('void => rotateRight', [\n                style({ transform: 'scale(1, 1) rotate(90deg)', opacity: '0' }),\n                animate('500ms ease-in-out', style({ transform: 'scale(1, 1) rotate(0deg)', opacity: '1' }))\n            ]),\n            transition('zoom => void', [\n                animate('500ms ease-in-out', style({ transform: 'scale(2.5,2.5)', opacity: '0' }))\n            ]),\n            transition('void => zoom', [\n                style({ transform: 'scale(2.5,2.5)', opacity: '0' }),\n                animate('500ms ease-in-out', style({ transform: 'scale(1, 1)', opacity: '1' }))\n            ]),\n        ]),\n    ],\n    imports: [NgClass, NgxGalleryActionComponent, NgxGalleryBulletsComponent, NgxGalleryArrowsComponent]\n})\nexport class NgxGalleryImageComponent implements OnInit, OnChanges {\n  private sanitization = inject(DomSanitizer);\n  private changeDetectorRef = inject(ChangeDetectorRef);\n  private elementRef = inject(ElementRef);\n  private helperService = inject(NgxGalleryService);\n\n  readonly images = input<NgxGalleryOrderedImage[]>(undefined);\n  readonly clickable = input<boolean>(undefined);\n  // eslint-disable-next-line no-underscore-dangle, id-blacklist, id-match\n  _selectedIndex;\n  @Input()\n  set selectedIndex(index: number) {\n    if (index > this._selectedIndex) {\n      let action;\n      const animation = this.animation();\n      if (animation === NgxGalleryAnimation.Slide) {\n        action = 'slideRight';\n      } else if (animation === NgxGalleryAnimation.Fade) {\n        action = 'fade';\n      } else if (animation === NgxGalleryAnimation.Rotate) {\n        action = 'rotateRight';\n      } else if (animation === NgxGalleryAnimation.Zoom) {\n        action = 'zoom';\n      }\n      this.setAction(action);\n    } else if (index < this._selectedIndex) {\n      let action;\n      const animation = this.animation();\n      if (animation === NgxGalleryAnimation.Slide) {\n        action = 'slideLeft';\n      } else if (animation === NgxGalleryAnimation.Fade) {\n        action = 'fade';\n      } else if (animation === NgxGalleryAnimation.Rotate) {\n        action = 'rotateLeft';\n      } else if (animation === NgxGalleryAnimation.Zoom) {\n        action = 'zoom';\n      }\n      this.setAction(action);\n    }\n\n    this._selectedIndex = index;\n  }\n\n  @Input() arrows: boolean;\n  readonly arrowsAutoHide = input<boolean>(undefined);\n  readonly swipe = input<boolean>(undefined);\n  readonly animation = input<string>(undefined);\n  readonly size = input<string>(undefined);\n  readonly arrowPrevIcon = input<string>(undefined);\n  readonly arrowNextIcon = input<string>(undefined);\n  readonly autoPlay = input<boolean>(undefined);\n  readonly autoPlayInterval = input<number>(undefined);\n  readonly autoPlayPauseOnHover = input<boolean>(undefined);\n  readonly infinityMove = input<boolean>(undefined);\n  readonly lazyLoading = input<boolean>(undefined);\n  readonly actions = input<NgxGalleryAction[]>(undefined);\n  @Input() descriptions: string[];\n  readonly showDescription = input<boolean>(undefined);\n  readonly bullets = input<boolean>(undefined);\n\n  readonly imageClick = output<number>();\n  readonly activeChange = output<number>();\n  readonly animating = output<boolean>();\n\n  canChangeImage = true;\n  public action: Orientation;\n\n  isAnimating = false;\n\n  private timer;\n\n  constructor() {\n    const changeDetectorRef = this.changeDetectorRef;\n\n    this.changeDetectorRef = changeDetectorRef;\n    this.action = 'none';\n  }\n\n  // @HostBinding('style.display') public display = 'inline-block';\n  // @HostBinding('style.background-color') public color = 'lime';\n\n  ngOnInit() {\n    if (this.arrows && this.arrowsAutoHide()) {\n      this.arrows = false;\n    }\n\n    if (this.autoPlay()) {\n      this.startAutoPlay();\n    }\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes['swipe']) {\n      this.helperService.manageSwipe(this.swipe(), this.elementRef, 'image', () => this.showNext(), () => this.showPrev());\n    }\n  }\n\n  @HostListener('mouseenter') onMouseEnter() {\n    if (this.arrowsAutoHide() && !this.arrows) {\n      this.arrows = true;\n    }\n\n    if (this.autoPlay() && this.autoPlayPauseOnHover()) {\n      this.stopAutoPlay();\n    }\n  }\n\n  @HostListener('mouseleave') onMouseLeave() {\n    if (this.arrowsAutoHide() && this.arrows) {\n      this.arrows = false;\n    }\n\n    if (this.autoPlay() && this.autoPlayPauseOnHover()) {\n      this.startAutoPlay();\n    }\n  }\n\n  reset(index: number): void {\n    this._selectedIndex = index;\n    this.action = 'none';\n  }\n\n  getImages(): NgxGalleryOrderedImage[] {\n    const images = this.images();\n    if (!images) {\n      return [];\n    }\n\n    if (this.lazyLoading()) {\n      const indexes = [this._selectedIndex];\n      const prevIndex = this._selectedIndex - 1;\n\n      const infinityMove = this.infinityMove();\n      if (prevIndex === -1 && infinityMove) {\n        indexes.push(images.length - 1);\n      } else if (prevIndex >= 0) {\n        indexes.push(prevIndex);\n      }\n\n      const nextIndex = this._selectedIndex + 1;\n\n      if (nextIndex === images.length && infinityMove) {\n        indexes.push(0);\n      } else if (nextIndex < images.length) {\n        indexes.push(nextIndex);\n      }\n\n      return images.filter((img, i) => indexes.indexOf(i) !== -1);\n    } else {\n      return images;\n    }\n  }\n\n  startAutoPlay(): void {\n    this.stopAutoPlay();\n\n    this.timer = setInterval(() => {\n      if (!this.showNext()) {\n        this._selectedIndex = -1;\n        this.showNext();\n      }\n    }, this.autoPlayInterval());\n  }\n\n  stopAutoPlay() {\n    if (this.timer) {\n      clearInterval(this.timer);\n    }\n  }\n\n  handleClick(event: Event, index: number): void {\n    if (this.clickable()) {\n      this.imageClick.emit(index);\n\n      event.stopPropagation();\n      event.preventDefault();\n    }\n  }\n\n  show(index: number) {\n    if (this.isAnimating) {\n      return;\n    }\n    if (index > this._selectedIndex) {\n      let action;\n      const animation = this.animation();\n      if (animation === NgxGalleryAnimation.Slide) {\n        action = 'slideRight';\n      } else if (animation === NgxGalleryAnimation.Fade) {\n        action = 'fade';\n      } else if (animation === NgxGalleryAnimation.Rotate) {\n        action = 'rotateRight';\n      } else if (animation === NgxGalleryAnimation.Zoom) {\n        action = 'zoom';\n      }\n      this.setAction(action);\n    } else {\n      let action;\n      const animation = this.animation();\n      if (animation === NgxGalleryAnimation.Slide) {\n        action = 'slideLeft';\n      } else if (animation === NgxGalleryAnimation.Fade) {\n        action = 'fade';\n      } else if (animation === NgxGalleryAnimation.Rotate) {\n        action = 'rotateLeft';\n      } else if (animation === NgxGalleryAnimation.Zoom) {\n        action = 'zoom';\n      }\n      this.setAction(action);\n    }\n\n    this._selectedIndex = index;\n    this.activeChange.emit(this._selectedIndex);\n    this.setChangeTimeout();\n  }\n\n  setAction(action: Orientation) {\n    this.action = action;\n    this.changeDetectorRef.detectChanges();\n  }\n\n  showNext(): boolean {\n    if (this.isAnimating) {\n      return false;\n    }\n    if (this.canShowNext() && this.canChangeImage) {\n      let action;\n      const animation = this.animation();\n      if (animation === NgxGalleryAnimation.Slide) {\n        action = 'slideRight';\n      } else if (animation === NgxGalleryAnimation.Fade) {\n        action = 'fade';\n      } else if (animation === NgxGalleryAnimation.Rotate) {\n        action = 'rotateRight';\n      } else if (animation === NgxGalleryAnimation.Zoom) {\n        action = 'zoom';\n      }\n      this.setAction(action);\n      this._selectedIndex++;\n      if (this._selectedIndex === this.images().length) {\n        this._selectedIndex = 0;\n      }\n\n      this.activeChange.emit(this._selectedIndex);\n      this.setChangeTimeout();\n\n      return true;\n    } else {\n      return false;\n    }\n  }\n\n  showPrev(): void {\n    if (this.isAnimating) {\n      return;\n    }\n    if (this.canShowPrev() && this.canChangeImage) {\n      let action;\n      const animation = this.animation();\n      if (animation === NgxGalleryAnimation.Slide) {\n        action = 'slideLeft';\n      } else if (animation === NgxGalleryAnimation.Fade) {\n        action = 'fade';\n      } else if (animation === NgxGalleryAnimation.Rotate) {\n        action = 'rotateLeft';\n      } else if (animation === NgxGalleryAnimation.Zoom) {\n        action = 'zoom';\n      }\n      this.setAction(action);\n      this._selectedIndex--;\n      if (this._selectedIndex < 0) {\n        this._selectedIndex = this.images().length - 1;\n      }\n\n      this.activeChange.emit(this._selectedIndex);\n      this.setChangeTimeout();\n    }\n  }\n\n  setChangeTimeout() {\n    this.canChangeImage = false;\n    let timeout = 1000;\n\n    const animation = this.animation();\n    if (animation === NgxGalleryAnimation.Slide\n      || animation === NgxGalleryAnimation.Fade) {\n      timeout = 500;\n    }\n\n    setTimeout(() => {\n      this.canChangeImage = true;\n    }, timeout);\n  }\n\n  canShowNext(): boolean {\n    const images = this.images();\n    if (images) {\n      return this.infinityMove() || this._selectedIndex < images.length - 1;\n    } else {\n      return false;\n    }\n  }\n\n  canShowPrev(): boolean {\n    if (this.images()) {\n      return this.infinityMove() || this._selectedIndex > 0;\n    } else {\n      return false;\n    }\n  }\n\n  getSafeUrl(image: string | SafeResourceUrl): SafeStyle {\n    return this.sanitization.bypassSecurityTrustStyle(this.helperService.getBackgroundUrl(image.toString()));\n  }\n\n  getFileType(fileSource: string) {\n    return this.helperService.getFileType(fileSource);\n  }\n\n  onStart(event: AnimationEvent) {\n    this.isAnimating = true;\n    this.animating.emit(true);\n  }\n\n  onDone(event: AnimationEvent) {\n    this.isAnimating = false;\n    this.animating.emit(false);\n  }\n}\n","<div class=\"ngx-gallery-image-wrapper ngx-gallery-animation-{{animation()}} ngx-gallery-image-size-{{size()}}\">\n  @for (image of getImages(); track image; let i = $index) {\n    @if (image.type === 'image' && image.index === _selectedIndex) {\n      <div class=\"ngx-gallery-image\"\n        [ngClass]=\"{'ngx-gallery-clickable': clickable() }\"\n        [style.background-image]=\"getSafeUrl(image.src)\"\n        (click)=\"handleClick($event, image.index)\"\n        [@animation]=\"action\"\n        (@animation.start)=\"onStart($event)\"\n        (@animation.done)=\"onDone($event)\">\n        <div class=\"ngx-gallery-icons-wrapper\">\n          @for (action of actions(); track action) {\n            <ngx-gallery-action [icon]=\"action.icon\" [disabled]=\"action.disabled\"\n              [titleText]=\"action.titleText\"\n            (closeClick)=\"action.onClick($event, image.index)\" />\n          }\n        </div>\n        @if (showDescription() && descriptions[image.index]) {\n          <div class=\"ngx-gallery-image-text\"\n          [innerHTML]=\"descriptions[image.index]\" (click)=\"$event.stopPropagation()\"></div>\n        }\n      </div>\n    }\n    @if (image.type === 'video' && image.index === _selectedIndex) {\n      <div class=\"ngx-gallery-image\"\n        [ngClass]=\"{'ngx-gallery-clickable': clickable() }\"\n        [style.background-image]=\"getSafeUrl(image.src)\"\n        (click)=\"handleClick($event, image.index)\"\n        [@animation]=\"action\"\n        (@animation.start)=\"onStart($event)\"\n        (@animation.done)=\"onDone($event)\">\n        <video controls style=\"width:100%; height:100%; background: #000;\">\n          <source [src]=\"image.src\">\n          Your browser does not support the video tag.\n        </video>\n        <div class=\"ngx-gallery-icons-wrapper\">\n          @for (action of actions(); track action) {\n            <ngx-gallery-action [icon]=\"action.icon\" [disabled]=\"action.disabled\"\n              [titleText]=\"action.titleText\"\n            (closeClick)=\"action.onClick($event, image.index)\" />\n          }\n        </div>\n        @if (showDescription() && descriptions[image.index]) {\n          <div class=\"ngx-gallery-image-text\"\n          [innerHTML]=\"descriptions[image.index]\" (click)=\"$event.stopPropagation()\"></div>\n        }\n      </div>\n    }\n  }\n  @if (bullets()) {\n    <ngx-gallery-bullets [count]=\"images().length\" [active]=\"_selectedIndex\"\n    (bulletChange)=\"show($event)\" />\n  }\n  @if (arrows) {\n    <ngx-gallery-arrows class=\"ngx-gallery-image-size-{{size()}}\" (prevClick)=\"showPrev()\"\n      (nextClick)=\"showNext()\" [prevDisabled]=\"!canShowPrev()\" [nextDisabled]=\"!canShowNext()\"\n    [arrowPrevIcon]=\"arrowPrevIcon()\" [arrowNextIcon]=\"arrowNextIcon()\" />\n  }\n</div>\n","export class NgxGalleryOrder {\n  static Column = 1;\n  static Row = 2;\n  static Page = 3;\n}\n","import { ChangeDetectionStrategy, Component, ElementRef, HostListener, Input, OnChanges, OnInit, SimpleChanges, inject, input, output } from '@angular/core';\nimport {DomSanitizer, SafeResourceUrl, SafeStyle} from '@angular/platform-browser';\nimport {NgxGalleryService} from '../ngx-gallery.service';\nimport {NgxGalleryAction} from '../ngx-gallery-action';\nimport {NgxGalleryOrder} from '../ngx-gallery-order';\nimport { NgClass } from '@angular/common';\nimport { NgxGalleryActionComponent } from '../ngx-gallery-action/ngx-gallery-action.component';\nimport { NgxGalleryArrowsComponent } from '../ngx-gallery-arrows/ngx-gallery-arrows.component';\n\n@Component({\n    selector: 'ngx-gallery-thumbnails',\n    templateUrl: './ngx-gallery-thumbnails.component.html',\n    styleUrls: ['./ngx-gallery-thumbnails.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [NgClass, NgxGalleryActionComponent, NgxGalleryArrowsComponent]\n})\nexport class NgxGalleryThumbnailsComponent implements OnChanges {\n  private sanitization = inject(DomSanitizer);\n  private elementRef = inject(ElementRef);\n  private helperService = inject(NgxGalleryService);\n\n  thumbnailsLeft: string;\n  thumbnailsMarginLeft: string;\n  mouseenter: boolean;\n  remainingCountValue: number;\n\n  minStopIndex = 0;\n\n  readonly images = input<string[] | SafeResourceUrl[]>(undefined);\n  readonly isAnimating = input<boolean>(undefined);\n  readonly links = input<string[]>(undefined);\n  readonly labels = input<string[]>(undefined);\n  readonly linkTarget = input<string>(undefined);\n  readonly columns = input<number>(undefined);\n  readonly rows = input<number>(undefined);\n  readonly arrows = input<boolean>(undefined);\n  readonly arrowsAutoHide = input<boolean>(undefined);\n  readonly margin = input<number>(undefined);\n  @Input() selectedIndex: number;\n  readonly clickable = input<boolean>(undefined);\n  readonly swipe = input<boolean>(undefined);\n  readonly size = input<string>(undefined);\n  readonly arrowPrevIcon = input<string>(undefined);\n  readonly arrowNextIcon = input<string>(undefined);\n  readonly moveSize = input<number>(undefined);\n  readonly order = input<number>(undefined);\n  readonly remainingCount = input<boolean>(undefined);\n  readonly lazyLoading = input<boolean>(undefined);\n  readonly actions = input<NgxGalleryAction[]>(undefined);\n\n  readonly activeChange = output<number>();\n\n  private index = 0;\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes['selectedIndex']) {\n      this.validateIndex();\n    }\n\n    if (changes['swipe']) {\n      this.helperService.manageSwipe(this.swipe(), this.elementRef,\n        'thumbnails', () => this.moveRight(), () => this.moveLeft());\n    }\n\n    const images = this.images();\n    if (images) {\n      this.remainingCountValue = images.length - (this.rows() * this.columns());\n    }\n  }\n\n  @HostListener('mouseenter') onMouseEnter() {\n    this.mouseenter = true;\n  }\n\n  @HostListener('mouseleave') onMouseLeave() {\n    this.mouseenter = false;\n  }\n\n  reset(index: number): void {\n    this.selectedIndex = index;\n    this.setDefaultPosition();\n\n    this.index = 0;\n    this.validateIndex();\n  }\n\n  getImages(): string[] | SafeResourceUrl[] {\n    const images = this.images();\n    if (!images) {\n      return [];\n    }\n\n    const order = this.order();\n    if (this.remainingCount()) {\n      return images.slice(0, this.rows() * this.columns());\n    } else if (this.lazyLoading() && order !== NgxGalleryOrder.Row) {\n      let stopIndex = 0;\n\n      if (order === NgxGalleryOrder.Column) {\n        stopIndex = (this.index + this.columns() + this.moveSize()) * this.rows();\n      } else if (order === NgxGalleryOrder.Page) {\n        stopIndex = this.index + ((this.columns() * this.rows()) * 2);\n      }\n\n      if (stopIndex <= this.minStopIndex) {\n        stopIndex = this.minStopIndex;\n      } else {\n        this.minStopIndex = stopIndex;\n      }\n\n      return images.slice(0, stopIndex);\n    } else {\n      return images;\n    }\n  }\n\n  handleClick(event: Event, index: number): void {\n    if (!this.hasLink(index) && !this.isAnimating()) {\n      this.selectedIndex = index;\n      this.activeChange.emit(index);\n    }\n    event.stopPropagation();\n    event.preventDefault();\n  }\n\n  hasLink(index: number): boolean {\n    const links = this.links();\n    return !!(links && links.length && links[index]);\n  }\n\n  moveRight(): void {\n    if (this.canMoveRight()) {\n      this.index += this.moveSize();\n      const maxIndex = this.getMaxIndex() - this.columns();\n\n      if (this.index > maxIndex) {\n        this.index = maxIndex;\n      }\n\n      this.setThumbnailsPosition();\n    }\n  }\n\n  moveLeft(): void {\n    if (this.canMoveLeft()) {\n      this.index -= this.moveSize();\n\n      if (this.index < 0) {\n        this.index = 0;\n      }\n\n      this.setThumbnailsPosition();\n    }\n  }\n\n  canMoveRight(): boolean {\n    return this.index + this.columns() < this.getMaxIndex();\n  }\n\n  canMoveLeft(): boolean {\n    return this.index !== 0;\n  }\n\n  getThumbnailLeft(index: number): SafeStyle {\n    let calculatedIndex;\n\n    const order = this.order();\n    if (order === NgxGalleryOrder.Column) {\n      calculatedIndex = Math.floor(index / this.rows());\n    } else if (order === NgxGalleryOrder.Page) {\n      calculatedIndex = (index % this.columns()) + (Math.floor(index / (this.rows() * this.columns())) * this.columns());\n    } else if (order === NgxGalleryOrder.Row && this.remainingCount()) {\n      calculatedIndex = index % this.columns();\n    } else {\n      calculatedIndex = index % Math.ceil(this.images().length / this.rows());\n    }\n\n    return this.getThumbnailPosition(calculatedIndex, this.columns());\n  }\n\n  getThumbnailTop(index: number): SafeStyle {\n    let calculatedIndex;\n\n    const order = this.order();\n    if (order === NgxGalleryOrder.Column) {\n      calculatedIndex = index % this.rows();\n    } else if (order === NgxGalleryOrder.Page) {\n      calculatedIndex = Math.floor(index / this.columns()) - (Math.floor(index / (this.rows() * this.columns())) * this.rows());\n    } else if (order === NgxGalleryOrder.Row && this.remainingCount()) {\n      calculatedIndex = Math.floor(index / this.columns());\n    } else {\n      calculatedIndex = Math.floor(index / Math.ceil(this.images().length / this.rows()));\n    }\n\n    return this.getThumbnailPosition(calculatedIndex, this.rows());\n  }\n\n  getThumbnailWidth(): SafeStyle {\n    return this.getThumbnailDimension(this.columns());\n  }\n\n  getThumbnailHeight(): SafeStyle {\n    return this.getThumbnailDimension(this.rows());\n  }\n\n  setThumbnailsPosition(): void {\n    this.thumbnailsLeft = -((100 / this.columns()) * this.index) + '%';\n\n    this.thumbnailsMarginLeft = -((this.margin() - (((this.columns() - 1)\n      * this.margin()) / this.columns())) * this.index) + 'px';\n  }\n\n  setDefaultPosition(): void {\n    this.thumbnailsLeft = '0px';\n    this.thumbnailsMarginLeft = '0px';\n  }\n\n  canShowArrows(): boolean {\n    if (this.remainingCount()) {\n      return false;\n    } else {\n      const images = this.images();\n      return this.arrows() && images && images.length > this.getVisibleCount()\n        && (!this.arrowsAutoHide() || this.mouseenter);\n    }\n  }\n\n  validateIndex(): void {\n    const images = this.images();\n    if (images) {\n      let newIndex;\n\n      if (this.order() === NgxGalleryOrder.Column) {\n        newIndex = Math.floor(this.selectedIndex / this.rows());\n      } else {\n        newIndex = this.selectedIndex % Math.ceil(images.length / this.rows());\n      }\n\n      if (this.remainingCount()) {\n        newIndex = 0;\n      }\n\n      if (newIndex < this.index || newIndex >= this.index + this.columns()) {\n        const maxIndex = this.getMaxIndex() - this.columns();\n        this.index = newIndex > maxIndex ? maxIndex : newIndex;\n\n        this.setThumbnailsPosition();\n      }\n    }\n  }\n\n  getSafeUrl(image: string | SafeResourceUrl): SafeStyle {\n    return this.sanitization.bypassSecurityTrustStyle(this.helperService.getBackgroundUrl(image.toString()));\n  }\n\n  getFileType(fileSource: string | SafeResourceUrl): string {\n    return this.helperService.getFileType(fileSource.toString());\n  }\n\n  private getThumbnailPosition(index: number, count: number): SafeStyle {\n    return this.getSafeStyle('calc(' + ((100 / count) * index) + '% + '\n      + ((this.margin() - (((count - 1) * this.margin()) / count)) * index) + 'px)');\n  }\n\n  private getThumbnailDimension(count: number): SafeStyle {\n    const margin = this.margin();\n    if (margin !== 0) {\n      return this.getSafeStyle('calc(' + (100 / count) + '% - '\n        + (((count - 1) * margin) / count) + 'px)');\n    } else {\n      return this.getSafeStyle('calc(' + (100 / count) + '% + 1px)');\n    }\n  }\n\n  private getMaxIndex(): number {\n    if (this.order() === NgxGalleryOrder.Page) {\n      let maxIndex = (Math.floor(this.images().length / this.getVisibleCount()) * this.columns());\n\n      if (this.images().length % this.getVisibleCount() > this.columns()) {\n        maxIndex += this.columns();\n      } else {\n        maxIndex += this.images().length % this.getVisibleCount();\n      }\n\n      return maxIndex;\n    } else {\n      return Math.ceil(this.images().length / this.rows());\n    }\n  }\n\n  private getVisibleCount(): number {\n    return this.columns() * this.rows();\n  }\n\n  private getSafeStyle(value: string): SafeStyle {\n    return this.sanitization.bypassSecurityTrustStyle(value);\n  }\n}\n","<div class=\"ngx-gallery-thumbnails-wrapper ngx-gallery-thumbnail-size-{{size()}}\">\n  <div class=\"ngx-gallery-thumbnails\" [style.transform]=\"'translateX(' + thumbnailsLeft + ')'\"\n    [style.marginLeft]=\"thumbnailsMarginLeft\">\n    @for (image of getImages(); track image; let i = $index) {\n      <a [href]=\"hasLink(i) ? links()[i] : '#'\" [target]=\"linkTarget()\" class=\"ngx-gallery-thumbnail\"\n        (click)=\"handleClick($event, i)\" [style.width]=\"getThumbnailWidth()\" [style.height]=\"getThumbnailHeight()\"\n        [style.left]=\"getThumbnailLeft(i)\" [style.top]=\"getThumbnailTop(i)\"\n        [ngClass]=\"{ 'ngx-gallery-active': i === selectedIndex, 'ngx-gallery-clickable': clickable() }\"\n        [attr.aria-label]=\"labels()[i]\">\n        @if (getFileType(image) === 'image') {\n          <div [style.background-image]=\"getSafeUrl(image)\" class=\"ngx-gallery-thumbnail\"\n            [ngClass]=\"{ 'ngx-gallery-active': i === selectedIndex, 'ngx-gallery-clickable': clickable() }\"\n          style=\"width: 100%; height: 100%; position:absolute;\"></div>\n        }\n        @if (getFileType(image) === 'video') {\n          <div class=\"ngx-gallery-thumbnail-video\">\n            <video  class=\"ngx-gallery-thumbnail\" [ngClass]=\"{ 'ngx-gallery-active': i === selectedIndex, 'ngx-gallery-clickable': clickable() }\"\n              style=\"width: 100%; height: 100%; position:absolute; left:0; background:#000;\">\n              <source [src]=\"image\">\n              Your browser does not support the video tag.\n            </video>\n          </div>\n        }\n        <div class=\"ngx-gallery-icons-wrapper\">\n          @for (action of actions(); track action) {\n            <ngx-gallery-action [icon]=\"action.icon\" [disabled]=\"action.disabled\"\n            [titleText]=\"action.titleText\" (closeClick)=\"action.onClick($event, i)\" />\n          }\n        </div>\n        @if (remainingCount() && remainingCountValue && (i === (rows() * columns()) - 1)) {\n          <div class=\"ngx-gallery-remaining-count-overlay\"\n            >\n            <span class=\"ngx-gallery-remaining-count\">+{{remainingCountValue}}</span>\n          </div>\n        }\n      </a>\n    }\n  </div>\n</div>\n@if (canShowArrows()) {\n  <ngx-gallery-arrows (prevClick)=\"moveLeft()\" (nextClick)=\"moveRight()\"\n    [prevDisabled]=\"!canMoveLeft()\" [nextDisabled]=\"!canMoveRight()\" [arrowPrevIcon]=\"arrowPrevIcon()\"\n  [arrowNextIcon]=\"arrowNextIcon()\" />\n}\n","export interface INgxGalleryAction {\n    icon: string;\n    disabled?: boolean;\n    titleText?: string;\n\n    onClick: (event: Event, index: number) => void;\n}\n\nexport class NgxGalleryAction implements INgxGalleryAction {\n    icon: string;\n    disabled?: boolean;\n    titleText?: string;\n\n    onClick: (event: Event, index: number) => void;\n\n    constructor(action: INgxGalleryAction) {\n        this.icon = action.icon;\n        this.disabled = action.disabled ? action.disabled : false;\n        this.titleText = action.titleText ? action.titleText : '';\n\n        this.onClick = action.onClick;\n    }\n}\n","export class NgxGalleryLayout {\n    static ThumbnailsTop = 'thumbnails-top';\n    static ThumbnailsBottom = 'thumbnails-bottom';\n}\n","export class NgxGalleryImageSize {\n    static Cover = 'cover';\n    static Contain = 'contain';\n}\n","import {NgxGalleryAction} from './ngx-gallery-action';\nimport {NgxGalleryOrder} from './ngx-gallery-order';\nimport {NgxGalleryLayout} from './ngx-gallery-layout';\nimport {NgxGalleryAnimation} from './ngx-gallery-animation';\nimport {NgxGalleryImageSize} from './ngx-gallery-image-size';\n\nexport interface INgxGalleryOptions {\n    width?: string;\n    height?: string;\n    breakpoint?: number;\n    fullWidth?: boolean;\n    layout?: string;\n    startIndex?: number;\n    linkTarget?: string;\n    lazyLoading?: boolean;\n    image?: boolean;\n    imagePercent?: number;\n    imageArrows?: boolean;\n    imageArrowsAutoHide?: boolean;\n    imageSwipe?: boolean;\n    imageAnimation?: string;\n    imageSize?: string;\n    imageAutoPlay?: boolean;\n    imageAutoPlayInterval?: number;\n    imageAutoPlayPauseOnHover?: boolean;\n    imageInfinityMove?: boolean;\n    imageActions?: NgxGalleryAction[];\n    imageDescription?: boolean;\n    imageBullets?: boolean;\n    thumbnails?: boolean;\n    thumbnailsColumns?: number;\n    thumbnailsRows?: number;\n    thumbnailsPercent?: number;\n    thumbnailsMargin?: number;\n    thumbnailsArrows?: boolean;\n    thumbnailsArrowsAutoHide?: boolean;\n    thumbnailsSwipe?: boolean;\n    thumbnailsMoveSize?: number;\n    thumbnailsOrder?: number;\n    thumbnailsRemainingCount?: boolean;\n    thumbnailsAsLinks?: boolean;\n    thumbnailsAutoHide?: boolean;\n    thumbnailMargin?: number;\n    thumbnailSize?: string;\n    thumbnailActions?: NgxGalleryAction[];\n    thumbnailClasses?: string[];\n    preview?: boolean;\n    previewDescription?: boolean;\n    previewArrows?: boolean;\n    previewArrowsAutoHide?: boolean;\n    previewSwipe?: boolean;\n    previewFullscreen?: boolean;\n    previewForceFullscreen?: boolean;\n    previewCloseOnClick?: boolean;\n    previewCloseOnEsc?: boolean;\n    previewKeyboardNavigation?: boolean;\n    previewAnimation?: boolean;\n    previewAutoPlay?: boolean;\n    previewAutoPlayInterval?: number;\n    previewAutoPlayPauseOnHover?: boolean;\n    previewInfinityMove?: boolean;\n    previewZoom?: boolean;\n    previewZoomStep?: number;\n    previewZoomMax?: number;\n    previewZoomMin?: number;\n    previewRotate?: boolean;\n    previewDownload?: boolean;\n    previewCustom?: (index: number) => void;\n    previewBullets?: boolean;\n    arrowPrevIcon?: string;\n    arrowNextIcon?: string;\n    closeIcon?: string;\n    fullscreenIcon?: string;\n    spinnerIcon?: string;\n    zoomInIcon?: string;\n    zoomOutIcon?: string;\n    rotateLeftIcon?: string;\n    rotateRightIcon?: string;\n    downloadIcon?: string;\n    actions?: NgxGalleryAction[];\n}\n\nexport class NgxGalleryOptions implements INgxGalleryOptions {\n    width?: string;\n    height?: string;\n    breakpoint?: number;\n    fullWidth?: boolean;\n    layout?: string;\n    startIndex?: number;\n    linkTarget?: string;\n    lazyLoading?: boolean;\n    image?: boolean;\n    imagePercent?: number;\n    imageArrows?: boolean;\n    imageArrowsAutoHide?: boolean;\n    imageSwipe?: boolean;\n    imageAnimation?: string;\n    imageSize?: string;\n    imageAutoPlay?: boolean;\n    imageAutoPlayInterval?: number;\n    imageAutoPlayPauseOnHover?: boolean;\n    imageInfinityMove?: boolean;\n    imageActions?: NgxGalleryAction[];\n    imageDescription?: boolean;\n    imageBullets?: boolean;\n    thumbnails?: boolean;\n    thumbnailsColumns?: number;\n    thumbnailsRows?: number;\n    thumbnailsPercent?: number;\n    thumbnailsMargin?: number;\n    thumbnailsArrows?: boolean;\n    thumbnailsArrowsAutoHide?: boolean;\n    thumbnailsSwipe?: boolean;\n    thumbnailsMoveSize?: number;\n    thumbnailsOrder?: number;\n    thumbnailsRemainingCount?: boolean;\n    thumbnailsAsLinks?: boolean;\n    thumbnailsAutoHide?: boolean;\n    thumbnailMargin?: number;\n    thumbnailSize?: string;\n    thumbnailActions?: NgxGalleryAction[];\n    thumbnailClasses?: string[];\n    preview?: boolean;\n    previewDescription?: boolean;\n    previewArrows?: boolean;\n    previewArrowsAutoHide?: boolean;\n    previewSwipe?: boolean;\n    previewFullscreen?: boolean;\n    previewForceFullscreen?: boolean;\n    previewCloseOnClick?: boolean;\n    previewCloseOnEsc?: boolean;\n    previewKeyboardNavigation?: boolean;\n    previewAnimation?: boolean;\n    previewAutoPlay?: boolean;\n    previewAutoPlayInterval?: number;\n    previewAutoPlayPauseOnHover?: boolean;\n    previewInfinityMove?: boolean;\n    previewZoom?: boolean;\n    previewZoomStep?: number;\n    previewZoomMax?: number;\n    previewZoomMin?: number;\n    previewRotate?: boolean;\n    previewDownload?: boolean;\n    previewCustom?: (index: number) => void;\n    previewBullets?: boolean;\n    arrowPrevIcon?: string;\n    arrowNextIcon?: string;\n    closeIcon?: string;\n    fullscreenIcon?: string;\n    spinnerIcon?: string;\n    zoomInIcon?: string;\n    zoomOutIcon?: string;\n    rotateLeftIcon?: string;\n    rotateRightIcon?: string;\n    downloadIcon?: string;\n    actions?: NgxGalleryAction[];\n\n    constructor(obj: INgxGalleryOptions) {\n\n        const preventDefaults = obj.breakpoint === undefined ? false : true;\n\n        function use<T>(source: T, defaultValue: T): T {\n            return obj && (source !== undefined || preventDefaults) ? source : defaultValue;\n        }\n\n        this.breakpoint = use(obj.breakpoint, undefined);\n        this.width = use(obj.width, '500px');\n        this.height = use(obj.height, '400px');\n        this.fullWidth = use(obj.fullWidth, false);\n        this.layout = use(obj.layout, NgxGalleryLayout.ThumbnailsBottom);\n        this.startIndex = use(obj.startIndex, 0);\n        this.linkTarget = use(obj.linkTarget, '_blank');\n        this.lazyLoading = use(obj.lazyLoading, true);\n\n        this.image = use(obj.image, true);\n        this.imagePercent = use(obj.imagePercent, 75);\n        this.imageArrows = use(obj.imageArrows, true);\n        this.imageArrowsAutoHide = use(obj.imageArrowsAutoHide, false);\n        this.imageSwipe = use(obj.imageSwipe, false);\n        this.imageAnimation = use(obj.imageAnimation, NgxGalleryAnimation.Fade);\n        this.imageSize = use(obj.imageSize, NgxGalleryImageSize.Cover);\n        this.imageAutoPlay = use(obj.imageAutoPlay, false);\n        this.imageAutoPlayInterval = use(obj.imageAutoPlayInterval, 2000);\n        this.imageAutoPlayPauseOnHover = use(obj.imageAutoPlayPauseOnHover, false);\n        this.imageInfinityMove = use(obj.imageInfinityMove, false);\n        if (obj && obj.imageActions && obj.imageActions.length) {\n            obj.imageActions = obj.imageActions.map(action => new NgxGalleryAction(action));\n        }\n        this.imageActions = use(obj.imageActions, []);\n        this.imageDescription = use(obj.imageDescription, false);\n        this.imageBullets = use(obj.imageBullets, false);\n\n        this.thumbnails = use(obj.thumbnails, true);\n        this.thumbnailsColumns = use(obj.thumbnailsColumns, 4);\n        this.thumbnailsRows = use(obj.thumbnailsRows, 1);\n        this.thumbnailsPercent = use(obj.thumbnailsPercent, 25);\n        this.thumbnailsMargin = use(obj.thumbnailsMargin, 10);\n        this.thumbnailsArrows = use(obj.thumbnailsArrows, true);\n        this.thumbnailsArrowsAutoHide = use(obj.thumbnailsArrowsAutoHide, false);\n        this.thumbnailsSwipe = use(obj.thumbnailsSwipe, false);\n        this.thumbnailsMoveSize = use(obj.thumbnailsMoveSize, 1);\n        this.thumbnailsOrder = use(obj.thumbnailsOrder, NgxGalleryOrder.Column);\n        this.thumbnailsRemainingCount = use(obj.thumbnailsRemainingCount, false);\n        this.thumbnailsAsLinks = use(obj.thumbnailsAsLinks, false);\n        this.thumbnailsAutoHide = use(obj.thumbnailsAutoHide, false);\n        this.thumbnailMargin = use(obj.thumbnailMargin, 10);\n        this.thumbnailSize = use(obj.thumbnailSize, NgxGalleryImageSize.Cover);\n        if (obj && obj.thumbnailActions && obj.thumbnailActions.length) {\n            obj.thumbnailActions = obj.thumbnailActions.map(action => new NgxGalleryAction(action));\n        }\n        this.thumbnailActions = use(obj.thumbnailActions, []);\n        this.thumbnailClasses = use(obj.thumbnailClasses, []);\n\n\n        this.preview = use(obj.preview, true);\n        this.previewDescription = use(obj.previewDescription, true);\n        this.previewArrows = use(obj.previewArrows, true);\n        this.previewArrowsAutoHide = use(obj.previewArrowsAutoHide, false);\n        this.previewSwipe = use(obj.previewSwipe, false);\n        this.previewFullscreen = use(obj.previewFullscreen, false);\n        this.previewForceFullscreen = use(obj.previewForceFullscreen, false);\n        this.previewCloseOnClick = use(obj.previewCloseOnClick, false);\n        this.previewCloseOnEsc = use(obj.previewCloseOnEsc, false);\n        this.previewKeyboardNavigation = use(obj.previewKeyboardNavigation, false);\n        this.previewAnimation = use(obj.previewAnimation, true);\n        this.previewAutoPlay = use(obj.previewAutoPlay, false);\n        this.previewAutoPlayInterval = use(obj.previewAutoPlayInterval, 2000);\n        this.previewAutoPlayPauseOnHover = use(obj.previewAutoPlayPauseOnHover, false);\n        this.previewInfinityMove = use(obj.previewInfinityMove, false);\n        this.previewZoom = use(obj.previewZoom, false);\n        this.previewZoomStep = use(obj.previewZoomStep, 0.1);\n        this.previewZoomMax = use(obj.previewZoomMax, 2);\n        this.previewZoomMin = use(obj.previewZoomMin, 0.5);\n        this.previewRotate = use(obj.previewRotate, false);\n        this.previewDownload = use(obj.previewDownload, false);\n        this.previewCustom = use(obj.previewCustom, undefined);\n        this.previewBullets = use(obj.previewBullets, false);\n\n        this.arrowPrevIcon = use(obj.arrowPrevIcon, 'fa fa-arrow-circle-left');\n        this.arrowNextIcon = use(obj.arrowNextIcon, 'fa fa-arrow-circle-right');\n        this.closeIcon = use(obj.closeIcon, 'fa fa-times-circle');\n        this.fullscreenIcon = use(obj.fullscreenIcon, 'fa fa-arrows-alt');\n        this.spinnerIcon = use(obj.spinnerIcon, 'fa fa-spinner fa-pulse fa-3x fa-fw');\n        this.zoomInIcon = use(obj.zoomInIcon, 'fa fa-search-plus');\n        this.zoomOutIcon = use(obj.zoomOutIcon, 'fa fa-search-minus');\n        this.rotateLeftIcon = use(obj.rotateLeftIcon, 'fa fa-undo');\n        this.rotateRightIcon = use(obj.rotateRightIcon, 'fa fa-repeat');\n        this.downloadIcon = use(obj.downloadIcon, 'fa fa-arrow-circle-down');\n\n        if (obj && obj.actions && obj.actions.length) {\n            obj.actions = obj.actions.map(action => new NgxGalleryAction(action));\n        }\n        this.actions = use(obj.actions, []);\n    }\n}\n","import {SafeResourceUrl} from '@angular/platform-browser';\n\nexport interface INgxGalleryOrderedImage {\n  src: string | SafeResourceUrl;\n  type: string;\n  index: number;\n}\n\nexport class NgxGalleryOrderedImage implements INgxGalleryOrderedImage {\n  src: string | SafeResourceUrl;\n  type: string;\n  index: number;\n\n  constructor(obj: INgxGalleryOrderedImage) {\n    this.src = obj.src;\n    this.type = obj.type;\n    this.index = obj.index;\n  }\n}\n","import { AfterViewInit, ChangeDetectionStrategy, Component, DoCheck, ElementRef, HostBinding, HostListener, Input, OnInit, ViewEncapsulation, inject, input, viewChild, output } from '@angular/core';\nimport {NgxGalleryPreviewComponent} from './ngx-gallery-preview/ngx-gallery-preview.component';\nimport {NgxGalleryImageComponent} from './ngx-gallery-image/ngx-gallery-image.component';\nimport {NgxGalleryThumbnailsComponent} from './ngx-gallery-thumbnails/ngx-gallery-thumbnails.component';\nimport {SafeResourceUrl} from '@angular/platform-browser';\nimport {NgxGalleryService} from './ngx-gallery.service';\nimport {NgxGalleryOptions} from './ngx-gallery-options';\nimport {NgxGalleryImage} from './ngx-gallery-image';\nimport {NgxGalleryOrderedImage} from './ngx-gallery-ordered-image';\nimport {NgxGalleryLayout} from './ngx-gallery-layout';\nimport { NgClass } from '@angular/common';\n\n@Component({\n    selector: 'ngx-gallery',\n    templateUrl: './ngx-gallery.component.html',\n    styleUrls: ['./ngx-gallery.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    providers: [NgxGalleryService],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [NgxGalleryImageComponent, NgxGalleryThumbnailsComponent, NgClass, NgxGalleryPreviewComponent]\n})\nexport class NgxGalleryComponent implements OnInit, DoCheck, AfterViewInit {\n  private myElement = inject(ElementRef);\n  private helperService = inject(NgxGalleryService);\n\n  @Input() options: NgxGalleryOptions[] = [{}];\n  readonly images = input<NgxGalleryImage[]>(undefined);\n\n  readonly imagesReady = output();\n  // eslint-disable-next-line @angular-eslint/no-output-native\n  readonly change = output<{\n    index: number;\n    image: NgxGalleryImage;\n}>();\n  readonly previewOpen = output();\n  readonly previewClose = output();\n  readonly previewChange = output<{\n    index: number;\n    image: NgxGalleryImage;\n}>();\n\n  smallImages: string[] | SafeResourceUrl[];\n  mediumImages: NgxGalleryOrderedImage[];\n  bigImages: string[] | SafeResourceUrl[];\n  descriptions: string[];\n  links: string[];\n  labels: string[];\n\n  oldImages: NgxGalleryImage[];\n  oldImagesLength = 0;\n\n  selectedIndex = 0;\n  isAnimating: boolean;\n  previewEnabled: boolean;\n\n  currentOptions: NgxGalleryOptions;\n\n  private breakpoint: number | undefined = undefined;\n  private prevBreakpoint: number | undefined = undefined;\n  private fullWidthTimeout: any;\n\n  readonly preview = viewChild(NgxGalleryPreviewComponent);\n  readonly image = viewChild(NgxGalleryImageComponent);\n  readonly thumbnails = viewChild(NgxGalleryThumbnailsComponent);\n\n  @HostBinding('style.width') width: string;\n  @HostBinding('style.height') height: string;\n  @HostBinding('style.transform') left: string;\n\n  ngOnInit() {\n    this.options = this.options.map((opt) => new NgxGalleryOptions(opt));\n    this.sortOptions();\n    this.setBreakpoint();\n    this.setOptions();\n    this.checkFullWidth();\n    if (this.currentOptions) {\n      this.selectedIndex = this.currentOptions.startIndex as number;\n    }\n  }\n\n  ngDoCheck(): void {\n    const images = this.images();\n    if (images !== undefined && (images.length !== this.oldImagesLength)\n      || (images !== this.oldImages)) {\n      this.oldImagesLength = images.length;\n      this.oldImages = images;\n      this.setOptions();\n      this.setImages();\n\n      if (images && images.length) {\n        this.imagesReady.emit();\n      }\n\n      const image = this.image();\n      if (image) {\n        image.reset(this.currentOptions.startIndex as number);\n      }\n\n      if (this.currentOptions.thumbnailsAutoHide && this.currentOptions.thumbnails\n        && images.length <= 1) {\n        this.currentOptions.thumbnails = false;\n        this.currentOptions.imageArrows = false;\n      }\n\n      this.resetThumbnails();\n    }\n  }\n\n  ngAfterViewInit(): void {\n    this.checkFullWidth();\n  }\n\n  @HostListener('window:resize') onResize() {\n    this.setBreakpoint();\n\n    if (this.prevBreakpoint !== this.breakpoint) {\n      this.setOptions();\n      this.resetThumbnails();\n    }\n\n    if (this.currentOptions && this.currentOptions.fullWidth) {\n\n      if (this.fullWidthTimeout) {\n        clearTimeout(this.fullWidthTimeout);\n      }\n\n      this.fullWidthTimeout = setTimeout(() => {\n        this.checkFullWidth();\n      }, 200);\n    }\n  }\n\n  getImageHeight(): string {\n    return (this.currentOptions && this.currentOptions.thumbnails) ?\n      this.currentOptions.imagePercent + '%' : '100%';\n  }\n\n  getThumbnailsHeight(): string {\n    if (this.currentOptions && this.currentOptions.image) {\n      return 'calc(' + this.currentOptions.thumbnailsPercent + '% - '\n        + this.currentOptions.thumbnailsMargin + 'px)';\n    } else {\n      return '100%';\n    }\n  }\n\n  getThumbnailsMarginTop(): string {\n    if (this.currentOptions && this.currentOptions.layout === NgxGalleryLayout.ThumbnailsBottom) {\n      return this.currentOptions.thumbnailsMargin + 'px';\n    } else {\n      return '0px';\n    }\n  }\n\n  getThumbnailsMarginBottom(): string {\n    if (this.currentOptions && this.currentOptions.layout === NgxGalleryLayout.ThumbnailsTop) {\n      return this.currentOptions.thumbnailsMargin + 'px';\n    } else {\n      return '0px';\n    }\n  }\n\n  openPreview(index: number): void {\n    if (this.currentOptions.previewCustom) {\n      this.currentOptions.previewCustom(index);\n    } else {\n      this.previewEnabled = true;\n      this.preview().open(index);\n    }\n  }\n\n  onPreviewOpen(): void {\n    this.previewOpen.emit();\n\n    const image = this.image();\n    if (image && image.autoPlay()) {\n      image.stopAutoPlay();\n    }\n  }\n\n  onPreviewClose(): void {\n    this.previewEnabled = false;\n    this.previewClose.emit();\n\n    const image = this.image();\n    if (image && image.autoPlay()) {\n      image.startAutoPlay();\n    }\n  }\n\n  selectFromImage(index: number) {\n    this.select(index);\n  }\n\n  selectFromThumbnails(index: number) {\n    this.select(index);\n\n    if (this.currentOptions && this.currentOptions.thumbnails && this.currentOptions.preview\n      && (!this.currentOptions.image || this.currentOptions.thumbnailsRemainingCount)) {\n      this.openPreview(this.selectedIndex);\n    }\n  }\n\n  show(index: number): void {\n    this.select(index);\n  }\n\n  showNext(): void {\n    this.image().showNext();\n  }\n\n  showPrev(): void {\n    this.image().showPrev();\n  }\n\n  canShowNext(): boolean {\n    const images = this.images();\n    if (images && this.currentOptions) {\n      return !!(this.currentOptions.imageInfinityMove || this.selectedIndex < images.length - 1);\n    } else {\n      return false;\n    }\n  }\n\n  canShowPrev(): boolean {\n    if (this.images() && this.currentOptions) {\n      return !!(this.currentOptions.imageInfinityMove || this.selectedIndex > 0);\n    } else {\n      return false;\n    }\n  }\n\n  previewSelect(index: number) {\n    this.previewChange.emit({index, image: this.images()[index]});\n  }\n\n  moveThumbnailsRight() {\n    this.thumbnails().moveRight();\n  }\n\n  moveThumbnailsLeft() {\n    this.thumbnails().moveLeft();\n  }\n\n  canMoveThumbnailsRight() {\n    return this.thumbnails().canMoveRight();\n  }\n\n  canMoveThumbnailsLeft() {\n    return this.thumbnails().canMoveLeft();\n  }\n\n  private resetThumbnails() {\n    const thumbnails = this.thumbnails();\n    if (thumbnails) {\n      thumbnails.reset(this.currentOptions.startIndex as number);\n    }\n  }\n\n  private select(index: number) {\n    this.selectedIndex = index;\n\n    this.change.emit({\n      index,\n      image: this.images()[index]\n    });\n  }\n\n  private checkFullWidth(): void {\n    if (this.currentOptions && this.currentOptions.fullWidth) {\n      this.width = document.body.clientWidth + 'px';\n      this.left = 'translateX(' + (-(document.body.clientWidth -\n        this.myElement.nativeElement.parentNode.innerWidth) / 2) + 'px)';\n    }\n  }\n\n  private setImages(): void {\n    this.images().forEach((img) =>\n        img.type = this.helperService.getFileType(img.url as string || img.big as string || img.medium as string || img.small as string || '')\n    );\n    this.smallImages = this.images().map((img) => img.small as string);\n    this.mediumImages = this.images().map((img, i) => new NgxGalleryOrderedImage({\n      src: img.medium,\n      type: img.type,\n      index: i\n    }));\n    this.bigImages = this.images().map((img) => img.big as string);\n    this.descriptions = this.images().map((img) => img.description as string);\n    this.links = this.images().map((img) => img.url as string);\n    this.labels = this.images().map((img) => img.label as string);\n  }\n\n  private setBreakpoint(): void {\n    this.prevBreakpoint = this.breakpoint;\n    let breakpoints;\n\n    if (typeof window !== 'undefined') {\n      breakpoints = this.options.filter((opt) => opt.breakpoint >= window.innerWidth)\n        .map((opt) => opt.breakpoint);\n    }\n\n    if (breakpoints && breakpoints.length) {\n      this.breakpoint = breakpoints.pop();\n    } else {\n      this.breakpoint = undefined;\n    }\n  }\n\n  private sortOptions(): void {\n    this.options = [\n      ...this.options.filter((a) => a.breakpoint === undefined),\n      ...this.options\n        .filter((a) => a.breakpoint !== undefined)\n        .sort((a, b) => b.breakpoint - a.breakpoint)\n    ];\n  }\n\n  private setOptions(): void {\n    this.currentOptions = new NgxGalleryOptions({});\n\n    this.options\n      .filter((opt) => opt.breakpoint === undefined || opt.breakpoint >= this.breakpoint)\n      .map((opt) => this.combineOptions(this.currentOptions, opt));\n\n    this.width = this.currentOptions.width as string;\n    this.height = this.currentOptions.height as string;\n  }\n\n  private combineOptions(first: NgxGalleryOptions, second: NgxGalleryOptions) {\n    Object.keys(second).map((val) => first[val] = second[val] !== undefined ? second[val] : first[val]);\n  }\n\n  setAnimating(event: boolean) {\n    this.isAnimating = event;\n  }\n}\n","<div class=\"ngx-gallery-layout {{currentOptions?.layout}}\">\n  @if (currentOptions?.image) {\n    <ngx-gallery-image [style.height]=\"getImageHeight()\" [images]=\"mediumImages\"\n      [clickable]=\"currentOptions?.preview\" [selectedIndex]=\"selectedIndex\"\n      [arrows]=\"currentOptions?.imageArrows\" [arrowsAutoHide]=\"currentOptions?.imageArrowsAutoHide\"\n      [arrowPrevIcon]=\"currentOptions?.arrowPrevIcon\" [arrowNextIcon]=\"currentOptions?.arrowNextIcon\"\n      [swipe]=\"currentOptions?.imageSwipe\" [animation]=\"currentOptions?.imageAnimation\"\n      [size]=\"currentOptions?.imageSize\" [autoPlay]=\"currentOptions?.imageAutoPlay\"\n      [autoPlayInterval]=\"currentOptions?.imageAutoPlayInterval\"\n      [autoPlayPauseOnHover]=\"currentOptions?.imageAutoPlayPauseOnHover\"\n      [infinityMove]=\"currentOptions?.imageInfinityMove\" [lazyLoading]=\"currentOptions?.lazyLoading\"\n      [actions]=\"currentOptions?.imageActions\" [descriptions]=\"descriptions\"\n      [showDescription]=\"currentOptions?.imageDescription\" [bullets]=\"currentOptions?.imageBullets\"\n    (imageClick)=\"openPreview($event)\" (activeChange)=\"selectFromImage($event)\" (animating)=\"setAnimating($event)\" />\n  }\n\n  @if (currentOptions?.thumbnails) {\n    <ngx-gallery-thumbnails [style.marginTop]=\"getThumbnailsMarginTop()\"\n      [style.marginBottom]=\"getThumbnailsMarginBottom()\" [style.height]=\"getThumbnailsHeight()\"\n      [images]=\"smallImages\" [isAnimating]=\"isAnimating\" [links]=\"currentOptions?.thumbnailsAsLinks ? links : []\"\n      [labels]=\"labels\" [linkTarget]=\"currentOptions?.linkTarget\" [selectedIndex]=\"selectedIndex\"\n      [columns]=\"currentOptions?.thumbnailsColumns\" [rows]=\"currentOptions?.thumbnailsRows\"\n      [margin]=\"currentOptions?.thumbnailMargin\" [arrows]=\"currentOptions?.thumbnailsArrows\"\n      [arrowsAutoHide]=\"currentOptions?.thumbnailsArrowsAutoHide\"\n      [arrowPrevIcon]=\"currentOptions?.arrowPrevIcon\"\n      [arrowNextIcon]=\"currentOptions?.arrowNextIcon\"\n      [clickable]=\"currentOptions?.image || currentOptions?.preview\"\n      [swipe]=\"currentOptions?.thumbnailsSwipe\" [size]=\"currentOptions?.thumbnailSize\"\n      [moveSize]=\"currentOptions?.thumbnailsMoveSize\" [order]=\"currentOptions?.thumbnailsOrder\"\n      [remainingCount]=\"currentOptions?.thumbnailsRemainingCount\"\n      [lazyLoading]=\"currentOptions?.lazyLoading\" [actions]=\"currentOptions?.thumbnailActions\"\n    (activeChange)=\"selectFromThumbnails($event)\" [ngClass]=\"currentOptions?.thumbnailClasses\" />\n  }\n\n  <ngx-gallery-preview [images]=\"bigImages\" [descriptions]=\"descriptions\"\n    [showDescription]=\"currentOptions?.previewDescription\"\n    [arrowPrevIcon]=\"currentOptions?.arrowPrevIcon\" [arrowNextIcon]=\"currentOptions?.arrowNextIcon\"\n    [closeIcon]=\"currentOptions?.closeIcon\" [fullscreenIcon]=\"currentOptions?.fullscreenIcon\"\n    [spinnerIcon]=\"currentOptions?.spinnerIcon\" [arrows]=\"currentOptions?.previewArrows\"\n    [arrowsAutoHide]=\"currentOptions?.previewArrowsAutoHide\" [swipe]=\"currentOptions?.previewSwipe\"\n    [fullscreen]=\"currentOptions?.previewFullscreen\"\n    [forceFullscreen]=\"currentOptions?.previewForceFullscreen\"\n    [closeOnClick]=\"currentOptions?.previewCloseOnClick\"\n    [closeOnEsc]=\"currentOptions?.previewCloseOnEsc\"\n    [keyboardNavigation]=\"currentOptions?.previewKeyboardNavigation\"\n    [animation]=\"currentOptions?.previewAnimation\" [autoPlay]=\"currentOptions?.previewAutoPlay\"\n    [autoPlayInterval]=\"currentOptions?.previewAutoPlayInterval\"\n    [autoPlayPauseOnHover]=\"currentOptions?.previewAutoPlayPauseOnHover\"\n    [infinityMove]=\"currentOptions?.previewInfinityMove\" [zoom]=\"currentOptions?.previewZoom\"\n    [zoomStep]=\"currentOptions?.previewZoomStep\" [zoomMax]=\"currentOptions?.previewZoomMax\"\n    [zoomMin]=\"currentOptions?.previewZoomMin\" [zoomInIcon]=\"currentOptions?.zoomInIcon\"\n    [zoomOutIcon]=\"currentOptions?.zoomOutIcon\" [actions]=\"currentOptions?.actions\"\n    [rotate]=\"currentOptions?.previewRotate\" [rotateLeftIcon]=\"currentOptions?.rotateLeftIcon\"\n    [rotateRightIcon]=\"currentOptions?.rotateRightIcon\" [download]=\"currentOptions?.previewDownload\"\n    [downloadIcon]=\"currentOptions?.downloadIcon\" [bullets]=\"currentOptions?.previewBullets\"\n    (previewClose)=\"onPreviewClose()\" (previewOpen)=\"onPreviewOpen()\"\n    (activeChange)=\"previewSelect($event)\"\n  [class.ngx-gallery-active]=\"previewEnabled\" />\n</div>\n","import { NgModule, Injectable } from '@angular/core';\nimport {NgxGalleryComponent} from './ngx-gallery.component';\nimport {NgxGalleryImageComponent} from './ngx-gallery-image/ngx-gallery-image.component';\nimport {NgxGalleryArrowsComponent} from './ngx-gallery-arrows/ngx-gallery-arrows.component';\nimport {NgxGalleryThumbnailsComponent} from './ngx-gallery-thumbnails/ngx-gallery-thumbnails.component';\nimport {NgxGalleryPreviewComponent} from './ngx-gallery-preview/ngx-gallery-preview.component';\nimport {NgxGalleryActionComponent} from './ngx-gallery-action/ngx-gallery-action.component';\nimport {NgxGalleryBulletsComponent} from './ngx-gallery-bullets/ngx-gallery-bullets.component';\nimport {CommonModule} from '@angular/common';\nimport {HAMMER_GESTURE_CONFIG, HammerGestureConfig} from '@angular/platform-browser';\n\n@Injectable()\nexport class CustomHammerConfig extends HammerGestureConfig  {\n  override overrides = {\n    pinch: { enable: false },\n    rotate: { enable: false }\n  } as any;\n}\n\n\n@NgModule({\n    imports: [CommonModule, NgxGalleryComponent,\n        NgxGalleryImageComponent,\n        NgxGalleryArrowsComponent,\n        NgxGalleryThumbnailsComponent,\n        NgxGalleryPreviewComponent,\n        NgxGalleryActionComponent,\n        NgxGalleryBulletsComponent],\n    exports: [NgxGalleryComponent],\n    providers: [\n        { provide: HAMMER_GESTURE_CONFIG, useClass: CustomHammerConfig }\n    ]\n})\nexport class NgxGalleryModule {\n}\n","import { SafeResourceUrl } from '@angular/platform-browser';\n\nexport interface INgxGalleryImage {\n    small?: string | SafeResourceUrl;\n    medium?: string | SafeResourceUrl;\n    big?: string | SafeResourceUrl;\n    description?: string;\n    url?: string;\n    type?: string;\n    label?: string;\n}\n\nexport class NgxGalleryImage implements INgxGalleryImage {\n    small?: string | SafeResourceUrl;\n    medium?: string | SafeResourceUrl;\n    big?: string | SafeResourceUrl;\n    description?: string;\n    url?: string;\n    type?: string;\n    label?: string;\n\n    constructor(obj: INgxGalleryImage) {\n        this.small = obj.small;\n        this.medium = obj.medium;\n        this.big = obj.big;\n        this.description = obj.description;\n        this.url = obj.url;\n        this.type = obj.type;\n        this.label = obj.label;\n    }\n}\n","/*\n * Public API Surface of ngx-gallery\n */\n\nexport * from './lib/ngx-gallery.service';\nexport * from './lib/ngx-gallery.component';\nexport * from './lib/ngx-gallery.module';\nexport * from './lib/ngx-gallery-action';\nexport * from './lib/ngx-gallery-image';\nexport * from './lib/ngx-gallery-thumbnails/ngx-gallery-thumbnails.component';\nexport * from './lib/ngx-gallery-preview/ngx-gallery-preview.component';\nexport * from './lib/ngx-gallery-arrows/ngx-gallery-arrows.component';\nexport * from './lib/ngx-gallery-bullets/ngx-gallery-bullets.component';\nexport * from './lib/ngx-gallery-options';\nexport * from './lib/ngx-gallery-image';\nexport * from './lib/ngx-gallery-animation';\nexport * from './lib/ngx-gallery-image-size';\nexport * from './lib/ngx-gallery-layout';\nexport * from './lib/ngx-gallery-order';\nexport * from './lib/ngx-gallery-ordered-image';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}