UNPKG

@tangential/core

Version:

Core types and support code for Tangential

41 lines 4.82 kB
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