{"version":3,"file":"ngx-image-viewer-3.mjs","sources":["../../../projects/ngx-image-viewer-17/src/lib/image-viewer/fullscreen.directive.ts","../../../projects/ngx-image-viewer-17/src/lib/image-viewer/image-viewer-config.model.ts","../../../projects/ngx-image-viewer-17/src/lib/image-viewer/image-viewer.component.ts","../../../projects/ngx-image-viewer-17/src/lib/image-viewer/image-viewer.component.html","../../../projects/ngx-image-viewer-17/src/lib/image-viewer/image-viewer.module.ts","../../../projects/ngx-image-viewer-17/src/public-api.ts","../../../projects/ngx-image-viewer-17/src/ngx-image-viewer-3.ts"],"sourcesContent":["import { Directive, HostListener, OnChanges, Input, ElementRef } from '@angular/core';\r\nimport * as screenfull from 'screenfull';\r\n\r\n\r\n\r\n@Directive({\r\n    selector: '[ngxToggleFullscreen]'\r\n})\r\nexport class ToggleFullscreenDirective implements OnChanges {\r\n\r\n    @Input('ngxToggleFullscreen')\r\n    isFullscreen: boolean=false;\r\n\r\n    constructor(private el: ElementRef) { }\r\n\r\n    ngOnChanges() {\r\n        if (this.isFullscreen && screenfull.default.isEnabled) {\r\n            screenfull.default.request(this.el.nativeElement);\r\n        } else if (screenfull.default.isEnabled) {\r\n            screenfull.default.exit();\r\n        }\r\n    }\r\n\r\n}\r\n","export interface ImageViewerConfig {\r\n    btnClass?: string;\r\n    zoomFactor?: number;\r\n    containerBackgroundColor?: string;\r\n    wheelZoom?: boolean;\r\n    allowFullscreen?: boolean;\r\n    allowKeyboardNavigation?: boolean;\r\n\r\n    btnShow?: {\r\n      zoomIn?: boolean;\r\n      zoomOut?: boolean;\r\n      rotateClockwise?: boolean;\r\n      rotateCounterClockwise?: boolean;\r\n      next?: boolean;\r\n      prev?: boolean;\r\n    };\r\n\r\n    btnIcons?: {\r\n        zoomIn?: string;\r\n        zoomOut?: string;\r\n        rotateClockwise?: string;\r\n        rotateCounterClockwise?: string;\r\n        next?: string;\r\n        prev?: string;\r\n        fullscreen?: string;\r\n    };\r\n\r\n    customBtns?: Array<\r\n      {\r\n        name: string;\r\n        icon: string;\r\n      }\r\n    >;\r\n}\r\n\r\nexport class CustomEvent {\r\n  name: string;\r\n  imageIndex: number;\r\n\r\n  constructor(name:string, imageIndex:number) {\r\n    this.name = name;\r\n    this.imageIndex = imageIndex;\r\n  }\r\n}\r\n","\r\nimport { Component, Input, Output, OnInit,EventEmitter, Optional, Inject, HostListener } from '@angular/core';\r\n\r\nimport { ImageViewerConfig, CustomEvent } from './image-viewer-config.model';\r\n\r\nconst DEFAULT_CONFIG: ImageViewerConfig = {\r\n  btnClass: 'default',\r\n  zoomFactor: 0.1,\r\n  containerBackgroundColor: '#ccc',\r\n  wheelZoom: false,\r\n  allowFullscreen: true,\r\n  allowKeyboardNavigation: true,\r\n  btnShow: {\r\n    zoomIn: true,\r\n    zoomOut: true,\r\n    rotateClockwise: true,\r\n    rotateCounterClockwise: true,\r\n    next: true,\r\n    prev: true\r\n  },\r\n  btnIcons: {\r\n    zoomIn: 'fa fa-plus',\r\n    zoomOut: 'fa fa-minus',\r\n    rotateClockwise: 'fa fa-repeat',\r\n    rotateCounterClockwise: 'fa fa-undo',\r\n    next: 'fa fa-arrow-right',\r\n    prev: 'fa fa-arrow-left',\r\n    fullscreen: 'fa fa-arrows-alt',\r\n  }\r\n};\r\n\r\n@Component({  \r\n  selector: 'ngx-image-viewer',\r\n  templateUrl: './image-viewer.component.html',\r\n  styleUrls: ['./image-viewer.component.scss']\r\n})\r\nexport class ImageViewerComponent implements OnInit {\r\n\r\n  @Input()src: string[];\r\n\r\n  @Input()index = 0;\r\n\r\n  @Input()config: ImageViewerConfig={} as ImageViewerConfig;\r\n\r\n  @Output()\r\n  indexChange: EventEmitter<number> = new EventEmitter();\r\n\r\n  @Output()\r\n  configChange: EventEmitter<ImageViewerConfig> = new EventEmitter();\r\n\r\n  @Output()\r\n  customEvent: EventEmitter<CustomEvent> = new EventEmitter();\r\n\r\n  public style = { transform: '', msTransform: '', oTransform: '', webkitTransform: '' };\r\n  public fullscreen = false;\r\n  public loading = true;\r\n  private scale = 1;\r\n  private rotation = 0;\r\n  private translateX = 0;\r\n  private translateY = 0;\r\n  private prevX!: number;\r\n  private prevY!: number;\r\n  private hovered = false;\r\n\r\n  constructor( @Optional() @Inject('config') public moduleConfig: ImageViewerConfig) { }\r\n\r\n  ngOnInit() {\r\n    const merged = this.mergeConfig(DEFAULT_CONFIG, this.moduleConfig);\r\n    this.config = this.mergeConfig(merged, this.config);\r\n    this.triggerConfigBinding();\r\n\r\n    this.config.wheelZoom=true;\r\n  }\r\n\r\n  @HostListener('window:keyup.ArrowRight',  ['$event'])\r\n  nextImage(event:any) {\r\n    if (this.canNavigate(event) && this.index < this.src.length - 1) {\r\n      this.loading = true;\r\n      this.index++;\r\n      this.triggerIndexBinding();\r\n      this.reset();\r\n    }\r\n  }\r\n\r\n  @HostListener('window:keyup.ArrowLeft', ['$event'])\r\n  prevImage(event:any) {\r\n    if (this.canNavigate(event) && this.index > 0) {\r\n      this.loading = true;\r\n      this.index--;\r\n      this.triggerIndexBinding();\r\n      this.reset();\r\n    }\r\n  }\r\n\r\n  zoomIn() {        \r\n    if(this.config.zoomFactor)\r\n      this.scale *= (1 + this.config.zoomFactor);\r\n    this.updateStyle();\r\n  }\r\n\r\n  zoomOut() {\r\n    if(this.config.zoomFactor)\r\n      if (this.scale > this.config.zoomFactor) \r\n      {\r\n        this.scale /= (1 + this.config.zoomFactor);\r\n      }\r\n    this.updateStyle();\r\n  }\r\n\r\n  scrollZoom(evt:any):boolean \r\n  {    \r\n    let sonuc:boolean=true;\r\n\r\n    if (this.config.wheelZoom) {\r\n      evt.deltaY > 0 ? this.zoomOut() : this.zoomIn();\r\n        sonuc = false;\r\n    }\r\n\r\n    return sonuc;\r\n  }\r\n\r\n  rotateClockwise() {\r\n    this.rotation += 90;\r\n    this.updateStyle();\r\n  }\r\n\r\n  rotateCounterClockwise() {\r\n    this.rotation -= 90;\r\n    this.updateStyle();\r\n  }\r\n\r\n  onLoad() {\r\n    this.loading = false;\r\n  }\r\n\r\n  onLoadStart() {\r\n    this.loading = true;\r\n  }\r\n\r\n  onDragOver(evt:any) {\r\n    \r\n    this.translateX += (evt.clientX - this.prevX);\r\n    this.translateY += (evt.clientY - this.prevY);\r\n    this.prevX = evt.clientX;\r\n    this.prevY = evt.clientY;\r\n    this.updateStyle();\r\n  }\r\n\r\n  onDragStart(evt:any) {\r\n    if (evt.dataTransfer && evt.dataTransfer.setDragImage) {\r\n      evt.dataTransfer.setDragImage(evt.target.nextElementSibling, 0, 0);\r\n    }\r\n    this.prevX = evt.clientX;\r\n    this.prevY = evt.clientY;\r\n  }\r\n\r\n  toggleFullscreen() {\r\n    this.fullscreen = !this.fullscreen;\r\n    if (!this.fullscreen) {\r\n      this.reset();\r\n    }\r\n  }\r\n\r\n  triggerIndexBinding() {\r\n    this.indexChange.emit(this.index);\r\n  }\r\n\r\n  triggerConfigBinding() {\r\n    this.configChange.next(this.config);\r\n  }\r\n\r\n  fireCustomEvent(name:any, imageIndex:any) {\r\n    this.customEvent.emit(new CustomEvent(name, imageIndex));\r\n  }\r\n\r\n  reset() {\r\n    this.scale = 1;\r\n    this.rotation = 0;\r\n    this.translateX = 0;\r\n    this.translateY = 0;\r\n    this.updateStyle();\r\n  }\r\n\r\n  @HostListener('mouseover')\r\n  private onMouseOver() {\r\n    this.hovered = true;\r\n  }\r\n\r\n  @HostListener('mouseleave')\r\n  private onMouseLeave() {\r\n    this.hovered = false;\r\n  }\r\n\r\n  private canNavigate(event: any) {\r\n    return event == null ||  (this.config.allowKeyboardNavigation && this.hovered);\r\n  }\r\n\r\n  private updateStyle() {\r\n    this.style.transform = `translate(${this.translateX}px, ${this.translateY}px) rotate(${this.rotation}deg) scale(${this.scale})`;\r\n    this.style.msTransform = this.style.transform;\r\n    this.style.webkitTransform = this.style.transform;\r\n    this.style.oTransform = this.style.transform;\r\n  }\r\n\r\n  private mergeConfig(defaultValues: ImageViewerConfig, overrideValues: ImageViewerConfig): ImageViewerConfig {\r\n    let result: ImageViewerConfig = { ...defaultValues };\r\n    if (overrideValues) {\r\n      result = { ...defaultValues, ...overrideValues };\r\n\r\n      if (overrideValues.btnIcons) {\r\n        result.btnIcons = { ...defaultValues.btnIcons, ...overrideValues.btnIcons };\r\n      }\r\n    }\r\n    return result;\r\n  }\r\n\r\n}\r\n","<div [ngxToggleFullscreen]=\"fullscreen\" class=\"img-container\" [style.backgroundColor]=\"config.containerBackgroundColor\"\r\n     (wheel)=\"scrollZoom($event)\" (dragover)=\"onDragOver($event)\">\r\n  <img [src]=\"src[index]\" [ngStyle]=\"style\" alt=\"Image not found...\" (dragstart)=\"onDragStart($event)\" (load)=\"onLoad()\" (loadstart)=\"onLoadStart()\"/>\r\n  <!-- Div below will be used to hide the 'ghost' image when dragging -->\r\n  <div></div>\r\n  <div class=\"spinner-container\" *ngIf=\"loading\">\r\n    <div class=\"spinner\"></div>\r\n  </div>\r\n\r\n  <button type=\"button\" [class]=\"config.btnClass\" *ngIf=\"config.btnShow?.rotateCounterClockwise\" (click)=\"rotateCounterClockwise()\">\r\n    <span [class]=\"config.btnIcons?.rotateCounterClockwise\"></span>\r\n  </button>\r\n  <button type=\"button\" [class]=\"config.btnClass\" *ngIf=\"config.btnShow?.rotateClockwise\" (click)=\"rotateClockwise()\">\r\n    <span [class]=\"config.btnIcons?.rotateClockwise\"></span>\r\n  </button>\r\n\r\n  <button type=\"button\" [class]=\"config.btnClass\" *ngIf=\"config.btnShow?.zoomOut\" (click)=\"zoomOut()\">\r\n    <span [class]=\"config.btnIcons?.zoomOut\"></span>\r\n  </button>\r\n  <button type=\"button\" [class]=\"config.btnClass\" *ngIf=\"config.btnShow?.zoomIn\" (click)=\"zoomIn()\">\r\n    <span [class]=\"config.btnIcons?.zoomIn\"></span>\r\n  </button>\r\n\r\n  <button type=\"button\" [class]=\"config.btnClass\" *ngFor=\"let cBtn of config.customBtns\" (click)=\"fireCustomEvent(cBtn.name, index)\">\r\n    <span [class]=\"cBtn.icon\"></span>\r\n  </button>\r\n\r\n  <button type=\"button\" id=\"ngx-fs-btn\" [class]=\"config.btnClass\" (click)=\"toggleFullscreen()\" *ngIf=\"config.allowFullscreen\">\r\n    <span [class]=\"config.btnIcons?.fullscreen\"></span>\r\n  </button>\r\n\r\n  <div class=\"nav-button-container\" *ngIf=\"src.length > 1\">\r\n    <button type=\"button\" [class]=\"config.btnClass\" (click)=\"prevImage($event)\" [disabled]=\"index === 0\">\r\n      <span [class]=\"config.btnIcons?.prev\"></span>\r\n    </button>\r\n    <button type=\"button\" [class]=\"config.btnClass\" (click)=\"nextImage($event)\" [disabled]=\"index === src.length - 1\">\r\n      <span [class]=\"config.btnIcons?.next\"></span>\r\n    </button>\r\n  </div>\r\n</div>\r\n","import { NgModule, ModuleWithProviders } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ImageViewerComponent } from './image-viewer.component';\r\nimport { ToggleFullscreenDirective } from './fullscreen.directive';\r\nimport { ImageViewerConfig } from './image-viewer-config.model';\r\n@NgModule({\r\n  imports: [\r\n    CommonModule,    \r\n  ],\r\n  declarations: [\r\n    ImageViewerComponent,\r\n    ToggleFullscreenDirective\r\n  ],\r\n  exports: [\r\n    ImageViewerComponent,\r\n    ToggleFullscreenDirective\r\n  ]\r\n})\r\nexport class ImageViewerModule {\r\n  constructor ()\r\n  {\r\n    \r\n  }\r\n  static forRoot(config?: ImageViewerConfig): ModuleWithProviders<ImageViewerModule> {\r\n    return {\r\n      ngModule: ImageViewerModule,\r\n      providers: [{provide: 'config', useValue: config}]\r\n    };\r\n  }\r\n}\r\n","/*\r\n * Public API Surface of ngx-image-viewer-17\r\n */\r\n\r\nexport * from './lib/image-viewer/fullscreen.directive';\r\nexport * from './lib/image-viewer/image-viewer.component';\r\nexport * from './lib/image-viewer/image-viewer.module';\r\nexport * from './lib/image-viewer/image-viewer-config.model';\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2.ToggleFullscreenDirective"],"mappings":"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"}