UNPKG

@iotize/ionic

Version:

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

37 lines 4.34 kB
import { BehaviorSubject } from 'rxjs'; import { UniqArray } from './uniq-array'; export class UniqKeyQueue { equalsFunction; _uniqItems; _queue; constructor(equalsFunction) { this.equalsFunction = equalsFunction; this._uniqItems = new UniqArray([], this.equalsFunction); this._queue = new BehaviorSubject(this._uniqItems.items); } get queueChange() { return this._queue.asObservable(); } 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5pcS1rZXktcXVldWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pb3RpemUtaW9uaWMvc3JjL2xpYi90YXAtaW5mby91bmlxLWtleS1xdWV1ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFekMsTUFBTSxPQUFPLFlBQVk7SUFLTTtJQUpyQixVQUFVLENBQWU7SUFFekIsTUFBTSxDQUF1QjtJQUVyQyxZQUE2QixjQUF1QztRQUF2QyxtQkFBYyxHQUFkLGNBQWMsQ0FBeUI7UUFDbEUsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLFNBQVMsQ0FBSSxFQUFFLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzVELElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxlQUFlLENBQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRUQsSUFBSSxXQUFXO1FBQ2IsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3BDLENBQUM7SUFFRCxXQUFXO1FBQ1QsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQsS0FBSztRQUNILElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNwQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZCLENBQUM7SUFDSCxDQUFDO0lBRUQsR0FBRyxDQUFDLEdBQUcsS0FBVTtRQUNmLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUM7UUFDbEQsSUFBSSxVQUFVLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDbkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUMvQyxDQUFDO0lBQ0gsQ0FBQztJQUVELE1BQU0sQ0FBQyxHQUFHLGFBQWtCO1FBQzFCLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEdBQUcsYUFBYSxDQUFDLENBQUM7UUFDOUQsSUFBSSxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzVCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDL0MsQ0FBQztJQUNILENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgVW5pcUFycmF5IH0gZnJvbSAnLi91bmlxLWFycmF5JztcblxuZXhwb3J0IGNsYXNzIFVuaXFLZXlRdWV1ZTxUPiB7XG4gIHByaXZhdGUgX3VuaXFJdGVtczogVW5pcUFycmF5PFQ+O1xuXG4gIHByaXZhdGUgX3F1ZXVlOiBCZWhhdmlvclN1YmplY3Q8VFtdPjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGVxdWFsc0Z1bmN0aW9uOiAoYTogVCwgYjogVCkgPT4gYm9vbGVhbikge1xuICAgIHRoaXMuX3VuaXFJdGVtcyA9IG5ldyBVbmlxQXJyYXk8VD4oW10sIHRoaXMuZXF1YWxzRnVuY3Rpb24pO1xuICAgIHRoaXMuX3F1ZXVlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUW10+KHRoaXMuX3VuaXFJdGVtcy5pdGVtcyk7XG4gIH1cblxuICBnZXQgcXVldWVDaGFuZ2UoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3F1ZXVlLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgZ2V0U25hc3Bob3QoKSB7XG4gICAgcmV0dXJuIFsuLi50aGlzLl9xdWV1ZS52YWx1ZV07XG4gIH1cblxuICByZXNldCgpIHtcbiAgICBpZiAodGhpcy5nZXRTbmFzcGhvdCgpLmxlbmd0aCAhPT0gMCkge1xuICAgICAgdGhpcy5fdW5pcUl0ZW1zLmNsZWFyKCk7XG4gICAgICB0aGlzLl9xdWV1ZS5uZXh0KFtdKTtcbiAgICB9XG4gIH1cblxuICBhZGQoLi4uaXRlbXM6IFRbXSkge1xuICAgIGNvbnN0IGFkZGVkQ291bnQgPSB0aGlzLl91bmlxSXRlbXMucHVzaCguLi5pdGVtcyk7XG4gICAgaWYgKGFkZGVkQ291bnQgPiAwKSB7XG4gICAgICB0aGlzLl9xdWV1ZS5uZXh0KFsuLi50aGlzLl91bmlxSXRlbXMuaXRlbXNdKTtcbiAgICB9XG4gIH1cblxuICByZW1vdmUoLi4uaXRlbXNUb1JlbW92ZTogVFtdKSB7XG4gICAgY29uc3QgcmVtb3ZlZEl0ZW1zID0gdGhpcy5fdW5pcUl0ZW1zLnJlbW92ZSguLi5pdGVtc1RvUmVtb3ZlKTtcbiAgICBpZiAocmVtb3ZlZEl0ZW1zLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuX3F1ZXVlLm5leHQoWy4uLnRoaXMuX3VuaXFJdGVtcy5pdGVtc10pO1xuICAgIH1cbiAgfVxufVxuIl19