angular-responsive-carousel-ng16
Version:
Carousel for Angular. A simple solution for horizontal scrolling images with lazy loading.
67 lines • 8.43 kB
JavaScript
export class Utils {
get images() {
return this.carouselProperties.images;
}
get margin() {
return this.carouselProperties.margin;
}
get overflowCellsLimit() {
if (this.images && this.isImagesLessCellLimit) {
let overflowCellsLimit = Math.floor((this.images.length - this.numberOfVisibleCells) / 2);
if (overflowCellsLimit < 0) {
overflowCellsLimit = 0;
}
return overflowCellsLimit;
}
else {
return this.carouselProperties.overflowCellsLimit;
}
}
get isImagesLessCellLimit() {
return this.carouselProperties.overflowCellsLimit * 2 + this.numberOfVisibleCells > this.images.length;
}
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;
}
constructor(carouselProperties) {
this.carouselProperties = carouselProperties;
}
updateProperties(carouselProperties) {
this.carouselProperties = carouselProperties;
}
getStartX(event) {
const touches = event.touches;
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.touches;
const carouselElementPositionX = this.getCarouselElementPosition()['left'];
if (touches) {
return touches[0].clientX - carouselElementPositionX;
}
else {
return event.clientX - carouselElementPositionX;
}
}
getCarouselElementPosition() {
return this.carouselProperties.hostElement.getBoundingClientRect();
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXJlc3BvbnNpdmUtY2Fyb3VzZWwtbmcxNi9zcmMvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sT0FBTyxLQUFLO0lBRWQsSUFBSSxNQUFNO1FBQ04sT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDO0lBQzFDLENBQUM7SUFFRCxJQUFJLE1BQU07UUFDTixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUM7SUFDMUMsQ0FBQztJQUVELElBQUksa0JBQWtCO1FBQ2xCLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMscUJBQXFCLEVBQUU7WUFDM0MsSUFBSSxrQkFBa0IsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFFMUYsSUFBSSxrQkFBa0IsR0FBRyxDQUFDLEVBQUU7Z0JBQ3hCLGtCQUFrQixHQUFHLENBQUMsQ0FBQzthQUMxQjtZQUVELE9BQU8sa0JBQWtCLENBQUM7U0FDN0I7YUFBTTtZQUNILE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLGtCQUFrQixDQUFDO1NBQ3JEO0lBQ0wsQ0FBQztJQUVELElBQUkscUJBQXFCO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLGtCQUFrQixHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFDM0csQ0FBQztJQUVELElBQUksb0JBQW9CO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRUQsSUFBSSw2QkFBNkI7UUFDN0IsT0FBTyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzlGLENBQUM7SUFFRCxJQUFJLGFBQWE7UUFDYixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQztJQUM5RSxDQUFDO0lBRUQsSUFBSSxZQUFZO1FBQ1osT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxrQkFBbUIsQ0FBQyxZQUFhLENBQUMsYUFBYyxDQUFDLFdBQVcsQ0FBQztJQUNySCxDQUFDO0lBRUQsWUFBb0Isa0JBQXNDO1FBQXRDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7SUFFMUQsQ0FBQztJQUVELGdCQUFnQixDQUFDLGtCQUFzQztRQUNuRCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsa0JBQWtCLENBQUM7SUFDakQsQ0FBQztJQUVELFNBQVMsQ0FBQyxLQUFVO1FBQ2hCLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUM7UUFDOUIsTUFBTSx1QkFBdUIsR0FBRyxJQUFJLENBQUMsMEJBQTBCLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMxRSxJQUFJLE1BQU0sQ0FBQztRQUVYLElBQUksT0FBTyxFQUFFO1lBQ1QsTUFBTSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEdBQUcsdUJBQXVCLENBQUM7U0FDekQ7YUFBTTtZQUNILE1BQU0sR0FBRyxLQUFLLENBQUMsT0FBTyxHQUFHLHVCQUF1QixDQUFDO1NBQ3BEO1FBRUQsT0FBTyxNQUFNLENBQUM7SUFDbEIsQ0FBQztJQUVELFFBQVEsQ0FBQyxLQUFVO1FBQ2YsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQztRQUM5QixNQUFNLHdCQUF3QixHQUFHLElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRTNFLElBQUksT0FBTyxFQUFFO1lBQ1QsT0FBTyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxHQUFHLHdCQUF3QixDQUFDO1NBQ3hEO2FBQU07WUFDSCxPQUFPLEtBQUssQ0FBQyxPQUFPLEdBQUcsd0JBQXdCLENBQUM7U0FDbkQ7SUFDTCxDQUFDO0lBRUQsMEJBQTBCO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLFdBQVcsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO0lBQ3ZFLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UHJvcGVydGllcyBhcyBDYXJvdXNlbFByb3BlcnRpZXN9IGZyb20gJy4vaW50ZXJmYWNlcyc7XG5cbmV4cG9ydCBjbGFzcyBVdGlscyB7XG5cbiAgICBnZXQgaW1hZ2VzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jYXJvdXNlbFByb3BlcnRpZXMuaW1hZ2VzO1xuICAgIH1cblxuICAgIGdldCBtYXJnaW4oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNhcm91c2VsUHJvcGVydGllcy5tYXJnaW47XG4gICAgfVxuXG4gICAgZ2V0IG92ZXJmbG93Q2VsbHNMaW1pdCgpIHtcbiAgICAgICAgaWYgKHRoaXMuaW1hZ2VzICYmIHRoaXMuaXNJbWFnZXNMZXNzQ2VsbExpbWl0KSB7XG4gICAgICAgICAgICBsZXQgb3ZlcmZsb3dDZWxsc0xpbWl0ID0gTWF0aC5mbG9vcigodGhpcy5pbWFnZXMubGVuZ3RoIC0gdGhpcy5udW1iZXJPZlZpc2libGVDZWxscykgLyAyKTtcblxuICAgICAgICAgICAgaWYgKG92ZXJmbG93Q2VsbHNMaW1pdCA8IDApIHtcbiAgICAgICAgICAgICAgICBvdmVyZmxvd0NlbGxzTGltaXQgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgXG4gICAgICAgICAgICByZXR1cm4gb3ZlcmZsb3dDZWxsc0xpbWl0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2Fyb3VzZWxQcm9wZXJ0aWVzLm92ZXJmbG93Q2VsbHNMaW1pdDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldCBpc0ltYWdlc0xlc3NDZWxsTGltaXQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNhcm91c2VsUHJvcGVydGllcy5vdmVyZmxvd0NlbGxzTGltaXQgKiAyICsgdGhpcy5udW1iZXJPZlZpc2libGVDZWxscyA+IHRoaXMuaW1hZ2VzLmxlbmd0aDtcbiAgICB9XG5cbiAgICBnZXQgbnVtYmVyT2ZWaXNpYmxlQ2VsbHMoKSB7XG4gICAgICAgIHJldHVybiBNYXRoLmNlaWwodGhpcy52aXNpYmxlV2lkdGggLyB0aGlzLmZ1bGxDZWxsV2lkdGgpO1xuICAgIH1cblxuICAgIGdldCB2aXNpYmxlQ2VsbHNPdmVyZmxvd0NvbnRhaW5lcigpIHtcbiAgICAgICAgcmV0dXJuICh0aGlzLm51bWJlck9mVmlzaWJsZUNlbGxzICogdGhpcy5mdWxsQ2VsbFdpZHRoIC0gdGhpcy5tYXJnaW4pID4gdGhpcy52aXNpYmxlV2lkdGg7XG4gICAgfVxuXG4gICAgZ2V0IGZ1bGxDZWxsV2lkdGgoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNhcm91c2VsUHJvcGVydGllcy5jZWxsV2lkdGggKyB0aGlzLmNhcm91c2VsUHJvcGVydGllcy5tYXJnaW47XG4gICAgfVxuXG4gICAgZ2V0IHZpc2libGVXaWR0aCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2Fyb3VzZWxQcm9wZXJ0aWVzLnZpc2libGVXaWR0aCB8fCB0aGlzLmNhcm91c2VsUHJvcGVydGllcyEuY2VsbHNFbGVtZW50IS5wYXJlbnRFbGVtZW50IS5jbGllbnRXaWR0aDtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNhcm91c2VsUHJvcGVydGllczogQ2Fyb3VzZWxQcm9wZXJ0aWVzKSB7XG5cbiAgICB9XG5cbiAgICB1cGRhdGVQcm9wZXJ0aWVzKGNhcm91c2VsUHJvcGVydGllczogQ2Fyb3VzZWxQcm9wZXJ0aWVzKSB7XG4gICAgICAgIHRoaXMuY2Fyb3VzZWxQcm9wZXJ0aWVzID0gY2Fyb3VzZWxQcm9wZXJ0aWVzO1xuICAgIH1cblxuICAgIGdldFN0YXJ0WChldmVudDogYW55KSB7XG4gICAgICAgIGNvbnN0IHRvdWNoZXMgPSBldmVudC50b3VjaGVzO1xuICAgICAgICBjb25zdCBjYXJvdXNlbEVsZW1lbnRQb3NpdGlvbiA9IHRoaXMuZ2V0Q2Fyb3VzZWxFbGVtZW50UG9zaXRpb24oKVsnbGVmdCddO1xuICAgICAgICBsZXQgc3RhcnRYO1xuXG4gICAgICAgIGlmICh0b3VjaGVzKSB7XG4gICAgICAgICAgICBzdGFydFggPSB0b3VjaGVzWzBdLmNsaWVudFggLSBjYXJvdXNlbEVsZW1lbnRQb3NpdGlvbjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHN0YXJ0WCA9IGV2ZW50LmNsaWVudFggLSBjYXJvdXNlbEVsZW1lbnRQb3NpdGlvbjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzdGFydFg7XG4gICAgfVxuXG4gICAgZ2V0TW92ZVgoZXZlbnQ6IGFueSkge1xuICAgICAgICBjb25zdCB0b3VjaGVzID0gZXZlbnQudG91Y2hlcztcbiAgICAgICAgY29uc3QgY2Fyb3VzZWxFbGVtZW50UG9zaXRpb25YID0gdGhpcy5nZXRDYXJvdXNlbEVsZW1lbnRQb3NpdGlvbigpWydsZWZ0J107XG5cbiAgICAgICAgaWYgKHRvdWNoZXMpIHtcbiAgICAgICAgICAgIHJldHVybiB0b3VjaGVzWzBdLmNsaWVudFggLSBjYXJvdXNlbEVsZW1lbnRQb3NpdGlvblg7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gZXZlbnQuY2xpZW50WCAtIGNhcm91c2VsRWxlbWVudFBvc2l0aW9uWDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldENhcm91c2VsRWxlbWVudFBvc2l0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jYXJvdXNlbFByb3BlcnRpZXMuaG9zdEVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgfVxufSJdfQ==