@vuu-ui/vuu-table-extras 0.8.10 → 0.8.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/esm/index.js CHANGED
@@ -1,2 +1,2 @@
1
- var Et=(t,e,o)=>{if(!e.has(t))throw TypeError("Cannot "+o)};var C=(t,e,o)=>(Et(t,e,"read from private field"),o?o.call(t):e.get(t)),P=(t,e,o)=>{if(e.has(t))throw TypeError("Cannot add the same private member more than once");e instanceof WeakSet?e.add(t):e.set(t,o)},F=(t,e,o,n)=>(Et(t,e,"write to private field"),n?n.call(t,o):e.set(t,o),o);import{registerComponent as Go}from"@vuu-ui/vuu-utils";var Uo=t=>typeof t=="string",Xo=(t,e)=>Uo(e)?e===""?!0:t.value==="lower"&&e.toLowerCase()!==e?"value must be all lowercase":t.value==="upper"&&e.toUpperCase()!==e?"value must be all uppercase":!0:"value must be a string";Go("vuu-case",Xo,"data-edit-validator",{});import{registerComponent as _o}from"@vuu-ui/vuu-utils";var Yo=t=>typeof t=="string",Jo="value does not match expected pattern",Zo=(t,e)=>{if(typeof t.value!="string")throw Error("Pattern validation rule must provide pattern");if(Yo(e)){if(e==="")return!0;{let{message:o=Jo}=t;return new RegExp(t.value).test(e)||o}}else return"value must be a string"};_o("vuu-pattern",Zo,"data-edit-validator",{});import{DOWN1 as nn,DOWN2 as rn,isTypeDescriptor as sn,metadataKeys as ln,registerComponent as an,UP1 as un,UP2 as cn}from"@vuu-ui/vuu-utils";import mn from"classnames";import{getMovingValueDirection as qo,isTypeDescriptor as jo,isValidNumber as wt}from"@vuu-ui/vuu-utils";import{useEffect as en,useRef as tn}from"react";var on=[void 0,void 0,void 0,void 0];function Dt(t,e,o){var d;let n=tn(),[r,s,i,l]=n.current||on,{type:u}=o,c=jo(u)?(d=u.formatting)==null?void 0:d.decimals:void 0,m=t===r&&wt(e)&&wt(s)&&o===i?qo(e,l,s,c):"";return en(()=>{n.current=[t,e,o,m]}),m}import{jsx as bn,jsxs as hn}from"react/jsx-runtime";var pn=String.fromCharCode(11014),dn=String.fromCharCode(11015),{KEY:fn}=ln,Te="vuuBackgroundCellDeprecated",ie={ArrowOnly:"arrow",BackgroundOnly:"bg-only",ArrowBackground:"arrow-bg"},gn=t=>sn(t)&&t.renderer&&"flashStyle"in t.renderer?t.renderer.flashStyle:ie.BackgroundOnly,Cn=({column:t,row:e})=>{let{key:o,type:n,valueFormatter:r}=t,s=e[o],i=gn(n),l=Dt(e[fn],s,t),u=i===ie.ArrowOnly||i===ie.ArrowBackground?l===un||l===cn?pn:l===nn||l===rn?dn:null:null,c=l?" "+l:"",m=mn(Te,c,{[`${Te}-arrowOnly`]:i===ie.ArrowOnly,[`${Te}-arrowBackground`]:i===ie.ArrowBackground});return hn("div",{className:m,tabIndex:-1,children:[bn("div",{className:`${Te}-flasher`,children:u}),r(e[t.key])]})};an("background",Cn,"cell-renderer",{description:"Background Cell renderer for VuuTable",label:"Background Cell (deprecated)",serverDataType:["long","int","double"]});import{isColumnTypeRenderer as xn,isTypeDescriptor as yn,isValidNumber as Rt,registerComponent as vn}from"@vuu-ui/vuu-utils";import Tn from"classnames";import{jsx as ze,jsxs as St}from"react/jsx-runtime";var le="vuuProgressCell",En=({column:t,columnMap:e,row:o})=>{let{type:n}=t,r=o[t.key],s=!1,i=0;if(yn(n)&&xn(n.renderer)){let{associatedField:u}=n.renderer;if(u){let c=o[e[u]];if(typeof Rt(r)&&Rt(c))i=Math.min(Math.round(r/c*100),100),i=Math.min(Math.round(r/c*100),100),s=isFinite(i);else{let m=parseFloat(r);if(Number.isFinite(m)){let d=parseFloat(c);Number.isFinite(d)&&(i=Math.min(Math.round(m/d*100),100),s=isFinite(i))}}}else throw Error("ProgressCell associatedField is required to render")}let l=Tn(le,{});return St("div",{className:l,tabIndex:-1,children:[s?St("span",{className:`${le}-track`,children:[ze("span",{className:`${le}-bg`}),ze("span",{className:`${le}-bar`,style:{"--progress-bar-pct":`-${100-i}%`}})]}):null,ze("span",{className:`${le}-text`,children:`${i} %`})]})};vn("vuu.progress",En,"cell-renderer",{description:"Progress formatter",label:"Progress formatter",serverDataType:["long","int","double"]});import{DOWN1 as Mn,DOWN2 as Hn,isTypeDescriptor as On,metadataKeys as An,registerComponent as Ln,UP1 as Nn,UP2 as kn}from"@vuu-ui/vuu-utils";import Fn from"classnames";import{getMovingValueDirection as wn,isTypeDescriptor as Dn,isValidNumber as Pt}from"@vuu-ui/vuu-utils";import{useEffect as Rn,useRef as Sn}from"react";var Pn=[void 0,void 0,void 0,void 0];function Mt(t,e,o){var d;let n=Sn(),[r,s,i,l]=n.current||Pn,{type:u}=o,c=Dn(u)?(d=u.formatting)==null?void 0:d.decimals:void 0,m=t===r&&Pt(e)&&Pt(s)&&o===i?wn(e,l,s,c):"";return Rn(()=>{n.current=[t,e,o,m]}),m}import{jsx as Bn,jsxs as Wn}from"react/jsx-runtime";var In=String.fromCharCode(11014),Kn=String.fromCharCode(11015),{KEY:zn}=An,Ee="vuuBackgroundCell",ae={ArrowOnly:"arrow",BackgroundOnly:"bg-only",ArrowBackground:"arrow-bg"},Vn=t=>On(t)&&t.renderer&&"flashStyle"in t.renderer?t.renderer.flashStyle:ae.BackgroundOnly,$n=({column:t,row:e})=>{let{key:o,type:n,valueFormatter:r}=t,s=e[o],i=Vn(n),l=Mt(e[zn],s,t),u=i===ae.ArrowOnly||i===ae.ArrowBackground?l===Nn||l===kn?In:l===Mn||l===Hn?Kn:null:null,c=l?" "+l:"",m=Fn(Ee,c,{[`${Ee}-arrowOnly`]:i===ae.ArrowOnly,[`${Ee}-arrowBackground`]:i===ae.ArrowBackground});return Wn("div",{className:m,tabIndex:-1,children:[Bn("div",{className:`${Ee}-flasher`,children:u}),r(e[t.key])]})};console.log("register BackgroundCellNext");Ln("background-next",$n,"cell-renderer",{description:"Change background color of cell when value changes",label:"Background Flash",serverDataType:["long","int","double"]});import{List as Qn,ListItem as Gn}from"@vuu-ui/vuu-ui-controls";import{Checkbox as Un}from"@salt-ds/core";import{Switch as Xn}from"@salt-ds/lab";import _n from"classnames";import{useCallback as Yn}from"react";import{jsx as L,jsxs as Ve}from"react/jsx-runtime";var A="vuuColumnList",Ht="vuuColumnListItem",Jn=({className:t,item:e,...o})=>{var n;return Ve(Gn,{...o,className:_n(t,Ht),"data-name":e==null?void 0:e.name,children:[e!=null&&e.isCalculated?L("span",{className:`${A}-icon`,"data-icon":"function"}):L(Xn,{className:`${A}-switch`,checked:e==null?void 0:e.subscribed}),L("span",{className:`${A}-text`,children:(n=e==null?void 0:e.label)!=null?n:e==null?void 0:e.name}),L(Un,{className:`${A}-checkBox`,checked:(e==null?void 0:e.hidden)!==!0,disabled:(e==null?void 0:e.subscribed)!==!0})]})},Ot=({columnItems:t,onChange:e,onMoveListItem:o,...n})=>{let r=Yn(s=>{let i=s.target,l=i.closest(`.${Ht}`),{dataset:{name:u}}=l;if(u){let c=i.closest(`.${A}-switch`),m=i.closest(`.${A}-checkBox`);c?e(u,"subscribed",i.checked):m&&e(u,"hidden",i.checked===!1)}},[e]);return Ve("div",{...n,className:A,children:[L("div",{className:`${A}-header`,children:L("span",{children:"Column Selection"})}),Ve("div",{className:`${A}-colHeadings`,children:[L("span",{children:"Column subscription"}),L("span",{children:"Visibility"})]}),L(Qn,{ListItem:Jn,allowDragDrop:!0,height:"100%",onChange:r,onMoveListItem:o,selectionStrategy:"none",source:t,itemHeight:33})]})};import{getDefaultAlignment as Hs,isCalculatedColumn as Os}from"@vuu-ui/vuu-utils";import{Button as fo,FormField as Ae,FormFieldLabel as Le,ToggleButton as te,ToggleButtonGroup as go}from"@salt-ds/core";import{Dropdown as tr}from"@vuu-ui/vuu-ui-controls";import{FormField as or,FormFieldLabel as nr}from"@salt-ds/core";import Nt from"classnames";import{useMemo as rr}from"react";import{FormField as $e,FormFieldLabel as Be,Input as Zn}from"@salt-ds/core";import{Switch as At}from"@salt-ds/lab";import{getTypeSettingsFromColumn as qn}from"@vuu-ui/vuu-utils";import{useCallback as we,useState as jn}from"react";import{jsx as U,jsxs as De}from"react/jsx-runtime";var er="vuuFormattingSettings",Lt=({column:t,onChange:e})=>{var u;let[o,n]=jn(qn(t)),r=we(c=>{(c.key==="Enter"||c.key==="Tab")&&e(o)},[o,e]),s=we(c=>{let{value:m}=c.target,d=m===""||isNaN(parseInt(m))?void 0:parseInt(m),b={...o,decimals:d};n(b)},[o]),i=we(c=>{let{checked:m}=c.target,d={...o,alignOnDecimals:m};n(d),e(d)},[o,e]),l=we(c=>{let{checked:m}=c.target,d={...o,zeroPad:m};n(d),e(d)},[o,e]);return De("div",{className:er,children:[De($e,{"data-field":"decimals",children:[U(Be,{children:"Number of decimals"}),U(Zn,{className:"vuuInput",onChange:s,onKeyDown:r,value:(u=o.decimals)!=null?u:""})]}),De($e,{labelPlacement:"left",children:[U(Be,{children:"Align on decimals"}),U(At,{checked:o.alignOnDecimals,onChange:i,value:"align-decimals"})]}),De($e,{labelPlacement:"left",children:[U(Be,{children:"Zero pad decimals"}),U(At,{checked:o.zeroPad,onChange:l,value:"zero-pad"})]})]})};import{jsx as ue,jsxs as kt}from"react/jsx-runtime";var We="vuuColumnFormattingPanel",sr=t=>{var e;return(e=t.label)!=null?e:t.name},Ft=({availableRenderers:t,selectedCellRenderer:e,className:o,column:n,onChangeFormatting:r,onChangeRenderer:s,...i})=>{let l=rr(()=>{switch(n.serverDataType){case"double":case"int":case"long":return ue(Lt,{column:n,onChange:r});default:return null}},[n,r]),{serverDataType:u="string"}=n;return kt("div",{...i,className:"vuuColumnSettingsPanel-header",children:[ue("div",{children:"Formatting"}),kt(or,{children:[ue(nr,{children:"Renderer"}),ue(tr,{className:Nt(`${We}-renderer`),itemToString:sr,onSelectionChange:s,selected:e,source:t,width:"100%"})]}),ue("div",{className:Nt(We,o,`${We}-${u}`),children:l})]})};import{getRegisteredCellRenderers as ir,isColumnTypeRenderer as lr,isTypeDescriptor as ar,isValidColumnAlignment as ur,isValidPinLocation as cr,setCalculatedColumnName as mr,updateColumnRenderer as pr,updateColumnType as dr}from"@vuu-ui/vuu-utils";import{useCallback as I,useMemo as fr,useRef as gr,useState as Cr}from"react";var br=[{description:"Default formatter for columns with data type integer",label:"Default Renderer (data type int, long)",name:"default-int"}],hr=[{description:"Default formatter for columns with data type double",label:"Default Renderer (data type double)",name:"default-double"},...ir("double")],It=[{description:"Default formatter for columns with data type string",label:"Default Renderer (data type string)",name:"default-string"}],zt=t=>{switch(t.serverDataType){case"char":case"string":return It;case"int":case"long":return br;case"double":return hr;default:return It}},Kt=(t,e)=>{if(ar(e.type)){let{renderer:n}=e.type;if(lr(n)){let r=t.find(s=>s.name===n.name);if(r)return r}}return zt(e)[0]},xr=t=>{let e=t.closest(".saltFormField");if(e&&e.dataset.field){let{dataset:{field:o}}=e;return o}else throw Error("named form field not found")},yr=(t,e)=>{if(e.name==="::")return e;{let o=t.find(n=>n.name===e.name);if(o)return o;throw Error(`columns does not contain column ${name}`)}},ce=(t,e)=>({...t,columns:t.columns.map(o=>o.name===e.name?e:o)}),Vt=({column:t,onConfigChange:e,onCreateCalculatedColumn:o,tableConfig:n})=>{let[r,s]=Cr(yr(n.columns,t)),i=fr(()=>zt(r),[r]),l=gr(Kt(i,r)),u=I(()=>{e(ce(n,r))},[r,e,n]),c=I(f=>{let h=f.target,v=xr(h),{value:T}=h;switch(v){case"column-label":s(y=>({...y,label:T}));break;case"column-name":s(y=>mr(y,T));break;case"column-width":s(y=>({...y,width:parseInt(T)}));break;case"column-alignment":if(ur(T)){let y={...r,align:T||void 0};s(y),e(ce(n,y))}break;case"column-pin":if(cr(T)){let y={...r,pin:T||void 0};s(y),e(ce(n,y));break}}},[r,e,n]),m=I((f,h)=>{if(h){let v=pr(r,h);l.current=h,s(v),e(ce(n,v))}},[r,e,n]),d=I(f=>{let h=dr(r,f);s(h),e(ce(n,h))},[r,e,n]),b=I(({moveBy:f})=>{let{columns:h}=n,v=h.indexOf(r)+f,T=h[v];T&&(l.current=Kt(i,T),s(T))},[i,r,n]),a=I(()=>{b({moveBy:1})},[b]),p=I(()=>{b({moveBy:-1})},[b]),g=I(f=>{o({...r,...f})},[r,o]);return{availableRenderers:i,selectedCellRenderer:l.current,column:r,navigateNextColumn:a,navigatePrevColumn:p,onChange:c,onChangeFormatting:d,onChangeRenderer:m,onInputCommit:u,onSave:g}};import{Dropdown as Es}from"@vuu-ui/vuu-ui-controls";import{getCalculatedColumnExpression as ws,getCalculatedColumnName as Ds,getCalculatedColumnType as Rs}from"@vuu-ui/vuu-utils";import{Button as st,FormField as it,FormFieldLabel as lt,Input as Ss}from"@salt-ds/core";import{useCallback as Ps,useRef as Ms}from"react";import{autocompletion as Vr,defaultKeymap as $r,EditorState as Br,EditorView as to,ensureSyntaxTree as Wr,keymap as oo,minimalSetup as Qr,startCompletion as no}from"@vuu-ui/vuu-codemirror";import{createEl as ro}from"@vuu-ui/vuu-utils";import{useEffect as Gr,useMemo as Ur,useRef as tt}from"react";import{LanguageSupport as Tr,LRLanguage as Er,styleTags as wr,tags as Se}from"@vuu-ui/vuu-codemirror";import{LRParser as vr}from"@lezer/lr";var Re=vr.deserialize({version:14,states:"&fOVQPOOO!SQPO'#C^OVQPO'#CcQ!pQPOOO#OQPO'#CkO#TQPO'#CrOOQO'#Cy'#CyO#YQPO,58}OVQPO,59QOVQPO,59QOVQPO,59VOVQPO'#CtOOQO,59^,59^OOQO1G.i1G.iOOQO1G.l1G.lO#kQPO1G.lO$fQPO'#CmO%WQQO1G.qOOQO'#C{'#C{O%cQPO,59`OOQO'#Cn'#CnO%wQPO,59XOVQPO,59ZOVQPO,59[OVQPO7+$]OVQPO'#CuO&`QPO1G.zOOQO1G.z1G.zO&hQQO'#C^O&rQQO1G.sO'ZQQO1G.uOOQO1G.v1G.vO'fQPO<<GwO'wQPO,59aOOQO-E6s-E6sOOQO7+$f7+$fOVQPOAN=cO(]QQO1G.lO(tQPOG22}OOQOLD(iLD(iO%wQPO,59QO%wQPO,59Q",stateData:")[~OlOS~ORUOSUOTUOUUOWQO`SOnPO~OWgXZQX[QX]QX^QXeQX~OjQXXQXpQXqQXrQXsQXtQXuQX~PnOZWO[WO]XO^XO~OWYO~OWZO~OX]OZWO[WO]XO^XO~OZWO[WO]Yi^YijYiXYipYiqYirYisYitYiuYieYi~OZWO[WO]XO^XOpdOqdOrdOsdOtdOudO~OehOvfOwgO~OXkOZWO[WO]XO^XOeiO~ORUOSUOTUOUUOWQO`SOnlO~OXsOeiO~OvQXwQX~PnOZxO[xO]yO^yOeaivaiwai~OwgOecivci~OZWO[WO]XO^XOetO~OZWO[WO]XO^XOXiaeia~OZxO[xO]Yi^YieYivYiwYi~OXwOZWO[WO]XO^XO~O`UTn~",goto:"#spPPqPPPPqPPqPPPPqP!R!W!R!RPq!Z!k!nPPP!tP#jmUOQWXYZefghitxyVbYfgRe`mTOQWXYZefghitxyR[TQjcRrjQROQVQS^WxQ_XU`YfgQcZQmeQphQqiQuyRvtQaYQnfRog",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:375});var Dr=Er.define({name:"VuuColumnExpression",parser:Re.configure({props:[wr({Function:Se.variableName,String:Se.string,Or:Se.emphasis,Operator:Se.operator})]})}),$t=()=>new Tr(Dr);var Qe=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}}},Ge=class{constructor(e){this.type="colExpression";this.column=e}toJSON(){return{type:this.type,column:this.column}}},pe,$,Ue=class{constructor(e="unknown"){P(this,pe,[{type:"unknown"},{type:"unknown"}]);P(this,$,void 0);this.type="arithmeticExpression";F(this,$,e)}get op(){return C(this,$)}set op(e){F(this,$,e)}get expressions(){return C(this,pe)}toJSON(){return{type:this.type,op:C(this,$),expressions:C(this,pe)}}};pe=new WeakMap,$=new WeakMap;var J,Xe=class{constructor(e){P(this,J,[]);this.type="callExpression";this.functionName=e}get expressions(){return C(this,J)}get arguments(){return C(this,J)}toJSON(){return{type:this.type,functionName:this.functionName,arguments:C(this,J).map(e=>{var o;return(o=e.toJSON)==null?void 0:o.call(e)})}}};J=new WeakMap;var de,Z,_=class{constructor(){P(this,de,[{type:"unknown"},{type:"unknown"}]);P(this,Z,"unknown");this.type="relationalExpression"}get op(){return C(this,Z)}set op(e){F(this,Z,e)}get expressions(){return C(this,de)}toJSON(){return{type:this.type,op:C(this,Z),expressions:C(this,de)}}};de=new WeakMap,Z=new WeakMap;var fe,q,Y=class{constructor(e){P(this,fe,[{type:"unknown"},{type:"unknown"}]);P(this,q,void 0);this.type="booleanCondition";F(this,q,e)}get op(){return C(this,q)}get expressions(){return C(this,fe)}toJSON(){return{type:this.type,op:C(this,q),expressions:C(this,fe).map(e=>{var o;return(o=e.toJSON)==null?void 0:o.call(e)})}}};fe=new WeakMap,q=new WeakMap;var H,me=class{constructor(e){P(this,H,void 0);this.type="conditionalExpression";F(this,H,[e?new Y(e):new _,{type:"unknown"},{type:"unknown"}])}get expressions(){return C(this,H)}get condition(){return C(this,H)[0]}get truthyExpression(){return C(this,H)[1]}set truthyExpression(e){C(this,H)[1]=e}get falsyExpression(){return C(this,H)[2]}set falsyExpression(e){C(this,H)[2]=e}toJSON(){var e,o,n,r,s;return{type:this.type,condition:(o=(e=this.condition).toJSON)==null?void 0:o.call(e),truthyExpression:this.truthyExpression,falsyExpression:(s=(r=(n=this.falsyExpression)==null?void 0:n.toJSON)==null?void 0:r.call(n))!=null?s:this.falsyExpression}}};H=new WeakMap;var V=t=>t.type==="unknown",Pe=t=>t.type==="arithmeticExpression",Rr=t=>t.type==="callExpression",X=t=>t.type==="conditionalExpression",Sr=t=>t.type==="relationalExpression"||t.type==="booleanCondition";var Pr=t=>t.type==="booleanCondition",Ye=t=>(t==null?void 0:t.type)==="relationalExpression";var S=t=>{if(V(t))return t;if(Ye(t)){let[e,o]=t.expressions;if(w(e))return S(e);if(t.op==="unknown")return t;if(w(o))return S(o)}else if(Sr(t)){let{expressions:e=[]}=t;for(let o of e)if(w(o))return S(o)}else if(X(t)){let{condition:e,truthyExpression:o,falsyExpression:n}=t;if(w(e))return S(e);if(w(o))return S(o);if(w(n))return S(n)}else if(Pe(t)){let{expressions:e=[]}=t;for(let o of e)if(w(o))return S(o)}},Me=(t,e,o)=>{let{expressions:n=[]}=t;if(n.includes(e)){let r=n.indexOf(e);return n.splice(r,1,o),!0}else for(let r of n)if(Me(r,e,o))return!0;return!1},w=t=>V(t)?!0:X(t)?w(t.condition)||w(t.truthyExpression)||w(t.falsyExpression):Ye(t)||Pr(t)?t.op===void 0||t.expressions.some(e=>w(e)):!1,Bt=(t,e)=>{let o=S(t);o?o.expressions?o.expressions.push(e):console.warn("don't know how to treat targetExpression"):console.error("no target expression found")},x,B,_e=class{constructor(){P(this,x,void 0);P(this,B,[])}setCondition(e){if(C(this,x)===void 0)this.addExpression(new me(e));else if(X(C(this,x))){if(w(C(this,x).condition)){let o=e?new Y(e):new _;this.addExpression(o)}else if(V(C(this,x).truthyExpression))C(this,x).truthyExpression=new me(e);else if(w(C(this,x).truthyExpression)){let o=e?new Y(e):new _;this.addExpression(o)}else if(V(C(this,x).falsyExpression))C(this,x).falsyExpression=new me(e);else if(w(C(this,x).falsyExpression)){let o=e?new Y(e):new _;this.addExpression(o)}}else console.error("setCondition called unexpectedly")}addExpression(e){if(C(this,B).length>0){let o=C(this,B).at(-1);o==null||o.arguments.push(e)}else if(C(this,x)===void 0)F(this,x,e);else if(Pe(C(this,x))){let o=S(C(this,x));o&&V(o)&&Me(C(this,x),o,e)}else if(X(C(this,x))&&w(C(this,x))){let o=S(C(this,x));o&&V(o)?Me(C(this,x),o,e):o&&Bt(o,e)}}setFunction(e){let o=new Xe(e);this.addExpression(o),C(this,B).push(o)}setColumn(e){this.addExpression(new Ge(e))}setArithmeticOp(e){let o=e,n=C(this,x);Pe(n)&&(n.op=o)}setRelationalOperator(e){let o=e;if(C(this,x)&&X(C(this,x))){let n=S(C(this,x));Ye(n)?n.op=o:console.error(`no target expression found (op = ${e})`)}}setValue(e){let o=new Qe(e);if(C(this,x)===void 0)F(this,x,o);else if(Pe(C(this,x)))this.addExpression(o);else if(Rr(C(this,x)))C(this,x).arguments.push(o);else if(X(C(this,x)))if(w(C(this,x))){let n=S(C(this,x));n&&V(n)?Me(C(this,x),n,o):n&&Bt(n,o)}else console.log("what do we do with value, in a complete expression")}closeBrace(){C(this,B).pop()}get expression(){return C(this,x)}toJSON(){var e;return(e=C(this,x))==null?void 0:e.toJSON()}};x=new WeakMap,B=new WeakMap;var Wt=(t,e)=>{let o=new _e,n=t.cursor();do{let{name:r,from:s,to:i}=n;switch(r){case"AndCondition":o.setCondition("and");break;case"OrCondition":o.setCondition("or");break;case"RelationalExpression":o.setCondition();break;case"ArithmeticExpression":o.addExpression(new Ue);break;case"Column":{let l=e.substring(s,i);o.setColumn(l)}break;case"Function":{let l=e.substring(s,i);o.setFunction(l)}break;case"Times":case"Divide":case"Plus":case"Minus":{let l=e.substring(s,i);o.setArithmeticOp(l)}break;case"RelationalOperator":{let l=e.substring(s,i);o.setRelationalOperator(l)}break;case"False":case"True":{let l=e.substring(s,i);o.setValue(l==="true")}break;case"String":o.setValue(e.substring(s+1,i-1));break;case"Number":o.setValue(parseFloat(e.substring(s,i)));break;case"CloseBrace":o.closeBrace();break;default:}}while(n.next());return o.toJSON()};var Mr=Re.configure({strict:!0}),Qt=["Number","String"],Je=[...Qt,"AndCondition","ArithmeticExpression","BooleanOperator","RelationalOperatorOperator","CallExpression","CloseBrace","Column","Comma","ConditionalExpression","Divide","Equal","If","Minus","OpenBrace","OrCondition","ParenthesizedExpression","Plus","RelationalExpression","RelationalOperator","Times"],Gt=t=>{try{return Mr.parse(t),!0}catch{return!1}},Ze=t=>{let{lastChild:e}=t;for(;e&&!Je.includes(e.name);)e=e.prevSibling,console.log(e==null?void 0:e.name);return e},Ut=t=>{if((t==null?void 0:t.name)==="RelationalExpression"){let{firstChild:e}=t,o=Ze(t);if((e==null?void 0:e.name)==="Column"&&typeof(o==null?void 0:o.name)=="string"&&Qt.includes(o.name))return!0}return!1};import{HighlightStyle as Hr,syntaxHighlighting as Or,tags as Xt}from"@vuu-ui/vuu-codemirror";var Ar=Hr.define([{tag:Xt.variableName,color:"var(--vuuFilterEditor-variableColor)"},{tag:Xt.comment,color:"green",fontStyle:"italic"}]),_t=Or(Ar);import{EditorView as Lr}from"@vuu-ui/vuu-codemirror";var Yt=Lr.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-tooltip":{background:"var(--vuuFilterEditor-tooltipBackground)",border:"var(--vuuFilterEditor-tooltipBorder)",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 Nr,getNamedParentNode as Jt,getPreviousNode as kr,getValue as N,syntaxTree as Fr}from"@vuu-ui/vuu-codemirror";import{useCallback as Zt}from"react";var Ir=(t,e)=>e?t.map(o=>{var n;return{...o,apply:typeof o.apply=="function"?o.apply:`${e}${(n=o.apply)!=null?n:o.label}`}}):t,Kr=t=>t===void 0?!1:["Times","Divide","Plus","Minus"].includes(t.name),ge=t=>({apply:()=>{t==null||t()},label:"Done",boost:10}),j=(t,e)=>{var r;let{lastChild:o}=t,{pos:n}=e;for(;o;)if(o.from<n&&Je.includes(o.name)){if(o.name==="ParenthesizedExpression"){let i=(r=o.firstChild)==null?void 0:r.nextSibling;i&&(o=i)}return o}else o=o.prevSibling},qt=(t,e)=>{var o;if(t.name==="ArgList"){let n=t.prevSibling;if(n)return N(n,e)}else if(t.name==="OpenBrace"){let n=(o=t.parent)==null?void 0:o.prevSibling;if((n==null?void 0:n.name)==="Function")return N(n,e)}},jt=(t,e)=>{if(t.name==="RelationalExpression"){let o=Ze(t);if((o==null?void 0:o.name)==="RelationalOperator")return N(o,e)}else{let o=t.prevSibling;if((o==null?void 0:o.name)==="RelationalOperator")return N(o,e)}},et=(t,e)=>{var o;if(t.name==="RelationalExpression"){if(((o=t.firstChild)==null?void 0:o.name)==="Column")return N(t.firstChild,e)}else{let n=t.prevSibling;if((n==null?void 0:n.name)==="Column")return N(n,e);if((n==null?void 0:n.name)==="RelationalOperator")return et(n,e)}},qe=async(t,e,o,n={})=>{let r=await e.getSuggestions(o,n),{startsWith:s=""}=n;return{from:t.pos-s.length,options:r}},je=(t,e,o,n,r)=>{let s=j(t,e);switch(console.log(`conditional expression last child ${s==null?void 0:s.name}`),s==null?void 0:s.name){case"If":return qe(e,o,"expression",{prefix:"( "});case"OpenBrace":return qe(e,o,"expression");case"Condition":return qe(e,o,"expression",{prefix:", "});case"CloseBrace":if(n){let i=[ge(r)];return{from:e.pos,options:i}}}},zr=(t,e)=>{let o=[ge(e)];return{from:t.pos,options:o}},eo=(t,e)=>{let o=Zt(async(n,r,s={})=>{let i=await t.getSuggestions(r,s),{startsWith:l=""}=s;return{from:n.pos-l.length,options:i}},[t]);return Zt(async n=>{var d,b;let{state:r,pos:s}=n,i=(d=n.matchBefore(/\w*/))!=null?d:{from:0,to:0,text:void 0},u=Fr(r).resolveInner(s,-1),c=r.doc.toString(),m=Gt(c);switch(u.name){case"If":return console.log("conditional expression If"),o(n,"expression",{prefix:"( "});case"Condition":{let a=j(u,n);if((a==null?void 0:a.name)==="Column"){let p=kr(a);if((p==null?void 0:p.name)!=="RelationalOperator")return o(n,"condition-operator",{columnName:N(a,r)})}else if((a==null?void 0:a.name)==="RelationalOperator")return o(n,"expression");console.log(`condition last child ${a==null?void 0:a.name}`)}break;case"ConditionalExpression":return je(u,n,t);case"RelationalExpression":{if(Ut(u))return{from:n.pos,options:Nr.concat({label:", <truthy expression>, <falsy expression>",apply:", "})};{let a=jt(u,r),p=et(u,r);if(a)return o(n,"expression");{let g=await t.getSuggestions("condition-operator",{columnName:p});return{from:n.pos,options:g}}}}break;case"RelationalOperator":return o(n,"expression");case"String":{let a=jt(u,r),p=et(u,r),{from:g,to:f}=u;if(f-g===2&&n.pos===g+1){if(p&&a)return o(n,"columnValue",{columnName:p,operator:a,startsWith:i.text})}else if(f-g>2&&n.pos===f)return o(n,"expression",{prefix:", "})}break;case"ArithmeticExpression":{let a=j(u,n);if((a==null?void 0:a.name)==="Column")return o(n,"expression");if(Kr(a)){let p=a.name;return o(n,"column",{operator:p})}}break;case"OpenBrace":{let a=qt(u,r);return o(n,"expression",{functionName:a})}break;case"ArgList":{let a=qt(u,r),p=j(u,n),g=(p==null?void 0:p.name)==="OpenBrace"?void 0:",",f=await t.getSuggestions("expression",{functionName:a});return f=g?Ir(f,", "):f,(p==null?void 0:p.name)!=="OpenBrace"&&(p==null?void 0:p.name)!=="Comma"&&(f=[{apply:") ",boost:10,label:"Done - no more arguments"}].concat(f)),{from:n.pos,options:f}}case"Equal":if(c.trim()==="=")return o(n,"expression");break;case"ParenthesizedExpression":case"ColumnDefinitionExpression":if(n.pos===0)return o(n,"expression");{let a=j(u,n);if((a==null?void 0:a.name)==="Column"){if(m){let p=[ge(e.current)],g=N(a,r),f=await t.getSuggestions("operator",{columnName:g});return{from:n.pos,options:p.concat(f)}}}else if((a==null?void 0:a.name)==="CallExpression"){if(m)return{from:n.pos,options:[ge(e.current)]}}else if((a==null?void 0:a.name)==="ArithmeticExpression"){if(m){let p=[ge(e.current)],g=j(a,n);if((g==null?void 0:g.name)==="Column"){let f=N(g,r),h=await t.getSuggestions("operator",{columnName:f});p=p.concat(h)}return{from:n.pos,options:p}}}else if((a==null?void 0:a.name)==="ConditionalExpression")return je(a,n,t,m,e.current);break}case"Column":if(await t.isPartialMatch("expression",void 0,i.text))return o(n,"expression",{startsWith:i.text});break;case"Comma":{let a=Jt(u);if((a==null?void 0:a.name)==="ConditionalExpression")return o(n,"expression")}break;case"CloseBrace":{let a=Jt(u);if((a==null?void 0:a.name)==="ConditionalExpression")return je(a,n,t,m,e.current);if((a==null?void 0:a.name)==="ArgList"&&m)return zr(n,e.current)}break;default:((b=u==null?void 0:u.prevSibling)==null?void 0:b.name)==="FilterClause"&&console.log("looks like we ight be a or|and operator")}},[o,e,t])};var He=t=>{if(t.current==null)throw Error("EditorView not defined");return t.current},Xr=()=>"vuuSuggestion",_r=()=>console.log("noooop"),Yr=t=>"expressionType"in t,Jr=t=>{if(Yr(t)){let e=ro("div","expression-type-container"),o=ro("span","expression-type",t.expressionType);return e.appendChild(o),e}else return null},so=({onChange:t,onSubmitExpression:e,source:o,suggestionProvider:n})=>{let r=tt(null),s=tt(_r),i=tt(),l=eo(n,s),[u,c]=Ur(()=>{let m=()=>{let g=He(i),f=g.state.doc.toString(),h=Wr(g.state,g.state.doc.length,5e3);if(h){let v=Wt(h,f);return[f,v]}else return["",void 0]},d=()=>{He(i).setState(p())},b=()=>{let[g,f]=m();e==null||e(g,f)},a=g=>oo.of([{key:g,run(){return no(He(i)),!0}}]),p=()=>Br.create({doc:o,extensions:[Qr,Vr({addToOptions:[{render:Jr,position:70}],override:[l],optionClass:Xr}),$t(),oo.of($r),a("ArrowDown"),to.updateListener.of(g=>{let f=He(i);if(g.docChanged){no(f);let h=f.state.doc.toString();t==null||t(h)}}),Yt,_t]});return s.current=()=>{b()},[p,d]},[l,t,e,o]);return Gr(()=>{if(!r.current)throw Error("editor not in dom");return i.current=new to({state:u(),parent:r.current}),()=>{var m;(m=i.current)==null||m.destroy()}},[l,u]),{editorRef:r,clearInput:c}};import{jsx as qr}from"react/jsx-runtime";var Zr="vuuColumnExpressionInput",io=({onChange:t,onSubmitExpression:e,source:o="",suggestionProvider:n})=>{let{editorRef:r}=so({onChange:t,onSubmitExpression:e,source:o,suggestionProvider:n});return qr("div",{className:`${Zr}`,ref:r})};import{AnnotationType as jr,getRelationalOperators as es,numericOperators as ts,stringOperators as os,toSuggestions as ns}from"@vuu-ui/vuu-codemirror";import{getTypeaheadParams as rs,useTypeaheadSuggestions as ss}from"@vuu-ui/vuu-data-react";import{isNumericColumn as nt,isTextColumn as is}from"@vuu-ui/vuu-utils";import{useCallback as ot,useRef as ls}from"react";var ee=[{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:"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 k}from"@vuu-ui/vuu-utils";var lo=({name:t,description:e,example:o,params:n,type:r})=>{let s=k("div","vuuFunctionDoc"),i=k("div","function-heading"),l=k("span","function-name",t),u=k("span","param-list",n.description),c=k("span","function-type",r);i.appendChild(l),i.appendChild(u),i.appendChild(c);let m=k("p",void 0,e);if(s.appendChild(i),s.appendChild(m),o){let d=k("div","example-container","Example:"),b=k("div","example-expression",o.expression),a=k("div","example-result",o.result);d.appendChild(b),d.appendChild(a),s.appendChild(d)}return s};var as=[],W=t=>t.map(e=>{var o;return{...e,apply:((o=e.apply)!=null?o:e.label)+" "}}),us=(t,{functionName:e,operator:o})=>{if(o)return t.filter(nt);if(e){let n=ee.find(r=>r.name===e);if(n)switch(n.accepts){case"string":return t.filter(is);case"number":return t.filter(nt);default:return t}}return t},ao=(t,e)=>us(t,e).map(n=>{var s;let r=(s=n.label)!=null?s:n.name;return{apply:e.prefix?`${e.prefix}${r}`:r,label:r,boost:5,type:"column",expressionType:n.serverDataType}}),cs=[{apply:"* ",boost:2,label:"*",type:"operator"},{apply:"/ ",boost:2,label:"/",type:"operator"},{apply:"+ ",boost:2,label:"+",type:"operator"},{apply:"- ",boost:2,label:"-",type:"operator"}],ms=t=>t===void 0||nt(t)?cs:as,ps=t=>{switch(t.serverDataType){case"string":case"char":return W(os);case"int":case"long":case"double":return W(ts)}},rt=t=>({apply:`${t.name}( `,boost:2,expressionType:t.type,info:()=>lo(t),label:t.name,type:"function"}),ds=t=>{if(t){if(typeof t.accepts=="string")return t.accepts;if(Array.isArray(t.accepts))return t.accepts.every(e=>e==="string")?"string":"any"}return"any"},fs=ee.map(rt),gs=({functionName:t})=>{if(t){let e=ee.find(n=>n.name===t),o=ds(e);if(e)switch(o){case"string":return ee.filter(n=>n.type==="string"||n.type==="variable").map(rt);case"number":return ee.filter(n=>n.type==="number"||n.type==="variable").map(rt);default:}}return fs},Cs={},uo=({columns:t,table:e})=>{let o=ot(l=>l?t.find(u=>u.name===l):void 0,[t]),n=ls(),r=ss(),s=ot(async(l,u=Cs)=>{let{columnName:c,functionName:m,operator:d,prefix:b}=u;switch(l){case"expression":{let a=await W(ao(t,{functionName:m,prefix:b})).concat(gs(u));return n.current=a}case"column":{let a=await ao(t,u);return n.current=W(a)}case"operator":{let a=await ms(o(c));return n.current=W(a)}case"relational-operator":{let a=await es(o(c));return n.current=W(a)}case"condition-operator":{let a=o(c);if(a){let p=await ps(a);if(p)return n.current=W(p)}}break;case"columnValue":if(c&&d){let a=rs(e,c),p=await r(a);return n.current=ns(p,{suffix:""}),n.current.forEach(g=>{g.apply=(f,h,v)=>{let T=new jr,y=v+h.label.length+1;f.dispatch({changes:{from:v,insert:h.label},selection:{anchor:y,head:y},annotations:T.of(h)})}}),n.current}break}return[]},[t,o,r,e]),i=ot(async(l,u,c)=>{let{current:m}=n,d=!1,b=m||await s(l,{columnName:u});if(c&&b)for(let a of b){if(a.label===c)return!1;a.label.startsWith(c)&&(d=!0)}return d},[s]);return{getSuggestions:s,isPartialMatch:i}};import{getCalculatedColumnDetails as co,setCalculatedColumnExpression as bs,setCalculatedColumnName as hs,setCalculatedColumnType as xs}from"@vuu-ui/vuu-utils";import{useCallback as Oe,useRef as ys,useState as vs}from"react";var Ts=t=>{let[e,o,n]=co(t);return n===""?{...t,name:`${e}:${o}:string`}:t},mo=({column:t,onSave:e})=>{let[o,n]=vs(Ts(t)),r=ys(co(o)[1]),s=Oe(c=>{let{value:m}=c.target;n(d=>hs(d,m))},[]),i=Oe(c=>{r.current=c.trim()},[]),l=Oe((c,m)=>{typeof m=="string"&&n(d=>xs(d,m))},[]),u=Oe(()=>{let c=bs(o,r.current);n(c),e(c)},[o,e]);return{column:o,onChangeExpression:i,onChangeName:s,onChangeType:l,onSave:u}};import{jsx as M,jsxs as be}from"react/jsx-runtime";var Ce="vuuColumnExpressionPanel",po=({column:t,onSave:e,tableConfig:o,vuuTable:n})=>{let r=Ms(null),{column:s,onChangeExpression:i,onChangeName:l,onChangeType:u,onSave:c}=mo({column:t,onSave:e}),m=uo({columns:o.columns,table:n}),d=Ps(()=>{requestAnimationFrame(()=>{var b,a;(a=(b=r.current)==null?void 0:b.querySelector("button"))==null||a.focus()})},[]);return be("div",{className:Ce,children:[M("div",{className:"vuuColumnSettingsPanel-header",children:M("span",{children:"Calculation"})}),be(it,{"data-field":"column-name",children:[M(lt,{children:"Column Name"}),M(Ss,{className:"vuuInput",onChange:l,value:Ds(s)})]}),be(it,{"data-field":"column-expression",children:[M(lt,{children:"Expression"}),M(io,{onChange:i,onSubmitExpression:d,source:ws(s),suggestionProvider:m})]}),be(it,{"data-field":"type",children:[M(lt,{children:"Column type"}),M(Es,{className:`${Ce}-type`,onSelectionChange:u,ref:r,selected:Rs(s)||null,source:["double","long","string"],width:"100%"})]}),be("div",{className:"vuuColumnSettingsPanel-buttonBar","data-align":"right",children:[M(st,{className:`${Ce}-buttonCancel`,tabIndex:-1,children:"cancel"}),M(st,{className:`${Ce}-buttonApply`,tabIndex:-1,children:"apply"}),M(st,{className:`${Ce}-buttonSave`,onClick:c,variant:"cta",children:"save"})]})]})};import{VuuInput as Co}from"@vuu-ui/vuu-ui-controls";import{jsx as E,jsxs as K}from"react/jsx-runtime";var he="vuuColumnSettingsPanel",Cm=({column:t,onConfigChange:e,onCreateCalculatedColumn:o,tableConfig:n,vuuTable:r})=>{let s=t.name==="::",{availableRenderers:i,selectedCellRenderer:l,column:u,navigateNextColumn:c,navigatePrevColumn:m,onChange:d,onChangeFormatting:b,onChangeRenderer:a,onInputCommit:p,onSave:g}=Vt({column:t,onConfigChange:e,onCreateCalculatedColumn:o,tableConfig:n}),{serverDataType:f,align:h=Hs(f),name:v,label:T=v,pin:y,width:R}=u;return K("div",{className:he,children:[E("div",{className:`${he}-header`,children:E("span",{children:v})}),K(Ae,{"data-field":"column-label",children:[E(Le,{children:"Column Label"}),E(Co,{className:"vuuInput",onChange:d,onCommit:p,value:T})]}),K(Ae,{"data-field":"column-width",children:[E(Le,{children:"Column Width"}),E(Co,{className:"vuuInput",onChange:d,value:R,onCommit:p})]}),K(Ae,{"data-field":"column-alignment",children:[E(Le,{children:"Alignment"}),K(go,{className:"vuuToggleButtonGroup",onChange:d,value:h,children:[E(te,{"data-icon":"align-left",className:"vuuIconToggleButton",value:"left"}),E(te,{"data-icon":"align-right",className:"vuuIconToggleButton",value:"right"})]})]}),K(Ae,{"data-field":"column-pin",children:[E(Le,{children:"Pin Column"}),K(go,{className:"vuuToggleButtonGroup",onChange:d,value:y!=null?y:"",children:[E(te,{className:"vuuIconToggleButton","data-icon":"cross-circle",value:""}),E(te,{className:"vuuIconToggleButton","data-icon":"pin-left",value:"left"}),E(te,{className:"vuuIconToggleButton","data-icon":"pin-float",value:"floating"}),E(te,{className:"vuuIconToggleButton","data-icon":"pin-right",value:"right"})]})]}),E(Ft,{availableRenderers:i,selectedCellRenderer:l,column:u,onChangeFormatting:b,onChangeRenderer:a}),Os(u.name)?E(po,{column:u,onSave:g,tableConfig:n,vuuTable:r}):K("div",{className:`${he}-buttonBar`,"data-align":s?"right":void 0,children:[E(fo,{className:`${he}-buttonNavPrev`,variant:"secondary","data-icon":"arrow-left",onClick:m,children:"PREVIOUS"}),E(fo,{className:`${he}-buttonNavNext`,variant:"secondary","data-icon":"arrow-right",onClick:c,children:"NEXT"})]})]})};import{useEffect as As,useState as bo}from"react";import Ls from"classnames";import{jsx as oe,jsxs as Ns}from"react/jsx-runtime";var xe="vuuDatasourceStats",at=new Intl.NumberFormat,Sm=({className:t,dataSource:e})=>{let[o,n]=bo(e.range),[r,s]=bo(e.size);As(()=>{s(e.size),e.on("resize",s),e.on("range",n)},[e]);let i=Ls(xe,t),l=at.format(o.from),u=at.format(o.to-1),c=at.format(r);return Ns("div",{className:i,children:[oe("span",{className:`${xe}-label`,children:"Row count"}),oe("span",{className:`${xe}-range`,children:l}),oe("span",{children:"-"}),oe("span",{className:`${xe}-range`,children:u}),oe("span",{children:"of"}),oe("span",{className:`${xe}-size`,children:c})]})};import{Button as Vl,FormField as bt,FormFieldLabel as ht,Input as $l,ToggleButton as re,ToggleButtonGroup as Bl}from"@salt-ds/core";import{useLayoutEffectSkipFirst as Ol}from"@vuu-ui/vuu-layout";import{useCallback as km,useRef as Fm}from"react";import{jsx as zm}from"react/jsx-runtime";import{isNumericColumn as Bm}from"@vuu-ui/vuu-utils";import{removeColumnFromFilter as Gm}from"@vuu-ui/vuu-utils";import{addGroupColumn as Xm,addSortColumn as _m,AggregationType as ks,setAggregations as Ym,setSortColumn as Jm}from"@vuu-ui/vuu-utils";var{Average:Zm,Count:qm,Distinct:jm,High:ep,Low:tp,Sum:op}=ks;import{ContextMenuProvider as bb}from"@vuu-ui/vuu-popups";import{Button as xb,useIdMemo as yb}from"@salt-ds/core";import{buildColumnMap as jd,getColumnStyle as ef,isGroupColumn as tf,metadataKeys as pi,notHidden as of,visibleColumnAtIndex as nf}from"@vuu-ui/vuu-utils";import{useCallback as lf,useMemo as af}from"react";import{isGroupColumn as vo,isJsonColumn as Js,isJsonGroup as Zs,metadataKeys as qs,notHidden as js,RowSelected as ei}from"@vuu-ui/vuu-utils";import ti from"classnames";import{memo as oi,useCallback as To}from"react";import{getColumnStyle as Fs,metadataKeys as Is}from"@vuu-ui/vuu-utils";import{EditableLabel as Ks}from"@vuu-ui/vuu-ui-controls";import zs from"classnames";import{memo as Vs,useCallback as $s,useRef as Bs,useState as ho}from"react";import{jsx as Ne}from"react/jsx-runtime";var{KEY:xo}=Is,ut=Vs(({className:t,column:e,columnMap:o,onClick:n,row:r})=>{let s=Bs(null),{align:i,CellRenderer:l,key:u,pin:c,editable:m,resizing:d,valueFormatter:b}=e,[a,p]=ho(!1),g=b(r[u]),[f,h]=ho(g),v=()=>{var O;(O=s.current)==null||O.focus()},T=O=>{O.key==="Enter"&&p(!0)},y=$s(O=>{n==null||n(O,e)},[e,n]),R=()=>{p(!0)},se=(O="",vt="",Wo=!0,Qo=!1)=>{var Tt;p(!1),Qo?h(O):vt!==O&&h(vt),Wo===!1&&((Tt=s.current)==null||Tt.focus())},Ke=zs(t,{vuuAlignRight:i==="right",vuuPinFloating:c==="floating",vuuPinLeft:c==="left",vuuPinRight:c==="right","vuuTableCell-resizing":d})||void 0,yt=Fs(e);return m?Ne("div",{className:Ke,"data-editable":!0,role:"cell",style:yt,onKeyDown:T,children:Ne(Ks,{editing:a,value:f,onChange:h,onMouseDownCapture:v,onEnterEditMode:R,onExitEditMode:se,onKeyDown:T,ref:s,tabIndex:0},"title")}):Ne("div",{className:Ke,role:"cell",style:yt,onClick:y,children:l?Ne(l,{column:e,columnMap:o,row:r}):g})},Ws);ut.displayName="TableCell";function Ws(t,e){return t.column===e.column&&t.onClick===e.onClick&&t.row[xo]===e.row[xo]&&t.row[t.column.key]===e.row[e.column.key]}import{getColumnStyle as Qs,getGroupValueAndOffset as Gs,metadataKeys as Us}from"@vuu-ui/vuu-utils";import{useCallback as Xs}from"react";import{jsx as ct,jsxs as Ys}from"react/jsx-runtime";var{IS_LEAF:_s}=Us,yo=({column:t,onClick:e,row:o})=>{let{columns:n}=t,[r,s]=Gs(n,o),i=Xs(m=>{e==null||e(m,t)},[t,e]),l=Qs(t),u=o[_s],c=Array(s).fill(0).map((m,d)=>ct("span",{className:"vuuTableGroupCell-spacer"},d));return Ys("div",{className:"vuuTableGroupCell vuuPinLeft",onClick:u?void 0:i,role:"cell",style:l,children:[c,u?null:ct("span",{className:"vuuTableGroupCell-toggle","data-icon":"triangle-right"}),ct("span",{children:r})]})};import{jsx as wo,jsxs as ui}from"react/jsx-runtime";var{IDX:ni,IS_EXPANDED:ri,SELECTED:si}=qs,{True:Eo,First:ii,Last:li}=ei,ne="vuuTableRow",ai=oi(function({columnMap:e,columns:o,offset:n,onClick:r,onToggleGroup:s,virtualColSpan:i=0,row:l}){let{[ni]:u,[ri]:c,[si]:m}=l,d=ti(ne,{[`${ne}-even`]:u%2===0,[`${ne}-expanded`]:c,[`${ne}-selected`]:m&Eo,[`${ne}-selectedStart`]:m&ii,[`${ne}-selectedEnd`]:m&li}),b=To(p=>{let g=p.shiftKey,f=p.ctrlKey||p.metaKey;r==null||r(l,g,f)},[r,l]),a=To((p,g)=>{(vo(g)||Zs(g,l))&&(p.stopPropagation(),s==null||s(l,g))},[s,l]);return ui("div",{"aria-selected":m&Eo?!0:void 0,"aria-rowindex":u,className:d,onClick:b,role:"row",style:{transform:`translate3d(0px, ${n}px, 0px)`},children:[i>0?wo("div",{role:"cell",style:{width:i}}):null,o.filter(js).map(p=>{let g=vo(p),f=Js(p);return wo(g?yo:ut,{column:p,columnMap:e,onClick:g||f?a:void 0,row:l},p.name)})]})});import Xp from"classnames";import{useRef as Jp}from"react";import{useCallback as $p,useRef as Bp}from"react";import{jsx as td,jsxs as od}from"react/jsx-runtime";import Od from"classnames";import{useCallback as kd,useRef as Fd}from"react";import ld from"classnames";import{jsx as cd,jsxs as md}from"react/jsx-runtime";import{useContextMenu as Bd}from"@vuu-ui/vuu-popups";import{useContextMenu as hd}from"@vuu-ui/vuu-popups";import yd from"classnames";import{useCallback as Ed}from"react";import{jsx as Rd}from"react/jsx-runtime";import{jsx as Gd,jsxs as Ud}from"react/jsx-runtime";import{jsx as gf,jsxs as Cf}from"react/jsx-runtime";var{RENDER_IDX:df}=pi;import{useContextMenu as kC}from"@vuu-ui/vuu-popups";import{applySort as IC,buildColumnMap as KC,isJsonGroup as zC,metadataKeys as Si,moveItemDeprecated as VC}from"@vuu-ui/vuu-utils";import{useCallback as WC,useEffect as QC,useMemo as GC,useRef as UC,useState as XC}from"react";import{isVuuFeatureAction as xf,isVuuFeatureInvocation as yf}from"@vuu-ui/vuu-data-react";import{getFullRange as Tf,metadataKeys as di,WindowRange as Ef}from"@vuu-ui/vuu-utils";import{useCallback as Df,useEffect as Rf,useMemo as Sf,useRef as Pf,useState as Mf}from"react";var{SELECTED:Hf}=di;import{useDragDropNext as Lf}from"@vuu-ui/vuu-ui-controls";import{useCallback as Ff,useRef as If}from"react";import{withinRange as Qf}from"@vuu-ui/vuu-utils";import{useCallback as Yf,useEffect as Jf,useLayoutEffect as Zf,useMemo as qf,useRef as jf}from"react";function fi(t,...e){let o=new Set(t);for(let n of e)for(let r of n)o.add(r);return o}var Do="ArrowUp",Ro="ArrowDown",So="ArrowLeft",Po="ArrowRight";var Mo="Home",Ho="End",Oo="PageUp",Ao="PageDown";var gi=new Set(["Enter","Delete"," "]),Ci=new Set(["Tab"]),bi=new Set(["ArrowRight","ArrowLeft"]),hi=new Set([Mo,Ho,Oo,Ao,Ro,So,Po,Do]),xi=new Set(["F1","F2","F3","F4","F5","F6","F7","F8","F9","F10","F11","F12"]),zf=fi(gi,hi,bi,xi,Ci);import{isValidNumber as dg}from"@vuu-ui/vuu-utils";import{useCallback as Cg,useMemo as bg,useRef as hg,useState as xg}from"react";import{useCallback as ig,useEffect as lg,useRef as ag}from"react";var yi=new Map,vi=(t,e,o)=>{switch(o){case"height":return e.height;case"clientHeight":return t.clientHeight;case"clientWidth":return t.clientWidth;case"contentHeight":return e.contentHeight;case"contentWidth":return e.contentWidth;case"scrollHeight":return Math.ceil(t.scrollHeight);case"scrollWidth":return Math.ceil(t.scrollWidth);case"width":return e.width;default:return 0}},ug=new ResizeObserver(t=>{for(let e of t){let{target:o,borderBoxSize:n,contentBoxSize:r}=e,s=yi.get(o);if(s){let[{blockSize:i,inlineSize:l}]=n,[{blockSize:u,inlineSize:c}]=r,{onResize:m,measurements:d}=s,b=!1;for(let[a,p]of Object.entries(d)){let g=vi(o,{height:i,width:l,contentHeight:u,contentWidth:c},a);g!==p&&(b=!0,d[a]=g)}b&&m&&m(d)}}});import{deselectItem as wg,isRowSelected as Dg,metadataKeys as Ti,selectItem as Rg}from"@vuu-ui/vuu-utils";import{useCallback as Pg,useRef as Mg}from"react";var{IDX:Hg}=Ti;import{applyFilterToColumns as Lg,applyGroupByToColumns as Ng,applySortToColumns as kg,findColumn as Fg,getCellRenderer as Ig,getColumnName as Kg,getTableHeadings as zg,getValueFormatter as Vg,isFilteredColumn as $g,isGroupColumn as Bg,isPinned as Wg,isTypeDescriptor as Qg,metadataKeys as Ei,updateColumn as Gg,sortPinnedColumns as Ug,stripFilterFromColumns as Xg,moveItemDeprecated as _g,getDefaultAlignment as Yg}from"@vuu-ui/vuu-utils";import{useReducer as qg}from"react";var jg=Ei.count;import{useCallback as oC,useRef as nC}from"react";import{useCallback as iC,useMemo as lC,useRef as aC}from"react";import{actualRowPositioning as cC,virtualRowPositioning as fC}from"@vuu-ui/vuu-utils";import{getColumnsInViewport as bC,itemsChanged as hC}from"@vuu-ui/vuu-utils";import{useCallback as vC,useEffect as TC,useMemo as EC,useRef as wC,useState as DC}from"react";var{KEY:ib,IS_EXPANDED:lb,IS_LEAF:ab}=Si;import Db from"classnames";import{isDataLoading as Mb}from"@vuu-ui/vuu-utils";import{jsx as Ob,jsxs as Ab}from"react/jsx-runtime";import Mi from"classnames";import{isJsonAttribute as Hi,metadataKeys as Oi,registerComponent as Ai}from"@vuu-ui/vuu-utils";import{jsx as mt,jsxs as Ii}from"react/jsx-runtime";var ye="vuuJsonCell",{IS_EXPANDED:Li,KEY:Ni}=Oi,ki=t=>{let e=t.lastIndexOf("|");return e===-1?"":t.slice(e+1)},Fi=({column:t,row:e})=>{let{key:o}=t,n=e[o],r=!1;Hi(n)&&(n=n.slice(0,-1),r=!0);let s=ki(e[Ni]),i=Mi({[`${ye}-name`]:s===n,[`${ye}-value`]:s!==n,[`${ye}-group`]:r});if(r){let l=e[Li]?"minus-box":"plus-box";return Ii("span",{className:i,children:[mt("span",{className:`${ye}-value`,children:n}),mt("span",{className:`${ye}-toggle`,"data-icon":l})]})}else return n?mt("span",{className:i,children:n}):null};Ai("json",Fi,"cell-renderer",{description:"JSON formatter",label:"JSON formatter",serverDataType:"json"});import rx from"classnames";import{useRef as ix}from"react";import{useCallback as oh,useRef as nh}from"react";import{jsx as ih}from"react/jsx-runtime";import{useCallback as ch,useRef as mh,useState as ph}from"react";import{getColumnStyle as Ki}from"@vuu-ui/vuu-utils";import zi from"classnames";import{useMemo as Vi}from"react";var Q=(t,e,o)=>Vi(()=>{let n=zi(e,{vuuPinFloating:t.pin==="floating",vuuPinLeft:t.pin==="left",vuuPinRight:t.pin==="right",vuuEndPin:o&&t.endPin,[`${e}-editable`]:t.editable,[`${e}-right`]:t.align==="right"}),r=Ki(t);return{className:n,style:r}},[t,e,o]);import wh from"classnames";import{useCallback as Ph}from"react";import{jsx as Oh,jsxs as Ah}from"react/jsx-runtime";import{jsx as Vh,jsxs as $h}from"react/jsx-runtime";import{jsx as _h,jsxs as Yh}from"react/jsx-runtime";import{jsx as dx,jsxs as fx}from"react/jsx-runtime";import{createElement as px}from"react";import hx from"classnames";import{useCallback as yx,useRef as vx,useState as Tx}from"react";import{OverflowContainer as Sx,useLayoutEffectSkipFirst as Px}from"@vuu-ui/vuu-layout";import{jsx as Ax,jsxs as Lx}from"react/jsx-runtime";import{createElement as Ox}from"react";import{useCallback as ly,useRef as ay}from"react";import{useContextMenu as zx}from"@vuu-ui/vuu-popups";import $x from"classnames";import{useCallback as Gx,useRef as Ux,useState as Xx}from"react";import{jsx as Jx}from"react/jsx-runtime";import dy from"classnames";import{jsx as hy,jsxs as xy}from"react/jsx-runtime";import{ContextMenuProvider as $E}from"@vuu-ui/vuu-popups";import{isGroupColumn as WE,metadataKeys as fl,notHidden as QE}from"@vuu-ui/vuu-utils";import UE from"classnames";import{useRef as JE}from"react";import{isGroupColumn as Ko,isJsonColumn as qi,isJsonGroup as ji,metadataKeys as el,notHidden as tl,RowSelected as ol}from"@vuu-ui/vuu-utils";import nl from"classnames";import{memo as rl,useCallback as zo}from"react";import{metadataKeys as Bi}from"@vuu-ui/vuu-utils";import{useCallback as Wi}from"react";import{jsx as ko}from"react/jsx-runtime";var{IDX:Qi}=Bi,Gi="vuuTableNextCell",Fo=({column:t,columnMap:e,onDataEdited:o,row:n})=>{let{className:r,style:s}=Q(t,Gi),{CellRenderer:i,name:l,valueFormatter:u}=t,c=e[l],m=Wi(d=>(o==null||o(n[Qi],l,d),!0),[l,o,n]);return ko("div",{className:r,role:"cell",style:s,children:i?ko(i,{column:t,columnMap:e,onCommit:m,row:n}):u(n[c])})};import{getGroupValueAndOffset as Ui,metadataKeys as Xi}from"@vuu-ui/vuu-utils";import{useCallback as _i}from"react";import Yi from"classnames";import{jsx as ft,jsxs as Zi}from"react/jsx-runtime";var{IS_LEAF:Ji}=Xi,dt="vuuTableNextGroupCell",Io=({column:t,onClick:e,row:o})=>{let{columns:n}=t,[r,s]=Ui(n,o),{className:i,style:l}=Q(t,dt),u=_i(d=>{e==null||e(d,t)},[t,e]),c=o[Ji],m=Array(s).fill(0).map((d,b)=>ft("span",{className:`${dt}-spacer`},b));return Zi("div",{className:Yi(i,"vuuTableNextCell"),role:"cell",style:l,onClick:c?void 0:u,children:[m,c?null:ft("span",{className:`${dt}-toggle`,"data-icon":"triangle-right"}),ft("span",{children:r})]})};import{jsx as gt}from"react/jsx-runtime";import{createElement as al}from"react";var{IDX:sl,IS_EXPANDED:il,SELECTED:ll}=el,z="vuuTableNextRow",Vo=rl(({className:t,columnMap:e,columns:o,row:n,offset:r,onClick:s,onDataEdited:i,onToggleGroup:l,zebraStripes:u=!1,...c})=>{let{[sl]:m,[il]:d,[ll]:b}=n,a=zo(y=>{let R=y.shiftKey,se=y.ctrlKey||y.metaKey;s==null||s(n,R,se)},[s,n]),{True:p,First:g,Last:f}=ol,h=nl(z,t,{[`${z}-even`]:u&&m%2===0,[`${z}-expanded`]:d,[`${z}-selected`]:b&p,[`${z}-selectedStart`]:b&g,[`${z}-selectedEnd`]:b&f}),v={transform:`translate3d(0px, ${r}px, 0px)`},T=zo((y,R)=>{(Ko(R)||ji(R,n))&&(y.stopPropagation(),l==null||l(n,R))},[l,n]);return al("div",{...c,"aria-rowindex":n[0],key:`row-${n[0]}`,role:"row",className:h,onClick:a,style:v},gt("span",{className:`${z}-selectionDecorator vuuStickyLeft`}),o.filter(tl).map(y=>{let R=Ko(y),se=qi(y);return gt(R?Io:Fo,{column:y,columnMap:e,onClick:R||se?T:void 0,onDataEdited:i,row:n},y.key)}),gt("span",{className:`${z}-selectionDecorator vuuStickyRight`}))});Vo.displayName="Row";import{useLayoutEffectSkipFirst as ZT}from"@vuu-ui/vuu-layout";import{useDragDropNext as eE}from"@vuu-ui/vuu-ui-controls";import{useCallback as dv,useEffect as fv,useMemo as gv,useRef as Cv}from"react";import{applySort as nE,buildColumnMap as rE,isGroupColumn as sE,isJsonGroup as iE,isValidNumber as lE,metadataKeys as pl,updateColumn as aE,visibleColumnAtIndex as uE}from"@vuu-ui/vuu-utils";import{useCallback as fE,useEffect as gE,useMemo as CE,useState as bE}from"react";var ke=(t,e)=>{switch(e.type){case"col-size":return{...t,columns:t.columns.map(o=>o.name===e.column.name?{...o,width:e.width}:o)};case"column-prop":return{...t,columns:t.columns.map(o=>o.name===e.column.name?{...o,[e.property]:e.value}:o)};default:return t}};import{isVuuFeatureAction as Sv,isVuuFeatureInvocation as Pv}from"@vuu-ui/vuu-data-react/src";import{getFullRange as Hv,NULL_RANGE as Ov}from"@vuu-ui/vuu-utils";import{useCallback as Lv,useEffect as Nv,useMemo as kv,useRef as Fv,useState as Iv}from"react";import{metadataKeys as ul,WindowRange as Tv}from"@vuu-ui/vuu-utils";var{SELECTED:Ev}=ul;import{useMemo as $v,useRef as Bv}from"react";import{buildColumnMap as Gv}from"@vuu-ui/vuu-utils";import{useCallback as _v}from"react";import{useContextMenu as Jv}from"@vuu-ui/vuu-popups";import{isCharacterKey as eT}from"@vuu-ui/vuu-utils";import{useCallback as nT}from"react";import{applyFilterToColumns as lT,applyGroupByToColumns as aT,applySortToColumns as uT,getCellRenderer as cT,getTableHeadings as mT,getValueFormatter as pT,hasValidationRules as dT,isFilteredColumn as fT,isGroupColumn as gT,isPinned as CT,isTypeDescriptor as bT,logger as cl,metadataKeys as ml,moveItem as hT,sortPinnedColumns as xT,stripFilterFromColumns as yT,subscribedOnly as vT}from"@vuu-ui/vuu-utils";import{buildValidationChecker as ET}from"@vuu-ui/vuu-ui-controls";import{useReducer as RT}from"react";var{info:ST}=cl("useTableModel");var PT=ml.count;import{useCallback as OT,useRef as AT}from"react";import{useCallback as kT,useEffect as FT,useRef as IT}from"react";var{KEY:AE,IS_EXPANDED:LE,IS_LEAF:NE}=pl;import{MeasuredContainer as tw,useId as ow}from"@vuu-ui/vuu-layout";import{jsx as lw,jsxs as uw}from"react/jsx-runtime";import{createElement as aw}from"react";var{IDX:rw,RENDER_IDX:sw}=fl;import{Dropdown as gl}from"@vuu-ui/vuu-ui-controls";import{isColumnTypeRenderer as Cl,isTypeDescriptor as bl,registerComponent as hl}from"@vuu-ui/vuu-utils";import{useCallback as xl,useState as yl}from"react";import{jsx as wl}from"react/jsx-runtime";var vl="vuuTableDropdownCell",Tl=["Enter"," "],El=({column:t,columnMap:e,row:o})=>{var u,c,m;let n=bl(t.type)&&Cl((u=t.type)==null?void 0:u.renderer)?(m=(c=t.type)==null?void 0:c.renderer)==null?void 0:m.values:[],r=e[t.name],[s,i]=yl(o[r]),l=xl((d,b)=>{b&&i(b)},[]);return wl(gl,{className:vl,onSelectionChange:l,openKeys:Tl,selected:s,source:n,width:t.width-17})};hl("dropdown-cell",El,"cell-renderer",{});import{registerComponent as Dl}from"@vuu-ui/vuu-utils";import{Input as Rl}from"@salt-ds/core";import{useEditableText as Sl}from"@vuu-ui/vuu-ui-controls";import Pl from"classnames";import{jsx as Ct}from"react/jsx-runtime";var Fe="vuuTableInputCell",Ml=()=>(console.warn("onCommit handler has not been provided to InputCell cell renderer"),!0),Hl=({column:t,columnMap:e,onCommit:o=Ml,row:n})=>{let r=e[t.name],{align:s="left",clientSideEditValidationCheck:i,valueFormatter:l}=t,{warningMessage:u,...c}=Sl({initialValue:l(n[r]),onCommit:o,clientSideEditValidationCheck:i}),m=u&&s==="left"?Ct("span",{className:`${Fe}-icon`,"data-icon":"error"}):void 0,d=u&&s==="right"?Ct("span",{className:`${Fe}-icon`,"data-icon":"error"}):void 0;return Ct(Rl,{...c,className:Pl(Fe,{[`${Fe}-error`]:u!==void 0}),endAdornment:m,startAdornment:d})};Dl("input-cell",Hl,"cell-renderer",{});import{addColumnToSubscribedColumns as Al,isCalculatedColumn as Ll,moveItem as Nl,subscribedOnly as kl}from"@vuu-ui/vuu-utils";import{useCallback as Ie,useMemo as Fl,useState as Il}from"react";var Kl=(t,e)=>{let o=[];for(let{name:n}of t){let r=e.find(s=>s.name===n);r&&o.push(r)}return o},zl=(t,e)=>t.map(({name:o,serverDataType:n})=>{let r=e.find(s=>s.name===o);return{hidden:r==null?void 0:r.hidden,isCalculated:Ll(o),label:r==null?void 0:r.label,name:o,serverDataType:n,subscribed:r!==void 0}}),Bo=({availableColumns:t,onConfigChange:e,onDataSourceConfigChange:o,tableConfig:n})=>{let[{availableColumns:r,tableConfig:s},i]=Il({availableColumns:t,tableConfig:n}),l=Fl(()=>zl(r,s.columns),[r,s.columns]),u=Ie((a,p)=>{i(g=>{let f=Nl(g.availableColumns,a,p),h=Kl(f,s.columns);return{availableColumns:f,tableConfig:{...g.tableConfig,columns:h}}})},[s.columns]),c=Ie((a,p,g)=>{let f=l.find(h=>h.name===a);if(p==="subscribed")if(f!=null&&f.subscribed){let h=s.columns.filter(v=>v.name!==a).map(v=>v.name);i(v=>({...v,tableConfig:{...s,columns:s.columns.filter(kl(h))}})),o({columns:h})}else{let h={...s,columns:Al(s.columns,r,a)};i(T=>({...T,tableConfig:h}));let v=h.columns.map(T=>T.name);o({columns:v})}else if(f!=null&&f.subscribed){let h=s.columns.find(v=>v.name===a);if(h){let v=ke(s,{type:"column-prop",property:p,column:h,value:g});i(T=>({...T,tableConfig:v}))}}},[r,l,o,s]),m=Ie(a=>{let{value:p}=a.target,g=p==="0"?void 0:p==="1"?"capitalize":"uppercase";i(f=>({...f,tableConfig:{...f.tableConfig,columnFormatHeader:g}}))},[]),d=Ie(a=>{let{ariaChecked:p,value:g}=a.target;i(f=>({...f,tableConfig:{...f.tableConfig,[g]:p!=="true"}}))},[]);Ol(()=>{e==null||e(s)},[e,s]);let b=s.columnFormatHeader===void 0?0:s.columnFormatHeader==="capitalize"?1:2;return{columnItems:l,columnLabelsValue:b,onChangeColumnLabels:m,onChangeTableAttribute:d,onColumnChange:c,onMoveListItem:u,tableConfig:s}};import{jsx as D,jsxs as G}from"react/jsx-runtime";var xt="vuuTableSettingsPanel",lD=({availableColumns:t,onAddCalculatedColumn:e,onConfigChange:o,onDataSourceConfigChange:n,tableConfig:r,...s})=>{let{columnItems:i,columnLabelsValue:l,onChangeColumnLabels:u,onChangeTableAttribute:c,onColumnChange:m,onMoveListItem:d,tableConfig:b}=Bo({availableColumns:t,onConfigChange:o,onDataSourceConfigChange:n,tableConfig:r});return G("div",{...s,className:xt,children:[G(bt,{children:[D(ht,{children:"Column Labels"}),G(Bl,{className:"vuuToggleButtonGroup",onChange:u,value:l,children:[D(re,{className:"vuuIconToggleButton","data-icon":"text-strikethrough",value:0}),D(re,{className:"vuuIconToggleButton","data-icon":"text-Tt",value:1}),D(re,{className:"vuuIconToggleButton","data-icon":"text-T",value:2})]})]}),G(bt,{children:[D(ht,{children:"Grid separators"}),G("div",{className:"saltToggleButtonGroup vuuToggleButtonGroup saltToggleButtonGroup-horizontal vuuGridSeparators",children:[D(re,{className:"vuuIconToggleButton","data-icon":"row-striping",selected:b.zebraStripes,onChange:c,value:"zebraStripes"}),D(re,{className:"vuuIconToggleButton","data-icon":"row-lines",selected:b.rowSeparators,onChange:c,value:"rowSeparators"}),D(re,{className:"vuuIconToggleButton","data-icon":"col-lines",selected:b.columnSeparators,onChange:c,value:"columnSeparators"})]})]}),G(bt,{children:[D(ht,{children:"Default Column Width"}),D($l,{className:"vuuInput"})]}),D(Ot,{columnItems:i,onChange:m,onMoveListItem:d}),G("div",{className:`${xt}-calculatedButtonbar`,children:[D(Vl,{"data-icon":"plus",onClick:e}),D("span",{className:`${xt}-calculatedLabel`,children:"Add calculated column"})]})]})};import{useLayoutProviderDispatch as Wl}from"@vuu-ui/vuu-layout";import{getCalculatedColumnType as Ql}from"@vuu-ui/vuu-utils";import{useCallback as ve,useRef as Gl,useState as Ul}from"react";var dl=({availableColumns:t,onAvailableColumnsChange:e,onConfigChange:o,onCreateCalculatedColumn:n,onDataSourceConfigChange:r,tableConfig:s})=>{let i=Wl(),l=Gl(),[u,c]=Ul(t),m=ve((p,g,f)=>{i({type:"set-props",path:"#context-panel",props:{expanded:!0,content:{type:p,props:f},title:g}})},[i]),d=ve(p=>{let g=u.concat({name:p.name,serverDataType:Ql(p)});c(g),e==null||e(g),requestAnimationFrame(()=>{var f;(f=l.current)==null||f.call(l)}),n(p)},[u,e,n]),b=ve(p=>{m("ColumnSettings","Column Settings",{column:p.column,onConfigChange:o,onCreateCalculatedColumn:d,tableConfig:s,vuuTable:p.vuuTable})},[d,o,m,s]),a=ve(()=>{b({column:{name:"::",serverDataType:"string"},type:"columnSettings",vuuTable:{module:"SIMUL",table:"instruments"}})},[b]);return l.current=ve(()=>{m("TableSettings","DataGrid Settings",{availableColumns:u!=null?u:s.columns.map(({name:p,serverDataType:g})=>({name:p,serverDataType:g})),onAddCalculatedColumn:a,onConfigChange:o,onDataSourceConfigChange:r,tableConfig:s})},[u,a,o,r,m,s]),{showColumnSettingsPanel:b,showTableSettingsPanel:l.current}};export{$n as BackgroundCell,Xo as CaseValidator,io as ColumnExpressionInput,po as ColumnExpressionPanel,Ft as ColumnFormattingPanel,Ot as ColumnList,Je as ColumnNamedTerms,Cm as ColumnSettingsPanel,Sm as DataSourceStats,Lt as NumericFormattingSettings,Zo as PatternValidator,lD as TableSettingsPanel,$t as columnExpressionLanguageSupport,Gt as isCompleteExpression,Ut as isCompleteRelationalExpression,Ze as lastNamedChild,so as useColumnExpressionEditor,uo as useColumnExpressionSuggestionProvider,dl as useTableAndColumnSettings,Bo as useTableSettings,Wt as walkTree};
1
+ var Wo=(e,t,o)=>{if(!t.has(e))throw TypeError("Cannot "+o)};var T=(e,t,o)=>(Wo(e,t,"read from private field"),o?o.call(e):t.get(e)),$=(e,t,o)=>{if(t.has(e))throw TypeError("Cannot add the same private member more than once");t instanceof WeakSet?t.add(e):t.set(e,o)},te=(e,t,o,n)=>(Wo(e,t,"write to private field"),n?n.call(e,o):t.set(e,o),o);import{registerComponent as ms}from"@vuu-ui/vuu-utils";var ps=e=>typeof e=="string",ds=(e,t)=>ps(t)?t===""?!0:e.value==="lower"&&t.toLowerCase()!==t?"value must be all lowercase":e.value==="upper"&&t.toUpperCase()!==t?"value must be all uppercase":!0:"value must be a string";ms("vuu-case",ds,"data-edit-validator",{});import{registerComponent as fs}from"@vuu-ui/vuu-utils";var gs=e=>typeof e=="string",Cs="value does not match expected pattern",bs=(e,t)=>{if(typeof e.value!="string")throw Error("Pattern validation rule must provide pattern");if(gs(t)){if(t==="")return!0;{let{message:o=Cs}=e;return new RegExp(e.value).test(t)||o}}else return"value must be a string"};fs("vuu-pattern",bs,"data-edit-validator",{});import{DOWN1 as Es,DOWN2 as ws,isTypeDescriptor as Ds,metadataKeys as Rs,registerComponent as Ss,UP1 as Ps,UP2 as Ms}from"@vuu-ui/vuu-utils";import Hs from"classnames";import{getMovingValueDirection as hs,isTypeDescriptor as xs,isValidNumber as Qo}from"@vuu-ui/vuu-utils";import{useEffect as ys,useRef as vs}from"react";var Ts=[void 0,void 0,void 0,void 0];function Go(e,t,o){var p;let n=vs(),[r,s,i,l]=n.current||Ts,{type:a}=o,u=xs(a)?(p=a.formatting)==null?void 0:p.decimals:void 0,m=e===r&&Qo(t)&&Qo(s)&&o===i?hs(t,l,s,u):"";return ys(()=>{n.current=[e,t,o,m]}),m}import{jsx as Fs,jsxs as Is}from"react/jsx-runtime";var Os=String.fromCharCode(11014),As=String.fromCharCode(11015),{KEY:Ls}=Rs,tt="vuuBackgroundCellDeprecated",Ne={ArrowOnly:"arrow",BackgroundOnly:"bg-only",ArrowBackground:"arrow-bg"},Ns=e=>Ds(e)&&e.renderer&&"flashStyle"in e.renderer?e.renderer.flashStyle:Ne.BackgroundOnly,ks=({column:e,row:t})=>{let{key:o,type:n,valueFormatter:r}=e,s=t[o],i=Ns(n),l=Go(t[Ls],s,e),a=i===Ne.ArrowOnly||i===Ne.ArrowBackground?l===Ps||l===Ms?Os:l===Es||l===ws?As:null:null,u=l?" "+l:"",m=Hs(tt,u,{[`${tt}-arrowOnly`]:i===Ne.ArrowOnly,[`${tt}-arrowBackground`]:i===Ne.ArrowBackground});return Is("div",{className:m,tabIndex:-1,children:[Fs("div",{className:`${tt}-flasher`,children:a}),r(t[e.key])]})};Ss("background",ks,"cell-renderer",{description:"Background Cell renderer for VuuTable",label:"Background Cell (deprecated)",serverDataType:["long","int","double"]});import{isColumnTypeRenderer as Ks,isTypeDescriptor as zs,isValidNumber as Uo,registerComponent as Vs}from"@vuu-ui/vuu-utils";import $s from"classnames";import{jsx as Mt,jsxs as Xo}from"react/jsx-runtime";var ke="vuuProgressCell",Bs=({column:e,columnMap:t,row:o})=>{let{type:n}=e,r=o[e.key],s=!1,i=0;if(zs(n)&&Ks(n.renderer)){let{associatedField:a}=n.renderer;if(a){let u=o[t[a]];if(typeof Uo(r)&&Uo(u))i=Math.min(Math.round(r/u*100),100),i=Math.min(Math.round(r/u*100),100),s=isFinite(i);else{let m=parseFloat(r);if(Number.isFinite(m)){let p=parseFloat(u);Number.isFinite(p)&&(i=Math.min(Math.round(m/p*100),100),s=isFinite(i))}}}else throw Error("ProgressCell associatedField is required to render")}let l=$s(ke,{});return Xo("div",{className:l,tabIndex:-1,children:[s?Xo("span",{className:`${ke}-track`,children:[Mt("span",{className:`${ke}-bg`}),Mt("span",{className:`${ke}-bar`,style:{"--progress-bar-pct":`-${100-i}%`}})]}):null,Mt("span",{className:`${ke}-text`,children:`${i} %`})]})};Vs("vuu.progress",Bs,"cell-renderer",{description:"Progress formatter",label:"Progress formatter",serverDataType:["long","int","double"]});import{DOWN1 as _s,DOWN2 as Ys,isTypeDescriptor as Js,metadataKeys as Zs,registerComponent as qs,UP1 as js,UP2 as ei}from"@vuu-ui/vuu-utils";import ti from"classnames";import{getMovingValueDirection as Ws,isTypeDescriptor as Qs,isValidNumber as _o}from"@vuu-ui/vuu-utils";import{useEffect as Gs,useRef as Us}from"react";var Xs=[void 0,void 0,void 0,void 0];function Yo(e,t,o){var p;let n=Us(),[r,s,i,l]=n.current||Xs,{type:a}=o,u=Qs(a)?(p=a.formatting)==null?void 0:p.decimals:void 0,m=e===r&&_o(t)&&_o(s)&&o===i?Ws(t,l,s,u):"";return Gs(()=>{n.current=[e,t,o,m]}),m}import{jsx as li,jsxs as ai}from"react/jsx-runtime";var oi=String.fromCharCode(11014),ni=String.fromCharCode(11015),{KEY:ri}=Zs,ot="vuuBackgroundCell",Fe={ArrowOnly:"arrow",BackgroundOnly:"bg-only",ArrowBackground:"arrow-bg"},si=e=>Js(e)&&e.renderer&&"flashStyle"in e.renderer?e.renderer.flashStyle:Fe.BackgroundOnly,ii=({column:e,row:t})=>{let{key:o,type:n,valueFormatter:r}=e,s=t[o],i=si(n),l=Yo(t[ri],s,e),a=i===Fe.ArrowOnly||i===Fe.ArrowBackground?l===js||l===ei?oi:l===_s||l===Ys?ni:null:null,u=l?" "+l:"",m=ti(ot,u,{[`${ot}-arrowOnly`]:i===Fe.ArrowOnly,[`${ot}-arrowBackground`]:i===Fe.ArrowBackground});return ai("div",{className:m,tabIndex:-1,children:[li("div",{className:`${ot}-flasher`,children:a}),r(t[e.key])]})};console.log("register BackgroundCellNext");qs("background-next",ii,"cell-renderer",{description:"Change background color of cell when value changes",label:"Background Flash",serverDataType:["long","int","double"]});import{List as ui,ListItem as ci}from"@vuu-ui/vuu-ui-controls";import{Checkbox as mi}from"@salt-ds/core";import{Switch as pi}from"@salt-ds/lab";import di from"classnames";import{useCallback as fi}from"react";import{jsx as Z,jsxs as Ht}from"react/jsx-runtime";var J="vuuColumnList",Jo="vuuColumnListItem",gi=({className:e,item:t,...o})=>{var n;return Ht(ci,{...o,className:di(e,Jo),"data-name":t==null?void 0:t.name,children:[t!=null&&t.isCalculated?Z("span",{className:`${J}-icon`,"data-icon":"function"}):Z(pi,{className:`${J}-switch`,checked:t==null?void 0:t.subscribed}),Z("span",{className:`${J}-text`,children:(n=t==null?void 0:t.label)!=null?n:t==null?void 0:t.name}),Z(mi,{className:`${J}-checkBox`,checked:(t==null?void 0:t.hidden)!==!0,disabled:(t==null?void 0:t.subscribed)!==!0})]})},Zo=({columnItems:e,onChange:t,onMoveListItem:o,...n})=>{let r=fi(s=>{let i=s.target,l=i.closest(`.${Jo}`),{dataset:{name:a}}=l;if(a){let u=i.closest(`.${J}-switch`),m=i.closest(`.${J}-checkBox`);u?t(a,"subscribed",i.checked):m&&t(a,"hidden",i.checked===!1)}},[t]);return Ht("div",{...n,className:J,children:[Z("div",{className:`${J}-header`,children:Z("span",{children:"Column Selection"})}),Ht("div",{className:`${J}-colHeadings`,children:[Z("span",{children:"Column subscription"}),Z("span",{children:"Visibility"})]}),Z(ui,{ListItem:gi,allowDragDrop:!0,height:"100%",onChange:r,onMoveListItem:o,selectionStrategy:"none",source:e,itemHeight:33})]})};import{getDefaultAlignment as Yl,isCalculatedColumn as Jl}from"@vuu-ui/vuu-utils";import{Button as Nn,FormField as mt,FormFieldLabel as pt,ToggleButton as Re,ToggleButtonGroup as kn}from"@salt-ds/core";import{Dropdown as yi}from"@vuu-ui/vuu-ui-controls";import{FormField as vi,FormFieldLabel as Ti}from"@salt-ds/core";import en from"classnames";import{useMemo as Ei}from"react";import{FormField as Ot,FormFieldLabel as At,Input as Ci}from"@salt-ds/core";import{Switch as qo}from"@salt-ds/lab";import{getTypeSettingsFromColumn as bi}from"@vuu-ui/vuu-utils";import{useCallback as nt,useState as hi}from"react";import{jsx as be,jsxs as rt}from"react/jsx-runtime";var xi="vuuFormattingSettings",jo=({column:e,onChange:t})=>{var a;let[o,n]=hi(bi(e)),r=nt(u=>{(u.key==="Enter"||u.key==="Tab")&&t(o)},[o,t]),s=nt(u=>{let{value:m}=u.target,p=m===""||isNaN(parseInt(m))?void 0:parseInt(m),g={...o,decimals:p};n(g)},[o]),i=nt(u=>{let{checked:m}=u.target,p={...o,alignOnDecimals:m};n(p),t(p)},[o,t]),l=nt(u=>{let{checked:m}=u.target,p={...o,zeroPad:m};n(p),t(p)},[o,t]);return rt("div",{className:xi,children:[rt(Ot,{"data-field":"decimals",children:[be(At,{children:"Number of decimals"}),be(Ci,{className:"vuuInput",onChange:s,onKeyDown:r,value:(a=o.decimals)!=null?a:""})]}),rt(Ot,{labelPlacement:"left",children:[be(At,{children:"Align on decimals"}),be(qo,{checked:o.alignOnDecimals,onChange:i,value:"align-decimals"})]}),rt(Ot,{labelPlacement:"left",children:[be(At,{children:"Zero pad decimals"}),be(qo,{checked:o.zeroPad,onChange:l,value:"zero-pad"})]})]})};import{jsx as Ie,jsxs as tn}from"react/jsx-runtime";var Lt="vuuColumnFormattingPanel",wi=e=>{var t;return(t=e.label)!=null?t:e.name},on=({availableRenderers:e,selectedCellRenderer:t,className:o,column:n,onChangeFormatting:r,onChangeRenderer:s,...i})=>{let l=Ei(()=>{switch(n.serverDataType){case"double":case"int":case"long":return Ie(jo,{column:n,onChange:r});default:return null}},[n,r]),{serverDataType:a="string"}=n;return tn("div",{...i,className:"vuuColumnSettingsPanel-header",children:[Ie("div",{children:"Formatting"}),tn(vi,{children:[Ie(Ti,{children:"Renderer"}),Ie(yi,{className:en(`${Lt}-renderer`),itemToString:wi,onSelectionChange:s,selected:t,source:e,width:"100%"})]}),Ie("div",{className:en(Lt,o,`${Lt}-${a}`),children:l})]})};import{getRegisteredCellRenderers as Di,isColumnTypeRenderer as Ri,isTypeDescriptor as Si,isValidColumnAlignment as Pi,isValidPinLocation as Mi,setCalculatedColumnName as Hi,updateColumnRenderer as Oi,updateColumnType as Ai}from"@vuu-ui/vuu-utils";import{useCallback as oe,useMemo as Li,useRef as Ni,useState as ki}from"react";var Fi=[{description:"Default formatter for columns with data type integer",label:"Default Renderer (data type int, long)",name:"default-int"}],Ii=[{description:"Default formatter for columns with data type double",label:"Default Renderer (data type double)",name:"default-double"},...Di("double")],nn=[{description:"Default formatter for columns with data type string",label:"Default Renderer (data type string)",name:"default-string"}],sn=e=>{switch(e.serverDataType){case"char":case"string":return nn;case"int":case"long":return Fi;case"double":return Ii;default:return nn}},rn=(e,t)=>{if(Si(t.type)){let{renderer:n}=t.type;if(Ri(n)){let r=e.find(s=>s.name===n.name);if(r)return r}}return sn(t)[0]},Ki=e=>{let t=e.closest(".saltFormField");if(t&&t.dataset.field){let{dataset:{field:o}}=t;return o}else throw Error("named form field not found")},zi=(e,t)=>{if(t.name==="::")return t;{let o=e.find(n=>n.name===t.name);if(o)return o;throw Error(`columns does not contain column ${name}`)}},Ke=(e,t)=>({...e,columns:e.columns.map(o=>o.name===t.name?t:o)}),ln=({column:e,onConfigChange:t,onCreateCalculatedColumn:o,tableConfig:n})=>{let[r,s]=ki(zi(n.columns,e)),i=Li(()=>sn(r),[r]),l=Ni(rn(i,r)),a=oe(()=>{t(Ke(n,r))},[r,t,n]),u=oe(f=>{let h=f.target,w=Ki(h),{value:x}=h;switch(w){case"column-label":s(E=>({...E,label:x}));break;case"column-name":s(E=>Hi(E,x));break;case"column-width":s(E=>({...E,width:parseInt(x)}));break;case"column-alignment":if(Pi(x)){let E={...r,align:x||void 0};s(E),t(Ke(n,E))}break;case"column-pin":if(Mi(x)){let E={...r,pin:x||void 0};s(E),t(Ke(n,E));break}}},[r,t,n]),m=oe((f,h)=>{if(h){let w=Oi(r,h);l.current=h,s(w),t(Ke(n,w))}},[r,t,n]),p=oe(f=>{let h=Ai(r,f);s(h),t(Ke(n,h))},[r,t,n]),g=oe(({moveBy:f})=>{let{columns:h}=n,w=h.indexOf(r)+f,x=h[w];x&&(l.current=rn(i,x),s(x))},[i,r,n]),c=oe(()=>{g({moveBy:1})},[g]),d=oe(()=>{g({moveBy:-1})},[g]),C=oe(f=>{o({...r,...f})},[r,o]);return{availableRenderers:i,selectedCellRenderer:l.current,column:r,navigateNextColumn:c,navigatePrevColumn:d,onChange:u,onChangeFormatting:p,onChangeRenderer:m,onInputCommit:a,onSave:C}};import{Dropdown as Bl}from"@vuu-ui/vuu-ui-controls";import{getCalculatedColumnExpression as Wl,getCalculatedColumnName as Ql,getCalculatedColumnType as Gl}from"@vuu-ui/vuu-utils";import{Button as Yt,FormField as Jt,FormFieldLabel as Zt,Input as Ul}from"@salt-ds/core";import{useCallback as Xl,useRef as _l}from"react";import{autocompletion as sl,defaultKeymap as il,EditorState as ll,EditorView as Tn,ensureSyntaxTree as al,keymap as En,minimalSetup as ul,startCompletion as wn}from"@vuu-ui/vuu-codemirror";import{createEl as Dn}from"@vuu-ui/vuu-utils";import{useEffect as cl,useMemo as ml,useRef as Gt}from"react";import{LanguageSupport as $i,LRLanguage as Bi,styleTags as Wi,tags as it}from"@vuu-ui/vuu-codemirror";import{LRParser as Vi}from"@lezer/lr";var st=Vi.deserialize({version:14,states:"&fOVQPOOO!SQPO'#C^OVQPO'#CcQ!pQPOOO#OQPO'#CkO#TQPO'#CrOOQO'#Cy'#CyO#YQPO,58}OVQPO,59QOVQPO,59QOVQPO,59VOVQPO'#CtOOQO,59^,59^OOQO1G.i1G.iOOQO1G.l1G.lO#kQPO1G.lO$fQPO'#CmO%WQQO1G.qOOQO'#C{'#C{O%cQPO,59`OOQO'#Cn'#CnO%wQPO,59XOVQPO,59ZOVQPO,59[OVQPO7+$]OVQPO'#CuO&`QPO1G.zOOQO1G.z1G.zO&hQQO'#C^O&rQQO1G.sO'ZQQO1G.uOOQO1G.v1G.vO'fQPO<<GwO'wQPO,59aOOQO-E6s-E6sOOQO7+$f7+$fOVQPOAN=cO(]QQO1G.lO(tQPOG22}OOQOLD(iLD(iO%wQPO,59QO%wQPO,59Q",stateData:")[~OlOS~ORUOSUOTUOUUOWQO`SOnPO~OWgXZQX[QX]QX^QXeQX~OjQXXQXpQXqQXrQXsQXtQXuQX~PnOZWO[WO]XO^XO~OWYO~OWZO~OX]OZWO[WO]XO^XO~OZWO[WO]Yi^YijYiXYipYiqYirYisYitYiuYieYi~OZWO[WO]XO^XOpdOqdOrdOsdOtdOudO~OehOvfOwgO~OXkOZWO[WO]XO^XOeiO~ORUOSUOTUOUUOWQO`SOnlO~OXsOeiO~OvQXwQX~PnOZxO[xO]yO^yOeaivaiwai~OwgOecivci~OZWO[WO]XO^XOetO~OZWO[WO]XO^XOXiaeia~OZxO[xO]Yi^YieYivYiwYi~OXwOZWO[WO]XO^XO~O`UTn~",goto:"#spPPqPPPPqPPqPPPPqP!R!W!R!RPq!Z!k!nPPP!tP#jmUOQWXYZefghitxyVbYfgRe`mTOQWXYZefghitxyR[TQjcRrjQROQVQS^WxQ_XU`YfgQcZQmeQphQqiQuyRvtQaYQnfRog",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:375});var Qi=Bi.define({name:"VuuColumnExpression",parser:st.configure({props:[Wi({Function:it.variableName,String:it.string,Or:it.emphasis,Operator:it.operator})]})}),an=()=>new $i(Qi);var Nt=class{constructor(t){switch(this.value=t,typeof t){case"boolean":this.type="booleanLiteralExpression";break;case"number":this.type="numericLiteralExpression";break;default:this.type="stringLiteralExpression"}}toJSON(){return{type:this.type,value:this.value}}},kt=class{constructor(t){this.type="colExpression";this.column=t}toJSON(){return{type:this.type,column:this.column}}},Ve,me,Ft=class{constructor(t="unknown"){$(this,Ve,[{type:"unknown"},{type:"unknown"}]);$(this,me,void 0);this.type="arithmeticExpression";te(this,me,t)}get op(){return T(this,me)}set op(t){te(this,me,t)}get expressions(){return T(this,Ve)}toJSON(){return{type:this.type,op:T(this,me),expressions:T(this,Ve)}}};Ve=new WeakMap,me=new WeakMap;var ve,It=class{constructor(t){$(this,ve,[]);this.type="callExpression";this.functionName=t}get expressions(){return T(this,ve)}get arguments(){return T(this,ve)}toJSON(){return{type:this.type,functionName:this.functionName,arguments:T(this,ve).map(t=>{var o;return(o=t.toJSON)==null?void 0:o.call(t)})}}};ve=new WeakMap;var $e,Te,xe=class{constructor(){$(this,$e,[{type:"unknown"},{type:"unknown"}]);$(this,Te,"unknown");this.type="relationalExpression"}get op(){return T(this,Te)}set op(t){te(this,Te,t)}get expressions(){return T(this,$e)}toJSON(){return{type:this.type,op:T(this,Te),expressions:T(this,$e)}}};$e=new WeakMap,Te=new WeakMap;var Be,Ee,ye=class{constructor(t){$(this,Be,[{type:"unknown"},{type:"unknown"}]);$(this,Ee,void 0);this.type="booleanCondition";te(this,Ee,t)}get op(){return T(this,Ee)}get expressions(){return T(this,Be)}toJSON(){return{type:this.type,op:T(this,Ee),expressions:T(this,Be).map(t=>{var o;return(o=t.toJSON)==null?void 0:o.call(t)})}}};Be=new WeakMap,Ee=new WeakMap;var G,ze=class{constructor(t){$(this,G,void 0);this.type="conditionalExpression";te(this,G,[t?new ye(t):new xe,{type:"unknown"},{type:"unknown"}])}get expressions(){return T(this,G)}get condition(){return T(this,G)[0]}get truthyExpression(){return T(this,G)[1]}set truthyExpression(t){T(this,G)[1]=t}get falsyExpression(){return T(this,G)[2]}set falsyExpression(t){T(this,G)[2]=t}toJSON(){var t,o,n,r,s;return{type:this.type,condition:(o=(t=this.condition).toJSON)==null?void 0:o.call(t),truthyExpression:this.truthyExpression,falsyExpression:(s=(r=(n=this.falsyExpression)==null?void 0:n.toJSON)==null?void 0:r.call(n))!=null?s:this.falsyExpression}}};G=new WeakMap;var ce=e=>e.type==="unknown",lt=e=>e.type==="arithmeticExpression",Gi=e=>e.type==="callExpression",he=e=>e.type==="conditionalExpression",Ui=e=>e.type==="relationalExpression"||e.type==="booleanCondition";var Xi=e=>e.type==="booleanCondition",zt=e=>(e==null?void 0:e.type)==="relationalExpression";var z=e=>{if(ce(e))return e;if(zt(e)){let[t,o]=e.expressions;if(k(t))return z(t);if(e.op==="unknown")return e;if(k(o))return z(o)}else if(Ui(e)){let{expressions:t=[]}=e;for(let o of t)if(k(o))return z(o)}else if(he(e)){let{condition:t,truthyExpression:o,falsyExpression:n}=e;if(k(t))return z(t);if(k(o))return z(o);if(k(n))return z(n)}else if(lt(e)){let{expressions:t=[]}=e;for(let o of t)if(k(o))return z(o)}},at=(e,t,o)=>{let{expressions:n=[]}=e;if(n.includes(t)){let r=n.indexOf(t);return n.splice(r,1,o),!0}else for(let r of n)if(at(r,t,o))return!0;return!1},k=e=>ce(e)?!0:he(e)?k(e.condition)||k(e.truthyExpression)||k(e.falsyExpression):zt(e)||Xi(e)?e.op===void 0||e.expressions.some(t=>k(t)):!1,un=(e,t)=>{let o=z(e);o?o.expressions?o.expressions.push(t):console.warn("don't know how to treat targetExpression"):console.error("no target expression found")},S,pe,Kt=class{constructor(){$(this,S,void 0);$(this,pe,[])}setCondition(t){if(T(this,S)===void 0)this.addExpression(new ze(t));else if(he(T(this,S))){if(k(T(this,S).condition)){let o=t?new ye(t):new xe;this.addExpression(o)}else if(ce(T(this,S).truthyExpression))T(this,S).truthyExpression=new ze(t);else if(k(T(this,S).truthyExpression)){let o=t?new ye(t):new xe;this.addExpression(o)}else if(ce(T(this,S).falsyExpression))T(this,S).falsyExpression=new ze(t);else if(k(T(this,S).falsyExpression)){let o=t?new ye(t):new xe;this.addExpression(o)}}else console.error("setCondition called unexpectedly")}addExpression(t){if(T(this,pe).length>0){let o=T(this,pe).at(-1);o==null||o.arguments.push(t)}else if(T(this,S)===void 0)te(this,S,t);else if(lt(T(this,S))){let o=z(T(this,S));o&&ce(o)&&at(T(this,S),o,t)}else if(he(T(this,S))&&k(T(this,S))){let o=z(T(this,S));o&&ce(o)?at(T(this,S),o,t):o&&un(o,t)}}setFunction(t){let o=new It(t);this.addExpression(o),T(this,pe).push(o)}setColumn(t){this.addExpression(new kt(t))}setArithmeticOp(t){let o=t,n=T(this,S);lt(n)&&(n.op=o)}setRelationalOperator(t){let o=t;if(T(this,S)&&he(T(this,S))){let n=z(T(this,S));zt(n)?n.op=o:console.error(`no target expression found (op = ${t})`)}}setValue(t){let o=new Nt(t);if(T(this,S)===void 0)te(this,S,o);else if(lt(T(this,S)))this.addExpression(o);else if(Gi(T(this,S)))T(this,S).arguments.push(o);else if(he(T(this,S)))if(k(T(this,S))){let n=z(T(this,S));n&&ce(n)?at(T(this,S),n,o):n&&un(n,o)}else console.log("what do we do with value, in a complete expression")}closeBrace(){T(this,pe).pop()}get expression(){return T(this,S)}toJSON(){var t;return(t=T(this,S))==null?void 0:t.toJSON()}};S=new WeakMap,pe=new WeakMap;var cn=(e,t)=>{let o=new Kt,n=e.cursor();do{let{name:r,from:s,to:i}=n;switch(r){case"AndCondition":o.setCondition("and");break;case"OrCondition":o.setCondition("or");break;case"RelationalExpression":o.setCondition();break;case"ArithmeticExpression":o.addExpression(new Ft);break;case"Column":{let l=t.substring(s,i);o.setColumn(l)}break;case"Function":{let l=t.substring(s,i);o.setFunction(l)}break;case"Times":case"Divide":case"Plus":case"Minus":{let l=t.substring(s,i);o.setArithmeticOp(l)}break;case"RelationalOperator":{let l=t.substring(s,i);o.setRelationalOperator(l)}break;case"False":case"True":{let l=t.substring(s,i);o.setValue(l==="true")}break;case"String":o.setValue(t.substring(s+1,i-1));break;case"Number":o.setValue(parseFloat(t.substring(s,i)));break;case"CloseBrace":o.closeBrace();break;default:}}while(n.next());return o.toJSON()};var _i=st.configure({strict:!0}),mn=["Number","String"],Vt=[...mn,"AndCondition","ArithmeticExpression","BooleanOperator","RelationalOperatorOperator","CallExpression","CloseBrace","Column","Comma","ConditionalExpression","Divide","Equal","If","Minus","OpenBrace","OrCondition","ParenthesizedExpression","Plus","RelationalExpression","RelationalOperator","Times"],pn=e=>{try{return _i.parse(e),!0}catch{return!1}},$t=e=>{let{lastChild:t}=e;for(;t&&!Vt.includes(t.name);)t=t.prevSibling,console.log(t==null?void 0:t.name);return t},dn=e=>{if((e==null?void 0:e.name)==="RelationalExpression"){let{firstChild:t}=e,o=$t(e);if((t==null?void 0:t.name)==="Column"&&typeof(o==null?void 0:o.name)=="string"&&mn.includes(o.name))return!0}return!1};import{HighlightStyle as Yi,syntaxHighlighting as Ji,tags as fn}from"@vuu-ui/vuu-codemirror";var Zi=Yi.define([{tag:fn.variableName,color:"var(--vuuFilterEditor-variableColor)"},{tag:fn.comment,color:"green",fontStyle:"italic"}]),gn=Ji(Zi);import{EditorView as qi}from"@vuu-ui/vuu-codemirror";var Cn=qi.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-tooltip":{background:"var(--vuuFilterEditor-tooltipBackground)",border:"var(--vuuFilterEditor-tooltipBorder)",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 ji,getNamedParentNode as bn,getPreviousNode as el,getValue as q,syntaxTree as tl}from"@vuu-ui/vuu-codemirror";import{useCallback as hn}from"react";var ol=(e,t)=>t?e.map(o=>{var n;return{...o,apply:typeof o.apply=="function"?o.apply:`${t}${(n=o.apply)!=null?n:o.label}`}}):e,nl=e=>e===void 0?!1:["Times","Divide","Plus","Minus"].includes(e.name),We=e=>({apply:()=>{e==null||e()},label:"Done",boost:10}),we=(e,t)=>{var r;let{lastChild:o}=e,{pos:n}=t;for(;o;)if(o.from<n&&Vt.includes(o.name)){if(o.name==="ParenthesizedExpression"){let i=(r=o.firstChild)==null?void 0:r.nextSibling;i&&(o=i)}return o}else o=o.prevSibling},xn=(e,t)=>{var o;if(e.name==="ArgList"){let n=e.prevSibling;if(n)return q(n,t)}else if(e.name==="OpenBrace"){let n=(o=e.parent)==null?void 0:o.prevSibling;if((n==null?void 0:n.name)==="Function")return q(n,t)}},yn=(e,t)=>{if(e.name==="RelationalExpression"){let o=$t(e);if((o==null?void 0:o.name)==="RelationalOperator")return q(o,t)}else{let o=e.prevSibling;if((o==null?void 0:o.name)==="RelationalOperator")return q(o,t)}},Qt=(e,t)=>{var o;if(e.name==="RelationalExpression"){if(((o=e.firstChild)==null?void 0:o.name)==="Column")return q(e.firstChild,t)}else{let n=e.prevSibling;if((n==null?void 0:n.name)==="Column")return q(n,t);if((n==null?void 0:n.name)==="RelationalOperator")return Qt(n,t)}},Bt=async(e,t,o,n={})=>{let r=await t.getSuggestions(o,n),{startsWith:s=""}=n;return{from:e.pos-s.length,options:r}},Wt=(e,t,o,n,r)=>{let s=we(e,t);switch(console.log(`conditional expression last child ${s==null?void 0:s.name}`),s==null?void 0:s.name){case"If":return Bt(t,o,"expression",{prefix:"( "});case"OpenBrace":return Bt(t,o,"expression");case"Condition":return Bt(t,o,"expression",{prefix:", "});case"CloseBrace":if(n){let i=[We(r)];return{from:t.pos,options:i}}}},rl=(e,t)=>{let o=[We(t)];return{from:e.pos,options:o}},vn=(e,t)=>{let o=hn(async(n,r,s={})=>{let i=await e.getSuggestions(r,s),{startsWith:l=""}=s;return{from:n.pos-l.length,options:i}},[e]);return hn(async n=>{var p,g;let{state:r,pos:s}=n,i=(p=n.matchBefore(/\w*/))!=null?p:{from:0,to:0,text:void 0},a=tl(r).resolveInner(s,-1),u=r.doc.toString(),m=pn(u);switch(a.name){case"If":return console.log("conditional expression If"),o(n,"expression",{prefix:"( "});case"Condition":{let c=we(a,n);if((c==null?void 0:c.name)==="Column"){let d=el(c);if((d==null?void 0:d.name)!=="RelationalOperator")return o(n,"condition-operator",{columnName:q(c,r)})}else if((c==null?void 0:c.name)==="RelationalOperator")return o(n,"expression");console.log(`condition last child ${c==null?void 0:c.name}`)}break;case"ConditionalExpression":return Wt(a,n,e);case"RelationalExpression":{if(dn(a))return{from:n.pos,options:ji.concat({label:", <truthy expression>, <falsy expression>",apply:", "})};{let c=yn(a,r),d=Qt(a,r);if(c)return o(n,"expression");{let C=await e.getSuggestions("condition-operator",{columnName:d});return{from:n.pos,options:C}}}}break;case"RelationalOperator":return o(n,"expression");case"String":{let c=yn(a,r),d=Qt(a,r),{from:C,to:f}=a;if(f-C===2&&n.pos===C+1){if(d&&c)return o(n,"columnValue",{columnName:d,operator:c,startsWith:i.text})}else if(f-C>2&&n.pos===f)return o(n,"expression",{prefix:", "})}break;case"ArithmeticExpression":{let c=we(a,n);if((c==null?void 0:c.name)==="Column")return o(n,"expression");if(nl(c)){let d=c.name;return o(n,"column",{operator:d})}}break;case"OpenBrace":{let c=xn(a,r);return o(n,"expression",{functionName:c})}break;case"ArgList":{let c=xn(a,r),d=we(a,n),C=(d==null?void 0:d.name)==="OpenBrace"?void 0:",",f=await e.getSuggestions("expression",{functionName:c});return f=C?ol(f,", "):f,(d==null?void 0:d.name)!=="OpenBrace"&&(d==null?void 0:d.name)!=="Comma"&&(f=[{apply:") ",boost:10,label:"Done - no more arguments"}].concat(f)),{from:n.pos,options:f}}case"Equal":if(u.trim()==="=")return o(n,"expression");break;case"ParenthesizedExpression":case"ColumnDefinitionExpression":if(n.pos===0)return o(n,"expression");{let c=we(a,n);if((c==null?void 0:c.name)==="Column"){if(m){let d=[We(t.current)],C=q(c,r),f=await e.getSuggestions("operator",{columnName:C});return{from:n.pos,options:d.concat(f)}}}else if((c==null?void 0:c.name)==="CallExpression"){if(m)return{from:n.pos,options:[We(t.current)]}}else if((c==null?void 0:c.name)==="ArithmeticExpression"){if(m){let d=[We(t.current)],C=we(c,n);if((C==null?void 0:C.name)==="Column"){let f=q(C,r),h=await e.getSuggestions("operator",{columnName:f});d=d.concat(h)}return{from:n.pos,options:d}}}else if((c==null?void 0:c.name)==="ConditionalExpression")return Wt(c,n,e,m,t.current);break}case"Column":if(await e.isPartialMatch("expression",void 0,i.text))return o(n,"expression",{startsWith:i.text});break;case"Comma":{let c=bn(a);if((c==null?void 0:c.name)==="ConditionalExpression")return o(n,"expression")}break;case"CloseBrace":{let c=bn(a);if((c==null?void 0:c.name)==="ConditionalExpression")return Wt(c,n,e,m,t.current);if((c==null?void 0:c.name)==="ArgList"&&m)return rl(n,t.current)}break;default:((g=a==null?void 0:a.prevSibling)==null?void 0:g.name)==="FilterClause"&&console.log("looks like we ight be a or|and operator")}},[o,t,e])};var ut=e=>{if(e.current==null)throw Error("EditorView not defined");return e.current},pl=()=>"vuuSuggestion",dl=()=>console.log("noooop"),fl=e=>"expressionType"in e,gl=e=>{if(fl(e)){let t=Dn("div","expression-type-container"),o=Dn("span","expression-type",e.expressionType);return t.appendChild(o),t}else return null},Rn=({onChange:e,onSubmitExpression:t,source:o,suggestionProvider:n})=>{let r=Gt(null),s=Gt(dl),i=Gt(),l=vn(n,s),[a,u]=ml(()=>{let m=()=>{let C=ut(i),f=C.state.doc.toString(),h=al(C.state,C.state.doc.length,5e3);if(h){let w=cn(h,f);return[f,w]}else return["",void 0]},p=()=>{ut(i).setState(d())},g=()=>{let[C,f]=m();t==null||t(C,f)},c=C=>En.of([{key:C,run(){return wn(ut(i)),!0}}]),d=()=>ll.create({doc:o,extensions:[ul,sl({addToOptions:[{render:gl,position:70}],override:[l],optionClass:pl}),an(),En.of(il),c("ArrowDown"),Tn.updateListener.of(C=>{let f=ut(i);if(C.docChanged){wn(f);let h=f.state.doc.toString();e==null||e(h)}}),Cn,gn]});return s.current=()=>{g()},[d,p]},[l,e,t,o]);return cl(()=>{if(!r.current)throw Error("editor not in dom");return i.current=new Tn({state:a(),parent:r.current}),()=>{var m;(m=i.current)==null||m.destroy()}},[l,a]),{editorRef:r,clearInput:u}};import{jsx as bl}from"react/jsx-runtime";var Cl="vuuColumnExpressionInput",Sn=({onChange:e,onSubmitExpression:t,source:o="",suggestionProvider:n})=>{let{editorRef:r}=Rn({onChange:e,onSubmitExpression:t,source:o,suggestionProvider:n});return bl("div",{className:`${Cl}`,ref:r})};import{AnnotationType as hl,getRelationalOperators as xl,numericOperators as yl,stringOperators as vl,toSuggestions as Tl}from"@vuu-ui/vuu-codemirror";import{getTypeaheadParams as El,useTypeaheadSuggestions as wl}from"@vuu-ui/vuu-data-react";import{isNumericColumn as Xt,isTextColumn as Dl}from"@vuu-ui/vuu-utils";import{useCallback as Ut,useRef as Rl}from"react";var De=[{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:"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 j}from"@vuu-ui/vuu-utils";var Pn=({name:e,description:t,example:o,params:n,type:r})=>{let s=j("div","vuuFunctionDoc"),i=j("div","function-heading"),l=j("span","function-name",e),a=j("span","param-list",n.description),u=j("span","function-type",r);i.appendChild(l),i.appendChild(a),i.appendChild(u);let m=j("p",void 0,t);if(s.appendChild(i),s.appendChild(m),o){let p=j("div","example-container","Example:"),g=j("div","example-expression",o.expression),c=j("div","example-result",o.result);p.appendChild(g),p.appendChild(c),s.appendChild(p)}return s};var Sl=[],de=e=>e.map(t=>{var o;return{...t,apply:((o=t.apply)!=null?o:t.label)+" "}}),Pl=(e,{functionName:t,operator:o})=>{if(o)return e.filter(Xt);if(t){let n=De.find(r=>r.name===t);if(n)switch(n.accepts){case"string":return e.filter(Dl);case"number":return e.filter(Xt);default:return e}}return e},Mn=(e,t)=>Pl(e,t).map(n=>{var s;let r=(s=n.label)!=null?s:n.name;return{apply:t.prefix?`${t.prefix}${r}`:r,label:r,boost:5,type:"column",expressionType:n.serverDataType}}),Ml=[{apply:"* ",boost:2,label:"*",type:"operator"},{apply:"/ ",boost:2,label:"/",type:"operator"},{apply:"+ ",boost:2,label:"+",type:"operator"},{apply:"- ",boost:2,label:"-",type:"operator"}],Hl=e=>e===void 0||Xt(e)?Ml:Sl,Ol=e=>{switch(e.serverDataType){case"string":case"char":return de(vl);case"int":case"long":case"double":return de(yl)}},_t=e=>({apply:`${e.name}( `,boost:2,expressionType:e.type,info:()=>Pn(e),label:e.name,type:"function"}),Al=e=>{if(e){if(typeof e.accepts=="string")return e.accepts;if(Array.isArray(e.accepts))return e.accepts.every(t=>t==="string")?"string":"any"}return"any"},Ll=De.map(_t),Nl=({functionName:e})=>{if(e){let t=De.find(n=>n.name===e),o=Al(t);if(t)switch(o){case"string":return De.filter(n=>n.type==="string"||n.type==="variable").map(_t);case"number":return De.filter(n=>n.type==="number"||n.type==="variable").map(_t);default:}}return Ll},kl={},Hn=({columns:e,table:t})=>{let o=Ut(l=>l?e.find(a=>a.name===l):void 0,[e]),n=Rl(),r=wl(),s=Ut(async(l,a=kl)=>{let{columnName:u,functionName:m,operator:p,prefix:g}=a;switch(l){case"expression":{let c=await de(Mn(e,{functionName:m,prefix:g})).concat(Nl(a));return n.current=c}case"column":{let c=await Mn(e,a);return n.current=de(c)}case"operator":{let c=await Hl(o(u));return n.current=de(c)}case"relational-operator":{let c=await xl(o(u));return n.current=de(c)}case"condition-operator":{let c=o(u);if(c){let d=await Ol(c);if(d)return n.current=de(d)}}break;case"columnValue":if(u&&p){let c=El(t,u),d=await r(c);return n.current=Tl(d,{suffix:""}),n.current.forEach(C=>{C.apply=(f,h,w)=>{let x=new hl,E=w+h.label.length+1;f.dispatch({changes:{from:w,insert:h.label},selection:{anchor:E,head:E},annotations:x.of(h)})}}),n.current}break}return[]},[e,o,r,t]),i=Ut(async(l,a,u)=>{let{current:m}=n,p=!1,g=m||await s(l,{columnName:a});if(u&&g)for(let c of g){if(c.label===u)return!1;c.label.startsWith(u)&&(p=!0)}return p},[s]);return{getSuggestions:s,isPartialMatch:i}};import{getCalculatedColumnDetails as On,setCalculatedColumnExpression as Fl,setCalculatedColumnName as Il,setCalculatedColumnType as Kl}from"@vuu-ui/vuu-utils";import{useCallback as ct,useRef as zl,useState as Vl}from"react";var $l=e=>{let[t,o,n]=On(e);return n===""?{...e,name:`${t}:${o}:string`}:e},An=({column:e,onSave:t})=>{let[o,n]=Vl($l(e)),r=zl(On(o)[1]),s=ct(u=>{let{value:m}=u.target;n(p=>Il(p,m))},[]),i=ct(u=>{r.current=u.trim()},[]),l=ct((u,m)=>{typeof m=="string"&&n(p=>Kl(p,m))},[]),a=ct(()=>{let u=Fl(o,r.current);n(u),t(u)},[o,t]);return{column:o,onChangeExpression:i,onChangeName:s,onChangeType:l,onSave:a}};import{jsx as B,jsxs as Ge}from"react/jsx-runtime";var Qe="vuuColumnExpressionPanel",Ln=({column:e,onSave:t,tableConfig:o,vuuTable:n})=>{let r=_l(null),{column:s,onChangeExpression:i,onChangeName:l,onChangeType:a,onSave:u}=An({column:e,onSave:t}),m=Hn({columns:o.columns,table:n}),p=Xl(()=>{requestAnimationFrame(()=>{var g,c;(c=(g=r.current)==null?void 0:g.querySelector("button"))==null||c.focus()})},[]);return Ge("div",{className:Qe,children:[B("div",{className:"vuuColumnSettingsPanel-header",children:B("span",{children:"Calculation"})}),Ge(Jt,{"data-field":"column-name",children:[B(Zt,{children:"Column Name"}),B(Ul,{className:"vuuInput",onChange:l,value:Ql(s)})]}),Ge(Jt,{"data-field":"column-expression",children:[B(Zt,{children:"Expression"}),B(Sn,{onChange:i,onSubmitExpression:p,source:Wl(s),suggestionProvider:m})]}),Ge(Jt,{"data-field":"type",children:[B(Zt,{children:"Column type"}),B(Bl,{className:`${Qe}-type`,onSelectionChange:a,ref:r,selected:Gl(s)||null,source:["double","long","string"],width:"100%"})]}),Ge("div",{className:"vuuColumnSettingsPanel-buttonBar","data-align":"right",children:[B(Yt,{className:`${Qe}-buttonCancel`,tabIndex:-1,children:"cancel"}),B(Yt,{className:`${Qe}-buttonApply`,tabIndex:-1,children:"apply"}),B(Yt,{className:`${Qe}-buttonSave`,onClick:u,variant:"cta",children:"save"})]})]})};import{VuuInput as Fn}from"@vuu-ui/vuu-ui-controls";import{jsx as L,jsxs as ne}from"react/jsx-runtime";var Ue="vuuColumnSettingsPanel",tC=({column:e,onConfigChange:t,onCreateCalculatedColumn:o,tableConfig:n,vuuTable:r})=>{let s=e.name==="::",{availableRenderers:i,selectedCellRenderer:l,column:a,navigateNextColumn:u,navigatePrevColumn:m,onChange:p,onChangeFormatting:g,onChangeRenderer:c,onInputCommit:d,onSave:C}=ln({column:e,onConfigChange:t,onCreateCalculatedColumn:o,tableConfig:n}),{serverDataType:f,align:h=Yl(f),name:w,label:x=w,pin:E,width:P}=a;return ne("div",{className:Ue,children:[L("div",{className:`${Ue}-header`,children:L("span",{children:w})}),ne(mt,{"data-field":"column-label",children:[L(pt,{children:"Column Label"}),L(Fn,{className:"vuuInput",onChange:p,onCommit:d,value:x})]}),ne(mt,{"data-field":"column-width",children:[L(pt,{children:"Column Width"}),L(Fn,{className:"vuuInput",onChange:p,value:P,onCommit:d})]}),ne(mt,{"data-field":"column-alignment",children:[L(pt,{children:"Alignment"}),ne(kn,{className:"vuuToggleButtonGroup",onChange:p,value:h,children:[L(Re,{"data-icon":"align-left",className:"vuuIconToggleButton",value:"left"}),L(Re,{"data-icon":"align-right",className:"vuuIconToggleButton",value:"right"})]})]}),ne(mt,{"data-field":"column-pin",children:[L(pt,{children:"Pin Column"}),ne(kn,{className:"vuuToggleButtonGroup",onChange:p,value:E!=null?E:"",children:[L(Re,{className:"vuuIconToggleButton","data-icon":"cross-circle",value:""}),L(Re,{className:"vuuIconToggleButton","data-icon":"pin-left",value:"left"}),L(Re,{className:"vuuIconToggleButton","data-icon":"pin-float",value:"floating"}),L(Re,{className:"vuuIconToggleButton","data-icon":"pin-right",value:"right"})]})]}),L(on,{availableRenderers:i,selectedCellRenderer:l,column:a,onChangeFormatting:g,onChangeRenderer:c}),Jl(a.name)?L(Ln,{column:a,onSave:C,tableConfig:n,vuuTable:r}):ne("div",{className:`${Ue}-buttonBar`,"data-align":s?"right":void 0,children:[L(Nn,{className:`${Ue}-buttonNavPrev`,variant:"secondary","data-icon":"arrow-left",onClick:m,children:"PREVIOUS"}),L(Nn,{className:`${Ue}-buttonNavNext`,variant:"secondary","data-icon":"arrow-right",onClick:u,children:"NEXT"})]})]})};import{useEffect as Zl,useState as In}from"react";import ql from"classnames";import{jsx as Se,jsxs as jl}from"react/jsx-runtime";var Xe="vuuDatasourceStats",qt=new Intl.NumberFormat,pC=({className:e,dataSource:t})=>{let[o,n]=In(t.range),[r,s]=In(t.size);Zl(()=>{s(t.size),t.on("resize",s),t.on("range",n)},[t]);let i=ql(Xe,e),l=qt.format(o.from),a=qt.format(o.to-1),u=qt.format(r);return jl("div",{className:i,children:[Se("span",{className:`${Xe}-label`,children:"Row count"}),Se("span",{className:`${Xe}-range`,children:l}),Se("span",{children:"-"}),Se("span",{className:`${Xe}-range`,children:a}),Se("span",{children:"of"}),Se("span",{className:`${Xe}-size`,children:u})]})};import{Button as Ep,FormField as Ao,FormFieldLabel as Lo,Input as wp,ToggleButton as Ae,ToggleButtonGroup as Dp}from"@salt-ds/core";import{useLayoutEffectSkipFirst as fp}from"@vuu-ui/vuu-layout";import{useCallback as yC,useRef as vC}from"react";import{jsx as wC}from"react/jsx-runtime";import{isNumericColumn as ea}from"@vuu-ui/vuu-utils";var oo=e=>(t,o)=>{let n=[];if(e===void 0)return n;if(t==="header"||t==="column-menu")n.push(...ta(o,e)),n.push(...ra(o,e)),n.push(...oa(o,e)),n.push(...na(o)),n.push({action:"column-settings",icon:"cog",label:"Column Settings",options:o}),n.push({action:"table-settings",icon:"cog",label:"DataGrid Settings",options:o});else if(t==="filter"){let{column:r,filter:s}=o,i=(s==null?void 0:s.column)===(r==null?void 0:r.name);n.push({label:"Edit filter",action:"filter-edit",options:o}),n.push({label:"Remove filter",action:"filter-remove-column",options:o}),r&&!i&&n.push({label:"Remove all filters",action:"remove-filters",options:o})}return n};function ta(e,{sort:{sortDefs:t}}){let{column:o}=e,n=[];if(o===void 0)return n;let r=t.length>0;return o.sorted==="A"?n.push({label:"Reverse Sort (DSC)",action:"sort-dsc",options:e}):o.sorted==="D"?n.push({label:"Reverse Sort (ASC)",action:"sort-asc",options:e}):typeof o.sorted=="number"?(o.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(o.sorted)<t.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 oa(e,t){let{column:o}=e;if(o===void 0||t.groupBy.length===0)return[];let{name:n,label:r=n}=o;return[{label:`Aggregate ${r}`,children:[{label:"Count",action:"agg-count",options:e},{label:"Distinct",action:"agg-distinct",options:e}].concat(ea(o)?[{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 no=(e,t)=>({label:`Pin ${t}`,action:`column-pin-${t}`,options:e}),jt=e=>no(e,"left"),eo=e=>no(e,"floating"),to=e=>no(e,"right");function na(e){let{column:t}=e;if(t===void 0)return[];let{pin:o}=t,n=[{label:"Hide column",action:"column-hide",options:e},{label:"Remove column",action:"column-remove",options:e}];return o===void 0?n.push({label:"Pin column",children:[jt(e),eo(e),to(e)]}):o==="left"?n.push({label:"Unpin column",action:"column-unpin",options:e},{label:"Pin column",children:[eo(e),to(e)]}):o==="right"?n.push({label:"Unpin column",action:"column-unpin",options:e},{label:"Pin column",children:[jt(e),eo(e)]}):o==="floating"&&n.push({label:"Unpin column",action:"column-unpin",options:e},{label:"Pin column",children:[jt(e),to(e)]}),n}function ra(e,{groupBy:t}){let{column:o}=e,n=[];if(o===void 0)return n;let{name:r,label:s=r}=o;return t.length===0?n.push({label:`Group by ${s}`,action:"group",options:e}):n.push({label:`Add ${s} to group by`,action:"group-add",options:e}),n}import{removeColumnFromFilter as sa}from"@vuu-ui/vuu-utils";import{addGroupColumn as Kn,addSortColumn as zn,AggregationType as ia,setAggregations as Pe,setSortColumn as Vn}from"@vuu-ui/vuu-utils";var la=(e,t)=>{if(e.filterStruct&&t){let[o,n]=sa(t,e.filterStruct);return{filter:n,filterStruct:o}}else return e},{Average:aa,Count:ua,Distinct:ca,High:ma,Low:pa,Sum:da}=ia,ro=({dataSource:e,onPersistentColumnOperation:t})=>n=>{let r=n.options;if(r.column&&e){let{column:s}=r;switch(n.menuId){case"sort-asc":return e.sort=Vn(e.sort,s,"A"),!0;case"sort-dsc":return e.sort=Vn(e.sort,s,"D"),!0;case"sort-add-asc":return e.sort=zn(e.sort,s,"A"),!0;case"sort-add-dsc":return e.sort=zn(e.sort,s,"D"),!0;case"group":return e.groupBy=Kn(e.groupBy,s),!0;case"group-add":return e.groupBy=Kn(e.groupBy,s),!0;case"column-hide":return t({type:"hideColumns",columns:[s]}),!0;case"column-remove":return e.columns=e.columns.filter(i=>i!==s.name),!0;case"filter-remove-column":return e.filter=la(e.filter,s),!0;case"remove-filters":return e.filter={filter:""},!0;case"agg-avg":return e.aggregations=Pe(e.aggregations,s,aa),!0;case"agg-high":return e.aggregations=Pe(e.aggregations,s,ma),!0;case"agg-low":return e.aggregations=Pe(e.aggregations,s,pa),!0;case"agg-count":return e.aggregations=Pe(e.aggregations,s,ua),!0;case"agg-distinct":return e.aggregations=Pe(e.aggregations,s,ca),!0;case"agg-sum":return e.aggregations=Pe(e.aggregations,s,da),!0;case"column-pin-floating":return t({type:"pinColumn",column:s,pin:"floating"}),!0;case"column-pin-left":return t({type:"pinColumn",column:s,pin:"left"}),!0;case"column-pin-right":return t({type:"pinColumn",column:s,pin:"right"}),!0;case"column-unpin":return t({type:"pinColumn",column:s,pin:void 0}),!0;case"column-settings":return t({type:"columnSettings",column:s}),!0;case"table-settings":return t({type:"tableSettings"}),!0;default:}}return!1};import{ContextMenuProvider as Av}from"@vuu-ui/vuu-popups";import{Button as Nv,useIdMemo as kv}from"@salt-ds/core";import{buildColumnMap as Rh,getColumnStyle as Sh,isGroupColumn as Ph,metadataKeys as Qa,notHidden as Mh,visibleColumnAtIndex as Hh}from"@vuu-ui/vuu-utils";import{useCallback as Lh,useMemo as Nh}from"react";import{isGroupColumn as Qn,isJsonColumn as Pa,isJsonGroup as Ma,metadataKeys as Ha,notHidden as Oa,RowSelected as Aa}from"@vuu-ui/vuu-utils";import La from"classnames";import{memo as Na,useCallback as Gn}from"react";import{getColumnStyle as fa,metadataKeys as ga}from"@vuu-ui/vuu-utils";import{EditableLabel as Ca}from"@vuu-ui/vuu-ui-controls";import ba from"classnames";import{memo as ha,useCallback as xa,useRef as ya,useState as $n}from"react";import{jsx as dt}from"react/jsx-runtime";var{KEY:Bn}=ga,so=ha(({className:e,column:t,columnMap:o,onClick:n,row:r})=>{let s=ya(null),{align:i,CellRenderer:l,key:a,pin:u,editable:m,resizing:p,valueFormatter:g}=t,[c,d]=$n(!1),C=g(r[a]),[f,h]=$n(C),w=()=>{var R;(R=s.current)==null||R.focus()},x=R=>{R.key==="Enter"&&d(!0)},E=xa(R=>{n==null||n(R,t)},[t,n]),P=()=>{d(!0)},y=(R="",M="",F=!0,U=!1)=>{var O;d(!1),U?h(R):M!==R&&h(M),F===!1&&((O=s.current)==null||O.focus())},b=ba(e,{vuuAlignRight:i==="right",vuuPinFloating:u==="floating",vuuPinLeft:u==="left",vuuPinRight:u==="right","vuuTableCell-resizing":p})||void 0,D=fa(t);return m?dt("div",{className:b,"data-editable":!0,role:"cell",style:D,onKeyDown:x,children:dt(Ca,{editing:c,value:f,onChange:h,onMouseDownCapture:w,onEnterEditMode:P,onExitEditMode:y,onKeyDown:x,ref:s,tabIndex:0},"title")}):dt("div",{className:b,role:"cell",style:D,onClick:E,children:l?dt(l,{column:t,columnMap:o,row:r}):C})},va);so.displayName="TableCell";function va(e,t){return e.column===t.column&&e.onClick===t.onClick&&e.row[Bn]===t.row[Bn]&&e.row[e.column.key]===t.row[t.column.key]}import{getColumnStyle as Ta,getGroupValueAndOffset as Ea,metadataKeys as wa}from"@vuu-ui/vuu-utils";import{useCallback as Da}from"react";import{jsx as io,jsxs as Sa}from"react/jsx-runtime";var{IS_LEAF:Ra}=wa,Wn=({column:e,onClick:t,row:o})=>{let{columns:n}=e,[r,s]=Ea(n,o),i=Da(m=>{t==null||t(m,e)},[e,t]),l=Ta(e),a=o[Ra],u=Array(s).fill(0).map((m,p)=>io("span",{className:"vuuTableGroupCell-spacer"},p));return Sa("div",{className:"vuuTableGroupCell vuuPinLeft",onClick:a?void 0:i,role:"cell",style:l,children:[u,a?null:io("span",{className:"vuuTableGroupCell-toggle","data-icon":"triangle-right"}),io("span",{children:r})]})};import{jsx as Xn,jsxs as $a}from"react/jsx-runtime";var{IDX:ka,IS_EXPANDED:Fa,SELECTED:Ia}=Ha,{True:Un,First:Ka,Last:za}=Aa,Me="vuuTableRow",Va=Na(function({columnMap:t,columns:o,offset:n,onClick:r,onToggleGroup:s,virtualColSpan:i=0,row:l}){let{[ka]:a,[Fa]:u,[Ia]:m}=l,p=La(Me,{[`${Me}-even`]:a%2===0,[`${Me}-expanded`]:u,[`${Me}-selected`]:m&Un,[`${Me}-selectedStart`]:m&Ka,[`${Me}-selectedEnd`]:m&za}),g=Gn(d=>{let C=d.shiftKey,f=d.ctrlKey||d.metaKey;r==null||r(l,C,f)},[r,l]),c=Gn((d,C)=>{(Qn(C)||Ma(C,l))&&(d.stopPropagation(),s==null||s(l,C))},[s,l]);return $a("div",{"aria-selected":m&Un?!0:void 0,"aria-rowindex":a,className:p,onClick:g,role:"row",style:{transform:`translate3d(0px, ${n}px, 0px)`},children:[i>0?Xn("div",{role:"cell",style:{width:i}}):null,o.filter(Oa).map(d=>{let C=Qn(d),f=Pa(d);return Xn(C?Wn:so,{column:d,columnMap:t,onClick:C||f?c:void 0,row:l},d.name)})]})});import yb from"classnames";import{useRef as Eb}from"react";import{useCallback as fb,useRef as gb}from"react";import{jsx as Pb,jsxs as Mb}from"react/jsx-runtime";import rh from"classnames";import{useCallback as ah,useRef as uh}from"react";import Nb from"classnames";import{jsx as Ib,jsxs as Kb}from"react/jsx-runtime";import{useContextMenu as gh}from"@vuu-ui/vuu-popups";import{useContextMenu as Gb}from"@vuu-ui/vuu-popups";import Xb from"classnames";import{useCallback as Jb}from"react";import{jsx as jb}from"react/jsx-runtime";import{jsx as hh,jsxs as xh}from"react/jsx-runtime";import{jsx as $h,jsxs as Bh}from"react/jsx-runtime";var{RENDER_IDX:zh}=Qa;import{useContextMenu as Jy}from"@vuu-ui/vuu-popups";import{applySort as qy,buildColumnMap as jy,isJsonGroup as ev,metadataKeys as gu,moveItemDeprecated as tv}from"@vuu-ui/vuu-utils";import{useCallback as rv,useEffect as sv,useMemo as iv,useRef as lv,useState as av}from"react";import{isVuuFeatureAction as Gh,isVuuFeatureInvocation as Uh}from"@vuu-ui/vuu-data-react";import{getFullRange as _h,metadataKeys as Ga,WindowRange as Yh}from"@vuu-ui/vuu-utils";import{useCallback as Zh,useEffect as qh,useMemo as jh,useRef as ex,useState as tx}from"react";var{SELECTED:ox}=Ga;import{useDragDropNext as sx}from"@vuu-ui/vuu-ui-controls";import{useCallback as ax,useRef as ux}from"react";import{withinRange as Cx}from"@vuu-ui/vuu-utils";import{useCallback as vx,useEffect as Tx,useLayoutEffect as Ex,useMemo as wx,useRef as Dx}from"react";function Ua(e,...t){let o=new Set(e);for(let n of t)for(let r of n)o.add(r);return o}var _n="ArrowUp",Yn="ArrowDown",Jn="ArrowLeft",Zn="ArrowRight";var qn="Home",jn="End",er="PageUp",tr="PageDown";var Xa=new Set(["Enter","Delete"," "]),_a=new Set(["Tab"]),Ya=new Set(["ArrowRight","ArrowLeft"]),Ja=new Set([qn,jn,er,tr,Yn,Jn,Zn,_n]),Za=new Set(["F1","F2","F3","F4","F5","F6","F7","F8","F9","F10","F11","F12"]),mx=Ua(Xa,Ja,Ya,Za,_a);import{isValidNumber as zx}from"@vuu-ui/vuu-utils";import{useCallback as Bx,useMemo as Wx,useRef as Qx,useState as Gx}from"react";import{useCallback as Ax,useEffect as Lx,useRef as Nx}from"react";var qa=new Map,ja=(e,t,o)=>{switch(o){case"height":return t.height;case"clientHeight":return e.clientHeight;case"clientWidth":return e.clientWidth;case"contentHeight":return t.contentHeight;case"contentWidth":return t.contentWidth;case"scrollHeight":return Math.ceil(e.scrollHeight);case"scrollWidth":return Math.ceil(e.scrollWidth);case"width":return t.width;default:return 0}},kx=new ResizeObserver(e=>{for(let t of e){let{target:o,borderBoxSize:n,contentBoxSize:r}=t,s=qa.get(o);if(s){let[{blockSize:i,inlineSize:l}]=n,[{blockSize:a,inlineSize:u}]=r,{onResize:m,measurements:p}=s,g=!1;for(let[c,d]of Object.entries(p)){let C=ja(o,{height:i,width:l,contentHeight:a,contentWidth:u},c);C!==d&&(g=!0,p[c]=C)}g&&m&&m(p)}}});import{deselectItem as eu,isRowSelected as tu,metadataKeys as ou,selectItem as nu}from"@vuu-ui/vuu-utils";import{useCallback as ru,useRef as or}from"react";var{IDX:su}=ou,iu=[],lo=({selectionModel:e,onSelect:t,onSelectionChange:o})=>{let n=or(-1),r=or(iu);return ru((i,l,a)=>{let{[su]:u}=i,{current:m}=n,{current:p}=r,c=(tu(i)?eu:nu)(e,p,u,l,a,m);r.current=c,n.current=u,t==null||t(i),o==null||o(c)},[t,o,e])};import{applyFilterToColumns as jx,applyGroupByToColumns as ey,applySortToColumns as ty,findColumn as oy,getCellRenderer as ny,getColumnName as ry,getTableHeadings as sy,getValueFormatter as iy,isFilteredColumn as ly,isGroupColumn as ay,isPinned as uy,isTypeDescriptor as cy,metadataKeys as lu,updateColumn as my,sortPinnedColumns as py,stripFilterFromColumns as dy,moveItemDeprecated as fy,getDefaultAlignment as gy}from"@vuu-ui/vuu-utils";import{useReducer as hy}from"react";var xy=lu.count;import{useCallback as Ty,useRef as Ey}from"react";import{useCallback as au,useMemo as ft,useRef as uu}from"react";import{actualRowPositioning as cu,virtualRowPositioning as mu}from"@vuu-ui/vuu-utils";var pu=15e5,du={contentHeight:0,contentWidth:0,getRowAtPosition:()=>-1,getRowOffset:()=>-1,horizontalScrollbarHeight:0,maxScrollContainerScrollHorizontal:0,maxScrollContainerScrollVertical:0,pinnedWidthLeft:0,pinnedWidthRight:0,rowCount:0,setPctScrollTop:()=>{},totalHeaderHeight:0,verticalScrollbarWidth:0,viewportBodyHeight:0},fu=e=>{let t=0,o=0,n=0;for(let r of e){let{hidden:s,pin:i,width:l}=r,a=s?0:l;i==="left"?t+=a:i==="right"?o+=a:n+=a}return{pinnedWidthLeft:t+4,pinnedWidthRight:o+4,unpinnedWidth:n}},ao=({columns:e,headerHeight:t,headings:o,rowCount:n,rowHeight:r,size:s})=>{let i=uu(0),a=Math.min(n,pu)*r,m=n*r-a,{pinnedWidthLeft:p,pinnedWidthRight:g,unpinnedWidth:c}=ft(()=>fu(e),[e]),[d,C]=ft(()=>cu(r),[r]),[f,h]=ft(()=>m?mu(r,m,i):[d,C],[C,d,m,r]),w=au(x=>{i.current=x},[]);return ft(()=>{var x;if(s){let E=o.length,P=15,y=p+c+g,b=y>s.width?P:0,D=t*(1+E),R=a-(((x=s==null?void 0:s.height)!=null?x:0)-b)+D,M=y-s.width+p,F=(s.height-t)/r,U=Number.isInteger(F)?F+1:Math.ceil(F),O=s.height-D,le=a>O?P:0;return{contentHeight:a,getRowAtPosition:h,getRowOffset:f,horizontalScrollbarHeight:b,maxScrollContainerScrollHorizontal:M,maxScrollContainerScrollVertical:R,pinnedWidthLeft:p,pinnedWidthRight:g,rowCount:U,contentWidth:y,setPctScrollTop:w,totalHeaderHeight:D,verticalScrollbarWidth:le,viewportBodyHeight:O}}else return du},[s,o.length,p,c,g,a,t,r,h,f,w])};import{getColumnsInViewport as Ay,itemsChanged as Ly}from"@vuu-ui/vuu-utils";import{useCallback as Fy,useEffect as Iy,useMemo as Ky,useRef as zy,useState as Vy}from"react";var{KEY:vv,IS_EXPANDED:Tv,IS_LEAF:Ev}=gu;import Vv from"classnames";import{isDataLoading as Qv}from"@vuu-ui/vuu-utils";import{jsx as Uv,jsxs as Xv}from"react/jsx-runtime";import Cu from"classnames";import{isJsonAttribute as bu,metadataKeys as hu,registerComponent as xu}from"@vuu-ui/vuu-utils";import{jsx as uo,jsxs as wu}from"react/jsx-runtime";var _e="vuuJsonCell",{IS_EXPANDED:yu,KEY:vu}=hu,Tu=e=>{let t=e.lastIndexOf("|");return t===-1?"":e.slice(t+1)},Eu=({column:e,row:t})=>{let{key:o}=e,n=t[o],r=!1;bu(n)&&(n=n.slice(0,-1),r=!0);let s=Tu(t[vu]),i=Cu({[`${_e}-name`]:s===n,[`${_e}-value`]:s!==n,[`${_e}-group`]:r});if(r){let l=t[yu]?"minus-box":"plus-box";return wu("span",{className:i,children:[uo("span",{className:`${_e}-value`,children:n}),uo("span",{className:`${_e}-toggle`,"data-icon":l})]})}else return n?uo("span",{className:i,children:n}):null};console.log("register JsonCell");xu("json",Eu,"cell-renderer",{description:"JSON formatter",label:"JSON formatter",serverDataType:"json"});import sE from"classnames";import{useRef as lE}from"react";import{useCallback as co,useRef as Du}from"react";import{jsx as Su}from"react/jsx-runtime";var nr=()=>{},Ru="vuuColumnResizerNext",Ye=({onDrag:e,onDragEnd:t=nr,onDragStart:o=nr})=>{let n=Du(0),r=co(l=>{l.stopPropagation&&l.stopPropagation(),l.preventDefault&&l.preventDefault();let a=Math.round(l.clientX),u=a-n.current;n.current=a,u!==0&&e(l,u)},[e]),s=co(l=>{window.removeEventListener("mouseup",s),window.removeEventListener("mousemove",r),t(l)},[t,r]),i=co(l=>{o(l),n.current=Math.round(l.clientX),window.addEventListener("mouseup",s),window.addEventListener("mousemove",r),l.stopPropagation&&l.stopPropagation(),l.preventDefault&&l.preventDefault()},[o,r,s]);return Su("div",{className:Ru,onMouseDown:i})};import{useCallback as mo,useRef as Pu,useState as Mu}from"react";var Je=({column:e,onResize:t,rootRef:o})=>{let n=Pu(0),[r,s]=Mu(!1),{name:i}=e,l=mo(()=>{if(console.log("onResizeStart"),t&&o.current){console.log("handleResizeStart");let{width:m}=o.current.getBoundingClientRect();n.current=Math.round(m),s(!0),t==null||t("begin",i)}},[i,t,o]),a=mo((m,p)=>{if(o.current&&t){let{width:g}=o.current.getBoundingClientRect(),c=Math.round(g)+p;c!==n.current&&c>0&&(t("resize",i,c),n.current=c)}},[i,t,o]),u=mo(()=>{t&&(t("end",i,n.current),setTimeout(()=>{s(!1)},80))},[i,t]);return{isResizing:r,onDrag:a,onDragStart:l,onDragEnd:u}};import{getColumnStyle as Hu}from"@vuu-ui/vuu-utils";import Ou from"classnames";import{useMemo as Au}from"react";var ee=(e,t,o)=>Au(()=>{let n=Ou(t,{vuuPinFloating:e.pin==="floating",vuuPinLeft:e.pin==="left",vuuPinRight:e.pin==="right",vuuEndPin:o&&e.endPin,[`${t}-editable`]:e.editable,[`${t}-right`]:e.align==="right"}),r=Hu(e);return{className:n,style:r}},[e,t,o]);import Lu from"classnames";import{useCallback as Nu}from"react";import{jsx as ku,jsxs as Fu}from"react/jsx-runtime";var rr="vuuColumnHeaderPill",fe=({children:e,className:t,column:o,onRemove:n,removable:r,...s})=>{if(r&&typeof n!="function")throw Error("ColumnHeaderPill onRemove prop must be provided if Pill is removable");let i=Nu(l=>{l.preventDefault(),l.stopPropagation(),n==null||n(o)},[o,n]);return Fu("div",{...s,className:Lu(rr,t),children:[e,r?ku("span",{className:`${rr}-removeButton`,role:"button","data-icon":"cross",onClick:i}):null]})};import{jsx as po,jsxs as Iu}from"react/jsx-runtime";var fo=({column:e,...t})=>{let{name:o,sorted:n}=e,r=typeof n=="number"?n<0?"arrow-down":"arrow-up":n==="A"?"arrow-up":n==="D"?"arrow-down":void 0;return Iu(fe,{...t,column:e,children:[po("span",{className:"vuuGroupColumnPill-label",children:o}),r!==void 0?po("span",{"data-icon":r}):null,typeof n=="number"?po("span",{className:"vuuSortPosition",children:Math.abs(n)}):null]})};import{jsx as sr,jsxs as Ku}from"react/jsx-runtime";var ir=({column:e})=>{if(!e.sorted)return null;let t=typeof e.sorted=="number"?e.sorted<0?"arrow-down":"arrow-up":e.sorted==="A"?"arrow-up":"arrow-down";return Ku(fe,{column:e,children:[sr("span",{"data-icon":t}),typeof e.sorted=="number"?sr("span",{className:"vuuSortPosition",children:Math.abs(e.sorted)}):null]})};import{jsx as fE,jsxs as gE}from"react/jsx-runtime";import{createElement as dE}from"react";import zu from"classnames";import{useCallback as Vu,useRef as $u,useState as Bu}from"react";import{OverflowContainer as Wu,useLayoutEffectSkipFirst as Qu}from"@vuu-ui/vuu-layout";import{jsx as Co,jsxs as Xu}from"react/jsx-runtime";import{createElement as Uu}from"react";var go="vuuTableNextGroupHeaderCell",Gu=(e,t)=>e===t?e:t,gt=({column:e,className:t,onRemoveColumn:o,onResize:n,...r})=>{let s=$u(null),{isResizing:i,...l}=Je({column:e,onResize:n,rootRef:s}),[a,u]=Bu(e.columns),{className:m,style:p}=ee(e,go,!0),g=a.length>1?{removable:!0,onRemove:o}:void 0,c=Vu((d,C)=>{u(f=>{let h=f.slice(),[w]=h.splice(d,1);return C===-1?h.concat(w):(h.splice(C,0,w),h)})},[]);return Qu(()=>{u(d=>Gu(d,e.columns))},[e.columns]),Xu("div",{...r,className:zu(m,"vuuTableNextHeaderCell",t,{[`${go}-pending`]:e.groupConfirmed===!1}),ref:s,role:"columnheader",style:p,children:[Co(Wu,{allowDragDrop:!0,className:`${go}-inner`,height:24,onMoveItem:c,overflowPosition:"start",children:a.map(d=>Uu(fo,{...g,column:d,key:d.key}))}),Co(fe,{column:e,removable:!0,onRemove:o}),e.resizeable!==!1?Co(Ye,{...l}):null]})};import{useCallback as ec,useRef as tc}from"react";import{useContextMenu as _u}from"@vuu-ui/vuu-popups";import Yu from"classnames";import{useCallback as lr,useRef as Ju,useState as Zu}from"react";import{jsx as ju}from"react/jsx-runtime";var qu=e=>{if(e){let{bottom:t,left:o}=e.getBoundingClientRect();return{x:o,y:t+6}}},ar=({className:e,column:t,...o})=>{let n=Ju(null),[r,s]=Zu(!1),[i]=_u(),l=lr(()=>{s(!1)},[]),a=lr(u=>{s(!0),i(u,"column-menu",{column:t,ContextMenuProps:{onClose:l,position:qu(n.current)}})},[t,l,i]);return ju("span",{...o,className:Yu("vuuTable-columnMenu",e,{"vuuTable-columnMenu-open":r}),"data-icon":"more-vert",onClick:a,ref:n})};import oc from"classnames";import{jsx as Ct,jsxs as nc}from"react/jsx-runtime";var bo="vuuTableNextHeaderCell",ur=({className:e,column:t,onClick:o,onResize:n,...r})=>{var C;let s=tc(null),{isResizing:i,...l}=Je({column:t,onResize:n,rootRef:s}),a=ec(f=>{console.log(`click isResizing ${i}`),!i&&(o==null||o(f))},[i,o]),{className:u,style:m}=ee(t,bo,!0),p=Ct(ar,{column:t}),g=Ct("div",{className:`${bo}-label`,children:(C=t.label)!=null?C:t.name}),c=Ct(ir,{column:t}),d=t.align==="right"?[c,g,p]:[p,g,c];return nc("div",{...r,className:oc(u,e,{[`${bo}-resizing`]:i}),onClick:a,ref:s,role:"columnheader",style:m,children:[...d,t.resizeable!==!1?Ct(Ye,{...l}):null]})};import{ContextMenuProvider as Vm}from"@vuu-ui/vuu-popups";import{isGroupColumn as $m,metadataKeys as Bm,notHidden as Wm}from"@vuu-ui/vuu-utils";import Wr from"classnames";import{forwardRef as Qm,useRef as Gm}from"react";import{isGroupColumn as fr,isJsonColumn as dc,isJsonGroup as fc,metadataKeys as gc,notHidden as Cc,RowSelected as bc}from"@vuu-ui/vuu-utils";import hc from"classnames";import{memo as xc,useCallback as gr}from"react";import{metadataKeys as rc}from"@vuu-ui/vuu-utils";import{useCallback as cr}from"react";import{jsx as mr}from"react/jsx-runtime";var{IDX:sc}=rc,ic="vuuTableNextCell",pr=({column:e,columnMap:t,onClick:o,onDataEdited:n,row:r})=>{let{className:s,style:i}=ee(e,ic),{CellRenderer:l,name:a,valueFormatter:u}=e,m=t[a],p=cr(c=>(n==null||n(r[sc],a,c),!0),[a,n,r]),g=cr(c=>{o==null||o(c,e)},[e,o]);return mr("div",{className:s,onClick:o?g:void 0,role:"cell",style:i,children:l?mr(l,{column:e,columnMap:t,onCommit:p,row:r}):u(r[m])})};import{getGroupValueAndOffset as lc,metadataKeys as ac}from"@vuu-ui/vuu-utils";import{useCallback as uc}from"react";import cc from"classnames";import{jsx as xo,jsxs as pc}from"react/jsx-runtime";var{IS_LEAF:mc}=ac,ho="vuuTableNextGroupCell",dr=({column:e,onClick:t,row:o})=>{let{columns:n}=e,[r,s]=lc(n,o),{className:i,style:l}=ee(e,ho),a=uc(p=>{t==null||t(p,e)},[e,t]),u=o[mc],m=Array(s).fill(0).map((p,g)=>xo("span",{className:`${ho}-spacer`},g));return pc("div",{className:cc(i,"vuuTableNextCell"),role:"cell",style:l,onClick:u?void 0:a,children:[m,u?null:xo("span",{className:`${ho}-toggle`,"data-icon":"triangle-right"}),xo("span",{children:r})]})};import{jsx as yo}from"react/jsx-runtime";import{createElement as Ec}from"react";var{IDX:yc,IS_EXPANDED:vc,SELECTED:Tc}=gc,re="vuuTableNextRow",vo=xc(({className:e,columnMap:t,columns:o,row:n,offset:r,onClick:s,onDataEdited:i,onToggleGroup:l,zebraStripes:a=!1,...u})=>{let{[yc]:m,[vc]:p,[Tc]:g}=n,c=gr(E=>{let P=E.shiftKey,y=E.ctrlKey||E.metaKey;s==null||s(n,P,y)},[s,n]),{True:d,First:C,Last:f}=bc,h=hc(re,e,{[`${re}-even`]:a&&m%2===0,[`${re}-expanded`]:p,[`${re}-selected`]:g&d,[`${re}-selectedStart`]:g&C,[`${re}-selectedEnd`]:g&f}),w={transform:`translate3d(0px, ${r}px, 0px)`},x=gr((E,P)=>{(fr(P)||fc(P,n))&&(E.stopPropagation(),l==null||l(n,P))},[l,n]);return Ec("div",{...u,"aria-rowindex":n[0],key:`row-${n[0]}`,role:"row",className:h,onClick:c,style:w},yo("span",{className:`${re}-selectionDecorator vuuStickyLeft`}),o.filter(Cc).map(E=>{let P=fr(E),y=dc(E);return yo(P?dr:pr,{column:E,columnMap:t,onClick:P||y?x:void 0,onDataEdited:i,row:n},E.key)}),yo("span",{className:`${re}-selectionDecorator vuuStickyRight`}))});vo.displayName="Row";import{useLayoutEffectSkipFirst as Mm}from"@vuu-ui/vuu-layout";import{useDragDropNext as Hm}from"@vuu-ui/vuu-ui-controls";import{useCallback as se,useEffect as Dc,useMemo as Rc,useRef as wo}from"react";var To=e=>`.vuuTableNext-col-headers .vuuTableNextHeaderCell:nth-child(${e})`,Eo=(e,t)=>`.vuuTableNext-body > [aria-rowindex='${e}'] > [role='cell']:nth-child(${t+1})`,Cr=(e,[t,o])=>{var s;let n=t===-1?To(o):Eo(t,o),r=(s=e.current)==null?void 0:s.querySelector(n);return wc(r)&&r.querySelector("button")||r},wc=e=>e.classList.contains("vuuTableNextCell-editable"),br=e=>e.querySelector(".vuuTableInputCell")!==null;var Sc=new Set(["Home","End","PageUp","PageDown","ArrowDown","ArrowLeft","ArrowRight","ArrowUp"]),Pc=e=>Sc.has(e),Mc=["Home","End","PageUp","PageDown"],Hc=e=>Mc.includes(e),Oc=[-1,-1],Ac=[void 0,void 0],Lc=e=>{var o,n;let t=(o=e.closest(".vuuTableNext"))==null?void 0:o.querySelector(".vuuTableNext-scrollbarContainer");if(t){let r=t==null?void 0:t.getBoundingClientRect(),s=(n=e.closest(".vuuTableNextCell"))==null?void 0:n.getBoundingClientRect();if(s)return s.bottom>r.bottom?["down",s.bottom-r.bottom]:s.top<r.top?["up",s.top-r.top]:s.right<r.right?["right",s.right-r.right]:s.left<r.left?["left",s.left-r.left]:Ac;throw Error("Whats going on, cell not found")}else throw Error("Whats going on, scrollbar container not found")};function Nc(e,[t,o],n,r){return e==="ArrowUp"?t>-1?[t-1,o]:[t,o]:e==="ArrowDown"?t===-1?[0,o]:t===r-1?[t,o]:[t+1,o]:e==="ArrowRight"?o<n-1?[t,o+1]:[t,o]:e==="ArrowLeft"?o>1?[t,o-1]:[t,o]:[t,o]}var hr=({columnCount:e=0,containerRef:t,disableHighlightOnFocus:o,requestScroll:n,rowCount:r=0,viewportRowCount:s})=>{var P;let i=wo([-1,-1]),l=wo(),a=wo([-1,0]),u=y=>y==null?void 0:y.closest("[role='columnHeader'],[role='cell']"),m=y=>{var b,D;if(y.role==="columnHeader")return[-1,parseInt((b=y.dataset.idx)!=null?b:"-1",10)];{let R=y.closest("[role='row']");if(R){let M=parseInt((D=R.ariaRowIndex)!=null?D:"-1",10),F=Array.from(R.childNodes).indexOf(y);return[M,F]}}return Oc},p=se(y=>{var b;if(t.current){let D=Cr(t,y);if(D){D!==l.current&&((b=l.current)==null||b.removeAttribute("tabindex"),l.current=D,D.setAttribute("tabindex","0"));let[R,M]=Lc(D);R&&M&&(n==null||n({type:"scroll-distance",distance:M,direction:R})),D.focus()}}},[t,n]),g=se((y,b,D=!1)=>{let R=[y,b];a.current=R,p(R),D&&(i.current=R)},[p]),c=se((y,[b,D])=>new Promise(R=>{let M=b;switch(y){case"PageDown":M=Math.min(r-1,b+s),n==null||n({type:"scroll-page",direction:"down"});break;case"PageUp":M=Math.max(0,b-s),n==null||n({type:"scroll-page",direction:"up"});break;case"Home":M=0,n==null||n({type:"scroll-end",direction:"home"});break;case"End":M=r-1,n==null||n({type:"scroll-end",direction:"end"});break}setTimeout(()=>{R([M,D])},90)}),[n,r,s]),d=se(()=>{var y;if(o!==!0&&(y=t.current)!=null&&y.contains(document.activeElement)){let b=u(document.activeElement);b&&(console.log({focusedCell:b}),i.current=m(b))}},[o,t]),C=se(async y=>{console.log(`navigate child items ${y}`);let[b,D]=Hc(y)?await c(y,a.current):Nc(y,a.current,e,r);console.log(`nextRowIdx ${b} nextColIdx ${D}`);let[R,M]=a.current;(b!==R||D!==M)&&g(b,D,!0)},[e,c,r,g]),f=se(y=>{r>0&&Pc(y.key)&&(y.preventDefault(),y.stopPropagation(),C(y.key))},[r,C]),h=se(y=>{let b=y.target,D=u(b);if(D){let[R,M]=m(D);g(R,M)}},[g]),w=se(()=>{C("ArrowDown")},[C]),x=Rc(()=>({navigate:w,onClick:h,onFocus:d,onKeyDown:f}),[h,d,f,w]),E=((P=t.current)==null?void 0:P.firstChild)!=null;return Dc(()=>{if(E&&l.current===void 0){let{current:y}=t,b=(y==null?void 0:y.querySelector(To(0)))||(y==null?void 0:y.querySelector(Eo(0,0)));b&&(b.setAttribute("tabindex","0"),l.current=b)}},[t,E]),x};import{applySort as Om,buildColumnMap as Am,isGroupColumn as Lm,isJsonGroup as Nm,isValidNumber as Ir,metadataKeys as km,updateColumn as Fm,visibleColumnAtIndex as Im}from"@vuu-ui/vuu-utils";import{useCallback as N,useEffect as Kr,useMemo as Po,useState as Mo}from"react";var Ze=(e,t)=>{switch(t.type){case"col-size":return{...e,columns:e.columns.map(o=>o.name===t.column.name?{...o,width:t.width}:o)};case"column-prop":return{...e,columns:e.columns.map(o=>o.name===t.column.name?{...o,[t.property]:t.value}:o)};default:return e}};import{isVuuFeatureAction as Kc,isVuuFeatureInvocation as zc}from"@vuu-ui/vuu-data-react/src";import{getFullRange as Do,NULL_RANGE as xr}from"@vuu-ui/vuu-utils";import{useCallback as Ro,useEffect as yr,useMemo as Vc,useRef as ht,useState as $c}from"react";import{metadataKeys as kc,WindowRange as Fc}from"@vuu-ui/vuu-utils";var{SELECTED:Ic}=kc,bt=class{constructor({from:t,to:o}){this.rowCount=0;this.setRowCount=t=>{t<this.data.length&&(this.data.length=t),this.rowCount=t};this.range=new Fc(t,o),this.data=new Array(o-t),this.rowCount=0}add(t){let[o]=t;if(this.isWithinRange(o)){let n=o-this.range.from;this.data[n]=t}}getAtIndex(t){return this.range.isWithin(t)&&this.data[t-this.range.from]!=null?this.data[t-this.range.from]:void 0}isWithinRange(t){return this.range.isWithin(t)}setRange({from:t,to:o}){if(t!==this.range.from||o!==this.range.to){let[n,r]=this.range.overlap(t,o),s=new Array(Math.max(0,o-t));for(let i=n;i<r;i++){let l=this.getAtIndex(i);if(l){let a=i-t;s[a]=l}}this.data=s,this.range.from=t,this.range.to=o}}getSelectedRows(){return this.data.filter(t=>t[Ic]!==0)}};var vr=({dataSource:e,onFeatureEnabled:t,onFeatureInvocation:o,onSizeChange:n,onSubscribed:r,range:s=xr,renderBufferSize:i=0})=>{let[,l]=$c(null),a=ht([]),u=ht(!0),m=ht(!1),p=ht(xr),g=Vc(()=>new bt(Do(s,i)),[]),c=Ro(f=>{for(let h of f)g.add(h);a.current=g.data,u.current&&l({})},[g]),d=Ro(f=>{f.type==="subscribed"?r==null||r(f):f.type==="viewport-update"?(typeof f.size=="number"&&(n==null||n(f.size),g.setRowCount(f.size)),f.rows?c(f.rows):typeof f.size=="number"&&(a.current=g.data,m.current=!0)):Kc(f)?t==null||t(f):zc(f)?o==null||o(f):console.log(`useDataSource unexpected message ${f.type}`)},[g,t,o,n,r,c]);yr(()=>()=>{u.current=!0,u.current=!1},[]),yr(()=>{e==null||e.subscribe({range:Do(s,i)},d)},[e,d,s,i]);let C=Ro(f=>{let h=Do(f,i);g.setRange(h),e.range=p.current=h,e.emit("range",f)},[e,g,i]);return{data:a.current,range:p.current,setRange:C}};import{useMemo as Bc,useRef as Wc}from"react";var Tr=e=>{let t=Wc(e);return Bc(()=>t.current,[])};import{buildColumnMap as Qc}from"@vuu-ui/vuu-utils";import{useCallback as Gc}from"react";import{useContextMenu as Uc}from"@vuu-ui/vuu-popups";var Er=({columns:e,data:t})=>{let[o]=Uc();return Gc(r=>{var a;let s=r.target,i=s==null?void 0:s.closest("div[role='cell']"),l=s==null?void 0:s.closest("div[role='row']");if(i&&l){let u=Qc(e),m=parseInt((a=l.ariaRowIndex)!=null?a:"-1"),p=Array.from(l.childNodes).indexOf(i),g=t.find(([d])=>d===m),c=e[p];o(r,"grid",{columnMap:u,columnName:c,row:g})}},[e,t,o])};import{isCharacterKey as Xc}from"@vuu-ui/vuu-utils";import{useCallback as xt}from"react";var wr=({navigate:e})=>{let t=xt(()=>{e()},[e]),o=xt(s=>{let i=s.target,l=i.querySelector("input");l&&(l.focus(),l.select()),i.addEventListener("vuu-commit",t,!0)},[t]),n=xt(s=>{let i=s.target,l=i.querySelector("input");l&&(l.focus(),l.select()),i.addEventListener("vuu-commit",t,!0)},[t]);return{onKeyDown:xt(s=>{br(s.target)&&(Xc(s.key)?o(s):s.key==="Enter"&&n(s))},[o,n])}};import{applyFilterToColumns as _c,applyGroupByToColumns as Yc,applySortToColumns as Jc,getCellRenderer as Zc,getTableHeadings as qc,getValueFormatter as jc,hasValidationRules as em,isFilteredColumn as tm,isGroupColumn as om,isPinned as nm,isTypeDescriptor as rm,logger as sm,metadataKeys as im,moveItem as lm,sortPinnedColumns as Dr,stripFilterFromColumns as am,subscribedOnly as um}from"@vuu-ui/vuu-utils";import{buildValidationChecker as cm}from"@vuu-ui/vuu-ui-controls";import{useReducer as mm}from"react";var{info:So}=sm("useTableModel"),pm=100,dm=im.count,fm=({serverDataType:e})=>e===void 0,gm=e=>{var t;if(rm(e.type))return Zc((t=e.type)==null?void 0:t.renderer)},Cm=(e,t)=>{var n;let o=t.columns.find(({name:r})=>r===e.name);return o?o.serverDataType:(n=e.serverDataType)!=null?n:"string"},bm=["int","long","double"],Rr=e=>e===void 0?void 0:bm.includes(e)?"right":"left",Sr=e=>e.type==="columnSettings",Pr=e=>e.type==="tableSettings",hm=(e,t)=>{switch(So==null||So(`TableModelReducer ${t.type}`),console.log(`TableModelReducer ${t.type}`),t.type){case"init":return console.log({init:t}),Hr(t);case"moveColumn":return ym(e,t);case"resizeColumn":return Em(e,t);case"setTableSchema":return wm(e,t);case"hideColumns":return vm(e,t);case"showColumns":return Tm(e,t);case"pinColumn":return Dm(e,t);case"updateColumnProp":return Oe(e,t);case"tableConfig":return Ar(e,t);default:return console.log(`unhandled action ${t.type}`),e}},Mr=(e,t)=>{let[o,n]=mm(hm,{tableConfig:e,dataSourceConfig:t},Hr),{columns:r,headings:s,tableConfig:i,...l}=o;return{columns:r,dispatchColumnAction:n,headings:s,tableAttributes:l,tableConfig:i}};function Hr({dataSourceConfig:e,tableConfig:t}){let{columns:o,...n}=t,r=o.filter(um(e==null?void 0:e.columns)).map(Or(n)),s=r.some(nm)?Dr(r):r,i={columns:s,headings:qc(s),tableConfig:t,...n};if(e){let{columns:l,...a}=e;i=Ar(i,{type:"tableConfig",...a})}return i}var xm=(e,t)=>t==="uppercase"?e.toUpperCase():t==="capitalize"?e[0].toUpperCase()+e.slice(1).toLowerCase():e,Or=e=>(t,o)=>{let{columnDefaultWidth:n=pm,columnFormatHeader:r}=e,{align:s=Rr(t.serverDataType),key:i,name:l,label:a=l,width:u=n,...m}=t,p={...m,align:s,CellRenderer:gm(t),clientSideEditValidationCheck:em(t.type)?cm(t.type.renderer.rules):void 0,label:xm(a,r),key:i!=null?i:o+dm,name:l,originalIdx:o,valueFormatter:jc(t),width:u};return om(p)&&(p.columns=p.columns.map(g=>Or(e)(g,g.key))),p};function ym(e,{column:t,moveBy:o,moveTo:n}){let{columns:r}=e;if(typeof o=="number"){let s=r.indexOf(t),i=r.slice(),[l]=i.splice(s,1);return i.splice(s+o,0,l),{...e,columns:i}}else if(typeof n=="number"){let s=r.indexOf(t);return{...e,columns:lm(r,s,n)}}return e}function vm(e,{columns:t}){return t.some(o=>o.hidden!==!0)?t.reduce((o,n)=>n.hidden!==!0?Oe(o,{type:"updateColumnProp",column:n,hidden:!0}):o,e):e}function Tm(e,{columns:t}){return t.some(o=>o.hidden)?t.reduce((o,n)=>n.hidden?Oe(o,{type:"updateColumnProp",column:n,hidden:!1}):o,e):e}function Em(e,{column:t,phase:o,width:n}){let r="updateColumnProp",s=o!=="end";switch(o){case"begin":return Oe(e,{type:r,column:t,resizing:s});case"end":return Oe(e,{type:r,column:t,resizing:s,width:n});case"resize":return Oe(e,{type:r,column:t,width:n});default:throw Error(`useTableModel.resizeColumn, invalid resizePhase ${o}`)}}function wm(e,{tableSchema:t}){let{columns:o}=e;if(o.some(fm)){let n=o.map(r=>{var i;let s=Cm(r,t);return{...r,align:(i=r.align)!=null?i:Rr(s),serverDataType:s}});return{...e,columns:n}}else return e}function Dm(e,t){let{columns:o}=e,{column:n,pin:r}=t,s=o.find(i=>i.name===n.name);return s?(o=He(o,{...s,pin:r}),o=Dr(o),{...e,columns:o}):e}function Oe(e,t){let{columns:o}=e,{align:n,column:r,hidden:s,label:i,resizing:l,width:a}=t,u=o.find(m=>m.name===r.name);return u&&((n==="left"||n==="right")&&(o=He(o,{...u,align:n})),typeof i=="string"&&(o=He(o,{...u,label:i})),typeof l=="boolean"&&(o=He(o,{...u,resizing:l})),typeof s=="boolean"&&(o=He(o,{...u,hidden:s})),typeof a=="number"&&(o=He(o,{...u,width:a}))),{...e,columns:o}}function Ar(e,{confirmed:t,filter:o,groupBy:n,sort:r}){let s=n!==void 0,i=typeof(o==null?void 0:o.filter)=="string",l=r&&r.sortDefs.length>0,a=e;return s&&(a={...e,columns:Yc(a.columns,n,t)}),l&&(a={...e,columns:Jc(a.columns,r)}),i?a={...e,columns:_c(a.columns,o)}:a.columns.some(tm)&&(a={...e,columns:am(a.columns)}),a}function He(e,t){return e.map(o=>o.name===t.name?t:o)}import{useCallback as ie,useRef as qe}from"react";var Lr=e=>{let{scrollLeft:t,scrollTop:o}=e,{clientHeight:n,clientWidth:r,scrollHeight:s,scrollWidth:i}=e,l=t/(i-r),a=o/(s-n);return[l,a]},Nr=({onAttach:e,onDetach:t})=>{let o=qe(null);return ie(r=>{if(r)o.current=r,e==null||e(r);else if(o.current){let{current:s}=o;o.current=r,t==null||t(s)}},[e,t])},kr=({maxScrollLeft:e,maxScrollTop:t,onHorizontalScroll:o,onVerticalScroll:n,rowHeight:r,viewportRowCount:s})=>{let i=qe(!1),l=qe({scrollTop:0,scrollLeft:0}),a=qe(null),u=qe(null),m=ie(()=>{let{current:x}=u,{current:E}=a,{current:P}=i;if(P)i.current=!1;else if(x&&E){let[y,b]=Lr(E),D=Math.round(y*e),R=Math.round(b*t);x.scrollTo({left:D,top:R,behavior:"auto"})}},[e,t]),p=ie(()=>{let{current:x}=u,{current:E}=a,{current:P}=l;if(x&&E){let{scrollLeft:y,scrollTop:b}=x,[D,R]=Lr(x);i.current=!0,E.scrollLeft=Math.round(D*e),E.scrollTop=Math.round(R*t),P.scrollTop!==b&&(P.scrollTop=b,n==null||n(b,R)),P.scrollLeft!==y&&(P.scrollLeft=y,o==null||o(y))}},[e,t,o,n]),g=ie(x=>{a.current=x,x.addEventListener("scroll",m,{passive:!0})},[m]),c=ie(x=>{a.current=null,x.removeEventListener("scroll",m)},[m]),d=ie(x=>{u.current=x,x.addEventListener("scroll",p,{passive:!0})},[p]),C=ie(x=>{u.current=null,x.removeEventListener("scroll",p)},[p]),f=Nr({onAttach:d,onDetach:C}),h=Nr({onAttach:g,onDetach:c}),w=ie(x=>{let{current:E}=u;if(E){let{scrollLeft:P,scrollTop:y}=E;if(i.current=!1,x.type==="scroll-distance"){let b=P,D=y;x.direction==="up"||x.direction==="down"?D=Math.min(Math.max(0,y+x.distance),t):b=Math.min(Math.max(0,P+x.distance),e),E.scrollTo({top:D,left:b,behavior:"auto"})}else if(x.type==="scroll-page"){let{direction:b}=x,D=s*(b==="down"?r:-r),R=Math.min(Math.max(0,y+D),t);E.scrollTo({top:R,left:P,behavior:"auto"})}else if(x.type==="scroll-end"){let{direction:b}=x,D=b==="end"?t:0;E.scrollTo({top:D,left:E.scrollLeft,behavior:"auto"})}}},[e,t,r,s]);return{scrollbarContainerRef:h,contentContainerRef:f,requestScroll:w}};import{useCallback as Rm,useEffect as Sm,useRef as Pm}from"react";var Fr=({columns:e,getRowAtPosition:t,setRange:o,viewportMeasurements:n})=>{let r=Pm(0),{contentWidth:s,rowCount:i}=n,l=Rm(a=>{let u=t(a);u!==r.current&&(r.current=u,o({from:u,to:u+i}))},[t,o,i]);return Sm(()=>{let{current:a}=r,u={from:a,to:a+i};o(u)},[o,i]),{onVerticalScroll:l}};var{KEY:Km,IS_EXPANDED:zr,IS_LEAF:Vr}=km,zm=(e,t)=>({...e,columns:e.columns.concat(t)}),$r=({availableColumns:e,config:t,containerRef:o,dataSource:n,headerHeight:r=25,onAvailableColumnsChange:s,onConfigChange:i,onFeatureEnabled:l,onFeatureInvocation:a,onRowClick:u,onSelect:m,onSelectionChange:p,renderBufferSize:g=0,rowHeight:c=20,selectionModel:d})=>{let[C,f]=Mo(n.size);if(n===void 0)throw Error("no data source provided to Vuu Table");let[h,w]=Mo(),x=N(v=>{w(v)},[]),E=Po(()=>oo(n),[n]),P=N(v=>{f(v)},[]),{columns:y,dispatchColumnAction:b,headings:D,tableAttributes:R,tableConfig:M}=Mr(t,n.config);Mm(()=>{b({type:"init",dataSourceConfig:n.config,tableConfig:M})},[M,n.config,b]);let[F,U]=Mo(),[O,le]=Po(()=>{let v=(H,A)=>{let K=Fm(y,H,{width:A});U(K)};return[F!=null?F:y,v]},[y,F]),Tt=Po(()=>Am(n.columns),[n.columns]),{getRowAtPosition:Et,getRowOffset:ko,setPctScrollTop:Fo,...X}=ao({columns:O,headerHeight:r,headings:D,rowCount:C,rowHeight:c,size:h}),wt=Tr({from:0,to:X.rowCount}),et=N(({tableSchema:v})=>{v||console.log("usbscription message with no schema")},[]),{data:ae,range:Q,setRange:Dt}=vr({dataSource:n,onFeatureEnabled:l,onFeatureInvocation:a,renderBufferSize:g,onSizeChange:P,onSubscribed:et,range:wt}),Rt=N(v=>{b({type:"init",tableConfig:v,dataSourceConfig:n.config}),i==null||i(v)},[n.config,b,i]),St=N(v=>{n.config={...n.config,...v}},[n]),V=N(v=>{n.columns=n.columns.concat(v.name);let H=zm(M,v);b({type:"init",tableConfig:H,dataSourceConfig:n.config}),i==null||i(H)},[n,b,i,M]);Kr(()=>{n.on("config",(v,H)=>{b({type:"tableConfig",...v,confirmed:H})})},[n,b]);let{showColumnSettingsPanel:ue,showTableSettingsPanel:Io}=Br({availableColumns:e!=null?e:M.columns.map(({name:v,serverDataType:H="string"})=>({name:v,serverDataType:H})),onAvailableColumnsChange:s,onConfigChange:Rt,onCreateCalculatedColumn:V,onDataSourceConfigChange:St,tableConfig:M}),Ur=N(v=>{Sr(v)?ue(v):Pr(v)?Io():b(v)},[b,ue,Io]),Xr=ro({dataSource:n,onPersistentColumnOperation:Ur}),Ko=N((v,H=!1,A)=>{n&&(n.sort=Om(n.sort,v,H,A))},[n]),_r=N((v,H,A)=>{let K=O.find(_=>_.name===H);if(K)v==="resize"?Ir(A)&&le(H,A):v==="end"?Ir(A)&&(b({type:"resizeColumn",phase:v,column:K,width:A}),i==null||i(Ze(M,{type:"col-size",column:K,width:A}))):(U(void 0),b({type:"resizeColumn",phase:v,column:K,width:A}));else throw Error(`useDataTable.handleColumnResize, column ${H} not found`)},[O,M,b,i,le]),Yr=N((v,H)=>{let A=Nm(H,v),K=v[Km];if(v[zr]){if(n.closeTreeNode(K,!0),A){let _=O.indexOf(H);n.getRowsAtDepth(_+1).some(Y=>Y[zr]||Y[Vr])||b({type:"hideColumns",columns:O.slice(_+2)})}}else if(n.openTreeNode(K),A){let _=n.getChildRows(K),Le=O.indexOf(H)+1,Y=[O[Le]];_.some(Pt=>Pt[Vr])&&Y.push(O[Le+1]),Y.some(Pt=>Pt.hidden)&&b({type:"showColumns",columns:Y})}},[O,n,b]),{onVerticalScroll:zo}=Fr({columns:O,getRowAtPosition:Et,setRange:Dt,viewportMeasurements:X}),Jr=N(v=>{zo(v)},[zo]),{requestScroll:Zr,...qr}=kr({maxScrollLeft:X.maxScrollContainerScrollHorizontal,maxScrollTop:X.maxScrollContainerScrollVertical,rowHeight:c,onVerticalScroll:Jr,viewportRowCount:X.rowCount}),{navigate:jr,onKeyDown:Vo,...es}=hr({columnCount:O.filter(v=>v.hidden!==!0).length,containerRef:o,requestScroll:Zr,rowCount:n==null?void 0:n.size,viewportRange:Q,viewportRowCount:X.rowCount}),{onKeyDown:$o}=wr({navigate:jr}),ts=N(v=>{Vo(v),v.defaultPrevented||$o(v)},[Vo,$o]),os=Er({columns:O,data:ae}),ns=N(v=>{var Y;let A=v.target.closest(".vuuTableNextHeaderCell"),K=parseInt((Y=A==null?void 0:A.dataset.index)!=null?Y:"-1"),_=Im(O,K),Le=v.shiftKey;_&&Ko(_,Le)},[O,Ko]),rs=N(v=>{Lm(v)?n.groupBy=[]:n&&n.groupBy.includes(v.name)&&(n.groupBy=n.groupBy.filter(H=>H!==v.name))},[n]),ss=N(v=>{n.select(v),p==null||p(v)},[n,p]),Bo=lo({onSelect:m,onSelectionChange:ss,selectionModel:d}),is=N((v,H,A)=>{Bo(v,H,A),u==null||u(v)},[u,Bo]);Kr(()=>{n.on("config",(v,H)=>{b({type:"tableConfig",...v,confirmed:H})})},[n,b]);let ls=N((v,H)=>{let A=O[v];b({type:"moveColumn",column:A,moveTo:H})},[O,b]),as=N((v,H,A)=>n.applyEdit(v,H,A),[n]),{onMouseDown:us,...cs}=Hm({allowDragDrop:!0,containerRef:o,draggableClassName:"vuuTableNext",onDrop:ls,orientation:"horizontal",itemQuery:".vuuTableNextHeaderCell"});return{...es,onKeyDown:ts,columnMap:Tt,columns:O,data:ae,handleContextMenuAction:Xr,headerProps:{onClick:ns,onMouseDown:us,onResize:_r},menuBuilder:E,onContextMenu:os,onDataEdited:as,onRemoveGroupColumn:rs,onResize:x,onRowClick:is,onToggleGroup:Yr,scrollProps:qr,tableAttributes:R,viewportMeasurements:X,dragDropHook:cs}};import{MeasuredContainer as Um,useId as Xm}from"@vuu-ui/vuu-layout";import{useForkRef as _m}from"@salt-ds/core";import{jsx as ge,jsxs as Ho}from"react/jsx-runtime";import{createElement as Qr}from"react";var W="vuuTableNext",{IDX:Ym,RENDER_IDX:Jm}=Bm,Zm=Qm(function({Row:t=vo,availableColumns:o,className:n,config:r,dataSource:s,id:i,onAvailableColumnsChange:l,onConfigChange:a,onFeatureEnabled:u,onFeatureInvocation:m,onRowClick:p,onSelect:g,onSelectionChange:c,onShowConfigEditor:d,renderBufferSize:C=0,rowHeight:f=20,selectionModel:h="extended",showColumnHeaders:w=!0,headerHeight:x=w?25:0,style:E,...P},y){let b=Xm(i),D=Gm(null),{columnMap:R,columns:M,data:F,dragDropHook:U,handleContextMenuAction:O,headerProps:le,onDataEdited:Tt,onRemoveGroupColumn:Et,onResize:ko,onRowClick:Fo,onToggleGroup:X,menuBuilder:wt,scrollProps:et,tableAttributes:ae,viewportMeasurements:Q,...Dt}=$r({availableColumns:o,config:r,containerRef:D,dataSource:s,headerHeight:x,onAvailableColumnsChange:l,onConfigChange:a,onFeatureEnabled:u,onFeatureInvocation:m,onRowClick:p,onSelect:g,onSelectionChange:c,renderBufferSize:C,rowHeight:f,selectionModel:h}),Rt=()=>({...E,"--content-height":`${Q.contentHeight}px`,"--horizontal-scrollbar-height":`${Q.horizontalScrollbarHeight}px`,"--content-width":`${Q.contentWidth}px`,"--pinned-width-left":`${Q.pinnedWidthLeft}px`,"--pinned-width-right":`${Q.pinnedWidthRight}px`,"--header-height":`${x}px`,"--row-height":`${f}px`,"--total-header-height":`${Q.totalHeaderHeight}px`,"--vertical-scrollbar-width":`${Q.verticalScrollbarWidth}px`,"--viewport-body-height":`${Q.viewportBodyHeight}px`}),St=Wr(W,n,{[`${W}-colLines`]:ae.columnSeparators,[`${W}-rowLines`]:ae.rowSeparators,[`${W}-zebra`]:ae.zebraStripes});return ge(Vm,{menuActionHandler:O,menuBuilder:wt,children:Ho(Um,{...P,className:St,onResize:ko,ref:_m(D,y),style:Rt(),children:[ge("div",{className:`${W}-scrollbarContainer`,ref:et.scrollbarContainerRef,children:ge("div",{className:`${W}-scrollbarContent`})}),ge("div",{className:`${W}-contentContainer`,ref:et.contentContainerRef,children:Ho("div",{...Dt,className:`${W}-table`,tabIndex:-1,children:[w?ge("div",{className:`${W}-col-headings`,children:Ho("div",{className:`${W}-col-headers`,role:"row",children:[M.filter(Wm).map((V,ue)=>$m(V)?Qr(gt,{...le,column:V,"data-index":ue,key:V.name,onRemoveColumn:Et}):Qr(ur,{...le,className:Wr({"vuuDraggable-dragAway":ue===U.draggedItemIndex}),column:V,"data-index":ue,id:`${b}-col-${ue}`,key:V.name})),U.draggable]})}):null,ge("div",{className:`${W}-body`,children:F.map(V=>ge(t,{columnMap:R,columns:M,onClick:Fo,onDataEdited:Tt,row:V,offset:f*V[Ym]+x,onToggleGroup:X,zebraStripes:ae.zebraStripes},V[Jm]))})]})})]})})});import{Dropdown as qm}from"@vuu-ui/vuu-ui-controls";import{isColumnTypeRenderer as jm,isTypeDescriptor as ep,registerComponent as tp}from"@vuu-ui/vuu-utils";import{useCallback as op,useState as np}from"react";import{jsx as lp}from"react/jsx-runtime";var rp="vuuTableDropdownCell",sp=["Enter"," "],ip=({column:e,columnMap:t,row:o})=>{var a,u,m;let n=ep(e.type)&&jm((a=e.type)==null?void 0:a.renderer)?(m=(u=e.type)==null?void 0:u.renderer)==null?void 0:m.values:[],r=t[e.name],[s,i]=np(o[r]),l=op((p,g)=>{g&&i(g)},[]);return lp(qm,{className:rp,onSelectionChange:l,openKeys:sp,selected:s,source:n,width:e.width-17})};tp("dropdown-cell",ip,"cell-renderer",{});import{registerComponent as ap}from"@vuu-ui/vuu-utils";import{Input as up}from"@salt-ds/core";import{useEditableText as cp}from"@vuu-ui/vuu-ui-controls";import mp from"classnames";import{jsx as Oo}from"react/jsx-runtime";var yt="vuuTableInputCell",pp=()=>(console.warn("onCommit handler has not been provided to InputCell cell renderer"),!0),dp=({column:e,columnMap:t,onCommit:o=pp,row:n})=>{let r=t[e.name],{align:s="left",clientSideEditValidationCheck:i,valueFormatter:l}=e,{warningMessage:a,...u}=cp({initialValue:l(n[r]),onCommit:o,clientSideEditValidationCheck:i}),m=a&&s==="left"?Oo("span",{className:`${yt}-icon`,"data-icon":"error"}):void 0,p=a&&s==="right"?Oo("span",{className:`${yt}-icon`,"data-icon":"error"}):void 0;return Oo(up,{...u,className:mp(yt,{[`${yt}-error`]:a!==void 0}),endAdornment:m,startAdornment:p})};ap("input-cell",dp,"cell-renderer",{});import{addColumnToSubscribedColumns as gp,isCalculatedColumn as Cp,moveItem as bp,subscribedOnly as hp}from"@vuu-ui/vuu-utils";import{useCallback as vt,useMemo as xp,useState as yp}from"react";var vp=(e,t)=>{let o=[];for(let{name:n}of e){let r=t.find(s=>s.name===n);r&&o.push(r)}return o},Tp=(e,t)=>e.map(({name:o,serverDataType:n})=>{let r=t.find(s=>s.name===o);return{hidden:r==null?void 0:r.hidden,isCalculated:Cp(o),label:r==null?void 0:r.label,name:o,serverDataType:n,subscribed:r!==void 0}}),Gr=({availableColumns:e,onConfigChange:t,onDataSourceConfigChange:o,tableConfig:n})=>{let[{availableColumns:r,tableConfig:s},i]=yp({availableColumns:e,tableConfig:n}),l=xp(()=>Tp(r,s.columns),[r,s.columns]),a=vt((c,d)=>{i(C=>{let f=bp(C.availableColumns,c,d),h=vp(f,s.columns);return{availableColumns:f,tableConfig:{...C.tableConfig,columns:h}}})},[s.columns]),u=vt((c,d,C)=>{let f=l.find(h=>h.name===c);if(d==="subscribed")if(f!=null&&f.subscribed){let h=s.columns.filter(w=>w.name!==c).map(w=>w.name);i(w=>({...w,tableConfig:{...s,columns:s.columns.filter(hp(h))}})),o({columns:h})}else{let h={...s,columns:gp(s.columns,r,c)};i(x=>({...x,tableConfig:h}));let w=h.columns.map(x=>x.name);o({columns:w})}else if(f!=null&&f.subscribed){let h=s.columns.find(w=>w.name===c);if(h){let w=Ze(s,{type:"column-prop",property:d,column:h,value:C});i(x=>({...x,tableConfig:w}))}}},[r,l,o,s]),m=vt(c=>{let{value:d}=c.target,C=d==="0"?void 0:d==="1"?"capitalize":"uppercase";i(f=>({...f,tableConfig:{...f.tableConfig,columnFormatHeader:C}}))},[]),p=vt(c=>{let{ariaChecked:d,value:C}=c.target;i(f=>({...f,tableConfig:{...f.tableConfig,[C]:d!=="true"}}))},[]);fp(()=>{t==null||t(s)},[t,s]);let g=s.columnFormatHeader===void 0?0:s.columnFormatHeader==="capitalize"?1:2;return{columnItems:l,columnLabelsValue:g,onChangeColumnLabels:m,onChangeTableAttribute:p,onColumnChange:u,onMoveListItem:a,tableConfig:s}};import{jsx as I,jsxs as Ce}from"react/jsx-runtime";var No="vuuTableSettingsPanel",rS=({availableColumns:e,onAddCalculatedColumn:t,onConfigChange:o,onDataSourceConfigChange:n,tableConfig:r,...s})=>{let{columnItems:i,columnLabelsValue:l,onChangeColumnLabels:a,onChangeTableAttribute:u,onColumnChange:m,onMoveListItem:p,tableConfig:g}=Gr({availableColumns:e,onConfigChange:o,onDataSourceConfigChange:n,tableConfig:r});return Ce("div",{...s,className:No,children:[Ce(Ao,{children:[I(Lo,{children:"Column Labels"}),Ce(Dp,{className:"vuuToggleButtonGroup",onChange:a,value:l,children:[I(Ae,{className:"vuuIconToggleButton","data-icon":"text-strikethrough",value:0}),I(Ae,{className:"vuuIconToggleButton","data-icon":"text-Tt",value:1}),I(Ae,{className:"vuuIconToggleButton","data-icon":"text-T",value:2})]})]}),Ce(Ao,{children:[I(Lo,{children:"Grid separators"}),Ce("div",{className:"saltToggleButtonGroup vuuToggleButtonGroup saltToggleButtonGroup-horizontal vuuGridSeparators",children:[I(Ae,{className:"vuuIconToggleButton","data-icon":"row-striping",selected:g.zebraStripes,onChange:u,value:"zebraStripes"}),I(Ae,{className:"vuuIconToggleButton","data-icon":"row-lines",selected:g.rowSeparators,onChange:u,value:"rowSeparators"}),I(Ae,{className:"vuuIconToggleButton","data-icon":"col-lines",selected:g.columnSeparators,onChange:u,value:"columnSeparators"})]})]}),Ce(Ao,{children:[I(Lo,{children:"Default Column Width"}),I(wp,{className:"vuuInput"})]}),I(Zo,{columnItems:i,onChange:m,onMoveListItem:p}),Ce("div",{className:`${No}-calculatedButtonbar`,children:[I(Ep,{"data-icon":"plus",onClick:t}),I("span",{className:`${No}-calculatedLabel`,children:"Add calculated column"})]})]})};import{useLayoutProviderDispatch as Rp}from"@vuu-ui/vuu-layout";import{getCalculatedColumnType as Sp}from"@vuu-ui/vuu-utils";import{useCallback as je,useRef as Pp,useState as Mp}from"react";var Br=({availableColumns:e,onAvailableColumnsChange:t,onConfigChange:o,onCreateCalculatedColumn:n,onDataSourceConfigChange:r,tableConfig:s})=>{let i=Rp(),l=Pp(),[a,u]=Mp(e),m=je((d,C,f)=>{i({type:"set-props",path:"#context-panel",props:{expanded:!0,content:{type:d,props:f},title:C}})},[i]),p=je(d=>{let C=a.concat({name:d.name,serverDataType:Sp(d)});u(C),t==null||t(C),requestAnimationFrame(()=>{var f;(f=l.current)==null||f.call(l)}),n(d)},[a,t,n]),g=je(d=>{m("ColumnSettings","Column Settings",{column:d.column,onConfigChange:o,onCreateCalculatedColumn:p,tableConfig:s,vuuTable:d.vuuTable})},[p,o,m,s]),c=je(()=>{g({column:{name:"::",serverDataType:"string"},type:"columnSettings",vuuTable:{module:"SIMUL",table:"instruments"}})},[g]);return l.current=je(()=>{m("TableSettings","DataGrid Settings",{availableColumns:a!=null?a:s.columns.map(({name:d,serverDataType:C})=>({name:d,serverDataType:C})),onAddCalculatedColumn:c,onConfigChange:o,onDataSourceConfigChange:r,tableConfig:s})},[a,c,o,r,m,s]),{showColumnSettingsPanel:g,showTableSettingsPanel:l.current}};export{ii as BackgroundCell,ds as CaseValidator,Sn as ColumnExpressionInput,Ln as ColumnExpressionPanel,on as ColumnFormattingPanel,Zo as ColumnList,Vt as ColumnNamedTerms,tC as ColumnSettingsPanel,pC as DataSourceStats,jo as NumericFormattingSettings,bs as PatternValidator,rS as TableSettingsPanel,an as columnExpressionLanguageSupport,pn as isCompleteExpression,dn as isCompleteRelationalExpression,$t as lastNamedChild,Rn as useColumnExpressionEditor,Hn as useColumnExpressionSuggestionProvider,Br as useTableAndColumnSettings,Gr as useTableSettings,cn as walkTree};
2
2
  //# sourceMappingURL=index.js.map