@clarivate/angular-image-viewer
Version:
This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 13.3.0.
1 lines • 27.2 kB
Source Map (JSON)
{"version":3,"file":"clarivate-angular-image-viewer.mjs","sources":["../../../projects/angular-image-viewer/src/lib/angular-image-viewer.service.ts","../../../projects/angular-image-viewer/src/lib/models/custom-image-event-model.ts","../../../projects/angular-image-viewer/src/lib/directives/full-screen.directive.ts","../../../projects/angular-image-viewer/src/lib/angular-image-viewer.component.ts","../../../projects/angular-image-viewer/src/lib/angular-image-viewer.component.html","../../../projects/angular-image-viewer/src/lib/angular-image-viewer.module.ts","../../../projects/angular-image-viewer/src/public-api.ts","../../../projects/angular-image-viewer/src/clarivate-angular-image-viewer.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AngularImageViewerService {\r\n\r\n constructor() { }\r\n}\r\n","export class CustomImageEvent {\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","import { Directive, Input, ElementRef, OnChanges, OnInit, SimpleChanges } from '@angular/core';\r\n// import * as screenfull from 'screenfull';\r\n\r\n@Directive({\r\n selector: '[appScreenfull]'\r\n})\r\nexport class FullScreenDirective implements OnChanges {\r\n\r\n @Input('appScreenfull') fullscreenState!: boolean;\r\n\r\n constructor(private el: ElementRef) { }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n // tslint:disable-next-line: no-string-literal\r\n if (!changes['fullscreenState'].isFirstChange()) {\r\n\r\n if (this.fullscreenState) {\r\n const element: any = this.el.nativeElement;\r\n\r\n // tslint:disable-next-line: max-line-length\r\n const requestMethod = element.requestFullscreen || element.webkitRequestFullScreen || element.mozRequestFullScreen || element.msRequestFullScreen;\r\n\r\n if (requestMethod) { // Native full screen.\r\n requestMethod.call(element);\r\n } else {\r\n console.log('FullScreen Request Method Not Supported on this browser.');\r\n }\r\n } else {\r\n const element: any = document;\r\n\r\n // tslint:disable-next-line: max-line-length\r\n const requestMethod = element.cancelFullscreen || element.webkitExitFullscreen || element.webkitCancelFullScreen || element.mozCancelFullScreen || element.msExitFullScreen;\r\n\r\n if (requestMethod) { // Native Cancel full screen.\r\n requestMethod.call(element);\r\n } else {\r\n console.error('Angular Image Viewer: FullScreen Cancel Request Method Not Supported on this browser.');\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","import { Component, OnInit, AfterContentChecked, HostListener, Optional, Inject, Input, Output,\r\n EventEmitter, OnChanges, SimpleChanges, ViewChild } from '@angular/core';\r\nimport { ImageViewerConfig } from './models/image-viewer-config.model';\r\nimport { CustomImageEvent } from './models/custom-image-event-model';\r\nimport { CdkDrag } from '@angular/cdk/drag-drop';\r\n\r\nconst DEFAULT_CONFIG: ImageViewerConfig = {\r\n btnClass: 'default',\r\n zoomFactor: 0.1,\r\n containerBackgroundColor: '#e4dede',\r\n primaryColor: '',\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-refresh',\r\n rotateCounterClockwise: 'fa fa-undo',\r\n next: 'fa fa-chevron-right',\r\n prev: 'fa fa-chevron-left',\r\n fullscreen: 'fa fa-arrows-alt',\r\n },\r\n isZoomPersistent: false\r\n};\r\n\r\n@Component({\r\n // tslint:disable-next-line:component-selector\r\n selector: 'angular-image-viewer',\r\n templateUrl: './angular-image-viewer.component.html',\r\n styleUrls: ['./angular-image-viewer.component.scss']\r\n})\r\nexport class AngularImageViewerComponent implements OnInit, OnChanges, AfterContentChecked {\r\n\r\n @ViewChild(CdkDrag, { static: true }) cdkDrag!: CdkDrag;\r\n\r\n @Input()\r\n src: string[] = [];\r\n\r\n @Input()\r\n config!: ImageViewerConfig;\r\n\r\n @Input()\r\n screenHeightOccupied = 0; // In Px\r\n\r\n @Input()\r\n index = 0;\r\n\r\n @Input()\r\n imageName!: string;\r\n\r\n @Input()\r\n footerTexts = [\r\n 'Image',\r\n 'of',\r\n 'View previous or next image',\r\n 'using < > on the keyboard'\r\n ];\r\n\r\n @Input()\r\n scaleInput = 1;\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 customImageEvent: EventEmitter<CustomImageEvent> = new EventEmitter();\r\n\r\n styleHeight = '98vh';\r\n\r\n public style = { transform: '', msTransform: '', oTransform: '', webkitTransform: '' };\r\n public fullscreen = false;\r\n public loading = true;\r\n public isDragOn = false;\r\n private scale = 1;\r\n private rotation = 0;\r\n private hovered = false;\r\n\r\n constructor(@Optional() @Inject('config') public moduleConfig: ImageViewerConfig) { }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes['screenHeightOccupied']) {\r\n this.styleHeight = 'calc(98vh - ' + this.screenHeightOccupied + 'px)';\r\n } else if (changes['index']) {\r\n this.reset();\r\n }\r\n\r\n if(changes['scaleInput'] && this.config['isZoomPersistent']) {\r\n this.scale = changes['scaleInput'].currentValue;\r\n this.updateStyle();\r\n }\r\n }\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\r\n ngAfterContentChecked(): void {\r\n if (document.querySelectorAll('.drag-element')[0]) {\r\n let dragElement = document.querySelectorAll('.drag-element')[0];\r\n let imgElem = dragElement.querySelector('img');\r\n (imgElem as HTMLElement).style.transform = `rotate(${this.rotation}deg) scale(${this.scale})`;\r\n }\r\n }\r\n\r\n @HostListener('window:keyup.ArrowRight', ['$event'])\r\n nextImage(event: MouseEvent) {\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.fireCustomEvent('next', this.index);\r\n this.reset();\r\n }\r\n }\r\n\r\n @HostListener('window:keyup.ArrowLeft', ['$event'])\r\n prevImage(event: MouseEvent) {\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.fireCustomEvent('prev', this.index);\r\n this.reset();\r\n }\r\n }\r\n\r\n zoomIn() {\r\n this.scale *= (1 + this.unwrap(this.config.zoomFactor));\r\n this.fireCustomEvent('zoomIn', this.scale);\r\n this.updateStyle();\r\n }\r\n\r\n zoomOut() {\r\n if (this.scale > this.unwrap(this.config.zoomFactor)) {\r\n this.scale /= (1 + this.unwrap(this.config.zoomFactor));\r\n }\r\n this.fireCustomEvent('zoomOut', this.scale);\r\n this.updateStyle();\r\n }\r\n\r\n scrollZoom(evt: WheelEvent) {\r\n if (this.config.wheelZoom) {\r\n evt.deltaY > 0 ? this.zoomOut() : this.zoomIn();\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n rotateClockwise() {\r\n this.rotation += 90;\r\n this.fireCustomEvent('rotateClockwise', this.rotation);\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 imageNotFound() {\r\n }\r\n\r\n onDragStart(evt: any) {\r\n if (evt.source._dragRef._initialTransform && evt.source._dragRef._initialTransform.length > 0) {\r\n const myTranslate = evt.source._dragRef._initialTransform.split(' rotate')[0];\r\n const myRotate = this.style.transform.split(' rotate')[1];\r\n evt.source._dragRef._initialTransform = `${myTranslate} rotate${myRotate}`;\r\n } else {\r\n evt.source._dragRef._initialTransform = this.style.transform;\r\n }\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: string, imageIndex: number) {\r\n this.customImageEvent.emit(new CustomImageEvent(name, imageIndex));\r\n }\r\n\r\n reset() {\r\n if(!this.config.isZoomPersistent) {\r\n this.scale = 1;\r\n this.rotation = 0;\r\n this.updateStyle();\r\n this.cdkDrag.reset();\r\n }\r\n }\r\n\r\n @HostListener('mouseover')\r\n onMouseOver() {\r\n this.hovered = true;\r\n }\r\n\r\n @HostListener('mouseleave')\r\n onMouseLeave() {\r\n this.hovered = false;\r\n }\r\n\r\n private canNavigate(event: any) {\r\n if (event.type === 'keyup') {\r\n return (this.config.allowKeyboardNavigation && this.hovered);\r\n } else if (event.type === 'click') {\r\n return this.hovered;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private updateStyle() {\r\n this.style.transform = `rotate(${this.rotation}deg) scale(${this.scale})`;\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 private unwrap = (n: number|undefined): number => n?n:0;\r\n}\r\n","<div [appScreenfull]=\"fullscreen\" class=\"img-container\" [style.backgroundColor]=\"config.containerBackgroundColor\"\r\n (wheel)=\"scrollZoom($event)\">\r\n <div class=\"image-name\" *ngIf=\"imageName\">\r\n <span>{{imageName}}</span>\r\n </div>\r\n\r\n <div cdkDrag class=\"drag-element\">\r\n <img [src]=\"src[index]\" [ngStyle]=\"style\" alt=\"\"\r\n (cdkDragStarted)=\"onDragStart($event)\"\r\n (load)=\"onLoad()\" (loadstart)=\"onLoadStart()\" (error)=\"imageNotFound()\" />\r\n </div>\r\n\r\n <div class=\"spinner-container\" *ngIf=\"loading\">\r\n <div class=\"spinner\"></div>\r\n </div>\r\n\r\n <div class=\"button-container\">\r\n <button type=\"button\" id=\"ngx-fs-btn\" [class]=\"config.btnClass\" (click)=\"toggleFullscreen()\"\r\n [style.color]=\"config.primaryColor\" *ngIf=\"config.allowFullscreen\">\r\n <span [class]=\"config.btnIcons?.fullscreen\"></span>\r\n </button>\r\n\r\n <div class=\"button-container-bottom\">\r\n <button type=\"button\" [class]=\"config.btnClass\" *ngFor=\"let cBtn of config.customBtns\"\r\n [style.color]=\"config.primaryColor\" (click)=\"fireCustomEvent(cBtn.name, index)\">\r\n <span [class]=\"cBtn.icon\"></span>\r\n </button>\r\n\r\n <button type=\"button\" [class]=\"config.btnClass\" *ngIf=\"config.btnShow?.rotateCounterClockwise\"\r\n [style.color]=\"config.primaryColor\" (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\"\r\n [style.color]=\"config.primaryColor\" (click)=\"rotateClockwise()\">\r\n <span [class]=\"config.btnIcons?.rotateClockwise\"></span>\r\n </button>\r\n\r\n <div class=\"button-zoom-in-out-container\">\r\n <button type=\"button\" [class]=\"config.btnClass\" *ngIf=\"config.btnShow?.zoomIn\"\r\n [style.color]=\"config.primaryColor\" (click)=\"zoomIn()\">\r\n <span [class]=\"config.btnIcons?.zoomIn\"></span>\r\n </button>\r\n <button type=\"button\" [class]=\"config.btnClass\" *ngIf=\"config.btnShow?.zoomOut\"\r\n [style.color]=\"config.primaryColor\" (click)=\"zoomOut()\">\r\n <span [class]=\"config.btnIcons?.zoomOut\"></span>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"nav-button-container\" *ngIf=\"src.length > 1\">\r\n <button type=\"button\" #prevImg [class]=\"config.btnClass\" (click)=\"prevImage($event); prevImg.blur()\"\r\n [style.color]=\"config.primaryColor\" [disabled]=\"index === 0\">\r\n <span [class]=\"config.btnIcons?.prev\"></span>\r\n </button>\r\n <button type=\"button\" #nextImg [class]=\"config.btnClass\" (click)=\"nextImage($event); nextImg.blur()\"\r\n [style.color]=\"config.primaryColor\" [disabled]=\"index === src.length - 1\">\r\n <span [class]=\"config.btnIcons?.next\"></span>\r\n </button>\r\n </div>\r\n <div class=\"footer-section\">\r\n <div class=\"image-txt-count-left-align\"><span>{{footerTexts[0]}} {{index + 1}} {{footerTexts[1]}} {{src.length}}</span></div>\r\n <div class=\"footer-txt-right-align\">\r\n <span class=\"footer-txt-right-align-title\" [style.color]=\"config.primaryColor\">{{footerTexts[2]}}</span>\r\n <span class=\"footer-txt-right-align-note\">{{footerTexts[3]}}</span>\r\n </div>\r\n </div>\r\n</div>\r\n","import { DragDropModule } from '@angular/cdk/drag-drop';\r\nimport { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { AngularImageViewerComponent } from './angular-image-viewer.component';\r\nimport { FullScreenDirective } from './directives/full-screen.directive';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n AngularImageViewerComponent, FullScreenDirective\r\n ],\r\n imports: [\r\n CommonModule,\r\n DragDropModule\r\n ],\r\n exports: [\r\n AngularImageViewerComponent, FullScreenDirective, DragDropModule\r\n ]\r\n})\r\nexport class AngularImageViewerModule { }\r\n","/*\r\n * Public API Surface of angular-image-viewer\r\n */\r\n\r\nexport * from './lib/angular-image-viewer.service';\r\nexport * from './lib/angular-image-viewer.component';\r\nexport * from './lib/angular-image-viewer.module';\r\nexport { ImageViewerConfig} from './lib/models/image-viewer-config.model';\r\nexport { CustomImageEvent } from './lib/models/custom-image-event-model';\r\nexport { FullScreenDirective } from './lib/directives/full-screen.directive';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i3.FullScreenDirective"],"mappings":"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"}