-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathngx-lightbox.mjs.map
1 lines (1 loc) · 73.5 KB
/
ngx-lightbox.mjs.map
1
{"version":3,"file":"ngx-lightbox.mjs","sources":["../../../projects/ngx-lightbox/src/lib/lightbox-event.service.ts","../../../projects/ngx-lightbox/src/lib/lightbox.component.ts","../../../projects/ngx-lightbox/src/lib/lightbox.component.html","../../../projects/ngx-lightbox/src/lib/lightbox-overlay.component.ts","../../../projects/ngx-lightbox/src/lib/lightbox-config.service.ts","../../../projects/ngx-lightbox/src/lib/lightbox.service.ts","../../../projects/ngx-lightbox/src/lib/lightbox.module.ts","../../../projects/ngx-lightbox/src/ngx-lightbox.ts"],"sourcesContent":["import { Observable, Subject } from 'rxjs';\r\n\r\nimport { Injectable} from '@angular/core';\r\n\r\nexport interface IEvent {\r\n id: number;\r\n data?: any;\r\n}\r\n\r\nexport interface IAlbum {\r\n src: string;\r\n caption?: string;\r\n thumb: string;\r\n iframe?: boolean;\r\n}\r\n\r\nexport const LIGHTBOX_EVENT = {\r\n CHANGE_PAGE: 1,\r\n CLOSE: 2,\r\n OPEN: 3,\r\n ZOOM_IN: 4,\r\n ZOOM_OUT: 5,\r\n ROTATE_LEFT: 6,\r\n ROTATE_RIGHT: 7,\r\n FILE_NOT_FOUND: 8\r\n};\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class LightboxEvent {\r\n private _lightboxEventSource: Subject<Object>;\r\n public lightboxEvent$: Observable<Object>;\r\n constructor() {\r\n this._lightboxEventSource = new Subject<Object>();\r\n this.lightboxEvent$ = this._lightboxEventSource.asObservable();\r\n }\r\n\r\n broadcastLightboxEvent(event: any): void {\r\n this._lightboxEventSource.next(event);\r\n }\r\n}\r\n\r\nfunction getWindow (): any {\r\n return window;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class LightboxWindowRef {\r\n get nativeWindow (): any {\r\n return getWindow();\r\n }\r\n}\r\n","import {DOCUMENT} from '@angular/common';\r\nimport {\r\n AfterViewInit,\r\n Component,\r\n ElementRef,\r\n HostListener,\r\n Inject,\r\n Input,\r\n OnDestroy,\r\n OnInit, Pipe, PipeTransform,\r\n Renderer2,\r\n SecurityContext,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport {DomSanitizer} from '@angular/platform-browser';\r\n\r\nimport {IAlbum, IEvent, LIGHTBOX_EVENT, LightboxEvent, LightboxWindowRef} from './lightbox-event.service';\r\n\r\n@Pipe({ name: 'safe' })\r\nexport class SafePipe implements PipeTransform {\r\n constructor(private sanitizer: DomSanitizer) {}\r\n transform(url) {\r\n return this.sanitizer.bypassSecurityTrustResourceUrl(url);\r\n }\r\n}\r\n\r\n@Component({\r\n selector: '[lb-content]',\r\n host: {\r\n '[class]': 'ui.classList'\r\n },\r\n templateUrl: \"./lightbox.component.html\",\r\n})\r\nexport class LightboxComponent implements OnInit, AfterViewInit, OnDestroy, OnInit {\r\n @Input() album: Array<IAlbum>;\r\n @Input() currentImageIndex: number;\r\n @Input() options: any;\r\n @Input() cmpRef: any;\r\n @ViewChild('outerContainer') _outerContainerElem: ElementRef;\r\n @ViewChild('container') _containerElem: ElementRef;\r\n @ViewChild('leftArrow') _leftArrowElem: ElementRef;\r\n @ViewChild('rightArrow') _rightArrowElem: ElementRef;\r\n @ViewChild('navArrow') _navArrowElem: ElementRef;\r\n @ViewChild('dataContainer') _dataContainerElem: ElementRef;\r\n @ViewChild('image') _imageElem: ElementRef;\r\n @ViewChild('iframe') _iframeElem: ElementRef;\r\n @ViewChild('caption') _captionElem: ElementRef;\r\n @ViewChild('number') _numberElem: ElementRef;\r\n public content: any;\r\n public ui: any;\r\n private _cssValue: any;\r\n private _event: any;\r\n private _windowRef: any;\r\n private rotate: number;\r\n constructor(\r\n private _elemRef: ElementRef,\r\n private _rendererRef: Renderer2,\r\n private _lightboxEvent: LightboxEvent,\r\n public _lightboxElem: ElementRef,\r\n private _lightboxWindowRef: LightboxWindowRef,\r\n private _sanitizer: DomSanitizer,\r\n @Inject(DOCUMENT) private _documentRef\r\n ) {\r\n // initialize data\r\n this.options = this.options || {};\r\n this.album = this.album || [];\r\n this.currentImageIndex = this.currentImageIndex || 0;\r\n this._windowRef = this._lightboxWindowRef.nativeWindow;\r\n\r\n // control the interactive of the directive\r\n this.ui = {\r\n // control the appear of the reloader\r\n // false: image has loaded completely and ready to be shown\r\n // true: image is still loading\r\n showReloader: true,\r\n\r\n // control the appear of the nav arrow\r\n // the arrowNav is the parent of both left and right arrow\r\n // in some cases, the parent shows but the child does not show\r\n showLeftArrow: false,\r\n showRightArrow: false,\r\n showArrowNav: false,\r\n\r\n // control the appear of the zoom and rotate buttons\r\n showZoomButton: false,\r\n showRotateButton: false,\r\n\r\n // control whether to show the\r\n // page number or not\r\n showPageNumber: false,\r\n showCaption: false,\r\n classList: 'lightbox animation fadeIn'\r\n };\r\n\r\n this.content = {\r\n pageNumber: ''\r\n };\r\n\r\n this._event = {};\r\n this._lightboxElem = this._elemRef;\r\n this._event.subscription = this._lightboxEvent.lightboxEvent$\r\n .subscribe((event: IEvent) => this._onReceivedEvent(event));\r\n this.rotate = 0;\r\n }\r\n\r\n ngOnInit(): void {\r\n this.album.forEach(album => {\r\n if (album.caption) {\r\n album.caption = this._sanitizer.sanitize(SecurityContext.HTML, album.caption);\r\n }\r\n });\r\n }\r\n\r\n public ngAfterViewInit(): void {\r\n // need to init css value here, after the view ready\r\n // actually these values are always 0\r\n this._cssValue = {\r\n containerTopPadding: Math.round(this._getCssStyleValue(this._containerElem, 'padding-top')),\r\n containerRightPadding: Math.round(this._getCssStyleValue(this._containerElem, 'padding-right')),\r\n containerBottomPadding: Math.round(this._getCssStyleValue(this._containerElem, 'padding-bottom')),\r\n containerLeftPadding: Math.round(this._getCssStyleValue(this._containerElem, 'padding-left')),\r\n imageBorderWidthTop: Math.round(this._getCssStyleValue(this._imageElem || this._iframeElem, 'border-top-width')),\r\n imageBorderWidthBottom: Math.round(this._getCssStyleValue(this._imageElem || this._iframeElem, 'border-bottom-width')),\r\n imageBorderWidthLeft: Math.round(this._getCssStyleValue(this._imageElem || this._iframeElem, 'border-left-width')),\r\n imageBorderWidthRight: Math.round(this._getCssStyleValue(this._imageElem || this._iframeElem, 'border-right-width'))\r\n };\r\n\r\n if (this._validateInputData()) {\r\n this._prepareComponent();\r\n this._registerImageLoadingEvent();\r\n }\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n if (!this.options.disableKeyboardNav) {\r\n // unbind keyboard event\r\n this._disableKeyboardNav();\r\n }\r\n\r\n this._event.subscription.unsubscribe();\r\n }\r\n\r\n @HostListener('close', ['$event'])\r\n public close($event: any): void {\r\n $event.stopPropagation();\r\n if ($event.target.classList.contains('lightbox') ||\r\n $event.target.classList.contains('lb-loader') ||\r\n $event.target.classList.contains('lb-close')) {\r\n this._lightboxEvent.broadcastLightboxEvent({ id: LIGHTBOX_EVENT.CLOSE, data: null });\r\n }\r\n }\r\n\r\n public control($event: any): void {\r\n $event.stopPropagation();\r\n let height: number;\r\n let width: number;\r\n if ($event.target.classList.contains('lb-turnLeft')) {\r\n this.rotate = this.rotate - 90;\r\n this._rotateContainer();\r\n this._calcTransformPoint();\r\n this._documentRef.getElementById('image').style.transform = `rotate(${this.rotate}deg)`;\r\n this._documentRef.getElementById('image').style.webkitTransform = `rotate(${this.rotate}deg)`;\r\n this._lightboxEvent.broadcastLightboxEvent({ id: LIGHTBOX_EVENT.ROTATE_LEFT, data: null });\r\n } else if ($event.target.classList.contains('lb-turnRight')) {\r\n this.rotate = this.rotate + 90;\r\n this._rotateContainer();\r\n this._calcTransformPoint();\r\n this._documentRef.getElementById('image').style.transform = `rotate(${this.rotate}deg)`;\r\n this._documentRef.getElementById('image').style.webkitTransform = `rotate(${this.rotate}deg)`;\r\n this._lightboxEvent.broadcastLightboxEvent({ id: LIGHTBOX_EVENT.ROTATE_RIGHT, data: null });\r\n } else if ($event.target.classList.contains('lb-zoomOut')) {\r\n height = parseInt(this._documentRef.getElementById('outerContainer').style.height, 10) / 1.5;\r\n width = parseInt(this._documentRef.getElementById('outerContainer').style.width, 10) / 1.5;\r\n this._documentRef.getElementById('outerContainer').style.height = height + 'px';\r\n this._documentRef.getElementById('outerContainer').style.width = width + 'px';\r\n height = parseInt(this._documentRef.getElementById('image').style.height, 10) / 1.5;\r\n width = parseInt(this._documentRef.getElementById('image').style.width, 10) / 1.5;\r\n this._documentRef.getElementById('image').style.height = height + 'px';\r\n this._documentRef.getElementById('image').style.width = width + 'px';\r\n this._lightboxEvent.broadcastLightboxEvent({ id: LIGHTBOX_EVENT.ZOOM_OUT, data: null });\r\n } else if ($event.target.classList.contains('lb-zoomIn')) {\r\n height = parseInt(this._documentRef.getElementById('outerContainer').style.height, 10) * 1.5;\r\n width = parseInt(this._documentRef.getElementById('outerContainer').style.width, 10) * 1.5;\r\n this._documentRef.getElementById('outerContainer').style.height = height + 'px';\r\n this._documentRef.getElementById('outerContainer').style.width = width + 'px';\r\n height = parseInt(this._documentRef.getElementById('image').style.height, 10) * 1.5;\r\n width = parseInt(this._documentRef.getElementById('image').style.width, 10) * 1.5;\r\n this._documentRef.getElementById('image').style.height = height + 'px';\r\n this._documentRef.getElementById('image').style.width = width + 'px';\r\n this._lightboxEvent.broadcastLightboxEvent({ id: LIGHTBOX_EVENT.ZOOM_IN, data: null });\r\n }\r\n }\r\n\r\n private _rotateContainer(): void {\r\n let temp = this.rotate;\r\n if (temp < 0) {\r\n temp *= -1;\r\n }\r\n if (temp / 90 % 4 === 1 || temp / 90 % 4 === 3) {\r\n this._documentRef.getElementById('outerContainer').style.height = this._documentRef.getElementById('image').style.width;\r\n this._documentRef.getElementById('outerContainer').style.width = this._documentRef.getElementById('image').style.height;\r\n this._documentRef.getElementById('container').style.height = this._documentRef.getElementById('image').style.width;\r\n this._documentRef.getElementById('container').style.width = this._documentRef.getElementById('image').style.height;\r\n } else {\r\n this._documentRef.getElementById('outerContainer').style.height = this._documentRef.getElementById('image').style.height;\r\n this._documentRef.getElementById('outerContainer').style.width = this._documentRef.getElementById('image').style.width;\r\n this._documentRef.getElementById('container').style.height = this._documentRef.getElementById('image').style.width;\r\n this._documentRef.getElementById('container').style.width = this._documentRef.getElementById('image').style.height;\r\n }\r\n }\r\n\r\n private _resetImage(): void {\r\n this.rotate = 0;\r\n const image = this._documentRef.getElementById('image');\r\n if (image) {\r\n image.style.transform = `rotate(${this.rotate}deg)`;\r\n image.style.webkitTransform = `rotate(${this.rotate}deg)`;\r\n }\r\n\r\n }\r\n\r\n private _calcTransformPoint(): void {\r\n let height = parseInt(this._documentRef.getElementById('image').style.height, 10);\r\n let width = parseInt(this._documentRef.getElementById('image').style.width, 10);\r\n let temp = this.rotate % 360;\r\n if (temp < 0) {\r\n temp = 360 + temp;\r\n }\r\n if (temp === 90) {\r\n this._documentRef.getElementById('image').style.transformOrigin = (height / 2) + 'px ' + (height / 2) + 'px';\r\n } else if (temp === 180) {\r\n this._documentRef.getElementById('image').style.transformOrigin = (width / 2) + 'px ' + (height / 2) + 'px';\r\n } else if (temp === 270) {\r\n this._documentRef.getElementById('image').style.transformOrigin = (width / 2) + 'px ' + (width / 2) + 'px';\r\n }\r\n }\r\n\r\n public nextImage(): void {\r\n if (this.album.length === 1) {\r\n return;\r\n } else if (this.currentImageIndex === this.album.length - 1) {\r\n this._changeImage(0);\r\n } else {\r\n this._changeImage(this.currentImageIndex + 1);\r\n }\r\n }\r\n\r\n public prevImage(): void {\r\n if (this.album.length === 1) {\r\n return;\r\n } else if (this.currentImageIndex === 0 && this.album.length > 1) {\r\n this._changeImage(this.album.length - 1);\r\n } else {\r\n this._changeImage(this.currentImageIndex - 1);\r\n }\r\n }\r\n\r\n private _validateInputData(): boolean {\r\n if (this.album &&\r\n this.album instanceof Array &&\r\n this.album.length > 0) {\r\n for (let i = 0; i < this.album.length; i++) {\r\n // check whether each _nside\r\n // album has src data or not\r\n if (this.album[i].src) {\r\n continue;\r\n }\r\n\r\n throw new Error('One of the album data does not have source data');\r\n }\r\n } else {\r\n throw new Error('No album data or album data is not correct in type');\r\n }\r\n\r\n // to prevent data understand as string\r\n // convert it to number\r\n if (isNaN(this.currentImageIndex)) {\r\n throw new Error('Current image index is not a number');\r\n } else {\r\n this.currentImageIndex = Number(this.currentImageIndex);\r\n }\r\n\r\n return true;\r\n }\r\n\r\n private _registerImageLoadingEvent(): void {\r\n const src: any = this.album[this.currentImageIndex].src;\r\n\r\n if (this.album[this.currentImageIndex].iframe || this.needsIframe(src)) {\r\n setTimeout( () => {\r\n this._onLoadImageSuccess();\r\n });\r\n return;\r\n }\r\n\r\n const preloader = new Image();\r\n\r\n preloader.onload = () => {\r\n this._onLoadImageSuccess();\r\n }\r\n\r\n preloader.onerror = (e) => {\r\n this._lightboxEvent.broadcastLightboxEvent({ id: LIGHTBOX_EVENT.FILE_NOT_FOUND, data: e });\r\n }\r\n\r\n preloader.src = this._sanitizer.sanitize(SecurityContext.URL, src);\r\n }\r\n\r\n /**\r\n * Fire when the image is loaded\r\n */\r\n private _onLoadImageSuccess(): void {\r\n if (!this.options.disableKeyboardNav) {\r\n // unbind keyboard event during transition\r\n this._disableKeyboardNav();\r\n }\r\n\r\n let imageHeight;\r\n let imageWidth;\r\n let maxImageHeight;\r\n let maxImageWidth;\r\n let windowHeight;\r\n let windowWidth;\r\n let naturalImageWidth;\r\n let naturalImageHeight;\r\n\r\n // set default width and height of image to be its natural\r\n imageWidth = naturalImageWidth = this._imageElem ? this._imageElem.nativeElement.naturalWidth : this._windowRef.innerWidth * .8;\r\n imageHeight = naturalImageHeight = this._imageElem ? this._imageElem.nativeElement.naturalHeight : this._windowRef.innerHeight * .8;\r\n if (this.options.fitImageInViewPort) {\r\n windowWidth = this._windowRef.innerWidth;\r\n windowHeight = this._windowRef.innerHeight;\r\n maxImageWidth = windowWidth - this._cssValue.containerLeftPadding -\r\n this._cssValue.containerRightPadding - this._cssValue.imageBorderWidthLeft -\r\n this._cssValue.imageBorderWidthRight - 20;\r\n maxImageHeight = windowHeight - this._cssValue.containerTopPadding -\r\n this._cssValue.containerTopPadding - this._cssValue.imageBorderWidthTop -\r\n this._cssValue.imageBorderWidthBottom - 120;\r\n if (naturalImageWidth > maxImageWidth || naturalImageHeight > maxImageHeight) {\r\n if ((naturalImageWidth / maxImageWidth) > (naturalImageHeight / maxImageHeight)) {\r\n imageWidth = maxImageWidth;\r\n imageHeight = Math.round(naturalImageHeight / (naturalImageWidth / imageWidth));\r\n } else {\r\n imageHeight = maxImageHeight;\r\n imageWidth = Math.round(naturalImageWidth / (naturalImageHeight / imageHeight));\r\n }\r\n }\r\n\r\n this._rendererRef.setStyle((this._imageElem || this._iframeElem).nativeElement, 'width', `${imageWidth}px`);\r\n this._rendererRef.setStyle((this._imageElem || this._iframeElem).nativeElement, 'height', `${imageHeight}px`);\r\n }\r\n\r\n this._sizeContainer(imageWidth, imageHeight);\r\n\r\n if (this.options.centerVertically) {\r\n this._centerVertically(imageWidth, imageHeight);\r\n }\r\n }\r\n\r\n private _centerVertically(imageWidth: number, imageHeight: number): void {\r\n const scrollOffset = this._documentRef.documentElement.scrollTop;\r\n const windowHeight = this._windowRef.innerHeight;\r\n\r\n const viewOffset = windowHeight / 2 - imageHeight / 2;\r\n const topDistance = scrollOffset + viewOffset;\r\n\r\n this._rendererRef.setStyle(this._lightboxElem.nativeElement, 'top', `${topDistance}px`);\r\n }\r\n\r\n private _sizeContainer(imageWidth: number, imageHeight: number): void {\r\n const oldWidth = this._outerContainerElem.nativeElement.offsetWidth;\r\n const oldHeight = this._outerContainerElem.nativeElement.offsetHeight;\r\n const newWidth = imageWidth + this._cssValue.containerRightPadding + this._cssValue.containerLeftPadding +\r\n this._cssValue.imageBorderWidthLeft + this._cssValue.imageBorderWidthRight;\r\n const newHeight = imageHeight + this._cssValue.containerTopPadding + this._cssValue.containerBottomPadding +\r\n this._cssValue.imageBorderWidthTop + this._cssValue.imageBorderWidthBottom;\r\n\r\n // make sure that distances are large enough for transitionend event to be fired, at least 5px.\r\n if (Math.abs(oldWidth - newWidth) + Math.abs(oldHeight - newHeight) > 5) {\r\n this._rendererRef.setStyle(this._outerContainerElem.nativeElement, 'width', `${newWidth}px`);\r\n this._rendererRef.setStyle(this._outerContainerElem.nativeElement, 'height', `${newHeight}px`);\r\n\r\n // bind resize event to outer container\r\n // use enableTransition to prevent infinite loader\r\n if (this.options.enableTransition) {\r\n this._event.transitions = [];\r\n ['transitionend', 'webkitTransitionEnd', 'oTransitionEnd', 'MSTransitionEnd'].forEach(eventName => {\r\n this._event.transitions.push(\r\n this._rendererRef.listen(this._outerContainerElem.nativeElement, eventName, (event: any) => {\r\n if (event.target === event.currentTarget) {\r\n this._postResize(newWidth, newHeight);\r\n }\r\n })\r\n );\r\n });\r\n } else {\r\n this._postResize(newWidth, newHeight);\r\n }\r\n } else {\r\n this._postResize(newWidth, newHeight);\r\n }\r\n }\r\n\r\n private _postResize(newWidth: number, newHeight: number): void {\r\n // unbind resize event\r\n if (Array.isArray(this._event.transitions)) {\r\n this._event.transitions.forEach((eventHandler: any) => {\r\n eventHandler();\r\n });\r\n\r\n this._event.transitions = [];\r\n }\r\n\r\n this._rendererRef.setStyle(this._dataContainerElem.nativeElement, 'width', `${newWidth}px`);\r\n this._showImage();\r\n }\r\n\r\n private _showImage(): void {\r\n this.ui.showReloader = false;\r\n this._updateNav();\r\n this._updateDetails();\r\n if (!this.options.disableKeyboardNav) {\r\n this._enableKeyboardNav();\r\n }\r\n }\r\n\r\n private _prepareComponent(): void {\r\n // add css3 animation\r\n this._addCssAnimation();\r\n\r\n // position the image according to user's option\r\n this._positionLightBox();\r\n\r\n // update controls visibility on next view generation\r\n setTimeout(() => {\r\n this.ui.showZoomButton = this.options.showZoom;\r\n this.ui.showRotateButton = this.options.showRotate;\r\n }, 0);\r\n }\r\n\r\n private _positionLightBox(): void {\r\n // @see https://stackoverflow.com/questions/3464876/javascript-get-window-x-y-position-for-scroll\r\n const top = (this._windowRef.pageYOffset || this._documentRef.documentElement.scrollTop) +\r\n this.options.positionFromTop;\r\n const left = this._windowRef.pageXOffset || this._documentRef.documentElement.scrollLeft;\r\n\r\n if (!this.options.centerVertically) {\r\n this._rendererRef.setStyle(this._lightboxElem.nativeElement, 'top', `${top}px`);\r\n }\r\n\r\n this._rendererRef.setStyle(this._lightboxElem.nativeElement, 'left', `${left}px`);\r\n this._rendererRef.setStyle(this._lightboxElem.nativeElement, 'display', 'block');\r\n\r\n // disable scrolling of the page while open\r\n if (this.options.disableScrolling) {\r\n this._rendererRef.addClass(this._documentRef.documentElement, 'lb-disable-scrolling');\r\n }\r\n }\r\n\r\n /**\r\n * addCssAnimation add css3 classes for animate lightbox\r\n */\r\n private _addCssAnimation(): void {\r\n const resizeDuration = this.options.resizeDuration;\r\n const fadeDuration = this.options.fadeDuration;\r\n\r\n this._rendererRef.setStyle(this._lightboxElem.nativeElement,\r\n '-webkit-animation-duration', `${fadeDuration}s`);\r\n this._rendererRef.setStyle(this._lightboxElem.nativeElement,\r\n 'animation-duration', `${fadeDuration}s`);\r\n this._rendererRef.setStyle(this._outerContainerElem.nativeElement,\r\n '-webkit-transition-duration', `${resizeDuration}s`);\r\n this._rendererRef.setStyle(this._outerContainerElem.nativeElement,\r\n 'transition-duration', `${resizeDuration}s`);\r\n this._rendererRef.setStyle(this._dataContainerElem.nativeElement,\r\n '-webkit-animation-duration', `${fadeDuration}s`);\r\n this._rendererRef.setStyle(this._dataContainerElem.nativeElement,\r\n 'animation-duration', `${fadeDuration}s`);\r\n this._rendererRef.setStyle((this._imageElem || this._iframeElem).nativeElement,\r\n '-webkit-animation-duration', `${fadeDuration}s`);\r\n this._rendererRef.setStyle((this._imageElem || this._iframeElem).nativeElement,\r\n 'animation-duration', `${fadeDuration}s`);\r\n this._rendererRef.setStyle(this._captionElem.nativeElement,\r\n '-webkit-animation-duration', `${fadeDuration}s`);\r\n this._rendererRef.setStyle(this._captionElem.nativeElement,\r\n 'animation-duration', `${fadeDuration}s`);\r\n this._rendererRef.setStyle(this._numberElem.nativeElement,\r\n '-webkit-animation-duration', `${fadeDuration}s`);\r\n this._rendererRef.setStyle(this._numberElem.nativeElement,\r\n 'animation-duration', `${fadeDuration}s`);\r\n }\r\n\r\n private _end(): void {\r\n this.ui.classList = 'lightbox animation fadeOut';\r\n if (this.options.disableScrolling) {\r\n this._rendererRef.removeClass(this._documentRef.documentElement, 'lb-disable-scrolling');\r\n }\r\n setTimeout(() => {\r\n this.cmpRef.destroy();\r\n }, this.options.fadeDuration * 1000);\r\n }\r\n\r\n private _updateDetails(): void {\r\n // update the caption\r\n if (typeof this.album[this.currentImageIndex].caption !== 'undefined' &&\r\n this.album[this.currentImageIndex].caption !== '') {\r\n this.ui.showCaption = true;\r\n }\r\n\r\n // update the page number if user choose to do so\r\n // does not perform numbering the page if the\r\n // array length in album <= 1\r\n if (this.album.length > 1 && this.options.showImageNumberLabel) {\r\n this.ui.showPageNumber = true;\r\n this.content.pageNumber = this._albumLabel();\r\n }\r\n }\r\n\r\n private _albumLabel(): string {\r\n // due to {this.currentImageIndex} is set from 0 to {this.album.length} - 1\r\n return this.options.albumLabel.replace(/%1/g, Number(this.currentImageIndex + 1)).replace(/%2/g, this.album.length);\r\n }\r\n\r\n private _changeImage(newIndex: number): void {\r\n this._resetImage();\r\n this.currentImageIndex = newIndex;\r\n this._hideImage();\r\n this._registerImageLoadingEvent();\r\n this._lightboxEvent.broadcastLightboxEvent({ id: LIGHTBOX_EVENT.CHANGE_PAGE, data: newIndex });\r\n }\r\n\r\n private _hideImage(): void {\r\n this.ui.showReloader = true;\r\n this.ui.showArrowNav = false;\r\n this.ui.showLeftArrow = false;\r\n this.ui.showRightArrow = false;\r\n this.ui.showPageNumber = false;\r\n this.ui.showCaption = false;\r\n }\r\n\r\n private _updateNav(): void {\r\n let alwaysShowNav = false;\r\n\r\n // check to see the browser support touch event\r\n try {\r\n this._documentRef.createEvent('TouchEvent');\r\n alwaysShowNav = (this.options.alwaysShowNavOnTouchDevices) ? true : false;\r\n } catch (e) {\r\n // noop\r\n }\r\n\r\n // initially show the arrow nav\r\n // which is the parent of both left and right nav\r\n this._showArrowNav();\r\n if (this.album.length > 1) {\r\n if (this.options.wrapAround) {\r\n if (alwaysShowNav) {\r\n // alternatives this.$lightbox.find('.lb-prev, .lb-next').css('opacity', '1');\r\n this._rendererRef.setStyle(this._leftArrowElem.nativeElement, 'opacity', '1');\r\n this._rendererRef.setStyle(this._rightArrowElem.nativeElement, 'opacity', '1');\r\n }\r\n\r\n // alternatives this.$lightbox.find('.lb-prev, .lb-next').show();\r\n this._showLeftArrowNav();\r\n this._showRightArrowNav();\r\n } else {\r\n if (this.currentImageIndex > 0) {\r\n // alternatives this.$lightbox.find('.lb-prev').show();\r\n this._showLeftArrowNav();\r\n if (alwaysShowNav) {\r\n // alternatives this.$lightbox.find('.lb-prev').css('opacity', '1');\r\n this._rendererRef.setStyle(this._leftArrowElem.nativeElement, 'opacity', '1');\r\n }\r\n }\r\n\r\n if (this.currentImageIndex < this.album.length - 1) {\r\n // alternatives this.$lightbox.find('.lb-next').show();\r\n this._showRightArrowNav();\r\n if (alwaysShowNav) {\r\n // alternatives this.$lightbox.find('.lb-next').css('opacity', '1');\r\n this._rendererRef.setStyle(this._rightArrowElem.nativeElement, 'opacity', '1');\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n private _showLeftArrowNav(): void {\r\n this.ui.showLeftArrow = true;\r\n }\r\n\r\n private _showRightArrowNav(): void {\r\n this.ui.showRightArrow = true;\r\n }\r\n\r\n private _showArrowNav(): void {\r\n this.ui.showArrowNav = (this.album.length !== 1);\r\n }\r\n\r\n private _enableKeyboardNav(): void {\r\n this._event.keyup = this._rendererRef.listen('document', 'keyup', (event: any) => {\r\n this._keyboardAction(event);\r\n });\r\n }\r\n\r\n private _disableKeyboardNav(): void {\r\n if (this._event.keyup) {\r\n this._event.keyup();\r\n }\r\n }\r\n\r\n private _keyboardAction($event: any): void {\r\n const KEYCODE_ESC = 27;\r\n const KEYCODE_LEFTARROW = 37;\r\n const KEYCODE_RIGHTARROW = 39;\r\n const keycode = $event.keyCode;\r\n const key = String.fromCharCode(keycode).toLowerCase();\r\n\r\n if (keycode === KEYCODE_ESC || key.match(/x|o|c/)) {\r\n this._lightboxEvent.broadcastLightboxEvent({ id: LIGHTBOX_EVENT.CLOSE, data: null });\r\n } else if (key === 'p' || keycode === KEYCODE_LEFTARROW) {\r\n if (this.currentImageIndex !== 0) {\r\n this._changeImage(this.currentImageIndex - 1);\r\n } else if (this.options.wrapAround && this.album.length > 1) {\r\n this._changeImage(this.album.length - 1);\r\n }\r\n } else if (key === 'n' || keycode === KEYCODE_RIGHTARROW) {\r\n if (this.currentImageIndex !== this.album.length - 1) {\r\n this._changeImage(this.currentImageIndex + 1);\r\n } else if (this.options.wrapAround && this.album.length > 1) {\r\n this._changeImage(0);\r\n }\r\n }\r\n }\r\n\r\n private _getCssStyleValue(elem: any, propertyName: string): number {\r\n return parseFloat(this._windowRef\r\n .getComputedStyle(elem.nativeElement, null)\r\n .getPropertyValue(propertyName));\r\n }\r\n\r\n private _onReceivedEvent(event: IEvent): void {\r\n switch (event.id) {\r\n case LIGHTBOX_EVENT.CLOSE:\r\n this._end();\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n public needsIframe(src: string) {\r\n // const sanitizedUrl = this._sanitizer.sanitize(SecurityContext.URL, src);\r\n if (src.match(/\\.pdf$/)) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n}\r\n","<div class=\"lb-outerContainer transition\" #outerContainer id=\"outerContainer\">\r\n <div class=\"lb-container\" #container id=\"container\">\r\n <img class=\"lb-image\" id=\"image\" [src]=\"album[currentImageIndex].src\" class=\"lb-image animation fadeIn\"\r\n [hidden]=\"ui.showReloader\" #image\r\n *ngIf=\"!album[currentImageIndex].iframe && !needsIframe(album[currentImageIndex].src)\">\r\n <iframe class=\"lb-image\" id=\"iframe\" [src]=\"album[currentImageIndex].src | safe\"\r\n class=\"lb-image lb-iframe animation fadeIn\" [hidden]=\"ui.showReloader\" #iframe\r\n *ngIf=\"album[currentImageIndex].iframe || needsIframe(album[currentImageIndex].src)\">\r\n </iframe>\r\n <div class=\"lb-nav\" [hidden]=\"!ui.showArrowNav\" #navArrow>\r\n <a class=\"lb-prev\" [hidden]=\"!ui.showLeftArrow\" (click)=\"prevImage()\" #leftArrow></a>\r\n <a class=\"lb-next\" [hidden]=\"!ui.showRightArrow\" (click)=\"nextImage()\" #rightArrow></a>\r\n </div>\r\n <div class=\"lb-loader\" [hidden]=\"!ui.showReloader\" (click)=\"close($event)\">\r\n <a class=\"lb-cancel\"></a>\r\n </div>\r\n </div>\r\n</div>\r\n<div class=\"lb-dataContainer\" [hidden]=\"ui.showReloader\" #dataContainer>\r\n <div class=\"lb-data\">\r\n <div class=\"lb-details\">\r\n <span class=\"lb-caption animation fadeIn\" [hidden]=\"!ui.showCaption\"\r\n [innerHtml]=\"album[currentImageIndex].caption\" #caption>\r\n </span>\r\n <span class=\"lb-number animation fadeIn\" [hidden]=\"!ui.showPageNumber\" #number>{{ content.pageNumber\r\n }}</span>\r\n </div>\r\n <div class=\"lb-controlContainer\">\r\n <div class=\"lb-closeContainer\">\r\n <a class=\"lb-close\" (click)=\"close($event)\"></a>\r\n </div>\r\n <div class=\"lb-turnContainer\" [hidden]=\"!ui.showRotateButton\">\r\n <a class=\"lb-turnLeft\" (click)=\"control($event)\"></a>\r\n <a class=\"lb-turnRight\" (click)=\"control($event)\"></a>\r\n </div>\r\n <div class=\"lb-zoomContainer\" [hidden]=\"!ui.showZoomButton\">\r\n <a class=\"lb-zoomOut\" (click)=\"control($event)\"></a>\r\n <a class=\"lb-zoomIn\" (click)=\"control($event)\"></a>\r\n </div>\r\n </div>\r\n </div>\r\n</div>","import { Subscription } from 'rxjs';\r\n\r\nimport {\r\n AfterViewInit,\r\n Component,\r\n ElementRef,\r\n HostListener,\r\n Inject,\r\n Input,\r\n OnDestroy,\r\n Renderer2\r\n} from '@angular/core';\r\n\r\nimport { IEvent, LIGHTBOX_EVENT, LightboxEvent } from './lightbox-event.service';\r\nimport { DOCUMENT } from '@angular/common';\r\n\r\n@Component({\r\n selector: '[lb-overlay]',\r\n template: '',\r\n host: {\r\n '[class]': 'classList'\r\n }\r\n})\r\nexport class LightboxOverlayComponent implements AfterViewInit, OnDestroy {\r\n @Input() options: any;\r\n @Input() cmpRef: any;\r\n public classList;\r\n private _subscription: Subscription;\r\n constructor(\r\n private _elemRef: ElementRef,\r\n private _rendererRef: Renderer2,\r\n private _lightboxEvent: LightboxEvent,\r\n @Inject(DOCUMENT) private _documentRef,\r\n ) {\r\n this.classList = 'lightboxOverlay animation fadeInOverlay';\r\n this._subscription = this._lightboxEvent.lightboxEvent$.subscribe((event: IEvent) => this._onReceivedEvent(event));\r\n }\r\n\r\n @HostListener('click')\r\n public close(): void {\r\n // broadcast to itself and all others subscriber including the components\r\n this._lightboxEvent.broadcastLightboxEvent({ id: LIGHTBOX_EVENT.CLOSE, data: null });\r\n }\r\n\r\n public ngAfterViewInit(): void {\r\n const fadeDuration = this.options.fadeDuration;\r\n\r\n this._rendererRef.setStyle(this._elemRef.nativeElement,\r\n '-webkit-animation-duration', `${fadeDuration}s`);\r\n this._rendererRef.setStyle(this._elemRef.nativeElement,\r\n 'animation-duration', `${fadeDuration}s`);\r\n this._sizeOverlay();\r\n }\r\n\r\n @HostListener('window:resize')\r\n public onResize(): void {\r\n this._sizeOverlay();\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n this._subscription.unsubscribe();\r\n }\r\n\r\n private _sizeOverlay(): void {\r\n const width = this._getOverlayWidth();\r\n const height = this._getOverlayHeight();\r\n\r\n this._rendererRef.setStyle(this._elemRef.nativeElement, 'width', `${width}px`);\r\n this._rendererRef.setStyle(this._elemRef.nativeElement, 'height', `${height}px`);\r\n }\r\n\r\n private _onReceivedEvent(event: IEvent): void {\r\n switch (event.id) {\r\n case LIGHTBOX_EVENT.CLOSE:\r\n this._end();\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n private _end(): void {\r\n this.classList = 'lightboxOverlay animation fadeOutOverlay';\r\n\r\n // queue self destruction after the animation has finished\r\n // FIXME: not sure if there is any way better than this\r\n setTimeout(() => {\r\n this.cmpRef.destroy();\r\n }, this.options.fadeDuration * 1000);\r\n }\r\n\r\n private _getOverlayWidth(): number {\r\n return Math.max(\r\n this._documentRef.body.scrollWidth,\r\n this._documentRef.body.offsetWidth,\r\n this._documentRef.documentElement.clientWidth,\r\n this._documentRef.documentElement.scrollWidth,\r\n this._documentRef.documentElement.offsetWidth\r\n );\r\n }\r\n\r\n private _getOverlayHeight(): number {\r\n return Math.max(\r\n this._documentRef.body.scrollHeight,\r\n this._documentRef.body.offsetHeight,\r\n this._documentRef.documentElement.clientHeight,\r\n this._documentRef.documentElement.scrollHeight,\r\n this._documentRef.documentElement.offsetHeight\r\n );\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class LightboxConfig {\r\n public fadeDuration: number;\r\n public resizeDuration: number;\r\n public fitImageInViewPort: boolean;\r\n public positionFromTop: number;\r\n public showImageNumberLabel: boolean;\r\n public alwaysShowNavOnTouchDevices: boolean;\r\n public wrapAround: boolean;\r\n public disableKeyboardNav: boolean;\r\n public disableScrolling: boolean;\r\n public centerVertically: boolean;\r\n public enableTransition: boolean;\r\n public albumLabel: string;\r\n public showZoom: boolean;\r\n public showRotate: boolean;\r\n public containerElementResolver: (document: any) => HTMLElement;\r\n\r\n constructor() {\r\n this.fadeDuration = 0.7;\r\n this.resizeDuration = 0.5;\r\n this.fitImageInViewPort = true;\r\n this.positionFromTop = 20;\r\n this.showImageNumberLabel = false;\r\n this.alwaysShowNavOnTouchDevices = false;\r\n this.wrapAround = false;\r\n this.disableKeyboardNav = false;\r\n this.disableScrolling = false;\r\n this.centerVertically = false;\r\n this.enableTransition = true;\r\n this.albumLabel = 'Image %1 of %2';\r\n this.showZoom = false;\r\n this.showRotate = false;\r\n this.containerElementResolver = (documentRef) => documentRef.querySelector('body');\r\n }\r\n}\r\n","import {\r\n ApplicationRef,\r\n ComponentFactoryResolver,\r\n ComponentRef,\r\n Inject,\r\n Injectable,\r\n Injector\r\n} from '@angular/core';\r\nimport { LightboxComponent } from './lightbox.component';\r\nimport { LightboxConfig } from './lightbox-config.service';\r\nimport { LightboxEvent, LIGHTBOX_EVENT, IAlbum } from './lightbox-event.service';\r\nimport { LightboxOverlayComponent } from './lightbox-overlay.component';\r\nimport { DOCUMENT } from '@angular/common';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class Lightbox {\r\n constructor(\r\n private _componentFactoryResolver: ComponentFactoryResolver,\r\n private _injector: Injector,\r\n private _applicationRef: ApplicationRef,\r\n private _lightboxConfig: LightboxConfig,\r\n private _lightboxEvent: LightboxEvent,\r\n @Inject(DOCUMENT) private _documentRef\r\n ) { }\r\n\r\n open(album: Array<IAlbum>, curIndex = 0, options = {}): void {\r\n const overlayComponentRef = this._createComponent(LightboxOverlayComponent);\r\n const componentRef = this._createComponent(LightboxComponent);\r\n const newOptions: Partial<LightboxConfig> = {};\r\n\r\n // broadcast open event\r\n this._lightboxEvent.broadcastLightboxEvent({ id: LIGHTBOX_EVENT.OPEN });\r\n Object.assign(newOptions, this._lightboxConfig, options);\r\n\r\n // attach input to lightbox\r\n componentRef.instance.album = album;\r\n componentRef.instance.currentImageIndex = curIndex;\r\n componentRef.instance.options = newOptions;\r\n componentRef.instance.cmpRef = componentRef;\r\n\r\n // attach input to overlay\r\n overlayComponentRef.instance.options = newOptions;\r\n overlayComponentRef.instance.cmpRef = overlayComponentRef;\r\n\r\n // FIXME: not sure why last event is broadcasted (which is CLOSED) and make\r\n // lightbox can not be opened the second time.\r\n // Need to timeout so that the OPEN event is set before component is initialized\r\n setTimeout(() => {\r\n this._applicationRef.attachView(overlayComponentRef.hostView);\r\n this._applicationRef.attachView(componentRef.hostView);\r\n overlayComponentRef.onDestroy(() => {\r\n this._applicationRef.detachView(overlayComponentRef.hostView);\r\n });\r\n componentRef.onDestroy(() => {\r\n this._applicationRef.detachView(componentRef.hostView);\r\n });\r\n\r\n const containerElement = newOptions.containerElementResolver(this._documentRef);\r\n containerElement.appendChild(overlayComponentRef.location.nativeElement);\r\n containerElement.appendChild(componentRef.location.nativeElement);\r\n });\r\n }\r\n\r\n close(): void {\r\n if (this._lightboxEvent) {\r\n this._lightboxEvent.broadcastLightboxEvent({ id: LIGHTBOX_EVENT.CLOSE });\r\n }\r\n }\r\n\r\n _createComponent(ComponentClass: any): ComponentRef<any> {\r\n const factory = this._componentFactoryResolver.resolveComponentFactory(ComponentClass);\r\n const component = factory.create(this._injector);\r\n\r\n return component;\r\n }\r\n}\r\n","import { Lightbox } from './lightbox.service';\r\nimport {LightboxComponent, SafePipe} from './lightbox.component';\r\nimport { LightboxConfig } from './lightbox-config.service';\r\nimport { LightboxEvent, LightboxWindowRef } from './lightbox-event.service';\r\nimport { LightboxOverlayComponent } from './lightbox-overlay.component';\r\nimport { NgModule } from '@angular/core';\r\nimport {CommonModule} from '@angular/common';\r\n\r\n@NgModule({\r\n imports: [CommonModule],\r\n declarations: [LightboxOverlayComponent, LightboxComponent, SafePipe],\r\n providers: [\r\n Lightbox,\r\n LightboxConfig,\r\n LightboxEvent,\r\n LightboxWindowRef\r\n ]\r\n})\r\nexport class LightboxModule { }\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}