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

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 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};
1
+ var _o=(e,t,o)=>{if(!t.has(e))throw TypeError("Cannot "+o)};var T=(e,t,o)=>(_o(e,t,"read from private field"),o?o.call(e):t.get(e)),Q=(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)},re=(e,t,o,n)=>(_o(e,t,"write to private field"),n?n.call(e,o):t.set(e,o),o);import{registerComponent as vs}from"@vuu-ui/vuu-utils";var ys=e=>typeof e=="string",Ts=(e,t)=>ys(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";vs("vuu-case",Ts,"data-edit-validator",{});import{registerComponent as Es}from"@vuu-ui/vuu-utils";var ws=e=>typeof e=="string",Ds="value does not match expected pattern",Rs=(e,t)=>{if(typeof e.value!="string")throw Error("Pattern validation rule must provide pattern");if(ws(t)){if(t==="")return!0;{let{message:o=Ds}=e;return new RegExp(e.value).test(t)||o}}else return"value must be a string"};Es("vuu-pattern",Rs,"data-edit-validator",{});import{DOWN1 as Ls,DOWN2 as Ns,isTypeDescriptor as As,metadataKeys as ks,registerComponent as Fs,UP1 as Is,UP2 as Ks}from"@vuu-ui/vuu-utils";import zs from"classnames";import{getMovingValueDirection as Ss,isTypeDescriptor as Ps,isValidNumber as Yo}from"@vuu-ui/vuu-utils";import{useEffect as Ms,useRef as Hs}from"react";var Os=[void 0,void 0,void 0,void 0];function Jo(e,t,o){var p;let n=Hs(),[s,r,i,l]=n.current||Os,{type:a}=o,c=Ps(a)?(p=a.formatting)==null?void 0:p.decimals:void 0,m=e===s&&Yo(t)&&Yo(r)&&o===i?Ss(t,l,r,c):"";return Ms(()=>{n.current=[e,t,o,m]}),m}import{jsx as Gs,jsxs as Us}from"react/jsx-runtime";var Vs=String.fromCharCode(11014),$s=String.fromCharCode(11015),{KEY:Bs}=ks,nt="vuuBackgroundCellDeprecated",ze={ArrowOnly:"arrow",BackgroundOnly:"bg-only",ArrowBackground:"arrow-bg"},Ws=e=>As(e)&&e.renderer&&"flashStyle"in e.renderer?e.renderer.flashStyle:ze.BackgroundOnly,Qs=({column:e,row:t})=>{let{key:o,type:n,valueFormatter:s}=e,r=t[o],i=Ws(n),l=Jo(t[Bs],r,e),a=i===ze.ArrowOnly||i===ze.ArrowBackground?l===Is||l===Ks?Vs:l===Ls||l===Ns?$s:null:null,c=l?" "+l:"",m=zs(nt,c,{[`${nt}-arrowOnly`]:i===ze.ArrowOnly,[`${nt}-arrowBackground`]:i===ze.ArrowBackground});return Us("div",{className:m,tabIndex:-1,children:[Gs("div",{className:`${nt}-flasher`,children:a}),s(t[e.key])]})};Fs("background",Qs,"cell-renderer",{description:"Background Cell renderer for VuuTable",label:"Background Cell (deprecated)",serverDataType:["long","int","double"]});import{isColumnTypeRenderer as Xs,isTypeDescriptor as _s,isValidNumber as Zo,registerComponent as Ys}from"@vuu-ui/vuu-utils";import Js from"classnames";import{jsx as Lt,jsxs as qo}from"react/jsx-runtime";var Ve="vuuProgressCell",Zs=({column:e,columnMap:t,row:o})=>{let{type:n}=e,s=o[e.key],r=!1,i=0;if(_s(n)&&Xs(n.renderer)){let{associatedField:a}=n.renderer;if(a){let c=o[t[a]];if(typeof Zo(s)&&Zo(c))i=Math.min(Math.round(s/c*100),100),i=Math.min(Math.round(s/c*100),100),r=isFinite(i);else{let m=parseFloat(s);if(Number.isFinite(m)){let p=parseFloat(c);Number.isFinite(p)&&(i=Math.min(Math.round(m/p*100),100),r=isFinite(i))}}}else throw Error("ProgressCell associatedField is required to render")}let l=Js(Ve,{});return qo("div",{className:l,tabIndex:-1,children:[r?qo("span",{className:`${Ve}-track`,children:[Lt("span",{className:`${Ve}-bg`}),Lt("span",{className:`${Ve}-bar`,style:{"--progress-bar-pct":`-${100-i}%`}})]}):null,Lt("span",{className:`${Ve}-text`,children:`${i} %`})]})};Ys("vuu.progress",Zs,"cell-renderer",{description:"Progress formatter",label:"Progress formatter",serverDataType:["long","int","double"]});import{DOWN1 as ni,DOWN2 as ri,isTypeDescriptor as si,metadataKeys as ii,registerComponent as li,UP1 as ai,UP2 as ui}from"@vuu-ui/vuu-utils";import ci from"classnames";import{getMovingValueDirection as qs,isTypeDescriptor as js,isValidNumber as jo}from"@vuu-ui/vuu-utils";import{useEffect as ei,useRef as ti}from"react";var oi=[void 0,void 0,void 0,void 0];function en(e,t,o){var p;let n=ti(),[s,r,i,l]=n.current||oi,{type:a}=o,c=js(a)?(p=a.formatting)==null?void 0:p.decimals:void 0,m=e===s&&jo(t)&&jo(r)&&o===i?qs(t,l,r,c):"";return ei(()=>{n.current=[e,t,o,m]}),m}import{jsx as Ci,jsxs as bi}from"react/jsx-runtime";var mi=String.fromCharCode(11014),pi=String.fromCharCode(11015),{KEY:di}=ii,rt="vuuBackgroundCell",$e={ArrowOnly:"arrow",BackgroundOnly:"bg-only",ArrowBackground:"arrow-bg"},fi=e=>si(e)&&e.renderer&&"flashStyle"in e.renderer?e.renderer.flashStyle:$e.BackgroundOnly,gi=({column:e,row:t})=>{let{key:o,type:n,valueFormatter:s}=e,r=t[o],i=fi(n),l=en(t[di],r,e),a=i===$e.ArrowOnly||i===$e.ArrowBackground?l===ai||l===ui?mi:l===ni||l===ri?pi:null:null,c=l?" "+l:"",m=ci(rt,c,{[`${rt}-arrowOnly`]:i===$e.ArrowOnly,[`${rt}-arrowBackground`]:i===$e.ArrowBackground});return bi("div",{className:m,tabIndex:-1,children:[Ci("div",{className:`${rt}-flasher`,children:a}),s(t[e.key])]})};console.log("register BackgroundCellNext");li("background-next",gi,"cell-renderer",{description:"Change background color of cell when value changes",label:"Background Flash",serverDataType:["long","int","double"]});import{List as hi,ListItem as xi}from"@vuu-ui/vuu-ui-controls";import{Checkbox as vi}from"@salt-ds/core";import{Switch as yi}from"@salt-ds/lab";import Ti from"classnames";import{useCallback as tn}from"react";import{getColumnLabel as Ei}from"@vuu-ui/vuu-utils";import{jsx as _,jsxs as Nt}from"react/jsx-runtime";var X="vuuColumnList",on="vuuColumnListItem",wi=({className:e,item:t,...o})=>Nt(xi,{...o,className:Ti(e,on),"data-name":t==null?void 0:t.name,children:[_("span",{className:`${X}-icon`,"data-icon":"draggable"}),t!=null&&t.isCalculated?_("span",{className:`${X}-icon`,"data-icon":"function"}):_(yi,{className:`${X}-switch`,checked:t==null?void 0:t.subscribed}),_("span",{className:`${X}-text`,children:Ei(t)}),_(vi,{className:`${X}-checkBox`,checked:(t==null?void 0:t.hidden)!==!0,disabled:(t==null?void 0:t.subscribed)!==!0})]}),nn=({columnItems:e,onChange:t,onMoveListItem:o,onNavigateToColumn:n,...s})=>{let r=tn(l=>{let a=l.target,c=a.closest(`.${on}`),{dataset:{name:m}}=c;if(m){let p=a.closest(`.${X}-switch`),g=a.closest(`.${X}-checkBox`);p?t(m,"subscribed",a.checked):g&&t(m,"hidden",a.checked===!1)}},[t]),i=tn(l=>{let a=l.target;if(a.classList.contains("vuuColumnList-text")){let c=a.closest(".vuuListItem");c!=null&&c.dataset.name&&(n==null||n(c.dataset.name))}},[]);return Nt("div",{...s,className:X,children:[_("div",{className:`${X}-header`,children:_("span",{children:"Column Selection"})}),Nt("div",{className:`${X}-colHeadings`,children:[_("span",{children:"Column subscription"}),_("span",{children:"Visibility"})]}),_(hi,{ListItem:wi,allowDragDrop:!0,height:"100%",onChange:r,onClick:i,onMoveListItem:o,selectionStrategy:"none",source:e,itemHeight:33})]})};import{VuuInput as Wn}from"@vuu-ui/vuu-ui-controls";import{getCalculatedColumnName as aa,getDefaultAlignment as ua,isCalculatedColumn as ca}from"@vuu-ui/vuu-utils";import{Button as dt,FormField as ft,FormFieldLabel as gt,ToggleButton as He,ToggleButtonGroup as Qn}from"@salt-ds/core";import ma from"classnames";import{Dropdown as Ml}from"@vuu-ui/vuu-ui-controls";import{getCalculatedColumnExpression as Hl,getCalculatedColumnName as Ol,getCalculatedColumnType as Ll}from"@vuu-ui/vuu-utils";import{FormField as Zt,FormFieldLabel as qt,Input as Nl}from"@salt-ds/core";import{useCallback as Al,useRef as Pn}from"react";import{memo as tl}from"react";import{autocompletion as Qi,defaultKeymap as Gi,EditorState as hn,EditorView as xn,ensureSyntaxTree as Ui,keymap as vn,minimalSetup as Xi,startCompletion as yn}from"@vuu-ui/vuu-codemirror";import{createEl as Tn}from"@vuu-ui/vuu-utils";import{useCallback as _i,useEffect as Yi,useMemo as Ji,useRef as Ut}from"react";import{LanguageSupport as Ri,LRLanguage as Si,styleTags as Pi,tags as Be}from"@vuu-ui/vuu-codemirror";import{LRParser as Di}from"@lezer/lr";var st=Di.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 Mi=Si.define({name:"VuuColumnExpression",parser:st.configure({props:[Pi({Column:Be.attributeValue,Function:Be.variableName,String:Be.string,Or:Be.emphasis,Operator:Be.operator})]})}),rn=()=>new Ri(Mi);var At=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}}},Qe,pe,Ft=class{constructor(t="unknown"){Q(this,Qe,[{type:"unknown"},{type:"unknown"}]);Q(this,pe,void 0);this.type="arithmeticExpression";re(this,pe,t)}get op(){return T(this,pe)}set op(t){re(this,pe,t)}get expressions(){return T(this,Qe)}toJSON(){return{type:this.type,op:T(this,pe),expressions:T(this,Qe)}}};Qe=new WeakMap,pe=new WeakMap;var Ee,It=class{constructor(t){Q(this,Ee,[]);this.type="callExpression";this.functionName=t}get expressions(){return T(this,Ee)}get arguments(){return T(this,Ee)}toJSON(){return{type:this.type,functionName:this.functionName,arguments:T(this,Ee).map(t=>{var o;return(o=t.toJSON)==null?void 0:o.call(t)})}}};Ee=new WeakMap;var Ge,we,ye=class{constructor(){Q(this,Ge,[{type:"unknown"},{type:"unknown"}]);Q(this,we,"unknown");this.type="relationalExpression"}get op(){return T(this,we)}set op(t){re(this,we,t)}get expressions(){return T(this,Ge)}toJSON(){return{type:this.type,op:T(this,we),expressions:T(this,Ge)}}};Ge=new WeakMap,we=new WeakMap;var Ue,De,Te=class{constructor(t){Q(this,Ue,[{type:"unknown"},{type:"unknown"}]);Q(this,De,void 0);this.type="booleanCondition";re(this,De,t)}get op(){return T(this,De)}get expressions(){return T(this,Ue)}toJSON(){return{type:this.type,op:T(this,De),expressions:T(this,Ue).map(t=>{var o;return(o=t.toJSON)==null?void 0:o.call(t)})}}};Ue=new WeakMap,De=new WeakMap;var Y,We=class{constructor(t){Q(this,Y,void 0);this.type="conditionalExpression";re(this,Y,[t?new Te(t):new ye,{type:"unknown"},{type:"unknown"}])}get expressions(){return T(this,Y)}get condition(){return T(this,Y)[0]}get truthyExpression(){return T(this,Y)[1]}set truthyExpression(t){T(this,Y)[1]=t}get falsyExpression(){return T(this,Y)[2]}set falsyExpression(t){T(this,Y)[2]=t}toJSON(){var t,o,n,s,r;return{type:this.type,condition:(o=(t=this.condition).toJSON)==null?void 0:o.call(t),truthyExpression:this.truthyExpression,falsyExpression:(r=(s=(n=this.falsyExpression)==null?void 0:n.toJSON)==null?void 0:s.call(n))!=null?r:this.falsyExpression}}};Y=new WeakMap;var me=e=>e.type==="unknown",it=e=>e.type==="arithmeticExpression",Hi=e=>e.type==="callExpression",ve=e=>e.type==="conditionalExpression",Oi=e=>e.type==="relationalExpression"||e.type==="booleanCondition";var Li=e=>e.type==="booleanCondition",zt=e=>(e==null?void 0:e.type)==="relationalExpression";var V=e=>{if(me(e))return e;if(zt(e)){let[t,o]=e.expressions;if(F(t))return V(t);if(e.op==="unknown")return e;if(F(o))return V(o)}else if(Oi(e)){let{expressions:t=[]}=e;for(let o of t)if(F(o))return V(o)}else if(ve(e)){let{condition:t,truthyExpression:o,falsyExpression:n}=e;if(F(t))return V(t);if(F(o))return V(o);if(F(n))return V(n)}else if(it(e)){let{expressions:t=[]}=e;for(let o of t)if(F(o))return V(o)}},lt=(e,t,o)=>{let{expressions:n=[]}=e;if(n.includes(t)){let s=n.indexOf(t);return n.splice(s,1,o),!0}else for(let s of n)if(lt(s,t,o))return!0;return!1},F=e=>me(e)?!0:ve(e)?F(e.condition)||F(e.truthyExpression)||F(e.falsyExpression):zt(e)||Li(e)?e.op===void 0||e.expressions.some(t=>F(t)):!1,sn=(e,t)=>{let o=V(e);o?o.expressions?o.expressions.push(t):console.warn("don't know how to treat targetExpression"):console.error("no target expression found")},P,de,Kt=class{constructor(){Q(this,P,void 0);Q(this,de,[])}setCondition(t){if(T(this,P)===void 0)this.addExpression(new We(t));else if(ve(T(this,P))){if(F(T(this,P).condition)){let o=t?new Te(t):new ye;this.addExpression(o)}else if(me(T(this,P).truthyExpression))T(this,P).truthyExpression=new We(t);else if(F(T(this,P).truthyExpression)){let o=t?new Te(t):new ye;this.addExpression(o)}else if(me(T(this,P).falsyExpression))T(this,P).falsyExpression=new We(t);else if(F(T(this,P).falsyExpression)){let o=t?new Te(t):new ye;this.addExpression(o)}}else console.error("setCondition called unexpectedly")}addExpression(t){if(T(this,de).length>0){let o=T(this,de).at(-1);o==null||o.arguments.push(t)}else if(T(this,P)===void 0)re(this,P,t);else if(it(T(this,P))){let o=V(T(this,P));o&&me(o)&&lt(T(this,P),o,t)}else if(ve(T(this,P))&&F(T(this,P))){let o=V(T(this,P));o&&me(o)?lt(T(this,P),o,t):o&&sn(o,t)}}setFunction(t){let o=new It(t);this.addExpression(o),T(this,de).push(o)}setColumn(t){this.addExpression(new kt(t))}setArithmeticOp(t){let o=t,n=T(this,P);it(n)&&(n.op=o)}setRelationalOperator(t){let o=t;if(T(this,P)&&ve(T(this,P))){let n=V(T(this,P));zt(n)?n.op=o:console.error(`no target expression found (op = ${t})`)}}setValue(t){let o=new At(t);if(T(this,P)===void 0)re(this,P,o);else if(it(T(this,P)))this.addExpression(o);else if(Hi(T(this,P)))T(this,P).arguments.push(o);else if(ve(T(this,P)))if(F(T(this,P))){let n=V(T(this,P));n&&me(n)?lt(T(this,P),n,o):n&&sn(n,o)}else console.log("what do we do with value, in a complete expression")}closeBrace(){T(this,de).pop()}get expression(){return T(this,P)}toJSON(){var t;return(t=T(this,P))==null?void 0:t.toJSON()}};P=new WeakMap,de=new WeakMap;var ln=(e,t)=>{let o=new Kt,n=e.cursor();do{let{name:s,from:r,to:i}=n;switch(s){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(r,i);o.setColumn(l)}break;case"Function":{let l=t.substring(r,i);o.setFunction(l)}break;case"Times":case"Divide":case"Plus":case"Minus":{let l=t.substring(r,i);o.setArithmeticOp(l)}break;case"RelationalOperator":{let l=t.substring(r,i);o.setRelationalOperator(l)}break;case"False":case"True":{let l=t.substring(r,i);o.setValue(l==="true")}break;case"String":o.setValue(t.substring(r+1,i-1));break;case"Number":o.setValue(parseFloat(t.substring(r,i)));break;case"CloseBrace":o.closeBrace();break;default:}}while(n.next());return o.toJSON()};var Ni=st.configure({strict:!0}),an=["Number","String"],Vt=[...an,"AndCondition","ArithmeticExpression","BooleanOperator","RelationalOperatorOperator","CallExpression","CloseBrace","Column","Comma","ConditionalExpression","Divide","Equal","If","Minus","OpenBrace","OrCondition","ParenthesizedExpression","Plus","RelationalExpression","RelationalOperator","Times"],un=e=>{try{return Ni.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},cn=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"&&an.includes(o.name))return!0}return!1};import{HighlightStyle as Ai,syntaxHighlighting as ki,tags as Bt}from"@vuu-ui/vuu-codemirror";var Fi=Ai.define([{tag:Bt.attributeValue,color:"var(--vuuFilterEditor-variableColor);font-weight: bold"},{tag:Bt.variableName,color:"var(--vuuFilterEditor-variableColor)"},{tag:Bt.comment,color:"green",fontStyle:"italic"}]),mn=ki(Fi);import{EditorView as Ii}from"@vuu-ui/vuu-codemirror";var pn=Ii.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 Ki,getNamedParentNode as dn,getPreviousNode as zi,getValue as j,syntaxTree as Vi}from"@vuu-ui/vuu-codemirror";import{useCallback as fn}from"react";var $i=(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,Bi=e=>e===void 0?!1:["Times","Divide","Plus","Minus"].includes(e.name),Xe=e=>({apply:()=>{e==null||e()},label:"Done",boost:10}),Re=(e,t)=>{var s;let{lastChild:o}=e,{pos:n}=t;for(;o;)if(o.from<n&&Vt.includes(o.name)){if(o.name==="ParenthesizedExpression"){let i=(s=o.firstChild)==null?void 0:s.nextSibling;i&&(o=i)}return o}else o=o.prevSibling},gn=(e,t)=>{var o;if(e.name==="ArgList"){let n=e.prevSibling;if(n)return j(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 j(n,t)}},Cn=(e,t)=>{if(e.name==="RelationalExpression"){let o=$t(e);if((o==null?void 0:o.name)==="RelationalOperator")return j(o,t)}else{let o=e.prevSibling;if((o==null?void 0:o.name)==="RelationalOperator")return j(o,t)}},Gt=(e,t)=>{var o;if(e.name==="RelationalExpression"){if(((o=e.firstChild)==null?void 0:o.name)==="Column")return j(e.firstChild,t)}else{let n=e.prevSibling;if((n==null?void 0:n.name)==="Column")return j(n,t);if((n==null?void 0:n.name)==="RelationalOperator")return Gt(n,t)}},Wt=async(e,t,o,n={})=>{let s=await t.getSuggestions(o,n),{startsWith:r=""}=n;return{from:e.pos-r.length,options:s}},Qt=(e,t,o,n,s)=>{let r=Re(e,t);switch(r==null?void 0:r.name){case"If":return Wt(t,o,"expression",{prefix:"( "});case"OpenBrace":return Wt(t,o,"expression");case"Condition":return Wt(t,o,"expression",{prefix:", "});case"CloseBrace":if(n){let i=[Xe(s)];return{from:t.pos,options:i}}}},Wi=(e,t)=>{let o=[Xe(t)];return{from:e.pos,options:o}},bn=(e,t)=>{let o=fn(async(n,s,r={})=>{let i=await e.getSuggestions(s,r),{startsWith:l=""}=r;return{from:n.pos-l.length,options:i}},[e]);return fn(async n=>{var p,g;let{state:s,pos:r}=n,i=(p=n.matchBefore(/\w*/))!=null?p:{from:0,to:0,text:void 0},a=Vi(s).resolveInner(r,-1),c=s.doc.toString(),m=un(c);switch(a.name){case"If":return o(n,"expression",{prefix:"( "});case"Condition":{let u=Re(a,n);if((u==null?void 0:u.name)==="Column"){let d=zi(u);if((d==null?void 0:d.name)!=="RelationalOperator")return o(n,"condition-operator",{columnName:j(u,s)})}else if((u==null?void 0:u.name)==="RelationalOperator")return o(n,"expression")}break;case"ConditionalExpression":return Qt(a,n,e);case"RelationalExpression":{if(cn(a))return{from:n.pos,options:Ki.concat({label:", <truthy expression>, <falsy expression>",apply:", "})};{let u=Cn(a,s),d=Gt(a,s);if(u)return o(n,"expression");{let h=await e.getSuggestions("condition-operator",{columnName:d});return{from:n.pos,options:h}}}}break;case"RelationalOperator":return o(n,"expression");case"String":{let u=Cn(a,s),d=Gt(a,s),{from:h,to:f}=a;if(f-h===2&&n.pos===h+1){if(d&&u)return o(n,"columnValue",{columnName:d,operator:u,startsWith:i.text})}else if(f-h>2&&n.pos===f)return o(n,"expression",{prefix:", "})}break;case"ArithmeticExpression":{let u=Re(a,n);if((u==null?void 0:u.name)==="Column")return o(n,"expression");if(Bi(u)){let d=u.name;return o(n,"column",{operator:d})}}break;case"OpenBrace":{let u=gn(a,s);return o(n,"expression",{functionName:u})}break;case"ArgList":{let u=gn(a,s),d=Re(a,n),h=(d==null?void 0:d.name)==="OpenBrace"||(d==null?void 0:d.name)==="Comma"?void 0:",",f=await e.getSuggestions("expression",{functionName:u});return f=h?$i(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(c.trim()==="=")return o(n,"expression");break;case"ParenthesizedExpression":case"ColumnDefinitionExpression":if(n.pos===0)return o(n,"expression");{let u=Re(a,n);if((u==null?void 0:u.name)==="Column"){if(m){let d=[Xe(t.current)],h=j(u,s),f=await e.getSuggestions("operator",{columnName:h});return{from:n.pos,options:d.concat(f)}}}else if((u==null?void 0:u.name)==="CallExpression"){if(m)return{from:n.pos,options:[Xe(t.current)]}}else if((u==null?void 0:u.name)==="ArithmeticExpression"){if(m){let d=[Xe(t.current)],h=Re(u,n);if((h==null?void 0:h.name)==="Column"){let f=j(h,s),b=await e.getSuggestions("operator",{columnName:f});d=d.concat(b)}return{from:n.pos,options:d}}}else if((u==null?void 0:u.name)==="ConditionalExpression")return Qt(u,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 u=dn(a);if((u==null?void 0:u.name)==="ConditionalExpression")return o(n,"expression")}break;case"CloseBrace":{let u=dn(a);if((u==null?void 0:u.name)==="ConditionalExpression")return Qt(u,n,e,m,t.current);if((u==null?void 0:u.name)==="ArgList"&&m)return Wi(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 at=e=>{if(e.current==null)throw Error("EditorView not defined");return e.current},Zi=()=>"vuuSuggestion",qi=()=>console.log("noooop"),ji=e=>"expressionType"in e,el=e=>{if(ji(e)){let t=Tn("div","expression-type-container"),o=Tn("span","expression-type",e.expressionType);return t.appendChild(o),t}else return null},En=({onChange:e,onSubmitExpression:t,source:o,suggestionProvider:n})=>{let s=Ut(null),r=Ut(qi),i=Ut(),l=bn(n,r),[a,c,m]=Ji(()=>{let g=()=>{let b=at(i),E=b.state.doc.toString(),v=Ui(b.state,b.state.doc.length,5e3);if(v){let D=ln(v,E);return[E,D]}else return["",void 0]},u=()=>{at(i).setState(f())},d=()=>{let[b,E]=g();t==null||t(b,E)},h=b=>vn.of([{key:b,run(){return yn(at(i)),!0}}]),f=()=>hn.create({doc:o,extensions:[Xi,Qi({addToOptions:[{render:el,position:70}],override:[l],optionClass:Zi}),rn(),vn.of(Gi),h("ArrowDown"),xn.updateListener.of(b=>{let E=at(i);if(b.docChanged){yn(E);let v=E.state.doc.toString();e==null||e(v)}}),hn.transactionFilter.of(b=>b.newDoc.lines>1?[]:b),pn,mn]});return r.current=()=>{d()},[f,u,d]},[l,e,t,o]);Yi(()=>{if(!s.current)throw Error("editor not in dom");return i.current=new xn({state:a(),parent:s.current}),()=>{var g;(g=i.current)==null||g.destroy()}},[l,a]);let p=_i(()=>{m()},[m]);return{editorRef:s,clearInput:c,onBlur:p}};import{jsx as nl}from"react/jsx-runtime";var ol="vuuColumnExpressionInput",Xt=tl(({onChange:e,onSubmitExpression:t,source:o="",suggestionProvider:n})=>{let{editorRef:s,onBlur:r}=En({onChange:e,onSubmitExpression:t,source:o,suggestionProvider:n});return nl("div",{className:`${ol}`,onBlur:r,ref:s})},(e,t)=>e.source===t.source);Xt.displayName="ColumnExpressionInput";import{AnnotationType as rl,getRelationalOperators as sl,numericOperators as il,stringOperators as ll,toSuggestions as al}from"@vuu-ui/vuu-codemirror";import{getTypeaheadParams as ul,useTypeaheadSuggestions as cl}from"@vuu-ui/vuu-data-react";import{isNumericColumn as Yt,isTextColumn as ml}from"@vuu-ui/vuu-utils";import{useCallback as _t,useRef as pl}from"react";var Se=[{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 ee}from"@vuu-ui/vuu-utils";var wn=({name:e,description:t,example:o,params:n,type:s})=>{let r=ee("div","vuuFunctionDoc"),i=ee("div","function-heading"),l=ee("span","function-name",e),a=ee("span","param-list",n.description),c=ee("span","function-type",s);i.appendChild(l),i.appendChild(a),i.appendChild(c);let m=ee("p",void 0,t);if(r.appendChild(i),r.appendChild(m),o){let p=ee("div","example-container","Example:"),g=ee("div","example-expression",o.expression),u=ee("div","example-result",o.result);p.appendChild(g),p.appendChild(u),r.appendChild(p)}return r};var dl=[],fe=e=>e.map(t=>{var o;return{...t,apply:((o=t.apply)!=null?o:t.label)+" "}}),fl=(e,{functionName:t,operator:o})=>{if(o)return e.filter(Yt);if(t){let n=Se.find(s=>s.name===t);if(n)switch(n.accepts){case"string":return e.filter(ml);case"number":return e.filter(Yt);default:return e}}return e},Dn=(e,t)=>fl(e,t).map(n=>{var r;let s=(r=n.label)!=null?r:n.name;return{apply:t.prefix?`${t.prefix}${n.name}`:n.name,label:s,boost:5,type:"column",expressionType:n.serverDataType}}),gl=[{apply:"* ",boost:2,label:"*",type:"operator"},{apply:"/ ",boost:2,label:"/",type:"operator"},{apply:"+ ",boost:2,label:"+",type:"operator"},{apply:"- ",boost:2,label:"-",type:"operator"}],Cl=e=>e===void 0||Yt(e)?gl:dl,bl=e=>{switch(e.serverDataType){case"string":case"char":return fe(ll);case"int":case"long":case"double":return fe(il)}},Jt=e=>({apply:`${e.name}( `,boost:2,expressionType:e.type,info:()=>wn(e),label:e.name,type:"function"}),hl=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"},xl=Se.map(Jt),vl=({functionName:e})=>{if(e){let t=Se.find(n=>n.name===e),o=hl(t);if(t)switch(o){case"string":return Se.filter(n=>n.type==="string"||n.type==="variable").map(Jt);case"number":return Se.filter(n=>n.type==="number"||n.type==="variable").map(Jt);default:}}return xl},yl={},Rn=({columns:e,table:t})=>{let o=_t(l=>l?e.find(a=>a.name===l):void 0,[e]),n=pl(),s=cl(),r=_t(async(l,a=yl)=>{let{columnName:c,functionName:m,operator:p,prefix:g}=a;switch(l){case"expression":{let u=await fe(Dn(e,{functionName:m,prefix:g})).concat(vl(a));return n.current=u}case"column":{let u=await Dn(e,a);return n.current=fe(u)}case"operator":{let u=await Cl(o(c));return n.current=fe(u)}case"relational-operator":{let u=await sl(o(c));return n.current=fe(u)}case"condition-operator":{let u=o(c);if(u){let d=await bl(u);if(d)return n.current=fe(d)}}break;case"columnValue":if(c&&p){let u=ul(t,c),d=await s(u);return n.current=al(d,{suffix:""}),n.current.forEach(h=>{h.apply=(f,b,E)=>{let v=new rl,D=E+b.label.length+1;f.dispatch({changes:{from:E,insert:b.label},selection:{anchor:D,head:D},annotations:v.of(b)})}}),n.current}break}return[]},[e,o,s,t]),i=_t(async(l,a,c)=>{let{current:m}=n,p=!1,g=m||await r(l,{columnName:a});if(c&&g)for(let u of g){if(u.label===c)return!1;u.label.startsWith(c)&&(p=!0)}return p},[r]);return{getSuggestions:r,isPartialMatch:i}};import{getCalculatedColumnDetails as Tl,setCalculatedColumnExpression as El,setCalculatedColumnName as wl,setCalculatedColumnType as Dl}from"@vuu-ui/vuu-utils";import{useCallback as ut,useRef as Rl,useState as Sl}from"react";var Pl=e=>{let[t,o,n]=Tl(e);return n===""?{...e,name:`${t}:string:${o}`}:e},Sn=({column:e,onChangeName:t})=>{let[o,n]=Sl(Pl(e)),s=Rl(e),r=ut(c=>{s.current=c,n(c)},[]),i=ut(c=>{let{value:m}=c.target,p=wl(o,m);r(p),t==null||t(p.name)},[o,t,r]),l=ut(c=>{let m=c.trim(),{current:p}=s,g=El(p,m);r(g),t==null||t(g.name)},[t,r]),a=ut((c,m)=>{if(typeof m=="string"){let p=Dl(o,m);r(p),t==null||t(p.name)}},[o,t,r]);return{column:o,onChangeExpression:l,onChangeName:i,onChangeType:a}};import{jsx as se,jsxs as ct}from"react/jsx-runtime";var Mn="vuuColumnExpressionPanel",Hn=({column:e,onChangeName:t,tableConfig:o,vuuTable:n})=>{let s=Pn(null),{column:r,onChangeExpression:i,onChangeName:l,onChangeType:a}=Sn({column:e,onChangeName:t}),c=Pn(Hl(r)),m=Rn({columns:o.columns,table:n}),p=Al(()=>{var g,u;s.current&&((u=(g=s.current)==null?void 0:g.querySelector("button"))==null||u.focus())},[]);return ct("div",{className:Mn,children:[se("div",{className:"vuuColumnSettingsPanel-header",children:se("span",{children:"Calculation"})}),ct(Zt,{"data-field":"column-name",children:[se(qt,{children:"Column Name"}),se(Nl,{className:"vuuInput",onChange:l,value:Ol(r)})]}),ct(Zt,{"data-field":"column-expression",children:[se(qt,{children:"Expression"}),se(Xt,{onChange:i,onSubmitExpression:p,source:c.current,suggestionProvider:m})]}),ct(Zt,{"data-field":"type",children:[se(qt,{children:"Column type"}),se(Ml,{className:`${Mn}-type`,onSelectionChange:a,ref:s,selected:Ll(r)||null,source:["double","long","string"],width:"100%"})]})]})};import{Dropdown as zl}from"@vuu-ui/vuu-ui-controls";import{FormField as Vl,FormFieldLabel as $l}from"@salt-ds/core";import Nn from"classnames";import{useMemo as Bl}from"react";import{FormField as jt,FormFieldLabel as eo,Input as kl}from"@salt-ds/core";import{Switch as On}from"@salt-ds/lab";import{getTypeSettingsFromColumn as Fl}from"@vuu-ui/vuu-utils";import{useCallback as mt,useState as Il}from"react";import{jsx as Pe,jsxs as pt}from"react/jsx-runtime";var Kl="vuuFormattingSettings",Ln=({column:e,onChange:t})=>{var a,c,m;let[o,n]=Il(Fl(e)),s=mt(p=>{(p.key==="Enter"||p.key==="Tab")&&t(o)},[o,t]),r=mt(p=>{let{value:g}=p.target,u=g===""||isNaN(parseInt(g))?void 0:parseInt(g),d={...o,decimals:u};n(d)},[o]),i=mt(p=>{let{checked:g}=p.target,u={...o,alignOnDecimals:g};n(u),t(u)},[o,t]),l=mt(p=>{let{checked:g}=p.target,u={...o,zeroPad:g};n(u),t(u)},[o,t]);return pt("div",{className:Kl,children:[pt(jt,{"data-field":"decimals",children:[Pe(eo,{children:"Number of decimals"}),Pe(kl,{className:"vuuInput",onChange:r,onKeyDown:s,value:(a=o.decimals)!=null?a:""})]}),pt(jt,{labelPlacement:"left",children:[Pe(eo,{children:"Align on decimals"}),Pe(On,{checked:(c=o.alignOnDecimals)!=null?c:!1,onChange:i,value:"align-decimals"})]}),pt(jt,{labelPlacement:"left",children:[Pe(eo,{children:"Zero pad decimals"}),Pe(On,{checked:(m=o.zeroPad)!=null?m:!1,onChange:l,value:"zero-pad"})]})]})};import{jsx as _e,jsxs as An}from"react/jsx-runtime";var to="vuuColumnFormattingPanel",Wl=e=>{var t;return(t=e.label)!=null?t:e.name},kn=({availableRenderers:e,selectedCellRenderer:t,className:o,column:n,onChangeFormatting:s,onChangeRenderer:r,...i})=>{let l=Bl(()=>{switch(n.serverDataType){case"double":case"int":case"long":return _e(Ln,{column:n,onChange:s});default:return null}},[n,s]),{serverDataType:a="string"}=n;return An("div",{...i,className:"vuuColumnSettingsPanel-header",children:[_e("div",{children:"Formatting"}),An(Vl,{children:[_e($l,{children:`Renderer (data type ${n.serverDataType})`}),_e(zl,{className:Nn(`${to}-renderer`),itemToString:Wl,onSelectionChange:r,selected:t,source:e,width:"100%"})]}),_e("div",{className:Nn(to,o,`${to}-${a}`),children:l})]})};import Ql from"classnames";import{getCalculatedColumnDetails as Gl,isCalculatedColumn as Ul}from"@vuu-ui/vuu-utils";import{jsx as ge,jsxs as Xl}from"react/jsx-runtime";var Me="vuuColumnNameLabel",Fn=({column:e,onClick:t})=>{if(Ul(e.name)){let[o,n,s]=Gl(e),r=o||"name",i="=expression",l=r==="name"?`${Me}-placeholder`:void 0,a=s===""?`${Me}-placeholder`:void 0;return Xl("div",{className:Ql(Me,`${Me}-calculated`),onClick:t,children:[ge("span",{className:l,children:r}),ge("span",{children:":"}),ge("span",{children:n||"string"}),ge("span",{children:":"}),ge("span",{className:a,children:i}),ge("span",{className:`${Me}-edit`,"data-icon":"edit"})]})}else return ge("div",{className:Me,children:e.name})};import{getRegisteredCellRenderers as _l,isColumnTypeRenderer as Yl,isTypeDescriptor as Jl,isValidColumnAlignment as Zl,isValidPinLocation as ql,setCalculatedColumnName as jl,updateColumnRenderer as ea,updateColumnType as ta}from"@vuu-ui/vuu-utils";import{useCallback as G,useEffect as oa,useMemo as na,useRef as In,useState as Kn}from"react";var ra=[{description:"Default formatter for columns with data type integer",label:"Default Renderer (int, long)",name:"default-int"}],sa=[{description:"Default formatter for columns with data type double",label:"Default Renderer (double)",name:"default-double"},..._l("double")],zn=[{description:"Default formatter for columns with data type string",label:"Default Renderer (string)",name:"default-string"}],$n=e=>{switch(e.serverDataType){case"char":case"string":return zn;case"int":case"long":return ra;case"double":return sa;default:return zn}},Vn=(e,t)=>{if(Jl(t.type)){let{renderer:n}=t.type;if(Yl(n)){let s=e.find(r=>r.name===n.name);if(s)return s}}return $n(t)[0]},ia=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")},la=(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}`)}},Ye=(e,t)=>({...e,columns:e.columns.map(o=>o.name===t.name?t:o)}),Bn=({column:e,onCancelCreateColumn:t,onConfigChange:o,onCreateCalculatedColumn:n,tableConfig:s})=>{let[r,i]=Kn(la(s.columns,e)),l=In(r),[a,c]=Kn(r.name==="::"),m=G(()=>{l.current=r,c(!0)},[r]);oa(()=>{i(e),c(e.name==="::")},[e]);let p=na(()=>$n(r),[r]),g=In(Vn(p,r)),u=G(()=>{o(Ye(s,r))},[r,o,s]),d=G(x=>{let C=x.target,w=ia(C),{value:S}=C;switch(w){case"column-label":i(R=>({...R,label:S}));break;case"column-name":i(R=>jl(R,S));break;case"column-width":i(R=>({...R,width:parseInt(S)}));break;case"column-alignment":if(Zl(S)){let R={...r,align:S||void 0};i(R),o(Ye(s,R))}break;case"column-pin":if(ql(S)){let R={...r,pin:S||void 0};i(R),o(Ye(s,R));break}}},[r,o,s]),h=G(x=>{i(C=>({...C,name:x}))},[]),f=G((x,C)=>{if(C){let w=ea(r,C);g.current=C,i(w),o(Ye(s,w))}},[r,o,s]),b=G(x=>{let C=ta(r,x);i(C),o(Ye(s,C))},[r,o,s]),E=G(({moveBy:x})=>{let{columns:C}=s,w=C.indexOf(r)+x,S=C[w];S&&(g.current=Vn(p,S),i(S))},[p,r,s]),v=G(()=>{E({moveBy:1})},[E]),D=G(()=>{E({moveBy:-1})},[E]),M=G(()=>{n(r)},[r,n]),H=G(()=>{e.name==="::"?t():(l.current!==void 0&&l.current!==r&&i(l.current),c(!1))},[r,e.name,t]);return{availableRenderers:p,editCalculatedColumn:a,selectedCellRenderer:g.current,column:r,navigateNextColumn:v,navigatePrevColumn:D,onCancel:H,onChange:d,onChangeCalculatedColumnName:h,onChangeFormatting:b,onChangeRenderer:f,onEditCalculatedColumn:m,onInputCommit:u,onSave:M}};import{jsx as A,jsxs as te}from"react/jsx-runtime";var ie="vuuColumnSettingsPanel",pa=e=>{let{name:t,label:o}=e;return ca(t)?o!=null?o:aa(e):o!=null?o:t},AC=({column:e,onCancelCreateColumn:t,onConfigChange:o,onCreateCalculatedColumn:n,tableConfig:s,vuuTable:r})=>{let i=e.name==="::",{availableRenderers:l,editCalculatedColumn:a,selectedCellRenderer:c,column:m,navigateNextColumn:p,navigatePrevColumn:g,onCancel:u,onChange:d,onChangeCalculatedColumnName:h,onChangeFormatting:f,onChangeRenderer:b,onEditCalculatedColumn:E,onInputCommit:v,onSave:D}=Bn({column:e,onCancelCreateColumn:t,onConfigChange:o,onCreateCalculatedColumn:n,tableConfig:s}),{serverDataType:M,align:H=ua(M),name:x,pin:C,width:w}=m;return te("div",{className:ma(ie,{[`${ie}-editing`]:a}),children:[A("div",{className:`${ie}-header`,children:A(Fn,{column:m,onClick:E})}),a?A(Hn,{column:m,onChangeName:h,tableConfig:s,vuuTable:r}):null,te(ft,{"data-field":"column-label",children:[A(gt,{children:"Column Label"}),A(Wn,{className:"vuuInput",onChange:d,onCommit:v,value:pa(m)})]}),te(ft,{"data-field":"column-width",children:[A(gt,{children:"Column Width"}),A(Wn,{className:"vuuInput",onChange:d,value:w,onCommit:v})]}),te(ft,{"data-field":"column-alignment",children:[A(gt,{children:"Alignment"}),te(Qn,{className:"vuuToggleButtonGroup",onChange:d,value:H,children:[A(He,{"data-icon":"align-left",className:"vuuIconToggleButton",value:"left"}),A(He,{"data-icon":"align-right",className:"vuuIconToggleButton",value:"right"})]})]}),te(ft,{"data-field":"column-pin",children:[A(gt,{children:"Pin Column"}),te(Qn,{className:"vuuToggleButtonGroup",onChange:d,value:C!=null?C:"",children:[A(He,{className:"vuuIconToggleButton","data-icon":"cross-circle",value:""}),A(He,{className:"vuuIconToggleButton","data-icon":"pin-left",value:"left"}),A(He,{className:"vuuIconToggleButton","data-icon":"pin-float",value:"floating"}),A(He,{className:"vuuIconToggleButton","data-icon":"pin-right",value:"right"})]})]}),A(kn,{availableRenderers:l,selectedCellRenderer:c,column:m,onChangeFormatting:f,onChangeRenderer:b}),a?te("div",{className:"vuuColumnSettingsPanel-buttonBar","data-align":"right",children:[A(dt,{className:`${ie}-buttonCancel`,onClick:u,tabIndex:-1,children:"cancel"}),A(dt,{className:`${ie}-buttonSave`,onClick:D,variant:"cta",children:"save"})]}):te("div",{className:`${ie}-buttonBar`,"data-align":i?"right":void 0,children:[A(dt,{className:`${ie}-buttonNavPrev`,variant:"secondary","data-icon":"arrow-left",onClick:g,children:"PREVIOUS"}),A(dt,{className:`${ie}-buttonNavNext`,variant:"secondary","data-icon":"arrow-right",onClick:p,children:"NEXT"})]})]})};import{useEffect as da,useState as Gn}from"react";import fa from"classnames";import{jsx as Oe,jsxs as ga}from"react/jsx-runtime";var Je="vuuDatasourceStats",oo=new Intl.NumberFormat,GC=({className:e,dataSource:t})=>{let[o,n]=Gn(t.range),[s,r]=Gn(t.size);da(()=>{r(t.size),t.on("resize",r),t.on("range",n)},[t]);let i=fa(Je,e),l=oo.format(o.from),a=oo.format(o.to-1),c=oo.format(s);return ga("div",{className:i,children:[Oe("span",{className:`${Je}-label`,children:"Row count"}),Oe("span",{className:`${Je}-range`,children:l}),Oe("span",{children:"-"}),Oe("span",{className:`${Je}-range`,children:a}),Oe("span",{children:"of"}),Oe("span",{className:`${Je}-size`,children:c})]})};import{Button as zp,FormField as Io,FormFieldLabel as Ko,Input as Vp,ToggleButton as Fe,ToggleButtonGroup as $p}from"@salt-ds/core";import{useLayoutEffectSkipFirst as Hp}from"@vuu-ui/vuu-layout";import{useCallback as jC,useRef as eb}from"react";import{jsx as nb}from"react/jsx-runtime";import{isNumericColumn as Ca}from"@vuu-ui/vuu-utils";var io=e=>(t,o)=>{let n=[];if(e===void 0)return n;if(t==="header"||t==="column-menu")n.push(...ba(o,e)),n.push(...va(o,e)),n.push(...ha(o,e)),n.push(...xa(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:s,filter:r}=o,i=(r==null?void 0:r.column)===(s==null?void 0:s.name);n.push({label:"Edit filter",action:"filter-edit",options:o}),n.push({label:"Remove filter",action:"filter-remove-column",options:o}),s&&!i&&n.push({label:"Remove all filters",action:"remove-filters",options:o})}return n};function ba(e,{sort:{sortDefs:t}}){let{column:o}=e,n=[];if(o===void 0)return n;let s=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}),s&&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}]})):s?(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 ha(e,t){let{column:o}=e;if(o===void 0||t.groupBy.length===0)return[];let{name:n,label:s=n}=o;return[{label:`Aggregate ${s}`,children:[{label:"Count",action:"agg-count",options:e},{label:"Distinct",action:"agg-distinct",options:e}].concat(Ca(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 lo=(e,t)=>({label:`Pin ${t}`,action:`column-pin-${t}`,options:e}),no=e=>lo(e,"left"),ro=e=>lo(e,"floating"),so=e=>lo(e,"right");function xa(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:[no(e),ro(e),so(e)]}):o==="left"?n.push({label:"Unpin column",action:"column-unpin",options:e},{label:"Pin column",children:[ro(e),so(e)]}):o==="right"?n.push({label:"Unpin column",action:"column-unpin",options:e},{label:"Pin column",children:[no(e),ro(e)]}):o==="floating"&&n.push({label:"Unpin column",action:"column-unpin",options:e},{label:"Pin column",children:[no(e),so(e)]}),n}function va(e,{groupBy:t}){let{column:o}=e,n=[];if(o===void 0)return n;let{name:s,label:r=s}=o;return t.length===0?n.push({label:`Group by ${r}`,action:"group",options:e}):n.push({label:`Add ${r} to group by`,action:"group-add",options:e}),n}import{removeColumnFromFilter as ya}from"@vuu-ui/vuu-utils";import{addGroupColumn as Un,addSortColumn as Xn,AggregationType as Ta,setAggregations as Le,setSortColumn as _n}from"@vuu-ui/vuu-utils";var Ea=(e,t)=>{if(e.filterStruct&&t){let[o,n]=ya(t,e.filterStruct);return{filter:n,filterStruct:o}}else return e},{Average:wa,Count:Da,Distinct:Ra,High:Sa,Low:Pa,Sum:Ma}=Ta,ao=({dataSource:e,onPersistentColumnOperation:t})=>n=>{let s=n.options;if(s.column&&e){let{column:r}=s;switch(n.menuId){case"sort-asc":return e.sort=_n(e.sort,r,"A"),!0;case"sort-dsc":return e.sort=_n(e.sort,r,"D"),!0;case"sort-add-asc":return e.sort=Xn(e.sort,r,"A"),!0;case"sort-add-dsc":return e.sort=Xn(e.sort,r,"D"),!0;case"group":return e.groupBy=Un(e.groupBy,r),!0;case"group-add":return e.groupBy=Un(e.groupBy,r),!0;case"column-hide":return t({type:"hideColumns",columns:[r]}),!0;case"column-remove":return e.columns=e.columns.filter(i=>i!==r.name),!0;case"filter-remove-column":return e.filter=Ea(e.filter,r),!0;case"remove-filters":return e.filter={filter:""},!0;case"agg-avg":return e.aggregations=Le(e.aggregations,r,wa),!0;case"agg-high":return e.aggregations=Le(e.aggregations,r,Sa),!0;case"agg-low":return e.aggregations=Le(e.aggregations,r,Pa),!0;case"agg-count":return e.aggregations=Le(e.aggregations,r,Da),!0;case"agg-distinct":return e.aggregations=Le(e.aggregations,r,Ra),!0;case"agg-sum":return e.aggregations=Le(e.aggregations,r,Ma),!0;case"column-pin-floating":return t({type:"pinColumn",column:r,pin:"floating"}),!0;case"column-pin-left":return t({type:"pinColumn",column:r,pin:"left"}),!0;case"column-pin-right":return t({type:"pinColumn",column:r,pin:"right"}),!0;case"column-unpin":return t({type:"pinColumn",column:r,pin:void 0}),!0;case"column-settings":return t({type:"columnSettings",column:r}),!0;case"table-settings":return t({type:"tableSettings"}),!0;default:}}return!1};import{ContextMenuProvider as dT}from"@vuu-ui/vuu-popups";import{Button as gT,useIdMemo as CT}from"@salt-ds/core";import{buildColumnMap as sx,getColumnStyle as ix,isGroupColumn as lx,metadataKeys as iu,notHidden as ax,visibleColumnAtIndex as ux}from"@vuu-ui/vuu-utils";import{useCallback as px,useMemo as dx}from"react";import{isGroupColumn as qn,isJsonColumn as Qa,isJsonGroup as Ga,metadataKeys as Ua,notHidden as Xa,RowSelected as _a}from"@vuu-ui/vuu-utils";import Ya from"classnames";import{memo as Ja,useCallback as jn}from"react";import{getColumnStyle as Ha,metadataKeys as Oa}from"@vuu-ui/vuu-utils";import{EditableLabel as La}from"@vuu-ui/vuu-ui-controls";import Na from"classnames";import{memo as Aa,useCallback as ka,useRef as Fa,useState as Yn}from"react";import{jsx as Ct}from"react/jsx-runtime";var{KEY:Jn}=Oa,uo=Aa(({className:e,column:t,columnMap:o,onClick:n,row:s})=>{let r=Fa(null),{align:i,CellRenderer:l,key:a,pin:c,editable:m,resizing:p,valueFormatter:g}=t,[u,d]=Yn(!1),h=g(s[a]),[f,b]=Yn(h),E=()=>{var w;(w=r.current)==null||w.focus()},v=w=>{w.key==="Enter"&&d(!0)},D=ka(w=>{n==null||n(w,t)},[t,n]),M=()=>{d(!0)},H=(w="",S="",R=!0,K=!1)=>{var B;d(!1),K?b(w):S!==w&&b(S),R===!1&&((B=r.current)==null||B.focus())},x=Na(e,{vuuAlignRight:i==="right",vuuPinFloating:c==="floating",vuuPinLeft:c==="left",vuuPinRight:c==="right","vuuTableCell-resizing":p})||void 0,C=Ha(t);return m?Ct("div",{className:x,"data-editable":!0,role:"cell",style:C,onKeyDown:v,children:Ct(La,{editing:u,value:f,onChange:b,onMouseDownCapture:E,onEnterEditMode:M,onExitEditMode:H,onKeyDown:v,ref:r,tabIndex:0},"title")}):Ct("div",{className:x,role:"cell",style:C,onClick:D,children:l?Ct(l,{column:t,columnMap:o,row:s}):h})},Ia);uo.displayName="TableCell";function Ia(e,t){return e.column===t.column&&e.onClick===t.onClick&&e.row[Jn]===t.row[Jn]&&e.row[e.column.key]===t.row[t.column.key]}import{getColumnStyle as Ka,getGroupValueAndOffset as za,metadataKeys as Va}from"@vuu-ui/vuu-utils";import{useCallback as $a}from"react";import{jsx as co,jsxs as Wa}from"react/jsx-runtime";var{IS_LEAF:Ba}=Va,Zn=({column:e,onClick:t,row:o})=>{let{columns:n}=e,[s,r]=za(n,o),i=$a(m=>{t==null||t(m,e)},[e,t]),l=Ka(e),a=o[Ba],c=Array(r).fill(0).map((m,p)=>co("span",{className:"vuuTableGroupCell-spacer"},p));return Wa("div",{className:"vuuTableGroupCell vuuPinLeft",onClick:a?void 0:i,role:"cell",style:l,children:[c,a?null:co("span",{className:"vuuTableGroupCell-toggle","data-icon":"triangle-right"}),co("span",{children:s})]})};import{jsx as tr,jsxs as nu}from"react/jsx-runtime";var{IDX:Za,IS_EXPANDED:qa,SELECTED:ja}=Ua,{True:er,First:eu,Last:tu}=_a,Ne="vuuTableRow",ou=Ja(function({columnMap:t,columns:o,offset:n,onClick:s,onToggleGroup:r,virtualColSpan:i=0,row:l}){let{[Za]:a,[qa]:c,[ja]:m}=l,p=Ya(Ne,{[`${Ne}-even`]:a%2===0,[`${Ne}-expanded`]:c,[`${Ne}-selected`]:m&er,[`${Ne}-selectedStart`]:m&eu,[`${Ne}-selectedEnd`]:m&tu}),g=jn(d=>{let h=d.shiftKey,f=d.ctrlKey||d.metaKey;s==null||s(l,h,f)},[s,l]),u=jn((d,h)=>{(qn(h)||Ga(h,l))&&(d.stopPropagation(),r==null||r(l,h))},[r,l]);return nu("div",{"aria-selected":m&er?!0:void 0,"aria-rowindex":a,className:p,onClick:g,role:"row",style:{transform:`translate3d(0px, ${n}px, 0px)`},children:[i>0?tr("div",{role:"cell",style:{width:i}}):null,o.filter(Xa).map(d=>{let h=qn(d),f=Qa(d);return tr(h?Zn:uo,{column:d,columnMap:t,onClick:h||f?u:void 0,row:l},d.name)})]})});import jb from"classnames";import{useRef as oh}from"react";import{useCallback as Xb,useRef as _b}from"react";import{jsx as lh,jsxs as ah}from"react/jsx-runtime";import Ih from"classnames";import{useCallback as $h,useRef as Bh}from"react";import dh from"classnames";import{jsx as Ch,jsxs as bh}from"react/jsx-runtime";import{useContextMenu as _h}from"@vuu-ui/vuu-popups";import{useContextMenu as wh}from"@vuu-ui/vuu-popups";import Rh from"classnames";import{useCallback as Mh}from"react";import{jsx as Lh}from"react/jsx-runtime";import{jsx as Zh,jsxs as qh}from"react/jsx-runtime";import{jsx as vx,jsxs as yx}from"react/jsx-runtime";var{RENDER_IDX:hx}=iu;import{useContextMenu as Oy}from"@vuu-ui/vuu-popups";import{applySort as Ny,buildColumnMap as Ay,isJsonGroup as ky,metadataKeys as Ou,moveItemDeprecated as Fy}from"@vuu-ui/vuu-utils";import{useCallback as zy,useEffect as Vy,useMemo as $y,useRef as By,useState as Wy}from"react";import{isVuuFeatureAction as wx,isVuuFeatureInvocation as Dx}from"@vuu-ui/vuu-data-react";import{getFullRange as Sx,metadataKeys as lu,WindowRange as Px}from"@vuu-ui/vuu-utils";import{useCallback as Hx,useEffect as Ox,useMemo as Lx,useRef as Nx,useState as Ax}from"react";var{SELECTED:kx}=lu;import{useDragDropNext as Kx}from"@vuu-ui/vuu-ui-controls";import{useCallback as $x,useRef as Bx}from"react";import{withinRange as Yx}from"@vuu-ui/vuu-utils";import{useCallback as ev,useEffect as tv,useLayoutEffect as ov,useMemo as nv,useRef as rv}from"react";function au(e,...t){let o=new Set(e);for(let n of t)for(let s of n)o.add(s);return o}var or="ArrowUp",nr="ArrowDown",rr="ArrowLeft",sr="ArrowRight";var ir="Home",lr="End",ar="PageUp",ur="PageDown";var uu=new Set(["Enter","Delete"," "]),cu=new Set(["Tab"]),mu=new Set(["ArrowRight","ArrowLeft"]),pu=new Set([ir,lr,ar,ur,nr,rr,sr,or]),du=new Set(["F1","F2","F3","F4","F5","F6","F7","F8","F9","F10","F11","F12"]),Qx=au(uu,pu,mu,du,cu);import{isValidNumber as hv}from"@vuu-ui/vuu-utils";import{useCallback as yv,useMemo as Tv,useRef as Ev,useState as wv}from"react";import{useCallback as mv,useEffect as pv,useRef as dv}from"react";var fu=new Map,gu=(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}},fv=new ResizeObserver(e=>{for(let t of e){let{target:o,borderBoxSize:n,contentBoxSize:s}=t,r=fu.get(o);if(r){let[{blockSize:i,inlineSize:l}]=n,[{blockSize:a,inlineSize:c}]=s,{onResize:m,measurements:p}=r,g=!1;for(let[u,d]of Object.entries(p)){let h=gu(o,{height:i,width:l,contentHeight:a,contentWidth:c},u);h!==d&&(g=!0,p[u]=h)}g&&m&&m(p)}}});import{deselectItem as Cu,isRowSelected as bu,metadataKeys as hu,selectItem as xu}from"@vuu-ui/vuu-utils";import{useCallback as vu,useRef as cr}from"react";var{IDX:yu}=hu,Tu=[],mo=({selectionModel:e,onSelect:t,onSelectionChange:o})=>{let n=cr(-1),s=cr(Tu);return vu((i,l,a)=>{let{[yu]:c}=i,{current:m}=n,{current:p}=s,u=(bu(i)?Cu:xu)(e,p,c,l,a,m);s.current=u,n.current=c,t==null||t(i),o==null||o(u)},[t,o,e])};import{applyFilterToColumns as Lv,applyGroupByToColumns as Nv,applySortToColumns as Av,findColumn as kv,getCellRenderer as Fv,getColumnName as Iv,getTableHeadings as Kv,getValueFormatter as zv,isFilteredColumn as Vv,isGroupColumn as $v,isPinned as Bv,isTypeDescriptor as Wv,metadataKeys as Eu,updateColumn as Qv,sortPinnedColumns as Gv,stripFilterFromColumns as Uv,moveItemDeprecated as Xv,getDefaultAlignment as _v,isCalculatedColumn as Yv,getCalculatedColumnName as Jv}from"@vuu-ui/vuu-utils";import{useReducer as jv}from"react";var ey=Eu.count;import{useCallback as ny,useRef as ry}from"react";import{useCallback as wu,useMemo as bt,useRef as Du}from"react";import{actualRowPositioning as Ru,virtualRowPositioning as Su}from"@vuu-ui/vuu-utils";var Pu=15e5,Mu={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},Hu=e=>{let t=0,o=0,n=0;for(let s of e){let{hidden:r,pin:i,width:l}=s,a=r?0:l;i==="left"?t+=a:i==="right"?o+=a:n+=a}return{pinnedWidthLeft:t+4,pinnedWidthRight:o+4,unpinnedWidth:n}},po=({columns:e,headerHeight:t,headings:o,rowCount:n,rowHeight:s,size:r})=>{let i=Du(0),a=Math.min(n,Pu)*s,m=n*s-a,{pinnedWidthLeft:p,pinnedWidthRight:g,unpinnedWidth:u}=bt(()=>Hu(e),[e]),[d,h]=bt(()=>Ru(s),[s]),[f,b]=bt(()=>m?Su(s,m,i):[d,h],[h,d,m,s]),E=wu(v=>{i.current=v},[]);return bt(()=>{var v;if(r){let D=o.length,M=15,H=p+u+g,x=H>r.width?M:0,C=t*(1+D),w=a-(((v=r==null?void 0:r.height)!=null?v:0)-x)+C,S=H-r.width+p,R=(r.height-t)/s,K=Number.isInteger(R)?R+1:Math.ceil(R),B=r.height-C,N=a>B?M:0;return{contentHeight:a,getRowAtPosition:b,getRowOffset:f,horizontalScrollbarHeight:x,maxScrollContainerScrollHorizontal:S,maxScrollContainerScrollVertical:w,pinnedWidthLeft:p,pinnedWidthRight:g,rowCount:K,contentWidth:H,setPctScrollTop:E,totalHeaderHeight:C,verticalScrollbarWidth:N,viewportBodyHeight:B}}else return Mu},[r,o.length,p,u,g,a,t,s,b,f,E])};import{getColumnsInViewport as dy,itemsChanged as fy}from"@vuu-ui/vuu-utils";import{useCallback as by,useEffect as hy,useMemo as xy,useRef as vy,useState as yy}from"react";var{KEY:oT,IS_EXPANDED:nT,IS_LEAF:rT}=Ou;import yT from"classnames";import{isDataLoading as DT}from"@vuu-ui/vuu-utils";import{jsx as ST,jsxs as PT}from"react/jsx-runtime";import Lu from"classnames";import{isJsonAttribute as Nu,metadataKeys as Au,registerComponent as ku}from"@vuu-ui/vuu-utils";import{jsx as fo,jsxs as Vu}from"react/jsx-runtime";var Ze="vuuJsonCell",{IS_EXPANDED:Fu,KEY:Iu}=Au,Ku=e=>{let t=e.lastIndexOf("|");return t===-1?"":e.slice(t+1)},zu=({column:e,row:t})=>{let{key:o}=e,n=t[o],s=!1;Nu(n)&&(n=n.slice(0,-1),s=!0);let r=Ku(t[Iu]),i=Lu({[`${Ze}-name`]:r===n,[`${Ze}-value`]:r!==n,[`${Ze}-group`]:s});if(s){let l=t[Fu]?"minus-box":"plus-box";return Vu("span",{className:i,children:[fo("span",{className:`${Ze}-value`,children:n}),fo("span",{className:`${Ze}-toggle`,"data-icon":l})]})}else return n?fo("span",{className:i,children:n}):null};console.log("register JsonCell");ku("json",zu,"cell-renderer",{description:"JSON formatter",label:"JSON formatter",serverDataType:"json"});import VE from"classnames";import{useRef as BE}from"react";import{useCallback as go,useRef as $u}from"react";import{jsx as Wu}from"react/jsx-runtime";var mr=()=>{},Bu="vuuColumnResizerNext",qe=({onDrag:e,onDragEnd:t=mr,onDragStart:o=mr})=>{let n=$u(0),s=go(l=>{l.stopPropagation&&l.stopPropagation(),l.preventDefault&&l.preventDefault();let a=Math.round(l.clientX),c=a-n.current;n.current=a,c!==0&&e(l,c)},[e]),r=go(l=>{window.removeEventListener("mouseup",r),window.removeEventListener("mousemove",s),t(l)},[t,s]),i=go(l=>{o(l),n.current=Math.round(l.clientX),window.addEventListener("mouseup",r),window.addEventListener("mousemove",s),l.stopPropagation&&l.stopPropagation(),l.preventDefault&&l.preventDefault()},[o,s,r]);return Wu("div",{className:Bu,onMouseDown:i})};import{useCallback as Co,useRef as Qu,useState as Gu}from"react";var je=({column:e,onResize:t,rootRef:o})=>{let n=Qu(0),[s,r]=Gu(!1),{name:i}=e,l=Co(()=>{if(console.log("onResizeStart"),t&&o.current){console.log("handleResizeStart");let{width:m}=o.current.getBoundingClientRect();n.current=Math.round(m),r(!0),t==null||t("begin",i)}},[i,t,o]),a=Co((m,p)=>{if(o.current&&t){let{width:g}=o.current.getBoundingClientRect(),u=Math.round(g)+p;u!==n.current&&u>0&&(t("resize",i,u),n.current=u)}},[i,t,o]),c=Co(()=>{t&&(t("end",i,n.current),setTimeout(()=>{r(!1)},80))},[i,t]);return{isResizing:s,onDrag:a,onDragStart:l,onDragEnd:c}};import{getColumnStyle as Uu}from"@vuu-ui/vuu-utils";import Xu from"classnames";import{useMemo as _u}from"react";var oe=(e,t,o)=>_u(()=>{let n=Xu(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"}),s=Uu(e);return{className:n,style:s}},[e,t,o]);import Yu from"classnames";import{useCallback as Ju}from"react";import{jsx as Zu,jsxs as qu}from"react/jsx-runtime";var pr="vuuColumnHeaderPill",Ce=({children:e,className:t,column:o,onRemove:n,removable:s,...r})=>{if(s&&typeof n!="function")throw Error("ColumnHeaderPill onRemove prop must be provided if Pill is removable");let i=Ju(l=>{l.preventDefault(),l.stopPropagation(),n==null||n(o)},[o,n]);return qu("div",{...r,className:Yu(pr,t),children:[e,s?Zu("span",{className:`${pr}-removeButton`,role:"button","data-icon":"cross",onClick:i}):null]})};import{jsx as bo,jsxs as ju}from"react/jsx-runtime";var ho=({column:e,...t})=>{let{name:o,sorted:n}=e,s=typeof n=="number"?n<0?"arrow-down":"arrow-up":n==="A"?"arrow-up":n==="D"?"arrow-down":void 0;return ju(Ce,{...t,column:e,children:[bo("span",{className:"vuuGroupColumnPill-label",children:o}),s!==void 0?bo("span",{"data-icon":s}):null,typeof n=="number"?bo("span",{className:"vuuSortPosition",children:Math.abs(n)}):null]})};import{jsx as dr,jsxs as ec}from"react/jsx-runtime";var fr=({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 ec(Ce,{column:e,children:[dr("span",{"data-icon":t}),typeof e.sorted=="number"?dr("span",{className:"vuuSortPosition",children:Math.abs(e.sorted)}):null]})};import{jsx as YE,jsxs as JE}from"react/jsx-runtime";import{createElement as _E}from"react";import tc from"classnames";import{useCallback as oc,useRef as nc,useState as rc}from"react";import{OverflowContainer as sc,useLayoutEffectSkipFirst as ic}from"@vuu-ui/vuu-layout";import{jsx as vo,jsxs as uc}from"react/jsx-runtime";import{createElement as ac}from"react";var xo="vuuTableNextGroupHeaderCell",lc=(e,t)=>e===t?e:t,ht=({column:e,className:t,onRemoveColumn:o,onResize:n,...s})=>{let r=nc(null),{isResizing:i,...l}=je({column:e,onResize:n,rootRef:r}),[a,c]=rc(e.columns),{className:m,style:p}=oe(e,xo,!0),g=a.length>1?{removable:!0,onRemove:o}:void 0,u=oc((d,h)=>{c(f=>{let b=f.slice(),[E]=b.splice(d,1);return h===-1?b.concat(E):(b.splice(h,0,E),b)})},[]);return ic(()=>{c(d=>lc(d,e.columns))},[e.columns]),uc("div",{...s,className:tc(m,"vuuTableNextHeaderCell",t,{[`${xo}-pending`]:e.groupConfirmed===!1}),ref:r,role:"columnheader",style:p,children:[vo(sc,{allowDragDrop:!0,className:`${xo}-inner`,height:24,onMoveItem:u,overflowPosition:"start",children:a.map(d=>ac(ho,{...g,column:d,key:d.key}))}),vo(Ce,{column:e,removable:!0,onRemove:o}),e.resizeable!==!1?vo(qe,{...l}):null]})};import{useCallback as Cc,useRef as bc}from"react";import{useContextMenu as cc}from"@vuu-ui/vuu-popups";import mc from"classnames";import{useCallback as gr,useRef as pc,useState as dc}from"react";import{jsx as gc}from"react/jsx-runtime";var fc=e=>{if(e){let{bottom:t,left:o}=e.getBoundingClientRect();return{x:o,y:t+6}}},Cr=({className:e,column:t,...o})=>{let n=pc(null),[s,r]=dc(!1),[i]=cc(),l=gr(()=>{r(!1)},[]),a=gr(c=>{r(!0),i(c,"column-menu",{column:t,ContextMenuProps:{onClose:l,position:fc(n.current)}})},[t,l,i]);return gc("span",{...o,className:mc("vuuTable-columnMenu",e,{"vuuTable-columnMenu-open":s}),"data-icon":"more-vert",onClick:a,ref:n})};import hc from"classnames";import{jsx as xt,jsxs as xc}from"react/jsx-runtime";var yo="vuuTableNextHeaderCell",br=({className:e,column:t,onClick:o,onResize:n,...s})=>{var h;let r=bc(null),{isResizing:i,...l}=je({column:t,onResize:n,rootRef:r}),a=Cc(f=>{console.log(`click isResizing ${i}`),!i&&(o==null||o(f))},[i,o]),{className:c,style:m}=oe(t,yo,!0),p=xt(Cr,{column:t}),g=xt("div",{className:`${yo}-label`,children:(h=t.label)!=null?h:t.name}),u=xt(fr,{column:t}),d=t.align==="right"?[u,g,p]:[p,g,u];return xc("div",{...s,className:hc(c,e,{[`${yo}-resizing`]:i}),onClick:a,ref:r,role:"columnheader",style:m,children:[...d,t.resizeable!==!1?xt(qe,{...l}):null]})};import{ContextMenuProvider as op}from"@vuu-ui/vuu-popups";import{isGroupColumn as np,metadataKeys as rp,notHidden as sp}from"@vuu-ui/vuu-utils";import qr from"classnames";import{forwardRef as ip,useRef as lp}from"react";import{isGroupColumn as Tr,isJsonColumn as Mc,isJsonGroup as Hc,metadataKeys as Oc,notHidden as Lc,RowSelected as Nc}from"@vuu-ui/vuu-utils";import Ac from"classnames";import{memo as kc,useCallback as Er}from"react";import{metadataKeys as vc}from"@vuu-ui/vuu-utils";import{useCallback as hr}from"react";import{jsx as xr}from"react/jsx-runtime";var{IDX:yc}=vc,Tc="vuuTableNextCell",vr=({column:e,columnMap:t,onClick:o,onDataEdited:n,row:s})=>{let{className:r,style:i}=oe(e,Tc),{CellRenderer:l,name:a,valueFormatter:c}=e,m=t[a],p=hr(u=>(n==null||n(s[yc],a,u),!0),[a,n,s]),g=hr(u=>{o==null||o(u,e)},[e,o]);return xr("div",{className:r,onClick:o?g:void 0,role:"cell",style:i,children:l?xr(l,{column:e,columnMap:t,onCommit:p,row:s}):c(s[m])})};import{getGroupValueAndOffset as Ec,metadataKeys as wc}from"@vuu-ui/vuu-utils";import{useCallback as Dc}from"react";import Rc from"classnames";import{jsx as Eo,jsxs as Pc}from"react/jsx-runtime";var{IS_LEAF:Sc}=wc,To="vuuTableNextGroupCell",yr=({column:e,onClick:t,row:o})=>{let{columns:n}=e,[s,r]=Ec(n,o),{className:i,style:l}=oe(e,To),a=Dc(p=>{t==null||t(p,e)},[e,t]),c=o[Sc],m=Array(r).fill(0).map((p,g)=>Eo("span",{className:`${To}-spacer`},g));return Pc("div",{className:Rc(i,"vuuTableNextCell"),role:"cell",style:l,onClick:c?void 0:a,children:[m,c?null:Eo("span",{className:`${To}-toggle`,"data-icon":"triangle-right"}),Eo("span",{children:s})]})};import{jsx as wo}from"react/jsx-runtime";import{createElement as zc}from"react";var{IDX:Fc,IS_EXPANDED:Ic,SELECTED:Kc}=Oc,le="vuuTableNextRow",Do=kc(({className:e,columnMap:t,columns:o,row:n,offset:s,onClick:r,onDataEdited:i,onToggleGroup:l,zebraStripes:a=!1,...c})=>{let{[Fc]:m,[Ic]:p,[Kc]:g}=n,u=Er(D=>{let M=D.shiftKey,H=D.ctrlKey||D.metaKey;r==null||r(n,M,H)},[r,n]),{True:d,First:h,Last:f}=Nc,b=Ac(le,e,{[`${le}-even`]:a&&m%2===0,[`${le}-expanded`]:p,[`${le}-selected`]:g&d,[`${le}-selectedStart`]:g&h,[`${le}-selectedEnd`]:g&f}),E={transform:`translate3d(0px, ${s}px, 0px)`},v=Er((D,M)=>{(Tr(M)||Hc(M,n))&&(D.stopPropagation(),l==null||l(n,M))},[l,n]);return zc("div",{...c,"aria-rowindex":n[0],key:`row-${n[0]}`,role:"row",className:b,onClick:u,style:E},wo("span",{className:`${le}-selectionDecorator vuuStickyLeft`}),o.filter(Lc).map(D=>{let M=Tr(D),H=Mc(D);return wo(M?yr:vr,{column:D,columnMap:t,onClick:M||H?v:void 0,onDataEdited:i,row:n},D.key)}),wo("span",{className:`${le}-selectionDecorator vuuStickyRight`}))});Do.displayName="Row";import{useLayoutEffectSkipFirst as Gm}from"@vuu-ui/vuu-layout";import{useDragDropNext as Um}from"@vuu-ui/vuu-ui-controls";import{useCallback as ae,useEffect as $c,useMemo as Bc,useRef as Po}from"react";var Ro=e=>`.vuuTableNext-col-headers .vuuTableNextHeaderCell:nth-child(${e})`,So=(e,t)=>`.vuuTableNext-body > [aria-rowindex='${e}'] > [role='cell']:nth-child(${t+1})`,wr=(e,[t,o])=>{var r;let n=t===-1?Ro(o):So(t,o),s=(r=e.current)==null?void 0:r.querySelector(n);return Vc(s)&&s.querySelector("button")||s},Vc=e=>e.classList.contains("vuuTableNextCell-editable"),Dr=e=>e.querySelector(".vuuTableInputCell")!==null;var Rr=new Set(["Home","End","PageUp","PageDown","ArrowDown","ArrowUp"]),Mo=new Set(Rr);Mo.add("ArrowLeft");Mo.add("ArrowRight");var Wc=(e,t)=>{switch(t){case"cell":return Mo.has(e);case"row":return Rr.has(e);default:return!1}},Qc=["Home","End","PageUp","PageDown"],Gc=e=>Qc.includes(e),Uc=[-1,-1],Xc=[void 0,void 0],_c=e=>{var o,n;let t=(o=e.closest(".vuuTableNext"))==null?void 0:o.querySelector(".vuuTableNext-scrollbarContainer");if(t){let s=t==null?void 0:t.getBoundingClientRect(),r=(n=e.closest(".vuuTableNextCell"))==null?void 0:n.getBoundingClientRect();if(r)return r.bottom>s.bottom?["down",r.bottom-s.bottom]:r.top<s.top?["up",r.top-s.top]:r.right<s.right?["right",r.right-s.right]:r.left<s.left?["left",r.left-s.left]:Xc;throw Error("Whats going on, cell not found")}else throw Error("Whats going on, scrollbar container not found")};function Yc(e,[t,o],n,s){return e==="ArrowUp"?t>-1?[t-1,o]:[t,o]:e==="ArrowDown"?t===-1?[0,o]:t===s-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 Sr=({columnCount:e=0,containerRef:t,disableHighlightOnFocus:o,navigationStyle:n,requestScroll:s,rowCount:r=0,viewportRowCount:i})=>{var H;let l=Po([-1,-1]),a=Po(),c=Po([-1,0]),m=x=>x==null?void 0:x.closest("[role='columnHeader'],[role='cell']"),p=x=>{var C,w;if(x.role==="columnHeader")return[-1,parseInt((C=x.dataset.idx)!=null?C:"-1",10)];{let S=x.closest("[role='row']");if(S){let R=parseInt((w=S.ariaRowIndex)!=null?w:"-1",10),K=Array.from(S.childNodes).indexOf(x);return[R,K]}}return Uc},g=ae(x=>{var C;if(t.current){let w=wr(t,x);if(w){w!==a.current&&((C=a.current)==null||C.removeAttribute("tabindex"),a.current=w,w.setAttribute("tabindex","0"));let[S,R]=_c(w);S&&R&&(s==null||s({type:"scroll-distance",distance:R,direction:S})),w.focus()}}},[t,s]),u=ae((x,C,w=!1)=>{let S=[x,C];c.current=S,g(S),w&&(l.current=S)},[g]),d=ae((x,[C,w])=>new Promise(S=>{let R=C;switch(x){case"PageDown":R=Math.min(r-1,C+i),s==null||s({type:"scroll-page",direction:"down"});break;case"PageUp":R=Math.max(0,C-i),s==null||s({type:"scroll-page",direction:"up"});break;case"Home":R=0,s==null||s({type:"scroll-end",direction:"home"});break;case"End":R=r-1,s==null||s({type:"scroll-end",direction:"end"});break}setTimeout(()=>{S([R,w])},90)}),[s,r,i]),h=ae(()=>{var x;if(o!==!0&&(x=t.current)!=null&&x.contains(document.activeElement)){let C=m(document.activeElement);C&&(l.current=p(C))}},[o,t]),f=ae(async x=>{let[C,w]=Gc(x)?await d(x,c.current):Yc(x,c.current,e,r);console.log(`nextRowIdx ${C} nextColIdx ${w}`);let[S,R]=c.current;(C!==S||w!==R)&&u(C,w,!0)},[e,d,r,u]),b=ae(x=>{r>0&&Wc(x.key,n)&&(x.preventDefault(),x.stopPropagation(),f(x.key))},[r,n,f]),E=ae(x=>{let C=x.target,w=m(C);if(w){let[S,R]=p(w);u(S,R)}},[u]),v=ae(()=>{f("ArrowDown")},[f]),D=Bc(()=>({navigate:v,onClick:E,onFocus:h,onKeyDown:b}),[E,h,b,v]),M=((H=t.current)==null?void 0:H.firstChild)!=null;return $c(()=>{if(M&&a.current===void 0){let{current:x}=t,C=(x==null?void 0:x.querySelector(Ro(0)))||(x==null?void 0:x.querySelector(So(0,0)));C&&(C.setAttribute("tabindex","0"),a.current=C)}},[t,M]),D};import{applySort as Xm,buildColumnMap as _m,isGroupColumn as Ym,isJsonGroup as Jm,isValidNumber as Ur,metadataKeys as Zm,updateColumn as qm,visibleColumnAtIndex as jm}from"@vuu-ui/vuu-utils";import{useCallback as k,useEffect as Xr,useMemo as No,useState as Ao}from"react";var et=(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 jc,isVuuFeatureInvocation as em}from"@vuu-ui/vuu-data-react/src";import{getFullRange as Ho,NULL_RANGE as Pr}from"@vuu-ui/vuu-utils";import{useCallback as Oo,useEffect as Mr,useMemo as tm,useRef as yt,useState as om}from"react";import{metadataKeys as Jc,WindowRange as Zc}from"@vuu-ui/vuu-utils";var{SELECTED:qc}=Jc,vt=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 Zc(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,s]=this.range.overlap(t,o),r=new Array(Math.max(0,o-t));for(let i=n;i<s;i++){let l=this.getAtIndex(i);if(l){let a=i-t;r[a]=l}}this.data=r,this.range.from=t,this.range.to=o}}getSelectedRows(){return this.data.filter(t=>t[qc]!==0)}};var Hr=({dataSource:e,onFeatureEnabled:t,onFeatureInvocation:o,onSizeChange:n,onSubscribed:s,range:r=Pr,renderBufferSize:i=0})=>{let[,l]=om(null),a=yt([]),c=yt(!0),m=yt(!1),p=yt(Pr),g=tm(()=>new vt(Ho(r,i)),[]),u=Oo(f=>{for(let b of f)g.add(b);a.current=g.data,c.current&&l({})},[g]),d=Oo(f=>{f.type==="subscribed"?s==null||s(f):f.type==="viewport-update"?(typeof f.size=="number"&&(n==null||n(f.size),g.setRowCount(f.size)),f.rows?u(f.rows):typeof f.size=="number"&&(a.current=g.data,m.current=!0)):jc(f)?t==null||t(f):em(f)?o==null||o(f):console.log(`useDataSource unexpected message ${f.type}`)},[g,t,o,n,s,u]);Mr(()=>()=>{c.current=!0,c.current=!1},[]),Mr(()=>{e==null||e.subscribe({range:Ho(r,i)},d)},[e,d,r,i]);let h=Oo(f=>{let b=Ho(f,i);g.setRange(b),e.range=p.current=b,e.emit("range",f)},[e,g,i]);return{data:a.current,range:p.current,setRange:h}};import{useMemo as nm,useRef as rm}from"react";var Or=e=>{let t=rm(e);return nm(()=>t.current,[])};import{buildColumnMap as sm}from"@vuu-ui/vuu-utils";import{useCallback as im}from"react";import{useContextMenu as lm}from"@vuu-ui/vuu-popups";var Lr=({columns:e,data:t})=>{let[o]=lm();return im(s=>{var a;let r=s.target,i=r==null?void 0:r.closest("div[role='cell']"),l=r==null?void 0:r.closest("div[role='row']");if(i&&l){let c=sm(e),m=parseInt((a=l.ariaRowIndex)!=null?a:"-1"),p=Array.from(l.childNodes).indexOf(i),g=t.find(([d])=>d===m),u=e[p];o(s,"grid",{columnMap:c,columnName:u,row:g})}},[e,t,o])};import{isCharacterKey as am}from"@vuu-ui/vuu-utils";import{useCallback as Tt}from"react";var Nr=({navigate:e})=>{let t=Tt(()=>{e()},[e]),o=Tt(r=>{let i=r.target,l=i.querySelector("input");l&&(l.focus(),l.select()),i.addEventListener("vuu-commit",t,!0)},[t]),n=Tt(r=>{let i=r.target,l=i.querySelector("input");l&&(l.focus(),l.select()),i.addEventListener("vuu-commit",t,!0)},[t]);return{onKeyDown:Tt(r=>{Dr(r.target)&&(am(r.key)?o(r):r.key==="Enter"&&n(r))},[o,n])}};import{applyFilterToColumns as um,applyGroupByToColumns as cm,applySortToColumns as mm,getCellRenderer as pm,getColumnLabel as dm,getTableHeadings as fm,getValueFormatter as gm,hasValidationRules as Cm,isFilteredColumn as bm,isGroupColumn as hm,isPinned as xm,isTypeDescriptor as vm,logger as ym,metadataKeys as Tm,moveItem as Em,sortPinnedColumns as Ar,stripFilterFromColumns as wm,subscribedOnly as Dm}from"@vuu-ui/vuu-utils";import{buildValidationChecker as Rm}from"@vuu-ui/vuu-ui-controls";import{useReducer as Sm}from"react";var{info:Lo}=ym("useTableModel"),Pm=100,Mm=Tm.count,Hm=({serverDataType:e})=>e===void 0,Om=e=>{var t;if(vm(e.type))return pm((t=e.type)==null?void 0:t.renderer)},Lm=(e,t)=>{var n;let o=t.columns.find(({name:s})=>s===e.name);return o?o.serverDataType:(n=e.serverDataType)!=null?n:"string"},Nm=["int","long","double"],kr=e=>e===void 0?void 0:Nm.includes(e)?"right":"left",Fr=e=>e.type==="columnSettings",Ir=e=>e.type==="tableSettings",Am=(e,t)=>{switch(Lo==null||Lo(`TableModelReducer ${t.type}`),t.type){case"init":return zr(t);case"moveColumn":return Fm(e,t);case"resizeColumn":return zm(e,t);case"setTableSchema":return Vm(e,t);case"hideColumns":return Im(e,t);case"showColumns":return Km(e,t);case"pinColumn":return $m(e,t);case"updateColumnProp":return ke(e,t);case"tableConfig":return $r(e,t);default:return console.log(`unhandled action ${t.type}`),e}},Kr=(e,t)=>{let[o,n]=Sm(Am,{tableConfig:e,dataSourceConfig:t},zr),{columns:s,headings:r,tableConfig:i,...l}=o;return{columns:s,dispatchColumnAction:n,headings:r,tableAttributes:l,tableConfig:i}};function zr({dataSourceConfig:e,tableConfig:t}){let{columns:o,...n}=t,s=o.filter(Dm(e==null?void 0:e.columns)).map(Vr(n)),r=s.some(xm)?Ar(s):s,i={columns:r,headings:fm(r),tableConfig:t,...n};if(e){let{columns:l,...a}=e;i=$r(i,{type:"tableConfig",...a})}return i}var km=(e,t)=>t==="uppercase"?e.toUpperCase():t==="capitalize"?e[0].toUpperCase()+e.slice(1).toLowerCase():e,Vr=e=>(t,o)=>{let{columnDefaultWidth:n=Pm,columnFormatHeader:s}=e,{align:r=kr(t.serverDataType),key:i,name:l,label:a=dm(t),width:c=n,...m}=t,p={...m,align:r,CellRenderer:Om(t),clientSideEditValidationCheck:Cm(t.type)?Rm(t.type.renderer.rules):void 0,label:km(a,s),key:i!=null?i:o+Mm,name:l,originalIdx:o,valueFormatter:gm(t),width:c};return hm(p)&&(p.columns=p.columns.map(g=>Vr(e)(g,g.key))),p};function Fm(e,{column:t,moveBy:o,moveTo:n}){let{columns:s}=e;if(typeof o=="number"){let r=s.indexOf(t),i=s.slice(),[l]=i.splice(r,1);return i.splice(r+o,0,l),{...e,columns:i}}else if(typeof n=="number"){let r=s.indexOf(t);return{...e,columns:Em(s,r,n)}}return e}function Im(e,{columns:t}){return t.some(o=>o.hidden!==!0)?t.reduce((o,n)=>n.hidden!==!0?ke(o,{type:"updateColumnProp",column:n,hidden:!0}):o,e):e}function Km(e,{columns:t}){return t.some(o=>o.hidden)?t.reduce((o,n)=>n.hidden?ke(o,{type:"updateColumnProp",column:n,hidden:!1}):o,e):e}function zm(e,{column:t,phase:o,width:n}){let s="updateColumnProp",r=o!=="end";switch(o){case"begin":return ke(e,{type:s,column:t,resizing:r});case"end":return ke(e,{type:s,column:t,resizing:r,width:n});case"resize":return ke(e,{type:s,column:t,width:n});default:throw Error(`useTableModel.resizeColumn, invalid resizePhase ${o}`)}}function Vm(e,{tableSchema:t}){let{columns:o}=e;if(o.some(Hm)){let n=o.map(s=>{var i;let r=Lm(s,t);return{...s,align:(i=s.align)!=null?i:kr(r),serverDataType:r}});return{...e,columns:n}}else return e}function $m(e,t){let{columns:o}=e,{column:n,pin:s}=t,r=o.find(i=>i.name===n.name);return r?(o=Ae(o,{...r,pin:s}),o=Ar(o),{...e,columns:o}):e}function ke(e,t){let{columns:o}=e,{align:n,column:s,hidden:r,label:i,resizing:l,width:a}=t,c=o.find(m=>m.name===s.name);return c&&((n==="left"||n==="right")&&(o=Ae(o,{...c,align:n})),typeof i=="string"&&(o=Ae(o,{...c,label:i})),typeof l=="boolean"&&(o=Ae(o,{...c,resizing:l})),typeof r=="boolean"&&(o=Ae(o,{...c,hidden:r})),typeof a=="number"&&(o=Ae(o,{...c,width:a}))),{...e,columns:o}}function $r(e,{confirmed:t,filter:o,groupBy:n,sort:s}){let r=n!==void 0,i=typeof(o==null?void 0:o.filter)=="string",l=s&&s.sortDefs.length>0,a=e;return r&&(a={...e,columns:cm(a.columns,n,t)}),l&&(a={...e,columns:mm(a.columns,s)}),i?a={...e,columns:um(a.columns,o)}:a.columns.some(bm)&&(a={...e,columns:wm(a.columns)}),a}function Ae(e,t){return e.map(o=>o.name===t.name?t:o)}import{useCallback as ue,useRef as tt}from"react";var Br=e=>{let{scrollLeft:t,scrollTop:o}=e,{clientHeight:n,clientWidth:s,scrollHeight:r,scrollWidth:i}=e,l=t/(i-s),a=o/(r-n);return[l,a]},Wr=({onAttach:e,onDetach:t})=>{let o=tt(null);return ue(s=>{if(s)o.current=s,e==null||e(s);else if(o.current){let{current:r}=o;o.current=s,t==null||t(r)}},[e,t])},Qr=({maxScrollLeft:e,maxScrollTop:t,onHorizontalScroll:o,onVerticalScroll:n,rowHeight:s,viewportRowCount:r})=>{let i=tt(!1),l=tt({scrollTop:0,scrollLeft:0}),a=tt(null),c=tt(null),m=ue(()=>{let{current:v}=c,{current:D}=a,{current:M}=i;if(M)i.current=!1;else if(v&&D){let[H,x]=Br(D),C=Math.round(H*e),w=Math.round(x*t);v.scrollTo({left:C,top:w,behavior:"auto"})}},[e,t]),p=ue(()=>{let{current:v}=c,{current:D}=a,{current:M}=l;if(v&&D){let{scrollLeft:H,scrollTop:x}=v,[C,w]=Br(v);i.current=!0,D.scrollLeft=Math.round(C*e),D.scrollTop=Math.round(w*t),M.scrollTop!==x&&(M.scrollTop=x,n==null||n(x,w)),M.scrollLeft!==H&&(M.scrollLeft=H,o==null||o(H))}},[e,t,o,n]),g=ue(v=>{a.current=v,v.addEventListener("scroll",m,{passive:!0})},[m]),u=ue(v=>{a.current=null,v.removeEventListener("scroll",m)},[m]),d=ue(v=>{c.current=v,v.addEventListener("scroll",p,{passive:!0})},[p]),h=ue(v=>{c.current=null,v.removeEventListener("scroll",p)},[p]),f=Wr({onAttach:d,onDetach:h}),b=Wr({onAttach:g,onDetach:u}),E=ue(v=>{let{current:D}=c;if(D){let{scrollLeft:M,scrollTop:H}=D;if(i.current=!1,v.type==="scroll-distance"){let x=M,C=H;v.direction==="up"||v.direction==="down"?C=Math.min(Math.max(0,H+v.distance),t):x=Math.min(Math.max(0,M+v.distance),e),D.scrollTo({top:C,left:x,behavior:"auto"})}else if(v.type==="scroll-page"){let{direction:x}=v,C=r*(x==="down"?s:-s),w=Math.min(Math.max(0,H+C),t);D.scrollTo({top:w,left:M,behavior:"auto"})}else if(v.type==="scroll-end"){let{direction:x}=v,C=x==="end"?t:0;D.scrollTo({top:C,left:D.scrollLeft,behavior:"auto"})}}},[e,t,s,r]);return{scrollbarContainerRef:b,contentContainerRef:f,requestScroll:E}};import{useCallback as Bm,useEffect as Wm,useRef as Qm}from"react";var Gr=({columns:e,getRowAtPosition:t,setRange:o,viewportMeasurements:n})=>{let s=Qm(0),{contentWidth:r,rowCount:i}=n,l=Bm(a=>{let c=t(a);c!==s.current&&(s.current=c,o({from:c,to:c+i}))},[t,o,i]);return Wm(()=>{let{current:a}=s,c={from:a,to:a+i};o(c)},[o,i]),{onVerticalScroll:l}};var{KEY:ep,IS_EXPANDED:_r,IS_LEAF:Yr}=Zm,tp=(e,t)=>({...e,columns:e.columns.concat(t)}),Jr=({availableColumns:e,config:t,containerRef:o,dataSource:n,headerHeight:s=25,navigationStyle:r="cell",onAvailableColumnsChange:i,onConfigChange:l,onFeatureEnabled:a,onFeatureInvocation:c,onRowClick:m,onSelect:p,onSelectionChange:g,renderBufferSize:u=0,rowHeight:d=20,selectionModel:h})=>{let[f,b]=Ao(n.size);if(n===void 0)throw Error("no data source provided to Vuu Table");let[E,v]=Ao(),D=k(y=>{v(y)},[]),M=No(()=>io(n),[n]),H=k(y=>{b(y)},[]),{columns:x,dispatchColumnAction:C,headings:w,tableAttributes:S,tableConfig:R}=Kr(t,n.config);Gm(()=>{C({type:"init",dataSourceConfig:n.config,tableConfig:R})},[R,n.config,C]);let[K,B]=Ao(),[N,Ie]=No(()=>{let y=(O,L)=>{let z=qm(x,O,{width:L});B(z)};return[K!=null?K:x,y]},[x,K]),Dt=No(()=>_m(n.columns),[n.columns]),{getRowAtPosition:Rt,getRowOffset:Vo,setPctScrollTop:$o,...J}=po({columns:N,headerHeight:s,headings:w,rowCount:f,rowHeight:d,size:E}),St=Or({from:0,to:J.rowCount}),ot=k(({tableSchema:y})=>{y||console.log("usbscription message with no schema")},[]),{data:ne,range:U,setRange:Pt}=Hr({dataSource:n,onFeatureEnabled:a,onFeatureInvocation:c,renderBufferSize:u,onSizeChange:H,onSubscribed:ot,range:St}),Mt=k(y=>{C({type:"init",tableConfig:y,dataSourceConfig:n.config}),l==null||l(y)},[n.config,C,l]),Ht=k(y=>{n.config={...n.config,...y}},[n]),W=k(y=>{n.columns=n.columns.concat(y.name);let O=tp(R,y);C({type:"init",tableConfig:O,dataSourceConfig:n.config}),console.log("dispatch onConfigChange",{newTableConfig:O}),l==null||l(O)},[n,C,l,R]);Xr(()=>{n.on("config",(y,O)=>{C({type:"tableConfig",...y,confirmed:O})})},[n,C]);let{showColumnSettingsPanel:ce,showTableSettingsPanel:Bo}=Zr({availableColumns:e!=null?e:R.columns.map(({name:y,serverDataType:O="string"})=>({name:y,serverDataType:O})),onAvailableColumnsChange:i,onConfigChange:Mt,onCreateCalculatedColumn:W,onDataSourceConfigChange:Ht,tableConfig:R}),ts=k(y=>{Fr(y)?ce(y):Ir(y)?Bo():C(y)},[C,ce,Bo]),os=ao({dataSource:n,onPersistentColumnOperation:ts}),Wo=k((y,O=!1,L)=>{n&&(n.sort=Xm(n.sort,y,O,L))},[n]),ns=k((y,O,L)=>{let z=N.find(Z=>Z.name===O);if(z)y==="resize"?Ur(L)&&Ie(O,L):y==="end"?Ur(L)&&(C({type:"resizeColumn",phase:y,column:z,width:L}),l==null||l(et(R,{type:"col-size",column:z,width:L}))):(B(void 0),C({type:"resizeColumn",phase:y,column:z,width:L}));else throw Error(`useDataTable.handleColumnResize, column ${O} not found`)},[N,R,C,l,Ie]),rs=k((y,O)=>{let L=Jm(O,y),z=y[ep];if(y[_r]){if(n.closeTreeNode(z,!0),L){let Z=N.indexOf(O);n.getRowsAtDepth(Z+1).some(q=>q[_r]||q[Yr])||C({type:"hideColumns",columns:N.slice(Z+2)})}}else if(n.openTreeNode(z),L){let Z=n.getChildRows(z),Ke=N.indexOf(O)+1,q=[N[Ke]];Z.some(Ot=>Ot[Yr])&&q.push(N[Ke+1]),q.some(Ot=>Ot.hidden)&&C({type:"showColumns",columns:q})}},[N,n,C]),{onVerticalScroll:Qo}=Gr({columns:N,getRowAtPosition:Rt,setRange:Pt,viewportMeasurements:J}),ss=k(y=>{Qo(y)},[Qo]),{requestScroll:is,...ls}=Qr({maxScrollLeft:J.maxScrollContainerScrollHorizontal,maxScrollTop:J.maxScrollContainerScrollVertical,rowHeight:d,onVerticalScroll:ss,viewportRowCount:J.rowCount}),{navigate:as,onKeyDown:Go,...us}=Sr({columnCount:N.filter(y=>y.hidden!==!0).length,containerRef:o,navigationStyle:r,requestScroll:is,rowCount:n==null?void 0:n.size,viewportRange:U,viewportRowCount:J.rowCount}),{onKeyDown:Uo}=Nr({navigate:as}),cs=k(y=>{Go(y),y.defaultPrevented||Uo(y)},[Go,Uo]),ms=Lr({columns:N,data:ne}),ps=k(y=>{var q;let L=y.target.closest(".vuuTableNextHeaderCell"),z=parseInt((q=L==null?void 0:L.dataset.index)!=null?q:"-1"),Z=jm(N,z),Ke=y.shiftKey;Z&&Wo(Z,Ke)},[N,Wo]),ds=k(y=>{Ym(y)?n.groupBy=[]:n&&n.groupBy.includes(y.name)&&(n.groupBy=n.groupBy.filter(O=>O!==y.name))},[n]),fs=k(y=>{n.select(y),g==null||g(y)},[n,g]),Xo=mo({onSelect:p,onSelectionChange:fs,selectionModel:h}),gs=k((y,O,L)=>{Xo(y,O,L),m==null||m(y)},[m,Xo]);Xr(()=>{n.on("config",(y,O)=>{C({type:"tableConfig",...y,confirmed:O})})},[n,C]);let Cs=k((y,O)=>{let L=N[y];C({type:"moveColumn",column:L,moveTo:O})},[N,C]),bs=k((y,O,L)=>n.applyEdit(y,O,L),[n]),{onMouseDown:hs,...xs}=Um({allowDragDrop:!0,containerRef:o,draggableClassName:"vuuTableNext",onDrop:Cs,orientation:"horizontal",itemQuery:".vuuTableNextHeaderCell"});return{...us,onKeyDown:cs,columnMap:Dt,columns:N,data:ne,handleContextMenuAction:os,headerProps:{onClick:ps,onMouseDown:hs,onResize:ns},menuBuilder:M,onContextMenu:ms,onDataEdited:bs,onRemoveGroupColumn:ds,onResize:D,onRowClick:gs,onToggleGroup:rs,scrollProps:ls,tableAttributes:S,viewportMeasurements:J,dragDropHook:xs}};import{MeasuredContainer as ap,useId as up}from"@vuu-ui/vuu-layout";import{useForkRef as cp}from"@salt-ds/core";import{jsx as be,jsxs as ko}from"react/jsx-runtime";import{createElement as jr}from"react";var $="vuuTableNext",{IDX:mp,RENDER_IDX:pp}=rp,dp=ip(function({Row:t=Do,availableColumns:o,className:n,config:s,dataSource:r,id:i,navigationStyle:l="cell",onAvailableColumnsChange:a,onConfigChange:c,onFeatureEnabled:m,onFeatureInvocation:p,onRowClick:g,onSelect:u,onSelectionChange:d,onShowConfigEditor:h,renderBufferSize:f=0,rowHeight:b=20,selectionModel:E="extended",showColumnHeaders:v=!0,headerHeight:D=v?25:0,style:M,...H},x){let C=up(i),w=lp(null),{columnMap:S,columns:R,data:K,dragDropHook:B,handleContextMenuAction:N,headerProps:Ie,onDataEdited:Dt,onRemoveGroupColumn:Rt,onResize:Vo,onRowClick:$o,onToggleGroup:J,menuBuilder:St,scrollProps:ot,tableAttributes:ne,viewportMeasurements:U,...Pt}=Jr({availableColumns:o,config:s,containerRef:w,dataSource:r,headerHeight:D,navigationStyle:l,onAvailableColumnsChange:a,onConfigChange:c,onFeatureEnabled:m,onFeatureInvocation:p,onRowClick:g,onSelect:u,onSelectionChange:d,renderBufferSize:f,rowHeight:b,selectionModel:E}),Mt=()=>({...M,"--content-height":`${U.contentHeight}px`,"--horizontal-scrollbar-height":`${U.horizontalScrollbarHeight}px`,"--content-width":`${U.contentWidth}px`,"--pinned-width-left":`${U.pinnedWidthLeft}px`,"--pinned-width-right":`${U.pinnedWidthRight}px`,"--header-height":`${D}px`,"--row-height":`${b}px`,"--total-header-height":`${U.totalHeaderHeight}px`,"--vertical-scrollbar-width":`${U.verticalScrollbarWidth}px`,"--viewport-body-height":`${U.viewportBodyHeight}px`}),Ht=qr($,n,{[`${$}-colLines`]:ne.columnSeparators,[`${$}-rowLines`]:ne.rowSeparators,[`${$}-highlight`]:ne.showHighlightedRow,[`${$}-zebra`]:ne.zebraStripes});return be(op,{menuActionHandler:N,menuBuilder:St,children:ko(ap,{...H,className:Ht,onResize:Vo,ref:cp(w,x),style:Mt(),children:[be("div",{className:`${$}-scrollbarContainer`,ref:ot.scrollbarContainerRef,children:be("div",{className:`${$}-scrollbarContent`})}),be("div",{className:`${$}-contentContainer`,ref:ot.contentContainerRef,children:ko("div",{...Pt,className:`${$}-table`,tabIndex:-1,children:[v?be("div",{className:`${$}-col-headings`,children:ko("div",{className:`${$}-col-headers`,role:"row",children:[R.filter(sp).map((W,ce)=>np(W)?jr(ht,{...Ie,column:W,"data-index":ce,key:W.name,onRemoveColumn:Rt}):jr(br,{...Ie,className:qr({"vuuDraggable-dragAway":ce===B.draggedItemIndex}),column:W,"data-index":ce,id:`${C}-col-${ce}`,key:W.name})),B.draggable]})}):null,be("div",{className:`${$}-body`,children:K.map(W=>be(t,{columnMap:S,columns:R,onClick:$o,onDataEdited:Dt,row:W,offset:b*W[mp]+D,onToggleGroup:J,zebraStripes:ne.zebraStripes},W[pp]))})]})})]})})});import{Dropdown as fp}from"@vuu-ui/vuu-ui-controls";import{isColumnTypeRenderer as gp,isTypeDescriptor as Cp,registerComponent as bp}from"@vuu-ui/vuu-utils";import{useCallback as hp,useState as xp}from"react";import{jsx as Ep}from"react/jsx-runtime";var vp="vuuTableDropdownCell",yp=["Enter"," "],Tp=({column:e,columnMap:t,row:o})=>{var a,c,m;let n=Cp(e.type)&&gp((a=e.type)==null?void 0:a.renderer)?(m=(c=e.type)==null?void 0:c.renderer)==null?void 0:m.values:[],s=t[e.name],[r,i]=xp(o[s]),l=hp((p,g)=>{g&&i(g)},[]);return Ep(fp,{className:vp,onSelectionChange:l,openKeys:yp,selected:r,source:n,width:e.width-17})};bp("dropdown-cell",Tp,"cell-renderer",{});import{registerComponent as wp}from"@vuu-ui/vuu-utils";import{Input as Dp}from"@salt-ds/core";import{useEditableText as Rp}from"@vuu-ui/vuu-ui-controls";import Sp from"classnames";import{jsx as Fo}from"react/jsx-runtime";var Et="vuuTableInputCell",Pp=()=>(console.warn("onCommit handler has not been provided to InputCell cell renderer"),!0),Mp=({column:e,columnMap:t,onCommit:o=Pp,row:n})=>{let s=t[e.name],{align:r="left",clientSideEditValidationCheck:i,valueFormatter:l}=e,{warningMessage:a,...c}=Rp({initialValue:l(n[s]),onCommit:o,clientSideEditValidationCheck:i}),m=a&&r==="left"?Fo("span",{className:`${Et}-icon`,"data-icon":"error"}):void 0,p=a&&r==="right"?Fo("span",{className:`${Et}-icon`,"data-icon":"error"}):void 0;return Fo(Dp,{...c,className:Sp(Et,{[`${Et}-error`]:a!==void 0}),endAdornment:m,startAdornment:p})};wp("input-cell",Mp,"cell-renderer",{});import{addColumnToSubscribedColumns as Op,isCalculatedColumn as Lp,moveItem as Np,subscribedOnly as Ap}from"@vuu-ui/vuu-utils";import{useCallback as wt,useMemo as kp,useState as Fp}from"react";var Ip=(e,t)=>{let o=[];for(let{name:n}of e){let s=t.find(r=>r.name===n);s&&o.push(s)}return o},Kp=(e,t)=>e.map(({name:o,serverDataType:n})=>{let s=t.find(r=>r.name===o);return{hidden:s==null?void 0:s.hidden,isCalculated:Lp(o),label:s==null?void 0:s.label,name:o,serverDataType:n,subscribed:s!==void 0}}),es=({availableColumns:e,onConfigChange:t,onDataSourceConfigChange:o,tableConfig:n})=>{let[{availableColumns:s,tableConfig:r},i]=Fp({availableColumns:e,tableConfig:n}),l=kp(()=>Kp(s,r.columns),[s,r.columns]),a=wt((u,d)=>{i(h=>{let f=Np(h.availableColumns,u,d),b=Ip(f,r.columns);return{availableColumns:f,tableConfig:{...h.tableConfig,columns:b}}})},[r.columns]),c=wt((u,d,h)=>{let f=l.find(b=>b.name===u);if(d==="subscribed")if(f!=null&&f.subscribed){let b=r.columns.filter(E=>E.name!==u).map(E=>E.name);i(E=>({...E,tableConfig:{...r,columns:r.columns.filter(Ap(b))}})),o({columns:b})}else{let b={...r,columns:Op(r.columns,s,u)};i(v=>({...v,tableConfig:b}));let E=b.columns.map(v=>v.name);o({columns:E})}else if(f!=null&&f.subscribed){let b=r.columns.find(E=>E.name===u);if(b){let E=et(r,{type:"column-prop",property:d,column:b,value:h});i(v=>({...v,tableConfig:E}))}}},[s,l,o,r]),m=wt(u=>{let{value:d}=u.target,h=d==="0"?void 0:d==="1"?"capitalize":"uppercase";i(f=>({...f,tableConfig:{...f.tableConfig,columnFormatHeader:h}}))},[]),p=wt(u=>{let{ariaChecked:d,value:h}=u.target;i(f=>({...f,tableConfig:{...f.tableConfig,[h]:d!=="true"}}))},[]);Hp(()=>{t==null||t(r)},[t,r]);let g=r.columnFormatHeader===void 0?0:r.columnFormatHeader==="capitalize"?1:2;return{columnItems:l,columnLabelsValue:g,onChangeColumnLabels:m,onChangeTableAttribute:p,onColumnChange:c,onMoveListItem:a,tableConfig:r}};import{jsx as I,jsxs as he}from"react/jsx-runtime";var zo="vuuTableSettingsPanel",zS=({availableColumns:e,onAddCalculatedColumn:t,onConfigChange:o,onDataSourceConfigChange:n,onNavigateToColumn:s,tableConfig:r,...i})=>{var d,h,f;let{columnItems:l,columnLabelsValue:a,onChangeColumnLabels:c,onChangeTableAttribute:m,onColumnChange:p,onMoveListItem:g,tableConfig:u}=es({availableColumns:e,onConfigChange:o,onDataSourceConfigChange:n,tableConfig:r});return he("div",{...i,className:zo,children:[he(Io,{children:[I(Ko,{children:"Column Labels"}),he($p,{className:"vuuToggleButtonGroup",onChange:c,value:a,children:[I(Fe,{className:"vuuIconToggleButton","data-icon":"text-strikethrough",value:0}),I(Fe,{className:"vuuIconToggleButton","data-icon":"text-Tt",value:1}),I(Fe,{className:"vuuIconToggleButton","data-icon":"text-T",value:2})]})]}),he(Io,{children:[I(Ko,{children:"Grid separators"}),he("div",{className:"saltToggleButtonGroup vuuToggleButtonGroup saltToggleButtonGroup-horizontal vuuGridSeparators",children:[I(Fe,{className:"vuuIconToggleButton","data-icon":"row-striping",selected:(d=u.zebraStripes)!=null?d:!1,onChange:m,value:"zebraStripes"}),I(Fe,{className:"vuuIconToggleButton","data-icon":"row-lines",selected:(h=u.rowSeparators)!=null?h:!1,onChange:m,value:"rowSeparators"}),I(Fe,{className:"vuuIconToggleButton","data-icon":"col-lines",selected:(f=u.columnSeparators)!=null?f:!1,onChange:m,value:"columnSeparators"})]})]}),he(Io,{children:[I(Ko,{children:"Default Column Width"}),I(Vp,{className:"vuuInput"})]}),I(nn,{columnItems:l,onChange:p,onMoveListItem:g,onNavigateToColumn:s}),he("div",{className:`${zo}-calculatedButtonbar`,children:[I(zp,{"data-icon":"plus",onClick:t}),I("span",{className:`${zo}-calculatedLabel`,children:"Add calculated column"})]})]})};import{useLayoutProviderDispatch as Bp}from"@vuu-ui/vuu-layout";import{getCalculatedColumnType as Wp}from"@vuu-ui/vuu-utils";import{useCallback as xe,useRef as Qp,useState as Gp}from"react";var Zr=({availableColumns:e,onAvailableColumnsChange:t,onConfigChange:o,onCreateCalculatedColumn:n,onDataSourceConfigChange:s,tableConfig:r})=>{let i=Bp(),l=Qp(),[a,c]=Gp(e),m=xe((f,b,E)=>{i({type:"set-props",path:"#context-panel",props:{expanded:!0,content:{type:f,props:E},title:b}})},[i]),p=xe(()=>{requestAnimationFrame(()=>{var f;(f=l.current)==null||f.call(l)})},[]),g=xe(f=>{let b=a.concat({name:f.name,serverDataType:Wp(f)});c(b),t==null||t(b),requestAnimationFrame(()=>{var E;(E=l.current)==null||E.call(l)}),n(f)},[a,t,n]),u=xe(f=>{m("ColumnSettings","Column Settings",{column:f.column,onCancelCreateColumn:p,onConfigChange:o,onCreateCalculatedColumn:g,tableConfig:r,vuuTable:f.vuuTable})},[p,g,o,m,r]),d=xe(()=>{u({column:{name:"::",serverDataType:"string"},type:"columnSettings",vuuTable:{module:"SIMUL",table:"instruments"}})},[u]),h=xe(f=>{let b=r.columns.find(E=>E.name===f);b&&u({type:"columnSettings",column:b,vuuTable:{module:"SIMUL",table:"instruments"}})},[u,r.columns]);return l.current=xe(()=>{m("TableSettings","DataGrid Settings",{availableColumns:a!=null?a:r.columns.map(({name:f,serverDataType:b})=>({name:f,serverDataType:b})),onAddCalculatedColumn:d,onConfigChange:o,onDataSourceConfigChange:s,onNavigateToColumn:h,tableConfig:r})},[a,d,h,o,s,m,r]),{showColumnSettingsPanel:u,showTableSettingsPanel:l.current}};export{gi as BackgroundCell,Ts as CaseValidator,Xt as ColumnExpressionInput,Hn as ColumnExpressionPanel,kn as ColumnFormattingPanel,nn as ColumnList,Vt as ColumnNamedTerms,AC as ColumnSettingsPanel,GC as DataSourceStats,Ln as NumericFormattingSettings,Rs as PatternValidator,zS as TableSettingsPanel,rn as columnExpressionLanguageSupport,un as isCompleteExpression,cn as isCompleteRelationalExpression,$t as lastNamedChild,En as useColumnExpressionEditor,Rn as useColumnExpressionSuggestionProvider,Zr as useTableAndColumnSettings,es as useTableSettings,ln as walkTree};
2
2
  //# sourceMappingURL=index.js.map