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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/esm/index.js CHANGED
@@ -1,2 +1,2 @@
1
- var vt=(o,e,t)=>{if(!e.has(o))throw TypeError("Cannot "+t)};var f=(o,e,t)=>(vt(o,e,"read from private field"),t?t.call(o):e.get(o)),L=(o,e,t)=>{if(e.has(o))throw TypeError("Cannot add the same private member more than once");e instanceof WeakSet?e.add(o):e.set(o,t)},M=(o,e,t,n)=>(vt(o,e,"write to private field"),n?n.call(o,t):e.set(o,t),t);import{registerComponent as ho}from"@vuu-ui/vuu-utils";var bo=o=>typeof o=="string",yo=(o,e)=>bo(e)?e===""?!0:o.value==="lower"&&e.toLowerCase()!==e?"value must be all lowercase":o.value==="upper"&&e.toUpperCase()!==e?"value must be all uppercase":!0:"value must be a string";ho("vuu-case",yo,"data-edit-validator",{});import{registerComponent as Eo}from"@vuu-ui/vuu-utils";var wo=o=>typeof o=="string",Oo="value does not match expected pattern",So=(o,e)=>{if(typeof o.value!="string")throw Error("Pattern validation rule must provide pattern");if(wo(e)){if(e==="")return!0;{let{message:t=Oo}=o;return new RegExp(o.value).test(e)||t}}else return"value must be a string"};Eo("vuu-pattern",So,"data-edit-validator",{});import{dataAndColumnUnchanged as Bo,DOWN1 as Do,DOWN2 as No,isTypeDescriptor as Ro,metadataKeys as Ho,registerComponent as Vo,UP1 as Io,UP2 as Qo}from"@vuu-ui/vuu-utils";import Mo from"clsx";import{memo as Ao}from"react";import{getMovingValueDirection as ko,isTypeDescriptor as To,isValidNumber as xt}from"@vuu-ui/vuu-utils";import{useEffect as Fo,useRef as Po}from"react";var Lo=[void 0,void 0,void 0,void 0];function ht(o,e,t){var g;let n=Po(),[i,r,a,u]=n.current||Lo,{type:l}=t,c=To(l)?(g=l.formatting)==null?void 0:g.decimals:void 0,d=o===i&&xt(e)&&xt(r)&&t===a?ko(e,u,r,c):"";return Fo(()=>{n.current=[o,e,t,d]}),d}import{jsx as Go,jsxs as Wo}from"react/jsx-runtime";var $o="\u2B06",Zo="\u2B07",{KEY:Xo}=Ho,pe="vuuBackgroundCell",Y={ArrowOnly:"arrow",BackgroundOnly:"bg-only",ArrowBackground:"arrow-bg"},zo=o=>Ro(o)&&o.renderer&&"flashStyle"in o.renderer?o.renderer.flashStyle:Y.BackgroundOnly,Uo=Ao(function({column:e,columnMap:t,row:n}){let{name:i,type:r,valueFormatter:a}=e,u=t[i],l=n[u],c=zo(r),d=ht(n[Xo],l,e),g=c===Y.ArrowOnly||c===Y.ArrowBackground?d===Io||d===Qo?$o:d===Do||d===No?Zo:null:null,p=d?" "+d:"",s=Mo(pe,p,{[`${pe}-backgroundOnly`]:c===Y.BackgroundOnly,[`${pe}-arrowOnly`]:c===Y.ArrowOnly,[`${pe}-arrowBackground`]:c===Y.ArrowBackground});return Wo("div",{className:s,tabIndex:-1,children:[Go("div",{className:`${pe}-arrow`,children:g}),a(n[u])]})},Bo);Vo("vuu.price-move-background",Uo,"cell-renderer",{description:"Change background color of cell when value changes",configEditor:"BackgroundCellConfigurationEditor",label:"Background Flash",serverDataType:["long","int","double"]});import{Dropdown as Yo}from"@vuu-ui/vuu-ui-controls";import{registerConfigurationEditor as qo}from"@vuu-ui/vuu-utils";import{FormField as _o,FormFieldLabel as Jo}from"@salt-ds/core";import{useCallback as Ko,useState as jo}from"react";import{jsx as bt,jsxs as nn}from"react/jsx-runtime";var en="vuuBackgroundCellConfiguration",Qe=[{label:"Background Only",value:"bg-only"},{label:"Background and Arrow",value:"arrow-bg"},{label:"Arrow Only",value:"arrow"}],[yt]=Qe,tn=o=>{let{flashStyle:e}=o.type.renderer;return Qe.find(t=>t.value===e)||yt},on=({column:o,onChangeRendering:e})=>{let[t,n]=jo(tn(o)),i=Ko((r,a)=>{var l;n(a);let u=o.type.renderer;e({...u,flashStyle:(l=a==null?void 0:a.value)!=null?l:yt.value})},[o.type,e]);return nn(_o,{children:[bt(Jo,{children:"Flash Style"}),bt(Yo,{className:`${en}-flashStyle`,onSelectionChange:i,selected:t,source:Qe,width:"100%"})]})};qo("BackgroundCellConfigurationEditor",on);import{useLookupValues as rn}from"@vuu-ui/vuu-data-react";import{Dropdown as sn,WarnCommit as an}from"@vuu-ui/vuu-ui-controls";import{dataAndColumnUnchanged as ln,dispatchCustomEvent as un,registerComponent as pn}from"@vuu-ui/vuu-utils";import{memo as cn,useCallback as mn,useState as dn}from"react";import{jsx as vn}from"react/jsx-runtime";var gn="vuuTableDropdownCell",fn=["Enter"," "],Cn=cn(function({column:e,columnMap:t,onCommit:n=an,row:i}){let r=t[e.name],{initialValue:a,values:u}=rn(e,i[r]),[l,c]=dn(null),d=mn((g,p)=>{p&&(c(p),n(p.value).then(s=>{s===!0&&g&&un(g.target,"vuu-commit")}))},[n]);return vn(sn,{className:gn,onSelectionChange:d,openKeys:fn,selected:l!=null?l:a,source:u,width:e.width-17})},ln);pn("dropdown-cell",Cn,"cell-renderer",{});import{useLookupValues as xn}from"@vuu-ui/vuu-data-react";import{dataAndColumnUnchanged as hn,registerComponent as bn}from"@vuu-ui/vuu-utils";import{memo as yn}from"react";import{jsx as wn}from"react/jsx-runtime";var En=yn(function({column:e,columnMap:t,row:n}){let i=t[e.name],{initialValue:r}=xn(e,n[i]);return wn("span",{children:r==null?void 0:r.label})},hn);bn("lookup-cell",En,"cell-renderer",{});import{isColumnTypeRenderer as On,isTypeDescriptor as Sn,isValidNumber as Et,registerComponent as kn}from"@vuu-ui/vuu-utils";import Tn from"clsx";import{jsx as Me,jsxs as wt}from"react/jsx-runtime";var ce="vuuProgressCell",Fn=({column:o,columnMap:e,row:t})=>{let{name:n,type:i}=o,r=t[e[n]],a=!1,u=0;if(Sn(i)&&On(i.renderer)){let{associatedField:c}=i.renderer;if(c){let d=t[e[c]];if(typeof Et(r)&&Et(d))u=Math.min(Math.round(r/d*100),100),u=Math.min(Math.round(r/d*100),100),a=isFinite(u);else{let g=parseFloat(r);if(Number.isFinite(g)){let p=parseFloat(d);Number.isFinite(p)&&(u=Math.min(Math.round(g/p*100),100),a=isFinite(u))}}}else throw Error("ProgressCell associatedField is required to render")}let l=Tn(ce,{});return wt("div",{className:l,tabIndex:-1,children:[a?wt("span",{className:`${ce}-track`,children:[Me("span",{className:`${ce}-bg`}),Me("span",{className:`${ce}-bar`,style:{"--progress-bar-pct":`-${100-u}%`}})]}):null,Me("span",{className:`${ce}-text`,children:`${u} %`})]})};kn("vuu.progress",Fn,"cell-renderer",{description:"Progress formatter",label:"Progress formatter",serverDataType:["long","int","double"]});import{List as Pn,ListItem as Ln}from"@vuu-ui/vuu-ui-controls";import{Checkbox as Bn,Switch as Dn}from"@salt-ds/core";import Nn from"clsx";import{useCallback as Ot}from"react";import{getColumnLabel as Rn}from"@vuu-ui/vuu-utils";import{jsx as N,jsxs as Ae}from"react/jsx-runtime";var D="vuuColumnList",St="vuuColumnListItem",Hn=({className:o,item:e,...t})=>Ae(Ln,{...t,className:Nn(o,St),"data-name":e==null?void 0:e.name,children:[N("span",{className:`${D}-icon`,"data-icon":"draggable"}),e!=null&&e.isCalculated?N("span",{className:`${D}-icon`,"data-icon":"function"}):N(Dn,{className:`${D}-switch`,checked:e==null?void 0:e.subscribed}),N("span",{className:`${D}-text`,children:Rn(e)}),N(Bn,{className:`${D}-checkBox`,checked:(e==null?void 0:e.hidden)!==!0,disabled:(e==null?void 0:e.subscribed)!==!0})]}),kt=({columnItems:o,onChange:e,onMoveListItem:t,onNavigateToColumn:n,...i})=>{let r=Ot(u=>{let l=u.target,c=l.closest(`.${St}`),{dataset:{name:d}}=c;if(d){let g=l.closest(`.${D}-switch`),p=l.closest(`.${D}-checkBox`);g?e(d,"subscribed",l.checked):p&&e(d,"hidden",l.checked===!1)}},[e]),a=Ot(u=>{let l=u.target;if(l.classList.contains("vuuColumnList-text")){let c=l.closest(".vuuListItem");c!=null&&c.dataset.name&&(n==null||n(c.dataset.name))}},[]);return Ae("div",{...i,className:D,children:[N("div",{className:`${D}-header`,children:N("span",{children:"Column Selection"})}),Ae("div",{className:`${D}-colHeadings`,children:[N("span",{children:"Column subscription"}),N("span",{children:"Visibility"})]}),N(Pn,{ListItem:Hn,allowDragDrop:!0,height:"auto",onChange:r,onClick:a,onMoveListItem:t,selectionStrategy:"none",source:o,itemHeight:33})]})};import{VuuInput as fo}from"@vuu-ui/vuu-ui-controls";import{getCalculatedColumnName as zs,getDefaultAlignment as Us,isCalculatedColumn as Gs}from"@vuu-ui/vuu-utils";import{Button as Be,FormField as De,FormFieldLabel as Ne,ToggleButton as ae,ToggleButtonGroup as Co}from"@salt-ds/core";import Ws from"clsx";import{Dropdown as Ar}from"@vuu-ui/vuu-ui-controls";import{getCalculatedColumnExpression as $r,getCalculatedColumnName as Zr,getCalculatedColumnType as Xr}from"@vuu-ui/vuu-utils";import{FormField as rt,FormFieldLabel as st,Input as zr}from"@salt-ds/core";import{useCallback as Ur,useRef as _t}from"react";import{memo as mr}from"react";import{autocompletion as tr,defaultKeymap as or,EditorState as At,EditorView as $t,ensureSyntaxTree as nr,keymap as Zt,minimalSetup as rr,startCompletion as Xt}from"@vuu-ui/vuu-codemirror";import{createEl as zt}from"@vuu-ui/vuu-utils";import{useCallback as sr,useEffect as ir,useMemo as ar,useRef as je}from"react";import{LanguageSupport as In,LRLanguage as Qn,styleTags as Mn,tags as me}from"@vuu-ui/vuu-codemirror";import{LRParser as Vn}from"@lezer/lr";var ye=Vn.deserialize({version:14,states:"&xOVQPOOO!fQPO'#C^OVQPO'#CcQ!pQPOOO#bQPO'#CkO#gQPO'#CrOOQO'#Cy'#CyO#lQPO,58}OVQPO,59QOVQPO,59QOOQO'#Cn'#CnOVQPO,59XOVQPO,59VOVQPO'#CtOOQO,59^,59^OOQO1G.i1G.iOOQO1G.l1G.lO$bQPO1G.lO%ZQPO1G.sO!pQPO'#CmO%qQQO1G.qO%|QQO'#C{OOQO'#C{'#C{O&wQPO,59`OVQPO,59ZOVQPO,59[OVQPO7+$]OVQPO'#CuO'RQPO1G.zOOQO1G.z1G.zO'ZQQO'#C^O'eQQO1G.sO'{QQO1G.uOOQO1G.v1G.vO(WQPO<<GwO(_QPO,59aOOQO-E6s-E6sOOQO7+$f7+$fOVQPOAN=cO(iQQO1G.lO(yQPOG22}OOQOLD(iLD(iO)QQPO,59QO)QQPO,59QO)QQPO,59X",stateData:")n~OlOS~ORUOSUOTUOUUOWQO`SOnPO~OWgXZQX[QX]QX^QXpQXqQXrQXsQXtQXuQXeQX~OjQXXQX~PnOZWO[WO]XO^XOpYOqYOrYOsYOtYOuYO~OW[O~OW]O~OX_O~P!pO]Yi^YipYiqYirYisYitYiuYieYi~OZWO[WOjYiXYi~P#sOpaiqairaisaitaiuaieai~OZWO[WO]XO^XOjaiXai~P$rOejOvhOwiO~OZmX[mX]mX^mXeoXpmXqmXrmXsmXtmXumXvoXwoX~OXmOekO~P!pOXuOekO~OvQXwQX~PnOZzO[zO]{O^{Ovaiwai~P$rOwiOecivci~OevO~P!pOXiaeia~P!pOZzO[zOvYiwYi~P#sOXyO~P!pORUOSUOTUOUUOWQO`SOnnO~O`UTn~",goto:"$epPPqPPPPqPPqPPPPqP!S!g!r!rPq!w#Y#]PPP#cP$[oUOQWXZ[]hijkvz{|hUOQWXZ]jkvz{|Ve[hi[ZRVgrsxR|cVf[hioTOQWXZ[]hijkvz{|R^TQlgRtlQROQVQS`WzQaXQbZUc[hiQg]Qo|QrjQskQw{RxvQd[QphRqi",nodeNames:"\u26A0 ColumnDefinitionExpression Column Number String True False ParenthesizedExpression OpenBrace CloseBrace ArithmeticExpression Divide Times Plus Minus ConditionalExpression If RelationalExpression RelationalOperator AndCondition OrCondition Comma CallExpression Function ArgList",maxTerm:39,skippedNodes:[0],repeatNodeCount:1,tokenData:".^~RnXY#PYZ#P]^#Ppq#Pqr#brs#mxy$eyz$jz{$o{|$t|}$y}!O%O!O!P%T!P!Q%c!Q![%h!^!_%s!_!`&Q!`!a&V!c!}&d#R#S&d#T#U&u#U#Y&d#Y#Z(Y#Z#]&d#]#^*j#^#c&d#c#d+f#d#h&d#h#i,b#i#o&d~#USl~XY#PYZ#P]^#Ppq#P~#eP!_!`#h~#mOu~~#pWOX#mZ]#m^r#mrs$Ys#O#m#P;'S#m;'S;=`$_<%lO#m~$_OS~~$bP;=`<%l#m~$jOW~~$oOX~~$tO[~~$yO]~~%OOe~~%TO^~~%WP!Q![%Z~%`PR~!Q![%Z~%hOZ~~%mQR~!O!P%Z!Q![%h~%xPr~!_!`%{~&QOt~~&VOp~~&[Pq~!_!`&_~&dOs~P&iSnP!Q![&d!c!}&d#R#S&d#T#o&dR&zUnP!Q![&d!c!}&d#R#S&d#T#b&d#b#c'^#c#o&dR'cUnP!Q![&d!c!}&d#R#S&d#T#W&d#W#X'u#X#o&dR'|SvQnP!Q![&d!c!}&d#R#S&d#T#o&d~(_TnP!Q![&d!c!}&d#R#S&d#T#U(n#U#o&d~(sUnP!Q![&d!c!}&d#R#S&d#T#`&d#`#a)V#a#o&d~)[UnP!Q![&d!c!}&d#R#S&d#T#g&d#g#h)n#h#o&d~)sUnP!Q![&d!c!}&d#R#S&d#T#X&d#X#Y*V#Y#o&d~*^SU~nP!Q![&d!c!}&d#R#S&d#T#o&d~*oUnP!Q![&d!c!}&d#R#S&d#T#Y&d#Y#Z+R#Z#o&d~+YS`~nP!Q![&d!c!}&d#R#S&d#T#o&dR+kUnP!Q![&d!c!}&d#R#S&d#T#f&d#f#g+}#g#o&dR,USwQnP!Q![&d!c!}&d#R#S&d#T#o&d~,gUnP!Q![&d!c!}&d#R#S&d#T#f&d#f#g,y#g#o&d~-OUnP!Q![&d!c!}&d#R#S&d#T#i&d#i#j-b#j#o&d~-gUnP!Q![&d!c!}&d#R#S&d#T#X&d#X#Y-y#Y#o&d~.QST~nP!Q![&d!c!}&d#R#S&d#T#o&d",tokenizers:[0,1],topRules:{ColumnDefinitionExpression:[0,1]},tokenPrec:393});var An=Qn.define({name:"VuuColumnExpression",parser:ye.configure({props:[Mn({Column:me.attributeValue,Function:me.variableName,String:me.string,Or:me.emphasis,Operator:me.operator})]})}),Tt=()=>new In(An);var $e=class{constructor(e){switch(this.value=e,typeof e){case"boolean":this.type="booleanLiteralExpression";break;case"number":this.type="numericLiteralExpression";break;default:this.type="stringLiteralExpression"}}toJSON(){return{type:this.type,value:this.value}}},Ze=class{constructor(e){this.type="colExpression";this.column=e}toJSON(){return{type:this.type,column:this.column}}},ge,X,Xe=class{constructor(e="unknown"){L(this,ge,[{type:"unknown"},{type:"unknown"}]);L(this,X,void 0);this.type="arithmeticExpression";M(this,X,e)}get op(){return f(this,X)}set op(e){M(this,X,e)}get expressions(){return f(this,ge)}toJSON(){return{type:this.type,op:f(this,X),expressions:f(this,ge)}}};ge=new WeakMap,X=new WeakMap;var K,ze=class{constructor(e){L(this,K,[]);this.type="callExpression";this.functionName=e}get expressions(){return f(this,K)}get arguments(){return f(this,K)}toJSON(){return{type:this.type,functionName:this.functionName,arguments:f(this,K).map(e=>{var t;return(t=e.toJSON)==null?void 0:t.call(e)})}}};K=new WeakMap;var fe,j,_=class{constructor(){L(this,fe,[{type:"unknown"},{type:"unknown"}]);L(this,j,"unknown");this.type="relationalExpression"}get op(){return f(this,j)}set op(e){M(this,j,e)}get expressions(){return f(this,fe)}toJSON(){return{type:this.type,op:f(this,j),expressions:f(this,fe)}}};fe=new WeakMap,j=new WeakMap;var Ce,ee,J=class{constructor(e){L(this,Ce,[{type:"unknown"},{type:"unknown"}]);L(this,ee,void 0);this.type="booleanCondition";M(this,ee,e)}get op(){return f(this,ee)}get expressions(){return f(this,Ce)}toJSON(){return{type:this.type,op:f(this,ee),expressions:f(this,Ce).map(e=>{var t;return(t=e.toJSON)==null?void 0:t.call(e)})}}};Ce=new WeakMap,ee=new WeakMap;var R,de=class{constructor(e){L(this,R,void 0);this.type="conditionalExpression";M(this,R,[e?new J(e):new _,{type:"unknown"},{type:"unknown"}])}get expressions(){return f(this,R)}get condition(){return f(this,R)[0]}get truthyExpression(){return f(this,R)[1]}set truthyExpression(e){f(this,R)[1]=e}get falsyExpression(){return f(this,R)[2]}set falsyExpression(e){f(this,R)[2]=e}toJSON(){var e,t,n,i,r;return{type:this.type,condition:(t=(e=this.condition).toJSON)==null?void 0:t.call(e),truthyExpression:this.truthyExpression,falsyExpression:(r=(i=(n=this.falsyExpression)==null?void 0:n.toJSON)==null?void 0:i.call(n))!=null?r:this.falsyExpression}}};R=new WeakMap;var Z=o=>o.type==="unknown",Ee=o=>o.type==="arithmeticExpression",$n=o=>o.type==="callExpression",q=o=>o.type==="conditionalExpression",Zn=o=>o.type==="relationalExpression"||o.type==="booleanCondition";var Xn=o=>o.type==="booleanCondition",Ge=o=>(o==null?void 0:o.type)==="relationalExpression";var T=o=>{if(Z(o))return o;if(Ge(o)){let[e,t]=o.expressions;if(S(e))return T(e);if(o.op==="unknown")return o;if(S(t))return T(t)}else if(Zn(o)){let{expressions:e=[]}=o;for(let t of e)if(S(t))return T(t)}else if(q(o)){let{condition:e,truthyExpression:t,falsyExpression:n}=o;if(S(e))return T(e);if(S(t))return T(t);if(S(n))return T(n)}else if(Ee(o)){let{expressions:e=[]}=o;for(let t of e)if(S(t))return T(t)}},we=(o,e,t)=>{let{expressions:n=[]}=o;if(n.includes(e)){let i=n.indexOf(e);return n.splice(i,1,t),!0}else for(let i of n)if(we(i,e,t))return!0;return!1},S=o=>Z(o)?!0:q(o)?S(o.condition)||S(o.truthyExpression)||S(o.falsyExpression):Ge(o)||Xn(o)?o.op===void 0||o.expressions.some(e=>S(e)):!1,Ft=(o,e)=>{let t=T(o);t?t.expressions?t.expressions.push(e):console.warn("don't know how to treat targetExpression"):console.error("no target expression found")},h,z,Ue=class{constructor(){L(this,h,void 0);L(this,z,[])}setCondition(e){if(f(this,h)===void 0)this.addExpression(new de(e));else if(q(f(this,h))){if(S(f(this,h).condition)){let t=e?new J(e):new _;this.addExpression(t)}else if(Z(f(this,h).truthyExpression))f(this,h).truthyExpression=new de(e);else if(S(f(this,h).truthyExpression)){let t=e?new J(e):new _;this.addExpression(t)}else if(Z(f(this,h).falsyExpression))f(this,h).falsyExpression=new de(e);else if(S(f(this,h).falsyExpression)){let t=e?new J(e):new _;this.addExpression(t)}}else console.error("setCondition called unexpectedly")}addExpression(e){if(f(this,z).length>0){let t=f(this,z).at(-1);t==null||t.arguments.push(e)}else if(f(this,h)===void 0)M(this,h,e);else if(Ee(f(this,h))){let t=T(f(this,h));t&&Z(t)&&we(f(this,h),t,e)}else if(q(f(this,h))&&S(f(this,h))){let t=T(f(this,h));t&&Z(t)?we(f(this,h),t,e):t&&Ft(t,e)}}setFunction(e){let t=new ze(e);this.addExpression(t),f(this,z).push(t)}setColumn(e){this.addExpression(new Ze(e))}setArithmeticOp(e){let t=e,n=f(this,h);Ee(n)&&(n.op=t)}setRelationalOperator(e){let t=e;if(f(this,h)&&q(f(this,h))){let n=T(f(this,h));Ge(n)?n.op=t:console.error(`no target expression found (op = ${e})`)}}setValue(e){let t=new $e(e);if(f(this,h)===void 0)M(this,h,t);else if(Ee(f(this,h)))this.addExpression(t);else if($n(f(this,h)))f(this,h).arguments.push(t);else if(q(f(this,h)))if(S(f(this,h))){let n=T(f(this,h));n&&Z(n)?we(f(this,h),n,t):n&&Ft(n,t)}else console.log("what do we do with value, in a complete expression")}closeBrace(){f(this,z).pop()}get expression(){return f(this,h)}toJSON(){var e;return(e=f(this,h))==null?void 0:e.toJSON()}};h=new WeakMap,z=new WeakMap;var Pt=(o,e)=>{let t=new Ue,n=o.cursor();do{let{name:i,from:r,to:a}=n;switch(i){case"AndCondition":t.setCondition("and");break;case"OrCondition":t.setCondition("or");break;case"RelationalExpression":t.setCondition();break;case"ArithmeticExpression":t.addExpression(new Xe);break;case"Column":{let u=e.substring(r,a);t.setColumn(u)}break;case"Function":{let u=e.substring(r,a);t.setFunction(u)}break;case"Times":case"Divide":case"Plus":case"Minus":{let u=e.substring(r,a);t.setArithmeticOp(u)}break;case"RelationalOperator":{let u=e.substring(r,a);t.setRelationalOperator(u)}break;case"False":case"True":{let u=e.substring(r,a);t.setValue(u==="true")}break;case"String":t.setValue(e.substring(r+1,a-1));break;case"Number":t.setValue(parseFloat(e.substring(r,a)));break;case"CloseBrace":t.closeBrace();break;default:}}while(n.next());return t.toJSON()};var zn=ye.configure({strict:!0}),Lt=["Number","String"],We=[...Lt,"AndCondition","ArithmeticExpression","BooleanOperator","RelationalOperatorOperator","CallExpression","CloseBrace","Column","Comma","ConditionalExpression","Divide","Equal","If","Minus","OpenBrace","OrCondition","ParenthesizedExpression","Plus","RelationalExpression","RelationalOperator","Times"],Bt=o=>{try{return zn.parse(o),!0}catch{return!1}},Ye=o=>{let{lastChild:e}=o;for(;e&&!We.includes(e.name);)e=e.prevSibling,console.log(e==null?void 0:e.name);return e},Dt=o=>{if((o==null?void 0:o.name)==="RelationalExpression"){let{firstChild:e}=o,t=Ye(o);if((e==null?void 0:e.name)==="Column"&&typeof(t==null?void 0:t.name)=="string"&&Lt.includes(t.name))return!0}return!1};import{HighlightStyle as Un,syntaxHighlighting as Gn,tags as qe}from"@vuu-ui/vuu-codemirror";var Wn=Un.define([{tag:qe.attributeValue,color:"var(--vuuFilterEditor-variableColor);font-weight: bold"},{tag:qe.variableName,color:"var(--vuuFilterEditor-variableColor)"},{tag:qe.comment,color:"green",fontStyle:"italic"}]),Nt=Gn(Wn);import{EditorView as Yn}from"@vuu-ui/vuu-codemirror";var Rt=Yn.theme({"&":{border:"solid 1px var(--salt-container-primary-borderColor)",color:"var(--vuuFilterEditor-color)",backgroundColor:"var(--vuuFilterEditor-background)"},".cm-content":{caretColor:"var(--vuuFilterEditor-cursorColor)"},"&.cm-focused .cm-cursor":{borderLeftColor:"var(--vuuFilterEditor-cursorColor)"},"&.cm-focused .cm-selectionBackground, ::selection":{backgroundColor:"var(--vuuFilterEditor-selectionBackground)"},".cm-selectionBackground, ::selection":{backgroundColor:"var(--vuuFilterEditor-selectionBackground)"},".cm-scroller":{fontFamily:"var(--vuuFilterEditor-fontFamily)"},".cm-completionLabel":{color:"var(--vuu-color-gray-50)"},".cm-completionMatchedText":{color:"var(--vuu-color-gray-80)",fontWeight:700,textDecoration:"none"},".cm-tooltip":{background:"var(--vuuFilterEditor-tooltipBackground)",border:"var(--vuuFilterEditor-tooltipBorder)",borderRadius:"4px",boxShadow:"var(--vuuFilterEditor-tooltipElevation)","&.cm-tooltip-autocomplete > ul":{fontFamily:"var(--vuuFilterEditor-fontFamily)",fontSize:"var(--vuuFilterEditor-fontSize)",maxHeight:"240px"},"&.cm-tooltip-autocomplete > ul > li":{height:"var(--vuuFilterEditor-suggestion-height)",padding:"0 3px",lineHeight:"var(--vuuFilterEditor-suggestion-height)"},"&.cm-tooltip-autocomplete li[aria-selected]":{background:"var(--vuuFilterEditor-suggestion-selectedBackground)",color:"var(--vuuFilterEditor-suggestion-selectedColor)"},"&.cm-tooltip-autocomplete li .cm-completionDetail":{color:"var(--vuuFilterEditor-suggestion-detailColor)"}}},{dark:!1});import{booleanJoinSuggestions as qn,getNamedParentNode as Ht,getPreviousNode as _n,getValue as H,syntaxTree as Jn}from"@vuu-ui/vuu-codemirror";import{useCallback as Vt}from"react";var Kn=(o,e)=>e?o.map(t=>{var n;return{...t,apply:typeof t.apply=="function"?t.apply:`${e}${(n=t.apply)!=null?n:t.label}`}}):o,jn=o=>o===void 0?!1:["Times","Divide","Plus","Minus"].includes(o.name),ve=o=>({apply:()=>{o==null||o()},label:"Done",boost:10}),te=(o,e)=>{var i;let{lastChild:t}=o,{pos:n}=e;for(;t;)if(t.from<n&&We.includes(t.name)){if(t.name==="ParenthesizedExpression"){let a=(i=t.firstChild)==null?void 0:i.nextSibling;a&&(t=a)}return t}else t=t.prevSibling},It=(o,e)=>{var t;if(o.name==="ArgList"){let n=o.prevSibling;if(n)return H(n,e)}else if(o.name==="OpenBrace"){let n=(t=o.parent)==null?void 0:t.prevSibling;if((n==null?void 0:n.name)==="Function")return H(n,e)}},Qt=(o,e)=>{if(o.name==="RelationalExpression"){let t=Ye(o);if((t==null?void 0:t.name)==="RelationalOperator")return H(t,e)}else{let t=o.prevSibling;if((t==null?void 0:t.name)==="RelationalOperator")return H(t,e)}},Ke=(o,e)=>{var t;if(o.name==="RelationalExpression"){if(((t=o.firstChild)==null?void 0:t.name)==="Column")return H(o.firstChild,e)}else{let n=o.prevSibling;if((n==null?void 0:n.name)==="Column")return H(n,e);if((n==null?void 0:n.name)==="RelationalOperator")return Ke(n,e)}},_e=async(o,e,t,n={})=>{let i=await e.getSuggestions(t,n),{startsWith:r=""}=n;return{from:o.pos-r.length,options:i}},Je=(o,e,t,n,i)=>{let r=te(o,e);switch(r==null?void 0:r.name){case"If":return _e(e,t,"expression",{prefix:"( "});case"OpenBrace":return _e(e,t,"expression");case"Condition":return _e(e,t,"expression",{prefix:", "});case"CloseBrace":if(n){let a=[ve(i)];return{from:e.pos,options:a}}}},er=(o,e)=>{let t=[ve(e)];return{from:o.pos,options:t}},Mt=(o,e)=>{let t=Vt(async(n,i,r={})=>{let a=await o.getSuggestions(i,r),{startsWith:u=""}=r;return{from:n.pos-u.length,options:a}},[o]);return Vt(async n=>{var g,p;let{state:i,pos:r}=n,a=(g=n.matchBefore(/\w*/))!=null?g:{from:0,to:0,text:void 0},l=Jn(i).resolveInner(r,-1),c=i.doc.toString(),d=Bt(c);switch(l.name){case"If":return t(n,"expression",{prefix:"( "});case"Condition":{let s=te(l,n);if((s==null?void 0:s.name)==="Column"){let m=_n(s);if((m==null?void 0:m.name)!=="RelationalOperator")return t(n,"condition-operator",{columnName:H(s,i)})}else if((s==null?void 0:s.name)==="RelationalOperator")return t(n,"expression")}break;case"ConditionalExpression":return Je(l,n,o);case"RelationalExpression":{if(Dt(l))return{from:n.pos,options:qn.concat({label:", <truthy expression>, <falsy expression>",apply:", "})};{let s=Qt(l,i),m=Ke(l,i);if(s)return t(n,"expression");{let v=await o.getSuggestions("condition-operator",{columnName:m});return{from:n.pos,options:v}}}}break;case"RelationalOperator":return t(n,"expression");case"String":{let s=Qt(l,i),m=Ke(l,i),{from:v,to:C}=l;if(C-v===2&&n.pos===v+1){if(m&&s)return t(n,"columnValue",{columnName:m,operator:s,startsWith:a.text})}else if(C-v>2&&n.pos===C)return t(n,"expression",{prefix:", "})}break;case"ArithmeticExpression":{let s=te(l,n);if((s==null?void 0:s.name)==="Column")return t(n,"expression");if(jn(s)){let m=s.name;return t(n,"column",{operator:m})}}break;case"OpenBrace":{let s=It(l,i);return t(n,"expression",{functionName:s})}break;case"ArgList":{let s=It(l,i),m=te(l,n),v=(m==null?void 0:m.name)==="OpenBrace"||(m==null?void 0:m.name)==="Comma"?void 0:",",C=await o.getSuggestions("expression",{functionName:s});return C=v?Kn(C,", "):C,(m==null?void 0:m.name)!=="OpenBrace"&&(m==null?void 0:m.name)!=="Comma"&&(C=[{apply:") ",boost:10,label:"Done - no more arguments"}].concat(C)),{from:n.pos,options:C}}case"Equal":if(c.trim()==="=")return t(n,"expression");break;case"ParenthesizedExpression":case"ColumnDefinitionExpression":if(n.pos===0)return t(n,"expression");{let s=te(l,n);if((s==null?void 0:s.name)==="Column"){if(d){let m=[ve(e.current)],v=H(s,i),C=await o.getSuggestions("operator",{columnName:v});return{from:n.pos,options:m.concat(C)}}}else if((s==null?void 0:s.name)==="CallExpression"){if(d)return{from:n.pos,options:[ve(e.current)]}}else if((s==null?void 0:s.name)==="ArithmeticExpression"){if(d){let m=[ve(e.current)],v=te(s,n);if((v==null?void 0:v.name)==="Column"){let C=H(v,i),x=await o.getSuggestions("operator",{columnName:C});m=m.concat(x)}return{from:n.pos,options:m}}}else if((s==null?void 0:s.name)==="ConditionalExpression")return Je(s,n,o,d,e.current);break}case"Column":if(await o.isPartialMatch("expression",void 0,a.text))return t(n,"expression",{startsWith:a.text});break;case"Comma":{let s=Ht(l);if((s==null?void 0:s.name)==="ConditionalExpression")return t(n,"expression")}break;case"CloseBrace":{let s=Ht(l);if((s==null?void 0:s.name)==="ConditionalExpression")return Je(s,n,o,d,e.current);if((s==null?void 0:s.name)==="ArgList"&&d)return er(n,e.current)}break;default:((p=l==null?void 0:l.prevSibling)==null?void 0:p.name)==="FilterClause"&&console.log("looks like we ight be a or|and operator")}},[t,e,o])};var Oe=o=>{if(o.current==null)throw Error("EditorView not defined");return o.current},lr=()=>"vuuSuggestion",ur=()=>console.log("noooop"),pr=o=>"expressionType"in o,cr=o=>{if(pr(o)){let e=zt("div","expression-type-container"),t=zt("span","expression-type",o.expressionType);return e.appendChild(t),e}else return null},Ut=({onChange:o,onSubmitExpression:e,source:t,suggestionProvider:n})=>{let i=je(null),r=je(ur),a=je(),u=Mt(n,r),[l,c,d]=ar(()=>{let p=()=>{let x=Oe(a),b=x.state.doc.toString(),w=nr(x.state,x.state.doc.length,5e3);if(w){let Q=Pt(w,b);return[b,Q]}else return["",void 0]},s=()=>{Oe(a).setState(C())},m=()=>{let[x,b]=p();e==null||e(x,b)},v=x=>Zt.of([{key:x,run(){return Xt(Oe(a)),!0}}]),C=()=>At.create({doc:t,extensions:[rr,tr({addToOptions:[{render:cr,position:70}],override:[u],optionClass:lr}),Tt(),Zt.of(or),v("ArrowDown"),$t.updateListener.of(x=>{let b=Oe(a);if(x.docChanged){Xt(b);let w=b.state.doc.toString();o==null||o(w)}}),At.transactionFilter.of(x=>x.newDoc.lines>1?[]:x),Rt,Nt]});return r.current=()=>{m()},[C,s,m]},[u,o,e,t]);ir(()=>{if(!i.current)throw Error("editor not in dom");return a.current=new $t({state:l(),parent:i.current}),()=>{var p;(p=a.current)==null||p.destroy()}},[u,l]);let g=sr(()=>{d()},[d]);return{editorRef:i,clearInput:c,onBlur:g}};import{jsx as gr}from"react/jsx-runtime";var dr="vuuColumnExpressionInput",et=mr(({onChange:o,onSubmitExpression:e,source:t="",suggestionProvider:n})=>{let{editorRef:i,onBlur:r}=Ut({onChange:o,onSubmitExpression:e,source:t,suggestionProvider:n});return gr("div",{className:`${dr}`,onBlur:r,ref:i})},(o,e)=>o.source===e.source);et.displayName="ColumnExpressionInput";import{AnnotationType as fr,getRelationalOperators as Cr,numericOperators as vr,stringOperators as xr,toSuggestions as hr}from"@vuu-ui/vuu-codemirror";import{getTypeaheadParams as br,useTypeaheadSuggestions as yr}from"@vuu-ui/vuu-data-react";import{isNumericColumn as ot,isTextColumn as Er}from"@vuu-ui/vuu-utils";import{useCallback as tt,useRef as wr}from"react";var oe=[{accepts:["boolean"],description:"Applies boolean and operator across supplied parameters to returns a single boolean result",example:{expression:'and(ccy="EUR",quantity=0)',result:"true | false"},name:"and",params:{description:"( boolean, [ boolean* ] )"},type:"boolean"},{accepts:"string",description:"Returns multiple string values as a single joined string. Arguments may be string literal values, string columns or other string expressions. Non string arguments may also be included, these will be converted to strings.",example:{expression:'concatenate("example", "-test")',result:'"example-test"'},name:"concatenate",params:{description:"( string, string, [ string* ] )"},type:"string"},{accepts:["string","string"],description:"Tests a string value to determine whether it contains a given substring. Accepts two arguments: source text and target substring. Returns true if <source text> contains one or more occurrences of <target subscring>",example:{expression:'contains("Royal Bank of Scotland", "bank")',result:"true"},name:"contains",params:{description:"( string )"},type:"boolean"},{accepts:["string","number"],description:"Returns the leftmost <number> characters from <string>. First argument may be a string literal, string column or other string expression.",example:{expression:'left("USD Benchmark Report", 3)',result:'"USD"'},name:"left",params:{count:2,description:"( string, number )"},type:"string"},{accepts:"string",description:"Returns the number of characters in <string>. Argument may be a string literal, string column or other string expression.",example:{expression:'len("example")',result:"7"},name:"len",params:{description:"(string)"},type:"number"},{accepts:"string",description:"Convert a string value to lowercase. Argument may be a string column or other string expression.",example:{expression:'lower("examPLE")',result:'"example"'},name:"lower",params:{description:"( string )"},type:"string"},{accepts:["boolean"],description:"Applies boolean or operator across supplied parameters to returns a single boolean result",example:{expression:'or(status="cancelled",quantity=0)',result:"true | false"},name:"or",params:{description:"( boolean, [ boolean* ] )"},type:"boolean"},{accepts:"string",description:"Convert a string value to uppercase. Argument may be a string column or other string expression.",example:{expression:'upper("example")',result:'"EXAMPLE"'},name:"upper",params:{description:"( string )"},type:"string"},{accepts:["string","number"],description:"Returns the rightmost <number> characters from <string>. First argument may be a string literal, string column or other string expression.",example:{expression:"blah",result:"blah"},name:"right",params:{description:"( string )"},type:"string"},{accepts:["string","string","string"],description:"Replace characters within a string. Accepts three arguments: source text, text to replace and replacement text. Returns a copy of <source text> with any occurrences of <text to replace> replaced by <replacement text>",example:{expression:"blah",result:"blah"},name:"replace",params:{description:"( string )"},type:"string"},{accepts:"number",description:"Converts a number to a string.",example:{expression:"blah",result:"blah"},name:"text",params:{description:"( string )"},type:"string"},{accepts:"string",description:"Tests a string value to determine whether it starts with a given substring. Accepts two arguments: source text and target substring. Returns true if <source text> starts with <target subscring>.",example:{expression:"blah",result:"blah"},name:"starts",params:{description:"( string )"},type:"boolean"},{accepts:"string",description:"Tests a string value to determine whether it ends with a given substring. Accepts two arguments: source text and target substring. Returns true if <source text> ends with <target subscring>.",example:{expression:"blah",result:"blah"},name:"ends",params:{description:"( string )"},type:"boolean"},{accepts:"number",description:"blah",example:{expression:"blah",result:"blah"},name:"min",params:{description:"( string )"},type:"number"},{accepts:"number",description:"blah",example:{expression:"blah",result:"blah"},name:"max",params:{description:"( string )"},type:"number"},{accepts:"number",description:"blah",example:{expression:"blah",result:"blah"},name:"sum",params:{description:"( string )"},type:"number"},{accepts:"number",description:"blah",example:{expression:"blah",result:"blah"},name:"round",params:{description:"( string )"},type:"number"},{accepts:"any",description:"blah",example:{expression:"blah",result:"blah"},name:"or",params:{description:"( string )"},type:"boolean"},{accepts:"any",description:"blah",example:{expression:"blah",result:"blah"},name:"and",params:{description:"( string )"},type:"boolean"},{accepts:"any",description:"Return one of two possible result values, depending on the evaluation of a filter expression. If <filterExpression> resolves to true, result is <expression1>, otherwise <expression2>. ",example:{expression:"blah",result:"blah"},name:"if",params:{description:"( filterExpression, expression1, expression 2)"},type:"variable"}];import{createEl as V}from"@vuu-ui/vuu-utils";var Gt=({name:o,description:e,example:t,params:n,type:i})=>{let r=V("div","vuuFunctionDoc"),a=V("div","function-heading"),u=V("span","function-name",o),l=V("span","param-list",n.description),c=V("span","function-type",i);a.appendChild(u),a.appendChild(l),a.appendChild(c);let d=V("p",void 0,e);if(r.appendChild(a),r.appendChild(d),t){let g=V("div","example-container"),p=V("div","example-expression",t.expression),s=V("div","example-result",t.result);g.appendChild(p),r.appendChild(g),r.appendChild(s)}return r};var Or=[],U=o=>o.map(e=>{var t;return{...e,apply:((t=e.apply)!=null?t:e.label)+" "}}),Sr=(o,{functionName:e,operator:t})=>{if(t)return o.filter(ot);if(e){let n=oe.find(i=>i.name===e);if(n)switch(n.accepts){case"string":return o.filter(Er);case"number":return o.filter(ot);default:return o}}return o},Wt=(o,e)=>Sr(o,e).map(n=>{var r;let i=(r=n.label)!=null?r:n.name;return{apply:e.prefix?`${e.prefix}${n.name}`:n.name,label:i,boost:5,type:"column",expressionType:n.serverDataType}}),kr=[{apply:"* ",boost:2,label:"*",type:"operator"},{apply:"/ ",boost:2,label:"/",type:"operator"},{apply:"+ ",boost:2,label:"+",type:"operator"},{apply:"- ",boost:2,label:"-",type:"operator"}],Tr=o=>o===void 0||ot(o)?kr:Or,Fr=o=>{switch(o.serverDataType){case"string":case"char":return U(xr);case"int":case"long":case"double":return U(vr)}},nt=o=>({apply:`${o.name}( `,boost:2,expressionType:o.type,info:()=>Gt(o),label:o.name,type:"function"}),Pr=o=>{if(o){if(typeof o.accepts=="string")return o.accepts;if(Array.isArray(o.accepts))return o.accepts.every(e=>e==="string")?"string":"any"}return"any"},Lr=oe.map(nt),Br=({functionName:o})=>{if(o){let e=oe.find(n=>n.name===o),t=Pr(e);if(e)switch(t){case"string":return oe.filter(n=>n.type==="string"||n.type==="variable").map(nt);case"number":return oe.filter(n=>n.type==="number"||n.type==="variable").map(nt);default:}}return Lr},Dr={},Yt=({columns:o,table:e})=>{let t=tt(u=>u?o.find(l=>l.name===u):void 0,[o]),n=wr(),i=yr(),r=tt(async(u,l=Dr)=>{let{columnName:c,functionName:d,operator:g,prefix:p}=l;switch(u){case"expression":{let s=await U(Wt(o,{functionName:d,prefix:p})).concat(Br(l));return n.current=s}case"column":{let s=await Wt(o,l);return n.current=U(s)}case"operator":{let s=await Tr(t(c));return n.current=U(s)}case"relational-operator":{let s=await Cr(t(c));return n.current=U(s)}case"condition-operator":{let s=t(c);if(s){let m=await Fr(s);if(m)return n.current=U(m)}}break;case"columnValue":if(c&&g){let s=br(e,c),m=await i(s);return n.current=hr(m,{suffix:""}),n.current.forEach(v=>{v.apply=(C,x,b)=>{let w=new fr,Q=b+x.label.length+1;C.dispatch({changes:{from:b,insert:x.label},selection:{anchor:Q,head:Q},annotations:w.of(x)})}}),n.current}break}return[]},[o,t,i,e]),a=tt(async(u,l,c)=>{let{current:d}=n,g=!1,p=d||await r(u,{columnName:l});if(c&&p)for(let s of p){if(s.label===c)return!1;s.label.startsWith(c)&&(g=!0)}return g},[r]);return{getSuggestions:r,isPartialMatch:a}};import{getCalculatedColumnDetails as Nr,setCalculatedColumnExpression as Rr,setCalculatedColumnName as Hr,setCalculatedColumnType as Vr}from"@vuu-ui/vuu-utils";import{useCallback as Se,useRef as Ir,useState as Qr}from"react";var Mr=o=>{let[e,t,n]=Nr(o);return n===""?{...o,name:`${e}:string:${t}`}:o},qt=({column:o,onChangeName:e})=>{let[t,n]=Qr(Mr(o)),i=Ir(o),r=Se(c=>{i.current=c,n(c)},[]),a=Se(c=>{let{value:d}=c.target,g=Hr(t,d);r(g),e==null||e(g.name)},[t,e,r]),u=Se(c=>{let d=c.trim(),{current:g}=i,p=Rr(g,d);r(p),e==null||e(p.name)},[e,r]),l=Se((c,d)=>{if(typeof d=="string"){let g=Vr(t,d);r(g),e==null||e(g.name)}},[t,e,r]);return{column:t,onChangeExpression:u,onChangeName:a,onChangeType:l}};import{jsx as A,jsxs as ke}from"react/jsx-runtime";var Jt="vuuColumnExpressionPanel",Kt=({column:o,onChangeName:e,tableConfig:t,vuuTable:n})=>{let i=_t(null),{column:r,onChangeExpression:a,onChangeName:u,onChangeType:l}=qt({column:o,onChangeName:e}),c=_t($r(r)),d=Yt({columns:t.columns,table:n}),g=Ur(()=>{var p,s;i.current&&((s=(p=i.current)==null?void 0:p.querySelector("button"))==null||s.focus())},[]);return ke("div",{className:Jt,children:[A("div",{className:"vuuColumnSettingsPanel-header",children:A("span",{children:"Calculation"})}),ke(rt,{"data-field":"column-name",children:[A(st,{children:"Column Name"}),A(zr,{className:"vuuInput",onChange:u,value:Zr(r)})]}),ke(rt,{"data-field":"column-expression",children:[A(st,{children:"Expression"}),A(et,{onChange:a,onSubmitExpression:g,source:c.current,suggestionProvider:d})]}),ke(rt,{"data-field":"type",children:[A(st,{children:"Column type"}),A(Ar,{className:`${Jt}-type`,onSelectionChange:l,ref:i,selected:Xr(r)||null,source:["double","long","string"],width:"100%"})]})]})};import{Dropdown as vs}from"@vuu-ui/vuu-ui-controls";import{getCellRendererOptions as xs,getConfigurationEditor as hs,isColumnTypeRenderer as io,isTypeDescriptor as ao}from"@vuu-ui/vuu-utils";import{FormField as bs,FormFieldLabel as ys}from"@salt-ds/core";import lo from"clsx";import{useCallback as Es,useMemo as pt}from"react";import{FormField as it,FormFieldLabel as at,Input as Gr,Switch as jt}from"@salt-ds/core";import{getTypeFormattingFromColumn as Wr}from"@vuu-ui/vuu-utils";import{useCallback as Te,useState as Yr}from"react";import{jsx as ne,jsxs as Fe}from"react/jsx-runtime";var qr="vuuFormattingSettings",Pe=({column:o,onChangeFormatting:e})=>{var l,c,d;let[t,n]=Yr(Wr(o)),i=Te(g=>{(g.key==="Enter"||g.key==="Tab")&&e(t)},[t,e]),r=Te(g=>{let{value:p}=g.target,s=p===""||isNaN(parseInt(p))?void 0:parseInt(p),m={...t,decimals:s};n(m)},[t]),a=Te(g=>{let{checked:p}=g.target,s={...t,alignOnDecimals:p};n(s),e(s)},[t,e]),u=Te(g=>{let{checked:p}=g.target,s={...t,zeroPad:p};n(s),e(s)},[t,e]);return Fe("div",{className:qr,children:[Fe(it,{"data-field":"decimals",children:[ne(at,{children:"Number of decimals"}),ne(Gr,{className:"vuuInput",onChange:r,onKeyDown:i,value:(l=t.decimals)!=null?l:""})]}),Fe(it,{labelPlacement:"left",children:[ne(at,{children:"Align on decimals"}),ne(jt,{checked:(c=t.alignOnDecimals)!=null?c:!1,onChange:a,value:"align-decimals"})]}),Fe(it,{labelPlacement:"left",children:[ne(at,{children:"Zero pad decimals"}),ne(jt,{checked:(d=t.zeroPad)!=null?d:!1,onChange:u,value:"zero-pad"})]})]})};import{useCallback as ls}from"react";import{FormField as us,FormFieldLabel as ps,ToggleButton as cs,ToggleButtonGroup as ms}from"@salt-ds/core";import{isDateTimeColumn as ds,isTypeDescriptor as gs}from"@vuu-ui/vuu-utils";import{useCallback as lt,useMemo as _r,useState as Jr}from"react";import{Dropdown as Kr}from"@vuu-ui/vuu-ui-controls";import{defaultPatternsByType as eo,fallbackDateTimePattern as jr,getTypeFormattingFromColumn as es,supportedDateTimePatterns as ts}from"@vuu-ui/vuu-utils";import{FormField as to,FormFieldLabel as oo,ToggleButton as os,ToggleButtonGroup as ns}from"@salt-ds/core";import{Fragment as as,jsx as xe,jsxs as ut}from"react/jsx-runtime";var no=({column:o,onChangeFormatting:e})=>{var d,g;let t=es(o),{pattern:n=jr}=t,i=_r(()=>is(n),[n]),[r,a]=Jr({time:(d=n.time)!=null?d:eo.time,date:(g=n.date)!=null?g:eo.date}),u=lt(p=>e({...t,pattern:p}),[e,t]),l=lt(p=>(s,m)=>{let v={...n!=null?n:{},[p]:m};a(C=>{var x,b;return{time:(x=v.time)!=null?x:C.time,date:(b=v.date)!=null?b:C.date}}),u(v)},[u,n]),c=lt(p=>{var m,v,C,x;let s=p.currentTarget.value;switch(s){case"time":return u({[s]:(m=n[s])!=null?m:r[s]});case"date":return u({[s]:(v=n[s])!=null?v:r[s]});case"both":return u({time:(C=n.time)!=null?C:r.time,date:(x=n.date)!=null?x:r.date})}},[u,n,r]);return ut(as,{children:[ut(to,{labelPlacement:"left",children:[xe(oo,{children:"Display"}),xe(ns,{className:"vuuToggleButtonGroup",onChange:c,value:i,children:ss.map(p=>xe(os,{value:p,children:p.toUpperCase()},p))})]}),["date","time"].filter(p=>!!n[p]).map(p=>ut(to,{labelPlacement:"left",children:[xe(oo,{children:`${rs[p]} pattern`}),xe(Kr,{onSelectionChange:l(p),selected:n[p],source:ts[p],width:"100%"})]},p))]})},rs={date:"Date",time:"Time"},ss=["date","time","both"];function is(o){return o.time?o.date?"both":"time":"date"}import{jsx as he,jsxs as ro}from"react/jsx-runtime";var fs="vuuLongColumnFormattingSettings",so=o=>{let{column:e,onChangeType:t}=o,n=gs(e.type)?e.type.name:e.type,i=ls(r=>{let a=r.currentTarget.value;t(a)},[t]);return ro("div",{className:fs,children:[ro(us,{children:[he(ps,{children:"Type inferred as"}),he(ms,{className:"vuuToggleButtonGroup",onChange:i,value:n!=null?n:"number",children:Cs.map(r=>he(cs,{value:r,children:r.toUpperCase()},r))})]}),ds(e)?he(no,{...o,column:e}):he(Pe,{...o})]})},Cs=["number","date/time"];import{jsx as re,jsxs as mt}from"react/jsx-runtime";var ct="vuuColumnFormattingPanel",ws=o=>{var e;return(e=o.label)!=null?e:o.name},uo=({availableRenderers:o,className:e,column:t,onChangeFormatting:n,onChangeType:i,onChangeRendering:r,...a})=>{let u=pt(()=>Os({column:t,onChangeFormatting:n,onChangeType:i}),[t,n,i]),l=pt(()=>{let{type:p}=t;if(ao(p)&&io(p.renderer)){let s=xs(p.renderer.name);return hs(s==null?void 0:s.configEditor)}},[t]),c=pt(()=>{let{type:p}=t,[s]=o,m=ao(p)&&io(p.renderer)?p.renderer.name:void 0,v=o.find(C=>C.name===m);return v!=null?v:s},[o,t]),d=Es((p,s)=>{let m={name:s.name};r==null||r(m)},[r]),{serverDataType:g="string"}=t;return mt("div",{...a,className:"vuuColumnSettingsPanel-header",children:[re("div",{children:"Formatting"}),mt(bs,{children:[re(ys,{children:`Renderer (data type ${t.serverDataType})`}),re(vs,{className:lo(`${ct}-renderer`),itemToString:ws,onSelectionChange:d,selected:c,source:o,width:"100%"})]}),mt("div",{className:lo(ct,e,`${ct}-${g}`),children:[u,l?re(l,{column:t,onChangeRendering:r}):null]})]})};function Os(o){let{column:e}=o;switch(e.serverDataType){case"double":case"int":return re(Pe,{...o});case"long":return re(so,{...o});default:return null}}import Ss from"clsx";import{getCalculatedColumnDetails as ks,isCalculatedColumn as Ts}from"@vuu-ui/vuu-utils";import{jsx as G,jsxs as Fs}from"react/jsx-runtime";var se="vuuColumnNameLabel",po=({column:o,onClick:e})=>{if(Ts(o.name)){let[t,n,i]=ks(o),r=t||"name",a="=expression",u=r==="name"?`${se}-placeholder`:void 0,l=i===""?`${se}-placeholder`:void 0;return Fs("div",{className:Ss(se,`${se}-calculated`),onClick:e,children:[G("span",{className:u,children:r}),G("span",{children:":"}),G("span",{children:n||"string"}),G("span",{children:":"}),G("span",{className:l,children:a}),G("span",{className:`${se}-edit`,"data-icon":"edit"})]})}else return G("div",{className:se,children:o.name})};import{getRegisteredCellRenderers as Le,isValidColumnAlignment as Ps,isValidPinLocation as Ls,setCalculatedColumnName as Bs,updateColumnRenderProps as Ds,updateColumnFormatting as Ns,updateColumnType as Rs}from"@vuu-ui/vuu-utils";import{useCallback as F,useEffect as Hs,useMemo as Vs,useRef as Is,useState as co}from"react";var Qs=[{description:"Default formatter for columns with data type integer",label:"Default Renderer (int, long)",name:"default-int"},...Le("int")],Ms=[{description:"Default formatter for columns with data type double",label:"Default Renderer (double)",name:"default-double"},...Le("double")],mo=[{description:"Default formatter for columns with data type string",label:"Default Renderer (string)",name:"default-string"},...Le("string")],As=[...Le("boolean")],$s=o=>{switch(o.serverDataType){case"char":case"string":return mo;case"int":case"long":return Qs;case"double":return Ms;case"boolean":return As;default:return mo}},Zs=o=>{let e=o.closest(".saltFormField");if(e&&e.dataset.field){let{dataset:{field:t}}=e;return t}else throw Error("named form field not found")},Xs=(o,e)=>{if(e.name==="::")return e;{let t=o.find(n=>n.name===e.name);if(t)return t;throw Error(`columns does not contain column ${name}`)}},ie=(o,e)=>({...o,columns:o.columns.map(t=>t.name===e.name?e:t)}),go=({column:o,onCancelCreateColumn:e,onConfigChange:t,onCreateCalculatedColumn:n,tableConfig:i})=>{let[r,a]=co(Xs(i.columns,o)),u=Is(r),[l,c]=co(r.name==="::"),d=F(()=>{u.current=r,c(!0)},[r]);Hs(()=>{a(o),c(o.name==="::")},[o]);let g=Vs(()=>$s(r),[r]),p=F(()=>{t(ie(i,r))},[r,t,i]),s=F(O=>{let E=O.target,Ie=Zs(E),{value:B}=E;switch(Ie){case"column-label":a(P=>({...P,label:B}));break;case"column-name":a(P=>Bs(P,B));break;case"column-width":a(P=>({...P,width:parseInt(B)}));break;case"column-alignment":if(Ps(B)){let P={...r,align:B||void 0};a(P),t(ie(i,P))}break;case"column-pin":if(Ls(B)){let P={...r,pin:B||void 0};a(P),t(ie(i,P));break}}},[r,t,i]),m=F(O=>{a(E=>({...E,name:O}))},[]),v=F(O=>{let E=Ns(r,O);a(E),t(ie(i,E))},[r,t,i]),C=F(O=>{let E=Rs(r,O);a(E),t(ie(i,E))},[r,t,i]),x=F(O=>{if(O){let E=Ds(r,O);a(E),t(ie(i,E))}},[r,t,i]),b=F(({moveBy:O})=>{let{columns:E}=i,Ie=E.indexOf(r)+O,B=E[Ie];B&&a(B)},[r,i]),w=F(()=>{b({moveBy:1})},[b]),Q=F(()=>{b({moveBy:-1})},[b]),He=F(()=>{n(r)},[r,n]),Ve=F(()=>{o.name==="::"?e():(u.current!==void 0&&u.current!==r&&a(u.current),c(!1))},[r,o.name,e]);return{availableRenderers:g,editCalculatedColumn:l,column:r,navigateNextColumn:w,navigatePrevColumn:Q,onCancel:Ve,onChange:s,onChangeCalculatedColumnName:m,onChangeFormatting:v,onChangeRendering:x,onChangeType:C,onEditCalculatedColumn:d,onInputCommit:p,onSave:He}};import{jsx as y,jsxs as I}from"react/jsx-runtime";var $="vuuColumnSettingsPanel",Ys=o=>{let{name:e,label:t}=o;return Gs(e)?t!=null?t:zs(o):t!=null?t:e},Mp=({column:o,onCancelCreateColumn:e,onConfigChange:t,onCreateCalculatedColumn:n,tableConfig:i,vuuTable:r})=>{let a=o.name==="::",{availableRenderers:u,editCalculatedColumn:l,column:c,navigateNextColumn:d,navigatePrevColumn:g,onCancel:p,onChange:s,onChangeCalculatedColumnName:m,onChangeFormatting:v,onChangeRendering:C,onChangeType:x,onEditCalculatedColumn:b,onInputCommit:w,onSave:Q}=go({column:o,onCancelCreateColumn:e,onConfigChange:t,onCreateCalculatedColumn:n,tableConfig:i}),{serverDataType:He,align:Ve=Us(He),pin:O,width:E}=c;return I("div",{className:Ws($,{[`${$}-editing`]:l}),children:[y("div",{className:`${$}-header`,children:y(po,{column:c,onClick:b})}),l?y(Kt,{column:c,onChangeName:m,tableConfig:i,vuuTable:r}):null,I(De,{"data-field":"column-label",children:[y(Ne,{children:"Column Label"}),y(fo,{className:"vuuInput",onChange:s,onCommit:w,value:Ys(c)})]}),I(De,{"data-field":"column-width",children:[y(Ne,{children:"Column Width"}),y(fo,{className:"vuuInput",onChange:s,value:E,onCommit:w})]}),I(De,{"data-field":"column-alignment",children:[y(Ne,{children:"Alignment"}),I(Co,{className:"vuuToggleButtonGroup",onChange:s,value:Ve,children:[y(ae,{"data-icon":"align-left",className:"vuuIconToggleButton",value:"left"}),y(ae,{"data-icon":"align-right",className:"vuuIconToggleButton",value:"right"})]})]}),I(De,{"data-field":"column-pin",children:[y(Ne,{children:"Pin Column"}),I(Co,{className:"vuuToggleButtonGroup",onChange:s,value:O!=null?O:"",children:[y(ae,{className:"vuuIconToggleButton","data-icon":"cross-circle",value:""}),y(ae,{className:"vuuIconToggleButton","data-icon":"pin-left",value:"left"}),y(ae,{className:"vuuIconToggleButton","data-icon":"pin-float",value:"floating"}),y(ae,{className:"vuuIconToggleButton","data-icon":"pin-right",value:"right"})]})]}),y(uo,{availableRenderers:u,column:c,onChangeFormatting:v,onChangeRendering:C,onChangeType:x}),l?I("div",{className:"vuuColumnSettingsPanel-buttonBar","data-align":"right",children:[y(Be,{className:`${$}-buttonCancel`,onClick:p,tabIndex:-1,children:"cancel"}),y(Be,{className:`${$}-buttonSave`,onClick:Q,variant:"cta",children:"save"})]}):I("div",{className:`${$}-buttonBar`,"data-align":a?"right":void 0,children:[y(Be,{className:`${$}-buttonNavPrev`,variant:"secondary","data-icon":"arrow-left",onClick:g,children:"PREVIOUS"}),y(Be,{className:`${$}-buttonNavNext`,variant:"secondary","data-icon":"arrow-right",onClick:d,children:"NEXT"})]})]})};import qs from"clsx";import{useEffect as _s,useState as vo}from"react";import{jsx as le,jsxs as Js}from"react/jsx-runtime";var be="vuuDatasourceStats",dt=new Intl.NumberFormat,_p=({className:o,dataSource:e})=>{let[t,n]=vo(e.range),[i,r]=vo(e.size);_s(()=>{r(e.size),e.on("resize",r),e.on("range",n)},[e]);let a=qs(be,o),u=dt.format(t.from+1),l=dt.format(Math.min(t.to,i)),c=dt.format(i);return Js("div",{className:a,children:[le("span",{className:`${be}-label`,children:"Row count"}),le("span",{className:`${be}-range`,children:u}),le("span",{children:"-"}),le("span",{className:`${be}-range`,children:l}),le("span",{children:"of"}),le("span",{className:`${be}-size`,children:c})]})};import{Button as li,FormField as gt,FormFieldLabel as ft,Input as ui,ToggleButton as ue,ToggleButtonGroup as pi}from"@salt-ds/core";import{updateTableConfig as Ks}from"@vuu-ui/vuu-table";import{addColumnToSubscribedColumns as js,isCalculatedColumn as ei,moveItem as ti,subscribedOnly as oi,useLayoutEffectSkipFirst as ni}from"@vuu-ui/vuu-utils";import{useCallback as Re,useMemo as ri,useState as si}from"react";var ii=(o,e)=>{let t=[];for(let{name:n}of o){let i=e.find(r=>r.name===n);i&&t.push(i)}return t},ai=(o,e)=>o.map(({name:t,serverDataType:n})=>{let i=e.find(r=>r.name===t);return{hidden:i==null?void 0:i.hidden,isCalculated:ei(t),label:i==null?void 0:i.label,name:t,serverDataType:n,subscribed:i!==void 0}}),xo=({availableColumns:o,onConfigChange:e,onDataSourceConfigChange:t,tableConfig:n})=>{let[{availableColumns:i,tableConfig:r},a]=si({availableColumns:o,tableConfig:n}),u=ri(()=>ai(i,r.columns),[i,r.columns]),l=Re((s,m)=>{a(v=>{let C=ti(v.availableColumns,s,m),x=ii(C,r.columns);return{availableColumns:C,tableConfig:{...v.tableConfig,columns:x}}})},[r.columns]),c=Re((s,m,v)=>{let C=u.find(x=>x.name===s);if(m==="subscribed")if(C!=null&&C.subscribed){let x=r.columns.filter(b=>b.name!==s).map(b=>b.name);a(b=>({...b,tableConfig:{...r,columns:r.columns.filter(oi(x))}})),t({columns:x})}else{let x={...r,columns:js(r.columns,i,s)};a(w=>({...w,tableConfig:x}));let b=x.columns.map(w=>w.name);t({columns:b})}else if(C!=null&&C.subscribed){let x=r.columns.find(b=>b.name===s);if(x){let b=Ks(r,{type:"column-prop",property:m,column:x,value:v});a(w=>({...w,tableConfig:b}))}}},[i,u,t,r]),d=Re(s=>{let{value:m}=s.target,v=m==="0"?void 0:m==="1"?"capitalize":"uppercase";a(C=>({...C,tableConfig:{...C.tableConfig,columnFormatHeader:v}}))},[]),g=Re(s=>{let{ariaChecked:m,value:v}=s.target;a(C=>({...C,tableConfig:{...C.tableConfig,[v]:m!=="true"}}))},[]);ni(()=>{e==null||e(r)},[e,r]);let p=r.columnFormatHeader===void 0?0:r.columnFormatHeader==="capitalize"?1:2;return{columnItems:u,columnLabelsValue:p,onChangeColumnLabels:d,onChangeTableAttribute:g,onColumnChange:c,onMoveListItem:l,tableConfig:r}};import{jsx as k,jsxs as W}from"react/jsx-runtime";var Ct="vuuTableSettingsPanel",dc=({availableColumns:o,onAddCalculatedColumn:e,onConfigChange:t,onDataSourceConfigChange:n,onNavigateToColumn:i,tableConfig:r})=>{var s,m,v;let{columnItems:a,columnLabelsValue:u,onChangeColumnLabels:l,onChangeTableAttribute:c,onColumnChange:d,onMoveListItem:g,tableConfig:p}=xo({availableColumns:o,onConfigChange:t,onDataSourceConfigChange:n,tableConfig:r});return W("div",{className:Ct,children:[W(gt,{children:[k(ft,{children:"Column Labels"}),W(pi,{className:"vuuToggleButtonGroup",onChange:l,value:u,children:[k(ue,{className:"vuuIconToggleButton","data-icon":"text-strikethrough",value:0}),k(ue,{className:"vuuIconToggleButton","data-icon":"text-Tt",value:1}),k(ue,{className:"vuuIconToggleButton","data-icon":"text-T",value:2})]})]}),W(gt,{children:[k(ft,{children:"Grid separators"}),W("div",{className:"saltToggleButtonGroup vuuToggleButtonGroup saltToggleButtonGroup-horizontal vuuGridSeparators",children:[k(ue,{className:"vuuIconToggleButton","data-icon":"row-striping",selected:(s=p.zebraStripes)!=null?s:!1,onChange:c,value:"zebraStripes"}),k(ue,{className:"vuuIconToggleButton","data-icon":"row-lines",selected:(m=p.rowSeparators)!=null?m:!1,onChange:c,value:"rowSeparators"}),k(ue,{className:"vuuIconToggleButton","data-icon":"col-lines",selected:(v=p.columnSeparators)!=null?v:!1,onChange:c,value:"columnSeparators"})]})]}),W(gt,{children:[k(ft,{children:"Default Column Width"}),k(ui,{className:"vuuInput"})]}),k(kt,{columnItems:a,onChange:d,onMoveListItem:g,onNavigateToColumn:i}),W("div",{className:`${Ct}-calculatedButtonbar`,children:[k(li,{"data-icon":"plus",onClick:e}),k("span",{className:`${Ct}-calculatedLabel`,children:"Add calculated column"})]})]})};export{Uo as BackgroundCell,on as BackgroundCellConfigurationEditor,Pe as BaseNumericFormattingSettings,yo as CaseValidator,et as ColumnExpressionInput,Kt as ColumnExpressionPanel,uo as ColumnFormattingPanel,kt as ColumnList,We as ColumnNamedTerms,Mp as ColumnSettingsPanel,_p as DataSourceStats,no as DateTimeFormattingSettings,Cn as DropdownCell,En as LookupCell,So as PatternValidator,dc as TableSettingsPanel,Tt as columnExpressionLanguageSupport,Bt as isCompleteExpression,Dt as isCompleteRelationalExpression,Ye as lastNamedChild,Ut as useColumnExpressionEditor,Yt as useColumnExpressionSuggestionProvider,xo as useTableSettings,Pt as walkTree};
1
+ var Et=(t,e,o)=>{if(!e.has(t))throw TypeError("Cannot "+o)};var f=(t,e,o)=>(Et(t,e,"read from private field"),o?o.call(t):e.get(t)),D=(t,e,o)=>{if(e.has(t))throw TypeError("Cannot add the same private member more than once");e instanceof WeakSet?e.add(t):e.set(t,o)},I=(t,e,o,n)=>(Et(t,e,"write to private field"),n?n.call(t,o):e.set(t,o),o);import{registerComponent as Po}from"@vuu-ui/vuu-utils";var Fo=t=>typeof t=="string",Bo=(t,e)=>Fo(e)?e===""?!0:t.value==="lower"&&e.toLowerCase()!==e?"value must be all lowercase":t.value==="upper"&&e.toUpperCase()!==e?"value must be all uppercase":!0:"value must be a string";Po("vuu-case",Bo,"data-edit-validator",{});import{registerComponent as Lo}from"@vuu-ui/vuu-utils";var Do=t=>typeof t=="string",Ro="value does not match expected pattern",No=(t,e)=>{if(typeof t.value!="string")throw Error("Pattern validation rule must provide pattern");if(Do(e)){if(e==="")return!0;{let{message:o=Ro}=t;return new RegExp(t.value).test(e)||o}}else return"value must be a string"};Lo("vuu-pattern",No,"data-edit-validator",{});import{dataAndColumnUnchanged as $o,DOWN1 as Ao,DOWN2 as zo,isTypeDescriptor as Zo,metadataKeys as Xo,registerComponent as Uo,UP1 as Wo,UP2 as Yo}from"@vuu-ui/vuu-utils";import Go from"clsx";import{memo as qo}from"react";import{getMovingValueDirection as Ho,isTypeDescriptor as Vo,isValidNumber as wt}from"@vuu-ui/vuu-utils";import{useEffect as Mo,useRef as Qo}from"react";var Io=[void 0,void 0,void 0,void 0];function Ot(t,e,o){var g;let n=Qo(),[s,r,a,l]=n.current||Io,{type:u}=o,m=Vo(u)?(g=u.formatting)==null?void 0:g.decimals:void 0,d=t===s&&wt(e)&&wt(r)&&o===a?Ho(e,l,r,m):"";return Mo(()=>{n.current=[t,e,o,d]}),d}import{jsx as tn,jsxs as on}from"react/jsx-runtime";var _o="\u2B06",Jo="\u2B07",{KEY:Ko}=Xo,de="vuuBackgroundCell",G={ArrowOnly:"arrow",BackgroundOnly:"bg-only",ArrowBackground:"arrow-bg"},jo=t=>Zo(t)&&t.renderer&&"flashStyle"in t.renderer?t.renderer.flashStyle:G.BackgroundOnly,en=qo(function({column:e,columnMap:o,row:n}){let{name:s,type:r,valueFormatter:a}=e,l=o[s],u=n[l],m=jo(r),d=Ot(n[Ko],u,e),g=m===G.ArrowOnly||m===G.ArrowBackground?d===Wo||d===Yo?_o:d===Ao||d===zo?Jo:null:null,p=d?" "+d:"",i=Go(de,p,{[`${de}-backgroundOnly`]:m===G.BackgroundOnly,[`${de}-arrowOnly`]:m===G.ArrowOnly,[`${de}-arrowBackground`]:m===G.ArrowBackground});return on("div",{className:i,tabIndex:-1,children:[tn("div",{className:`${de}-arrow`,children:g}),a(n[l])]})},$o);Uo("vuu.price-move-background",en,"cell-renderer",{description:"Change background color of cell when value changes",configEditor:"BackgroundCellConfigurationEditor",label:"Background Flash",serverDataType:["long","int","double"]});import{Dropdown as nn}from"@vuu-ui/vuu-ui-controls";import{registerConfigurationEditor as rn}from"@vuu-ui/vuu-utils";import{FormField as sn,FormFieldLabel as an}from"@salt-ds/core";import{useCallback as ln,useState as un}from"react";import{jsx as St,jsxs as dn}from"react/jsx-runtime";var pn="vuuBackgroundCellConfiguration",Ze=[{label:"Background Only",value:"bg-only"},{label:"Background and Arrow",value:"arrow-bg"},{label:"Arrow Only",value:"arrow"}],[Tt]=Ze,cn=t=>{let{flashStyle:e}=t.type.renderer;return Ze.find(o=>o.value===e)||Tt},mn=({column:t,onChangeRendering:e})=>{let[o,n]=un(cn(t)),s=ln((r,a)=>{var u;n(a);let l=t.type.renderer;e({...l,flashStyle:(u=a==null?void 0:a.value)!=null?u:Tt.value})},[t.type,e]);return dn(sn,{children:[St(an,{children:"Flash Style"}),St(nn,{className:`${pn}-flashStyle`,onSelectionChange:s,selected:o,source:Ze,width:"100%"})]})};rn("BackgroundCellConfigurationEditor",mn);import{getSelectedOption as gn,useLookupValues as fn}from"@vuu-ui/vuu-data-react";import{Dropdown as Cn,WarnCommit as vn}from"@vuu-ui/vuu-ui-controls";import{dataColumnAndKeyUnchanged as xn,dispatchCustomEvent as hn,registerComponent as bn}from"@vuu-ui/vuu-utils";import{memo as yn,useCallback as En,useMemo as wn,useRef as On}from"react";import{jsx as Pn}from"react/jsx-runtime";var Sn="vuuTableDropdownCell",Tn=["Enter"," "],kn=yn(function({column:e,columnMap:o,onCommit:n=vn,row:s}){let r=o[e.name],a=s[r],{values:l}=fn(e,a),u=On(null);wn(()=>{u.current=gn(l,a)},[a,l]);let m=En((d,g)=>{g&&n(g.value).then(p=>{p===!0&&d&&hn(d.target,"vuu-commit")})},[n]);return Pn(Cn,{className:Sn,onSelectionChange:m,openKeys:Tn,selected:u.current,source:l,width:e.width-17})},xn);bn("dropdown-cell",kn,"cell-renderer",{userCanAssign:!1});import{useLookupValues as Fn}from"@vuu-ui/vuu-data-react";import{dataAndColumnUnchanged as Bn,registerComponent as Ln}from"@vuu-ui/vuu-utils";import{memo as Dn}from"react";import{jsx as Nn}from"react/jsx-runtime";var Rn=Dn(function({column:e,columnMap:o,row:n}){let s=o[e.name],r=n[s],{initialValue:a}=Fn(e,r);return Nn("span",{children:a==null?void 0:a.label})},Bn);Ln("lookup-cell",Rn,"cell-renderer",{userCanAssign:!1});import{registerComponent as Hn}from"@vuu-ui/vuu-utils";import kt from"clsx";import{jsx as Pt,jsxs as Qn}from"react/jsx-runtime";var ge="vuuPctProgressCell",Vn=t=>t>=0&&t<=1?t*100:t>2?0:t>1?100:0,Mn=({column:t,columnMap:e,row:o})=>{let n=o[e[t.name]],s=Vn(n),r=kt(ge,{});return Qn("div",{className:kt(r,{[`${ge}-zero`]:s===0,[`${ge}-complete`]:s>=100}),tabIndex:-1,children:[Pt("span",{className:`${ge}-progressBar`,style:{"--progress-bar-pct":`${s}%`}}),Pt("span",{className:`${ge}-text`,children:`${s.toFixed(2)} %`})]})};Hn("vuu.pct-progress",Mn,"cell-renderer",{description:"Percentage formatter",label:"Percentage formatter",serverDataType:"double"});import{isColumnTypeRenderer as In,isTypeDescriptor as $n,isValidNumber as Ft,registerComponent as An}from"@vuu-ui/vuu-utils";import zn from"clsx";import{jsx as Xe,jsxs as Bt}from"react/jsx-runtime";var fe="vuuProgressCell",Zn=({column:t,columnMap:e,row:o})=>{let{name:n,type:s}=t,r=o[e[n]],a=!1,l=0;if($n(s)&&In(s.renderer)){let{associatedField:m}=s.renderer;if(m){let d=o[e[m]];if(Ft(r)&&Ft(d))l=Math.min(Math.round(r/d*100),100),l=Math.min(Math.round(r/d*100),100),a=isFinite(l);else{let g=parseFloat(r);if(Number.isFinite(g)){let p=parseFloat(d);Number.isFinite(p)&&(l=Math.min(Math.round(g/p*100),100),a=isFinite(l))}}}else throw Error("ProgressCell associatedField is required to render")}let u=zn(fe,{});return Bt("div",{className:u,tabIndex:-1,children:[a?Bt("span",{className:`${fe}-track`,children:[Xe("span",{className:`${fe}-bg`}),Xe("span",{className:`${fe}-bar`,style:{"--progress-bar-pct":`-${100-l}%`}})]}):null,Xe("span",{className:`${fe}-text`,children:`${l} %`})]})};An("vuu.progress",Zn,"cell-renderer",{description:"Progress formatter",label:"Progress formatter",serverDataType:["long","int","double"],userCanAssign:!1});import{List as Xn,ListItem as Un}from"@vuu-ui/vuu-ui-controls";import{Checkbox as Wn,Switch as Yn}from"@salt-ds/core";import Gn from"clsx";import{useCallback as Lt}from"react";import{getColumnLabel as qn}from"@vuu-ui/vuu-utils";import{jsx as N,jsxs as Ue}from"react/jsx-runtime";var R="vuuColumnList",Dt="vuuColumnListItem",_n=({className:t,item:e,...o})=>Ue(Un,{...o,className:Gn(t,Dt),"data-name":e==null?void 0:e.name,children:[N("span",{className:`${R}-icon`,"data-icon":"draggable"}),e!=null&&e.isCalculated?N("span",{className:`${R}-icon`,"data-icon":"function"}):N(Yn,{className:`${R}-switch`,checked:e==null?void 0:e.subscribed}),N("span",{className:`${R}-text`,children:qn(e)}),N(Wn,{className:`${R}-checkBox`,checked:(e==null?void 0:e.hidden)!==!0,disabled:(e==null?void 0:e.subscribed)!==!0})]}),Rt=({columnItems:t,onChange:e,onMoveListItem:o,onNavigateToColumn:n,...s})=>{let r=Lt(l=>{let u=l.target,m=u.closest(`.${Dt}`),{dataset:{name:d}}=m;if(d){let g=u.closest(`.${R}-switch`),p=u.closest(`.${R}-checkBox`);g?e(d,"subscribed",u.checked):p&&e(d,"hidden",u.checked===!1)}},[e]),a=Lt(l=>{let u=l.target;if(u.classList.contains("vuuColumnList-text")){let m=u.closest(".vuuListItem");m!=null&&m.dataset.name&&(n==null||n(m.dataset.name))}},[]);return Ue("div",{...s,className:R,children:[N("div",{className:`${R}-header`,children:N("span",{children:"Column Selection"})}),Ue("div",{className:`${R}-colHeadings`,children:[N("span",{children:"Column subscription"}),N("span",{children:"Visibility"})]}),N(Xn,{ListItem:_n,allowDragDrop:!0,height:"auto",onChange:r,onClick:a,onMoveListItem:o,selectionStrategy:"none",source:t,itemHeight:33})]})};import{Icon as ae,VuuInput as wo}from"@vuu-ui/vuu-ui-controls";import{getCalculatedColumnName as ii,getDefaultAlignment as ai,isCalculatedColumn as li}from"@vuu-ui/vuu-utils";import{Button as Me,FormField as Qe,FormFieldLabel as Ie,ToggleButton as le,ToggleButtonGroup as Oo}from"@salt-ds/core";import ui from"clsx";import{Dropdown as os}from"@vuu-ui/vuu-ui-controls";import{getCalculatedColumnExpression as ns,getCalculatedColumnName as rs,getCalculatedColumnType as ss}from"@vuu-ui/vuu-utils";import{FormField as ut,FormFieldLabel as pt,Input as is}from"@salt-ds/core";import{useCallback as as,useRef as no}from"react";import{memo as kr}from"react";import{autocompletion as Cr,defaultKeymap as vr,EditorState as Yt,EditorView as Gt,ensureSyntaxTree as xr,keymap as qt,minimalSetup as hr,startCompletion as _t}from"@vuu-ui/vuu-codemirror";import{createEl as Jt}from"@vuu-ui/vuu-utils";import{useCallback as br,useEffect as yr,useMemo as Er,useRef as rt}from"react";import{LanguageSupport as Kn,LRLanguage as jn,styleTags as er,tags as Ce}from"@vuu-ui/vuu-codemirror";import{LRParser as Jn}from"@lezer/lr";var ke=Jn.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 tr=jn.define({name:"VuuColumnExpression",parser:ke.configure({props:[er({Column:Ce.attributeValue,Function:Ce.variableName,String:Ce.string,Or:Ce.emphasis,Operator:Ce.operator})]})}),Nt=()=>new Kn(tr);var We=class{constructor(e){switch(this.value=e,typeof e){case"boolean":this.type="booleanLiteralExpression";break;case"number":this.type="numericLiteralExpression";break;default:this.type="stringLiteralExpression"}}toJSON(){return{type:this.type,value:this.value}}},Ye=class{constructor(e){this.type="colExpression";this.column=e}toJSON(){return{type:this.type,column:this.column}}},xe,Z,Ge=class{constructor(e="unknown"){D(this,xe,[{type:"unknown"},{type:"unknown"}]);D(this,Z,void 0);this.type="arithmeticExpression";I(this,Z,e)}get op(){return f(this,Z)}set op(e){I(this,Z,e)}get expressions(){return f(this,xe)}toJSON(){return{type:this.type,op:f(this,Z),expressions:f(this,xe)}}};xe=new WeakMap,Z=new WeakMap;var K,qe=class{constructor(e){D(this,K,[]);this.type="callExpression";this.functionName=e}get expressions(){return f(this,K)}get arguments(){return f(this,K)}toJSON(){return{type:this.type,functionName:this.functionName,arguments:f(this,K).map(e=>{var o;return(o=e.toJSON)==null?void 0:o.call(e)})}}};K=new WeakMap;var he,j,_=class{constructor(){D(this,he,[{type:"unknown"},{type:"unknown"}]);D(this,j,"unknown");this.type="relationalExpression"}get op(){return f(this,j)}set op(e){I(this,j,e)}get expressions(){return f(this,he)}toJSON(){return{type:this.type,op:f(this,j),expressions:f(this,he)}}};he=new WeakMap,j=new WeakMap;var be,ee,J=class{constructor(e){D(this,be,[{type:"unknown"},{type:"unknown"}]);D(this,ee,void 0);this.type="booleanCondition";I(this,ee,e)}get op(){return f(this,ee)}get expressions(){return f(this,be)}toJSON(){return{type:this.type,op:f(this,ee),expressions:f(this,be).map(e=>{var o;return(o=e.toJSON)==null?void 0:o.call(e)})}}};be=new WeakMap,ee=new WeakMap;var H,ve=class{constructor(e){D(this,H,void 0);this.type="conditionalExpression";I(this,H,[e?new J(e):new _,{type:"unknown"},{type:"unknown"}])}get expressions(){return f(this,H)}get condition(){return f(this,H)[0]}get truthyExpression(){return f(this,H)[1]}set truthyExpression(e){f(this,H)[1]=e}get falsyExpression(){return f(this,H)[2]}set falsyExpression(e){f(this,H)[2]=e}toJSON(){var e,o,n,s,r;return{type:this.type,condition:(o=(e=this.condition).toJSON)==null?void 0:o.call(e),truthyExpression:this.truthyExpression,falsyExpression:(r=(s=(n=this.falsyExpression)==null?void 0:n.toJSON)==null?void 0:s.call(n))!=null?r:this.falsyExpression}}};H=new WeakMap;var z=t=>t.type==="unknown",Pe=t=>t.type==="arithmeticExpression",or=t=>t.type==="callExpression",q=t=>t.type==="conditionalExpression",nr=t=>t.type==="relationalExpression"||t.type==="booleanCondition";var rr=t=>t.type==="booleanCondition",Je=t=>(t==null?void 0:t.type)==="relationalExpression";var F=t=>{if(z(t))return t;if(Je(t)){let[e,o]=t.expressions;if(k(e))return F(e);if(t.op==="unknown")return t;if(k(o))return F(o)}else if(nr(t)){let{expressions:e=[]}=t;for(let o of e)if(k(o))return F(o)}else if(q(t)){let{condition:e,truthyExpression:o,falsyExpression:n}=t;if(k(e))return F(e);if(k(o))return F(o);if(k(n))return F(n)}else if(Pe(t)){let{expressions:e=[]}=t;for(let o of e)if(k(o))return F(o)}},Fe=(t,e,o)=>{let{expressions:n=[]}=t;if(n.includes(e)){let s=n.indexOf(e);return n.splice(s,1,o),!0}else for(let s of n)if(Fe(s,e,o))return!0;return!1},k=t=>z(t)?!0:q(t)?k(t.condition)||k(t.truthyExpression)||k(t.falsyExpression):Je(t)||rr(t)?t.op===void 0||t.expressions.some(e=>k(e)):!1,Ht=(t,e)=>{let o=F(t);o?o.expressions?o.expressions.push(e):console.warn("don't know how to treat targetExpression"):console.error("no target expression found")},b,X,_e=class{constructor(){D(this,b,void 0);D(this,X,[])}setCondition(e){if(f(this,b)===void 0)this.addExpression(new ve(e));else if(q(f(this,b))){if(k(f(this,b).condition)){let o=e?new J(e):new _;this.addExpression(o)}else if(z(f(this,b).truthyExpression))f(this,b).truthyExpression=new ve(e);else if(k(f(this,b).truthyExpression)){let o=e?new J(e):new _;this.addExpression(o)}else if(z(f(this,b).falsyExpression))f(this,b).falsyExpression=new ve(e);else if(k(f(this,b).falsyExpression)){let o=e?new J(e):new _;this.addExpression(o)}}else console.error("setCondition called unexpectedly")}addExpression(e){if(f(this,X).length>0){let o=f(this,X).at(-1);o==null||o.arguments.push(e)}else if(f(this,b)===void 0)I(this,b,e);else if(Pe(f(this,b))){let o=F(f(this,b));o&&z(o)&&Fe(f(this,b),o,e)}else if(q(f(this,b))&&k(f(this,b))){let o=F(f(this,b));o&&z(o)?Fe(f(this,b),o,e):o&&Ht(o,e)}}setFunction(e){let o=new qe(e);this.addExpression(o),f(this,X).push(o)}setColumn(e){this.addExpression(new Ye(e))}setArithmeticOp(e){let o=e,n=f(this,b);Pe(n)&&(n.op=o)}setRelationalOperator(e){let o=e;if(f(this,b)&&q(f(this,b))){let n=F(f(this,b));Je(n)?n.op=o:console.error(`no target expression found (op = ${e})`)}}setValue(e){let o=new We(e);if(f(this,b)===void 0)I(this,b,o);else if(Pe(f(this,b)))this.addExpression(o);else if(or(f(this,b)))f(this,b).arguments.push(o);else if(q(f(this,b)))if(k(f(this,b))){let n=F(f(this,b));n&&z(n)?Fe(f(this,b),n,o):n&&Ht(n,o)}else console.log("what do we do with value, in a complete expression")}closeBrace(){f(this,X).pop()}get expression(){return f(this,b)}toJSON(){var e;return(e=f(this,b))==null?void 0:e.toJSON()}};b=new WeakMap,X=new WeakMap;var Vt=(t,e)=>{let o=new _e,n=t.cursor();do{let{name:s,from:r,to:a}=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 Ge);break;case"Column":{let l=e.substring(r,a);o.setColumn(l)}break;case"Function":{let l=e.substring(r,a);o.setFunction(l)}break;case"Times":case"Divide":case"Plus":case"Minus":{let l=e.substring(r,a);o.setArithmeticOp(l)}break;case"RelationalOperator":{let l=e.substring(r,a);o.setRelationalOperator(l)}break;case"False":case"True":{let l=e.substring(r,a);o.setValue(l==="true")}break;case"String":o.setValue(e.substring(r+1,a-1));break;case"Number":o.setValue(parseFloat(e.substring(r,a)));break;case"CloseBrace":o.closeBrace();break;default:}}while(n.next());return o.toJSON()};var sr=ke.configure({strict:!0}),Mt=["Number","String"],Ke=[...Mt,"AndCondition","ArithmeticExpression","BooleanOperator","RelationalOperatorOperator","CallExpression","CloseBrace","Column","Comma","ConditionalExpression","Divide","Equal","If","Minus","OpenBrace","OrCondition","ParenthesizedExpression","Plus","RelationalExpression","RelationalOperator","Times"],Qt=t=>{try{return sr.parse(t),!0}catch{return!1}},je=t=>{let{lastChild:e}=t;for(;e&&!Ke.includes(e.name);)e=e.prevSibling,console.log(e==null?void 0:e.name);return e},It=t=>{if((t==null?void 0:t.name)==="RelationalExpression"){let{firstChild:e}=t,o=je(t);if((e==null?void 0:e.name)==="Column"&&typeof(o==null?void 0:o.name)=="string"&&Mt.includes(o.name))return!0}return!1};import{HighlightStyle as ir,syntaxHighlighting as ar,tags as et}from"@vuu-ui/vuu-codemirror";var lr=ir.define([{tag:et.attributeValue,color:"var(--vuuFilterEditor-variableColor);font-weight: bold"},{tag:et.variableName,color:"var(--vuuFilterEditor-variableColor)"},{tag:et.comment,color:"green",fontStyle:"italic"}]),$t=ar(lr);import{EditorView as ur}from"@vuu-ui/vuu-codemirror";var At=ur.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 pr,getNamedParentNode as zt,getPreviousNode as cr,getValue as V,syntaxTree as mr}from"@vuu-ui/vuu-codemirror";import{useCallback as Zt}from"react";var dr=(t,e)=>e?t.map(o=>{var n;return{...o,apply:typeof o.apply=="function"?o.apply:`${e}${(n=o.apply)!=null?n:o.label}`}}):t,gr=t=>t===void 0?!1:["Times","Divide","Plus","Minus"].includes(t.name),ye=t=>({apply:()=>{t==null||t()},label:"Done",boost:10}),te=(t,e)=>{var s;let{lastChild:o}=t,{pos:n}=e;for(;o;)if(o.from<n&&Ke.includes(o.name)){if(o.name==="ParenthesizedExpression"){let a=(s=o.firstChild)==null?void 0:s.nextSibling;a&&(o=a)}return o}else o=o.prevSibling},Xt=(t,e)=>{var o;if(t.name==="ArgList"){let n=t.prevSibling;if(n)return V(n,e)}else if(t.name==="OpenBrace"){let n=(o=t.parent)==null?void 0:o.prevSibling;if((n==null?void 0:n.name)==="Function")return V(n,e)}},Ut=(t,e)=>{if(t.name==="RelationalExpression"){let o=je(t);if((o==null?void 0:o.name)==="RelationalOperator")return V(o,e)}else{let o=t.prevSibling;if((o==null?void 0:o.name)==="RelationalOperator")return V(o,e)}},nt=(t,e)=>{var o;if(t.name==="RelationalExpression"){if(((o=t.firstChild)==null?void 0:o.name)==="Column")return V(t.firstChild,e)}else{let n=t.prevSibling;if((n==null?void 0:n.name)==="Column")return V(n,e);if((n==null?void 0:n.name)==="RelationalOperator")return nt(n,e)}},tt=async(t,e,o,n={})=>{let s=await e.getSuggestions(o,n),{startsWith:r=""}=n;return{from:t.pos-r.length,options:s}},ot=(t,e,o,n,s)=>{let r=te(t,e);switch(r==null?void 0:r.name){case"If":return tt(e,o,"expression",{prefix:"( "});case"OpenBrace":return tt(e,o,"expression");case"Condition":return tt(e,o,"expression",{prefix:", "});case"CloseBrace":if(n){let a=[ye(s)];return{from:e.pos,options:a}}}},fr=(t,e)=>{let o=[ye(e)];return{from:t.pos,options:o}},Wt=(t,e)=>{let o=Zt(async(n,s,r={})=>{let a=await t.getSuggestions(s,r),{startsWith:l=""}=r;return{from:n.pos-l.length,options:a}},[t]);return Zt(async n=>{var g,p;let{state:s,pos:r}=n,a=(g=n.matchBefore(/\w*/))!=null?g:{from:0,to:0,text:void 0},u=mr(s).resolveInner(r,-1),m=s.doc.toString(),d=Qt(m);switch(u.name){case"If":return o(n,"expression",{prefix:"( "});case"Condition":{let i=te(u,n);if((i==null?void 0:i.name)==="Column"){let c=cr(i);if((c==null?void 0:c.name)!=="RelationalOperator")return o(n,"condition-operator",{columnName:V(i,s)})}else if((i==null?void 0:i.name)==="RelationalOperator")return o(n,"expression")}break;case"ConditionalExpression":return ot(u,n,t);case"RelationalExpression":{if(It(u))return{from:n.pos,options:pr.concat({label:", <truthy expression>, <falsy expression>",apply:", "})};{let i=Ut(u,s),c=nt(u,s);if(i)return o(n,"expression");{let C=await t.getSuggestions("condition-operator",{columnName:c});return{from:n.pos,options:C}}}}break;case"RelationalOperator":return o(n,"expression");case"String":{let i=Ut(u,s),c=nt(u,s),{from:C,to:v}=u;if(v-C===2&&n.pos===C+1){if(c&&i)return o(n,"columnValue",{columnName:c,operator:i,startsWith:a.text})}else if(v-C>2&&n.pos===v)return o(n,"expression",{prefix:", "})}break;case"ArithmeticExpression":{let i=te(u,n);if((i==null?void 0:i.name)==="Column")return o(n,"expression");if(gr(i)){let c=i.name;return o(n,"column",{operator:c})}}break;case"OpenBrace":{let i=Xt(u,s);return o(n,"expression",{functionName:i})}break;case"ArgList":{let i=Xt(u,s),c=te(u,n),C=(c==null?void 0:c.name)==="OpenBrace"||(c==null?void 0:c.name)==="Comma"?void 0:",",v=await t.getSuggestions("expression",{functionName:i});return v=C?dr(v,", "):v,(c==null?void 0:c.name)!=="OpenBrace"&&(c==null?void 0:c.name)!=="Comma"&&(v=[{apply:") ",boost:10,label:"Done - no more arguments"}].concat(v)),{from:n.pos,options:v}}case"Equal":if(m.trim()==="=")return o(n,"expression");break;case"ParenthesizedExpression":case"ColumnDefinitionExpression":if(n.pos===0)return o(n,"expression");{let i=te(u,n);if((i==null?void 0:i.name)==="Column"){if(d){let c=[ye(e.current)],C=V(i,s),v=await t.getSuggestions("operator",{columnName:C});return{from:n.pos,options:c.concat(v)}}}else if((i==null?void 0:i.name)==="CallExpression"){if(d)return{from:n.pos,options:[ye(e.current)]}}else if((i==null?void 0:i.name)==="ArithmeticExpression"){if(d){let c=[ye(e.current)],C=te(i,n);if((C==null?void 0:C.name)==="Column"){let v=V(C,s),x=await t.getSuggestions("operator",{columnName:v});c=c.concat(x)}return{from:n.pos,options:c}}}else if((i==null?void 0:i.name)==="ConditionalExpression")return ot(i,n,t,d,e.current);break}case"Column":if(await t.isPartialMatch("expression",void 0,a.text))return o(n,"expression",{startsWith:a.text});break;case"Comma":{let i=zt(u);if((i==null?void 0:i.name)==="ConditionalExpression")return o(n,"expression")}break;case"CloseBrace":{let i=zt(u);if((i==null?void 0:i.name)==="ConditionalExpression")return ot(i,n,t,d,e.current);if((i==null?void 0:i.name)==="ArgList"&&d)return fr(n,e.current)}break;default:((p=u==null?void 0:u.prevSibling)==null?void 0:p.name)==="FilterClause"&&console.log("looks like we ight be a or|and operator")}},[o,e,t])};var Be=t=>{if(t.current==null)throw Error("EditorView not defined");return t.current},wr=()=>"vuuSuggestion",Or=()=>console.log("noooop"),Sr=t=>"expressionType"in t,Tr=t=>{if(Sr(t)){let e=Jt("div","expression-type-container"),o=Jt("span","expression-type",t.expressionType);return e.appendChild(o),e}else return null},Kt=({onChange:t,onSubmitExpression:e,source:o,suggestionProvider:n})=>{let s=rt(null),r=rt(Or),a=rt(),l=Wt(n,r),[u,m,d]=Er(()=>{let p=()=>{let x=Be(a),h=x.state.doc.toString(),w=xr(x.state,x.state.doc.length,5e3);if(w){let T=Vt(w,h);return[h,T]}else return["",void 0]},i=()=>{Be(a).setState(v())},c=()=>{let[x,h]=p();e==null||e(x,h)},C=x=>qt.of([{key:x,run(){return _t(Be(a)),!0}}]),v=()=>Yt.create({doc:o,extensions:[hr,Cr({addToOptions:[{render:Tr,position:70}],override:[l],optionClass:wr}),Nt(),qt.of(vr),C("ArrowDown"),Gt.updateListener.of(x=>{let h=Be(a);if(x.docChanged){_t(h);let w=h.state.doc.toString();t==null||t(w)}}),Yt.transactionFilter.of(x=>x.newDoc.lines>1?[]:x),At,$t]});return r.current=()=>{c()},[v,i,c]},[l,t,e,o]);yr(()=>{if(!s.current)throw Error("editor not in dom");return a.current=new Gt({state:u(),parent:s.current}),()=>{var p;(p=a.current)==null||p.destroy()}},[l,u]);let g=br(()=>{d()},[d]);return{editorRef:s,clearInput:m,onBlur:g}};import{jsx as Fr}from"react/jsx-runtime";var Pr="vuuColumnExpressionInput",st=kr(({onChange:t,onSubmitExpression:e,source:o="",suggestionProvider:n})=>{let{editorRef:s,onBlur:r}=Kt({onChange:t,onSubmitExpression:e,source:o,suggestionProvider:n});return Fr("div",{className:`${Pr}`,onBlur:r,ref:s})},(t,e)=>t.source===e.source);st.displayName="ColumnExpressionInput";import{AnnotationType as Br,getRelationalOperators as Lr,numericOperators as Dr,stringOperators as Rr,toSuggestions as Nr}from"@vuu-ui/vuu-codemirror";import{getTypeaheadParams as Hr,useTypeaheadSuggestions as Vr}from"@vuu-ui/vuu-data-react";import{isNumericColumn as at,isTextColumn as Mr}from"@vuu-ui/vuu-utils";import{useCallback as it,useRef as Qr}from"react";var oe=[{accepts:["boolean"],description:"Applies boolean and operator across supplied parameters to returns a single boolean result",example:{expression:'and(ccy="EUR",quantity=0)',result:"true | false"},name:"and",params:{description:"( boolean, [ boolean* ] )"},type:"boolean"},{accepts:"string",description:"Returns multiple string values as a single joined string. Arguments may be string literal values, string columns or other string expressions. Non string arguments may also be included, these will be converted to strings.",example:{expression:'concatenate("example", "-test")',result:'"example-test"'},name:"concatenate",params:{description:"( string, string, [ string* ] )"},type:"string"},{accepts:["string","string"],description:"Tests a string value to determine whether it contains a given substring. Accepts two arguments: source text and target substring. Returns true if <source text> contains one or more occurrences of <target subscring>",example:{expression:'contains("Royal Bank of Scotland", "bank")',result:"true"},name:"contains",params:{description:"( string )"},type:"boolean"},{accepts:["string","number"],description:"Returns the leftmost <number> characters from <string>. First argument may be a string literal, string column or other string expression.",example:{expression:'left("USD Benchmark Report", 3)',result:'"USD"'},name:"left",params:{count:2,description:"( string, number )"},type:"string"},{accepts:"string",description:"Returns the number of characters in <string>. Argument may be a string literal, string column or other string expression.",example:{expression:'len("example")',result:"7"},name:"len",params:{description:"(string)"},type:"number"},{accepts:"string",description:"Convert a string value to lowercase. Argument may be a string column or other string expression.",example:{expression:'lower("examPLE")',result:'"example"'},name:"lower",params:{description:"( string )"},type:"string"},{accepts:["boolean"],description:"Applies boolean or operator across supplied parameters to returns a single boolean result",example:{expression:'or(status="cancelled",quantity=0)',result:"true | false"},name:"or",params:{description:"( boolean, [ boolean* ] )"},type:"boolean"},{accepts:"string",description:"Convert a string value to uppercase. Argument may be a string column or other string expression.",example:{expression:'upper("example")',result:'"EXAMPLE"'},name:"upper",params:{description:"( string )"},type:"string"},{accepts:["string","number"],description:"Returns the rightmost <number> characters from <string>. First argument may be a string literal, string column or other string expression.",example:{expression:"blah",result:"blah"},name:"right",params:{description:"( string )"},type:"string"},{accepts:["string","string","string"],description:"Replace characters within a string. Accepts three arguments: source text, text to replace and replacement text. Returns a copy of <source text> with any occurrences of <text to replace> replaced by <replacement text>",example:{expression:"blah",result:"blah"},name:"replace",params:{description:"( string )"},type:"string"},{accepts:"number",description:"Converts a number to a string.",example:{expression:"blah",result:"blah"},name:"text",params:{description:"( string )"},type:"string"},{accepts:"string",description:"Tests a string value to determine whether it starts with a given substring. Accepts two arguments: source text and target substring. Returns true if <source text> starts with <target subscring>.",example:{expression:"blah",result:"blah"},name:"starts",params:{description:"( string )"},type:"boolean"},{accepts:"string",description:"Tests a string value to determine whether it ends with a given substring. Accepts two arguments: source text and target substring. Returns true if <source text> ends with <target subscring>.",example:{expression:"blah",result:"blah"},name:"ends",params:{description:"( string )"},type:"boolean"},{accepts:"number",description:"blah",example:{expression:"blah",result:"blah"},name:"min",params:{description:"( string )"},type:"number"},{accepts:"number",description:"blah",example:{expression:"blah",result:"blah"},name:"max",params:{description:"( string )"},type:"number"},{accepts:"number",description:"blah",example:{expression:"blah",result:"blah"},name:"sum",params:{description:"( string )"},type:"number"},{accepts:"number",description:"blah",example:{expression:"blah",result:"blah"},name:"round",params:{description:"( string )"},type:"number"},{accepts:"any",description:"blah",example:{expression:"blah",result:"blah"},name:"or",params:{description:"( string )"},type:"boolean"},{accepts:"any",description:"blah",example:{expression:"blah",result:"blah"},name:"and",params:{description:"( string )"},type:"boolean"},{accepts:"any",description:"Return one of two possible result values, depending on the evaluation of a filter expression. If <filterExpression> resolves to true, result is <expression1>, otherwise <expression2>. ",example:{expression:"blah",result:"blah"},name:"if",params:{description:"( filterExpression, expression1, expression 2)"},type:"variable"}];import{createEl as M}from"@vuu-ui/vuu-utils";var jt=({name:t,description:e,example:o,params:n,type:s})=>{let r=M("div","vuuFunctionDoc"),a=M("div","function-heading"),l=M("span","function-name",t),u=M("span","param-list",n.description),m=M("span","function-type",s);a.appendChild(l),a.appendChild(u),a.appendChild(m);let d=M("p",void 0,e);if(r.appendChild(a),r.appendChild(d),o){let g=M("div","example-container"),p=M("div","example-expression",o.expression),i=M("div","example-result",o.result);g.appendChild(p),r.appendChild(g),r.appendChild(i)}return r};var Ir=[],U=t=>t.map(e=>{var o;return{...e,apply:((o=e.apply)!=null?o:e.label)+" "}}),$r=(t,{functionName:e,operator:o})=>{if(o)return t.filter(at);if(e){let n=oe.find(s=>s.name===e);if(n)switch(n.accepts){case"string":return t.filter(Mr);case"number":return t.filter(at);default:return t}}return t},eo=(t,e)=>$r(t,e).map(n=>{var r;let s=(r=n.label)!=null?r:n.name;return{apply:e.prefix?`${e.prefix}${n.name}`:n.name,label:s,boost:5,type:"column",expressionType:n.serverDataType}}),Ar=[{apply:"* ",boost:2,label:"*",type:"operator"},{apply:"/ ",boost:2,label:"/",type:"operator"},{apply:"+ ",boost:2,label:"+",type:"operator"},{apply:"- ",boost:2,label:"-",type:"operator"}],zr=t=>t===void 0||at(t)?Ar:Ir,Zr=t=>{switch(t.serverDataType){case"string":case"char":return U(Rr);case"int":case"long":case"double":return U(Dr)}},lt=t=>({apply:`${t.name}( `,boost:2,expressionType:t.type,info:()=>jt(t),label:t.name,type:"function"}),Xr=t=>{if(t){if(typeof t.accepts=="string")return t.accepts;if(Array.isArray(t.accepts))return t.accepts.every(e=>e==="string")?"string":"any"}return"any"},Ur=oe.map(lt),Wr=({functionName:t})=>{if(t){let e=oe.find(n=>n.name===t),o=Xr(e);if(e)switch(o){case"string":return oe.filter(n=>n.type==="string"||n.type==="variable").map(lt);case"number":return oe.filter(n=>n.type==="number"||n.type==="variable").map(lt);default:}}return Ur},Yr={},to=({columns:t,table:e})=>{let o=it(l=>l?t.find(u=>u.name===l):void 0,[t]),n=Qr(),s=Vr(),r=it(async(l,u=Yr)=>{let{columnName:m,functionName:d,operator:g,prefix:p}=u;switch(l){case"expression":{let i=await U(eo(t,{functionName:d,prefix:p})).concat(Wr(u));return n.current=i}case"column":{let i=await eo(t,u);return n.current=U(i)}case"operator":{let i=await zr(o(m));return n.current=U(i)}case"relational-operator":{let i=await Lr(o(m));return n.current=U(i)}case"condition-operator":{let i=o(m);if(i){let c=await Zr(i);if(c)return n.current=U(c)}}break;case"columnValue":if(m&&g){let i=Hr(e,m),c=await s(i);return n.current=Nr(c,{suffix:""}),n.current.forEach(C=>{C.apply=(v,x,h)=>{let w=new Br,T=h+x.label.length+1;v.dispatch({changes:{from:h,insert:x.label},selection:{anchor:T,head:T},annotations:w.of(x)})}}),n.current}break}return[]},[t,o,s,e]),a=it(async(l,u,m)=>{let{current:d}=n,g=!1,p=d||await r(l,{columnName:u});if(m&&p)for(let i of p){if(i.label===m)return!1;i.label.startsWith(m)&&(g=!0)}return g},[r]);return{getSuggestions:r,isPartialMatch:a}};import{getCalculatedColumnDetails as Gr,isVuuColumnDataType as qr,setCalculatedColumnExpression as _r,setCalculatedColumnName as Jr,setCalculatedColumnType as Kr}from"@vuu-ui/vuu-utils";import{useCallback as Le,useRef as jr,useState as es}from"react";var ts=t=>{let[e,o,n]=Gr(t);return n===""?{...t,name:`${e}:string:${o}`}:t},oo=({column:t,onChangeName:e,onChangeServerDataType:o})=>{let[n,s]=es(ts(t)),r=jr(t),a=Le(d=>{r.current=d,s(d)},[]),l=Le(d=>{let{value:g}=d.target,p=Jr(n,g);a(p),e==null||e(p.name)},[n,e,a]),u=Le(d=>{let g=d.trim(),{current:p}=r,i=_r(p,g);a(i),e==null||e(i.name)},[e,a]),m=Le((d,g)=>{if(qr(g)){let p=Kr(n,g);a(p),e==null||e(p.name),o==null||o(g)}},[n,e,o,a]);return{column:n,onChangeExpression:u,onChangeName:l,onChangeServerDataType:m}};import{jsx as $,jsxs as De}from"react/jsx-runtime";var ro="vuuColumnExpressionPanel",so=({column:t,onChangeName:e,onChangeServerDataType:o,tableConfig:n,vuuTable:s})=>{let r=no(null),{column:a,onChangeExpression:l,onChangeName:u,onChangeServerDataType:m}=oo({column:t,onChangeName:e,onChangeServerDataType:o}),d=no(ns(a)),g=to({columns:n.columns,table:s}),p=as(()=>{var i,c;r.current&&((c=(i=r.current)==null?void 0:i.querySelector("button"))==null||c.focus())},[]);return De("div",{className:ro,children:[$("div",{className:"vuuColumnSettingsPanel-header",children:$("span",{children:"Calculation"})}),De(ut,{"data-field":"column-name",children:[$(pt,{children:"Column Name"}),$(is,{className:"vuuInput",onChange:u,value:rs(a)})]}),De(ut,{"data-field":"column-expression",children:[$(pt,{children:"Expression"}),$(st,{onChange:l,onSubmitExpression:p,source:d.current,suggestionProvider:g})]}),De(ut,{"data-field":"type",children:[$(pt,{children:"Column type"}),$(os,{className:`${ro}-type`,onSelectionChange:m,ref:r,selected:ss(a)||null,source:["double","long","string","boolean"],width:"100%"})]})]})};import{Dropdown as Rs}from"@vuu-ui/vuu-ui-controls";import{getCellRendererOptions as Ns,getConfigurationEditor as Hs,isColumnTypeRenderer as go,isTypeDescriptor as fo}from"@vuu-ui/vuu-utils";import{FormField as Vs,FormFieldLabel as Ms}from"@salt-ds/core";import Co from"clsx";import{useCallback as Qs,useMemo as ft}from"react";import{FormField as ct,FormFieldLabel as mt,Input as ls,Switch as io}from"@salt-ds/core";import{getTypeFormattingFromColumn as us}from"@vuu-ui/vuu-utils";import{useCallback as Re,useState as ps}from"react";import{jsx as ne,jsxs as Ne}from"react/jsx-runtime";var cs="vuuFormattingSettings",He=({column:t,onChangeFormatting:e})=>{var u,m,d;let[o,n]=ps(us(t)),s=Re(g=>{(g.key==="Enter"||g.key==="Tab")&&e(o)},[o,e]),r=Re(g=>{let{value:p}=g.target,i=p===""||isNaN(parseInt(p))?void 0:parseInt(p),c={...o,decimals:i};n(c)},[o]),a=Re(g=>{let{checked:p}=g.target,i={...o,alignOnDecimals:p};n(i),e(i)},[o,e]),l=Re(g=>{let{checked:p}=g.target,i={...o,zeroPad:p};n(i),e(i)},[o,e]);return Ne("div",{className:cs,children:[Ne(ct,{"data-field":"decimals",children:[ne(mt,{children:"Number of decimals"}),ne(ls,{className:"vuuInput",onChange:r,onKeyDown:s,value:(u=o.decimals)!=null?u:""})]}),Ne(ct,{labelPlacement:"left",children:[ne(mt,{children:"Align on decimals"}),ne(io,{checked:(m=o.alignOnDecimals)!=null?m:!1,onChange:a,value:"align-decimals"})]}),Ne(ct,{labelPlacement:"left",children:[ne(mt,{children:"Zero pad decimals"}),ne(io,{checked:(d=o.zeroPad)!=null?d:!1,onChange:l,value:"zero-pad"})]})]})};import{useCallback as Os}from"react";import{FormField as Ss,FormFieldLabel as Ts,ToggleButton as ks,ToggleButtonGroup as Ps}from"@salt-ds/core";import{isDateTimeColumn as Fs,isTypeDescriptor as Bs}from"@vuu-ui/vuu-utils";import{useCallback as dt,useMemo as ms,useState as ds}from"react";import{Dropdown as gs}from"@vuu-ui/vuu-ui-controls";import{defaultPatternsByType as ao,fallbackDateTimePattern as fs,getTypeFormattingFromColumn as Cs,supportedDateTimePatterns as vs}from"@vuu-ui/vuu-utils";import{FormField as lo,FormFieldLabel as uo,ToggleButton as xs,ToggleButtonGroup as hs}from"@salt-ds/core";import{Fragment as ws,jsx as Ee,jsxs as gt}from"react/jsx-runtime";var po=({column:t,onChangeFormatting:e})=>{var d,g;let o=Cs(t),{pattern:n=fs}=o,s=ms(()=>Es(n),[n]),[r,a]=ds({time:(d=n.time)!=null?d:ao.time,date:(g=n.date)!=null?g:ao.date}),l=dt(p=>e({...o,pattern:p}),[e,o]),u=dt(p=>(i,c)=>{let C={...n!=null?n:{},[p]:c};a(v=>{var x,h;return{time:(x=C.time)!=null?x:v.time,date:(h=C.date)!=null?h:v.date}}),l(C)},[l,n]),m=dt(p=>{var c,C,v,x;let i=p.currentTarget.value;switch(i){case"time":return l({[i]:(c=n[i])!=null?c:r[i]});case"date":return l({[i]:(C=n[i])!=null?C:r[i]});case"both":return l({time:(v=n.time)!=null?v:r.time,date:(x=n.date)!=null?x:r.date})}},[l,n,r]);return gt(ws,{children:[gt(lo,{labelPlacement:"top",children:[Ee(uo,{children:"Display"}),Ee(hs,{className:"vuuToggleButtonGroup",onChange:m,value:s,"data-variant":"primary",children:ys.map(p=>Ee(xs,{value:p,children:p.toUpperCase()},p))})]}),["date","time"].filter(p=>!!n[p]).map(p=>gt(lo,{labelPlacement:"top",children:[Ee(uo,{children:`${bs[p]} pattern`}),Ee(gs,{onSelectionChange:u(p),selected:n[p],source:vs[p],width:"100%"})]},p))]})},bs={date:"Date",time:"Time"},ys=["date","time","both"];function Es(t){return t.time?t.date?"both":"time":"date"}import{jsx as we,jsxs as co}from"react/jsx-runtime";var Ls="vuuLongColumnFormattingSettings",mo=t=>{let{column:e,onChangeColumnType:o}=t,n=Bs(e.type)?e.type.name:e.type,s=Os(r=>{let a=r.currentTarget.value;o(a)},[o]);return co("div",{className:Ls,children:[co(Ss,{children:[we(Ts,{children:"Type inferred as"}),we(Ps,{className:"vuuToggleButtonGroup",onChange:s,value:n!=null?n:"number",children:Ds.map(r=>we(ks,{value:r,children:r.toUpperCase()},r))})]}),Fs(e)?we(po,{...t,column:e}):we(He,{...t})]})},Ds=["number","date/time"];import{jsx as re,jsxs as vt}from"react/jsx-runtime";var Ct="vuuColumnFormattingPanel",Is=t=>{var e;return(e=t.label)!=null?e:t.name},vo=({availableRenderers:t,className:e,column:o,onChangeFormatting:n,onChangeColumnType:s,onChangeRendering:r,...a})=>{let l=ft(()=>$s({column:o,onChangeFormatting:n,onChangeColumnType:s}),[o,s,n]);console.log({formattingSettingsComponent:l});let u=ft(()=>{let{type:p}=o;if(fo(p)&&go(p.renderer)){let i=Ns(p.renderer.name);return Hs(i==null?void 0:i.configEditor)}},[o]),m=ft(()=>{let{type:p}=o,[i]=t,c=fo(p)&&go(p.renderer)?p.renderer.name:void 0,C=t.find(v=>v.name===c);return C!=null?C:i},[t,o]),d=Qs((p,i)=>{let c={name:i.name};r==null||r(c)},[r]),{serverDataType:g="string"}=o;return vt("div",{...a,className:"vuuColumnSettingsPanel-header",children:[re("div",{children:"Formatting"}),vt(Vs,{children:[re(Ms,{children:`Renderer (data type ${o.serverDataType})`}),re(Rs,{className:Co(`${Ct}-renderer`),itemToString:Is,onSelectionChange:d,selected:m,source:t,width:"100%"})]}),vt("div",{className:Co(Ct,e,`${Ct}-${g}`),children:[l,u?re(u,{column:o,onChangeRendering:r}):null]})]})};function $s(t){let{column:e}=t;switch(e.serverDataType){case"double":case"int":return re(He,{...t});case"long":return re(mo,{...t});default:return null}}import As from"clsx";import{getCalculatedColumnDetails as zs,isCalculatedColumn as Zs}from"@vuu-ui/vuu-utils";import{jsx as W,jsxs as Xs}from"react/jsx-runtime";var se="vuuColumnNameLabel",xo=({column:t,onClick:e})=>{if(Zs(t.name)){let[o,n,s]=zs(t),r=o||"name",a="=expression",l=r==="name"?`${se}-placeholder`:void 0,u=s===""?`${se}-placeholder`:void 0;return Xs("div",{className:As(se,`${se}-calculated`),onClick:e,children:[W("span",{className:l,children:r}),W("span",{children:":"}),W("span",{children:n||"string"}),W("span",{children:":"}),W("span",{className:u,children:a}),W("span",{className:`${se}-edit`,"data-icon":"edit"})]})}else return W("div",{className:se,children:t.name})};import{getRegisteredCellRenderers as Ve,isValidColumnAlignment as Us,isValidPinLocation as Ws,setCalculatedColumnName as Ys,updateColumnRenderProps as Gs,updateColumnFormatting as qs,updateColumnType as _s,queryClosest as Js}from"@vuu-ui/vuu-utils";import{useCallback as P,useEffect as Ks,useMemo as js,useRef as ei,useState as ho}from"react";var ti=[{description:"Default formatter for columns with data type integer",label:"Default Renderer (int, long)",name:"default-int"}],oi=[{description:"Default formatter for columns with data type double",label:"Default Renderer (double)",name:"default-double"}],bo=[{description:"Default formatter for columns with data type string",label:"Default Renderer (string)",name:"default-string"}],ni=[],ri=t=>{switch(t.serverDataType){case"char":case"string":return bo.concat(Ve("string"));case"int":case"long":return ti.concat(Ve("int"));case"double":return oi.concat(Ve("double"));case"boolean":return ni.concat(Ve("boolean"));default:return bo}},yo=t=>{let e=t.closest(".saltFormField");if(e&&e.dataset.field){let{dataset:{field:o}}=e;return o}else throw Error("named form field not found")},si=(t,e)=>{if(e.name==="::")return e;{let o=t.find(n=>n.name===e.name);if(o)return o;throw Error(`columns does not contain column ${name}`)}},ie=(t,e)=>({...t,columns:t.columns.map(o=>o.name===e.name?e:o)}),Eo=({column:t,onCancelCreateColumn:e,onConfigChange:o,onCreateCalculatedColumn:n,tableConfig:s})=>{let[r,a]=ho(si(s.columns,t)),l=ei(r),[u,m]=ho(r.name==="::"),d=P(()=>{l.current=r,m(!0)},[r]);Ks(()=>{a(t),m(t.name==="::")},[t]);let g=js(()=>ri(r),[r]),p=P(()=>{o(ie(s,r))},[r,o,s]),i=P(O=>{let E=Js(O.target,"button");if(E){let me=yo(E),{value:B}=E;switch(me){case"column-alignment":if(Us(B)){let L={...r,align:B||void 0};a(L),o(ie(s,L))}break;case"column-pin":if(Ws(B)){let L={...r,pin:B||void 0};a(L),o(ie(s,L));break}}}},[r,o,s]),c=P(O=>{let E=O.target,me=yo(E),{value:B}=E;switch(me){case"column-label":a(L=>({...L,label:B}));break;case"column-name":a(L=>Ys(L,B));break;case"column-width":a(L=>({...L,width:parseInt(B)}));break}},[]),C=P(O=>{a(E=>({...E,name:O}))},[]),v=P(O=>{let E=qs(r,O);a(E),o(ie(s,E))},[r,o,s]),x=P(O=>{let E=_s(r,O);a(E),o(ie(s,E))},[r,o,s]),h=P(O=>{a(E=>({...E,serverDataType:O}))},[]),w=P(O=>{if(O){let E=Gs(r,O);a(E),o(ie(s,E))}},[r,o,s]),T=P(({moveBy:O})=>{let{columns:E}=s,me=E.indexOf(r)+O,B=E[me];B&&a(B)},[r,s]),Te=P(()=>{T({moveBy:1})},[T]),$e=P(()=>{T({moveBy:-1})},[T]),Ae=P(()=>{n(r)},[r,n]),ze=P(()=>{t.name==="::"?e():(l.current!==void 0&&l.current!==r&&a(l.current),m(!1))},[r,t.name,e]);return{availableRenderers:g,editCalculatedColumn:u,column:r,navigateNextColumn:Te,navigatePrevColumn:$e,onCancel:ze,onChange:c,onChangeCalculatedColumnName:C,onChangeFormatting:v,onChangeRendering:w,onChangeServerDataType:h,onChangeToggleButton:i,onChangeType:x,onEditCalculatedColumn:d,onInputCommit:p,onSave:Ae}};import{jsx as y,jsxs as Q}from"react/jsx-runtime";var A="vuuColumnSettingsPanel",pi=t=>{let{name:e,label:o}=t;return li(e)?o!=null?o:ii(t):o!=null?o:e},cc=({column:t,onCancelCreateColumn:e,onConfigChange:o,onCreateCalculatedColumn:n,tableConfig:s,vuuTable:r})=>{let a=t.name==="::",{availableRenderers:l,editCalculatedColumn:u,column:m,navigateNextColumn:d,navigatePrevColumn:g,onCancel:p,onChange:i,onChangeCalculatedColumnName:c,onChangeFormatting:C,onChangeRendering:v,onChangeServerDataType:x,onChangeToggleButton:h,onChangeType:w,onEditCalculatedColumn:T,onInputCommit:Te,onSave:$e}=Eo({column:t,onCancelCreateColumn:e,onConfigChange:o,onCreateCalculatedColumn:n,tableConfig:s}),{serverDataType:Ae,align:ze=ai(Ae),pin:O,width:E}=m;return Q("div",{className:ui(A,{[`${A}-editing`]:u}),children:[y("div",{className:`${A}-header`,children:y(xo,{column:m,onClick:T})}),u?y(so,{column:m,onChangeName:c,onChangeServerDataType:x,tableConfig:s,vuuTable:r}):null,Q(Qe,{"data-field":"column-label",children:[y(Ie,{children:"Column Label"}),y(wo,{className:"vuuInput",onChange:i,onCommit:Te,value:pi(m)})]}),Q(Qe,{"data-field":"column-width",children:[y(Ie,{children:"Column Width"}),y(wo,{className:"vuuInput",onChange:i,value:E,onCommit:Te})]}),Q(Qe,{"data-field":"column-alignment",children:[y(Ie,{children:"Alignment"}),Q(Oo,{onChange:h,value:ze,children:[y(le,{value:"left",children:y(ae,{name:"align-left",size:16})}),y(le,{value:"right",children:y(ae,{name:"align-right",size:16})})]})]}),Q(Qe,{"data-field":"column-pin",children:[y(Ie,{children:"Pin Column"}),Q(Oo,{onChange:h,value:O!=null?O:"",children:[y(le,{value:"",children:y(ae,{name:"cross-circle",size:16})}),y(le,{value:"left",children:y(ae,{name:"pin-left",size:16})}),y(le,{value:"floating",children:y(ae,{name:"pin-float",size:16})}),y(le,{value:"right",children:y(ae,{name:"pin-right",size:16})})]})]}),y(vo,{availableRenderers:l,column:m,onChangeFormatting:C,onChangeRendering:v,onChangeColumnType:w}),u?Q("div",{className:"vuuColumnSettingsPanel-buttonBar","data-align":"right",children:[y(Me,{className:`${A}-buttonCancel`,onClick:p,tabIndex:-1,children:"cancel"}),y(Me,{className:`${A}-buttonSave`,onClick:$e,variant:"cta",children:"save"})]}):Q("div",{className:`${A}-buttonBar`,"data-align":a?"right":void 0,children:[y(Me,{className:`${A}-buttonNavPrev`,variant:"secondary","data-icon":"arrow-left",onClick:g,children:"PREVIOUS"}),y(Me,{className:`${A}-buttonNavNext`,variant:"secondary","data-icon":"arrow-right",onClick:d,children:"NEXT"})]})]})};import ci from"clsx";import{useEffect as mi,useState as So}from"react";import{jsx as ue,jsxs as di}from"react/jsx-runtime";var Oe="vuuDatasourceStats",xt=new Intl.NumberFormat,Ec=({className:t,dataSource:e})=>{let[o,n]=So(e.range),[s,r]=So(e.size);mi(()=>(r(e.size),e.on("resize",r),e.on("range",n),()=>{e.removeListener("resize",r),e.removeListener("range",n)}),[e]);let a=ci(Oe,t),l=xt.format(o.from+1),u=xt.format(Math.min(o.to,s)),m=xt.format(s);return di("div",{className:a,children:[ue("span",{className:`${Oe}-label`,children:"Row count"}),ue("span",{className:`${Oe}-range`,children:l}),ue("span",{children:"-"}),ue("span",{className:`${Oe}-range`,children:u}),ue("span",{children:"of"}),ue("span",{className:`${Oe}-size`,children:m})]})};import{Button as Oi,FormField as ht,FormFieldLabel as bt,ToggleButton as pe,ToggleButtonGroup as Si}from"@salt-ds/core";import{updateTableConfig as gi}from"@vuu-ui/vuu-table";import{addColumnToSubscribedColumns as fi,queryClosest as To,isCalculatedColumn as Ci,moveItem as vi,subscribedOnly as xi,useLayoutEffectSkipFirst as hi}from"@vuu-ui/vuu-utils";import{useCallback as Se,useMemo as bi,useState as yi}from"react";var Ei=(t,e)=>{let o=[];for(let{name:n}of t){let s=e.find(r=>r.name===n);s&&o.push(s)}return o},wi=(t,e)=>t.map(({name:o,serverDataType:n})=>{let s=e.find(r=>r.name===o);return{hidden:s==null?void 0:s.hidden,isCalculated:Ci(o),label:s==null?void 0:s.label,name:o,serverDataType:n,subscribed:s!==void 0}}),ko=({availableColumns:t,onConfigChange:e,onDataSourceConfigChange:o,tableConfig:n})=>{let[{availableColumns:s,tableConfig:r},a]=yi({availableColumns:t,tableConfig:n}),l=bi(()=>wi(s,r.columns),[s,r.columns]),u=Se((c,C)=>{a(v=>{let x=vi(v.availableColumns,c,C),h=Ei(x,r.columns);return{availableColumns:x,tableConfig:{...v.tableConfig,columns:h}}})},[r.columns]),m=Se((c,C,v)=>{let x=l.find(h=>h.name===c);if(C==="subscribed")if(x!=null&&x.subscribed){let h=r.columns.filter(w=>w.name!==c).map(w=>w.name);a(w=>({...w,tableConfig:{...r,columns:r.columns.filter(xi(h))}})),o({columns:h})}else{let h={...r,columns:fi(r.columns,s,c)};a(T=>({...T,tableConfig:h}));let w=h.columns.map(T=>T.name);o({columns:w})}else if(x!=null&&x.subscribed){let h=r.columns.find(w=>w.name===c);if(h){let w=gi(r,{type:"column-prop",property:C,column:h,value:v});a(T=>({...T,tableConfig:w}))}}},[s,l,o,r]),d=Se(c=>{let C=To(c.target,"button");if(C){let v=parseInt(C.value),x=v===0?void 0:v===1?"capitalize":"uppercase";a(h=>({...h,tableConfig:{...h.tableConfig,columnFormatHeader:x}}))}},[]),g=Se(c=>{let C=To(c.target,"button"),{ariaPressed:v,value:x}=C;console.log({ariaPressed:v,value:x,button:C}),a(h=>({...h,tableConfig:{...h.tableConfig,[x]:v!=="true"}}))},[]),p=Se((c,C)=>{let v=parseInt(C);isNaN(v)||a(x=>({...x,tableConfig:{...x.tableConfig,columnDefaultWidth:v}})),console.log({value:C})},[]);hi(()=>{e==null||e(r)},[e,r]);let i=r.columnFormatHeader===void 0?0:r.columnFormatHeader==="capitalize"?1:2;return{columnItems:l,columnLabelsValue:i,onChangeColumnLabels:d,onChangeTableAttribute:g,onColumnChange:m,onCommitColumnWidth:p,onMoveListItem:u,tableConfig:r}};import{Icon as ce}from"@vuu-ui/vuu-ui-controls";import{VuuInput as Ti}from"@vuu-ui/vuu-ui-controls";import{jsx as S,jsxs as Y}from"react/jsx-runtime";var yt="vuuTableSettingsPanel",Ac=({availableColumns:t,onAddCalculatedColumn:e,onConfigChange:o,onDataSourceConfigChange:n,onNavigateToColumn:s,tableConfig:r})=>{var c,C,v;let{columnItems:a,columnLabelsValue:l,onChangeColumnLabels:u,onChangeTableAttribute:m,onColumnChange:d,onCommitColumnWidth:g,onMoveListItem:p,tableConfig:i}=ko({availableColumns:t,onConfigChange:o,onDataSourceConfigChange:n,tableConfig:r});return Y("div",{className:yt,children:[Y(ht,{children:[S(bt,{children:"Column Labels"}),Y(Si,{className:"vuuToggleButtonGroup",onChange:u,value:l,children:[S(pe,{className:"vuuIconToggleButton",value:0,children:S(ce,{name:"text-strikethrough",size:48})}),S(pe,{className:"vuuIconToggleButton",value:1,children:S(ce,{name:"text-Tt",size:48})}),S(pe,{className:"vuuIconToggleButton",value:2,children:S(ce,{name:"text-T",size:48})})]})]}),Y(ht,{children:[S(bt,{children:"Grid separators"}),Y("div",{className:"saltToggleButtonGroup vuuStateButtonGroup saltToggleButtonGroup-horizontal",children:[S(pe,{selected:(c=i.zebraStripes)!=null?c:!1,onChange:m,value:"zebraStripes",children:S(ce,{name:"row-striping",size:16})}),S(pe,{selected:(C=i.rowSeparators)!=null?C:!1,onChange:m,value:"rowSeparators",children:S(ce,{name:"row-lines",size:16})}),S(pe,{selected:(v=i.columnSeparators)!=null?v:!1,onChange:m,value:"columnSeparators",children:S(ce,{name:"col-lines",size:16})})]})]}),Y(ht,{children:[S(bt,{children:"Default Column Width"}),S(Ti,{className:"vuuInput",onCommit:g})]}),S(Rt,{columnItems:a,onChange:d,onMoveListItem:p,onNavigateToColumn:s}),Y("div",{className:`${yt}-calculatedButtonbar`,children:[S(Oi,{"data-icon":"plus",onClick:e}),S("span",{className:`${yt}-calculatedLabel`,children:"Add calculated column"})]})]})};export{en as BackgroundCell,mn as BackgroundCellConfigurationEditor,He as BaseNumericFormattingSettings,Bo as CaseValidator,st as ColumnExpressionInput,so as ColumnExpressionPanel,vo as ColumnFormattingPanel,Rt as ColumnList,Ke as ColumnNamedTerms,cc as ColumnSettingsPanel,Ec as DataSourceStats,po as DateTimeFormattingSettings,kn as DropdownCell,Rn as LookupCell,No as PatternValidator,Mn as PctProgressCell,Ac as TableSettingsPanel,Nt as columnExpressionLanguageSupport,Qt as isCompleteExpression,It as isCompleteRelationalExpression,je as lastNamedChild,Kt as useColumnExpressionEditor,to as useColumnExpressionSuggestionProvider,ko as useTableSettings,Vt as walkTree};
2
2
  //# sourceMappingURL=index.js.map