@hantarex/ngx-carousel 20.0.7 → 21.0.1

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.
@@ -1,21 +1,21 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Injectable, TemplateRef, Component, Input, ViewChild, input, output, Directive, HostListener, EventEmitter, PLATFORM_ID, Inject, Output, ContentChildren } from '@angular/core';
3
- import * as i2 from '@angular/common';
4
- import { CommonModule, isPlatformBrowser } from '@angular/common';
2
+ import { Injectable, TemplateRef, ViewChild, Input, Component, input, output, HostListener, Directive, EventEmitter, PLATFORM_ID, ContentChildren, Output, Inject } from '@angular/core';
5
3
  import * as i1 from '@angular/platform-browser';
6
4
  import { ListKeyManager } from '@angular/cdk/a11y';
7
5
  import { Subject, BehaviorSubject, takeUntil, filter, interval } from 'rxjs';
8
6
  import * as i1$1 from '@angular/animations';
9
7
  import { animate, style } from '@angular/animations';
8
+ import * as i2 from '@angular/common';
9
+ import { isPlatformBrowser, CommonModule } from '@angular/common';
10
10
  import { MatIcon } from '@angular/material/icon';
11
11
  import { MatIconButton, MatMiniFabButton } from '@angular/material/button';
12
12
 
13
13
  class NgxCarouselService {
14
14
  constructor() { }
15
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.7", ngImport: i0, type: NgxCarouselService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
16
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.1.7", ngImport: i0, type: NgxCarouselService, providedIn: 'root' }); }
15
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: NgxCarouselService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
16
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: NgxCarouselService, providedIn: 'root' }); }
17
17
  }
18
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.7", ngImport: i0, type: NgxCarouselService, decorators: [{
18
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: NgxCarouselService, decorators: [{
19
19
  type: Injectable,
20
20
  args: [{
21
21
  providedIn: 'root',
@@ -36,14 +36,12 @@ class CarouselSlideComponent {
36
36
  this.image = this.sanitizer.bypassSecurityTrustStyle(`url("${this.image}")`);
37
37
  }
38
38
  }
39
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.7", ngImport: i0, type: CarouselSlideComponent, deps: [{ token: i1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component }); }
40
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.1.7", type: CarouselSlideComponent, isStandalone: true, selector: "ngx-carousel-slide", inputs: { image: "image", overlayColor: "overlayColor", hideOverlay: "hideOverlay", ariaLabel: "ariaLabel", disabled: "disabled", load: "load" }, viewQueries: [{ propertyName: "templateRef", first: true, predicate: TemplateRef, descendants: true, static: true }], ngImport: i0, template: "<ng-template>\n <div class=\"carousel-slide\" [style.background-image]=\"image\">\n <div class=\"carousel-slide-content\"><ng-content></ng-content></div>\n <div\n *ngIf=\"!hideOverlay\"\n class=\"carousel-slide-overlay\"\n [attr.aria-label] = \"ariaLabel\"\n [style.background-color]=\"overlayColor\"\n ></div>\n </div>\n</ng-template>\n", styles: [".carousel-slide{width:100%;height:100%;position:absolute;z-index:auto;background-size:cover;background-repeat:no-repeat;background-position:center}.carousel-slide-overlay{width:100%;height:100%;position:absolute;z-index:auto}.carousel-slide-content{width:100%;height:100%;position:absolute;z-index:1}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
39
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: CarouselSlideComponent, deps: [{ token: i1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component }); }
40
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.2", type: CarouselSlideComponent, isStandalone: true, selector: "ngx-carousel-slide", inputs: { image: "image", overlayColor: "overlayColor", hideOverlay: "hideOverlay", ariaLabel: "ariaLabel", disabled: "disabled", load: "load" }, viewQueries: [{ propertyName: "templateRef", first: true, predicate: TemplateRef, descendants: true, static: true }], ngImport: i0, template: "<ng-template>\n <div class=\"carousel-slide\" [style.background-image]=\"image\">\n <div class=\"carousel-slide-content\"><ng-content></ng-content></div>\n @if (!hideOverlay) {\n <div\n class=\"carousel-slide-overlay\"\n [attr.aria-label] = \"ariaLabel\"\n [style.background-color]=\"overlayColor\"\n ></div>\n }\n </div>\n</ng-template>\n", styles: [".carousel-slide{width:100%;height:100%;position:absolute;z-index:auto;background-size:cover;background-repeat:no-repeat;background-position:center}.carousel-slide-overlay{width:100%;height:100%;position:absolute;z-index:auto}.carousel-slide-content{width:100%;height:100%;position:absolute;z-index:1}\n"] }); }
41
41
  }
42
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.7", ngImport: i0, type: CarouselSlideComponent, decorators: [{
42
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: CarouselSlideComponent, decorators: [{
43
43
  type: Component,
44
- args: [{ selector: 'ngx-carousel-slide', imports: [
45
- CommonModule,
46
- ], template: "<ng-template>\n <div class=\"carousel-slide\" [style.background-image]=\"image\">\n <div class=\"carousel-slide-content\"><ng-content></ng-content></div>\n <div\n *ngIf=\"!hideOverlay\"\n class=\"carousel-slide-overlay\"\n [attr.aria-label] = \"ariaLabel\"\n [style.background-color]=\"overlayColor\"\n ></div>\n </div>\n</ng-template>\n", styles: [".carousel-slide{width:100%;height:100%;position:absolute;z-index:auto;background-size:cover;background-repeat:no-repeat;background-position:center}.carousel-slide-overlay{width:100%;height:100%;position:absolute;z-index:auto}.carousel-slide-content{width:100%;height:100%;position:absolute;z-index:1}\n"] }]
44
+ args: [{ selector: 'ngx-carousel-slide', imports: [], template: "<ng-template>\n <div class=\"carousel-slide\" [style.background-image]=\"image\">\n <div class=\"carousel-slide-content\"><ng-content></ng-content></div>\n @if (!hideOverlay) {\n <div\n class=\"carousel-slide-overlay\"\n [attr.aria-label] = \"ariaLabel\"\n [style.background-color]=\"overlayColor\"\n ></div>\n }\n </div>\n</ng-template>\n", styles: [".carousel-slide{width:100%;height:100%;position:absolute;z-index:auto;background-size:cover;background-repeat:no-repeat;background-position:center}.carousel-slide-overlay{width:100%;height:100%;position:absolute;z-index:auto}.carousel-slide-content{width:100%;height:100%;position:absolute;z-index:1}\n"] }]
47
45
  }], ctorParameters: () => [{ type: i1.DomSanitizer }], propDecorators: { image: [{
48
46
  type: Input,
49
47
  args: [{ required: true }]
@@ -65,8 +63,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.7", ngImpor
65
63
  class SwipeDirective {
66
64
  constructor(el) {
67
65
  this.el = el;
68
- this.minSwipeDistance = input(30);
69
- this.isDebug = input(false);
66
+ this.minSwipeDistance = input(30, ...(ngDevMode ? [{ debugName: "minSwipeDistance" }] : []));
67
+ this.isDebug = input(false, ...(ngDevMode ? [{ debugName: "isDebug" }] : []));
70
68
  this.swipeLeft = output();
71
69
  this.swipeRight = output();
72
70
  this.swipeUp = output();
@@ -149,16 +147,16 @@ class SwipeDirective {
149
147
  }
150
148
  }
151
149
  }
152
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.7", ngImport: i0, type: SwipeDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
153
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.1.7", type: SwipeDirective, isStandalone: true, selector: "[appSwipe]", inputs: { minSwipeDistance: { classPropertyName: "minSwipeDistance", publicName: "minSwipeDistance", isSignal: true, isRequired: false, transformFunction: null }, isDebug: { classPropertyName: "isDebug", publicName: "isDebug", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { swipeLeft: "swipeLeft", swipeRight: "swipeRight", swipeUp: "swipeUp", swipeDown: "swipeDown", onMove: "onMove" }, host: { listeners: { "touchstart": "onTouchStart($event)", "touchend": "onTouchEnd($event)", "touchmove": "onTouchMove($event)" } }, ngImport: i0 }); }
150
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: SwipeDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
151
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.1.2", type: SwipeDirective, isStandalone: true, selector: "[appSwipe]", inputs: { minSwipeDistance: { classPropertyName: "minSwipeDistance", publicName: "minSwipeDistance", isSignal: true, isRequired: false, transformFunction: null }, isDebug: { classPropertyName: "isDebug", publicName: "isDebug", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { swipeLeft: "swipeLeft", swipeRight: "swipeRight", swipeUp: "swipeUp", swipeDown: "swipeDown", onMove: "onMove" }, host: { listeners: { "touchstart": "onTouchStart($event)", "touchend": "onTouchEnd($event)", "touchmove": "onTouchMove($event)" } }, ngImport: i0 }); }
154
152
  }
155
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.7", ngImport: i0, type: SwipeDirective, decorators: [{
153
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: SwipeDirective, decorators: [{
156
154
  type: Directive,
157
155
  args: [{
158
156
  selector: '[appSwipe]',
159
157
  standalone: true,
160
158
  }]
161
- }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { onTouchStart: [{
159
+ }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { minSwipeDistance: [{ type: i0.Input, args: [{ isSignal: true, alias: "minSwipeDistance", required: false }] }], isDebug: [{ type: i0.Input, args: [{ isSignal: true, alias: "isDebug", required: false }] }], swipeLeft: [{ type: i0.Output, args: ["swipeLeft"] }], swipeRight: [{ type: i0.Output, args: ["swipeRight"] }], swipeUp: [{ type: i0.Output, args: ["swipeUp"] }], swipeDown: [{ type: i0.Output, args: ["swipeDown"] }], onMove: [{ type: i0.Output, args: ["onMove"] }], onTouchStart: [{
162
160
  type: HostListener,
163
161
  args: ['touchstart', ['$event']]
164
162
  }], onTouchEnd: [{
@@ -225,7 +223,7 @@ class NgxCarouselComponent {
225
223
  this.platformId = platformId;
226
224
  this.timings = '250ms ease-in';
227
225
  this.lazyLoad = false;
228
- this.isDebug = input(false);
226
+ this.isDebug = input(false, ...(ngDevMode ? [{ debugName: "isDebug" }] : []));
229
227
  this.svgIconOverrides = {
230
228
  arrowBack: '',
231
229
  arrowForward: ''
@@ -456,10 +454,10 @@ class NgxCarouselComponent {
456
454
  stopTimer() {
457
455
  this.timerStop$.next(true);
458
456
  }
459
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.7", ngImport: i0, type: NgxCarouselComponent, deps: [{ token: i1$1.AnimationBuilder }, { token: i0.Renderer2 }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Component }); }
460
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.1.7", type: NgxCarouselComponent, isStandalone: true, selector: "ngx-ngx-carousel", inputs: { timings: { classPropertyName: "timings", publicName: "timings", isSignal: false, isRequired: false, transformFunction: null }, lazyLoad: { classPropertyName: "lazyLoad", publicName: "lazyLoad", isSignal: false, isRequired: false, transformFunction: null }, isDebug: { classPropertyName: "isDebug", publicName: "isDebug", isSignal: true, isRequired: false, transformFunction: null }, svgIconOverrides: { classPropertyName: "svgIconOverrides", publicName: "svgIconOverrides", isSignal: false, isRequired: false, transformFunction: null }, autoplay: { classPropertyName: "autoplay", publicName: "autoplay", isSignal: false, isRequired: false, transformFunction: null }, interval: { classPropertyName: "interval", publicName: "interval", isSignal: false, isRequired: false, transformFunction: null }, loop: { classPropertyName: "loop", publicName: "loop", isSignal: false, isRequired: false, transformFunction: null }, hideArrows: { classPropertyName: "hideArrows", publicName: "hideArrows", isSignal: false, isRequired: false, transformFunction: null }, hideIndicators: { classPropertyName: "hideIndicators", publicName: "hideIndicators", isSignal: false, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: false, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: false, isRequired: false, transformFunction: null }, maxWidth: { classPropertyName: "maxWidth", publicName: "maxWidth", isSignal: false, isRequired: false, transformFunction: null }, maintainAspectRatio: { classPropertyName: "maintainAspectRatio", publicName: "maintainAspectRatio", isSignal: false, isRequired: false, transformFunction: null }, proportion: { classPropertyName: "proportion", publicName: "proportion", isSignal: false, isRequired: false, transformFunction: null }, slideHeight: { classPropertyName: "slideHeight", publicName: "slideHeight", isSignal: false, isRequired: false, transformFunction: null }, slides: { classPropertyName: "slides", publicName: "slides", isSignal: false, isRequired: false, transformFunction: null }, useKeyboard: { classPropertyName: "useKeyboard", publicName: "useKeyboard", isSignal: false, isRequired: false, transformFunction: null }, useMouseWheel: { classPropertyName: "useMouseWheel", publicName: "useMouseWheel", isSignal: false, isRequired: false, transformFunction: null }, orientation: { classPropertyName: "orientation", publicName: "orientation", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { changeEmitter: "changeEmitter" }, host: { listeners: { "keyup": "onKeyUp($event)", "mouseenter": "onMouseEnter()", "mouseleave": "onMouseLeave()", "mousewheel": "onMouseWheel($event)", "window:resize": "onResize($event)" } }, queries: [{ propertyName: "slidesList", predicate: CarouselSlideComponent }], viewQueries: [{ propertyName: "carouselContainer", first: true, predicate: ["carouselContainer"], descendants: true }, { propertyName: "carouselList", first: true, predicate: ["carouselList"], descendants: true }], ngImport: i0, template: "<div\n #carouselContainer\n class=\"carousel\"\n tabindex=\"0\"\n [style.max-width]=\"maxWidth\"\n [style.height]=\"!maintainAspectRatio ? '100%' : 'auto'\"\n>\n <ul\n #carouselList\n class=\"carousel-list\"\n role=\"listbox\"\n [attr.aria-label]=\"ariaLabel\"\n [style.flex-direction]=\"orientation === 'rtl' ? 'row-reverse' : 'row'\"\n [style.height]=\"!maintainAspectRatio ? '100%' : 'auto'\"\n >\n <li\n #carouselSlide\n *ngFor=\"let slide of slidesList\"\n class=\"carousel-slide\"\n role=\"option\"\n appSwipe\n [isDebug]=\"isDebug()\"\n (onMove)=\"onPan($event.x, carouselSlide)\"\n (swipeLeft)=\"onPanEnd($event, carouselSlide)\"\n (swipeRight)=\"onPanEnd($event, carouselSlide)\"\n [style.padding-bottom]=\"maintainAspectRatio && proportion ? proportion + '%': '0px'\"\n [style.height]=\"!maintainAspectRatio && slideHeight ? slideHeight : '0px'\"\n >\n @if (slide.load && slide.templateRef) {\n <ng-container [ngTemplateOutlet]=\"slide.templateRef\"></ng-container>\n }\n </li>\n </ul>\n\n <button\n *ngIf=\"!hideArrows\"\n mat-icon-button\n type=\"button\"\n tabindex=\"-1\"\n aria-label=\"Previous slide\"\n [color]=\"color\"\n [disabled]=\"!loop && currentIndex == 0\"\n (click)=\"previous()\"\n >\n <mat-icon\n *ngIf=\"svgIconOverrides.arrowBack; else: defaultArrowBack\"\n [svgIcon]=\"svgIconOverrides.arrowBack\"\n ></mat-icon>\n <ng-template #defaultArrowBack>\n <mat-icon>arrow_back</mat-icon>\n </ng-template>\n </button>\n <button\n *ngIf=\"!hideArrows\"\n mat-icon-button\n type=\"button\"\n tabindex=\"-1\"\n aria-label=\"Next slide\"\n [color]=\"color\"\n [disabled]=\"!loop && currentIndex == slidesList!.length - 1\"\n (click)=\"next()\"\n >\n <mat-icon\n *ngIf=\"svgIconOverrides.arrowForward; else: defaultArrowForward\"\n [svgIcon]=\"svgIconOverrides.arrowForward\"\n ></mat-icon>\n <ng-template #defaultArrowForward>\n <mat-icon>arrow_forward</mat-icon>\n </ng-template>\n </button>\n\n <div\n *ngIf=\"!hideIndicators\"\n class=\"carousel-indicators\"\n tabindex=\"-1\"\n [style.flex-direction]=\"orientation === 'rtl' ? 'row-reverse' : 'row'\"\n >\n <button\n *ngFor=\"let slide of slidesList; let i = index\"\n type=\"button\"\n tabindex=\"-1\"\n mat-mini-fab\n [color]=\"color\"\n [attr.aria-label]=\"'Slide #' + i\"\n [disabled]=\"i == currentIndex\"\n (click)=\"slideTo(i)\"\n (focus)=\"carouselContainer.focus()\"\n ></button>\n </div>\n</div>\n", styles: [".carousel{width:100%;position:relative;overflow:hidden;outline:none}.carousel>button{position:absolute;z-index:1;top:50%;transform:translateY(-50%)}.carousel>button:first-of-type{left:30px}.carousel>button:last-of-type{right:30px}.carousel-list{width:100%;margin:0;padding:0;list-style:none;display:flex;position:relative}.carousel-slide{width:100%;height:0;display:flex;flex-shrink:0;position:relative}.carousel-slide:hover{cursor:grab}.carousel-indicators{display:flex;position:absolute;bottom:15px;z-index:1;left:50%;transform:translate(-50%);outline:none}.carousel-indicators>button{width:10px;height:10px;margin:7.5px}\n"], dependencies: [{ kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: MatMiniFabButton, selector: "button[mat-mini-fab]", exportAs: ["matButton"] }, { kind: "directive", type: SwipeDirective, selector: "[appSwipe]", inputs: ["minSwipeDistance", "isDebug"], outputs: ["swipeLeft", "swipeRight", "swipeUp", "swipeDown", "onMove"] }] }); }
457
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: NgxCarouselComponent, deps: [{ token: i1$1.AnimationBuilder }, { token: i0.Renderer2 }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Component }); }
458
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.2", type: NgxCarouselComponent, isStandalone: true, selector: "ngx-ngx-carousel", inputs: { timings: { classPropertyName: "timings", publicName: "timings", isSignal: false, isRequired: false, transformFunction: null }, lazyLoad: { classPropertyName: "lazyLoad", publicName: "lazyLoad", isSignal: false, isRequired: false, transformFunction: null }, isDebug: { classPropertyName: "isDebug", publicName: "isDebug", isSignal: true, isRequired: false, transformFunction: null }, svgIconOverrides: { classPropertyName: "svgIconOverrides", publicName: "svgIconOverrides", isSignal: false, isRequired: false, transformFunction: null }, autoplay: { classPropertyName: "autoplay", publicName: "autoplay", isSignal: false, isRequired: false, transformFunction: null }, interval: { classPropertyName: "interval", publicName: "interval", isSignal: false, isRequired: false, transformFunction: null }, loop: { classPropertyName: "loop", publicName: "loop", isSignal: false, isRequired: false, transformFunction: null }, hideArrows: { classPropertyName: "hideArrows", publicName: "hideArrows", isSignal: false, isRequired: false, transformFunction: null }, hideIndicators: { classPropertyName: "hideIndicators", publicName: "hideIndicators", isSignal: false, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: false, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: false, isRequired: false, transformFunction: null }, maxWidth: { classPropertyName: "maxWidth", publicName: "maxWidth", isSignal: false, isRequired: false, transformFunction: null }, maintainAspectRatio: { classPropertyName: "maintainAspectRatio", publicName: "maintainAspectRatio", isSignal: false, isRequired: false, transformFunction: null }, proportion: { classPropertyName: "proportion", publicName: "proportion", isSignal: false, isRequired: false, transformFunction: null }, slideHeight: { classPropertyName: "slideHeight", publicName: "slideHeight", isSignal: false, isRequired: false, transformFunction: null }, slides: { classPropertyName: "slides", publicName: "slides", isSignal: false, isRequired: false, transformFunction: null }, useKeyboard: { classPropertyName: "useKeyboard", publicName: "useKeyboard", isSignal: false, isRequired: false, transformFunction: null }, useMouseWheel: { classPropertyName: "useMouseWheel", publicName: "useMouseWheel", isSignal: false, isRequired: false, transformFunction: null }, orientation: { classPropertyName: "orientation", publicName: "orientation", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { changeEmitter: "changeEmitter" }, host: { listeners: { "keyup": "onKeyUp($event)", "mouseenter": "onMouseEnter()", "mouseleave": "onMouseLeave()", "wheel": "onMouseWheel($event)", "window:resize": "onResize($event)" } }, queries: [{ propertyName: "slidesList", predicate: CarouselSlideComponent }], viewQueries: [{ propertyName: "carouselContainer", first: true, predicate: ["carouselContainer"], descendants: true }, { propertyName: "carouselList", first: true, predicate: ["carouselList"], descendants: true }], ngImport: i0, template: "<div\n #carouselContainer\n class=\"carousel\"\n tabindex=\"0\"\n [style.max-width]=\"maxWidth\"\n [style.height]=\"!maintainAspectRatio ? '100%' : 'auto'\"\n >\n <ul\n #carouselList\n class=\"carousel-list\"\n role=\"listbox\"\n [attr.aria-label]=\"ariaLabel\"\n [style.flex-direction]=\"orientation === 'rtl' ? 'row-reverse' : 'row'\"\n [style.height]=\"!maintainAspectRatio ? '100%' : 'auto'\"\n >\n @for (slide of slidesList; track slide) {\n <li\n #carouselSlide\n class=\"carousel-slide\"\n role=\"option\"\n appSwipe\n [isDebug]=\"isDebug()\"\n (onMove)=\"onPan($event.x, carouselSlide)\"\n (swipeLeft)=\"onPanEnd($event, carouselSlide)\"\n (swipeRight)=\"onPanEnd($event, carouselSlide)\"\n [style.padding-bottom]=\"maintainAspectRatio && proportion ? proportion + '%': '0px'\"\n [style.height]=\"!maintainAspectRatio && slideHeight ? slideHeight : '0px'\"\n >\n @if (slide.load && slide.templateRef) {\n <ng-container [ngTemplateOutlet]=\"slide.templateRef\"></ng-container>\n }\n </li>\n }\n </ul>\n\n @if (!hideArrows) {\n <button\n mat-icon-button\n type=\"button\"\n tabindex=\"-1\"\n aria-label=\"Previous slide\"\n [color]=\"color\"\n [disabled]=\"!loop && currentIndex == 0\"\n (click)=\"previous()\"\n >\n @if (svgIconOverrides.arrowBack) {\n <mat-icon\n [svgIcon]=\"svgIconOverrides.arrowBack\"\n ></mat-icon>\n } @else {\n <mat-icon>arrow_back</mat-icon>\n }\n </button>\n }\n @if (!hideArrows) {\n <button\n mat-icon-button\n type=\"button\"\n tabindex=\"-1\"\n aria-label=\"Next slide\"\n [color]=\"color\"\n [disabled]=\"!loop && currentIndex == slidesList!.length - 1\"\n (click)=\"next()\"\n >\n @if (svgIconOverrides.arrowForward) {\n <mat-icon\n [svgIcon]=\"svgIconOverrides.arrowForward\"\n ></mat-icon>\n } @else {\n <mat-icon>arrow_forward</mat-icon>\n }\n </button>\n }\n\n @if (!hideIndicators) {\n <div\n class=\"carousel-indicators\"\n tabindex=\"-1\"\n [style.flex-direction]=\"orientation === 'rtl' ? 'row-reverse' : 'row'\"\n >\n @for (slide of slidesList; track slide; let i = $index) {\n <button\n type=\"button\"\n tabindex=\"-1\"\n mat-mini-fab\n [color]=\"color\"\n [attr.aria-label]=\"'Slide #' + i\"\n [disabled]=\"i == currentIndex\"\n (click)=\"slideTo(i)\"\n (focus)=\"carouselContainer.focus()\"\n ></button>\n }\n </div>\n }\n</div>\n", styles: [".carousel{width:100%;position:relative;overflow:hidden;outline:none}.carousel>button{position:absolute;z-index:1;top:50%;transform:translateY(-50%)}.carousel>button:first-of-type{left:30px}.carousel>button:last-of-type{right:30px}.carousel-list{width:100%;margin:0;padding:0;list-style:none;display:flex;position:relative}.carousel-slide{width:100%;height:0;display:flex;flex-shrink:0;position:relative}.carousel-slide:hover{cursor:grab}.carousel-indicators{display:flex;position:absolute;bottom:15px;z-index:1;left:50%;transform:translate(-50%);outline:none}.carousel-indicators>button{width:10px;height:10px;margin:7.5px}\n"], dependencies: [{ kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: MatMiniFabButton, selector: "button[mat-mini-fab], a[mat-mini-fab], button[matMiniFab], a[matMiniFab]", exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: SwipeDirective, selector: "[appSwipe]", inputs: ["minSwipeDistance", "isDebug"], outputs: ["swipeLeft", "swipeRight", "swipeUp", "swipeDown", "onMove"] }] }); }
461
459
  }
462
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.7", ngImport: i0, type: NgxCarouselComponent, decorators: [{
460
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: NgxCarouselComponent, decorators: [{
463
461
  type: Component,
464
462
  args: [{ selector: 'ngx-ngx-carousel', imports: [
465
463
  MatIcon,
@@ -467,7 +465,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.7", ngImpor
467
465
  MatIconButton,
468
466
  MatMiniFabButton,
469
467
  SwipeDirective,
470
- ], template: "<div\n #carouselContainer\n class=\"carousel\"\n tabindex=\"0\"\n [style.max-width]=\"maxWidth\"\n [style.height]=\"!maintainAspectRatio ? '100%' : 'auto'\"\n>\n <ul\n #carouselList\n class=\"carousel-list\"\n role=\"listbox\"\n [attr.aria-label]=\"ariaLabel\"\n [style.flex-direction]=\"orientation === 'rtl' ? 'row-reverse' : 'row'\"\n [style.height]=\"!maintainAspectRatio ? '100%' : 'auto'\"\n >\n <li\n #carouselSlide\n *ngFor=\"let slide of slidesList\"\n class=\"carousel-slide\"\n role=\"option\"\n appSwipe\n [isDebug]=\"isDebug()\"\n (onMove)=\"onPan($event.x, carouselSlide)\"\n (swipeLeft)=\"onPanEnd($event, carouselSlide)\"\n (swipeRight)=\"onPanEnd($event, carouselSlide)\"\n [style.padding-bottom]=\"maintainAspectRatio && proportion ? proportion + '%': '0px'\"\n [style.height]=\"!maintainAspectRatio && slideHeight ? slideHeight : '0px'\"\n >\n @if (slide.load && slide.templateRef) {\n <ng-container [ngTemplateOutlet]=\"slide.templateRef\"></ng-container>\n }\n </li>\n </ul>\n\n <button\n *ngIf=\"!hideArrows\"\n mat-icon-button\n type=\"button\"\n tabindex=\"-1\"\n aria-label=\"Previous slide\"\n [color]=\"color\"\n [disabled]=\"!loop && currentIndex == 0\"\n (click)=\"previous()\"\n >\n <mat-icon\n *ngIf=\"svgIconOverrides.arrowBack; else: defaultArrowBack\"\n [svgIcon]=\"svgIconOverrides.arrowBack\"\n ></mat-icon>\n <ng-template #defaultArrowBack>\n <mat-icon>arrow_back</mat-icon>\n </ng-template>\n </button>\n <button\n *ngIf=\"!hideArrows\"\n mat-icon-button\n type=\"button\"\n tabindex=\"-1\"\n aria-label=\"Next slide\"\n [color]=\"color\"\n [disabled]=\"!loop && currentIndex == slidesList!.length - 1\"\n (click)=\"next()\"\n >\n <mat-icon\n *ngIf=\"svgIconOverrides.arrowForward; else: defaultArrowForward\"\n [svgIcon]=\"svgIconOverrides.arrowForward\"\n ></mat-icon>\n <ng-template #defaultArrowForward>\n <mat-icon>arrow_forward</mat-icon>\n </ng-template>\n </button>\n\n <div\n *ngIf=\"!hideIndicators\"\n class=\"carousel-indicators\"\n tabindex=\"-1\"\n [style.flex-direction]=\"orientation === 'rtl' ? 'row-reverse' : 'row'\"\n >\n <button\n *ngFor=\"let slide of slidesList; let i = index\"\n type=\"button\"\n tabindex=\"-1\"\n mat-mini-fab\n [color]=\"color\"\n [attr.aria-label]=\"'Slide #' + i\"\n [disabled]=\"i == currentIndex\"\n (click)=\"slideTo(i)\"\n (focus)=\"carouselContainer.focus()\"\n ></button>\n </div>\n</div>\n", styles: [".carousel{width:100%;position:relative;overflow:hidden;outline:none}.carousel>button{position:absolute;z-index:1;top:50%;transform:translateY(-50%)}.carousel>button:first-of-type{left:30px}.carousel>button:last-of-type{right:30px}.carousel-list{width:100%;margin:0;padding:0;list-style:none;display:flex;position:relative}.carousel-slide{width:100%;height:0;display:flex;flex-shrink:0;position:relative}.carousel-slide:hover{cursor:grab}.carousel-indicators{display:flex;position:absolute;bottom:15px;z-index:1;left:50%;transform:translate(-50%);outline:none}.carousel-indicators>button{width:10px;height:10px;margin:7.5px}\n"] }]
468
+ ], template: "<div\n #carouselContainer\n class=\"carousel\"\n tabindex=\"0\"\n [style.max-width]=\"maxWidth\"\n [style.height]=\"!maintainAspectRatio ? '100%' : 'auto'\"\n >\n <ul\n #carouselList\n class=\"carousel-list\"\n role=\"listbox\"\n [attr.aria-label]=\"ariaLabel\"\n [style.flex-direction]=\"orientation === 'rtl' ? 'row-reverse' : 'row'\"\n [style.height]=\"!maintainAspectRatio ? '100%' : 'auto'\"\n >\n @for (slide of slidesList; track slide) {\n <li\n #carouselSlide\n class=\"carousel-slide\"\n role=\"option\"\n appSwipe\n [isDebug]=\"isDebug()\"\n (onMove)=\"onPan($event.x, carouselSlide)\"\n (swipeLeft)=\"onPanEnd($event, carouselSlide)\"\n (swipeRight)=\"onPanEnd($event, carouselSlide)\"\n [style.padding-bottom]=\"maintainAspectRatio && proportion ? proportion + '%': '0px'\"\n [style.height]=\"!maintainAspectRatio && slideHeight ? slideHeight : '0px'\"\n >\n @if (slide.load && slide.templateRef) {\n <ng-container [ngTemplateOutlet]=\"slide.templateRef\"></ng-container>\n }\n </li>\n }\n </ul>\n\n @if (!hideArrows) {\n <button\n mat-icon-button\n type=\"button\"\n tabindex=\"-1\"\n aria-label=\"Previous slide\"\n [color]=\"color\"\n [disabled]=\"!loop && currentIndex == 0\"\n (click)=\"previous()\"\n >\n @if (svgIconOverrides.arrowBack) {\n <mat-icon\n [svgIcon]=\"svgIconOverrides.arrowBack\"\n ></mat-icon>\n } @else {\n <mat-icon>arrow_back</mat-icon>\n }\n </button>\n }\n @if (!hideArrows) {\n <button\n mat-icon-button\n type=\"button\"\n tabindex=\"-1\"\n aria-label=\"Next slide\"\n [color]=\"color\"\n [disabled]=\"!loop && currentIndex == slidesList!.length - 1\"\n (click)=\"next()\"\n >\n @if (svgIconOverrides.arrowForward) {\n <mat-icon\n [svgIcon]=\"svgIconOverrides.arrowForward\"\n ></mat-icon>\n } @else {\n <mat-icon>arrow_forward</mat-icon>\n }\n </button>\n }\n\n @if (!hideIndicators) {\n <div\n class=\"carousel-indicators\"\n tabindex=\"-1\"\n [style.flex-direction]=\"orientation === 'rtl' ? 'row-reverse' : 'row'\"\n >\n @for (slide of slidesList; track slide; let i = $index) {\n <button\n type=\"button\"\n tabindex=\"-1\"\n mat-mini-fab\n [color]=\"color\"\n [attr.aria-label]=\"'Slide #' + i\"\n [disabled]=\"i == currentIndex\"\n (click)=\"slideTo(i)\"\n (focus)=\"carouselContainer.focus()\"\n ></button>\n }\n </div>\n }\n</div>\n", styles: [".carousel{width:100%;position:relative;overflow:hidden;outline:none}.carousel>button{position:absolute;z-index:1;top:50%;transform:translateY(-50%)}.carousel>button:first-of-type{left:30px}.carousel>button:last-of-type{right:30px}.carousel-list{width:100%;margin:0;padding:0;list-style:none;display:flex;position:relative}.carousel-slide{width:100%;height:0;display:flex;flex-shrink:0;position:relative}.carousel-slide:hover{cursor:grab}.carousel-indicators{display:flex;position:absolute;bottom:15px;z-index:1;left:50%;transform:translate(-50%);outline:none}.carousel-indicators>button{width:10px;height:10px;margin:7.5px}\n"] }]
471
469
  }], ctorParameters: () => [{ type: i1$1.AnimationBuilder }, { type: i0.Renderer2 }, { type: Object, decorators: [{
472
470
  type: Inject,
473
471
  args: [PLATFORM_ID]
@@ -475,7 +473,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.7", ngImpor
475
473
  type: Input
476
474
  }], lazyLoad: [{
477
475
  type: Input
478
- }], svgIconOverrides: [{
476
+ }], isDebug: [{ type: i0.Input, args: [{ isSignal: true, alias: "isDebug", required: false }] }], svgIconOverrides: [{
479
477
  type: Input
480
478
  }], autoplay: [{
481
479
  type: Input
@@ -529,7 +527,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.7", ngImpor
529
527
  args: ['mouseleave']
530
528
  }], onMouseWheel: [{
531
529
  type: HostListener,
532
- args: ['mousewheel', ['$event']]
530
+ args: ['wheel', ['$event']]
533
531
  }], onResize: [{
534
532
  type: HostListener,
535
533
  args: ['window:resize', ['$event']]
@@ -1 +1 @@
1
- {"version":3,"file":"hantarex-ngx-carousel.mjs","sources":["../../../projects/ngx-carousel/src/lib/ngx-carousel.service.ts","../../../projects/ngx-carousel/src/lib/carousel-slide/carousel-slide.component.ts","../../../projects/ngx-carousel/src/lib/carousel-slide/carousel-slide.component.html","../../../projects/ngx-carousel/src/lib/swipe.directive.ts","../../../projects/ngx-carousel/src/lib/ngx-carousel.component.ts","../../../projects/ngx-carousel/src/lib/ngx-carousel.component.html","../../../projects/ngx-carousel/src/public-api.ts","../../../projects/ngx-carousel/src/hantarex-ngx-carousel.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class NgxCarouselService {\n\n constructor() { }\n}\n","import {Component, Injectable, Input, OnInit, TemplateRef, ViewChild} from '@angular/core';\nimport {ListKeyManagerOption} from \"@angular/cdk/a11y\";\nimport {MatCarouselSlide} from \"./carousel-slide\";\nimport {\n DomSanitizer,\n SafeStyle\n} from \"@angular/platform-browser\";\nimport {CommonModule} from \"@angular/common\";\n\n@Component({\n selector: 'ngx-carousel-slide',\n imports: [\n CommonModule,\n ],\n templateUrl: './carousel-slide.component.html',\n styleUrl: './carousel-slide.component.scss'\n})\nexport class CarouselSlideComponent implements ListKeyManagerOption, MatCarouselSlide, OnInit {\n @Input({required: true}) public image!: SafeStyle;\n @Input() public overlayColor = '#00000040';\n @Input() public hideOverlay = false;\n @Input() public ariaLabel = '';\n @Input() public disabled = false; // implements ListKeyManagerOption\n @Input() public load = false;\n\n @ViewChild(TemplateRef, {static: true}) public templateRef?: TemplateRef<any>;\n\n constructor(public sanitizer: DomSanitizer) {\n }\n\n public ngOnInit(): void {\n if (this.image) {\n this.image = this.sanitizer.bypassSecurityTrustStyle(`url(\"${this.image}\")`);\n }\n }\n}\n","<ng-template>\n <div class=\"carousel-slide\" [style.background-image]=\"image\">\n <div class=\"carousel-slide-content\"><ng-content></ng-content></div>\n <div\n *ngIf=\"!hideOverlay\"\n class=\"carousel-slide-overlay\"\n [attr.aria-label] = \"ariaLabel\"\n [style.background-color]=\"overlayColor\"\n ></div>\n </div>\n</ng-template>\n","import {Directive, ElementRef, HostListener, input, output} from '@angular/core';\n\n@Directive({\n selector: '[appSwipe]',\n standalone: true,\n})\nexport class SwipeDirective {\n public minSwipeDistance = input(30);\n public isDebug = input(false);\n public swipeLeft = output<number>();\n public swipeRight = output<number>();\n public swipeUp = output<number>();\n public swipeDown = output<number>();\n public onMove = output<{x: number, y: number}>();\n\n private touchStartX = 0;\n private touchStartY = 0;\n private touchEndX = 0;\n private touchEndY = 0;\n\n constructor(private el: ElementRef) {\n console.log('init swipe')\n }\n\n @HostListener('touchstart', ['$event'])\n onTouchStart(event: TouchEvent) {\n if(this.isDebug()) {\n console.log('onTouchStart')\n }\n this.touchStartX = event.changedTouches[0].screenX;\n this.touchStartY = event.changedTouches[0].screenY;\n }\n\n @HostListener('touchend', ['$event'])\n onTouchEnd(event: TouchEvent) {\n if(this.isDebug()) {\n console.log('onTouchEnd')\n }\n this.touchEndX = event.changedTouches[0].screenX;\n this.touchEndY = event.changedTouches[0].screenY;\n this.handleSwipe();\n }\n\n @HostListener('touchmove', ['$event'])\n onTouchMove(event: TouchEvent) {\n this.touchEndX = event.changedTouches[0].screenX;\n this.touchEndY = event.changedTouches[0].screenY;\n this.handleMove();\n }\n\n private handleMove(): void {\n if(this.isDebug()) {\n console.log('handleMove')\n }\n const deltaX = this.touchEndX - this.touchStartX;\n const deltaY = this.touchEndY - this.touchStartY;\n this.onMove.emit({x: deltaX, y: deltaY});\n }\n\n private handleSwipe() {\n if(this.isDebug()) {\n console.log('handleSwipe')\n }\n const deltaX = this.touchEndX - this.touchStartX;\n const deltaY = this.touchEndY - this.touchStartY;\n\n const absDeltaX = Math.abs(deltaX);\n const absDeltaY = Math.abs(deltaY);\n\n if (absDeltaX < this.minSwipeDistance() && absDeltaY < this.minSwipeDistance()) {\n if(this.isDebug()) {\n console.log('minSwipeDistance skip', absDeltaX, this.minSwipeDistance(), absDeltaY, this.minSwipeDistance())\n }\n return;\n }\n\n if (absDeltaX > absDeltaY) {\n if (deltaX > 0) {\n if(this.isDebug()) {\n console.log('emit swipeRight', deltaX)\n }\n this.swipeRight.emit(deltaX);\n } else {\n if(this.isDebug()) {\n console.log('emit swipeLeft', deltaX)\n }\n this.swipeLeft.emit(deltaX);\n }\n } else {\n if (deltaY > 0) {\n if(this.isDebug()) {\n console.log('emit swipeDown', deltaY)\n }\n this.swipeDown.emit(deltaY);\n } else {\n if(this.isDebug()) {\n console.log('emit swipeUp', deltaY)\n }\n this.swipeUp.emit(deltaY);\n }\n }\n }\n}\n","import {\n AfterContentInit,\n AfterViewInit,\n Component,\n ContentChildren, ElementRef,\n EventEmitter, HostListener, Inject, Injectable, input,\n Input,\n OnDestroy,\n Output, PLATFORM_ID, QueryList, Renderer2, ViewChild\n} from '@angular/core';\nimport {MatCarousel, Orientation, SvgIconOverrides} from \"./carousel\";\nimport {ThemePalette} from \"@angular/material/core\";\nimport {CarouselSlideComponent} from \"./carousel-slide/carousel-slide.component\";\nimport {ListKeyManager} from \"@angular/cdk/a11y\";\nimport {BehaviorSubject, filter, Observable, Subject, takeUntil, interval} from \"rxjs\";\nimport {animate, AnimationBuilder, style} from \"@angular/animations\";\nimport {CommonModule, isPlatformBrowser} from \"@angular/common\";\nimport {MatIcon} from \"@angular/material/icon\";\nimport {MatIconButton, MatMiniFabButton} from \"@angular/material/button\";\nimport {SwipeDirective} from \"./swipe.directive\";\n\nenum Direction {\n left,\n right,\n index\n}\n\n@Component({\n selector: 'ngx-ngx-carousel',\n imports: [\n MatIcon,\n CommonModule,\n MatIconButton,\n MatMiniFabButton,\n SwipeDirective,\n ],\n templateUrl: './ngx-carousel.component.html',\n styleUrls: ['./ngx-carousel.component.scss']\n})\nexport class NgxCarouselComponent implements AfterContentInit, AfterViewInit, MatCarousel, OnDestroy {\n @Input() public timings = '250ms ease-in';\n @Input() public lazyLoad = false;\n isDebug = input(false);\n @Input() public svgIconOverrides: SvgIconOverrides = {\n arrowBack: '',\n arrowForward: ''\n };\n\n @Input()\n public set autoplay(value: boolean) {\n this.autoplay$.next(value);\n this._autoplay = value;\n }\n\n @Input()\n public set interval(value: number) {\n this.interval$.next(value);\n }\n\n public get loop(): boolean {\n return this._loop;\n }\n @Input()\n public set loop(value: boolean) {\n this.loop$.next(value);\n this._loop = value;\n }\n\n @Input() public hideArrows = true;\n @Input() public hideIndicators = true;\n @Input() public ariaLabel = 'Sliding carousel';\n @Input() public color: ThemePalette = 'accent';\n\n public get maxWidth(): string {\n return this._maxWidth;\n }\n @Input()\n public set maxWidth(value: string) {\n this._maxWidth = value;\n this.maxWidth$.next(true);\n }\n\n @Input() public maintainAspectRatio = true;\n @Input() public proportion = 25;\n @Input() public slideHeight = '100%';\n\n @Input()\n public set slides(value: number) {\n this.slides$.next(value);\n }\n\n @Input() public useKeyboard = false;\n @Input() public useMouseWheel = false;\n\n public get orientation(): Orientation {\n return this._orientation;\n }\n @Input()\n public set orientation(value: Orientation) {\n this.orientation$.next(value);\n this._orientation = value;\n }\n\n @Output()\n public changeEmitter: EventEmitter<number> = new EventEmitter<number>();\n\n public get currentIndex(): number | null{\n if (this.listKeyManager) {\n return this.listKeyManager.activeItemIndex;\n }\n\n return 0;\n }\n public get currentSlide(): CarouselSlideComponent | null {\n if (this.listKeyManager) {\n return this.listKeyManager.activeItem;\n }\n\n return null;\n }\n\n @ContentChildren(CarouselSlideComponent) public slidesList?: QueryList<\n CarouselSlideComponent\n >;\n @ViewChild('carouselContainer') private carouselContainer?: ElementRef<\n HTMLDivElement\n >;\n @ViewChild('carouselList') private carouselList?: ElementRef<HTMLElement>;\n public listKeyManager?: ListKeyManager<CarouselSlideComponent>;\n\n private _autoplay = true;\n private autoplay$ = new Subject<boolean>();\n\n private interval$ = new BehaviorSubject<number>(5000);\n private slides$ = new BehaviorSubject<number| null>(null);\n\n private _maxWidth = 'auto';\n private maxWidth$ = new Subject<boolean>();\n\n private _loop = true;\n private loop$ = new Subject<boolean>();\n\n private _orientation: Orientation = 'ltr';\n private orientation$ = new Subject<Orientation>();\n\n private timer$?: Observable<number>;\n private timerStop$ = new Subject<boolean>();\n\n private destroy$ = new Subject<boolean>();\n private playing = false;\n\n private width?: number;\n\n constructor(\n private animationBuilder: AnimationBuilder,\n private renderer: Renderer2,\n @Inject(PLATFORM_ID) private platformId: Object\n ) {}\n\n @HostListener('keyup', ['$event'])\n public onKeyUp(event: KeyboardEvent): void {\n if (this.useKeyboard && !this.playing) {\n this.listKeyManager?.onKeydown(event);\n }\n }\n\n @HostListener('mouseenter')\n public onMouseEnter(): void {\n this.stopTimer();\n }\n\n @HostListener('mouseleave')\n public onMouseLeave(): void {\n this.startTimer(this._autoplay);\n }\n\n @HostListener('mousewheel', ['$event'])\n public onMouseWheel(event: WheelEvent): void {\n if (this.useMouseWheel) {\n event.preventDefault(); // prevent window to scroll\n const deltaY = Math.sign(event.deltaY);\n\n if (deltaY > 0) {\n this.next();\n } else if (deltaY < 0) {\n this.previous();\n }\n }\n }\n\n @HostListener('window:resize', ['$event'])\n public onResize(event: Event): void {\n // Reset carousel when width is resized\n // in order to avoid major glitches.\n const w = this.getWidth();\n if (w !== this.width) {\n this.width = w;\n this.slideTo(0);\n }\n }\n\n public ngAfterContentInit(): void {\n if (!this.lazyLoad) {\n this.slidesList?.forEach( (slide) => slide.load = true );\n } else {\n this.slidesList!.first.load = true;\n setTimeout( () => {\n this.slidesList!.find( (s, i) => i === 1 % this.slidesList!.length)!.load = true;\n this.slidesList!.find( (s, i) => i === (this.slidesList!.length - 1) % this.slidesList!.length)!.load = true;\n }, this.interval$.getValue() / 2);\n }\n\n this.listKeyManager = new ListKeyManager(this.slidesList!)\n .withVerticalOrientation(false)\n .withHorizontalOrientation(this._orientation)\n .withWrap(this._loop);\n\n this.listKeyManager.updateActiveItem(0);\n\n this.listKeyManager.change\n .pipe(takeUntil(this.destroy$))\n .subscribe(() => this.playAnimation());\n }\n\n public ngAfterViewInit(): void {\n this.width = this.getWidth();\n\n this.autoplay$.pipe(takeUntil(this.destroy$)).subscribe(value => {\n this.stopTimer();\n this.startTimer(value);\n });\n\n this.interval$.pipe(takeUntil(this.destroy$)).subscribe(value => {\n this.stopTimer();\n this.resetTimer(value);\n this.startTimer(this._autoplay);\n });\n\n this.maxWidth$\n .pipe(takeUntil(this.destroy$))\n .subscribe(() => this.slideTo(0));\n\n this.loop$\n .pipe(takeUntil(this.destroy$))\n .subscribe(value => this.listKeyManager!.withWrap(value));\n\n this.orientation$\n .pipe(takeUntil(this.destroy$))\n .subscribe(value => this.listKeyManager!.withHorizontalOrientation(value));\n\n this.slides$\n .pipe(\n takeUntil(this.destroy$),\n filter(value => !!(value && value < this.slidesList!.length))\n )\n .subscribe(value => this.resetSlides(value!));\n }\n\n public ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.complete();\n }\n\n public next(): void {\n this.goto(Direction.right);\n }\n\n public previous(): void {\n this.goto(Direction.left);\n }\n\n public slideTo(index: number): void {\n this.goto(Direction.index, index);\n }\n\n public onPan(deltaX: number, slideElem: HTMLElement): void {\n // https://github.com/angular/angular/issues/10541#issuecomment-346539242\n // if y velocity is greater, it's a panup/pandown, so ignore.\n if (this.isOutOfBounds()) {\n deltaX *= 0.2; // decelerate movement;\n }\n\n this.renderer.setStyle(slideElem, 'cursor', 'grabbing');\n this.renderer.setStyle(\n this.carouselList!.nativeElement,\n 'transform',\n this.getTranslation(this.getOffset() + deltaX)\n );\n }\n\n public onPanEnd(event: number, slideElem: HTMLElement): void {\n this.renderer.removeStyle(slideElem, 'cursor');\n\n if (\n !this.isOutOfBounds() &&\n Math.abs(event) > this.getWidth() * 0.25\n ) {\n if (event <= 0) {\n this.next();\n return;\n }\n this.previous();\n return;\n }\n this.playAnimation(); // slide back, don't change current index\n }\n\n private isOutOfBounds(): boolean {\n const sign = this.orientation === 'rtl' ? -1 : 1;\n const left =\n sign *\n (this.carouselList!.nativeElement.getBoundingClientRect().left -\n this.carouselList!.nativeElement.offsetParent!.getBoundingClientRect()\n .left);\n const lastIndex = this.slidesList!.length - 1;\n const width = -this.getWidth() * lastIndex;\n\n return (\n (this.listKeyManager!.activeItemIndex === 0 && left >= 0) ||\n (this.listKeyManager!.activeItemIndex === lastIndex && left <= width)\n );\n }\n\n private isVisible(): boolean {\n if (!isPlatformBrowser(this.platformId)) {\n return false;\n }\n\n const elem = this.carouselContainer!.nativeElement;\n const docViewTop = window.pageYOffset;\n const docViewBottom = docViewTop + window.innerHeight;\n const elemOffset = elem.getBoundingClientRect();\n const elemTop = docViewTop + elemOffset.top;\n const elemBottom = elemTop + elemOffset.height;\n\n return elemBottom <= docViewBottom || elemTop >= docViewTop;\n }\n\n private getOffset(): number {\n const offset = this.listKeyManager!.activeItemIndex! * this.getWidth();\n const sign = this.orientation === 'rtl' ? 1 : -1;\n return sign * offset;\n }\n\n private getTranslation(offset: number): string {\n return `translateX(${offset}px)`;\n }\n\n private getWidth(): number {\n return this.carouselContainer!.nativeElement.clientWidth;\n }\n\n private goto(direction: Direction, index?: number): void {\n if (!this.playing) {\n const rtl = this.orientation === 'rtl';\n\n switch (direction) {\n case Direction.left:\n return rtl\n ? this.listKeyManager!.setNextItemActive()\n : this.listKeyManager!.setPreviousItemActive();\n case Direction.right:\n return rtl\n ? this.listKeyManager!.setPreviousItemActive()\n : this.listKeyManager!.setNextItemActive();\n case Direction.index:\n return this.listKeyManager!.setActiveItem(index!);\n }\n }\n }\n\n private playAnimation(): void {\n const translation = this.getTranslation(this.getOffset());\n const factory = this.animationBuilder.build(\n animate(this.timings, style({ transform: translation }))\n );\n const animation = factory.create(this.carouselList!.nativeElement);\n\n animation.onStart(() => {\n this.playing = true;\n });\n animation.onDone(() => {\n this.changeEmitter.emit(this.currentIndex!);\n this.playing = false;\n if (this.lazyLoad) {\n this.slidesList!.find( (s, i) => i === (this.currentIndex! + 1) % this.slidesList!.length)!.load = true;\n this.slidesList!.find( (s, i) => i === (this.currentIndex! - 1 + this.slidesList!.length) % this.slidesList!.length)!.load = true;\n this.slidesList!.find( (s, i) => i === this.currentIndex)!.load = true;\n }\n this.renderer.setStyle(\n this.carouselList!.nativeElement,\n 'transform',\n translation\n );\n animation.destroy();\n });\n animation.play();\n }\n\n private resetSlides(slides: number): void {\n this.slidesList?.reset(this.slidesList!.toArray().slice(0, slides));\n }\n\n private resetTimer(value: number): void {\n this.timer$ = interval(value);\n }\n\n private startTimer(autoplay: boolean): void {\n if (!autoplay) {\n return;\n }\n\n this.timer$!\n .pipe(\n takeUntil(this.timerStop$),\n takeUntil(this.destroy$),\n filter(() => this.isVisible())\n )\n .subscribe(() => {\n this.listKeyManager!.withWrap(true).setNextItemActive();\n this.listKeyManager!.withWrap(this.loop);\n });\n }\n\n private stopTimer(): void {\n this.timerStop$.next(true);\n }\n}\n","<div\n #carouselContainer\n class=\"carousel\"\n tabindex=\"0\"\n [style.max-width]=\"maxWidth\"\n [style.height]=\"!maintainAspectRatio ? '100%' : 'auto'\"\n>\n <ul\n #carouselList\n class=\"carousel-list\"\n role=\"listbox\"\n [attr.aria-label]=\"ariaLabel\"\n [style.flex-direction]=\"orientation === 'rtl' ? 'row-reverse' : 'row'\"\n [style.height]=\"!maintainAspectRatio ? '100%' : 'auto'\"\n >\n <li\n #carouselSlide\n *ngFor=\"let slide of slidesList\"\n class=\"carousel-slide\"\n role=\"option\"\n appSwipe\n [isDebug]=\"isDebug()\"\n (onMove)=\"onPan($event.x, carouselSlide)\"\n (swipeLeft)=\"onPanEnd($event, carouselSlide)\"\n (swipeRight)=\"onPanEnd($event, carouselSlide)\"\n [style.padding-bottom]=\"maintainAspectRatio && proportion ? proportion + '%': '0px'\"\n [style.height]=\"!maintainAspectRatio && slideHeight ? slideHeight : '0px'\"\n >\n @if (slide.load && slide.templateRef) {\n <ng-container [ngTemplateOutlet]=\"slide.templateRef\"></ng-container>\n }\n </li>\n </ul>\n\n <button\n *ngIf=\"!hideArrows\"\n mat-icon-button\n type=\"button\"\n tabindex=\"-1\"\n aria-label=\"Previous slide\"\n [color]=\"color\"\n [disabled]=\"!loop && currentIndex == 0\"\n (click)=\"previous()\"\n >\n <mat-icon\n *ngIf=\"svgIconOverrides.arrowBack; else: defaultArrowBack\"\n [svgIcon]=\"svgIconOverrides.arrowBack\"\n ></mat-icon>\n <ng-template #defaultArrowBack>\n <mat-icon>arrow_back</mat-icon>\n </ng-template>\n </button>\n <button\n *ngIf=\"!hideArrows\"\n mat-icon-button\n type=\"button\"\n tabindex=\"-1\"\n aria-label=\"Next slide\"\n [color]=\"color\"\n [disabled]=\"!loop && currentIndex == slidesList!.length - 1\"\n (click)=\"next()\"\n >\n <mat-icon\n *ngIf=\"svgIconOverrides.arrowForward; else: defaultArrowForward\"\n [svgIcon]=\"svgIconOverrides.arrowForward\"\n ></mat-icon>\n <ng-template #defaultArrowForward>\n <mat-icon>arrow_forward</mat-icon>\n </ng-template>\n </button>\n\n <div\n *ngIf=\"!hideIndicators\"\n class=\"carousel-indicators\"\n tabindex=\"-1\"\n [style.flex-direction]=\"orientation === 'rtl' ? 'row-reverse' : 'row'\"\n >\n <button\n *ngFor=\"let slide of slidesList; let i = index\"\n type=\"button\"\n tabindex=\"-1\"\n mat-mini-fab\n [color]=\"color\"\n [attr.aria-label]=\"'Slide #' + i\"\n [disabled]=\"i == currentIndex\"\n (click)=\"slideTo(i)\"\n (focus)=\"carouselContainer.focus()\"\n ></button>\n </div>\n</div>\n","/*\n * Public API Surface of ngx-carousel\n */\n\nexport * from './lib/ngx-carousel.service';\nexport * from './lib/ngx-carousel.component';\nexport * from './lib/carousel-slide/carousel-slide.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hantarex-ngx-carousel.mjs","sources":["../../../projects/ngx-carousel/src/lib/ngx-carousel.service.ts","../../../projects/ngx-carousel/src/lib/carousel-slide/carousel-slide.component.ts","../../../projects/ngx-carousel/src/lib/carousel-slide/carousel-slide.component.html","../../../projects/ngx-carousel/src/lib/swipe.directive.ts","../../../projects/ngx-carousel/src/lib/ngx-carousel.component.ts","../../../projects/ngx-carousel/src/lib/ngx-carousel.component.html","../../../projects/ngx-carousel/src/public-api.ts","../../../projects/ngx-carousel/src/hantarex-ngx-carousel.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class NgxCarouselService {\n\n constructor() { }\n}\n","import {Component, Injectable, Input, OnInit, TemplateRef, ViewChild} from '@angular/core';\nimport {ListKeyManagerOption} from \"@angular/cdk/a11y\";\nimport {MatCarouselSlide} from \"./carousel-slide\";\nimport {\n DomSanitizer,\n SafeStyle\n} from \"@angular/platform-browser\";\n\n\n@Component({\n selector: 'ngx-carousel-slide',\n imports: [],\n templateUrl: './carousel-slide.component.html',\n styleUrl: './carousel-slide.component.scss'\n})\nexport class CarouselSlideComponent implements ListKeyManagerOption, MatCarouselSlide, OnInit {\n @Input({required: true}) public image!: SafeStyle;\n @Input() public overlayColor = '#00000040';\n @Input() public hideOverlay = false;\n @Input() public ariaLabel = '';\n @Input() public disabled = false; // implements ListKeyManagerOption\n @Input() public load = false;\n\n @ViewChild(TemplateRef, {static: true}) public templateRef?: TemplateRef<any>;\n\n constructor(public sanitizer: DomSanitizer) {\n }\n\n public ngOnInit(): void {\n if (this.image) {\n this.image = this.sanitizer.bypassSecurityTrustStyle(`url(\"${this.image}\")`);\n }\n }\n}\n","<ng-template>\n <div class=\"carousel-slide\" [style.background-image]=\"image\">\n <div class=\"carousel-slide-content\"><ng-content></ng-content></div>\n @if (!hideOverlay) {\n <div\n class=\"carousel-slide-overlay\"\n [attr.aria-label] = \"ariaLabel\"\n [style.background-color]=\"overlayColor\"\n ></div>\n }\n </div>\n</ng-template>\n","import {Directive, ElementRef, HostListener, input, output} from '@angular/core';\n\n@Directive({\n selector: '[appSwipe]',\n standalone: true,\n})\nexport class SwipeDirective {\n public minSwipeDistance = input(30);\n public isDebug = input(false);\n public swipeLeft = output<number>();\n public swipeRight = output<number>();\n public swipeUp = output<number>();\n public swipeDown = output<number>();\n public onMove = output<{x: number, y: number}>();\n\n private touchStartX = 0;\n private touchStartY = 0;\n private touchEndX = 0;\n private touchEndY = 0;\n\n constructor(private el: ElementRef) {\n console.log('init swipe')\n }\n\n @HostListener('touchstart', ['$event'])\n onTouchStart(event: TouchEvent) {\n if(this.isDebug()) {\n console.log('onTouchStart')\n }\n this.touchStartX = event.changedTouches[0].screenX;\n this.touchStartY = event.changedTouches[0].screenY;\n }\n\n @HostListener('touchend', ['$event'])\n onTouchEnd(event: TouchEvent) {\n if(this.isDebug()) {\n console.log('onTouchEnd')\n }\n this.touchEndX = event.changedTouches[0].screenX;\n this.touchEndY = event.changedTouches[0].screenY;\n this.handleSwipe();\n }\n\n @HostListener('touchmove', ['$event'])\n onTouchMove(event: TouchEvent) {\n this.touchEndX = event.changedTouches[0].screenX;\n this.touchEndY = event.changedTouches[0].screenY;\n this.handleMove();\n }\n\n private handleMove(): void {\n if(this.isDebug()) {\n console.log('handleMove')\n }\n const deltaX = this.touchEndX - this.touchStartX;\n const deltaY = this.touchEndY - this.touchStartY;\n this.onMove.emit({x: deltaX, y: deltaY});\n }\n\n private handleSwipe() {\n if(this.isDebug()) {\n console.log('handleSwipe')\n }\n const deltaX = this.touchEndX - this.touchStartX;\n const deltaY = this.touchEndY - this.touchStartY;\n\n const absDeltaX = Math.abs(deltaX);\n const absDeltaY = Math.abs(deltaY);\n\n if (absDeltaX < this.minSwipeDistance() && absDeltaY < this.minSwipeDistance()) {\n if(this.isDebug()) {\n console.log('minSwipeDistance skip', absDeltaX, this.minSwipeDistance(), absDeltaY, this.minSwipeDistance())\n }\n return;\n }\n\n if (absDeltaX > absDeltaY) {\n if (deltaX > 0) {\n if(this.isDebug()) {\n console.log('emit swipeRight', deltaX)\n }\n this.swipeRight.emit(deltaX);\n } else {\n if(this.isDebug()) {\n console.log('emit swipeLeft', deltaX)\n }\n this.swipeLeft.emit(deltaX);\n }\n } else {\n if (deltaY > 0) {\n if(this.isDebug()) {\n console.log('emit swipeDown', deltaY)\n }\n this.swipeDown.emit(deltaY);\n } else {\n if(this.isDebug()) {\n console.log('emit swipeUp', deltaY)\n }\n this.swipeUp.emit(deltaY);\n }\n }\n }\n}\n","import {\n AfterContentInit,\n AfterViewInit,\n Component,\n ContentChildren, ElementRef,\n EventEmitter, HostListener, Inject, Injectable, input,\n Input,\n OnDestroy,\n Output, PLATFORM_ID, QueryList, Renderer2, ViewChild\n} from '@angular/core';\nimport {MatCarousel, Orientation, SvgIconOverrides} from \"./carousel\";\nimport {ThemePalette} from \"@angular/material/core\";\nimport {CarouselSlideComponent} from \"./carousel-slide/carousel-slide.component\";\nimport {ListKeyManager} from \"@angular/cdk/a11y\";\nimport {BehaviorSubject, filter, Observable, Subject, takeUntil, interval} from \"rxjs\";\nimport {animate, AnimationBuilder, style} from \"@angular/animations\";\nimport { CommonModule, isPlatformBrowser } from \"@angular/common\";\nimport {MatIcon} from \"@angular/material/icon\";\nimport {MatIconButton, MatMiniFabButton} from \"@angular/material/button\";\nimport {SwipeDirective} from \"./swipe.directive\";\n\nenum Direction {\n left,\n right,\n index\n}\n\n@Component({\n selector: 'ngx-ngx-carousel',\n imports: [\n MatIcon,\n CommonModule,\n MatIconButton,\n MatMiniFabButton,\n SwipeDirective,\n ],\n templateUrl: './ngx-carousel.component.html',\n styleUrls: ['./ngx-carousel.component.scss']\n})\nexport class NgxCarouselComponent implements AfterContentInit, AfterViewInit, MatCarousel, OnDestroy {\n @Input() public timings = '250ms ease-in';\n @Input() public lazyLoad = false;\n isDebug = input(false);\n @Input() public svgIconOverrides: SvgIconOverrides = {\n arrowBack: '',\n arrowForward: ''\n };\n\n @Input()\n public set autoplay(value: boolean) {\n this.autoplay$.next(value);\n this._autoplay = value;\n }\n\n @Input()\n public set interval(value: number) {\n this.interval$.next(value);\n }\n\n public get loop(): boolean {\n return this._loop;\n }\n @Input()\n public set loop(value: boolean) {\n this.loop$.next(value);\n this._loop = value;\n }\n\n @Input() public hideArrows = true;\n @Input() public hideIndicators = true;\n @Input() public ariaLabel = 'Sliding carousel';\n @Input() public color: ThemePalette = 'accent';\n\n public get maxWidth(): string {\n return this._maxWidth;\n }\n @Input()\n public set maxWidth(value: string) {\n this._maxWidth = value;\n this.maxWidth$.next(true);\n }\n\n @Input() public maintainAspectRatio = true;\n @Input() public proportion = 25;\n @Input() public slideHeight = '100%';\n\n @Input()\n public set slides(value: number) {\n this.slides$.next(value);\n }\n\n @Input() public useKeyboard = false;\n @Input() public useMouseWheel = false;\n\n public get orientation(): Orientation {\n return this._orientation;\n }\n @Input()\n public set orientation(value: Orientation) {\n this.orientation$.next(value);\n this._orientation = value;\n }\n\n @Output()\n public changeEmitter: EventEmitter<number> = new EventEmitter<number>();\n\n public get currentIndex(): number | null{\n if (this.listKeyManager) {\n return this.listKeyManager.activeItemIndex;\n }\n\n return 0;\n }\n public get currentSlide(): CarouselSlideComponent | null {\n if (this.listKeyManager) {\n return this.listKeyManager.activeItem;\n }\n\n return null;\n }\n\n @ContentChildren(CarouselSlideComponent) public slidesList?: QueryList<\n CarouselSlideComponent\n >;\n @ViewChild('carouselContainer') private carouselContainer?: ElementRef<\n HTMLDivElement\n >;\n @ViewChild('carouselList') private carouselList?: ElementRef<HTMLElement>;\n public listKeyManager?: ListKeyManager<CarouselSlideComponent>;\n\n private _autoplay = true;\n private autoplay$ = new Subject<boolean>();\n\n private interval$ = new BehaviorSubject<number>(5000);\n private slides$ = new BehaviorSubject<number| null>(null);\n\n private _maxWidth = 'auto';\n private maxWidth$ = new Subject<boolean>();\n\n private _loop = true;\n private loop$ = new Subject<boolean>();\n\n private _orientation: Orientation = 'ltr';\n private orientation$ = new Subject<Orientation>();\n\n private timer$?: Observable<number>;\n private timerStop$ = new Subject<boolean>();\n\n private destroy$ = new Subject<boolean>();\n private playing = false;\n\n private width?: number;\n\n constructor(\n private animationBuilder: AnimationBuilder,\n private renderer: Renderer2,\n @Inject(PLATFORM_ID) private platformId: Object\n ) {}\n\n @HostListener('keyup', ['$event'])\n public onKeyUp(event: KeyboardEvent): void {\n if (this.useKeyboard && !this.playing) {\n this.listKeyManager?.onKeydown(event);\n }\n }\n\n @HostListener('mouseenter')\n public onMouseEnter(): void {\n this.stopTimer();\n }\n\n @HostListener('mouseleave')\n public onMouseLeave(): void {\n this.startTimer(this._autoplay);\n }\n\n @HostListener('wheel', ['$event'])\n public onMouseWheel(event: WheelEvent): void {\n if (this.useMouseWheel) {\n event.preventDefault(); // prevent window to scroll\n const deltaY = Math.sign(event.deltaY);\n\n if (deltaY > 0) {\n this.next();\n } else if (deltaY < 0) {\n this.previous();\n }\n }\n }\n\n @HostListener('window:resize', ['$event'])\n public onResize(event: Event): void {\n // Reset carousel when width is resized\n // in order to avoid major glitches.\n const w = this.getWidth();\n if (w !== this.width) {\n this.width = w;\n this.slideTo(0);\n }\n }\n\n public ngAfterContentInit(): void {\n if (!this.lazyLoad) {\n this.slidesList?.forEach( (slide) => slide.load = true );\n } else {\n this.slidesList!.first.load = true;\n setTimeout( () => {\n this.slidesList!.find( (s, i) => i === 1 % this.slidesList!.length)!.load = true;\n this.slidesList!.find( (s, i) => i === (this.slidesList!.length - 1) % this.slidesList!.length)!.load = true;\n }, this.interval$.getValue() / 2);\n }\n\n this.listKeyManager = new ListKeyManager(this.slidesList!)\n .withVerticalOrientation(false)\n .withHorizontalOrientation(this._orientation)\n .withWrap(this._loop);\n\n this.listKeyManager.updateActiveItem(0);\n\n this.listKeyManager.change\n .pipe(takeUntil(this.destroy$))\n .subscribe(() => this.playAnimation());\n }\n\n public ngAfterViewInit(): void {\n this.width = this.getWidth();\n\n this.autoplay$.pipe(takeUntil(this.destroy$)).subscribe(value => {\n this.stopTimer();\n this.startTimer(value);\n });\n\n this.interval$.pipe(takeUntil(this.destroy$)).subscribe(value => {\n this.stopTimer();\n this.resetTimer(value);\n this.startTimer(this._autoplay);\n });\n\n this.maxWidth$\n .pipe(takeUntil(this.destroy$))\n .subscribe(() => this.slideTo(0));\n\n this.loop$\n .pipe(takeUntil(this.destroy$))\n .subscribe(value => this.listKeyManager!.withWrap(value));\n\n this.orientation$\n .pipe(takeUntil(this.destroy$))\n .subscribe(value => this.listKeyManager!.withHorizontalOrientation(value));\n\n this.slides$\n .pipe(\n takeUntil(this.destroy$),\n filter(value => !!(value && value < this.slidesList!.length))\n )\n .subscribe(value => this.resetSlides(value!));\n }\n\n public ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.complete();\n }\n\n public next(): void {\n this.goto(Direction.right);\n }\n\n public previous(): void {\n this.goto(Direction.left);\n }\n\n public slideTo(index: number): void {\n this.goto(Direction.index, index);\n }\n\n public onPan(deltaX: number, slideElem: HTMLElement): void {\n // https://github.com/angular/angular/issues/10541#issuecomment-346539242\n // if y velocity is greater, it's a panup/pandown, so ignore.\n if (this.isOutOfBounds()) {\n deltaX *= 0.2; // decelerate movement;\n }\n\n this.renderer.setStyle(slideElem, 'cursor', 'grabbing');\n this.renderer.setStyle(\n this.carouselList!.nativeElement,\n 'transform',\n this.getTranslation(this.getOffset() + deltaX)\n );\n }\n\n public onPanEnd(event: number, slideElem: HTMLElement): void {\n this.renderer.removeStyle(slideElem, 'cursor');\n\n if (\n !this.isOutOfBounds() &&\n Math.abs(event) > this.getWidth() * 0.25\n ) {\n if (event <= 0) {\n this.next();\n return;\n }\n this.previous();\n return;\n }\n this.playAnimation(); // slide back, don't change current index\n }\n\n private isOutOfBounds(): boolean {\n const sign = this.orientation === 'rtl' ? -1 : 1;\n const left =\n sign *\n (this.carouselList!.nativeElement.getBoundingClientRect().left -\n this.carouselList!.nativeElement.offsetParent!.getBoundingClientRect()\n .left);\n const lastIndex = this.slidesList!.length - 1;\n const width = -this.getWidth() * lastIndex;\n\n return (\n (this.listKeyManager!.activeItemIndex === 0 && left >= 0) ||\n (this.listKeyManager!.activeItemIndex === lastIndex && left <= width)\n );\n }\n\n private isVisible(): boolean {\n if (!isPlatformBrowser(this.platformId)) {\n return false;\n }\n\n const elem = this.carouselContainer!.nativeElement;\n const docViewTop = window.pageYOffset;\n const docViewBottom = docViewTop + window.innerHeight;\n const elemOffset = elem.getBoundingClientRect();\n const elemTop = docViewTop + elemOffset.top;\n const elemBottom = elemTop + elemOffset.height;\n\n return elemBottom <= docViewBottom || elemTop >= docViewTop;\n }\n\n private getOffset(): number {\n const offset = this.listKeyManager!.activeItemIndex! * this.getWidth();\n const sign = this.orientation === 'rtl' ? 1 : -1;\n return sign * offset;\n }\n\n private getTranslation(offset: number): string {\n return `translateX(${offset}px)`;\n }\n\n private getWidth(): number {\n return this.carouselContainer!.nativeElement.clientWidth;\n }\n\n private goto(direction: Direction, index?: number): void {\n if (!this.playing) {\n const rtl = this.orientation === 'rtl';\n\n switch (direction) {\n case Direction.left:\n return rtl\n ? this.listKeyManager!.setNextItemActive()\n : this.listKeyManager!.setPreviousItemActive();\n case Direction.right:\n return rtl\n ? this.listKeyManager!.setPreviousItemActive()\n : this.listKeyManager!.setNextItemActive();\n case Direction.index:\n return this.listKeyManager!.setActiveItem(index!);\n }\n }\n }\n\n private playAnimation(): void {\n const translation = this.getTranslation(this.getOffset());\n const factory = this.animationBuilder.build(\n animate(this.timings, style({ transform: translation }))\n );\n const animation = factory.create(this.carouselList!.nativeElement);\n\n animation.onStart(() => {\n this.playing = true;\n });\n animation.onDone(() => {\n this.changeEmitter.emit(this.currentIndex!);\n this.playing = false;\n if (this.lazyLoad) {\n this.slidesList!.find( (s, i) => i === (this.currentIndex! + 1) % this.slidesList!.length)!.load = true;\n this.slidesList!.find( (s, i) => i === (this.currentIndex! - 1 + this.slidesList!.length) % this.slidesList!.length)!.load = true;\n this.slidesList!.find( (s, i) => i === this.currentIndex)!.load = true;\n }\n this.renderer.setStyle(\n this.carouselList!.nativeElement,\n 'transform',\n translation\n );\n animation.destroy();\n });\n animation.play();\n }\n\n private resetSlides(slides: number): void {\n this.slidesList?.reset(this.slidesList!.toArray().slice(0, slides));\n }\n\n private resetTimer(value: number): void {\n this.timer$ = interval(value);\n }\n\n private startTimer(autoplay: boolean): void {\n if (!autoplay) {\n return;\n }\n\n this.timer$!\n .pipe(\n takeUntil(this.timerStop$),\n takeUntil(this.destroy$),\n filter(() => this.isVisible())\n )\n .subscribe(() => {\n this.listKeyManager!.withWrap(true).setNextItemActive();\n this.listKeyManager!.withWrap(this.loop);\n });\n }\n\n private stopTimer(): void {\n this.timerStop$.next(true);\n }\n}\n","<div\n #carouselContainer\n class=\"carousel\"\n tabindex=\"0\"\n [style.max-width]=\"maxWidth\"\n [style.height]=\"!maintainAspectRatio ? '100%' : 'auto'\"\n >\n <ul\n #carouselList\n class=\"carousel-list\"\n role=\"listbox\"\n [attr.aria-label]=\"ariaLabel\"\n [style.flex-direction]=\"orientation === 'rtl' ? 'row-reverse' : 'row'\"\n [style.height]=\"!maintainAspectRatio ? '100%' : 'auto'\"\n >\n @for (slide of slidesList; track slide) {\n <li\n #carouselSlide\n class=\"carousel-slide\"\n role=\"option\"\n appSwipe\n [isDebug]=\"isDebug()\"\n (onMove)=\"onPan($event.x, carouselSlide)\"\n (swipeLeft)=\"onPanEnd($event, carouselSlide)\"\n (swipeRight)=\"onPanEnd($event, carouselSlide)\"\n [style.padding-bottom]=\"maintainAspectRatio && proportion ? proportion + '%': '0px'\"\n [style.height]=\"!maintainAspectRatio && slideHeight ? slideHeight : '0px'\"\n >\n @if (slide.load && slide.templateRef) {\n <ng-container [ngTemplateOutlet]=\"slide.templateRef\"></ng-container>\n }\n </li>\n }\n </ul>\n\n @if (!hideArrows) {\n <button\n mat-icon-button\n type=\"button\"\n tabindex=\"-1\"\n aria-label=\"Previous slide\"\n [color]=\"color\"\n [disabled]=\"!loop && currentIndex == 0\"\n (click)=\"previous()\"\n >\n @if (svgIconOverrides.arrowBack) {\n <mat-icon\n [svgIcon]=\"svgIconOverrides.arrowBack\"\n ></mat-icon>\n } @else {\n <mat-icon>arrow_back</mat-icon>\n }\n </button>\n }\n @if (!hideArrows) {\n <button\n mat-icon-button\n type=\"button\"\n tabindex=\"-1\"\n aria-label=\"Next slide\"\n [color]=\"color\"\n [disabled]=\"!loop && currentIndex == slidesList!.length - 1\"\n (click)=\"next()\"\n >\n @if (svgIconOverrides.arrowForward) {\n <mat-icon\n [svgIcon]=\"svgIconOverrides.arrowForward\"\n ></mat-icon>\n } @else {\n <mat-icon>arrow_forward</mat-icon>\n }\n </button>\n }\n\n @if (!hideIndicators) {\n <div\n class=\"carousel-indicators\"\n tabindex=\"-1\"\n [style.flex-direction]=\"orientation === 'rtl' ? 'row-reverse' : 'row'\"\n >\n @for (slide of slidesList; track slide; let i = $index) {\n <button\n type=\"button\"\n tabindex=\"-1\"\n mat-mini-fab\n [color]=\"color\"\n [attr.aria-label]=\"'Slide #' + i\"\n [disabled]=\"i == currentIndex\"\n (click)=\"slideTo(i)\"\n (focus)=\"carouselContainer.focus()\"\n ></button>\n }\n </div>\n }\n</div>\n","/*\n * Public API Surface of ngx-carousel\n */\n\nexport * from './lib/ngx-carousel.service';\nexport * from './lib/ngx-carousel.component';\nexport * from './lib/carousel-slide/carousel-slide.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hantarex/ngx-carousel",
3
- "version": "20.0.7",
3
+ "version": "21.0.1",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^20.0.0",
6
6
  "@angular/core": "^20.0.0"
@@ -10,13 +10,13 @@
10
10
  },
11
11
  "sideEffects": false,
12
12
  "module": "fesm2022/hantarex-ngx-carousel.mjs",
13
- "typings": "index.d.ts",
13
+ "typings": "types/hantarex-ngx-carousel.d.ts",
14
14
  "exports": {
15
15
  "./package.json": {
16
16
  "default": "./package.json"
17
17
  },
18
18
  ".": {
19
- "types": "./index.d.ts",
19
+ "types": "./types/hantarex-ngx-carousel.d.ts",
20
20
  "default": "./fesm2022/hantarex-ngx-carousel.mjs"
21
21
  }
22
22
  }
@@ -1,17 +1,71 @@
1
- import { AfterContentInit, AfterViewInit, EventEmitter, OnDestroy, QueryList, Renderer2 } from '@angular/core';
2
- import { MatCarousel, Orientation, SvgIconOverrides } from "./carousel";
3
- import { ThemePalette } from "@angular/material/core";
4
- import { CarouselSlideComponent } from "./carousel-slide/carousel-slide.component";
5
- import { ListKeyManager } from "@angular/cdk/a11y";
6
- import { AnimationBuilder } from "@angular/animations";
7
- import * as i0 from "@angular/core";
8
- export declare class NgxCarouselComponent implements AfterContentInit, AfterViewInit, MatCarousel, OnDestroy {
1
+ import * as i0 from '@angular/core';
2
+ import { OnInit, TemplateRef, AfterContentInit, AfterViewInit, OnDestroy, EventEmitter, QueryList, Renderer2 } from '@angular/core';
3
+ import { ThemePalette } from '@angular/material/core';
4
+ import { ListKeyManagerOption, ListKeyManager } from '@angular/cdk/a11y';
5
+ import { SafeStyle, DomSanitizer } from '@angular/platform-browser';
6
+ import { AnimationBuilder } from '@angular/animations';
7
+
8
+ declare class NgxCarouselService {
9
+ constructor();
10
+ static ɵfac: i0.ɵɵFactoryDeclaration<NgxCarouselService, never>;
11
+ static ɵprov: i0.ɵɵInjectableDeclaration<NgxCarouselService>;
12
+ }
13
+
14
+ interface MatCarousel {
15
+ timings: string;
16
+ autoplay: boolean;
17
+ interval: number;
18
+ loop: boolean;
19
+ hideArrows: boolean;
20
+ hideIndicators: boolean;
21
+ color: ThemePalette;
22
+ maxWidth: string;
23
+ proportion: number;
24
+ slides: number;
25
+ svgIconOverrides: SvgIconOverrides;
26
+ lazyLoad: boolean;
27
+ useKeyboard: boolean;
28
+ useMouseWheel: boolean;
29
+ orientation: Orientation;
30
+ ariaLabel: string;
31
+ }
32
+ type Orientation = 'ltr' | 'rtl';
33
+ interface SvgIconOverrides {
34
+ arrowBack: string;
35
+ arrowForward: string;
36
+ }
37
+
38
+ interface MatCarouselSlide {
39
+ image: SafeStyle;
40
+ overlayColor: string;
41
+ hideOverlay: boolean;
42
+ disabled: boolean;
43
+ load: boolean;
44
+ ariaLabel: string;
45
+ }
46
+
47
+ declare class CarouselSlideComponent implements ListKeyManagerOption, MatCarouselSlide, OnInit {
48
+ sanitizer: DomSanitizer;
49
+ image: SafeStyle;
50
+ overlayColor: string;
51
+ hideOverlay: boolean;
52
+ ariaLabel: string;
53
+ disabled: boolean;
54
+ load: boolean;
55
+ templateRef?: TemplateRef<any>;
56
+ constructor(sanitizer: DomSanitizer);
57
+ ngOnInit(): void;
58
+ static ɵfac: i0.ɵɵFactoryDeclaration<CarouselSlideComponent, never>;
59
+ static ɵcmp: i0.ɵɵComponentDeclaration<CarouselSlideComponent, "ngx-carousel-slide", never, { "image": { "alias": "image"; "required": true; }; "overlayColor": { "alias": "overlayColor"; "required": false; }; "hideOverlay": { "alias": "hideOverlay"; "required": false; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "load": { "alias": "load"; "required": false; }; }, {}, never, ["*"], true, never>;
60
+ }
61
+
62
+ declare class NgxCarouselComponent implements AfterContentInit, AfterViewInit, MatCarousel, OnDestroy {
9
63
  private animationBuilder;
10
64
  private renderer;
11
65
  private platformId;
12
66
  timings: string;
13
67
  lazyLoad: boolean;
14
- isDebug: import("@angular/core").InputSignal<boolean>;
68
+ isDebug: i0.InputSignal<boolean>;
15
69
  svgIconOverrides: SvgIconOverrides;
16
70
  set autoplay(value: boolean);
17
71
  set interval(value: number);
@@ -81,3 +135,5 @@ export declare class NgxCarouselComponent implements AfterContentInit, AfterView
81
135
  static ɵfac: i0.ɵɵFactoryDeclaration<NgxCarouselComponent, never>;
82
136
  static ɵcmp: i0.ɵɵComponentDeclaration<NgxCarouselComponent, "ngx-ngx-carousel", never, { "timings": { "alias": "timings"; "required": false; }; "lazyLoad": { "alias": "lazyLoad"; "required": false; }; "isDebug": { "alias": "isDebug"; "required": false; "isSignal": true; }; "svgIconOverrides": { "alias": "svgIconOverrides"; "required": false; }; "autoplay": { "alias": "autoplay"; "required": false; }; "interval": { "alias": "interval"; "required": false; }; "loop": { "alias": "loop"; "required": false; }; "hideArrows": { "alias": "hideArrows"; "required": false; }; "hideIndicators": { "alias": "hideIndicators"; "required": false; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; }; "color": { "alias": "color"; "required": false; }; "maxWidth": { "alias": "maxWidth"; "required": false; }; "maintainAspectRatio": { "alias": "maintainAspectRatio"; "required": false; }; "proportion": { "alias": "proportion"; "required": false; }; "slideHeight": { "alias": "slideHeight"; "required": false; }; "slides": { "alias": "slides"; "required": false; }; "useKeyboard": { "alias": "useKeyboard"; "required": false; }; "useMouseWheel": { "alias": "useMouseWheel"; "required": false; }; "orientation": { "alias": "orientation"; "required": false; }; }, { "changeEmitter": "changeEmitter"; }, ["slidesList"], never, true, never>;
83
137
  }
138
+
139
+ export { CarouselSlideComponent, NgxCarouselComponent, NgxCarouselService };
package/index.d.ts DELETED
@@ -1,5 +0,0 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- /// <amd-module name="@hantarex/ngx-carousel" />
5
- export * from './public-api';
@@ -1,19 +0,0 @@
1
- import { OnInit, TemplateRef } from '@angular/core';
2
- import { ListKeyManagerOption } from "@angular/cdk/a11y";
3
- import { MatCarouselSlide } from "./carousel-slide";
4
- import { DomSanitizer, SafeStyle } from "@angular/platform-browser";
5
- import * as i0 from "@angular/core";
6
- export declare class CarouselSlideComponent implements ListKeyManagerOption, MatCarouselSlide, OnInit {
7
- sanitizer: DomSanitizer;
8
- image: SafeStyle;
9
- overlayColor: string;
10
- hideOverlay: boolean;
11
- ariaLabel: string;
12
- disabled: boolean;
13
- load: boolean;
14
- templateRef?: TemplateRef<any>;
15
- constructor(sanitizer: DomSanitizer);
16
- ngOnInit(): void;
17
- static ɵfac: i0.ɵɵFactoryDeclaration<CarouselSlideComponent, never>;
18
- static ɵcmp: i0.ɵɵComponentDeclaration<CarouselSlideComponent, "ngx-carousel-slide", never, { "image": { "alias": "image"; "required": true; }; "overlayColor": { "alias": "overlayColor"; "required": false; }; "hideOverlay": { "alias": "hideOverlay"; "required": false; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "load": { "alias": "load"; "required": false; }; }, {}, never, ["*"], true, never>;
19
- }
@@ -1,9 +0,0 @@
1
- import { SafeStyle } from '@angular/platform-browser';
2
- export interface MatCarouselSlide {
3
- image: SafeStyle;
4
- overlayColor: string;
5
- hideOverlay: boolean;
6
- disabled: boolean;
7
- load: boolean;
8
- ariaLabel: string;
9
- }
package/lib/carousel.d.ts DELETED
@@ -1,24 +0,0 @@
1
- import { ThemePalette } from '@angular/material/core';
2
- export interface MatCarousel {
3
- timings: string;
4
- autoplay: boolean;
5
- interval: number;
6
- loop: boolean;
7
- hideArrows: boolean;
8
- hideIndicators: boolean;
9
- color: ThemePalette;
10
- maxWidth: string;
11
- proportion: number;
12
- slides: number;
13
- svgIconOverrides: SvgIconOverrides;
14
- lazyLoad: boolean;
15
- useKeyboard: boolean;
16
- useMouseWheel: boolean;
17
- orientation: Orientation;
18
- ariaLabel: string;
19
- }
20
- export type Orientation = 'ltr' | 'rtl';
21
- export interface SvgIconOverrides {
22
- arrowBack: string;
23
- arrowForward: string;
24
- }
@@ -1,6 +0,0 @@
1
- import * as i0 from "@angular/core";
2
- export declare class NgxCarouselService {
3
- constructor();
4
- static ɵfac: i0.ɵɵFactoryDeclaration<NgxCarouselService, never>;
5
- static ɵprov: i0.ɵɵInjectableDeclaration<NgxCarouselService>;
6
- }
@@ -1,27 +0,0 @@
1
- import { ElementRef } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export declare class SwipeDirective {
4
- private el;
5
- minSwipeDistance: import("@angular/core").InputSignal<number>;
6
- isDebug: import("@angular/core").InputSignal<boolean>;
7
- swipeLeft: import("@angular/core").OutputEmitterRef<number>;
8
- swipeRight: import("@angular/core").OutputEmitterRef<number>;
9
- swipeUp: import("@angular/core").OutputEmitterRef<number>;
10
- swipeDown: import("@angular/core").OutputEmitterRef<number>;
11
- onMove: import("@angular/core").OutputEmitterRef<{
12
- x: number;
13
- y: number;
14
- }>;
15
- private touchStartX;
16
- private touchStartY;
17
- private touchEndX;
18
- private touchEndY;
19
- constructor(el: ElementRef);
20
- onTouchStart(event: TouchEvent): void;
21
- onTouchEnd(event: TouchEvent): void;
22
- onTouchMove(event: TouchEvent): void;
23
- private handleMove;
24
- private handleSwipe;
25
- static ɵfac: i0.ɵɵFactoryDeclaration<SwipeDirective, never>;
26
- static ɵdir: i0.ɵɵDirectiveDeclaration<SwipeDirective, "[appSwipe]", never, { "minSwipeDistance": { "alias": "minSwipeDistance"; "required": false; "isSignal": true; }; "isDebug": { "alias": "isDebug"; "required": false; "isSignal": true; }; }, { "swipeLeft": "swipeLeft"; "swipeRight": "swipeRight"; "swipeUp": "swipeUp"; "swipeDown": "swipeDown"; "onMove": "onMove"; }, never, never, true, never>;
27
- }
package/public-api.d.ts DELETED
@@ -1,3 +0,0 @@
1
- export * from './lib/ngx-carousel.service';
2
- export * from './lib/ngx-carousel.component';
3
- export * from './lib/carousel-slide/carousel-slide.component';