@galaxyproject/galaxy-client
Version:
Galaxy client application build system
1 lines • 1.69 kB
JavaScript
(()=>{"use strict";function e(e){const s=[],n=[],i=function(e,t,s){let n;if(t instanceof RegExp)n=e.filter((e=>Boolean(e.label.match(t))));else if(s)n=e.filter((e=>e.label.includes(t)));else{const s=t.toLowerCase();n=e.filter((e=>e.label.toLowerCase().includes(s)))}return n}(e.optionsArray,e.filter,e.caseSensitive),l=new Set(e.selected.map(t));let a=!1,r=!1;for(let c=0;c<i.length;c++){const o=i[c],d=t(o.value),u=l.has(d);if(s.length>e.unselectedDisplayCount&&n.length>e.selectedDisplayCount)break;u?n.length<e.selectedDisplayCount?n.push(o):r=!0:s.length<e.unselectedDisplayCount?s.push(o):a=!0}if(e.maintainSelectionOrder){const e=Array.from(l);n.sort(((s,n)=>{const i=t(s.value),l=t(n.value);return e.findIndex((e=>e===i))-e.findIndex((e=>e===l))}))}return{unselectedOptionsFiltered:s,selectedOptionsFiltered:n,moreUnselected:a,moreSelected:r}}function t(e){return"object"==typeof e&&null!==e?JSON.stringify(e):e}const s=new Map,n={};self.addEventListener("message",(t=>{const i=t.data;s.has(i.id)||s.set(i.id,{optionsArray:[],filter:"",selected:[],unselectedDisplayCount:1e3,selectedDisplayCount:1e3,caseSensitive:!1,maintainSelectionOrder:!1});const l=s.get(i.id);switch(i.type){case"setArray":l.optionsArray=i.array;break;case"setFilter":l.filter=i.filter;break;case"setSelected":l.selected=i.selected;break;case"setSettings":l.unselectedDisplayCount=i.unselectedDisplayCount,l.selectedDisplayCount=i.selectedDisplayCount,l.caseSensitive=i.caseSensitive,l.maintainSelectionOrder=i.maintainSelectionOrder;break;case"clear":return void s.delete(i.id)}i.id in n&&clearTimeout(n[i.id]),n[i.id]=setTimeout((()=>{const t=e(l);self.postMessage({id:i.id,type:"result",...t})}),10)}))})();