@vuu-ui/vuu-table-extras 0.8.22 → 0.8.23

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,3 +1,2 @@
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};
1
+ var vt=(o,e,t)=>{if(!e.has(o))throw TypeError("Cannot "+t)};var f=(o,e,t)=>(vt(o,e,"read from private field"),t?t.call(o):e.get(o)),L=(o,e,t)=>{if(e.has(o))throw TypeError("Cannot add the same private member more than once");e instanceof WeakSet?e.add(o):e.set(o,t)},M=(o,e,t,n)=>(vt(o,e,"write to private field"),n?n.call(o,t):e.set(o,t),t);import{registerComponent as ho}from"@vuu-ui/vuu-utils";var bo=o=>typeof o=="string",yo=(o,e)=>bo(e)?e===""?!0:o.value==="lower"&&e.toLowerCase()!==e?"value must be all lowercase":o.value==="upper"&&e.toUpperCase()!==e?"value must be all uppercase":!0:"value must be a string";ho("vuu-case",yo,"data-edit-validator",{});import{registerComponent as Eo}from"@vuu-ui/vuu-utils";var wo=o=>typeof o=="string",Oo="value does not match expected pattern",So=(o,e)=>{if(typeof o.value!="string")throw Error("Pattern validation rule must provide pattern");if(wo(e)){if(e==="")return!0;{let{message:t=Oo}=o;return new RegExp(o.value).test(e)||t}}else return"value must be a string"};Eo("vuu-pattern",So,"data-edit-validator",{});import{dataAndColumnUnchanged as Bo,DOWN1 as Do,DOWN2 as No,isTypeDescriptor as Ro,metadataKeys as Ho,registerComponent as Vo,UP1 as Io,UP2 as Qo}from"@vuu-ui/vuu-utils";import Mo from"clsx";import{memo as Ao}from"react";import{getMovingValueDirection as ko,isTypeDescriptor as To,isValidNumber as xt}from"@vuu-ui/vuu-utils";import{useEffect as Fo,useRef as Po}from"react";var Lo=[void 0,void 0,void 0,void 0];function ht(o,e,t){var g;let n=Po(),[i,r,a,u]=n.current||Lo,{type:l}=t,c=To(l)?(g=l.formatting)==null?void 0:g.decimals:void 0,d=o===i&&xt(e)&&xt(r)&&t===a?ko(e,u,r,c):"";return Fo(()=>{n.current=[o,e,t,d]}),d}import{jsx as Go,jsxs as Wo}from"react/jsx-runtime";var $o="\u2B06",Zo="\u2B07",{KEY:Xo}=Ho,pe="vuuBackgroundCell",Y={ArrowOnly:"arrow",BackgroundOnly:"bg-only",ArrowBackground:"arrow-bg"},zo=o=>Ro(o)&&o.renderer&&"flashStyle"in o.renderer?o.renderer.flashStyle:Y.BackgroundOnly,Uo=Ao(function({column:e,columnMap:t,row:n}){let{name:i,type:r,valueFormatter:a}=e,u=t[i],l=n[u],c=zo(r),d=ht(n[Xo],l,e),g=c===Y.ArrowOnly||c===Y.ArrowBackground?d===Io||d===Qo?$o:d===Do||d===No?Zo:null:null,p=d?" "+d:"",s=Mo(pe,p,{[`${pe}-backgroundOnly`]:c===Y.BackgroundOnly,[`${pe}-arrowOnly`]:c===Y.ArrowOnly,[`${pe}-arrowBackground`]:c===Y.ArrowBackground});return Wo("div",{className:s,tabIndex:-1,children:[Go("div",{className:`${pe}-arrow`,children:g}),a(n[u])]})},Bo);Vo("vuu.price-move-background",Uo,"cell-renderer",{description:"Change background color of cell when value changes",configEditor:"BackgroundCellConfigurationEditor",label:"Background Flash",serverDataType:["long","int","double"]});import{Dropdown as Yo}from"@vuu-ui/vuu-ui-controls";import{registerConfigurationEditor as qo}from"@vuu-ui/vuu-utils";import{FormField as _o,FormFieldLabel as Jo}from"@salt-ds/core";import{useCallback as Ko,useState as jo}from"react";import{jsx as bt,jsxs as nn}from"react/jsx-runtime";var en="vuuBackgroundCellConfiguration",Qe=[{label:"Background Only",value:"bg-only"},{label:"Background and Arrow",value:"arrow-bg"},{label:"Arrow Only",value:"arrow"}],[yt]=Qe,tn=o=>{let{flashStyle:e}=o.type.renderer;return Qe.find(t=>t.value===e)||yt},on=({column:o,onChangeRendering:e})=>{let[t,n]=jo(tn(o)),i=Ko((r,a)=>{var l;n(a);let u=o.type.renderer;e({...u,flashStyle:(l=a==null?void 0:a.value)!=null?l:yt.value})},[o.type,e]);return nn(_o,{children:[bt(Jo,{children:"Flash Style"}),bt(Yo,{className:`${en}-flashStyle`,onSelectionChange:i,selected:t,source:Qe,width:"100%"})]})};qo("BackgroundCellConfigurationEditor",on);import{useLookupValues as rn}from"@vuu-ui/vuu-data-react";import{Dropdown as sn,WarnCommit as an}from"@vuu-ui/vuu-ui-controls";import{dataAndColumnUnchanged as ln,dispatchCustomEvent as un,registerComponent as pn}from"@vuu-ui/vuu-utils";import{memo as cn,useCallback as mn,useState as dn}from"react";import{jsx as vn}from"react/jsx-runtime";var gn="vuuTableDropdownCell",fn=["Enter"," "],Cn=cn(function({column:e,columnMap:t,onCommit:n=an,row:i}){let r=t[e.name],{initialValue:a,values:u}=rn(e,i[r]),[l,c]=dn(null),d=mn((g,p)=>{p&&(c(p),n(p.value).then(s=>{s===!0&&g&&un(g.target,"vuu-commit")}))},[n]);return vn(sn,{className:gn,onSelectionChange:d,openKeys:fn,selected:l!=null?l:a,source:u,width:e.width-17})},ln);pn("dropdown-cell",Cn,"cell-renderer",{});import{useLookupValues as xn}from"@vuu-ui/vuu-data-react";import{dataAndColumnUnchanged as hn,registerComponent as bn}from"@vuu-ui/vuu-utils";import{memo as yn}from"react";import{jsx as wn}from"react/jsx-runtime";var En=yn(function({column:e,columnMap:t,row:n}){let i=t[e.name],{initialValue:r}=xn(e,n[i]);return wn("span",{children:r==null?void 0:r.label})},hn);bn("lookup-cell",En,"cell-renderer",{});import{isColumnTypeRenderer as On,isTypeDescriptor as Sn,isValidNumber as Et,registerComponent as kn}from"@vuu-ui/vuu-utils";import Tn from"clsx";import{jsx as Me,jsxs as wt}from"react/jsx-runtime";var ce="vuuProgressCell",Fn=({column:o,columnMap:e,row:t})=>{let{name:n,type:i}=o,r=t[e[n]],a=!1,u=0;if(Sn(i)&&On(i.renderer)){let{associatedField:c}=i.renderer;if(c){let d=t[e[c]];if(typeof Et(r)&&Et(d))u=Math.min(Math.round(r/d*100),100),u=Math.min(Math.round(r/d*100),100),a=isFinite(u);else{let g=parseFloat(r);if(Number.isFinite(g)){let p=parseFloat(d);Number.isFinite(p)&&(u=Math.min(Math.round(g/p*100),100),a=isFinite(u))}}}else throw Error("ProgressCell associatedField is required to render")}let l=Tn(ce,{});return wt("div",{className:l,tabIndex:-1,children:[a?wt("span",{className:`${ce}-track`,children:[Me("span",{className:`${ce}-bg`}),Me("span",{className:`${ce}-bar`,style:{"--progress-bar-pct":`-${100-u}%`}})]}):null,Me("span",{className:`${ce}-text`,children:`${u} %`})]})};kn("vuu.progress",Fn,"cell-renderer",{description:"Progress formatter",label:"Progress formatter",serverDataType:["long","int","double"]});import{List as Pn,ListItem as Ln}from"@vuu-ui/vuu-ui-controls";import{Checkbox as Bn,Switch as Dn}from"@salt-ds/core";import Nn from"clsx";import{useCallback as Ot}from"react";import{getColumnLabel as Rn}from"@vuu-ui/vuu-utils";import{jsx as N,jsxs as Ae}from"react/jsx-runtime";var D="vuuColumnList",St="vuuColumnListItem",Hn=({className:o,item:e,...t})=>Ae(Ln,{...t,className:Nn(o,St),"data-name":e==null?void 0:e.name,children:[N("span",{className:`${D}-icon`,"data-icon":"draggable"}),e!=null&&e.isCalculated?N("span",{className:`${D}-icon`,"data-icon":"function"}):N(Dn,{className:`${D}-switch`,checked:e==null?void 0:e.subscribed}),N("span",{className:`${D}-text`,children:Rn(e)}),N(Bn,{className:`${D}-checkBox`,checked:(e==null?void 0:e.hidden)!==!0,disabled:(e==null?void 0:e.subscribed)!==!0})]}),kt=({columnItems:o,onChange:e,onMoveListItem:t,onNavigateToColumn:n,...i})=>{let r=Ot(u=>{let l=u.target,c=l.closest(`.${St}`),{dataset:{name:d}}=c;if(d){let g=l.closest(`.${D}-switch`),p=l.closest(`.${D}-checkBox`);g?e(d,"subscribed",l.checked):p&&e(d,"hidden",l.checked===!1)}},[e]),a=Ot(u=>{let l=u.target;if(l.classList.contains("vuuColumnList-text")){let c=l.closest(".vuuListItem");c!=null&&c.dataset.name&&(n==null||n(c.dataset.name))}},[]);return Ae("div",{...i,className:D,children:[N("div",{className:`${D}-header`,children:N("span",{children:"Column Selection"})}),Ae("div",{className:`${D}-colHeadings`,children:[N("span",{children:"Column subscription"}),N("span",{children:"Visibility"})]}),N(Pn,{ListItem:Hn,allowDragDrop:!0,height:"auto",onChange:r,onClick:a,onMoveListItem:t,selectionStrategy:"none",source:o,itemHeight:33})]})};import{VuuInput as fo}from"@vuu-ui/vuu-ui-controls";import{getCalculatedColumnName as zs,getDefaultAlignment as Us,isCalculatedColumn as Gs}from"@vuu-ui/vuu-utils";import{Button as Be,FormField as De,FormFieldLabel as Ne,ToggleButton as ae,ToggleButtonGroup as Co}from"@salt-ds/core";import Ws from"clsx";import{Dropdown as Ar}from"@vuu-ui/vuu-ui-controls";import{getCalculatedColumnExpression as $r,getCalculatedColumnName as Zr,getCalculatedColumnType as Xr}from"@vuu-ui/vuu-utils";import{FormField as rt,FormFieldLabel as st,Input as zr}from"@salt-ds/core";import{useCallback as Ur,useRef as _t}from"react";import{memo as mr}from"react";import{autocompletion as tr,defaultKeymap as or,EditorState as At,EditorView as $t,ensureSyntaxTree as nr,keymap as Zt,minimalSetup as rr,startCompletion as Xt}from"@vuu-ui/vuu-codemirror";import{createEl as zt}from"@vuu-ui/vuu-utils";import{useCallback as sr,useEffect as ir,useMemo as ar,useRef as je}from"react";import{LanguageSupport as In,LRLanguage as Qn,styleTags as Mn,tags as me}from"@vuu-ui/vuu-codemirror";import{LRParser as Vn}from"@lezer/lr";var ye=Vn.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 An=Qn.define({name:"VuuColumnExpression",parser:ye.configure({props:[Mn({Column:me.attributeValue,Function:me.variableName,String:me.string,Or:me.emphasis,Operator:me.operator})]})}),Tt=()=>new In(An);var $e=class{constructor(e){switch(this.value=e,typeof e){case"boolean":this.type="booleanLiteralExpression";break;case"number":this.type="numericLiteralExpression";break;default:this.type="stringLiteralExpression"}}toJSON(){return{type:this.type,value:this.value}}},Ze=class{constructor(e){this.type="colExpression";this.column=e}toJSON(){return{type:this.type,column:this.column}}},ge,X,Xe=class{constructor(e="unknown"){L(this,ge,[{type:"unknown"},{type:"unknown"}]);L(this,X,void 0);this.type="arithmeticExpression";M(this,X,e)}get op(){return f(this,X)}set op(e){M(this,X,e)}get expressions(){return f(this,ge)}toJSON(){return{type:this.type,op:f(this,X),expressions:f(this,ge)}}};ge=new WeakMap,X=new WeakMap;var K,ze=class{constructor(e){L(this,K,[]);this.type="callExpression";this.functionName=e}get expressions(){return f(this,K)}get arguments(){return f(this,K)}toJSON(){return{type:this.type,functionName:this.functionName,arguments:f(this,K).map(e=>{var t;return(t=e.toJSON)==null?void 0:t.call(e)})}}};K=new WeakMap;var fe,j,_=class{constructor(){L(this,fe,[{type:"unknown"},{type:"unknown"}]);L(this,j,"unknown");this.type="relationalExpression"}get op(){return f(this,j)}set op(e){M(this,j,e)}get expressions(){return f(this,fe)}toJSON(){return{type:this.type,op:f(this,j),expressions:f(this,fe)}}};fe=new WeakMap,j=new WeakMap;var Ce,ee,J=class{constructor(e){L(this,Ce,[{type:"unknown"},{type:"unknown"}]);L(this,ee,void 0);this.type="booleanCondition";M(this,ee,e)}get op(){return f(this,ee)}get expressions(){return f(this,Ce)}toJSON(){return{type:this.type,op:f(this,ee),expressions:f(this,Ce).map(e=>{var t;return(t=e.toJSON)==null?void 0:t.call(e)})}}};Ce=new WeakMap,ee=new WeakMap;var R,de=class{constructor(e){L(this,R,void 0);this.type="conditionalExpression";M(this,R,[e?new J(e):new _,{type:"unknown"},{type:"unknown"}])}get expressions(){return f(this,R)}get condition(){return f(this,R)[0]}get truthyExpression(){return f(this,R)[1]}set truthyExpression(e){f(this,R)[1]=e}get falsyExpression(){return f(this,R)[2]}set falsyExpression(e){f(this,R)[2]=e}toJSON(){var e,t,n,i,r;return{type:this.type,condition:(t=(e=this.condition).toJSON)==null?void 0:t.call(e),truthyExpression:this.truthyExpression,falsyExpression:(r=(i=(n=this.falsyExpression)==null?void 0:n.toJSON)==null?void 0:i.call(n))!=null?r:this.falsyExpression}}};R=new WeakMap;var Z=o=>o.type==="unknown",Ee=o=>o.type==="arithmeticExpression",$n=o=>o.type==="callExpression",q=o=>o.type==="conditionalExpression",Zn=o=>o.type==="relationalExpression"||o.type==="booleanCondition";var Xn=o=>o.type==="booleanCondition",Ge=o=>(o==null?void 0:o.type)==="relationalExpression";var T=o=>{if(Z(o))return o;if(Ge(o)){let[e,t]=o.expressions;if(S(e))return T(e);if(o.op==="unknown")return o;if(S(t))return T(t)}else if(Zn(o)){let{expressions:e=[]}=o;for(let t of e)if(S(t))return T(t)}else if(q(o)){let{condition:e,truthyExpression:t,falsyExpression:n}=o;if(S(e))return T(e);if(S(t))return T(t);if(S(n))return T(n)}else if(Ee(o)){let{expressions:e=[]}=o;for(let t of e)if(S(t))return T(t)}},we=(o,e,t)=>{let{expressions:n=[]}=o;if(n.includes(e)){let i=n.indexOf(e);return n.splice(i,1,t),!0}else for(let i of n)if(we(i,e,t))return!0;return!1},S=o=>Z(o)?!0:q(o)?S(o.condition)||S(o.truthyExpression)||S(o.falsyExpression):Ge(o)||Xn(o)?o.op===void 0||o.expressions.some(e=>S(e)):!1,Ft=(o,e)=>{let t=T(o);t?t.expressions?t.expressions.push(e):console.warn("don't know how to treat targetExpression"):console.error("no target expression found")},h,z,Ue=class{constructor(){L(this,h,void 0);L(this,z,[])}setCondition(e){if(f(this,h)===void 0)this.addExpression(new de(e));else if(q(f(this,h))){if(S(f(this,h).condition)){let t=e?new J(e):new _;this.addExpression(t)}else if(Z(f(this,h).truthyExpression))f(this,h).truthyExpression=new de(e);else if(S(f(this,h).truthyExpression)){let t=e?new J(e):new _;this.addExpression(t)}else if(Z(f(this,h).falsyExpression))f(this,h).falsyExpression=new de(e);else if(S(f(this,h).falsyExpression)){let t=e?new J(e):new _;this.addExpression(t)}}else console.error("setCondition called unexpectedly")}addExpression(e){if(f(this,z).length>0){let t=f(this,z).at(-1);t==null||t.arguments.push(e)}else if(f(this,h)===void 0)M(this,h,e);else if(Ee(f(this,h))){let t=T(f(this,h));t&&Z(t)&&we(f(this,h),t,e)}else if(q(f(this,h))&&S(f(this,h))){let t=T(f(this,h));t&&Z(t)?we(f(this,h),t,e):t&&Ft(t,e)}}setFunction(e){let t=new ze(e);this.addExpression(t),f(this,z).push(t)}setColumn(e){this.addExpression(new Ze(e))}setArithmeticOp(e){let t=e,n=f(this,h);Ee(n)&&(n.op=t)}setRelationalOperator(e){let t=e;if(f(this,h)&&q(f(this,h))){let n=T(f(this,h));Ge(n)?n.op=t:console.error(`no target expression found (op = ${e})`)}}setValue(e){let t=new $e(e);if(f(this,h)===void 0)M(this,h,t);else if(Ee(f(this,h)))this.addExpression(t);else if($n(f(this,h)))f(this,h).arguments.push(t);else if(q(f(this,h)))if(S(f(this,h))){let n=T(f(this,h));n&&Z(n)?we(f(this,h),n,t):n&&Ft(n,t)}else console.log("what do we do with value, in a complete expression")}closeBrace(){f(this,z).pop()}get expression(){return f(this,h)}toJSON(){var e;return(e=f(this,h))==null?void 0:e.toJSON()}};h=new WeakMap,z=new WeakMap;var Pt=(o,e)=>{let t=new Ue,n=o.cursor();do{let{name:i,from:r,to:a}=n;switch(i){case"AndCondition":t.setCondition("and");break;case"OrCondition":t.setCondition("or");break;case"RelationalExpression":t.setCondition();break;case"ArithmeticExpression":t.addExpression(new Xe);break;case"Column":{let u=e.substring(r,a);t.setColumn(u)}break;case"Function":{let u=e.substring(r,a);t.setFunction(u)}break;case"Times":case"Divide":case"Plus":case"Minus":{let u=e.substring(r,a);t.setArithmeticOp(u)}break;case"RelationalOperator":{let u=e.substring(r,a);t.setRelationalOperator(u)}break;case"False":case"True":{let u=e.substring(r,a);t.setValue(u==="true")}break;case"String":t.setValue(e.substring(r+1,a-1));break;case"Number":t.setValue(parseFloat(e.substring(r,a)));break;case"CloseBrace":t.closeBrace();break;default:}}while(n.next());return t.toJSON()};var zn=ye.configure({strict:!0}),Lt=["Number","String"],We=[...Lt,"AndCondition","ArithmeticExpression","BooleanOperator","RelationalOperatorOperator","CallExpression","CloseBrace","Column","Comma","ConditionalExpression","Divide","Equal","If","Minus","OpenBrace","OrCondition","ParenthesizedExpression","Plus","RelationalExpression","RelationalOperator","Times"],Bt=o=>{try{return zn.parse(o),!0}catch{return!1}},Ye=o=>{let{lastChild:e}=o;for(;e&&!We.includes(e.name);)e=e.prevSibling,console.log(e==null?void 0:e.name);return e},Dt=o=>{if((o==null?void 0:o.name)==="RelationalExpression"){let{firstChild:e}=o,t=Ye(o);if((e==null?void 0:e.name)==="Column"&&typeof(t==null?void 0:t.name)=="string"&&Lt.includes(t.name))return!0}return!1};import{HighlightStyle as Un,syntaxHighlighting as Gn,tags as qe}from"@vuu-ui/vuu-codemirror";var Wn=Un.define([{tag:qe.attributeValue,color:"var(--vuuFilterEditor-variableColor);font-weight: bold"},{tag:qe.variableName,color:"var(--vuuFilterEditor-variableColor)"},{tag:qe.comment,color:"green",fontStyle:"italic"}]),Nt=Gn(Wn);import{EditorView as Yn}from"@vuu-ui/vuu-codemirror";var Rt=Yn.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 qn,getNamedParentNode as Ht,getPreviousNode as _n,getValue as H,syntaxTree as Jn}from"@vuu-ui/vuu-codemirror";import{useCallback as Vt}from"react";var Kn=(o,e)=>e?o.map(t=>{var n;return{...t,apply:typeof t.apply=="function"?t.apply:`${e}${(n=t.apply)!=null?n:t.label}`}}):o,jn=o=>o===void 0?!1:["Times","Divide","Plus","Minus"].includes(o.name),ve=o=>({apply:()=>{o==null||o()},label:"Done",boost:10}),te=(o,e)=>{var i;let{lastChild:t}=o,{pos:n}=e;for(;t;)if(t.from<n&&We.includes(t.name)){if(t.name==="ParenthesizedExpression"){let a=(i=t.firstChild)==null?void 0:i.nextSibling;a&&(t=a)}return t}else t=t.prevSibling},It=(o,e)=>{var t;if(o.name==="ArgList"){let n=o.prevSibling;if(n)return H(n,e)}else if(o.name==="OpenBrace"){let n=(t=o.parent)==null?void 0:t.prevSibling;if((n==null?void 0:n.name)==="Function")return H(n,e)}},Qt=(o,e)=>{if(o.name==="RelationalExpression"){let t=Ye(o);if((t==null?void 0:t.name)==="RelationalOperator")return H(t,e)}else{let t=o.prevSibling;if((t==null?void 0:t.name)==="RelationalOperator")return H(t,e)}},Ke=(o,e)=>{var t;if(o.name==="RelationalExpression"){if(((t=o.firstChild)==null?void 0:t.name)==="Column")return H(o.firstChild,e)}else{let n=o.prevSibling;if((n==null?void 0:n.name)==="Column")return H(n,e);if((n==null?void 0:n.name)==="RelationalOperator")return Ke(n,e)}},_e=async(o,e,t,n={})=>{let i=await e.getSuggestions(t,n),{startsWith:r=""}=n;return{from:o.pos-r.length,options:i}},Je=(o,e,t,n,i)=>{let r=te(o,e);switch(r==null?void 0:r.name){case"If":return _e(e,t,"expression",{prefix:"( "});case"OpenBrace":return _e(e,t,"expression");case"Condition":return _e(e,t,"expression",{prefix:", "});case"CloseBrace":if(n){let a=[ve(i)];return{from:e.pos,options:a}}}},er=(o,e)=>{let t=[ve(e)];return{from:o.pos,options:t}},Mt=(o,e)=>{let t=Vt(async(n,i,r={})=>{let a=await o.getSuggestions(i,r),{startsWith:u=""}=r;return{from:n.pos-u.length,options:a}},[o]);return Vt(async n=>{var g,p;let{state:i,pos:r}=n,a=(g=n.matchBefore(/\w*/))!=null?g:{from:0,to:0,text:void 0},l=Jn(i).resolveInner(r,-1),c=i.doc.toString(),d=Bt(c);switch(l.name){case"If":return t(n,"expression",{prefix:"( "});case"Condition":{let s=te(l,n);if((s==null?void 0:s.name)==="Column"){let m=_n(s);if((m==null?void 0:m.name)!=="RelationalOperator")return t(n,"condition-operator",{columnName:H(s,i)})}else if((s==null?void 0:s.name)==="RelationalOperator")return t(n,"expression")}break;case"ConditionalExpression":return Je(l,n,o);case"RelationalExpression":{if(Dt(l))return{from:n.pos,options:qn.concat({label:", <truthy expression>, <falsy expression>",apply:", "})};{let s=Qt(l,i),m=Ke(l,i);if(s)return t(n,"expression");{let v=await o.getSuggestions("condition-operator",{columnName:m});return{from:n.pos,options:v}}}}break;case"RelationalOperator":return t(n,"expression");case"String":{let s=Qt(l,i),m=Ke(l,i),{from:v,to:C}=l;if(C-v===2&&n.pos===v+1){if(m&&s)return t(n,"columnValue",{columnName:m,operator:s,startsWith:a.text})}else if(C-v>2&&n.pos===C)return t(n,"expression",{prefix:", "})}break;case"ArithmeticExpression":{let s=te(l,n);if((s==null?void 0:s.name)==="Column")return t(n,"expression");if(jn(s)){let m=s.name;return t(n,"column",{operator:m})}}break;case"OpenBrace":{let s=It(l,i);return t(n,"expression",{functionName:s})}break;case"ArgList":{let s=It(l,i),m=te(l,n),v=(m==null?void 0:m.name)==="OpenBrace"||(m==null?void 0:m.name)==="Comma"?void 0:",",C=await o.getSuggestions("expression",{functionName:s});return C=v?Kn(C,", "):C,(m==null?void 0:m.name)!=="OpenBrace"&&(m==null?void 0:m.name)!=="Comma"&&(C=[{apply:") ",boost:10,label:"Done - no more arguments"}].concat(C)),{from:n.pos,options:C}}case"Equal":if(c.trim()==="=")return t(n,"expression");break;case"ParenthesizedExpression":case"ColumnDefinitionExpression":if(n.pos===0)return t(n,"expression");{let s=te(l,n);if((s==null?void 0:s.name)==="Column"){if(d){let m=[ve(e.current)],v=H(s,i),C=await o.getSuggestions("operator",{columnName:v});return{from:n.pos,options:m.concat(C)}}}else if((s==null?void 0:s.name)==="CallExpression"){if(d)return{from:n.pos,options:[ve(e.current)]}}else if((s==null?void 0:s.name)==="ArithmeticExpression"){if(d){let m=[ve(e.current)],v=te(s,n);if((v==null?void 0:v.name)==="Column"){let C=H(v,i),x=await o.getSuggestions("operator",{columnName:C});m=m.concat(x)}return{from:n.pos,options:m}}}else if((s==null?void 0:s.name)==="ConditionalExpression")return Je(s,n,o,d,e.current);break}case"Column":if(await o.isPartialMatch("expression",void 0,a.text))return t(n,"expression",{startsWith:a.text});break;case"Comma":{let s=Ht(l);if((s==null?void 0:s.name)==="ConditionalExpression")return t(n,"expression")}break;case"CloseBrace":{let s=Ht(l);if((s==null?void 0:s.name)==="ConditionalExpression")return Je(s,n,o,d,e.current);if((s==null?void 0:s.name)==="ArgList"&&d)return er(n,e.current)}break;default:((p=l==null?void 0:l.prevSibling)==null?void 0:p.name)==="FilterClause"&&console.log("looks like we ight be a or|and operator")}},[t,e,o])};var Oe=o=>{if(o.current==null)throw Error("EditorView not defined");return o.current},lr=()=>"vuuSuggestion",ur=()=>console.log("noooop"),pr=o=>"expressionType"in o,cr=o=>{if(pr(o)){let e=zt("div","expression-type-container"),t=zt("span","expression-type",o.expressionType);return e.appendChild(t),e}else return null},Ut=({onChange:o,onSubmitExpression:e,source:t,suggestionProvider:n})=>{let i=je(null),r=je(ur),a=je(),u=Mt(n,r),[l,c,d]=ar(()=>{let p=()=>{let x=Oe(a),b=x.state.doc.toString(),w=nr(x.state,x.state.doc.length,5e3);if(w){let Q=Pt(w,b);return[b,Q]}else return["",void 0]},s=()=>{Oe(a).setState(C())},m=()=>{let[x,b]=p();e==null||e(x,b)},v=x=>Zt.of([{key:x,run(){return Xt(Oe(a)),!0}}]),C=()=>At.create({doc:t,extensions:[rr,tr({addToOptions:[{render:cr,position:70}],override:[u],optionClass:lr}),Tt(),Zt.of(or),v("ArrowDown"),$t.updateListener.of(x=>{let b=Oe(a);if(x.docChanged){Xt(b);let w=b.state.doc.toString();o==null||o(w)}}),At.transactionFilter.of(x=>x.newDoc.lines>1?[]:x),Rt,Nt]});return r.current=()=>{m()},[C,s,m]},[u,o,e,t]);ir(()=>{if(!i.current)throw Error("editor not in dom");return a.current=new $t({state:l(),parent:i.current}),()=>{var p;(p=a.current)==null||p.destroy()}},[u,l]);let g=sr(()=>{d()},[d]);return{editorRef:i,clearInput:c,onBlur:g}};import{jsx as gr}from"react/jsx-runtime";var dr="vuuColumnExpressionInput",et=mr(({onChange:o,onSubmitExpression:e,source:t="",suggestionProvider:n})=>{let{editorRef:i,onBlur:r}=Ut({onChange:o,onSubmitExpression:e,source:t,suggestionProvider:n});return gr("div",{className:`${dr}`,onBlur:r,ref:i})},(o,e)=>o.source===e.source);et.displayName="ColumnExpressionInput";import{AnnotationType as fr,getRelationalOperators as Cr,numericOperators as vr,stringOperators as xr,toSuggestions as hr}from"@vuu-ui/vuu-codemirror";import{getTypeaheadParams as br,useTypeaheadSuggestions as yr}from"@vuu-ui/vuu-data-react";import{isNumericColumn as ot,isTextColumn as Er}from"@vuu-ui/vuu-utils";import{useCallback as tt,useRef as wr}from"react";var oe=[{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 V}from"@vuu-ui/vuu-utils";var Gt=({name:o,description:e,example:t,params:n,type:i})=>{let r=V("div","vuuFunctionDoc"),a=V("div","function-heading"),u=V("span","function-name",o),l=V("span","param-list",n.description),c=V("span","function-type",i);a.appendChild(u),a.appendChild(l),a.appendChild(c);let d=V("p",void 0,e);if(r.appendChild(a),r.appendChild(d),t){let g=V("div","example-container"),p=V("div","example-expression",t.expression),s=V("div","example-result",t.result);g.appendChild(p),r.appendChild(g),r.appendChild(s)}return r};var Or=[],U=o=>o.map(e=>{var t;return{...e,apply:((t=e.apply)!=null?t:e.label)+" "}}),Sr=(o,{functionName:e,operator:t})=>{if(t)return o.filter(ot);if(e){let n=oe.find(i=>i.name===e);if(n)switch(n.accepts){case"string":return o.filter(Er);case"number":return o.filter(ot);default:return o}}return o},Wt=(o,e)=>Sr(o,e).map(n=>{var r;let i=(r=n.label)!=null?r:n.name;return{apply:e.prefix?`${e.prefix}${n.name}`:n.name,label:i,boost:5,type:"column",expressionType:n.serverDataType}}),kr=[{apply:"* ",boost:2,label:"*",type:"operator"},{apply:"/ ",boost:2,label:"/",type:"operator"},{apply:"+ ",boost:2,label:"+",type:"operator"},{apply:"- ",boost:2,label:"-",type:"operator"}],Tr=o=>o===void 0||ot(o)?kr:Or,Fr=o=>{switch(o.serverDataType){case"string":case"char":return U(xr);case"int":case"long":case"double":return U(vr)}},nt=o=>({apply:`${o.name}( `,boost:2,expressionType:o.type,info:()=>Gt(o),label:o.name,type:"function"}),Pr=o=>{if(o){if(typeof o.accepts=="string")return o.accepts;if(Array.isArray(o.accepts))return o.accepts.every(e=>e==="string")?"string":"any"}return"any"},Lr=oe.map(nt),Br=({functionName:o})=>{if(o){let e=oe.find(n=>n.name===o),t=Pr(e);if(e)switch(t){case"string":return oe.filter(n=>n.type==="string"||n.type==="variable").map(nt);case"number":return oe.filter(n=>n.type==="number"||n.type==="variable").map(nt);default:}}return Lr},Dr={},Yt=({columns:o,table:e})=>{let t=tt(u=>u?o.find(l=>l.name===u):void 0,[o]),n=wr(),i=yr(),r=tt(async(u,l=Dr)=>{let{columnName:c,functionName:d,operator:g,prefix:p}=l;switch(u){case"expression":{let s=await U(Wt(o,{functionName:d,prefix:p})).concat(Br(l));return n.current=s}case"column":{let s=await Wt(o,l);return n.current=U(s)}case"operator":{let s=await Tr(t(c));return n.current=U(s)}case"relational-operator":{let s=await Cr(t(c));return n.current=U(s)}case"condition-operator":{let s=t(c);if(s){let m=await Fr(s);if(m)return n.current=U(m)}}break;case"columnValue":if(c&&g){let s=br(e,c),m=await i(s);return n.current=hr(m,{suffix:""}),n.current.forEach(v=>{v.apply=(C,x,b)=>{let w=new fr,Q=b+x.label.length+1;C.dispatch({changes:{from:b,insert:x.label},selection:{anchor:Q,head:Q},annotations:w.of(x)})}}),n.current}break}return[]},[o,t,i,e]),a=tt(async(u,l,c)=>{let{current:d}=n,g=!1,p=d||await r(u,{columnName:l});if(c&&p)for(let s of p){if(s.label===c)return!1;s.label.startsWith(c)&&(g=!0)}return g},[r]);return{getSuggestions:r,isPartialMatch:a}};import{getCalculatedColumnDetails as Nr,setCalculatedColumnExpression as Rr,setCalculatedColumnName as Hr,setCalculatedColumnType as Vr}from"@vuu-ui/vuu-utils";import{useCallback as Se,useRef as Ir,useState as Qr}from"react";var Mr=o=>{let[e,t,n]=Nr(o);return n===""?{...o,name:`${e}:string:${t}`}:o},qt=({column:o,onChangeName:e})=>{let[t,n]=Qr(Mr(o)),i=Ir(o),r=Se(c=>{i.current=c,n(c)},[]),a=Se(c=>{let{value:d}=c.target,g=Hr(t,d);r(g),e==null||e(g.name)},[t,e,r]),u=Se(c=>{let d=c.trim(),{current:g}=i,p=Rr(g,d);r(p),e==null||e(p.name)},[e,r]),l=Se((c,d)=>{if(typeof d=="string"){let g=Vr(t,d);r(g),e==null||e(g.name)}},[t,e,r]);return{column:t,onChangeExpression:u,onChangeName:a,onChangeType:l}};import{jsx as A,jsxs as ke}from"react/jsx-runtime";var Jt="vuuColumnExpressionPanel",Kt=({column:o,onChangeName:e,tableConfig:t,vuuTable:n})=>{let i=_t(null),{column:r,onChangeExpression:a,onChangeName:u,onChangeType:l}=qt({column:o,onChangeName:e}),c=_t($r(r)),d=Yt({columns:t.columns,table:n}),g=Ur(()=>{var p,s;i.current&&((s=(p=i.current)==null?void 0:p.querySelector("button"))==null||s.focus())},[]);return ke("div",{className:Jt,children:[A("div",{className:"vuuColumnSettingsPanel-header",children:A("span",{children:"Calculation"})}),ke(rt,{"data-field":"column-name",children:[A(st,{children:"Column Name"}),A(zr,{className:"vuuInput",onChange:u,value:Zr(r)})]}),ke(rt,{"data-field":"column-expression",children:[A(st,{children:"Expression"}),A(et,{onChange:a,onSubmitExpression:g,source:c.current,suggestionProvider:d})]}),ke(rt,{"data-field":"type",children:[A(st,{children:"Column type"}),A(Ar,{className:`${Jt}-type`,onSelectionChange:l,ref:i,selected:Xr(r)||null,source:["double","long","string"],width:"100%"})]})]})};import{Dropdown as vs}from"@vuu-ui/vuu-ui-controls";import{getCellRendererOptions as xs,getConfigurationEditor as hs,isColumnTypeRenderer as io,isTypeDescriptor as ao}from"@vuu-ui/vuu-utils";import{FormField as bs,FormFieldLabel as ys}from"@salt-ds/core";import lo from"clsx";import{useCallback as Es,useMemo as pt}from"react";import{FormField as it,FormFieldLabel as at,Input as Gr,Switch as jt}from"@salt-ds/core";import{getTypeFormattingFromColumn as Wr}from"@vuu-ui/vuu-utils";import{useCallback as Te,useState as Yr}from"react";import{jsx as ne,jsxs as Fe}from"react/jsx-runtime";var qr="vuuFormattingSettings",Pe=({column:o,onChangeFormatting:e})=>{var l,c,d;let[t,n]=Yr(Wr(o)),i=Te(g=>{(g.key==="Enter"||g.key==="Tab")&&e(t)},[t,e]),r=Te(g=>{let{value:p}=g.target,s=p===""||isNaN(parseInt(p))?void 0:parseInt(p),m={...t,decimals:s};n(m)},[t]),a=Te(g=>{let{checked:p}=g.target,s={...t,alignOnDecimals:p};n(s),e(s)},[t,e]),u=Te(g=>{let{checked:p}=g.target,s={...t,zeroPad:p};n(s),e(s)},[t,e]);return Fe("div",{className:qr,children:[Fe(it,{"data-field":"decimals",children:[ne(at,{children:"Number of decimals"}),ne(Gr,{className:"vuuInput",onChange:r,onKeyDown:i,value:(l=t.decimals)!=null?l:""})]}),Fe(it,{labelPlacement:"left",children:[ne(at,{children:"Align on decimals"}),ne(jt,{checked:(c=t.alignOnDecimals)!=null?c:!1,onChange:a,value:"align-decimals"})]}),Fe(it,{labelPlacement:"left",children:[ne(at,{children:"Zero pad decimals"}),ne(jt,{checked:(d=t.zeroPad)!=null?d:!1,onChange:u,value:"zero-pad"})]})]})};import{useCallback as ls}from"react";import{FormField as us,FormFieldLabel as ps,ToggleButton as cs,ToggleButtonGroup as ms}from"@salt-ds/core";import{isDateTimeColumn as ds,isTypeDescriptor as gs}from"@vuu-ui/vuu-utils";import{useCallback as lt,useMemo as _r,useState as Jr}from"react";import{Dropdown as Kr}from"@vuu-ui/vuu-ui-controls";import{defaultPatternsByType as eo,fallbackDateTimePattern as jr,getTypeFormattingFromColumn as es,supportedDateTimePatterns as ts}from"@vuu-ui/vuu-utils";import{FormField as to,FormFieldLabel as oo,ToggleButton as os,ToggleButtonGroup as ns}from"@salt-ds/core";import{Fragment as as,jsx as xe,jsxs as ut}from"react/jsx-runtime";var no=({column:o,onChangeFormatting:e})=>{var d,g;let t=es(o),{pattern:n=jr}=t,i=_r(()=>is(n),[n]),[r,a]=Jr({time:(d=n.time)!=null?d:eo.time,date:(g=n.date)!=null?g:eo.date}),u=lt(p=>e({...t,pattern:p}),[e,t]),l=lt(p=>(s,m)=>{let v={...n!=null?n:{},[p]:m};a(C=>{var x,b;return{time:(x=v.time)!=null?x:C.time,date:(b=v.date)!=null?b:C.date}}),u(v)},[u,n]),c=lt(p=>{var m,v,C,x;let s=p.currentTarget.value;switch(s){case"time":return u({[s]:(m=n[s])!=null?m:r[s]});case"date":return u({[s]:(v=n[s])!=null?v:r[s]});case"both":return u({time:(C=n.time)!=null?C:r.time,date:(x=n.date)!=null?x:r.date})}},[u,n,r]);return ut(as,{children:[ut(to,{labelPlacement:"left",children:[xe(oo,{children:"Display"}),xe(ns,{className:"vuuToggleButtonGroup",onChange:c,value:i,children:ss.map(p=>xe(os,{value:p,children:p.toUpperCase()},p))})]}),["date","time"].filter(p=>!!n[p]).map(p=>ut(to,{labelPlacement:"left",children:[xe(oo,{children:`${rs[p]} pattern`}),xe(Kr,{onSelectionChange:l(p),selected:n[p],source:ts[p],width:"100%"})]},p))]})},rs={date:"Date",time:"Time"},ss=["date","time","both"];function is(o){return o.time?o.date?"both":"time":"date"}import{jsx as he,jsxs as ro}from"react/jsx-runtime";var fs="vuuLongColumnFormattingSettings",so=o=>{let{column:e,onChangeType:t}=o,n=gs(e.type)?e.type.name:e.type,i=ls(r=>{let a=r.currentTarget.value;t(a)},[t]);return ro("div",{className:fs,children:[ro(us,{children:[he(ps,{children:"Type inferred as"}),he(ms,{className:"vuuToggleButtonGroup",onChange:i,value:n!=null?n:"number",children:Cs.map(r=>he(cs,{value:r,children:r.toUpperCase()},r))})]}),ds(e)?he(no,{...o,column:e}):he(Pe,{...o})]})},Cs=["number","date/time"];import{jsx as re,jsxs as mt}from"react/jsx-runtime";var ct="vuuColumnFormattingPanel",ws=o=>{var e;return(e=o.label)!=null?e:o.name},uo=({availableRenderers:o,className:e,column:t,onChangeFormatting:n,onChangeType:i,onChangeRendering:r,...a})=>{let u=pt(()=>Os({column:t,onChangeFormatting:n,onChangeType:i}),[t,n,i]),l=pt(()=>{let{type:p}=t;if(ao(p)&&io(p.renderer)){let s=xs(p.renderer.name);return hs(s==null?void 0:s.configEditor)}},[t]),c=pt(()=>{let{type:p}=t,[s]=o,m=ao(p)&&io(p.renderer)?p.renderer.name:void 0,v=o.find(C=>C.name===m);return v!=null?v:s},[o,t]),d=Es((p,s)=>{let m={name:s.name};r==null||r(m)},[r]),{serverDataType:g="string"}=t;return mt("div",{...a,className:"vuuColumnSettingsPanel-header",children:[re("div",{children:"Formatting"}),mt(bs,{children:[re(ys,{children:`Renderer (data type ${t.serverDataType})`}),re(vs,{className:lo(`${ct}-renderer`),itemToString:ws,onSelectionChange:d,selected:c,source:o,width:"100%"})]}),mt("div",{className:lo(ct,e,`${ct}-${g}`),children:[u,l?re(l,{column:t,onChangeRendering:r}):null]})]})};function Os(o){let{column:e}=o;switch(e.serverDataType){case"double":case"int":return re(Pe,{...o});case"long":return re(so,{...o});default:return null}}import Ss from"clsx";import{getCalculatedColumnDetails as ks,isCalculatedColumn as Ts}from"@vuu-ui/vuu-utils";import{jsx as G,jsxs as Fs}from"react/jsx-runtime";var se="vuuColumnNameLabel",po=({column:o,onClick:e})=>{if(Ts(o.name)){let[t,n,i]=ks(o),r=t||"name",a="=expression",u=r==="name"?`${se}-placeholder`:void 0,l=i===""?`${se}-placeholder`:void 0;return Fs("div",{className:Ss(se,`${se}-calculated`),onClick:e,children:[G("span",{className:u,children:r}),G("span",{children:":"}),G("span",{children:n||"string"}),G("span",{children:":"}),G("span",{className:l,children:a}),G("span",{className:`${se}-edit`,"data-icon":"edit"})]})}else return G("div",{className:se,children:o.name})};import{getRegisteredCellRenderers as Le,isValidColumnAlignment as Ps,isValidPinLocation as Ls,setCalculatedColumnName as Bs,updateColumnRenderProps as Ds,updateColumnFormatting as Ns,updateColumnType as Rs}from"@vuu-ui/vuu-utils";import{useCallback as F,useEffect as Hs,useMemo as Vs,useRef as Is,useState as co}from"react";var Qs=[{description:"Default formatter for columns with data type integer",label:"Default Renderer (int, long)",name:"default-int"},...Le("int")],Ms=[{description:"Default formatter for columns with data type double",label:"Default Renderer (double)",name:"default-double"},...Le("double")],mo=[{description:"Default formatter for columns with data type string",label:"Default Renderer (string)",name:"default-string"},...Le("string")],As=[...Le("boolean")],$s=o=>{switch(o.serverDataType){case"char":case"string":return mo;case"int":case"long":return Qs;case"double":return Ms;case"boolean":return As;default:return mo}},Zs=o=>{let e=o.closest(".saltFormField");if(e&&e.dataset.field){let{dataset:{field:t}}=e;return t}else throw Error("named form field not found")},Xs=(o,e)=>{if(e.name==="::")return e;{let t=o.find(n=>n.name===e.name);if(t)return t;throw Error(`columns does not contain column ${name}`)}},ie=(o,e)=>({...o,columns:o.columns.map(t=>t.name===e.name?e:t)}),go=({column:o,onCancelCreateColumn:e,onConfigChange:t,onCreateCalculatedColumn:n,tableConfig:i})=>{let[r,a]=co(Xs(i.columns,o)),u=Is(r),[l,c]=co(r.name==="::"),d=F(()=>{u.current=r,c(!0)},[r]);Hs(()=>{a(o),c(o.name==="::")},[o]);let g=Vs(()=>$s(r),[r]),p=F(()=>{t(ie(i,r))},[r,t,i]),s=F(O=>{let E=O.target,Ie=Zs(E),{value:B}=E;switch(Ie){case"column-label":a(P=>({...P,label:B}));break;case"column-name":a(P=>Bs(P,B));break;case"column-width":a(P=>({...P,width:parseInt(B)}));break;case"column-alignment":if(Ps(B)){let P={...r,align:B||void 0};a(P),t(ie(i,P))}break;case"column-pin":if(Ls(B)){let P={...r,pin:B||void 0};a(P),t(ie(i,P));break}}},[r,t,i]),m=F(O=>{a(E=>({...E,name:O}))},[]),v=F(O=>{let E=Ns(r,O);a(E),t(ie(i,E))},[r,t,i]),C=F(O=>{let E=Rs(r,O);a(E),t(ie(i,E))},[r,t,i]),x=F(O=>{if(O){let E=Ds(r,O);a(E),t(ie(i,E))}},[r,t,i]),b=F(({moveBy:O})=>{let{columns:E}=i,Ie=E.indexOf(r)+O,B=E[Ie];B&&a(B)},[r,i]),w=F(()=>{b({moveBy:1})},[b]),Q=F(()=>{b({moveBy:-1})},[b]),He=F(()=>{n(r)},[r,n]),Ve=F(()=>{o.name==="::"?e():(u.current!==void 0&&u.current!==r&&a(u.current),c(!1))},[r,o.name,e]);return{availableRenderers:g,editCalculatedColumn:l,column:r,navigateNextColumn:w,navigatePrevColumn:Q,onCancel:Ve,onChange:s,onChangeCalculatedColumnName:m,onChangeFormatting:v,onChangeRendering:x,onChangeType:C,onEditCalculatedColumn:d,onInputCommit:p,onSave:He}};import{jsx as y,jsxs as I}from"react/jsx-runtime";var $="vuuColumnSettingsPanel",Ys=o=>{let{name:e,label:t}=o;return Gs(e)?t!=null?t:zs(o):t!=null?t:e},Mp=({column:o,onCancelCreateColumn:e,onConfigChange:t,onCreateCalculatedColumn:n,tableConfig:i,vuuTable:r})=>{let a=o.name==="::",{availableRenderers:u,editCalculatedColumn:l,column:c,navigateNextColumn:d,navigatePrevColumn:g,onCancel:p,onChange:s,onChangeCalculatedColumnName:m,onChangeFormatting:v,onChangeRendering:C,onChangeType:x,onEditCalculatedColumn:b,onInputCommit:w,onSave:Q}=go({column:o,onCancelCreateColumn:e,onConfigChange:t,onCreateCalculatedColumn:n,tableConfig:i}),{serverDataType:He,align:Ve=Us(He),pin:O,width:E}=c;return I("div",{className:Ws($,{[`${$}-editing`]:l}),children:[y("div",{className:`${$}-header`,children:y(po,{column:c,onClick:b})}),l?y(Kt,{column:c,onChangeName:m,tableConfig:i,vuuTable:r}):null,I(De,{"data-field":"column-label",children:[y(Ne,{children:"Column Label"}),y(fo,{className:"vuuInput",onChange:s,onCommit:w,value:Ys(c)})]}),I(De,{"data-field":"column-width",children:[y(Ne,{children:"Column Width"}),y(fo,{className:"vuuInput",onChange:s,value:E,onCommit:w})]}),I(De,{"data-field":"column-alignment",children:[y(Ne,{children:"Alignment"}),I(Co,{className:"vuuToggleButtonGroup",onChange:s,value:Ve,children:[y(ae,{"data-icon":"align-left",className:"vuuIconToggleButton",value:"left"}),y(ae,{"data-icon":"align-right",className:"vuuIconToggleButton",value:"right"})]})]}),I(De,{"data-field":"column-pin",children:[y(Ne,{children:"Pin Column"}),I(Co,{className:"vuuToggleButtonGroup",onChange:s,value:O!=null?O:"",children:[y(ae,{className:"vuuIconToggleButton","data-icon":"cross-circle",value:""}),y(ae,{className:"vuuIconToggleButton","data-icon":"pin-left",value:"left"}),y(ae,{className:"vuuIconToggleButton","data-icon":"pin-float",value:"floating"}),y(ae,{className:"vuuIconToggleButton","data-icon":"pin-right",value:"right"})]})]}),y(uo,{availableRenderers:u,column:c,onChangeFormatting:v,onChangeRendering:C,onChangeType:x}),l?I("div",{className:"vuuColumnSettingsPanel-buttonBar","data-align":"right",children:[y(Be,{className:`${$}-buttonCancel`,onClick:p,tabIndex:-1,children:"cancel"}),y(Be,{className:`${$}-buttonSave`,onClick:Q,variant:"cta",children:"save"})]}):I("div",{className:`${$}-buttonBar`,"data-align":a?"right":void 0,children:[y(Be,{className:`${$}-buttonNavPrev`,variant:"secondary","data-icon":"arrow-left",onClick:g,children:"PREVIOUS"}),y(Be,{className:`${$}-buttonNavNext`,variant:"secondary","data-icon":"arrow-right",onClick:d,children:"NEXT"})]})]})};import qs from"clsx";import{useEffect as _s,useState as vo}from"react";import{jsx as le,jsxs as Js}from"react/jsx-runtime";var be="vuuDatasourceStats",dt=new Intl.NumberFormat,_p=({className:o,dataSource:e})=>{let[t,n]=vo(e.range),[i,r]=vo(e.size);_s(()=>{r(e.size),e.on("resize",r),e.on("range",n)},[e]);let a=qs(be,o),u=dt.format(t.from+1),l=dt.format(Math.min(t.to,i)),c=dt.format(i);return Js("div",{className:a,children:[le("span",{className:`${be}-label`,children:"Row count"}),le("span",{className:`${be}-range`,children:u}),le("span",{children:"-"}),le("span",{className:`${be}-range`,children:l}),le("span",{children:"of"}),le("span",{className:`${be}-size`,children:c})]})};import{Button as li,FormField as gt,FormFieldLabel as ft,Input as ui,ToggleButton as ue,ToggleButtonGroup as pi}from"@salt-ds/core";import{updateTableConfig as Ks}from"@vuu-ui/vuu-table";import{addColumnToSubscribedColumns as js,isCalculatedColumn as ei,moveItem as ti,subscribedOnly as oi,useLayoutEffectSkipFirst as ni}from"@vuu-ui/vuu-utils";import{useCallback as Re,useMemo as ri,useState as si}from"react";var ii=(o,e)=>{let t=[];for(let{name:n}of o){let i=e.find(r=>r.name===n);i&&t.push(i)}return t},ai=(o,e)=>o.map(({name:t,serverDataType:n})=>{let i=e.find(r=>r.name===t);return{hidden:i==null?void 0:i.hidden,isCalculated:ei(t),label:i==null?void 0:i.label,name:t,serverDataType:n,subscribed:i!==void 0}}),xo=({availableColumns:o,onConfigChange:e,onDataSourceConfigChange:t,tableConfig:n})=>{let[{availableColumns:i,tableConfig:r},a]=si({availableColumns:o,tableConfig:n}),u=ri(()=>ai(i,r.columns),[i,r.columns]),l=Re((s,m)=>{a(v=>{let C=ti(v.availableColumns,s,m),x=ii(C,r.columns);return{availableColumns:C,tableConfig:{...v.tableConfig,columns:x}}})},[r.columns]),c=Re((s,m,v)=>{let C=u.find(x=>x.name===s);if(m==="subscribed")if(C!=null&&C.subscribed){let x=r.columns.filter(b=>b.name!==s).map(b=>b.name);a(b=>({...b,tableConfig:{...r,columns:r.columns.filter(oi(x))}})),t({columns:x})}else{let x={...r,columns:js(r.columns,i,s)};a(w=>({...w,tableConfig:x}));let b=x.columns.map(w=>w.name);t({columns:b})}else if(C!=null&&C.subscribed){let x=r.columns.find(b=>b.name===s);if(x){let b=Ks(r,{type:"column-prop",property:m,column:x,value:v});a(w=>({...w,tableConfig:b}))}}},[i,u,t,r]),d=Re(s=>{let{value:m}=s.target,v=m==="0"?void 0:m==="1"?"capitalize":"uppercase";a(C=>({...C,tableConfig:{...C.tableConfig,columnFormatHeader:v}}))},[]),g=Re(s=>{let{ariaChecked:m,value:v}=s.target;a(C=>({...C,tableConfig:{...C.tableConfig,[v]:m!=="true"}}))},[]);ni(()=>{e==null||e(r)},[e,r]);let p=r.columnFormatHeader===void 0?0:r.columnFormatHeader==="capitalize"?1:2;return{columnItems:u,columnLabelsValue:p,onChangeColumnLabels:d,onChangeTableAttribute:g,onColumnChange:c,onMoveListItem:l,tableConfig:r}};import{jsx as k,jsxs as W}from"react/jsx-runtime";var Ct="vuuTableSettingsPanel",dc=({availableColumns:o,onAddCalculatedColumn:e,onConfigChange:t,onDataSourceConfigChange:n,onNavigateToColumn:i,tableConfig:r})=>{var s,m,v;let{columnItems:a,columnLabelsValue:u,onChangeColumnLabels:l,onChangeTableAttribute:c,onColumnChange:d,onMoveListItem:g,tableConfig:p}=xo({availableColumns:o,onConfigChange:t,onDataSourceConfigChange:n,tableConfig:r});return W("div",{className:Ct,children:[W(gt,{children:[k(ft,{children:"Column Labels"}),W(pi,{className:"vuuToggleButtonGroup",onChange:l,value:u,children:[k(ue,{className:"vuuIconToggleButton","data-icon":"text-strikethrough",value:0}),k(ue,{className:"vuuIconToggleButton","data-icon":"text-Tt",value:1}),k(ue,{className:"vuuIconToggleButton","data-icon":"text-T",value:2})]})]}),W(gt,{children:[k(ft,{children:"Grid separators"}),W("div",{className:"saltToggleButtonGroup vuuToggleButtonGroup saltToggleButtonGroup-horizontal vuuGridSeparators",children:[k(ue,{className:"vuuIconToggleButton","data-icon":"row-striping",selected:(s=p.zebraStripes)!=null?s:!1,onChange:c,value:"zebraStripes"}),k(ue,{className:"vuuIconToggleButton","data-icon":"row-lines",selected:(m=p.rowSeparators)!=null?m:!1,onChange:c,value:"rowSeparators"}),k(ue,{className:"vuuIconToggleButton","data-icon":"col-lines",selected:(v=p.columnSeparators)!=null?v:!1,onChange:c,value:"columnSeparators"})]})]}),W(gt,{children:[k(ft,{children:"Default Column Width"}),k(ui,{className:"vuuInput"})]}),k(kt,{columnItems:a,onChange:d,onMoveListItem:g,onNavigateToColumn:i}),W("div",{className:`${Ct}-calculatedButtonbar`,children:[k(li,{"data-icon":"plus",onClick:e}),k("span",{className:`${Ct}-calculatedLabel`,children:"Add calculated column"})]})]})};export{Uo as BackgroundCell,on as BackgroundCellConfigurationEditor,Pe as BaseNumericFormattingSettings,yo as CaseValidator,et as ColumnExpressionInput,Kt as ColumnExpressionPanel,uo as ColumnFormattingPanel,kt as ColumnList,We as ColumnNamedTerms,Mp as ColumnSettingsPanel,_p as DataSourceStats,no as DateTimeFormattingSettings,Cn as DropdownCell,En as LookupCell,So as PatternValidator,dc as TableSettingsPanel,Tt as columnExpressionLanguageSupport,Bt as isCompleteExpression,Dt as isCompleteRelationalExpression,Ye as lastNamedChild,Ut as useColumnExpressionEditor,Yt as useColumnExpressionSuggestionProvider,xo as useTableSettings,Pt as walkTree};
3
2
  //# sourceMappingURL=index.js.map