@iotize/ionic
Version:
Iotize specific building blocks on top of @ionic/angular.
36 lines • 4.16 kB
JavaScript
export class UniqArray {
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5pcS1hcnJheS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lvdGl6ZS1pb25pYy9zcmMvbGliL3RhcC1pbmZvL3VuaXEtYXJyYXkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFPLFNBQVM7SUFDcEIsSUFBSSxNQUFNO1FBQ1IsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQztJQUMzQixDQUFDO0lBRUQsWUFDUyxRQUFhLEVBQUUsRUFDTCxjQUF1QztRQURqRCxVQUFLLEdBQUwsS0FBSyxDQUFVO1FBQ0wsbUJBQWMsR0FBZCxjQUFjLENBQXlCO0lBQ3ZELENBQUM7SUFFSixHQUFHLENBQUMsV0FBbUI7UUFDckIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxLQUFLO1FBQ0gsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7SUFDbEIsQ0FBQztJQUVELElBQUksQ0FBQyxHQUFHLFFBQWE7UUFDbkIsSUFBSSxVQUFVLEdBQUcsQ0FBQyxDQUFDO1FBQ25CLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUM1QixJQUNFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUMvQixJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxXQUFXLENBQUMsQ0FDM0MsRUFDRDtnQkFDQSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDMUIsVUFBVSxFQUFFLENBQUM7YUFDZDtRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQztJQUVELE1BQU0sQ0FBQyxHQUFHLEtBQVU7UUFDbEIsSUFBSSxPQUFPLEdBQVEsRUFBRSxDQUFDO1FBQ3RCLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUU7WUFDM0IsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUNwRCxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FDakMsQ0FBQztZQUNGLElBQUksYUFBYSxJQUFJLENBQUMsRUFBRTtnQkFDdEIsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ3REO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgVW5pcUFycmF5PFQ+IHtcbiAgZ2V0IGxlbmd0aCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLml0ZW1zLmxlbmd0aDtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBpdGVtczogVFtdID0gW10sXG4gICAgcHJpdmF0ZSByZWFkb25seSBlcXVhbHNGdW5jdGlvbjogKGE6IFQsIGI6IFQpID0+IGJvb2xlYW5cbiAgKSB7fVxuXG4gIGdldChsb2FkZWRJbmRleDogbnVtYmVyKTogVCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuaXRlbXNbbG9hZGVkSW5kZXhdO1xuICB9XG5cbiAgY2xlYXIoKSB7XG4gICAgdGhpcy5pdGVtcyA9IFtdO1xuICB9XG5cbiAgcHVzaCguLi5uZXdJdGVtczogVFtdKSB7XG4gICAgbGV0IGFkZGVkQ291bnQgPSAwO1xuICAgIG5ld0l0ZW1zLmZvckVhY2goKGtleVRvQWRkKSA9PiB7XG4gICAgICBpZiAoXG4gICAgICAgICF0aGlzLml0ZW1zLmZpbmQoKGV4aXN0aW5nS2V5KSA9PlxuICAgICAgICAgIHRoaXMuZXF1YWxzRnVuY3Rpb24oa2V5VG9BZGQsIGV4aXN0aW5nS2V5KVxuICAgICAgICApXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5pdGVtcy5wdXNoKGtleVRvQWRkKTtcbiAgICAgICAgYWRkZWRDb3VudCsrO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBhZGRlZENvdW50O1xuICB9XG5cbiAgcmVtb3ZlKC4uLml0ZW1zOiBUW10pOiBUW10ge1xuICAgIGxldCByZW1vdmVkOiBUW10gPSBbXTtcbiAgICBpdGVtcy5mb3JFYWNoKChrZXksIGluZGV4KSA9PiB7XG4gICAgICBjb25zdCBpbmRleFRvUmVtb3ZlID0gdGhpcy5pdGVtcy5maW5kSW5kZXgoKHN1YktleSkgPT5cbiAgICAgICAgdGhpcy5lcXVhbHNGdW5jdGlvbihrZXksIHN1YktleSlcbiAgICAgICk7XG4gICAgICBpZiAoaW5kZXhUb1JlbW92ZSA+PSAwKSB7XG4gICAgICAgIHJlbW92ZWQucHVzaCguLi50aGlzLml0ZW1zLnNwbGljZShpbmRleFRvUmVtb3ZlLCAxKSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlbW92ZWQ7XG4gIH1cbn1cbiJdfQ==