@coreui/angular
Version:
CoreUI Components Library for Angular
77 lines • 8.82 kB
JavaScript
import { Injectable } from '@angular/core';
import * as i0 from "@angular/core";
import * as i1 from "./carousel.service";
export class CarouselState {
constructor(carouselService) {
this.carouselService = carouselService;
this._state = {
activeItemIndex: -1,
animate: true,
items: [],
direction: 'next',
transition: 'slide'
};
}
get state() {
return this._state;
}
set state(state) {
const prevState = { ...this._state };
const nextState = { ...this._state, ...state };
this._state = nextState;
if (prevState.activeItemIndex !== nextState.activeItemIndex) {
const activeItemIndex = this.state.activeItemIndex || 0;
const itemInterval = this.state.items && this.state.items[activeItemIndex]?.interval || -1;
this.carouselService.setIndex({
active: nextState.activeItemIndex,
interval: itemInterval,
lastItemIndex: (nextState.items?.length ?? 0) - 1
});
}
}
setItems(newItems) {
if (newItems.length) {
const itemsArray = newItems.toArray();
itemsArray.forEach((item, i) => {
item.index = i;
});
this.state = {
items: itemsArray
};
}
else {
this.reset();
}
}
setNextIndex(nextIndex) {
this.carouselService.setIndex(nextIndex);
}
direction(direction = 'next') {
this.state = { direction };
const { activeItemIndex = -1, items } = this.state;
const itemsCount = items?.length ?? 0;
if (itemsCount > 0) {
return direction === 'next' ?
(activeItemIndex === itemsCount - 1 ? 0 : activeItemIndex + 1) :
(activeItemIndex === 0 ? itemsCount - 1 : activeItemIndex - 1);
}
else {
return 0;
}
}
reset() {
this.state = {
activeItemIndex: -1,
animate: true,
items: [],
direction: 'next',
transition: 'slide'
};
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: CarouselState, deps: [{ token: i1.CarouselService }], target: i0.ɵɵFactoryTarget.Injectable }); }
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: CarouselState }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: CarouselState, decorators: [{
type: Injectable
}], ctorParameters: () => [{ type: i1.CarouselService }] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2Fyb3VzZWwtc3RhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JldWktYW5ndWxhci9zcmMvbGliL2Nhcm91c2VsL2Nhcm91c2VsLXN0YXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQU0zQyxNQUFNLE9BQU8sYUFBYTtJQVN4QixZQUFvQixlQUFnQztRQUFoQyxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFSNUMsV0FBTSxHQUFtQjtZQUMvQixlQUFlLEVBQUUsQ0FBQyxDQUFDO1lBQ25CLE9BQU8sRUFBRSxJQUFJO1lBQ2IsS0FBSyxFQUFFLEVBQUU7WUFDVCxTQUFTLEVBQUUsTUFBTTtZQUNqQixVQUFVLEVBQUUsT0FBTztTQUNwQixDQUFDO0lBRXFELENBQUM7SUFFeEQsSUFBSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxJQUFJLEtBQUssQ0FBQyxLQUFLO1FBQ2IsTUFBTSxTQUFTLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNyQyxNQUFNLFNBQVMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEtBQUssRUFBRSxDQUFDO1FBQy9DLElBQUksQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDO1FBQ3hCLElBQUksU0FBUyxDQUFDLGVBQWUsS0FBSyxTQUFTLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDNUQsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxlQUFlLElBQUksQ0FBQyxDQUFDO1lBQ3hELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxFQUFFLFFBQVEsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUMzRixJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQztnQkFDNUIsTUFBTSxFQUFFLFNBQVMsQ0FBQyxlQUFlO2dCQUNqQyxRQUFRLEVBQUUsWUFBWTtnQkFDdEIsYUFBYSxFQUFFLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQzthQUNsRCxDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQztJQUVELFFBQVEsQ0FBQyxRQUFhO1FBQ3BCLElBQUksUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3BCLE1BQU0sVUFBVSxHQUFHLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUN0QyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBMkIsRUFBRSxDQUFTLEVBQUUsRUFBRTtnQkFDNUQsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7WUFDakIsQ0FBQyxDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsS0FBSyxHQUFHO2dCQUNYLEtBQUssRUFBRSxVQUFVO2FBQ2xCLENBQUM7UUFDSixDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNmLENBQUM7SUFDSCxDQUFDO0lBRUQsWUFBWSxDQUFDLFNBQWM7UUFDekIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVELFNBQVMsQ0FBQyxZQUE2QixNQUFNO1FBQzNDLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxTQUFTLEVBQUUsQ0FBQztRQUMzQixNQUFNLEVBQUUsZUFBZSxHQUFHLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDbkQsTUFBTSxVQUFVLEdBQUcsS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFDLENBQUM7UUFDdEMsSUFBSSxVQUFVLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDbkIsT0FBTyxTQUFTLEtBQUssTUFBTSxDQUFDLENBQUM7Z0JBQzNCLENBQUMsZUFBZSxLQUFLLFVBQVUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsZUFBZSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ2hFLENBQUMsZUFBZSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsZUFBZSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ25FLENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxDQUFDLENBQUM7UUFDWCxDQUFDO0lBQ0gsQ0FBQztJQUVELEtBQUs7UUFDSCxJQUFJLENBQUMsS0FBSyxHQUFHO1lBQ1gsZUFBZSxFQUFFLENBQUMsQ0FBQztZQUNuQixPQUFPLEVBQUUsSUFBSTtZQUNiLEtBQUssRUFBRSxFQUFFO1lBQ1QsU0FBUyxFQUFFLE1BQU07WUFDakIsVUFBVSxFQUFFLE9BQU87U0FDcEIsQ0FBQztJQUNKLENBQUM7K0dBckVVLGFBQWE7bUhBQWIsYUFBYTs7NEZBQWIsYUFBYTtrQkFEekIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElDYXJvdXNlbFN0YXRlIH0gZnJvbSAnLi9jYXJvdXNlbC1zdGF0ZS50eXBlJztcbmltcG9ydCB7IENhcm91c2VsU2VydmljZSB9IGZyb20gJy4vY2Fyb3VzZWwuc2VydmljZSc7XG5pbXBvcnQgeyBDYXJvdXNlbEl0ZW1Db21wb25lbnQgfSBmcm9tICcuL2Nhcm91c2VsLWl0ZW0vY2Fyb3VzZWwtaXRlbS5jb21wb25lbnQnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQ2Fyb3VzZWxTdGF0ZSB7XG4gIHByaXZhdGUgX3N0YXRlOiBJQ2Fyb3VzZWxTdGF0ZSA9IHtcbiAgICBhY3RpdmVJdGVtSW5kZXg6IC0xLFxuICAgIGFuaW1hdGU6IHRydWUsXG4gICAgaXRlbXM6IFtdLFxuICAgIGRpcmVjdGlvbjogJ25leHQnLFxuICAgIHRyYW5zaXRpb246ICdzbGlkZSdcbiAgfTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNhcm91c2VsU2VydmljZTogQ2Fyb3VzZWxTZXJ2aWNlKSB7fVxuXG4gIGdldCBzdGF0ZSgpOiBJQ2Fyb3VzZWxTdGF0ZSB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXRlO1xuICB9XG5cbiAgc2V0IHN0YXRlKHN0YXRlKSB7XG4gICAgY29uc3QgcHJldlN0YXRlID0geyAuLi50aGlzLl9zdGF0ZSB9O1xuICAgIGNvbnN0IG5leHRTdGF0ZSA9IHsgLi4udGhpcy5fc3RhdGUsIC4uLnN0YXRlIH07XG4gICAgdGhpcy5fc3RhdGUgPSBuZXh0U3RhdGU7XG4gICAgaWYgKHByZXZTdGF0ZS5hY3RpdmVJdGVtSW5kZXggIT09IG5leHRTdGF0ZS5hY3RpdmVJdGVtSW5kZXgpIHtcbiAgICAgIGNvbnN0IGFjdGl2ZUl0ZW1JbmRleCA9IHRoaXMuc3RhdGUuYWN0aXZlSXRlbUluZGV4IHx8IDA7XG4gICAgICBjb25zdCBpdGVtSW50ZXJ2YWwgPSB0aGlzLnN0YXRlLml0ZW1zICYmIHRoaXMuc3RhdGUuaXRlbXNbYWN0aXZlSXRlbUluZGV4XT8uaW50ZXJ2YWwgfHwgLTE7XG4gICAgICB0aGlzLmNhcm91c2VsU2VydmljZS5zZXRJbmRleCh7XG4gICAgICAgIGFjdGl2ZTogbmV4dFN0YXRlLmFjdGl2ZUl0ZW1JbmRleCxcbiAgICAgICAgaW50ZXJ2YWw6IGl0ZW1JbnRlcnZhbCxcbiAgICAgICAgbGFzdEl0ZW1JbmRleDogKG5leHRTdGF0ZS5pdGVtcz8ubGVuZ3RoID8/IDApIC0gMVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgc2V0SXRlbXMobmV3SXRlbXM6IGFueSk6IHZvaWQge1xuICAgIGlmIChuZXdJdGVtcy5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IGl0ZW1zQXJyYXkgPSBuZXdJdGVtcy50b0FycmF5KCk7XG4gICAgICBpdGVtc0FycmF5LmZvckVhY2goKGl0ZW06IENhcm91c2VsSXRlbUNvbXBvbmVudCwgaTogbnVtYmVyKSA9PiB7XG4gICAgICAgIGl0ZW0uaW5kZXggPSBpO1xuICAgICAgfSk7XG4gICAgICB0aGlzLnN0YXRlID0ge1xuICAgICAgICBpdGVtczogaXRlbXNBcnJheVxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yZXNldCgpO1xuICAgIH1cbiAgfVxuXG4gIHNldE5leHRJbmRleChuZXh0SW5kZXg6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuY2Fyb3VzZWxTZXJ2aWNlLnNldEluZGV4KG5leHRJbmRleCk7XG4gIH1cblxuICBkaXJlY3Rpb24oZGlyZWN0aW9uOiAnbmV4dCcgfCAncHJldicgPSAnbmV4dCcpOiBudW1iZXIge1xuICAgIHRoaXMuc3RhdGUgPSB7IGRpcmVjdGlvbiB9O1xuICAgIGNvbnN0IHsgYWN0aXZlSXRlbUluZGV4ID0gLTEsIGl0ZW1zIH0gPSB0aGlzLnN0YXRlO1xuICAgIGNvbnN0IGl0ZW1zQ291bnQgPSBpdGVtcz8ubGVuZ3RoID8/IDA7XG4gICAgaWYgKGl0ZW1zQ291bnQgPiAwKSB7XG4gICAgICByZXR1cm4gZGlyZWN0aW9uID09PSAnbmV4dCcgP1xuICAgICAgICAoYWN0aXZlSXRlbUluZGV4ID09PSBpdGVtc0NvdW50IC0gMSA/IDAgOiBhY3RpdmVJdGVtSW5kZXggKyAxKSA6XG4gICAgICAgIChhY3RpdmVJdGVtSW5kZXggPT09IDAgPyBpdGVtc0NvdW50IC0gMSA6IGFjdGl2ZUl0ZW1JbmRleCAtIDEpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG4gIH1cblxuICByZXNldCgpOiB2b2lkIHtcbiAgICB0aGlzLnN0YXRlID0ge1xuICAgICAgYWN0aXZlSXRlbUluZGV4OiAtMSxcbiAgICAgIGFuaW1hdGU6IHRydWUsXG4gICAgICBpdGVtczogW10sXG4gICAgICBkaXJlY3Rpb246ICduZXh0JyxcbiAgICAgIHRyYW5zaXRpb246ICdzbGlkZSdcbiAgICB9O1xuICB9XG59XG4iXX0=