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