@vuu-ui/vuu-table-extras 0.6.25 → 0.6.26
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cjs/index.js +1 -1
- package/cjs/index.js.map +4 -4
- package/esm/index.js +1 -1
- package/esm/index.js.map +4 -4
- package/index.css +1 -1
- package/index.css.map +3 -3
- package/package.json +9 -9
- package/types/cell-renderers/index.d.ts +1 -0
- package/types/cell-renderers/progress-cell/ProgressCell.d.ts +1 -0
- package/types/cell-renderers/progress-cell/index.d.ts +1 -0
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&&"flashStyle"in e||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};
|
|
1
|
+
var _e=(n,e,t)=>{if(!e.has(n))throw TypeError("Cannot "+t)};var u=(n,e,t)=>(_e(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)=>(_e(n,e,"write to private field"),o?o.call(n,t):e.set(n,t),t);import{DOWN1 as Kn,DOWN2 as jn,isTypeDescriptor as et,metadataKeys as nt,registerComponent as tt,UP1 as ot,UP2 as rt}from"@vuu-ui/vuu-utils";import st from"classnames";import{useEffect as Yn,useRef as Zn}from"react";import{isTypeDescriptor as Jn}from"@vuu-ui/vuu-utils";import{getMovingValueDirection as qn,isValidNumber as Ke}from"@vuu-ui/vuu-utils";var _n=[void 0,void 0,void 0,void 0];function je(n,e,t){var x;let o=Zn(),[i,s,r,p]=o.current||_n,{type:l}=t,c=Jn(l)?(x=l.formatting)==null?void 0:x.decimals:void 0,g=n===i&&Ke(e)&&Ke(s)&&t===r?qn(e,p,s,c):"";return Yn(()=>{o.current=[n,e,t,g]}),g}import{jsx as ut,jsxs as mt}from"react/jsx-runtime";var it=String.fromCharCode(11014),at=String.fromCharCode(11015),{KEY:lt}=nt,fe="vuuBackgroundCell",oe={ArrowOnly:"arrow",BackgroundOnly:"bg-only",ArrowBackground:"arrow-bg"},pt=n=>et(n)&&n.renderer&&"flashStyle"in n.renderer?n.renderer.flashStyle:oe.BackgroundOnly,ct=({column:n,row:e})=>{let{key:t,type:o,valueFormatter:i}=n,s=e[t],r=pt(o),p=je(e[lt],s,n),l=r===oe.ArrowOnly||r===oe.ArrowBackground?p===ot||p===rt?it:p===Kn||p===jn?at:null:null,c=p?" "+p:"",g=st(fe,c,{[`${fe}-arrowOnly`]:r===oe.ArrowOnly,[`${fe}-arrowBackground`]:r===oe.ArrowBackground});return mt("div",{className:g,tabIndex:-1,children:[ut("div",{className:`${fe}-flasher`,children:l}),i(e[n.key])]})};tt("background",ct,"cell-renderer",{serverDataType:["long","int","double"]});import{isColumnTypeRenderer as dt,isTypeDescriptor as gt,registerComponent as ft}from"@vuu-ui/vuu-utils";import Ct from"classnames";import{jsx as Se,jsxs as en}from"react/jsx-runtime";var re="vuuProgressCell",xt=({column:n,columnMap:e,row:t})=>{let{type:o}=n,i=t[n.key],s=!1,r=0;if(gt(o)&&dt(o.renderer)){let{associatedField:l}=o.renderer,c=t[e[l]];if(typeof i=="number"&&typeof c=="number")r=Math.min(Math.round(i/c*100),100),s=isFinite(r);else{let g=parseFloat(i);if(Number.isFinite(g)){let x=parseFloat(c);Number.isFinite(x)&&(r=Math.min(Math.round(g/x*100),100),s=isFinite(r))}}}let p=Ct(re,{});return en("div",{className:p,tabIndex:-1,children:[s?en("span",{className:`${re}-track`,children:[Se("span",{className:`${re}-bg`}),Se("span",{className:`${re}-bar`,style:{"--progress-bar-pct":`-${100-r}%`}})]}):null,Se("span",{className:`${re}-text`,children:`${r} %`})]})};ft("vuu.progress",xt,"cell-renderer",{serverDataType:["long","int","double"]});import{autocompletion as Bt,defaultKeymap as $t,EditorState as Ut,EditorView as Cn,ensureSyntaxTree as Mt,keymap as Be,minimalSetup as Gt,startCompletion as xn}from"@vuu-ui/vuu-codemirror";import{createEl as hn}from"@vuu-ui/vuu-utils";import{useEffect as Wt,useMemo as Xt,useRef as $e}from"react";import{LanguageSupport as yt,LRLanguage as bt,styleTags as Et,tags as xe}from"@vuu-ui/vuu-codemirror";import{LRParser as ht}from"@lezer/lr";var Ce=ht.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 Ot=bt.define({name:"VuuColumnExpression",parser:Ce.configure({props:[Et({Function:xe.variableName,String:xe.string,Or:xe.emphasis,Operator:xe.operator})]})}),nn=()=>new yt(Ot);var Te=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}}},we=class{constructor(e){this.type="colExpression";this.column=e}toJSON(){return{type:this.type,column:this.column}}},ie,F,De=class{constructor(e="unknown"){S(this,ie,[{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,ie)}toJSON(){return{type:this.type,op:u(this,F),expressions:u(this,ie)}}};ie=new WeakMap,F=new WeakMap;var X,Re=class{constructor(e){S(this,X,[]);this.type="callExpression";this.functionName=e}get expressions(){return u(this,X)}get arguments(){return u(this,X)}toJSON(){return{type:this.type,functionName:this.functionName,arguments:u(this,X).map(e=>{var t;return(t=e.toJSON)==null?void 0:t.call(e)})}}};X=new WeakMap;var ae,H,G=class{constructor(){S(this,ae,[{type:"unknown"},{type:"unknown"}]);S(this,H,"unknown");this.type="relationalExpression"}get op(){return u(this,H)}set op(e){N(this,H,e)}get expressions(){return u(this,ae)}toJSON(){return{type:this.type,op:u(this,H),expressions:u(this,ae)}}};ae=new WeakMap,H=new WeakMap;var le,V,W=class{constructor(e){S(this,le,[{type:"unknown"},{type:"unknown"}]);S(this,V,void 0);this.type="booleanCondition";N(this,V,e)}get op(){return u(this,V)}get expressions(){return u(this,le)}toJSON(){return{type:this.type,op:u(this,V),expressions:u(this,le).map(e=>{var t;return(t=e.toJSON)==null?void 0:t.call(e)})}}};le=new WeakMap,V=new WeakMap;var T,se=class{constructor(e){S(this,T,void 0);this.type="conditionalExpression";N(this,T,[e?new W(e):new G,{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,s;return{type:this.type,condition:(t=(e=this.condition).toJSON)==null?void 0:t.call(e),truthyExpression:this.truthyExpression,falsyExpression:(s=(i=(o=this.falsyExpression)==null?void 0:o.toJSON)==null?void 0:i.call(o))!=null?s:this.falsyExpression}}};T=new WeakMap;var Q=n=>n.type==="unknown",he=n=>n.type==="arithmeticExpression",vt=n=>n.type==="callExpression",M=n=>n.type==="conditionalExpression",Pt=n=>n.type==="relationalExpression"||n.type==="booleanCondition";var St=n=>n.type==="booleanCondition",ke=n=>(n==null?void 0:n.type)==="relationalExpression";var P=n=>{if(Q(n))return n;if(ke(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(Pt(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(he(n)){let{expressions:e=[]}=n;for(let t of e)if(O(t))return P(t)}},ye=(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(ye(i,e,t))return!0;return!1},O=n=>Q(n)?!0:M(n)?O(n.condition)||O(n.truthyExpression)||O(n.falsyExpression):ke(n)||St(n)?n.op===void 0||n.expressions.some(e=>O(e)):!1,tn=(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")},C,L,Ae=class{constructor(){S(this,C,void 0);S(this,L,[])}setCondition(e){if(u(this,C)===void 0)this.addExpression(new se(e));else if(M(u(this,C))){if(O(u(this,C).condition)){let t=e?new W(e):new G;this.addExpression(t)}else if(Q(u(this,C).truthyExpression))u(this,C).truthyExpression=new se(e);else if(O(u(this,C).truthyExpression)){let t=e?new W(e):new G;this.addExpression(t)}else if(Q(u(this,C).falsyExpression))u(this,C).falsyExpression=new se(e);else if(O(u(this,C).falsyExpression)){let t=e?new W(e):new G;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,C)===void 0)N(this,C,e);else if(he(u(this,C))){let t=P(u(this,C));t&&Q(t)&&ye(u(this,C),t,e)}else if(M(u(this,C))&&O(u(this,C))){let t=P(u(this,C));t&&Q(t)?ye(u(this,C),t,e):t&&tn(t,e)}}setFunction(e){let t=new Re(e);this.addExpression(t),u(this,L).push(t)}setColumn(e){this.addExpression(new we(e))}setArithmeticOp(e){let t=e,o=u(this,C);he(o)&&(o.op=t)}setRelationalOperator(e){let t=e;if(u(this,C)&&M(u(this,C))){let o=P(u(this,C));ke(o)?o.op=t:console.error(`no target expression found (op = ${e})`)}}setValue(e){let t=new Te(e);if(u(this,C)===void 0)N(this,C,t);else if(he(u(this,C)))this.addExpression(t);else if(vt(u(this,C)))u(this,C).arguments.push(t);else if(M(u(this,C)))if(O(u(this,C))){let o=P(u(this,C));o&&Q(o)?ye(u(this,C),o,t):o&&tn(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,C)}toJSON(){var e;return(e=u(this,C))==null?void 0:e.toJSON()}};C=new WeakMap,L=new WeakMap;var on=(n,e)=>{let t=new Ae,o=n.cursor();do{let{name:i,from:s,to:r}=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 De);break;case"Column":{let p=e.substring(s,r);t.setColumn(p)}break;case"Function":{let p=e.substring(s,r);t.setFunction(p)}break;case"Times":case"Divide":case"Plus":case"Minus":{let p=e.substring(s,r);t.setArithmeticOp(p)}break;case"RelationalOperator":{let p=e.substring(s,r);t.setRelationalOperator(p)}break;case"False":case"True":{let p=e.substring(s,r);t.setValue(p==="true")}break;case"String":t.setValue(e.substring(s+1,r-1));break;case"Number":t.setValue(parseFloat(e.substring(s,r)));break;case"CloseBrace":t.closeBrace();break;default:}}while(o.next());return t.toJSON()};var Tt=Ce.configure({strict:!0}),rn=["Number","String"],Ne=[...rn,"AndCondition","ArithmeticExpression","BooleanOperator","RelationalOperatorOperator","CallExpression","CloseBrace","Column","Comma","ConditionalExpression","Divide","Equal","If","Minus","OpenBrace","OrCondition","ParenthesizedExpression","Plus","RelationalExpression","RelationalOperator","Times"],sn=n=>{try{return Tt.parse(n),!0}catch{return!1}},Qe=n=>{let{lastChild:e}=n;for(;e&&!Ne.includes(e.name);)e=e.prevSibling,console.log(e==null?void 0:e.name);return e},an=n=>{if((n==null?void 0:n.name)==="RelationalExpression"){let{firstChild:e}=n,t=Qe(n);if((e==null?void 0:e.name)==="Column"&&typeof(t==null?void 0:t.name)=="string"&&rn.includes(t.name))return!0}return!1};import{HighlightStyle as wt,syntaxHighlighting as Dt,tags as ln}from"@vuu-ui/vuu-codemirror";var Rt=wt.define([{tag:ln.variableName,color:"var(--vuuFilterEditor-variableColor)"},{tag:ln.comment,color:"green",fontStyle:"italic"}]),pn=Dt(Rt);import{EditorView as At}from"@vuu-ui/vuu-codemirror";var cn=At.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 kt,getNamedParentNode as un,getPreviousNode as Nt,getValue as R,syntaxTree as Qt}from"@vuu-ui/vuu-codemirror";import{useCallback as mn}from"react";var Ft=(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,Lt=n=>n===void 0?!1:["Times","Divide","Plus","Minus"].includes(n.name),z=(n,e)=>{var i;let{lastChild:t}=n,{pos:o}=e;for(;t;)if(t.from<o&&Ne.includes(t.name)){if(t.name==="ParenthesizedExpression"){let r=(i=t.firstChild)==null?void 0:i.nextSibling;r&&(t=r)}return t}else t=t.prevSibling},dn=(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)}},gn=(n,e)=>{if(n.name==="RelationalExpression"){let t=Qe(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)}},Ie=(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 Ie(o,e)}},Fe=async(n,e,t,o={})=>{let i=await e.getSuggestions(t,o),{startsWith:s=""}=o;return{from:n.pos-s.length,options:i}},Le=(n,e,t,o,i)=>{let s=z(n,e);switch(console.log(`conditional expression last child ${s==null?void 0:s.name}`),s==null?void 0:s.name){case"If":return Fe(e,t,"expression",{prefix:"( "});case"OpenBrace":return Fe(e,t,"expression");case"Condition":return Fe(e,t,"expression",{prefix:", "});case"CloseBrace":if(o){let r=[{apply:()=>{i==null||i()},label:"Save Expression",boost:10}];return{from:e.pos,options:r}}}},It=(n,e)=>{let t=[{apply:()=>{e==null||e()},label:"Save Expression",boost:10}];return{from:n.pos,options:t}},fn=(n,e)=>{let t=mn(async(o,i,s={})=>{let r=await n.getSuggestions(i,s),{startsWith:p=""}=s;return{from:o.pos-p.length,options:r}},[n]);return mn(async o=>{var x,h;let{state:i,pos:s}=o,r=(x=o.matchBefore(/\w*/))!=null?x:{from:0,to:0,text:void 0},l=Qt(i).resolveInner(s,-1),c=i.doc.toString(),g=sn(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=z(l,o);if((a==null?void 0:a.name)==="Column"){let m=Nt(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 Le(l,o,n);case"RelationalExpression":{if(an(l))return{from:o.pos,options:kt.concat({label:", <truthy expression>, <falsy expression>",apply:", "})};{let a=gn(l,i),m=Ie(l,i);if(a)return t(o,"expression");{let f=await n.getSuggestions("condition-operator",{columnName:m});return{from:o.pos,options:f}}}}break;case"RelationalOperator":return t(o,"expression");case"String":{let a=gn(l,i),m=Ie(l,i),{from:f,to:d}=l;if(d-f===2&&o.pos===f+1){if(m&&a)return t(o,"columnValue",{columnName:m,operator:a,startsWith:r.text})}else if(d-f>2&&o.pos===d)return t(o,"expression",{prefix:", "});console.log(`we have a string, column is ${m} ${f} ${d}`)}break;case"ArithmeticExpression":{let a=z(l,o);if((a==null?void 0:a.name)==="Column")return t(o,"expression");if(Lt(a)){let m=a.name;return t(o,"column",{operator:m})}}break;case"OpenBrace":{let a=dn(l,i);return t(o,"expression",{functionName:a})}break;case"ArgList":{let a=dn(l,i),m=z(l,o),f=(m==null?void 0:m.name)==="OpenBrace"?void 0:",",d=await n.getSuggestions("expression",{functionName:a});return d=f?Ft(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=z(l,o);if((a==null?void 0:a.name)==="Column"){if(g){let m=[{apply:()=>{e.current()},label:"Save Expression",boost:10}],f=R(a,i),d=await n.getSuggestions("operator",{columnName:f});return{from:o.pos,options:m.concat(d)}}}else if((a==null?void 0:a.name)==="CallExpression"){if(g){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(g){let m=[{apply:()=>{e.current()},label:"Save Expression",boost:10}],f=z(a,o);if((f==null?void 0:f.name)==="Column"){let d=R(f,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 Le(a,o,n,g,e.current);break}case"Column":if(await n.isPartialMatch("expression",void 0,r.text))return t(o,"expression",{startsWith:r.text});break;case"Comma":{let a=un(l);if((a==null?void 0:a.name)==="ConditionalExpression")return t(o,"expression")}break;case"CloseBrace":{let a=un(l);if((a==null?void 0:a.name)==="ConditionalExpression")return Le(a,o,n,g,e.current);if((a==null?void 0:a.name)==="ArgList"&&g)return It(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 pe=n=>{if(n.current==null)throw Error("EditorView not defined");return n.current},Ht=()=>"vuuSuggestion",Vt=()=>console.log("noooop"),zt=n=>"expressionType"in n,Yt=n=>{if(zt(n)){let e=hn("div","expression-type-container"),t=hn("span","expression-type",n.expressionType);return e.appendChild(t),e}else return null},yn=({onChange:n,onSubmitExpression:e,suggestionProvider:t})=>{let o=$e(null),i=$e(Vt),s=$e(),r=fn(t,i),[p,l]=Xt(()=>{let c=()=>{let f=pe(s),d=f.state.doc.toString(),b=Mt(f.state,f.state.doc.length,5e3);if(b){let v=on(b,d);return[d,v]}else return["",void 0]},g=()=>{pe(s).setState(m())},x=()=>{let[f,d]=c();e==null||e(f,d),g()},h=f=>Be.of([{key:f,run(){return x(),!0}}]),a=f=>Be.of([{key:f,run(){return xn(pe(s)),!0}}]),m=()=>Ut.create({doc:"",extensions:[Gt,Bt({addToOptions:[{render:Yt,position:70}],override:[r],optionClass:Ht}),nn(),Be.of($t),h("Ctrl-Enter"),a("ArrowDown"),Cn.updateListener.of(f=>{let d=pe(s);if(f.docChanged){xn(d);let b=d.state.doc.toString();n==null||n(b,void 0)}}),cn,pn]});return i.current=()=>{x(),setTimeout(()=>{pe(s).focus()},100)},[m,g]},[r,n,e]);return Wt(()=>{if(!o.current)throw Error("editor not in dom");return s.current=new Cn({state:p(),parent:o.current}),()=>{var c;(c=s.current)==null||c.destroy()}},[r,p]),{editorRef:o,clearInput:l}};import{jsx as Jt}from"react/jsx-runtime";var Zt="vuuColumnExpressionInput",bn=({onChange:n,onSubmitExpression:e,suggestionProvider:t})=>{let{editorRef:o}=yn({onChange:n,onSubmitExpression:e,suggestionProvider:t});return Jt("div",{className:`${Zt}`,ref:o})};import{AnnotationType as qt,getRelationalOperators as _t,numericOperators as Kt,stringOperators as jt,toSuggestions as eo}from"@vuu-ui/vuu-codemirror";import{getTypeaheadParams as no,useTypeaheadSuggestions as to}from"@vuu-ui/vuu-data";import{isNumericColumn as Me,isTextColumn as oo}from"@vuu-ui/vuu-utils";import{useCallback as Ue,useRef as ro}from"react";var Y=[{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 En=({name:n,description:e,example:t,params:o,type:i})=>{let s=A("div","vuuFunctionDoc"),r=A("div","function-heading"),p=A("span","function-name",n),l=A("span","param-list",o.description),c=A("span","function-type",i);r.appendChild(p),r.appendChild(l),r.appendChild(c);let g=A("p",void 0,e);if(s.appendChild(r),s.appendChild(g),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),s.appendChild(x)}return s};var so=[],I=n=>n.map(e=>{var t;return{...e,apply:((t=e.apply)!=null?t:e.label)+" "}}),io=(n,{functionName:e,operator:t})=>{if(t)return n.filter(Me);if(e){let o=Y.find(i=>i.name===e);if(o)switch(o.accepts){case"string":return n.filter(oo);case"number":return n.filter(Me);default:return n}}return n},On=(n,e)=>io(n,e).map(o=>{var s;let i=(s=o.label)!=null?s:o.name;return{apply:e.prefix?`${e.prefix}${i}`:i,label:i,boost:5,type:"column",expressionType:o.serverDataType}}),ao=[{apply:"* ",boost:2,label:"*",type:"operator"},{apply:"/ ",boost:2,label:"/",type:"operator"},{apply:"+ ",boost:2,label:"+",type:"operator"},{apply:"- ",boost:2,label:"-",type:"operator"}],lo=n=>n===void 0||Me(n)?ao:so,po=n=>{switch(n.serverDataType){case"string":case"char":return I(jt);case"int":case"long":case"double":return I(Kt)}},Ge=n=>({apply:`${n.name}( `,boost:2,expressionType:n.type,info:()=>En(n),label:n.name,type:"function"}),co=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"},uo=Y.map(Ge),mo=({functionName:n})=>{if(n){let e=Y.find(o=>o.name===n),t=co(e);if(e)switch(t){case"string":return Y.filter(o=>o.type==="string"||o.type==="variable").map(Ge);case"number":return Y.filter(o=>o.type==="number"||o.type==="variable").map(Ge);default:}}return uo},go={},vn=({columns:n,table:e})=>{let t=Ue(p=>p?n.find(l=>l.name===p):void 0,[n]),o=ro(),i=to(),s=Ue(async(p,l=go)=>{let{columnName:c,functionName:g,operator:x,prefix:h}=l;switch(p){case"expression":{let a=await I(On(n,{functionName:g,prefix:h})).concat(mo(l));return o.current=a}case"column":{let a=await On(n,l);return o.current=I(a)}case"operator":{let a=await lo(t(c));return o.current=I(a)}case"relational-operator":{let a=await _t(t(c));return o.current=I(a)}case"condition-operator":{let a=t(c);if(a){let m=await po(a);if(m)return o.current=I(m)}}break;case"columnValue":if(c&&x){let a=no(e,c),m=await i(a);return o.current=eo(m,{suffix:""}),o.current.forEach(f=>{f.apply=(d,b,v)=>{let w=new qt,te=v+b.label.length+1;d.dispatch({changes:{from:v,insert:b.label},selection:{anchor:te,head:te},annotations:w.of(b)})}}),o.current}break}return[]},[n,t,i,e]),r=Ue(async(p,l,c)=>{let{current:g}=o,x=!1,h=g||await s(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},[s]);return{getSuggestions:s,isPartialMatch:r}};import{Button as Ze,Panel as fr}from"@salt-ds/core";import Cr from"classnames";import{useCallback as de,useState as Vn}from"react";import{List as Sn}from"@heswell/salt-lab";import{Button as ce,Text as Tn,useIdMemo as ho}from"@salt-ds/core";import{useCallback as B,useState as yo}from"react";import{ListItem as fo}from"@heswell/salt-lab";import Co from"classnames";import{jsx as We,jsxs as xo}from"react/jsx-runtime";var Z="vuuColumnListItem",Pn=({className:n,item:e,label:t,style:o,...i})=>{let s=Co(Z,n,{[`${Z}-calculated`]:e==null?void 0:e.expression,[`${Z}-hidden`]:e==null?void 0:e.hidden});return xo(fo,{className:s,...i,children:[We("span",{className:`${Z}-iconType`}),We("label",{className:`${Z}-label`,children:t}),We("span",{className:`${Z}-iconHidden`})]})};import{jsx as E,jsxs as q}from"react/jsx-runtime";var J="vuuColumnPicker",bo=(n,e)=>n.filter(t=>e.find(o=>o.name===t.name)==null),wn=({availableColumns:n,id:e,dispatchColumnAction:t,onAddCalculatedColumnClick:o,onSelectionChange:i,chosenColumns:s,selectedColumn:r})=>{let[p,l]=yo([]),c=ho(e),g=bo(n,s),x=B(()=>{p.length>0&&(l([]),t({type:"addColumn",columns:p}))},[t,p]),h=B(()=>r&&t({type:"removeColumn",column:r}),[r,t]),a=B(()=>r&&t({type:"moveColumn",column:r,moveBy:-1}),[t,r]),m=B(()=>r&&t({type:"moveColumn",column:r,moveBy:1}),[t,r]),f=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 q("div",{className:J,id:c,children:[q("div",{className:`${J}-listColumn`,children:[E("label",{htmlFor:`available-${c}`,children:E(Tn,{as:"h4",children:"Available Columns"})}),E("div",{className:`${J}-listContainer`,style:{flex:1,overflow:"hidden"},children:E(Sn,{borderless:!0,checkable:!1,height:"100%",id:`available-${c}`,itemHeight:24,itemToString:v=>v.name,onSelectionChange:f,selected:p,selectionStrategy:"extended",source:g})}),E("div",{style:{display:"flex",alignItems:"center",flex:"0 0 32px",marginTop:"var(--salt-size-basis-unit)"},children:q(ce,{onClick:x,disabled:p.length===0,children:["Show",E("span",{"data-icon":"arrow-thin-right",style:{marginLeft:8}})]})})]}),q("div",{className:`${J}-listColumn`,children:[E("label",{htmlFor:`selected-${c}`,children:E(Tn,{as:"h4",children:"Included Columns"})}),E("div",{className:`${J}-listContainer`,style:{flex:1,overflow:"hidden"},children:E(Sn,{ListItem:Pn,allowDragDrop:!0,borderless:!0,height:"100%",id:`selected-${c}`,itemHeight:24,itemToString:v=>v.name,onMoveListItem:b,onSelectionChange:d,selected:r,style:{flex:1},source:s})}),q("div",{style:{alignItems:"center",flex:"0 0 32px",display:"flex",gap:6,marginTop:"var(--salt-size-basis-unit)"},children:[q(ce,{onClick:h,disabled:r===null,children:[E("span",{"data-icon":"arrow-thin-left",style:{marginRight:8}}),"Hide"]}),E(ce,{"aria-label":"Move column up",onClick:a,disabled:r===null||(s==null?void 0:s.indexOf(r))===0,style:{width:28},children:E("span",{"data-icon":"arrow-thin-up"})}),E(ce,{"aria-label":"Move column down",onClick:m,disabled:r===null||s.indexOf(r)===s.length-1,style:{width:28},children:E("span",{"data-icon":"arrow-thin-down"})}),E(ce,{"aria-label":"Add calculated column",className:`${J}-addCalculatedColumn`,onClick:o,variant:"primary",children:E("span",{"data-icon":"add"})})]})]})]})};import{Stack as $o}from"@vuu-ui/vuu-layout";import{Checkbox as Uo,FormField as $,Input as He,RadioButton as ue,RadioButtonGroup as Ln,StepperInput as Mo}from"@heswell/salt-lab";import{Panel as In,Text as Go}from"@salt-ds/core";import Wo from"classnames";import{useCallback as K,useState as Xo}from"react";import{getRegisteredCellRenderers as Ro}from"@vuu-ui/vuu-utils";import{Dropdown as Ao}from"@heswell/salt-lab";import{Panel as ko}from"@salt-ds/core";import Nn from"classnames";import{useMemo as No}from"react";import{FormField as Eo,StepperInput as Oo,Switch as Dn}from"@heswell/salt-lab";import{Text as vo}from"@salt-ds/core";import{useCallback as be}from"react";import{Fragment as Rn,jsx as _,jsxs as To}from"react/jsx-runtime";var Po={alignOnDecimals:!1,decimals:4,zeroPad:!1},So=(n,e)=>{let t=typeof n=="object"&&n.formatting?n.formatting:{};return["alignOnDecimals","decimals","zeroPad"].reduce((i,s)=>t[s]!==void 0?{...i,[s]:t[s]}:(e==null?void 0:e[s])!==void 0?{...i,[s]:e[s]}:i,Po)},An=({column:n,dispatchColumnAction:e})=>{let{decimals:t,alignOnDecimals:o,zeroPad:i}=So(n==null?void 0:n.type),s=be(c=>e({type:"updateColumnTypeFormatting",column:n,...c}),[n,e]),r=be(c=>s({decimals:parseInt(c.toString(),10)}),[s]),p=be((c,g)=>s({alignOnDecimals:g}),[s]),l=be((c,g)=>s({zeroPad:g}),[s]);switch(n.serverDataType){case"double":return To(Rn,{children:[_(Eo,{label:"No of Decimals",labelPlacement:"top",children:_(Oo,{value:t,onChange:r})}),_(Dn,{checked:o,label:"Align on decimals",LabelProps:{className:"vuuColumnPanelSwitch"},onChange:p}),_(Dn,{checked:i,label:"Zero pad",LabelProps:{className:"vuuColumnPanelSwitch"},onChange:l})]});case"long":case"int":return _(Rn,{children:_(vo,{children:"Work in progress"})});default:return null}};import{Fragment as wo,jsx as Do}from"react/jsx-runtime";var kn=({column:n,dispatchColumnAction:e})=>Do(wo,{children:"String"});import{Fragment as Io,jsx as Ee,jsxs as Bo}from"react/jsx-runtime";var Xe="vuuColumnTypePanel",Qo=["Default Renderer (int, long)"],Fo=["Default Renderer (double)"],Qn=["Default Renderer (string)"],Lo=n=>{let t=Ro(n.serverDataType).map(o=>o.name);switch(console.log({customRendererNames:t}),n.serverDataType){case"char":case"string":return Qn;case"int":case"long":return Qo;case"double":return Fo.concat(t);default:return Qn}},Fn=({className:n,column:e,dispatchColumnAction:t,...o})=>{let i=No(()=>{switch(e.serverDataType){case"double":case"int":case"long":return Ee(An,{column:e,dispatchColumnAction:t});default:return Ee(kn,{column:e,dispatchColumnAction:t})}},[e,t]),{serverDataType:s="string"}=e,r=Lo(e);return Bo(Io,{children:[Ee(Ao,{className:Nn(`${Xe}-renderer`),fullWidth:!0,selected:r[0],source:r}),Ee(ko,{...o,className:Nn(Xe,n,`${Xe}-${s}`),children:i})]})};import{jsx as y,jsxs as j}from"react/jsx-runtime";var Bn="vuuColumnSettingsPanel",Ho={className:"salt-density-high"},$n=()=>null,Un=({column:n,dispatchColumnAction:e,style:t,...o})=>{var h,a,m,f;let[i,s]=Xo(0),r=K(d=>e({type:"updateColumnProp",column:n,...d}),[n,e]),p=K(d=>r({align:d.target.value}),[r]),l=K(d=>r({pin:d.target.value}),[r]),c=K((d,b)=>r({hidden:b}),[r]),g=K((d,b)=>r({label:b}),[r]),x=K(d=>r({width:parseInt(d.toString(),10)}),[r]);return j("div",{className:Bn,...o,style:{...t},children:[y(Go,{as:"h4",children:"Column Settings"}),j($o,{active:i,showTabs:!0,className:Wo(`${Bn}-columnTabs`),onTabSelectionChanged:s,TabstripProps:Ho,children:[j(In,{title:"Column",children:[y($,{label:"Hidden",labelPlacement:"left",children:y(Uo,{checked:n.hidden===!0,onChange:c})}),y($,{label:"Label",labelPlacement:"left",children:y(He,{value:(h=n.label)!=null?h:n.name,onChange:g})}),y($,{label:"Width",labelPlacement:"left",children:y(Mo,{value:(a=n.width)!=null?a:100,onChange:x})}),y($,{label:"Align",labelPlacement:"left",ActivationIndicatorComponent:$n,children:j(Ln,{"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($,{label:"Pin Column",labelPlacement:"left",ActivationIndicatorComponent:$n,children:j(Ln,{"aria-label":"Pin Column",value:(f=n.pin)!=null?f:"",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(Fn,{column:n,dispatchColumnAction:e,title:"Data Cell"}),j(In,{title:"Vuu",variant:"secondary",children:[y($,{label:"Name",labelPlacement:"top",readOnly:!0,variant:"secondary",children:y(He,{value:n.name})}),y($,{label:"Vuu type",labelPlacement:"top",readOnly:!0,variant:"secondary",children:y(He,{value:n.serverDataType})})]})]})]})};import{FormField as Mn,RadioButton as Ve,RadioButtonGroup as Vo,StepperInput as zo}from"@heswell/salt-lab";import{Panel as Yo,Text as Zo}from"@salt-ds/core";import{useCallback as ze}from"react";import{jsx as U,jsxs as Ye}from"react/jsx-runtime";var Jo="vuuGridSettingsPanel",qo=()=>null,Gn=({config:n,dispatchColumnAction:e,style:t,...o})=>{var p;let i=ze(l=>e({type:"updateGridSettings",...l}),[e]),s=ze(l=>i({columnFormatHeader:l.target.value}),[i]),r=ze(l=>i({columnDefaultWidth:parseInt(l.toString(),10)}),[i]);return Ye("div",{className:Jo,...o,style:{...t},children:[U(Zo,{as:"h4",children:"Grid Settings"}),Ye(Yo,{children:[U(Mn,{label:"Format column labels",labelPlacement:"left",ActivationIndicatorComponent:qo,children:Ye(Vo,{"aria-label":"Format column labels",value:n.columnFormatHeader,legend:"Format column labels",onChange:s,children:[U(Ve,{label:"No Formatting",value:void 0}),U(Ve,{label:"Capitalize",value:"capitalize"}),U(Ve,{label:"Uppercase",value:"uppercase"})]})}),U(Mn,{label:"Default Column Width",labelPlacement:"left",children:U(zo,{value:(p=n.columnDefaultWidth)!=null?p:100,onChange:r})})]})]})};import{useReducer as _o}from"react";import{moveItem as Ko}from"@heswell/salt-lab";import{fromServerDataType as jo}from"@vuu-ui/vuu-utils";var er=(n,e)=>{switch(console.log(`gridSettingsReducer ${e.type}`),e.type){case"addColumn":return nr(n,e);case"addCalculatedColumn":return tr(n,e);case"moveColumn":return rr(n,e);case"removeColumn":return or(n,e);case"updateColumn":return n;case"updateColumnProp":return sr(n,e);case"updateGridSettings":return ir(n,e);case"updateColumnTypeFormatting":return ar(n,e);default:return n}},Wn=n=>{let[e,t]=_o(er,n);return{gridSettings:e,dispatchColumnAction:t}};function nr(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 tr(n,{columnName:e,columnType:t,expression:o}){let{columns:i}=n,s={name:e,expression:o,serverDataType:t};return{...n,columns:i.concat(s)}}function or(n,{column:e}){let{columns:t}=n;return{...n,columns:t.filter(o=>o.name!==e.name)}}function rr(n,{column:e,moveBy:t,moveFrom:o,moveTo:i}){let{columns:s}=n;if(e&&typeof t=="number"){let r=s.indexOf(e),p=s.slice(),[l]=p.splice(r,1);return p.splice(r+t,0,l),{...n,columns:p}}else return typeof o=="number"&&typeof i=="number"?{...n,columns:Ko(s,o,i)}:n}function sr(n,{align:e,column:t,hidden:o,label:i,width:s}){let{columns:r}=n;return(e==="left"||e==="right")&&(r=me(r,{...t,align:e})),typeof o=="boolean"&&(r=me(r,{...t,hidden:o})),typeof i=="string"&&(r=me(r,{...t,label:i})),typeof s=="number"&&(r=me(r,{...t,width:s})),{...n,columns:r}}function ir(n,{columnFormatHeader:e}){return{...n,columnFormatHeader:e!=null?e:n.columnFormatHeader}}function ar(n,{alignOnDecimals:e,column:t,decimals:o,zeroPad:i}){let{columns:s}=n;if(s.find(p=>p.name===t.name)){let{serverDataType:p="string",type:l=jo(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:me(s,{...t,type:c})}}else return n}function me(n,e){return n.map(t=>t.name===e.name?e:t)}import{Stack as xr}from"@vuu-ui/vuu-layout";import{FormField as lr,Input as pr}from"@heswell/salt-lab";import{Button as cr,Panel as ur,Text as mr}from"@salt-ds/core";import{useCallback as Oe,useRef as dr,useState as Xn}from"react";import{jsx as ee,jsxs as gr}from"react/jsx-runtime";var Hn=({columns:n,dispatchColumnAction:e,table:t})=>{let[o,i]=Xn(""),[,s]=Xn(),r=dr(""),p=vn({columns:n,table:t}),l=Oe(h=>{let{value:a}=h.target;i(a)},[]),c=Oe(h=>{r.current=h},[]),g=Oe((h,a)=>{console.log({source:h}),s(a)},[]),x=Oe(()=>{r.current&&(console.log(`save expression ${JSON.stringify(r.current,null,2)}`),e({type:"addCalculatedColumn",columnName:o,expression:r.current,columnType:"string"}))},[o,e]);return gr(ur,{className:"vuuCalculatedColumnPanel",title:"Define Computed Column",children:[ee(mr,{styleAs:"h4",children:"Define Computed Column"}),ee(lr,{label:"Column Name",labelPlacement:"left",children:ee(pr,{value:o,onChange:l})}),ee(bn,{onChange:c,onSubmitExpression:g,suggestionProvider:p}),ee("div",{style:{marginTop:12},children:ee(cr,{onClick:x,children:"Add Column"})})]})};import{jsx as k,jsxs as Pe}from"react/jsx-runtime";var ve="vuuDatagridSettingsPanel",hr=()=>{},yr=["table-settings","column-chooser","column-settings","define-column"],br=(n,e)=>yr[e],ll=({availableColumns:n,className:e,gridConfig:t,onCancel:o,onConfigChange:i,...s})=>{var te;console.log("DatagridSettingsPanel render");let[r,p]=Vn(0),{gridSettings:l,dispatchColumnAction:c}=Wn(t),[g,x]=Vn(null),h=de(D=>{x(D?D.name:null)},[]),a=de((D,zn=!1)=>{console.log("1) DataGridSettingsPanel fire onConfigChange"),i==null||i(l,zn)},[l,i]),m=de(D=>{p(D)},[]),f=de(D=>a(D,!0),[a]),d=g===null?null:(te=l.columns.find(D=>D.name===g))!=null?te:null,b={activeTabIndex:r,enableRenameTab:!1,orientation:"vertical"},v=de(()=>p(3),[]),w=r===2?"right":void 0;return Pe("div",{...s,className:Cr(ve,e),children:[Pe(xr,{TabstripProps:b,className:`${ve}-stack`,getTabIcon:br,getTabLabel:hr,active:r===2?1:r,onTabSelectionChanged:m,showTabs:!0,children:[k(Gn,{config:l,dispatchColumnAction:c}),Pe("div",{className:`${ve}-columnPanels`,"data-align":w,children:[k(wn,{availableColumns:n,chosenColumns:l.columns,dispatchColumnAction:c,onSelectionChange:h,onAddCalculatedColumnClick:v,selectedColumn:d}),d===null?k(fr,{className:"vuuColumnSettingsPanel",children:"Select a column"}):k(Un,{column:d,dispatchColumnAction:c,style:{background:"white",flex:"1 0 150px"}})]}),k("div",{title:"Column Settings",children:"Column Settings"}),k(Hn,{columns:l.columns,dispatchColumnAction:c,table:{module:"SIMUL",table:"instruments"}})]}),Pe("div",{className:`${ve}-buttonBar`,children:[k(Ze,{onClick:o,children:"Cancel"}),k(Ze,{onClick:a,children:"Apply"}),k(Ze,{onClick:f,children:"Save"})]})]})};import{useEffect as Er,useState as Je}from"react";import Or from"classnames";import{jsx as ne,jsxs as vr}from"react/jsx-runtime";var ge="vuuDatasourceStats",qe=new Intl.NumberFormat,El=({className:n,dataSource:e})=>{let[t,o]=Je(e.optimize),[i,s]=Je(e.range),[r,p]=Je(e.size);Er(()=>{o(e.optimize),p(e.size),e.on("optimize",o),e.on("resize",p),e.on("range",s)},[e]);let l=Or(ge,n),c=qe.format(i.from),g=qe.format(i.to-1),x=qe.format(r);return vr("div",{className:l,children:[ne("span",{children:"Showing rows"}),ne("span",{className:`${ge}-range`,children:c}),ne("span",{className:`${ge}-range`,children:g}),ne("span",{children:"of"}),ne("span",{className:`${ge}-size`,children:x}),ne("span",{className:`${ge}-optimize`,children:t})]})};export{bn as ColumnExpressionInput,Ne as ColumnNamedTerms,El as DataSourceStats,ll as DatagridSettingsPanel,nn as columnExpressionLanguageSupport,sn as isCompleteExpression,an as isCompleteRelationalExpression,Qe as lastNamedChild,yn as useColumnExpressionEditor,vn as useColumnExpressionSuggestionProvider,on as walkTree};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|