{"version":3,"sources":["jsdelivr-header.js","/npm/projects/gallery/src/lib/ngx-gallery.service.ts","/npm/node_modules/tslib/tslib.es6.js","/npm/projects/gallery/src/lib/ngx-gallery-preview/ngx-gallery-preview.component.ts","/npm/projects/gallery/src/lib/ngx-gallery-animation.ts","/npm/projects/gallery/src/lib/ngx-gallery-image/ngx-gallery-image.component.ts","/npm/projects/gallery/src/lib/ngx-gallery-order.ts","/npm/projects/gallery/src/lib/ngx-gallery-thumbnails/ngx-gallery-thumbnails.component.ts","/npm/projects/gallery/src/lib/ngx-gallery-action.ts","/npm/projects/gallery/src/lib/ngx-gallery-layout.ts","/npm/projects/gallery/src/lib/ngx-gallery-image-size.ts","/npm/projects/gallery/src/lib/ngx-gallery-options.ts","/npm/projects/gallery/src/lib/ngx-gallery-ordered-image.ts","/npm/projects/gallery/src/lib/ngx-gallery.component.ts","/npm/projects/gallery/src/lib/ngx-gallery-arrows/ngx-gallery-arrows.component.ts","/npm/projects/gallery/src/lib/ngx-gallery-action/ngx-gallery-action.component.ts","/npm/projects/gallery/src/lib/ngx-gallery-bullets/ngx-gallery-bullets.component.ts","/npm/projects/gallery/src/lib/ngx-gallery.module.ts","/npm/projects/gallery/src/lib/ngx-gallery-image.ts"],"names":[],"mappings":"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","file":"/npm/@sivathanu/ngx-gallery@1.2.1/bundles/sivathanu-ngx-gallery.umd.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/@sivathanu/ngx-gallery@1.2.1/bundles/sivathanu-ngx-gallery.umd.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","import {ElementRef, Injectable, Renderer2} from '@angular/core';\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class NgxGalleryService {\r\n  private swipeHandlers: Map<string, (() => void)[]> = new Map<string, (() => void)[]>();\r\n\r\n  constructor(private renderer: Renderer2) {\r\n  }\r\n\r\n  manageSwipe(status: boolean, element: ElementRef, id: string, nextHandler: () => void, prevHandler: () => void): 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\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  getFileType(fileSource: string): string {\r\n    if (fileSource.startsWith('data:')) {\r\n      return fileSource.substr(5, Math.min(fileSource.indexOf(';'), fileSource.indexOf('/')) - 5);\r\n    }\r\n    if (fileSource.startsWith('blob:')) {\r\n      return 'image';\r\n    }\r\n    const fileExtension = fileSource.split('.').pop().toLowerCase();\r\n    if (!fileExtension\r\n      || fileExtension === 'jpeg' || fileExtension === 'jpg'\r\n      || fileExtension === 'png' || fileExtension === 'bmp'\r\n      || fileExtension === 'gif' || fileExtension === 'webp') {\r\n      return 'image';\r\n    }\r\n    else if (fileExtension === 'avi' || fileExtension === 'flv'\r\n      || fileExtension === 'wmv' || fileExtension === 'mov'\r\n      || fileExtension === 'mp4') {\r\n      return 'video';\r\n    }\r\n    return 'unknown';\r\n}\r\n\r\n  private getSwipeHandlers(id: string): (() => void)[] | 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","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n    extendStatics = Object.setPrototypeOf ||\r\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n        function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n    return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n    if (typeof b !== \"function\" && b !== null)\r\n        throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n    extendStatics(d, b);\r\n    function __() { this.constructor = d; }\r\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n    __assign = Object.assign || function __assign(t) {\r\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n            s = arguments[i];\r\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n        }\r\n        return t;\r\n    }\r\n    return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n    var t = {};\r\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n        t[p] = s[p];\r\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n                t[p[i]] = s[p[i]];\r\n        }\r\n    return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n    return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n    return new (P || (P = Promise))(function (resolve, reject) {\r\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n    });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n    function verb(n) { return function (v) { return step([n, v]); }; }\r\n    function step(op) {\r\n        if (f) throw new TypeError(\"Generator is already executing.\");\r\n        while (_) try {\r\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n            if (y = 0, t) op = [op[0] & 2, t.value];\r\n            switch (op[0]) {\r\n                case 0: case 1: t = op; break;\r\n                case 4: _.label++; return { value: op[1], done: false };\r\n                case 5: _.label++; y = op[1]; op = [0]; continue;\r\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n                default:\r\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n                    if (t[2]) _.ops.pop();\r\n                    _.trys.pop(); continue;\r\n            }\r\n            op = body.call(thisArg, _);\r\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n    }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n    if (k2 === undefined) k2 = k;\r\n    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n    if (k2 === undefined) k2 = k;\r\n    o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n    for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n    if (m) return m.call(o);\r\n    if (o && typeof o.length === \"number\") return {\r\n        next: function () {\r\n            if (o && i >= o.length) o = void 0;\r\n            return { value: o && o[i++], done: !o };\r\n        }\r\n    };\r\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n    if (!m) return o;\r\n    var i = m.call(o), r, ar = [], e;\r\n    try {\r\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n    }\r\n    catch (error) { e = { error: error }; }\r\n    finally {\r\n        try {\r\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n        }\r\n        finally { if (e) throw e.error; }\r\n    }\r\n    return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n    for (var ar = [], i = 0; i < arguments.length; i++)\r\n        ar = ar.concat(__read(arguments[i]));\r\n    return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n    for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n    for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n        for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n            r[k] = a[j];\r\n    return r;\r\n}\r\n\r\nexport function __spreadArray(to, from) {\r\n    for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\r\n        to[j] = from[i];\r\n    return to;\r\n}\r\n\r\nexport function __await(v) {\r\n    return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n    return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n    function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n    function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n    function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n    function fulfill(value) { resume(\"next\", value); }\r\n    function reject(value) { resume(\"throw\", value); }\r\n    function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n    var i, p;\r\n    return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n    function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var m = o[Symbol.asyncIterator], i;\r\n    return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n    function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n    function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n    if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n    return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n    Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n    o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n    if (mod && mod.__esModule) return mod;\r\n    var result = {};\r\n    if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n    __setModuleDefault(result, mod);\r\n    return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n    return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n    if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n    if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n    return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n    if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n    if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n    if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n    return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","import {\r\n  ChangeDetectionStrategy,\r\n  ChangeDetectorRef,\r\n  Component,\r\n  ElementRef,\r\n  EventEmitter,\r\n  HostListener,\r\n  Input,\r\n  OnChanges,\r\n  OnDestroy,\r\n  OnInit,\r\n  Output,\r\n  Renderer2,\r\n  SimpleChanges,\r\n  ViewChild\r\n} from '@angular/core';\r\nimport {DomSanitizer, SafeResourceUrl, SafeStyle, SafeUrl} from '@angular/platform-browser';\r\nimport {NgxGalleryService} from '../ngx-gallery.service';\r\nimport {NgxGalleryAction} from '../ngx-gallery-action';\r\n\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  // encapsulation: ViewEncapsulation.None,\r\n  changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class NgxGalleryPreviewComponent implements OnInit, OnDestroy, OnChanges {\r\n  src: SafeUrl;\r\n  srcIndex: number;\r\n  description: string;\r\n  type: 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() previewOpen = new EventEmitter();\r\n  @Output() previewClose = new EventEmitter();\r\n  @Output() activeChange = new EventEmitter<number>();\r\n\r\n  @ViewChild('previewImage') previewImage: any;\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: () => void;\r\n\r\n  constructor(private sanitization: DomSanitizer, private elementRef: ElementRef,\r\n              private helperService: NgxGalleryService, private renderer: Renderer2,\r\n              private changeDetectorRef: ChangeDetectorRef) {\r\n  }\r\n\r\n  ngOnInit() {\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.previewOpen.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    const video = this.previewImage.nativeElement;\r\n    if (\r\n      video.currentTime > 0 &&\r\n      !video.paused &&\r\n      !video.ended &&\r\n      video.readyState > 2\r\n    ) {\r\n      video.pause();\r\n    }\r\n    this.closeFullscreen();\r\n    this.previewClose.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;\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;\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 = document as any;\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 this.sanitization.bypassSecurityTrustUrl(image);\r\n  }\r\n\r\n  getFileType(fileSource: string): string {\r\n    return this.helperService.getFileType(fileSource);\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;\r\n  }\r\n\r\n  canZoomOut(): boolean {\r\n    return this.zoomValue > this.zoomMin;\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;\r\n  }\r\n\r\n  private isKeyboardPrev(e): boolean {\r\n    return e.keyCode === 37;\r\n  }\r\n\r\n  private isKeyboardEsc(e): boolean {\r\n    return e.keyCode === 27;\r\n  }\r\n\r\n  private openFullscreen(): void {\r\n    const element = document.documentElement as any;\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 = document as any;\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 = document as any;\r\n\r\n    return doc.fullscreenElement || doc.webkitFullscreenElement\r\n      || doc.mozFullScreenElement || doc.msFullscreenElement;\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.activeChange.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(this.images[this.index] as string);\r\n    this.type = this.getFileType(this.images[this.index] as string);\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) || this.type === 'video') {\r\n        this.loading = false;\r\n        this.startAutoPlay();\r\n        this.changeDetectorRef.markForCheck();\r\n      } else if (this.type === 'video') {\r\n\r\n      }\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    return !(typeof img.naturalWidth !== 'undefined' && img.naturalWidth === 0);\r\n  }\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","import {\r\n  ChangeDetectionStrategy, ChangeDetectorRef,\r\n  Component,\r\n  ElementRef,\r\n  EventEmitter,\r\n  HostListener,\r\n  Input,\r\n  OnChanges,\r\n  OnInit,\r\n  Output,\r\n  SimpleChanges\r\n} from '@angular/core';\r\nimport {DomSanitizer, SafeStyle} from '@angular/platform-browser';\r\nimport {NgxGalleryService} from '../ngx-gallery.service';\r\nimport {NgxGalleryOrderedImage} from '../ngx-gallery-ordered-image';\r\nimport {NgxGalleryAction} from '../ngx-gallery-action';\r\nimport {NgxGalleryAnimation} from '../ngx-gallery-animation';\r\nimport {animate, style, transition, trigger, state} from '@angular/animations';\r\n\r\ntype Orientation = ('slideLeft' | 'slideRight' | 'fade' | 'rotateLeft' | 'rotateRight' | 'zoom' | 'none');\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  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  animations: [\r\n    trigger('animation', [\r\n      // ...\r\n      state('slideRight', style({\r\n      })),\r\n      state('slideLeft', style({\r\n      })),\r\n      state('fade', style({\r\n      })),\r\n      state('rotateLeft', style({\r\n      })),\r\n      state('rotateRight', style({\r\n      })),\r\n      state('zoom', style({\r\n      })),\r\n      transition('slideRight => void', [\r\n        animate('500ms ease-in-out', style({transform: 'translateX(-100%)'}))\r\n      ]),\r\n      transition('void => slideRight', [\r\n        style({transform: 'translateX(100%)'}),\r\n        animate('500ms ease-in-out', style({transform: 'translateX(0)'}))\r\n      ]),\r\n      transition('slideLeft => void', [\r\n        animate('500ms ease-in-out', style({transform: 'translateX(100%)'}))\r\n      ]),\r\n      transition('void => slideLeft', [\r\n        style({transform: 'translateX(-100%)'}),\r\n        animate('500ms ease-in-out', style({transform: 'translateX(0)'}))\r\n      ]),\r\n      transition('fade => void', [\r\n        animate('500ms ease-in-out', style({opacity: '0'}))\r\n      ]),\r\n      transition('void => fade', [\r\n        style({opacity: '0'}),\r\n        animate('500ms ease-in-out', style({opacity: '1'}))\r\n      ]),\r\n      transition('rotateLeft => void', [\r\n        animate('500ms ease-in-out', style({transform: 'scale(1, 1) rotate(-90deg)', opacity: '0'}))\r\n      ]),\r\n      transition('void => rotateLeft', [\r\n        style({transform: 'scale(1, 1) rotate(-90deg)', opacity: '0'}),\r\n        animate('500ms ease-in-out', style({transform: 'scale(1, 1) rotate(0deg)', opacity: '1'}))\r\n      ]),\r\n      transition('rotateRight => void', [\r\n        animate('500ms ease-in-out', style({transform: 'scale(1, 1) rotate(90deg)', opacity: '0'}))\r\n      ]),\r\n      transition('void => rotateRight', [\r\n        style({transform: 'scale(1, 1) rotate(90deg)', opacity: '0'}),\r\n        animate('500ms ease-in-out', style({transform: 'scale(1, 1) rotate(0deg)', opacity: '1'}))\r\n      ]),\r\n      transition('zoom => void', [\r\n        animate('500ms ease-in-out', style({transform: 'scale(2.5,2.5)', opacity: '0'}))\r\n      ]),\r\n      transition('void => zoom', [\r\n        style({transform: 'scale(2.5,2.5)', opacity: '0'}),\r\n        animate('500ms ease-in-out', style({transform: 'scale(1, 1)', opacity: '1'}))\r\n      ]),\r\n    ]),\r\n  ]\r\n})\r\nexport class NgxGalleryImageComponent implements OnInit, OnChanges {\r\n  @Input() images: NgxGalleryOrderedImage[];\r\n  @Input() clickable: boolean;\r\n  // tslint:disable-next-line:variable-name\r\n  _selectedIndex;\r\n  @Input()\r\n  set selectedIndex(index: number) {\r\n    if (index > this._selectedIndex) {\r\n      let action;\r\n      if (this.animation === NgxGalleryAnimation.Slide) {\r\n        action = 'slideRight';\r\n      }\r\n      else if (this.animation === NgxGalleryAnimation.Fade) {\r\n        action = 'fade';\r\n      }\r\n      else if (this.animation === NgxGalleryAnimation.Rotate) {\r\n        action = 'rotateRight';\r\n      }\r\n      else if (this.animation === NgxGalleryAnimation.Zoom) {\r\n        action = 'zoom';\r\n      }\r\n      this.setAction(action);\r\n    } else if (index < this._selectedIndex) {\r\n      let action;\r\n      if (this.animation === NgxGalleryAnimation.Slide) {\r\n        action = 'slideLeft';\r\n      }\r\n      else if (this.animation === NgxGalleryAnimation.Fade) {\r\n        action = 'fade';\r\n      }\r\n      else if (this.animation === NgxGalleryAnimation.Rotate) {\r\n        action = 'rotateLeft';\r\n      }\r\n      else if (this.animation === NgxGalleryAnimation.Zoom) {\r\n        action = 'zoom';\r\n      }\r\n      this.setAction(action);\r\n    }\r\n\r\n    this._selectedIndex = index;\r\n  }\r\n\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() imageClick = new EventEmitter();\r\n  @Output() activeChange = new EventEmitter();\r\n  @Output() animating = new EventEmitter();\r\n\r\n  canChangeImage = true;\r\n  public action: Orientation;\r\n\r\n  isAnimating = false;\r\n\r\n  private timer;\r\n\r\n  constructor(private sanitization: DomSanitizer, private changeDetectorRef: ChangeDetectorRef,\r\n              private elementRef: ElementRef, private helperService: NgxGalleryService) {\r\n    this.changeDetectorRef = changeDetectorRef;\r\n    this.action = 'none';\r\n  }\r\n\r\n  // @HostBinding('style.display') public display = 'inline-block';\r\n  // @HostBinding('style.background-color') public color = 'lime';\r\n\r\n  ngOnInit() {\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    this.action = 'none';\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      const indexes = [this._selectedIndex];\r\n      const 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      const 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.imageClick.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    if (this.isAnimating) {\r\n      return;\r\n    }\r\n    if (index > this._selectedIndex) {\r\n      let action;\r\n      if (this.animation === NgxGalleryAnimation.Slide) {\r\n        action = 'slideRight';\r\n      }\r\n      else if (this.animation === NgxGalleryAnimation.Fade) {\r\n        action = 'fade';\r\n      }\r\n      else if (this.animation === NgxGalleryAnimation.Rotate) {\r\n        action = 'rotateRight';\r\n      }\r\n      else if (this.animation === NgxGalleryAnimation.Zoom) {\r\n        action = 'zoom';\r\n      }\r\n      this.setAction(action);\r\n    } else {\r\n      let action;\r\n      if (this.animation === NgxGalleryAnimation.Slide) {\r\n        action = 'slideLeft';\r\n      }\r\n      else if (this.animation === NgxGalleryAnimation.Fade) {\r\n        action = 'fade';\r\n      }\r\n      else if (this.animation === NgxGalleryAnimation.Rotate) {\r\n        action = 'rotateLeft';\r\n      }\r\n      else if (this.animation === NgxGalleryAnimation.Zoom) {\r\n        action = 'zoom';\r\n      }\r\n      this.setAction(action);\r\n    }\r\n\r\n    this._selectedIndex = index;\r\n    this.activeChange.emit(this._selectedIndex);\r\n    this.setChangeTimeout();\r\n  }\r\n\r\n  setAction(action: Orientation) {\r\n    this.action = action;\r\n    this.changeDetectorRef.detectChanges();\r\n  }\r\n\r\n  showNext(): boolean {\r\n    if (this.isAnimating) {\r\n      return;\r\n    }\r\n    if (this.canShowNext() && this.canChangeImage) {\r\n      let action;\r\n      if (this.animation === NgxGalleryAnimation.Slide) {\r\n        action = 'slideRight';\r\n      }\r\n      else if (this.animation === NgxGalleryAnimation.Fade) {\r\n        action = 'fade';\r\n      }\r\n      else if (this.animation === NgxGalleryAnimation.Rotate) {\r\n        action = 'rotateRight';\r\n      }\r\n      else if (this.animation === NgxGalleryAnimation.Zoom) {\r\n        action = 'zoom';\r\n      }\r\n      this.setAction(action);\r\n      this._selectedIndex++;\r\n      if (this._selectedIndex === this.images.length) {\r\n        this._selectedIndex = 0;\r\n      }\r\n\r\n      this.activeChange.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.isAnimating) {\r\n      return;\r\n    }\r\n    if (this.canShowPrev() && this.canChangeImage) {\r\n      let action;\r\n      if (this.animation === NgxGalleryAnimation.Slide) {\r\n        action = 'slideLeft';\r\n      }\r\n      else if (this.animation === NgxGalleryAnimation.Fade) {\r\n        action = 'fade';\r\n      }\r\n      else if (this.animation === NgxGalleryAnimation.Rotate) {\r\n        action = 'rotateLeft';\r\n      }\r\n      else if (this.animation === NgxGalleryAnimation.Zoom) {\r\n        action = 'zoom';\r\n      }\r\n      this.setAction(action);\r\n      this._selectedIndex--;\r\n      if (this._selectedIndex < 0) {\r\n        this._selectedIndex = this.images.length - 1;\r\n      }\r\n\r\n      this.activeChange.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    } 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;\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  getFileType(fileSource: string) {\r\n    return this.helperService.getFileType(fileSource);\r\n  }\r\n\r\n  onStart(event: AnimationEvent) {\r\n    this.isAnimating = true;\r\n    this.animating.emit(true);\r\n  }\r\n\r\n  onDone(event: AnimationEvent) {\r\n    this.isAnimating = false;\r\n    this.animating.emit(false);\r\n  }\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","import {\r\n  ChangeDetectionStrategy,\r\n  Component,\r\n  ElementRef,\r\n  EventEmitter,\r\n  HostListener,\r\n  Input,\r\n  OnChanges,\r\n  OnInit,\r\n  Output,\r\n  SimpleChanges\r\n} from '@angular/core';\r\nimport {DomSanitizer, SafeResourceUrl, SafeStyle} from '@angular/platform-browser';\r\nimport {NgxGalleryService} from '../ngx-gallery.service';\r\nimport {NgxGalleryAction} from '../ngx-gallery-action';\r\nimport {NgxGalleryOrder} from '../ngx-gallery-order';\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  changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class NgxGalleryThumbnailsComponent implements OnInit, OnChanges {\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() isAnimating: boolean;\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() activeChange = new EventEmitter();\r\n\r\n  private index = 0;\r\n\r\n  constructor(private sanitization: DomSanitizer, private elementRef: ElementRef,\r\n              private helperService: NgxGalleryService) {\r\n  }\r\n\r\n  ngOnInit() {\r\n  }\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    } 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      } 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    } 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) && !this.isAnimating) {\r\n      this.selectedIndex = index;\r\n      this.activeChange.emit(index);\r\n    }\r\n    event.stopPropagation();\r\n    event.preventDefault();\r\n  }\r\n\r\n  hasLink(index: number): boolean {\r\n    if (this.links && this.links.length && this.links[index]) {\r\n      return true;\r\n    }\r\n  }\r\n\r\n  moveRight(): void {\r\n    if (this.canMoveRight()) {\r\n      this.index += this.moveSize;\r\n      const 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();\r\n  }\r\n\r\n  canMoveLeft(): boolean {\r\n    return this.index !== 0;\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    } else if (this.order === NgxGalleryOrder.Page) {\r\n      calculatedIndex = (index % this.columns) + (Math.floor(index / (this.rows * this.columns)) * this.columns);\r\n    } else if (this.order === NgxGalleryOrder.Row && this.remainingCount) {\r\n      calculatedIndex = index % this.columns;\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    } 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    } else if (this.order === NgxGalleryOrder.Row && this.remainingCount) {\r\n      calculatedIndex = Math.floor(index / this.columns);\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 {\r\n      return this.arrows && this.images && this.images.length > this.getVisibleCount()\r\n        && (!this.arrowsAutoHide || this.mouseenter);\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  getFileType(fileSource: string): string {\r\n    return this.helperService.getFileType(fileSource);\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      } else {\r\n        maxIndex += this.images.length % this.getVisibleCount();\r\n      }\r\n\r\n      return maxIndex;\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","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","export class NgxGalleryLayout {\r\n    static ThumbnailsTop = 'thumbnails-top';\r\n    static ThumbnailsBottom = 'thumbnails-bottom';\r\n}\r\n","export class NgxGalleryImageSize {\r\n    static Cover = 'cover';\r\n    static Contain = 'contain';\r\n}\r\n","import {NgxGalleryAction} from './ngx-gallery-action';\r\nimport {NgxGalleryOrder} from './ngx-gallery-order';\r\nimport {NgxGalleryLayout} from './ngx-gallery-layout';\r\nimport {NgxGalleryAnimation} from './ngx-gallery-animation';\r\nimport {NgxGalleryImageSize} from './ngx-gallery-image-size';\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    thumbnailClasses?: string[];\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    thumbnailClasses?: string[];\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        this.thumbnailClasses = use(obj.thumbnailClasses, []);\r\n\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  type: string;\r\n  index: number;\r\n}\r\n\r\nexport class NgxGalleryOrderedImage implements INgxGalleryOrderedImage {\r\n  src: string | SafeResourceUrl;\r\n  type: string;\r\n  index: number;\r\n\r\n  constructor(obj: INgxGalleryOrderedImage) {\r\n    this.src = obj.src;\r\n    this.type = obj.type;\r\n    this.index = obj.index;\r\n  }\r\n}\r\n","import {\r\n  AfterViewInit,\r\n  ChangeDetectionStrategy,\r\n  Component,\r\n  DoCheck,\r\n  ElementRef,\r\n  EventEmitter,\r\n  HostBinding,\r\n  HostListener,\r\n  Input,\r\n  OnInit,\r\n  Output,\r\n  ViewChild,\r\n  ViewEncapsulation\r\n} from '@angular/core';\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 {SafeResourceUrl} from '@angular/platform-browser';\r\nimport {NgxGalleryService} from './ngx-gallery.service';\r\nimport {NgxGalleryOptions} from './ngx-gallery-options';\r\nimport {NgxGalleryImage} from './ngx-gallery-image';\r\nimport {NgxGalleryOrderedImage} from './ngx-gallery-ordered-image';\r\nimport {NgxGalleryLayout} from './ngx-gallery-layout';\r\n\r\n@Component({\r\n  selector: 'ngx-gallery',\r\n  templateUrl: './ngx-gallery.component.html',\r\n  styleUrls: ['./ngx-gallery.component.scss'],\r\n  encapsulation: ViewEncapsulation.None,\r\n  providers: [NgxGalleryService],\r\n  changeDetection: ChangeDetectionStrategy.OnPush\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  // tslint:disable-next-line:no-output-native\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  isAnimating: boolean;\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) thumbnails: NgxGalleryThumbnailsComponent;\r\n\r\n  @HostBinding('style.width') width: string;\r\n  @HostBinding('style.height') height: string;\r\n  @HostBinding('style.transform') left: string;\r\n\r\n  constructor(private myElement: ElementRef, private helperService: NgxGalleryService) {\r\n  }\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 = this.currentOptions.startIndex as number;\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(this.currentOptions.startIndex as number);\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    } 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);\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.thumbnails.moveRight();\r\n  }\r\n\r\n  moveThumbnailsLeft() {\r\n    this.thumbnails.moveLeft();\r\n  }\r\n\r\n  canMoveThumbnailsRight() {\r\n    return this.thumbnails.canMoveRight();\r\n  }\r\n\r\n  canMoveThumbnailsLeft() {\r\n    return this.thumbnails.canMoveLeft();\r\n  }\r\n\r\n  private resetThumbnails() {\r\n    if (this.thumbnails) {\r\n      this.thumbnails.reset(this.currentOptions.startIndex as number);\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 = 'translateX(' + (-(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.images.forEach((img) =>\r\n        img.type = this.helperService.getFileType(img.url as string || img.big as string || img.medium as string || img.small as string || '')\r\n    );\r\n    this.smallImages = this.images.map((img) => img.small as string);\r\n    this.mediumImages = this.images.map((img, i) => new NgxGalleryOrderedImage({\r\n      src: img.medium,\r\n      type: img.type,\r\n      index: i\r\n    }));\r\n    this.bigImages = this.images.map((img) => img.big as string);\r\n    this.descriptions = this.images.map((img) => img.description as string);\r\n    this.links = this.images.map((img) => img.url as string);\r\n    this.labels = this.images.map((img) => img.label as string);\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 = this.currentOptions.width as string;\r\n    this.height = this.currentOptions.height as string;\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  setAnimating(event: boolean) {\r\n    this.isAnimating = event;\r\n  }\r\n}\r\n","import {ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output} 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  changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class NgxGalleryArrowsComponent implements OnInit {\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() prevClick = new EventEmitter();\r\n  @Output() nextClick = new EventEmitter();\r\n\r\n  constructor() { }\r\n\r\n  ngOnInit() {\r\n  }\r\n\r\n  handlePrevClick(): void {\r\n    this.prevClick.emit();\r\n  }\r\n\r\n  handleNextClick(): void {\r\n    this.nextClick.emit();\r\n  }\r\n}\r\n","import {ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output} 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 implements OnInit/*, AfterViewInit*/ {\r\n  @Input() icon: string;\r\n  @Input() disabled = false;\r\n  @Input() titleText = '';\r\n\r\n  @Output() closeClick: EventEmitter<Event> = new EventEmitter();\r\n\r\n  constructor() {\r\n  }\r\n\r\n  ngOnInit() {\r\n  }\r\n\r\n  handleClick(event: Event) {\r\n    if (!this.disabled) {\r\n      this.closeClick.emit(event);\r\n    }\r\n\r\n    event.stopPropagation();\r\n    event.preventDefault();\r\n  }\r\n}\r\n","import {ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, 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  changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class NgxGalleryBulletsComponent implements OnInit {\r\n  @Input() count: number;\r\n  @Input() active = 0;\r\n\r\n  @Output() bulletChange = new EventEmitter();\r\n\r\n  constructor() { }\r\n\r\n  ngOnInit() {\r\n  }\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.bulletChange.emit(index);\r\n  }\r\n}\r\n","import { NgModule, Injectable } from '@angular/core';\r\nimport {NgxGalleryComponent} from './ngx-gallery.component';\r\nimport {NgxGalleryImageComponent} from './ngx-gallery-image/ngx-gallery-image.component';\r\nimport {NgxGalleryArrowsComponent} from './ngx-gallery-arrows/ngx-gallery-arrows.component';\r\nimport {NgxGalleryThumbnailsComponent} from './ngx-gallery-thumbnails/ngx-gallery-thumbnails.component';\r\nimport {NgxGalleryPreviewComponent} from './ngx-gallery-preview/ngx-gallery-preview.component';\r\nimport {NgxGalleryActionComponent} from './ngx-gallery-action/ngx-gallery-action.component';\r\nimport {NgxGalleryBulletsComponent} from './ngx-gallery-bullets/ngx-gallery-bullets.component';\r\nimport {CommonModule} from '@angular/common';\r\nimport {HAMMER_GESTURE_CONFIG, HammerGestureConfig} from '@angular/platform-browser';\r\nimport {BrowserAnimationsModule} from '@angular/platform-browser/animations';\r\n\r\n@Injectable()\r\nexport class CustomHammerConfig extends HammerGestureConfig  {\r\n  overrides = {\r\n    pinch: { enable: false },\r\n    rotate: { enable: false }\r\n  } as any;\r\n}\r\n\r\n\r\n@NgModule({\r\n  declarations: [\r\n    NgxGalleryComponent,\r\n    NgxGalleryImageComponent,\r\n    NgxGalleryArrowsComponent,\r\n    NgxGalleryThumbnailsComponent,\r\n    NgxGalleryPreviewComponent,\r\n    NgxGalleryActionComponent,\r\n    NgxGalleryBulletsComponent\r\n  ],\r\n  imports: [ CommonModule, BrowserAnimationsModule ],\r\n  exports: [NgxGalleryComponent],\r\n  providers: [\r\n    { provide: HAMMER_GESTURE_CONFIG, useClass: CustomHammerConfig }\r\n  ]\r\n})\r\nexport class NgxGalleryModule {\r\n}\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    type?: 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    type?: 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.type = obj.type;\r\n        this.label = obj.label;\r\n    }\r\n}\r\n"]}