{"version":3,"file":"ontimize-web-ngx-gallery.mjs","sources":["../../projects/ontimize-web-ngx-gallery/src/lib/components/gallery-action/o-gallery-action.component.ts","../../projects/ontimize-web-ngx-gallery/src/lib/components/gallery-action/o-gallery-action.component.html","../../projects/ontimize-web-ngx-gallery/src/lib/components/gallery-arrows/o-gallery-arrows.component.ts","../../projects/ontimize-web-ngx-gallery/src/lib/components/gallery-arrows/o-gallery-arrows.component.html","../../projects/ontimize-web-ngx-gallery/src/lib/components/gallery-bullets/o-gallery-bullets.component.ts","../../projects/ontimize-web-ngx-gallery/src/lib/components/gallery-bullets/o-gallery-bullets.component.html","../../projects/ontimize-web-ngx-gallery/src/lib/models/gallery-animation.model.ts","../../projects/ontimize-web-ngx-gallery/src/lib/util/util.ts","../../projects/ontimize-web-ngx-gallery/src/lib/services/gallery-helper.service.ts","../../projects/ontimize-web-ngx-gallery/src/lib/components/gallery-image/o-gallery-image.directive.ts","../../projects/ontimize-web-ngx-gallery/src/lib/components/gallery-image/o-gallery-image.component.ts","../../projects/ontimize-web-ngx-gallery/src/lib/components/gallery-image/o-gallery-image.component.html","../../projects/ontimize-web-ngx-gallery/src/lib/components/gallery-preview/o-gallery-preview.component.ts","../../projects/ontimize-web-ngx-gallery/src/lib/components/gallery-preview/o-gallery-preview.component.html","../../projects/ontimize-web-ngx-gallery/src/lib/models/gallery-layout.model.ts","../../projects/ontimize-web-ngx-gallery/src/lib/models/gallery-order.model.ts","../../projects/ontimize-web-ngx-gallery/src/lib/components/gallery-thumbnails/o-gallery-thumbnails.component.ts","../../projects/ontimize-web-ngx-gallery/src/lib/components/gallery-thumbnails/o-gallery-thumbnails.component.html","../../projects/ontimize-web-ngx-gallery/src/lib/models/gallery-image-size.model.ts","../../projects/ontimize-web-ngx-gallery/src/lib/models/gallery-action.model.ts","../../projects/ontimize-web-ngx-gallery/src/lib/models/gallery-options.model.ts","../../projects/ontimize-web-ngx-gallery/src/lib/models/gallery-ordered-image.model.ts","../../projects/ontimize-web-ngx-gallery/src/lib/components/gallery/o-gallery.component.ts","../../projects/ontimize-web-ngx-gallery/src/lib/components/gallery/o-gallery.component.html","../../projects/ontimize-web-ngx-gallery/src/lib/components.ts","../../projects/ontimize-web-ngx-gallery/src/lib/models/gallery-image.model.ts","../../projects/ontimize-web-ngx-gallery/src/lib/ontimize-web-ngx-gallery.module.ts","../../projects/ontimize-web-ngx-gallery/src/public-api.ts","../../projects/ontimize-web-ngx-gallery/src/ontimize-web-ngx-gallery.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, EventEmitter } from '@angular/core';\nimport { BooleanInputConverter } from 'ontimize-web-ngx';\n\n@Component({\n  selector: 'o-gallery-action',\n  templateUrl: './o-gallery-action.component.html',\n  inputs: [\n    'icon',\n    'disabled',\n    'titleText'\n  ],\n  outputs: [\n    'onClick'\n  ],\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class GalleryActionComponent {\n  public icon: string;\n  @BooleanInputConverter()\n  public disabled: boolean = false;\n  public titleText: string = '';\n\n  onClick: EventEmitter<Event> = new EventEmitter();\n\n  handleClick(event: Event) {\n    if (!this.disabled) {\n      this.onClick.emit(event);\n    }\n\n    event.stopPropagation();\n    event.preventDefault();\n  }\n}\n","<div class=\"o-gallery-icon\" [class.o-gallery-icon-disabled]=\"disabled\" aria-hidden=\"true\" [title]=\"titleText\" (click)=\"handleClick($event)\">\n  <em class=\"o-gallery-icon-content\">{{ icon }}</em>\n</div>\n","import { ChangeDetectionStrategy, Component, EventEmitter, OnChanges, SimpleChanges, ViewEncapsulation } from '@angular/core';\nimport { BooleanInputConverter, Util } from 'ontimize-web-ngx';\n\n@Component({\n  selector: 'o-gallery-arrows',\n  templateUrl: './o-gallery-arrows.component.html',\n  styleUrls: ['./o-gallery-arrows.component.scss'],\n  inputs: [\n    'prevDisabled: prev-disabled',\n    'nextDisabled: next-disabled',\n    'arrowPrevIcon: arrow-prev-icon',\n    'arrowNextIcon: arrow-next-icon',\n    'layout'\n  ],\n  outputs: [\n    'onPrevClick',\n    'onNextClick'\n  ],\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  host: {\n    '[class.o-gallery-arrows]': 'true'\n  }\n})\nexport class GalleryArrowsComponent implements OnChanges{\n\n  @BooleanInputConverter()\n  public prevDisabled: boolean;\n  @BooleanInputConverter()\n  public nextDisabled: boolean;\n  public arrowPrevIcon: string;\n  public arrowNextIcon: string;\n  public layout: string;\n  public position: string = 'bottom';\n\n  onPrevClick = new EventEmitter();\n  onNextClick = new EventEmitter();\n  constructor() {\n    this.updatePosition();\n  }\n  ngOnChanges(changes: SimpleChanges): void {\n    if (Util.isDefined(changes.layout)) {\n      this.updatePosition();\n    }\n\n  }\n\n  updatePosition() {\n    if (Util.isDefined(this.layout)) {\n      this.position = this.layout.substring(this.layout.indexOf('-') + 1);\n    }\n  }\n  handlePrevClick(): void {\n    this.onPrevClick.emit();\n  }\n\n  handleNextClick(): void {\n    this.onNextClick.emit();\n  }\n\n}\n","<div class=\"o-gallery-arrow-wrapper\"\n  [ngClass]=\"{'o-gallery-arrow-left': position==='top' || position==='bottom','o-gallery-arrow-top':position==='left' || position==='right' }\">\n  <div class=\"o-gallery-icon o-gallery-arrow\" aria-hidden=\"true\" (click)=\"handlePrevClick()\" [class.o-gallery-disabled]=\"prevDisabled\">\n    <mat-icon class=\"o-gallery-icon-content\">{{arrowPrevIcon}}</mat-icon>\n  </div>\n</div>\n<div class=\"o-gallery-arrow-wrapper\"\n  [ngClass]=\"{'o-gallery-arrow-right': position==='top' || position==='bottom','o-gallery-arrow-bottom':position==='left' || position==='right' }\">\n  <div class=\"o-gallery-icon o-gallery-arrow\" aria-hidden=\"true\" (click)=\"handleNextClick()\" [class.o-gallery-disabled]=\"nextDisabled\">\n    <mat-icon class=\"o-gallery-icon-content\">{{arrowNextIcon}}</mat-icon>\n  </div>\n</div>\n","import { ChangeDetectionStrategy, Component, EventEmitter } from '@angular/core';\n\n@Component({\n  selector: 'o-gallery-bullets',\n  templateUrl: './o-gallery-bullets.component.html',\n  styleUrls: ['./o-gallery-bullets.component.scss'],\n  inputs: [\n    'count',\n    'active'\n  ],\n  outputs: [\n    'onChange'\n  ],\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class GalleryBulletsComponent {\n\n  public count: number;\n  public active: number = 0;\n  onChange = new EventEmitter();\n\n  handleChange(_event: Event, index: number): void {\n    this.onChange.emit(index);\n  }\n\n  getBullets(): number[] {\n    return Array(this.count);\n  }\n}\n","<div class=\"o-gallery-bullet\" *ngFor=\"let bullet of getBullets(); let i = index;\" (click)=\"handleChange($event, i)\"\n  [ngClass]=\"{ 'o-gallery-active': i == active }\"></div>\n","export class GalleryAnimation {\n  static Fade = 'fade';\n  static Slide = 'slide';\n  static Rotate = 'rotate';\n  static Zoom = 'zoom';\n}\n","export class Util {\n  static isUrl(fileSource: string): boolean {\n    const regExpData = /^\\s*data:/i;\n    let base64ContentArray = fileSource.split(\",\")\n    if (base64ContentArray[0].match(regExpData) != null) {\n      return false;\n    }\n    else { return true }\n  }\n\n  /**\n  * Determines whether url absolute is\n  * @param url\n  * @returns\n  */\n  static isUrlAbsolute(url: string): boolean {\n    return url.search(/^(http|https)\\:\\/\\//) > -1;\n  }\n\n  static getMimeType(fileSource: string): string {\n    const regExp = /^\\s*data:([a-z]+\\/[a-z\\*]+(;[a-z\\-]+\\=[a-z\\-]+)?)?(;base64)?\\s*$/i;\n    let base64ContentArray = fileSource.split(\",\")\n    return base64ContentArray[0].match(regExp)[1];\n  }\n}","import { Injectable, ElementRef, Renderer2 } from '@angular/core';\nimport { Util } from '../util/util';\n\n@Injectable()\nexport class GalleryHelperService {\n\n  private swipeHandlers: Map<string, Function[]> = new Map<string, Function[]>();\n\n  constructor(private renderer: Renderer2) { }\n\n  manageSwipe(status: boolean, element: ElementRef, id: string, nextHandler: Function, prevHandler: Function): 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.forEach((handler) => handler());\n        this.removeSwipeHandlers(id);\n      }\n    } catch (e) { }\n  }\n\n  validateUrl(url: string): string {\n    if (url.replace) {\n      return url.replace(\"/ /g\", '%20')\n        .replace(\"/\\, g\", '%27');\n    } else {\n      return url;\n    }\n  }\n\n  getBackgroundUrl(image: string) {\n    return 'url(\\'' + this.validateUrl(image) + '\\')';\n  }\n\n  private getSwipeHandlers(id: string): Function[] | undefined {\n    return this.swipeHandlers.get(id);\n  }\n\n  private removeSwipeHandlers(id: string): void {\n    this.swipeHandlers.delete(id);\n  }\n\n  getFileType(fileSource: string): string {\n    //First we check if the filesouce starts with data:\n    if (!Util.isUrl(fileSource)) {\n      return this.getFileTypeByMime(fileSource);\n    }\n\n    try {\n      let url: URL;\n      if (Util.isUrlAbsolute(fileSource)) {\n        url = new URL(fileSource);\n      } else {\n        url = new URL(fileSource, document.baseURI);\n      }\n\n      if (url == undefined) {\n        return 'unknown';\n      } else {\n        return this.getFileTypeByURL(url);\n      }\n\n    } catch (error) {\n      console.warn(\"Impossible to parse file source url\");\n    }\n    return 'unknown';\n  }\n\n  /**\n   * Gets file type by mime\n   * @param fileSource\n   * @returns file type by mime\n   */\n  getFileTypeByMime(fileSource: string): string {\n    //We get the mimeType and check that it is a valid type\n    let mimeType = Util.getMimeType(fileSource);\n    if (mimeType != undefined) {\n      switch (mimeType.split(\"/\")[0]) {\n        case 'image': return 'image';\n        case 'video': return 'video';\n        default: return 'unknown';\n      }\n    } else { return 'unknown' }\n\n  }\n\n  /**\n   * Gets file type by URL\n   * @param url\n   * @returns file type by URL\n   */\n  getFileTypeByURL(url: URL): string {\n    const fileName = url.pathname.split('/').pop();\n    if (fileName == undefined || fileName.length == 0) {\n      return 'unknown';\n    }\n    let fileExtension = fileName.split('.').pop().toLowerCase();\n    if (!fileExtension\n      || fileExtension === 'jpeg' || fileExtension === 'jpg'\n      || fileExtension === 'png' || fileExtension === 'bmp'\n      || fileExtension === 'gif') {\n      return 'image';\n    } else if (fileExtension === 'avi' || fileExtension === 'flv'\n      || fileExtension === 'wmv' || fileExtension === 'mov'\n      || fileExtension === 'mp4') {\n      return 'video';\n    }\n  }\n\n\n}\n","import { Directive, HostBinding, Input } from '@angular/core';\nimport { DomSanitizer, SafeResourceUrl, SafeStyle } from '@angular/platform-browser';\n\nimport { GalleryHelperService } from '../../services';\n\n@Directive({\n  selector: '[oGalleryBackgroundImg]'\n})\nexport class GalleryImageDirective {\n\n  @Input('oGalleryBackgroundImg')\n  set image(val: string | SafeResourceUrl) {\n    this._image = val;\n    this.src = this.sanitization.bypassSecurityTrustStyle(this.helperService.getBackgroundUrl(this._image as string));\n  }\n  get imgage(): string | SafeResourceUrl {\n    return this._image;\n  }\n  private _image: string | SafeResourceUrl;\n\n  @HostBinding('style.background-image')\n  src: SafeStyle;\n\n  constructor(\n    public sanitization: DomSanitizer,\n    private helperService: GalleryHelperService\n  ) { }\n\n}\n","import { Component, ElementRef, EventEmitter, HostListener, Input, OnChanges, OnInit, SimpleChanges } from '@angular/core';\nimport { BooleanInputConverter } from 'ontimize-web-ngx';\n\n\nimport { GalleryAction } from '../../models/gallery-action.model';\nimport { GalleryAnimation } from '../../models/gallery-animation.model';\nimport { GalleryOrderedImage } from '../../models/gallery-ordered-image.model';\nimport { GalleryHelperService } from '../../services/gallery-helper.service';\n\n@Component({\n  selector: 'o-gallery-image',\n  templateUrl: './o-gallery-image.component.html',\n  styleUrls: ['./o-gallery-image.component.scss'],\n  inputs: [\n    'images',\n    'clickable',\n    'selectedIndex : selected-index',\n    'arrows',\n    'arrowsAutoHide : arrows-auto-hide',\n    'swipe',\n    'animation',\n    'size',\n    'arrowPrevIcon : arrow-prev-icon',\n    'arrowNextIcon : arrow-next-icon',\n    'autoPlay : auto-play',\n    'autoPlayInterval : auto-play-interval',\n    'autoPlayPauseOnHover : auto-play-pause-on-hover',\n    'infinityMove : infinity-move',\n    'lazyLoading : lazy-loading',\n    'actions',\n    'descriptions',\n    'showDescription : show-description',\n    'bullets'\n  ],\n  outputs: [\n    'onClick',\n    'onActiveChange'\n  ]\n})\nexport class GalleryImageComponent implements OnInit, OnChanges {\n  @Input() images: GalleryOrderedImage[];\n\n  @BooleanInputConverter()\n  public clickable: boolean;\n  public selectedIndex: number = -1;\n  @BooleanInputConverter()\n  public arrows: boolean;\n  @BooleanInputConverter()\n  public arrowsAutoHide: boolean;\n  @BooleanInputConverter()\n  public swipe: boolean;\n  public animation: string;\n  public size: string;\n  public arrowPrevIcon: string;\n  public arrowNextIcon: string;\n  @BooleanInputConverter()\n  public autoPlay: boolean;\n  public autoPlayInterval: number;\n  @BooleanInputConverter()\n  public autoPlayPauseOnHover: boolean;\n  @BooleanInputConverter()\n  public infinityMove: boolean;\n  @BooleanInputConverter()\n  public lazyLoading: boolean;\n  public actions: GalleryAction[];\n  public descriptions: string[];\n  @BooleanInputConverter()\n  public showDescription: boolean;\n  @BooleanInputConverter()\n  public bullets: boolean;\n\n  onClick = new EventEmitter();\n  onActiveChange = new EventEmitter();\n\n  canChangeImage = true;\n\n  private timer;\n\n  constructor(\n    private elementRef: ElementRef,\n    private helperService: GalleryHelperService\n  ) { }\n\n  ngOnInit(): void {\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  }\n\n  getImages(): GalleryOrderedImage[] {\n    if (!this.images) {\n      return [];\n    }\n\n    if (this.lazyLoading) {\n      let indexes = [this.selectedIndex];\n      let 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      let 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.onClick.emit(index);\n\n      event.stopPropagation();\n      event.preventDefault();\n    }\n  }\n\n  show(index: number) {\n    this.selectedIndex = index;\n    this.onActiveChange.emit(this.selectedIndex);\n    this.setChangeTimeout();\n  }\n\n  showNext(): boolean {\n    if (this.canShowNext && this.canChangeImage) {\n      this.selectedIndex++;\n\n      if (this.selectedIndex === this.images.length) {\n        this.selectedIndex = 0;\n      }\n\n      this.onActiveChange.emit(this.selectedIndex);\n      this.setChangeTimeout();\n\n      return true;\n    } else {\n      return false;\n    }\n  }\n\n  showPrev(): void {\n    if (this.canShowPrev && this.canChangeImage) {\n      this.selectedIndex--;\n\n      if (this.selectedIndex < 0) {\n        this.selectedIndex = this.images.length - 1;\n      }\n\n      this.onActiveChange.emit(this.selectedIndex);\n      this.setChangeTimeout();\n    }\n  }\n\n  setChangeTimeout() {\n    this.canChangeImage = false;\n    let timeout = 1000;\n\n    if (this.animation === GalleryAnimation.Slide\n      || this.animation === GalleryAnimation.Fade) {\n      timeout = 500;\n    }\n\n    setTimeout(() => {\n      this.canChangeImage = true;\n    }, timeout);\n  }\n\n  get canShowNext(): boolean {\n    return this.infinityMove || (this.selectedIndex < this.images.length - 1);\n  }\n\n  get canShowPrev(): boolean {\n    return this.infinityMove || (this.selectedIndex > 0);\n  }\n\n  getFileType(fileSource: string) {\n    return this.helperService.getFileType(fileSource);\n  }\n\n}\n","<div class=\"o-gallery-image-wrapper o-gallery-animation-{{animation}} o-gallery-image-size-{{size}}\">\n  <div *ngFor=\"let image of images; let i = index;\">\n    <div *ngIf=\"image.type === 'image' || image.type === 'unknown'\" [oGalleryBackgroundImg]=\"image.src\" class=\"o-gallery-image\"\n      [ngClass]=\"{ 'o-gallery-active': selectedIndex === image.index, 'o-gallery-inactive-left': selectedIndex > image.index, 'o-gallery-inactive-right': selectedIndex < image.index, 'o-gallery-clickable': clickable }\"\n      (click)=\"handleClick($event, image.index)\">\n      <div class=\"o-gallery-icons-wrapper\">\n        <o-gallery-action *ngFor=\"let action of actions\" [icon]=\"action.icon\" [disabled]=\"action.disabled\" [titleText]=\"action.titleText\"\n          (onClick)=\"action.onClick($event, image.index)\"></o-gallery-action>\n      </div>\n      <div class=\"o-gallery-image-text\" *ngIf=\"showDescription && descriptions[image.index]\" [innerHTML]=\"descriptions[image.index]\"\n        (click)=\"$event.stopPropagation()\"></div>\n    </div>\n    <div *ngIf=\"image.type === 'video'\" class=\"o-gallery-image\"\n      [ngClass]=\"{ 'o-gallery-active': selectedIndex === image.index, 'o-gallery-inactive-left': selectedIndex > image.index, 'o-gallery-inactive-right': selectedIndex < image.index, 'o-gallery-clickable': clickable }\"\n      (click)=\"handleClick($event, image.index)\">\n      <video controls style=\"width: 100%; height: 100%;\">\n        <source [src]=\"image.src\">\n        Your browser does not support the video tag.\n      </video>\n      <div class=\"o-gallery-icons-wrapper\">\n        <o-gallery-action *ngFor=\"let action of actions\" [icon]=\"action.icon\" [disabled]=\"action.disabled\" [titleText]=\"action.titleText\"\n          (onClick)=\"action.onClick($event, image.index)\"></o-gallery-action>\n      </div>\n      <div class=\"o-gallery-image-text\" *ngIf=\"showDescription && descriptions[image.index]\" [innerHTML]=\"descriptions[image.index]\"\n        (click)=\"$event.stopPropagation()\"></div>\n    </div>\n  </div>\n</div>\n\n<o-gallery-bullets *ngIf=\"bullets\" [count]=\"images.length\" [active]=\"selectedIndex\" (onChange)=\"show($event)\"></o-gallery-bullets>\n\n<o-gallery-arrows class=\"o-gallery-image-size-{{size}}\" *ngIf=\"arrows\" (onPrevClick)=\"showPrev()\" (onNextClick)=\"showNext()\"\n  [prev-disabled]=\"!canShowPrev\" [next-disabled]=\"!canShowNext\" [arrow-prev-icon]=\"arrowPrevIcon\" [arrow-next-icon]=\"arrowNextIcon\">\n</o-gallery-arrows>\n","import {\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  HostListener,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Renderer2,\n  SimpleChanges,\n  ViewChild,\n  ViewEncapsulation\n} from '@angular/core';\nimport { DomSanitizer, SafeResourceUrl, SafeStyle, SafeUrl } from '@angular/platform-browser';\nimport { BooleanInputConverter } from 'ontimize-web-ngx';\n\nimport { GalleryAction } from '../../models/gallery-action.model';\nimport { GalleryHelperService } from '../../services/gallery-helper.service';\n\n@Component({\n  selector: 'o-gallery-preview',\n  templateUrl: './o-gallery-preview.component.html',\n  styleUrls: ['./o-gallery-preview.component.scss'],\n  providers: [GalleryHelperService],\n  inputs: [\n    'images',\n    'descriptions',\n    'showDescription : show-description',\n    'arrows',\n    'arrowsAutoHide : arrows-auto-hide',\n    'swipe',\n    'fullscreen',\n    'forceFullscreen : force-fullscreen',\n    'closeOnClick : close-on-click',\n    'closeOnEsc : close-on-esc',\n    'keyboardNavigation : keyboard-navigation',\n    'arrowPrevIcon : arrow-prev-icon',\n    'arrowNextIcon : arrow-next-icon',\n    'closeIcon : close-icon',\n    'fullscreenIcon : fullscreen-icon',\n    'spinnerIcon : spinner-icon',\n    'autoPlay : auto-play',\n    'autoPlayInterval : auto-play-interval',\n    'autoPlayPauseOnHover : auto-play-pause-on-hover',\n    'infinityMove : infinity-move',\n    'zoom',\n    'zoomStep : zoom-step',\n    'zoomMax : zoom-max',\n    'zoomMin : zoom-min',\n    'zoomInIcon : zoom-in-icon',\n    'zoomOutIcon : zoom-out-icon',\n    'animation',\n    'actions',\n    'rotate',\n    'rotateLeftIcon : rotate-left-icon',\n    'rotateRightIcon : rotate-right-icon',\n    'download',\n    'downloadIcon : download-icon',\n    'bullets',\n    'previewEnabled'\n  ],\n  outputs: [\n    'onOpen',\n    'onClose',\n    'onActiveChange'\n  ],\n  encapsulation: ViewEncapsulation.None,\n  host: {\n    '[class.o-gallery-preview]': 'true',\n    '[class.o-gallery-active]': 'previewEnabled'\n  }\n})\nexport class GalleryPreviewComponent implements OnInit, OnChanges, OnDestroy {\n\n  src: SafeUrl;\n  srcIndex: number;\n  description: string;\n  type: string;\n  showSpinner = false;\n  positionLeft = 0;\n  positionTop = 0;\n  zoomValue = 1;\n  loading = false;\n  rotateValue = 0;\n  index = 0;\n\n  public images: string[] | SafeResourceUrl[];\n  public descriptions: string[];\n  @BooleanInputConverter()\n  public showDescription: boolean;\n  @BooleanInputConverter()\n  public arrows: boolean;\n  @BooleanInputConverter()\n  public arrowsAutoHide: boolean;\n  @BooleanInputConverter()\n  public swipe: boolean;\n  @BooleanInputConverter()\n  public fullscreen: boolean;\n  @BooleanInputConverter()\n  public forceFullscreen: boolean;\n  @BooleanInputConverter()\n  public closeOnClick: boolean;\n  @BooleanInputConverter()\n  public closeOnEsc: boolean;\n  @BooleanInputConverter()\n  public keyboardNavigation: boolean;\n  public arrowPrevIcon: string;\n  public arrowNextIcon: string;\n  public closeIcon: string;\n  public fullscreenIcon: string;\n  public spinnerIcon: string;\n  @BooleanInputConverter()\n  public autoPlay: boolean;\n  public autoPlayInterval: number;\n  @BooleanInputConverter()\n  public autoPlayPauseOnHover: boolean;\n  @BooleanInputConverter()\n  public infinityMove: boolean;\n  @BooleanInputConverter()\n  public zoom: boolean;\n  public zoomStep: number;\n  public zoomMax: number;\n  public zoomMin: number;\n  public zoomInIcon: string;\n  public zoomOutIcon: string;\n  @BooleanInputConverter()\n  public animation: boolean;\n  public actions: GalleryAction[];\n  @BooleanInputConverter()\n  public rotate: boolean;\n  public rotateLeftIcon: string;\n  public rotateRightIcon: string;\n  @BooleanInputConverter()\n  public download: boolean;\n  public downloadIcon: string;\n  public bullets: string;\n  @BooleanInputConverter()\n  public previewEnabled: boolean;\n  public aspectRatio:SafeStyle;\n\n  onOpen = new EventEmitter();\n  onClose = new EventEmitter();\n  onActiveChange = new EventEmitter<number>();\n\n  @ViewChild('previewImage') previewImage: ElementRef;\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: () => any;\n\n  constructor(private sanitization: DomSanitizer, private elementRef: ElementRef,\n    private helperService: GalleryHelperService, private renderer: Renderer2,\n    private changeDetectorRef: ChangeDetectorRef) { }\n\n  ngOnInit(): void {\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.onOpen.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    this.closeFullscreen();\n    this.onClose.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  get canShowNext(): boolean {\n    if (this.loading) {\n      return false;\n    } else if (this.images) {\n      return this.infinityMove || this.index < this.images.length - 1 ? true : false;\n    } else {\n      return false;\n    }\n  }\n\n  get canShowPrev(): boolean {\n    if (this.loading) {\n      return false;\n    } else if (this.images) {\n      return this.infinityMove || this.index > 0 ? true : false;\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  get getTransform(): SafeStyle {\n    return this.sanitization.bypassSecurityTrustStyle('scale(' + this.zoomValue + ') rotate(' + this.rotateValue + 'deg)');\n  }\n\n  get canZoomIn(): boolean {\n    return this.zoomValue < this.zoomMax ? true : false;\n  }\n\n  get canZoomOut(): boolean {\n    return this.zoomValue > this.zoomMin ? true : false;\n  }\n\n  get 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 ? true : false;\n  }\n\n  private isKeyboardPrev(e): boolean {\n    return e.keyCode === 37 ? true : false;\n  }\n\n  private isKeyboardEsc(e): boolean {\n    return e.keyCode === 27 ? true : false;\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  private show(first = false) {\n    this.loading = true;\n    this.stopAutoPlay();\n\n    this.onActiveChange.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 {\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    if (typeof img.naturalWidth !== 'undefined' && img.naturalWidth === 0) {\n      return false;\n    }\n\n    return true;\n  }\n\n}\n","<o-gallery-arrows *ngIf=\"arrows\" (onPrevClick)=\"showPrev()\" (onNextClick)=\"showNext()\" [prev-disabled]=\"!canShowPrev\" [next-disabled]=\"!canShowNext\"\n  [arrow-prev-icon]=\"arrowPrevIcon\" [arrow-next-icon]=\"arrowNextIcon\"></o-gallery-arrows>\n\n<div class=\"o-gallery-preview-top\">\n  <div class=\"o-gallery-preview-icons\">\n    <o-gallery-action *ngFor=\"let action of actions\" [icon]=\"action.icon\" [disabled]=\"action.disabled\" [titleText]=\"action.titleText\"\n      (onClick)=\"action.onClick($event, index)\"></o-gallery-action>\n    <a *ngIf=\"download && src\" [href]=\"src\" class=\"o-gallery-icon\" aria-hidden=\"true\" download>\n      <em class=\"o-gallery-icon-content\">{{ downloadIcon }}</em>\n    </a>\n    <o-gallery-action *ngIf=\"zoom\" [icon]=\"zoomOutIcon\" [disabled]=\"!canZoomOut\" (onClick)=\"zoomOut()\"></o-gallery-action>\n    <o-gallery-action *ngIf=\"zoom\" [icon]=\"zoomInIcon\" [disabled]=\"!canZoomIn\" (onClick)=\"zoomIn()\"></o-gallery-action>\n    <o-gallery-action *ngIf=\"rotate\" [icon]=\"rotateLeftIcon\" (onClick)=\"rotateLeft()\"></o-gallery-action>\n    <o-gallery-action *ngIf=\"rotate\" [icon]=\"rotateRightIcon\" (onClick)=\"rotateRight()\"></o-gallery-action>\n    <o-gallery-action *ngIf=\"fullscreen\" [icon]=\"fullscreenIcon\" (onClick)=\"manageFullscreen()\"></o-gallery-action>\n    <o-gallery-action [icon]=\"closeIcon\" (onClick)=\"close()\"></o-gallery-action>\n  </div>\n</div>\n<div class=\"ngx-spinner-wrapper o-gallery-center\" [class.o-gallery-active]=\"showSpinner\">\n  <i class=\"o-gallery-icon o-gallery-spinner\" aria-hidden=\"true\">{{spinnerIcon}}</i>\n</div>\n<div class=\"o-gallery-preview-wrapper\" (click)=\"closeOnClick && close()\" (mouseup)=\"mouseUpHandler($event)\" (mousemove)=\"mouseMoveHandler($event)\"\n  (touchend)=\"mouseUpHandler($event)\" (touchmove)=\"mouseMoveHandler($event)\">\n  <div class=\"o-gallery-preview-img-wrapper\">\n    <img alt=\"previewImage\" *ngIf=\"src && type === 'image'\" #previewImage class=\"o-gallery-preview-img o-gallery-center\" [src]=\"src\" (click)=\"$event.stopPropagation()\"\n      (mouseenter)=\"imageMouseEnter()\" (mouseleave)=\"imageMouseLeave()\" (mousedown)=\"mouseDownHandler($event)\" (touchstart)=\"mouseDownHandler($event)\"\n      [class.o-gallery-active]=\"!loading\" [class.animation]=\"animation\" [class.o-gallery-grab]=\"canDragOnZoom\" [style.transform]=\"getTransform\"\n      [style.left]=\"positionLeft + 'px'\" [style.top]=\"positionTop + 'px'\"\n      [style.aspectRatio]=\"aspectRatio\"/>\n    <video *ngIf=\"src && type === 'video'\" #previewImage class=\"o-gallery-preview-video o-gallery-center\" controls style=\"width: 50%; height: 50%;\">\n      <source [src]=\"src\">\n      Your browser does not support the video tag.\n    </video>\n    <o-gallery-bullets *ngIf=\"bullets\" [count]=\"images.length\" [active]=\"index\" (onChange)=\"showAtIndex($event)\">\n    </o-gallery-bullets>\n  </div>\n  <div class=\"o-gallery-preview-text\" *ngIf=\"showDescription && description\" [innerHTML]=\"description\" (click)=\"$event.stopPropagation()\"></div>\n</div>\n","export class GalleryLayout {\n  static ThumbnailsTop = 'thumbnails-top';\n  static ThumbnailsBottom = 'thumbnails-bottom';\n  static ThumbnailsLeft = 'thumbnails-left';\n  static ThumbnailsRight = 'thumbnails-right';\n\n\n}\nexport type GalleryLayouts = 'thumbnails-top' | 'thumbnails-bottom' | 'thumbnails-left' | 'thumbnails-right';\n","export class GalleryOrder {\n  static Column = 1;\n  static Row = 2;\n  static Page = 3;\n}\n","import { Component, ElementRef, EventEmitter, HostListener, OnChanges, SimpleChange } from '@angular/core';\nimport { DomSanitizer, SafeResourceUrl, SafeStyle } from '@angular/platform-browser';\nimport { BooleanInputConverter } from 'ontimize-web-ngx';\n\nimport { GalleryAction } from '../../models/gallery-action.model';\nimport { GalleryLayout } from '../../models/gallery-layout.model';\nimport { GalleryOrder } from '../../models/gallery-order.model';\nimport { GalleryHelperService } from '../../services/gallery-helper.service';\n\n@Component({\n  selector: 'o-gallery-thumbnails',\n  templateUrl: './o-gallery-thumbnails.component.html',\n  styleUrls: ['./o-gallery-thumbnails.component.scss'],\n  inputs: [\n    'images',\n    'links',\n    'labels',\n    'linkTarget : link-target',\n    'columns',\n    'rows',\n    'arrows',\n    'arrowsAutoHide : arrows-auto-hide',\n    'margin',\n    'selectedIndex : selected-index',\n    'clickable',\n    'swipe',\n    'size',\n    'arrowPrevIcon : arrow-prev-icon',\n    'arrowNextIcon : arrow-next-icon',\n    'moveSize : move-size',\n    'order',\n    'remainingCount : remaining-count',\n    'lazyLoading : lazy-loading',\n    'actions',\n    'layout'\n  ],\n  outputs: [\n    'onActiveChange'\n  ]\n})\nexport class GalleryThumbnailsComponent implements OnChanges {\n\n  thumbnailsLeft: string = '0px';\n  thumbnailsMarginLeft: string = '0px';\n  mouseenter: boolean;\n  remainingCountValue: number;\n  public layout;\n\n  minStopIndex = 0;\n  private visibleThumbnails = 0;\n  private thumbnailLayoutCount: number = 0;\n\n  set images(val: string[] | SafeResourceUrl[]) {\n    this._imagesArray = val;\n  }\n  get images(): string[] | SafeResourceUrl[] {\n    this._images = this._imagesArray;\n    if (this.remainingCount) {\n      this._images = this._imagesArray.slice(0, this.rows * this.columns);\n    } else if (this.lazyLoading && this.order !== GalleryOrder.Row) {\n      let stopIndex = 0;\n\n      if (this.order === GalleryOrder.Column) {\n        stopIndex = (this.index + this.columns + this.moveSize) * this.rows;\n      } else if (this.order === GalleryOrder.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      this._images = this._imagesArray.slice(0, stopIndex);\n    }\n    return this._images;\n  }\n  private _images: string[] | SafeResourceUrl[] = []; // Contains images shown in this component\n  private _imagesArray: string[] | SafeResourceUrl[] = []; // Contains all images received through parameter `images`\n\n  public links: string[];\n  public labels: string[];\n  public linkTarget: string;\n  public columns: number;\n  public rows: number;\n  @BooleanInputConverter()\n  public arrows: boolean;\n  @BooleanInputConverter()\n  public arrowsAutoHide: boolean;\n  public margin: number;\n  public selectedIndex: number;\n  @BooleanInputConverter()\n  public clickable: boolean;\n  @BooleanInputConverter()\n  public swipe: boolean;\n  public size: string;\n  public arrowPrevIcon: string;\n  public arrowNextIcon: string;\n  public moveSize: number;\n  public order: number;\n  @BooleanInputConverter()\n  public remainingCount: boolean;\n  @BooleanInputConverter()\n  public lazyLoading: boolean;\n  public actions: GalleryAction[];\n\n  onActiveChange = new EventEmitter();\n\n  private index = 0;\n\n  constructor(\n    private sanitization: DomSanitizer,\n    public elementRef: ElementRef,\n    private helperService: GalleryHelperService\n  ) { }\n\n  ngOnChanges(changes: { [propName: string]: SimpleChange }): void {\n    if (changes.layout) {\n      if (changes.layout.currentValue === 'thumbnails-top' || changes.layout.currentValue === 'thumbnails-bottom') {\n        this.visibleThumbnails = this.columns;\n        this.thumbnailLayoutCount = this.rows;\n      } else {\n        this.visibleThumbnails = this.rows;\n        this.thumbnailLayoutCount = this.columns;\n      }\n    }\n\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\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  handleClick(event: Event, index: number): void {\n    if (!this.hasLink(index)) {\n      this.selectedIndex = index;\n      this.onActiveChange.emit(index);\n\n      event.stopPropagation();\n      event.preventDefault();\n    }\n  }\n\n  hasLink(index: number): boolean {\n    if (this.links && this.links.length && this.links[index]) {\n      return true;\n    }\n    return false;\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  moveBottom(): void {\n    if (this.canMoveBottom) {\n      this.index += this.moveSize;\n      const maxIndex = this.getMaxIndex() - this.rows;\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  moveTop(): void {\n    if (this.canMoveTop) {\n      this.index -= this.moveSize;\n\n      if (this.index < 0) {\n        this.index = 0;\n      }\n\n      this.setThumbnailsPosition();\n    }\n  }\n\n  get canMoveRight(): boolean {\n    return this.index + this.columns < this.getMaxIndex();\n  }\n\n  get canMoveBottom(): boolean {\n    return this.index + this.rows < this.getMaxIndex();\n  }\n\n  get canMoveLeft(): boolean {\n    return this.index !== 0;\n  }\n\n  get canMoveTop(): boolean {\n    return this.index !== 0;\n  }\n\n  getThumbnailLeft(index: number): SafeStyle {\n    return this.hasHorizontalDirection() ? this.calculateIndexHorizontal(index, this.rows) : this.calculateIndexVertical(index, this.columns);\n\n  }\n\n  getThumbnailTop(index: number): SafeStyle {\n    return this.hasHorizontalDirection() ? this.calculateIndexVertical(index, this.rows) : this.calculateIndexHorizontal(index, this.columns);\n  }\n\n  calculateIndexVertical(index: number, numThumbnailLayout: number): SafeStyle {\n    let calculatedIndex;\n    if (this.order === GalleryOrder.Column) {\n      calculatedIndex = index % numThumbnailLayout;\n    } else if (this.order === GalleryOrder.Page) {\n      calculatedIndex = Math.floor(index / this.visibleThumbnails) - (Math.floor(index / (this.rows * this.columns)) * numThumbnailLayout);\n    } else if (this.order === GalleryOrder.Row && this.remainingCount) {\n      calculatedIndex = Math.floor(index / this.visibleThumbnails);\n    } else {\n      calculatedIndex = Math.floor(index / Math.ceil(this.images.length / numThumbnailLayout));\n    }\n\n    return this.getThumbnailPosition(calculatedIndex, this.visibleThumbnails);\n  }\n  calculateIndexHorizontal(index: number, numThumbnailLayout: number): SafeStyle {\n    let calculatedIndex;\n\n    if (this.order === GalleryOrder.Column) {\n      calculatedIndex = Math.floor(index / numThumbnailLayout);\n    } else if (this.order === GalleryOrder.Page) {\n      calculatedIndex = (index % this.visibleThumbnails) + (Math.floor(index / (this.rows * this.columns)) * this.visibleThumbnails);\n    } else if (this.order === GalleryOrder.Row && this.remainingCount) {\n      calculatedIndex = index % this.visibleThumbnails;\n    } else {\n      calculatedIndex = index % Math.ceil(this.images.length / numThumbnailLayout);\n    }\n    return this.getThumbnailPosition(calculatedIndex, this.visibleThumbnails);\n  }\n\n  /* if layout is right or left, get proportion about rows else about columns*/\n  get thumbnailWidth(): SafeStyle {\n    return this.getThumbnailDimension(this.hasHorizontalDirection() ? this.visibleThumbnails : 1);\n  }\n\n  get thumbnailHeight(): SafeStyle {\n    return this.getThumbnailDimension(this.hasHorizontalDirection() ? 1 : this.visibleThumbnails);\n  }\n\n  hasHorizontalDirection(): boolean {\n    return (GalleryLayout.ThumbnailsBottom === this.layout || GalleryLayout.ThumbnailsTop === this.layout)\n  }\n\n  setThumbnailsPosition(): void {\n    this.thumbnailsLeft = - ((100 / this.visibleThumbnails) * this.index) + '%';\n\n    this.thumbnailsMarginLeft = - ((this.margin - (((this.visibleThumbnails - 1) * this.margin) / this.visibleThumbnails)) * this.index) + 'px';\n  }\n\n  setDefaultPosition(): void {\n    this.thumbnailsLeft = '0px';\n    this.thumbnailsMarginLeft = '0px';\n  }\n\n  get canShowArrows(): boolean {\n    if (this.remainingCount) {\n      return false;\n    } else if (this.arrows && this.images && this.images.length > this.getVisibleCount()\n      && (!this.arrowsAutoHide || this.mouseenter)) {\n      return true;\n    } else {\n      return false;\n    }\n  }\n\n  validateIndex(): void {\n    if (this.images) {\n      let newIndex;\n\n      if (this.order === GalleryOrder.Column) {\n        newIndex = Math.floor(this.selectedIndex / this.visibleThumbnails);\n      } else {\n        newIndex = this.selectedIndex % Math.ceil(this.images.length / this.visibleThumbnails);\n      }\n\n      if (this.remainingCount) {\n        newIndex = 0;\n      }\n\n      if (newIndex < this.index || newIndex >= this.index + this.visibleThumbnails) {\n        const maxIndex = this.getMaxIndex() - this.visibleThumbnails;\n        this.index = newIndex > maxIndex ? maxIndex : newIndex;\n\n        this.setThumbnailsPosition();\n      }\n    }\n  }\n\n  getFileType(fileSource: string): string {\n    return this.helperService.getFileType(fileSource);\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\n    if (this.order === GalleryOrder.Page) {\n      let maxIndex = (Math.floor(this.images.length / this.getVisibleCount()) * this.visibleThumbnails);\n\n      if (this.images.length % this.getVisibleCount() > this.visibleThumbnails) {\n        maxIndex += this.visibleThumbnails;\n      } else {\n        maxIndex += this.images.length % this.getVisibleCount();\n      }\n\n      return maxIndex;\n    } else {\n      return Math.ceil(this.images.length / this.thumbnailLayoutCount);\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}\n","<div class=\"o-gallery-thumbnails-wrapper o-gallery-thumbnail-size-{{size}}\">\n  <div class=\"o-gallery-thumbnails\"\n    [style.transform]=\"(layout === 'thumbnails-top' || layout === 'thumbnails-bottom')?'translateX('+ thumbnailsLeft + ')':'translateY(' + thumbnailsLeft + ')'\"\n    [style.marginLeft]=\"(layout === 'thumbnails-top' || layout === 'thumbnails-bottom')?thumbnailsMarginLeft : '0px'\"\n    [style.marginTop]=\"(layout === 'thumbnails-right' || layout === 'thumbnails-left')?thumbnailsMarginLeft : '0px'\">\n    <div *ngFor=\"let image of images; let i = index;\">\n      <a [href]=\"hasLink(i) ? links[i] : '#'\" [target]=\"linkTarget\" class=\"o-gallery-thumbnail\"\n        [style.width]=\"thumbnailWidth\"\n        (click)=\"handleClick($event, i)\"\n        [style.height]=\"thumbnailHeight\"\n        [style.left]=\"getThumbnailLeft(i)\" [style.top]=\"getThumbnailTop(i)\"\n        [ngClass]=\"{ 'o-gallery-active': i === selectedIndex, 'o-gallery-clickable': clickable }\" [attr.aria-label]=\"labels[i]\">\n        <div *ngIf=\"getFileType(image) === 'image'\" [oGalleryBackgroundImg]=\"image\" class=\"o-gallery-thumbnail\"\n          [ngClass]=\"{ 'o-gallery-active': i === selectedIndex, 'o-gallery-clickable': clickable }\"\n          style=\"width: 100%; height: 100%; position:absolute;\"></div>\n        <video *ngIf=\"getFileType(image) === 'video'\" class=\"o-gallery-thumbnail\"\n          [ngClass]=\"{ 'o-gallery-active': i === selectedIndex, 'o-gallery-clickable': clickable }\"\n          style=\"width: 100%; height: 100%; position:absolute;\">\n          <source [src]=\"image\">\n          Your browser does not support the video tag.\n        </video>\n        <div class=\"o-gallery-icons-wrapper\">\n          <o-gallery-action *ngFor=\"let action of actions\" [icon]=\"action.icon\" [disabled]=\"action.disabled\" [titleText]=\"action.titleText\"\n            (onClick)=\"action.onClick($event, i)\"></o-gallery-action>\n        </div>\n        <div class=\"o-gallery-remaining-count-overlay\" *ngIf=\"remainingCount && remainingCountValue && (i === (rows * columns) - 1)\">\n          <span class=\"o-gallery-remaining-count\">+{{remainingCountValue}}</span>\n        </div>\n      </a>\n    </div>\n  </div>\n</div>\n\n<o-gallery-arrows *ngIf=\"canShowArrows\"\n  (onPrevClick)=\"(layout === 'thumbnails-top' || layout === 'thumbnails-bottom')?moveLeft():moveTop()\"\n  (onNextClick)=\"(layout === 'thumbnails-top' || layout === 'thumbnails-bottom')?moveRight():moveBottom()\"\n  [prev-disabled]=\"(layout === 'thumbnails-top' || layout === 'thumbnails-bottom')?!canMoveLeft:!canMoveTop\"\n  [next-disabled]=\"(layout === 'thumbnails-top' || layout === 'thumbnails-bottom')?!canMoveRight:!canMoveBottom\"\n  [arrow-prev-icon]=\"arrowPrevIcon\" [arrow-next-icon]=\"arrowNextIcon\" [layout]=\"layout\"></o-gallery-arrows>\n","export class GalleryImageSize {\n  static Cover = 'cover';\n  static Contain = 'contain';\n}\n","import { IGalleryAction } from '../interfaces/IGalleryAction';\n\nexport class GalleryAction implements IGalleryAction {\n  icon: string;\n  disabled?: boolean;\n  titleText?: string;\n\n  onClick: (event: Event, index: number) => void;\n\n  constructor(action: IGalleryAction) {\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","import { IGalleryOptions } from '../interfaces/IGalleryOptions';\nimport { GalleryAction } from './gallery-action.model';\nimport { GalleryAnimation } from './gallery-animation.model';\nimport { GalleryImageSize } from './gallery-image-size.model';\nimport { GalleryLayout } from './gallery-layout.model';\nimport { GalleryOrder } from './gallery-order.model';\n\n\nexport class GalleryOptions implements IGalleryOptions {\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?: GalleryAction[];\n  imageDescription?: boolean;\n  imageBullets?: boolean;\n  aspectRatio?: string;\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?: GalleryOrder;\n  thumbnailsRemainingCount?: boolean;\n  thumbnailsAsLinks?: boolean;\n  thumbnailsAutoHide?: boolean;\n  thumbnailMargin?: number;\n  thumbnailSize?: string;\n  thumbnailActions?: GalleryAction[];\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?: GalleryAction[];\n\n  constructor(obj: IGalleryOptions) {\n\n    function use<T>(source: T, defaultValue: T): T {\n      return obj && source !== undefined ? source : defaultValue;\n    }\n\n    this.breakpoint = use(obj.breakpoint, undefined);\n    this.width = use(obj.width, '800px');\n    this.height = use(obj.height, obj.aspectRatio ? undefined : '600px');\n    this.fullWidth = use(obj.fullWidth, false);\n    this.layout = use(obj.layout, GalleryLayout.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, true);\n    this.imageAnimation = use(obj.imageAnimation, GalleryAnimation.Fade);\n    this.imageSize = use(obj.imageSize, GalleryImageSize.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 GalleryAction(action));\n    }\n    this.imageActions = use(obj.imageActions, []);\n    this.imageDescription = use(obj.imageDescription, false);\n    this.imageBullets = use(obj.imageBullets, false);\n    this.aspectRatio = use(obj.aspectRatio, undefined)\n\n    this.thumbnails = use(obj.thumbnails, true);\n    if (obj.layout === GalleryLayout.ThumbnailsRight || obj.layout === GalleryLayout.ThumbnailsLeft) {\n      this.thumbnailsColumns = use(obj.thumbnailsColumns, 1);\n      this.thumbnailsRows = use(obj.thumbnailsRows, 4);\n    } else {\n      this.thumbnailsColumns = use(obj.thumbnailsColumns, 4);\n      this.thumbnailsRows = use(obj.thumbnailsRows, 1);\n    }\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, true);\n    this.thumbnailsMoveSize = use(obj.thumbnailsMoveSize, 1);\n    this.thumbnailsOrder = use(obj.thumbnailsOrder, GalleryOrder.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, GalleryImageSize.Cover);\n    if (obj && obj.thumbnailActions && obj.thumbnailActions.length) {\n      obj.thumbnailActions = obj.thumbnailActions.map(action => new GalleryAction(action));\n    }\n    this.thumbnailActions = use(obj.thumbnailActions, []);\n\n    this.preview = use(obj.preview, true);\n    this.previewDescription = use(obj.previewDescription, false);\n    this.previewArrows = use(obj.previewArrows, true);\n    this.previewArrowsAutoHide = use(obj.previewArrowsAutoHide, false);\n    this.previewSwipe = use(obj.previewSwipe, true);\n    this.previewFullscreen = use(obj.previewFullscreen, true);\n    this.previewForceFullscreen = use(obj.previewForceFullscreen, false);\n    this.previewCloseOnClick = use(obj.previewCloseOnClick, true);\n    this.previewCloseOnEsc = use(obj.previewCloseOnEsc, true);\n    this.previewKeyboardNavigation = use(obj.previewKeyboardNavigation, true);\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, true);\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, true);\n    this.previewDownload = use(obj.previewDownload, true);\n    this.previewCustom = use(obj.previewCustom, undefined);\n    this.previewBullets = use(obj.previewBullets, false);\n\n    this.arrowPrevIcon = use(obj.arrowPrevIcon, 'navigate_before');\n    this.arrowNextIcon = use(obj.arrowNextIcon, 'navigate_next');\n    this.closeIcon = use(obj.closeIcon, 'close');\n    this.fullscreenIcon = use(obj.fullscreenIcon, 'fullscreen');\n    this.spinnerIcon = use(obj.spinnerIcon, 'loop');\n    this.zoomInIcon = use(obj.zoomInIcon, 'zoom_in');\n    this.zoomOutIcon = use(obj.zoomOutIcon, 'zoom_out');\n    this.rotateLeftIcon = use(obj.rotateLeftIcon, 'rotate_left');\n    this.rotateRightIcon = use(obj.rotateRightIcon, 'rotate_right');\n    this.downloadIcon = use(obj.downloadIcon, 'cloud_download');\n\n    if (obj && obj.actions && obj.actions.length) {\n      obj.actions = obj.actions.map(action => new GalleryAction(action));\n    }\n    this.actions = use(obj.actions, []);\n  }\n}\n","import { SafeResourceUrl } from '@angular/platform-browser';\nimport { IGalleryOrderedImage } from '../interfaces/IGalleryOrderedImage';\n\nexport class GalleryOrderedImage implements IGalleryOrderedImage {\n  src: string | SafeResourceUrl;\n  type: string;\n  index: number;\n\n  constructor(obj: IGalleryOrderedImage) {\n    this.src = obj.src;\n    this.type = obj.type;\n    this.index = obj.index;\n  }\n}\n","import { Overlay, OverlayConfig, OverlayRef, ScrollStrategyOptions } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport {\n  AfterViewInit,\n  Component,\n  ComponentRef,\n  ElementRef,\n  EventEmitter,\n  HostBinding,\n  HostListener,\n  Injector,\n  NgZone,\n  Type,\n  ViewChild,\n  ViewContainerRef\n} from '@angular/core';\nimport { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';\nimport { Util } from 'ontimize-web-ngx';\nimport { merge, Subscription } from 'rxjs';\nimport { filter, take } from 'rxjs/operators';\n\nimport { GalleryImageSize } from '../../models/gallery-image-size.model';\nimport { GalleryImage } from '../../models/gallery-image.model';\nimport { GalleryLayout, GalleryLayouts } from '../../models/gallery-layout.model';\nimport { GalleryOptions } from '../../models/gallery-options.model';\nimport { GalleryOrderedImage } from '../../models/gallery-ordered-image.model';\nimport { GalleryHelperService } from '../../services/gallery-helper.service';\nimport { GalleryImageComponent } from '../gallery-image/o-gallery-image.component';\nimport { GalleryPreviewComponent } from '../gallery-preview/o-gallery-preview.component';\nimport { GalleryThumbnailsComponent } from '../gallery-thumbnails/o-gallery-thumbnails.component';\n\nexport const DEFAULT_OUTPUTS_O_GALLERY = [\n  'onImagesReady',\n  'onChange',\n  'onPreviewOpen',\n  'onPreviewClose',\n  'onPreviewChange'\n];\nexport const DEFAULT_INPUTS_O_GALLERY = [\n  'options: gallery-options',\n  'images: gallery-images'\n];\n\n@Component({\n  selector: 'o-gallery',\n  templateUrl: './o-gallery.component.html',\n  styleUrls: ['./o-gallery.component.scss'],\n  providers: [GalleryHelperService],\n  inputs: DEFAULT_INPUTS_O_GALLERY,\n  outputs: DEFAULT_OUTPUTS_O_GALLERY\n})\nexport class GalleryComponent implements AfterViewInit {\n  protected subscription: Subscription = new Subscription();\n  protected previewComponentPortal: ComponentPortal<GalleryPreviewComponent>;\n  protected galleryOverlayRef: OverlayRef;\n\n  set options(val: GalleryOptions[]) {\n    let options = val.map(option => new GalleryOptions(option));\n\n    // sort options\n    options = [\n      ...options.filter(o => o.breakpoint === undefined),\n      ...options\n        .filter(o => o.breakpoint !== undefined)\n        .sort((a, b) => b.breakpoint - a.breakpoint)\n    ];\n\n    this._options = options;\n\n    this.setBreakpoint();\n    this.setOptions();\n    this.checkFullWidth();\n    if (this.currentOptions) {\n      this.selectedIndex = this.currentOptions.startIndex;\n    }\n  }\n\n  get options(): GalleryOptions[] {\n    return this._options;\n  }\n  private _options: GalleryOptions[];\n\n  set images(val: GalleryImage[]) {\n    this._images = val;\n\n    const smallImages = [];\n    const mediumImages = [];\n    const bigImages = [];\n    const descriptions = [];\n    const links = [];\n    const labels = [];\n    this._images.forEach((img, i) => {\n      img.type = this.helperService.getFileType(img.url || img.big as string || img.medium as string || img.small as string || '');\n      smallImages.push(img.small || img.medium);\n      mediumImages.push(new GalleryOrderedImage({ src: img.medium, type: img.type, index: i }));\n      bigImages.push(img.big || img.medium);\n      descriptions.push(img.description);\n      links.push(img.url);\n      labels.push(img.label);\n    });\n    this.smallImages = smallImages;\n    this.mediumImages = mediumImages;\n    this.bigImages = bigImages;\n    this.descriptions = descriptions;\n    this.links = links;\n    this.labels = labels;\n\n    if (this.images && this.images.length) {\n      this.onImagesReady.emit();\n    }\n  }\n  get images(): GalleryImage[] {\n    return this._images;\n  }\n  private _images: GalleryImage[];\n\n  onImagesReady = new EventEmitter();\n  onChange = new EventEmitter<{ index: number; image: GalleryImage; }>();\n  onPreviewOpen = new EventEmitter();\n  onPreviewClose = new EventEmitter();\n  onPreviewChange = new EventEmitter<{ index: number; image: GalleryImage; }>();\n\n  smallImages: string[] | SafeResourceUrl[];\n  mediumImages: GalleryOrderedImage[];\n  bigImages: string[] | SafeResourceUrl[];\n  descriptions: string[];\n  links: string[];\n  labels: string[];\n\n  selectedIndex = 0;\n  previewEnabled: boolean;\n\n  currentOptions: GalleryOptions = new GalleryOptions({});\n\n  private breakpoint: number | undefined = undefined;\n  private prevBreakpoint: number | undefined = undefined;\n  private fullWidthTimeout: any;\n\n  @ViewChild(GalleryImageComponent)\n  galleryMainImage: GalleryImageComponent;\n  @ViewChild(GalleryThumbnailsComponent)\n  thubmnails: GalleryThumbnailsComponent;\n\n  @HostBinding('style.width') width: string;\n  @HostBinding('style.height') height: string;\n  @HostBinding('style.left') left: string;\n  private sanitization: DomSanitizer;\n  private scrollStrategy: ScrollStrategyOptions;\n  private overlay: Overlay;\n  private helperService: GalleryHelperService;\n  private ngZone: NgZone;\n\n  constructor(\n    public viewContainerRef: ViewContainerRef,\n    private myElement: ElementRef,\n    private injector: Injector\n  ) {\n    this.sanitization = this.injector.get<DomSanitizer>(DomSanitizer);\n    this.scrollStrategy = this.injector.get<ScrollStrategyOptions>(ScrollStrategyOptions as Type<ScrollStrategyOptions>);\n    this.overlay = this.injector.get<Overlay>(Overlay as Type<Overlay>);\n    this.helperService = this.injector.get<GalleryHelperService>(GalleryHelperService as Type<GalleryHelperService>);\n    this.ngZone = this.injector.get<NgZone>(NgZone as Type<NgZone>);\n  }\n\n  ngAfterViewInit(): void {\n    if (this.galleryMainImage) {\n      this.galleryMainImage.reset(this.currentOptions.startIndex);\n    }\n\n    if (this.currentOptions.thumbnailsAutoHide && this.currentOptions.thumbnails && this.images.length <= 1) {\n      this.currentOptions.thumbnails = false;\n      this.currentOptions.imageArrows = false;\n    }\n\n    this.checkFullWidth();\n  }\n\n  @HostListener('window:resize')\n  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  openPreview(index: number): void {\n    this.previewEnabled = true;\n    this.openGalleryPreview(index);\n  }\n\n  previewOpened(): void {\n    this.onPreviewOpen.emit();\n\n    if (this.galleryMainImage && this.galleryMainImage.autoPlay) {\n      this.galleryMainImage.stopAutoPlay();\n    }\n  }\n\n  previewClosed(): void {\n    this.previewEnabled = false;\n    this.onPreviewClose.emit();\n\n    if (this.galleryMainImage && this.galleryMainImage.autoPlay) {\n      this.galleryMainImage.startAutoPlay();\n    }\n    if (this.galleryOverlayRef && this.galleryOverlayRef.hasAttached()) {\n      this.galleryOverlayRef.detach();\n      this.galleryOverlayRef.dispose();\n      this.galleryOverlayRef = null;\n    }\n    if (this.previewComponentPortal && this.previewComponentPortal.isAttached) {\n      this.previewComponentPortal.detach();\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.galleryMainImage.showNext();\n  }\n\n  showPrev(): void {\n    this.galleryMainImage.showPrev();\n  }\n\n  canShowNext(): boolean {\n    if (this.images && this.currentOptions) {\n      return (this.currentOptions.imageInfinityMove || this.selectedIndex < this.images.length - 1)\n        ? true : false;\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) ? true : false;\n    } else {\n      return false;\n    }\n  }\n\n  previewSelect(index: number) {\n    this.onPreviewChange.emit({ index, image: this.images[index] });\n  }\n\n  moveThumbnailsRight() {\n    this.thubmnails.moveRight();\n  }\n\n  moveThumbnailsLeft() {\n    this.thubmnails.moveLeft();\n  }\n\n  moveThumbnailsTop() {\n    this.thubmnails.moveTop();\n  }\n\n  moveThumbnailsBottom() {\n    this.thubmnails.moveBottom();\n  }\n\n  canMoveThumbnailsRight() {\n    return this.thubmnails.canMoveRight;\n  }\n\n  canMoveThumbnailsLeft() {\n    return this.thubmnails.canMoveLeft;\n  }\n\n  canMoveThumbnailsTop() {\n    return this.thubmnails.canMoveTop;\n  }\n\n  canMoveThumbnailsBottom() {\n    return this.thubmnails.canMoveBottom;\n  }\n\n  changeWidth(newWidth: string) {\n    this.changeOptionsProp('width', newWidth);\n  }\n\n  changeHeight(newHeight: string) {\n    this.changeOptionsProp('height', newHeight);\n  }\n\n  changeAspectRatio(newRatio: string) {\n    this.changeOptionsProp('aspectRatio', newRatio);\n  }\n\n  changeThumbnailsColumns(columns: number) {\n    this.changeOptionsProp('thumbnailsColumns', columns);\n  }\n\n  changeThumbnailsRows(rows: number) {\n    this.changeOptionsProp('thumbnailsRows', rows);\n  }\n\n  changeThumbPosition(layout: GalleryLayouts): void {\n    this.options = this.options.map(o => {\n      switch (layout) {\n        case GalleryLayout.ThumbnailsBottom:\n          o.layout = GalleryLayout.ThumbnailsBottom;\n          break;\n        case GalleryLayout.ThumbnailsTop:\n          o.layout = GalleryLayout.ThumbnailsTop;\n          break;\n        case GalleryLayout.ThumbnailsLeft:\n          o.layout = GalleryLayout.ThumbnailsLeft;\n          break;\n        case GalleryLayout.ThumbnailsRight:\n          o.layout = GalleryLayout.ThumbnailsRight;\n      }\n      return o;\n    });\n  }\n\n  get aspectRatio() {\n    if (Util.isDefined(this.currentOptions.aspectRatio) && this.currentOptions.aspectRatio.indexOf(':') > -1) {\n      const ratioParts = this.currentOptions.aspectRatio.split(':');\n      return ratioParts[0] + '/' + parseFloat(ratioParts[1]);\n\n    }\n    return undefined\n  }\n  get imageHeight() {\n    if (Util.isDefined(this.currentOptions.aspectRatio)) {\n      return undefined;\n    } else if (this.currentOptions.thumbnails &&\n      (this.currentOptions.layout === 'thumbnails-bottom' || this.currentOptions.layout === 'thumbnails-top')) {\n      return this.currentOptions.imagePercent + '%'\n    } else {\n      return '100%';\n    }\n\n  }\n\n  get thumbnailHeight() {\n    let height = undefined;\n    if (this.currentOptions.aspectRatio?.indexOf(':') > -1) {\n      if (Util.isDefined(this.thubmnails) && this.currentOptions.layout && (this.currentOptions.layout === 'thumbnails-bottom' || this.currentOptions.layout === 'thumbnails-top')) {\n        const thumbnailHref = this.thubmnails.elementRef.nativeElement.querySelector('a');\n        if (Util.isDefined(thumbnailHref)) {\n          const widthThumbnail = this.getWidthThumbnail(thumbnailHref);\n          const ratioPercent = this.getRatioPercentage();\n          height = widthThumbnail * ratioPercent + 'px';\n        }\n      }\n\n    } else if (this.currentOptions.image &&\n      (this.currentOptions.layout !== 'thumbnails-left' && this.currentOptions.layout !== 'thumbnails-right')) {\n      height = 'calc(' + this.currentOptions.thumbnailsPercent + '% - ' + this.currentOptions.thumbnailsMargin + 'px)'\n    } else {\n      height = '100%';\n    }\n    return height;\n  }\n\n  private getRatioPercentage() {\n    const ratioParts = this.currentOptions.aspectRatio.split(':').map(x => parseInt(x));\n    return !isNaN(ratioParts[0]) && !isNaN(ratioParts[1]) ? ratioParts[1] / ratioParts[0] : 1;\n  }\n\n  private getWidthThumbnail(thumbnailHref: any) {\n    return thumbnailHref ? thumbnailHref.offsetWidth : 0;\n  }\n\n  changeImageSize(): void {\n    this.options = this.options.map(o => {\n      o.imageSize = o.imageSize === GalleryImageSize.Cover ? GalleryImageSize.Contain : GalleryImageSize.Cover;\n      return o;\n    });\n  }\n\n  changeThumbnailSize(): void {\n    this.options = this.options.map(o => {\n      o.thumbnailSize = o.thumbnailSize === GalleryImageSize.Cover ? GalleryImageSize.Contain : GalleryImageSize.Cover;\n      return o;\n    });\n  }\n\n  changeImage(): void {\n    this.toggleOptionsProp('image');\n  }\n\n  changeThumbnails(): void {\n    this.toggleOptionsProp('thumbnails');\n  }\n\n  changePreview(): void {\n    this.toggleOptionsProp('preview');\n  }\n\n  changeImageArrows(): void {\n    this.toggleOptionsProp('imageArrows');\n  }\n\n  changePreviewArrows(): void {\n    this.toggleOptionsProp('previewArrows');\n  }\n\n  changePreviewAutoPlay(): void {\n    this.toggleOptionsProp('previewAutoPlay');\n  }\n\n  changePreviewDescription(): void {\n    this.toggleOptionsProp('previewDescription');\n  }\n\n  changePreviewFullscreen(): void {\n    this.toggleOptionsProp('previewFullscreen');\n  }\n\n  changePreviewCloseonClick(): void {\n    this.toggleOptionsProp('previewCloseOnClick');\n  }\n\n  changePreviewCloseonEsc(): void {\n    this.toggleOptionsProp('previewCloseOnEsc');\n  }\n\n  changePreviewKeyboardNavigation(): void {\n    this.toggleOptionsProp('previewKeyboardNavigation');\n  }\n\n  changePreviewZoom(): void {\n    this.toggleOptionsProp('previewZoom');\n  }\n\n  changePreviewRotate(): void {\n    this.toggleOptionsProp('previewRotate');\n  }\n\n  changePreviewDownload(): void {\n    this.toggleOptionsProp('previewDownload');\n  }\n\n  changeImageSwipe(): void {\n    this.toggleOptionsProp('imageSwipe');\n  }\n\n  changeThumbnailsSwipe(): void {\n    this.toggleOptionsProp('thumbnailsSwipe');\n  }\n\n  changePreviewSwipe(): void {\n    this.toggleOptionsProp('previewSwipe');\n  }\n\n\n  private resetThumbnails() {\n    if (this.thubmnails) {\n      this.thubmnails.reset(this.currentOptions.startIndex);\n    }\n  }\n\n  private select(index: number) {\n    this.selectedIndex = index;\n\n    this.onChange.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 = (-(document.body.clientWidth -\n        this.myElement.nativeElement.parentNode.innerWidth) / 2) + 'px';\n    }\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 setOptions(): void {\n    this.currentOptions = new GalleryOptions({});\n\n    this.options\n      .filter((opt) => opt.breakpoint === undefined || opt.breakpoint >= this.breakpoint)\n      .forEach((opt) => this.combineOptions(this.currentOptions, opt));\n\n    this.width = this.currentOptions.width;\n    if (!Util.isDefined(this.currentOptions.aspectRatio)) {\n      this.height = this.currentOptions.height;\n    }\n  }\n\n  private combineOptions(first: GalleryOptions, second: GalleryOptions) {\n    Object.keys(second).forEach((val) => first[val] = second[val] !== undefined ? second[val] : first[val]);\n  }\n\n  private changeOptionsProp(prop: string, newValue: any) {\n    this.options = this.options.map(o => {\n      o[prop] = newValue;\n      return o;\n    });\n  }\n\n  private toggleOptionsProp(prop: string) {\n    this.options = this.options.map(o => {\n      o[prop] = !o[prop];\n      return o;\n    });\n  }\n\n  public openGalleryPreview(index: number): void {\n    if (!this.previewComponentPortal) {\n      this.previewComponentPortal = new ComponentPortal<GalleryPreviewComponent>(GalleryPreviewComponent,\n        this.viewContainerRef);\n    }\n\n    if (!this.galleryOverlayRef) {\n      this.createGalleryOverlay(index);\n    }\n\n\n    if (!this.galleryOverlayRef.hasAttached()) {\n      this.galleryOverlayRef.attach(this.previewComponentPortal);\n\n      // Update the position once the calendar has rendered.\n      this.ngZone.onStable.asObservable().pipe(take(1)).subscribe(() => {\n        this.galleryOverlayRef.updatePosition();\n      });\n    }\n  }\n\n  /** Create the popup. */\n  protected createGalleryOverlay(index: number): void {\n    const overlayConfig = new OverlayConfig({\n      hasBackdrop: true,\n      backdropClass: 'mat-overlay-transparent-backdrop',\n      panelClass: 'gallery-preview-popup',\n      scrollStrategy: this.scrollStrategy.close(),\n      height: '100%',\n      width: '100%'\n    });\n\n    this.galleryOverlayRef = this.overlay.create(overlayConfig);\n    this.attachGalleryPreview(this.galleryOverlayRef, index);\n\n    merge(\n      this.galleryOverlayRef.backdropClick(),\n      this.galleryOverlayRef.detachments(),\n      this.galleryOverlayRef.keydownEvents().pipe(filter(event => {\n        return event.code === 'Escape' ||\n          (this.myElement && event.altKey && event.code === 'ArrowUp');\n      }))\n    ).subscribe(() => this.previewClosed());\n  }\n\n  protected attachGalleryPreview(overlay: OverlayRef, index: number): void {\n    const galleryPreviewContent: ComponentRef<GalleryPreviewComponent> = overlay.attach(new ComponentPortal(GalleryPreviewComponent));\n    galleryPreviewContent.instance.images = this.bigImages;\n    galleryPreviewContent.instance.descriptions = this.descriptions;\n    galleryPreviewContent.instance.showDescription = this.currentOptions.previewDescription;\n    galleryPreviewContent.instance.arrowPrevIcon = this.currentOptions.arrowPrevIcon;\n    galleryPreviewContent.instance.arrowNextIcon = this.currentOptions.arrowNextIcon;\n    galleryPreviewContent.instance.closeIcon = this.currentOptions.closeIcon;\n    galleryPreviewContent.instance.fullscreenIcon = this.currentOptions.fullscreenIcon;\n    galleryPreviewContent.instance.spinnerIcon = this.currentOptions.spinnerIcon;\n    galleryPreviewContent.instance.arrows = this.currentOptions.previewArrows;\n    galleryPreviewContent.instance.arrowsAutoHide = this.currentOptions.previewArrowsAutoHide;\n    galleryPreviewContent.instance.swipe = this.currentOptions.previewSwipe;\n    galleryPreviewContent.instance.fullscreen = this.currentOptions.previewFullscreen;\n    galleryPreviewContent.instance.forceFullscreen = this.currentOptions.previewForceFullscreen;\n    galleryPreviewContent.instance.closeOnClick = this.currentOptions.previewCloseOnClick;\n    galleryPreviewContent.instance.closeOnEsc = this.currentOptions.previewCloseOnEsc;\n    galleryPreviewContent.instance.keyboardNavigation = this.currentOptions.previewKeyboardNavigation;\n    galleryPreviewContent.instance.animation = this.currentOptions.previewAnimation;\n    galleryPreviewContent.instance.autoPlay = this.currentOptions.imageAutoPlay;\n    galleryPreviewContent.instance.autoPlayInterval = this.currentOptions.imageAutoPlayInterval;\n    galleryPreviewContent.instance.autoPlayPauseOnHover = this.currentOptions.imageAutoPlayPauseOnHover;\n    galleryPreviewContent.instance.infinityMove = this.currentOptions.previewInfinityMove;\n    galleryPreviewContent.instance.zoom = this.currentOptions.previewZoom;\n    galleryPreviewContent.instance.zoomStep = this.currentOptions.previewZoomStep;\n    galleryPreviewContent.instance.zoomMax = this.currentOptions.previewZoomMax;\n    galleryPreviewContent.instance.zoomMin = this.currentOptions.previewZoomMin;\n    galleryPreviewContent.instance.zoomInIcon = this.currentOptions.zoomInIcon;\n    galleryPreviewContent.instance.zoomOutIcon = this.currentOptions.zoomOutIcon;\n    galleryPreviewContent.instance.actions = this.currentOptions.actions;\n    galleryPreviewContent.instance.rotate = this.currentOptions.previewRotate;\n    galleryPreviewContent.instance.rotateLeftIcon = this.currentOptions.rotateLeftIcon;\n    galleryPreviewContent.instance.rotateRightIcon = this.currentOptions.rotateRightIcon;\n    galleryPreviewContent.instance.download = this.currentOptions.previewDownload;\n    galleryPreviewContent.instance.downloadIcon = this.currentOptions.downloadIcon;\n    galleryPreviewContent.instance.previewEnabled = this.previewEnabled;\n    galleryPreviewContent.instance.aspectRatio = this.aspectRatio;\n\n    this.subscription.add(galleryPreviewContent.instance.onClose.subscribe(() => this.previewClosed()))\n    this.subscription.add(galleryPreviewContent.instance.onOpen.subscribe(() => this.previewOpened()))\n    this.subscription.add(galleryPreviewContent.instance.onActiveChange.subscribe((arg) => this.previewSelect(arg)))\n\n    galleryPreviewContent.instance.open(index || 0);\n  }\n\n}\n\n\n","<div class=\"o-gallery-layout {{currentOptions?.layout}}\">\n  <o-gallery-image *ngIf=\"currentOptions?.image\"\n    [style.height]=\"imageHeight\"\n    [style.width]=\"(currentOptions?.thumbnails && (currentOptions?.layout === 'thumbnails-left' || currentOptions?.layout === 'thumbnails-right')) ? currentOptions.imagePercent + '%' : '100%'\"\n    [images]=\"mediumImages\" [style.aspectRatio]=\"aspectRatio?aspectRatio:undefined\" [clickable]=\"currentOptions?.preview\"\n    [selected-index]=\"selectedIndex\" [arrows]=\"currentOptions?.imageArrows\" [arrows-auto-hide]=\"currentOptions?.imageArrowsAutoHide\"\n    [arrow-prev-icon]=\"currentOptions?.arrowPrevIcon\" [arrow-next-icon]=\"currentOptions?.arrowNextIcon\" [swipe]=\"currentOptions?.imageSwipe\"\n    [animation]=\"currentOptions?.imageAnimation\" [size]=\"currentOptions?.imageSize\" [auto-play]=\"currentOptions?.imageAutoPlay\"\n    [auto-play-interval]=\"currentOptions?.imageAutoPlayInterval\" [auto-play-pause-on-hover]=\"currentOptions?.imageAutoPlayPauseOnHover\"\n    [infinity-move]=\"currentOptions?.imageInfinityMove\" [lazy-loading]=\"currentOptions?.lazyLoading\" [actions]=\"currentOptions?.imageActions\"\n    [descriptions]=\"descriptions\" [show-description]=\"currentOptions?.imageDescription\" [bullets]=\"currentOptions?.imageBullets\"\n    (onClick)=\"openPreview($event)\" (onActiveChange)=\"selectFromImage($event)\"></o-gallery-image>\n  <o-gallery-thumbnails #thumbnails *ngIf=\"currentOptions?.thumbnails\"\n    [style.marginTop]=\"(currentOptions?.layout === 'thumbnails-bottom') ? currentOptions?.thumbnailsMargin + 'px' : '0px'\"\n    [style.marginBottom]=\"(currentOptions?.layout === 'thumbnails-top') ? currentOptions?.thumbnailsMargin + 'px' : '0px'\"\n    [style.marginRight]=\"(currentOptions?.layout === 'thumbnails-left'? currentOptions?.thumbnailsMargin + 'px' : '0px')\"\n    [style.marginLeft]=\"(currentOptions?.layout === 'thumbnails-right'? currentOptions?.thumbnailsMargin + 'px' : '0px')\"\n    [style.height]=\"thumbnailHeight\"\n    [style.width]=\"(currentOptions?.image && (currentOptions?.layout === 'thumbnails-left' || currentOptions?.layout === 'thumbnails-right') ) ? 'calc(' + currentOptions?.thumbnailsPercent + '% - ' + currentOptions?.thumbnailsMargin + 'px)' : '100%'\"\n    [images]=\"smallImages\" [links]=\"currentOptions?.thumbnailsAsLinks ? links : []\" [labels]=\"labels\" [link-target]=\"currentOptions?.linkTarget\"\n    [selected-index]=\"selectedIndex\" [columns]=\"currentOptions?.thumbnailsColumns\" [rows]=\"currentOptions?.thumbnailsRows\"\n    [margin]=\"currentOptions?.thumbnailMargin\" [arrows]=\"currentOptions?.thumbnailsArrows\"\n    [arrows-auto-hide]=\"currentOptions?.thumbnailsArrowsAutoHide\" [arrow-prev-icon]=\"currentOptions?.arrowPrevIcon\"\n    [arrow-next-icon]=\"currentOptions?.arrowNextIcon\" [clickable]=\"currentOptions?.image || currentOptions?.preview\"\n    [swipe]=\"currentOptions?.thumbnailsSwipe\" [size]=\"currentOptions?.thumbnailSize\" [move-size]=\"currentOptions?.thumbnailsMoveSize\"\n    [order]=\"currentOptions?.thumbnailsOrder\" [remaining-count]=\"currentOptions?.thumbnailsRemainingCount\"\n    [lazy-loading]=\"currentOptions?.lazyLoading\" [actions]=\"currentOptions?.thumbnailActions\" (onActiveChange)=\"selectFromThumbnails($event)\"\n    [layout]=\"currentOptions?.layout\">\n  </o-gallery-thumbnails>\n</div>\n","import { GalleryActionComponent } from './components/gallery-action/o-gallery-action.component';\nimport { GalleryArrowsComponent } from './components/gallery-arrows/o-gallery-arrows.component';\nimport { GalleryBulletsComponent } from './components/gallery-bullets/o-gallery-bullets.component';\nimport { GalleryImageComponent } from './components/gallery-image/o-gallery-image.component';\nimport { GalleryImageDirective } from './components/gallery-image/o-gallery-image.directive';\nimport { GalleryPreviewComponent } from './components/gallery-preview/o-gallery-preview.component';\nimport { GalleryThumbnailsComponent } from './components/gallery-thumbnails/o-gallery-thumbnails.component';\nimport { GalleryComponent } from './components/gallery/o-gallery.component';\n\nexport * from './components/gallery-action/o-gallery-action.component';\nexport * from './components/gallery-arrows/o-gallery-arrows.component';\nexport * from './components/gallery-bullets/o-gallery-bullets.component';\nexport * from './components/gallery-image/o-gallery-image.component';\nexport * from './components/gallery-preview/o-gallery-preview.component';\nexport * from './components/gallery-thumbnails/o-gallery-thumbnails.component';\nexport * from './components/gallery/o-gallery.component';\n\nexport const OGALLERY_DIRECTIVES: any[] = [\n  GalleryActionComponent,\n  GalleryArrowsComponent,\n  GalleryBulletsComponent,\n  GalleryImageComponent,\n  GalleryImageDirective,\n  GalleryThumbnailsComponent,\n  GalleryPreviewComponent,\n  GalleryComponent\n];\n","import { SafeResourceUrl } from '@angular/platform-browser';\nimport { IGalleryImage } from '../interfaces/IGalleryImage';\n\nexport class GalleryImage implements IGalleryImage {\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: IGalleryImage) {\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","import { PortalModule } from '@angular/cdk/portal';\nimport { CommonModule } from '@angular/common';\nimport { Injectable, NgModule } from '@angular/core';\nimport { HAMMER_GESTURE_CONFIG, HammerGestureConfig } from '@angular/platform-browser';\nimport { OCustomMaterialModule } from 'ontimize-web-ngx';\n\nimport { OGALLERY_DIRECTIVES } from './components';\n\nexport * from './interfaces';\nexport * from './services';\nexport * from './models';\nexport * from './components';\n\n@Injectable()\nexport class CustomHammerConfig extends HammerGestureConfig {\n  overrides = <any>{\n    'pinch': { enable: false },\n    'rotate': { enable: false }\n  };\n}\n\n@NgModule({\n    imports: [\n        CommonModule,\n        OCustomMaterialModule,\n        PortalModule\n    ],\n    declarations: [OGALLERY_DIRECTIVES],\n    exports: [OGALLERY_DIRECTIVES],\n    providers: [{ provide: HAMMER_GESTURE_CONFIG, useClass: CustomHammerConfig }]\n})\nexport class OGalleryModule { }","/*\n * Public API Surface of ontimize-web-ngx-gallery\n */\n\nexport * from './lib/ontimize-web-ngx-gallery.module';\n\nexport * from './lib/components/gallery-image/index'\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["Util","i1","i2.GalleryHelperService","i1.GalleryHelperService","i2","i3.GalleryActionComponent","i4.GalleryArrowsComponent","i5.GalleryBulletsComponent","i6.GalleryImageDirective","i4.GalleryActionComponent","i5.GalleryArrowsComponent","i6.GalleryBulletsComponent","i2.GalleryImageComponent","i3.GalleryThumbnailsComponent","i1.GalleryActionComponent","i2.GalleryArrowsComponent","i3.GalleryBulletsComponent","i4.GalleryImageComponent","i5.GalleryImageDirective","i6.GalleryThumbnailsComponent","i7.GalleryPreviewComponent","i8.GalleryComponent"],"mappings":"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"}