{"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    standalone: false\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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"}