{"version":3,"file":"kolkov-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/kolkov-ngx-gallery.ts"],"sourcesContent":["import {ElementRef, Injectable, Renderer2} from '@angular/core';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class NgxGalleryService {\n  private swipeHandlers: Map<string, (() => void)[]> = new Map<string, (() => void)[]>();\n\n  constructor(private renderer: Renderer2) {\n  }\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, EventEmitter, Input, OnInit, 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  @Input() prevDisabled: boolean;\n  @Input() nextDisabled: boolean;\n  @Input() arrowPrevIcon: string;\n  @Input() arrowNextIcon: string;\n\n  @Output() prevClick = new EventEmitter();\n  @Output() nextClick = new EventEmitter();\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, EventEmitter, Input, OnInit, 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  @Input() icon: string;\n  @Input() disabled = false;\n  @Input() titleText = '';\n\n  @Output() closeClick: EventEmitter<Event> = new EventEmitter();\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, EventEmitter, Input, OnInit, Output} from '@angular/core';\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})\nexport class NgxGalleryBulletsComponent {\n  @Input() count: number;\n  @Input() active = 0;\n\n  @Output() bulletChange = new EventEmitter();\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","<div class=\"ngx-gallery-bullet\" *ngFor=\"let bullet of getBullets(); let i = index;\" (click)=\"handleChange($event, i)\"\n     [ngClass]=\"{ 'ngx-gallery-active': i === active }\"></div>\n","import {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  HostListener,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Output,\n  Renderer2,\n  SimpleChanges,\n  ViewChild\n} from '@angular/core';\nimport {DomSanitizer, SafeResourceUrl, SafeStyle, SafeUrl} from '@angular/platform-browser';\nimport {NgxGalleryService} from '../ngx-gallery.service';\nimport {NgxGalleryAction} from '../ngx-gallery-action';\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})\nexport class NgxGalleryPreviewComponent implements OnInit, OnDestroy, OnChanges {\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  @Input() images: string[] | SafeResourceUrl[];\n  @Input() descriptions: string[];\n  @Input() showDescription: boolean;\n  @Input() arrows: boolean;\n  @Input() arrowsAutoHide: boolean;\n  @Input() swipe: boolean;\n  @Input() fullscreen: boolean;\n  @Input() forceFullscreen: boolean;\n  @Input() closeOnClick: boolean;\n  @Input() closeOnEsc: boolean;\n  @Input() keyboardNavigation: boolean;\n  @Input() arrowPrevIcon: string;\n  @Input() arrowNextIcon: string;\n  @Input() closeIcon: string;\n  @Input() fullscreenIcon: string;\n  @Input() spinnerIcon: string;\n  @Input() autoPlay: boolean;\n  @Input() autoPlayInterval: number;\n  @Input() autoPlayPauseOnHover: boolean;\n  @Input() infinityMove: boolean;\n  @Input() zoom: boolean;\n  @Input() zoomStep: number;\n  @Input() zoomMax: number;\n  @Input() zoomMin: number;\n  @Input() zoomInIcon: string;\n  @Input() zoomOutIcon: string;\n  @Input() animation: boolean;\n  @Input() actions: NgxGalleryAction[];\n  @Input() rotate: boolean;\n  @Input() rotateLeftIcon: string;\n  @Input() rotateRightIcon: string;\n  @Input() download: boolean;\n  @Input() downloadIcon: string;\n  @Input() bullets: boolean;\n\n  @Output() previewOpen = new EventEmitter();\n  @Output() previewClose = new EventEmitter();\n  @Output() activeChange = new EventEmitter<number>();\n\n  @ViewChild('previewImage') previewImage: any;\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  constructor(private sanitization: DomSanitizer, private elementRef: ElementRef,\n              private helperService: NgxGalleryService, private renderer: Renderer2,\n              private changeDetectorRef: ChangeDetectorRef) {\n  }\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    if (this.loading) {\n      return false;\n    } else if (this.images) {\n      return this.infinityMove || this.index < this.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      if (this.isLoaded(this.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        this.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","<ngx-gallery-arrows *ngIf=\"arrows\" (prevClick)=\"showPrev()\" (nextClick)=\"showNext()\" [prevDisabled]=\"!canShowPrev()\"\n                    [nextDisabled]=\"!canShowNext()\" [arrowPrevIcon]=\"arrowPrevIcon\"\n                    [arrowNextIcon]=\"arrowNextIcon\"></ngx-gallery-arrows>\n<div class=\"ngx-gallery-preview-top\">\n  <div class=\"ngx-gallery-preview-icons\">\n    <ngx-gallery-action *ngFor=\"let action of actions\" [icon]=\"action.icon\" [disabled]=\"action.disabled\"\n                        [titleText]=\"action.titleText\" (closeClick)=\"action.onClick($event, index)\"></ngx-gallery-action>\n    <a *ngIf=\"download && src\" [href]=\"src\" class=\"ngx-gallery-icon\" aria-hidden=\"true\" download>\n      <i class=\"ngx-gallery-icon-content {{ downloadIcon }}\"></i>\n    </a>\n    <ngx-gallery-action *ngIf=\"zoom\" [icon]=\"zoomOutIcon\" [disabled]=\"!canZoomOut()\"\n                        (closeClick)=\"zoomOut()\"></ngx-gallery-action>\n    <ngx-gallery-action *ngIf=\"zoom\" [icon]=\"zoomInIcon\" [disabled]=\"!canZoomIn()\"\n                        (closeClick)=\"zoomIn()\"></ngx-gallery-action>\n    <ngx-gallery-action *ngIf=\"rotate\" [icon]=\"rotateLeftIcon\" (closeClick)=\"rotateLeft()\"></ngx-gallery-action>\n    <ngx-gallery-action *ngIf=\"rotate\" [icon]=\"rotateRightIcon\" (closeClick)=\"rotateRight()\"></ngx-gallery-action>\n    <ngx-gallery-action *ngIf=\"fullscreen\" [icon]=\"'ngx-gallery-fullscreen ' + fullscreenIcon\"\n                        (closeClick)=\"manageFullscreen()\"></ngx-gallery-action>\n    <ngx-gallery-action [icon]=\"'ngx-gallery-close ' + closeIcon\" (closeClick)=\"close()\"></ngx-gallery-action>\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    <img *ngIf=\"src && type === 'image'\" #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    <video *ngIf=\"src && type === '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    <ngx-gallery-bullets *ngIf=\"bullets\" [count]=\"images.length\" [active]=\"index\"\n                         (bulletChange)=\"showAtIndex($event)\"></ngx-gallery-bullets>\n  </div>\n  <div class=\"ngx-gallery-preview-text\" *ngIf=\"showDescription && description\" [innerHTML]=\"description\"\n       (click)=\"$event.stopPropagation()\"></div>\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 {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  HostListener,\n  Input,\n  OnChanges,\n  OnInit,\n  Output,\n  SimpleChanges\n} 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';\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})\nexport class NgxGalleryImageComponent implements OnInit, OnChanges {\n  @Input() images: NgxGalleryOrderedImage[];\n  @Input() clickable: boolean;\n  // eslint-disable-next-line @typescript-eslint/naming-convention, 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      if (this.animation === NgxGalleryAnimation.Slide) {\n        action = 'slideRight';\n      } else if (this.animation === NgxGalleryAnimation.Fade) {\n        action = 'fade';\n      } else if (this.animation === NgxGalleryAnimation.Rotate) {\n        action = 'rotateRight';\n      } else if (this.animation === NgxGalleryAnimation.Zoom) {\n        action = 'zoom';\n      }\n      this.setAction(action);\n    } else if (index < this._selectedIndex) {\n      let action;\n      if (this.animation === NgxGalleryAnimation.Slide) {\n        action = 'slideLeft';\n      } else if (this.animation === NgxGalleryAnimation.Fade) {\n        action = 'fade';\n      } else if (this.animation === NgxGalleryAnimation.Rotate) {\n        action = 'rotateLeft';\n      } else if (this.animation === NgxGalleryAnimation.Zoom) {\n        action = 'zoom';\n      }\n      this.setAction(action);\n    }\n\n    this._selectedIndex = index;\n  }\n\n  @Input() arrows: boolean;\n  @Input() arrowsAutoHide: boolean;\n  @Input() swipe: boolean;\n  @Input() animation: string;\n  @Input() size: string;\n  @Input() arrowPrevIcon: string;\n  @Input() arrowNextIcon: string;\n  @Input() autoPlay: boolean;\n  @Input() autoPlayInterval: number;\n  @Input() autoPlayPauseOnHover: boolean;\n  @Input() infinityMove: boolean;\n  @Input() lazyLoading: boolean;\n  @Input() actions: NgxGalleryAction[];\n  @Input() descriptions: string[];\n  @Input() showDescription: boolean;\n  @Input() bullets: boolean;\n\n  @Output() imageClick = new EventEmitter();\n  @Output() activeChange = new EventEmitter();\n  @Output() animating = new EventEmitter();\n\n  canChangeImage = true;\n  public action: Orientation;\n\n  isAnimating = false;\n\n  private timer;\n\n  constructor(private sanitization: DomSanitizer, private changeDetectorRef: ChangeDetectorRef,\n              private elementRef: ElementRef, private helperService: NgxGalleryService) {\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    if (!this.images) {\n      return [];\n    }\n\n    if (this.lazyLoading) {\n      const indexes = [this._selectedIndex];\n      const prevIndex = this._selectedIndex - 1;\n\n      if (prevIndex === -1 && this.infinityMove) {\n        indexes.push(this.images.length - 1);\n      } else if (prevIndex >= 0) {\n        indexes.push(prevIndex);\n      }\n\n      const nextIndex = this._selectedIndex + 1;\n\n      if (nextIndex === this.images.length && this.infinityMove) {\n        indexes.push(0);\n      } else if (nextIndex < this.images.length) {\n        indexes.push(nextIndex);\n      }\n\n      return this.images.filter((img, i) => indexes.indexOf(i) !== -1);\n    } else {\n      return this.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      if (this.animation === NgxGalleryAnimation.Slide) {\n        action = 'slideRight';\n      } else if (this.animation === NgxGalleryAnimation.Fade) {\n        action = 'fade';\n      } else if (this.animation === NgxGalleryAnimation.Rotate) {\n        action = 'rotateRight';\n      } else if (this.animation === NgxGalleryAnimation.Zoom) {\n        action = 'zoom';\n      }\n      this.setAction(action);\n    } else {\n      let action;\n      if (this.animation === NgxGalleryAnimation.Slide) {\n        action = 'slideLeft';\n      } else if (this.animation === NgxGalleryAnimation.Fade) {\n        action = 'fade';\n      } else if (this.animation === NgxGalleryAnimation.Rotate) {\n        action = 'rotateLeft';\n      } else if (this.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      if (this.animation === NgxGalleryAnimation.Slide) {\n        action = 'slideRight';\n      } else if (this.animation === NgxGalleryAnimation.Fade) {\n        action = 'fade';\n      } else if (this.animation === NgxGalleryAnimation.Rotate) {\n        action = 'rotateRight';\n      } else if (this.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      if (this.animation === NgxGalleryAnimation.Slide) {\n        action = 'slideLeft';\n      } else if (this.animation === NgxGalleryAnimation.Fade) {\n        action = 'fade';\n      } else if (this.animation === NgxGalleryAnimation.Rotate) {\n        action = 'rotateLeft';\n      } else if (this.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    if (this.animation === NgxGalleryAnimation.Slide\n      || this.animation === NgxGalleryAnimation.Fade) {\n      timeout = 500;\n    }\n\n    setTimeout(() => {\n      this.canChangeImage = true;\n    }, timeout);\n  }\n\n  canShowNext(): boolean {\n    if (this.images) {\n      return this.infinityMove || this._selectedIndex < this.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  <ng-container *ngFor=\"let image of getImages(); let i = index;\">\n\n    <div *ngIf=\"image.type === 'image' && image.index === _selectedIndex\" 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        <ngx-gallery-action *ngFor=\"let action of actions\" [icon]=\"action.icon\" [disabled]=\"action.disabled\"\n                            [titleText]=\"action.titleText\"\n                            (closeClick)=\"action.onClick($event, image.index)\"></ngx-gallery-action>\n      </div>\n      <div class=\"ngx-gallery-image-text\" *ngIf=\"showDescription && descriptions[image.index]\"\n          [innerHTML]=\"descriptions[image.index]\" (click)=\"$event.stopPropagation()\"></div>\n    </div>\n\n    <div *ngIf=\"image.type === 'video' && image.index === _selectedIndex\" 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      <ngx-gallery-action *ngFor=\"let action of actions\" [icon]=\"action.icon\" [disabled]=\"action.disabled\"\n                          [titleText]=\"action.titleText\"\n                          (closeClick)=\"action.onClick($event, image.index)\"></ngx-gallery-action>\n      </div>\n      <div class=\"ngx-gallery-image-text\" *ngIf=\"showDescription && descriptions[image.index]\"\n          [innerHTML]=\"descriptions[image.index]\" (click)=\"$event.stopPropagation()\"></div>\n      </div>\n\n\n  </ng-container>\n  <ngx-gallery-bullets *ngIf=\"bullets\" [count]=\"images.length\" [active]=\"_selectedIndex\"\n                       (bulletChange)=\"show($event)\"></ngx-gallery-bullets>\n  <ngx-gallery-arrows class=\"ngx-gallery-image-size-{{size}}\" *ngIf=\"arrows\" (prevClick)=\"showPrev()\"\n                      (nextClick)=\"showNext()\" [prevDisabled]=\"!canShowPrev()\" [nextDisabled]=\"!canShowNext()\"\n                      [arrowPrevIcon]=\"arrowPrevIcon\" [arrowNextIcon]=\"arrowNextIcon\"></ngx-gallery-arrows>\n</div>\n","export class NgxGalleryOrder {\n  static Column = 1;\n  static Row = 2;\n  static Page = 3;\n}\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  ElementRef,\n  EventEmitter,\n  HostListener,\n  Input,\n  OnChanges,\n  OnInit,\n  Output,\n  SimpleChanges\n} 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';\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})\nexport class NgxGalleryThumbnailsComponent implements OnChanges {\n  thumbnailsLeft: string;\n  thumbnailsMarginLeft: string;\n  mouseenter: boolean;\n  remainingCountValue: number;\n\n  minStopIndex = 0;\n\n  @Input() images: string[] | SafeResourceUrl[];\n  @Input() isAnimating: boolean;\n  @Input() links: string[];\n  @Input() labels: string[];\n  @Input() linkTarget: string;\n  @Input() columns: number;\n  @Input() rows: number;\n  @Input() arrows: boolean;\n  @Input() arrowsAutoHide: boolean;\n  @Input() margin: number;\n  @Input() selectedIndex: number;\n  @Input() clickable: boolean;\n  @Input() swipe: boolean;\n  @Input() size: string;\n  @Input() arrowPrevIcon: string;\n  @Input() arrowNextIcon: string;\n  @Input() moveSize: number;\n  @Input() order: number;\n  @Input() remainingCount: boolean;\n  @Input() lazyLoading: boolean;\n  @Input() actions: NgxGalleryAction[];\n\n  @Output() activeChange = new EventEmitter();\n\n  private index = 0;\n\n  constructor(private sanitization: DomSanitizer, private elementRef: ElementRef,\n              private helperService: NgxGalleryService) {\n  }\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    if (this.images) {\n      this.remainingCountValue = this.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    if (!this.images) {\n      return [];\n    }\n\n    if (this.remainingCount) {\n      return this.images.slice(0, this.rows * this.columns);\n    } else if (this.lazyLoading && this.order !== NgxGalleryOrder.Row) {\n      let stopIndex = 0;\n\n      if (this.order === NgxGalleryOrder.Column) {\n        stopIndex = (this.index + this.columns + this.moveSize) * this.rows;\n      } else if (this.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 this.images.slice(0, stopIndex);\n    } else {\n      return this.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    return !!(this.links && this.links.length && this.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    if (this.order === NgxGalleryOrder.Column) {\n      calculatedIndex = Math.floor(index / this.rows);\n    } else if (this.order === NgxGalleryOrder.Page) {\n      calculatedIndex = (index % this.columns) + (Math.floor(index / (this.rows * this.columns)) * this.columns);\n    } else if (this.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    if (this.order === NgxGalleryOrder.Column) {\n      calculatedIndex = index % this.rows;\n    } else if (this.order === NgxGalleryOrder.Page) {\n      calculatedIndex = Math.floor(index / this.columns) - (Math.floor(index / (this.rows * this.columns)) * this.rows);\n    } else if (this.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      return this.arrows && this.images && this.images.length > this.getVisibleCount()\n        && (!this.arrowsAutoHide || this.mouseenter);\n    }\n  }\n\n  validateIndex(): void {\n    if (this.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(this.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    if (this.margin !== 0) {\n      return this.getSafeStyle('calc(' + (100 / count) + '% - '\n        + (((count - 1) * this.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    <a [href]=\"hasLink(i) ? links[i] : '#'\" [target]=\"linkTarget\" class=\"ngx-gallery-thumbnail\"\n       *ngFor=\"let image of getImages(); let i = index;\"\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       <div *ngIf=\"getFileType(image) === 'image'\" [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       <div *ngIf=\"getFileType(image) === 'video'\" 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       <div class=\"ngx-gallery-icons-wrapper\">\n        <ngx-gallery-action *ngFor=\"let action of actions\" [icon]=\"action.icon\" [disabled]=\"action.disabled\"\n                            [titleText]=\"action.titleText\" (closeClick)=\"action.onClick($event, i)\"></ngx-gallery-action>\n      </div>\n      <div class=\"ngx-gallery-remaining-count-overlay\"\n           *ngIf=\"remainingCount && remainingCountValue && (i === (rows * columns) - 1)\">\n        <span class=\"ngx-gallery-remaining-count\">+{{remainingCountValue}}</span>\n      </div>\n    </a>\n  </div>\n</div>\n<ngx-gallery-arrows *ngIf=\"canShowArrows()\" (prevClick)=\"moveLeft()\" (nextClick)=\"moveRight()\"\n                    [prevDisabled]=\"!canMoveLeft()\" [nextDisabled]=\"!canMoveRight()\" [arrowPrevIcon]=\"arrowPrevIcon\"\n                    [arrowNextIcon]=\"arrowNextIcon\"></ngx-gallery-arrows>\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 {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  Component,\n  DoCheck,\n  ElementRef,\n  EventEmitter,\n  HostBinding,\n  HostListener,\n  Input,\n  OnInit,\n  Output,\n  ViewChild,\n  ViewEncapsulation\n} 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';\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})\nexport class NgxGalleryComponent implements OnInit, DoCheck, AfterViewInit {\n  @Input() options: NgxGalleryOptions[] = [{}];\n  @Input() images: NgxGalleryImage[];\n\n  @Output() imagesReady = new EventEmitter();\n  // eslint-disable-next-line @angular-eslint/no-output-native\n  @Output() change = new EventEmitter<{ index: number; image: NgxGalleryImage; }>();\n  @Output() previewOpen = new EventEmitter();\n  @Output() previewClose = new EventEmitter();\n  @Output() previewChange = new EventEmitter<{ index: number; image: NgxGalleryImage; }>();\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  @ViewChild(NgxGalleryPreviewComponent) preview: NgxGalleryPreviewComponent;\n  @ViewChild(NgxGalleryImageComponent) image: NgxGalleryImageComponent;\n  @ViewChild(NgxGalleryThumbnailsComponent) thumbnails: NgxGalleryThumbnailsComponent;\n\n  @HostBinding('style.width') width: string;\n  @HostBinding('style.height') height: string;\n  @HostBinding('style.transform') left: string;\n\n  constructor(private myElement: ElementRef, private helperService: NgxGalleryService) {\n  }\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    if (this.images !== undefined && (this.images.length !== this.oldImagesLength)\n      || (this.images !== this.oldImages)) {\n      this.oldImagesLength = this.images.length;\n      this.oldImages = this.images;\n      this.setOptions();\n      this.setImages();\n\n      if (this.images && this.images.length) {\n        this.imagesReady.emit();\n      }\n\n      if (this.image) {\n        this.image.reset(this.currentOptions.startIndex as number);\n      }\n\n      if (this.currentOptions.thumbnailsAutoHide && this.currentOptions.thumbnails\n        && this.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    if (this.image && this.image.autoPlay) {\n      this.image.stopAutoPlay();\n    }\n  }\n\n  onPreviewClose(): void {\n    this.previewEnabled = false;\n    this.previewClose.emit();\n\n    if (this.image && this.image.autoPlay) {\n      this.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    if (this.images && this.currentOptions) {\n      return !!(this.currentOptions.imageInfinityMove || this.selectedIndex < this.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    if (this.thumbnails) {\n      this.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  <ngx-gallery-image *ngIf=\"currentOptions?.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)\"></ngx-gallery-image>\n\n  <ngx-gallery-thumbnails *ngIf=\"currentOptions?.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\"></ngx-gallery-thumbnails>\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\"></ngx-gallery-preview>\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  declarations: [\n    NgxGalleryComponent,\n    NgxGalleryImageComponent,\n    NgxGalleryArrowsComponent,\n    NgxGalleryThumbnailsComponent,\n    NgxGalleryPreviewComponent,\n    NgxGalleryActionComponent,\n    NgxGalleryBulletsComponent\n  ],\n  imports: [ CommonModule ],\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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"}