@iotize/ionic
Version:
Iotize specific building blocks on top of @ionic/angular.
38 lines • 4.2 kB
JavaScript
export class UniqArray {
items;
equalsFunction;
get length() {
return this.items.length;
}
constructor(items = [], equalsFunction) {
this.items = items;
this.equalsFunction = equalsFunction;
}
get(loadedIndex) {
return this.items[loadedIndex];
}
clear() {
this.items = [];
}
push(...newItems) {
let addedCount = 0;
newItems.forEach((keyToAdd) => {
if (!this.items.find((existingKey) => this.equalsFunction(keyToAdd, existingKey))) {
this.items.push(keyToAdd);
addedCount++;
}
});
return addedCount;
}
remove(...items) {
let removed = [];
items.forEach((key, index) => {
const indexToRemove = this.items.findIndex((subKey) => this.equalsFunction(key, subKey));
if (indexToRemove >= 0) {
removed.push(...this.items.splice(indexToRemove, 1));
}
});
return removed;
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5pcS1hcnJheS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lvdGl6ZS1pb25pYy9zcmMvbGliL3RhcC1pbmZvL3VuaXEtYXJyYXkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFPLFNBQVM7SUFNWDtJQUNVO0lBTm5CLElBQUksTUFBTTtRQUNSLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7SUFDM0IsQ0FBQztJQUVELFlBQ1MsUUFBYSxFQUFFLEVBQ0wsY0FBdUM7UUFEakQsVUFBSyxHQUFMLEtBQUssQ0FBVTtRQUNMLG1CQUFjLEdBQWQsY0FBYyxDQUF5QjtJQUN2RCxDQUFDO0lBRUosR0FBRyxDQUFDLFdBQW1CO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsS0FBSztRQUNILElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO0lBQ2xCLENBQUM7SUFFRCxJQUFJLENBQUMsR0FBRyxRQUFhO1FBQ25CLElBQUksVUFBVSxHQUFHLENBQUMsQ0FBQztRQUNuQixRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUU7WUFDNUIsSUFDRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FDL0IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsV0FBVyxDQUFDLENBQzNDLEVBQ0QsQ0FBQztnQkFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDMUIsVUFBVSxFQUFFLENBQUM7WUFDZixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDO0lBRUQsTUFBTSxDQUFDLEdBQUcsS0FBVTtRQUNsQixJQUFJLE9BQU8sR0FBUSxFQUFFLENBQUM7UUFDdEIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUMzQixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQ3BELElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUNqQyxDQUFDO1lBQ0YsSUFBSSxhQUFhLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQ3ZCLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN2RCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgVW5pcUFycmF5PFQ+IHtcbiAgZ2V0IGxlbmd0aCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLml0ZW1zLmxlbmd0aDtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBpdGVtczogVFtdID0gW10sXG4gICAgcHJpdmF0ZSByZWFkb25seSBlcXVhbHNGdW5jdGlvbjogKGE6IFQsIGI6IFQpID0+IGJvb2xlYW5cbiAgKSB7fVxuXG4gIGdldChsb2FkZWRJbmRleDogbnVtYmVyKTogVCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuaXRlbXNbbG9hZGVkSW5kZXhdO1xuICB9XG5cbiAgY2xlYXIoKSB7XG4gICAgdGhpcy5pdGVtcyA9IFtdO1xuICB9XG5cbiAgcHVzaCguLi5uZXdJdGVtczogVFtdKSB7XG4gICAgbGV0IGFkZGVkQ291bnQgPSAwO1xuICAgIG5ld0l0ZW1zLmZvckVhY2goKGtleVRvQWRkKSA9PiB7XG4gICAgICBpZiAoXG4gICAgICAgICF0aGlzLml0ZW1zLmZpbmQoKGV4aXN0aW5nS2V5KSA9PlxuICAgICAgICAgIHRoaXMuZXF1YWxzRnVuY3Rpb24oa2V5VG9BZGQsIGV4aXN0aW5nS2V5KVxuICAgICAgICApXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5pdGVtcy5wdXNoKGtleVRvQWRkKTtcbiAgICAgICAgYWRkZWRDb3VudCsrO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBhZGRlZENvdW50O1xuICB9XG5cbiAgcmVtb3ZlKC4uLml0ZW1zOiBUW10pOiBUW10ge1xuICAgIGxldCByZW1vdmVkOiBUW10gPSBbXTtcbiAgICBpdGVtcy5mb3JFYWNoKChrZXksIGluZGV4KSA9PiB7XG4gICAgICBjb25zdCBpbmRleFRvUmVtb3ZlID0gdGhpcy5pdGVtcy5maW5kSW5kZXgoKHN1YktleSkgPT5cbiAgICAgICAgdGhpcy5lcXVhbHNGdW5jdGlvbihrZXksIHN1YktleSlcbiAgICAgICk7XG4gICAgICBpZiAoaW5kZXhUb1JlbW92ZSA+PSAwKSB7XG4gICAgICAgIHJlbW92ZWQucHVzaCguLi50aGlzLml0ZW1zLnNwbGljZShpbmRleFRvUmVtb3ZlLCAxKSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlbW92ZWQ7XG4gIH1cbn1cbiJdfQ==