UNPKG

@iotize/ionic

Version:

Iotize specific building blocks on top of @ionic/angular.

34 lines 4.11 kB
import { BehaviorSubject } from 'rxjs'; import { UniqArray } from './uniq-array'; export class UniqKeyQueue { get queueChange() { return this._queue.asObservable(); } constructor(equalsFunction) { this.equalsFunction = equalsFunction; this._uniqItems = new UniqArray([], this.equalsFunction); this._queue = new BehaviorSubject(this._uniqItems.items); } getSnasphot() { return [...this._queue.value]; } reset() { if (this.getSnasphot().length !== 0) { this._uniqItems.clear(); this._queue.next([]); } } add(...items) { const addedCount = this._uniqItems.push(...items); if (addedCount > 0) { this._queue.next([...this._uniqItems.items]); } } remove(...itemsToRemove) { const removedItems = this._uniqItems.remove(...itemsToRemove); if (removedItems.length > 0) { this._queue.next([...this._uniqItems.items]); } } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5pcS1rZXktcXVldWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pb3RpemUtaW9uaWMvc3JjL2xpYi90YXAtaW5mby91bmlxLWtleS1xdWV1ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFekMsTUFBTSxPQUFPLFlBQVk7SUFJdkIsSUFBSSxXQUFXO1FBQ2IsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3BDLENBQUM7SUFFRCxZQUE2QixjQUF1QztRQUF2QyxtQkFBYyxHQUFkLGNBQWMsQ0FBeUI7UUFQNUQsZUFBVSxHQUFHLElBQUksU0FBUyxDQUFJLEVBQUUsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDdkQsV0FBTSxHQUFHLElBQUksZUFBZSxDQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7SUFNTSxDQUFDO0lBRXhFLFdBQVc7UUFDVCxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxLQUFLO1FBQ0gsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUNuQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQ3RCO0lBQ0gsQ0FBQztJQUVELEdBQUcsQ0FBQyxHQUFHLEtBQVU7UUFDZixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDO1FBQ2xELElBQUksVUFBVSxHQUFHLENBQUMsRUFBRTtZQUNsQixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1NBQzlDO0lBQ0gsQ0FBQztJQUVELE1BQU0sQ0FBQyxHQUFHLGFBQWtCO1FBQzFCLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEdBQUcsYUFBYSxDQUFDLENBQUM7UUFDOUQsSUFBSSxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUMzQixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1NBQzlDO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBVbmlxQXJyYXkgfSBmcm9tICcuL3VuaXEtYXJyYXknO1xuXG5leHBvcnQgY2xhc3MgVW5pcUtleVF1ZXVlPFQ+IHtcbiAgcHJpdmF0ZSBfdW5pcUl0ZW1zID0gbmV3IFVuaXFBcnJheTxUPihbXSwgdGhpcy5lcXVhbHNGdW5jdGlvbik7XG4gIHByaXZhdGUgX3F1ZXVlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUW10+KHRoaXMuX3VuaXFJdGVtcy5pdGVtcyk7XG5cbiAgZ2V0IHF1ZXVlQ2hhbmdlKCkge1xuICAgIHJldHVybiB0aGlzLl9xdWV1ZS5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgZXF1YWxzRnVuY3Rpb246IChhOiBULCBiOiBUKSA9PiBib29sZWFuKSB7fVxuXG4gIGdldFNuYXNwaG90KCkge1xuICAgIHJldHVybiBbLi4udGhpcy5fcXVldWUudmFsdWVdO1xuICB9XG5cbiAgcmVzZXQoKSB7XG4gICAgaWYgKHRoaXMuZ2V0U25hc3Bob3QoKS5sZW5ndGggIT09IDApIHtcbiAgICAgIHRoaXMuX3VuaXFJdGVtcy5jbGVhcigpO1xuICAgICAgdGhpcy5fcXVldWUubmV4dChbXSk7XG4gICAgfVxuICB9XG5cbiAgYWRkKC4uLml0ZW1zOiBUW10pIHtcbiAgICBjb25zdCBhZGRlZENvdW50ID0gdGhpcy5fdW5pcUl0ZW1zLnB1c2goLi4uaXRlbXMpO1xuICAgIGlmIChhZGRlZENvdW50ID4gMCkge1xuICAgICAgdGhpcy5fcXVldWUubmV4dChbLi4udGhpcy5fdW5pcUl0ZW1zLml0ZW1zXSk7XG4gICAgfVxuICB9XG5cbiAgcmVtb3ZlKC4uLml0ZW1zVG9SZW1vdmU6IFRbXSkge1xuICAgIGNvbnN0IHJlbW92ZWRJdGVtcyA9IHRoaXMuX3VuaXFJdGVtcy5yZW1vdmUoLi4uaXRlbXNUb1JlbW92ZSk7XG4gICAgaWYgKHJlbW92ZWRJdGVtcy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLl9xdWV1ZS5uZXh0KFsuLi50aGlzLl91bmlxSXRlbXMuaXRlbXNdKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==