UNPKG

carousel-angular

Version:

A simple carousel component for Angular 14+ based on 'angular-responsive-carousel' by Ivy Laboratory http://ivylab.space

52 lines 6.27 kB
export class Utils { constructor(carouselProperties) { this.carouselProperties = carouselProperties; } get margin() { return this.carouselProperties.margin; } get overflowCellsLimit() { return this.carouselProperties.overflowCellsLimit; } get numberOfVisibleCells() { return Math.ceil(this.visibleWidth / this.fullCellWidth); } get visibleCellsOverflowContainer() { return (this.numberOfVisibleCells * this.fullCellWidth - this.margin > this.visibleWidth); } get fullCellWidth() { return this.carouselProperties.cellWidth + this.carouselProperties.margin; } get visibleWidth() { return (this.carouselProperties.visibleWidth || this.carouselProperties.cellsElement.parentElement.clientWidth); } updateProperties(carouselProperties) { this.carouselProperties = carouselProperties; } getStartX(event) { const { touches } = event; const carouselElementPosition = this.getCarouselElementPosition().left; let startX; if (touches) { startX = touches[0].clientX - carouselElementPosition; } else { startX = event.clientX - carouselElementPosition; } return startX; } getMoveX(event) { const { touches } = event; const carouselElementPositionX = this.getCarouselElementPosition().left; if (touches) { return touches[0].clientX - carouselElementPositionX; } return event.clientX - carouselElementPositionX; } getCarouselElementPosition() { return this.carouselProperties.hostElement.getBoundingClientRect(); } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wcm9qZWN0cy9jYXJvdXNlbC1hbmd1bGFyL3NyYy9saWIvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxPQUFPLEtBQUs7SUErQmhCLFlBQW9CLGtCQUFzQztRQUF0Qyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO0lBQUcsQ0FBQztJQTlCOUQsSUFBSSxNQUFNO1FBQ1IsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDO0lBQ3hDLENBQUM7SUFFRCxJQUFJLGtCQUFrQjtRQUNwQixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxrQkFBa0IsQ0FBQztJQUNwRCxDQUFDO0lBRUQsSUFBSSxvQkFBb0I7UUFDdEIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRCxJQUFJLDZCQUE2QjtRQUMvQixPQUFPLENBQ0wsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLE1BQU07WUFDNUQsSUFBSSxDQUFDLFlBQVksQ0FDbEIsQ0FBQztJQUNKLENBQUM7SUFFRCxJQUFJLGFBQWE7UUFDZixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQztJQUM1RSxDQUFDO0lBRUQsSUFBSSxZQUFZO1FBQ2QsT0FBTyxDQUNMLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZO1lBQ3BDLElBQUksQ0FBQyxrQkFBbUIsQ0FBQyxZQUFhLENBQUMsYUFBYyxDQUFDLFdBQVcsQ0FDbEUsQ0FBQztJQUNKLENBQUM7SUFJRCxnQkFBZ0IsQ0FBQyxrQkFBc0M7UUFDckQsSUFBSSxDQUFDLGtCQUFrQixHQUFHLGtCQUFrQixDQUFDO0lBQy9DLENBQUM7SUFFRCxTQUFTLENBQUMsS0FBVTtRQUNsQixNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsS0FBSyxDQUFDO1FBQzFCLE1BQU0sdUJBQXVCLEdBQUcsSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUMsSUFBSSxDQUFDO1FBQ3ZFLElBQUksTUFBTSxDQUFDO1FBRVgsSUFBSSxPQUFPLEVBQUU7WUFDWCxNQUFNLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sR0FBRyx1QkFBdUIsQ0FBQztTQUN2RDthQUFNO1lBQ0wsTUFBTSxHQUFHLEtBQUssQ0FBQyxPQUFPLEdBQUcsdUJBQXVCLENBQUM7U0FDbEQ7UUFFRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRUQsUUFBUSxDQUFDLEtBQVU7UUFDakIsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLEtBQUssQ0FBQztRQUMxQixNQUFNLHdCQUF3QixHQUFHLElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFDLElBQUksQ0FBQztRQUV4RSxJQUFJLE9BQU8sRUFBRTtZQUNYLE9BQU8sT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sR0FBRyx3QkFBd0IsQ0FBQztTQUN0RDtRQUNELE9BQU8sS0FBSyxDQUFDLE9BQU8sR0FBRyx3QkFBd0IsQ0FBQztJQUNsRCxDQUFDO0lBRUQsMEJBQTBCO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLFdBQVcsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO0lBQ3JFLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFByb3BlcnRpZXMgYXMgQ2Fyb3VzZWxQcm9wZXJ0aWVzIH0gZnJvbSAnLi9pbnRlcmZhY2VzJztcblxuZXhwb3J0IGNsYXNzIFV0aWxzIHtcbiAgZ2V0IG1hcmdpbigpIHtcbiAgICByZXR1cm4gdGhpcy5jYXJvdXNlbFByb3BlcnRpZXMubWFyZ2luO1xuICB9XG5cbiAgZ2V0IG92ZXJmbG93Q2VsbHNMaW1pdCgpIHtcbiAgICByZXR1cm4gdGhpcy5jYXJvdXNlbFByb3BlcnRpZXMub3ZlcmZsb3dDZWxsc0xpbWl0O1xuICB9XG5cbiAgZ2V0IG51bWJlck9mVmlzaWJsZUNlbGxzKCkge1xuICAgIHJldHVybiBNYXRoLmNlaWwodGhpcy52aXNpYmxlV2lkdGggLyB0aGlzLmZ1bGxDZWxsV2lkdGgpO1xuICB9XG5cbiAgZ2V0IHZpc2libGVDZWxsc092ZXJmbG93Q29udGFpbmVyKCkge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLm51bWJlck9mVmlzaWJsZUNlbGxzICogdGhpcy5mdWxsQ2VsbFdpZHRoIC0gdGhpcy5tYXJnaW4gPlxuICAgICAgdGhpcy52aXNpYmxlV2lkdGhcbiAgICApO1xuICB9XG5cbiAgZ2V0IGZ1bGxDZWxsV2lkdGgoKSB7XG4gICAgcmV0dXJuIHRoaXMuY2Fyb3VzZWxQcm9wZXJ0aWVzLmNlbGxXaWR0aCArIHRoaXMuY2Fyb3VzZWxQcm9wZXJ0aWVzLm1hcmdpbjtcbiAgfVxuXG4gIGdldCB2aXNpYmxlV2lkdGgoKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuY2Fyb3VzZWxQcm9wZXJ0aWVzLnZpc2libGVXaWR0aCB8fFxuICAgICAgdGhpcy5jYXJvdXNlbFByb3BlcnRpZXMhLmNlbGxzRWxlbWVudCEucGFyZW50RWxlbWVudCEuY2xpZW50V2lkdGhcbiAgICApO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjYXJvdXNlbFByb3BlcnRpZXM6IENhcm91c2VsUHJvcGVydGllcykge31cblxuICB1cGRhdGVQcm9wZXJ0aWVzKGNhcm91c2VsUHJvcGVydGllczogQ2Fyb3VzZWxQcm9wZXJ0aWVzKSB7XG4gICAgdGhpcy5jYXJvdXNlbFByb3BlcnRpZXMgPSBjYXJvdXNlbFByb3BlcnRpZXM7XG4gIH1cblxuICBnZXRTdGFydFgoZXZlbnQ6IGFueSkge1xuICAgIGNvbnN0IHsgdG91Y2hlcyB9ID0gZXZlbnQ7XG4gICAgY29uc3QgY2Fyb3VzZWxFbGVtZW50UG9zaXRpb24gPSB0aGlzLmdldENhcm91c2VsRWxlbWVudFBvc2l0aW9uKCkubGVmdDtcbiAgICBsZXQgc3RhcnRYO1xuXG4gICAgaWYgKHRvdWNoZXMpIHtcbiAgICAgIHN0YXJ0WCA9IHRvdWNoZXNbMF0uY2xpZW50WCAtIGNhcm91c2VsRWxlbWVudFBvc2l0aW9uO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdGFydFggPSBldmVudC5jbGllbnRYIC0gY2Fyb3VzZWxFbGVtZW50UG9zaXRpb247XG4gICAgfVxuXG4gICAgcmV0dXJuIHN0YXJ0WDtcbiAgfVxuXG4gIGdldE1vdmVYKGV2ZW50OiBhbnkpIHtcbiAgICBjb25zdCB7IHRvdWNoZXMgfSA9IGV2ZW50O1xuICAgIGNvbnN0IGNhcm91c2VsRWxlbWVudFBvc2l0aW9uWCA9IHRoaXMuZ2V0Q2Fyb3VzZWxFbGVtZW50UG9zaXRpb24oKS5sZWZ0O1xuXG4gICAgaWYgKHRvdWNoZXMpIHtcbiAgICAgIHJldHVybiB0b3VjaGVzWzBdLmNsaWVudFggLSBjYXJvdXNlbEVsZW1lbnRQb3NpdGlvblg7XG4gICAgfVxuICAgIHJldHVybiBldmVudC5jbGllbnRYIC0gY2Fyb3VzZWxFbGVtZW50UG9zaXRpb25YO1xuICB9XG5cbiAgZ2V0Q2Fyb3VzZWxFbGVtZW50UG9zaXRpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuY2Fyb3VzZWxQcm9wZXJ0aWVzLmhvc3RFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICB9XG59XG4iXX0=