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