@vuu-ui/vuu-table-extras 0.6.21 → 0.6.22
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 Je=(n,e,t)=>{if(!e.has(n))throw TypeError("Cannot "+t)};var u=(n,e,t)=>(Je(n,e,"read from private field"),t?t.call(n):e.get(n)),S=(n,e,t)=>{if(e.has(n))throw TypeError("Cannot add the same private member more than once");e instanceof WeakSet?e.add(n):e.set(n,t)},N=(n,e,t,o)=>(Je(n,e,"write to private field"),o?o.call(n,t):e.set(n,t),t);import{DOWN1 as Jn,DOWN2 as qn,metadataKeys as _n,registerComponent as Kn,UP1 as jn,UP2 as et}from"@vuu-ui/vuu-utils";import nt from"classnames";import{useEffect as Hn,useRef as Vn}from"react";import{isTypeDescriptor as zn}from"@vuu-ui/vuu-utils";import{getMovingValueDirection as Yn,isValidNumber as qe}from"@vuu-ui/vuu-utils";var Zn=[void 0,void 0,void 0,void 0];function _e(n,e,t){var x;let o=Vn(),[i,r,s,p]=o.current||Zn,{type:l}=t,c=zn(l)?(x=l.formatting)==null?void 0:x.decimals:void 0,C=n===i&&qe(e)&&qe(r)&&t===s?Yn(e,p,r,c):"";return Hn(()=>{o.current=[n,e,t,C]}),C}import{jsx as at,jsxs as lt}from"react/jsx-runtime";var tt=String.fromCharCode(11014),ot=String.fromCharCode(11015),{KEY:rt}=_n,ge="vuuBackgroundCell",G={ArrowOnly:"arrow",BackgroundOnly:"bg-only",ArrowBackground:"arrow-bg"},st=n=>{if(typeof n=="string")return G.BackgroundOnly;if(n){let{renderer:e}=n;return e&&e.flashStyle||G.BackgroundOnly}},it=({column:n,row:e})=>{let{key:t,type:o,valueFormatter:i}=n,r=e[t],s=st(o),p=_e(e[rt],r,n),l=s===G.ArrowOnly||s===G.ArrowBackground?p===jn||p===et?tt:p===Jn||p===qn?ot:null:null,c=p?" "+p:"",C=nt(ge,c,{[`${ge}-arrowOnly`]:s===G.ArrowOnly,[`${ge}-arrowBackground`]:s===G.ArrowBackground});return lt("div",{className:C,tabIndex:-1,children:[at("div",{className:`${ge}-flasher`,children:l}),i(e[n.key])]})};Kn("background",it,"cell-renderer",{serverDataType:["long","int","double"]});import{autocompletion as Dt,defaultKeymap as Rt,EditorState as At,EditorView as dn,ensureSyntaxTree as kt,keymap as Le,minimalSetup as Nt,startCompletion as gn}from"@vuu-ui/vuu-codemirror";import{createEl as fn}from"@vuu-ui/vuu-utils";import{useEffect as Qt,useMemo as Ft,useRef as Ie}from"react";import{LanguageSupport as ut,LRLanguage as ct,styleTags as mt,tags as Ce}from"@vuu-ui/vuu-codemirror";import{LRParser as pt}from"@lezer/lr";var fe=pt.deserialize({version:14,states:"&fOVQPOOO!SQPO'#C^OVQPO'#CcQ!pQPOOO#OQPO'#CkO#TQPO'#CrOOQO'#Cy'#CyO#YQPO,58}OVQPO,59QOVQPO,59QOVQPO,59VOVQPO'#CtOOQO,59^,59^OOQO1G.i1G.iOOQO1G.l1G.lO#kQPO1G.lO$fQPO'#CmO%WQQO1G.qOOQO'#C{'#C{O%cQPO,59`OOQO'#Cn'#CnO%wQPO,59XOVQPO,59ZOVQPO,59[OVQPO7+$]OVQPO'#CuO&`QPO1G.zOOQO1G.z1G.zO&hQQO'#C^O&rQQO1G.sO'ZQQO1G.uOOQO1G.v1G.vO'fQPO<<GwO'wQPO,59aOOQO-E6s-E6sOOQO7+$f7+$fOVQPOAN=cO(]QQO1G.lO(tQPOG22}OOQOLD(iLD(iO%wQPO,59QO%wQPO,59Q",stateData:")[~OlOS~ORUOSUOTUOUUOWQO`SOnPO~OWgXZQX[QX]QX^QXeQX~OjQXXQXpQXqQXrQXsQXtQXuQX~PnOZWO[WO]XO^XO~OWYO~OWZO~OX]OZWO[WO]XO^XO~OZWO[WO]Yi^YijYiXYipYiqYirYisYitYiuYieYi~OZWO[WO]XO^XOpdOqdOrdOsdOtdOudO~OehOvfOwgO~OXkOZWO[WO]XO^XOeiO~ORUOSUOTUOUUOWQO`SOnlO~OXsOeiO~OvQXwQX~PnOZxO[xO]yO^yOeaivaiwai~OwgOecivci~OZWO[WO]XO^XOetO~OZWO[WO]XO^XOXiaeia~OZxO[xO]Yi^YieYivYiwYi~OXwOZWO[WO]XO^XO~O`UTn~",goto:"#spPPqPPPPqPPqPPPPqP!R!W!R!RPq!Z!k!nPPP!tP#jmUOQWXYZefghitxyVbYfgRe`mTOQWXYZefghitxyR[TQjcRrjQROQVQS^WxQ_XU`YfgQcZQmeQphQqiQuyRvtQaYQnfRog",nodeNames:"\u26A0 ColumnDefinitionExpression Column Number String True False ParenthesizedExpression OpenBrace CloseBrace ArithmeticExpression Divide Times Plus Minus ConditionalExpression If RelationalExpression RelationalOperator AndCondition OrCondition Comma CallExpression Function ArgList",maxTerm:39,skippedNodes:[0],repeatNodeCount:1,tokenData:".^~RnXY#PYZ#P]^#Ppq#Pqr#brs#mxy$eyz$jz{$o{|$t|}$y}!O%O!O!P%T!P!Q%c!Q![%h!^!_%s!_!`&Q!`!a&V!c!}&d#R#S&d#T#U&u#U#Y&d#Y#Z(Y#Z#]&d#]#^*j#^#c&d#c#d+f#d#h&d#h#i,b#i#o&d~#USl~XY#PYZ#P]^#Ppq#P~#eP!_!`#h~#mOu~~#pWOX#mZ]#m^r#mrs$Ys#O#m#P;'S#m;'S;=`$_<%lO#m~$_OS~~$bP;=`<%l#m~$jOW~~$oOX~~$tO[~~$yO]~~%OOe~~%TO^~~%WP!Q![%Z~%`PR~!Q![%Z~%hOZ~~%mQR~!O!P%Z!Q![%h~%xPr~!_!`%{~&QOt~~&VOp~~&[Pq~!_!`&_~&dOs~P&iSnP!Q![&d!c!}&d#R#S&d#T#o&dR&zUnP!Q![&d!c!}&d#R#S&d#T#b&d#b#c'^#c#o&dR'cUnP!Q![&d!c!}&d#R#S&d#T#W&d#W#X'u#X#o&dR'|SvQnP!Q![&d!c!}&d#R#S&d#T#o&d~(_TnP!Q![&d!c!}&d#R#S&d#T#U(n#U#o&d~(sUnP!Q![&d!c!}&d#R#S&d#T#`&d#`#a)V#a#o&d~)[UnP!Q![&d!c!}&d#R#S&d#T#g&d#g#h)n#h#o&d~)sUnP!Q![&d!c!}&d#R#S&d#T#X&d#X#Y*V#Y#o&d~*^SU~nP!Q![&d!c!}&d#R#S&d#T#o&d~*oUnP!Q![&d!c!}&d#R#S&d#T#Y&d#Y#Z+R#Z#o&d~+YS`~nP!Q![&d!c!}&d#R#S&d#T#o&dR+kUnP!Q![&d!c!}&d#R#S&d#T#f&d#f#g+}#g#o&dR,USwQnP!Q![&d!c!}&d#R#S&d#T#o&d~,gUnP!Q![&d!c!}&d#R#S&d#T#f&d#f#g,y#g#o&d~-OUnP!Q![&d!c!}&d#R#S&d#T#i&d#i#j-b#j#o&d~-gUnP!Q![&d!c!}&d#R#S&d#T#X&d#X#Y-y#Y#o&d~.QST~nP!Q![&d!c!}&d#R#S&d#T#o&d",tokenizers:[0,1],topRules:{ColumnDefinitionExpression:[0,1]},tokenPrec:375});var dt=ct.define({name:"VuuColumnExpression",parser:fe.configure({props:[mt({Function:Ce.variableName,String:Ce.string,Or:Ce.emphasis,Operator:Ce.operator})]})}),Ke=()=>new ut(dt);var Pe=class{constructor(e){switch(this.value=e,typeof e){case"boolean":this.type="booleanLiteralExpression";break;case"number":this.type="numberLiteralExpression";break;default:this.type="stringLiteralExpression"}}toJSON(){return{type:this.type,value:this.value}}},Se=class{constructor(e){this.type="colExpression";this.column=e}toJSON(){return{type:this.type,column:this.column}}},se,F,Te=class{constructor(e="unknown"){S(this,se,[{type:"unknown"},{type:"unknown"}]);S(this,F,void 0);this.type="arithmeticExpression";N(this,F,e)}get op(){return u(this,F)}set op(e){N(this,F,e)}get expressions(){return u(this,se)}toJSON(){return{type:this.type,op:u(this,F),expressions:u(this,se)}}};se=new WeakMap,F=new WeakMap;var H,we=class{constructor(e){S(this,H,[]);this.type="callExpression";this.functionName=e}get expressions(){return u(this,H)}get arguments(){return u(this,H)}toJSON(){return{type:this.type,functionName:this.functionName,arguments:u(this,H).map(e=>{var t;return(t=e.toJSON)==null?void 0:t.call(e)})}}};H=new WeakMap;var ie,V,W=class{constructor(){S(this,ie,[{type:"unknown"},{type:"unknown"}]);S(this,V,"unknown");this.type="relationalExpression"}get op(){return u(this,V)}set op(e){N(this,V,e)}get expressions(){return u(this,ie)}toJSON(){return{type:this.type,op:u(this,V),expressions:u(this,ie)}}};ie=new WeakMap,V=new WeakMap;var ae,z,X=class{constructor(e){S(this,ae,[{type:"unknown"},{type:"unknown"}]);S(this,z,void 0);this.type="booleanCondition";N(this,z,e)}get op(){return u(this,z)}get expressions(){return u(this,ae)}toJSON(){return{type:this.type,op:u(this,z),expressions:u(this,ae).map(e=>{var t;return(t=e.toJSON)==null?void 0:t.call(e)})}}};ae=new WeakMap,z=new WeakMap;var T,re=class{constructor(e){S(this,T,void 0);this.type="conditionalExpression";N(this,T,[e?new X(e):new W,{type:"unknown"},{type:"unknown"}])}get expressions(){return u(this,T)}get condition(){return u(this,T)[0]}get truthyExpression(){return u(this,T)[1]}set truthyExpression(e){u(this,T)[1]=e}get falsyExpression(){return u(this,T)[2]}set falsyExpression(e){u(this,T)[2]=e}toJSON(){var e,t,o,i,r;return{type:this.type,condition:(t=(e=this.condition).toJSON)==null?void 0:t.call(e),truthyExpression:this.truthyExpression,falsyExpression:(r=(i=(o=this.falsyExpression)==null?void 0:o.toJSON)==null?void 0:i.call(o))!=null?r:this.falsyExpression}}};T=new WeakMap;var Q=n=>n.type==="unknown",xe=n=>n.type==="arithmeticExpression",gt=n=>n.type==="callExpression",M=n=>n.type==="conditionalExpression",ft=n=>n.type==="relationalExpression"||n.type==="booleanCondition";var Ct=n=>n.type==="booleanCondition",Re=n=>(n==null?void 0:n.type)==="relationalExpression";var P=n=>{if(Q(n))return n;if(Re(n)){let[e,t]=n.expressions;if(O(e))return P(e);if(n.op==="unknown")return n;if(O(t))return P(t)}else if(ft(n)){let{expressions:e=[]}=n;for(let t of e)if(O(t))return P(t)}else if(M(n)){let{condition:e,truthyExpression:t,falsyExpression:o}=n;if(O(e))return P(e);if(O(t))return P(t);if(O(o))return P(o)}else if(xe(n)){let{expressions:e=[]}=n;for(let t of e)if(O(t))return P(t)}},he=(n,e,t)=>{let{expressions:o=[]}=n;if(o.includes(e)){let i=o.indexOf(e);return o.splice(i,1,t),!0}else for(let i of o)if(he(i,e,t))return!0;return!1},O=n=>Q(n)?!0:M(n)?O(n.condition)||O(n.truthyExpression)||O(n.falsyExpression):Re(n)||Ct(n)?n.op===void 0||n.expressions.some(e=>O(e)):!1,je=(n,e)=>{let t=P(n);t?t.expressions?t.expressions.push(e):console.warn("don't know how to treat targetExpression"):console.error("no target expression found")},f,L,De=class{constructor(){S(this,f,void 0);S(this,L,[])}setCondition(e){if(u(this,f)===void 0)this.addExpression(new re(e));else if(M(u(this,f))){if(O(u(this,f).condition)){let t=e?new X(e):new W;this.addExpression(t)}else if(Q(u(this,f).truthyExpression))u(this,f).truthyExpression=new re(e);else if(O(u(this,f).truthyExpression)){let t=e?new X(e):new W;this.addExpression(t)}else if(Q(u(this,f).falsyExpression))u(this,f).falsyExpression=new re(e);else if(O(u(this,f).falsyExpression)){let t=e?new X(e):new W;this.addExpression(t)}}else console.error("setCondition called unexpectedly")}addExpression(e){if(u(this,L).length>0){let t=u(this,L).at(-1);t==null||t.arguments.push(e)}else if(u(this,f)===void 0)N(this,f,e);else if(xe(u(this,f))){let t=P(u(this,f));t&&Q(t)&&he(u(this,f),t,e)}else if(M(u(this,f))&&O(u(this,f))){let t=P(u(this,f));t&&Q(t)?he(u(this,f),t,e):t&&je(t,e)}}setFunction(e){let t=new we(e);this.addExpression(t),u(this,L).push(t)}setColumn(e){this.addExpression(new Se(e))}setArithmeticOp(e){let t=e,o=u(this,f);xe(o)&&(o.op=t)}setRelationalOperator(e){let t=e;if(u(this,f)&&M(u(this,f))){let o=P(u(this,f));Re(o)?o.op=t:console.error(`no target expression found (op = ${e})`)}}setValue(e){let t=new Pe(e);if(u(this,f)===void 0)N(this,f,t);else if(xe(u(this,f)))this.addExpression(t);else if(gt(u(this,f)))u(this,f).arguments.push(t);else if(M(u(this,f)))if(O(u(this,f))){let o=P(u(this,f));o&&Q(o)?he(u(this,f),o,t):o&&je(o,t)}else console.log("what do we do with value, in a complete expression")}closeBrace(){u(this,L).pop()}get expression(){return u(this,f)}toJSON(){var e;return(e=u(this,f))==null?void 0:e.toJSON()}};f=new WeakMap,L=new WeakMap;var en=(n,e)=>{let t=new De,o=n.cursor();do{let{name:i,from:r,to:s}=o;switch(i){case"AndCondition":t.setCondition("and");break;case"OrCondition":t.setCondition("or");break;case"RelationalExpression":t.setCondition();break;case"ArithmeticExpression":t.addExpression(new Te);break;case"Column":{let p=e.substring(r,s);t.setColumn(p)}break;case"Function":{let p=e.substring(r,s);t.setFunction(p)}break;case"Times":case"Divide":case"Plus":case"Minus":{let p=e.substring(r,s);t.setArithmeticOp(p)}break;case"RelationalOperator":{let p=e.substring(r,s);t.setRelationalOperator(p)}break;case"False":case"True":{let p=e.substring(r,s);t.setValue(p==="true")}break;case"String":t.setValue(e.substring(r+1,s-1));break;case"Number":t.setValue(parseFloat(e.substring(r,s)));break;case"CloseBrace":t.closeBrace();break;default:}}while(o.next());return t.toJSON()};var xt=fe.configure({strict:!0}),nn=["Number","String"],Ae=[...nn,"AndCondition","ArithmeticExpression","BooleanOperator","RelationalOperatorOperator","CallExpression","CloseBrace","Column","Comma","ConditionalExpression","Divide","Equal","If","Minus","OpenBrace","OrCondition","ParenthesizedExpression","Plus","RelationalExpression","RelationalOperator","Times"],tn=n=>{try{return xt.parse(n),!0}catch{return!1}},ke=n=>{let{lastChild:e}=n;for(;e&&!Ae.includes(e.name);)e=e.prevSibling,console.log(e==null?void 0:e.name);return e},on=n=>{if((n==null?void 0:n.name)==="RelationalExpression"){let{firstChild:e}=n,t=ke(n);if((e==null?void 0:e.name)==="Column"&&typeof(t==null?void 0:t.name)=="string"&&nn.includes(t.name))return!0}return!1};import{HighlightStyle as ht,syntaxHighlighting as yt,tags as rn}from"@vuu-ui/vuu-codemirror";var bt=ht.define([{tag:rn.variableName,color:"var(--vuuFilterEditor-variableColor)"},{tag:rn.comment,color:"green",fontStyle:"italic"}]),sn=yt(bt);import{EditorView as Et}from"@vuu-ui/vuu-codemirror";var an=Et.theme({"&":{border:"solid 1px var(--salt-container-primary-borderColor)",color:"var(--vuuFilterEditor-color)",backgroundColor:"var(--vuuFilterEditor-background)"},".cm-content":{caretColor:"var(--vuuFilterEditor-cursorColor)"},"&.cm-focused .cm-cursor":{borderLeftColor:"var(--vuuFilterEditor-cursorColor)"},"&.cm-focused .cm-selectionBackground, ::selection":{backgroundColor:"var(--vuuFilterEditor-selectionBackground)"},".cm-selectionBackground, ::selection":{backgroundColor:"var(--vuuFilterEditor-selectionBackground)"},".cm-scroller":{fontFamily:"var(--vuuFilterEditor-fontFamily)"},".cm-tooltip":{background:"var(--vuuFilterEditor-tooltipBackground)",border:"var(--vuuFilterEditor-tooltipBorder)",boxShadow:"var(--vuuFilterEditor-tooltipElevation)","&.cm-tooltip-autocomplete > ul":{fontFamily:"var(--vuuFilterEditor-fontFamily)",fontSize:"var(--vuuFilterEditor-fontSize)",maxHeight:"240px"},"&.cm-tooltip-autocomplete > ul > li":{height:"var(--vuuFilterEditor-suggestion-height)",padding:"0 3px",lineHeight:"var(--vuuFilterEditor-suggestion-height)"},"&.cm-tooltip-autocomplete li[aria-selected]":{background:"var(--vuuFilterEditor-suggestion-selectedBackground)",color:"var(--vuuFilterEditor-suggestion-selectedColor)"},"&.cm-tooltip-autocomplete li .cm-completionDetail":{color:"var(--vuuFilterEditor-suggestion-detailColor)"}}},{dark:!1});import{booleanJoinSuggestions as Ot,getNamedParentNode as ln,getPreviousNode as vt,getValue as R,syntaxTree as Pt}from"@vuu-ui/vuu-codemirror";import{useCallback as pn}from"react";var St=(n,e)=>e?n.map(t=>{var o;return{...t,apply:typeof t.apply=="function"?t.apply:`${e}${(o=t.apply)!=null?o:t.label}`}}):n,Tt=n=>n===void 0?!1:["Times","Divide","Plus","Minus"].includes(n.name),Y=(n,e)=>{var i;let{lastChild:t}=n,{pos:o}=e;for(;t;)if(t.from<o&&Ae.includes(t.name)){if(t.name==="ParenthesizedExpression"){let s=(i=t.firstChild)==null?void 0:i.nextSibling;s&&(t=s)}return t}else t=t.prevSibling},un=(n,e)=>{var t;if(n.name==="ArgList"){let o=n.prevSibling;if(o)return R(o,e)}else if(n.name==="OpenBrace"){let o=(t=n.parent)==null?void 0:t.prevSibling;if((o==null?void 0:o.name)==="Function")return R(o,e)}},cn=(n,e)=>{if(n.name==="RelationalExpression"){let t=ke(n);if((t==null?void 0:t.name)==="RelationalOperator")return R(t,e)}else{let t=n.prevSibling;if((t==null?void 0:t.name)==="RelationalOperator")return R(t,e)}},Fe=(n,e)=>{var t;if(n.name==="RelationalExpression"){if(((t=n.firstChild)==null?void 0:t.name)==="Column")return R(n.firstChild,e)}else{let o=n.prevSibling;if((o==null?void 0:o.name)==="Column")return R(o,e);if((o==null?void 0:o.name)==="RelationalOperator")return Fe(o,e)}},Ne=async(n,e,t,o={})=>{let i=await e.getSuggestions(t,o),{startsWith:r=""}=o;return{from:n.pos-r.length,options:i}},Qe=(n,e,t,o,i)=>{let r=Y(n,e);switch(console.log(`conditional expression last child ${r==null?void 0:r.name}`),r==null?void 0:r.name){case"If":return Ne(e,t,"expression",{prefix:"( "});case"OpenBrace":return Ne(e,t,"expression");case"Condition":return Ne(e,t,"expression",{prefix:", "});case"CloseBrace":if(o){let s=[{apply:()=>{i==null||i()},label:"Save Expression",boost:10}];return{from:e.pos,options:s}}}},wt=(n,e)=>{let t=[{apply:()=>{e==null||e()},label:"Save Expression",boost:10}];return{from:n.pos,options:t}},mn=(n,e)=>{let t=pn(async(o,i,r={})=>{let s=await n.getSuggestions(i,r),{startsWith:p=""}=r;return{from:o.pos-p.length,options:s}},[n]);return pn(async o=>{var x,h;let{state:i,pos:r}=o,s=(x=o.matchBefore(/\w*/))!=null?x:{from:0,to:0,text:void 0},l=Pt(i).resolveInner(r,-1),c=i.doc.toString(),C=tn(c);switch(console.log({nodeBeforeName:l.name}),l.name){case"If":return console.log("conditional expression If"),t(o,"expression",{prefix:"( "});case"Condition":{let a=Y(l,o);if((a==null?void 0:a.name)==="Column"){let m=vt(a);if((m==null?void 0:m.name)!=="RelationalOperator")return t(o,"condition-operator",{columnName:R(a,i)});console.log(`Condition last child Column, prev child ${m==null?void 0:m.name}`)}else if((a==null?void 0:a.name)==="RelationalOperator")return t(o,"expression");console.log(`condition last child ${a==null?void 0:a.name}`)}break;case"ConditionalExpression":return Qe(l,o,n);case"RelationalExpression":{if(on(l))return{from:o.pos,options:Ot.concat({label:", <truthy expression>, <falsy expression>",apply:", "})};{let a=cn(l,i),m=Fe(l,i);if(a)return t(o,"expression");{let g=await n.getSuggestions("condition-operator",{columnName:m});return{from:o.pos,options:g}}}}break;case"RelationalOperator":return t(o,"expression");case"String":{let a=cn(l,i),m=Fe(l,i),{from:g,to:d}=l;if(d-g===2&&o.pos===g+1){if(m&&a)return t(o,"columnValue",{columnName:m,operator:a,startsWith:s.text})}else if(d-g>2&&o.pos===d)return t(o,"expression",{prefix:", "});console.log(`we have a string, column is ${m} ${g} ${d}`)}break;case"ArithmeticExpression":{let a=Y(l,o);if((a==null?void 0:a.name)==="Column")return t(o,"expression");if(Tt(a)){let m=a.name;return t(o,"column",{operator:m})}}break;case"OpenBrace":{let a=un(l,i);return t(o,"expression",{functionName:a})}break;case"ArgList":{let a=un(l,i),m=Y(l,o),g=(m==null?void 0:m.name)==="OpenBrace"?void 0:",",d=await n.getSuggestions("expression",{functionName:a});return d=g?St(d,", "):d,(m==null?void 0:m.name)!=="OpenBrace"&&(m==null?void 0:m.name)!=="Comma"&&(d=[{apply:") ",boost:10,label:"Done - no more arguments"}].concat(d)),{from:o.pos,options:d}}case"Equal":if(c.trim()==="=")return t(o,"expression");break;case"ParenthesizedExpression":case"ColumnDefinitionExpression":if(o.pos===0)return t(o,"expression");{let a=Y(l,o);if((a==null?void 0:a.name)==="Column"){if(C){let m=[{apply:()=>{e.current()},label:"Save Expression",boost:10}],g=R(a,i),d=await n.getSuggestions("operator",{columnName:g});return{from:o.pos,options:m.concat(d)}}}else if((a==null?void 0:a.name)==="CallExpression"){if(C){let m=[{apply:()=>{e.current()},label:"Save Expression",boost:10}];return{from:o.pos,options:m}}}else if((a==null?void 0:a.name)==="ArithmeticExpression"){if(C){let m=[{apply:()=>{e.current()},label:"Save Expression",boost:10}],g=Y(a,o);if((g==null?void 0:g.name)==="Column"){let d=R(g,i),b=await n.getSuggestions("operator",{columnName:d});m=m.concat(b)}return{from:o.pos,options:m}}}else if((a==null?void 0:a.name)==="ConditionalExpression")return Qe(a,o,n,C,e.current);break}case"Column":if(await n.isPartialMatch("expression",void 0,s.text))return t(o,"expression",{startsWith:s.text});break;case"Comma":{let a=ln(l);if((a==null?void 0:a.name)==="ConditionalExpression")return t(o,"expression")}break;case"CloseBrace":{let a=ln(l);if((a==null?void 0:a.name)==="ConditionalExpression")return Qe(a,o,n,C,e.current);if((a==null?void 0:a.name)==="ArgList"&&C)return wt(o,e.current);console.log(`does closebrace denote an ARgList or a parenthetised expression ? ${a}`)}break;default:((h=l==null?void 0:l.prevSibling)==null?void 0:h.name)==="FilterClause"&&console.log("looks like we ight be a or|and operator")}},[t,e,n])};var le=n=>{if(n.current==null)throw Error("EditorView not defined");return n.current},Lt=()=>"vuuSuggestion",It=()=>console.log("noooop"),Bt=n=>"expressionType"in n,Ut=n=>{if(Bt(n)){let e=fn("div","expression-type-container"),t=fn("span","expression-type",n.expressionType);return e.appendChild(t),e}else return null},Cn=({onChange:n,onSubmitExpression:e,suggestionProvider:t})=>{let o=Ie(null),i=Ie(It),r=Ie(),s=mn(t,i),[p,l]=Ft(()=>{let c=()=>{let g=le(r),d=g.state.doc.toString(),b=kt(g.state,g.state.doc.length,5e3);if(b){let v=en(b,d);return[d,v]}else return["",void 0]},C=()=>{le(r).setState(m())},x=()=>{let[g,d]=c();e==null||e(g,d),C()},h=g=>Le.of([{key:g,run(){return x(),!0}}]),a=g=>Le.of([{key:g,run(){return gn(le(r)),!0}}]),m=()=>At.create({doc:"",extensions:[Nt,Dt({addToOptions:[{render:Ut,position:70}],override:[s],optionClass:Lt}),Ke(),Le.of(Rt),h("Ctrl-Enter"),a("ArrowDown"),dn.updateListener.of(g=>{let d=le(r);if(g.docChanged){gn(d);let b=d.state.doc.toString();n==null||n(b,void 0)}}),an,sn]});return i.current=()=>{x(),setTimeout(()=>{le(r).focus()},100)},[m,C]},[s,n,e]);return Qt(()=>{if(!o.current)throw Error("editor not in dom");return r.current=new dn({state:p(),parent:o.current}),()=>{var c;(c=r.current)==null||c.destroy()}},[s,p]),{editorRef:o,clearInput:l}};import{jsx as Gt}from"react/jsx-runtime";var $t="vuuColumnExpressionInput",xn=({onChange:n,onSubmitExpression:e,suggestionProvider:t})=>{let{editorRef:o}=Cn({onChange:n,onSubmitExpression:e,suggestionProvider:t});return Gt("div",{className:`${$t}`,ref:o})};import{AnnotationType as Mt,getRelationalOperators as Wt,numericOperators as Xt,stringOperators as Ht,toSuggestions as Vt}from"@vuu-ui/vuu-codemirror";import{getTypeaheadParams as zt,useTypeaheadSuggestions as Yt}from"@vuu-ui/vuu-data";import{isNumericColumn as Ue,isTextColumn as Zt}from"@vuu-ui/vuu-utils";import{useCallback as Be,useRef as Jt}from"react";var Z=[{accepts:"string",description:"Returns multiple string values as a single joined string. Arguments may be string literal values, string columns or other string expressions. Non string arguments may also be included, these will be converted to strings.",example:{expression:'concatenate("example", "-test")',result:'"example-test"'},name:"concatenate",params:{description:"( string, string, [ string* ] )"},type:"string"},{accepts:["string","string"],description:"Tests a string value to determine whether it contains a given substring. Accepts two arguments: source text and target substring. Returns true if <source text> contains one or more occurrences of <target subscring>",example:{expression:'contains("Royal Bank of Scotland", "bank")',result:"true"},name:"contains",params:{description:"( string )"},type:"boolean"},{accepts:["string","number"],description:"Returns the leftmost <number> characters from <string>. First argument may be a string literal, string column or other string expression.",example:{expression:'left("USD Benchmark Report", 3)',result:'"USD"'},name:"left",params:{count:2,description:"( string, number )"},type:"string"},{accepts:"string",description:"Returns the number of characters in <string>. Argument may be a string literal, string column or other string expression.",example:{expression:'len("example")',result:"7"},name:"len",params:{description:"(string)"},type:"number"},{accepts:"string",description:"Convert a string value to lowercase. Argument may be a string column or other string expression.",example:{expression:'lower("examPLE")',result:'"example"'},name:"lower",params:{description:"( string )"},type:"string"},{accepts:"string",description:"Convert a string value to uppercase. Argument may be a string column or other string expression.",example:{expression:'upper("example")',result:'"EXAMPLE"'},name:"upper",params:{description:"( string )"},type:"string"},{accepts:["string","number"],description:"Returns the rightmost <number> characters from <string>. First argument may be a string literal, string column or other string expression.",example:{expression:"blah",result:"blah"},name:"right",params:{description:"( string )"},type:"string"},{accepts:["string","string","string"],description:"Replace characters within a string. Accepts three arguments: source text, text to replace and replacement text. Returns a copy of <source text> with any occurrences of <text to replace> replaced by <replacement text>",example:{expression:"blah",result:"blah"},name:"replace",params:{description:"( string )"},type:"string"},{accepts:"number",description:"Converts a number to a string.",example:{expression:"blah",result:"blah"},name:"text",params:{description:"( string )"},type:"string"},{accepts:"string",description:"Tests a string value to determine whether it starts with a given substring. Accepts two arguments: source text and target substring. Returns true if <source text> starts with <target subscring>.",example:{expression:"blah",result:"blah"},name:"starts",params:{description:"( string )"},type:"boolean"},{accepts:"string",description:"Tests a string value to determine whether it ends with a given substring. Accepts two arguments: source text and target substring. Returns true if <source text> ends with <target subscring>.",example:{expression:"blah",result:"blah"},name:"ends",params:{description:"( string )"},type:"boolean"},{accepts:"number",description:"blah",example:{expression:"blah",result:"blah"},name:"min",params:{description:"( string )"},type:"number"},{accepts:"number",description:"blah",example:{expression:"blah",result:"blah"},name:"max",params:{description:"( string )"},type:"number"},{accepts:"number",description:"blah",example:{expression:"blah",result:"blah"},name:"sum",params:{description:"( string )"},type:"number"},{accepts:"number",description:"blah",example:{expression:"blah",result:"blah"},name:"round",params:{description:"( string )"},type:"number"},{accepts:"any",description:"blah",example:{expression:"blah",result:"blah"},name:"or",params:{description:"( string )"},type:"boolean"},{accepts:"any",description:"blah",example:{expression:"blah",result:"blah"},name:"and",params:{description:"( string )"},type:"boolean"},{accepts:"any",description:"Return one of two possible result values, depending on the evaluation of a filter expression. If <filterExpression> resolves to true, result is <expression1>, otherwise <expression2>. ",example:{expression:"blah",result:"blah"},name:"if",params:{description:"( filterExpression, expression1, expression 2)"},type:"variable"}];import{createEl as A}from"@vuu-ui/vuu-utils";var hn=({name:n,description:e,example:t,params:o,type:i})=>{let r=A("div","vuuFunctionDoc"),s=A("div","function-heading"),p=A("span","function-name",n),l=A("span","param-list",o.description),c=A("span","function-type",i);s.appendChild(p),s.appendChild(l),s.appendChild(c);let C=A("p",void 0,e);if(r.appendChild(s),r.appendChild(C),t){let x=A("div","example-container","Example:"),h=A("div","example-expression",t.expression),a=A("div","example-result",t.result);x.appendChild(h),x.appendChild(a),r.appendChild(x)}return r};var qt=[],I=n=>n.map(e=>{var t;return{...e,apply:((t=e.apply)!=null?t:e.label)+" "}}),_t=(n,{functionName:e,operator:t})=>{if(t)return n.filter(Ue);if(e){let o=Z.find(i=>i.name===e);if(o)switch(o.accepts){case"string":return n.filter(Zt);case"number":return n.filter(Ue);default:return n}}return n},yn=(n,e)=>_t(n,e).map(o=>{var r;let i=(r=o.label)!=null?r:o.name;return{apply:e.prefix?`${e.prefix}${i}`:i,label:i,boost:5,type:"column",expressionType:o.serverDataType}}),Kt=[{apply:"* ",boost:2,label:"*",type:"operator"},{apply:"/ ",boost:2,label:"/",type:"operator"},{apply:"+ ",boost:2,label:"+",type:"operator"},{apply:"- ",boost:2,label:"-",type:"operator"}],jt=n=>n===void 0||Ue(n)?Kt:qt,eo=n=>{switch(n.serverDataType){case"string":case"char":return I(Ht);case"int":case"long":case"double":return I(Xt)}},$e=n=>({apply:`${n.name}( `,boost:2,expressionType:n.type,info:()=>hn(n),label:n.name,type:"function"}),no=n=>{if(n){if(typeof n.accepts=="string")return n.accepts;if(Array.isArray(n.accepts))return n.accepts.every(e=>e==="string")?"string":"any"}return"any"},to=Z.map($e),oo=({functionName:n})=>{if(n){let e=Z.find(o=>o.name===n),t=no(e);if(e)switch(t){case"string":return Z.filter(o=>o.type==="string"||o.type==="variable").map($e);case"number":return Z.filter(o=>o.type==="number"||o.type==="variable").map($e);default:}}return to},ro={},bn=({columns:n,table:e})=>{let t=Be(p=>p?n.find(l=>l.name===p):void 0,[n]),o=Jt(),i=Yt(),r=Be(async(p,l=ro)=>{let{columnName:c,functionName:C,operator:x,prefix:h}=l;switch(p){case"expression":{let a=await I(yn(n,{functionName:C,prefix:h})).concat(oo(l));return o.current=a}case"column":{let a=await yn(n,l);return o.current=I(a)}case"operator":{let a=await jt(t(c));return o.current=I(a)}case"relational-operator":{let a=await Wt(t(c));return o.current=I(a)}case"condition-operator":{let a=t(c);if(a){let m=await eo(a);if(m)return o.current=I(m)}}break;case"columnValue":if(c&&x){let a=zt(e,c),m=await i(a);return o.current=Vt(m,{suffix:""}),o.current.forEach(g=>{g.apply=(d,b,v)=>{let w=new Mt,oe=v+b.label.length+1;d.dispatch({changes:{from:v,insert:b.label},selection:{anchor:oe,head:oe},annotations:w.of(b)})}}),o.current}break}return[]},[n,t,i,e]),s=Be(async(p,l,c)=>{let{current:C}=o,x=!1,h=C||await r(p,{columnName:l});if(c&&h)for(let a of h){if(a.label===c)return!1;a.label.startsWith(c)&&(x=!0)}return x},[r]);return{getSuggestions:r,isPartialMatch:s}};import{Button as ze,Panel as ir}from"@salt-ds/core";import ar from"classnames";import{useCallback as me,useState as Wn}from"react";import{List as On}from"@heswell/salt-lab";import{Button as pe,Text as vn,useIdMemo as lo}from"@salt-ds/core";import{useCallback as B,useState as po}from"react";import{ListItem as so}from"@heswell/salt-lab";import io from"classnames";import{jsx as Ge,jsxs as ao}from"react/jsx-runtime";var J="vuuColumnListItem",En=({className:n,item:e,label:t,style:o,...i})=>{let r=io(J,n,{[`${J}-calculated`]:e==null?void 0:e.expression,[`${J}-hidden`]:e==null?void 0:e.hidden});return ao(so,{className:r,...i,children:[Ge("span",{className:`${J}-iconType`}),Ge("label",{className:`${J}-label`,children:t}),Ge("span",{className:`${J}-iconHidden`})]})};import{jsx as E,jsxs as _}from"react/jsx-runtime";var q="vuuColumnPicker",uo=(n,e)=>n.filter(t=>e.find(o=>o.name===t.name)==null),Pn=({availableColumns:n,id:e,dispatchColumnAction:t,onAddCalculatedColumnClick:o,onSelectionChange:i,chosenColumns:r,selectedColumn:s})=>{let[p,l]=po([]),c=lo(e),C=uo(n,r),x=B(()=>{p.length>0&&(l([]),t({type:"addColumn",columns:p}))},[t,p]),h=B(()=>s&&t({type:"removeColumn",column:s}),[s,t]),a=B(()=>s&&t({type:"moveColumn",column:s,moveBy:-1}),[t,s]),m=B(()=>s&&t({type:"moveColumn",column:s,moveBy:1}),[t,s]),g=B((v,w)=>l(w),[]),d=B((v,w)=>i==null?void 0:i(w),[i]),b=B((v,w)=>{t({type:"moveColumn",moveFrom:v,moveTo:w})},[t]);return _("div",{className:q,id:c,children:[_("div",{className:`${q}-listColumn`,children:[E("label",{htmlFor:`available-${c}`,children:E(vn,{as:"h4",children:"Available Columns"})}),E("div",{className:`${q}-listContainer`,style:{flex:1,overflow:"hidden"},children:E(On,{borderless:!0,checkable:!1,height:"100%",id:`available-${c}`,itemHeight:24,itemToString:v=>v.name,onSelectionChange:g,selected:p,selectionStrategy:"extended",source:C})}),E("div",{style:{display:"flex",alignItems:"center",flex:"0 0 32px",marginTop:"var(--salt-size-basis-unit)"},children:_(pe,{onClick:x,disabled:p.length===0,children:["Show",E("span",{"data-icon":"arrow-thin-right",style:{marginLeft:8}})]})})]}),_("div",{className:`${q}-listColumn`,children:[E("label",{htmlFor:`selected-${c}`,children:E(vn,{as:"h4",children:"Included Columns"})}),E("div",{className:`${q}-listContainer`,style:{flex:1,overflow:"hidden"},children:E(On,{ListItem:En,allowDragDrop:!0,borderless:!0,height:"100%",id:`selected-${c}`,itemHeight:24,itemToString:v=>v.name,onMoveListItem:b,onSelectionChange:d,selected:s,style:{flex:1},source:r})}),_("div",{style:{alignItems:"center",flex:"0 0 32px",display:"flex",gap:6,marginTop:"var(--salt-size-basis-unit)"},children:[_(pe,{onClick:h,disabled:s===null,children:[E("span",{"data-icon":"arrow-thin-left",style:{marginRight:8}}),"Hide"]}),E(pe,{"aria-label":"Move column up",onClick:a,disabled:s===null||(r==null?void 0:r.indexOf(s))===0,style:{width:28},children:E("span",{"data-icon":"arrow-thin-up"})}),E(pe,{"aria-label":"Move column down",onClick:m,disabled:s===null||r.indexOf(s)===r.length-1,style:{width:28},children:E("span",{"data-icon":"arrow-thin-down"})}),E(pe,{"aria-label":"Add calculated column",className:`${q}-addCalculatedColumn`,onClick:o,variant:"primary",children:E("span",{"data-icon":"add"})})]})]})]})};import{Stack as Ro}from"@vuu-ui/vuu-layout";import{Checkbox as Ao,FormField as U,Input as We,RadioButton as ue,RadioButtonGroup as Nn,StepperInput as ko}from"@heswell/salt-lab";import{Panel as Qn,Text as No}from"@salt-ds/core";import Qo from"classnames";import{useCallback as j,useState as Fo}from"react";import{getRegisteredCellRenderers as bo}from"@vuu-ui/vuu-utils";import{Dropdown as Eo}from"@heswell/salt-lab";import{Panel as Oo}from"@salt-ds/core";import Rn from"classnames";import{useMemo as vo}from"react";import{FormField as co,StepperInput as mo,Switch as Sn}from"@heswell/salt-lab";import{Text as go}from"@salt-ds/core";import{useCallback as ye}from"react";import{Fragment as Tn,jsx as K,jsxs as xo}from"react/jsx-runtime";var fo={alignOnDecimals:!1,decimals:4,zeroPad:!1},Co=(n,e)=>{let t=typeof n=="object"&&n.formatting?n.formatting:{};return["alignOnDecimals","decimals","zeroPad"].reduce((i,r)=>t[r]!==void 0?{...i,[r]:t[r]}:(e==null?void 0:e[r])!==void 0?{...i,[r]:e[r]}:i,fo)},wn=({column:n,dispatchColumnAction:e})=>{let{decimals:t,alignOnDecimals:o,zeroPad:i}=Co(n==null?void 0:n.type),r=ye(c=>e({type:"updateColumnTypeFormatting",column:n,...c}),[n,e]),s=ye(c=>r({decimals:parseInt(c.toString(),10)}),[r]),p=ye((c,C)=>r({alignOnDecimals:C}),[r]),l=ye((c,C)=>r({zeroPad:C}),[r]);switch(n.serverDataType){case"double":return xo(Tn,{children:[K(co,{label:"No of Decimals",labelPlacement:"top",children:K(mo,{value:t,onChange:s})}),K(Sn,{checked:o,label:"Align on decimals",LabelProps:{className:"vuuColumnPanelSwitch"},onChange:p}),K(Sn,{checked:i,label:"Zero pad",LabelProps:{className:"vuuColumnPanelSwitch"},onChange:l})]});case"long":case"int":return K(Tn,{children:K(go,{children:"Work in progress"})});default:return null}};import{Fragment as ho,jsx as yo}from"react/jsx-runtime";var Dn=({column:n,dispatchColumnAction:e})=>yo(ho,{children:"String"});import{Fragment as wo,jsx as be,jsxs as Do}from"react/jsx-runtime";var Me="vuuColumnTypePanel",Po=["Default Renderer (int, long)"],So=["Default Renderer (double)"],An=["Default Renderer (string)"],To=n=>{let t=bo(n.serverDataType).map(o=>o.name);switch(console.log({customRendererNames:t}),n.serverDataType){case"char":case"string":return An;case"int":case"long":return Po;case"double":return So.concat(t);default:return An}},kn=({className:n,column:e,dispatchColumnAction:t,...o})=>{let i=vo(()=>{switch(e.serverDataType){case"double":case"int":case"long":return be(wn,{column:e,dispatchColumnAction:t});default:return be(Dn,{column:e,dispatchColumnAction:t})}},[e,t]),{serverDataType:r="string"}=e,s=To(e);return Do(wo,{children:[be(Eo,{className:Rn(`${Me}-renderer`),fullWidth:!0,selected:s[0],source:s}),be(Oo,{...o,className:Rn(Me,n,`${Me}-${r}`),children:i})]})};import{jsx as y,jsxs as ee}from"react/jsx-runtime";var Fn="vuuColumnSettingsPanel",Lo={className:"salt-density-high"},Ln=()=>null,In=({column:n,dispatchColumnAction:e,style:t,...o})=>{var h,a,m,g;let[i,r]=Fo(0),s=j(d=>e({type:"updateColumnProp",column:n,...d}),[n,e]),p=j(d=>s({align:d.target.value}),[s]),l=j(d=>s({pin:d.target.value}),[s]),c=j((d,b)=>s({hidden:b}),[s]),C=j((d,b)=>s({label:b}),[s]),x=j(d=>s({width:parseInt(d.toString(),10)}),[s]);return ee("div",{className:Fn,...o,style:{...t},children:[y(No,{as:"h4",children:"Column Settings"}),ee(Ro,{active:i,showTabs:!0,className:Qo(`${Fn}-columnTabs`),onTabSelectionChanged:r,TabstripProps:Lo,children:[ee(Qn,{title:"Column",children:[y(U,{label:"Hidden",labelPlacement:"left",children:y(Ao,{checked:n.hidden===!0,onChange:c})}),y(U,{label:"Label",labelPlacement:"left",children:y(We,{value:(h=n.label)!=null?h:n.name,onChange:C})}),y(U,{label:"Width",labelPlacement:"left",children:y(ko,{value:(a=n.width)!=null?a:100,onChange:x})}),y(U,{label:"Align",labelPlacement:"left",ActivationIndicatorComponent:Ln,children:ee(Nn,{"aria-label":"Column Align",value:(m=n.align)!=null?m:"left",legend:"Align",onChange:p,children:[y(ue,{label:"Left",value:"left"}),y(ue,{label:"Right",value:"right"})]})}),y(U,{label:"Pin Column",labelPlacement:"left",ActivationIndicatorComponent:Ln,children:ee(Nn,{"aria-label":"Pin Column",value:(g=n.pin)!=null?g:"",legend:"Pin Column",onChange:l,children:[y(ue,{label:"Do not pin",value:""}),y(ue,{label:"Left",value:"left"}),y(ue,{label:"Right",value:"right"})]})})]}),y(kn,{column:n,dispatchColumnAction:e,title:"Data Cell"}),ee(Qn,{title:"Vuu",variant:"secondary",children:[y(U,{label:"Name",labelPlacement:"top",readOnly:!0,variant:"secondary",children:y(We,{value:n.name})}),y(U,{label:"Vuu type",labelPlacement:"top",readOnly:!0,variant:"secondary",children:y(We,{value:n.serverDataType})})]})]})]})};import{FormField as Bn,RadioButton as Xe,RadioButtonGroup as Io,StepperInput as Bo}from"@heswell/salt-lab";import{Panel as Uo,Text as $o}from"@salt-ds/core";import{useCallback as He}from"react";import{jsx as $,jsxs as Ve}from"react/jsx-runtime";var Go="vuuGridSettingsPanel",Mo=()=>null,Un=({config:n,dispatchColumnAction:e,style:t,...o})=>{var p;let i=He(l=>e({type:"updateGridSettings",...l}),[e]),r=He(l=>i({columnFormatHeader:l.target.value}),[i]),s=He(l=>i({columnDefaultWidth:parseInt(l.toString(),10)}),[i]);return console.log(`GridSettingsPanel ${JSON.stringify(n.columns,null,2)}`),Ve("div",{className:Go,...o,style:{...t},children:[$($o,{as:"h4",children:"Grid Settings"}),Ve(Uo,{children:[$(Bn,{label:"Format column labels",labelPlacement:"left",ActivationIndicatorComponent:Mo,children:Ve(Io,{"aria-label":"Format column labels",value:n.columnFormatHeader,legend:"Format column labels",onChange:r,children:[$(Xe,{label:"No Formatting",value:void 0}),$(Xe,{label:"Capitalize",value:"capitalize"}),$(Xe,{label:"Uppercase",value:"uppercase"})]})}),$(Bn,{label:"Default Column Width",labelPlacement:"left",children:$(Bo,{value:(p=n.columnDefaultWidth)!=null?p:100,onChange:s})})]})]})};import{useReducer as Wo}from"react";import{moveItem as Xo}from"@heswell/salt-lab";import{fromServerDataType as Ho}from"@vuu-ui/vuu-utils";var Vo=(n,e)=>{switch(console.log(`gridSettingsReducer ${e.type}`),e.type){case"addColumn":return zo(n,e);case"addCalculatedColumn":return Yo(n,e);case"moveColumn":return Jo(n,e);case"removeColumn":return Zo(n,e);case"updateColumn":return n;case"updateColumnProp":return qo(n,e);case"updateGridSettings":return _o(n,e);case"updateColumnTypeFormatting":return Ko(n,e);default:return n}},$n=n=>{let[e,t]=Wo(Vo,n);return{gridSettings:e,dispatchColumnAction:t}};function zo(n,{column:e,columns:t,index:o=-1}){let{columns:i}=n;if(o===-1){if(Array.isArray(t))return{...n,columns:i.concat(t)};if(e)return{...n,columns:i.concat(e)}}return n}function Yo(n,{columnName:e,columnType:t,expression:o}){let{columns:i}=n,r={name:e,expression:o,serverDataType:t};return{...n,columns:i.concat(r)}}function Zo(n,{column:e}){let{columns:t}=n;return{...n,columns:t.filter(o=>o.name!==e.name)}}function Jo(n,{column:e,moveBy:t,moveFrom:o,moveTo:i}){let{columns:r}=n;if(e&&typeof t=="number"){let s=r.indexOf(e),p=r.slice(),[l]=p.splice(s,1);return p.splice(s+t,0,l),{...n,columns:p}}else return typeof o=="number"&&typeof i=="number"?{...n,columns:Xo(r,o,i)}:n}function qo(n,{align:e,column:t,hidden:o,label:i,width:r}){let{columns:s}=n;return(e==="left"||e==="right")&&(s=ce(s,{...t,align:e})),typeof o=="boolean"&&(s=ce(s,{...t,hidden:o})),typeof i=="string"&&(s=ce(s,{...t,label:i})),typeof r=="number"&&(s=ce(s,{...t,width:r})),{...n,columns:s}}function _o(n,{columnFormatHeader:e}){return{...n,columnFormatHeader:e!=null?e:n.columnFormatHeader}}function Ko(n,{alignOnDecimals:e,column:t,decimals:o,zeroPad:i}){let{columns:r}=n;if(r.find(p=>p.name===t.name)){let{serverDataType:p="string",type:l=Ho(p)}=t,c=typeof l=="string"?{name:l}:{...l};return typeof e=="boolean"&&(c.formatting={...c.formatting,alignOnDecimals:e}),typeof o=="number"&&(c.formatting={...c.formatting,decimals:o}),typeof i=="boolean"&&(c.formatting={...c.formatting,zeroPad:i}),{...n,columns:ce(r,{...t,type:c})}}else return n}function ce(n,e){return n.map(t=>t.name===e.name?e:t)}import{Stack as lr}from"@vuu-ui/vuu-layout";import{FormField as jo,Input as er}from"@heswell/salt-lab";import{Button as nr,Panel as tr,Text as or}from"@salt-ds/core";import{useCallback as Ee,useRef as rr,useState as Gn}from"react";import{jsx as ne,jsxs as sr}from"react/jsx-runtime";var Mn=({columns:n,dispatchColumnAction:e,table:t})=>{let[o,i]=Gn(""),[,r]=Gn(),s=rr(""),p=bn({columns:n,table:t}),l=Ee(h=>{let{value:a}=h.target;i(a)},[]),c=Ee(h=>{s.current=h},[]),C=Ee((h,a)=>{console.log({source:h}),r(a)},[]),x=Ee(()=>{s.current&&(console.log(`save expression ${JSON.stringify(s.current,null,2)}`),e({type:"addCalculatedColumn",columnName:o,expression:s.current,columnType:"string"}))},[o,e]);return sr(tr,{className:"vuuCalculatedColumnPanel",title:"Define Computed Column",children:[ne(or,{styleAs:"h4",children:"Define Computed Column"}),ne(jo,{label:"Column Name",labelPlacement:"left",children:ne(er,{value:o,onChange:l})}),ne(xn,{onChange:c,onSubmitExpression:C,suggestionProvider:p}),ne("div",{style:{marginTop:12},children:ne(nr,{onClick:x,children:"Add Column"})})]})};import{jsx as k,jsxs as ve}from"react/jsx-runtime";var Oe="vuuDatagridSettingsPanel",pr=()=>{},ur=["table-settings","column-chooser","column-settings","define-column"],cr=(n,e)=>ur[e],Va=({availableColumns:n,className:e,gridConfig:t,onCancel:o,onConfigChange:i,...r})=>{var oe;console.log("DatagridSettingsPanel render");let[s,p]=Wn(0),{gridSettings:l,dispatchColumnAction:c}=$n(t),[C,x]=Wn(null),h=me(D=>{x(D?D.name:null)},[]),a=me((D,Xn=!1)=>{console.log("1) DataGridSettingsPanel fire onConfigChange"),i==null||i(l,Xn)},[l,i]),m=me(D=>{p(D)},[]),g=me(D=>a(D,!0),[a]),d=C===null?null:(oe=l.columns.find(D=>D.name===C))!=null?oe:null,b={activeTabIndex:s,enableRenameTab:!1,orientation:"vertical"},v=me(()=>p(3),[]),w=s===2?"right":void 0;return ve("div",{...r,className:ar(Oe,e),children:[ve(lr,{TabstripProps:b,className:`${Oe}-stack`,getTabIcon:cr,getTabLabel:pr,active:s===2?1:s,onTabSelectionChanged:m,showTabs:!0,children:[k(Un,{config:l,dispatchColumnAction:c}),ve("div",{className:`${Oe}-columnPanels`,"data-align":w,children:[k(Pn,{availableColumns:n,chosenColumns:l.columns,dispatchColumnAction:c,onSelectionChange:h,onAddCalculatedColumnClick:v,selectedColumn:d}),d===null?k(ir,{className:"vuuColumnSettingsPanel",children:"Select a column"}):k(In,{column:d,dispatchColumnAction:c,style:{background:"white",flex:"1 0 150px"}})]}),k("div",{title:"Column Settings",children:"Column Settings"}),k(Mn,{columns:l.columns,dispatchColumnAction:c,table:{module:"SIMUL",table:"instruments"}})]}),ve("div",{className:`${Oe}-buttonBar`,children:[k(ze,{onClick:o,children:"Cancel"}),k(ze,{onClick:a,children:"Apply"}),k(ze,{onClick:g,children:"Save"})]})]})};import{useEffect as mr,useState as Ye}from"react";import dr from"classnames";import{jsx as te,jsxs as gr}from"react/jsx-runtime";var de="vuuDatasourceStats",Ze=new Intl.NumberFormat,rl=({className:n,dataSource:e})=>{let[t,o]=Ye(e.optimize),[i,r]=Ye(e.range),[s,p]=Ye(e.size);mr(()=>{o(e.optimize),p(e.size),e.on("optimize",o),e.on("resize",p),e.on("range",r)},[e]);let l=dr(de,n),c=Ze.format(i.from),C=Ze.format(i.to-1),x=Ze.format(s);return gr("div",{className:l,children:[te("span",{children:"Showing rows"}),te("span",{className:`${de}-range`,children:c}),te("span",{className:`${de}-range`,children:C}),te("span",{children:"of"}),te("span",{className:`${de}-size`,children:x}),te("span",{className:`${de}-optimize`,children:t})]})};export{xn as ColumnExpressionInput,Ae as ColumnNamedTerms,rl as DataSourceStats,Va as DatagridSettingsPanel,Ke as columnExpressionLanguageSupport,tn as isCompleteExpression,on as isCompleteRelationalExpression,ke as lastNamedChild,Cn as useColumnExpressionEditor,bn as useColumnExpressionSuggestionProvider,en as walkTree};
|
|
1
|
+
var Je=(n,e,t)=>{if(!e.has(n))throw TypeError("Cannot "+t)};var u=(n,e,t)=>(Je(n,e,"read from private field"),t?t.call(n):e.get(n)),S=(n,e,t)=>{if(e.has(n))throw TypeError("Cannot add the same private member more than once");e instanceof WeakSet?e.add(n):e.set(n,t)},N=(n,e,t,o)=>(Je(n,e,"write to private field"),o?o.call(n,t):e.set(n,t),t);import{DOWN1 as Jn,DOWN2 as qn,metadataKeys as _n,registerComponent as Kn,UP1 as jn,UP2 as et}from"@vuu-ui/vuu-utils";import nt from"classnames";import{useEffect as Hn,useRef as Vn}from"react";import{isTypeDescriptor as zn}from"@vuu-ui/vuu-utils";import{getMovingValueDirection as Yn,isValidNumber as qe}from"@vuu-ui/vuu-utils";var Zn=[void 0,void 0,void 0,void 0];function _e(n,e,t){var x;let o=Vn(),[i,r,s,p]=o.current||Zn,{type:l}=t,c=zn(l)?(x=l.formatting)==null?void 0:x.decimals:void 0,C=n===i&&qe(e)&&qe(r)&&t===s?Yn(e,p,r,c):"";return Hn(()=>{o.current=[n,e,t,C]}),C}import{jsx as at,jsxs as lt}from"react/jsx-runtime";var tt=String.fromCharCode(11014),ot=String.fromCharCode(11015),{KEY:rt}=_n,ge="vuuBackgroundCell",G={ArrowOnly:"arrow",BackgroundOnly:"bg-only",ArrowBackground:"arrow-bg"},st=n=>{if(typeof n=="string")return G.BackgroundOnly;if(n){let{renderer:e}=n;return e&&e.flashStyle||G.BackgroundOnly}},it=({column:n,row:e})=>{let{key:t,type:o,valueFormatter:i}=n,r=e[t],s=st(o),p=_e(e[rt],r,n),l=s===G.ArrowOnly||s===G.ArrowBackground?p===jn||p===et?tt:p===Jn||p===qn?ot:null:null,c=p?" "+p:"",C=nt(ge,c,{[`${ge}-arrowOnly`]:s===G.ArrowOnly,[`${ge}-arrowBackground`]:s===G.ArrowBackground});return lt("div",{className:C,tabIndex:-1,children:[at("div",{className:`${ge}-flasher`,children:l}),i(e[n.key])]})};Kn("background",it,"cell-renderer",{serverDataType:["long","int","double"]});import{autocompletion as Dt,defaultKeymap as Rt,EditorState as At,EditorView as dn,ensureSyntaxTree as kt,keymap as Le,minimalSetup as Nt,startCompletion as gn}from"@vuu-ui/vuu-codemirror";import{createEl as fn}from"@vuu-ui/vuu-utils";import{useEffect as Qt,useMemo as Ft,useRef as Ie}from"react";import{LanguageSupport as ut,LRLanguage as ct,styleTags as mt,tags as Ce}from"@vuu-ui/vuu-codemirror";import{LRParser as pt}from"@lezer/lr";var fe=pt.deserialize({version:14,states:"&fOVQPOOO!SQPO'#C^OVQPO'#CcQ!pQPOOO#OQPO'#CkO#TQPO'#CrOOQO'#Cy'#CyO#YQPO,58}OVQPO,59QOVQPO,59QOVQPO,59VOVQPO'#CtOOQO,59^,59^OOQO1G.i1G.iOOQO1G.l1G.lO#kQPO1G.lO$fQPO'#CmO%WQQO1G.qOOQO'#C{'#C{O%cQPO,59`OOQO'#Cn'#CnO%wQPO,59XOVQPO,59ZOVQPO,59[OVQPO7+$]OVQPO'#CuO&`QPO1G.zOOQO1G.z1G.zO&hQQO'#C^O&rQQO1G.sO'ZQQO1G.uOOQO1G.v1G.vO'fQPO<<GwO'wQPO,59aOOQO-E6s-E6sOOQO7+$f7+$fOVQPOAN=cO(]QQO1G.lO(tQPOG22}OOQOLD(iLD(iO%wQPO,59QO%wQPO,59Q",stateData:")[~OlOS~ORUOSUOTUOUUOWQO`SOnPO~OWgXZQX[QX]QX^QXeQX~OjQXXQXpQXqQXrQXsQXtQXuQX~PnOZWO[WO]XO^XO~OWYO~OWZO~OX]OZWO[WO]XO^XO~OZWO[WO]Yi^YijYiXYipYiqYirYisYitYiuYieYi~OZWO[WO]XO^XOpdOqdOrdOsdOtdOudO~OehOvfOwgO~OXkOZWO[WO]XO^XOeiO~ORUOSUOTUOUUOWQO`SOnlO~OXsOeiO~OvQXwQX~PnOZxO[xO]yO^yOeaivaiwai~OwgOecivci~OZWO[WO]XO^XOetO~OZWO[WO]XO^XOXiaeia~OZxO[xO]Yi^YieYivYiwYi~OXwOZWO[WO]XO^XO~O`UTn~",goto:"#spPPqPPPPqPPqPPPPqP!R!W!R!RPq!Z!k!nPPP!tP#jmUOQWXYZefghitxyVbYfgRe`mTOQWXYZefghitxyR[TQjcRrjQROQVQS^WxQ_XU`YfgQcZQmeQphQqiQuyRvtQaYQnfRog",nodeNames:"\u26A0 ColumnDefinitionExpression Column Number String True False ParenthesizedExpression OpenBrace CloseBrace ArithmeticExpression Divide Times Plus Minus ConditionalExpression If RelationalExpression RelationalOperator AndCondition OrCondition Comma CallExpression Function ArgList",maxTerm:39,skippedNodes:[0],repeatNodeCount:1,tokenData:".^~RnXY#PYZ#P]^#Ppq#Pqr#brs#mxy$eyz$jz{$o{|$t|}$y}!O%O!O!P%T!P!Q%c!Q![%h!^!_%s!_!`&Q!`!a&V!c!}&d#R#S&d#T#U&u#U#Y&d#Y#Z(Y#Z#]&d#]#^*j#^#c&d#c#d+f#d#h&d#h#i,b#i#o&d~#USl~XY#PYZ#P]^#Ppq#P~#eP!_!`#h~#mOu~~#pWOX#mZ]#m^r#mrs$Ys#O#m#P;'S#m;'S;=`$_<%lO#m~$_OS~~$bP;=`<%l#m~$jOW~~$oOX~~$tO[~~$yO]~~%OOe~~%TO^~~%WP!Q![%Z~%`PR~!Q![%Z~%hOZ~~%mQR~!O!P%Z!Q![%h~%xPr~!_!`%{~&QOt~~&VOp~~&[Pq~!_!`&_~&dOs~P&iSnP!Q![&d!c!}&d#R#S&d#T#o&dR&zUnP!Q![&d!c!}&d#R#S&d#T#b&d#b#c'^#c#o&dR'cUnP!Q![&d!c!}&d#R#S&d#T#W&d#W#X'u#X#o&dR'|SvQnP!Q![&d!c!}&d#R#S&d#T#o&d~(_TnP!Q![&d!c!}&d#R#S&d#T#U(n#U#o&d~(sUnP!Q![&d!c!}&d#R#S&d#T#`&d#`#a)V#a#o&d~)[UnP!Q![&d!c!}&d#R#S&d#T#g&d#g#h)n#h#o&d~)sUnP!Q![&d!c!}&d#R#S&d#T#X&d#X#Y*V#Y#o&d~*^SU~nP!Q![&d!c!}&d#R#S&d#T#o&d~*oUnP!Q![&d!c!}&d#R#S&d#T#Y&d#Y#Z+R#Z#o&d~+YS`~nP!Q![&d!c!}&d#R#S&d#T#o&dR+kUnP!Q![&d!c!}&d#R#S&d#T#f&d#f#g+}#g#o&dR,USwQnP!Q![&d!c!}&d#R#S&d#T#o&d~,gUnP!Q![&d!c!}&d#R#S&d#T#f&d#f#g,y#g#o&d~-OUnP!Q![&d!c!}&d#R#S&d#T#i&d#i#j-b#j#o&d~-gUnP!Q![&d!c!}&d#R#S&d#T#X&d#X#Y-y#Y#o&d~.QST~nP!Q![&d!c!}&d#R#S&d#T#o&d",tokenizers:[0,1],topRules:{ColumnDefinitionExpression:[0,1]},tokenPrec:375});var dt=ct.define({name:"VuuColumnExpression",parser:fe.configure({props:[mt({Function:Ce.variableName,String:Ce.string,Or:Ce.emphasis,Operator:Ce.operator})]})}),Ke=()=>new ut(dt);var Pe=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}}},Se=class{constructor(e){this.type="colExpression";this.column=e}toJSON(){return{type:this.type,column:this.column}}},se,F,Te=class{constructor(e="unknown"){S(this,se,[{type:"unknown"},{type:"unknown"}]);S(this,F,void 0);this.type="arithmeticExpression";N(this,F,e)}get op(){return u(this,F)}set op(e){N(this,F,e)}get expressions(){return u(this,se)}toJSON(){return{type:this.type,op:u(this,F),expressions:u(this,se)}}};se=new WeakMap,F=new WeakMap;var H,we=class{constructor(e){S(this,H,[]);this.type="callExpression";this.functionName=e}get expressions(){return u(this,H)}get arguments(){return u(this,H)}toJSON(){return{type:this.type,functionName:this.functionName,arguments:u(this,H).map(e=>{var t;return(t=e.toJSON)==null?void 0:t.call(e)})}}};H=new WeakMap;var ie,V,W=class{constructor(){S(this,ie,[{type:"unknown"},{type:"unknown"}]);S(this,V,"unknown");this.type="relationalExpression"}get op(){return u(this,V)}set op(e){N(this,V,e)}get expressions(){return u(this,ie)}toJSON(){return{type:this.type,op:u(this,V),expressions:u(this,ie)}}};ie=new WeakMap,V=new WeakMap;var ae,z,X=class{constructor(e){S(this,ae,[{type:"unknown"},{type:"unknown"}]);S(this,z,void 0);this.type="booleanCondition";N(this,z,e)}get op(){return u(this,z)}get expressions(){return u(this,ae)}toJSON(){return{type:this.type,op:u(this,z),expressions:u(this,ae).map(e=>{var t;return(t=e.toJSON)==null?void 0:t.call(e)})}}};ae=new WeakMap,z=new WeakMap;var T,re=class{constructor(e){S(this,T,void 0);this.type="conditionalExpression";N(this,T,[e?new X(e):new W,{type:"unknown"},{type:"unknown"}])}get expressions(){return u(this,T)}get condition(){return u(this,T)[0]}get truthyExpression(){return u(this,T)[1]}set truthyExpression(e){u(this,T)[1]=e}get falsyExpression(){return u(this,T)[2]}set falsyExpression(e){u(this,T)[2]=e}toJSON(){var e,t,o,i,r;return{type:this.type,condition:(t=(e=this.condition).toJSON)==null?void 0:t.call(e),truthyExpression:this.truthyExpression,falsyExpression:(r=(i=(o=this.falsyExpression)==null?void 0:o.toJSON)==null?void 0:i.call(o))!=null?r:this.falsyExpression}}};T=new WeakMap;var Q=n=>n.type==="unknown",xe=n=>n.type==="arithmeticExpression",gt=n=>n.type==="callExpression",M=n=>n.type==="conditionalExpression",ft=n=>n.type==="relationalExpression"||n.type==="booleanCondition";var Ct=n=>n.type==="booleanCondition",Re=n=>(n==null?void 0:n.type)==="relationalExpression";var P=n=>{if(Q(n))return n;if(Re(n)){let[e,t]=n.expressions;if(O(e))return P(e);if(n.op==="unknown")return n;if(O(t))return P(t)}else if(ft(n)){let{expressions:e=[]}=n;for(let t of e)if(O(t))return P(t)}else if(M(n)){let{condition:e,truthyExpression:t,falsyExpression:o}=n;if(O(e))return P(e);if(O(t))return P(t);if(O(o))return P(o)}else if(xe(n)){let{expressions:e=[]}=n;for(let t of e)if(O(t))return P(t)}},he=(n,e,t)=>{let{expressions:o=[]}=n;if(o.includes(e)){let i=o.indexOf(e);return o.splice(i,1,t),!0}else for(let i of o)if(he(i,e,t))return!0;return!1},O=n=>Q(n)?!0:M(n)?O(n.condition)||O(n.truthyExpression)||O(n.falsyExpression):Re(n)||Ct(n)?n.op===void 0||n.expressions.some(e=>O(e)):!1,je=(n,e)=>{let t=P(n);t?t.expressions?t.expressions.push(e):console.warn("don't know how to treat targetExpression"):console.error("no target expression found")},f,L,De=class{constructor(){S(this,f,void 0);S(this,L,[])}setCondition(e){if(u(this,f)===void 0)this.addExpression(new re(e));else if(M(u(this,f))){if(O(u(this,f).condition)){let t=e?new X(e):new W;this.addExpression(t)}else if(Q(u(this,f).truthyExpression))u(this,f).truthyExpression=new re(e);else if(O(u(this,f).truthyExpression)){let t=e?new X(e):new W;this.addExpression(t)}else if(Q(u(this,f).falsyExpression))u(this,f).falsyExpression=new re(e);else if(O(u(this,f).falsyExpression)){let t=e?new X(e):new W;this.addExpression(t)}}else console.error("setCondition called unexpectedly")}addExpression(e){if(u(this,L).length>0){let t=u(this,L).at(-1);t==null||t.arguments.push(e)}else if(u(this,f)===void 0)N(this,f,e);else if(xe(u(this,f))){let t=P(u(this,f));t&&Q(t)&&he(u(this,f),t,e)}else if(M(u(this,f))&&O(u(this,f))){let t=P(u(this,f));t&&Q(t)?he(u(this,f),t,e):t&&je(t,e)}}setFunction(e){let t=new we(e);this.addExpression(t),u(this,L).push(t)}setColumn(e){this.addExpression(new Se(e))}setArithmeticOp(e){let t=e,o=u(this,f);xe(o)&&(o.op=t)}setRelationalOperator(e){let t=e;if(u(this,f)&&M(u(this,f))){let o=P(u(this,f));Re(o)?o.op=t:console.error(`no target expression found (op = ${e})`)}}setValue(e){let t=new Pe(e);if(u(this,f)===void 0)N(this,f,t);else if(xe(u(this,f)))this.addExpression(t);else if(gt(u(this,f)))u(this,f).arguments.push(t);else if(M(u(this,f)))if(O(u(this,f))){let o=P(u(this,f));o&&Q(o)?he(u(this,f),o,t):o&&je(o,t)}else console.log("what do we do with value, in a complete expression")}closeBrace(){u(this,L).pop()}get expression(){return u(this,f)}toJSON(){var e;return(e=u(this,f))==null?void 0:e.toJSON()}};f=new WeakMap,L=new WeakMap;var en=(n,e)=>{let t=new De,o=n.cursor();do{let{name:i,from:r,to:s}=o;switch(i){case"AndCondition":t.setCondition("and");break;case"OrCondition":t.setCondition("or");break;case"RelationalExpression":t.setCondition();break;case"ArithmeticExpression":t.addExpression(new Te);break;case"Column":{let p=e.substring(r,s);t.setColumn(p)}break;case"Function":{let p=e.substring(r,s);t.setFunction(p)}break;case"Times":case"Divide":case"Plus":case"Minus":{let p=e.substring(r,s);t.setArithmeticOp(p)}break;case"RelationalOperator":{let p=e.substring(r,s);t.setRelationalOperator(p)}break;case"False":case"True":{let p=e.substring(r,s);t.setValue(p==="true")}break;case"String":t.setValue(e.substring(r+1,s-1));break;case"Number":t.setValue(parseFloat(e.substring(r,s)));break;case"CloseBrace":t.closeBrace();break;default:}}while(o.next());return t.toJSON()};var xt=fe.configure({strict:!0}),nn=["Number","String"],Ae=[...nn,"AndCondition","ArithmeticExpression","BooleanOperator","RelationalOperatorOperator","CallExpression","CloseBrace","Column","Comma","ConditionalExpression","Divide","Equal","If","Minus","OpenBrace","OrCondition","ParenthesizedExpression","Plus","RelationalExpression","RelationalOperator","Times"],tn=n=>{try{return xt.parse(n),!0}catch{return!1}},ke=n=>{let{lastChild:e}=n;for(;e&&!Ae.includes(e.name);)e=e.prevSibling,console.log(e==null?void 0:e.name);return e},on=n=>{if((n==null?void 0:n.name)==="RelationalExpression"){let{firstChild:e}=n,t=ke(n);if((e==null?void 0:e.name)==="Column"&&typeof(t==null?void 0:t.name)=="string"&&nn.includes(t.name))return!0}return!1};import{HighlightStyle as ht,syntaxHighlighting as yt,tags as rn}from"@vuu-ui/vuu-codemirror";var bt=ht.define([{tag:rn.variableName,color:"var(--vuuFilterEditor-variableColor)"},{tag:rn.comment,color:"green",fontStyle:"italic"}]),sn=yt(bt);import{EditorView as Et}from"@vuu-ui/vuu-codemirror";var an=Et.theme({"&":{border:"solid 1px var(--salt-container-primary-borderColor)",color:"var(--vuuFilterEditor-color)",backgroundColor:"var(--vuuFilterEditor-background)"},".cm-content":{caretColor:"var(--vuuFilterEditor-cursorColor)"},"&.cm-focused .cm-cursor":{borderLeftColor:"var(--vuuFilterEditor-cursorColor)"},"&.cm-focused .cm-selectionBackground, ::selection":{backgroundColor:"var(--vuuFilterEditor-selectionBackground)"},".cm-selectionBackground, ::selection":{backgroundColor:"var(--vuuFilterEditor-selectionBackground)"},".cm-scroller":{fontFamily:"var(--vuuFilterEditor-fontFamily)"},".cm-tooltip":{background:"var(--vuuFilterEditor-tooltipBackground)",border:"var(--vuuFilterEditor-tooltipBorder)",boxShadow:"var(--vuuFilterEditor-tooltipElevation)","&.cm-tooltip-autocomplete > ul":{fontFamily:"var(--vuuFilterEditor-fontFamily)",fontSize:"var(--vuuFilterEditor-fontSize)",maxHeight:"240px"},"&.cm-tooltip-autocomplete > ul > li":{height:"var(--vuuFilterEditor-suggestion-height)",padding:"0 3px",lineHeight:"var(--vuuFilterEditor-suggestion-height)"},"&.cm-tooltip-autocomplete li[aria-selected]":{background:"var(--vuuFilterEditor-suggestion-selectedBackground)",color:"var(--vuuFilterEditor-suggestion-selectedColor)"},"&.cm-tooltip-autocomplete li .cm-completionDetail":{color:"var(--vuuFilterEditor-suggestion-detailColor)"}}},{dark:!1});import{booleanJoinSuggestions as Ot,getNamedParentNode as ln,getPreviousNode as vt,getValue as R,syntaxTree as Pt}from"@vuu-ui/vuu-codemirror";import{useCallback as pn}from"react";var St=(n,e)=>e?n.map(t=>{var o;return{...t,apply:typeof t.apply=="function"?t.apply:`${e}${(o=t.apply)!=null?o:t.label}`}}):n,Tt=n=>n===void 0?!1:["Times","Divide","Plus","Minus"].includes(n.name),Y=(n,e)=>{var i;let{lastChild:t}=n,{pos:o}=e;for(;t;)if(t.from<o&&Ae.includes(t.name)){if(t.name==="ParenthesizedExpression"){let s=(i=t.firstChild)==null?void 0:i.nextSibling;s&&(t=s)}return t}else t=t.prevSibling},un=(n,e)=>{var t;if(n.name==="ArgList"){let o=n.prevSibling;if(o)return R(o,e)}else if(n.name==="OpenBrace"){let o=(t=n.parent)==null?void 0:t.prevSibling;if((o==null?void 0:o.name)==="Function")return R(o,e)}},cn=(n,e)=>{if(n.name==="RelationalExpression"){let t=ke(n);if((t==null?void 0:t.name)==="RelationalOperator")return R(t,e)}else{let t=n.prevSibling;if((t==null?void 0:t.name)==="RelationalOperator")return R(t,e)}},Fe=(n,e)=>{var t;if(n.name==="RelationalExpression"){if(((t=n.firstChild)==null?void 0:t.name)==="Column")return R(n.firstChild,e)}else{let o=n.prevSibling;if((o==null?void 0:o.name)==="Column")return R(o,e);if((o==null?void 0:o.name)==="RelationalOperator")return Fe(o,e)}},Ne=async(n,e,t,o={})=>{let i=await e.getSuggestions(t,o),{startsWith:r=""}=o;return{from:n.pos-r.length,options:i}},Qe=(n,e,t,o,i)=>{let r=Y(n,e);switch(console.log(`conditional expression last child ${r==null?void 0:r.name}`),r==null?void 0:r.name){case"If":return Ne(e,t,"expression",{prefix:"( "});case"OpenBrace":return Ne(e,t,"expression");case"Condition":return Ne(e,t,"expression",{prefix:", "});case"CloseBrace":if(o){let s=[{apply:()=>{i==null||i()},label:"Save Expression",boost:10}];return{from:e.pos,options:s}}}},wt=(n,e)=>{let t=[{apply:()=>{e==null||e()},label:"Save Expression",boost:10}];return{from:n.pos,options:t}},mn=(n,e)=>{let t=pn(async(o,i,r={})=>{let s=await n.getSuggestions(i,r),{startsWith:p=""}=r;return{from:o.pos-p.length,options:s}},[n]);return pn(async o=>{var x,h;let{state:i,pos:r}=o,s=(x=o.matchBefore(/\w*/))!=null?x:{from:0,to:0,text:void 0},l=Pt(i).resolveInner(r,-1),c=i.doc.toString(),C=tn(c);switch(console.log({nodeBeforeName:l.name}),l.name){case"If":return console.log("conditional expression If"),t(o,"expression",{prefix:"( "});case"Condition":{let a=Y(l,o);if((a==null?void 0:a.name)==="Column"){let m=vt(a);if((m==null?void 0:m.name)!=="RelationalOperator")return t(o,"condition-operator",{columnName:R(a,i)});console.log(`Condition last child Column, prev child ${m==null?void 0:m.name}`)}else if((a==null?void 0:a.name)==="RelationalOperator")return t(o,"expression");console.log(`condition last child ${a==null?void 0:a.name}`)}break;case"ConditionalExpression":return Qe(l,o,n);case"RelationalExpression":{if(on(l))return{from:o.pos,options:Ot.concat({label:", <truthy expression>, <falsy expression>",apply:", "})};{let a=cn(l,i),m=Fe(l,i);if(a)return t(o,"expression");{let g=await n.getSuggestions("condition-operator",{columnName:m});return{from:o.pos,options:g}}}}break;case"RelationalOperator":return t(o,"expression");case"String":{let a=cn(l,i),m=Fe(l,i),{from:g,to:d}=l;if(d-g===2&&o.pos===g+1){if(m&&a)return t(o,"columnValue",{columnName:m,operator:a,startsWith:s.text})}else if(d-g>2&&o.pos===d)return t(o,"expression",{prefix:", "});console.log(`we have a string, column is ${m} ${g} ${d}`)}break;case"ArithmeticExpression":{let a=Y(l,o);if((a==null?void 0:a.name)==="Column")return t(o,"expression");if(Tt(a)){let m=a.name;return t(o,"column",{operator:m})}}break;case"OpenBrace":{let a=un(l,i);return t(o,"expression",{functionName:a})}break;case"ArgList":{let a=un(l,i),m=Y(l,o),g=(m==null?void 0:m.name)==="OpenBrace"?void 0:",",d=await n.getSuggestions("expression",{functionName:a});return d=g?St(d,", "):d,(m==null?void 0:m.name)!=="OpenBrace"&&(m==null?void 0:m.name)!=="Comma"&&(d=[{apply:") ",boost:10,label:"Done - no more arguments"}].concat(d)),{from:o.pos,options:d}}case"Equal":if(c.trim()==="=")return t(o,"expression");break;case"ParenthesizedExpression":case"ColumnDefinitionExpression":if(o.pos===0)return t(o,"expression");{let a=Y(l,o);if((a==null?void 0:a.name)==="Column"){if(C){let m=[{apply:()=>{e.current()},label:"Save Expression",boost:10}],g=R(a,i),d=await n.getSuggestions("operator",{columnName:g});return{from:o.pos,options:m.concat(d)}}}else if((a==null?void 0:a.name)==="CallExpression"){if(C){let m=[{apply:()=>{e.current()},label:"Save Expression",boost:10}];return{from:o.pos,options:m}}}else if((a==null?void 0:a.name)==="ArithmeticExpression"){if(C){let m=[{apply:()=>{e.current()},label:"Save Expression",boost:10}],g=Y(a,o);if((g==null?void 0:g.name)==="Column"){let d=R(g,i),b=await n.getSuggestions("operator",{columnName:d});m=m.concat(b)}return{from:o.pos,options:m}}}else if((a==null?void 0:a.name)==="ConditionalExpression")return Qe(a,o,n,C,e.current);break}case"Column":if(await n.isPartialMatch("expression",void 0,s.text))return t(o,"expression",{startsWith:s.text});break;case"Comma":{let a=ln(l);if((a==null?void 0:a.name)==="ConditionalExpression")return t(o,"expression")}break;case"CloseBrace":{let a=ln(l);if((a==null?void 0:a.name)==="ConditionalExpression")return Qe(a,o,n,C,e.current);if((a==null?void 0:a.name)==="ArgList"&&C)return wt(o,e.current);console.log(`does closebrace denote an ARgList or a parenthetised expression ? ${a}`)}break;default:((h=l==null?void 0:l.prevSibling)==null?void 0:h.name)==="FilterClause"&&console.log("looks like we ight be a or|and operator")}},[t,e,n])};var le=n=>{if(n.current==null)throw Error("EditorView not defined");return n.current},Lt=()=>"vuuSuggestion",It=()=>console.log("noooop"),Bt=n=>"expressionType"in n,Ut=n=>{if(Bt(n)){let e=fn("div","expression-type-container"),t=fn("span","expression-type",n.expressionType);return e.appendChild(t),e}else return null},Cn=({onChange:n,onSubmitExpression:e,suggestionProvider:t})=>{let o=Ie(null),i=Ie(It),r=Ie(),s=mn(t,i),[p,l]=Ft(()=>{let c=()=>{let g=le(r),d=g.state.doc.toString(),b=kt(g.state,g.state.doc.length,5e3);if(b){let v=en(b,d);return[d,v]}else return["",void 0]},C=()=>{le(r).setState(m())},x=()=>{let[g,d]=c();e==null||e(g,d),C()},h=g=>Le.of([{key:g,run(){return x(),!0}}]),a=g=>Le.of([{key:g,run(){return gn(le(r)),!0}}]),m=()=>At.create({doc:"",extensions:[Nt,Dt({addToOptions:[{render:Ut,position:70}],override:[s],optionClass:Lt}),Ke(),Le.of(Rt),h("Ctrl-Enter"),a("ArrowDown"),dn.updateListener.of(g=>{let d=le(r);if(g.docChanged){gn(d);let b=d.state.doc.toString();n==null||n(b,void 0)}}),an,sn]});return i.current=()=>{x(),setTimeout(()=>{le(r).focus()},100)},[m,C]},[s,n,e]);return Qt(()=>{if(!o.current)throw Error("editor not in dom");return r.current=new dn({state:p(),parent:o.current}),()=>{var c;(c=r.current)==null||c.destroy()}},[s,p]),{editorRef:o,clearInput:l}};import{jsx as Gt}from"react/jsx-runtime";var $t="vuuColumnExpressionInput",xn=({onChange:n,onSubmitExpression:e,suggestionProvider:t})=>{let{editorRef:o}=Cn({onChange:n,onSubmitExpression:e,suggestionProvider:t});return Gt("div",{className:`${$t}`,ref:o})};import{AnnotationType as Mt,getRelationalOperators as Wt,numericOperators as Xt,stringOperators as Ht,toSuggestions as Vt}from"@vuu-ui/vuu-codemirror";import{getTypeaheadParams as zt,useTypeaheadSuggestions as Yt}from"@vuu-ui/vuu-data";import{isNumericColumn as Ue,isTextColumn as Zt}from"@vuu-ui/vuu-utils";import{useCallback as Be,useRef as Jt}from"react";var Z=[{accepts:"string",description:"Returns multiple string values as a single joined string. Arguments may be string literal values, string columns or other string expressions. Non string arguments may also be included, these will be converted to strings.",example:{expression:'concatenate("example", "-test")',result:'"example-test"'},name:"concatenate",params:{description:"( string, string, [ string* ] )"},type:"string"},{accepts:["string","string"],description:"Tests a string value to determine whether it contains a given substring. Accepts two arguments: source text and target substring. Returns true if <source text> contains one or more occurrences of <target subscring>",example:{expression:'contains("Royal Bank of Scotland", "bank")',result:"true"},name:"contains",params:{description:"( string )"},type:"boolean"},{accepts:["string","number"],description:"Returns the leftmost <number> characters from <string>. First argument may be a string literal, string column or other string expression.",example:{expression:'left("USD Benchmark Report", 3)',result:'"USD"'},name:"left",params:{count:2,description:"( string, number )"},type:"string"},{accepts:"string",description:"Returns the number of characters in <string>. Argument may be a string literal, string column or other string expression.",example:{expression:'len("example")',result:"7"},name:"len",params:{description:"(string)"},type:"number"},{accepts:"string",description:"Convert a string value to lowercase. Argument may be a string column or other string expression.",example:{expression:'lower("examPLE")',result:'"example"'},name:"lower",params:{description:"( string )"},type:"string"},{accepts:"string",description:"Convert a string value to uppercase. Argument may be a string column or other string expression.",example:{expression:'upper("example")',result:'"EXAMPLE"'},name:"upper",params:{description:"( string )"},type:"string"},{accepts:["string","number"],description:"Returns the rightmost <number> characters from <string>. First argument may be a string literal, string column or other string expression.",example:{expression:"blah",result:"blah"},name:"right",params:{description:"( string )"},type:"string"},{accepts:["string","string","string"],description:"Replace characters within a string. Accepts three arguments: source text, text to replace and replacement text. Returns a copy of <source text> with any occurrences of <text to replace> replaced by <replacement text>",example:{expression:"blah",result:"blah"},name:"replace",params:{description:"( string )"},type:"string"},{accepts:"number",description:"Converts a number to a string.",example:{expression:"blah",result:"blah"},name:"text",params:{description:"( string )"},type:"string"},{accepts:"string",description:"Tests a string value to determine whether it starts with a given substring. Accepts two arguments: source text and target substring. Returns true if <source text> starts with <target subscring>.",example:{expression:"blah",result:"blah"},name:"starts",params:{description:"( string )"},type:"boolean"},{accepts:"string",description:"Tests a string value to determine whether it ends with a given substring. Accepts two arguments: source text and target substring. Returns true if <source text> ends with <target subscring>.",example:{expression:"blah",result:"blah"},name:"ends",params:{description:"( string )"},type:"boolean"},{accepts:"number",description:"blah",example:{expression:"blah",result:"blah"},name:"min",params:{description:"( string )"},type:"number"},{accepts:"number",description:"blah",example:{expression:"blah",result:"blah"},name:"max",params:{description:"( string )"},type:"number"},{accepts:"number",description:"blah",example:{expression:"blah",result:"blah"},name:"sum",params:{description:"( string )"},type:"number"},{accepts:"number",description:"blah",example:{expression:"blah",result:"blah"},name:"round",params:{description:"( string )"},type:"number"},{accepts:"any",description:"blah",example:{expression:"blah",result:"blah"},name:"or",params:{description:"( string )"},type:"boolean"},{accepts:"any",description:"blah",example:{expression:"blah",result:"blah"},name:"and",params:{description:"( string )"},type:"boolean"},{accepts:"any",description:"Return one of two possible result values, depending on the evaluation of a filter expression. If <filterExpression> resolves to true, result is <expression1>, otherwise <expression2>. ",example:{expression:"blah",result:"blah"},name:"if",params:{description:"( filterExpression, expression1, expression 2)"},type:"variable"}];import{createEl as A}from"@vuu-ui/vuu-utils";var hn=({name:n,description:e,example:t,params:o,type:i})=>{let r=A("div","vuuFunctionDoc"),s=A("div","function-heading"),p=A("span","function-name",n),l=A("span","param-list",o.description),c=A("span","function-type",i);s.appendChild(p),s.appendChild(l),s.appendChild(c);let C=A("p",void 0,e);if(r.appendChild(s),r.appendChild(C),t){let x=A("div","example-container","Example:"),h=A("div","example-expression",t.expression),a=A("div","example-result",t.result);x.appendChild(h),x.appendChild(a),r.appendChild(x)}return r};var qt=[],I=n=>n.map(e=>{var t;return{...e,apply:((t=e.apply)!=null?t:e.label)+" "}}),_t=(n,{functionName:e,operator:t})=>{if(t)return n.filter(Ue);if(e){let o=Z.find(i=>i.name===e);if(o)switch(o.accepts){case"string":return n.filter(Zt);case"number":return n.filter(Ue);default:return n}}return n},yn=(n,e)=>_t(n,e).map(o=>{var r;let i=(r=o.label)!=null?r:o.name;return{apply:e.prefix?`${e.prefix}${i}`:i,label:i,boost:5,type:"column",expressionType:o.serverDataType}}),Kt=[{apply:"* ",boost:2,label:"*",type:"operator"},{apply:"/ ",boost:2,label:"/",type:"operator"},{apply:"+ ",boost:2,label:"+",type:"operator"},{apply:"- ",boost:2,label:"-",type:"operator"}],jt=n=>n===void 0||Ue(n)?Kt:qt,eo=n=>{switch(n.serverDataType){case"string":case"char":return I(Ht);case"int":case"long":case"double":return I(Xt)}},$e=n=>({apply:`${n.name}( `,boost:2,expressionType:n.type,info:()=>hn(n),label:n.name,type:"function"}),no=n=>{if(n){if(typeof n.accepts=="string")return n.accepts;if(Array.isArray(n.accepts))return n.accepts.every(e=>e==="string")?"string":"any"}return"any"},to=Z.map($e),oo=({functionName:n})=>{if(n){let e=Z.find(o=>o.name===n),t=no(e);if(e)switch(t){case"string":return Z.filter(o=>o.type==="string"||o.type==="variable").map($e);case"number":return Z.filter(o=>o.type==="number"||o.type==="variable").map($e);default:}}return to},ro={},bn=({columns:n,table:e})=>{let t=Be(p=>p?n.find(l=>l.name===p):void 0,[n]),o=Jt(),i=Yt(),r=Be(async(p,l=ro)=>{let{columnName:c,functionName:C,operator:x,prefix:h}=l;switch(p){case"expression":{let a=await I(yn(n,{functionName:C,prefix:h})).concat(oo(l));return o.current=a}case"column":{let a=await yn(n,l);return o.current=I(a)}case"operator":{let a=await jt(t(c));return o.current=I(a)}case"relational-operator":{let a=await Wt(t(c));return o.current=I(a)}case"condition-operator":{let a=t(c);if(a){let m=await eo(a);if(m)return o.current=I(m)}}break;case"columnValue":if(c&&x){let a=zt(e,c),m=await i(a);return o.current=Vt(m,{suffix:""}),o.current.forEach(g=>{g.apply=(d,b,v)=>{let w=new Mt,oe=v+b.label.length+1;d.dispatch({changes:{from:v,insert:b.label},selection:{anchor:oe,head:oe},annotations:w.of(b)})}}),o.current}break}return[]},[n,t,i,e]),s=Be(async(p,l,c)=>{let{current:C}=o,x=!1,h=C||await r(p,{columnName:l});if(c&&h)for(let a of h){if(a.label===c)return!1;a.label.startsWith(c)&&(x=!0)}return x},[r]);return{getSuggestions:r,isPartialMatch:s}};import{Button as ze,Panel as ir}from"@salt-ds/core";import ar from"classnames";import{useCallback as me,useState as Wn}from"react";import{List as On}from"@heswell/salt-lab";import{Button as pe,Text as vn,useIdMemo as lo}from"@salt-ds/core";import{useCallback as B,useState as po}from"react";import{ListItem as so}from"@heswell/salt-lab";import io from"classnames";import{jsx as Ge,jsxs as ao}from"react/jsx-runtime";var J="vuuColumnListItem",En=({className:n,item:e,label:t,style:o,...i})=>{let r=io(J,n,{[`${J}-calculated`]:e==null?void 0:e.expression,[`${J}-hidden`]:e==null?void 0:e.hidden});return ao(so,{className:r,...i,children:[Ge("span",{className:`${J}-iconType`}),Ge("label",{className:`${J}-label`,children:t}),Ge("span",{className:`${J}-iconHidden`})]})};import{jsx as E,jsxs as _}from"react/jsx-runtime";var q="vuuColumnPicker",uo=(n,e)=>n.filter(t=>e.find(o=>o.name===t.name)==null),Pn=({availableColumns:n,id:e,dispatchColumnAction:t,onAddCalculatedColumnClick:o,onSelectionChange:i,chosenColumns:r,selectedColumn:s})=>{let[p,l]=po([]),c=lo(e),C=uo(n,r),x=B(()=>{p.length>0&&(l([]),t({type:"addColumn",columns:p}))},[t,p]),h=B(()=>s&&t({type:"removeColumn",column:s}),[s,t]),a=B(()=>s&&t({type:"moveColumn",column:s,moveBy:-1}),[t,s]),m=B(()=>s&&t({type:"moveColumn",column:s,moveBy:1}),[t,s]),g=B((v,w)=>l(w),[]),d=B((v,w)=>i==null?void 0:i(w),[i]),b=B((v,w)=>{t({type:"moveColumn",moveFrom:v,moveTo:w})},[t]);return _("div",{className:q,id:c,children:[_("div",{className:`${q}-listColumn`,children:[E("label",{htmlFor:`available-${c}`,children:E(vn,{as:"h4",children:"Available Columns"})}),E("div",{className:`${q}-listContainer`,style:{flex:1,overflow:"hidden"},children:E(On,{borderless:!0,checkable:!1,height:"100%",id:`available-${c}`,itemHeight:24,itemToString:v=>v.name,onSelectionChange:g,selected:p,selectionStrategy:"extended",source:C})}),E("div",{style:{display:"flex",alignItems:"center",flex:"0 0 32px",marginTop:"var(--salt-size-basis-unit)"},children:_(pe,{onClick:x,disabled:p.length===0,children:["Show",E("span",{"data-icon":"arrow-thin-right",style:{marginLeft:8}})]})})]}),_("div",{className:`${q}-listColumn`,children:[E("label",{htmlFor:`selected-${c}`,children:E(vn,{as:"h4",children:"Included Columns"})}),E("div",{className:`${q}-listContainer`,style:{flex:1,overflow:"hidden"},children:E(On,{ListItem:En,allowDragDrop:!0,borderless:!0,height:"100%",id:`selected-${c}`,itemHeight:24,itemToString:v=>v.name,onMoveListItem:b,onSelectionChange:d,selected:s,style:{flex:1},source:r})}),_("div",{style:{alignItems:"center",flex:"0 0 32px",display:"flex",gap:6,marginTop:"var(--salt-size-basis-unit)"},children:[_(pe,{onClick:h,disabled:s===null,children:[E("span",{"data-icon":"arrow-thin-left",style:{marginRight:8}}),"Hide"]}),E(pe,{"aria-label":"Move column up",onClick:a,disabled:s===null||(r==null?void 0:r.indexOf(s))===0,style:{width:28},children:E("span",{"data-icon":"arrow-thin-up"})}),E(pe,{"aria-label":"Move column down",onClick:m,disabled:s===null||r.indexOf(s)===r.length-1,style:{width:28},children:E("span",{"data-icon":"arrow-thin-down"})}),E(pe,{"aria-label":"Add calculated column",className:`${q}-addCalculatedColumn`,onClick:o,variant:"primary",children:E("span",{"data-icon":"add"})})]})]})]})};import{Stack as Ro}from"@vuu-ui/vuu-layout";import{Checkbox as Ao,FormField as U,Input as We,RadioButton as ue,RadioButtonGroup as Nn,StepperInput as ko}from"@heswell/salt-lab";import{Panel as Qn,Text as No}from"@salt-ds/core";import Qo from"classnames";import{useCallback as j,useState as Fo}from"react";import{getRegisteredCellRenderers as bo}from"@vuu-ui/vuu-utils";import{Dropdown as Eo}from"@heswell/salt-lab";import{Panel as Oo}from"@salt-ds/core";import Rn from"classnames";import{useMemo as vo}from"react";import{FormField as co,StepperInput as mo,Switch as Sn}from"@heswell/salt-lab";import{Text as go}from"@salt-ds/core";import{useCallback as ye}from"react";import{Fragment as Tn,jsx as K,jsxs as xo}from"react/jsx-runtime";var fo={alignOnDecimals:!1,decimals:4,zeroPad:!1},Co=(n,e)=>{let t=typeof n=="object"&&n.formatting?n.formatting:{};return["alignOnDecimals","decimals","zeroPad"].reduce((i,r)=>t[r]!==void 0?{...i,[r]:t[r]}:(e==null?void 0:e[r])!==void 0?{...i,[r]:e[r]}:i,fo)},wn=({column:n,dispatchColumnAction:e})=>{let{decimals:t,alignOnDecimals:o,zeroPad:i}=Co(n==null?void 0:n.type),r=ye(c=>e({type:"updateColumnTypeFormatting",column:n,...c}),[n,e]),s=ye(c=>r({decimals:parseInt(c.toString(),10)}),[r]),p=ye((c,C)=>r({alignOnDecimals:C}),[r]),l=ye((c,C)=>r({zeroPad:C}),[r]);switch(n.serverDataType){case"double":return xo(Tn,{children:[K(co,{label:"No of Decimals",labelPlacement:"top",children:K(mo,{value:t,onChange:s})}),K(Sn,{checked:o,label:"Align on decimals",LabelProps:{className:"vuuColumnPanelSwitch"},onChange:p}),K(Sn,{checked:i,label:"Zero pad",LabelProps:{className:"vuuColumnPanelSwitch"},onChange:l})]});case"long":case"int":return K(Tn,{children:K(go,{children:"Work in progress"})});default:return null}};import{Fragment as ho,jsx as yo}from"react/jsx-runtime";var Dn=({column:n,dispatchColumnAction:e})=>yo(ho,{children:"String"});import{Fragment as wo,jsx as be,jsxs as Do}from"react/jsx-runtime";var Me="vuuColumnTypePanel",Po=["Default Renderer (int, long)"],So=["Default Renderer (double)"],An=["Default Renderer (string)"],To=n=>{let t=bo(n.serverDataType).map(o=>o.name);switch(console.log({customRendererNames:t}),n.serverDataType){case"char":case"string":return An;case"int":case"long":return Po;case"double":return So.concat(t);default:return An}},kn=({className:n,column:e,dispatchColumnAction:t,...o})=>{let i=vo(()=>{switch(e.serverDataType){case"double":case"int":case"long":return be(wn,{column:e,dispatchColumnAction:t});default:return be(Dn,{column:e,dispatchColumnAction:t})}},[e,t]),{serverDataType:r="string"}=e,s=To(e);return Do(wo,{children:[be(Eo,{className:Rn(`${Me}-renderer`),fullWidth:!0,selected:s[0],source:s}),be(Oo,{...o,className:Rn(Me,n,`${Me}-${r}`),children:i})]})};import{jsx as y,jsxs as ee}from"react/jsx-runtime";var Fn="vuuColumnSettingsPanel",Lo={className:"salt-density-high"},Ln=()=>null,In=({column:n,dispatchColumnAction:e,style:t,...o})=>{var h,a,m,g;let[i,r]=Fo(0),s=j(d=>e({type:"updateColumnProp",column:n,...d}),[n,e]),p=j(d=>s({align:d.target.value}),[s]),l=j(d=>s({pin:d.target.value}),[s]),c=j((d,b)=>s({hidden:b}),[s]),C=j((d,b)=>s({label:b}),[s]),x=j(d=>s({width:parseInt(d.toString(),10)}),[s]);return ee("div",{className:Fn,...o,style:{...t},children:[y(No,{as:"h4",children:"Column Settings"}),ee(Ro,{active:i,showTabs:!0,className:Qo(`${Fn}-columnTabs`),onTabSelectionChanged:r,TabstripProps:Lo,children:[ee(Qn,{title:"Column",children:[y(U,{label:"Hidden",labelPlacement:"left",children:y(Ao,{checked:n.hidden===!0,onChange:c})}),y(U,{label:"Label",labelPlacement:"left",children:y(We,{value:(h=n.label)!=null?h:n.name,onChange:C})}),y(U,{label:"Width",labelPlacement:"left",children:y(ko,{value:(a=n.width)!=null?a:100,onChange:x})}),y(U,{label:"Align",labelPlacement:"left",ActivationIndicatorComponent:Ln,children:ee(Nn,{"aria-label":"Column Align",value:(m=n.align)!=null?m:"left",legend:"Align",onChange:p,children:[y(ue,{label:"Left",value:"left"}),y(ue,{label:"Right",value:"right"})]})}),y(U,{label:"Pin Column",labelPlacement:"left",ActivationIndicatorComponent:Ln,children:ee(Nn,{"aria-label":"Pin Column",value:(g=n.pin)!=null?g:"",legend:"Pin Column",onChange:l,children:[y(ue,{label:"Do not pin",value:""}),y(ue,{label:"Left",value:"left"}),y(ue,{label:"Right",value:"right"})]})})]}),y(kn,{column:n,dispatchColumnAction:e,title:"Data Cell"}),ee(Qn,{title:"Vuu",variant:"secondary",children:[y(U,{label:"Name",labelPlacement:"top",readOnly:!0,variant:"secondary",children:y(We,{value:n.name})}),y(U,{label:"Vuu type",labelPlacement:"top",readOnly:!0,variant:"secondary",children:y(We,{value:n.serverDataType})})]})]})]})};import{FormField as Bn,RadioButton as Xe,RadioButtonGroup as Io,StepperInput as Bo}from"@heswell/salt-lab";import{Panel as Uo,Text as $o}from"@salt-ds/core";import{useCallback as He}from"react";import{jsx as $,jsxs as Ve}from"react/jsx-runtime";var Go="vuuGridSettingsPanel",Mo=()=>null,Un=({config:n,dispatchColumnAction:e,style:t,...o})=>{var p;let i=He(l=>e({type:"updateGridSettings",...l}),[e]),r=He(l=>i({columnFormatHeader:l.target.value}),[i]),s=He(l=>i({columnDefaultWidth:parseInt(l.toString(),10)}),[i]);return console.log(`GridSettingsPanel ${JSON.stringify(n.columns,null,2)}`),Ve("div",{className:Go,...o,style:{...t},children:[$($o,{as:"h4",children:"Grid Settings"}),Ve(Uo,{children:[$(Bn,{label:"Format column labels",labelPlacement:"left",ActivationIndicatorComponent:Mo,children:Ve(Io,{"aria-label":"Format column labels",value:n.columnFormatHeader,legend:"Format column labels",onChange:r,children:[$(Xe,{label:"No Formatting",value:void 0}),$(Xe,{label:"Capitalize",value:"capitalize"}),$(Xe,{label:"Uppercase",value:"uppercase"})]})}),$(Bn,{label:"Default Column Width",labelPlacement:"left",children:$(Bo,{value:(p=n.columnDefaultWidth)!=null?p:100,onChange:s})})]})]})};import{useReducer as Wo}from"react";import{moveItem as Xo}from"@heswell/salt-lab";import{fromServerDataType as Ho}from"@vuu-ui/vuu-utils";var Vo=(n,e)=>{switch(console.log(`gridSettingsReducer ${e.type}`),e.type){case"addColumn":return zo(n,e);case"addCalculatedColumn":return Yo(n,e);case"moveColumn":return Jo(n,e);case"removeColumn":return Zo(n,e);case"updateColumn":return n;case"updateColumnProp":return qo(n,e);case"updateGridSettings":return _o(n,e);case"updateColumnTypeFormatting":return Ko(n,e);default:return n}},$n=n=>{let[e,t]=Wo(Vo,n);return{gridSettings:e,dispatchColumnAction:t}};function zo(n,{column:e,columns:t,index:o=-1}){let{columns:i}=n;if(o===-1){if(Array.isArray(t))return{...n,columns:i.concat(t)};if(e)return{...n,columns:i.concat(e)}}return n}function Yo(n,{columnName:e,columnType:t,expression:o}){let{columns:i}=n,r={name:e,expression:o,serverDataType:t};return{...n,columns:i.concat(r)}}function Zo(n,{column:e}){let{columns:t}=n;return{...n,columns:t.filter(o=>o.name!==e.name)}}function Jo(n,{column:e,moveBy:t,moveFrom:o,moveTo:i}){let{columns:r}=n;if(e&&typeof t=="number"){let s=r.indexOf(e),p=r.slice(),[l]=p.splice(s,1);return p.splice(s+t,0,l),{...n,columns:p}}else return typeof o=="number"&&typeof i=="number"?{...n,columns:Xo(r,o,i)}:n}function qo(n,{align:e,column:t,hidden:o,label:i,width:r}){let{columns:s}=n;return(e==="left"||e==="right")&&(s=ce(s,{...t,align:e})),typeof o=="boolean"&&(s=ce(s,{...t,hidden:o})),typeof i=="string"&&(s=ce(s,{...t,label:i})),typeof r=="number"&&(s=ce(s,{...t,width:r})),{...n,columns:s}}function _o(n,{columnFormatHeader:e}){return{...n,columnFormatHeader:e!=null?e:n.columnFormatHeader}}function Ko(n,{alignOnDecimals:e,column:t,decimals:o,zeroPad:i}){let{columns:r}=n;if(r.find(p=>p.name===t.name)){let{serverDataType:p="string",type:l=Ho(p)}=t,c=typeof l=="string"?{name:l}:{...l};return typeof e=="boolean"&&(c.formatting={...c.formatting,alignOnDecimals:e}),typeof o=="number"&&(c.formatting={...c.formatting,decimals:o}),typeof i=="boolean"&&(c.formatting={...c.formatting,zeroPad:i}),{...n,columns:ce(r,{...t,type:c})}}else return n}function ce(n,e){return n.map(t=>t.name===e.name?e:t)}import{Stack as lr}from"@vuu-ui/vuu-layout";import{FormField as jo,Input as er}from"@heswell/salt-lab";import{Button as nr,Panel as tr,Text as or}from"@salt-ds/core";import{useCallback as Ee,useRef as rr,useState as Gn}from"react";import{jsx as ne,jsxs as sr}from"react/jsx-runtime";var Mn=({columns:n,dispatchColumnAction:e,table:t})=>{let[o,i]=Gn(""),[,r]=Gn(),s=rr(""),p=bn({columns:n,table:t}),l=Ee(h=>{let{value:a}=h.target;i(a)},[]),c=Ee(h=>{s.current=h},[]),C=Ee((h,a)=>{console.log({source:h}),r(a)},[]),x=Ee(()=>{s.current&&(console.log(`save expression ${JSON.stringify(s.current,null,2)}`),e({type:"addCalculatedColumn",columnName:o,expression:s.current,columnType:"string"}))},[o,e]);return sr(tr,{className:"vuuCalculatedColumnPanel",title:"Define Computed Column",children:[ne(or,{styleAs:"h4",children:"Define Computed Column"}),ne(jo,{label:"Column Name",labelPlacement:"left",children:ne(er,{value:o,onChange:l})}),ne(xn,{onChange:c,onSubmitExpression:C,suggestionProvider:p}),ne("div",{style:{marginTop:12},children:ne(nr,{onClick:x,children:"Add Column"})})]})};import{jsx as k,jsxs as ve}from"react/jsx-runtime";var Oe="vuuDatagridSettingsPanel",pr=()=>{},ur=["table-settings","column-chooser","column-settings","define-column"],cr=(n,e)=>ur[e],Va=({availableColumns:n,className:e,gridConfig:t,onCancel:o,onConfigChange:i,...r})=>{var oe;console.log("DatagridSettingsPanel render");let[s,p]=Wn(0),{gridSettings:l,dispatchColumnAction:c}=$n(t),[C,x]=Wn(null),h=me(D=>{x(D?D.name:null)},[]),a=me((D,Xn=!1)=>{console.log("1) DataGridSettingsPanel fire onConfigChange"),i==null||i(l,Xn)},[l,i]),m=me(D=>{p(D)},[]),g=me(D=>a(D,!0),[a]),d=C===null?null:(oe=l.columns.find(D=>D.name===C))!=null?oe:null,b={activeTabIndex:s,enableRenameTab:!1,orientation:"vertical"},v=me(()=>p(3),[]),w=s===2?"right":void 0;return ve("div",{...r,className:ar(Oe,e),children:[ve(lr,{TabstripProps:b,className:`${Oe}-stack`,getTabIcon:cr,getTabLabel:pr,active:s===2?1:s,onTabSelectionChanged:m,showTabs:!0,children:[k(Un,{config:l,dispatchColumnAction:c}),ve("div",{className:`${Oe}-columnPanels`,"data-align":w,children:[k(Pn,{availableColumns:n,chosenColumns:l.columns,dispatchColumnAction:c,onSelectionChange:h,onAddCalculatedColumnClick:v,selectedColumn:d}),d===null?k(ir,{className:"vuuColumnSettingsPanel",children:"Select a column"}):k(In,{column:d,dispatchColumnAction:c,style:{background:"white",flex:"1 0 150px"}})]}),k("div",{title:"Column Settings",children:"Column Settings"}),k(Mn,{columns:l.columns,dispatchColumnAction:c,table:{module:"SIMUL",table:"instruments"}})]}),ve("div",{className:`${Oe}-buttonBar`,children:[k(ze,{onClick:o,children:"Cancel"}),k(ze,{onClick:a,children:"Apply"}),k(ze,{onClick:g,children:"Save"})]})]})};import{useEffect as mr,useState as Ye}from"react";import dr from"classnames";import{jsx as te,jsxs as gr}from"react/jsx-runtime";var de="vuuDatasourceStats",Ze=new Intl.NumberFormat,rl=({className:n,dataSource:e})=>{let[t,o]=Ye(e.optimize),[i,r]=Ye(e.range),[s,p]=Ye(e.size);mr(()=>{o(e.optimize),p(e.size),e.on("optimize",o),e.on("resize",p),e.on("range",r)},[e]);let l=dr(de,n),c=Ze.format(i.from),C=Ze.format(i.to-1),x=Ze.format(s);return gr("div",{className:l,children:[te("span",{children:"Showing rows"}),te("span",{className:`${de}-range`,children:c}),te("span",{className:`${de}-range`,children:C}),te("span",{children:"of"}),te("span",{className:`${de}-size`,children:x}),te("span",{className:`${de}-optimize`,children:t})]})};export{xn as ColumnExpressionInput,Ae as ColumnNamedTerms,rl as DataSourceStats,Va as DatagridSettingsPanel,Ke as columnExpressionLanguageSupport,tn as isCompleteExpression,on as isCompleteRelationalExpression,ke as lastNamedChild,Cn as useColumnExpressionEditor,bn as useColumnExpressionSuggestionProvider,en as walkTree};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|