{"version":3,"file":"ngx-image-magnifier.mjs","sources":["../../../projects/ngx-image-magnifier/src/lib/ngx-image-magnifier.service.ts","../../../projects/ngx-image-magnifier/src/lib/ngx-image-magnifier.component.ts","../../../projects/ngx-image-magnifier/src/lib/ngx-image-magnifier.component.html","../../../projects/ngx-image-magnifier/src/lib/ngx-image-magnifier.module.ts","../../../projects/ngx-image-magnifier/src/public-api.ts","../../../projects/ngx-image-magnifier/src/ngx-image-magnifier.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n    providedIn: 'root'\r\n})\r\nexport class NgxImageMagnifierService {\r\n\r\n    constructor() { }\r\n}\r\n","import { Component, ElementRef, Input, OnChanges, OnDestroy, OnInit, Renderer2, SimpleChanges, ViewChild } from '@angular/core';\r\n\r\n@Component({\r\n    selector: 'ngx-image-magnifier',\r\n    templateUrl: './ngx-image-magnifier.component.html',\r\n    styleUrls: ['./ngx-image-magnifier.component.scss']\r\n})\r\nexport class NgxImageMagnifierComponent implements OnInit, OnChanges, OnDestroy {\r\n\r\n    @ViewChild('zoomContainer', { static: true }) zoomContainer !: ElementRef<HTMLDivElement>;\r\n    @ViewChild('imageThumbnail', { static: true }) imageThumbnail !: ElementRef<HTMLImageElement>;\r\n    @ViewChild('fullSizeImage', { static: true }) fullSizeImage !: ElementRef<HTMLImageElement>;\r\n\r\n    public display: string;\r\n    public fullImageTop: number;\r\n    public fullImageLeft: number;\r\n    public magnifiedWidth: number;\r\n    public magnifiedHeight: number;\r\n    public lensTop: number;\r\n    public lensLeft: number;\r\n    public lensBorderRadius = 0;\r\n\r\n    public thumbImage: string;\r\n    public fullImage: string;\r\n    public _width: number;\r\n    public _height: number;\r\n    public fullWidth: number;\r\n    public fullHeight: number;\r\n    public _lensWidth = 100;\r\n    public _lensHeight = 100;\r\n    private magnification = 1;\r\n    private minZoomRatio = 1;\r\n    private maxZoomRatio = 2;\r\n    private scrollStepSize = 0.1;\r\n    \r\n    private xRatio: number;\r\n    private yRatio: number;\r\n    private isReady = false;\r\n    private thumbImageLoaded = false;\r\n    private fullImageLoaded = false;\r\n\r\n    private latestMouseLeft: number;\r\n    private latestMouseTop: number;\r\n\r\n    private eventListeners: (() => void)[] = [];\r\n\r\n    constructor(private renderer: Renderer2) {\r\n    }\r\n\r\n    @Input()\r\n    set image(thumbImage: string) {\r\n        if (thumbImage == null) { return; }\r\n        this.thumbImageLoaded = false;\r\n        this.isReady = false;\r\n        this.thumbImage = thumbImage;\r\n        this.fullImage = this.thumbImage;\r\n    }\r\n\r\n    @Input()\r\n    set width(width: number) {\r\n        this._width = width;\r\n    }\r\n    @Input()\r\n    set lensWidth(width: number) {\r\n        this._lensWidth = Number(width) || this._lensWidth;\r\n        this._lensHeight = this._lensWidth;\r\n    }\r\n    ngOnInit(): void {\r\n        this.setUpEventListeners();\r\n    }\r\n\r\n    ngOnChanges(changes: SimpleChanges): void {\r\n        if (changes.image && changes.image.currentValue) {\r\n            this.lensBorderRadius = this._lensWidth / 2;\r\n        }\r\n    }\r\n\r\n    ngOnDestroy(): void {\r\n        this.eventListeners.forEach((destroyFn) => destroyFn());\r\n    }\r\n\r\n    /**\r\n     * Template helper methods\r\n     */\r\n    onThumbImageLoaded(): void {\r\n        this.thumbImageLoaded = true;\r\n        this.checkImagesLoaded();\r\n    }\r\n\r\n    onFullImageLoaded(): void {\r\n        this.fullImageLoaded = true;\r\n        this.checkImagesLoaded();\r\n    }\r\n\r\n    private setUpEventListeners(): void {\r\n        this.eventListeners.push(\r\n            this.renderer.listen(this.zoomContainer.nativeElement, 'mouseenter', (event) => this.hoverMouseEnter(event))\r\n        );\r\n        this.eventListeners.push(\r\n            this.renderer.listen(this.zoomContainer.nativeElement, 'mouseleave', () => this.hoverMouseLeave())\r\n        );\r\n        this.eventListeners.push(\r\n            this.renderer.listen(this.zoomContainer.nativeElement, 'mousemove', (event) => this.hoverMouseMove(event))\r\n        );\r\n        this.eventListeners.push(\r\n            this.renderer.listen(this.zoomContainer.nativeElement, 'mousewheel', (event) => this.onMouseWheel(event))\r\n        );\r\n    }\r\n\r\n    private checkImagesLoaded(): void {\r\n        this.calculateRatioAndOffset();\r\n        if (this.thumbImageLoaded && this.fullImageLoaded) {\r\n            this.calculateImageAndLensPosition();\r\n            this.isReady = true;\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Zoom position setters\r\n     */\r\n    private setZoomPosition(left: number, top: number): void {\r\n        this.latestMouseLeft = Number(left) || this.latestMouseLeft;\r\n        this.latestMouseTop = Number(top) || this.latestMouseTop;\r\n    }\r\n\r\n    private onMouseWheel(event: any) {\r\n        // Don't eat events if zooming isn't active\r\n        if (!this.isReady) {\r\n            return;\r\n        }\r\n\r\n        const direction = Math.max(Math.min((event.wheelDelta || -event.detail), 1), -1);\r\n        if (direction > 0) {\r\n            // up\r\n            this.magnification = Math.min(this.magnification + this.scrollStepSize, this.maxZoomRatio);\r\n        } else {\r\n            // down\r\n            this.magnification = Math.max(this.magnification - this.scrollStepSize, this.minZoomRatio);\r\n        }\r\n        this.calculateRatio();\r\n        this.calculateZoomPosition(event);\r\n\r\n        if (event.preventDefault) {\r\n            event.preventDefault(); // Chrome & FF\r\n        }\r\n    }\r\n\r\n    private hoverMouseEnter(event: MouseEvent): void {\r\n        this.zoomOn(event);\r\n    }\r\n\r\n    private hoverMouseLeave(): void {\r\n        this.zoomOff();\r\n    }\r\n\r\n    private hoverMouseMove(event: MouseEvent): void {\r\n        this.calculateZoomPosition(event);\r\n    }\r\n\r\n    /**\r\n     * Private helper methods\r\n     */\r\n    private zoomOn(event: MouseEvent): void {\r\n        if (this.isReady) {\r\n            if (this.fullWidth > this._width) {                \r\n                this.maxZoomRatio = this.fullWidth / this._width;\r\n                this.scrollStepSize = (this.maxZoomRatio - 1) / 10;\r\n                this.magnification = this.maxZoomRatio;\r\n                this.calculateRatioAndOffset();\r\n                this.display = 'block';\r\n                this.calculateZoomPosition(event);\r\n            }\r\n        }\r\n    }\r\n\r\n    private zoomOff(): void {\r\n        this.display = 'none';\r\n    }\r\n    private calculateZoomPosition(event: MouseEvent): void {\r\n        const newLeft = Math.max(Math.min(event.offsetX, this._width), 0);\r\n        const newTop = Math.max(Math.min(event.offsetY, this._height), 0);\r\n        this.setZoomPosition(newLeft, newTop);\r\n        this.calculateImageAndLensPosition();\r\n    }\r\n    private calculateImageAndLensPosition(): void {\r\n        let lensLeftMod = 0;\r\n        let lensTopMod = 0;\r\n        lensLeftMod = this.lensLeft = this.latestMouseLeft - this._lensWidth / 2;\r\n        lensTopMod = this.lensTop = this.latestMouseTop - this._lensHeight / 2;\r\n        this.fullImageLeft = (this.latestMouseLeft * -this.xRatio) - lensLeftMod;\r\n        this.fullImageTop = (this.latestMouseTop * -this.yRatio) - lensTopMod;\r\n    }\r\n    private calculateRatioAndOffset(): void {\r\n        this._height = this._width * this.imageThumbnail.nativeElement.height / this.imageThumbnail.nativeElement.width;\r\n        if (this.fullImageLoaded) {\r\n            this.fullWidth = this.fullSizeImage.nativeElement.naturalWidth;\r\n            this.fullHeight = this.fullSizeImage.nativeElement.naturalHeight;\r\n            this.calculateRatio();\r\n        }\r\n    }\r\n    private calculateRatio(): void {\r\n        this.magnifiedWidth = this._width * this.magnification;\r\n        this.magnifiedHeight = this._height * this.magnification;\r\n        this.xRatio = (this.magnifiedWidth - this._width) / this._width;\r\n        this.yRatio = (this.magnifiedHeight - this._height) / this._height;\r\n    }\r\n}\r\n","<div #zoomContainer class=\"ngxImageZoomContainer\">\r\n\r\n    <img #imageThumbnail class=\"ngxImageZoomThumbnail\" [src]=\"thumbImage\" (load)=\"onThumbImageLoaded()\"\r\n        [style.width.px]=\"this._width\" />\r\n\r\n    <div class=\"ngxImageZoomFullContainer ngxImageZoomLensEnabled\" [style.display]=\"this.display\"\r\n        [style.top.px]=\"this.lensTop\" [style.left.px]=\"this.lensLeft\" [style.width.px]=\"this._lensWidth\"\r\n        [style.height.px]=\"this._lensHeight\" [style.border-radius.px]=\"this.lensBorderRadius\">\r\n        <img #fullSizeImage class=\"ngxImageZoomFull\" [src]=\"fullImage\" (load)=\"onFullImageLoaded()\"\r\n            [style.display]=\"this.display\" [style.top.px]=\"this.fullImageTop\" [style.left.px]=\"this.fullImageLeft\"\r\n            [style.width.px]=\"this.magnifiedWidth\" [style.height.px]=\"this.magnifiedHeight\" />\r\n    </div>\r\n</div>","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { NgxImageMagnifierComponent } from './ngx-image-magnifier.component';\r\n\r\n@NgModule({\r\n    declarations: [\r\n        NgxImageMagnifierComponent\r\n    ],\r\n    imports: [\r\n        CommonModule\r\n    ],\r\n    exports: [\r\n        NgxImageMagnifierComponent\r\n    ]\r\n})\r\nexport class NgxImageMagnifierModule { }\r\n","/*\r\n * Public API Surface of ngx-image-magnifier\r\n */\r\n\r\nexport * from './lib/ngx-image-magnifier.service';\r\nexport * from './lib/ngx-image-magnifier.component';\r\nexport * from './lib/ngx-image-magnifier.module';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}