UNPKG

azure-devops-ui

Version:

React components for building web UI in Azure DevOps

1 lines 2.68 kB
import{Selection}from"../../Utilities/Selection";class ListSelection extends Selection{constructor(e){super("boolean"==typeof e||void 0===e?e:{alwaysMerge:e.alwaysMerge,multiSelect:e.multiSelect,unselectableRanges:e.unselectableRanges,selectedRanges:e.selectedRanges}),this.selectOnFocus=!0,"boolean"!=typeof e&&void 0!==e&&(this.selectOnFocus=void 0===e.selectOnFocus||e.selectOnFocus)}}class FilteredListSelection extends ListSelection{constructor(e){super({alwaysMerge:e.alwaysMerge,multiSelect:e.multiSelect,unselectableRanges:e.unselectableRanges,selectedRanges:e.value,selectOnFocus:e.selectOnFocus}),this.filteredIndexMap=[],this.updateFilteredSelection=(e,l=this.selection.multiSelect)=>{if(0===e.length)this.value=[...this.selection.value],this.unselectableRanges=[...this.selection.unselectableRanges];else{const s=new Selection(l);e.map((e,t)=>{this.selection.selected(e)&&s.select(t,1,!0,l),this.selection.selectable(e)||s.addUnselectable(t)}),this.value=[...s.value],this.unselectableRanges=[...s.unselectableRanges]}this.filteredIndexMap=e},this.selectionChanged=(l,e)=>{switch(e){case"addUnselectable":for(let t=0;t<l.length;t++)for(let e=l[t].beginIndex;e<=l[t].endIndex;e++){var s=0<this.filteredIndexMap.length?this.filteredIndexMap.indexOf(e):e;this.selectable(s)&&this.addUnselectable(s,1)}break;case"removeUnselectable":for(let t=0;t<l.length;t++)for(let e=l[t].beginIndex;e<=l[t].endIndex;e++){var i=0<this.filteredIndexMap.length?this.filteredIndexMap.indexOf(e):e;this.selectable(i)||this.removeUnselectable(i,1)}break;case"setUnselectable":case"set":this.updateFilteredSelection(this.filteredIndexMap);break;case"select":for(let t=0;t<l.length;t++)for(let e=l[t].beginIndex;e<=l[t].endIndex;e++){var n=0<this.filteredIndexMap.length?this.filteredIndexMap.indexOf(e):e;-1<n&&!this.selected(n)&&this.select(n,1,!0)}break;case"unselect":for(let t=0;t<l.length;t++)for(let e=l[t].beginIndex;e<=l[t].endIndex;e++){var c=0<this.filteredIndexMap.length?this.filteredIndexMap.indexOf(e):e;this.selected(c)&&this.unselect(c,1)}}},this.selection=e}select(t,l,e,s){if(super.select(t,l,e,s),0<this.filteredIndexMap.length){e||this.clear(),l=l||1;for(let e=0;e<l;e++)this.selection.select(this.filteredIndexMap[t+e],1,!0,s)}else this.selection.select(t,l,e,s)}unselect(t,l){if(super.unselect(t,l),0<this.filteredIndexMap.length){l=l||1;for(let e=0;e<l;e++)this.selection.unselect(this.filteredIndexMap[t+e],1)}else this.selection.unselect(t,l)}clear(){if(super.clear(),0<this.filteredIndexMap.length)for(let e=0;e<this.filteredIndexMap.length;e++)this.selection.unselect(this.filteredIndexMap[e]);else this.selection.clear()}}export{ListSelection,FilteredListSelection};