UNPKG

angular-responsive-carousel-ng16

Version:

Carousel for Angular. A simple solution for horizontal scrolling images with lazy loading.

141 lines 15.6 kB
export class Carousel { get cellLength() { return this.cells.cellLength; } get cellLengthInLightDOMMode() { if (this.images) { let cellLength = this.numberOfVisibleCells + this.overflowCellsLimit * 2; if (cellLength > this.images.length) { cellLength = this.images.length; } return cellLength; } else { return this.cellLength; } } get lastCellIndex() { return this.images.length ? (this.images.length - 1) : (this.cells.cellLength - 1); } get overflowCellsLimit() { return this.utils.overflowCellsLimit; } get cellLimit() { if (this.isLightDOM) { let cellLimit = this.numberOfVisibleCells + this.overflowCellsLimit * 2; if (cellLimit < this.numberOfVisibleCells) { cellLimit = this.numberOfVisibleCells; } return cellLimit; } else { return this.properties.images.length; } } get isLightDOM() { return this.properties.lightDOM || this.properties.loop; } get images() { return this.properties.images; } get margin() { return this.properties.margin; } get minSwipeDistance() { return this.properties.minSwipeDistance; } get transitionDuration() { return this.properties.transitionDuration; } get transitionTimingFunction() { return this.properties.transitionTimingFunction; } get fullCellWidth() { return this.properties.cellWidth + this.margin; } get numberOfVisibleCells() { return this.utils.numberOfVisibleCells; } get lapCounter() { return Math.floor(this.slide.counter / this.cellLengthInLightDOMMode); } get slideCounter() { return this.slide.counter; } constructor(properties, utils, cells, container, slide) { this.properties = properties; this.utils = utils; this.cells = cells; this.container = container; this.slide = slide; /* The slide length has been limited by the limitSlideLength() method */ this.isSlideLengthLimited = false; this.isContentImages = true; this.isLazyLoad = true; this.isContainerLocked = true; this.alignCells = "left"; this.initialContainerPosition = 0; this.containerPullLimit = 100; this.handleTouchstart = (event) => { this.container.handleTouchstart(); this.slide.handleTouchstart(event); }; this.handleHorizontalSwipe = (event) => { this.container.handleHorizontalSwipe(); }; this.handleTouchend = (event) => { if (this.properties.freeScroll) { this.container.handleTouchend(); } else { this.container.handleTouchend(true); this.slide.handleTouchend(event); } }; this.isNextArrowDisabled = () => { return this.slide.isNextArrowDisabled(); }; this.isPrevArrowDisabled = () => { return this.slide.isPrevArrowDisabled(); }; this.init(); } updateProperties(properties) { this.properties = properties; } init() { this.cellsElement = this.properties.cellsElement; this.visibleWidth = this.properties.visibleWidth || this.cellsElement.parentElement.clientWidth; } destroy() { clearInterval(this.autoplayId); } lineUpCells() { this.cells.lineUp(); } handleTransitionend() { this.slide.handleTransitionend(); } getImage(index) { return this.cells.getImage(index); } next(length = 1) { if (!this.isNextArrowDisabled()) { this.slide.next(length); } } prev(length = 1) { this.slide.prev(length); } autoplay() { this.autoplayId = setInterval(() => { this.next(); }, this.properties.autoplayInterval); } stopAutoplay() { if (this.autoplayId) { clearInterval(this.autoplayId); } } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2Fyb3VzZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXJlc3BvbnNpdmUtY2Fyb3VzZWwtbmcxNi9zcmMvbGliL2Nhcm91c2VsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sT0FBTyxRQUFRO0lBZWpCLElBQUksVUFBVTtRQUNWLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUM7SUFDakMsQ0FBQztJQUVELElBQUksd0JBQXdCO1FBQ3hCLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNiLElBQUksVUFBVSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsQ0FBQyxDQUFDO1lBQ3pFLElBQUksVUFBVSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFO2dCQUNqQyxVQUFVLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7YUFDbkM7WUFDRCxPQUFPLFVBQVUsQ0FBQztTQUNyQjthQUFNO1lBQ0gsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO1NBQzFCO0lBQ0wsQ0FBQztJQUVELElBQUksYUFBYTtRQUNiLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDdkYsQ0FBQztJQUVELElBQUksa0JBQWtCO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQztJQUN6QyxDQUFDO0lBRUQsSUFBSSxTQUFTO1FBQ1QsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ2pCLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJ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QUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQzNCO0lBQ0wsQ0FBQztJQUVELElBQUksQ0FBQyxTQUFpQixDQUFDO1FBQ25CLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFVRCxRQUFRO1FBQ0osSUFBSSxDQUFDLFVBQVUsR0FBRyxXQUFXLENBQUMsR0FBRyxFQUFFO1lBQy9CLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNoQixDQUFDLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRCxZQUFZO1FBQ1IsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ2pCLGFBQWEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDbEM7SUFDTCxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1Byb3BlcnRpZXN9IGZyb20gJy4vaW50ZXJmYWNlcyc7XG5cbmV4cG9ydCBjbGFzcyBDYXJvdXNlbCB7XG4gICAgY2VsbHNFbGVtZW50OiBIVE1MRWxlbWVudCB8IHVuZGVmaW5lZDtcblxuICAgIC8qIFRoZSBzbGlkZSBsZW5ndGggaGFzIGJlZW4gbGltaXRlZCBieSB0aGUgbGltaXRTbGlkZUxlbmd0aCgpIG1ldGhvZCAqL1xuICAgIGlzU2xpZGVMZW5ndGhMaW1pdGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBpc0NvbnRlbnRJbWFnZXM6IGJvb2xlYW4gPSB0cnVlO1xuICAgIHZpc2libGVXaWR0aCE6IG51bWJlcjtcbiAgICBpc0xhenlMb2FkOiBib29sZWFuID0gdHJ1ZTtcbiAgICBpc0NvbnRhaW5lckxvY2tlZDogYm9vbGVhbiA9IHRydWU7XG4gICAgYWxpZ25DZWxsczogXCJsZWZ0XCIgfCBcImNlbnRlclwiID0gXCJsZWZ0XCI7XG4gICAgaW5pdGlhbENvbnRhaW5lclBvc2l0aW9uOiBudW1iZXIgPSAwO1xuICAgIGF1dG9wbGF5SWQ6IGFueTtcbiAgICBjb250YWluZXJQdWxsTGltaXQgPSAxMDA7XG5cbiAgICBnZXQgY2VsbExlbmd0aCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2VsbHMuY2VsbExlbmd0aDtcbiAgICB9XG5cbiAgICBnZXQgY2VsbExlbmd0aEluTGlnaHRET01Nb2RlKCkge1xuICAgICAgICBpZiAodGhpcy5pbWFnZXMpIHtcbiAgICAgICAgICAgIGxldCBjZWxsTGVuZ3RoID0gdGhpcy5udW1iZXJPZlZpc2libGVDZWxscyArIHRoaXMub3ZlcmZsb3dDZWxsc0xpbWl0ICogMjtcbiAgICAgICAgICAgIGlmIChjZWxsTGVuZ3RoID4gdGhpcy5pbWFnZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgY2VsbExlbmd0aCA9IHRoaXMuaW1hZ2VzLmxlbmd0aDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBjZWxsTGVuZ3RoO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2VsbExlbmd0aDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldCBsYXN0Q2VsbEluZGV4KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5pbWFnZXMubGVuZ3RoID8gKHRoaXMuaW1hZ2VzLmxlbmd0aCAtIDEpIDogKHRoaXMuY2VsbHMuY2VsbExlbmd0aCAtIDEpO1xuICAgIH1cblxuICAgIGdldCBvdmVyZmxvd0NlbGxzTGltaXQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnV0aWxzLm92ZXJmbG93Q2VsbHNMaW1pdDtcbiAgICB9XG5cbiAgICBnZXQgY2VsbExpbWl0KCkge1xuICAgICAgICBpZiAodGhpcy5pc0xpZ2h0RE9NKSB7XG4gICAgICAgICAgICBsZXQgY2VsbExpbWl0ID0gdGhpcy5udW1iZXJPZlZpc2libGVDZWxscyArIHRoaXMub3ZlcmZsb3dDZWxsc0xpbWl0ICogMjtcblxuICAgICAgICAgICAgaWYgKGNlbGxMaW1pdCA8IHRoaXMubnVtYmVyT2ZWaXNpYmxlQ2VsbHMpIHtcbiAgICAgICAgICAgICAgICBjZWxsTGltaXQgPSB0aGlzLm51bWJlck9mVmlzaWJsZUNlbGxzO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gY2VsbExpbWl0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucHJvcGVydGllcy5pbWFnZXMubGVuZ3RoO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0IGlzTGlnaHRET00oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnByb3BlcnRpZXMubGlnaHRET00gfHwgdGhpcy5wcm9wZXJ0aWVzLmxvb3A7XG4gICAgfVxuXG4gICAgZ2V0IGltYWdlcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvcGVydGllcy5pbWFnZXM7XG4gICAgfVxuXG4gICAgZ2V0IG1hcmdpbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvcGVydGllcy5tYXJnaW47XG4gICAgfVxuXG4gICAgZ2V0IG1pblN3aXBlRGlzdGFuY2UoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnByb3BlcnRpZXMubWluU3dpcGVEaXN0YW5jZTtcbiAgICB9XG5cbiAgICBnZXQgdHJhbnNpdGlvbkR1cmF0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5wcm9wZXJ0aWVzLnRyYW5zaXRpb25EdXJhdGlvbjtcbiAgICB9XG5cbiAgICBnZXQgdHJhbnNpdGlvblRpbWluZ0Z1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5wcm9wZXJ0aWVzLnRyYW5zaXRpb25UaW1pbmdGdW5jdGlvbjtcbiAgICB9XG5cbiAgICBnZXQgZnVsbENlbGxXaWR0aCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvcGVydGllcy5jZWxsV2lkdGggKyB0aGlzLm1hcmdpbjtcbiAgICB9XG5cbiAgICBnZXQgbnVtYmVyT2ZWaXNpYmxlQ2VsbHMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnV0aWxzLm51bWJlck9mVmlzaWJsZUNlbGxzO1xuICAgIH1cblxuICAgIGdldCBsYXBDb3VudGVyKCkge1xuICAgICAgICByZXR1cm4gTWF0aC5mbG9vcih0aGlzLnNsaWRlLmNvdW50ZXIgLyB0aGlzLmNlbGxMZW5ndGhJbkxpZ2h0RE9NTW9kZSk7XG4gICAgfVxuXG4gICAgZ2V0IHNsaWRlQ291bnRlcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2xpZGUuY291bnRlcjtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBwcm9wZXJ0aWVzOiBQcm9wZXJ0aWVzLFxuICAgICAgICBwcml2YXRlIHV0aWxzOiBhbnksXG4gICAgICAgIHByaXZhdGUgY2VsbHM6IGFueSxcbiAgICAgICAgcHJpdmF0ZSBjb250YWluZXI6IGFueSxcbiAgICAgICAgcHJpdmF0ZSBzbGlkZTogYW55KSB7XG5cbiAgICAgICAgdGhpcy5pbml0KCk7XG4gICAgfVxuXG4gICAgdXBkYXRlUHJvcGVydGllcyhwcm9wZXJ0aWVzOiBQcm9wZXJ0aWVzKSB7XG4gICAgICAgIHRoaXMucHJvcGVydGllcyA9IHByb3BlcnRpZXM7XG4gICAgfVxuXG4gICAgaW5pdCgpIHtcbiAgICAgICAgdGhpcy5jZWxsc0VsZW1lbnQgPSB0aGlzLnByb3BlcnRpZXMuY2VsbHNFbGVtZW50O1xuICAgICAgICB0aGlzLnZpc2libGVXaWR0aCA9IHRoaXMucHJvcGVydGllcy52aXNpYmxlV2lkdGggfHwgdGhpcy5jZWxsc0VsZW1lbnQhLnBhcmVudEVsZW1lbnQhLmNsaWVudFdpZHRoO1xuICAgIH1cblxuICAgIGRlc3Ryb3koKSB7XG4gICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5hdXRvcGxheUlkKTtcbiAgICB9XG5cbiAgICBsaW5lVXBDZWxscygpIHtcbiAgICAgICAgdGhpcy5jZWxscy5saW5lVXAoKTtcbiAgICB9XG5cbiAgICBoYW5kbGVUb3VjaHN0YXJ0ID0gKGV2ZW50OiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5jb250YWluZXIuaGFuZGxlVG91Y2hzdGFydCgpO1xuICAgICAgICB0aGlzLnNsaWRlLmhhbmRsZVRvdWNoc3RhcnQoZXZlbnQpO1xuICAgIH1cblxuICAgIGhhbmRsZUhvcml6b250YWxTd2lwZSA9IChldmVudDogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuY29udGFpbmVyLmhhbmRsZUhvcml6b250YWxTd2lwZSgpO1xuICAgIH1cblxuICAgIGhhbmRsZVRvdWNoZW5kID0gKGV2ZW50OiBhbnkpID0+IHtcbiAgICAgICAgaWYgKHRoaXMucHJvcGVydGllcy5mcmVlU2Nyb2xsKSB7XG4gICAgICAgICAgICB0aGlzLmNvbnRhaW5lci5oYW5kbGVUb3VjaGVuZCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jb250YWluZXIuaGFuZGxlVG91Y2hlbmQodHJ1ZSk7XG4gICAgICAgICAgICB0aGlzLnNsaWRlLmhhbmRsZVRvdWNoZW5kKGV2ZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGhhbmRsZVRyYW5zaXRpb25lbmQoKSB7XG4gICAgICAgIHRoaXMuc2xpZGUuaGFuZGxlVHJhbnNpdGlvbmVuZCgpO1xuICAgIH1cblxuICAgIGdldEltYWdlKGluZGV4Om51bWJlcikge1xuICAgICAgICByZXR1cm4gdGhpcy5jZWxscy5nZXRJbWFnZShpbmRleCk7XG4gICAgfVxuXG4gICAgbmV4dChsZW5ndGg6IG51bWJlciA9IDEpIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzTmV4dEFycm93RGlzYWJsZWQoKSkge1xuICAgICAgICAgICAgdGhpcy5zbGlkZS5uZXh0KGxlbmd0aCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcmV2KGxlbmd0aDogbnVtYmVyID0gMSkge1xuICAgICAgICB0aGlzLnNsaWRlLnByZXYobGVuZ3RoKTtcbiAgICB9XG5cbiAgICBpc05leHRBcnJvd0Rpc2FibGVkID0gKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5zbGlkZS5pc05leHRBcnJvd0Rpc2FibGVkKCk7XG4gICAgfVxuXG4gICAgaXNQcmV2QXJyb3dEaXNhYmxlZCA9ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2xpZGUuaXNQcmV2QXJyb3dEaXNhYmxlZCgpO1xuICAgIH1cblxuICAgIGF1dG9wbGF5KCkge1xuICAgICAgICB0aGlzLmF1dG9wbGF5SWQgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLm5leHQoKTtcbiAgICAgICAgfSwgdGhpcy5wcm9wZXJ0aWVzLmF1dG9wbGF5SW50ZXJ2YWwpO1xuICAgIH1cblxuICAgIHN0b3BBdXRvcGxheSgpIHtcbiAgICAgICAgaWYgKHRoaXMuYXV0b3BsYXlJZCkge1xuICAgICAgICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLmF1dG9wbGF5SWQpO1xuICAgICAgICB9XG4gICAgfVxufSJdfQ==