rm-image-slider 0.0.0-watch

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rm-image-slider.mjs","sources":["../../../projects/rm-image-slider/src/lib/rm-image-slider.service.ts","../../../projects/rm-image-slider/src/lib/slider-custom-image/slider-custom-image.component.ts","../../../projects/rm-image-slider/src/lib/slider-custom-image/slider-custom-image.component.html","../../../projects/rm-image-slider/src/lib/slider-lightbox/slider-lightbox.component.ts","../../../projects/rm-image-slider/src/lib/slider-lightbox/slider-lightbox.component.html","../../../projects/rm-image-slider/src/lib/rm-image-slider.component.ts","../../../projects/rm-image-slider/src/lib/rm-image-slider.component.html","../../../projects/rm-image-slider/src/public-api.ts","../../../projects/rm-image-slider/src/rm-image-slider.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\n\r\nconst DESC = 'DESC',\r\n ASC = 'ASC';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class RmImageSliderService {\r\n constructor() {}\r\n\r\n isBase64(str: string) {\r\n var base64regex =\r\n /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/;\r\n return base64regex.test(str);\r\n }\r\n\r\n base64FileExtension(str: string) {\r\n return str.substring('data:image/'.length, str.indexOf(';base64'));\r\n }\r\n\r\n // orderArray(arr = [], orderType = ASC) {\r\n // if (arr?.length && orderType) {\r\n // return arr.sort((ob1: any, ob2: any) => {\r\n // if (ob1['order'] === null || !ob1['order']) {\r\n // return 1;\r\n // } else if (ob2['order'] === null || !ob2['order']) {\r\n // return -1;\r\n // } else if (ob1['order'] > ob2['order']) {\r\n // if (orderType === DESC) {\r\n // return -1;\r\n // } else {\r\n // return 1;\r\n // }\r\n // } else if (ob1['order'] < ob2['order']) {\r\n // if (orderType === DESC) {\r\n // return 1;\r\n // } else {\r\n // return -1;\r\n // }\r\n // }\r\n // });\r\n // }\r\n // return arr;\r\n // }\r\n\r\n orderArray(arr = [], orderType = ASC) {\r\n if (arr?.length && orderType) {\r\n return arr.sort((ob1: any, ob2: any) => {\r\n // Handle potential undefined 'order' properties\r\n const order1 = ob1['order'];\r\n const order2 = ob2['order'];\r\n\r\n // Ensure consistent sorting for undefined/null 'order' values\r\n if (order1 === null || order1 === undefined) {\r\n return 1; // Place elements with undefined or null 'order' at the end\r\n } else if (order2 === null || order2 === undefined) {\r\n return -1; // Place elements with undefined or null 'order' at the beginning\r\n } else {\r\n // Apply ascending or descending order based on 'orderType'\r\n return orderType === DESC\r\n ? order2 - order1 // Reverse for descending order\r\n : order1 - order2; // Maintain for ascending order\r\n }\r\n });\r\n }\r\n\r\n return arr; // Return the original array if conditions are not met\r\n }\r\n}\r\n","import {\r\n Component,\r\n Input,\r\n OnChanges,\r\n SimpleChanges,\r\n Inject,\r\n} from '@angular/core';\r\nimport { CommonModule, DOCUMENT } from '@angular/common';\r\nimport { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';\r\nimport { RmImageSliderService } from './../rm-image-slider.service';\r\n\r\nconst youtubeRegExp =\r\n /^.*(youtu.be\\/|v\\/|u\\/\\w\\/|embed\\/|watch\\?v=|\\&v=|\\?v=)([^#\\&\\?]*).*/,\r\n validFileExtensions = ['jpeg', 'jpg', 'gif', 'png'],\r\n validVideoExtensions = ['mp4'];\r\n\r\n@Component({\r\n selector: 'custom-img',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './slider-custom-image.component.html',\r\n styleUrl: './slider-custom-image.component.css',\r\n})\r\nexport class SliderCustomImageComponent implements OnChanges {\r\n YOUTUBE = 'youtube';\r\n IMAGE = 'image';\r\n VIDEO = 'video';\r\n fileUrl: SafeResourceUrl = '';\r\n fileExtension = '';\r\n type = this.IMAGE;\r\n imageLoading: boolean = true;\r\n\r\n // @inputs\r\n @Input() showVideo: boolean = false;\r\n @Input() videoAutoPlay: boolean = false;\r\n @Input() showVideoControls: number = 1;\r\n @Input() currentImageIndex!: number;\r\n @Input() imageIndex!: number;\r\n @Input() speed: number = 1;\r\n @Input() imageUrl: any;\r\n @Input() isVideo = false;\r\n @Input() alt: String = '';\r\n @Input() title: String = '';\r\n @Input() direction: string = 'ltr';\r\n @Input() ratio: boolean = false;\r\n @Input() lazy: boolean = false;\r\n\r\n constructor(\r\n public imageSliderService: RmImageSliderService,\r\n private sanitizer: DomSanitizer,\r\n @Inject(DOCUMENT) document: Document\r\n ) {}\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (\r\n this['imageUrl'] &&\r\n typeof this['imageUrl'] === 'string' &&\r\n ((changes['imageUrl'] && changes['imageUrl'].firstChange) ||\r\n this.videoAutoPlay)\r\n ) {\r\n this.setUrl();\r\n }\r\n }\r\n\r\n setUrl() {\r\n const url = this.imageUrl;\r\n this.imageLoading = true;\r\n this.fileUrl = this.sanitizer.bypassSecurityTrustResourceUrl(url);\r\n this.fileExtension = url.split('.').pop().split(/\\#|\\?/)[0];\r\n if (\r\n this.imageSliderService.base64FileExtension(url) &&\r\n (validFileExtensions.indexOf(\r\n this.imageSliderService.base64FileExtension(url).toLowerCase()\r\n ) > -1 ||\r\n validVideoExtensions.indexOf(\r\n this.imageSliderService.base64FileExtension(url).toLowerCase()\r\n ) > -1)\r\n ) {\r\n this.fileExtension = this.imageSliderService.base64FileExtension(url);\r\n }\r\n // verify for youtube url\r\n const match = url.match(youtubeRegExp);\r\n if (match && match[2].length === 11) {\r\n if (this.showVideo) {\r\n this.type = this.YOUTUBE;\r\n this.fileUrl = this.sanitizer.bypassSecurityTrustResourceUrl(\r\n `${'https://www.youtube.com/embed/'}${match[2]}${\r\n this.videoAutoPlay\r\n ? '?autoplay=1&enablejsapi=1'\r\n : '?autoplay=0&enablejsapi=1'\r\n }${'&controls='}${this.showVideoControls}`\r\n );\r\n } else {\r\n this.type = this.IMAGE;\r\n this.fileUrl = this.sanitizer.bypassSecurityTrustResourceUrl(\r\n `https://img.youtube.com/vi/${match[2]}/0.jpg`\r\n );\r\n }\r\n } else if (\r\n this.fileExtension &&\r\n validFileExtensions.indexOf(this.fileExtension.toLowerCase()) > -1\r\n ) {\r\n this.type = this.IMAGE;\r\n } else if (\r\n this.fileExtension &&\r\n validVideoExtensions.indexOf(this.fileExtension.toLowerCase()) > -1\r\n ) {\r\n this.type = this.VIDEO;\r\n if (\r\n this.videoAutoPlay &&\r\n document.getElementById(`video_${this.imageIndex}`)\r\n ) {\r\n const videoObj: any = document.getElementById(\r\n `video_${this.imageIndex}`\r\n );\r\n setTimeout(() => {\r\n videoObj.play();\r\n }, this.speed * 1000);\r\n }\r\n }\r\n }\r\n\r\n videoClickHandler(event: any) {\r\n if (event && event.srcElement && !this.showVideoControls) {\r\n if (event.srcElement.paused) {\r\n event.srcElement.play();\r\n } else {\r\n event.srcElement.pause();\r\n }\r\n }\r\n }\r\n}\r\n","@if (fileUrl) {\r\n <div class=\"custom-image-main\" [ngClass]=\"{'ng-fullimage-loading': imageLoading}\">\r\n @if (type === IMAGE && fileUrl) {\r\n <img class=\"image\" (load)=\"imageLoading = false\" [ngClass]=\"{'ratio': ratio}\"\r\n [src]=\"fileUrl\" [alt]=\"alt\" [title]=\"title\" [attr.loading]=\"lazy == true ? 'lazy' : null\">\r\n }\r\n @if (type === YOUTUBE && fileUrl) {\r\n <iframe class=\"youtube\" [src]=\"fileUrl\"\r\n [attr.loading]=\"lazy == true ? 'lazy' : null\" frameborder=\"0\" allow=\"autoplay\" allowfullscreen></iframe>\r\n }\r\n @if (type === VIDEO) {\r\n <video class=\"video\" [id]=\"'video_' + imageIndex\" [ngClass]=\"{'ratio': ratio}\" (click)=\"videoClickHandler($event)\"\r\n [autoplay]=\"videoAutoPlay\" type=\"video/mp4\"\r\n [attr.controls]=\"showVideoControls ? showVideoControls : null\" controlsList=\"nodownload\">\r\n <source [src]=\"fileUrl\" type=\"video/mp4\">\r\n Your browser does not support the video tag.\r\n </video>\r\n }\r\n @if (!fileUrl) {\r\n <div [dir]=\"direction\" class=\"invalid-msg\">Invalid file format</div>\r\n }\r\n @if (type === YOUTUBE || type === VIDEO || isVideo) {\r\n <span class=\"youtube-icon\"></span>\r\n }\r\n </div>\r\n}","import {\r\n ChangeDetectorRef,\r\n Component,\r\n OnInit,\r\n OnChanges,\r\n SimpleChanges,\r\n Inject,\r\n AfterViewInit,\r\n OnDestroy,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n ViewChild,\r\n HostListener,\r\n ElementRef,\r\n} from '@angular/core';\r\nimport { CommonModule, DOCUMENT } from '@angular/common';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { SliderCustomImageComponent } from '../slider-custom-image/slider-custom-image.component';\r\nimport { ImageObject } from '../interface';\r\n\r\nconst LIGHTBOX_NEXT_ARROW_CLICK_MESSAGE = 'lightbox next',\r\n LIGHTBOX_PREV_ARROW_CLICK_MESSAGE = 'lightbox previous';\r\n\r\n@Component({\r\n selector: 'slider-lightbox',\r\n standalone: true,\r\n imports: [CommonModule, SliderCustomImageComponent],\r\n templateUrl: './slider-lightbox.component.html',\r\n styleUrl: './slider-lightbox.component.css',\r\n})\r\nexport class SliderLightboxComponent\r\n implements OnInit, AfterViewInit, OnDestroy\r\n{\r\n totalImages: number = 0;\r\n nextImageIndex: number = -1;\r\n popupWidth: number = 1200;\r\n marginLeft: number = 0;\r\n imageFullscreenView: boolean = false;\r\n lightboxPrevDisable: boolean = false;\r\n lightboxNextDisable: boolean = false;\r\n showLoading: boolean = true;\r\n effectStyle: string = 'none';\r\n speed: number = 1; // default speed in second\r\n title: string = '';\r\n currentImageIndex: number = 0;\r\n\r\n // for swipe event\r\n private swipeLightboxImgCoord?: [number, number];\r\n private swipeLightboxImgTime?: number;\r\n\r\n @ViewChild('lightboxDiv', { static: false }) lightboxDiv!: ElementRef;\r\n @ViewChild('lightboxImageDiv', { static: false })\r\n lightboxImageDiv!: ElementRef;\r\n\r\n // @Inputs\r\n @Input() images: Array<ImageObject> = [];\r\n @Input()\r\n set imageIndex(index: number) {\r\n if (index !== undefined && index > -1 && index < this.images.length) {\r\n this.currentImageIndex = index;\r\n }\r\n this.nextPrevDisable();\r\n }\r\n @Input()\r\n set show(visiableFlag: boolean) {\r\n this.imageFullscreenView = visiableFlag;\r\n this.elRef.nativeElement.ownerDocument.body.style.overflow = '';\r\n if (visiableFlag === true) {\r\n this.elRef.nativeElement.ownerDocument.body.style.overflow = 'hidden';\r\n // this.getImageData();\r\n this.setPopupSliderWidth();\r\n }\r\n }\r\n @Input() videoAutoPlay: boolean = false;\r\n @Input() direction: string = 'ltr';\r\n @Input() paginationShow: boolean = false;\r\n @Input()\r\n set animationSpeed(data: number) {\r\n if (data && typeof data === 'number' && data >= 0.1 && data <= 5) {\r\n this.speed = data;\r\n }\r\n }\r\n @Input() infinite: boolean = false;\r\n @Input() arrowKeyMove: boolean = true;\r\n @Input() showVideoControls: boolean = true;\r\n\r\n // @Output\r\n @Output() close = new EventEmitter<any>();\r\n @Output() prevImage = new EventEmitter<any>();\r\n @Output() nextImage = new EventEmitter<any>();\r\n\r\n @HostListener('window:resize', ['$event'])\r\n onResize(event: any) {\r\n this.effectStyle = 'none';\r\n this.setPopupSliderWidth();\r\n }\r\n @HostListener('document:keyup', ['$event'])\r\n handleKeyboardEvent(event: KeyboardEvent) {\r\n if (event && event.key && this.arrowKeyMove) {\r\n if (event.key.toLowerCase() === 'arrowright') {\r\n this.nextImageLightbox();\r\n }\r\n\r\n if (event.key.toLowerCase() === 'arrowleft') {\r\n this.prevImageLightbox();\r\n }\r\n\r\n if (event.key.toLowerCase() === 'escape') {\r\n this.closeLightbox();\r\n }\r\n }\r\n }\r\n\r\n constructor(\r\n private cdRef: ChangeDetectorRef,\r\n private sanitizer: DomSanitizer,\r\n private elRef: ElementRef,\r\n @Inject(DOCUMENT) private document: any\r\n ) {}\r\n\r\n ngOnInit() {}\r\n\r\n ngAfterViewInit() {}\r\n\r\n ngOnDestroy() {\r\n this.resetState();\r\n }\r\n\r\n setPopupSliderWidth() {\r\n if (window && window.innerWidth) {\r\n this.popupWidth = window.innerWidth;\r\n this.totalImages = this.images.length;\r\n if (\r\n typeof this.currentImageIndex === 'number' &&\r\n this.currentImageIndex !== undefined\r\n ) {\r\n this.marginLeft = -1 * this.popupWidth * this.currentImageIndex;\r\n this.getImageData();\r\n this.nextPrevDisable();\r\n setTimeout(() => {\r\n this.showLoading = false;\r\n }, 500);\r\n }\r\n }\r\n }\r\n\r\n closeLightbox() {\r\n this.close.emit();\r\n }\r\n\r\n prevImageLightbox() {\r\n this.effectStyle = `all ${this.speed}s ease-in-out`;\r\n if (this.currentImageIndex > 0 && !this.lightboxPrevDisable) {\r\n this.currentImageIndex--;\r\n this.prevImage.emit(LIGHTBOX_PREV_ARROW_CLICK_MESSAGE);\r\n this.marginLeft = -1 * this.popupWidth * this.currentImageIndex;\r\n this.getImageData();\r\n this.nextPrevDisable();\r\n }\r\n }\r\n\r\n nextImageLightbox() {\r\n this.effectStyle = `all ${this.speed}s ease-in-out`;\r\n if (\r\n this.currentImageIndex < this.images.length - 1 &&\r\n !this.lightboxNextDisable\r\n ) {\r\n this.currentImageIndex++;\r\n this.nextImage.emit(LIGHTBOX_NEXT_ARROW_CLICK_MESSAGE);\r\n this.marginLeft = -1 * this.popupWidth * this.currentImageIndex;\r\n this.getImageData();\r\n this.nextPrevDisable();\r\n }\r\n }\r\n\r\n nextPrevDisable() {\r\n this.lightboxNextDisable = true;\r\n this.lightboxPrevDisable = true;\r\n setTimeout(() => {\r\n this.applyButtonDisableCondition();\r\n }, this.speed * 1000);\r\n }\r\n\r\n applyButtonDisableCondition() {\r\n this.lightboxNextDisable = false;\r\n this.lightboxPrevDisable = false;\r\n if (!this.infinite && this.currentImageIndex >= this.images.length - 1) {\r\n this.lightboxNextDisable = true;\r\n }\r\n if (!this.infinite && this.currentImageIndex <= 0) {\r\n this.lightboxPrevDisable = true;\r\n }\r\n }\r\n\r\n getImageData() {\r\n if (\r\n this.images &&\r\n this.images.length &&\r\n typeof this.currentImageIndex === 'number' &&\r\n this.currentImageIndex !== undefined &&\r\n this.images[this.currentImageIndex] &&\r\n (this.images[this.currentImageIndex]['image'] ||\r\n this.images[this.currentImageIndex]['video'])\r\n ) {\r\n this.title = this.images[this.currentImageIndex]['title'] || '';\r\n this.totalImages = this.images.length;\r\n for (const iframeI in this.document.getElementsByTagName('iframe')) {\r\n if (\r\n this.document.getElementsByTagName('iframe')[iframeI] &&\r\n this.document.getElementsByTagName('iframe')[iframeI].contentWindow &&\r\n this.document.getElementsByTagName('iframe')[iframeI].contentWindow\r\n .postMessage\r\n ) {\r\n this.document\r\n .getElementsByTagName('iframe')\r\n [iframeI].contentWindow.postMessage(\r\n '{\"event\":\"command\",\"func\":\"pauseVideo\",\"args\":\"\"}',\r\n '*'\r\n );\r\n }\r\n }\r\n for (const videoI in this.document.getElementsByTagName('video')) {\r\n if (\r\n this.document.getElementsByTagName('video')[videoI] &&\r\n this.document.getElementsByTagName('video')[videoI].pause\r\n ) {\r\n this.document.getElementsByTagName('video')[videoI].pause();\r\n }\r\n }\r\n }\r\n }\r\n\r\n resetState() {\r\n this.images = [];\r\n }\r\n\r\n swipeLightboxImg(e: TouchEvent, when: string): void {\r\n const coord: [number, number] = [\r\n e.changedTouches[0].pageX,\r\n e.changedTouches[0].pageY,\r\n ];\r\n const time = new Date().getTime();\r\n\r\n if (when === 'start') {\r\n this.swipeLightboxImgCoord = coord;\r\n this.swipeLightboxImgTime = time;\r\n } else if (\r\n when === 'end' &&\r\n this.swipeLightboxImgCoord &&\r\n this.swipeLightboxImgTime\r\n ) {\r\n const direction = [\r\n coord[0] - this.swipeLightboxImgCoord[0],\r\n coord[1] - this.swipeLightboxImgCoord[1],\r\n ];\r\n const duration = time - this.swipeLightboxImgTime;\r\n\r\n if (\r\n duration < 1000 && //\r\n Math.abs(direction[0]) > 30 && // Long enough\r\n Math.abs(direction[0]) > Math.abs(direction[1] * 3)\r\n ) {\r\n // Horizontal enough\r\n if (direction[0] < 0) {\r\n this.nextImageLightbox();\r\n } else {\r\n this.prevImageLightbox();\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","@if (imageFullscreenView) {\r\n <div class=\"ng-image-fullscreen-view\">\r\n <div class=\"lightbox-wrapper\">\r\n <a class=\"close\" (click)=\"closeLightbox()\"></a>\r\n <div class=\"lightbox-div\" #lightboxDiv>\r\n @if (showLoading) {\r\n <div class=\"pre-loader\">\r\n <div class=\"mnml-spinner\"></div>\r\n </div>\r\n }\r\n <div class=\"lightbox-image-main\"\r\n [ngStyle]=\"{'margin-left': marginLeft + 'px', 'grid-template-columns': 'repeat('+images.length+',1fr)', 'transition': effectStyle}\">\r\n @for (img of images; track img; let i = $index) {\r\n <div class=\"lightbox-image\" [ngStyle]=\"{'width': popupWidth + 'px'}\"\r\n [attr.id]=\"'ng-lightbox-image-' + i\" (touchstart)=\"swipeLightboxImg($event, 'start')\"\r\n (touchend)=\"swipeLightboxImg($event, 'end')\" #lightboxImageDiv>\r\n <div class=\"close-outside\" (click)=\"!img?.video && closeLightbox()\"></div>\r\n <custom-img [imageUrl]=\"img?.image || img?.video\" [isVideo]=\"!!(img?.posterImage || img?.video)\"\r\n [currentImageIndex]=\"currentImageIndex\" [imageIndex]=\"i\" [speed]=\"speed\"\r\n [videoAutoPlay]=\"videoAutoPlay && i == currentImageIndex\" [showVideoControls]=\"showVideoControls ? 1 : 0\"\r\n [alt]=\"img?.alt || img?.title || ''\" [title]=\"img?.title || img?.alt || ''\" [showVideo]=\"true\"\r\n [direction]=\"direction\">\r\n </custom-img>\r\n </div>\r\n }\r\n </div>\r\n <div [dir]=\"direction\" [ngClass]=\"{'show': title, 'hide': !title}\" class=\"caption\">{{ title }}</div>\r\n @if (images.length > 1) {\r\n <a [ngClass]=\"{'disable': lightboxPrevDisable}\" class=\"prev icons prev-icon\"\r\n (click)=\"prevImageLightbox()\">&lsaquo;</a>\r\n }\r\n @if (images.length > 1) {\r\n <a [ngClass]=\"{'disable': lightboxNextDisable}\" class=\"next icons next-icon\"\r\n (click)=\"nextImageLightbox()\">&rsaquo;</a>\r\n }\r\n </div>\r\n </div>\r\n @if (paginationShow) {\r\n <div class=\"popup-pagination\">{{currentImageIndex + 1}} of {{totalImages}}</div>\r\n }\r\n </div>\r\n}","import {\r\n ChangeDetectorRef,\r\n Component,\r\n OnInit,\r\n OnChanges,\r\n DoCheck,\r\n SimpleChanges,\r\n SimpleChange,\r\n AfterViewInit,\r\n OnDestroy,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n ViewEncapsulation,\r\n ViewChild,\r\n HostListener,\r\n PLATFORM_ID,\r\n Inject,\r\n ElementRef,\r\n} from '@angular/core';\r\n\r\nimport { CommonModule, isPlatformBrowser, isPlatformServer } from '@angular/common';\r\nimport { RmImageSliderService } from './rm-image-slider.service';\r\nimport { SliderLightboxComponent } from './slider-lightbox/slider-lightbox.component';\r\nimport { SliderCustomImageComponent } from './slider-custom-image/slider-custom-image.component';\r\nimport { ImageObject } from './interface';\r\n\r\nconst NEXT_ARROW_CLICK_MESSAGE = 'next',\r\n PREV_ARROW_CLICK_MESSAGE = 'previous';\r\n\r\n@Component({\r\n selector: 'rm-image-slider',\r\n standalone: true,\r\n imports: [CommonModule, SliderLightboxComponent, SliderCustomImageComponent],\r\n templateUrl: './rm-image-slider.component.html',\r\n styleUrls: ['./rm-image-slider.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class RmImageSliderComponent\r\n implements OnChanges, OnInit, DoCheck, AfterViewInit, OnDestroy\r\n{\r\n // for slider\r\n sliderMainDivWidth: number = 0;\r\n imageParentDivWidth: number = 0;\r\n imageObj: Array<ImageObject> = [];\r\n ligthboxImageObj: Array<ImageObject> = [];\r\n totalImages: number = 0;\r\n leftPos: number = 0;\r\n effectStyle: string = 'all 1s ease-in-out';\r\n speed: number = 1; // default speed in second\r\n sliderPrevDisable: boolean = false;\r\n sliderNextDisable: boolean = false;\r\n slideImageCount: number = 1;\r\n sliderImageWidth: number = 205;\r\n sliderImageReceivedWidth: number | string = 205;\r\n sliderImageHeight: number = 200;\r\n sliderImageReceivedHeight: number | string = 205;\r\n sliderImageSizeWithPadding = 211;\r\n autoSlideCount: number = 0;\r\n stopSlideOnHover: boolean = true;\r\n autoSlideInterval: any;\r\n showArrowButton: boolean = true;\r\n textDirection: string = 'ltr';\r\n imageMargin: number = 3;\r\n sliderOrderType: string = 'ASC';\r\n\r\n // for swipe event\r\n private swipeCoord?: [number, number];\r\n private swipeTime?: number;\r\n\r\n // for lightbox\r\n ligthboxShow: boolean = false;\r\n activeImageIndex: number = -1;\r\n visiableImageIndex: number = 0;\r\n\r\n @ViewChild('sliderMain', { static: false }) sliderMain: any;\r\n @ViewChild('imageDiv', { static: false }) imageDiv: any;\r\n\r\n // @inputs\r\n @Input()\r\n set imageSize(data: any) {\r\n if (data && typeof data === 'object') {\r\n if (\r\n data.hasOwnProperty('space') &&\r\n typeof data['space'] === 'number' &&\r\n data['space'] > -1\r\n ) {\r\n this.imageMargin = data['space'];\r\n }\r\n if (\r\n data.hasOwnProperty('width') &&\r\n (typeof data['width'] === 'number' || typeof data['width'] === 'string')\r\n ) {\r\n this.sliderImageReceivedWidth = data['width'];\r\n // this.sliderImageSizeWithPadding = data['width'] + (this.imageMargin * 2); // addeing padding with image width\r\n }\r\n if (\r\n data.hasOwnProperty('height') &&\r\n (typeof data['height'] === 'number' ||\r\n typeof data['height'] === 'string')\r\n ) {\r\n this.sliderImageReceivedHeight = data['height'];\r\n }\r\n }\r\n }\r\n @Input() infinite: boolean = false;\r\n @Input() imagePopup: boolean = true;\r\n @Input()\r\n set direction(dir: string) {\r\n if (dir) {\r\n this.textDirection = dir;\r\n }\r\n }\r\n @Input()\r\n set animationSpeed(data: number) {\r\n if (data && typeof data === 'number' && data >= 0.1 && data <= 5) {\r\n this.speed = data;\r\n this.effectStyle = `all ${this.speed}s ease-in-out`;\r\n }\r\n }\r\n @Input() images: Array<object> = [];\r\n @Input() set slideImage(count: any) {\r\n if (count && typeof count === 'number') {\r\n this.slideImageCount = Math.round(count);\r\n }\r\n }\r\n @Input() set autoSlide(count: any) {\r\n if (\r\n count &&\r\n (typeof count === 'number' ||\r\n typeof count === 'boolean' ||\r\n typeof count === 'object')\r\n ) {\r\n if (typeof count === 'number' && count >= 1 && count <= 5) {\r\n count = Math.round(count);\r\n } else if (typeof count === 'boolean') {\r\n count = 1;\r\n } else if (\r\n typeof count === 'object' &&\r\n count.hasOwnProperty('interval') &&\r\n Math.round(count['interval']) &&\r\n Math.round(count['interval']) >= 1 &&\r\n Math.round(count['interval']) <= 5\r\n ) {\r\n this.stopSlideOnHover = count.hasOwnProperty('stopOnHover')\r\n ? count['stopOnHover']\r\n : true;\r\n count = Math.round(count['interval']);\r\n }\r\n this.autoSlideCount = count * 1000;\r\n }\r\n }\r\n @Input() set showArrow(flag: any) {\r\n if (flag !== undefined && typeof flag === 'boolean') {\r\n this.showArrowButton = flag;\r\n }\r\n }\r\n\r\n @Input() set orderType(data: string) {\r\n if (data !== undefined && typeof data === 'string') {\r\n this.sliderOrderType = data.toUpperCase();\r\n }\r\n }\r\n @Input() videoAutoPlay: boolean = false;\r\n @Input() paginationShow: boolean = false;\r\n @Input() arrowKeyMove: boolean = true;\r\n @Input() manageImageRatio: boolean = false;\r\n @Input() showVideoControls: boolean = true;\r\n @Input() set defaultActiveImage(activeIndex: number) {\r\n if (typeof activeIndex === 'number' && activeIndex > -1) {\r\n this.activeImageIndex = activeIndex;\r\n }\r\n }\r\n @Input() lazyLoading: boolean = false;\r\n\r\n // @Outputs\r\n @Output() imageClick = new EventEmitter<number>();\r\n @Output() arrowClick = new EventEmitter<object>();\r\n @Output() lightboxArrowClick = new EventEmitter<object>();\r\n @Output() lightboxClose = new EventEmitter<object>();\r\n\r\n @HostListener('window:resize', ['$event'])\r\n onResize(event: any) {\r\n this.setSliderWidth();\r\n }\r\n @HostListener('document:keyup', ['$event'])\r\n handleKeyboardEvent(event: KeyboardEvent) {\r\n if (event && event.key) {\r\n if (\r\n event.key.toLowerCase() === 'arrowright' &&\r\n !this.ligthboxShow &&\r\n this.arrowKeyMove\r\n ) {\r\n this.next();\r\n }\r\n\r\n if (\r\n event.key.toLowerCase() === 'arrowleft' &&\r\n !this.ligthboxShow &&\r\n this.arrowKeyMove\r\n ) {\r\n this.prev();\r\n }\r\n\r\n if (event.key.toLowerCase() === 'escape' && this.ligthboxShow) {\r\n this.close();\r\n }\r\n }\r\n }\r\n\r\n constructor(\r\n private cdRef: ChangeDetectorRef,\r\n @Inject(PLATFORM_ID) private platformId: Object,\r\n public imageSliderService: RmImageSliderService,\r\n private elRef: ElementRef // @Inject(ElementRef) private _elementRef: ElementRef\r\n ) {}\r\n\r\n ngOnInit() {\r\n // @TODO: for future use\r\n // console.log(this._elementRef)\r\n\r\n // for slider\r\n if (this.infinite) {\r\n this.effectStyle = 'none';\r\n this.leftPos =\r\n -1 * this.sliderImageSizeWithPadding * this.slideImageCount;\r\n for (let i = 1; i <= this.slideImageCount; i++) {\r\n this.imageObj.unshift(this.imageObj[this.imageObj.length - i]);\r\n }\r\n }\r\n }\r\n\r\n // for slider\r\n ngAfterViewInit() {\r\n this.setSliderWidth();\r\n this.cdRef.detectChanges();\r\n if (isPlatformBrowser(this.platformId)) {\r\n this.imageAutoSlide();\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.autoSlideInterval) {\r\n clearInterval(this.autoSlideInterval);\r\n }\r\n if (this.ligthboxShow === true) {\r\n this.close();\r\n }\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (\r\n changes['images'] &&\r\n changes['images'].hasOwnProperty('previousValue') &&\r\n changes['images'].hasOwnProperty('currentValue') &&\r\n changes['images'].previousValue != changes['images'].currentValue\r\n ) {\r\n this.setSliderImages(changes['images'].currentValue);\r\n }\r\n if (changes && changes['imageSize']) {\r\n const size: SimpleChange = changes['imageSize'];\r\n if (\r\n size &&\r\n size.previousValue &&\r\n size.currentValue &&\r\n size.previousValue.width &&\r\n size.previousValue.height &&\r\n size.currentValue.width &&\r\n size.currentValue.height &&\r\n (size.previousValue.width !== size.currentValue.width ||\r\n size.previousValue.height !== size.currentValue.height)\r\n ) {\r\n this.setSliderWidth();\r\n }\r\n }\r\n }\r\n\r\n ngDoCheck() {\r\n if (\r\n this.images &&\r\n this.ligthboxImageObj &&\r\n this.images.length !== this.ligthboxImageObj.length\r\n ) {\r\n this.setSliderImages(this.images);\r\n }\r\n }\r\n\r\n setSliderImages(imgObj: any) {\r\n if (imgObj && imgObj instanceof Array && imgObj.length) {\r\n // const sliderOrderEnable = imgObj.find((img: any) => {\r\n // if (img.hasOwnProperty('order')) {\r\n // return true;\r\n // }\r\n // });\r\n const sliderOrderEnable =\r\n imgObj.find((img: any) => {\r\n return img.order !== undefined;\r\n }) !== undefined;\r\n\r\n if (sliderOrderEnable) {\r\n imgObj = this.imageSliderService.orderArray(\r\n imgObj as [],\r\n this.sliderOrderType.toUpperCase()\r\n );\r\n }\r\n\r\n this.imageObj = imgObj.map((img: any, index: any) => {\r\n img['index'] = index;\r\n return img;\r\n });\r\n this.ligthboxImageObj = [...this.imageObj];\r\n this.totalImages = this.imageObj.length;\r\n // this.imageParentDivWidth = imgObj.length * this.sliderImageSizeWithPadding;\r\n } else {\r\n this.imageObj = [];\r\n this.ligthboxImageObj = [];\r\n this.totalImages = 0;\r\n this.imageParentDivWidth = 0;\r\n this.activeImageIndex = 0;\r\n }\r\n\r\n this.setSliderWidth();\r\n }\r\n\r\n setSliderWidth() {\r\n if (\r\n this.sliderMain &&\r\n this.sliderMain.nativeElement &&\r\n this.sliderMain.nativeElement.offsetWidth\r\n ) {\r\n this.sliderMainDivWidth = this.sliderMain.nativeElement.offsetWidth;\r\n }\r\n\r\n if (this.sliderMainDivWidth && this.sliderImageReceivedWidth) {\r\n if (typeof this.sliderImageReceivedWidth === 'number') {\r\n this.sliderImageWidth = this.sliderImageReceivedWidth;\r\n } else if (typeof this.sliderImageReceivedWidth === 'string') {\r\n if (this.sliderImageReceivedWidth.indexOf('px') >= 0) {\r\n this.sliderImageWidth = parseFloat(this.sliderImageReceivedWidth);\r\n } else if (this.sliderImageReceivedWidth.indexOf('%') >= 0) {\r\n this.sliderImageWidth = +(\r\n (this.sliderMainDivWidth *\r\n parseFloat(this.sliderImageReceivedWidth)) /\r\n 100\r\n ).toFixed(2);\r\n } else if (parseFloat(this.sliderImageReceivedWidth)) {\r\n this.sliderImageWidth = parseFloat(this.sliderImageReceivedWidth);\r\n }\r\n }\r\n }\r\n if (isPlatformBrowser(this.platformId)) {\r\n if (window && window.innerHeight && this.sliderImageReceivedHeight) {\r\n if (typeof this.sliderImageReceivedHeight === 'number') {\r\n this.sliderImageHeight = this.sliderImageReceivedHeight;\r\n } else if (typeof this.sliderImageReceivedHeight === 'string') {\r\n if (this.sliderImageReceivedHeight.indexOf('px') >= 0) {\r\n this.sliderImageHeight = parseFloat(this.sliderImageReceivedHeight);\r\n } else if (this.sliderImageReceivedHeight.indexOf('%') >= 0) {\r\n this.sliderImageHeight = +(\r\n (window.innerHeight *\r\n parseFloat(this.sliderImageReceivedHeight)) /\r\n 100\r\n ).toFixed(2);\r\n } else if (parseFloat(this.sliderImageReceivedHeight)) {\r\n this.sliderImageHeight = parseFloat(this.sliderImageReceivedHeight);\r\n }\r\n }\r\n }\r\n }\r\n this.sliderImageSizeWithPadding =\r\n this.sliderImageWidth + this.imageMargin * 2;\r\n this.imageParentDivWidth =\r\n this.imageObj.length * this.sliderImageSizeWithPadding;\r\n if (\r\n this.imageDiv &&\r\n this.imageDiv.nativeElement &&\r\n this.imageDiv.nativeElement.offsetWidth\r\n ) {\r\n const staticLeftPos =\r\n 0 -\r\n (this.sliderImageSizeWithPadding * this.visiableImageIndex +\r\n this.imageMargin * 2);\r\n this.leftPos = this.infinite\r\n ? -1 * this.sliderImageSizeWithPadding * this.slideImageCount\r\n : staticLeftPos;\r\n }\r\n this.nextPrevSliderButtonDisable();\r\n }\r\n\r\n imageOnClick(index: number) {\r\n this.activeImageIndex = index;\r\n if (this.imagePopup) {\r\n this.showLightbox();\r\n }\r\n this.imageClick.emit(index);\r\n }\r\n\r\n imageAutoSlide() {\r\n if (this.infinite && this.autoSlideCount && !this.ligthboxShow) {\r\n this.autoSlideInterval = setInterval(() => {\r\n this.next();\r\n }, this.autoSlideCount);\r\n }\r\n }\r\n\r\n imageMouseEnterHandler() {\r\n if (this.infinite && this.autoSlideCount && this.autoSlideInterval) {\r\n clearInterval(this.autoSlideInterval);\r\n }\r\n }\r\n\r\n prev() {\r\n if (!this.sliderPrevDisable) {\r\n if (this.infinite) {\r\n this.infinitePrevImg();\r\n } else {\r\n this.prevImg();\r\n }\r\n\r\n //this.arrowClick.emit(PREV_ARROW_CLICK_MESSAGE);\r\n this.sliderArrowDisableTeam(PREV_ARROW_CLICK_MESSAGE);\r\n this.getVisiableIndex();\r\n }\r\n }\r\n\r\n next() {\r\n if (!this.sliderNextDisable) {\r\n if (this.infinite) {\r\n this.infiniteNextImg();\r\n } else {\r\n this.nextImg();\r\n }\r\n\r\n //this.arrowClick.emit(NEXT_ARROW_CLICK_MESSAGE);\r\n this.sliderArrowDisableTeam(NEXT_ARROW_CLICK_MESSAGE);\r\n this.getVisiableIndex();\r\n }\r\n }\r\n\r\n prevImg() {\r\n if (\r\n 0 >=\r\n this.leftPos + this.sliderImageSizeWithPadding * this.slideImageCount\r\n ) {\r\n this.leftPos += this.sliderImageSizeWithPadding * this.slideImageCount;\r\n } else {\r\n this.leftPos = 0;\r\n }\r\n }\r\n\r\n nextImg() {\r\n if (\r\n this.imageParentDivWidth + this.leftPos - this.sliderMainDivWidth >\r\n this.sliderImageSizeWithPadding * this.slideImageCount\r\n ) {\r\n this.leftPos -= this.sliderImageSizeWithPadding * this.slideImageCount;\r\n } else if (\r\n this.imageParentDivWidth + this.leftPos - this.sliderMainDivWidth >\r\n 0\r\n ) {\r\n this.leftPos -=\r\n this.imageParentDivWidth + this.leftPos - this.sliderMainDivWidth;\r\n }\r\n }\r\n\r\n infinitePrevImg() {\r\n this.effectStyle = `all ${this.speed}s ease-in-out`;\r\n this.leftPos = 0;\r\n\r\n setTimeout(() => {\r\n this.effectStyle = 'none';\r\n this.leftPos =\r\n -1 * this.sliderImageSizeWithPadding * this.slideImageCount;\r\n for (let i = 0; i < this.slideImageCount; i++) {\r\n this.imageObj.unshift(\r\n this.imageObj[this.imageObj.length - this.slideImageCount - 1]\r\n );\r\n this.imageObj.pop();\r\n }\r\n }, this.speed * 1000);\r\n }\r\n\r\n infiniteNextImg() {\r\n this.effectStyle = `all ${this.speed}s ease-in-out`;\r\n this.leftPos = -2 * this.sliderImageSizeWithPadding * this.slideImageCount;\r\n setTimeout(() => {\r\n this.effectStyle = 'none';\r\n for (let i = 0; i < this.slideImageCount; i++) {\r\n this.imageObj.push(this.imageObj[this.slideImageCount]);\r\n this.imageObj.shift();\r\n }\r\n this.leftPos =\r\n -1 * this.sliderImageSizeWithPadding * this.slideImageCount;\r\n }, this.speed * 1000);\r\n }\r\n\r\n getVisiableIndex() {\r\n const currentIndex = Math.round(\r\n (Math.abs(this.leftPos) + this.sliderImageWidth) / this.sliderImageWidth\r\n );\r\n if (\r\n this.imageObj &&\r\n this.imageObj[currentIndex - 1] &&\r\n this.imageObj[currentIndex - 1]['index']\r\n ) {\r\n this.visiableImageIndex = this.imageObj[currentIndex - 1]['index'] ?? 0;\r\n }\r\n }\r\n\r\n /**\r\n * Disable slider left/right arrow when image moving\r\n */\r\n sliderArrowDisableTeam(msg: string) {\r\n this.sliderNextDisable = true;\r\n this.sliderPrevDisable = true;\r\n setTimeout(() => {\r\n this.nextPrevSliderButtonDisable(msg);\r\n }, this.speed * 1000);\r\n }\r\n\r\n nextPrevSliderButtonDisable(msg?: string) {\r\n this.sliderNextDisable = false;\r\n this.sliderPrevDisable = false;\r\n const actionMsg = {} as any;\r\n if (!this.infinite) {\r\n if (this.imageParentDivWidth + this.leftPos <= this.sliderMainDivWidth) {\r\n this.sliderNextDisable = true;\r\n }\r\n\r\n if (this.leftPos >= 0) {\r\n this.sliderPrevDisable = true;\r\n }\r\n\r\n actionMsg['prevDisable'] = this.sliderPrevDisable;\r\n actionMsg['nextDisable'] = this.sliderNextDisable;\r\n }\r\n\r\n if (msg) {\r\n this.arrowClick.emit({\r\n action: msg,\r\n ...actionMsg,\r\n });\r\n }\r\n }\r\n\r\n // for lightbox\r\n showLightbox() {\r\n if (this.imageObj.length) {\r\n this.imageMouseEnterHandler();\r\n this.ligthboxShow = true;\r\n this.elRef.nativeElement.ownerDocument.body.style.overflow = 'hidden';\r\n }\r\n }\r\n\r\n close() {\r\n this.ligthboxShow = false;\r\n this.elRef.nativeElement.ownerDocument.body.style.overflow = '';\r\n this.lightboxClose.emit();\r\n this.imageAutoSlide();\r\n }\r\n\r\n lightboxArrowClickHandler(event: any) {\r\n this.lightboxArrowClick.emit(event);\r\n }\r\n\r\n swipe(e: TouchEvent, when: string): void {\r\n const coord: [number, number] = [\r\n e.changedTouches[0].pageX,\r\n e.changedTouches[0].pageY,\r\n ];\r\n const time = new Date().getTime();\r\n\r\n if (when === 'start') {\r\n this.swipeCoord = coord;\r\n this.swipeTime = time;\r\n } else if (when === 'end' && this.swipeCoord && this.swipeTime) {\r\n const direction = [\r\n coord[0] - this.swipeCoord[0],\r\n coord[1] - this.swipeCoord[1],\r\n ];\r\n const duration = time - this.swipeTime;\r\n\r\n if (\r\n duration < 1000 && //\r\n Math.abs(direction[0]) > 30 && // Long enough\r\n Math.abs(direction[0]) > Math.abs(direction[1] * 3)\r\n ) {\r\n // Horizontal enough\r\n if (direction[0] < 0) {\r\n this.next();\r\n } else {\r\n this.prev();\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","<div class=\"ng-image-slider\" [ngStyle]=\"{'height':sliderImageHeight+'px'}\">\r\n <div class=\"ng-image-slider-container\">\r\n <div class=\"main\" [ngStyle]=\"{'height':sliderImageHeight+'px'}\" #sliderMain>\r\n @if (imageObj.length) {\r\n <div class=\"main-inner\" [ngClass]=\"{'with-ng-main-pagination': paginationShow}\"\r\n [ngStyle]=\"{'margin-left':leftPos+'px', 'width':imageParentDivWidth+'px', 'transition': effectStyle}\"\r\n (touchstart)=\"swipe($event, 'start')\" (touchend)=\"swipe($event, 'end')\">\r\n @for (img of imageObj; track img; let i = $index) {\r\n <div\r\n [ngClass]=\"{'image-popup': imagePopup, 'selected-image': activeImageIndex == i}\"\r\n [ngStyle]=\"{'width':sliderImageWidth+'px', 'margin-left':imageMargin+'px', 'margin-right':imageMargin+'px'}\"\r\n class=\"img-div\" (click)=\"imageOnClick(img.index)\" (mouseenter)=\"stopSlideOnHover && imageMouseEnterHandler()\"\r\n (mouseleave)=\"stopSlideOnHover && imageAutoSlide()\" #imageDiv>\r\n <custom-img [imageUrl]=\"img?.thumbImage || img?.posterImage || img?.video\"\r\n [isVideo]=\"!!(img?.posterImage || img?.video)\" [alt]=\"img?.alt || img?.title || ''\"\r\n [title]=\"img?.title || img?.alt || ''\" [direction]=\"textDirection\" [ratio]=\"manageImageRatio\"\r\n [lazy]=\"lazyLoading\">\r\n </custom-img>\r\n @if (img?.title) {\r\n <div [dir]=\"textDirection\" class=\"caption\">{{ img?.title }}</div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n }\r\n @if (!imageObj.length) {\r\n <div class=\"ng-image-slider-error\">\r\n <span class=\"ng-image-slider-loader\"></span>\r\n </div>\r\n }\r\n @if (showArrowButton && imageObj.length > 1) {\r\n <a [ngClass]=\"{'disable': sliderPrevDisable}\"\r\n class=\"prev icons prev-icon\" (click)=\"prev()\" (mouseenter)=\"stopSlideOnHover && imageMouseEnterHandler()\"\r\n (mouseleave)=\"stopSlideOnHover && imageAutoSlide()\">&lsaquo;</a>\r\n }\r\n @if (showArrowButton && imageObj.length > 1) {\r\n <a [ngClass]=\"{'disable': sliderNextDisable}\"\r\n class=\"next icons next-icon\" (click)=\"next()\" (mouseenter)=\"imageMouseEnterHandler()\"\r\n (mouseleave)=\"imageAutoSlide()\">&rsaquo;</a>\r\n }\r\n </div>\r\n @if (imageObj.length && paginationShow) {\r\n <div class=\"ng-main-pagination\">{{visiableImageIndex + 1}} of\r\n {{totalImages}}</div>\r\n }\r\n </div>\r\n</div>\r\n@if (ligthboxShow) {\r\n <div>\r\n <slider-lightbox [paginationShow]=\"paginationShow\" [showVideoControls]=\"showVideoControls\"\r\n [arrowKeyMove]=\"arrowKeyMove\" [images]=\"ligthboxImageObj\" [infinite]=\"infinite\" [animationSpeed]=\"speed\"\r\n [imageIndex]=\"activeImageIndex\" [show]=\"ligthboxShow\" [direction]=\"textDirection\" [videoAutoPlay]=\"videoAutoPlay\"\r\n (prevImage)=\"lightboxArrowClickHandler($event)\" (nextImage)=\"lightboxArrowClickHandler($event)\" (close)=\"close()\">\r\n </slider-lightbox>\r\n </div>\r\n}","/*\r\n * Public API Surface of rm-image-slider\r\n */\r\n\r\nexport * from './lib/rm-image-slider.service';\r\nexport * from './lib/rm-image-slider.component';\r\nexport * from './lib/interface';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i3","i1.RmImageSliderService","i2"],"mappings":"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"}
package/index.d.ts ADDED
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ /// <amd-module name="rm-image-slider" />
5
+ export * from './public-api';
@@ -0,0 +1,10 @@
1
+ export interface ImageObject {
2
+ image?: string;
3
+ thumbImage?: string;
4
+ alt?: string;
5
+ title?: string;
6
+ order?: number;
7
+ index: number;
8
+ posterImage?: string;
9
+ video?: string;
10
+ }
@@ -0,0 +1,92 @@
1
+ import { ChangeDetectorRef, OnInit, OnChanges, DoCheck, SimpleChanges, AfterViewInit, OnDestroy, EventEmitter, ElementRef } from '@angular/core';
2
+ import { RmImageSliderService } from './rm-image-slider.service';
3
+ import { ImageObject } from './interface';
4
+ import * as i0 from "@angular/core";
5
+ export declare class RmImageSliderComponent implements OnChanges, OnInit, DoCheck, AfterViewInit, OnDestroy {
6
+ private cdRef;
7
+ private platformId;
8
+ imageSliderService: RmImageSliderService;
9
+ private elRef;
10
+ sliderMainDivWidth: number;
11
+ imageParentDivWidth: number;
12
+ imageObj: Array<ImageObject>;
13
+ ligthboxImageObj: Array<ImageObject>;
14
+ totalImages: number;
15
+ leftPos: number;
16
+ effectStyle: string;
17
+ speed: number;
18
+ sliderPrevDisable: boolean;
19
+ sliderNextDisable: boolean;
20
+ slideImageCount: number;
21
+ sliderImageWidth: number;
22
+ sliderImageReceivedWidth: number | string;
23
+ sliderImageHeight: number;
24
+ sliderImageReceivedHeight: number | string;
25
+ sliderImageSizeWithPadding: number;
26
+ autoSlideCount: number;
27
+ stopSlideOnHover: boolean;
28
+ autoSlideInterval: any;
29
+ showArrowButton: boolean;
30
+ textDirection: string;
31
+ imageMargin: number;
32
+ sliderOrderType: string;
33
+ private swipeCoord?;
34
+ private swipeTime?;
35
+ ligthboxShow: boolean;
36
+ activeImageIndex: number;
37
+ visiableImageIndex: number;
38
+ sliderMain: any;
39
+ imageDiv: any;
40
+ set imageSize(data: any);
41
+ infinite: boolean;
42
+ imagePopup: boolean;
43
+ set direction(dir: string);
44
+ set animationSpeed(data: number);
45
+ images: Array<object>;
46
+ set slideImage(count: any);
47
+ set autoSlide(count: any);
48
+ set showArrow(flag: any);
49
+ set orderType(data: string);
50
+ videoAutoPlay: boolean;
51
+ paginationShow: boolean;
52
+ arrowKeyMove: boolean;
53
+ manageImageRatio: boolean;
54
+ showVideoControls: boolean;
55
+ set defaultActiveImage(activeIndex: number);
56
+ lazyLoading: boolean;
57
+ imageClick: EventEmitter<number>;
58
+ arrowClick: EventEmitter<object>;
59
+ lightboxArrowClick: EventEmitter<object>;
60
+ lightboxClose: EventEmitter<object>;
61
+ onResize(event: any): void;
62
+ handleKeyboardEvent(event: KeyboardEvent): void;
63
+ constructor(cdRef: ChangeDetectorRef, platformId: Object, imageSliderService: RmImageSliderService, elRef: ElementRef);
64
+ ngOnInit(): void;
65
+ ngAfterViewInit(): void;
66
+ ngOnDestroy(): void;
67
+ ngOnChanges(changes: SimpleChanges): void;
68
+ ngDoCheck(): void;
69
+ setSliderImages(imgObj: any): void;
70
+ setSliderWidth(): void;
71
+ imageOnClick(index: number): void;
72
+ imageAutoSlide(): void;
73
+ imageMouseEnterHandler(): void;
74
+ prev(): void;
75
+ next(): void;
76
+ prevImg(): void;
77
+ nextImg(): void;
78
+ infinitePrevImg(): void;
79
+ infiniteNextImg(): void;
80
+ getVisiableIndex(): void;
81
+ /**
82
+ * Disable slider left/right arrow when image moving
83
+ */
84
+ sliderArrowDisableTeam(msg: string): void;
85
+ nextPrevSliderButtonDisable(msg?: string): void;
86
+ showLightbox(): void;
87
+ close(): void;
88
+ lightboxArrowClickHandler(event: any): void;
89
+ swipe(e: TouchEvent, when: string): void;
90
+ static ɵfac: i0.ɵɵFactoryDeclaration<RmImageSliderComponent, never>;
91
+ static ɵcmp: i0.ɵɵComponentDeclaration<RmImageSliderComponent, "rm-image-slider", never, { "imageSize": { "alias": "imageSize"; "required": false; }; "infinite": { "alias": "infinite"; "required": false; }; "imagePopup": { "alias": "imagePopup"; "required": false; }; "direction": { "alias": "direction"; "required": false; }; "animationSpeed": { "alias": "animationSpeed"; "required": false; }; "images": { "alias": "images"; "required": false; }; "slideImage": { "alias": "slideImage"; "required": false; }; "autoSlide": { "alias": "autoSlide"; "required": false; }; "showArrow": { "alias": "showArrow"; "required": false; }; "orderType": { "alias": "orderType"; "required": false; }; "videoAutoPlay": { "alias": "videoAutoPlay"; "required": false; }; "paginationShow": { "alias": "paginationShow"; "required": false; }; "arrowKeyMove": { "alias": "arrowKeyMove"; "required": false; }; "manageImageRatio": { "alias": "manageImageRatio"; "required": false; }; "showVideoControls": { "alias": "showVideoControls"; "required": false; }; "defaultActiveImage": { "alias": "defaultActiveImage"; "required": false; }; "lazyLoading": { "alias": "lazyLoading"; "required": false; }; }, { "imageClick": "imageClick"; "arrowClick": "arrowClick"; "lightboxArrowClick": "lightboxArrowClick"; "lightboxClose": "lightboxClose"; }, never, never, true, never>;
92
+ }
@@ -0,0 +1,9 @@
1
+ import * as i0 from "@angular/core";
2
+ export declare class RmImageSliderService {
3
+ constructor();
4
+ isBase64(str: string): boolean;
5
+ base64FileExtension(str: string): string;
6
+ orderArray(arr?: never[], orderType?: string): never[];
7
+ static ɵfac: i0.ɵɵFactoryDeclaration<RmImageSliderService, never>;
8
+ static ɵprov: i0.ɵɵInjectableDeclaration<RmImageSliderService>;
9
+ }
@@ -0,0 +1,34 @@
1
+ import { OnChanges, SimpleChanges } from '@angular/core';
2
+ import { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';
3
+ import { RmImageSliderService } from './../rm-image-slider.service';
4
+ import * as i0 from "@angular/core";
5
+ export declare class SliderCustomImageComponent implements OnChanges {
6
+ imageSliderService: RmImageSliderService;
7
+ private sanitizer;
8
+ YOUTUBE: string;
9
+ IMAGE: string;
10
+ VIDEO: string;
11
+ fileUrl: SafeResourceUrl;
12
+ fileExtension: string;
13
+ type: string;
14
+ imageLoading: boolean;
15
+ showVideo: boolean;
16
+ videoAutoPlay: boolean;
17
+ showVideoControls: number;
18
+ currentImageIndex: number;
19
+ imageIndex: number;
20
+ speed: number;
21
+ imageUrl: any;
22
+ isVideo: boolean;
23
+ alt: String;
24
+ title: String;
25
+ direction: string;
26
+ ratio: boolean;
27
+ lazy: boolean;
28
+ constructor(imageSliderService: RmImageSliderService, sanitizer: DomSanitizer, document: Document);
29
+ ngOnChanges(changes: SimpleChanges): void;
30
+ setUrl(): void;
31
+ videoClickHandler(event: any): void;
32
+ static ɵfac: i0.ɵɵFactoryDeclaration<SliderCustomImageComponent, never>;
33
+ static ɵcmp: i0.ɵɵComponentDeclaration<SliderCustomImageComponent, "custom-img", never, { "showVideo": { "alias": "showVideo"; "required": false; }; "videoAutoPlay": { "alias": "videoAutoPlay"; "required": false; }; "showVideoControls": { "alias": "showVideoControls"; "required": false; }; "currentImageIndex": { "alias": "currentImageIndex"; "required": false; }; "imageIndex": { "alias": "imageIndex"; "required": false; }; "speed": { "alias": "speed"; "required": false; }; "imageUrl": { "alias": "imageUrl"; "required": false; }; "isVideo": { "alias": "isVideo"; "required": false; }; "alt": { "alias": "alt"; "required": false; }; "title": { "alias": "title"; "required": false; }; "direction": { "alias": "direction"; "required": false; }; "ratio": { "alias": "ratio"; "required": false; }; "lazy": { "alias": "lazy"; "required": false; }; }, {}, never, never, true, never>;
34
+ }
@@ -0,0 +1,56 @@
1
+ import { ChangeDetectorRef, OnInit, AfterViewInit, OnDestroy, EventEmitter, ElementRef } from '@angular/core';
2
+ import { DomSanitizer } from '@angular/platform-browser';
3
+ import { ImageObject } from '../interface';
4
+ import * as i0 from "@angular/core";
5
+ export declare class SliderLightboxComponent implements OnInit, AfterViewInit, OnDestroy {
6
+ private cdRef;
7
+ private sanitizer;
8
+ private elRef;
9
+ private document;
10
+ totalImages: number;
11
+ nextImageIndex: number;
12
+ popupWidth: number;
13
+ marginLeft: number;
14
+ imageFullscreenView: boolean;
15
+ lightboxPrevDisable: boolean;
16
+ lightboxNextDisable: boolean;
17
+ showLoading: boolean;
18
+ effectStyle: string;
19
+ speed: number;
20
+ title: string;
21
+ currentImageIndex: number;
22
+ private swipeLightboxImgCoord?;
23
+ private swipeLightboxImgTime?;
24
+ lightboxDiv: ElementRef;
25
+ lightboxImageDiv: ElementRef;
26
+ images: Array<ImageObject>;
27
+ set imageIndex(index: number);
28
+ set show(visiableFlag: boolean);
29
+ videoAutoPlay: boolean;
30
+ direction: string;
31
+ paginationShow: boolean;
32
+ set animationSpeed(data: number);
33
+ infinite: boolean;
34
+ arrowKeyMove: boolean;
35
+ showVideoControls: boolean;
36
+ close: EventEmitter<any>;
37
+ prevImage: EventEmitter<any>;
38
+ nextImage: EventEmitter<any>;
39
+ onResize(event: any): void;
40
+ handleKeyboardEvent(event: KeyboardEvent): void;
41
+ constructor(cdRef: ChangeDetectorRef, sanitizer: DomSanitizer, elRef: ElementRef, document: any);
42
+ ngOnInit(): void;
43
+ ngAfterViewInit(): void;
44
+ ngOnDestroy(): void;
45
+ setPopupSliderWidth(): void;
46
+ closeLightbox(): void;
47
+ prevImageLightbox(): void;
48
+ nextImageLightbox(): void;
49
+ nextPrevDisable(): void;
50
+ applyButtonDisableCondition(): void;
51
+ getImageData(): void;
52
+ resetState(): void;
53
+ swipeLightboxImg(e: TouchEvent, when: string): void;
54
+ static ɵfac: i0.ɵɵFactoryDeclaration<SliderLightboxComponent, never>;
55
+ static ɵcmp: i0.ɵɵComponentDeclaration<SliderLightboxComponent, "slider-lightbox", never, { "images": { "alias": "images"; "required": false; }; "imageIndex": { "alias": "imageIndex"; "required": false; }; "show": { "alias": "show"; "required": false; }; "videoAutoPlay": { "alias": "videoAutoPlay"; "required": false; }; "direction": { "alias": "direction"; "required": false; }; "paginationShow": { "alias": "paginationShow"; "required": false; }; "animationSpeed": { "alias": "animationSpeed"; "required": false; }; "infinite": { "alias": "infinite"; "required": false; }; "arrowKeyMove": { "alias": "arrowKeyMove"; "required": false; }; "showVideoControls": { "alias": "showVideoControls"; "required": false; }; }, { "close": "close"; "prevImage": "prevImage"; "nextImage": "nextImage"; }, never, never, true, never>;
56
+ }
package/package.json ADDED
@@ -0,0 +1,54 @@
1
+ {
2
+ "name": "rm-image-slider",
3
+ "version": "0.0.0-watch+1726394754003",
4
+ "description": "Angular Image slider with lightbox. An Angular responsive image slider with lightbox popup. Also support youtube url, image base64 string and mp4 video urls and base64 string.",
5
+ "license": "MIT",
6
+ "keywords": [
7
+ "Angular",
8
+ "Angular image slider",
9
+ "Angular video slider",
10
+ "Angular Carousel",
11
+ "responsive slider",
12
+ "slideshow",
13
+ "carousel",
14
+ "slider",
15
+ "security",
16
+ "performance",
17
+ "treeshakable",
18
+ "tree-shakable"
19
+ ],
20
+ "author": {
21
+ "name": "Rajat Malik",
22
+ "email": "mr.rajatmalik@gmail.com",
23
+ "url": "https://www.linkedin.com/in/errajatmalik/"
24
+ },
25
+ "homepage": "https://github.com/malikrajat/rm-image-slider#readme",
26
+ "repository": {
27
+ "type": "git",
28
+ "url": "https://github.com/malikrajat/rm-image-slider.git"
29
+ },
30
+ "bugs": {
31
+ "url": "https://github.com/malikrajat/rm-image-slider/issues"
32
+ },
33
+ "peerDependencies": {
34
+ "@angular/common": "^18.1.4",
35
+ "@angular/core": "^18.1.4"
36
+ },
37
+ "dependencies": {
38
+ "tslib": "^2.3.0"
39
+ },
40
+ "sideEffects": false,
41
+ "module": "fesm2022/rm-image-slider.mjs",
42
+ "typings": "index.d.ts",
43
+ "exports": {
44
+ "./package.json": {
45
+ "default": "./package.json"
46
+ },
47
+ ".": {
48
+ "types": "./index.d.ts",
49
+ "esm2022": "./esm2022/rm-image-slider.mjs",
50
+ "esm": "./esm2022/rm-image-slider.mjs",
51
+ "default": "./fesm2022/rm-image-slider.mjs"
52
+ }
53
+ }
54
+ }
@@ -0,0 +1,3 @@
1
+ export * from './lib/rm-image-slider.service';
2
+ export * from './lib/rm-image-slider.component';
3
+ export * from './lib/interface';