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