UNPKG

carousel-angular

Version:

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

104 lines 10.8 kB
export class Carousel { constructor(properties, utils, cells, container, slide) { this.properties = properties; this.utils = utils; this.cells = cells; this.container = container; this.slide = slide; this.autoplayId = null; 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 = () => this.slide.isNextArrowDisabled(); this.isPrevArrowDisabled = () => this.slide.isPrevArrowDisabled(); this.init(); } get cellLength() { return this.cells.cellLength; } get lastCellIndex() { return this.cells.cellLength - 1; } get overflowCellsLimit() { return this.utils.overflowCellsLimit; } get autoplayIsPossible() { return this.properties.autoplayIsPossible; } 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 slideCounter() { return this.slide.counter; } 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(); } next(length = 1) { if (!this.isNextArrowDisabled()) { this.slide.next(length); } } prev(length = 1) { this.slide.prev(length); } autoplay() { if (this.autoplayId === null) { this.autoplayId = setInterval(() => { if (this.autoplayIsPossible) { this.next(); } }, this.properties.autoplayInterval); } } stopAutoplay() { if (this.autoplayId != null) { clearInterval(this.autoplayId); this.autoplayId = null; } } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2Fyb3VzZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wcm9qZWN0cy9jYXJvdXNlbC1hbmd1bGFyL3NyYy9saWIvY2Fyb3VzZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxPQUFPLFFBQVE7SUFtRG5CLFlBQ1UsVUFBc0IsRUFDdEIsS0FBVSxFQUNWLEtBQVUsRUFDVixTQUFjLEVBQ2QsS0FBVTtRQUpWLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsVUFBSyxHQUFMLEtBQUssQ0FBSztRQUNWLFVBQUssR0FBTCxLQUFLLENBQUs7UUFDVixjQUFTLEdBQVQsU0FBUyxDQUFLO1FBQ2QsVUFBSyxHQUFMLEtBQUssQ0FBSztRQW5EcEIsZUFBVSxHQUFRLElBQUksQ0FBQztRQTJFdkIscUJBQWdCLEdBQUcsQ0FBQyxLQUFVLEVBQUUsRUFBRTtZQUNoQyxJQUFJLENBQUMsU0FBUyxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDbEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyQyxDQUFDLENBQUM7UUFFRiwwQkFBcUIsR0FBRyxDQUFDLEtBQVUsRUFBRSxFQUFFO1lBQ3JDLElBQUksQ0FBQyxTQUFTLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUN6QyxDQUFDLENBQUM7UUFFRixtQkFBYyxHQUFHLENBQUMsS0FBVSxFQUFFLEVBQUU7WUFDOUIsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsRUFBRTtnQkFDOUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxjQUFjLEVBQUUsQ0FBQzthQUNqQztpQkFBTTtnQkFDTCxJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDcEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDbEM7UUFDSCxDQUFDLENBQUM7UUFnQkYsd0JBQW1CLEdBQUcsR0FBRyxF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LFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1NBQ3RDO0lBQ0gsQ0FBQztJQUVELFlBQVk7UUFDVixJQUFJLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxFQUFFO1lBQzNCLGFBQWEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDL0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7U0FDeEI7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQcm9wZXJ0aWVzIH0gZnJvbSAnLi9pbnRlcmZhY2VzJztcblxuZXhwb3J0IGNsYXNzIENhcm91c2VsIHtcbiAgY2VsbHNFbGVtZW50OiBIVE1MRWxlbWVudCB8IHVuZGVmaW5lZDtcblxuICB2aXNpYmxlV2lkdGghOiBudW1iZXI7XG5cbiAgYXV0b3BsYXlJZDogYW55ID0gbnVsbDtcblxuICBnZXQgY2VsbExlbmd0aCgpIHtcbiAgICByZXR1cm4gdGhpcy5jZWxscy5jZWxsTGVuZ3RoO1xuICB9XG5cbiAgZ2V0IGxhc3RDZWxsSW5kZXgoKSB7XG4gICAgcmV0dXJuIHRoaXMuY2VsbHMuY2VsbExlbmd0aCAtIDE7XG4gIH1cblxuICBnZXQgb3ZlcmZsb3dDZWxsc0xpbWl0KCkge1xuICAgIHJldHVybiB0aGlzLnV0aWxzLm92ZXJmbG93Q2VsbHNMaW1pdDtcbiAgfVxuXG4gIGdldCBhdXRvcGxheUlzUG9zc2libGUoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvcGVydGllcy5hdXRvcGxheUlzUG9zc2libGU7XG4gIH1cblxuICBnZXQgbWFyZ2luKCkge1xuICAgIHJldHVybiB0aGlzLnByb3BlcnRpZXMubWFyZ2luO1xuICB9XG5cbiAgZ2V0IG1pblN3aXBlRGlzdGFuY2UoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvcGVydGllcy5taW5Td2lwZURpc3RhbmNlO1xuICB9XG5cbiAgZ2V0IHRyYW5zaXRpb25EdXJhdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5wcm9wZXJ0aWVzLnRyYW5zaXRpb25EdXJhdGlvbjtcbiAgfVxuXG4gIGdldCB0cmFuc2l0aW9uVGltaW5nRnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvcGVydGllcy50cmFuc2l0aW9uVGltaW5nRnVuY3Rpb247XG4gIH1cblxuICBnZXQgZnVsbENlbGxXaWR0aCgpIHtcbiAgICByZXR1cm4gdGhpcy5wcm9wZXJ0aWVzLmNlbGxXaWR0aCArIHRoaXMubWFyZ2luO1xuICB9XG5cbiAgZ2V0IG51bWJlck9mVmlzaWJsZUNlbGxzKCkge1xuICAgIHJldHVybiB0aGlzLnV0aWxzLm51bWJlck9mVmlzaWJsZUNlbGxzO1xuICB9XG5cbiAgZ2V0IHNsaWRlQ291bnRlcigpIHtcbiAgICByZXR1cm4gdGhpcy5zbGlkZS5jb3VudGVyO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBwcm9wZXJ0aWVzOiBQcm9wZXJ0aWVzLFxuICAgIHByaXZhdGUgdXRpbHM6IGFueSxcbiAgICBwcml2YXRlIGNlbGxzOiBhbnksXG4gICAgcHJpdmF0ZSBjb250YWluZXI6IGFueSxcbiAgICBwcml2YXRlIHNsaWRlOiBhbnlcbiAgKSB7XG4gICAgdGhpcy5pbml0KCk7XG4gIH1cblxuICB1cGRhdGVQcm9wZXJ0aWVzKHByb3BlcnRpZXM6IFByb3BlcnRpZXMpIHtcbiAgICB0aGlzLnByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzO1xuICB9XG5cbiAgaW5pdCgpIHtcbiAgICB0aGlzLmNlbGxzRWxlbWVudCA9IHRoaXMucHJvcGVydGllcy5jZWxsc0VsZW1lbnQ7XG4gICAgdGhpcy52aXNpYmxlV2lkdGggPVxuICAgICAgdGhpcy5wcm9wZXJ0aWVzLnZpc2libGVXaWR0aCB8fFxuICAgICAgdGhpcy5jZWxsc0VsZW1lbnQhLnBhcmVudEVsZW1lbnQhLmNsaWVudFdpZHRoO1xuICB9XG5cbiAgZGVzdHJveSgpIHtcbiAgICBjbGVhckludGVydmFsKHRoaXMuYXV0b3BsYXlJZCk7XG4gIH1cblxuICBsaW5lVXBDZWxscygpIHtcbiAgICB0aGlzLmNlbGxzLmxpbmVVcCgpO1xuICB9XG5cbiAgaGFuZGxlVG91Y2hzdGFydCA9IChldmVudDogYW55KSA9PiB7XG4gICAgdGhpcy5jb250YWluZXIuaGFuZGxlVG91Y2hzdGFydCgpO1xuICAgIHRoaXMuc2xpZGUuaGFuZGxlVG91Y2hzdGFydChldmVudCk7XG4gIH07XG5cbiAgaGFuZGxlSG9yaXpvbnRhbFN3aXBlID0gKGV2ZW50OiBhbnkpID0+IHtcbiAgICB0aGlzLmNvbnRhaW5lci5oYW5kbGVIb3Jpem9udGFsU3dpcGUoKTtcbiAgfTtcblxuICBoYW5kbGVUb3VjaGVuZCA9IChldmVudDogYW55KSA9PiB7XG4gICAgaWYgKHRoaXMucHJvcGVydGllcy5mcmVlU2Nyb2xsKSB7XG4gICAgICB0aGlzLmNvbnRhaW5lci5oYW5kbGVUb3VjaGVuZCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNvbnRhaW5lci5oYW5kbGVUb3VjaGVuZCh0cnVlKTtcbiAgICAgIHRoaXMuc2xpZGUuaGFuZGxlVG91Y2hlbmQoZXZlbnQpO1xuICAgIH1cbiAgfTtcblxuICBoYW5kbGVUcmFuc2l0aW9uZW5kKCkge1xuICAgIHRoaXMuc2xpZGUuaGFuZGxlVHJhbnNpdGlvbmVuZCgpO1xuICB9XG5cbiAgbmV4dChsZW5ndGggPSAxKSB7XG4gICAgaWYgKCF0aGlzLmlzTmV4dEFycm93RGlzYWJsZWQoKSkge1xuICAgICAgdGhpcy5zbGlkZS5uZXh0KGxlbmd0aCk7XG4gICAgfVxuICB9XG5cbiAgcHJldihsZW5ndGggPSAxKSB7XG4gICAgdGhpcy5zbGlkZS5wcmV2KGxlbmd0aCk7XG4gIH1cblxuICBpc05leHRBcnJvd0Rpc2FibGVkID0gKCkgPT4gdGhpcy5zbGlkZS5pc05leHRBcnJvd0Rpc2FibGVkKCk7XG5cbiAgaXNQcmV2QXJyb3dEaXNhYmxlZCA9ICgpID0+IHRoaXMuc2xpZGUuaXNQcmV2QXJyb3dEaXNhYmxlZCgpO1xuXG4gIGF1dG9wbGF5KCkge1xuICAgIGlmICh0aGlzLmF1dG9wbGF5SWQgPT09IG51bGwpIHtcbiAgICAgIHRoaXMuYXV0b3BsYXlJZCA9IHNldEludGVydmFsKCgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuYXV0b3BsYXlJc1Bvc3NpYmxlKSB7XG4gICAgICAgICAgdGhpcy5uZXh0KCk7XG4gICAgICAgIH1cbiAgICAgIH0sIHRoaXMucHJvcGVydGllcy5hdXRvcGxheUludGVydmFsKTtcbiAgICB9XG4gIH1cblxuICBzdG9wQXV0b3BsYXkoKSB7XG4gICAgaWYgKHRoaXMuYXV0b3BsYXlJZCAhPSBudWxsKSB7XG4gICAgICBjbGVhckludGVydmFsKHRoaXMuYXV0b3BsYXlJZCk7XG4gICAgICB0aGlzLmF1dG9wbGF5SWQgPSBudWxsO1xuICAgIH1cbiAgfVxufVxuIl19