ngx-image-viewer-3
Version:
This package is an updated version of the ngx-image-viewer package for Angular17.
1 lines • 20.8 kB
Source Map (JSON)
{"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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"}