@vuu-ui/vuu-table-extras 0.8.20 → 0.8.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/esm/index.js CHANGED
@@ -1,2 +1,3 @@
1
- var an=(e,o,t)=>{if(!o.has(e))throw TypeError("Cannot "+t)};var y=(e,o,t)=>(an(e,o,"read from private field"),t?t.call(e):o.get(e)),q=(e,o,t)=>{if(o.has(e))throw TypeError("Cannot add the same private member more than once");o instanceof WeakSet?o.add(e):o.set(e,t)},ce=(e,o,t,n)=>(an(e,o,"write to private field"),n?n.call(e,t):o.set(e,t),t);import{registerComponent as Ji}from"@vuu-ui/vuu-utils";var qi=e=>typeof e=="string",ji=(e,o)=>qi(o)?o===""?!0:e.value==="lower"&&o.toLowerCase()!==o?"value must be all lowercase":e.value==="upper"&&o.toUpperCase()!==o?"value must be all uppercase":!0:"value must be a string";Ji("vuu-case",ji,"data-edit-validator",{});import{registerComponent as es}from"@vuu-ui/vuu-utils";var os=e=>typeof e=="string",ts="value does not match expected pattern",ns=(e,o)=>{if(typeof e.value!="string")throw Error("Pattern validation rule must provide pattern");if(os(o)){if(o==="")return!0;{let{message:t=ts}=e;return new RegExp(e.value).test(o)||t}}else return"value must be a string"};es("vuu-pattern",ns,"data-edit-validator",{});import{OverflowContainer as bs}from"@vuu-ui/vuu-layout";import{useLayoutEffectSkipFirst as hs}from"@vuu-ui/vuu-utils";import xs from"clsx";import{useCallback as ys,useRef as ws,useState as Ts}from"react";import rs from"clsx";import{useCallback as is}from"react";import{jsx as ss,jsxs as ls}from"react/jsx-runtime";var un="vuuColumnHeaderPill",Pe=({children:e,className:o,column:t,onRemove:n,removable:r,...i})=>{if(r&&typeof n!="function")throw Error("ColumnHeaderPill onRemove prop must be provided if Pill is removable");let s=is(l=>{l.preventDefault(),l.stopPropagation(),n==null||n(t)},[t,n]);return ls("div",{...i,className:rs(un,o),children:[e,r?ss("span",{className:`${un}-removeButton`,role:"button","data-icon":"cross",onClick:s}):null]})};import{jsx as Qo,jsxs as as}from"react/jsx-runtime";var cn=({column:e,...o})=>{let{name:t,sorted:n}=e,r=typeof n=="number"?n<0?"arrow-down":"arrow-up":n==="A"?"arrow-up":n==="D"?"arrow-down":void 0;return as(Pe,{...o,column:e,children:[Qo("span",{className:"vuuGroupColumnPill-label",children:t}),r!==void 0?Qo("span",{"data-icon":r}):null,typeof n=="number"?Qo("span",{className:"vuuSortPosition",children:Math.abs(n)}):null]})};import{jsx as pn,jsxs as us}from"react/jsx-runtime";var mn=({column:e})=>{if(!e.sorted)return null;let o=typeof e.sorted=="number"?e.sorted<0?"arrow-down":"arrow-up":e.sorted==="A"?"arrow-up":"arrow-down";return us(Pe,{column:e,children:[pn("span",{"data-icon":o}),typeof e.sorted=="number"?pn("span",{className:"vuuSortPosition",children:Math.abs(e.sorted)}):null]})};import{useCallback as Go,useRef as cs}from"react";import{jsx as ms}from"react/jsx-runtime";var dn=()=>{},ps="vuuColumnResizerNext",mo=({onDrag:e,onDragEnd:o=dn,onDragStart:t=dn})=>{let n=cs(0),r=Go(l=>{l.stopPropagation&&l.stopPropagation(),l.preventDefault&&l.preventDefault();let a=Math.round(l.clientX),c=a-n.current;n.current=a,c!==0&&e(l,c)},[e]),i=Go(l=>{window.removeEventListener("mouseup",i),window.removeEventListener("mousemove",r),o(l)},[o,r]),s=Go(l=>{t(l),n.current=Math.round(l.clientX),window.addEventListener("mouseup",i),window.addEventListener("mousemove",r),l.stopPropagation&&l.stopPropagation(),l.preventDefault&&l.preventDefault()},[t,r,i]);return ms("div",{className:ps,onMouseDown:s})};import{useCallback as Uo,useRef as ds,useState as gs}from"react";var go=({column:e,onResize:o,rootRef:t})=>{let n=ds(0),[r,i]=gs(!1),{name:s}=e,l=Uo(()=>{if(o&&t.current){let{width:m}=t.current.getBoundingClientRect();n.current=Math.round(m),i(!0),o==null||o("begin",s)}},[s,o,t]),a=Uo((m,p)=>{if(t.current&&o){let{width:d}=t.current.getBoundingClientRect(),u=Math.round(d)+p;u!==n.current&&u>0&&(o("resize",s,u),n.current=u)}},[s,o,t]),c=Uo(()=>{o&&(o("end",s,n.current),setTimeout(()=>{i(!1)},80))},[s,o]);return{isResizing:r,onDrag:a,onDragStart:l,onDragEnd:c}};import{getColumnStyle as fs}from"@vuu-ui/vuu-utils";import Cs from"clsx";import{useMemo as vs}from"react";var pe=(e,o,t)=>vs(()=>{let n=Cs(o,{vuuPinFloating:e.pin==="floating",vuuPinLeft:e.pin==="left",vuuPinRight:e.pin==="right",vuuEndPin:t&&e.endPin,[`${o}-editable`]:e.editable,[`${o}-right`]:e.align==="right"}),r=fs(e);return{className:n,style:r}},[e,o,t]);import{jsx as Ko,jsxs as Ds}from"react/jsx-runtime";import{createElement as Rs}from"react";var Wo="vuuTableGroupHeaderCell",Es=(e,o)=>e===o?e:o,Xo=({column:e,className:o,onMoveColumn:t,onRemoveColumn:n,onResize:r,...i})=>{let s=ws(null),{isResizing:l,...a}=go({column:e,onResize:r,rootRef:s}),[c,m]=Ts(e.columns),{className:p,style:d}=pe(e,Wo,!0),u=c.length>1?{removable:!0,onRemove:n}:void 0,f=ys((v,g)=>{m(C=>{let h=C.slice(),[x]=h.splice(v,1);if(g===-1){let S=h.concat(x);return t==null||t(S),S}else return h.splice(g,0,x),t==null||t(h),h})},[t]);return hs(()=>{m(v=>Es(v,e.columns))},[e.columns]),Ds("div",{...i,className:xs(p,o,{[`${Wo}-pending`]:e.groupConfirmed===!1}),ref:s,role:"columnheader",style:d,children:[Ko(bs,{allowDragDrop:!0,className:`${Wo}-inner`,height:24,onMoveItem:f,overflowPosition:"start",children:c.map(v=>Rs(cn,{...u,column:v,key:v.key}))}),Ko(Pe,{column:e,removable:!0,onRemove:n}),e.resizeable!==!1?Ko(mo,{...a}):null]})};import Os from"clsx";import{useCallback as Fs,useRef as Ns}from"react";import{useContextMenu as Ss}from"@vuu-ui/vuu-popups";import Ps from"clsx";import{useCallback as gn,useRef as ks,useState as Hs}from"react";import{jsx as Ls}from"react/jsx-runtime";var Ms=e=>{if(e){let{bottom:o,left:t}=e.getBoundingClientRect();return{x:t,y:o+6}}},fn=({className:e,column:o,...t})=>{let n=ks(null),[r,i]=Hs(!1),[s]=Ss(),l=gn(()=>{i(!1)},[]),a=gn(c=>{i(!0),s(c,"column-menu",{column:o,ContextMenuProps:{onClose:l,position:Ms(n.current)}})},[o,l,s]);return Ls("span",{...t,className:Ps("vuuTable-columnMenu",e,{"vuuTable-columnMenu-open":r}),"data-icon":"more-vert",onClick:a,ref:n})};import{jsx as ke,jsxs as Is}from"react/jsx-runtime";var fo="vuuTableHeaderCell",Cn=({className:e,column:o,onClick:t,onResize:n,...r})=>{var h;let{HeaderCellContentRenderer:i,HeaderCellLabelRenderer:s}=o,l=Ns(null),{isResizing:a,...c}=go({column:o,onResize:n,rootRef:l}),m=Fs(x=>{!a&&(t==null||t(x))},[a,t]),{className:p,style:d}=pe(o,fo,!0),u=ke(fn,{column:o}),f=s?ke(s,{className:`${fo}-label`,column:o}):ke("div",{className:`${fo}-label`,children:(h=o.label)!=null?h:o.name}),v=i?[ke(i,{column:o},"content")]:[],g=ke(mn,{column:o}),C=o.align==="right"?[g,f].concat(v).concat(u):[u,f,g].concat(v);return Is("div",{...r,className:Os(p,e,{[`${fo}-resizing`]:a}),onClick:m,ref:l,role:"columnheader",style:d,children:[...C,o.resizeable!==!1?ke(mo,{...c}):null]})};import{MeasuredContainer as ou}from"@vuu-ui/vuu-layout";import{ContextMenuProvider as tu}from"@vuu-ui/vuu-popups";import{metadataKeys as nu,useId as ru}from"@vuu-ui/vuu-utils";import{useForkRef as iu}from"@salt-ds/core";import hr from"clsx";import{forwardRef as su,useRef as lu,useState as au}from"react";import{isGroupColumn as yn,isJsonColumn as Ws,isJsonGroup as Ks,metadataKeys as Xs,isNotHidden as Zs,RowSelected as _s}from"@vuu-ui/vuu-utils";import Ys from"clsx";import{memo as Js,useCallback as wn}from"react";import{isNumericColumn as Bs}from"@vuu-ui/vuu-utils";import{useCallback as vn}from"react";import{jsx as bn}from"react/jsx-runtime";var As="vuuTableCell",hn=({column:e,columnMap:o,onClick:t,onDataEdited:n,row:r})=>{let{className:i,style:s}=pe(e,As),{CellRenderer:l,name:a,valueFormatter:c}=e,m=o[a],p=vn(u=>{if(n){let f=u;return Bs(e)&&typeof u=="string"&&(f=e.serverDataType==="double"?parseFloat(u):parseInt(u)),n==null?void 0:n(r,a,f)}else throw Error("TableCell onDataEdited prop not supplied for an editable cell")},[e,a,n,r]),d=vn(u=>{t==null||t(u,e)},[e,t]);return bn("div",{className:i,onClick:t?d:void 0,role:"cell",style:s,children:l?bn(l,{column:e,columnMap:o,onCommit:p,row:r}):c(r[m])})};import{getGroupValueAndOffset as Vs,metadataKeys as zs}from"@vuu-ui/vuu-utils";import{useCallback as $s}from"react";import Qs from"clsx";import{jsx as _o,jsxs as Us}from"react/jsx-runtime";var{IS_LEAF:Gs}=zs,Zo="vuuTableGroupCell",xn=({column:e,onClick:o,row:t})=>{let{columns:n}=e,[r,i]=Vs(n,t),{className:s,style:l}=pe(e,Zo),a=$s(p=>{o==null||o(p,e)},[e,o]),c=t[Gs],m=Array(i).fill(0).map((p,d)=>_o("span",{className:`${Zo}-spacer`},d));return Us("div",{className:Qs(s,"vuuTableCell"),role:"cell",style:l,onClick:c?void 0:a,children:[m,c?null:_o("span",{className:`${Zo}-toggle`,"data-icon":"triangle-right"}),_o("span",{children:r})]})};import{jsx as Yo}from"react/jsx-runtime";import{createElement as ol}from"react";var{IDX:qs,IS_EXPANDED:js,SELECTED:el}=Xs,ie="vuuTableRow",Jo=Js(({className:e,columnMap:o,columns:t,highlighted:n,row:r,offset:i,onClick:s,onDataEdited:l,onToggleGroup:a,zebraStripes:c=!1,...m})=>{let{[qs]:p,[js]:d,[el]:u}=r,f=wn(P=>{let k=P.shiftKey,E=P.ctrlKey||P.metaKey;s==null||s(r,k,E)},[s,r]),{True:v,First:g,Last:C}=_s,h=Ys(ie,e,{[`${ie}-even`]:c&&p%2===0,[`${ie}-expanded`]:d,[`${ie}-highlighted`]:n,[`${ie}-selected`]:u&v,[`${ie}-selectedStart`]:u&g,[`${ie}-selectedEnd`]:u&C}),x={transform:`translate3d(0px, ${i}px, 0px)`},S=wn((P,k)=>{(yn(k)||Ks(k,r))&&(P.stopPropagation(),a==null||a(r,k))},[a,r]);return ol("div",{...m,"aria-rowindex":r[0]+1,key:`row-${r[0]}`,role:"row",className:h,onClick:f,style:x},Yo("span",{className:`${ie}-selectionDecorator vuuStickyLeft`}),t.filter(Zs).map(P=>{let k=yn(P),E=Ws(P);return Yo(k?xn:hn,{column:P,columnMap:o,onClick:k||E?S:void 0,onDataEdited:l,row:r},P.key)}),Yo("span",{className:`${ie}-selectionDecorator vuuStickyRight`}))});Jo.displayName="Row";import{useDragDropNext as Ba}from"@vuu-ui/vuu-ui-controls";import{applySort as Aa,buildColumnMap as Va,getIndexFromRowElement as za,isGroupColumn as $a,isJsonGroup as Qa,isValidNumber as sr,metadataKeys as Ga,updateColumn as lr,useLayoutEffectSkipFirst as ar}from"@vuu-ui/vuu-utils";import{useCallback as I,useEffect as Ua,useMemo as ct,useState as ur}from"react";import{isNumericColumn as tl}from"@vuu-ui/vuu-utils";var Tn=e=>(o,t)=>{let n=[];return e===void 0||(o==="header"||o==="column-menu")&&(n.push(...nl(t,e)),n.push(...sl(t,e)),n.push(...rl(t,e)),n.push(...il(t)),n.push({action:"column-settings",icon:"cog",label:"Column Settings",options:t}),n.push({action:"table-settings",icon:"cog",label:"DataGrid Settings",options:t})),n};function nl(e,{sort:{sortDefs:o}}){let{column:t}=e,n=[];if(t===void 0)return n;let r=o.length>0;return t.sorted==="A"?n.push({label:"Reverse Sort (DSC)",action:"sort-dsc",options:e}):t.sorted==="D"?n.push({label:"Reverse Sort (ASC)",action:"sort-asc",options:e}):typeof t.sorted=="number"?(t.sorted>0?n.push({label:"Reverse Sort (DSC)",action:"sort-add-dsc",options:e}):n.push({label:"Reverse Sort (ASC)",action:"sort-add-asc",options:e}),r&&Math.abs(t.sorted)<o.length&&n.push({label:"Remove from sort",action:"sort-remove",options:e}),n.push({label:"New Sort",children:[{label:"Ascending",action:"sort-asc",options:e},{label:"Descending",action:"sort-dsc",options:e}]})):r?(n.push({label:"Add to sort",children:[{label:"Ascending",action:"sort-add-asc",options:e},{label:"Descending",action:"sort-add-dsc",options:e}]}),n.push({label:"New Sort",children:[{label:"Ascending",action:"sort-asc",options:e},{label:"Descending",action:"sort-dsc",options:e}]})):n.push({label:"Sort",children:[{label:"Ascending",action:"sort-asc",options:e},{label:"Descending",action:"sort-dsc",options:e}]}),n}function rl(e,o){let{column:t}=e;if(t===void 0||o.groupBy.length===0)return[];let{name:n,label:r=n}=t;return[{label:`Aggregate ${r}`,children:[{label:"Count",action:"agg-count",options:e},{label:"Distinct",action:"agg-distinct",options:e}].concat(tl(t)?[{label:"Sum",action:"agg-sum",options:e},{label:"Avg",action:"agg-avg",options:e},{label:"High",action:"agg-high",options:e},{label:"Low",action:"agg-low",options:e}]:[])}]}var ot=(e,o)=>({label:`Pin ${o}`,action:`column-pin-${o}`,options:e}),qo=e=>ot(e,"left"),jo=e=>ot(e,"floating"),et=e=>ot(e,"right");function il(e){let{column:o}=e;if(o===void 0)return[];let{pin:t}=o,n=[{label:"Hide column",action:"column-hide",options:e},{label:"Remove column",action:"column-remove",options:e}];return t===void 0?n.push({label:"Pin column",children:[qo(e),jo(e),et(e)]}):t==="left"?n.push({label:"Unpin column",action:"column-unpin",options:e},{label:"Pin column",children:[jo(e),et(e)]}):t==="right"?n.push({label:"Unpin column",action:"column-unpin",options:e},{label:"Pin column",children:[qo(e),jo(e)]}):t==="floating"&&n.push({label:"Unpin column",action:"column-unpin",options:e},{label:"Pin column",children:[qo(e),et(e)]}),n}function sl(e,{groupBy:o}){let{column:t}=e,n=[];if(t===void 0)return n;let{name:r,label:i=r}=t;return o.length===0?n.push({label:`Group by ${i}`,action:"group",options:e}):n.push({label:`Add ${i} to group by`,action:"group-add",options:e}),n}import{removeColumnFromFilter as ll}from"@vuu-ui/vuu-utils";import{addGroupColumn as En,addSortColumn as Rn,AggregationType as al,setAggregations as He,setSortColumn as Dn}from"@vuu-ui/vuu-utils";var ul=(e,o)=>{if(e.filterStruct&&o){let[t,n]=ll(o,e.filterStruct);return{filter:n,filterStruct:t}}else return e},{Average:cl,Count:pl,Distinct:ml,High:dl,Low:gl,Sum:fl}=al,Sn=({dataSource:e,onPersistentColumnOperation:o})=>n=>{let r=n.options;if(r.column&&e){let{column:i}=r;switch(n.menuId){case"sort-asc":return e.sort=Dn(e.sort,i,"A"),!0;case"sort-dsc":return e.sort=Dn(e.sort,i,"D"),!0;case"sort-add-asc":return e.sort=Rn(e.sort,i,"A"),!0;case"sort-add-dsc":return e.sort=Rn(e.sort,i,"D"),!0;case"group":return e.groupBy=En(e.groupBy,i),!0;case"group-add":return e.groupBy=En(e.groupBy,i),!0;case"column-hide":return o({type:"hideColumns",columns:[i]}),!0;case"column-remove":return e.columns=e.columns.filter(s=>s!==i.name),!0;case"filter-remove-column":return e.filter=ul(e.filter,i),!0;case"remove-filters":return e.filter={filter:""},!0;case"agg-avg":return e.aggregations=He(e.aggregations,i,cl),!0;case"agg-high":return e.aggregations=He(e.aggregations,i,dl),!0;case"agg-low":return e.aggregations=He(e.aggregations,i,gl),!0;case"agg-count":return e.aggregations=He(e.aggregations,i,pl),!0;case"agg-distinct":return e.aggregations=He(e.aggregations,i,ml),!0;case"agg-sum":return e.aggregations=He(e.aggregations,i,fl),!0;case"column-pin-floating":return o({type:"pinColumn",column:i,pin:"floating"}),!0;case"column-pin-left":return o({type:"pinColumn",column:i,pin:"left"}),!0;case"column-pin-right":return o({type:"pinColumn",column:i,pin:"right"}),!0;case"column-unpin":return o({type:"pinColumn",column:i,pin:void 0}),!0;case"column-settings":return o({type:"columnSettings",column:i}),!0;case"table-settings":return o({type:"tableSettings"}),!0;default:}}return!1};var Co=(e,o)=>{switch(o.type){case"col-size":return{...e,columns:e.columns.map(t=>t.name===o.column.name?{...t,width:o.width}:t)};case"column-prop":return{...e,columns:e.columns.map(t=>t.name===o.column.name?{...t,[o.property]:o.value}:t)};default:return e}};import{isCharacterKey as hl}from"@vuu-ui/vuu-utils";import{useCallback as Ce}from"react";var tt=e=>`.vuuTable-col-headers .vuuTableHeaderCell:nth-child(${e})`,nt=(e,o)=>`.vuuTable-body > [aria-rowindex='${e}'] > [role='cell']:nth-child(${o+1})`,Pn=(e,[o,t])=>{var i;let n=o===-1?tt(t):nt(o,t),r=(i=e.current)==null?void 0:i.querySelector(n);return Cl(r)&&r.querySelector("button")||r},Cl=e=>e.classList.contains("vuuTableCell-editable"),kn=e=>e.querySelector(".vuuTableInputCell")!==null;function vl(e){if(e){let o=e.ariaRowIndex;if(o!==null)return parseInt(o,10)-1}return-1}var bl=e=>e.closest('[role="row"]'),Hn=e=>vl(bl(e));var Mn=({navigate:e})=>{let o=Ce(()=>{e()},[e]),t=Ce(a=>{let c=a.target,m=c.matches("input")?c:c.querySelector("input");m&&(m.focus(),m.select())},[]),n=Ce(a=>{let m=a.target.querySelector("input");m&&(m.focus(),m.select())},[]),r=Ce(a=>{let c=a.target;kn(c)&&(hl(a.key)?t(a):a.key==="Enter"&&n(a))},[t,n]),i=Ce(a=>{let c=a.target;(c.matches("input")||c.querySelector("input"))&&(t(a),a.stopPropagation())},[t]),s=Ce(a=>{a.target.removeEventListener("vuu-commit",o,!0)},[o]),l=Ce(a=>{a.target.addEventListener("vuu-commit",o,!0)},[o]);return{onBlur:s,onDoubleClick:i,onFocus:l,onKeyDown:r}};import{getFullRange as it,NULL_RANGE as Ln}from"@vuu-ui/vuu-utils";import{useCallback as bo,useEffect as On,useMemo as Tl,useRef as ho,useState as El}from"react";import{isRowSelectedLast as xl,metadataKeys as yl,WindowRange as wl}from"@vuu-ui/vuu-utils";var{SELECTED:rt}=yl,vo=class{constructor({from:o,to:t}){this.rowCount=0;this.setRowCount=o=>{o<this.data.length&&(this.data.length=o),this.rowCount=o};this.range=new wl(o,t),this.data=new Array(Math.max(0,t-o)),this.rowCount=0}add(o){let[t]=o;if(this.isWithinRange(t)){let n=t-this.range.from;if(this.data[n]=o,o[rt]){let r=this.data[n-1];xl(r)&&(this.data[n-1]=r.slice(),this.data[n-1][rt]-=4)}}}getAtIndex(o){return this.range.isWithin(o)&&this.data[o-this.range.from]!=null?this.data[o-this.range.from]:void 0}isWithinRange(o){return this.range.isWithin(o)}setRange({from:o,to:t}){if(o!==this.range.from||t!==this.range.to){let[n,r]=this.range.overlap(o,t),i=new Array(Math.max(0,t-o));for(let s=n;s<r;s++){let l=this.getAtIndex(s);if(l){let a=s-o;i[a]=l}}this.data=i,this.range.from=o,this.range.to=t}}getSelectedRows(){return this.data.filter(o=>o[rt]!==0)}};var Rl=e=>e.type==="vuu-link-created"||e.type==="vuu-link-removed",Fn=({dataSource:e,onFeatureInvocation:o,onSizeChange:t,onSubscribed:n,range:r=Ln,renderBufferSize:i=0})=>{let[,s]=El(null),l=ho([]),a=ho(!0),c=ho(!1),m=ho(Ln),p=Tl(()=>new vo(it(r,i)),[]),d=bo(g=>{for(let C of g)p.add(C);l.current=p.data,a.current?s({}):console.log("ignore update as we're not mounted")},[p]),u=bo(g=>{g.type==="subscribed"?n==null||n(g):g.type==="viewport-update"?(typeof g.size=="number"&&(t==null||t(g.size),p.setRowCount(g.size)),g.rows?d(g.rows):typeof g.size=="number"&&(l.current=p.data,c.current=!0)):Rl(g)?o==null||o(g):console.log(`useDataSource unexpected message ${g.type}`)},[p,o,t,n,d]),f=bo(()=>p.getSelectedRows(),[p]);On(()=>{var g;return a.current=!0,(g=e.resume)==null||g.call(e),()=>{var C;a.current=!1,(C=e.suspend)==null||C.call(e)}},[e]),On(()=>{var g;e.status==="disabled"?(g=e.enable)==null||g.call(e,u):e==null||e.subscribe({range:it(r,i)},u)},[e,u,r,i]);let v=bo(g=>{let C=it(g,i);p.setRange(C),e.range=m.current=C,e.emit("range",g)},[e,p,i]);return{data:l.current,dataRef:l,getSelectedRows:f,range:m.current,setRange:v}};import{useMemo as Dl,useRef as Sl}from"react";var Nn=e=>{let o=Sl(e);return Dl(()=>o.current,[])};import{useControlled as Pl}from"@salt-ds/core";import{useCallback as U,useEffect as In,useRef as xo}from"react";var Vn=new Set(["Home","End","PageUp","PageDown","ArrowDown","ArrowUp"]),lt=new Set(Vn);lt.add("ArrowLeft");lt.add("ArrowRight");var kl=(e,o)=>{switch(o){case"cell":return lt.has(e);case"row":return Vn.has(e);default:return!1}},Hl=["Home","End","PageUp","PageDown"],Bn=e=>Hl.includes(e),Ml=[-1,-1],st=[void 0,void 0],zn=(e,o=e.closest(".vuuTable-contentContainer"))=>{if(o){let t=o==null?void 0:o.getBoundingClientRect(),n=e.getBoundingClientRect();if(n)return n.bottom>t.bottom?["down",n.bottom-t.bottom]:n.top<t.top?["up",n.top-t.top]:st;throw Error("Whats going on, row not found")}else throw Error("Whats going on, scrollbar container not found")},Ll=e=>{var t;let o=e.closest(".vuuTable-contentContainer");if(o){let n=e.closest(".vuuTableRow");if(n){let r=zn(n,o);if(r!==st)return r;let i=o==null?void 0:o.getBoundingClientRect(),s=(t=e.closest(".vuuTableCell"))==null?void 0:t.getBoundingClientRect();if(s){if(s.right>i.right)return["right",s.right+6-i.right];if(s.left<i.left)return["left",s.left-i.left]}else throw Error("Whats going on, cell not found")}}return st};function An(e,[o,t],n,r){return e==="ArrowUp"?o>-1?[o-1,t]:[o,t]:e==="ArrowDown"?o===-1?[0,t]:o===r-1?[o,t]:[o+1,t]:e==="ArrowRight"?t<n?[o,t+1]:[o,t]:e==="ArrowLeft"?t>1?[o,t-1]:[o,t]:[o,t]}var $n=({columnCount:e=0,containerRef:o,disableFocus:t=!1,defaultHighlightedIndex:n,disableHighlightOnFocus:r,highlightedIndex:i,navigationStyle:s,requestScroll:l,onHighlight:a,rowCount:c=0,viewportRowCount:m})=>{var J;let p=xo([-1,-1]),d=xo(),u=xo([-1,0]),f=xo(),[v,g]=Pl({controlled:i,default:n,name:"UseKeyboardNavigation"});f.current=v;let C=U((w,T=!1)=>{a==null||a(w),g(w)},[a,g]),h=w=>w==null?void 0:w.closest("[role='columnHeader'],[role='cell']"),x=w=>{var T,D;if(w.role==="columnHeader")return[-1,parseInt((T=w.dataset.idx)!=null?T:"-1",10)];{let O=w.closest("[role='row']");if(O){let V=parseInt((D=O.ariaRowIndex)!=null?D:"-1",10),_e=Array.from(O.childNodes).indexOf(w);return[V,_e]}}return Ml},S=U(w=>{var T;if(o.current){let D=Pn(o,w);if(D){D!==d.current&&((T=d.current)==null||T.removeAttribute("tabindex"),d.current=D,D.setAttribute("tabindex","0"));let[O,V]=Ll(D);O&&V&&(l==null||l({type:"scroll-distance",distance:V,direction:O})),console.log("activeCell focus"),D.focus({preventScroll:!0})}}},[o,l]),P=U((w,T,D=!1)=>{let O=[w,T];u.current=O,s==="row"?g(w):S(O),D&&(p.current=O)},[S,s,g]),k=U((w,[T,D])=>new Promise(O=>{let V=T;switch(w){case"PageDown":V=Math.min(c-1,T+m),l==null||l({type:"scroll-page",direction:"down"});break;case"PageUp":V=Math.max(0,T-m),l==null||l({type:"scroll-page",direction:"up"});break;case"Home":V=0,l==null||l({type:"scroll-end",direction:"home"});break;case"End":V=c-1,l==null||l({type:"scroll-end",direction:"end"});break}setTimeout(()=>{O([V,D])},90)}),[l,c,m]),E=U(()=>{var w;if(r!==!0&&(w=o.current)!=null&&w.contains(document.activeElement)){let T=h(document.activeElement);T&&(p.current=x(T),s==="row"&&g(p.current[0]))}},[r,o,s,g]),R=U(async w=>{let[T,D]=Bn(w)?await k(w,u.current):An(w,u.current,e,c),[O,V]=u.current;(T!==O||D!==V)&&P(T,D,!0)},[e,k,c,P]),N=U(w=>{let{current:T}=o,D=T==null?void 0:T.querySelector(`[aria-rowindex="${w}"]`);if(D){let[O,V]=zn(D);O&&V&&(l==null||l({type:"scroll-distance",distance:V,direction:O}))}},[o,l]),A=U(async w=>{let{current:T}=f,[D]=Bn(w)?await k(w,[T!=null?T:-1,0]):An(w,[T!=null?T:-1,0],e,c);D!==T&&(C(D),N(D))},[e,k,c,N,C]);In(()=>{i!==void 0&&i!==-1&&N(i)},[i,N]);let F=U(w=>{c>0&&kl(w.key,s)&&(w.preventDefault(),w.stopPropagation(),s==="row"?A(w.key):R(w.key))},[c,s,A,R]),K=U(w=>{let T=w.target,D=h(T);if(D){let[O,V]=x(D);P(O,V)}},[P]),M=U(()=>{C(-1)},[C]),j=U(w=>{let T=Hn(w.target);T!==-1&&T!==f.current&&C(T)},[C]),Ze=U(()=>{R("ArrowDown")},[R]),B=((J=o.current)==null?void 0:J.firstChild)!=null;return In(()=>{if(B&&d.current===void 0&&!t){let{current:w}=o,T=(w==null?void 0:w.querySelector(tt(0)))||(w==null?void 0:w.querySelector(nt(0,0)));T&&(T.setAttribute("tabindex","0"),d.current=T)}},[o,t,B]),{highlightedIndexRef:f,navigate:Ze,onClick:K,onFocus:E,onKeyDown:F,onMouseLeave:s==="row"?M:void 0,onMouseMove:s==="row"?j:void 0}};import{deselectItem as Ol,dispatchMouseEvent as Fl,isRowSelected as Nl,metadataKeys as Il,selectItem as Bl}from"@vuu-ui/vuu-utils";import{useCallback as at,useRef as Qn}from"react";var{IDX:Al}=Il,Vl=[],zl=["Enter"," "],Gn=({highlightedIndexRef:e,selectionKeys:o=zl,selectionModel:t,onSelect:n,onSelectionChange:r})=>{let i=Qn(-1),s=Qn(Vl),l=at(m=>o.includes(m.key),[o]),a=at((m,p,d)=>{let{[Al]:u}=m,{current:f}=i,{current:v}=s,C=(Nl(m)?Ol:Bl)(t,v,u,p,d,f);s.current=C,i.current=u,n==null||n(m),r==null||r(C)},[n,r,t]);return{onKeyDown:at(m=>{if(l(m)){let{current:p}=e;if(p!==void 0&&p!==-1){let d=m.target.querySelector(`[aria-rowindex="${p}"]`);d&&Fl(d,"click")}}},[e,l]),onRowClick:a}};import{useContextMenu as $l}from"@vuu-ui/vuu-popups";import{buildColumnMap as Ql,getIndexFromRowElement as Gl}from"@vuu-ui/vuu-utils";import{useCallback as Ul}from"react";var Wl=[],Un=({columns:e,data:o,dataSource:t,getSelectedRows:n})=>{let[r]=$l();return Ul(s=>{let l=s.target,a=l==null?void 0:l.closest("div[role='cell']"),c=l==null?void 0:l.closest("div[role='row']");if(a&&c){let{selectedRowsCount:m}=t,p=Ql(e),d=Gl(c),u=Array.from(c.childNodes).indexOf(a),f=o.find(([g])=>g===d),v=e[u];r(s,"grid",{columnMap:p,columnName:v,row:f,selectedRows:m===0?Wl:n(),viewport:t.viewport})}},[e,o,t,n,r])};import{applyFilterToColumns as Kl,applyGroupByToColumns as Xl,applySortToColumns as Zl,getCellRenderer as _l,getColumnHeaderContentRenderer as Yl,getColumnHeaderLabelRenderer as Jl,getColumnLabel as ql,getTableHeadings as jl,getValueFormatter as ea,hasValidationRules as oa,isFilteredColumn as ta,isGroupColumn as na,isPinned as ra,logger as ia,metadataKeys as sa,replaceColumn as ve,sortPinnedColumns as Wn,stripFilterFromColumns as la,subscribedOnly as aa}from"@vuu-ui/vuu-utils";import{buildValidationChecker as ua}from"@vuu-ui/vuu-ui-controls";import{useReducer as ca}from"react";var{info:ut}=ia("useTableModel"),pa=100,ma=sa.count,da=({serverDataType:e})=>e===void 0,Kn=(e,o)=>{let t=o==null?void 0:o.columns.find(({name:n})=>n===e.name);return t?t.serverDataType:e.serverDataType},ga=["int","long","double"],Xn=e=>e===void 0?void 0:ga.includes(e)?"right":"left",Zn=e=>e.type==="columnSettings",_n=e=>e.type==="tableSettings",fa=(e,o)=>{switch(ut==null||ut(`TableModelReducer ${o.type}`),o.type){case"init":return Jn(o);case"moveColumn":return va(e,o);case"resizeColumn":return xa(e,o);case"setTableSchema":return ya(e,o);case"hideColumns":return ba(e,o);case"showColumns":return ha(e,o);case"pinColumn":return wa(e,o);case"updateColumnProp":return Me(e,o);case"tableConfig":return jn(e,o);default:return console.log(`unhandled action ${o.type}`),e}},Yn=(e,o)=>{let[t,n]=ca(fa,{tableConfig:e,dataSource:o},Jn),{columns:r,headings:i,tableConfig:s,...l}=t;return{columns:r,dispatchColumnAction:n,headings:i,tableAttributes:l,tableConfig:s}};function Jn({dataSource:e,tableConfig:o}){let{columns:t,...n}=o,{config:r,tableSchema:i}=e,s=t.filter(aa(r==null?void 0:r.columns)).map(qn(n,i)),l=s.some(ra)?Wn(s):s,a={columns:l,headings:jl(l),tableConfig:o,...n};if(r){let{columns:c,...m}=r;a=jn(a,{type:"tableConfig",...m})}return a}var Ca=(e,o)=>o==="uppercase"?e.toUpperCase():o==="capitalize"?e[0].toUpperCase()+e.slice(1).toLowerCase():e,qn=(e,o)=>(t,n)=>{let{columnDefaultWidth:r=pa,columnFormatHeader:i}=e,s=Kn(t,o),{align:l=Xn(s),key:a,name:c,label:m=ql(t),width:p=r,...d}=t,u={...d,align:l,CellRenderer:_l(t),HeaderCellContentRenderer:Yl(t),HeaderCellLabelRenderer:Jl(t),clientSideEditValidationCheck:oa(t.type)?ua(t.type.renderer.rules):void 0,label:Ca(m,i),key:a!=null?a:n+ma,name:c,originalIdx:n,serverDataType:s,valueFormatter:ea(t,s),width:p};return na(u)&&(u.columns=u.columns.map(f=>qn(e)(f,f.key))),u};function va(e,{column:o,moveBy:t}){let{columns:n}=e;if(typeof t=="number"){let r=n.indexOf(o),i=n.slice(),[s]=i.splice(r,1);return i.splice(r+t,0,s),{...e,columns:i}}return e}function ba(e,{columns:o}){return o.some(t=>t.hidden!==!0)?o.reduce((t,n)=>n.hidden!==!0?Me(t,{type:"updateColumnProp",column:n,hidden:!0}):t,e):e}function ha(e,{columns:o}){return o.some(t=>t.hidden)?o.reduce((t,n)=>n.hidden?Me(t,{type:"updateColumnProp",column:n,hidden:!1}):t,e):e}function xa(e,{column:o,phase:t,width:n}){let r="updateColumnProp",i=t!=="end";switch(t){case"begin":return Me(e,{type:r,column:o,resizing:i});case"end":return Me(e,{type:r,column:o,resizing:i,width:n});case"resize":return Me(e,{type:r,column:o,width:n});default:throw Error(`useTableModel.resizeColumn, invalid resizePhase ${t}`)}}function ya(e,{tableSchema:o}){let{columns:t}=e;if(t.some(da)){let n=t.map(r=>{var s;let i=Kn(r,o);return{...r,align:(s=r.align)!=null?s:Xn(i),serverDataType:i}});return{...e,columns:n}}else return e}function wa(e,o){let{columns:t}=e,{column:n,pin:r}=o,i=t.find(s=>s.name===n.name);return i?(t=ve(t,{...i,pin:r}),t=Wn(t),{...e,columns:t}):e}function Me(e,o){let{columns:t,tableConfig:n}=e,{align:r,column:i,hidden:s,label:l,resizing:a,width:c}=o,m=t.find(p=>p.name===i.name);if(m&&((r==="left"||r==="right")&&(t=ve(t,{...m,align:r})),typeof l=="string"&&(t=ve(t,{...m,label:l})),typeof a=="boolean"&&(t=ve(t,{...m,resizing:a})),typeof s=="boolean"&&(t=ve(t,{...m,hidden:s})),typeof c=="number")){t=ve(t,{...m,width:c});let p=n.columns.find(d=>d.name===i.name);p&&(n={...n,columns:ve(n.columns,{...p,width:c})})}return{...e,columns:t,tableConfig:n}}function jn(e,{confirmed:o,filter:t,groupBy:n,sort:r}){let i=n!==void 0,s=typeof(t==null?void 0:t.filter)=="string",l=r&&r.sortDefs.length>0,a=e;return i&&(a={...e,columns:Xl(a.columns,n,o)}),l&&(a={...e,columns:Zl(a.columns,r)}),s?a={...e,columns:Kl(a.columns,t)}:a.columns.some(ta)&&(a={...e,columns:la(a.columns)}),a}import{useCallback as me,useRef as qe}from"react";var er=e=>{let{scrollLeft:o,scrollTop:t}=e,{clientHeight:n,clientWidth:r,scrollHeight:i,scrollWidth:s}=e,l=o/(s-r),a=t/(i-n);return[l,a]},or=({onAttach:e,onDetach:o})=>{let t=qe(null);return me(r=>{if(r)t.current=r,e==null||e(r);else if(t.current){let{current:i}=t;t.current=r,o==null||o(i)}},[e,o])},tr=({maxScrollLeft:e,maxScrollTop:o,onHorizontalScroll:t,onVerticalScroll:n,rowHeight:r,viewportRowCount:i})=>{let s=qe(!1),l=qe({scrollTop:0,scrollLeft:0}),a=qe(null),c=qe(null),m=me(()=>{let{current:x}=c,{current:S}=a,{current:P}=s;if(P)s.current=!1;else if(x&&S){let[k,E]=er(S),R=Math.round(k*e),N=Math.round(E*o);x.scrollTo({left:R,top:N,behavior:"auto"})}},[e,o]),p=me(()=>{let{current:x}=c,{current:S}=a,{current:P}=l;if(x&&S){let{scrollLeft:k,scrollTop:E}=x,[R,N]=er(x);s.current=!0,S.scrollLeft=Math.round(R*e),S.scrollTop=Math.round(N*o),P.scrollTop!==E&&(P.scrollTop=E,n==null||n(E,N)),P.scrollLeft!==k&&(P.scrollLeft=k,t==null||t(k))}},[e,o,t,n]),d=me(x=>{a.current=x,x.addEventListener("scroll",m,{passive:!0})},[m]),u=me(x=>{a.current=null,x.removeEventListener("scroll",m)},[m]),f=me(x=>{c.current=x,x.addEventListener("scroll",p,{passive:!0})},[p]),v=me(x=>{c.current=null,x.removeEventListener("scroll",p)},[p]),g=or({onAttach:f,onDetach:v}),C=or({onAttach:d,onDetach:u}),h=me(x=>{let{current:S}=c;if(S){let{scrollLeft:P,scrollTop:k}=S;if(s.current=!1,x.type==="scroll-distance"){let E=P,R=k;x.direction==="up"||x.direction==="down"?R=Math.min(Math.max(0,k+x.distance),o):E=Math.min(Math.max(0,P+x.distance),e),S.scrollTo({top:R,left:E,behavior:"smooth"})}else if(x.type==="scroll-page"){let{direction:E}=x,R=i*(E==="down"?r:-r),N=Math.min(Math.max(0,k+R),o);S.scrollTo({top:N,left:P,behavior:"auto"})}else if(x.type==="scroll-end"){let{direction:E}=x,R=E==="end"?o:0;S.scrollTo({top:R,left:S.scrollLeft,behavior:"auto"})}}},[e,o,r,i]);return{scrollbarContainerRef:C,contentContainerRef:g,requestScroll:h}};import{useCallback as Ta,useMemo as yo,useRef as Ea}from"react";import{actualRowPositioning as Ra,virtualRowPositioning as Da}from"@vuu-ui/vuu-utils";var Sa=15e5,Pa={contentHeight:0,contentWidth:0,getRowAtPosition:()=>-1,getRowOffset:()=>-1,horizontalScrollbarHeight:0,maxScrollContainerScrollHorizontal:0,maxScrollContainerScrollVertical:0,pinnedWidthLeft:0,pinnedWidthRight:0,rowCount:0,setPctScrollTop:()=>{},totalHeaderHeight:0,verticalScrollbarWidth:0,viewportBodyHeight:0},ka=e=>{let o=0,t=0,n=0;for(let r of e){let{hidden:i,pin:s,width:l}=r,a=i?0:l;s==="left"?o+=a:s==="right"?t+=a:n+=a}return{pinnedWidthLeft:o+4,pinnedWidthRight:t+4,unpinnedWidth:n}},nr=({columns:e,headerHeight:o,headings:t,rowCount:n,rowHeight:r,size:i})=>{let s=Ea(0),a=Math.min(n,Sa)*r,m=n*r-a,{pinnedWidthLeft:p,pinnedWidthRight:d,unpinnedWidth:u}=yo(()=>ka(e),[e]),[f,v]=yo(()=>Ra(r),[r]),[g,C]=yo(()=>m?Da(r,m,s):[f,v],[v,f,m,r]),h=Ta(x=>{s.current=x},[]);return yo(()=>{var x;if(i){let S=t.length,P=15,k=p+u+d,E=k>i.width?P:0,R=o*(1+S),N=a-(((x=i==null?void 0:i.height)!=null?x:0)-E)+R,A=k-i.width+p,F=(i.height-o)/r,K=Number.isInteger(F)?F+1:Math.ceil(F),M=i.height-R,j=a>M?P:0;return{contentHeight:a,getRowAtPosition:C,getRowOffset:g,horizontalScrollbarHeight:E,maxScrollContainerScrollHorizontal:A,maxScrollContainerScrollVertical:N,pinnedWidthLeft:p,pinnedWidthRight:d,rowCount:K,contentWidth:k,setPctScrollTop:h,totalHeaderHeight:R,verticalScrollbarWidth:j,viewportBodyHeight:M}}else return Pa},[i,t.length,p,u,d,a,o,r,C,g,h])};import{useCallback as Ha,useEffect as Ma,useRef as La}from"react";var rr=({getRowAtPosition:e,setRange:o,viewportMeasurements:t})=>{let n=La(0),{rowCount:r}=t,i=Ha(s=>{let l=e(s);l!==n.current&&(n.current=l,o({from:l,to:l+r}))},[e,o,r]);return Ma(()=>{let{current:s}=n,l={from:s,to:s+r};o(l)},[o,r]),{onVerticalScroll:i}};import{useLayoutProviderDispatch as Oa}from"@vuu-ui/vuu-layout";import{getCalculatedColumnType as Fa}from"@vuu-ui/vuu-utils";import{useCallback as be,useRef as Na,useState as Ia}from"react";var ir=({availableColumns:e,onAvailableColumnsChange:o,onConfigChange:t,onCreateCalculatedColumn:n,onDataSourceConfigChange:r,tableConfig:i})=>{let s=Oa(),l=Na(),[a,c]=Ia(e),m=be((g,C,h)=>{s({type:"set-props",path:"#context-panel",props:{expanded:!0,content:{type:g,props:h},title:C}})},[s]),p=be(()=>{requestAnimationFrame(()=>{var g;(g=l.current)==null||g.call(l)})},[]),d=be(g=>{let C=a.concat({name:g.name,serverDataType:Fa(g)});c(C),o==null||o(C),requestAnimationFrame(()=>{var h;(h=l.current)==null||h.call(l)}),n(g)},[a,o,n]),u=be(g=>{m("ColumnSettings","Column Settings",{column:g.column,onCancelCreateColumn:p,onConfigChange:t,onCreateCalculatedColumn:d,tableConfig:i,vuuTable:g.vuuTable})},[p,d,t,m,i]),f=be(()=>{u({column:{name:"::",serverDataType:"string"},type:"columnSettings",vuuTable:{module:"SIMUL",table:"instruments"}})},[u]),v=be(g=>{let C=i.columns.find(h=>h.name===g);C&&u({type:"columnSettings",column:C,vuuTable:{module:"SIMUL",table:"instruments"}})},[u,i.columns]);return l.current=be(()=>{m("TableSettings","DataGrid Settings",{availableColumns:a!=null?a:i.columns.map(({name:g,serverDataType:C})=>({name:g,serverDataType:C})),onAddCalculatedColumn:f,onConfigChange:t,onDataSourceConfigChange:r,onNavigateToColumn:v,tableConfig:i})},[a,f,v,t,r,m,i]),{showColumnSettingsPanel:u,showTableSettingsPanel:l.current}};var wo=e=>e,{KEY:Wa,IS_EXPANDED:cr,IS_LEAF:pr}=Ga,Ka={draggable:void 0,onMouseDown:void 0},Xa=()=>Ka,Za=(e,o)=>({...e,columns:e.columns.concat(o)}),mr=({allowDragDrop:e=!1,availableColumns:o,config:t,containerRef:n,dataSource:r,disableFocus:i,headerHeight:s=25,highlightedIndex:l,id:a,navigationStyle:c="cell",onAvailableColumnsChange:m,onConfigChange:p,onDragStart:d,onDrop:u,onFeatureInvocation:f,onHighlight:v,onRowClick:g,onSelect:C,onSelectionChange:h,renderBufferSize:x=0,rowHeight:S=20,selectionModel:P,size:k})=>{let[E,R]=ur(r.size);if(r===void 0)throw Error("no data source provided to Vuu Table");let N=e?Ba:Xa,A=ct(()=>Tn(r),[r]),F=I(b=>{R(b)},[]),{columns:K,dispatchColumnAction:M,headings:j,tableAttributes:Ze,tableConfig:B}=Yn(t,r);ar(()=>{M({type:"init",dataSource:r,tableConfig:B})},[B,r,M]);let J=I(b=>{M({type:"init",tableConfig:b,dataSource:r}),p==null||p(wo(b))},[r,M,p]),[w,T]=ur(),[D,O]=ct(()=>{let b=(L,z)=>{let G=lr(K,L,{width:z});T(G)};return[w!=null?w:K,b]},[K,w]),V=ct(()=>Va(r.columns),[r.columns]),{getRowAtPosition:_e,getRowOffset:Kt,setPctScrollTop:Xt,...ee}=nr({columns:D,headerHeight:s,headings:j,rowCount:E,rowHeight:S,size:k}),Re=Nn({from:0,to:ee.rowCount}),Vo=I(({tableSchema:b})=>{b?M({type:"setTableSchema",tableSchema:b}):console.log("subscription message with no schema")},[M]),{data:X,dataRef:co,getSelectedRows:zo,range:po,setRange:De}=Fn({dataSource:r,onFeatureInvocation:f,renderBufferSize:x,onSizeChange:F,onSubscribed:Vo,range:Re}),Ti=I(b=>{console.log("settings changed"),M({type:"init",tableConfig:b,dataSource:r}),p==null||p(wo(b))},[r,M,p]),Ei=I(b=>{r.config={...r.config,...b}},[r]);Ua(()=>{r.on("config",(b,L)=>{M({type:"tableConfig",...b,confirmed:L})})},[r,M]);let Ri=I(b=>{r.columns=r.columns.concat(b.name),J(Za(B,b))},[r,B,J]),Zt=I(b=>{let{columns:L}=b,z=L.map(Z=>Z.name),G={...B,columns:B.columns.map(Z=>z.includes(Z.name)?{...Z,hidden:!0}:Z)};J(G)},[B,J]),_t=I(b=>{J({...B,columns:lr(B.columns,{...b.column,pin:b.pin})})},[B,J]),{showColumnSettingsPanel:Yt,showTableSettingsPanel:Jt}=ir({availableColumns:o!=null?o:B.columns.map(({name:b,serverDataType:L="string"})=>({name:b,serverDataType:L})),onAvailableColumnsChange:m,onConfigChange:Ti,onCreateCalculatedColumn:Ri,onDataSourceConfigChange:Ei,tableConfig:B}),Di=I(b=>{if(Zn(b))Yt(b);else if(_n(b))Jt();else switch(b.type){case"hideColumns":return Zt(b);case"pinColumn":return _t(b);default:M(b)}},[M,Zt,_t,Yt,Jt]),Si=Sn({dataSource:r,onPersistentColumnOperation:Di}),Pi=I((b,L=!1,z)=>{r&&(r.sort=Aa(r.sort,b,L,z))},[r]),ki=I((b,L,z)=>{let G=D.find(Z=>Z.name===L);if(G)b==="resize"?sr(z)&&O(L,z):b==="end"?sr(z)&&(M({type:"resizeColumn",phase:b,column:G,width:z}),T(void 0),p==null||p(wo(Co(B,{type:"col-size",column:G,width:z})))):(T(void 0),M({type:"resizeColumn",phase:b,column:G,width:z}));else throw Error(`useDataTable.handleColumnResize, column ${L} not found`)},[D,B,M,p,O]),Hi=I((b,L)=>{var Z,ln;let z=Qa(L,b),G=b[Wa];if(b[cr]){if(r.closeTreeNode(G,!0),z){let Ye=D.indexOf(L),Je=(Z=r.getRowsAtDepth)==null?void 0:Z.call(r,Ye+1);Je&&!Je.some(Se=>Se[cr]||Se[pr])&&M({type:"hideColumns",columns:D.slice(Ye+2)})}}else if(r.openTreeNode(G),z){let Ye=(ln=r.getChildRows)==null?void 0:ln.call(r,G),Je=D.indexOf(L)+1,Se=[D[Je]];Ye&&Ye.some($o=>$o[pr])&&Se.push(D[Je+1]),Se.some($o=>$o.hidden)&&M({type:"showColumns",columns:Se})}},[D,r,M]),{onVerticalScroll:qt}=rr({columns:D,getRowAtPosition:_e,setRange:De,viewportMeasurements:ee}),Mi=I(b=>{qt(b)},[qt]),{requestScroll:Li,...Oi}=tr({maxScrollLeft:ee.maxScrollContainerScrollHorizontal,maxScrollTop:ee.maxScrollContainerScrollVertical,rowHeight:S,onVerticalScroll:Mi,viewportRowCount:ee.rowCount}),{highlightedIndexRef:jt,navigate:Fi,onFocus:en,onKeyDown:on,...Ni}=$n({columnCount:D.filter(b=>b.hidden!==!0).length,containerRef:n,disableFocus:i,highlightedIndex:l,navigationStyle:c,requestScroll:Li,rowCount:r==null?void 0:r.size,onHighlight:v,viewportRange:po,viewportRowCount:ee.rowCount}),{onBlur:Ii,onDoubleClick:Bi,onKeyDown:tn,onFocus:nn}=Mn({navigate:Fi}),Ai=I(b=>{en(),b.defaultPrevented||nn(b)},[nn,en]),Vi=Un({columns:D,data:X,dataSource:r,getSelectedRows:zo}),zi=I(b=>{r.groupBy=b.map(L=>L.name)},[r]),$i=I(b=>{$a(b)?r.groupBy=[]:r&&r.groupBy.includes(b.name)&&(r.groupBy=r.groupBy.filter(L=>L!==b.name))},[r]),Qi=I(b=>{r.select(b),h==null||h(b)},[r,h]),{onKeyDown:rn,onRowClick:sn}=Gn({highlightedIndexRef:jt,onSelect:C,onSelectionChange:Qi,selectionModel:P}),Gi=I(b=>{on(b),b.defaultPrevented||tn(b),b.defaultPrevented||rn(b)},[on,tn,rn]),Ui=I((b,L,z)=>{sn(b,L,z),g==null||g(b)},[g,sn]);ar(()=>{M({type:"init",tableConfig:t,dataSource:r})},[t,r,M]);let Wi=I(b=>{console.log("useTable onMoveColumn",{columns:b});let L={...B,columns:b};M({type:"init",tableConfig:L,dataSource:r}),p==null||p(wo(L))},[r,M,p,B]),Ki=I(b=>{u==null||u(b)},[u]),Xi=I(async(b,L,z)=>r.applyEdit(b,L,z),[r]),Zi=I(b=>{let{initialDragElement:L}=b,z=za(L),G=co.current.find(Z=>Z[0]===z);G&&b.setPayload(G),d==null||d(b)},[co,d]),{onMouseDown:_i,draggable:Yi}=N({allowDragDrop:e,containerRef:n,draggableClassName:"vuuTable",id:a,onDragStart:Zi,onDrop:Ki,orientation:"vertical",itemQuery:".vuuTableRow"});return{...Ni,"aria-rowcount":r.size,draggableRow:Yi,onBlur:Ii,onDoubleClick:Bi,onFocus:Ai,onKeyDown:Gi,onMouseDown:_i,columnMap:V,columns:D,data:X,handleContextMenuAction:Si,headings:j,highlightedIndex:jt.current,menuBuilder:A,onContextMenu:Vi,onDataEdited:Xi,onMoveColumn:Wi,onMoveGroupColumn:zi,onRemoveGroupColumn:$i,onRowClick:Ui,onSortColumn:Pi,onResizeColumn:ki,onToggleGroup:Hi,scrollProps:Oi,tableAttributes:Ze,tableConfig:B,viewportMeasurements:ee}};import{isGroupColumn as qa,isNotHidden as ja}from"@vuu-ui/vuu-utils";import eu from"clsx";import{useDragDropNext as _a}from"@vuu-ui/vuu-ui-controls";import{moveColumnTo as pt,visibleColumnAtIndex as Ya}from"@vuu-ui/vuu-utils";import{useCallback as dr,useRef as Ja}from"react";var gr=({columns:e,onMoveColumn:o,onSortColumn:t,tableConfig:n})=>{let r=Ja(null),i=dr((m,p)=>{let d=e[m],u=pt(e,d,p),f=({name:h})=>x=>x.name===h,v=u.findIndex(f(d)),g=u[v+1],C=g?n.columns.findIndex(f(g)):-1;p>m&&C!==-1?o(pt(n.columns,d,C-1)):o(pt(n.columns,d,C))},[e,o,n.columns]),s=dr(m=>{var g;let d=m.target.closest(".vuuTableHeaderCell"),u=parseInt((g=d==null?void 0:d.dataset.index)!=null?g:"-1"),f=Ya(e,u),v=m.shiftKey;f&&t(f,v)},[e,t]),{onMouseDown:l,draggable:a,...c}=_a({allowDragDrop:!0,containerRef:r,draggableClassName:"vuuTable",onDrop:i,orientation:"horizontal",itemQuery:".vuuTableHeaderCell"});return{containerRef:r,draggableColumn:a,draggedColumnIndex:c.draggedItemIndex,onClick:s,onMouseDown:l}};import{jsx as To,jsxs as fr}from"react/jsx-runtime";var Cr=({classBase:e="vuuTable",columns:o,headings:t,onMoveColumn:n,onMoveGroupColumn:r,onRemoveGroupColumn:i,onResizeColumn:s,onSortColumn:l,tableConfig:a,tableId:c})=>{let{containerRef:m,draggableColumn:p,draggedColumnIndex:d,onClick:u,onMouseDown:f}=gr({columns:o,onMoveColumn:n,onSortColumn:l,tableConfig:a});return fr("div",{className:`${e}-col-headings`,ref:m,children:[t.map((v,g)=>To("div",{className:"vuuTable-heading",children:v.map(({label:C,width:h},x)=>To("div",{className:"vuuTable-headingCell",style:{width:h},children:C},x))},g)),fr("div",{className:`${e}-col-headers`,role:"row",children:[o.filter(ja).map((v,g)=>qa(v)?To(Xo,{column:v,"data-index":g,onMoveColumn:r,onRemoveColumn:i,onResize:s},v.name):To(Cn,{className:eu({"vuuDraggable-dragAway":g===d}),column:v,"data-index":g,id:`${c}-col-${g}`,onClick:u,onMouseDown:f,onResize:s},v.name)),p]})]})};import{jsx as de,jsxs as br}from"react/jsx-runtime";var se="vuuTable",{IDX:vr,RENDER_IDX:uu}=nu,cu=({Row:e=Jo,allowDragDrop:o,availableColumns:t,config:n,containerRef:r,dataSource:i,disableFocus:s=!1,highlightedIndex:l,id:a,navigationStyle:c="cell",onAvailableColumnsChange:m,onConfigChange:p,onDragStart:d,onDrop:u,onFeatureInvocation:f,onHighlight:v,onRowClick:g,onSelect:C,onSelectionChange:h,renderBufferSize:x=0,rowHeight:S=20,selectionModel:P="extended",showColumnHeaders:k=!0,headerHeight:E=k?25:0,size:R})=>{let N=ru(a),{columnMap:A,columns:F,data:K,draggableRow:M,handleContextMenuAction:j,headings:Ze,highlightedIndex:B,onDataEdited:J,onMoveColumn:w,onMoveGroupColumn:T,onRemoveGroupColumn:D,onResizeColumn:O,onRowClick:V,onSortColumn:_e,onToggleGroup:Kt,menuBuilder:Xt,scrollProps:ee,tableAttributes:Re,tableConfig:Vo,viewportMeasurements:X,...co}=mr({allowDragDrop:o,availableColumns:t,config:n,containerRef:r,dataSource:i,disableFocus:s,headerHeight:E,highlightedIndex:l,id:N,navigationStyle:c,onAvailableColumnsChange:m,onConfigChange:p,onDragStart:d,onDrop:u,onFeatureInvocation:f,onHighlight:v,onRowClick:g,onSelect:C,onSelectionChange:h,renderBufferSize:x,rowHeight:S,selectionModel:P,size:R}),zo=hr(`${se}-contentContainer`,{[`${se}-colLines`]:Re.columnSeparators,[`${se}-rowLines`]:Re.rowSeparators,[`${se}-zebra`]:Re.zebraStripes}),po={"--content-height":`${X.contentHeight}px`,"--content-width":`${X.contentWidth}px`,"--horizontal-scrollbar-height":`${X.horizontalScrollbarHeight}px`,"--pinned-width-left":`${X.pinnedWidthLeft}px`,"--pinned-width-right":`${X.pinnedWidthRight}px`,"--header-height":`${E}px`,"--row-height":`${S}px`,"--total-header-height":`${X.totalHeaderHeight}px`,"--vertical-scrollbar-width":`${X.verticalScrollbarWidth}px`,"--viewport-body-height":`${X.viewportBodyHeight}px`};return br(tu,{menuActionHandler:j,menuBuilder:Xt,children:[de("div",{className:`${se}-scrollbarContainer`,ref:ee.scrollbarContainerRef,style:po,children:de("div",{className:`${se}-scrollbarContent`})}),de("div",{className:zo,ref:ee.contentContainerRef,style:po,children:br("div",{...co,className:`${se}-table`,role:"table",tabIndex:s?void 0:-1,children:[k?de(Cr,{columns:F,headings:Ze,onMoveColumn:w,onMoveGroupColumn:T,onRemoveGroupColumn:D,onResizeColumn:O,onSortColumn:_e,tableConfig:Vo,tableId:N}):null,de("div",{className:`${se}-body`,children:K.map(De=>de(e,{columnMap:A,columns:F,highlighted:B===De[vr],onClick:V,onDataEdited:J,row:De,offset:S*De[vr]+X.totalHeaderHeight,onToggleGroup:Kt,zebraStripes:Re.zebraStripes},De[uu]))})]})}),M]})},Wv=su(function({Row:o,allowDragDrop:t,availableColumns:n,className:r,config:i,dataSource:s,disableFocus:l,highlightedIndex:a,id:c,navigationStyle:m,onAvailableColumnsChange:p,onConfigChange:d,onDragStart:u,onDrop:f,onFeatureInvocation:v,onHighlight:g,onRowClick:C,onSelect:h,onSelectionChange:x,renderBufferSize:S,rowHeight:P,selectionModel:k,showColumnHeaders:E,headerHeight:R,style:N,...A},F){let K=lu(null),[M,j]=au();if(i===void 0)throw Error("vuu Table requires config prop. Minimum config is list of Column Descriptors");if(s===void 0)throw Error("vuu Table requires dataSource prop");return de(ou,{...A,className:hr(se,r),id:c,onResize:j,ref:iu(K,F),children:M?de(cu,{Row:o,allowDragDrop:t,availableColumns:n,config:i,containerRef:K,dataSource:s,disableFocus:l,headerHeight:R,highlightedIndex:a,id:c,navigationStyle:m,onAvailableColumnsChange:p,onConfigChange:d,onDragStart:u,onDrop:f,onFeatureInvocation:v,onHighlight:g,onRowClick:C,onSelect:h,onSelectionChange:x,renderBufferSize:S,rowHeight:P,selectionModel:k,showColumnHeaders:E,size:M}):null})});import{memo as pu,useCallback as mu}from"react";import{CheckboxIcon as du,WarnCommit as gu}from"@vuu-ui/vuu-ui-controls";import{Checkbox as fu}from"@salt-ds/core";var oe=(e,o)=>e.column===o.column&&e.column.valueFormatter(e.row[e.columnMap[e.column.name]])===o.column.valueFormatter(o.row[o.columnMap[o.column.name]]);import{dispatchCustomEvent as Cu,registerComponent as vu}from"@vuu-ui/vuu-utils";import{jsx as xr}from"react/jsx-runtime";var yr=pu(({column:e,columnMap:o,onCommit:t=gu,row:n})=>{let r=o[e.name],i=n[r],s=mu(l=>async a=>{let c=await t(l);return c===!0&&Cu(a.target,"vuu-commit"),c},[t]);return e.editable?xr(fu,{checked:i,onClick:s(!i)}):xr(du,{checked:i,disabled:!0})},oe);yr.displayName="CheckboxCell";vu("checkbox-cell",yr,"cell-renderer",{serverDataType:"boolean"});import{registerComponent as bu}from"@vuu-ui/vuu-utils";import{Input as hu}from"@salt-ds/core";import{useEditableText as xu}from"@vuu-ui/vuu-ui-controls";import yu from"clsx";import{jsx as mt}from"react/jsx-runtime";var Eo="vuuTableInputCell",wu=()=>(console.warn("onCommit handler has not been provided to InputCell cell renderer"),Promise.resolve(!0)),Tu=({column:e,columnMap:o,onCommit:t=wu,row:n})=>{let r=o[e.name],{align:i="left",clientSideEditValidationCheck:s}=e,{warningMessage:l,...a}=xu({initialValue:n[r],onCommit:t,clientSideEditValidationCheck:s}),c=l&&i==="left"?mt("span",{className:`${Eo}-icon`,"data-icon":"error"}):void 0,m=l&&i==="right"?mt("span",{className:`${Eo}-icon`,"data-icon":"error"}):void 0;return mt(hu,{...a,className:yu(Eo,{[`${Eo}-error`]:l!==void 0}),endAdornment:c,startAdornment:m})};bu("input-cell",Tu,"cell-renderer",{});import{WarnCommit as Eu}from"@vuu-ui/vuu-ui-controls";import{dispatchCustomEvent as Ru,isTypeDescriptor as Du,isValueListRenderer as Su,registerComponent as Pu}from"@vuu-ui/vuu-utils";import ku from"clsx";import{memo as Hu,useCallback as Mu}from"react";import{CycleStateButton as Lu}from"@vuu-ui/vuu-ui-controls";import{jsx as Nu}from"react/jsx-runtime";var wr="vuuTableToggleCell",Ou=({name:e,type:o})=>{if(Du(o)&&Su(o.renderer))return o.renderer.values;throw Error(`useLookupValues column ${e} has not been configured with a values list`)},Fu=Hu(function({column:o,columnMap:t,onCommit:n=Eu,row:r}){let i=Ou(o),s=t[o.name],l=r[s],a=Mu((c,m)=>n(m).then(p=>(p===!0&&Ru(c.target,"vuu-commit"),p)),[n]);return Nu(Lu,{className:ku(wr,`${wr}-${o.name}`),onCommit:a,value:l,values:i,variant:"cta",children:l})},oe);Pu("toggle-cell",Fu,"cell-renderer",{});import{useStateRef as Ib}from"@vuu-ui/vuu-ui-controls";import{dispatchMouseEvent as Ab}from"@vuu-ui/vuu-utils";import{useCallback as $b,useRef as Qb}from"react";import{DOWN1 as $u,DOWN2 as Qu,isTypeDescriptor as Gu,metadataKeys as Uu,registerComponent as Wu,UP1 as Ku,UP2 as Xu}from"@vuu-ui/vuu-utils";import Zu from"clsx";import{memo as _u}from"react";import{getMovingValueDirection as Iu,isTypeDescriptor as Bu,isValidNumber as Tr}from"@vuu-ui/vuu-utils";import{useEffect as Au,useRef as Vu}from"react";var zu=[void 0,void 0,void 0,void 0];function Er(e,o,t){var p;let n=Vu(),[r,i,s,l]=n.current||zu,{type:a}=t,c=Bu(a)?(p=a.formatting)==null?void 0:p.decimals:void 0,m=e===r&&Tr(o)&&Tr(i)&&t===s?Iu(o,l,i,c):"";return Au(()=>{n.current=[e,o,t,m]}),m}import{jsx as oc,jsxs as tc}from"react/jsx-runtime";var Yu="\u2B06",Ju="\u2B07",{KEY:qu}=Uu,je="vuuBackgroundCell",Le={ArrowOnly:"arrow",BackgroundOnly:"bg-only",ArrowBackground:"arrow-bg"},ju=e=>Gu(e)&&e.renderer&&"flashStyle"in e.renderer?e.renderer.flashStyle:Le.BackgroundOnly,ec=_u(function({column:o,columnMap:t,row:n}){let{name:r,type:i,valueFormatter:s}=o,l=t[r],a=n[l],c=ju(i),m=Er(n[qu],a,o),p=c===Le.ArrowOnly||c===Le.ArrowBackground?m===Ku||m===Xu?Yu:m===$u||m===Qu?Ju:null:null,d=m?" "+m:"",u=Zu(je,d,{[`${je}-backgroundOnly`]:c===Le.BackgroundOnly,[`${je}-arrowOnly`]:c===Le.ArrowOnly,[`${je}-arrowBackground`]:c===Le.ArrowBackground});return tc("div",{className:u,tabIndex:-1,children:[oc("div",{className:`${je}-arrow`,children:p}),s(n[l])]})},oe);Wu("vuu.price-move-background",ec,"cell-renderer",{description:"Change background color of cell when value changes",configEditor:"BackgroundCellConfigurationEditor",label:"Background Flash",serverDataType:["long","int","double"]});import{registerConfigurationEditor as nc}from"@vuu-ui/vuu-utils";import{FormField as rc,FormFieldLabel as ic}from"@salt-ds/core";import{Dropdown as sc}from"@vuu-ui/vuu-ui-controls";import{useCallback as lc,useState as ac}from"react";import{jsx as Rr,jsxs as mc}from"react/jsx-runtime";var uc="vuuBackgroundCellConfiguration",dt=[{label:"Background Only",value:"bg-only"},{label:"Background and Arrow",value:"arrow-bg"},{label:"Arrow Only",value:"arrow"}],[Dr]=dt,cc=e=>{let{flashStyle:o}=e.type.renderer;return dt.find(t=>t.value===o)||Dr},pc=({column:e,onChangeRendering:o})=>{let[t,n]=ac(cc(e)),r=lc((i,s)=>{var a;n(s);let l=e.type.renderer;o({...l,flashStyle:(a=s==null?void 0:s.value)!=null?a:Dr.value})},[e.type,o]);return mc(rc,{children:[Rr(ic,{children:"Flash Style"}),Rr(sc,{className:`${uc}-flashStyle`,onSelectionChange:r,selected:t,source:dt,width:"100%"})]})};nc("BackgroundCellConfigurationEditor",pc);import{useLookupValues as dc}from"@vuu-ui/vuu-data-react";import{Dropdown as gc,WarnCommit as fc}from"@vuu-ui/vuu-ui-controls";import{dispatchCustomEvent as Cc,registerComponent as vc}from"@vuu-ui/vuu-utils";import{memo as bc,useCallback as hc,useState as xc}from"react";import{jsx as Ec}from"react/jsx-runtime";var yc="vuuTableDropdownCell",wc=["Enter"," "],Tc=bc(function({column:o,columnMap:t,onCommit:n=fc,row:r}){let i=t[o.name],{initialValue:s,values:l}=dc(o,r[i]),[a,c]=xc(null),m=hc((p,d)=>{d&&(c(d),n(d.value).then(u=>{u===!0&&p&&Cc(p.target,"vuu-commit")}))},[n]);return Ec(gc,{className:yc,onSelectionChange:m,openKeys:wc,selected:a!=null?a:s,source:l,width:o.width-17})},oe);vc("dropdown-cell",Tc,"cell-renderer",{});import{useLookupValues as Rc}from"@vuu-ui/vuu-data-react";import{registerComponent as Dc}from"@vuu-ui/vuu-utils";import{memo as Sc}from"react";import{jsx as kc}from"react/jsx-runtime";var Pc=Sc(function({column:o,columnMap:t,row:n}){let r=t[o.name],{initialValue:i}=Rc(o,n[r]);return kc("span",{children:i==null?void 0:i.label})},oe);Dc("lookup-cell",Pc,"cell-renderer",{});import{isColumnTypeRenderer as Hc,isTypeDescriptor as Mc,isValidNumber as Sr,registerComponent as Lc}from"@vuu-ui/vuu-utils";import Oc from"clsx";import{jsx as gt,jsxs as Pr}from"react/jsx-runtime";var eo="vuuProgressCell",Fc=({column:e,columnMap:o,row:t})=>{let{type:n}=e,r=t[e.key],i=!1,s=0;if(Mc(n)&&Hc(n.renderer)){let{associatedField:a}=n.renderer;if(a){let c=t[o[a]];if(typeof Sr(r)&&Sr(c))s=Math.min(Math.round(r/c*100),100),s=Math.min(Math.round(r/c*100),100),i=isFinite(s);else{let m=parseFloat(r);if(Number.isFinite(m)){let p=parseFloat(c);Number.isFinite(p)&&(s=Math.min(Math.round(m/p*100),100),i=isFinite(s))}}}else throw Error("ProgressCell associatedField is required to render")}let l=Oc(eo,{});return Pr("div",{className:l,tabIndex:-1,children:[i?Pr("span",{className:`${eo}-track`,children:[gt("span",{className:`${eo}-bg`}),gt("span",{className:`${eo}-bar`,style:{"--progress-bar-pct":`-${100-s}%`}})]}):null,gt("span",{className:`${eo}-text`,children:`${s} %`})]})};Lc("vuu.progress",Fc,"cell-renderer",{description:"Progress formatter",label:"Progress formatter",serverDataType:["long","int","double"]});import{List as Nc,ListItem as Ic}from"@vuu-ui/vuu-ui-controls";import{Checkbox as Bc,Switch as Ac}from"@salt-ds/core";import Vc from"clsx";import{useCallback as kr}from"react";import{getColumnLabel as zc}from"@vuu-ui/vuu-utils";import{jsx as ne,jsxs as ft}from"react/jsx-runtime";var te="vuuColumnList",Hr="vuuColumnListItem",$c=({className:e,item:o,...t})=>ft(Ic,{...t,className:Vc(e,Hr),"data-name":o==null?void 0:o.name,children:[ne("span",{className:`${te}-icon`,"data-icon":"draggable"}),o!=null&&o.isCalculated?ne("span",{className:`${te}-icon`,"data-icon":"function"}):ne(Ac,{className:`${te}-switch`,checked:o==null?void 0:o.subscribed}),ne("span",{className:`${te}-text`,children:zc(o)}),ne(Bc,{className:`${te}-checkBox`,checked:(o==null?void 0:o.hidden)!==!0,disabled:(o==null?void 0:o.subscribed)!==!0})]}),Mr=({columnItems:e,onChange:o,onMoveListItem:t,onNavigateToColumn:n,...r})=>{let i=kr(l=>{let a=l.target,c=a.closest(`.${Hr}`),{dataset:{name:m}}=c;if(m){let p=a.closest(`.${te}-switch`),d=a.closest(`.${te}-checkBox`);p?o(m,"subscribed",a.checked):d&&o(m,"hidden",a.checked===!1)}},[o]),s=kr(l=>{let a=l.target;if(a.classList.contains("vuuColumnList-text")){let c=a.closest(".vuuListItem");c!=null&&c.dataset.name&&(n==null||n(c.dataset.name))}},[]);return ft("div",{...r,className:te,children:[ne("div",{className:`${te}-header`,children:ne("span",{children:"Column Selection"})}),ft("div",{className:`${te}-colHeadings`,children:[ne("span",{children:"Column subscription"}),ne("span",{children:"Visibility"})]}),ne(Nc,{ListItem:$c,allowDragDrop:!0,height:"auto",onChange:i,onClick:s,onMoveListItem:t,selectionStrategy:"none",source:e,itemHeight:33})]})};import{VuuInput as hi}from"@vuu-ui/vuu-ui-controls";import{getCalculatedColumnName as Ym,getDefaultAlignment as Jm,isCalculatedColumn as qm}from"@vuu-ui/vuu-utils";import{Button as No,FormField as Io,FormFieldLabel as Bo,ToggleButton as We,ToggleButtonGroup as xi}from"@salt-ds/core";import jm from"clsx";import{Dropdown as Kp}from"@vuu-ui/vuu-ui-controls";import{getCalculatedColumnExpression as Xp,getCalculatedColumnName as Zp,getCalculatedColumnType as _p}from"@vuu-ui/vuu-utils";import{FormField as Ot,FormFieldLabel as Ft,Input as Yp}from"@salt-ds/core";import{useCallback as Jp,useRef as oi}from"react";import{memo as bp}from"react";import{autocompletion as lp,defaultKeymap as ap,EditorState as Wr,EditorView as Kr,ensureSyntaxTree as up,keymap as Xr,minimalSetup as cp,startCompletion as Zr}from"@vuu-ui/vuu-codemirror";import{createEl as _r}from"@vuu-ui/vuu-utils";import{useCallback as pp,useEffect as mp,useMemo as dp,useRef as Pt}from"react";import{LanguageSupport as Gc,LRLanguage as Uc,styleTags as Wc,tags as oo}from"@vuu-ui/vuu-codemirror";import{LRParser as Qc}from"@lezer/lr";var Ro=Qc.deserialize({version:14,states:"&xOVQPOOO!fQPO'#C^OVQPO'#CcQ!pQPOOO#bQPO'#CkO#gQPO'#CrOOQO'#Cy'#CyO#lQPO,58}OVQPO,59QOVQPO,59QOOQO'#Cn'#CnOVQPO,59XOVQPO,59VOVQPO'#CtOOQO,59^,59^OOQO1G.i1G.iOOQO1G.l1G.lO$bQPO1G.lO%ZQPO1G.sO!pQPO'#CmO%qQQO1G.qO%|QQO'#C{OOQO'#C{'#C{O&wQPO,59`OVQPO,59ZOVQPO,59[OVQPO7+$]OVQPO'#CuO'RQPO1G.zOOQO1G.z1G.zO'ZQQO'#C^O'eQQO1G.sO'{QQO1G.uOOQO1G.v1G.vO(WQPO<<GwO(_QPO,59aOOQO-E6s-E6sOOQO7+$f7+$fOVQPOAN=cO(iQQO1G.lO(yQPOG22}OOQOLD(iLD(iO)QQPO,59QO)QQPO,59QO)QQPO,59X",stateData:")n~OlOS~ORUOSUOTUOUUOWQO`SOnPO~OWgXZQX[QX]QX^QXpQXqQXrQXsQXtQXuQXeQX~OjQXXQX~PnOZWO[WO]XO^XOpYOqYOrYOsYOtYOuYO~OW[O~OW]O~OX_O~P!pO]Yi^YipYiqYirYisYitYiuYieYi~OZWO[WOjYiXYi~P#sOpaiqairaisaitaiuaieai~OZWO[WO]XO^XOjaiXai~P$rOejOvhOwiO~OZmX[mX]mX^mXeoXpmXqmXrmXsmXtmXumXvoXwoX~OXmOekO~P!pOXuOekO~OvQXwQX~PnOZzO[zO]{O^{Ovaiwai~P$rOwiOecivci~OevO~P!pOXiaeia~P!pOZzO[zOvYiwYi~P#sOXyO~P!pORUOSUOTUOUUOWQO`SOnnO~O`UTn~",goto:"$epPPqPPPPqPPqPPPPqP!S!g!r!rPq!w#Y#]PPP#cP$[oUOQWXZ[]hijkvz{|hUOQWXZ]jkvz{|Ve[hi[ZRVgrsxR|cVf[hioTOQWXZ[]hijkvz{|R^TQlgRtlQROQVQS`WzQaXQbZUc[hiQg]Qo|QrjQskQw{RxvQd[QphRqi",nodeNames:"\u26A0 ColumnDefinitionExpression Column Number String True False ParenthesizedExpression OpenBrace CloseBrace ArithmeticExpression Divide Times Plus Minus ConditionalExpression If RelationalExpression RelationalOperator AndCondition OrCondition Comma CallExpression Function ArgList",maxTerm:39,skippedNodes:[0],repeatNodeCount:1,tokenData:".^~RnXY#PYZ#P]^#Ppq#Pqr#brs#mxy$eyz$jz{$o{|$t|}$y}!O%O!O!P%T!P!Q%c!Q![%h!^!_%s!_!`&Q!`!a&V!c!}&d#R#S&d#T#U&u#U#Y&d#Y#Z(Y#Z#]&d#]#^*j#^#c&d#c#d+f#d#h&d#h#i,b#i#o&d~#USl~XY#PYZ#P]^#Ppq#P~#eP!_!`#h~#mOu~~#pWOX#mZ]#m^r#mrs$Ys#O#m#P;'S#m;'S;=`$_<%lO#m~$_OS~~$bP;=`<%l#m~$jOW~~$oOX~~$tO[~~$yO]~~%OOe~~%TO^~~%WP!Q![%Z~%`PR~!Q![%Z~%hOZ~~%mQR~!O!P%Z!Q![%h~%xPr~!_!`%{~&QOt~~&VOp~~&[Pq~!_!`&_~&dOs~P&iSnP!Q![&d!c!}&d#R#S&d#T#o&dR&zUnP!Q![&d!c!}&d#R#S&d#T#b&d#b#c'^#c#o&dR'cUnP!Q![&d!c!}&d#R#S&d#T#W&d#W#X'u#X#o&dR'|SvQnP!Q![&d!c!}&d#R#S&d#T#o&d~(_TnP!Q![&d!c!}&d#R#S&d#T#U(n#U#o&d~(sUnP!Q![&d!c!}&d#R#S&d#T#`&d#`#a)V#a#o&d~)[UnP!Q![&d!c!}&d#R#S&d#T#g&d#g#h)n#h#o&d~)sUnP!Q![&d!c!}&d#R#S&d#T#X&d#X#Y*V#Y#o&d~*^SU~nP!Q![&d!c!}&d#R#S&d#T#o&d~*oUnP!Q![&d!c!}&d#R#S&d#T#Y&d#Y#Z+R#Z#o&d~+YS`~nP!Q![&d!c!}&d#R#S&d#T#o&dR+kUnP!Q![&d!c!}&d#R#S&d#T#f&d#f#g+}#g#o&dR,USwQnP!Q![&d!c!}&d#R#S&d#T#o&d~,gUnP!Q![&d!c!}&d#R#S&d#T#f&d#f#g,y#g#o&d~-OUnP!Q![&d!c!}&d#R#S&d#T#i&d#i#j-b#j#o&d~-gUnP!Q![&d!c!}&d#R#S&d#T#X&d#X#Y-y#Y#o&d~.QST~nP!Q![&d!c!}&d#R#S&d#T#o&d",tokenizers:[0,1],topRules:{ColumnDefinitionExpression:[0,1]},tokenPrec:393});var Kc=Uc.define({name:"VuuColumnExpression",parser:Ro.configure({props:[Wc({Column:oo.attributeValue,Function:oo.variableName,String:oo.string,Or:oo.emphasis,Operator:oo.operator})]})}),Lr=()=>new Gc(Kc);var Ct=class{constructor(o){switch(this.value=o,typeof o){case"boolean":this.type="booleanLiteralExpression";break;case"number":this.type="numericLiteralExpression";break;default:this.type="stringLiteralExpression"}}toJSON(){return{type:this.type,value:this.value}}},vt=class{constructor(o){this.type="colExpression";this.column=o}toJSON(){return{type:this.type,column:this.column}}},no,xe,bt=class{constructor(o="unknown"){q(this,no,[{type:"unknown"},{type:"unknown"}]);q(this,xe,void 0);this.type="arithmeticExpression";ce(this,xe,o)}get op(){return y(this,xe)}set op(o){ce(this,xe,o)}get expressions(){return y(this,no)}toJSON(){return{type:this.type,op:y(this,xe),expressions:y(this,no)}}};no=new WeakMap,xe=new WeakMap;var Ie,ht=class{constructor(o){q(this,Ie,[]);this.type="callExpression";this.functionName=o}get expressions(){return y(this,Ie)}get arguments(){return y(this,Ie)}toJSON(){return{type:this.type,functionName:this.functionName,arguments:y(this,Ie).map(o=>{var t;return(t=o.toJSON)==null?void 0:t.call(o)})}}};Ie=new WeakMap;var ro,Be,Fe=class{constructor(){q(this,ro,[{type:"unknown"},{type:"unknown"}]);q(this,Be,"unknown");this.type="relationalExpression"}get op(){return y(this,Be)}set op(o){ce(this,Be,o)}get expressions(){return y(this,ro)}toJSON(){return{type:this.type,op:y(this,Be),expressions:y(this,ro)}}};ro=new WeakMap,Be=new WeakMap;var io,Ae,Ne=class{constructor(o){q(this,io,[{type:"unknown"},{type:"unknown"}]);q(this,Ae,void 0);this.type="booleanCondition";ce(this,Ae,o)}get op(){return y(this,Ae)}get expressions(){return y(this,io)}toJSON(){return{type:this.type,op:y(this,Ae),expressions:y(this,io).map(o=>{var t;return(t=o.toJSON)==null?void 0:t.call(o)})}}};io=new WeakMap,Ae=new WeakMap;var re,to=class{constructor(o){q(this,re,void 0);this.type="conditionalExpression";ce(this,re,[o?new Ne(o):new Fe,{type:"unknown"},{type:"unknown"}])}get expressions(){return y(this,re)}get condition(){return y(this,re)[0]}get truthyExpression(){return y(this,re)[1]}set truthyExpression(o){y(this,re)[1]=o}get falsyExpression(){return y(this,re)[2]}set falsyExpression(o){y(this,re)[2]=o}toJSON(){var o,t,n,r,i;return{type:this.type,condition:(t=(o=this.condition).toJSON)==null?void 0:t.call(o),truthyExpression:this.truthyExpression,falsyExpression:(i=(r=(n=this.falsyExpression)==null?void 0:n.toJSON)==null?void 0:r.call(n))!=null?i:this.falsyExpression}}};re=new WeakMap;var he=e=>e.type==="unknown",Do=e=>e.type==="arithmeticExpression",Xc=e=>e.type==="callExpression",Oe=e=>e.type==="conditionalExpression",Zc=e=>e.type==="relationalExpression"||e.type==="booleanCondition";var _c=e=>e.type==="booleanCondition",yt=e=>(e==null?void 0:e.type)==="relationalExpression";var _=e=>{if(he(e))return e;if(yt(e)){let[o,t]=e.expressions;if(Q(o))return _(o);if(e.op==="unknown")return e;if(Q(t))return _(t)}else if(Zc(e)){let{expressions:o=[]}=e;for(let t of o)if(Q(t))return _(t)}else if(Oe(e)){let{condition:o,truthyExpression:t,falsyExpression:n}=e;if(Q(o))return _(o);if(Q(t))return _(t);if(Q(n))return _(n)}else if(Do(e)){let{expressions:o=[]}=e;for(let t of o)if(Q(t))return _(t)}},So=(e,o,t)=>{let{expressions:n=[]}=e;if(n.includes(o)){let r=n.indexOf(o);return n.splice(r,1,t),!0}else for(let r of n)if(So(r,o,t))return!0;return!1},Q=e=>he(e)?!0:Oe(e)?Q(e.condition)||Q(e.truthyExpression)||Q(e.falsyExpression):yt(e)||_c(e)?e.op===void 0||e.expressions.some(o=>Q(o)):!1,Or=(e,o)=>{let t=_(e);t?t.expressions?t.expressions.push(o):console.warn("don't know how to treat targetExpression"):console.error("no target expression found")},H,ye,xt=class{constructor(){q(this,H,void 0);q(this,ye,[])}setCondition(o){if(y(this,H)===void 0)this.addExpression(new to(o));else if(Oe(y(this,H))){if(Q(y(this,H).condition)){let t=o?new Ne(o):new Fe;this.addExpression(t)}else if(he(y(this,H).truthyExpression))y(this,H).truthyExpression=new to(o);else if(Q(y(this,H).truthyExpression)){let t=o?new Ne(o):new Fe;this.addExpression(t)}else if(he(y(this,H).falsyExpression))y(this,H).falsyExpression=new to(o);else if(Q(y(this,H).falsyExpression)){let t=o?new Ne(o):new Fe;this.addExpression(t)}}else console.error("setCondition called unexpectedly")}addExpression(o){if(y(this,ye).length>0){let t=y(this,ye).at(-1);t==null||t.arguments.push(o)}else if(y(this,H)===void 0)ce(this,H,o);else if(Do(y(this,H))){let t=_(y(this,H));t&&he(t)&&So(y(this,H),t,o)}else if(Oe(y(this,H))&&Q(y(this,H))){let t=_(y(this,H));t&&he(t)?So(y(this,H),t,o):t&&Or(t,o)}}setFunction(o){let t=new ht(o);this.addExpression(t),y(this,ye).push(t)}setColumn(o){this.addExpression(new vt(o))}setArithmeticOp(o){let t=o,n=y(this,H);Do(n)&&(n.op=t)}setRelationalOperator(o){let t=o;if(y(this,H)&&Oe(y(this,H))){let n=_(y(this,H));yt(n)?n.op=t:console.error(`no target expression found (op = ${o})`)}}setValue(o){let t=new Ct(o);if(y(this,H)===void 0)ce(this,H,t);else if(Do(y(this,H)))this.addExpression(t);else if(Xc(y(this,H)))y(this,H).arguments.push(t);else if(Oe(y(this,H)))if(Q(y(this,H))){let n=_(y(this,H));n&&he(n)?So(y(this,H),n,t):n&&Or(n,t)}else console.log("what do we do with value, in a complete expression")}closeBrace(){y(this,ye).pop()}get expression(){return y(this,H)}toJSON(){var o;return(o=y(this,H))==null?void 0:o.toJSON()}};H=new WeakMap,ye=new WeakMap;var Fr=(e,o)=>{let t=new xt,n=e.cursor();do{let{name:r,from:i,to:s}=n;switch(r){case"AndCondition":t.setCondition("and");break;case"OrCondition":t.setCondition("or");break;case"RelationalExpression":t.setCondition();break;case"ArithmeticExpression":t.addExpression(new bt);break;case"Column":{let l=o.substring(i,s);t.setColumn(l)}break;case"Function":{let l=o.substring(i,s);t.setFunction(l)}break;case"Times":case"Divide":case"Plus":case"Minus":{let l=o.substring(i,s);t.setArithmeticOp(l)}break;case"RelationalOperator":{let l=o.substring(i,s);t.setRelationalOperator(l)}break;case"False":case"True":{let l=o.substring(i,s);t.setValue(l==="true")}break;case"String":t.setValue(o.substring(i+1,s-1));break;case"Number":t.setValue(parseFloat(o.substring(i,s)));break;case"CloseBrace":t.closeBrace();break;default:}}while(n.next());return t.toJSON()};var Yc=Ro.configure({strict:!0}),Nr=["Number","String"],wt=[...Nr,"AndCondition","ArithmeticExpression","BooleanOperator","RelationalOperatorOperator","CallExpression","CloseBrace","Column","Comma","ConditionalExpression","Divide","Equal","If","Minus","OpenBrace","OrCondition","ParenthesizedExpression","Plus","RelationalExpression","RelationalOperator","Times"],Ir=e=>{try{return Yc.parse(e),!0}catch{return!1}},Tt=e=>{let{lastChild:o}=e;for(;o&&!wt.includes(o.name);)o=o.prevSibling,console.log(o==null?void 0:o.name);return o},Br=e=>{if((e==null?void 0:e.name)==="RelationalExpression"){let{firstChild:o}=e,t=Tt(e);if((o==null?void 0:o.name)==="Column"&&typeof(t==null?void 0:t.name)=="string"&&Nr.includes(t.name))return!0}return!1};import{HighlightStyle as Jc,syntaxHighlighting as qc,tags as Et}from"@vuu-ui/vuu-codemirror";var jc=Jc.define([{tag:Et.attributeValue,color:"var(--vuuFilterEditor-variableColor);font-weight: bold"},{tag:Et.variableName,color:"var(--vuuFilterEditor-variableColor)"},{tag:Et.comment,color:"green",fontStyle:"italic"}]),Ar=qc(jc);import{EditorView as ep}from"@vuu-ui/vuu-codemirror";var Vr=ep.theme({"&":{border:"solid 1px var(--salt-container-primary-borderColor)",color:"var(--vuuFilterEditor-color)",backgroundColor:"var(--vuuFilterEditor-background)"},".cm-content":{caretColor:"var(--vuuFilterEditor-cursorColor)"},"&.cm-focused .cm-cursor":{borderLeftColor:"var(--vuuFilterEditor-cursorColor)"},"&.cm-focused .cm-selectionBackground, ::selection":{backgroundColor:"var(--vuuFilterEditor-selectionBackground)"},".cm-selectionBackground, ::selection":{backgroundColor:"var(--vuuFilterEditor-selectionBackground)"},".cm-scroller":{fontFamily:"var(--vuuFilterEditor-fontFamily)"},".cm-completionLabel":{color:"var(--vuu-color-gray-50)"},".cm-completionMatchedText":{color:"var(--vuu-color-gray-80)",fontWeight:700,textDecoration:"none"},".cm-tooltip":{background:"var(--vuuFilterEditor-tooltipBackground)",border:"var(--vuuFilterEditor-tooltipBorder)",borderRadius:"4px",boxShadow:"var(--vuuFilterEditor-tooltipElevation)","&.cm-tooltip-autocomplete > ul":{fontFamily:"var(--vuuFilterEditor-fontFamily)",fontSize:"var(--vuuFilterEditor-fontSize)",maxHeight:"240px"},"&.cm-tooltip-autocomplete > ul > li":{height:"var(--vuuFilterEditor-suggestion-height)",padding:"0 3px",lineHeight:"var(--vuuFilterEditor-suggestion-height)"},"&.cm-tooltip-autocomplete li[aria-selected]":{background:"var(--vuuFilterEditor-suggestion-selectedBackground)",color:"var(--vuuFilterEditor-suggestion-selectedColor)"},"&.cm-tooltip-autocomplete li .cm-completionDetail":{color:"var(--vuuFilterEditor-suggestion-detailColor)"}}},{dark:!1});import{booleanJoinSuggestions as op,getNamedParentNode as zr,getPreviousNode as tp,getValue as le,syntaxTree as np}from"@vuu-ui/vuu-codemirror";import{useCallback as $r}from"react";var rp=(e,o)=>o?e.map(t=>{var n;return{...t,apply:typeof t.apply=="function"?t.apply:`${o}${(n=t.apply)!=null?n:t.label}`}}):e,ip=e=>e===void 0?!1:["Times","Divide","Plus","Minus"].includes(e.name),so=e=>({apply:()=>{e==null||e()},label:"Done",boost:10}),Ve=(e,o)=>{var r;let{lastChild:t}=e,{pos:n}=o;for(;t;)if(t.from<n&&wt.includes(t.name)){if(t.name==="ParenthesizedExpression"){let s=(r=t.firstChild)==null?void 0:r.nextSibling;s&&(t=s)}return t}else t=t.prevSibling},Qr=(e,o)=>{var t;if(e.name==="ArgList"){let n=e.prevSibling;if(n)return le(n,o)}else if(e.name==="OpenBrace"){let n=(t=e.parent)==null?void 0:t.prevSibling;if((n==null?void 0:n.name)==="Function")return le(n,o)}},Gr=(e,o)=>{if(e.name==="RelationalExpression"){let t=Tt(e);if((t==null?void 0:t.name)==="RelationalOperator")return le(t,o)}else{let t=e.prevSibling;if((t==null?void 0:t.name)==="RelationalOperator")return le(t,o)}},St=(e,o)=>{var t;if(e.name==="RelationalExpression"){if(((t=e.firstChild)==null?void 0:t.name)==="Column")return le(e.firstChild,o)}else{let n=e.prevSibling;if((n==null?void 0:n.name)==="Column")return le(n,o);if((n==null?void 0:n.name)==="RelationalOperator")return St(n,o)}},Rt=async(e,o,t,n={})=>{let r=await o.getSuggestions(t,n),{startsWith:i=""}=n;return{from:e.pos-i.length,options:r}},Dt=(e,o,t,n,r)=>{let i=Ve(e,o);switch(i==null?void 0:i.name){case"If":return Rt(o,t,"expression",{prefix:"( "});case"OpenBrace":return Rt(o,t,"expression");case"Condition":return Rt(o,t,"expression",{prefix:", "});case"CloseBrace":if(n){let s=[so(r)];return{from:o.pos,options:s}}}},sp=(e,o)=>{let t=[so(o)];return{from:e.pos,options:t}},Ur=(e,o)=>{let t=$r(async(n,r,i={})=>{let s=await e.getSuggestions(r,i),{startsWith:l=""}=i;return{from:n.pos-l.length,options:s}},[e]);return $r(async n=>{var p,d;let{state:r,pos:i}=n,s=(p=n.matchBefore(/\w*/))!=null?p:{from:0,to:0,text:void 0},a=np(r).resolveInner(i,-1),c=r.doc.toString(),m=Ir(c);switch(a.name){case"If":return t(n,"expression",{prefix:"( "});case"Condition":{let u=Ve(a,n);if((u==null?void 0:u.name)==="Column"){let f=tp(u);if((f==null?void 0:f.name)!=="RelationalOperator")return t(n,"condition-operator",{columnName:le(u,r)})}else if((u==null?void 0:u.name)==="RelationalOperator")return t(n,"expression")}break;case"ConditionalExpression":return Dt(a,n,e);case"RelationalExpression":{if(Br(a))return{from:n.pos,options:op.concat({label:", <truthy expression>, <falsy expression>",apply:", "})};{let u=Gr(a,r),f=St(a,r);if(u)return t(n,"expression");{let v=await e.getSuggestions("condition-operator",{columnName:f});return{from:n.pos,options:v}}}}break;case"RelationalOperator":return t(n,"expression");case"String":{let u=Gr(a,r),f=St(a,r),{from:v,to:g}=a;if(g-v===2&&n.pos===v+1){if(f&&u)return t(n,"columnValue",{columnName:f,operator:u,startsWith:s.text})}else if(g-v>2&&n.pos===g)return t(n,"expression",{prefix:", "})}break;case"ArithmeticExpression":{let u=Ve(a,n);if((u==null?void 0:u.name)==="Column")return t(n,"expression");if(ip(u)){let f=u.name;return t(n,"column",{operator:f})}}break;case"OpenBrace":{let u=Qr(a,r);return t(n,"expression",{functionName:u})}break;case"ArgList":{let u=Qr(a,r),f=Ve(a,n),v=(f==null?void 0:f.name)==="OpenBrace"||(f==null?void 0:f.name)==="Comma"?void 0:",",g=await e.getSuggestions("expression",{functionName:u});return g=v?rp(g,", "):g,(f==null?void 0:f.name)!=="OpenBrace"&&(f==null?void 0:f.name)!=="Comma"&&(g=[{apply:") ",boost:10,label:"Done - no more arguments"}].concat(g)),{from:n.pos,options:g}}case"Equal":if(c.trim()==="=")return t(n,"expression");break;case"ParenthesizedExpression":case"ColumnDefinitionExpression":if(n.pos===0)return t(n,"expression");{let u=Ve(a,n);if((u==null?void 0:u.name)==="Column"){if(m){let f=[so(o.current)],v=le(u,r),g=await e.getSuggestions("operator",{columnName:v});return{from:n.pos,options:f.concat(g)}}}else if((u==null?void 0:u.name)==="CallExpression"){if(m)return{from:n.pos,options:[so(o.current)]}}else if((u==null?void 0:u.name)==="ArithmeticExpression"){if(m){let f=[so(o.current)],v=Ve(u,n);if((v==null?void 0:v.name)==="Column"){let g=le(v,r),C=await e.getSuggestions("operator",{columnName:g});f=f.concat(C)}return{from:n.pos,options:f}}}else if((u==null?void 0:u.name)==="ConditionalExpression")return Dt(u,n,e,m,o.current);break}case"Column":if(await e.isPartialMatch("expression",void 0,s.text))return t(n,"expression",{startsWith:s.text});break;case"Comma":{let u=zr(a);if((u==null?void 0:u.name)==="ConditionalExpression")return t(n,"expression")}break;case"CloseBrace":{let u=zr(a);if((u==null?void 0:u.name)==="ConditionalExpression")return Dt(u,n,e,m,o.current);if((u==null?void 0:u.name)==="ArgList"&&m)return sp(n,o.current)}break;default:((d=a==null?void 0:a.prevSibling)==null?void 0:d.name)==="FilterClause"&&console.log("looks like we ight be a or|and operator")}},[t,o,e])};var Po=e=>{if(e.current==null)throw Error("EditorView not defined");return e.current},gp=()=>"vuuSuggestion",fp=()=>console.log("noooop"),Cp=e=>"expressionType"in e,vp=e=>{if(Cp(e)){let o=_r("div","expression-type-container"),t=_r("span","expression-type",e.expressionType);return o.appendChild(t),o}else return null},Yr=({onChange:e,onSubmitExpression:o,source:t,suggestionProvider:n})=>{let r=Pt(null),i=Pt(fp),s=Pt(),l=Ur(n,i),[a,c,m]=dp(()=>{let d=()=>{let C=Po(s),h=C.state.doc.toString(),x=up(C.state,C.state.doc.length,5e3);if(x){let S=Fr(x,h);return[h,S]}else return["",void 0]},u=()=>{Po(s).setState(g())},f=()=>{let[C,h]=d();o==null||o(C,h)},v=C=>Xr.of([{key:C,run(){return Zr(Po(s)),!0}}]),g=()=>Wr.create({doc:t,extensions:[cp,lp({addToOptions:[{render:vp,position:70}],override:[l],optionClass:gp}),Lr(),Xr.of(ap),v("ArrowDown"),Kr.updateListener.of(C=>{let h=Po(s);if(C.docChanged){Zr(h);let x=h.state.doc.toString();e==null||e(x)}}),Wr.transactionFilter.of(C=>C.newDoc.lines>1?[]:C),Vr,Ar]});return i.current=()=>{f()},[g,u,f]},[l,e,o,t]);mp(()=>{if(!r.current)throw Error("editor not in dom");return s.current=new Kr({state:a(),parent:r.current}),()=>{var d;(d=s.current)==null||d.destroy()}},[l,a]);let p=pp(()=>{m()},[m]);return{editorRef:r,clearInput:c,onBlur:p}};import{jsx as xp}from"react/jsx-runtime";var hp="vuuColumnExpressionInput",kt=bp(({onChange:e,onSubmitExpression:o,source:t="",suggestionProvider:n})=>{let{editorRef:r,onBlur:i}=Yr({onChange:e,onSubmitExpression:o,source:t,suggestionProvider:n});return xp("div",{className:`${hp}`,onBlur:i,ref:r})},(e,o)=>e.source===o.source);kt.displayName="ColumnExpressionInput";import{AnnotationType as yp,getRelationalOperators as wp,numericOperators as Tp,stringOperators as Ep,toSuggestions as Rp}from"@vuu-ui/vuu-codemirror";import{getTypeaheadParams as Dp,useTypeaheadSuggestions as Sp}from"@vuu-ui/vuu-data-react";import{isNumericColumn as Mt,isTextColumn as Pp}from"@vuu-ui/vuu-utils";import{useCallback as Ht,useRef as kp}from"react";var ze=[{accepts:["boolean"],description:"Applies boolean and operator across supplied parameters to returns a single boolean result",example:{expression:'and(ccy="EUR",quantity=0)',result:"true | false"},name:"and",params:{description:"( boolean, [ boolean* ] )"},type:"boolean"},{accepts:"string",description:"Returns multiple string values as a single joined string. Arguments may be string literal values, string columns or other string expressions. Non string arguments may also be included, these will be converted to strings.",example:{expression:'concatenate("example", "-test")',result:'"example-test"'},name:"concatenate",params:{description:"( string, string, [ string* ] )"},type:"string"},{accepts:["string","string"],description:"Tests a string value to determine whether it contains a given substring. Accepts two arguments: source text and target substring. Returns true if <source text> contains one or more occurrences of <target subscring>",example:{expression:'contains("Royal Bank of Scotland", "bank")',result:"true"},name:"contains",params:{description:"( string )"},type:"boolean"},{accepts:["string","number"],description:"Returns the leftmost <number> characters from <string>. First argument may be a string literal, string column or other string expression.",example:{expression:'left("USD Benchmark Report", 3)',result:'"USD"'},name:"left",params:{count:2,description:"( string, number )"},type:"string"},{accepts:"string",description:"Returns the number of characters in <string>. Argument may be a string literal, string column or other string expression.",example:{expression:'len("example")',result:"7"},name:"len",params:{description:"(string)"},type:"number"},{accepts:"string",description:"Convert a string value to lowercase. Argument may be a string column or other string expression.",example:{expression:'lower("examPLE")',result:'"example"'},name:"lower",params:{description:"( string )"},type:"string"},{accepts:["boolean"],description:"Applies boolean or operator across supplied parameters to returns a single boolean result",example:{expression:'or(status="cancelled",quantity=0)',result:"true | false"},name:"or",params:{description:"( boolean, [ boolean* ] )"},type:"boolean"},{accepts:"string",description:"Convert a string value to uppercase. Argument may be a string column or other string expression.",example:{expression:'upper("example")',result:'"EXAMPLE"'},name:"upper",params:{description:"( string )"},type:"string"},{accepts:["string","number"],description:"Returns the rightmost <number> characters from <string>. First argument may be a string literal, string column or other string expression.",example:{expression:"blah",result:"blah"},name:"right",params:{description:"( string )"},type:"string"},{accepts:["string","string","string"],description:"Replace characters within a string. Accepts three arguments: source text, text to replace and replacement text. Returns a copy of <source text> with any occurrences of <text to replace> replaced by <replacement text>",example:{expression:"blah",result:"blah"},name:"replace",params:{description:"( string )"},type:"string"},{accepts:"number",description:"Converts a number to a string.",example:{expression:"blah",result:"blah"},name:"text",params:{description:"( string )"},type:"string"},{accepts:"string",description:"Tests a string value to determine whether it starts with a given substring. Accepts two arguments: source text and target substring. Returns true if <source text> starts with <target subscring>.",example:{expression:"blah",result:"blah"},name:"starts",params:{description:"( string )"},type:"boolean"},{accepts:"string",description:"Tests a string value to determine whether it ends with a given substring. Accepts two arguments: source text and target substring. Returns true if <source text> ends with <target subscring>.",example:{expression:"blah",result:"blah"},name:"ends",params:{description:"( string )"},type:"boolean"},{accepts:"number",description:"blah",example:{expression:"blah",result:"blah"},name:"min",params:{description:"( string )"},type:"number"},{accepts:"number",description:"blah",example:{expression:"blah",result:"blah"},name:"max",params:{description:"( string )"},type:"number"},{accepts:"number",description:"blah",example:{expression:"blah",result:"blah"},name:"sum",params:{description:"( string )"},type:"number"},{accepts:"number",description:"blah",example:{expression:"blah",result:"blah"},name:"round",params:{description:"( string )"},type:"number"},{accepts:"any",description:"blah",example:{expression:"blah",result:"blah"},name:"or",params:{description:"( string )"},type:"boolean"},{accepts:"any",description:"blah",example:{expression:"blah",result:"blah"},name:"and",params:{description:"( string )"},type:"boolean"},{accepts:"any",description:"Return one of two possible result values, depending on the evaluation of a filter expression. If <filterExpression> resolves to true, result is <expression1>, otherwise <expression2>. ",example:{expression:"blah",result:"blah"},name:"if",params:{description:"( filterExpression, expression1, expression 2)"},type:"variable"}];import{createEl as ae}from"@vuu-ui/vuu-utils";var Jr=({name:e,description:o,example:t,params:n,type:r})=>{let i=ae("div","vuuFunctionDoc"),s=ae("div","function-heading"),l=ae("span","function-name",e),a=ae("span","param-list",n.description),c=ae("span","function-type",r);s.appendChild(l),s.appendChild(a),s.appendChild(c);let m=ae("p",void 0,o);if(i.appendChild(s),i.appendChild(m),t){let p=ae("div","example-container"),d=ae("div","example-expression",t.expression),u=ae("div","example-result",t.result);p.appendChild(d),i.appendChild(p),i.appendChild(u)}return i};var Hp=[],we=e=>e.map(o=>{var t;return{...o,apply:((t=o.apply)!=null?t:o.label)+" "}}),Mp=(e,{functionName:o,operator:t})=>{if(t)return e.filter(Mt);if(o){let n=ze.find(r=>r.name===o);if(n)switch(n.accepts){case"string":return e.filter(Pp);case"number":return e.filter(Mt);default:return e}}return e},qr=(e,o)=>Mp(e,o).map(n=>{var i;let r=(i=n.label)!=null?i:n.name;return{apply:o.prefix?`${o.prefix}${n.name}`:n.name,label:r,boost:5,type:"column",expressionType:n.serverDataType}}),Lp=[{apply:"* ",boost:2,label:"*",type:"operator"},{apply:"/ ",boost:2,label:"/",type:"operator"},{apply:"+ ",boost:2,label:"+",type:"operator"},{apply:"- ",boost:2,label:"-",type:"operator"}],Op=e=>e===void 0||Mt(e)?Lp:Hp,Fp=e=>{switch(e.serverDataType){case"string":case"char":return we(Ep);case"int":case"long":case"double":return we(Tp)}},Lt=e=>({apply:`${e.name}( `,boost:2,expressionType:e.type,info:()=>Jr(e),label:e.name,type:"function"}),Np=e=>{if(e){if(typeof e.accepts=="string")return e.accepts;if(Array.isArray(e.accepts))return e.accepts.every(o=>o==="string")?"string":"any"}return"any"},Ip=ze.map(Lt),Bp=({functionName:e})=>{if(e){let o=ze.find(n=>n.name===e),t=Np(o);if(o)switch(t){case"string":return ze.filter(n=>n.type==="string"||n.type==="variable").map(Lt);case"number":return ze.filter(n=>n.type==="number"||n.type==="variable").map(Lt);default:}}return Ip},Ap={},jr=({columns:e,table:o})=>{let t=Ht(l=>l?e.find(a=>a.name===l):void 0,[e]),n=kp(),r=Sp(),i=Ht(async(l,a=Ap)=>{let{columnName:c,functionName:m,operator:p,prefix:d}=a;switch(l){case"expression":{let u=await we(qr(e,{functionName:m,prefix:d})).concat(Bp(a));return n.current=u}case"column":{let u=await qr(e,a);return n.current=we(u)}case"operator":{let u=await Op(t(c));return n.current=we(u)}case"relational-operator":{let u=await wp(t(c));return n.current=we(u)}case"condition-operator":{let u=t(c);if(u){let f=await Fp(u);if(f)return n.current=we(f)}}break;case"columnValue":if(c&&p){let u=Dp(o,c),f=await r(u);return n.current=Rp(f,{suffix:""}),n.current.forEach(v=>{v.apply=(g,C,h)=>{let x=new yp,S=h+C.label.length+1;g.dispatch({changes:{from:h,insert:C.label},selection:{anchor:S,head:S},annotations:x.of(C)})}}),n.current}break}return[]},[e,t,r,o]),s=Ht(async(l,a,c)=>{let{current:m}=n,p=!1,d=m||await i(l,{columnName:a});if(c&&d)for(let u of d){if(u.label===c)return!1;u.label.startsWith(c)&&(p=!0)}return p},[i]);return{getSuggestions:i,isPartialMatch:s}};import{getCalculatedColumnDetails as Vp,setCalculatedColumnExpression as zp,setCalculatedColumnName as $p,setCalculatedColumnType as Qp}from"@vuu-ui/vuu-utils";import{useCallback as ko,useRef as Gp,useState as Up}from"react";var Wp=e=>{let[o,t,n]=Vp(e);return n===""?{...e,name:`${o}:string:${t}`}:e},ei=({column:e,onChangeName:o})=>{let[t,n]=Up(Wp(e)),r=Gp(e),i=ko(c=>{r.current=c,n(c)},[]),s=ko(c=>{let{value:m}=c.target,p=$p(t,m);i(p),o==null||o(p.name)},[t,o,i]),l=ko(c=>{let m=c.trim(),{current:p}=r,d=zp(p,m);i(d),o==null||o(d.name)},[o,i]),a=ko((c,m)=>{if(typeof m=="string"){let p=Qp(t,m);i(p),o==null||o(p.name)}},[t,o,i]);return{column:t,onChangeExpression:l,onChangeName:s,onChangeType:a}};import{jsx as ge,jsxs as Ho}from"react/jsx-runtime";var ti="vuuColumnExpressionPanel",ni=({column:e,onChangeName:o,tableConfig:t,vuuTable:n})=>{let r=oi(null),{column:i,onChangeExpression:s,onChangeName:l,onChangeType:a}=ei({column:e,onChangeName:o}),c=oi(Xp(i)),m=jr({columns:t.columns,table:n}),p=Jp(()=>{var d,u;r.current&&((u=(d=r.current)==null?void 0:d.querySelector("button"))==null||u.focus())},[]);return Ho("div",{className:ti,children:[ge("div",{className:"vuuColumnSettingsPanel-header",children:ge("span",{children:"Calculation"})}),Ho(Ot,{"data-field":"column-name",children:[ge(Ft,{children:"Column Name"}),ge(Yp,{className:"vuuInput",onChange:l,value:Zp(i)})]}),Ho(Ot,{"data-field":"column-expression",children:[ge(Ft,{children:"Expression"}),ge(kt,{onChange:s,onSubmitExpression:p,source:c.current,suggestionProvider:m})]}),Ho(Ot,{"data-field":"type",children:[ge(Ft,{children:"Column type"}),ge(Kp,{className:`${ti}-type`,onSelectionChange:a,ref:r,selected:_p(i)||null,source:["double","long","string"],width:"100%"})]})]})};import{Dropdown as Tm}from"@vuu-ui/vuu-ui-controls";import{getCellRendererOptions as Em,getConfigurationEditor as Rm,isColumnTypeRenderer as pi,isTypeDescriptor as mi}from"@vuu-ui/vuu-utils";import{FormField as Dm,FormFieldLabel as Sm}from"@salt-ds/core";import di from"clsx";import{useCallback as Pm,useMemo as Vt}from"react";import{FormField as Nt,FormFieldLabel as It,Input as qp,Switch as ri}from"@salt-ds/core";import{getTypeFormattingFromColumn as jp}from"@vuu-ui/vuu-utils";import{useCallback as Mo,useState as em}from"react";import{jsx as $e,jsxs as Lo}from"react/jsx-runtime";var om="vuuFormattingSettings",Oo=({column:e,onChangeFormatting:o})=>{var a,c,m;let[t,n]=em(jp(e)),r=Mo(p=>{(p.key==="Enter"||p.key==="Tab")&&o(t)},[t,o]),i=Mo(p=>{let{value:d}=p.target,u=d===""||isNaN(parseInt(d))?void 0:parseInt(d),f={...t,decimals:u};n(f)},[t]),s=Mo(p=>{let{checked:d}=p.target,u={...t,alignOnDecimals:d};n(u),o(u)},[t,o]),l=Mo(p=>{let{checked:d}=p.target,u={...t,zeroPad:d};n(u),o(u)},[t,o]);return Lo("div",{className:om,children:[Lo(Nt,{"data-field":"decimals",children:[$e(It,{children:"Number of decimals"}),$e(qp,{className:"vuuInput",onChange:i,onKeyDown:r,value:(a=t.decimals)!=null?a:""})]}),Lo(Nt,{labelPlacement:"left",children:[$e(It,{children:"Align on decimals"}),$e(ri,{checked:(c=t.alignOnDecimals)!=null?c:!1,onChange:s,value:"align-decimals"})]}),Lo(Nt,{labelPlacement:"left",children:[$e(It,{children:"Zero pad decimals"}),$e(ri,{checked:(m=t.zeroPad)!=null?m:!1,onChange:l,value:"zero-pad"})]})]})};import{useCallback as gm}from"react";import{FormField as fm,FormFieldLabel as Cm,ToggleButton as vm,ToggleButtonGroup as bm}from"@salt-ds/core";import{isDateTimeColumn as hm,isTypeDescriptor as xm}from"@vuu-ui/vuu-utils";import{useCallback as Bt,useMemo as tm,useState as nm}from"react";import{Dropdown as rm}from"@vuu-ui/vuu-ui-controls";import{defaultPatternsByType as ii,fallbackDateTimePattern as im,getTypeFormattingFromColumn as sm,supportedDateTimePatterns as lm}from"@vuu-ui/vuu-utils";import{FormField as si,FormFieldLabel as li,ToggleButton as am,ToggleButtonGroup as um}from"@salt-ds/core";import{Fragment as dm,jsx as lo,jsxs as At}from"react/jsx-runtime";var ai=({column:e,onChangeFormatting:o})=>{var m,p;let t=sm(e),{pattern:n=im}=t,r=tm(()=>mm(n),[n]),[i,s]=nm({time:(m=n.time)!=null?m:ii.time,date:(p=n.date)!=null?p:ii.date}),l=Bt(d=>o({...t,pattern:d}),[o,t]),a=Bt(d=>(u,f)=>{let v={...n!=null?n:{},[d]:f};s(g=>{var C,h;return{time:(C=v.time)!=null?C:g.time,date:(h=v.date)!=null?h:g.date}}),l(v)},[l,n]),c=Bt(d=>{var f,v,g,C;let u=d.currentTarget.value;switch(u){case"time":return l({[u]:(f=n[u])!=null?f:i[u]});case"date":return l({[u]:(v=n[u])!=null?v:i[u]});case"both":return l({time:(g=n.time)!=null?g:i.time,date:(C=n.date)!=null?C:i.date})}},[l,n,i]);return At(dm,{children:[At(si,{labelPlacement:"left",children:[lo(li,{children:"Display"}),lo(um,{className:"vuuToggleButtonGroup",onChange:c,value:r,children:pm.map(d=>lo(am,{value:d,children:d.toUpperCase()},d))})]}),["date","time"].filter(d=>!!n[d]).map(d=>At(si,{labelPlacement:"left",children:[lo(li,{children:`${cm[d]} pattern`}),lo(rm,{onSelectionChange:a(d),selected:n[d],source:lm[d],width:"100%"})]},d))]})},cm={date:"Date",time:"Time"},pm=["date","time","both"];function mm(e){return e.time?e.date?"both":"time":"date"}import{jsx as ao,jsxs as ui}from"react/jsx-runtime";var ym="vuuLongColumnFormattingSettings",ci=e=>{let{column:o,onChangeType:t}=e,n=xm(o.type)?o.type.name:o.type,r=gm(i=>{let s=i.currentTarget.value;t(s)},[t]);return ui("div",{className:ym,children:[ui(fm,{children:[ao(Cm,{children:"Type inferred as"}),ao(bm,{className:"vuuToggleButtonGroup",onChange:r,value:n!=null?n:"number",children:wm.map(i=>ao(vm,{value:i,children:i.toUpperCase()},i))})]}),hm(o)?ao(ai,{...e,column:o}):ao(Oo,{...e})]})},wm=["number","date/time"];import{jsx as Qe,jsxs as $t}from"react/jsx-runtime";var zt="vuuColumnFormattingPanel",km=e=>{var o;return(o=e.label)!=null?o:e.name},gi=({availableRenderers:e,className:o,column:t,onChangeFormatting:n,onChangeType:r,onChangeRendering:i,...s})=>{let l=Vt(()=>Hm({column:t,onChangeFormatting:n,onChangeType:r}),[t,n,r]),a=Vt(()=>{let{type:d}=t;if(mi(d)&&pi(d.renderer)){let u=Em(d.renderer.name);return Rm(u==null?void 0:u.configEditor)}},[t]),c=Vt(()=>{let{type:d}=t,[u]=e,f=mi(d)&&pi(d.renderer)?d.renderer.name:void 0,v=e.find(g=>g.name===f);return v!=null?v:u},[e,t]),m=Pm((d,u)=>{let f={name:u.name};i==null||i(f)},[i]),{serverDataType:p="string"}=t;return $t("div",{...s,className:"vuuColumnSettingsPanel-header",children:[Qe("div",{children:"Formatting"}),$t(Dm,{children:[Qe(Sm,{children:`Renderer (data type ${t.serverDataType})`}),Qe(Tm,{className:di(`${zt}-renderer`),itemToString:km,onSelectionChange:m,selected:c,source:e,width:"100%"})]}),$t("div",{className:di(zt,o,`${zt}-${p}`),children:[l,a?Qe(a,{column:t,onChangeRendering:i}):null]})]})};function Hm(e){let{column:o}=e;switch(o.serverDataType){case"double":case"int":return Qe(Oo,{...e});case"long":return Qe(ci,{...e});default:return null}}import Mm from"clsx";import{getCalculatedColumnDetails as Lm,isCalculatedColumn as Om}from"@vuu-ui/vuu-utils";import{jsx as Te,jsxs as Fm}from"react/jsx-runtime";var Ge="vuuColumnNameLabel",fi=({column:e,onClick:o})=>{if(Om(e.name)){let[t,n,r]=Lm(e),i=t||"name",s="=expression",l=i==="name"?`${Ge}-placeholder`:void 0,a=r===""?`${Ge}-placeholder`:void 0;return Fm("div",{className:Mm(Ge,`${Ge}-calculated`),onClick:o,children:[Te("span",{className:l,children:i}),Te("span",{children:":"}),Te("span",{children:n||"string"}),Te("span",{children:":"}),Te("span",{className:a,children:s}),Te("span",{className:`${Ge}-edit`,"data-icon":"edit"})]})}else return Te("div",{className:Ge,children:e.name})};import{getRegisteredCellRenderers as Fo,isValidColumnAlignment as Nm,isValidPinLocation as Im,setCalculatedColumnName as Bm,updateColumnRenderProps as Am,updateColumnFormatting as Vm,updateColumnType as zm}from"@vuu-ui/vuu-utils";import{useCallback as Y,useEffect as $m,useMemo as Qm,useRef as Gm,useState as Ci}from"react";var Um=[{description:"Default formatter for columns with data type integer",label:"Default Renderer (int, long)",name:"default-int"},...Fo("int")],Wm=[{description:"Default formatter for columns with data type double",label:"Default Renderer (double)",name:"default-double"},...Fo("double")],vi=[{description:"Default formatter for columns with data type string",label:"Default Renderer (string)",name:"default-string"},...Fo("string")],Km=[...Fo("boolean")],Xm=e=>{switch(e.serverDataType){case"char":case"string":return vi;case"int":case"long":return Um;case"double":return Wm;case"boolean":return Km;default:return vi}},Zm=e=>{let o=e.closest(".saltFormField");if(o&&o.dataset.field){let{dataset:{field:t}}=o;return t}else throw Error("named form field not found")},_m=(e,o)=>{if(o.name==="::")return o;{let t=e.find(n=>n.name===o.name);if(t)return t;throw Error(`columns does not contain column ${name}`)}},Ue=(e,o)=>({...e,columns:e.columns.map(t=>t.name===o.name?o:t)}),bi=({column:e,onCancelCreateColumn:o,onConfigChange:t,onCreateCalculatedColumn:n,tableConfig:r})=>{let[i,s]=Ci(_m(r.columns,e)),l=Gm(i),[a,c]=Ci(i.name==="::"),m=Y(()=>{l.current=i,c(!0)},[i]);$m(()=>{s(e),c(e.name==="::")},[e]);let p=Qm(()=>Xm(i),[i]),d=Y(()=>{t(Ue(r,i))},[i,t,r]),u=Y(E=>{let R=E.target,N=Zm(R),{value:A}=R;switch(N){case"column-label":s(F=>({...F,label:A}));break;case"column-name":s(F=>Bm(F,A));break;case"column-width":s(F=>({...F,width:parseInt(A)}));break;case"column-alignment":if(Nm(A)){let F={...i,align:A||void 0};s(F),t(Ue(r,F))}break;case"column-pin":if(Im(A)){let F={...i,pin:A||void 0};s(F),t(Ue(r,F));break}}},[i,t,r]),f=Y(E=>{s(R=>({...R,name:E}))},[]),v=Y(E=>{let R=Vm(i,E);s(R),t(Ue(r,R))},[i,t,r]),g=Y(E=>{let R=zm(i,E);s(R),t(Ue(r,R))},[i,t,r]),C=Y(E=>{if(E){let R=Am(i,E);s(R),t(Ue(r,R))}},[i,t,r]),h=Y(({moveBy:E})=>{let{columns:R}=r,N=R.indexOf(i)+E,A=R[N];A&&s(A)},[i,r]),x=Y(()=>{h({moveBy:1})},[h]),S=Y(()=>{h({moveBy:-1})},[h]),P=Y(()=>{n(i)},[i,n]),k=Y(()=>{e.name==="::"?o():(l.current!==void 0&&l.current!==i&&s(l.current),c(!1))},[i,e.name,o]);return{availableRenderers:p,editCalculatedColumn:a,column:i,navigateNextColumn:x,navigatePrevColumn:S,onCancel:k,onChange:u,onChangeCalculatedColumnName:f,onChangeFormatting:v,onChangeRendering:C,onChangeType:g,onEditCalculatedColumn:m,onInputCommit:d,onSave:P}};import{jsx as $,jsxs as ue}from"react/jsx-runtime";var fe="vuuColumnSettingsPanel",ed=e=>{let{name:o,label:t}=e;return qm(o)?t!=null?t:Ym(e):t!=null?t:o},y1=({column:e,onCancelCreateColumn:o,onConfigChange:t,onCreateCalculatedColumn:n,tableConfig:r,vuuTable:i})=>{let s=e.name==="::",{availableRenderers:l,editCalculatedColumn:a,column:c,navigateNextColumn:m,navigatePrevColumn:p,onCancel:d,onChange:u,onChangeCalculatedColumnName:f,onChangeFormatting:v,onChangeRendering:g,onChangeType:C,onEditCalculatedColumn:h,onInputCommit:x,onSave:S}=bi({column:e,onCancelCreateColumn:o,onConfigChange:t,onCreateCalculatedColumn:n,tableConfig:r}),{serverDataType:P,align:k=Jm(P),pin:E,width:R}=c;return ue("div",{className:jm(fe,{[`${fe}-editing`]:a}),children:[$("div",{className:`${fe}-header`,children:$(fi,{column:c,onClick:h})}),a?$(ni,{column:c,onChangeName:f,tableConfig:r,vuuTable:i}):null,ue(Io,{"data-field":"column-label",children:[$(Bo,{children:"Column Label"}),$(hi,{className:"vuuInput",onChange:u,onCommit:x,value:ed(c)})]}),ue(Io,{"data-field":"column-width",children:[$(Bo,{children:"Column Width"}),$(hi,{className:"vuuInput",onChange:u,value:R,onCommit:x})]}),ue(Io,{"data-field":"column-alignment",children:[$(Bo,{children:"Alignment"}),ue(xi,{className:"vuuToggleButtonGroup",onChange:u,value:k,children:[$(We,{"data-icon":"align-left",className:"vuuIconToggleButton",value:"left"}),$(We,{"data-icon":"align-right",className:"vuuIconToggleButton",value:"right"})]})]}),ue(Io,{"data-field":"column-pin",children:[$(Bo,{children:"Pin Column"}),ue(xi,{className:"vuuToggleButtonGroup",onChange:u,value:E!=null?E:"",children:[$(We,{className:"vuuIconToggleButton","data-icon":"cross-circle",value:""}),$(We,{className:"vuuIconToggleButton","data-icon":"pin-left",value:"left"}),$(We,{className:"vuuIconToggleButton","data-icon":"pin-float",value:"floating"}),$(We,{className:"vuuIconToggleButton","data-icon":"pin-right",value:"right"})]})]}),$(gi,{availableRenderers:l,column:c,onChangeFormatting:v,onChangeRendering:g,onChangeType:C}),a?ue("div",{className:"vuuColumnSettingsPanel-buttonBar","data-align":"right",children:[$(No,{className:`${fe}-buttonCancel`,onClick:d,tabIndex:-1,children:"cancel"}),$(No,{className:`${fe}-buttonSave`,onClick:S,variant:"cta",children:"save"})]}):ue("div",{className:`${fe}-buttonBar`,"data-align":s?"right":void 0,children:[$(No,{className:`${fe}-buttonNavPrev`,variant:"secondary","data-icon":"arrow-left",onClick:p,children:"PREVIOUS"}),$(No,{className:`${fe}-buttonNavNext`,variant:"secondary","data-icon":"arrow-right",onClick:m,children:"NEXT"})]})]})};import od from"clsx";import{useEffect as td,useState as yi}from"react";import{jsx as Ke,jsxs as nd}from"react/jsx-runtime";var uo="vuuDatasourceStats",Qt=new Intl.NumberFormat,L1=({className:e,dataSource:o})=>{let[t,n]=yi(o.range),[r,i]=yi(o.size);td(()=>{i(o.size),o.on("resize",i),o.on("range",n)},[o]);let s=od(uo,e),l=Qt.format(t.from+1),a=Qt.format(Math.min(t.to,r)),c=Qt.format(r);return nd("div",{className:s,children:[Ke("span",{className:`${uo}-label`,children:"Row count"}),Ke("span",{className:`${uo}-range`,children:l}),Ke("span",{children:"-"}),Ke("span",{className:`${uo}-range`,children:a}),Ke("span",{children:"of"}),Ke("span",{className:`${uo}-size`,children:c})]})};import{Button as dd,FormField as Gt,FormFieldLabel as Ut,Input as gd,ToggleButton as Xe,ToggleButtonGroup as fd}from"@salt-ds/core";import{addColumnToSubscribedColumns as rd,isCalculatedColumn as id,moveItem as sd,subscribedOnly as ld,useLayoutEffectSkipFirst as ad}from"@vuu-ui/vuu-utils";import{useCallback as Ao,useMemo as ud,useState as cd}from"react";var pd=(e,o)=>{let t=[];for(let{name:n}of e){let r=o.find(i=>i.name===n);r&&t.push(r)}return t},md=(e,o)=>e.map(({name:t,serverDataType:n})=>{let r=o.find(i=>i.name===t);return{hidden:r==null?void 0:r.hidden,isCalculated:id(t),label:r==null?void 0:r.label,name:t,serverDataType:n,subscribed:r!==void 0}}),wi=({availableColumns:e,onConfigChange:o,onDataSourceConfigChange:t,tableConfig:n})=>{let[{availableColumns:r,tableConfig:i},s]=cd({availableColumns:e,tableConfig:n}),l=ud(()=>md(r,i.columns),[r,i.columns]),a=Ao((u,f)=>{s(v=>{let g=sd(v.availableColumns,u,f),C=pd(g,i.columns);return{availableColumns:g,tableConfig:{...v.tableConfig,columns:C}}})},[i.columns]),c=Ao((u,f,v)=>{let g=l.find(C=>C.name===u);if(f==="subscribed")if(g!=null&&g.subscribed){let C=i.columns.filter(h=>h.name!==u).map(h=>h.name);s(h=>({...h,tableConfig:{...i,columns:i.columns.filter(ld(C))}})),t({columns:C})}else{let C={...i,columns:rd(i.columns,r,u)};s(x=>({...x,tableConfig:C}));let h=C.columns.map(x=>x.name);t({columns:h})}else if(g!=null&&g.subscribed){let C=i.columns.find(h=>h.name===u);if(C){let h=Co(i,{type:"column-prop",property:f,column:C,value:v});s(x=>({...x,tableConfig:h}))}}},[r,l,t,i]),m=Ao(u=>{let{value:f}=u.target,v=f==="0"?void 0:f==="1"?"capitalize":"uppercase";s(g=>({...g,tableConfig:{...g.tableConfig,columnFormatHeader:v}}))},[]),p=Ao(u=>{let{ariaChecked:f,value:v}=u.target;s(g=>({...g,tableConfig:{...g.tableConfig,[v]:f!=="true"}}))},[]);ad(()=>{o==null||o(i)},[o,i]);let d=i.columnFormatHeader===void 0?0:i.columnFormatHeader==="capitalize"?1:2;return{columnItems:l,columnLabelsValue:d,onChangeColumnLabels:m,onChangeTableAttribute:p,onColumnChange:c,onMoveListItem:a,tableConfig:i}};import{jsx as W,jsxs as Ee}from"react/jsx-runtime";var Wt="vuuTableSettingsPanel",_1=({availableColumns:e,onAddCalculatedColumn:o,onConfigChange:t,onDataSourceConfigChange:n,onNavigateToColumn:r,tableConfig:i})=>{var u,f,v;let{columnItems:s,columnLabelsValue:l,onChangeColumnLabels:a,onChangeTableAttribute:c,onColumnChange:m,onMoveListItem:p,tableConfig:d}=wi({availableColumns:e,onConfigChange:t,onDataSourceConfigChange:n,tableConfig:i});return Ee("div",{className:Wt,children:[Ee(Gt,{children:[W(Ut,{children:"Column Labels"}),Ee(fd,{className:"vuuToggleButtonGroup",onChange:a,value:l,children:[W(Xe,{className:"vuuIconToggleButton","data-icon":"text-strikethrough",value:0}),W(Xe,{className:"vuuIconToggleButton","data-icon":"text-Tt",value:1}),W(Xe,{className:"vuuIconToggleButton","data-icon":"text-T",value:2})]})]}),Ee(Gt,{children:[W(Ut,{children:"Grid separators"}),Ee("div",{className:"saltToggleButtonGroup vuuToggleButtonGroup saltToggleButtonGroup-horizontal vuuGridSeparators",children:[W(Xe,{className:"vuuIconToggleButton","data-icon":"row-striping",selected:(u=d.zebraStripes)!=null?u:!1,onChange:c,value:"zebraStripes"}),W(Xe,{className:"vuuIconToggleButton","data-icon":"row-lines",selected:(f=d.rowSeparators)!=null?f:!1,onChange:c,value:"rowSeparators"}),W(Xe,{className:"vuuIconToggleButton","data-icon":"col-lines",selected:(v=d.columnSeparators)!=null?v:!1,onChange:c,value:"columnSeparators"})]})]}),Ee(Gt,{children:[W(Ut,{children:"Default Column Width"}),W(gd,{className:"vuuInput"})]}),W(Mr,{columnItems:s,onChange:m,onMoveListItem:p,onNavigateToColumn:r}),Ee("div",{className:`${Wt}-calculatedButtonbar`,children:[W(dd,{"data-icon":"plus",onClick:o}),W("span",{className:`${Wt}-calculatedLabel`,children:"Add calculated column"})]})]})};export{ec as BackgroundCell,pc as BackgroundCellConfigurationEditor,Oo as BaseNumericFormattingSettings,ji as CaseValidator,kt as ColumnExpressionInput,ni as ColumnExpressionPanel,gi as ColumnFormattingPanel,Mr as ColumnList,wt as ColumnNamedTerms,y1 as ColumnSettingsPanel,L1 as DataSourceStats,ai as DateTimeFormattingSettings,Tc as DropdownCell,Pc as LookupCell,ns as PatternValidator,_1 as TableSettingsPanel,Lr as columnExpressionLanguageSupport,Ir as isCompleteExpression,Br as isCompleteRelationalExpression,Tt as lastNamedChild,Yr as useColumnExpressionEditor,jr as useColumnExpressionSuggestionProvider,wi as useTableSettings,Fr as walkTree};
1
+ var an=(e,o,t)=>{if(!o.has(e))throw TypeError("Cannot "+t)};var y=(e,o,t)=>(an(e,o,"read from private field"),t?t.call(e):o.get(e)),ee=(e,o,t)=>{if(o.has(e))throw TypeError("Cannot add the same private member more than once");o instanceof WeakSet?o.add(e):o.set(e,t)},pe=(e,o,t,n)=>(an(e,o,"write to private field"),n?n.call(e,t):o.set(e,t),t);import{registerComponent as Zi}from"@vuu-ui/vuu-utils";var _i=e=>typeof e=="string",Yi=(e,o)=>_i(o)?o===""?!0:e.value==="lower"&&o.toLowerCase()!==o?"value must be all lowercase":e.value==="upper"&&o.toUpperCase()!==o?"value must be all uppercase":!0:"value must be a string";Zi("vuu-case",Yi,"data-edit-validator",{});import{registerComponent as Ji}from"@vuu-ui/vuu-utils";var qi=e=>typeof e=="string",ji="value does not match expected pattern",es=(e,o)=>{if(typeof e.value!="string")throw Error("Pattern validation rule must provide pattern");if(qi(o)){if(o==="")return!0;{let{message:t=ji}=e;return new RegExp(e.value).test(o)||t}}else return"value must be a string"};Ji("vuu-pattern",es,"data-edit-validator",{});import{OverflowContainer as fs}from"@vuu-ui/vuu-layout";import{useLayoutEffectSkipFirst as Cs}from"@vuu-ui/vuu-utils";import vs from"clsx";import{useCallback as bs,useRef as hs,useState as xs}from"react";import os from"clsx";import{useCallback as ts}from"react";import{jsx as ns,jsxs as rs}from"react/jsx-runtime";var un="vuuColumnHeaderPill",ke=({children:e,className:o,column:t,onRemove:n,removable:r,...i})=>{if(r&&typeof n!="function")throw Error("ColumnHeaderPill onRemove prop must be provided if Pill is removable");let s=ts(l=>{l.preventDefault(),l.stopPropagation(),n==null||n(t)},[t,n]);return rs("div",{...i,className:os(un,o),children:[e,r?ns("span",{className:`${un}-removeButton`,role:"button","data-icon":"cross",onClick:s}):null]})};import{jsx as Ko,jsxs as is}from"react/jsx-runtime";var cn=({column:e,...o})=>{let{name:t,sorted:n}=e,r=typeof n=="number"?n<0?"arrow-down":"arrow-up":n==="A"?"arrow-up":n==="D"?"arrow-down":void 0;return is(ke,{...o,column:e,children:[Ko("span",{className:"vuuGroupColumnPill-label",children:t}),r!==void 0?Ko("span",{"data-icon":r}):null,typeof n=="number"?Ko("span",{className:"vuuSortPosition",children:Math.abs(n)}):null]})};import{jsx as pn,jsxs as ss}from"react/jsx-runtime";var mn=({column:e})=>{if(!e.sorted)return null;let o=typeof e.sorted=="number"?e.sorted<0?"arrow-down":"arrow-up":e.sorted==="A"?"arrow-up":"arrow-down";return ss(ke,{column:e,children:[pn("span",{"data-icon":o}),typeof e.sorted=="number"?pn("span",{className:"vuuSortPosition",children:Math.abs(e.sorted)}):null]})};import{useCallback as Xo,useRef as ls}from"react";import{jsx as us}from"react/jsx-runtime";var dn=()=>{},as="vuuColumnResizerNext",go=({onDrag:e,onDragEnd:o=dn,onDragStart:t=dn})=>{let n=ls(0),r=Xo(l=>{l.stopPropagation&&l.stopPropagation(),l.preventDefault&&l.preventDefault();let a=Math.round(l.clientX),c=a-n.current;n.current=a,c!==0&&e(l,c)},[e]),i=Xo(l=>{window.removeEventListener("mouseup",i),window.removeEventListener("mousemove",r),o(l)},[o,r]),s=Xo(l=>{t(l),n.current=Math.round(l.clientX),window.addEventListener("mouseup",i),window.addEventListener("mousemove",r),l.stopPropagation&&l.stopPropagation(),l.preventDefault&&l.preventDefault()},[t,r,i]);return us("div",{className:as,onMouseDown:s})};import{useCallback as Zo,useRef as cs,useState as ps}from"react";var fo=({column:e,onResize:o,rootRef:t})=>{let n=cs(0),[r,i]=ps(!1),{name:s}=e,l=Zo(()=>{if(o&&t.current){let{width:p}=t.current.getBoundingClientRect();n.current=Math.round(p),i(!0),o==null||o("begin",s)}},[s,o,t]),a=Zo((p,m)=>{if(t.current&&o){let{width:d}=t.current.getBoundingClientRect(),u=Math.round(d)+m;u!==n.current&&u>0&&(o("resize",s,u),n.current=u)}},[s,o,t]),c=Zo(()=>{o&&(o("end",s,n.current),setTimeout(()=>{i(!1)},80))},[s,o]);return{isResizing:r,onDrag:a,onDragStart:l,onDragEnd:c}};import{getColumnStyle as ms}from"@vuu-ui/vuu-utils";import ds from"clsx";import{useMemo as gs}from"react";var me=(e,o,t)=>gs(()=>{let n=ds(o,{vuuPinFloating:e.pin==="floating",vuuPinLeft:e.pin==="left",vuuPinRight:e.pin==="right",vuuEndPin:t&&e.endPin,[`${o}-editable`]:e.editable,[`${o}-right`]:e.align==="right"}),r=ms(e);return{className:n,style:r}},[e,o,t]);import{jsx as Yo,jsxs as Ts}from"react/jsx-runtime";import{createElement as ws}from"react";var _o="vuuTableGroupHeaderCell",ys=(e,o)=>e===o?e:o,Jo=({column:e,className:o,onMoveColumn:t,onRemoveColumn:n,onResize:r,...i})=>{let s=hs(null),{isResizing:l,...a}=fo({column:e,onResize:r,rootRef:s}),[c,p]=xs(e.columns),{className:m,style:d}=me(e,_o,!0),u=c.length>1?{removable:!0,onRemove:n}:void 0,f=bs((C,g)=>{p(v=>{let h=v.slice(),[T]=h.splice(C,1);if(g===-1){let F=h.concat(T);return t==null||t(F),F}else return h.splice(g,0,T),t==null||t(h),h})},[t]);return Cs(()=>{p(C=>ys(C,e.columns))},[e.columns]),Ts("div",{...i,className:vs(m,o,{[`${_o}-pending`]:e.groupConfirmed===!1}),ref:s,role:"columnheader",style:d,children:[Yo(fs,{allowDragDrop:!0,className:`${_o}-inner`,height:24,onMoveItem:f,overflowPosition:"start",children:c.map(C=>ws(cn,{...u,column:C,key:C.key}))}),Yo(ke,{column:e,removable:!0,onRemove:n}),e.resizeable!==!1?Yo(go,{...a}):null]})};import Hs from"clsx";import{useCallback as Ms,useRef as Ls}from"react";import{useContextMenu as Es}from"@vuu-ui/vuu-popups";import Rs from"clsx";import{useCallback as gn,useRef as Ss,useState as Ds}from"react";import{jsx as ks}from"react/jsx-runtime";var Ps=e=>{if(e){let{bottom:o,left:t}=e.getBoundingClientRect();return{x:t,y:o+6}}},fn=({className:e,column:o,...t})=>{let n=Ss(null),[r,i]=Ds(!1),[s]=Es(),l=gn(()=>{i(!1)},[]),a=gn(c=>{i(!0),s(c,"column-menu",{column:o,ContextMenuProps:{onClose:l,position:Ps(n.current)}})},[o,l,s]);return ks("span",{...t,className:Rs("vuuTable-columnMenu",e,{"vuuTable-columnMenu-open":r}),"data-icon":"more-vert",onClick:a,ref:n})};import{jsx as He,jsxs as Os}from"react/jsx-runtime";var Co="vuuTableHeaderCell",Cn=({className:e,column:o,onClick:t,onResize:n,...r})=>{var h;let{HeaderCellContentRenderer:i,HeaderCellLabelRenderer:s}=o,l=Ls(null),{isResizing:a,...c}=fo({column:o,onResize:n,rootRef:l}),p=Ms(T=>{!a&&(t==null||t(T))},[a,t]),{className:m,style:d}=me(o,Co,!0),u=He(fn,{column:o}),f=s?He(s,{className:`${Co}-label`,column:o}):He("div",{className:`${Co}-label`,children:(h=o.label)!=null?h:o.name}),C=i?[He(i,{column:o},"content")]:[],g=He(mn,{column:o}),v=o.align==="right"?[g,f].concat(C).concat(u):[u,f,g].concat(C);return Os("div",{...r,className:Hs(m,e,{[`${Co}-resizing`]:a}),onClick:p,ref:l,role:"columnheader",style:d,children:[...v,o.resizeable!==!1?He(go,{...c}):null]})};import{MeasuredContainer as ou}from"@vuu-ui/vuu-layout";import{ContextMenuProvider as tu}from"@vuu-ui/vuu-popups";import{metadataKeys as nu,useId as ru}from"@vuu-ui/vuu-utils";import{useForkRef as iu}from"@salt-ds/core";import vr from"clsx";import{forwardRef as su,useRef as lu,useState as au}from"react";import{isGroupColumn as yn,isJsonColumn as Qs,isJsonGroup as Gs,metadataKeys as Us,isNotHidden as Ws,RowSelected as Ks}from"@vuu-ui/vuu-utils";import Xs from"clsx";import{memo as Zs,useCallback as wn}from"react";import{isNumericColumn as Fs}from"@vuu-ui/vuu-utils";import{useCallback as vn}from"react";import{jsx as bn}from"react/jsx-runtime";var Ns="vuuTableCell",hn=({column:e,columnMap:o,onClick:t,onDataEdited:n,row:r})=>{let{className:i,style:s}=me(e,Ns),{CellRenderer:l,name:a,valueFormatter:c}=e,p=o[a],m=vn(u=>{if(n){let f=u;return Fs(e)&&typeof u=="string"&&(f=e.serverDataType==="double"?parseFloat(u):parseInt(u)),n==null?void 0:n(r,a,f)}else throw Error("TableCell onDataEdited prop not supplied for an editable cell")},[e,a,n,r]),d=vn(u=>{t==null||t(u,e)},[e,t]);return bn("div",{className:i,onClick:t?d:void 0,role:"cell",style:s,children:l?bn(l,{column:e,columnMap:o,onCommit:m,row:r}):c(r[p])})};import{getGroupValueAndOffset as Is,metadataKeys as As}from"@vuu-ui/vuu-utils";import{useCallback as Bs}from"react";import Vs from"clsx";import{jsx as jo,jsxs as $s}from"react/jsx-runtime";var{IS_LEAF:zs}=As,qo="vuuTableGroupCell",xn=({column:e,onClick:o,row:t})=>{let{columns:n}=e,[r,i]=Is(n,t),{className:s,style:l}=me(e,qo),a=Bs(m=>{o==null||o(m,e)},[e,o]),c=t[zs],p=Array(i).fill(0).map((m,d)=>jo("span",{className:`${qo}-spacer`},d));return $s("div",{className:Vs(s,"vuuTableCell"),role:"cell",style:l,onClick:c?void 0:a,children:[p,c?null:jo("span",{className:`${qo}-toggle`,"data-icon":"triangle-right"}),jo("span",{children:r})]})};import{jsx as et}from"react/jsx-runtime";import{createElement as qs}from"react";var{IDX:_s,IS_EXPANDED:Ys,SELECTED:Js}=Us,ie="vuuTableRow",ot=Zs(({className:e,columnMap:o,columns:t,highlighted:n,row:r,offset:i,onClick:s,onDataEdited:l,onToggleGroup:a,zebraStripes:c=!1,...p})=>{let{[_s]:m,[Ys]:d,[Js]:u}=r,f=wn(O=>{let N=O.shiftKey,k=O.ctrlKey||O.metaKey;s==null||s(r,N,k)},[s,r]),{True:C,First:g,Last:v}=Ks,h=Xs(ie,e,{[`${ie}-even`]:c&&m%2===0,[`${ie}-expanded`]:d,[`${ie}-highlighted`]:n,[`${ie}-selected`]:u&C,[`${ie}-selectedStart`]:u&g,[`${ie}-selectedEnd`]:u&v}),T={transform:`translate3d(0px, ${i}px, 0px)`},F=wn((O,N)=>{(yn(N)||Gs(N,r))&&(O.stopPropagation(),a==null||a(r,N))},[a,r]);return qs("div",{...p,key:`row-${r[0]}`,role:"row",className:h,onClick:f,style:T},et("span",{className:`${ie}-selectionDecorator vuuStickyLeft`}),t.filter(Ws).map(O=>{let N=yn(O),k=Qs(O);return et(N?xn:hn,{column:O,columnMap:o,onClick:N||k?F:void 0,onDataEdited:l,row:r},O.key)}),et("span",{className:`${ie}-selectionDecorator vuuStickyRight`}))});ot.displayName="Row";import{useDragDrop as Aa}from"@vuu-ui/vuu-ui-controls";import{applySort as Ba,buildColumnMap as Va,getIndexFromRowElement as za,isGroupColumn as $a,isJsonGroup as Qa,isValidNumber as ir,metadataKeys as Ga,updateColumn as sr,useLayoutEffectSkipFirst as lr}from"@vuu-ui/vuu-utils";import{useCallback as V,useEffect as Ua,useMemo as dt,useState as ar}from"react";import{isNumericColumn as js}from"@vuu-ui/vuu-utils";var Tn=e=>(o,t)=>{let n=[];return e===void 0||(o==="header"||o==="column-menu")&&(n.push(...el(t,e)),n.push(...nl(t,e)),n.push(...ol(t,e)),n.push(...tl(t)),n.push({action:"column-settings",icon:"cog",label:"Column Settings",options:t}),n.push({action:"table-settings",icon:"cog",label:"DataGrid Settings",options:t})),n};function el(e,{sort:{sortDefs:o}}){let{column:t}=e,n=[];if(t===void 0)return n;let r=o.length>0;return t.sorted==="A"?n.push({label:"Reverse Sort (DSC)",action:"sort-dsc",options:e}):t.sorted==="D"?n.push({label:"Reverse Sort (ASC)",action:"sort-asc",options:e}):typeof t.sorted=="number"?(t.sorted>0?n.push({label:"Reverse Sort (DSC)",action:"sort-add-dsc",options:e}):n.push({label:"Reverse Sort (ASC)",action:"sort-add-asc",options:e}),r&&Math.abs(t.sorted)<o.length&&n.push({label:"Remove from sort",action:"sort-remove",options:e}),n.push({label:"New Sort",children:[{label:"Ascending",action:"sort-asc",options:e},{label:"Descending",action:"sort-dsc",options:e}]})):r?(n.push({label:"Add to sort",children:[{label:"Ascending",action:"sort-add-asc",options:e},{label:"Descending",action:"sort-add-dsc",options:e}]}),n.push({label:"New Sort",children:[{label:"Ascending",action:"sort-asc",options:e},{label:"Descending",action:"sort-dsc",options:e}]})):n.push({label:"Sort",children:[{label:"Ascending",action:"sort-asc",options:e},{label:"Descending",action:"sort-dsc",options:e}]}),n}function ol(e,o){let{column:t}=e;if(t===void 0||o.groupBy.length===0)return[];let{name:n,label:r=n}=t;return[{label:`Aggregate ${r}`,children:[{label:"Count",action:"agg-count",options:e},{label:"Distinct",action:"agg-distinct",options:e}].concat(js(t)?[{label:"Sum",action:"agg-sum",options:e},{label:"Avg",action:"agg-avg",options:e},{label:"High",action:"agg-high",options:e},{label:"Low",action:"agg-low",options:e}]:[])}]}var it=(e,o)=>({label:`Pin ${o}`,action:`column-pin-${o}`,options:e}),tt=e=>it(e,"left"),nt=e=>it(e,"floating"),rt=e=>it(e,"right");function tl(e){let{column:o}=e;if(o===void 0)return[];let{pin:t}=o,n=[{label:"Hide column",action:"column-hide",options:e},{label:"Remove column",action:"column-remove",options:e}];return t===void 0?n.push({label:"Pin column",children:[tt(e),nt(e),rt(e)]}):t==="left"?n.push({label:"Unpin column",action:"column-unpin",options:e},{label:"Pin column",children:[nt(e),rt(e)]}):t==="right"?n.push({label:"Unpin column",action:"column-unpin",options:e},{label:"Pin column",children:[tt(e),nt(e)]}):t==="floating"&&n.push({label:"Unpin column",action:"column-unpin",options:e},{label:"Pin column",children:[tt(e),rt(e)]}),n}function nl(e,{groupBy:o}){let{column:t}=e,n=[];if(t===void 0)return n;let{name:r,label:i=r}=t;return o.length===0?n.push({label:`Group by ${i}`,action:"group",options:e}):n.push({label:`Add ${i} to group by`,action:"group-add",options:e}),n}import{removeColumnFromFilter as rl}from"@vuu-ui/vuu-utils";import{addGroupColumn as En,addSortColumn as Rn,AggregationType as il,setAggregations as Me,setSortColumn as Sn}from"@vuu-ui/vuu-utils";var sl=(e,o)=>{if(e.filterStruct&&o){let[t,n]=rl(o,e.filterStruct);return{filter:n,filterStruct:t}}else return e},{Average:ll,Count:al,Distinct:ul,High:cl,Low:pl,Sum:ml}=il,Dn=({dataSource:e,onPersistentColumnOperation:o})=>n=>{let r=n.options;if(r.column&&e){let{column:i}=r;switch(n.menuId){case"sort-asc":return e.sort=Sn(e.sort,i,"A"),!0;case"sort-dsc":return e.sort=Sn(e.sort,i,"D"),!0;case"sort-add-asc":return e.sort=Rn(e.sort,i,"A"),!0;case"sort-add-dsc":return e.sort=Rn(e.sort,i,"D"),!0;case"group":return e.groupBy=En(e.groupBy,i),!0;case"group-add":return e.groupBy=En(e.groupBy,i),!0;case"column-hide":return o({type:"hideColumns",columns:[i]}),!0;case"column-remove":return e.columns=e.columns.filter(s=>s!==i.name),!0;case"filter-remove-column":return e.filter=sl(e.filter,i),!0;case"remove-filters":return e.filter={filter:""},!0;case"agg-avg":return e.aggregations=Me(e.aggregations,i,ll),!0;case"agg-high":return e.aggregations=Me(e.aggregations,i,cl),!0;case"agg-low":return e.aggregations=Me(e.aggregations,i,pl),!0;case"agg-count":return e.aggregations=Me(e.aggregations,i,al),!0;case"agg-distinct":return e.aggregations=Me(e.aggregations,i,ul),!0;case"agg-sum":return e.aggregations=Me(e.aggregations,i,ml),!0;case"column-pin-floating":return o({type:"pinColumn",column:i,pin:"floating"}),!0;case"column-pin-left":return o({type:"pinColumn",column:i,pin:"left"}),!0;case"column-pin-right":return o({type:"pinColumn",column:i,pin:"right"}),!0;case"column-unpin":return o({type:"pinColumn",column:i,pin:void 0}),!0;case"column-settings":return o({type:"columnSettings",column:i}),!0;case"table-settings":return o({type:"tableSettings"}),!0;default:}}return!1};var vo=(e,o)=>{switch(o.type){case"col-size":return{...e,columns:e.columns.map(t=>t.name===o.column.name?{...t,width:o.width}:t)};case"column-prop":return{...e,columns:e.columns.map(t=>t.name===o.column.name?{...t,[o.property]:o.value}:t)};default:return e}};import{isCharacterKey as Cl}from"@vuu-ui/vuu-utils";import{useCallback as be}from"react";var st=e=>`.vuuTable-col-headers .vuuTableHeaderCell:nth-child(${e})`,lt=(e,o)=>`.vuuTable-body > [aria-rowindex='${e+1}'] > [role='cell']:nth-child(${o+1})`,Pn=(e,[o,t])=>{var i;let n=o===-1?st(t):lt(o,t),r=(i=e.current)==null?void 0:i.querySelector(n);return dl(r)&&r.querySelector("button")||r},dl=e=>e.classList.contains("vuuTableCell-editable"),kn=e=>e.querySelector(".vuuTableInputCell")!==null;function gl(e){if(e){let o=e.ariaRowIndex;if(o!==null)return parseInt(o,10)-1}return-1}var fl=e=>e.closest('[role="row"]'),Hn=e=>gl(fl(e));var Mn=({navigate:e})=>{let o=be(()=>{e()},[e]),t=be(a=>{let c=a.target,p=c.matches("input")?c:c.querySelector("input");p&&(p.focus(),p.select())},[]),n=be(a=>{let p=a.target.querySelector("input");p&&(p.focus(),p.select())},[]),r=be(a=>{let c=a.target;kn(c)&&(Cl(a.key)?t(a):a.key==="Enter"&&n(a))},[t,n]),i=be(a=>{let c=a.target;(c.matches("input")||c.querySelector("input"))&&(t(a),a.stopPropagation())},[t]),s=be(a=>{a.target.removeEventListener("vuu-commit",o,!0)},[o]),l=be(a=>{a.target.addEventListener("vuu-commit",o,!0)},[o]);return{onBlur:s,onDoubleClick:i,onFocus:l,onKeyDown:r}};import{getFullRange as ut,NULL_RANGE as Ln}from"@vuu-ui/vuu-utils";import{useCallback as ho,useEffect as On,useMemo as xl,useRef as xo,useState as yl}from"react";import{isRowSelectedLast as vl,metadataKeys as bl,WindowRange as hl}from"@vuu-ui/vuu-utils";var{SELECTED:at}=bl,bo=class{constructor({from:o,to:t}){this.rowCount=0;this.setRowCount=o=>{o<this.data.length&&(this.data.length=o),this.rowCount=o};this.range=new hl(o,t),this.data=new Array(Math.max(0,t-o)),this.rowCount=0}add(o){let[t]=o;if(this.isWithinRange(t)){let n=t-this.range.from;if(this.data[n]=o,o[at]){let r=this.data[n-1];vl(r)&&(this.data[n-1]=r.slice(),this.data[n-1][at]-=4)}}}getAtIndex(o){return this.range.isWithin(o)&&this.data[o-this.range.from]!=null?this.data[o-this.range.from]:void 0}isWithinRange(o){return this.range.isWithin(o)}setRange({from:o,to:t}){if(o!==this.range.from||t!==this.range.to){let[n,r]=this.range.overlap(o,t),i=new Array(Math.max(0,t-o));for(let s=n;s<r;s++){let l=this.getAtIndex(s);if(l){let a=s-o;i[a]=l}}this.data=i,this.range.from=o,this.range.to=t}}getSelectedRows(){return this.data.filter(o=>o[at]!==0)}};var wl=e=>e.type==="vuu-link-created"||e.type==="vuu-link-removed",Fn=({dataSource:e,onFeatureInvocation:o,onSizeChange:t,onSubscribed:n,range:r=Ln,renderBufferSize:i=0})=>{let[,s]=yl(null),l=xo([]),a=xo(!0),c=xo(!1),p=xo(Ln),m=xl(()=>new bo(ut(r,i)),[]),d=ho(g=>{for(let v of g)m.add(v);l.current=m.data,a.current?s({}):console.log("ignore update as we're not mounted")},[m]),u=ho(g=>{g.type==="subscribed"?n==null||n(g):g.type==="viewport-update"?(typeof g.size=="number"&&(t==null||t(g.size),m.setRowCount(g.size)),g.rows?d(g.rows):typeof g.size=="number"&&(l.current=m.data,c.current=!0)):wl(g)?o==null||o(g):console.log(`useDataSource unexpected message ${g.type}`)},[m,o,t,n,d]),f=ho(()=>m.getSelectedRows(),[m]);On(()=>{var g;return a.current=!0,(g=e.resume)==null||g.call(e),()=>{var v;a.current=!1,(v=e.suspend)==null||v.call(e)}},[e]),On(()=>{var g;e.status==="disabled"?(g=e.enable)==null||g.call(e,u):e==null||e.subscribe({range:ut(r,i)},u)},[e,u,r,i]);let C=ho(g=>{let v=ut(g,i);m.setRange(v),e.range=p.current=v,e.emit("range",g)},[e,m,i]);return{data:l.current,dataRef:l,getSelectedRows:f,range:p.current,setRange:C}};import{useMemo as Tl,useRef as El}from"react";var Nn=e=>{let o=El(e);return Tl(()=>o.current,[])};import{getIndexFromRowElement as Rl}from"@vuu-ui/vuu-utils";import{useControlled as Sl}from"@salt-ds/core";import{useCallback as Z,useEffect as In,useRef as yo}from"react";var Vn=new Set(["Home","End","PageUp","PageDown","ArrowDown","ArrowUp"]),ct=new Set(Vn);ct.add("ArrowLeft");ct.add("ArrowRight");var Dl=(e,o)=>{switch(o){case"cell":return ct.has(e);case"row":return Vn.has(e);default:return!1}},Pl=["Home","End","PageUp","PageDown"],An=e=>Pl.includes(e),kl=[-1,-1];function Bn(e,[o,t],n,r){return e==="ArrowUp"?o>-1?[o-1,t]:[o,t]:e==="ArrowDown"?o===-1?[0,t]:o===r-1?[o,t]:[o+1,t]:e==="ArrowRight"?t<n?[o,t+1]:[o,t]:e==="ArrowLeft"?t>1?[o,t-1]:[o,t]:[o,t]}var zn=({columnCount:e=0,containerRef:o,disableFocus:t=!1,defaultHighlightedIndex:n,disableHighlightOnFocus:r,highlightedIndex:i,navigationStyle:s,requestScroll:l,onHighlight:a,rowCount:c=0,viewportRowCount:p})=>{var P;let m=yo([-1,-1]),d=yo(),u=yo([-1,0]),f=yo(),[C,g]=Sl({controlled:i,default:n,name:"UseKeyboardNavigation"});f.current=C;let v=Z((x,w=!1)=>{a==null||a(x),g(x)},[a,g]),h=x=>x==null?void 0:x.closest("[role='columnHeader'],[role='cell']"),T=x=>{var w;if(x.role==="columnHeader")return[-1,parseInt((w=x.dataset.idx)!=null?w:"-1",10)];{let H=x.closest("[role='row']");if(H){let I=Rl(H),W=Array.from(H.childNodes).indexOf(x);return[I,W]}}return kl},F=Z(x=>{var w;if(o.current){let H=Pn(o,x);H&&(H!==d.current&&((w=d.current)==null||w.removeAttribute("tabindex"),d.current=H,H.setAttribute("tabindex","0")),console.log(`scroll row ${x[0]}`),l==null||l({type:"scroll-row",rowIndex:x[0]}),H.focus({preventScroll:!0}))}},[o,l]),O=Z((x,w,H=!1)=>{let I=[x,w];u.current=I,s==="row"?g(x):F(I),H&&(m.current=I)},[F,s,g]),N=Z((x,[w,H])=>new Promise(I=>{let W=w;switch(x){case"PageDown":W=Math.min(c-1,w+p),l==null||l({type:"scroll-page",direction:"down"});break;case"PageUp":W=Math.max(0,w-p),l==null||l({type:"scroll-page",direction:"up"});break;case"Home":W=0,l==null||l({type:"scroll-end",direction:"home"});break;case"End":W=c-1,l==null||l({type:"scroll-end",direction:"end"});break}setTimeout(()=>{I([W,H])},90)}),[l,c,p]),k=Z(()=>{var x;if(r!==!0&&(x=o.current)!=null&&x.contains(document.activeElement)){let w=h(document.activeElement);w&&(m.current=T(w),s==="row"&&g(m.current[0]))}},[r,o,s,g]),D=Z(async x=>{let[w,H]=An(x)?await N(x,u.current):Bn(x,u.current,e,c),[I,W]=u.current;(w!==I||H!==W)&&O(w,H,!0)},[e,N,c,O]),$=Z(x=>{l==null||l({type:"scroll-row",rowIndex:x})},[l]),B=Z(async x=>{let{current:w}=f,[H]=An(x)?await N(x,[w!=null?w:-1,0]):Bn(x,[w!=null?w:-1,0],e,c);H!==w&&(v(H),$(H))},[e,N,c,$,v]);In(()=>{i!==void 0&&i!==-1&&$(i)},[i,$]);let A=Z(x=>{c>0&&Dl(x.key,s)&&(x.preventDefault(),x.stopPropagation(),s==="row"?B(x.key):D(x.key))},[c,s,B,D]),R=Z(x=>{let w=x.target,H=h(w);if(H){let[I,W]=T(H);O(I,W)}},[O]),M=Z(()=>{v(-1)},[v]),E=Z(x=>{let w=Hn(x.target);w!==-1&&w!==f.current&&v(w)},[v]),U=Z(()=>{D("ArrowDown")},[D]),G=((P=o.current)==null?void 0:P.firstChild)!=null;return In(()=>{if(G&&d.current===void 0&&!t){let{current:x}=o,w=(x==null?void 0:x.querySelector(st(0)))||(x==null?void 0:x.querySelector(lt(0,0)));w&&(w.setAttribute("tabindex","0"),d.current=w)}},[o,t,G]),{highlightedIndexRef:f,navigate:U,onClick:R,onFocus:k,onKeyDown:A,onMouseLeave:s==="row"?M:void 0,onMouseMove:s==="row"?E:void 0}};import{deselectItem as Hl,dispatchMouseEvent as Ml,isRowSelected as Ll,metadataKeys as Ol,selectItem as Fl}from"@vuu-ui/vuu-utils";import{useCallback as pt,useRef as $n}from"react";var{IDX:Nl}=Ol,Il=[],Al=["Enter"," "],Qn=({highlightedIndexRef:e,selectionKeys:o=Al,selectionModel:t,onSelect:n,onSelectionChange:r})=>{let i=$n(-1),s=$n(Il),l=pt(p=>o.includes(p.key),[o]),a=pt((p,m,d)=>{let{[Nl]:u}=p,{current:f}=i,{current:C}=s,v=(Ll(p)?Hl:Fl)(t,C,u,m,d,f);s.current=v,i.current=u,n==null||n(p),r==null||r(v)},[n,r,t]);return{onKeyDown:pt(p=>{if(l(p)){let{current:m}=e;if(m!==void 0&&m!==-1){let d=p.target.querySelector(`[aria-rowindex="${m}"]`);d&&Ml(d,"click")}}},[e,l]),onRowClick:a}};import{useContextMenu as Bl}from"@vuu-ui/vuu-popups";import{buildColumnMap as Vl,getIndexFromRowElement as zl}from"@vuu-ui/vuu-utils";import{useCallback as $l}from"react";var Ql=[],Gn=({columns:e,data:o,dataSource:t,getSelectedRows:n})=>{let[r]=Bl();return $l(s=>{let l=s.target,a=l==null?void 0:l.closest("div[role='cell']"),c=l==null?void 0:l.closest("div[role='row']");if(a&&c){let{selectedRowsCount:p}=t,m=Vl(e),d=zl(c),u=Array.from(c.childNodes).indexOf(a),f=o.find(([g])=>g===d),C=e[u];r(s,"grid",{columnMap:m,columnName:C,row:f,selectedRows:p===0?Ql:n(),viewport:t.viewport})}},[e,o,t,n,r])};import{applyFilterToColumns as Gl,applyGroupByToColumns as Ul,applySortToColumns as Wl,getCellRenderer as Kl,getColumnHeaderContentRenderer as Xl,getColumnHeaderLabelRenderer as Zl,getColumnLabel as _l,getTableHeadings as Yl,getValueFormatter as Jl,hasValidationRules as ql,isFilteredColumn as jl,isGroupColumn as ea,isPinned as oa,logger as ta,metadataKeys as na,replaceColumn as he,sortPinnedColumns as Un,stripFilterFromColumns as ra,subscribedOnly as ia}from"@vuu-ui/vuu-utils";import{buildValidationChecker as sa}from"@vuu-ui/vuu-ui-controls";import{useReducer as la}from"react";var{info:mt}=ta("useTableModel"),aa=100,ua=na.count,ca=({serverDataType:e})=>e===void 0,Wn=(e,o)=>{let t=o==null?void 0:o.columns.find(({name:n})=>n===e.name);return t?t.serverDataType:e.serverDataType},pa=["int","long","double"],Kn=e=>e===void 0?void 0:pa.includes(e)?"right":"left",Xn=e=>e.type==="columnSettings",Zn=e=>e.type==="tableSettings",ma=(e,o)=>{switch(mt==null||mt(`TableModelReducer ${o.type}`),o.type){case"init":return Yn(o);case"moveColumn":return ga(e,o);case"resizeColumn":return va(e,o);case"setTableSchema":return ba(e,o);case"hideColumns":return fa(e,o);case"showColumns":return Ca(e,o);case"pinColumn":return ha(e,o);case"updateColumnProp":return Le(e,o);case"tableConfig":return qn(e,o);default:return console.log(`unhandled action ${o.type}`),e}},_n=(e,o)=>{let[t,n]=la(ma,{tableConfig:e,dataSource:o},Yn),{columns:r,headings:i,tableConfig:s,...l}=t;return{columns:r,dispatchColumnAction:n,headings:i,tableAttributes:l,tableConfig:s}};function Yn({dataSource:e,tableConfig:o}){let{columns:t,...n}=o,{config:r,tableSchema:i}=e,s=t.filter(ia(r==null?void 0:r.columns)).map(Jn(n,i)),l=s.some(oa)?Un(s):s,a={columns:l,headings:Yl(l),tableConfig:o,...n};if(r){let{columns:c,...p}=r;a=qn(a,{type:"tableConfig",...p})}return a}var da=(e,o)=>o==="uppercase"?e.toUpperCase():o==="capitalize"?e[0].toUpperCase()+e.slice(1).toLowerCase():e,Jn=(e,o)=>(t,n)=>{let{columnDefaultWidth:r=aa,columnFormatHeader:i}=e,s=Wn(t,o),{align:l=Kn(s),key:a,name:c,label:p=_l(t),width:m=r,...d}=t,u={...d,align:l,CellRenderer:Kl(t),HeaderCellContentRenderer:Xl(t),HeaderCellLabelRenderer:Zl(t),clientSideEditValidationCheck:ql(t.type)?sa(t.type.renderer.rules):void 0,label:da(p,i),key:a!=null?a:n+ua,name:c,originalIdx:n,serverDataType:s,valueFormatter:Jl(t,s),width:m};return ea(u)&&(u.columns=u.columns.map(f=>Jn(e)(f,f.key))),u};function ga(e,{column:o,moveBy:t}){let{columns:n}=e;if(typeof t=="number"){let r=n.indexOf(o),i=n.slice(),[s]=i.splice(r,1);return i.splice(r+t,0,s),{...e,columns:i}}return e}function fa(e,{columns:o}){return o.some(t=>t.hidden!==!0)?o.reduce((t,n)=>n.hidden!==!0?Le(t,{type:"updateColumnProp",column:n,hidden:!0}):t,e):e}function Ca(e,{columns:o}){return o.some(t=>t.hidden)?o.reduce((t,n)=>n.hidden?Le(t,{type:"updateColumnProp",column:n,hidden:!1}):t,e):e}function va(e,{column:o,phase:t,width:n}){let r="updateColumnProp",i=t!=="end";switch(t){case"begin":return Le(e,{type:r,column:o,resizing:i});case"end":return Le(e,{type:r,column:o,resizing:i,width:n});case"resize":return Le(e,{type:r,column:o,width:n});default:throw Error(`useTableModel.resizeColumn, invalid resizePhase ${t}`)}}function ba(e,{tableSchema:o}){let{columns:t}=e;if(t.some(ca)){let n=t.map(r=>{var s;let i=Wn(r,o);return{...r,align:(s=r.align)!=null?s:Kn(i),serverDataType:i}});return{...e,columns:n}}else return e}function ha(e,o){let{columns:t}=e,{column:n,pin:r}=o,i=t.find(s=>s.name===n.name);return i?(t=he(t,{...i,pin:r}),t=Un(t),{...e,columns:t}):e}function Le(e,o){let{columns:t,tableConfig:n}=e,{align:r,column:i,hidden:s,label:l,resizing:a,width:c}=o,p=t.find(m=>m.name===i.name);if(p&&((r==="left"||r==="right")&&(t=he(t,{...p,align:r})),typeof l=="string"&&(t=he(t,{...p,label:l})),typeof a=="boolean"&&(t=he(t,{...p,resizing:a})),typeof s=="boolean"&&(t=he(t,{...p,hidden:s})),typeof c=="number")){t=he(t,{...p,width:c});let m=n.columns.find(d=>d.name===i.name);m&&(n={...n,columns:he(n.columns,{...m,width:c})})}return{...e,columns:t,tableConfig:n}}function qn(e,{confirmed:o,filter:t,groupBy:n,sort:r}){let i=n!==void 0,s=typeof(t==null?void 0:t.filter)=="string",l=r&&r.sortDefs.length>0,a=e;return i&&(a={...e,columns:Ul(a.columns,n,o)}),l&&(a={...e,columns:Wl(a.columns,r)}),s?a={...e,columns:Gl(a.columns,t)}:a.columns.some(jl)&&(a={...e,columns:ra(a.columns)}),a}import{getRowElementAtIndex as xa}from"@vuu-ui/vuu-utils";import{useCallback as se,useEffect as ya,useImperativeHandle as wa,useMemo as Ta,useRef as Oe}from"react";var jn=e=>{let{scrollLeft:o,scrollTop:t}=e,{clientHeight:n,clientWidth:r,scrollHeight:i,scrollWidth:s}=e,l=o/(s-r),a=t/(i-n);return[l,a]},Ea={scrollToIndex:()=>{},scrollToKey:()=>{}},Ra=[void 0,void 0],Sa=(e,o,t=e.closest(".vuuTable-contentContainer"))=>{if(t){let n=t==null?void 0:t.getBoundingClientRect(),r=n.top+o,i=e.getBoundingClientRect();if(i)return i.bottom>n.bottom?["down",i.bottom-n.bottom]:i.top<r?["up",i.top-r]:Ra;throw Error("Whats going on, row not found")}else throw Error("Whats going on, scrollbar container not found")},er=({onAttach:e,onDetach:o})=>{let t=Oe(null);return se(r=>{if(r)t.current=r,e==null||e(r);else if(t.current){let{current:i}=t;t.current=r,o==null||o(i)}},[e,o])},or=({getRowAtPosition:e,onHorizontalScroll:o,onVerticalScroll:t,scrollingApiRef:n,setRange:r,viewportMeasurements:i})=>{let s=Oe(0),l=Oe(!1),a=Oe({scrollTop:0,scrollLeft:0}),c=Oe(null),p=Oe(null),{appliedPageSize:m,isVirtualScroll:d,maxScrollContainerScrollHorizontal:u,maxScrollContainerScrollVertical:f,rowCount:C,totalHeaderHeight:g}=i,v=se((R,M)=>{t==null||t(R,M);let E=e(R);E!==s.current&&(s.current=E,r({from:E,to:E+C+1}))},[e,t,r,C]),h=se(()=>{let{current:R}=p,{current:M}=c,{current:E}=l;if(E)l.current=!1;else if(R&&M){let[U,G]=jn(M),P=Math.round(U*u),x=G*f;R.scrollTo({left:P,top:x,behavior:"auto"})}},[u,f]),T=se(()=>{let{current:R}=p,{current:M}=c,{current:E}=a;if(R&&M){let{scrollLeft:U,scrollTop:G}=R,[P,x]=jn(R);l.current=!0,M.scrollLeft=Math.round(P*u),M.scrollTop=x*f,E.scrollTop!==G&&(E.scrollTop=G,v(G,x)),E.scrollLeft!==U&&(E.scrollLeft=U,o==null||o(U))}},[v,u,f,o]),F=se(R=>{c.current=R,R.addEventListener("scroll",h,{passive:!0})},[h]),O=se(R=>{c.current=null,R.removeEventListener("scroll",h)},[h]),N=se(R=>{p.current=R,R.addEventListener("scroll",T,{passive:!0})},[T]),k=se(R=>{p.current=null,R.removeEventListener("scroll",T)},[T]),D=er({onAttach:N,onDetach:k}),$=er({onAttach:F,onDetach:O}),B=se(R=>{let{current:M}=p;if(M){let{scrollLeft:E,scrollTop:U}=M;if(l.current=!1,R.type==="scroll-row"){let G=xa(M,R.rowIndex);if(G!==null){let[P,x]=Sa(G,g);if(P&&x)if(d)console.log(`virtual scroll row required ${P} ${x}
2
+ first Row ${s.current}`);else{let w=E,H=U;P==="up"||P==="down"?H=Math.min(Math.max(0,U+x),f):w=Math.min(Math.max(0,E+x),u),M.scrollTo({top:H,left:w,behavior:"smooth"})}}}else if(R.type==="scroll-page"){let{direction:G}=R;if(d)console.log("need a virtual page scroll");else{let P=G==="down"?m:-m,x=Math.min(Math.max(0,U+P),f);M.scrollTo({top:x,left:E,behavior:"auto"})}}else if(R.type==="scroll-end"){let{direction:G}=R,P=G==="end"?f:0;M.scrollTo({top:P,left:M.scrollLeft,behavior:"auto"})}}},[m,d,u,f,r,g,C]),A=Ta(()=>({scrollToIndex:R=>{if(c.current){let M=(R-30)*20;c.current.scrollTop=M}},scrollToKey:R=>{console.log(`scrollToKey ${R}`)}}),[]);return wa(n,()=>c.current?A:Ea,[A]),ya(()=>{let{current:R}=s,M={from:R,to:R+C+1};r(M)},[r,C]),{scrollbarContainerRef:$,contentContainerRef:D,requestScroll:B}};import{useCallback as Da,useMemo as wo,useRef as tr}from"react";import{actualRowPositioning as Pa,virtualRowPositioning as ka}from"@vuu-ui/vuu-utils";var Ha=1e5,Ma={appliedPageSize:0,contentHeight:0,contentWidth:0,getRowAtPosition:()=>-1,getRowOffset:()=>-1,horizontalScrollbarHeight:0,isVirtualScroll:!1,maxScrollContainerScrollHorizontal:0,maxScrollContainerScrollVertical:0,pinnedWidthLeft:0,pinnedWidthRight:0,rowCount:0,setPctScrollTop:()=>{},totalHeaderHeight:0,verticalScrollbarWidth:0,viewportBodyHeight:0},La=e=>{let o=0,t=0,n=0;for(let r of e){let{hidden:i,pin:s,width:l}=r,a=i?0:l;s==="left"?o+=a:s==="right"?t+=a:n+=a}return{pinnedWidthLeft:o+4,pinnedWidthRight:t+4,unpinnedWidth:n}},nr=({columns:e,headerHeight:o,headings:t,rowCount:n,rowHeight:r,size:i})=>{let s=tr(0),l=r*Math.min(n,Ha),a=n*r,c=a-l,{pinnedWidthLeft:p,pinnedWidthRight:m,unpinnedWidth:d}=wo(()=>La(e),[e]),u=tr(o);wo(()=>{u.current=o*(1+t.length)},[o,t.length]);let[f,C,g]=wo(()=>c?ka(r,c,s):Pa(r),[c,r]),v=Da(h=>{s.current=h},[]);return wo(()=>{var h;if(i){let{current:T}=u,F=15,O=p+d+m,N=O>i.width?F:0,k=l-(((h=i==null?void 0:i.height)!=null?h:0)-N)+T,D=O-i.width+p,$=(i.height-o)/r,B=Number.isInteger($)?$:Math.ceil($),A=i.height-T,R=l>A?F:0;return{appliedPageSize:B*r*(l/a),contentHeight:l,contentWidth:O,getRowAtPosition:C,getRowOffset:f,isVirtualScroll:g,horizontalScrollbarHeight:N,maxScrollContainerScrollHorizontal:D,maxScrollContainerScrollVertical:k,pinnedWidthLeft:p,pinnedWidthRight:m,rowCount:B,setPctScrollTop:v,totalHeaderHeight:T,verticalScrollbarWidth:R,viewportBodyHeight:A}}else return Ma},[C,f,o,g,p,d,m,l,r,v,i,a])};import{useLayoutProviderDispatch as Oa}from"@vuu-ui/vuu-layout";import{getCalculatedColumnType as Fa}from"@vuu-ui/vuu-utils";import{useCallback as xe,useRef as Na,useState as Ia}from"react";var rr=({availableColumns:e,onAvailableColumnsChange:o,onConfigChange:t,onCreateCalculatedColumn:n,onDataSourceConfigChange:r,tableConfig:i})=>{let s=Oa(),l=Na(),[a,c]=Ia(e),p=xe((g,v,h)=>{s({type:"set-props",path:"#context-panel",props:{expanded:!0,content:{type:g,props:h},title:v}})},[s]),m=xe(()=>{requestAnimationFrame(()=>{var g;(g=l.current)==null||g.call(l)})},[]),d=xe(g=>{let v=a.concat({name:g.name,serverDataType:Fa(g)});c(v),o==null||o(v),requestAnimationFrame(()=>{var h;(h=l.current)==null||h.call(l)}),n(g)},[a,o,n]),u=xe(g=>{p("ColumnSettings","Column Settings",{column:g.column,onCancelCreateColumn:m,onConfigChange:t,onCreateCalculatedColumn:d,tableConfig:i,vuuTable:g.vuuTable})},[m,d,t,p,i]),f=xe(()=>{u({column:{name:"::",serverDataType:"string"},type:"columnSettings",vuuTable:{module:"SIMUL",table:"instruments"}})},[u]),C=xe(g=>{let v=i.columns.find(h=>h.name===g);v&&u({type:"columnSettings",column:v,vuuTable:{module:"SIMUL",table:"instruments"}})},[u,i.columns]);return l.current=xe(()=>{p("TableSettings","DataGrid Settings",{availableColumns:a!=null?a:i.columns.map(({name:g,serverDataType:v})=>({name:g,serverDataType:v})),onAddCalculatedColumn:f,onConfigChange:t,onDataSourceConfigChange:r,onNavigateToColumn:C,tableConfig:i})},[a,f,C,t,r,p,i]),{showColumnSettingsPanel:u,showTableSettingsPanel:l.current}};var To=e=>e,{KEY:Wa,IS_EXPANDED:ur,IS_LEAF:cr}=Ga,Ka={draggable:void 0,onMouseDown:void 0},Xa=()=>Ka,Za=(e,o)=>({...e,columns:e.columns.concat(o)}),pr=({allowDragDrop:e=!1,availableColumns:o,config:t,containerRef:n,dataSource:r,disableFocus:i,headerHeight:s=25,highlightedIndex:l,id:a,navigationStyle:c="cell",onAvailableColumnsChange:p,onConfigChange:m,onDragStart:d,onDrop:u,onFeatureInvocation:f,onHighlight:C,onRowClick:g,onSelect:v,onSelectionChange:h,renderBufferSize:T=0,rowHeight:F=20,scrollingApiRef:O,selectionModel:N,size:k})=>{let[D,$]=ar(r.size);if(r===void 0)throw Error("no data source provided to Vuu Table");let B=e?Aa:Xa,A=dt(()=>Tn(r),[r]),R=V(b=>{$(b)},[]),{columns:M,dispatchColumnAction:E,headings:U,tableAttributes:G,tableConfig:P}=_n(t,r);lr(()=>{E({type:"init",dataSource:r,tableConfig:P})},[P,r,E]);let x=V(b=>{E({type:"init",tableConfig:b,dataSource:r}),m==null||m(To(b))},[r,E,m]),[w,H]=ar(),[I,W]=dt(()=>{let b=(L,z)=>{let X=sr(M,L,{width:z});H(X)};return[w!=null?w:M,b]},[M,w]),zo=dt(()=>Va(r.columns),[r.columns]),{getRowAtPosition:$o,getRowOffset:Qo,setPctScrollTop:uo,...Ce}=nr({columns:I,headerHeight:s,headings:U,rowCount:D,rowHeight:F,size:k}),co=Nn({from:0,to:Ce.rowCount===0?0:Ce.rowCount+1}),De=V(({tableSchema:b})=>{b?E({type:"setTableSchema",tableSchema:b}):console.log("subscription message with no schema")},[E]),{data:po,dataRef:j,getSelectedRows:Go,range:Uo,setRange:mo}=Fn({dataSource:r,onFeatureInvocation:f,renderBufferSize:T,onSizeChange:R,onSubscribed:De,range:co}),ve=V(b=>{E({type:"init",tableConfig:b,dataSource:r}),m==null||m(To(b))},[r,E,m]),yi=V(b=>{r.config={...r.config,...b}},[r]);Ua(()=>{r.on("config",(b,L)=>{E({type:"tableConfig",...b,confirmed:L})})},[r,E]);let wi=V(b=>{r.columns=r.columns.concat(b.name),x(Za(P,b))},[r,P,x]),_t=V(b=>{let{columns:L}=b,z=L.map(Y=>Y.name),X={...P,columns:P.columns.map(Y=>z.includes(Y.name)?{...Y,hidden:!0}:Y)};x(X)},[P,x]),Yt=V(b=>{x({...P,columns:sr(P.columns,{...b.column,pin:b.pin})})},[P,x]),{showColumnSettingsPanel:Jt,showTableSettingsPanel:qt}=rr({availableColumns:o!=null?o:P.columns.map(({name:b,serverDataType:L="string"})=>({name:b,serverDataType:L})),onAvailableColumnsChange:p,onConfigChange:ve,onCreateCalculatedColumn:wi,onDataSourceConfigChange:yi,tableConfig:P}),Ti=V(b=>{if(Xn(b))Jt(b);else if(Zn(b))qt();else switch(b.type){case"hideColumns":return _t(b);case"pinColumn":return Yt(b);default:E(b)}},[E,_t,Yt,Jt,qt]),Ei=Dn({dataSource:r,onPersistentColumnOperation:Ti}),Ri=V((b,L=!1,z)=>{r&&(r.sort=Ba(r.sort,b,L,z))},[r]),Si=V((b,L,z)=>{let X=I.find(Y=>Y.name===L);if(X)b==="resize"?ir(z)&&W(L,z):b==="end"?ir(z)&&(E({type:"resizeColumn",phase:b,column:X,width:z}),H(void 0),m==null||m(To(vo(P,{type:"col-size",column:X,width:z})))):(H(void 0),E({type:"resizeColumn",phase:b,column:X,width:z}));else throw Error(`useDataTable.handleColumnResize, column ${L} not found`)},[I,P,E,m,W]),Di=V((b,L)=>{var Y,ln;let z=Qa(L,b),X=b[Wa];if(b[ur]){if(r.closeTreeNode(X,!0),z){let Ye=I.indexOf(L),Je=(Y=r.getRowsAtDepth)==null?void 0:Y.call(r,Ye+1);Je&&!Je.some(Pe=>Pe[ur]||Pe[cr])&&E({type:"hideColumns",columns:I.slice(Ye+2)})}}else if(r.openTreeNode(X),z){let Ye=(ln=r.getChildRows)==null?void 0:ln.call(r,X),Je=I.indexOf(L)+1,Pe=[I[Je]];Ye&&Ye.some(Wo=>Wo[cr])&&Pe.push(I[Je+1]),Pe.some(Wo=>Wo.hidden)&&E({type:"showColumns",columns:Pe})}},[I,r,E]),Pi=V((b,L)=>{uo(L)},[uo]),{requestScroll:ki,...Hi}=or({getRowAtPosition:$o,rowHeight:F,scrollingApiRef:O,setRange:mo,onVerticalScroll:Pi,viewportMeasurements:Ce}),{highlightedIndexRef:jt,navigate:Mi,onFocus:en,onKeyDown:on,...Li}=zn({columnCount:I.filter(b=>b.hidden!==!0).length,containerRef:n,disableFocus:i,highlightedIndex:l,navigationStyle:c,requestScroll:ki,rowCount:r==null?void 0:r.size,onHighlight:C,viewportRange:Uo,viewportRowCount:Ce.rowCount}),{onBlur:Oi,onDoubleClick:Fi,onKeyDown:tn,onFocus:nn}=Mn({navigate:Mi}),Ni=V(b=>{en(),b.defaultPrevented||nn(b)},[nn,en]),Ii=Gn({columns:I,data:po,dataSource:r,getSelectedRows:Go}),Ai=V(b=>{r.groupBy=b.map(L=>L.name)},[r]),Bi=V(b=>{$a(b)?r.groupBy=[]:r&&r.groupBy.includes(b.name)&&(r.groupBy=r.groupBy.filter(L=>L!==b.name))},[r]),Vi=V(b=>{r.select(b),h==null||h(b)},[r,h]),{onKeyDown:rn,onRowClick:sn}=Qn({highlightedIndexRef:jt,onSelect:v,onSelectionChange:Vi,selectionModel:N}),zi=V(b=>{on(b),b.defaultPrevented||tn(b),b.defaultPrevented||rn(b)},[on,tn,rn]),$i=V((b,L,z)=>{sn(b,L,z),g==null||g(b)},[g,sn]);lr(()=>{E({type:"init",tableConfig:t,dataSource:r})},[t,r,E]);let Qi=V(b=>{console.log("useTable onMoveColumn",{columns:b});let L={...P,columns:b};E({type:"init",tableConfig:L,dataSource:r}),m==null||m(To(L))},[r,E,m,P]),Gi=V(b=>{u==null||u(b)},[u]),Ui=V(async(b,L,z)=>r.applyEdit(b,L,z),[r]),Wi=V(b=>{let{initialDragElement:L}=b,z=za(L),X=j.current.find(Y=>Y[0]===z);X&&b.setPayload(X),d==null||d(b)},[j,d]),{onMouseDown:Ki,draggable:Xi}=B({allowDragDrop:e,containerRef:n,draggableClassName:"vuuTable",id:a,onDragStart:Wi,onDrop:Gi,orientation:"vertical",itemQuery:".vuuTableRow"});return{...Li,"aria-rowcount":r.size,draggableRow:Xi,onBlur:Oi,onDoubleClick:Fi,onFocus:Ni,onKeyDown:zi,onMouseDown:Ki,columnMap:zo,columns:I,data:po,getRowOffset:Qo,handleContextMenuAction:Ei,headings:U,highlightedIndex:jt.current,menuBuilder:A,onContextMenu:Ii,onDataEdited:Ui,onMoveColumn:Qi,onMoveGroupColumn:Ai,onRemoveGroupColumn:Bi,onRowClick:$i,onSortColumn:Ri,onResizeColumn:Si,onToggleGroup:Di,scrollProps:Hi,tableAttributes:G,tableConfig:P,viewportMeasurements:Ce}};import{isGroupColumn as qa,isNotHidden as ja}from"@vuu-ui/vuu-utils";import eu from"clsx";import{useDragDrop as _a}from"@vuu-ui/vuu-ui-controls";import{moveColumnTo as gt,visibleColumnAtIndex as Ya}from"@vuu-ui/vuu-utils";import{useCallback as mr,useRef as Ja}from"react";var dr=({columns:e,onMoveColumn:o,onSortColumn:t,tableConfig:n})=>{let r=Ja(null),i=mr((p,m)=>{let d=e[p],u=gt(e,d,m),f=({name:h})=>T=>T.name===h,C=u.findIndex(f(d)),g=u[C+1],v=g?n.columns.findIndex(f(g)):-1;m>p&&v!==-1?o(gt(n.columns,d,v-1)):o(gt(n.columns,d,v))},[e,o,n.columns]),s=mr(p=>{var g;let d=p.target.closest(".vuuTableHeaderCell"),u=parseInt((g=d==null?void 0:d.dataset.index)!=null?g:"-1"),f=Ya(e,u),C=p.shiftKey;f&&t(f,C)},[e,t]),{onMouseDown:l,draggable:a,...c}=_a({allowDragDrop:!0,containerRef:r,draggableClassName:"vuuTable",onDrop:i,orientation:"horizontal",itemQuery:".vuuTableHeaderCell"});return{containerRef:r,draggableColumn:a,draggedColumnIndex:c.draggedItemIndex,onClick:s,onMouseDown:l}};import{jsx as Eo,jsxs as gr}from"react/jsx-runtime";var fr=({classBase:e="vuuTable",columns:o,headings:t,onMoveColumn:n,onMoveGroupColumn:r,onRemoveGroupColumn:i,onResizeColumn:s,onSortColumn:l,tableConfig:a,tableId:c})=>{let{containerRef:p,draggableColumn:m,draggedColumnIndex:d,onClick:u,onMouseDown:f}=dr({columns:o,onMoveColumn:n,onSortColumn:l,tableConfig:a});return gr("div",{className:`${e}-col-headings`,ref:p,children:[t.map((C,g)=>Eo("div",{className:"vuuTable-heading",children:C.map(({label:v,width:h},T)=>Eo("div",{className:"vuuTable-headingCell",style:{width:h},children:v},T))},g)),gr("div",{className:`${e}-col-headers`,role:"row",children:[o.filter(ja).map((C,g)=>qa(C)?Eo(Jo,{column:C,"data-index":g,onMoveColumn:r,onRemoveColumn:i,onResize:s},C.name):Eo(Cn,{className:eu({"vuuDraggable-dragAway":g===d}),column:C,"data-index":g,id:`${c}-col-${g}`,onClick:u,onMouseDown:f,onResize:s},C.name)),m]})]})};import{jsx as de,jsxs as Cr}from"react/jsx-runtime";var le="vuuTable",{IDX:uu,RENDER_IDX:cu}=nu,pu=({Row:e=ot,allowDragDrop:o,availableColumns:t,config:n,containerRef:r,dataSource:i,disableFocus:s=!1,highlightedIndex:l,id:a,navigationStyle:c="cell",onAvailableColumnsChange:p,onConfigChange:m,onDragStart:d,onDrop:u,onFeatureInvocation:f,onHighlight:C,onRowClick:g,onSelect:v,onSelectionChange:h,renderBufferSize:T=5,rowHeight:F=20,scrollingApiRef:O,selectionModel:N="extended",showColumnHeaders:k=!0,headerHeight:D=k?25:0,size:$})=>{let B=ru(a),{columnMap:A,columns:R,data:M,draggableRow:E,getRowOffset:U,handleContextMenuAction:G,headings:P,highlightedIndex:x,onDataEdited:w,onMoveColumn:H,onMoveGroupColumn:I,onRemoveGroupColumn:W,onResizeColumn:zo,onRowClick:$o,onSortColumn:Qo,onToggleGroup:uo,menuBuilder:Ce,scrollProps:co,tableAttributes:De,tableConfig:po,viewportMeasurements:j,...Go}=pr({allowDragDrop:o,availableColumns:t,config:n,containerRef:r,dataSource:i,disableFocus:s,headerHeight:D,highlightedIndex:l,id:B,navigationStyle:c,onAvailableColumnsChange:p,onConfigChange:m,onDragStart:d,onDrop:u,onFeatureInvocation:f,onHighlight:C,onRowClick:g,onSelect:v,onSelectionChange:h,renderBufferSize:T,rowHeight:F,scrollingApiRef:O,selectionModel:N,size:$}),Uo=vr(`${le}-contentContainer`,{[`${le}-colLines`]:De.columnSeparators,[`${le}-rowLines`]:De.rowSeparators,[`${le}-zebra`]:De.zebraStripes}),mo={"--content-height":`${j.contentHeight}px`,"--content-width":`${j.contentWidth}px`,"--horizontal-scrollbar-height":`${j.horizontalScrollbarHeight}px`,"--pinned-width-left":`${j.pinnedWidthLeft}px`,"--pinned-width-right":`${j.pinnedWidthRight}px`,"--header-height":`${D}px`,"--row-height":`${F}px`,"--total-header-height":`${j.totalHeaderHeight}px`,"--vertical-scrollbar-width":`${j.verticalScrollbarWidth}px`,"--viewport-body-height":`${j.viewportBodyHeight}px`};return Cr(tu,{menuActionHandler:G,menuBuilder:Ce,children:[de("div",{className:`${le}-scrollbarContainer`,ref:co.scrollbarContainerRef,style:mo,children:de("div",{className:`${le}-scrollbarContent`})}),de("div",{className:Uo,ref:co.contentContainerRef,style:mo,children:Cr("div",{...Go,className:`${le}-table`,role:"table",tabIndex:s?void 0:-1,children:[k?de(fr,{columns:R,headings:P,onMoveColumn:H,onMoveGroupColumn:I,onRemoveGroupColumn:W,onResizeColumn:zo,onSortColumn:Qo,tableConfig:po,tableId:B}):null,de("div",{className:`${le}-body`,children:M.map(ve=>de(e,{"aria-rowindex":ve[0]+1,columnMap:A,columns:R,highlighted:x===ve[uu],onClick:$o,onDataEdited:w,row:ve,offset:U(ve),onToggleGroup:uo,zebraStripes:De.zebraStripes},ve[cu]))})]})}),E]})},Xv=su(function({Row:o,allowDragDrop:t,availableColumns:n,className:r,config:i,dataSource:s,disableFocus:l,highlightedIndex:a,id:c,navigationStyle:p,onAvailableColumnsChange:m,onConfigChange:d,onDragStart:u,onDrop:f,onFeatureInvocation:C,onHighlight:g,onRowClick:v,onSelect:h,onSelectionChange:T,renderBufferSize:F,rowHeight:O,scrollingApiRef:N,selectionModel:k,showColumnHeaders:D,headerHeight:$,style:B,...A},R){let M=lu(null),[E,U]=au();if(i===void 0)throw Error("vuu Table requires config prop. Minimum config is list of Column Descriptors");if(s===void 0)throw Error("vuu Table requires dataSource prop");return de(ou,{...A,className:vr(le,r),id:c,onResize:U,ref:iu(M,R),children:E?de(pu,{Row:o,allowDragDrop:t,availableColumns:n,config:i,containerRef:M,dataSource:s,disableFocus:l,headerHeight:$,highlightedIndex:a,id:c,navigationStyle:p,onAvailableColumnsChange:m,onConfigChange:d,onDragStart:u,onDrop:f,onFeatureInvocation:C,onHighlight:g,onRowClick:v,onSelect:h,onSelectionChange:T,renderBufferSize:F,rowHeight:O,scrollingApiRef:N,selectionModel:k,showColumnHeaders:D,size:E}):null})});import{memo as mu,useCallback as du}from"react";import{CheckboxIcon as gu,WarnCommit as fu}from"@vuu-ui/vuu-ui-controls";import{Checkbox as Cu}from"@salt-ds/core";var oe=(e,o)=>e.column===o.column&&e.column.valueFormatter(e.row[e.columnMap[e.column.name]])===o.column.valueFormatter(o.row[o.columnMap[o.column.name]]);import{dispatchCustomEvent as vu,registerComponent as bu}from"@vuu-ui/vuu-utils";import{jsx as br}from"react/jsx-runtime";var hr=mu(({column:e,columnMap:o,onCommit:t=fu,row:n})=>{let r=o[e.name],i=n[r],s=du(l=>async a=>{let c=await t(l);return c===!0&&vu(a.target,"vuu-commit"),c},[t]);return e.editable?br(Cu,{checked:i,onClick:s(!i)}):br(gu,{checked:i,disabled:!0})},oe);hr.displayName="CheckboxCell";bu("checkbox-cell",hr,"cell-renderer",{serverDataType:"boolean"});import{registerComponent as hu}from"@vuu-ui/vuu-utils";import{Input as xu}from"@salt-ds/core";import{useEditableText as yu}from"@vuu-ui/vuu-ui-controls";import wu from"clsx";import{jsx as ft}from"react/jsx-runtime";var Ro="vuuTableInputCell",Tu=()=>(console.warn("onCommit handler has not been provided to InputCell cell renderer"),Promise.resolve(!0)),Eu=({column:e,columnMap:o,onCommit:t=Tu,row:n})=>{let r=o[e.name],{align:i="left",clientSideEditValidationCheck:s}=e,{warningMessage:l,...a}=yu({initialValue:n[r],onCommit:t,clientSideEditValidationCheck:s}),c=l&&i==="left"?ft("span",{className:`${Ro}-icon`,"data-icon":"error"}):void 0,p=l&&i==="right"?ft("span",{className:`${Ro}-icon`,"data-icon":"error"}):void 0;return ft(xu,{...a,className:wu(Ro,{[`${Ro}-error`]:l!==void 0}),endAdornment:c,startAdornment:p})};hu("input-cell",Eu,"cell-renderer",{});import{WarnCommit as Ru}from"@vuu-ui/vuu-ui-controls";import{dispatchCustomEvent as Su,isTypeDescriptor as Du,isValueListRenderer as Pu,registerComponent as ku}from"@vuu-ui/vuu-utils";import Hu from"clsx";import{memo as Mu,useCallback as Lu}from"react";import{CycleStateButton as Ou}from"@vuu-ui/vuu-ui-controls";import{jsx as Iu}from"react/jsx-runtime";var xr="vuuTableToggleCell",Fu=({name:e,type:o})=>{if(Du(o)&&Pu(o.renderer))return o.renderer.values;throw Error(`useLookupValues column ${e} has not been configured with a values list`)},Nu=Mu(function({column:o,columnMap:t,onCommit:n=Ru,row:r}){let i=Fu(o),s=t[o.name],l=r[s],a=Lu((c,p)=>n(p).then(m=>(m===!0&&Su(c.target,"vuu-commit"),m)),[n]);return Iu(Ou,{className:Hu(xr,`${xr}-${o.name}`),onCommit:a,value:l,values:i,variant:"cta",children:l})},oe);ku("toggle-cell",Nu,"cell-renderer",{});import{useStateRef as Bb}from"@vuu-ui/vuu-ui-controls";import{dispatchMouseEvent as zb}from"@vuu-ui/vuu-utils";import{useCallback as Gb,useRef as Ub}from"react";import{DOWN1 as Qu,DOWN2 as Gu,isTypeDescriptor as Uu,metadataKeys as Wu,registerComponent as Ku,UP1 as Xu,UP2 as Zu}from"@vuu-ui/vuu-utils";import _u from"clsx";import{memo as Yu}from"react";import{getMovingValueDirection as Au,isTypeDescriptor as Bu,isValidNumber as yr}from"@vuu-ui/vuu-utils";import{useEffect as Vu,useRef as zu}from"react";var $u=[void 0,void 0,void 0,void 0];function wr(e,o,t){var m;let n=zu(),[r,i,s,l]=n.current||$u,{type:a}=t,c=Bu(a)?(m=a.formatting)==null?void 0:m.decimals:void 0,p=e===r&&yr(o)&&yr(i)&&t===s?Au(o,l,i,c):"";return Vu(()=>{n.current=[e,o,t,p]}),p}import{jsx as tc,jsxs as nc}from"react/jsx-runtime";var Ju="\u2B06",qu="\u2B07",{KEY:ju}=Wu,qe="vuuBackgroundCell",Fe={ArrowOnly:"arrow",BackgroundOnly:"bg-only",ArrowBackground:"arrow-bg"},ec=e=>Uu(e)&&e.renderer&&"flashStyle"in e.renderer?e.renderer.flashStyle:Fe.BackgroundOnly,oc=Yu(function({column:o,columnMap:t,row:n}){let{name:r,type:i,valueFormatter:s}=o,l=t[r],a=n[l],c=ec(i),p=wr(n[ju],a,o),m=c===Fe.ArrowOnly||c===Fe.ArrowBackground?p===Xu||p===Zu?Ju:p===Qu||p===Gu?qu:null:null,d=p?" "+p:"",u=_u(qe,d,{[`${qe}-backgroundOnly`]:c===Fe.BackgroundOnly,[`${qe}-arrowOnly`]:c===Fe.ArrowOnly,[`${qe}-arrowBackground`]:c===Fe.ArrowBackground});return nc("div",{className:u,tabIndex:-1,children:[tc("div",{className:`${qe}-arrow`,children:m}),s(n[l])]})},oe);Ku("vuu.price-move-background",oc,"cell-renderer",{description:"Change background color of cell when value changes",configEditor:"BackgroundCellConfigurationEditor",label:"Background Flash",serverDataType:["long","int","double"]});import{registerConfigurationEditor as rc}from"@vuu-ui/vuu-utils";import{FormField as ic,FormFieldLabel as sc}from"@salt-ds/core";import{Dropdown as lc}from"@vuu-ui/vuu-ui-controls";import{useCallback as ac,useState as uc}from"react";import{jsx as Tr,jsxs as dc}from"react/jsx-runtime";var cc="vuuBackgroundCellConfiguration",Ct=[{label:"Background Only",value:"bg-only"},{label:"Background and Arrow",value:"arrow-bg"},{label:"Arrow Only",value:"arrow"}],[Er]=Ct,pc=e=>{let{flashStyle:o}=e.type.renderer;return Ct.find(t=>t.value===o)||Er},mc=({column:e,onChangeRendering:o})=>{let[t,n]=uc(pc(e)),r=ac((i,s)=>{var a;n(s);let l=e.type.renderer;o({...l,flashStyle:(a=s==null?void 0:s.value)!=null?a:Er.value})},[e.type,o]);return dc(ic,{children:[Tr(sc,{children:"Flash Style"}),Tr(lc,{className:`${cc}-flashStyle`,onSelectionChange:r,selected:t,source:Ct,width:"100%"})]})};rc("BackgroundCellConfigurationEditor",mc);import{useLookupValues as gc}from"@vuu-ui/vuu-data-react";import{Dropdown as fc,WarnCommit as Cc}from"@vuu-ui/vuu-ui-controls";import{dispatchCustomEvent as vc,registerComponent as bc}from"@vuu-ui/vuu-utils";import{memo as hc,useCallback as xc,useState as yc}from"react";import{jsx as Rc}from"react/jsx-runtime";var wc="vuuTableDropdownCell",Tc=["Enter"," "],Ec=hc(function({column:o,columnMap:t,onCommit:n=Cc,row:r}){let i=t[o.name],{initialValue:s,values:l}=gc(o,r[i]),[a,c]=yc(null),p=xc((m,d)=>{d&&(c(d),n(d.value).then(u=>{u===!0&&m&&vc(m.target,"vuu-commit")}))},[n]);return Rc(fc,{className:wc,onSelectionChange:p,openKeys:Tc,selected:a!=null?a:s,source:l,width:o.width-17})},oe);bc("dropdown-cell",Ec,"cell-renderer",{});import{useLookupValues as Sc}from"@vuu-ui/vuu-data-react";import{registerComponent as Dc}from"@vuu-ui/vuu-utils";import{memo as Pc}from"react";import{jsx as Hc}from"react/jsx-runtime";var kc=Pc(function({column:o,columnMap:t,row:n}){let r=t[o.name],{initialValue:i}=Sc(o,n[r]);return Hc("span",{children:i==null?void 0:i.label})},oe);Dc("lookup-cell",kc,"cell-renderer",{});import{isColumnTypeRenderer as Mc,isTypeDescriptor as Lc,isValidNumber as Rr,registerComponent as Oc}from"@vuu-ui/vuu-utils";import Fc from"clsx";import{jsx as vt,jsxs as Sr}from"react/jsx-runtime";var je="vuuProgressCell",Nc=({column:e,columnMap:o,row:t})=>{let{type:n}=e,r=t[e.key],i=!1,s=0;if(Lc(n)&&Mc(n.renderer)){let{associatedField:a}=n.renderer;if(a){let c=t[o[a]];if(typeof Rr(r)&&Rr(c))s=Math.min(Math.round(r/c*100),100),s=Math.min(Math.round(r/c*100),100),i=isFinite(s);else{let p=parseFloat(r);if(Number.isFinite(p)){let m=parseFloat(c);Number.isFinite(m)&&(s=Math.min(Math.round(p/m*100),100),i=isFinite(s))}}}else throw Error("ProgressCell associatedField is required to render")}let l=Fc(je,{});return Sr("div",{className:l,tabIndex:-1,children:[i?Sr("span",{className:`${je}-track`,children:[vt("span",{className:`${je}-bg`}),vt("span",{className:`${je}-bar`,style:{"--progress-bar-pct":`-${100-s}%`}})]}):null,vt("span",{className:`${je}-text`,children:`${s} %`})]})};Oc("vuu.progress",Nc,"cell-renderer",{description:"Progress formatter",label:"Progress formatter",serverDataType:["long","int","double"]});import{List as Ic,ListItem as Ac}from"@vuu-ui/vuu-ui-controls";import{Checkbox as Bc,Switch as Vc}from"@salt-ds/core";import zc from"clsx";import{useCallback as Dr}from"react";import{getColumnLabel as $c}from"@vuu-ui/vuu-utils";import{jsx as ne,jsxs as bt}from"react/jsx-runtime";var te="vuuColumnList",Pr="vuuColumnListItem",Qc=({className:e,item:o,...t})=>bt(Ac,{...t,className:zc(e,Pr),"data-name":o==null?void 0:o.name,children:[ne("span",{className:`${te}-icon`,"data-icon":"draggable"}),o!=null&&o.isCalculated?ne("span",{className:`${te}-icon`,"data-icon":"function"}):ne(Vc,{className:`${te}-switch`,checked:o==null?void 0:o.subscribed}),ne("span",{className:`${te}-text`,children:$c(o)}),ne(Bc,{className:`${te}-checkBox`,checked:(o==null?void 0:o.hidden)!==!0,disabled:(o==null?void 0:o.subscribed)!==!0})]}),kr=({columnItems:e,onChange:o,onMoveListItem:t,onNavigateToColumn:n,...r})=>{let i=Dr(l=>{let a=l.target,c=a.closest(`.${Pr}`),{dataset:{name:p}}=c;if(p){let m=a.closest(`.${te}-switch`),d=a.closest(`.${te}-checkBox`);m?o(p,"subscribed",a.checked):d&&o(p,"hidden",a.checked===!1)}},[o]),s=Dr(l=>{let a=l.target;if(a.classList.contains("vuuColumnList-text")){let c=a.closest(".vuuListItem");c!=null&&c.dataset.name&&(n==null||n(c.dataset.name))}},[]);return bt("div",{...r,className:te,children:[ne("div",{className:`${te}-header`,children:ne("span",{children:"Column Selection"})}),bt("div",{className:`${te}-colHeadings`,children:[ne("span",{children:"Column subscription"}),ne("span",{children:"Visibility"})]}),ne(Ic,{ListItem:Qc,allowDragDrop:!0,height:"auto",onChange:i,onClick:s,onMoveListItem:t,selectionStrategy:"none",source:e,itemHeight:33})]})};import{VuuInput as vi}from"@vuu-ui/vuu-ui-controls";import{getCalculatedColumnName as Jm,getDefaultAlignment as qm,isCalculatedColumn as jm}from"@vuu-ui/vuu-utils";import{Button as Io,FormField as Ao,FormFieldLabel as Bo,ToggleButton as Xe,ToggleButtonGroup as bi}from"@salt-ds/core";import ed from"clsx";import{Dropdown as Xp}from"@vuu-ui/vuu-ui-controls";import{getCalculatedColumnExpression as Zp,getCalculatedColumnName as _p,getCalculatedColumnType as Yp}from"@vuu-ui/vuu-utils";import{FormField as It,FormFieldLabel as At,Input as Jp}from"@salt-ds/core";import{useCallback as qp,useRef as jr}from"react";import{memo as hp}from"react";import{autocompletion as ap,defaultKeymap as up,EditorState as Gr,EditorView as Ur,ensureSyntaxTree as cp,keymap as Wr,minimalSetup as pp,startCompletion as Kr}from"@vuu-ui/vuu-codemirror";import{createEl as Xr}from"@vuu-ui/vuu-utils";import{useCallback as mp,useEffect as dp,useMemo as gp,useRef as Mt}from"react";import{LanguageSupport as Uc,LRLanguage as Wc,styleTags as Kc,tags as eo}from"@vuu-ui/vuu-codemirror";import{LRParser as Gc}from"@lezer/lr";var So=Gc.deserialize({version:14,states:"&xOVQPOOO!fQPO'#C^OVQPO'#CcQ!pQPOOO#bQPO'#CkO#gQPO'#CrOOQO'#Cy'#CyO#lQPO,58}OVQPO,59QOVQPO,59QOOQO'#Cn'#CnOVQPO,59XOVQPO,59VOVQPO'#CtOOQO,59^,59^OOQO1G.i1G.iOOQO1G.l1G.lO$bQPO1G.lO%ZQPO1G.sO!pQPO'#CmO%qQQO1G.qO%|QQO'#C{OOQO'#C{'#C{O&wQPO,59`OVQPO,59ZOVQPO,59[OVQPO7+$]OVQPO'#CuO'RQPO1G.zOOQO1G.z1G.zO'ZQQO'#C^O'eQQO1G.sO'{QQO1G.uOOQO1G.v1G.vO(WQPO<<GwO(_QPO,59aOOQO-E6s-E6sOOQO7+$f7+$fOVQPOAN=cO(iQQO1G.lO(yQPOG22}OOQOLD(iLD(iO)QQPO,59QO)QQPO,59QO)QQPO,59X",stateData:")n~OlOS~ORUOSUOTUOUUOWQO`SOnPO~OWgXZQX[QX]QX^QXpQXqQXrQXsQXtQXuQXeQX~OjQXXQX~PnOZWO[WO]XO^XOpYOqYOrYOsYOtYOuYO~OW[O~OW]O~OX_O~P!pO]Yi^YipYiqYirYisYitYiuYieYi~OZWO[WOjYiXYi~P#sOpaiqairaisaitaiuaieai~OZWO[WO]XO^XOjaiXai~P$rOejOvhOwiO~OZmX[mX]mX^mXeoXpmXqmXrmXsmXtmXumXvoXwoX~OXmOekO~P!pOXuOekO~OvQXwQX~PnOZzO[zO]{O^{Ovaiwai~P$rOwiOecivci~OevO~P!pOXiaeia~P!pOZzO[zOvYiwYi~P#sOXyO~P!pORUOSUOTUOUUOWQO`SOnnO~O`UTn~",goto:"$epPPqPPPPqPPqPPPPqP!S!g!r!rPq!w#Y#]PPP#cP$[oUOQWXZ[]hijkvz{|hUOQWXZ]jkvz{|Ve[hi[ZRVgrsxR|cVf[hioTOQWXZ[]hijkvz{|R^TQlgRtlQROQVQS`WzQaXQbZUc[hiQg]Qo|QrjQskQw{RxvQd[QphRqi",nodeNames:"\u26A0 ColumnDefinitionExpression Column Number String True False ParenthesizedExpression OpenBrace CloseBrace ArithmeticExpression Divide Times Plus Minus ConditionalExpression If RelationalExpression RelationalOperator AndCondition OrCondition Comma CallExpression Function ArgList",maxTerm:39,skippedNodes:[0],repeatNodeCount:1,tokenData:".^~RnXY#PYZ#P]^#Ppq#Pqr#brs#mxy$eyz$jz{$o{|$t|}$y}!O%O!O!P%T!P!Q%c!Q![%h!^!_%s!_!`&Q!`!a&V!c!}&d#R#S&d#T#U&u#U#Y&d#Y#Z(Y#Z#]&d#]#^*j#^#c&d#c#d+f#d#h&d#h#i,b#i#o&d~#USl~XY#PYZ#P]^#Ppq#P~#eP!_!`#h~#mOu~~#pWOX#mZ]#m^r#mrs$Ys#O#m#P;'S#m;'S;=`$_<%lO#m~$_OS~~$bP;=`<%l#m~$jOW~~$oOX~~$tO[~~$yO]~~%OOe~~%TO^~~%WP!Q![%Z~%`PR~!Q![%Z~%hOZ~~%mQR~!O!P%Z!Q![%h~%xPr~!_!`%{~&QOt~~&VOp~~&[Pq~!_!`&_~&dOs~P&iSnP!Q![&d!c!}&d#R#S&d#T#o&dR&zUnP!Q![&d!c!}&d#R#S&d#T#b&d#b#c'^#c#o&dR'cUnP!Q![&d!c!}&d#R#S&d#T#W&d#W#X'u#X#o&dR'|SvQnP!Q![&d!c!}&d#R#S&d#T#o&d~(_TnP!Q![&d!c!}&d#R#S&d#T#U(n#U#o&d~(sUnP!Q![&d!c!}&d#R#S&d#T#`&d#`#a)V#a#o&d~)[UnP!Q![&d!c!}&d#R#S&d#T#g&d#g#h)n#h#o&d~)sUnP!Q![&d!c!}&d#R#S&d#T#X&d#X#Y*V#Y#o&d~*^SU~nP!Q![&d!c!}&d#R#S&d#T#o&d~*oUnP!Q![&d!c!}&d#R#S&d#T#Y&d#Y#Z+R#Z#o&d~+YS`~nP!Q![&d!c!}&d#R#S&d#T#o&dR+kUnP!Q![&d!c!}&d#R#S&d#T#f&d#f#g+}#g#o&dR,USwQnP!Q![&d!c!}&d#R#S&d#T#o&d~,gUnP!Q![&d!c!}&d#R#S&d#T#f&d#f#g,y#g#o&d~-OUnP!Q![&d!c!}&d#R#S&d#T#i&d#i#j-b#j#o&d~-gUnP!Q![&d!c!}&d#R#S&d#T#X&d#X#Y-y#Y#o&d~.QST~nP!Q![&d!c!}&d#R#S&d#T#o&d",tokenizers:[0,1],topRules:{ColumnDefinitionExpression:[0,1]},tokenPrec:393});var Xc=Wc.define({name:"VuuColumnExpression",parser:So.configure({props:[Kc({Column:eo.attributeValue,Function:eo.variableName,String:eo.string,Or:eo.emphasis,Operator:eo.operator})]})}),Hr=()=>new Uc(Xc);var ht=class{constructor(o){switch(this.value=o,typeof o){case"boolean":this.type="booleanLiteralExpression";break;case"number":this.type="numericLiteralExpression";break;default:this.type="stringLiteralExpression"}}toJSON(){return{type:this.type,value:this.value}}},xt=class{constructor(o){this.type="colExpression";this.column=o}toJSON(){return{type:this.type,column:this.column}}},to,we,yt=class{constructor(o="unknown"){ee(this,to,[{type:"unknown"},{type:"unknown"}]);ee(this,we,void 0);this.type="arithmeticExpression";pe(this,we,o)}get op(){return y(this,we)}set op(o){pe(this,we,o)}get expressions(){return y(this,to)}toJSON(){return{type:this.type,op:y(this,we),expressions:y(this,to)}}};to=new WeakMap,we=new WeakMap;var Be,wt=class{constructor(o){ee(this,Be,[]);this.type="callExpression";this.functionName=o}get expressions(){return y(this,Be)}get arguments(){return y(this,Be)}toJSON(){return{type:this.type,functionName:this.functionName,arguments:y(this,Be).map(o=>{var t;return(t=o.toJSON)==null?void 0:t.call(o)})}}};Be=new WeakMap;var no,Ve,Ie=class{constructor(){ee(this,no,[{type:"unknown"},{type:"unknown"}]);ee(this,Ve,"unknown");this.type="relationalExpression"}get op(){return y(this,Ve)}set op(o){pe(this,Ve,o)}get expressions(){return y(this,no)}toJSON(){return{type:this.type,op:y(this,Ve),expressions:y(this,no)}}};no=new WeakMap,Ve=new WeakMap;var ro,ze,Ae=class{constructor(o){ee(this,ro,[{type:"unknown"},{type:"unknown"}]);ee(this,ze,void 0);this.type="booleanCondition";pe(this,ze,o)}get op(){return y(this,ze)}get expressions(){return y(this,ro)}toJSON(){return{type:this.type,op:y(this,ze),expressions:y(this,ro).map(o=>{var t;return(t=o.toJSON)==null?void 0:t.call(o)})}}};ro=new WeakMap,ze=new WeakMap;var re,oo=class{constructor(o){ee(this,re,void 0);this.type="conditionalExpression";pe(this,re,[o?new Ae(o):new Ie,{type:"unknown"},{type:"unknown"}])}get expressions(){return y(this,re)}get condition(){return y(this,re)[0]}get truthyExpression(){return y(this,re)[1]}set truthyExpression(o){y(this,re)[1]=o}get falsyExpression(){return y(this,re)[2]}set falsyExpression(o){y(this,re)[2]=o}toJSON(){var o,t,n,r,i;return{type:this.type,condition:(t=(o=this.condition).toJSON)==null?void 0:t.call(o),truthyExpression:this.truthyExpression,falsyExpression:(i=(r=(n=this.falsyExpression)==null?void 0:n.toJSON)==null?void 0:r.call(n))!=null?i:this.falsyExpression}}};re=new WeakMap;var ye=e=>e.type==="unknown",Do=e=>e.type==="arithmeticExpression",Zc=e=>e.type==="callExpression",Ne=e=>e.type==="conditionalExpression",_c=e=>e.type==="relationalExpression"||e.type==="booleanCondition";var Yc=e=>e.type==="booleanCondition",Et=e=>(e==null?void 0:e.type)==="relationalExpression";var J=e=>{if(ye(e))return e;if(Et(e)){let[o,t]=e.expressions;if(K(o))return J(o);if(e.op==="unknown")return e;if(K(t))return J(t)}else if(_c(e)){let{expressions:o=[]}=e;for(let t of o)if(K(t))return J(t)}else if(Ne(e)){let{condition:o,truthyExpression:t,falsyExpression:n}=e;if(K(o))return J(o);if(K(t))return J(t);if(K(n))return J(n)}else if(Do(e)){let{expressions:o=[]}=e;for(let t of o)if(K(t))return J(t)}},Po=(e,o,t)=>{let{expressions:n=[]}=e;if(n.includes(o)){let r=n.indexOf(o);return n.splice(r,1,t),!0}else for(let r of n)if(Po(r,o,t))return!0;return!1},K=e=>ye(e)?!0:Ne(e)?K(e.condition)||K(e.truthyExpression)||K(e.falsyExpression):Et(e)||Yc(e)?e.op===void 0||e.expressions.some(o=>K(o)):!1,Mr=(e,o)=>{let t=J(e);t?t.expressions?t.expressions.push(o):console.warn("don't know how to treat targetExpression"):console.error("no target expression found")},S,Te,Tt=class{constructor(){ee(this,S,void 0);ee(this,Te,[])}setCondition(o){if(y(this,S)===void 0)this.addExpression(new oo(o));else if(Ne(y(this,S))){if(K(y(this,S).condition)){let t=o?new Ae(o):new Ie;this.addExpression(t)}else if(ye(y(this,S).truthyExpression))y(this,S).truthyExpression=new oo(o);else if(K(y(this,S).truthyExpression)){let t=o?new Ae(o):new Ie;this.addExpression(t)}else if(ye(y(this,S).falsyExpression))y(this,S).falsyExpression=new oo(o);else if(K(y(this,S).falsyExpression)){let t=o?new Ae(o):new Ie;this.addExpression(t)}}else console.error("setCondition called unexpectedly")}addExpression(o){if(y(this,Te).length>0){let t=y(this,Te).at(-1);t==null||t.arguments.push(o)}else if(y(this,S)===void 0)pe(this,S,o);else if(Do(y(this,S))){let t=J(y(this,S));t&&ye(t)&&Po(y(this,S),t,o)}else if(Ne(y(this,S))&&K(y(this,S))){let t=J(y(this,S));t&&ye(t)?Po(y(this,S),t,o):t&&Mr(t,o)}}setFunction(o){let t=new wt(o);this.addExpression(t),y(this,Te).push(t)}setColumn(o){this.addExpression(new xt(o))}setArithmeticOp(o){let t=o,n=y(this,S);Do(n)&&(n.op=t)}setRelationalOperator(o){let t=o;if(y(this,S)&&Ne(y(this,S))){let n=J(y(this,S));Et(n)?n.op=t:console.error(`no target expression found (op = ${o})`)}}setValue(o){let t=new ht(o);if(y(this,S)===void 0)pe(this,S,t);else if(Do(y(this,S)))this.addExpression(t);else if(Zc(y(this,S)))y(this,S).arguments.push(t);else if(Ne(y(this,S)))if(K(y(this,S))){let n=J(y(this,S));n&&ye(n)?Po(y(this,S),n,t):n&&Mr(n,t)}else console.log("what do we do with value, in a complete expression")}closeBrace(){y(this,Te).pop()}get expression(){return y(this,S)}toJSON(){var o;return(o=y(this,S))==null?void 0:o.toJSON()}};S=new WeakMap,Te=new WeakMap;var Lr=(e,o)=>{let t=new Tt,n=e.cursor();do{let{name:r,from:i,to:s}=n;switch(r){case"AndCondition":t.setCondition("and");break;case"OrCondition":t.setCondition("or");break;case"RelationalExpression":t.setCondition();break;case"ArithmeticExpression":t.addExpression(new yt);break;case"Column":{let l=o.substring(i,s);t.setColumn(l)}break;case"Function":{let l=o.substring(i,s);t.setFunction(l)}break;case"Times":case"Divide":case"Plus":case"Minus":{let l=o.substring(i,s);t.setArithmeticOp(l)}break;case"RelationalOperator":{let l=o.substring(i,s);t.setRelationalOperator(l)}break;case"False":case"True":{let l=o.substring(i,s);t.setValue(l==="true")}break;case"String":t.setValue(o.substring(i+1,s-1));break;case"Number":t.setValue(parseFloat(o.substring(i,s)));break;case"CloseBrace":t.closeBrace();break;default:}}while(n.next());return t.toJSON()};var Jc=So.configure({strict:!0}),Or=["Number","String"],Rt=[...Or,"AndCondition","ArithmeticExpression","BooleanOperator","RelationalOperatorOperator","CallExpression","CloseBrace","Column","Comma","ConditionalExpression","Divide","Equal","If","Minus","OpenBrace","OrCondition","ParenthesizedExpression","Plus","RelationalExpression","RelationalOperator","Times"],Fr=e=>{try{return Jc.parse(e),!0}catch{return!1}},St=e=>{let{lastChild:o}=e;for(;o&&!Rt.includes(o.name);)o=o.prevSibling,console.log(o==null?void 0:o.name);return o},Nr=e=>{if((e==null?void 0:e.name)==="RelationalExpression"){let{firstChild:o}=e,t=St(e);if((o==null?void 0:o.name)==="Column"&&typeof(t==null?void 0:t.name)=="string"&&Or.includes(t.name))return!0}return!1};import{HighlightStyle as qc,syntaxHighlighting as jc,tags as Dt}from"@vuu-ui/vuu-codemirror";var ep=qc.define([{tag:Dt.attributeValue,color:"var(--vuuFilterEditor-variableColor);font-weight: bold"},{tag:Dt.variableName,color:"var(--vuuFilterEditor-variableColor)"},{tag:Dt.comment,color:"green",fontStyle:"italic"}]),Ir=jc(ep);import{EditorView as op}from"@vuu-ui/vuu-codemirror";var Ar=op.theme({"&":{border:"solid 1px var(--salt-container-primary-borderColor)",color:"var(--vuuFilterEditor-color)",backgroundColor:"var(--vuuFilterEditor-background)"},".cm-content":{caretColor:"var(--vuuFilterEditor-cursorColor)"},"&.cm-focused .cm-cursor":{borderLeftColor:"var(--vuuFilterEditor-cursorColor)"},"&.cm-focused .cm-selectionBackground, ::selection":{backgroundColor:"var(--vuuFilterEditor-selectionBackground)"},".cm-selectionBackground, ::selection":{backgroundColor:"var(--vuuFilterEditor-selectionBackground)"},".cm-scroller":{fontFamily:"var(--vuuFilterEditor-fontFamily)"},".cm-completionLabel":{color:"var(--vuu-color-gray-50)"},".cm-completionMatchedText":{color:"var(--vuu-color-gray-80)",fontWeight:700,textDecoration:"none"},".cm-tooltip":{background:"var(--vuuFilterEditor-tooltipBackground)",border:"var(--vuuFilterEditor-tooltipBorder)",borderRadius:"4px",boxShadow:"var(--vuuFilterEditor-tooltipElevation)","&.cm-tooltip-autocomplete > ul":{fontFamily:"var(--vuuFilterEditor-fontFamily)",fontSize:"var(--vuuFilterEditor-fontSize)",maxHeight:"240px"},"&.cm-tooltip-autocomplete > ul > li":{height:"var(--vuuFilterEditor-suggestion-height)",padding:"0 3px",lineHeight:"var(--vuuFilterEditor-suggestion-height)"},"&.cm-tooltip-autocomplete li[aria-selected]":{background:"var(--vuuFilterEditor-suggestion-selectedBackground)",color:"var(--vuuFilterEditor-suggestion-selectedColor)"},"&.cm-tooltip-autocomplete li .cm-completionDetail":{color:"var(--vuuFilterEditor-suggestion-detailColor)"}}},{dark:!1});import{booleanJoinSuggestions as tp,getNamedParentNode as Br,getPreviousNode as np,getValue as ae,syntaxTree as rp}from"@vuu-ui/vuu-codemirror";import{useCallback as Vr}from"react";var ip=(e,o)=>o?e.map(t=>{var n;return{...t,apply:typeof t.apply=="function"?t.apply:`${o}${(n=t.apply)!=null?n:t.label}`}}):e,sp=e=>e===void 0?!1:["Times","Divide","Plus","Minus"].includes(e.name),io=e=>({apply:()=>{e==null||e()},label:"Done",boost:10}),$e=(e,o)=>{var r;let{lastChild:t}=e,{pos:n}=o;for(;t;)if(t.from<n&&Rt.includes(t.name)){if(t.name==="ParenthesizedExpression"){let s=(r=t.firstChild)==null?void 0:r.nextSibling;s&&(t=s)}return t}else t=t.prevSibling},zr=(e,o)=>{var t;if(e.name==="ArgList"){let n=e.prevSibling;if(n)return ae(n,o)}else if(e.name==="OpenBrace"){let n=(t=e.parent)==null?void 0:t.prevSibling;if((n==null?void 0:n.name)==="Function")return ae(n,o)}},$r=(e,o)=>{if(e.name==="RelationalExpression"){let t=St(e);if((t==null?void 0:t.name)==="RelationalOperator")return ae(t,o)}else{let t=e.prevSibling;if((t==null?void 0:t.name)==="RelationalOperator")return ae(t,o)}},Ht=(e,o)=>{var t;if(e.name==="RelationalExpression"){if(((t=e.firstChild)==null?void 0:t.name)==="Column")return ae(e.firstChild,o)}else{let n=e.prevSibling;if((n==null?void 0:n.name)==="Column")return ae(n,o);if((n==null?void 0:n.name)==="RelationalOperator")return Ht(n,o)}},Pt=async(e,o,t,n={})=>{let r=await o.getSuggestions(t,n),{startsWith:i=""}=n;return{from:e.pos-i.length,options:r}},kt=(e,o,t,n,r)=>{let i=$e(e,o);switch(i==null?void 0:i.name){case"If":return Pt(o,t,"expression",{prefix:"( "});case"OpenBrace":return Pt(o,t,"expression");case"Condition":return Pt(o,t,"expression",{prefix:", "});case"CloseBrace":if(n){let s=[io(r)];return{from:o.pos,options:s}}}},lp=(e,o)=>{let t=[io(o)];return{from:e.pos,options:t}},Qr=(e,o)=>{let t=Vr(async(n,r,i={})=>{let s=await e.getSuggestions(r,i),{startsWith:l=""}=i;return{from:n.pos-l.length,options:s}},[e]);return Vr(async n=>{var m,d;let{state:r,pos:i}=n,s=(m=n.matchBefore(/\w*/))!=null?m:{from:0,to:0,text:void 0},a=rp(r).resolveInner(i,-1),c=r.doc.toString(),p=Fr(c);switch(a.name){case"If":return t(n,"expression",{prefix:"( "});case"Condition":{let u=$e(a,n);if((u==null?void 0:u.name)==="Column"){let f=np(u);if((f==null?void 0:f.name)!=="RelationalOperator")return t(n,"condition-operator",{columnName:ae(u,r)})}else if((u==null?void 0:u.name)==="RelationalOperator")return t(n,"expression")}break;case"ConditionalExpression":return kt(a,n,e);case"RelationalExpression":{if(Nr(a))return{from:n.pos,options:tp.concat({label:", <truthy expression>, <falsy expression>",apply:", "})};{let u=$r(a,r),f=Ht(a,r);if(u)return t(n,"expression");{let C=await e.getSuggestions("condition-operator",{columnName:f});return{from:n.pos,options:C}}}}break;case"RelationalOperator":return t(n,"expression");case"String":{let u=$r(a,r),f=Ht(a,r),{from:C,to:g}=a;if(g-C===2&&n.pos===C+1){if(f&&u)return t(n,"columnValue",{columnName:f,operator:u,startsWith:s.text})}else if(g-C>2&&n.pos===g)return t(n,"expression",{prefix:", "})}break;case"ArithmeticExpression":{let u=$e(a,n);if((u==null?void 0:u.name)==="Column")return t(n,"expression");if(sp(u)){let f=u.name;return t(n,"column",{operator:f})}}break;case"OpenBrace":{let u=zr(a,r);return t(n,"expression",{functionName:u})}break;case"ArgList":{let u=zr(a,r),f=$e(a,n),C=(f==null?void 0:f.name)==="OpenBrace"||(f==null?void 0:f.name)==="Comma"?void 0:",",g=await e.getSuggestions("expression",{functionName:u});return g=C?ip(g,", "):g,(f==null?void 0:f.name)!=="OpenBrace"&&(f==null?void 0:f.name)!=="Comma"&&(g=[{apply:") ",boost:10,label:"Done - no more arguments"}].concat(g)),{from:n.pos,options:g}}case"Equal":if(c.trim()==="=")return t(n,"expression");break;case"ParenthesizedExpression":case"ColumnDefinitionExpression":if(n.pos===0)return t(n,"expression");{let u=$e(a,n);if((u==null?void 0:u.name)==="Column"){if(p){let f=[io(o.current)],C=ae(u,r),g=await e.getSuggestions("operator",{columnName:C});return{from:n.pos,options:f.concat(g)}}}else if((u==null?void 0:u.name)==="CallExpression"){if(p)return{from:n.pos,options:[io(o.current)]}}else if((u==null?void 0:u.name)==="ArithmeticExpression"){if(p){let f=[io(o.current)],C=$e(u,n);if((C==null?void 0:C.name)==="Column"){let g=ae(C,r),v=await e.getSuggestions("operator",{columnName:g});f=f.concat(v)}return{from:n.pos,options:f}}}else if((u==null?void 0:u.name)==="ConditionalExpression")return kt(u,n,e,p,o.current);break}case"Column":if(await e.isPartialMatch("expression",void 0,s.text))return t(n,"expression",{startsWith:s.text});break;case"Comma":{let u=Br(a);if((u==null?void 0:u.name)==="ConditionalExpression")return t(n,"expression")}break;case"CloseBrace":{let u=Br(a);if((u==null?void 0:u.name)==="ConditionalExpression")return kt(u,n,e,p,o.current);if((u==null?void 0:u.name)==="ArgList"&&p)return lp(n,o.current)}break;default:((d=a==null?void 0:a.prevSibling)==null?void 0:d.name)==="FilterClause"&&console.log("looks like we ight be a or|and operator")}},[t,o,e])};var ko=e=>{if(e.current==null)throw Error("EditorView not defined");return e.current},fp=()=>"vuuSuggestion",Cp=()=>console.log("noooop"),vp=e=>"expressionType"in e,bp=e=>{if(vp(e)){let o=Xr("div","expression-type-container"),t=Xr("span","expression-type",e.expressionType);return o.appendChild(t),o}else return null},Zr=({onChange:e,onSubmitExpression:o,source:t,suggestionProvider:n})=>{let r=Mt(null),i=Mt(Cp),s=Mt(),l=Qr(n,i),[a,c,p]=gp(()=>{let d=()=>{let v=ko(s),h=v.state.doc.toString(),T=cp(v.state,v.state.doc.length,5e3);if(T){let F=Lr(T,h);return[h,F]}else return["",void 0]},u=()=>{ko(s).setState(g())},f=()=>{let[v,h]=d();o==null||o(v,h)},C=v=>Wr.of([{key:v,run(){return Kr(ko(s)),!0}}]),g=()=>Gr.create({doc:t,extensions:[pp,ap({addToOptions:[{render:bp,position:70}],override:[l],optionClass:fp}),Hr(),Wr.of(up),C("ArrowDown"),Ur.updateListener.of(v=>{let h=ko(s);if(v.docChanged){Kr(h);let T=h.state.doc.toString();e==null||e(T)}}),Gr.transactionFilter.of(v=>v.newDoc.lines>1?[]:v),Ar,Ir]});return i.current=()=>{f()},[g,u,f]},[l,e,o,t]);dp(()=>{if(!r.current)throw Error("editor not in dom");return s.current=new Ur({state:a(),parent:r.current}),()=>{var d;(d=s.current)==null||d.destroy()}},[l,a]);let m=mp(()=>{p()},[p]);return{editorRef:r,clearInput:c,onBlur:m}};import{jsx as yp}from"react/jsx-runtime";var xp="vuuColumnExpressionInput",Lt=hp(({onChange:e,onSubmitExpression:o,source:t="",suggestionProvider:n})=>{let{editorRef:r,onBlur:i}=Zr({onChange:e,onSubmitExpression:o,source:t,suggestionProvider:n});return yp("div",{className:`${xp}`,onBlur:i,ref:r})},(e,o)=>e.source===o.source);Lt.displayName="ColumnExpressionInput";import{AnnotationType as wp,getRelationalOperators as Tp,numericOperators as Ep,stringOperators as Rp,toSuggestions as Sp}from"@vuu-ui/vuu-codemirror";import{getTypeaheadParams as Dp,useTypeaheadSuggestions as Pp}from"@vuu-ui/vuu-data-react";import{isNumericColumn as Ft,isTextColumn as kp}from"@vuu-ui/vuu-utils";import{useCallback as Ot,useRef as Hp}from"react";var Qe=[{accepts:["boolean"],description:"Applies boolean and operator across supplied parameters to returns a single boolean result",example:{expression:'and(ccy="EUR",quantity=0)',result:"true | false"},name:"and",params:{description:"( boolean, [ boolean* ] )"},type:"boolean"},{accepts:"string",description:"Returns multiple string values as a single joined string. Arguments may be string literal values, string columns or other string expressions. Non string arguments may also be included, these will be converted to strings.",example:{expression:'concatenate("example", "-test")',result:'"example-test"'},name:"concatenate",params:{description:"( string, string, [ string* ] )"},type:"string"},{accepts:["string","string"],description:"Tests a string value to determine whether it contains a given substring. Accepts two arguments: source text and target substring. Returns true if <source text> contains one or more occurrences of <target subscring>",example:{expression:'contains("Royal Bank of Scotland", "bank")',result:"true"},name:"contains",params:{description:"( string )"},type:"boolean"},{accepts:["string","number"],description:"Returns the leftmost <number> characters from <string>. First argument may be a string literal, string column or other string expression.",example:{expression:'left("USD Benchmark Report", 3)',result:'"USD"'},name:"left",params:{count:2,description:"( string, number )"},type:"string"},{accepts:"string",description:"Returns the number of characters in <string>. Argument may be a string literal, string column or other string expression.",example:{expression:'len("example")',result:"7"},name:"len",params:{description:"(string)"},type:"number"},{accepts:"string",description:"Convert a string value to lowercase. Argument may be a string column or other string expression.",example:{expression:'lower("examPLE")',result:'"example"'},name:"lower",params:{description:"( string )"},type:"string"},{accepts:["boolean"],description:"Applies boolean or operator across supplied parameters to returns a single boolean result",example:{expression:'or(status="cancelled",quantity=0)',result:"true | false"},name:"or",params:{description:"( boolean, [ boolean* ] )"},type:"boolean"},{accepts:"string",description:"Convert a string value to uppercase. Argument may be a string column or other string expression.",example:{expression:'upper("example")',result:'"EXAMPLE"'},name:"upper",params:{description:"( string )"},type:"string"},{accepts:["string","number"],description:"Returns the rightmost <number> characters from <string>. First argument may be a string literal, string column or other string expression.",example:{expression:"blah",result:"blah"},name:"right",params:{description:"( string )"},type:"string"},{accepts:["string","string","string"],description:"Replace characters within a string. Accepts three arguments: source text, text to replace and replacement text. Returns a copy of <source text> with any occurrences of <text to replace> replaced by <replacement text>",example:{expression:"blah",result:"blah"},name:"replace",params:{description:"( string )"},type:"string"},{accepts:"number",description:"Converts a number to a string.",example:{expression:"blah",result:"blah"},name:"text",params:{description:"( string )"},type:"string"},{accepts:"string",description:"Tests a string value to determine whether it starts with a given substring. Accepts two arguments: source text and target substring. Returns true if <source text> starts with <target subscring>.",example:{expression:"blah",result:"blah"},name:"starts",params:{description:"( string )"},type:"boolean"},{accepts:"string",description:"Tests a string value to determine whether it ends with a given substring. Accepts two arguments: source text and target substring. Returns true if <source text> ends with <target subscring>.",example:{expression:"blah",result:"blah"},name:"ends",params:{description:"( string )"},type:"boolean"},{accepts:"number",description:"blah",example:{expression:"blah",result:"blah"},name:"min",params:{description:"( string )"},type:"number"},{accepts:"number",description:"blah",example:{expression:"blah",result:"blah"},name:"max",params:{description:"( string )"},type:"number"},{accepts:"number",description:"blah",example:{expression:"blah",result:"blah"},name:"sum",params:{description:"( string )"},type:"number"},{accepts:"number",description:"blah",example:{expression:"blah",result:"blah"},name:"round",params:{description:"( string )"},type:"number"},{accepts:"any",description:"blah",example:{expression:"blah",result:"blah"},name:"or",params:{description:"( string )"},type:"boolean"},{accepts:"any",description:"blah",example:{expression:"blah",result:"blah"},name:"and",params:{description:"( string )"},type:"boolean"},{accepts:"any",description:"Return one of two possible result values, depending on the evaluation of a filter expression. If <filterExpression> resolves to true, result is <expression1>, otherwise <expression2>. ",example:{expression:"blah",result:"blah"},name:"if",params:{description:"( filterExpression, expression1, expression 2)"},type:"variable"}];import{createEl as ue}from"@vuu-ui/vuu-utils";var _r=({name:e,description:o,example:t,params:n,type:r})=>{let i=ue("div","vuuFunctionDoc"),s=ue("div","function-heading"),l=ue("span","function-name",e),a=ue("span","param-list",n.description),c=ue("span","function-type",r);s.appendChild(l),s.appendChild(a),s.appendChild(c);let p=ue("p",void 0,o);if(i.appendChild(s),i.appendChild(p),t){let m=ue("div","example-container"),d=ue("div","example-expression",t.expression),u=ue("div","example-result",t.result);m.appendChild(d),i.appendChild(m),i.appendChild(u)}return i};var Mp=[],Ee=e=>e.map(o=>{var t;return{...o,apply:((t=o.apply)!=null?t:o.label)+" "}}),Lp=(e,{functionName:o,operator:t})=>{if(t)return e.filter(Ft);if(o){let n=Qe.find(r=>r.name===o);if(n)switch(n.accepts){case"string":return e.filter(kp);case"number":return e.filter(Ft);default:return e}}return e},Yr=(e,o)=>Lp(e,o).map(n=>{var i;let r=(i=n.label)!=null?i:n.name;return{apply:o.prefix?`${o.prefix}${n.name}`:n.name,label:r,boost:5,type:"column",expressionType:n.serverDataType}}),Op=[{apply:"* ",boost:2,label:"*",type:"operator"},{apply:"/ ",boost:2,label:"/",type:"operator"},{apply:"+ ",boost:2,label:"+",type:"operator"},{apply:"- ",boost:2,label:"-",type:"operator"}],Fp=e=>e===void 0||Ft(e)?Op:Mp,Np=e=>{switch(e.serverDataType){case"string":case"char":return Ee(Rp);case"int":case"long":case"double":return Ee(Ep)}},Nt=e=>({apply:`${e.name}( `,boost:2,expressionType:e.type,info:()=>_r(e),label:e.name,type:"function"}),Ip=e=>{if(e){if(typeof e.accepts=="string")return e.accepts;if(Array.isArray(e.accepts))return e.accepts.every(o=>o==="string")?"string":"any"}return"any"},Ap=Qe.map(Nt),Bp=({functionName:e})=>{if(e){let o=Qe.find(n=>n.name===e),t=Ip(o);if(o)switch(t){case"string":return Qe.filter(n=>n.type==="string"||n.type==="variable").map(Nt);case"number":return Qe.filter(n=>n.type==="number"||n.type==="variable").map(Nt);default:}}return Ap},Vp={},Jr=({columns:e,table:o})=>{let t=Ot(l=>l?e.find(a=>a.name===l):void 0,[e]),n=Hp(),r=Pp(),i=Ot(async(l,a=Vp)=>{let{columnName:c,functionName:p,operator:m,prefix:d}=a;switch(l){case"expression":{let u=await Ee(Yr(e,{functionName:p,prefix:d})).concat(Bp(a));return n.current=u}case"column":{let u=await Yr(e,a);return n.current=Ee(u)}case"operator":{let u=await Fp(t(c));return n.current=Ee(u)}case"relational-operator":{let u=await Tp(t(c));return n.current=Ee(u)}case"condition-operator":{let u=t(c);if(u){let f=await Np(u);if(f)return n.current=Ee(f)}}break;case"columnValue":if(c&&m){let u=Dp(o,c),f=await r(u);return n.current=Sp(f,{suffix:""}),n.current.forEach(C=>{C.apply=(g,v,h)=>{let T=new wp,F=h+v.label.length+1;g.dispatch({changes:{from:h,insert:v.label},selection:{anchor:F,head:F},annotations:T.of(v)})}}),n.current}break}return[]},[e,t,r,o]),s=Ot(async(l,a,c)=>{let{current:p}=n,m=!1,d=p||await i(l,{columnName:a});if(c&&d)for(let u of d){if(u.label===c)return!1;u.label.startsWith(c)&&(m=!0)}return m},[i]);return{getSuggestions:i,isPartialMatch:s}};import{getCalculatedColumnDetails as zp,setCalculatedColumnExpression as $p,setCalculatedColumnName as Qp,setCalculatedColumnType as Gp}from"@vuu-ui/vuu-utils";import{useCallback as Ho,useRef as Up,useState as Wp}from"react";var Kp=e=>{let[o,t,n]=zp(e);return n===""?{...e,name:`${o}:string:${t}`}:e},qr=({column:e,onChangeName:o})=>{let[t,n]=Wp(Kp(e)),r=Up(e),i=Ho(c=>{r.current=c,n(c)},[]),s=Ho(c=>{let{value:p}=c.target,m=Qp(t,p);i(m),o==null||o(m.name)},[t,o,i]),l=Ho(c=>{let p=c.trim(),{current:m}=r,d=$p(m,p);i(d),o==null||o(d.name)},[o,i]),a=Ho((c,p)=>{if(typeof p=="string"){let m=Gp(t,p);i(m),o==null||o(m.name)}},[t,o,i]);return{column:t,onChangeExpression:l,onChangeName:s,onChangeType:a}};import{jsx as ge,jsxs as Mo}from"react/jsx-runtime";var ei="vuuColumnExpressionPanel",oi=({column:e,onChangeName:o,tableConfig:t,vuuTable:n})=>{let r=jr(null),{column:i,onChangeExpression:s,onChangeName:l,onChangeType:a}=qr({column:e,onChangeName:o}),c=jr(Zp(i)),p=Jr({columns:t.columns,table:n}),m=qp(()=>{var d,u;r.current&&((u=(d=r.current)==null?void 0:d.querySelector("button"))==null||u.focus())},[]);return Mo("div",{className:ei,children:[ge("div",{className:"vuuColumnSettingsPanel-header",children:ge("span",{children:"Calculation"})}),Mo(It,{"data-field":"column-name",children:[ge(At,{children:"Column Name"}),ge(Jp,{className:"vuuInput",onChange:l,value:_p(i)})]}),Mo(It,{"data-field":"column-expression",children:[ge(At,{children:"Expression"}),ge(Lt,{onChange:s,onSubmitExpression:m,source:c.current,suggestionProvider:p})]}),Mo(It,{"data-field":"type",children:[ge(At,{children:"Column type"}),ge(Xp,{className:`${ei}-type`,onSelectionChange:a,ref:r,selected:Yp(i)||null,source:["double","long","string"],width:"100%"})]})]})};import{Dropdown as Em}from"@vuu-ui/vuu-ui-controls";import{getCellRendererOptions as Rm,getConfigurationEditor as Sm,isColumnTypeRenderer as ui,isTypeDescriptor as ci}from"@vuu-ui/vuu-utils";import{FormField as Dm,FormFieldLabel as Pm}from"@salt-ds/core";import pi from"clsx";import{useCallback as km,useMemo as Qt}from"react";import{FormField as Bt,FormFieldLabel as Vt,Input as jp,Switch as ti}from"@salt-ds/core";import{getTypeFormattingFromColumn as em}from"@vuu-ui/vuu-utils";import{useCallback as Lo,useState as om}from"react";import{jsx as Ge,jsxs as Oo}from"react/jsx-runtime";var tm="vuuFormattingSettings",Fo=({column:e,onChangeFormatting:o})=>{var a,c,p;let[t,n]=om(em(e)),r=Lo(m=>{(m.key==="Enter"||m.key==="Tab")&&o(t)},[t,o]),i=Lo(m=>{let{value:d}=m.target,u=d===""||isNaN(parseInt(d))?void 0:parseInt(d),f={...t,decimals:u};n(f)},[t]),s=Lo(m=>{let{checked:d}=m.target,u={...t,alignOnDecimals:d};n(u),o(u)},[t,o]),l=Lo(m=>{let{checked:d}=m.target,u={...t,zeroPad:d};n(u),o(u)},[t,o]);return Oo("div",{className:tm,children:[Oo(Bt,{"data-field":"decimals",children:[Ge(Vt,{children:"Number of decimals"}),Ge(jp,{className:"vuuInput",onChange:i,onKeyDown:r,value:(a=t.decimals)!=null?a:""})]}),Oo(Bt,{labelPlacement:"left",children:[Ge(Vt,{children:"Align on decimals"}),Ge(ti,{checked:(c=t.alignOnDecimals)!=null?c:!1,onChange:s,value:"align-decimals"})]}),Oo(Bt,{labelPlacement:"left",children:[Ge(Vt,{children:"Zero pad decimals"}),Ge(ti,{checked:(p=t.zeroPad)!=null?p:!1,onChange:l,value:"zero-pad"})]})]})};import{useCallback as fm}from"react";import{FormField as Cm,FormFieldLabel as vm,ToggleButton as bm,ToggleButtonGroup as hm}from"@salt-ds/core";import{isDateTimeColumn as xm,isTypeDescriptor as ym}from"@vuu-ui/vuu-utils";import{useCallback as zt,useMemo as nm,useState as rm}from"react";import{Dropdown as im}from"@vuu-ui/vuu-ui-controls";import{defaultPatternsByType as ni,fallbackDateTimePattern as sm,getTypeFormattingFromColumn as lm,supportedDateTimePatterns as am}from"@vuu-ui/vuu-utils";import{FormField as ri,FormFieldLabel as ii,ToggleButton as um,ToggleButtonGroup as cm}from"@salt-ds/core";import{Fragment as gm,jsx as so,jsxs as $t}from"react/jsx-runtime";var si=({column:e,onChangeFormatting:o})=>{var p,m;let t=lm(e),{pattern:n=sm}=t,r=nm(()=>dm(n),[n]),[i,s]=rm({time:(p=n.time)!=null?p:ni.time,date:(m=n.date)!=null?m:ni.date}),l=zt(d=>o({...t,pattern:d}),[o,t]),a=zt(d=>(u,f)=>{let C={...n!=null?n:{},[d]:f};s(g=>{var v,h;return{time:(v=C.time)!=null?v:g.time,date:(h=C.date)!=null?h:g.date}}),l(C)},[l,n]),c=zt(d=>{var f,C,g,v;let u=d.currentTarget.value;switch(u){case"time":return l({[u]:(f=n[u])!=null?f:i[u]});case"date":return l({[u]:(C=n[u])!=null?C:i[u]});case"both":return l({time:(g=n.time)!=null?g:i.time,date:(v=n.date)!=null?v:i.date})}},[l,n,i]);return $t(gm,{children:[$t(ri,{labelPlacement:"left",children:[so(ii,{children:"Display"}),so(cm,{className:"vuuToggleButtonGroup",onChange:c,value:r,children:mm.map(d=>so(um,{value:d,children:d.toUpperCase()},d))})]}),["date","time"].filter(d=>!!n[d]).map(d=>$t(ri,{labelPlacement:"left",children:[so(ii,{children:`${pm[d]} pattern`}),so(im,{onSelectionChange:a(d),selected:n[d],source:am[d],width:"100%"})]},d))]})},pm={date:"Date",time:"Time"},mm=["date","time","both"];function dm(e){return e.time?e.date?"both":"time":"date"}import{jsx as lo,jsxs as li}from"react/jsx-runtime";var wm="vuuLongColumnFormattingSettings",ai=e=>{let{column:o,onChangeType:t}=e,n=ym(o.type)?o.type.name:o.type,r=fm(i=>{let s=i.currentTarget.value;t(s)},[t]);return li("div",{className:wm,children:[li(Cm,{children:[lo(vm,{children:"Type inferred as"}),lo(hm,{className:"vuuToggleButtonGroup",onChange:r,value:n!=null?n:"number",children:Tm.map(i=>lo(bm,{value:i,children:i.toUpperCase()},i))})]}),xm(o)?lo(si,{...e,column:o}):lo(Fo,{...e})]})},Tm=["number","date/time"];import{jsx as Ue,jsxs as Ut}from"react/jsx-runtime";var Gt="vuuColumnFormattingPanel",Hm=e=>{var o;return(o=e.label)!=null?o:e.name},mi=({availableRenderers:e,className:o,column:t,onChangeFormatting:n,onChangeType:r,onChangeRendering:i,...s})=>{let l=Qt(()=>Mm({column:t,onChangeFormatting:n,onChangeType:r}),[t,n,r]),a=Qt(()=>{let{type:d}=t;if(ci(d)&&ui(d.renderer)){let u=Rm(d.renderer.name);return Sm(u==null?void 0:u.configEditor)}},[t]),c=Qt(()=>{let{type:d}=t,[u]=e,f=ci(d)&&ui(d.renderer)?d.renderer.name:void 0,C=e.find(g=>g.name===f);return C!=null?C:u},[e,t]),p=km((d,u)=>{let f={name:u.name};i==null||i(f)},[i]),{serverDataType:m="string"}=t;return Ut("div",{...s,className:"vuuColumnSettingsPanel-header",children:[Ue("div",{children:"Formatting"}),Ut(Dm,{children:[Ue(Pm,{children:`Renderer (data type ${t.serverDataType})`}),Ue(Em,{className:pi(`${Gt}-renderer`),itemToString:Hm,onSelectionChange:p,selected:c,source:e,width:"100%"})]}),Ut("div",{className:pi(Gt,o,`${Gt}-${m}`),children:[l,a?Ue(a,{column:t,onChangeRendering:i}):null]})]})};function Mm(e){let{column:o}=e;switch(o.serverDataType){case"double":case"int":return Ue(Fo,{...e});case"long":return Ue(ai,{...e});default:return null}}import Lm from"clsx";import{getCalculatedColumnDetails as Om,isCalculatedColumn as Fm}from"@vuu-ui/vuu-utils";import{jsx as Re,jsxs as Nm}from"react/jsx-runtime";var We="vuuColumnNameLabel",di=({column:e,onClick:o})=>{if(Fm(e.name)){let[t,n,r]=Om(e),i=t||"name",s="=expression",l=i==="name"?`${We}-placeholder`:void 0,a=r===""?`${We}-placeholder`:void 0;return Nm("div",{className:Lm(We,`${We}-calculated`),onClick:o,children:[Re("span",{className:l,children:i}),Re("span",{children:":"}),Re("span",{children:n||"string"}),Re("span",{children:":"}),Re("span",{className:a,children:s}),Re("span",{className:`${We}-edit`,"data-icon":"edit"})]})}else return Re("div",{className:We,children:e.name})};import{getRegisteredCellRenderers as No,isValidColumnAlignment as Im,isValidPinLocation as Am,setCalculatedColumnName as Bm,updateColumnRenderProps as Vm,updateColumnFormatting as zm,updateColumnType as $m}from"@vuu-ui/vuu-utils";import{useCallback as q,useEffect as Qm,useMemo as Gm,useRef as Um,useState as gi}from"react";var Wm=[{description:"Default formatter for columns with data type integer",label:"Default Renderer (int, long)",name:"default-int"},...No("int")],Km=[{description:"Default formatter for columns with data type double",label:"Default Renderer (double)",name:"default-double"},...No("double")],fi=[{description:"Default formatter for columns with data type string",label:"Default Renderer (string)",name:"default-string"},...No("string")],Xm=[...No("boolean")],Zm=e=>{switch(e.serverDataType){case"char":case"string":return fi;case"int":case"long":return Wm;case"double":return Km;case"boolean":return Xm;default:return fi}},_m=e=>{let o=e.closest(".saltFormField");if(o&&o.dataset.field){let{dataset:{field:t}}=o;return t}else throw Error("named form field not found")},Ym=(e,o)=>{if(o.name==="::")return o;{let t=e.find(n=>n.name===o.name);if(t)return t;throw Error(`columns does not contain column ${name}`)}},Ke=(e,o)=>({...e,columns:e.columns.map(t=>t.name===o.name?o:t)}),Ci=({column:e,onCancelCreateColumn:o,onConfigChange:t,onCreateCalculatedColumn:n,tableConfig:r})=>{let[i,s]=gi(Ym(r.columns,e)),l=Um(i),[a,c]=gi(i.name==="::"),p=q(()=>{l.current=i,c(!0)},[i]);Qm(()=>{s(e),c(e.name==="::")},[e]);let m=Gm(()=>Zm(i),[i]),d=q(()=>{t(Ke(r,i))},[i,t,r]),u=q(k=>{let D=k.target,$=_m(D),{value:B}=D;switch($){case"column-label":s(A=>({...A,label:B}));break;case"column-name":s(A=>Bm(A,B));break;case"column-width":s(A=>({...A,width:parseInt(B)}));break;case"column-alignment":if(Im(B)){let A={...i,align:B||void 0};s(A),t(Ke(r,A))}break;case"column-pin":if(Am(B)){let A={...i,pin:B||void 0};s(A),t(Ke(r,A));break}}},[i,t,r]),f=q(k=>{s(D=>({...D,name:k}))},[]),C=q(k=>{let D=zm(i,k);s(D),t(Ke(r,D))},[i,t,r]),g=q(k=>{let D=$m(i,k);s(D),t(Ke(r,D))},[i,t,r]),v=q(k=>{if(k){let D=Vm(i,k);s(D),t(Ke(r,D))}},[i,t,r]),h=q(({moveBy:k})=>{let{columns:D}=r,$=D.indexOf(i)+k,B=D[$];B&&s(B)},[i,r]),T=q(()=>{h({moveBy:1})},[h]),F=q(()=>{h({moveBy:-1})},[h]),O=q(()=>{n(i)},[i,n]),N=q(()=>{e.name==="::"?o():(l.current!==void 0&&l.current!==i&&s(l.current),c(!1))},[i,e.name,o]);return{availableRenderers:m,editCalculatedColumn:a,column:i,navigateNextColumn:T,navigatePrevColumn:F,onCancel:N,onChange:u,onChangeCalculatedColumnName:f,onChangeFormatting:C,onChangeRendering:v,onChangeType:g,onEditCalculatedColumn:p,onInputCommit:d,onSave:O}};import{jsx as Q,jsxs as ce}from"react/jsx-runtime";var fe="vuuColumnSettingsPanel",od=e=>{let{name:o,label:t}=e;return jm(o)?t!=null?t:Jm(e):t!=null?t:o},E1=({column:e,onCancelCreateColumn:o,onConfigChange:t,onCreateCalculatedColumn:n,tableConfig:r,vuuTable:i})=>{let s=e.name==="::",{availableRenderers:l,editCalculatedColumn:a,column:c,navigateNextColumn:p,navigatePrevColumn:m,onCancel:d,onChange:u,onChangeCalculatedColumnName:f,onChangeFormatting:C,onChangeRendering:g,onChangeType:v,onEditCalculatedColumn:h,onInputCommit:T,onSave:F}=Ci({column:e,onCancelCreateColumn:o,onConfigChange:t,onCreateCalculatedColumn:n,tableConfig:r}),{serverDataType:O,align:N=qm(O),pin:k,width:D}=c;return ce("div",{className:ed(fe,{[`${fe}-editing`]:a}),children:[Q("div",{className:`${fe}-header`,children:Q(di,{column:c,onClick:h})}),a?Q(oi,{column:c,onChangeName:f,tableConfig:r,vuuTable:i}):null,ce(Ao,{"data-field":"column-label",children:[Q(Bo,{children:"Column Label"}),Q(vi,{className:"vuuInput",onChange:u,onCommit:T,value:od(c)})]}),ce(Ao,{"data-field":"column-width",children:[Q(Bo,{children:"Column Width"}),Q(vi,{className:"vuuInput",onChange:u,value:D,onCommit:T})]}),ce(Ao,{"data-field":"column-alignment",children:[Q(Bo,{children:"Alignment"}),ce(bi,{className:"vuuToggleButtonGroup",onChange:u,value:N,children:[Q(Xe,{"data-icon":"align-left",className:"vuuIconToggleButton",value:"left"}),Q(Xe,{"data-icon":"align-right",className:"vuuIconToggleButton",value:"right"})]})]}),ce(Ao,{"data-field":"column-pin",children:[Q(Bo,{children:"Pin Column"}),ce(bi,{className:"vuuToggleButtonGroup",onChange:u,value:k!=null?k:"",children:[Q(Xe,{className:"vuuIconToggleButton","data-icon":"cross-circle",value:""}),Q(Xe,{className:"vuuIconToggleButton","data-icon":"pin-left",value:"left"}),Q(Xe,{className:"vuuIconToggleButton","data-icon":"pin-float",value:"floating"}),Q(Xe,{className:"vuuIconToggleButton","data-icon":"pin-right",value:"right"})]})]}),Q(mi,{availableRenderers:l,column:c,onChangeFormatting:C,onChangeRendering:g,onChangeType:v}),a?ce("div",{className:"vuuColumnSettingsPanel-buttonBar","data-align":"right",children:[Q(Io,{className:`${fe}-buttonCancel`,onClick:d,tabIndex:-1,children:"cancel"}),Q(Io,{className:`${fe}-buttonSave`,onClick:F,variant:"cta",children:"save"})]}):ce("div",{className:`${fe}-buttonBar`,"data-align":s?"right":void 0,children:[Q(Io,{className:`${fe}-buttonNavPrev`,variant:"secondary","data-icon":"arrow-left",onClick:m,children:"PREVIOUS"}),Q(Io,{className:`${fe}-buttonNavNext`,variant:"secondary","data-icon":"arrow-right",onClick:p,children:"NEXT"})]})]})};import td from"clsx";import{useEffect as nd,useState as hi}from"react";import{jsx as Ze,jsxs as rd}from"react/jsx-runtime";var ao="vuuDatasourceStats",Wt=new Intl.NumberFormat,N1=({className:e,dataSource:o})=>{let[t,n]=hi(o.range),[r,i]=hi(o.size);nd(()=>{i(o.size),o.on("resize",i),o.on("range",n)},[o]);let s=td(ao,e),l=Wt.format(t.from+1),a=Wt.format(Math.min(t.to,r)),c=Wt.format(r);return rd("div",{className:s,children:[Ze("span",{className:`${ao}-label`,children:"Row count"}),Ze("span",{className:`${ao}-range`,children:l}),Ze("span",{children:"-"}),Ze("span",{className:`${ao}-range`,children:a}),Ze("span",{children:"of"}),Ze("span",{className:`${ao}-size`,children:c})]})};import{Button as gd,FormField as Kt,FormFieldLabel as Xt,Input as fd,ToggleButton as _e,ToggleButtonGroup as Cd}from"@salt-ds/core";import{addColumnToSubscribedColumns as id,isCalculatedColumn as sd,moveItem as ld,subscribedOnly as ad,useLayoutEffectSkipFirst as ud}from"@vuu-ui/vuu-utils";import{useCallback as Vo,useMemo as cd,useState as pd}from"react";var md=(e,o)=>{let t=[];for(let{name:n}of e){let r=o.find(i=>i.name===n);r&&t.push(r)}return t},dd=(e,o)=>e.map(({name:t,serverDataType:n})=>{let r=o.find(i=>i.name===t);return{hidden:r==null?void 0:r.hidden,isCalculated:sd(t),label:r==null?void 0:r.label,name:t,serverDataType:n,subscribed:r!==void 0}}),xi=({availableColumns:e,onConfigChange:o,onDataSourceConfigChange:t,tableConfig:n})=>{let[{availableColumns:r,tableConfig:i},s]=pd({availableColumns:e,tableConfig:n}),l=cd(()=>dd(r,i.columns),[r,i.columns]),a=Vo((u,f)=>{s(C=>{let g=ld(C.availableColumns,u,f),v=md(g,i.columns);return{availableColumns:g,tableConfig:{...C.tableConfig,columns:v}}})},[i.columns]),c=Vo((u,f,C)=>{let g=l.find(v=>v.name===u);if(f==="subscribed")if(g!=null&&g.subscribed){let v=i.columns.filter(h=>h.name!==u).map(h=>h.name);s(h=>({...h,tableConfig:{...i,columns:i.columns.filter(ad(v))}})),t({columns:v})}else{let v={...i,columns:id(i.columns,r,u)};s(T=>({...T,tableConfig:v}));let h=v.columns.map(T=>T.name);t({columns:h})}else if(g!=null&&g.subscribed){let v=i.columns.find(h=>h.name===u);if(v){let h=vo(i,{type:"column-prop",property:f,column:v,value:C});s(T=>({...T,tableConfig:h}))}}},[r,l,t,i]),p=Vo(u=>{let{value:f}=u.target,C=f==="0"?void 0:f==="1"?"capitalize":"uppercase";s(g=>({...g,tableConfig:{...g.tableConfig,columnFormatHeader:C}}))},[]),m=Vo(u=>{let{ariaChecked:f,value:C}=u.target;s(g=>({...g,tableConfig:{...g.tableConfig,[C]:f!=="true"}}))},[]);ud(()=>{o==null||o(i)},[o,i]);let d=i.columnFormatHeader===void 0?0:i.columnFormatHeader==="capitalize"?1:2;return{columnItems:l,columnLabelsValue:d,onChangeColumnLabels:p,onChangeTableAttribute:m,onColumnChange:c,onMoveListItem:a,tableConfig:i}};import{jsx as _,jsxs as Se}from"react/jsx-runtime";var Zt="vuuTableSettingsPanel",q1=({availableColumns:e,onAddCalculatedColumn:o,onConfigChange:t,onDataSourceConfigChange:n,onNavigateToColumn:r,tableConfig:i})=>{var u,f,C;let{columnItems:s,columnLabelsValue:l,onChangeColumnLabels:a,onChangeTableAttribute:c,onColumnChange:p,onMoveListItem:m,tableConfig:d}=xi({availableColumns:e,onConfigChange:t,onDataSourceConfigChange:n,tableConfig:i});return Se("div",{className:Zt,children:[Se(Kt,{children:[_(Xt,{children:"Column Labels"}),Se(Cd,{className:"vuuToggleButtonGroup",onChange:a,value:l,children:[_(_e,{className:"vuuIconToggleButton","data-icon":"text-strikethrough",value:0}),_(_e,{className:"vuuIconToggleButton","data-icon":"text-Tt",value:1}),_(_e,{className:"vuuIconToggleButton","data-icon":"text-T",value:2})]})]}),Se(Kt,{children:[_(Xt,{children:"Grid separators"}),Se("div",{className:"saltToggleButtonGroup vuuToggleButtonGroup saltToggleButtonGroup-horizontal vuuGridSeparators",children:[_(_e,{className:"vuuIconToggleButton","data-icon":"row-striping",selected:(u=d.zebraStripes)!=null?u:!1,onChange:c,value:"zebraStripes"}),_(_e,{className:"vuuIconToggleButton","data-icon":"row-lines",selected:(f=d.rowSeparators)!=null?f:!1,onChange:c,value:"rowSeparators"}),_(_e,{className:"vuuIconToggleButton","data-icon":"col-lines",selected:(C=d.columnSeparators)!=null?C:!1,onChange:c,value:"columnSeparators"})]})]}),Se(Kt,{children:[_(Xt,{children:"Default Column Width"}),_(fd,{className:"vuuInput"})]}),_(kr,{columnItems:s,onChange:p,onMoveListItem:m,onNavigateToColumn:r}),Se("div",{className:`${Zt}-calculatedButtonbar`,children:[_(gd,{"data-icon":"plus",onClick:o}),_("span",{className:`${Zt}-calculatedLabel`,children:"Add calculated column"})]})]})};export{oc as BackgroundCell,mc as BackgroundCellConfigurationEditor,Fo as BaseNumericFormattingSettings,Yi as CaseValidator,Lt as ColumnExpressionInput,oi as ColumnExpressionPanel,mi as ColumnFormattingPanel,kr as ColumnList,Rt as ColumnNamedTerms,E1 as ColumnSettingsPanel,N1 as DataSourceStats,si as DateTimeFormattingSettings,Ec as DropdownCell,kc as LookupCell,es as PatternValidator,q1 as TableSettingsPanel,Hr as columnExpressionLanguageSupport,Fr as isCompleteExpression,Nr as isCompleteRelationalExpression,St as lastNamedChild,Zr as useColumnExpressionEditor,Jr as useColumnExpressionSuggestionProvider,xi as useTableSettings,Lr as walkTree};
2
3
  //# sourceMappingURL=index.js.map