@tangential/core
Version:
Core types and support code for Tangential
41 lines • 4.82 kB
JavaScript
export class SelectionEntry {
constructor(value, selected = false, disabled = false) {
this.value = value;
this.selected = selected;
this.disabled = disabled;
}
}
export class SelectionList {
constructor(initialValues = [], selectAll = false, keyField = '$key') {
this.keyField = keyField;
this.entries = initialValues.map((v) => {
return new SelectionEntry(v, selectAll);
});
}
asIndexMap() {
const indices = {};
this.entries.forEach((entry, index) => {
indices[entry.value[this.keyField]] = index;
});
return indices;
}
select(values) {
const map = this.asIndexMap();
values.forEach((value) => {
const index = map[value[this.keyField]];
if (index || index === 0) {
this.entries[index].selected = true;
}
});
}
disable(values) {
const map = this.asIndexMap();
values.forEach((value) => {
const index = map[value[this.keyField]];
if (index || index === 0) {
this.entries[index].disabled = true;
}
});
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLWxpc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nZW50aWFsL2NvcmUvc3JjL2xpYi9kYXRhL3NlbGVjdGlvbi1saXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sT0FBTyxjQUFjO0lBRXpCLFlBQW1CLEtBQVEsRUFBUyxXQUFvQixLQUFLLEVBQVMsV0FBb0IsS0FBSztRQUE1RSxVQUFLLEdBQUwsS0FBSyxDQUFHO1FBQVMsYUFBUSxHQUFSLFFBQVEsQ0FBaUI7UUFBUyxhQUFRLEdBQVIsUUFBUSxDQUFpQjtJQUMvRixDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8sYUFBYTtJQUd4QixZQUFZLGdCQUFxQixFQUFFLEVBQUUsWUFBcUIsS0FBSyxFQUFTLFdBQW1CLE1BQU07UUFBekIsYUFBUSxHQUFSLFFBQVEsQ0FBaUI7UUFDL0YsSUFBSSxDQUFDLE9BQU8sR0FBRyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDckMsT0FBTyxJQUFJLGNBQWMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUE7UUFDekMsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO0lBRUQsVUFBVTtRQUNSLE1BQU0sT0FBTyxHQUE4QixFQUFFLENBQUE7UUFDN0MsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUU7WUFDcEMsT0FBTyxDQUFFLEtBQUssQ0FBQyxLQUFhLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFBO1FBQ3RELENBQUMsQ0FBQyxDQUFBO1FBQ0YsT0FBTyxPQUFPLENBQUE7SUFDaEIsQ0FBQztJQUVELE1BQU0sQ0FBQyxNQUFXO1FBQ2hCLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQTtRQUM3QixNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBUSxFQUFFLEVBQUU7WUFDMUIsTUFBTSxLQUFLLEdBQVksR0FBVyxDQUFFLEtBQWEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQTtZQUNqRSxJQUFJLEtBQUssSUFBSSxLQUFLLEtBQUssQ0FBQyxFQUFFO2dCQUN4QixJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUE7YUFDcEM7UUFDSCxDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRCxPQUFPLENBQUMsTUFBVztRQUNqQixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUE7UUFDN0IsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQVEsRUFBRSxFQUFFO1lBQzFCLE1BQU0sS0FBSyxHQUFZLEdBQVcsQ0FBRSxLQUFhLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUE7WUFDakUsSUFBSSxLQUFLLElBQUksS0FBSyxLQUFLLENBQUMsRUFBRTtnQkFDeEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFBO2FBQ3BDO1FBQ0gsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgU2VsZWN0aW9uRW50cnk8VD4ge1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB2YWx1ZTogVCwgcHVibGljIHNlbGVjdGVkOiBib29sZWFuID0gZmFsc2UsIHB1YmxpYyBkaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlKSB7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFNlbGVjdGlvbkxpc3Q8VD4ge1xuICBlbnRyaWVzOiBTZWxlY3Rpb25FbnRyeTxUPltdXG5cbiAgY29uc3RydWN0b3IoaW5pdGlhbFZhbHVlczogVFtdID0gW10sIHNlbGVjdEFsbDogYm9vbGVhbiA9IGZhbHNlLCBwdWJsaWMga2V5RmllbGQ6IHN0cmluZyA9ICcka2V5Jykge1xuICAgIHRoaXMuZW50cmllcyA9IGluaXRpYWxWYWx1ZXMubWFwKCh2KSA9PiB7XG4gICAgICByZXR1cm4gbmV3IFNlbGVjdGlvbkVudHJ5KHYsIHNlbGVjdEFsbClcbiAgICB9KVxuICB9XG5cbiAgYXNJbmRleE1hcCgpIHtcbiAgICBjb25zdCBpbmRpY2VzOiB7IFtrZXk6IHN0cmluZ106IG51bWJlciB9ID0ge31cbiAgICB0aGlzLmVudHJpZXMuZm9yRWFjaCgoZW50cnksIGluZGV4KSA9PiB7XG4gICAgICBpbmRpY2VzWyhlbnRyeS52YWx1ZSBhcyBhbnkpW3RoaXMua2V5RmllbGRdXSA9IGluZGV4XG4gICAgfSlcbiAgICByZXR1cm4gaW5kaWNlc1xuICB9XG5cbiAgc2VsZWN0KHZhbHVlczogVFtdKSB7XG4gICAgY29uc3QgbWFwID0gdGhpcy5hc0luZGV4TWFwKClcbiAgICB2YWx1ZXMuZm9yRWFjaCgodmFsdWU6IFQpID0+IHtcbiAgICAgIGNvbnN0IGluZGV4OiBudW1iZXIgPSAobWFwIGFzIGFueSlbKHZhbHVlIGFzIGFueSlbdGhpcy5rZXlGaWVsZF1dXG4gICAgICBpZiAoaW5kZXggfHwgaW5kZXggPT09IDApIHtcbiAgICAgICAgdGhpcy5lbnRyaWVzW2luZGV4XS5zZWxlY3RlZCA9IHRydWVcbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgZGlzYWJsZSh2YWx1ZXM6IFRbXSkge1xuICAgIGNvbnN0IG1hcCA9IHRoaXMuYXNJbmRleE1hcCgpXG4gICAgdmFsdWVzLmZvckVhY2goKHZhbHVlOiBUKSA9PiB7XG4gICAgICBjb25zdCBpbmRleDogbnVtYmVyID0gKG1hcCBhcyBhbnkpWyh2YWx1ZSBhcyBhbnkpW3RoaXMua2V5RmllbGRdXVxuICAgICAgaWYgKGluZGV4IHx8IGluZGV4ID09PSAwKSB7XG4gICAgICAgIHRoaXMuZW50cmllc1tpbmRleF0uZGlzYWJsZWQgPSB0cnVlXG4gICAgICB9XG4gICAgfSlcbiAgfVxufVxuIl19