@vuu-ui/vuu-table-extras 0.8.27 → 0.8.28

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