@hantarex/ngx-carousel 20.0.1 → 20.0.2

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,16 +1,14 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Injectable, TemplateRef, Component, Input, ViewChild, EventEmitter, PLATFORM_ID, Inject, Output, ContentChildren, HostListener } from '@angular/core';
2
+ import { Injectable, TemplateRef, Component, Input, ViewChild, input, output, Directive, HostListener, EventEmitter, PLATFORM_ID, Inject, Output, ContentChildren } from '@angular/core';
3
3
  import * as i2 from '@angular/common';
4
4
  import { CommonModule, isPlatformBrowser } from '@angular/common';
5
5
  import * as i1 from '@angular/platform-browser';
6
- import { HammerGestureConfig, HAMMER_GESTURE_CONFIG, HammerModule } from '@angular/platform-browser';
7
6
  import { ListKeyManager } from '@angular/cdk/a11y';
8
7
  import { Subject, BehaviorSubject, takeUntil, filter, interval } from 'rxjs';
9
8
  import * as i1$1 from '@angular/animations';
10
9
  import { animate, style } from '@angular/animations';
11
10
  import { MatIcon } from '@angular/material/icon';
12
11
  import { MatIconButton, MatMiniFabButton } from '@angular/material/button';
13
- import Hammer from 'hammerjs';
14
12
 
15
13
  class NgxCarouselService {
16
14
  constructor() { }
@@ -64,30 +62,90 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.7", ngImpor
64
62
  args: [TemplateRef, { static: true }]
65
63
  }] } });
66
64
 
65
+ class SwipeDirective {
66
+ constructor(el) {
67
+ this.el = el;
68
+ this.minSwipeDistance = input(30);
69
+ this.swipeLeft = output();
70
+ this.swipeRight = output();
71
+ this.swipeUp = output();
72
+ this.swipeDown = output();
73
+ this.onMove = output();
74
+ this.touchStartX = 0;
75
+ this.touchStartY = 0;
76
+ this.touchEndX = 0;
77
+ this.touchEndY = 0;
78
+ }
79
+ onTouchStart(event) {
80
+ this.touchStartX = event.changedTouches[0].screenX;
81
+ this.touchStartY = event.changedTouches[0].screenY;
82
+ }
83
+ onTouchEnd(event) {
84
+ this.touchEndX = event.changedTouches[0].screenX;
85
+ this.touchEndY = event.changedTouches[0].screenY;
86
+ this.handleSwipe();
87
+ }
88
+ onTouchMove(event) {
89
+ this.touchEndX = event.changedTouches[0].screenX;
90
+ this.touchEndY = event.changedTouches[0].screenY;
91
+ this.handleMove();
92
+ }
93
+ handleMove() {
94
+ const deltaX = this.touchEndX - this.touchStartX;
95
+ const deltaY = this.touchEndY - this.touchStartY;
96
+ this.onMove.emit({ x: deltaX, y: deltaY });
97
+ }
98
+ handleSwipe() {
99
+ const deltaX = this.touchEndX - this.touchStartX;
100
+ const deltaY = this.touchEndY - this.touchStartY;
101
+ const absDeltaX = Math.abs(deltaX);
102
+ const absDeltaY = Math.abs(deltaY);
103
+ if (absDeltaX < this.minSwipeDistance() && absDeltaY < this.minSwipeDistance()) {
104
+ return;
105
+ }
106
+ if (absDeltaX > absDeltaY) {
107
+ if (deltaX > 0) {
108
+ this.swipeRight.emit(deltaX);
109
+ }
110
+ else {
111
+ this.swipeLeft.emit(deltaX);
112
+ }
113
+ }
114
+ else {
115
+ if (deltaY > 0) {
116
+ this.swipeDown.emit(deltaY);
117
+ }
118
+ else {
119
+ this.swipeUp.emit(deltaY);
120
+ }
121
+ }
122
+ }
123
+ 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 }); }
124
+ 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 } }, outputs: { swipeLeft: "swipeLeft", swipeRight: "swipeRight", swipeUp: "swipeUp", swipeDown: "swipeDown", onMove: "onMove" }, host: { listeners: { "touchstart": "onTouchStart($event)", "touchend": "onTouchEnd($event)", "touchmove": "onTouchMove($event)" } }, ngImport: i0 }); }
125
+ }
126
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.7", ngImport: i0, type: SwipeDirective, decorators: [{
127
+ type: Directive,
128
+ args: [{
129
+ selector: '[appSwipe]',
130
+ standalone: true,
131
+ }]
132
+ }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { onTouchStart: [{
133
+ type: HostListener,
134
+ args: ['touchstart', ['$event']]
135
+ }], onTouchEnd: [{
136
+ type: HostListener,
137
+ args: ['touchend', ['$event']]
138
+ }], onTouchMove: [{
139
+ type: HostListener,
140
+ args: ['touchmove', ['$event']]
141
+ }] } });
142
+
67
143
  var Direction;
68
144
  (function (Direction) {
69
145
  Direction[Direction["left"] = 0] = "left";
70
146
  Direction[Direction["right"] = 1] = "right";
71
147
  Direction[Direction["index"] = 2] = "index";
72
148
  })(Direction || (Direction = {}));
73
- class MyHammerConfig extends HammerGestureConfig {
74
- constructor() {
75
- super(...arguments);
76
- this.overrides = {
77
- pinch: { enable: false },
78
- rotate: { enable: false }
79
- };
80
- this.options = {
81
- touchAction: 'auto',
82
- inputClass: Hammer.TouchInput,
83
- };
84
- }
85
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.7", ngImport: i0, type: MyHammerConfig, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
86
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.1.7", ngImport: i0, type: MyHammerConfig }); }
87
- }
88
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.7", ngImport: i0, type: MyHammerConfig, decorators: [{
89
- type: Injectable
90
- }] });
91
149
  class NgxCarouselComponent {
92
150
  set autoplay(value) {
93
151
  this.autoplay$.next(value);
@@ -255,13 +313,9 @@ class NgxCarouselComponent {
255
313
  slideTo(index) {
256
314
  this.goto(Direction.index, index);
257
315
  }
258
- onPan(event, slideElem) {
316
+ onPan(deltaX, slideElem) {
259
317
  // https://github.com/angular/angular/issues/10541#issuecomment-346539242
260
318
  // if y velocity is greater, it's a panup/pandown, so ignore.
261
- if (Math.abs(event.velocityY) > Math.abs(event.velocityX)) {
262
- return;
263
- }
264
- let deltaX = event.deltaX;
265
319
  if (this.isOutOfBounds()) {
266
320
  deltaX *= 0.2; // decelerate movement;
267
321
  }
@@ -373,17 +427,7 @@ class NgxCarouselComponent {
373
427
  this.timerStop$.next(true);
374
428
  }
375
429
  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 }); }
376
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.1.7", type: NgxCarouselComponent, isStandalone: true, selector: "ngx-ngx-carousel", inputs: { timings: "timings", lazyLoad: "lazyLoad", svgIconOverrides: "svgIconOverrides", autoplay: "autoplay", interval: "interval", loop: "loop", hideArrows: "hideArrows", hideIndicators: "hideIndicators", ariaLabel: "ariaLabel", color: "color", maxWidth: "maxWidth", maintainAspectRatio: "maintainAspectRatio", proportion: "proportion", slideHeight: "slideHeight", slides: "slides", useKeyboard: "useKeyboard", useMouseWheel: "useMouseWheel", orientation: "orientation" }, outputs: { changeEmitter: "changeEmitter" }, host: { listeners: { "keyup": "onKeyUp($event)", "mouseenter": "onMouseEnter()", "mouseleave": "onMouseLeave()", "mousewheel": "onMouseWheel($event)", "window:resize": "onResize($event)" } }, providers: [
377
- {
378
- provide: HAMMER_GESTURE_CONFIG,
379
- useFactory: () => {
380
- if (typeof window !== 'undefined') {
381
- return new MyHammerConfig();
382
- }
383
- return new HammerGestureConfig();
384
- },
385
- },
386
- ], 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 [style.padding-bottom]=\"maintainAspectRatio && proportion ? proportion + '%': '0px'\"\n [style.height]=\"!maintainAspectRatio && slideHeight ? slideHeight : '0px'\"\n (panleft)=\"onPan($event, carouselSlide)\"\n (panright)=\"onPan($event, carouselSlide)\"\n (panend)=\"onPanEnd($event, carouselSlide)\"\n (pancancel)=\"onPanEnd($event, carouselSlide)\"\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: "ngmodule", type: HammerModule }] }); }
430
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.1.7", type: NgxCarouselComponent, isStandalone: true, selector: "ngx-ngx-carousel", inputs: { timings: "timings", lazyLoad: "lazyLoad", svgIconOverrides: "svgIconOverrides", autoplay: "autoplay", interval: "interval", loop: "loop", hideArrows: "hideArrows", hideIndicators: "hideIndicators", ariaLabel: "ariaLabel", color: "color", maxWidth: "maxWidth", maintainAspectRatio: "maintainAspectRatio", proportion: "proportion", slideHeight: "slideHeight", slides: "slides", useKeyboard: "useKeyboard", useMouseWheel: "useMouseWheel", orientation: "orientation" }, 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 (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"], outputs: ["swipeLeft", "swipeRight", "swipeUp", "swipeDown", "onMove"] }] }); }
387
431
  }
388
432
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.7", ngImport: i0, type: NgxCarouselComponent, decorators: [{
389
433
  type: Component,
@@ -392,18 +436,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.7", ngImpor
392
436
  CommonModule,
393
437
  MatIconButton,
394
438
  MatMiniFabButton,
395
- HammerModule,
396
- ], providers: [
397
- {
398
- provide: HAMMER_GESTURE_CONFIG,
399
- useFactory: () => {
400
- if (typeof window !== 'undefined') {
401
- return new MyHammerConfig();
402
- }
403
- return new HammerGestureConfig();
404
- },
405
- },
406
- ], 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 [style.padding-bottom]=\"maintainAspectRatio && proportion ? proportion + '%': '0px'\"\n [style.height]=\"!maintainAspectRatio && slideHeight ? slideHeight : '0px'\"\n (panleft)=\"onPan($event, carouselSlide)\"\n (panright)=\"onPan($event, carouselSlide)\"\n (panend)=\"onPanEnd($event, carouselSlide)\"\n (pancancel)=\"onPanEnd($event, carouselSlide)\"\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"] }]
439
+ SwipeDirective,
440
+ ], 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 (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"] }]
407
441
  }], ctorParameters: () => [{ type: i1$1.AnimationBuilder }, { type: i0.Renderer2 }, { type: Object, decorators: [{
408
442
  type: Inject,
409
443
  args: [PLATFORM_ID]
@@ -479,5 +513,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.7", ngImpor
479
513
  * Generated bundle index. Do not edit.
480
514
  */
481
515
 
482
- export { CarouselSlideComponent, MyHammerConfig, NgxCarouselComponent, NgxCarouselService };
516
+ export { CarouselSlideComponent, NgxCarouselComponent, NgxCarouselService };
483
517
  //# sourceMappingURL=hantarex-ngx-carousel.mjs.map
@@ -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/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 {\n AfterContentInit,\n AfterViewInit,\n Component,\n ContentChildren, ElementRef,\n EventEmitter, HostListener, Inject, Injectable,\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 {HAMMER_GESTURE_CONFIG, HammerGestureConfig, HammerModule} from '@angular/platform-browser';\nimport Hammer from 'hammerjs';\n\nenum Direction {\n left,\n right,\n index\n}\n@Injectable()\nexport class MyHammerConfig extends HammerGestureConfig {\n override overrides = <any>{\n pinch: { enable: false },\n rotate: { enable: false }\n };\n override options = <any>{\n touchAction: 'auto',\n inputClass: Hammer.TouchInput,\n };\n}\n@Component({\n selector: 'ngx-ngx-carousel',\n imports: [\n MatIcon,\n CommonModule,\n MatIconButton,\n MatMiniFabButton,\n HammerModule,\n ],\n templateUrl: './ngx-carousel.component.html',\n styleUrls: ['./ngx-carousel.component.scss'],\n providers: [\n {\n provide: HAMMER_GESTURE_CONFIG,\n useFactory: (): any => {\n if (typeof window !== 'undefined') {\n return new MyHammerConfig();\n }\n return new HammerGestureConfig();\n },\n },\n ]\n})\nexport class NgxCarouselComponent implements AfterContentInit, AfterViewInit, MatCarousel, OnDestroy {\n @Input() public timings = '250ms ease-in';\n @Input() public lazyLoad = 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(event: any, 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 (Math.abs(event.velocityY) > Math.abs(event.velocityX)) {\n return;\n }\n let deltaX = event.deltaX;\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: any, slideElem: HTMLElement): void {\n this.renderer.removeStyle(slideElem, 'cursor');\n\n if (\n !this.isOutOfBounds() &&\n Math.abs(event.deltaX) > this.getWidth() * 0.25\n ) {\n if (event.deltaX <= 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 [style.padding-bottom]=\"maintainAspectRatio && proportion ? proportion + '%': '0px'\"\n [style.height]=\"!maintainAspectRatio && slideHeight ? slideHeight : '0px'\"\n (panleft)=\"onPan($event, carouselSlide)\"\n (panright)=\"onPan($event, carouselSlide)\"\n (panend)=\"onPanEnd($event, carouselSlide)\"\n (pancancel)=\"onPanEnd($event, carouselSlide)\"\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\";\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 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\n @HostListener('touchstart', ['$event'])\n onTouchStart(event: TouchEvent) {\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 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 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 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 return;\n }\n\n if (absDeltaX > absDeltaY) {\n if (deltaX > 0) {\n this.swipeRight.emit(deltaX);\n } else {\n this.swipeLeft.emit(deltaX);\n }\n } else {\n if (deltaY > 0) {\n this.swipeDown.emit(deltaY);\n } else {\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,\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 @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: any, slideElem: HTMLElement): void {\n this.renderer.removeStyle(slideElem, 'cursor');\n\n if (\n !this.isOutOfBounds() &&\n Math.abs(event.deltaX) > this.getWidth() * 0.25\n ) {\n if (event.deltaX <= 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 (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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"}
@@ -4,14 +4,7 @@ import { ThemePalette } from "@angular/material/core";
4
4
  import { CarouselSlideComponent } from "./carousel-slide/carousel-slide.component";
5
5
  import { ListKeyManager } from "@angular/cdk/a11y";
6
6
  import { AnimationBuilder } from "@angular/animations";
7
- import { HammerGestureConfig } from '@angular/platform-browser';
8
7
  import * as i0 from "@angular/core";
9
- export declare class MyHammerConfig extends HammerGestureConfig {
10
- overrides: any;
11
- options: any;
12
- static ɵfac: i0.ɵɵFactoryDeclaration<MyHammerConfig, never>;
13
- static ɵprov: i0.ɵɵInjectableDeclaration<MyHammerConfig>;
14
- }
15
8
  export declare class NgxCarouselComponent implements AfterContentInit, AfterViewInit, MatCarousel, OnDestroy {
16
9
  private animationBuilder;
17
10
  private renderer;
@@ -71,7 +64,7 @@ export declare class NgxCarouselComponent implements AfterContentInit, AfterView
71
64
  next(): void;
72
65
  previous(): void;
73
66
  slideTo(index: number): void;
74
- onPan(event: any, slideElem: HTMLElement): void;
67
+ onPan(deltaX: number, slideElem: HTMLElement): void;
75
68
  onPanEnd(event: any, slideElem: HTMLElement): void;
76
69
  private isOutOfBounds;
77
70
  private isVisible;
@@ -0,0 +1,26 @@
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
+ swipeLeft: import("@angular/core").OutputEmitterRef<number>;
7
+ swipeRight: import("@angular/core").OutputEmitterRef<number>;
8
+ swipeUp: import("@angular/core").OutputEmitterRef<number>;
9
+ swipeDown: import("@angular/core").OutputEmitterRef<number>;
10
+ onMove: import("@angular/core").OutputEmitterRef<{
11
+ x: number;
12
+ y: number;
13
+ }>;
14
+ private touchStartX;
15
+ private touchStartY;
16
+ private touchEndX;
17
+ private touchEndY;
18
+ constructor(el: ElementRef);
19
+ onTouchStart(event: TouchEvent): void;
20
+ onTouchEnd(event: TouchEvent): void;
21
+ onTouchMove(event: TouchEvent): void;
22
+ private handleMove;
23
+ private handleSwipe;
24
+ static ɵfac: i0.ɵɵFactoryDeclaration<SwipeDirective, never>;
25
+ static ɵdir: i0.ɵɵDirectiveDeclaration<SwipeDirective, "[appSwipe]", never, { "minSwipeDistance": { "alias": "minSwipeDistance"; "required": false; "isSignal": true; }; }, { "swipeLeft": "swipeLeft"; "swipeRight": "swipeRight"; "swipeUp": "swipeUp"; "swipeDown": "swipeDown"; "onMove": "onMove"; }, never, never, true, never>;
26
+ }
package/package.json CHANGED
@@ -1,10 +1,9 @@
1
1
  {
2
2
  "name": "@hantarex/ngx-carousel",
3
- "version": "20.0.1",
3
+ "version": "20.0.2",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^20.0.0",
6
- "@angular/core": "^20.0.0",
7
- "hammerjs": "^2.0.0"
6
+ "@angular/core": "^20.0.0"
8
7
  },
9
8
  "dependencies": {
10
9
  "tslib": "^2.3.0"