@vuu-ui/vuu-table-extras 0.8.8 → 0.8.9

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.
Files changed (100) hide show
  1. package/cjs/index.js +1 -1
  2. package/cjs/index.js.map +4 -4
  3. package/esm/index.js +1 -1
  4. package/esm/index.js.map +4 -4
  5. package/index.css +1 -1
  6. package/index.css.map +3 -3
  7. package/package.json +11 -11
  8. package/types/cell-edit-validators/CaseValidator.d.ts +2 -0
  9. package/types/cell-edit-validators/PatternValidator.d.ts +2 -0
  10. package/types/cell-edit-validators/index.d.ts +2 -0
  11. package/types/cell-renderers/background-cell/index.d.ts +1 -0
  12. package/types/cell-renderers/background-cell/useDirection.d.ts +3 -0
  13. package/types/cell-renderers-next/background-cell/BackgroundCell.d.ts +5 -0
  14. package/types/cell-renderers-next/index.d.ts +1 -0
  15. package/types/{vuu-table-extras/src/column-expression-input → column-expression-input}/ColumnExpressionInput.d.ts +4 -3
  16. package/types/{vuu-table-extras/src/column-expression-input → column-expression-input}/useColumnExpressionEditor.d.ts +2 -7
  17. package/types/column-expression-panel/ColumnExpressionPanel.d.ts +8 -0
  18. package/types/column-expression-panel/index.d.ts +1 -0
  19. package/types/column-expression-panel/useColumnExpression.d.ts +11 -0
  20. package/types/column-formatting-settings/ColumnFormattingPanel.d.ts +12 -0
  21. package/types/column-formatting-settings/NumericFormattingSettings.d.ts +7 -0
  22. package/types/column-formatting-settings/index.d.ts +2 -0
  23. package/types/column-settings/ColumnSettingsPanel.d.ts +12 -0
  24. package/types/column-settings/useColumnSettings.d.ts +17 -0
  25. package/types/index.d.ts +11 -0
  26. package/types/{vuu-table-extras/src/table-settings → table-settings}/TableSettingsPanel.d.ts +6 -4
  27. package/types/table-settings/useTableSettings.d.ts +17 -0
  28. package/types/useTableAndColumnSettings.d.ts +15 -0
  29. package/types/vuu-data/src/array-data-source/array-data-source.d.ts +0 -65
  30. package/types/vuu-data/src/array-data-source/group-utils.d.ts +0 -10
  31. package/types/vuu-data/src/array-data-source/sort-utils.d.ts +0 -4
  32. package/types/vuu-data/src/authenticate.d.ts +0 -1
  33. package/types/vuu-data/src/connection-manager.d.ts +0 -46
  34. package/types/vuu-data/src/connectionTypes.d.ts +0 -5
  35. package/types/vuu-data/src/constants.d.ts +0 -41
  36. package/types/vuu-data/src/data-source.d.ts +0 -172
  37. package/types/vuu-data/src/index.d.ts +0 -10
  38. package/types/vuu-data/src/inlined-worker.d.ts +0 -1
  39. package/types/vuu-data/src/json-data-source.d.ts +0 -53
  40. package/types/vuu-data/src/message-utils.d.ts +0 -26
  41. package/types/vuu-data/src/remote-data-source.d.ts +0 -56
  42. package/types/vuu-data/src/server-proxy/messages.d.ts +0 -43
  43. package/types/vuu-data/src/vuuUIMessageTypes.d.ts +0 -202
  44. package/types/vuu-data/src/websocket-connection.d.ts +0 -25
  45. package/types/vuu-table-extras/src/datagrid-configuration-ui/calculated-column-panel/CalculatedColumnPanel.d.ts +0 -11
  46. package/types/vuu-table-extras/src/datagrid-configuration-ui/calculated-column-panel/index.d.ts +0 -1
  47. package/types/vuu-table-extras/src/datagrid-configuration-ui/column-picker/ColumnListItem.d.ts +0 -4
  48. package/types/vuu-table-extras/src/datagrid-configuration-ui/column-picker/ColumnPicker.d.ts +0 -13
  49. package/types/vuu-table-extras/src/datagrid-configuration-ui/column-picker/index.d.ts +0 -1
  50. package/types/vuu-table-extras/src/datagrid-configuration-ui/column-settings-panel/ColumnSettingsPanel.d.ts +0 -9
  51. package/types/vuu-table-extras/src/datagrid-configuration-ui/column-type-panel/ColumnTypePanel.d.ts +0 -10
  52. package/types/vuu-table-extras/src/datagrid-configuration-ui/column-type-panel/NumericColumnPanel.d.ts +0 -4
  53. package/types/vuu-table-extras/src/datagrid-configuration-ui/column-type-panel/StringColumnPanel.d.ts +0 -4
  54. package/types/vuu-table-extras/src/datagrid-configuration-ui/column-type-panel/index.d.ts +0 -1
  55. package/types/vuu-table-extras/src/datagrid-configuration-ui/index.d.ts +0 -1
  56. package/types/vuu-table-extras/src/datagrid-configuration-ui/settings-panel/DatagridSettingsPanel.d.ts +0 -10
  57. package/types/vuu-table-extras/src/datagrid-configuration-ui/settings-panel/GridSettingsPanel.d.ts +0 -9
  58. package/types/vuu-table-extras/src/datagrid-configuration-ui/settings-panel/index.d.ts +0 -1
  59. package/types/vuu-table-extras/src/datagrid-configuration-ui/settings-panel/useGridSettings.d.ts +0 -59
  60. package/types/vuu-table-extras/src/index.d.ts +0 -6
  61. package/types/vuu-table-extras/src/table-settings/useTableSettings.d.ts +0 -14
  62. package/types/vuu-table-extras/src/table-settings-deprecated/calculated-column-panel/CalculatedColumnPanel.d.ts +0 -11
  63. package/types/vuu-table-extras/src/table-settings-deprecated/calculated-column-panel/index.d.ts +0 -1
  64. package/types/vuu-table-extras/src/table-settings-deprecated/column-settings-panel/ColumnSettingsPanel.d.ts +0 -9
  65. package/types/vuu-table-extras/src/table-settings-deprecated/column-settings-panel/index.d.ts +0 -1
  66. package/types/vuu-table-extras/src/table-settings-deprecated/column-type-panel/ColumnTypePanel.d.ts +0 -10
  67. package/types/vuu-table-extras/src/table-settings-deprecated/column-type-panel/NumericColumnPanel.d.ts +0 -4
  68. package/types/vuu-table-extras/src/table-settings-deprecated/column-type-panel/StringColumnPanel.d.ts +0 -4
  69. package/types/vuu-table-extras/src/table-settings-deprecated/column-type-panel/index.d.ts +0 -1
  70. package/types/vuu-table-extras/src/table-settings-deprecated/index.d.ts +0 -1
  71. package/types/vuu-table-extras/src/table-settings-deprecated/settings-panel/DatagridSettingsPanel.d.ts +0 -10
  72. package/types/vuu-table-extras/src/table-settings-deprecated/settings-panel/GridSettingsPanel.d.ts +0 -9
  73. package/types/vuu-table-extras/src/table-settings-deprecated/settings-panel/index.d.ts +0 -1
  74. package/types/vuu-table-extras/src/table-settings-deprecated/settings-panel/useGridSettings.d.ts +0 -59
  75. /package/types/{vuu-table-extras/src/cell-renderers → cell-renderers}/background-cell/BackgroundCell.d.ts +0 -0
  76. /package/types/{vuu-table-extras/src/cell-renderers → cell-renderers}/index.d.ts +0 -0
  77. /package/types/{vuu-table-extras/src/cell-renderers → cell-renderers}/progress-cell/ProgressCell.d.ts +0 -0
  78. /package/types/{vuu-table-extras/src/cell-renderers → cell-renderers}/progress-cell/index.d.ts +0 -0
  79. /package/types/{vuu-table-extras/src/cell-renderers → cell-renderers-next}/background-cell/index.d.ts +0 -0
  80. /package/types/{vuu-table-extras/src/cell-renderers → cell-renderers-next}/background-cell/useDirection.d.ts +0 -0
  81. /package/types/{vuu-table-extras/src/column-expression-input → column-expression-input}/column-function-descriptors.d.ts +0 -0
  82. /package/types/{vuu-table-extras/src/column-expression-input → column-expression-input}/column-language-parser/ColumnExpressionLanguage.d.ts +0 -0
  83. /package/types/{vuu-table-extras/src/column-expression-input → column-expression-input}/column-language-parser/ColumnExpressionTreeWalker.d.ts +0 -0
  84. /package/types/{vuu-table-extras/src/column-expression-input → column-expression-input}/column-language-parser/column-expression-parse-utils.d.ts +0 -0
  85. /package/types/{vuu-table-extras/src/column-expression-input → column-expression-input}/column-language-parser/generated/column-parser.d.ts +0 -0
  86. /package/types/{vuu-table-extras/src/column-expression-input → column-expression-input}/column-language-parser/generated/column-parser.terms.d.ts +0 -0
  87. /package/types/{vuu-table-extras/src/column-expression-input → column-expression-input}/column-language-parser/index.d.ts +0 -0
  88. /package/types/{vuu-table-extras/src/column-expression-input → column-expression-input}/column-language-parser/test.d.mts +0 -0
  89. /package/types/{vuu-table-extras/src/column-expression-input → column-expression-input}/functionDocInfo.d.ts +0 -0
  90. /package/types/{vuu-table-extras/src/column-expression-input → column-expression-input}/highlighting.d.ts +0 -0
  91. /package/types/{vuu-table-extras/src/column-expression-input → column-expression-input}/index.d.ts +0 -0
  92. /package/types/{vuu-table-extras/src/column-expression-input → column-expression-input}/theme.d.ts +0 -0
  93. /package/types/{vuu-table-extras/src/column-expression-input → column-expression-input}/useColumnAutoComplete.d.ts +0 -0
  94. /package/types/{vuu-table-extras/src/column-expression-input → column-expression-input}/useColumnExpressionSuggestionProvider.d.ts +0 -0
  95. /package/types/{vuu-table-extras/src/column-list → column-list}/ColumnList.d.ts +0 -0
  96. /package/types/{vuu-table-extras/src/column-list → column-list}/index.d.ts +0 -0
  97. /package/types/{vuu-table-extras/src/datagrid-configuration-ui/column-settings-panel → column-settings}/index.d.ts +0 -0
  98. /package/types/{vuu-table-extras/src/datasource-stats → datasource-stats}/DatasourceStats.d.ts +0 -0
  99. /package/types/{vuu-table-extras/src/datasource-stats → datasource-stats}/index.d.ts +0 -0
  100. /package/types/{vuu-table-extras/src/table-settings → table-settings}/index.d.ts +0 -0
package/esm/index.js CHANGED
@@ -1,2 +1,2 @@
1
- var ft=(t,e,n)=>{if(!e.has(t))throw TypeError("Cannot "+n)};var d=(t,e,n)=>(ft(t,e,"read from private field"),n?n.call(t):e.get(t)),w=(t,e,n)=>{if(e.has(t))throw TypeError("Cannot add the same private member more than once");e instanceof WeakSet?e.add(t):e.set(t,n)},L=(t,e,n,o)=>(ft(t,e,"write to private field"),o?o.call(t,n):e.set(t,n),n);import{DOWN1 as In,DOWN2 as zn,isTypeDescriptor as $n,metadataKeys as Vn,registerComponent as Kn,UP1 as Bn,UP2 as Wn}from"@vuu-ui/vuu-utils";import Gn from"classnames";import{getMovingValueDirection as Hn,isTypeDescriptor as Ln,isValidNumber as gt}from"@vuu-ui/vuu-utils";import{useEffect as kn,useRef as Nn}from"react";var Fn=[void 0,void 0,void 0,void 0];function Ct(t,e,n){var g;let o=Nn(),[r,s,i,u]=o.current||Fn,{type:a}=n,c=Ln(a)?(g=a.formatting)==null?void 0:g.decimals:void 0,p=t===r&&gt(e)&&gt(s)&&n===i?Hn(e,u,s,c):"";return kn(()=>{o.current=[t,e,n,p]}),p}import{jsx as Zn,jsxs as Jn}from"react/jsx-runtime";var Qn=String.fromCharCode(11014),Un=String.fromCharCode(11015),{KEY:Xn}=Vn,be="vuuBackgroundCell",oe={ArrowOnly:"arrow",BackgroundOnly:"bg-only",ArrowBackground:"arrow-bg"},Yn=t=>$n(t)&&t.renderer&&"flashStyle"in t.renderer?t.renderer.flashStyle:oe.BackgroundOnly,_n=({column:t,row:e})=>{let{key:n,type:o,valueFormatter:r}=t,s=e[n],i=Yn(o),u=Ct(e[Xn],s,t),a=i===oe.ArrowOnly||i===oe.ArrowBackground?u===Bn||u===Wn?Qn:u===In||u===zn?Un:null:null,c=u?" "+u:"",p=Gn(be,c,{[`${be}-arrowOnly`]:i===oe.ArrowOnly,[`${be}-arrowBackground`]:i===oe.ArrowBackground});return Jn("div",{className:p,tabIndex:-1,children:[Zn("div",{className:`${be}-flasher`,children:a}),r(e[t.key])]})};Kn("background",_n,"cell-renderer",{serverDataType:["long","int","double"]});import{isColumnTypeRenderer as qn,isTypeDescriptor as jn,registerComponent as eo}from"@vuu-ui/vuu-utils";import to from"classnames";import{jsx as He,jsxs as bt}from"react/jsx-runtime";var re="vuuProgressCell",no=({column:t,columnMap:e,row:n})=>{let{type:o}=t,r=n[t.key],s=!1,i=0;if(jn(o)&&qn(o.renderer)){let{associatedField:a}=o.renderer,c=n[e[a]];if(typeof r=="number"&&typeof c=="number")i=Math.min(Math.round(r/c*100),100),s=isFinite(i);else{let p=parseFloat(r);if(Number.isFinite(p)){let g=parseFloat(c);Number.isFinite(g)&&(i=Math.min(Math.round(p/g*100),100),s=isFinite(i))}}}let u=to(re,{});return bt("div",{className:u,tabIndex:-1,children:[s?bt("span",{className:`${re}-track`,children:[He("span",{className:`${re}-bg`}),He("span",{className:`${re}-bar`,style:{"--progress-bar-pct":`-${100-i}%`}})]}):null,He("span",{className:`${re}-text`,children:`${i} %`})]})};eo("vuu.progress",no,"cell-renderer",{serverDataType:["long","int","double"]});import{List as oo,ListItem as ro}from"@vuu-ui/vuu-ui-controls";import{Checkbox as so}from"@salt-ds/core";import{Switch as io}from"@salt-ds/lab";import lo from"classnames";import{useCallback as ao}from"react";import{jsx as N,jsxs as Le}from"react/jsx-runtime";var k="vuuColumnList",ht="vuuColumnListItem",uo=({className:t,item:e,...n})=>{var o;return Le(ro,{...n,className:lo(t,ht),"data-name":e==null?void 0:e.name,children:[N(io,{className:`${k}-switch`,checked:e==null?void 0:e.subscribed}),N("span",{className:`${k}-text`,children:(o=e==null?void 0:e.label)!=null?o:e==null?void 0:e.name}),N(so,{className:`${k}-checkBox`,checked:(e==null?void 0:e.hidden)!==!0,disabled:(e==null?void 0:e.subscribed)!==!0})]})},xt=({columnItems:t,onChange:e,onMoveListItem:n,...o})=>{let r=ao(s=>{let i=s.target,u=i.closest(`.${ht}`),{dataset:{name:a}}=u;if(a){let c=i.closest(`.${k}-switch`),p=i.closest(`.${k}-checkBox`);c?e(a,"subscribed",i.checked):p&&e(a,"hidden",i.checked===!1)}},[e]);return Le("div",{...o,className:k,children:[N("div",{className:`${k}-header`,children:N("span",{children:"Column Selection"})}),Le("div",{className:`${k}-colHeadings`,children:[N("span",{children:"Column subscription"}),N("span",{children:"Visibility"})]}),N(oo,{ListItem:uo,allowDragDrop:!0,height:"100%",onChange:r,onMoveListItem:n,selectionStrategy:"none",source:t,itemHeight:33})]})};import{autocompletion as Oo,defaultKeymap as Ao,EditorState as Ho,EditorView as kt,ensureSyntaxTree as Lo,keymap as Qe,minimalSetup as ko,startCompletion as Nt}from"@vuu-ui/vuu-codemirror";import{createEl as Ft}from"@vuu-ui/vuu-utils";import{useEffect as No,useMemo as Fo,useRef as Ue}from"react";import{LanguageSupport as mo,LRLanguage as po,styleTags as fo,tags as xe}from"@vuu-ui/vuu-codemirror";import{LRParser as co}from"@lezer/lr";var he=co.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 go=po.define({name:"VuuColumnExpression",parser:he.configure({props:[fo({Function:xe.variableName,String:xe.string,Or:xe.emphasis,Operator:xe.operator})]})}),yt=()=>new mo(go);var ke=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}}},Ne=class{constructor(e){this.type="colExpression";this.column=e}toJSON(){return{type:this.type,column:this.column}}},ie,$,Fe=class{constructor(e="unknown"){w(this,ie,[{type:"unknown"},{type:"unknown"}]);w(this,$,void 0);this.type="arithmeticExpression";L(this,$,e)}get op(){return d(this,$)}set op(e){L(this,$,e)}get expressions(){return d(this,ie)}toJSON(){return{type:this.type,op:d(this,$),expressions:d(this,ie)}}};ie=new WeakMap,$=new WeakMap;var _,Ie=class{constructor(e){w(this,_,[]);this.type="callExpression";this.functionName=e}get expressions(){return d(this,_)}get arguments(){return d(this,_)}toJSON(){return{type:this.type,functionName:this.functionName,arguments:d(this,_).map(e=>{var n;return(n=e.toJSON)==null?void 0:n.call(e)})}}};_=new WeakMap;var le,Z,X=class{constructor(){w(this,le,[{type:"unknown"},{type:"unknown"}]);w(this,Z,"unknown");this.type="relationalExpression"}get op(){return d(this,Z)}set op(e){L(this,Z,e)}get expressions(){return d(this,le)}toJSON(){return{type:this.type,op:d(this,Z),expressions:d(this,le)}}};le=new WeakMap,Z=new WeakMap;var ae,J,Y=class{constructor(e){w(this,ae,[{type:"unknown"},{type:"unknown"}]);w(this,J,void 0);this.type="booleanCondition";L(this,J,e)}get op(){return d(this,J)}get expressions(){return d(this,ae)}toJSON(){return{type:this.type,op:d(this,J),expressions:d(this,ae).map(e=>{var n;return(n=e.toJSON)==null?void 0:n.call(e)})}}};ae=new WeakMap,J=new WeakMap;var D,se=class{constructor(e){w(this,D,void 0);this.type="conditionalExpression";L(this,D,[e?new Y(e):new X,{type:"unknown"},{type:"unknown"}])}get expressions(){return d(this,D)}get condition(){return d(this,D)[0]}get truthyExpression(){return d(this,D)[1]}set truthyExpression(e){d(this,D)[1]=e}get falsyExpression(){return d(this,D)[2]}set falsyExpression(e){d(this,D)[2]=e}toJSON(){var e,n,o,r,s;return{type:this.type,condition:(n=(e=this.condition).toJSON)==null?void 0:n.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}}};D=new WeakMap;var z=t=>t.type==="unknown",ye=t=>t.type==="arithmeticExpression",Co=t=>t.type==="callExpression",U=t=>t.type==="conditionalExpression",bo=t=>t.type==="relationalExpression"||t.type==="booleanCondition";var ho=t=>t.type==="booleanCondition",$e=t=>(t==null?void 0:t.type)==="relationalExpression";var E=t=>{if(z(t))return t;if($e(t)){let[e,n]=t.expressions;if(v(e))return E(e);if(t.op==="unknown")return t;if(v(n))return E(n)}else if(bo(t)){let{expressions:e=[]}=t;for(let n of e)if(v(n))return E(n)}else if(U(t)){let{condition:e,truthyExpression:n,falsyExpression:o}=t;if(v(e))return E(e);if(v(n))return E(n);if(v(o))return E(o)}else if(ye(t)){let{expressions:e=[]}=t;for(let n of e)if(v(n))return E(n)}},ve=(t,e,n)=>{let{expressions:o=[]}=t;if(o.includes(e)){let r=o.indexOf(e);return o.splice(r,1,n),!0}else for(let r of o)if(ve(r,e,n))return!0;return!1},v=t=>z(t)?!0:U(t)?v(t.condition)||v(t.truthyExpression)||v(t.falsyExpression):$e(t)||ho(t)?t.op===void 0||t.expressions.some(e=>v(e)):!1,vt=(t,e)=>{let n=E(t);n?n.expressions?n.expressions.push(e):console.warn("don't know how to treat targetExpression"):console.error("no target expression found")},h,V,ze=class{constructor(){w(this,h,void 0);w(this,V,[])}setCondition(e){if(d(this,h)===void 0)this.addExpression(new se(e));else if(U(d(this,h))){if(v(d(this,h).condition)){let n=e?new Y(e):new X;this.addExpression(n)}else if(z(d(this,h).truthyExpression))d(this,h).truthyExpression=new se(e);else if(v(d(this,h).truthyExpression)){let n=e?new Y(e):new X;this.addExpression(n)}else if(z(d(this,h).falsyExpression))d(this,h).falsyExpression=new se(e);else if(v(d(this,h).falsyExpression)){let n=e?new Y(e):new X;this.addExpression(n)}}else console.error("setCondition called unexpectedly")}addExpression(e){if(d(this,V).length>0){let n=d(this,V).at(-1);n==null||n.arguments.push(e)}else if(d(this,h)===void 0)L(this,h,e);else if(ye(d(this,h))){let n=E(d(this,h));n&&z(n)&&ve(d(this,h),n,e)}else if(U(d(this,h))&&v(d(this,h))){let n=E(d(this,h));n&&z(n)?ve(d(this,h),n,e):n&&vt(n,e)}}setFunction(e){let n=new Ie(e);this.addExpression(n),d(this,V).push(n)}setColumn(e){this.addExpression(new Ne(e))}setArithmeticOp(e){let n=e,o=d(this,h);ye(o)&&(o.op=n)}setRelationalOperator(e){let n=e;if(d(this,h)&&U(d(this,h))){let o=E(d(this,h));$e(o)?o.op=n:console.error(`no target expression found (op = ${e})`)}}setValue(e){let n=new ke(e);if(d(this,h)===void 0)L(this,h,n);else if(ye(d(this,h)))this.addExpression(n);else if(Co(d(this,h)))d(this,h).arguments.push(n);else if(U(d(this,h)))if(v(d(this,h))){let o=E(d(this,h));o&&z(o)?ve(d(this,h),o,n):o&&vt(o,n)}else console.log("what do we do with value, in a complete expression")}closeBrace(){d(this,V).pop()}get expression(){return d(this,h)}toJSON(){var e;return(e=d(this,h))==null?void 0:e.toJSON()}};h=new WeakMap,V=new WeakMap;var Tt=(t,e)=>{let n=new ze,o=t.cursor();do{let{name:r,from:s,to:i}=o;switch(r){case"AndCondition":n.setCondition("and");break;case"OrCondition":n.setCondition("or");break;case"RelationalExpression":n.setCondition();break;case"ArithmeticExpression":n.addExpression(new Fe);break;case"Column":{let u=e.substring(s,i);n.setColumn(u)}break;case"Function":{let u=e.substring(s,i);n.setFunction(u)}break;case"Times":case"Divide":case"Plus":case"Minus":{let u=e.substring(s,i);n.setArithmeticOp(u)}break;case"RelationalOperator":{let u=e.substring(s,i);n.setRelationalOperator(u)}break;case"False":case"True":{let u=e.substring(s,i);n.setValue(u==="true")}break;case"String":n.setValue(e.substring(s+1,i-1));break;case"Number":n.setValue(parseFloat(e.substring(s,i)));break;case"CloseBrace":n.closeBrace();break;default:}}while(o.next());return n.toJSON()};var xo=he.configure({strict:!0}),Et=["Number","String"],Ve=[...Et,"AndCondition","ArithmeticExpression","BooleanOperator","RelationalOperatorOperator","CallExpression","CloseBrace","Column","Comma","ConditionalExpression","Divide","Equal","If","Minus","OpenBrace","OrCondition","ParenthesizedExpression","Plus","RelationalExpression","RelationalOperator","Times"],St=t=>{try{return xo.parse(t),!0}catch{return!1}},Ke=t=>{let{lastChild:e}=t;for(;e&&!Ve.includes(e.name);)e=e.prevSibling,console.log(e==null?void 0:e.name);return e},wt=t=>{if((t==null?void 0:t.name)==="RelationalExpression"){let{firstChild:e}=t,n=Ke(t);if((e==null?void 0:e.name)==="Column"&&typeof(n==null?void 0:n.name)=="string"&&Et.includes(n.name))return!0}return!1};import{HighlightStyle as yo,syntaxHighlighting as vo,tags as Pt}from"@vuu-ui/vuu-codemirror";var To=yo.define([{tag:Pt.variableName,color:"var(--vuuFilterEditor-variableColor)"},{tag:Pt.comment,color:"green",fontStyle:"italic"}]),Rt=vo(To);import{EditorView as Eo}from"@vuu-ui/vuu-codemirror";var Dt=Eo.theme({"&":{border:"solid 1px var(--salt-container-primary-borderColor)",color:"var(--vuuFilterEditor-color)",backgroundColor:"var(--vuuFilterEditor-background)"},".cm-content":{caretColor:"var(--vuuFilterEditor-cursorColor)"},"&.cm-focused .cm-cursor":{borderLeftColor:"var(--vuuFilterEditor-cursorColor)"},"&.cm-focused .cm-selectionBackground, ::selection":{backgroundColor:"var(--vuuFilterEditor-selectionBackground)"},".cm-selectionBackground, ::selection":{backgroundColor:"var(--vuuFilterEditor-selectionBackground)"},".cm-scroller":{fontFamily:"var(--vuuFilterEditor-fontFamily)"},".cm-tooltip":{background:"var(--vuuFilterEditor-tooltipBackground)",border:"var(--vuuFilterEditor-tooltipBorder)",boxShadow:"var(--vuuFilterEditor-tooltipElevation)","&.cm-tooltip-autocomplete > ul":{fontFamily:"var(--vuuFilterEditor-fontFamily)",fontSize:"var(--vuuFilterEditor-fontSize)",maxHeight:"240px"},"&.cm-tooltip-autocomplete > ul > li":{height:"var(--vuuFilterEditor-suggestion-height)",padding:"0 3px",lineHeight:"var(--vuuFilterEditor-suggestion-height)"},"&.cm-tooltip-autocomplete li[aria-selected]":{background:"var(--vuuFilterEditor-suggestion-selectedBackground)",color:"var(--vuuFilterEditor-suggestion-selectedColor)"},"&.cm-tooltip-autocomplete li .cm-completionDetail":{color:"var(--vuuFilterEditor-suggestion-detailColor)"}}},{dark:!1});import{booleanJoinSuggestions as So,getNamedParentNode as Mt,getPreviousNode as wo,getValue as O,syntaxTree as Po}from"@vuu-ui/vuu-codemirror";import{useCallback as Ot}from"react";var Ro=(t,e)=>e?t.map(n=>{var o;return{...n,apply:typeof n.apply=="function"?n.apply:`${e}${(o=n.apply)!=null?o:n.label}`}}):t,Do=t=>t===void 0?!1:["Times","Divide","Plus","Minus"].includes(t.name),q=(t,e)=>{var r;let{lastChild:n}=t,{pos:o}=e;for(;n;)if(n.from<o&&Ve.includes(n.name)){if(n.name==="ParenthesizedExpression"){let i=(r=n.firstChild)==null?void 0:r.nextSibling;i&&(n=i)}return n}else n=n.prevSibling},At=(t,e)=>{var n;if(t.name==="ArgList"){let o=t.prevSibling;if(o)return O(o,e)}else if(t.name==="OpenBrace"){let o=(n=t.parent)==null?void 0:n.prevSibling;if((o==null?void 0:o.name)==="Function")return O(o,e)}},Ht=(t,e)=>{if(t.name==="RelationalExpression"){let n=Ke(t);if((n==null?void 0:n.name)==="RelationalOperator")return O(n,e)}else{let n=t.prevSibling;if((n==null?void 0:n.name)==="RelationalOperator")return O(n,e)}},Ge=(t,e)=>{var n;if(t.name==="RelationalExpression"){if(((n=t.firstChild)==null?void 0:n.name)==="Column")return O(t.firstChild,e)}else{let o=t.prevSibling;if((o==null?void 0:o.name)==="Column")return O(o,e);if((o==null?void 0:o.name)==="RelationalOperator")return Ge(o,e)}},Be=async(t,e,n,o={})=>{let r=await e.getSuggestions(n,o),{startsWith:s=""}=o;return{from:t.pos-s.length,options:r}},We=(t,e,n,o,r)=>{let s=q(t,e);switch(console.log(`conditional expression last child ${s==null?void 0:s.name}`),s==null?void 0:s.name){case"If":return Be(e,n,"expression",{prefix:"( "});case"OpenBrace":return Be(e,n,"expression");case"Condition":return Be(e,n,"expression",{prefix:", "});case"CloseBrace":if(o){let i=[{apply:()=>{r==null||r()},label:"Save Expression",boost:10}];return{from:e.pos,options:i}}}},Mo=(t,e)=>{let n=[{apply:()=>{e==null||e()},label:"Save Expression",boost:10}];return{from:t.pos,options:n}},Lt=(t,e)=>{let n=Ot(async(o,r,s={})=>{let i=await t.getSuggestions(r,s),{startsWith:u=""}=s;return{from:o.pos-u.length,options:i}},[t]);return Ot(async o=>{var g,b;let{state:r,pos:s}=o,i=(g=o.matchBefore(/\w*/))!=null?g:{from:0,to:0,text:void 0},a=Po(r).resolveInner(s,-1),c=r.doc.toString(),p=St(c);switch(console.log({nodeBeforeName:a.name}),a.name){case"If":return console.log("conditional expression If"),n(o,"expression",{prefix:"( "});case"Condition":{let l=q(a,o);if((l==null?void 0:l.name)==="Column"){let m=wo(l);if((m==null?void 0:m.name)!=="RelationalOperator")return n(o,"condition-operator",{columnName:O(l,r)});console.log(`Condition last child Column, prev child ${m==null?void 0:m.name}`)}else if((l==null?void 0:l.name)==="RelationalOperator")return n(o,"expression");console.log(`condition last child ${l==null?void 0:l.name}`)}break;case"ConditionalExpression":return We(a,o,t);case"RelationalExpression":{if(wt(a))return{from:o.pos,options:So.concat({label:", <truthy expression>, <falsy expression>",apply:", "})};{let l=Ht(a,r),m=Ge(a,r);if(l)return n(o,"expression");{let f=await t.getSuggestions("condition-operator",{columnName:m});return{from:o.pos,options:f}}}}break;case"RelationalOperator":return n(o,"expression");case"String":{let l=Ht(a,r),m=Ge(a,r),{from:f,to:C}=a;if(C-f===2&&o.pos===f+1){if(m&&l)return n(o,"columnValue",{columnName:m,operator:l,startsWith:i.text})}else if(C-f>2&&o.pos===C)return n(o,"expression",{prefix:", "});console.log(`we have a string, column is ${m} ${f} ${C}`)}break;case"ArithmeticExpression":{let l=q(a,o);if((l==null?void 0:l.name)==="Column")return n(o,"expression");if(Do(l)){let m=l.name;return n(o,"column",{operator:m})}}break;case"OpenBrace":{let l=At(a,r);return n(o,"expression",{functionName:l})}break;case"ArgList":{let l=At(a,r),m=q(a,o),f=(m==null?void 0:m.name)==="OpenBrace"?void 0:",",C=await t.getSuggestions("expression",{functionName:l});return C=f?Ro(C,", "):C,(m==null?void 0:m.name)!=="OpenBrace"&&(m==null?void 0:m.name)!=="Comma"&&(C=[{apply:") ",boost:10,label:"Done - no more arguments"}].concat(C)),{from:o.pos,options:C}}case"Equal":if(c.trim()==="=")return n(o,"expression");break;case"ParenthesizedExpression":case"ColumnDefinitionExpression":if(o.pos===0)return n(o,"expression");{let l=q(a,o);if((l==null?void 0:l.name)==="Column"){if(p){let m=[{apply:()=>{e.current()},label:"Save Expression",boost:10}],f=O(l,r),C=await t.getSuggestions("operator",{columnName:f});return{from:o.pos,options:m.concat(C)}}}else if((l==null?void 0:l.name)==="CallExpression"){if(p){let m=[{apply:()=>{e.current()},label:"Save Expression",boost:10}];return{from:o.pos,options:m}}}else if((l==null?void 0:l.name)==="ArithmeticExpression"){if(p){let m=[{apply:()=>{e.current()},label:"Save Expression",boost:10}],f=q(l,o);if((f==null?void 0:f.name)==="Column"){let C=O(f,r),x=await t.getSuggestions("operator",{columnName:C});m=m.concat(x)}return{from:o.pos,options:m}}}else if((l==null?void 0:l.name)==="ConditionalExpression")return We(l,o,t,p,e.current);break}case"Column":if(await t.isPartialMatch("expression",void 0,i.text))return n(o,"expression",{startsWith:i.text});break;case"Comma":{let l=Mt(a);if((l==null?void 0:l.name)==="ConditionalExpression")return n(o,"expression")}break;case"CloseBrace":{let l=Mt(a);if((l==null?void 0:l.name)==="ConditionalExpression")return We(l,o,t,p,e.current);if((l==null?void 0:l.name)==="ArgList"&&p)return Mo(o,e.current);console.log(`does closebrace denote an ARgList or a parenthetised expression ? ${l}`)}break;default:((b=a==null?void 0:a.prevSibling)==null?void 0:b.name)==="FilterClause"&&console.log("looks like we ight be a or|and operator")}},[n,e,t])};var ue=t=>{if(t.current==null)throw Error("EditorView not defined");return t.current},Io=()=>"vuuSuggestion",zo=()=>console.log("noooop"),$o=t=>"expressionType"in t,Vo=t=>{if($o(t)){let e=Ft("div","expression-type-container"),n=Ft("span","expression-type",t.expressionType);return e.appendChild(n),e}else return null},It=({onChange:t,onSubmitExpression:e,suggestionProvider:n})=>{let o=Ue(null),r=Ue(zo),s=Ue(),i=Lt(n,r),[u,a]=Fo(()=>{let c=()=>{let f=ue(s),C=f.state.doc.toString(),x=Lo(f.state,f.state.doc.length,5e3);if(x){let P=Tt(x,C);return[C,P]}else return["",void 0]},p=()=>{ue(s).setState(m())},g=()=>{let[f,C]=c();e==null||e(f,C),p()},b=f=>Qe.of([{key:f,run(){return g(),!0}}]),l=f=>Qe.of([{key:f,run(){return Nt(ue(s)),!0}}]),m=()=>Ho.create({doc:"",extensions:[ko,Oo({addToOptions:[{render:Vo,position:70}],override:[i],optionClass:Io}),yt(),Qe.of(Ao),b("Ctrl-Enter"),l("ArrowDown"),kt.updateListener.of(f=>{let C=ue(s);if(f.docChanged){Nt(C);let x=C.state.doc.toString();t==null||t(x,void 0)}}),Dt,Rt]});return r.current=()=>{g(),setTimeout(()=>{ue(s).focus()},100)},[m,p]},[i,t,e]);return No(()=>{if(!o.current)throw Error("editor not in dom");return s.current=new kt({state:u(),parent:o.current}),()=>{var c;(c=s.current)==null||c.destroy()}},[i,u]),{editorRef:o,clearInput:a}};import{jsx as Bo}from"react/jsx-runtime";var Ko="vuuColumnExpressionInput",zt=({onChange:t,onSubmitExpression:e,suggestionProvider:n})=>{let{editorRef:o}=It({onChange:t,onSubmitExpression:e,suggestionProvider:n});return Bo("div",{className:`${Ko}`,ref:o})};import{AnnotationType as Wo,getRelationalOperators as Go,numericOperators as Qo,stringOperators as Uo,toSuggestions as Xo}from"@vuu-ui/vuu-codemirror";import{getTypeaheadParams as Yo,useTypeaheadSuggestions as _o}from"@vuu-ui/vuu-data-react";import{isNumericColumn as Ye,isTextColumn as Zo}from"@vuu-ui/vuu-utils";import{useCallback as Xe,useRef as Jo}from"react";var j=[{accepts:"string",description:"Returns multiple string values as a single joined string. Arguments may be string literal values, string columns or other string expressions. Non string arguments may also be included, these will be converted to strings.",example:{expression:'concatenate("example", "-test")',result:'"example-test"'},name:"concatenate",params:{description:"( string, string, [ string* ] )"},type:"string"},{accepts:["string","string"],description:"Tests a string value to determine whether it contains a given substring. Accepts two arguments: source text and target substring. Returns true if <source text> contains one or more occurrences of <target subscring>",example:{expression:'contains("Royal Bank of Scotland", "bank")',result:"true"},name:"contains",params:{description:"( string )"},type:"boolean"},{accepts:["string","number"],description:"Returns the leftmost <number> characters from <string>. First argument may be a string literal, string column or other string expression.",example:{expression:'left("USD Benchmark Report", 3)',result:'"USD"'},name:"left",params:{count:2,description:"( string, number )"},type:"string"},{accepts:"string",description:"Returns the number of characters in <string>. Argument may be a string literal, string column or other string expression.",example:{expression:'len("example")',result:"7"},name:"len",params:{description:"(string)"},type:"number"},{accepts:"string",description:"Convert a string value to lowercase. Argument may be a string column or other string expression.",example:{expression:'lower("examPLE")',result:'"example"'},name:"lower",params:{description:"( string )"},type:"string"},{accepts:"string",description:"Convert a string value to uppercase. Argument may be a string column or other string expression.",example:{expression:'upper("example")',result:'"EXAMPLE"'},name:"upper",params:{description:"( string )"},type:"string"},{accepts:["string","number"],description:"Returns the rightmost <number> characters from <string>. First argument may be a string literal, string column or other string expression.",example:{expression:"blah",result:"blah"},name:"right",params:{description:"( string )"},type:"string"},{accepts:["string","string","string"],description:"Replace characters within a string. Accepts three arguments: source text, text to replace and replacement text. Returns a copy of <source text> with any occurrences of <text to replace> replaced by <replacement text>",example:{expression:"blah",result:"blah"},name:"replace",params:{description:"( string )"},type:"string"},{accepts:"number",description:"Converts a number to a string.",example:{expression:"blah",result:"blah"},name:"text",params:{description:"( string )"},type:"string"},{accepts:"string",description:"Tests a string value to determine whether it starts with a given substring. Accepts two arguments: source text and target substring. Returns true if <source text> starts with <target subscring>.",example:{expression:"blah",result:"blah"},name:"starts",params:{description:"( string )"},type:"boolean"},{accepts:"string",description:"Tests a string value to determine whether it ends with a given substring. Accepts two arguments: source text and target substring. Returns true if <source text> ends with <target subscring>.",example:{expression:"blah",result:"blah"},name:"ends",params:{description:"( string )"},type:"boolean"},{accepts:"number",description:"blah",example:{expression:"blah",result:"blah"},name:"min",params:{description:"( string )"},type:"number"},{accepts:"number",description:"blah",example:{expression:"blah",result:"blah"},name:"max",params:{description:"( string )"},type:"number"},{accepts:"number",description:"blah",example:{expression:"blah",result:"blah"},name:"sum",params:{description:"( string )"},type:"number"},{accepts:"number",description:"blah",example:{expression:"blah",result:"blah"},name:"round",params:{description:"( string )"},type:"number"},{accepts:"any",description:"blah",example:{expression:"blah",result:"blah"},name:"or",params:{description:"( string )"},type:"boolean"},{accepts:"any",description:"blah",example:{expression:"blah",result:"blah"},name:"and",params:{description:"( string )"},type:"boolean"},{accepts:"any",description:"Return one of two possible result values, depending on the evaluation of a filter expression. If <filterExpression> resolves to true, result is <expression1>, otherwise <expression2>. ",example:{expression:"blah",result:"blah"},name:"if",params:{description:"( filterExpression, expression1, expression 2)"},type:"variable"}];import{createEl as A}from"@vuu-ui/vuu-utils";var $t=({name:t,description:e,example:n,params:o,type:r})=>{let s=A("div","vuuFunctionDoc"),i=A("div","function-heading"),u=A("span","function-name",t),a=A("span","param-list",o.description),c=A("span","function-type",r);i.appendChild(u),i.appendChild(a),i.appendChild(c);let p=A("p",void 0,e);if(s.appendChild(i),s.appendChild(p),n){let g=A("div","example-container","Example:"),b=A("div","example-expression",n.expression),l=A("div","example-result",n.result);g.appendChild(b),g.appendChild(l),s.appendChild(g)}return s};var qo=[],K=t=>t.map(e=>{var n;return{...e,apply:((n=e.apply)!=null?n:e.label)+" "}}),jo=(t,{functionName:e,operator:n})=>{if(n)return t.filter(Ye);if(e){let o=j.find(r=>r.name===e);if(o)switch(o.accepts){case"string":return t.filter(Zo);case"number":return t.filter(Ye);default:return t}}return t},Vt=(t,e)=>jo(t,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}}),er=[{apply:"* ",boost:2,label:"*",type:"operator"},{apply:"/ ",boost:2,label:"/",type:"operator"},{apply:"+ ",boost:2,label:"+",type:"operator"},{apply:"- ",boost:2,label:"-",type:"operator"}],tr=t=>t===void 0||Ye(t)?er:qo,nr=t=>{switch(t.serverDataType){case"string":case"char":return K(Uo);case"int":case"long":case"double":return K(Qo)}},_e=t=>({apply:`${t.name}( `,boost:2,expressionType:t.type,info:()=>$t(t),label:t.name,type:"function"}),or=t=>{if(t){if(typeof t.accepts=="string")return t.accepts;if(Array.isArray(t.accepts))return t.accepts.every(e=>e==="string")?"string":"any"}return"any"},rr=j.map(_e),sr=({functionName:t})=>{if(t){let e=j.find(o=>o.name===t),n=or(e);if(e)switch(n){case"string":return j.filter(o=>o.type==="string"||o.type==="variable").map(_e);case"number":return j.filter(o=>o.type==="number"||o.type==="variable").map(_e);default:}}return rr},ir={},Kt=({columns:t,table:e})=>{let n=Xe(u=>u?t.find(a=>a.name===u):void 0,[t]),o=Jo(),r=_o(),s=Xe(async(u,a=ir)=>{let{columnName:c,functionName:p,operator:g,prefix:b}=a;switch(u){case"expression":{let l=await K(Vt(t,{functionName:p,prefix:b})).concat(sr(a));return o.current=l}case"column":{let l=await Vt(t,a);return o.current=K(l)}case"operator":{let l=await tr(n(c));return o.current=K(l)}case"relational-operator":{let l=await Go(n(c));return o.current=K(l)}case"condition-operator":{let l=n(c);if(l){let m=await nr(l);if(m)return o.current=K(m)}}break;case"columnValue":if(c&&g){let l=Yo(e,c),m=await r(l);return o.current=Xo(m,{suffix:""}),o.current.forEach(f=>{f.apply=(C,x,P)=>{let R=new Wo,I=P+x.label.length+1;C.dispatch({changes:{from:P,insert:x.label},selection:{anchor:I,head:I},annotations:R.of(x)})}}),o.current}break}return[]},[t,n,r,e]),i=Xe(async(u,a,c)=>{let{current:p}=o,g=!1,b=p||await s(u,{columnName:a});if(c&&b)for(let l of b){if(l.label===c)return!1;l.label.startsWith(c)&&(g=!0)}return g},[s]);return{getSuggestions:s,isPartialMatch:i}};import{Button as et,Panel as es}from"@salt-ds/core";import ts from"classnames";import{useCallback as de,useState as an}from"react";import{Stack as Sr}from"@vuu-ui/vuu-layout";import{StepperInput as wr}from"@salt-ds/lab";import{Checkbox as Pr,FormField as B,FormFieldLabel as W,Input as Je,Panel as Zt,RadioButton as ce,RadioButtonGroup as Jt,Text as Rr}from"@salt-ds/core";import Dr from"classnames";import{useCallback as te,useState as Mr}from"react";import{getRegisteredCellRenderers as gr}from"@vuu-ui/vuu-utils";import{Dropdown as Cr}from"@salt-ds/lab";import{Panel as br}from"@salt-ds/core";import Xt from"classnames";import{useMemo as hr}from"react";import{StepperInput as lr,Switch as Bt}from"@salt-ds/lab";import{FormField as ar,FormFieldLabel as ur,Text as cr}from"@salt-ds/core";import{useCallback as Te}from"react";import{Fragment as Gt,jsx as ee,jsxs as Wt}from"react/jsx-runtime";var mr={alignOnDecimals:!1,decimals:4,zeroPad:!1},pr=(t,e)=>{let n=typeof t=="object"&&t.formatting?t.formatting:{};return["alignOnDecimals","decimals","zeroPad"].reduce((r,s)=>n[s]!==void 0?{...r,[s]:n[s]}:(e==null?void 0:e[s])!==void 0?{...r,[s]:e[s]}:r,mr)},Qt=({column:t,dispatchColumnAction:e})=>{let{decimals:n,alignOnDecimals:o,zeroPad:r}=pr(t==null?void 0:t.type),s=Te(c=>e({type:"updateColumnTypeFormatting",column:t,...c}),[t,e]),i=Te(c=>s({decimals:parseInt(c.toString(),10)}),[s]),u=Te(c=>s({alignOnDecimals:!!c.target.value}),[s]),a=Te(c=>s({zeroPad:!!c.target.value}),[s]);switch(t.serverDataType){case"double":return Wt(Gt,{children:[Wt(ar,{labelPlacement:"top",children:[ee(ur,{children:"No of Decimals"}),ee(lr,{value:n,onChange:i})]}),ee(Bt,{checked:o,label:"Align on decimals",onChange:u}),ee(Bt,{checked:r,label:"Zero pad",onChange:a})]});case"long":case"int":return ee(Gt,{children:ee(cr,{children:"Work in progress"})});default:return null}};import{Fragment as dr,jsx as fr}from"react/jsx-runtime";var Ut=({column:t,dispatchColumnAction:e})=>(console.log({column:t,dispatchColumnAction:e}),fr(dr,{children:"what"}));import{Fragment as Tr,jsx as Ee,jsxs as Er}from"react/jsx-runtime";var Ze="vuuColumnTypePanel",xr=["Default Renderer (int, long)"],yr=["Default Renderer (double)"],Yt=["Default Renderer (string)"],vr=t=>{let n=gr(t.serverDataType).map(o=>o.name);switch(console.log({customRendererNames:n}),t.serverDataType){case"char":case"string":return Yt;case"int":case"long":return xr;case"double":return yr.concat(n);default:return Yt}},_t=({className:t,column:e,dispatchColumnAction:n,...o})=>{let r=hr(()=>{switch(e.serverDataType){case"double":case"int":case"long":return Ee(Qt,{column:e,dispatchColumnAction:n});default:return Ee(Ut,{column:e,dispatchColumnAction:n})}},[e,n]),{serverDataType:s="string"}=e,i=vr(e);return Er(Tr,{children:[Ee(Cr,{className:Xt(`${Ze}-renderer`),fullWidth:!0,selected:i[0],source:i}),Ee(br,{...o,className:Xt(Ze,t,`${Ze}-${s}`),children:r})]})};import{jsx as y,jsxs as T}from"react/jsx-runtime";var qt="vuuColumnSettingsPanel",Or={className:"salt-density-high"},jt=({column:t,dispatchColumnAction:e,style:n,...o})=>{var b,l,m,f;let[r,s]=Mr(0),i=te(C=>e({type:"updateColumnProp",column:t,...C}),[t,e]),u=te(C=>i({align:C.target.value}),[i]),a=te(C=>i({pin:C.target.value}),[i]),c=te(C=>i({hidden:C.target.checked}),[i]),p=te(C=>i({label:C.target.value}),[i]),g=te(C=>i({width:parseInt(C.toString(),10)}),[i]);return T("div",{className:qt,...o,style:{...n},children:[y(Rr,{as:"h4",children:"Column Settings"}),T(Sr,{active:r,className:Dr(`${qt}-columnTabs`),onTabSelectionChanged:s,TabstripProps:Or,children:[T(Zt,{title:"Column",children:[T(B,{labelPlacement:"left",children:[y(W,{children:"Hidden"}),y(Pr,{checked:t.hidden===!0,onChange:c})]}),T(B,{labelPlacement:"left",children:[y(W,{children:"Label"}),y(Je,{value:(b=t.label)!=null?b:t.name,onChange:p})]}),T(B,{labelPlacement:"left",children:[y(W,{children:"Width"}),y(wr,{value:(l=t.width)!=null?l:100,onChange:g})]}),T(B,{labelPlacement:"left",children:[y(W,{children:"ALign"}),T(Jt,{"aria-label":"Column Align",value:(m=t.align)!=null?m:"left",onChange:u,children:[y(ce,{label:"Left",value:"left"}),y(ce,{label:"Right",value:"right"})]})]}),T(B,{labelPlacement:"left",children:[y(W,{children:"Pin Column"}),T(Jt,{"aria-label":"Pin Column",value:(f=t.pin)!=null?f:"",onChange:a,children:[y(ce,{label:"Do not pin",value:""}),y(ce,{label:"Left",value:"left"}),y(ce,{label:"Right",value:"right"})]})]})]}),y(_t,{column:t,dispatchColumnAction:e,title:"Data Cell"}),T(Zt,{title:"Vuu",variant:"secondary",children:[T(B,{labelPlacement:"top",readOnly:!0,children:[y(W,{children:"Name"}),y(Je,{value:t.name})]}),T(B,{labelPlacement:"top",readOnly:!0,children:[y(W,{children:"Vuu Type"}),y(Je,{value:t.serverDataType})]})]})]})]})};import{FormField as en,FormFieldLabel as tn,Panel as Ar,RadioButton as qe,RadioButtonGroup as Hr,Text as Lr}from"@salt-ds/core";import{StepperInput as kr}from"@salt-ds/lab";import{useCallback as je}from"react";import{jsx as G,jsxs as me}from"react/jsx-runtime";var Nr="vuuGridSettingsPanel",nn=({config:t,dispatchColumnAction:e,style:n,...o})=>{var u;let r=je(a=>e({type:"updateGridSettings",...a}),[e]),s=je(a=>r({columnFormatHeader:a.target.value}),[r]),i=je(a=>r({columnDefaultWidth:parseInt(a.toString(),10)}),[r]);return me("div",{className:Nr,...o,style:{...n},children:[G(Lr,{as:"h4",children:"Grid Settings"}),me(Ar,{children:[me(en,{labelPlacement:"left",children:[G(tn,{children:"Format column labels"}),me(Hr,{"aria-label":"Format column labels",value:t.columnFormatHeader,onChange:s,children:[G(qe,{label:"No Formatting",value:void 0}),G(qe,{label:"Capitalize",value:"capitalize"}),G(qe,{label:"Uppercase",value:"uppercase"})]})]}),me(en,{labelPlacement:"left",children:[G(tn,{children:"Default Column Width"}),G(kr,{value:(u=t.columnDefaultWidth)!=null?u:100,onChange:i})]})]})]})};import{useReducer as Fr}from"react";import{moveItem as Ir}from"@vuu-ui/vuu-ui-controls";import{fromServerDataType as zr}from"@vuu-ui/vuu-utils";var $r=(t,e)=>{switch(console.log(`gridSettingsReducer ${e.type}`),e.type){case"addColumn":return Vr(t,e);case"addCalculatedColumn":return Kr(t,e);case"moveColumn":return Wr(t,e);case"removeColumn":return Br(t,e);case"updateColumn":return t;case"updateColumnProp":return Gr(t,e);case"updateGridSettings":return Qr(t,e);case"updateColumnTypeFormatting":return Ur(t,e);default:return t}},on=t=>{let[e,n]=Fr($r,t);return{gridSettings:e,dispatchColumnAction:n}};function Vr(t,{column:e,columns:n,index:o=-1}){let{columns:r}=t;if(o===-1){if(Array.isArray(n))return{...t,columns:r.concat(n)};if(e)return{...t,columns:r.concat(e)}}return t}function Kr(t,{columnName:e,columnType:n,expression:o}){let{columns:r}=t,s={name:e,expression:o,serverDataType:n};return{...t,columns:r.concat(s)}}function Br(t,{column:e}){let{columns:n}=t;return{...t,columns:n.filter(o=>o.name!==e.name)}}function Wr(t,{column:e,moveBy:n,moveFrom:o,moveTo:r}){let{columns:s}=t;if(e&&typeof n=="number"){let i=s.indexOf(e),u=s.slice(),[a]=u.splice(i,1);return u.splice(i+n,0,a),{...t,columns:u}}else return typeof o=="number"&&typeof r=="number"?{...t,columns:Ir(s,o,r)}:t}function Gr(t,{align:e,column:n,hidden:o,label:r,width:s}){let{columns:i}=t;return(e==="left"||e==="right")&&(i=pe(i,{...n,align:e})),typeof o=="boolean"&&(i=pe(i,{...n,hidden:o})),typeof r=="string"&&(i=pe(i,{...n,label:r})),typeof s=="number"&&(i=pe(i,{...n,width:s})),{...t,columns:i}}function Qr(t,{columnFormatHeader:e}){return{...t,columnFormatHeader:e!=null?e:t.columnFormatHeader}}function Ur(t,{alignOnDecimals:e,column:n,decimals:o,zeroPad:r}){let{columns:s}=t;if(s.find(u=>u.name===n.name)){let{serverDataType:u="string",type:a=zr(u)}=n,c=typeof a=="string"?{name:a}:{...a};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}),{...t,columns:pe(s,{...n,type:c})}}else return t}function pe(t,e){return t.map(n=>n.name===e.name?e:n)}import{Stack as ns}from"@vuu-ui/vuu-layout";import{Button as Xr,FormField as Yr,FormFieldLabel as _r,Input as Zr,Panel as Jr,Text as qr}from"@salt-ds/core";import{useCallback as Se,useRef as jr,useState as rn}from"react";import{jsx as ne,jsxs as sn}from"react/jsx-runtime";var ln=({columns:t,dispatchColumnAction:e,table:n})=>{let[o,r]=rn(""),[,s]=rn(),i=jr(""),u=Kt({columns:t,table:n}),a=Se(b=>{let{value:l}=b.target;r(l)},[]),c=Se(b=>{i.current=b},[]),p=Se((b,l)=>{console.log({source:b}),s(l)},[]),g=Se(()=>{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 sn(Jr,{className:"vuuCalculatedColumnPanel",title:"Define Computed Column",children:[ne(qr,{styleAs:"h4",children:"Define Computed Column"}),sn(Yr,{labelPlacement:"left",children:[ne(_r,{children:"Column Name"}),ne(Zr,{value:o,onChange:a})]}),ne(zt,{onChange:c,onSubmitExpression:p,suggestionProvider:u}),ne("div",{style:{marginTop:12},children:ne(Xr,{onClick:g,children:"Add Column"})})]})};import{jsx as H,jsxs as tt}from"react/jsx-runtime";var we="vuuDatagridSettingsPanel",os=()=>{},rs=["table-settings","column-chooser","column-settings","define-column"],ss=(t,e)=>rs[e],xc=({availableColumns:t,className:e,gridConfig:n,onCancel:o,onConfigChange:r,...s})=>{var I;console.log("DatagridSettingsPanel render");let[i,u]=an(0),{gridSettings:a,dispatchColumnAction:c}=on(n),[p,g]=an(null),b=de(S=>{g(S?S.name:null)},[]),l=de((S,Ae=!1)=>{console.log("1) DataGridSettingsPanel fire onConfigChange"),r==null||r(a,Ae)},[a,r]),m=de(S=>{u(S)},[]),f=de(S=>l(S,!0),[l]),C=p===null?null:(I=a.columns.find(S=>S.name===p))!=null?I:null,x={activeTabIndex:i,allowRenameTab:!1,orientation:"vertical"},P=de(()=>u(3),[]),R=i===2?"right":void 0;return tt("div",{...s,className:ts(we,e),children:[tt(ns,{TabstripProps:x,className:`${we}-stack`,getTabIcon:ss,getTabLabel:os,active:i===2?1:i,onTabSelectionChanged:m,children:[H(nn,{config:a,dispatchColumnAction:c}),H("div",{className:`${we}-columnPanels`,"data-align":R,children:C===null?H(es,{className:"vuuColumnSettingsPanel",children:"Select a column"}):H(jt,{column:C,dispatchColumnAction:c,style:{background:"white",flex:"1 0 150px"}})}),H("div",{title:"Column Settings",children:"Column Settings"}),H(ln,{columns:a.columns,dispatchColumnAction:c,table:{module:"SIMUL",table:"instruments"}})]}),tt("div",{className:`${we}-buttonBar`,children:[H(et,{onClick:o,children:"Cancel"}),H(et,{onClick:l,children:"Apply"}),H(et,{onClick:f,children:"Save"})]})]})};import{useEffect as is,useState as un}from"react";import ls from"classnames";import{jsx as fe,jsxs as as}from"react/jsx-runtime";var Pe="vuuDatasourceStats",nt=new Intl.NumberFormat,Hc=({className:t,dataSource:e})=>{let[n,o]=un(e.range),[r,s]=un(e.size);is(()=>{s(e.size),e.on("resize",s),e.on("range",o)},[e]);let i=ls(Pe,t),u=nt.format(n.from),a=nt.format(n.to-1),c=nt.format(r);return as("div",{className:i,children:[fe("span",{children:"Showing rows"}),fe("span",{className:`${Pe}-range`,children:u}),fe("span",{className:`${Pe}-range`,children:a}),fe("span",{children:"of"}),fe("span",{className:`${Pe}-size`,children:c})]})};import{FormField as Dn,FormFieldLabel as Mn,Input as zi,ToggleButton as ut,ToggleButtonGroup as $i}from"@salt-ds/core";import{useLayoutEffectSkipFirst as ki}from"@vuu-ui/vuu-layout";import{useCallback as Vc,useRef as Kc}from"react";import{jsx as Gc}from"react/jsx-runtime";import{isNumericColumn as Xc}from"@vuu-ui/vuu-utils";import{removeColumnFromFilter as Zc}from"@vuu-ui/vuu-utils";import{addGroupColumn as qc,addSortColumn as jc,AggregationType as us,setAggregations as em,setSortColumn as tm}from"@vuu-ui/vuu-utils";var{Average:nm,Count:om,Distinct:rm,High:sm,Low:im,Sum:lm}=us;import{ContextMenuProvider as CC}from"@vuu-ui/vuu-popups";import{Button as hC,useIdMemo as xC}from"@salt-ds/core";import{buildColumnMap as ed,getColumnStyle as td,isGroupColumn as nd,metadataKeys as zs,notHidden as od,visibleColumnAtIndex as rd}from"@vuu-ui/vuu-utils";import{useCallback as ld,useMemo as ad}from"react";import{isGroupColumn as dn,isJsonColumn as Ss,isJsonGroup as ws,metadataKeys as Ps,notHidden as Rs}from"@vuu-ui/vuu-utils";import Ds from"classnames";import{memo as Ms,useCallback as fn}from"react";import{getColumnStyle as cs,metadataKeys as ms}from"@vuu-ui/vuu-utils";import{EditableLabel as ps}from"@vuu-ui/vuu-ui-controls";import ds from"classnames";import{memo as fs,useCallback as gs,useRef as Cs,useState as cn}from"react";import{jsx as Re}from"react/jsx-runtime";var{KEY:mn}=ms,ot=fs(({className:t,column:e,columnMap:n,onClick:o,row:r})=>{let s=Cs(null),{align:i,CellRenderer:u,key:a,pin:c,editable:p,resizing:g,valueFormatter:b}=e,[l,m]=cn(!1),f=b(r[a]),[C,x]=cn(f),P=()=>{var M;(M=s.current)==null||M.focus()},R=M=>{M.key==="Enter"&&m(!0)},I=gs(M=>{o==null||o(M,e)},[e,o]),S=()=>{m(!0)},Ae=(M="",pt="",On=!0,An=!1)=>{var dt;m(!1),An?x(M):pt!==M&&x(pt),On===!1&&((dt=s.current)==null||dt.focus())},ct=ds(t,{vuuAlignRight:i==="right",vuuPinFloating:c==="floating",vuuPinLeft:c==="left",vuuPinRight:c==="right","vuuTableCell-resizing":g})||void 0,mt=cs(e);return p?Re("div",{className:ct,"data-editable":!0,role:"cell",style:mt,onKeyDown:R,children:Re(ps,{editing:l,value:C,onChange:x,onMouseDownCapture:P,onEnterEditMode:S,onExitEditMode:Ae,onKeyDown:R,ref:s,tabIndex:0},"title")}):Re("div",{className:ct,role:"cell",style:mt,onClick:I,children:u?Re(u,{column:e,columnMap:n,row:r}):f})},bs);ot.displayName="TableCell";function bs(t,e){return t.column===e.column&&t.onClick===e.onClick&&t.row[mn]===e.row[mn]&&t.row[t.column.key]===e.row[e.column.key]}import{getColumnStyle as hs,getGroupValueAndOffset as xs,metadataKeys as ys}from"@vuu-ui/vuu-utils";import{useCallback as vs}from"react";import{jsx as rt,jsxs as Es}from"react/jsx-runtime";var{IS_LEAF:Ts}=ys,pn=({column:t,onClick:e,row:n})=>{let{columns:o}=t,[r,s]=xs(o,n),i=vs(p=>{e==null||e(p,t)},[t,e]),u=hs(t),a=n[Ts],c=Array(s).fill(0).map((p,g)=>rt("span",{className:"vuuTableGroupCell-spacer"},g));return Es("div",{className:"vuuTableGroupCell vuuPinLeft",onClick:a?void 0:i,role:"cell",style:u,children:[c,a?null:rt("span",{className:"vuuTableGroupCell-toggle","data-icon":"triangle-right"}),rt("span",{children:r})]})};import{jsx as gn,jsxs as ks}from"react/jsx-runtime";var{IDX:Os,IS_EXPANDED:As,SELECTED:Hs}=Ps,De="vuuTableRow",Ls=Ms(function({columnMap:e,columns:n,offset:o,onClick:r,onToggleGroup:s,virtualColSpan:i=0,row:u}){let{[Os]:a,[As]:c,[Hs]:p}=u,g=Ds(De,{[`${De}-even`]:a%2===0,[`${De}-expanded`]:c,[`${De}-preSelected`]:p===2}),b=fn(m=>{let f=m.shiftKey,C=m.ctrlKey||m.metaKey;r==null||r(u,f,C)},[r,u]),l=fn((m,f)=>{(dn(f)||ws(f,u))&&(m.stopPropagation(),s==null||s(u,f))},[s,u]);return ks("div",{"aria-selected":p===1?!0:void 0,"aria-rowindex":a,className:g,onClick:b,role:"row",style:{transform:`translate3d(0px, ${o}px, 0px)`},children:[i>0?gn("div",{role:"cell",style:{width:i}}):null,n.filter(Rs).map(m=>{let f=dn(m),C=Ss(m);return gn(f?pn:ot,{column:m,columnMap:e,onClick:f||C?l:void 0,row:u},m.name)})]})});import qm from"classnames";import{useRef as tp}from"react";import{useCallback as Um,useRef as Xm}from"react";import{jsx as ip,jsxs as lp}from"react/jsx-runtime";import Hp from"classnames";import{useCallback as Fp,useRef as Ip}from"react";import pp from"classnames";import{useContextMenu as Wp}from"@vuu-ui/vuu-popups";import{useContextMenu as yp}from"@vuu-ui/vuu-popups";import Tp from"classnames";import{useCallback as wp}from"react";import{jsx as Dp}from"react/jsx-runtime";import{jsx as Up,jsxs as Xp}from"react/jsx-runtime";import{jsx as gd,jsxs as Cd}from"react/jsx-runtime";var{RENDER_IDX:dd}=zs;import{useContextMenu as kg}from"@vuu-ui/vuu-popups";import{applySort as Fg,buildColumnMap as Ig,isJsonGroup as zg,metadataKeys as ei,moveItem as $g}from"@vuu-ui/vuu-utils";import{useCallback as Bg,useEffect as Wg,useMemo as Gg,useRef as Qg,useState as Ug}from"react";import{isVuuFeatureAction as xd,isVuuFeatureInvocation as yd}from"@vuu-ui/vuu-data-react";import{getFullRange as Td,metadataKeys as $s,WindowRange as Ed}from"@vuu-ui/vuu-utils";import{useCallback as wd,useEffect as Pd,useMemo as Rd,useRef as Dd,useState as Md}from"react";var{SELECTED:Od}=$s;import{useDragDropNext as Ld}from"@vuu-ui/vuu-ui-controls";import{useCallback as Fd,useRef as Id}from"react";import{withinRange as Gd}from"@vuu-ui/vuu-utils";import{useCallback as _d,useEffect as Zd,useLayoutEffect as Jd,useMemo as qd,useRef as jd}from"react";function Vs(t,...e){let n=new Set(t);for(let o of e)for(let r of o)n.add(r);return n}var Cn="ArrowUp",bn="ArrowDown",hn="ArrowLeft",xn="ArrowRight";var yn="Home",vn="End",Tn="PageUp",En="PageDown";var Ks=new Set(["Enter","Delete"," "]),Bs=new Set(["Tab"]),Ws=new Set(["ArrowRight","ArrowLeft"]),Gs=new Set([yn,vn,Tn,En,bn,hn,xn,Cn]),Qs=new Set(["F1","F2","F3","F4","F5","F6","F7","F8","F9","F10","F11","F12"]),$d=Vs(Ks,Gs,Ws,Qs,Bs);import{isValidNumber as ff}from"@vuu-ui/vuu-utils";import{useCallback as bf,useMemo as hf,useRef as xf,useState as yf}from"react";import{useCallback as lf,useEffect as af,useRef as uf}from"react";var Us=new Map,Xs=(t,e,n)=>{switch(n){case"height":return e.height;case"clientHeight":return t.clientHeight;case"clientWidth":return t.clientWidth;case"contentHeight":return e.contentHeight;case"contentWidth":return e.contentWidth;case"scrollHeight":return Math.ceil(t.scrollHeight);case"scrollWidth":return Math.ceil(t.scrollWidth);case"width":return e.width;default:return 0}},cf=new ResizeObserver(t=>{for(let e of t){let{target:n,borderBoxSize:o,contentBoxSize:r}=e,s=Us.get(n);if(s){let[{blockSize:i,inlineSize:u}]=o,[{blockSize:a,inlineSize:c}]=r,{onResize:p,measurements:g}=s,b=!1;for(let[l,m]of Object.entries(g)){let f=Xs(n,{height:i,width:u,contentHeight:a,contentWidth:c},l);f!==m&&(b=!0,g[l]=f)}b&&p&&p(g)}}});import{deselectItem as wf,isRowSelected as Pf,metadataKeys as Ys,selectItem as Rf}from"@vuu-ui/vuu-utils";import{useCallback as Mf,useRef as Of}from"react";var{IDX:Af}=Ys;import{applyFilterToColumns as kf,applyGroupByToColumns as Nf,applySortToColumns as Ff,findColumn as If,getCellRenderer as zf,getColumnName as $f,getTableHeadings as Vf,getValueFormatter as Kf,isFilteredColumn as Bf,isGroupColumn as Wf,isPinned as Gf,isTypeDescriptor as Qf,metadataKeys as _s,updateColumn as Uf,sortPinnedColumns as Xf,stripFilterFromColumns as Yf,moveItem as _f}from"@vuu-ui/vuu-utils";import{useReducer as qf}from"react";var jf=_s.count;import{useCallback as ng,useRef as og}from"react";import{useCallback as ig,useMemo as lg,useRef as ag}from"react";import{actualRowPositioning as cg,virtualRowPositioning as fg}from"@vuu-ui/vuu-utils";import{getColumnsInViewport as bg,itemsChanged as hg}from"@vuu-ui/vuu-utils";import{useCallback as vg,useEffect as Tg,useMemo as Eg,useRef as Sg,useState as wg}from"react";var{KEY:sC,IS_EXPANDED:iC,IS_LEAF:lC}=ei;import SC from"classnames";import{isDataLoading as DC}from"@vuu-ui/vuu-utils";import{jsx as OC,jsxs as AC}from"react/jsx-runtime";import ni from"classnames";import{isJsonAttribute as oi,metadataKeys as ri,registerComponent as si}from"@vuu-ui/vuu-utils";import{jsx as st,jsxs as ci}from"react/jsx-runtime";var ge="vuuJsonCell",{IS_EXPANDED:ii,KEY:li}=ri,ai=t=>{let e=t.lastIndexOf("|");return e===-1?"":t.slice(e+1)},ui=({column:t,row:e})=>{let{key:n}=t,o=e[n],r=!1;oi(o)&&(o=o.slice(0,-1),r=!0);let s=ai(e[li]),i=ni({[`${ge}-name`]:s===o,[`${ge}-value`]:s!==o,[`${ge}-group`]:r});if(r){let u=e[ii]?"minus-box":"plus-box";return ci("span",{className:i,children:[st("span",{className:`${ge}-value`,children:o}),st("span",{className:`${ge}-toggle`,"data-icon":u})]})}else return o?st("span",{className:i,children:o}):null};si("json",ui,"cell-renderer",{});import{ContextMenuProvider as Jx}from"@vuu-ui/vuu-popups";import{metadataKeys as Li,notHidden as jx}from"@vuu-ui/vuu-utils";import{useCallback as Wb,useRef as Gb}from"react";import{getColumnStyle as mi}from"@vuu-ui/vuu-utils";import pi from"classnames";import{useMemo as di}from"react";var Ce=(t,e,n)=>di(()=>{let o=pi(e,{vuuPinFloating:t.pin==="floating",vuuPinLeft:t.pin==="left",vuuPinRight:t.pin==="right",vuuEndPin:n&&t.endPin,[`${e}-resizing`]:t.resizing,[`${e}-right`]:t.align==="right"}),r=mi(t);return{className:o,style:r}},[t,e,n]);import{useContextMenu as sb}from"@vuu-ui/vuu-popups";import lb from"classnames";import{useCallback as mb,useRef as pb,useState as db}from"react";import{jsx as Cb}from"react/jsx-runtime";import{useCallback as vb,useRef as Tb}from"react";import{jsx as wb}from"react/jsx-runtime";import{useCallback as Mb,useRef as Ob}from"react";import{jsx as qb,jsxs as jb}from"react/jsx-runtime";import{isGroupColumn as yi,metadataKeys as vi,notHidden as Ti,RowSelected as Ei}from"@vuu-ui/vuu-utils";import Si from"classnames";import{memo as wi,useCallback as Pi}from"react";import{jsx as fi}from"react/jsx-runtime";var Sn=({column:t,row:e})=>{let{className:n,style:o}=Ce(t,"vuuTableNextCell");return fi("div",{className:n,role:"cell",style:o,children:e[t.key]})};import{getGroupValueAndOffset as gi,metadataKeys as Ci}from"@vuu-ui/vuu-utils";import{useCallback as bi}from"react";import{jsx as it,jsxs as xi}from"react/jsx-runtime";var{IS_LEAF:hi}=Ci,wn=({column:t,onClick:e,row:n})=>{let{columns:o}=t,[r,s]=gi(o,n),{className:i,style:u}=Ce(t,"vuuTable2-groupCell"),a=bi(g=>{e==null||e(g,t)},[t,e]),c=n[hi],p=Array(s).fill(0).map((g,b)=>it("span",{className:"vuuTable2-groupCell-spacer"},b));return xi("div",{className:i,role:"cell",style:u,onClick:c?void 0:a,children:[p,c?null:it("span",{className:"vuuTable2-groupCell-toggle","data-icon":"vuu-triangle-right"}),it("span",{children:r})]})};import{jsx as lt}from"react/jsx-runtime";import{createElement as Oi}from"react";var{IDX:Ri,IS_EXPANDED:Di,SELECTED:Mi}=vi,F="vuuTableNextRow",Pn=wi(({className:t,columnMap:e,columns:n,row:o,offset:r,onClick:s,onToggleGroup:i,...u})=>{let{[Ri]:a,[Di]:c,[Mi]:p}=o,g=Pi(x=>{let P=x.shiftKey,R=x.ctrlKey||x.metaKey;s==null||s(o,P,R)},[s,o]),{True:b,First:l,Last:m}=Ei,f=Si(F,t,{[`${F}-even`]:a%2===0,[`${F}-expanded`]:c,[`${F}-selected`]:p&b,[`${F}-selectedStart`]:p&l,[`${F}-selectedEnd`]:p&m}),C=typeof r=="number"?{transform:`translate3d(0px, ${r}px, 0px)`}:void 0;return Oi("div",{...u,key:`row-${o[0]}`,role:"row",className:f,onClick:g,style:C},lt("span",{className:`${F}-selectionDecorator vuuStickyLeft`}),n.filter(Ti).map(x=>{let R=yi(x)?wn:Sn;return lt(R,{column:x,row:o},x.key)}),lt("span",{className:`${F}-selectionDecorator vuuStickyRight`}))});Pn.displayName="Row";import{useLayoutEffectSkipFirst as yx,useLayoutProviderDispatch as vx}from"@vuu-ui/vuu-layout";import{useContextMenu as Ex}from"@vuu-ui/vuu-popups";import{applySort as wx,buildColumnMap as Px,isValidNumber as Rx,updateColumn as Dx,visibleColumnAtIndex as Mx}from"@vuu-ui/vuu-utils";import{useCallback as Hx,useMemo as Lx,useState as kx}from"react";var Me=(t,e)=>{switch(e.type){case"col-size":return{...t,columns:t.columns.map(n=>n.name===e.column.name?{...n,width:e.width}:n)};case"column-prop":return{...t,columns:t.columns.map(n=>n.name===e.column.name?{...n,[e.property]:e.value}:n)};default:return t}};import{useCallback as Ph,useMemo as Rh,useState as Dh}from"react";import{useMemo as Ah,useRef as Hh}from"react";import{moveItem as Nh}from"@vuu-ui/vuu-ui-controls";import{applyFilterToColumns as Ih,applyGroupByToColumns as zh,applySortToColumns as $h,findColumn as Vh,getCellRenderer as Kh,getColumnName as Bh,getTableHeadings as Wh,getValueFormatter as Gh,isFilteredColumn as Qh,isGroupColumn as Uh,isPinned as Xh,isTypeDescriptor as Yh,logger as Ai,metadataKeys as Hi,sortPinnedColumns as _h,stripFilterFromColumns as Zh}from"@vuu-ui/vuu-utils";import{useReducer as jh}from"react";var{info:ex}=Ai("useTableModel");var tx=Hi.count;import{useCallback as rx,useRef as sx}from"react";import{useCallback as ax,useRef as ux}from"react";import{jsx as ly,jsxs as ay}from"react/jsx-runtime";var{IDX:ry,RENDER_IDX:sy}=Li;import{useCallback as at,useMemo as Ni,useState as Fi}from"react";var Ii=(t,e)=>t.map(({name:n,serverDataType:o})=>{let r=e.find(s=>s.name===n);return{hidden:r==null?void 0:r.hidden,label:r==null?void 0:r.label,name:n,serverDataType:o,subscribed:r!==void 0}}),Rn=({availableColumns:t,onConfigChange:e,tableConfig:n})=>{let[o,r]=Fi(n),s=Ni(()=>Ii(t,o.columns),[t,o.columns]),i=at((p,g)=>{console.log(`move list item from ${p} to ${g}`)},[]),u=at((p,g,b)=>{let l=s.find(m=>m.name===p);if(g==="subscribed")console.log(`unsubscribe from ${p}`);else if(l!=null&&l.subscribed){let m=o.columns.find(f=>f.name===p);if(m){let f=Me(o,{type:"column-prop",property:g,column:m,value:b});r(f)}}},[s,o]),a=at(p=>{let{value:g}=p.target,b=g==="0"?void 0:g==="1"?"capitalize":"uppercase";r(l=>({...l,columnFormatHeader:b}))},[]);ki(()=>{e==null||e(o)},[e,o]);let c=o.columnFormatHeader===void 0?0:o.columnFormatHeader==="capitalize"?1:2;return{columnItems:s,columnLabelsValue:c,onChangeColumnLabels:a,onColumnChange:u,onMoveListItem:i}};import{jsx as Q,jsxs as Oe}from"react/jsx-runtime";var Vi="vuuTableSettingsPanel",My=({availableColumns:t,onConfigChange:e,tableConfig:n,...o})=>{let{columnItems:r,columnLabelsValue:s,onChangeColumnLabels:i,onColumnChange:u,onMoveListItem:a}=Rn({availableColumns:t,onConfigChange:e,tableConfig:n});return Oe("div",{...o,className:Vi,children:[Oe(Dn,{children:[Q(Mn,{children:"Column Labels"}),Oe($i,{className:"vuuToggleButtonGroup",onChange:i,value:s,children:[Q(ut,{className:"vuuIconToggleButton","data-icon":"text-strikethrough",value:0}),Q(ut,{className:"vuuIconToggleButton","data-icon":"text-Tt",value:1}),Q(ut,{className:"vuuIconToggleButton","data-icon":"text-T",value:2})]})]}),Oe(Dn,{children:[Q(Mn,{children:"Default Column Width"}),Q(zi,{className:"vuuInput"})]}),Q(xt,{columnItems:r,onChange:u,onMoveListItem:a})]})};export{zt as ColumnExpressionInput,xt as ColumnList,Ve as ColumnNamedTerms,Hc as DataSourceStats,xc as DatagridSettingsPanel,My as TableSettingsPanel,yt as columnExpressionLanguageSupport,St as isCompleteExpression,wt as isCompleteRelationalExpression,Ke as lastNamedChild,It as useColumnExpressionEditor,Kt as useColumnExpressionSuggestionProvider,Rn as useTableSettings,Tt as walkTree};
1
+ var Et=(t,e,o)=>{if(!e.has(t))throw TypeError("Cannot "+o)};var C=(t,e,o)=>(Et(t,e,"read from private field"),o?o.call(t):e.get(t)),P=(t,e,o)=>{if(e.has(t))throw TypeError("Cannot add the same private member more than once");e instanceof WeakSet?e.add(t):e.set(t,o)},F=(t,e,o,n)=>(Et(t,e,"write to private field"),n?n.call(t,o):e.set(t,o),o);import{registerComponent as Go}from"@vuu-ui/vuu-utils";var Uo=t=>typeof t=="string",Xo=(t,e)=>Uo(e)?e===""?!0:t.value==="lower"&&e.toLowerCase()!==e?"value must be all lowercase":t.value==="upper"&&e.toUpperCase()!==e?"value must be all uppercase":!0:"value must be a string";Go("vuu-case",Xo,"data-edit-validator",{});import{registerComponent as _o}from"@vuu-ui/vuu-utils";var Yo=t=>typeof t=="string",Jo="value does not match expected pattern",Zo=(t,e)=>{if(typeof t.value!="string")throw Error("Pattern validation rule must provide pattern");if(Yo(e)){if(e==="")return!0;{let{message:o=Jo}=t;return new RegExp(t.value).test(e)||o}}else return"value must be a string"};_o("vuu-pattern",Zo,"data-edit-validator",{});import{DOWN1 as nn,DOWN2 as rn,isTypeDescriptor as sn,metadataKeys as ln,registerComponent as an,UP1 as un,UP2 as cn}from"@vuu-ui/vuu-utils";import mn from"classnames";import{getMovingValueDirection as qo,isTypeDescriptor as jo,isValidNumber as wt}from"@vuu-ui/vuu-utils";import{useEffect as en,useRef as tn}from"react";var on=[void 0,void 0,void 0,void 0];function Dt(t,e,o){var d;let n=tn(),[r,s,i,l]=n.current||on,{type:u}=o,c=jo(u)?(d=u.formatting)==null?void 0:d.decimals:void 0,m=t===r&&wt(e)&&wt(s)&&o===i?qo(e,l,s,c):"";return en(()=>{n.current=[t,e,o,m]}),m}import{jsx as bn,jsxs as hn}from"react/jsx-runtime";var pn=String.fromCharCode(11014),dn=String.fromCharCode(11015),{KEY:fn}=ln,Te="vuuBackgroundCellDeprecated",ie={ArrowOnly:"arrow",BackgroundOnly:"bg-only",ArrowBackground:"arrow-bg"},gn=t=>sn(t)&&t.renderer&&"flashStyle"in t.renderer?t.renderer.flashStyle:ie.BackgroundOnly,Cn=({column:t,row:e})=>{let{key:o,type:n,valueFormatter:r}=t,s=e[o],i=gn(n),l=Dt(e[fn],s,t),u=i===ie.ArrowOnly||i===ie.ArrowBackground?l===un||l===cn?pn:l===nn||l===rn?dn:null:null,c=l?" "+l:"",m=mn(Te,c,{[`${Te}-arrowOnly`]:i===ie.ArrowOnly,[`${Te}-arrowBackground`]:i===ie.ArrowBackground});return hn("div",{className:m,tabIndex:-1,children:[bn("div",{className:`${Te}-flasher`,children:u}),r(e[t.key])]})};an("background",Cn,"cell-renderer",{description:"Background Cell renderer for VuuTable",label:"Background Cell (deprecated)",serverDataType:["long","int","double"]});import{isColumnTypeRenderer as xn,isTypeDescriptor as yn,isValidNumber as Rt,registerComponent as vn}from"@vuu-ui/vuu-utils";import Tn from"classnames";import{jsx as ze,jsxs as St}from"react/jsx-runtime";var le="vuuProgressCell",En=({column:t,columnMap:e,row:o})=>{let{type:n}=t,r=o[t.key],s=!1,i=0;if(yn(n)&&xn(n.renderer)){let{associatedField:u}=n.renderer;if(u){let c=o[e[u]];if(typeof Rt(r)&&Rt(c))i=Math.min(Math.round(r/c*100),100),i=Math.min(Math.round(r/c*100),100),s=isFinite(i);else{let m=parseFloat(r);if(Number.isFinite(m)){let d=parseFloat(c);Number.isFinite(d)&&(i=Math.min(Math.round(m/d*100),100),s=isFinite(i))}}}else throw Error("ProgressCell associatedField is required to render")}let l=Tn(le,{});return St("div",{className:l,tabIndex:-1,children:[s?St("span",{className:`${le}-track`,children:[ze("span",{className:`${le}-bg`}),ze("span",{className:`${le}-bar`,style:{"--progress-bar-pct":`-${100-i}%`}})]}):null,ze("span",{className:`${le}-text`,children:`${i} %`})]})};vn("vuu.progress",En,"cell-renderer",{description:"Progress formatter",label:"Progress formatter",serverDataType:["long","int","double"]});import{DOWN1 as Mn,DOWN2 as Hn,isTypeDescriptor as On,metadataKeys as An,registerComponent as Ln,UP1 as Nn,UP2 as kn}from"@vuu-ui/vuu-utils";import Fn from"classnames";import{getMovingValueDirection as wn,isTypeDescriptor as Dn,isValidNumber as Pt}from"@vuu-ui/vuu-utils";import{useEffect as Rn,useRef as Sn}from"react";var Pn=[void 0,void 0,void 0,void 0];function Mt(t,e,o){var d;let n=Sn(),[r,s,i,l]=n.current||Pn,{type:u}=o,c=Dn(u)?(d=u.formatting)==null?void 0:d.decimals:void 0,m=t===r&&Pt(e)&&Pt(s)&&o===i?wn(e,l,s,c):"";return Rn(()=>{n.current=[t,e,o,m]}),m}import{jsx as Bn,jsxs as Wn}from"react/jsx-runtime";var In=String.fromCharCode(11014),Kn=String.fromCharCode(11015),{KEY:zn}=An,Ee="vuuBackgroundCell",ae={ArrowOnly:"arrow",BackgroundOnly:"bg-only",ArrowBackground:"arrow-bg"},Vn=t=>On(t)&&t.renderer&&"flashStyle"in t.renderer?t.renderer.flashStyle:ae.BackgroundOnly,$n=({column:t,row:e})=>{let{key:o,type:n,valueFormatter:r}=t,s=e[o],i=Vn(n),l=Mt(e[zn],s,t),u=i===ae.ArrowOnly||i===ae.ArrowBackground?l===Nn||l===kn?In:l===Mn||l===Hn?Kn:null:null,c=l?" "+l:"",m=Fn(Ee,c,{[`${Ee}-arrowOnly`]:i===ae.ArrowOnly,[`${Ee}-arrowBackground`]:i===ae.ArrowBackground});return Wn("div",{className:m,tabIndex:-1,children:[Bn("div",{className:`${Ee}-flasher`,children:u}),r(e[t.key])]})};console.log("register BackgroundCellNext");Ln("background-next",$n,"cell-renderer",{description:"Change background color of cell when value changes",label:"Background Flash",serverDataType:["long","int","double"]});import{List as Qn,ListItem as Gn}from"@vuu-ui/vuu-ui-controls";import{Checkbox as Un}from"@salt-ds/core";import{Switch as Xn}from"@salt-ds/lab";import _n from"classnames";import{useCallback as Yn}from"react";import{jsx as L,jsxs as Ve}from"react/jsx-runtime";var A="vuuColumnList",Ht="vuuColumnListItem",Jn=({className:t,item:e,...o})=>{var n;return Ve(Gn,{...o,className:_n(t,Ht),"data-name":e==null?void 0:e.name,children:[e!=null&&e.isCalculated?L("span",{className:`${A}-icon`,"data-icon":"function"}):L(Xn,{className:`${A}-switch`,checked:e==null?void 0:e.subscribed}),L("span",{className:`${A}-text`,children:(n=e==null?void 0:e.label)!=null?n:e==null?void 0:e.name}),L(Un,{className:`${A}-checkBox`,checked:(e==null?void 0:e.hidden)!==!0,disabled:(e==null?void 0:e.subscribed)!==!0})]})},Ot=({columnItems:t,onChange:e,onMoveListItem:o,...n})=>{let r=Yn(s=>{let i=s.target,l=i.closest(`.${Ht}`),{dataset:{name:u}}=l;if(u){let c=i.closest(`.${A}-switch`),m=i.closest(`.${A}-checkBox`);c?e(u,"subscribed",i.checked):m&&e(u,"hidden",i.checked===!1)}},[e]);return Ve("div",{...n,className:A,children:[L("div",{className:`${A}-header`,children:L("span",{children:"Column Selection"})}),Ve("div",{className:`${A}-colHeadings`,children:[L("span",{children:"Column subscription"}),L("span",{children:"Visibility"})]}),L(Qn,{ListItem:Jn,allowDragDrop:!0,height:"100%",onChange:r,onMoveListItem:o,selectionStrategy:"none",source:t,itemHeight:33})]})};import{getDefaultAlignment as Hs,isCalculatedColumn as Os}from"@vuu-ui/vuu-utils";import{Button as fo,FormField as Ae,FormFieldLabel as Le,ToggleButton as te,ToggleButtonGroup as go}from"@salt-ds/core";import{Dropdown as tr}from"@vuu-ui/vuu-ui-controls";import{FormField as or,FormFieldLabel as nr}from"@salt-ds/core";import Nt from"classnames";import{useMemo as rr}from"react";import{FormField as $e,FormFieldLabel as Be,Input as Zn}from"@salt-ds/core";import{Switch as At}from"@salt-ds/lab";import{getTypeSettingsFromColumn as qn}from"@vuu-ui/vuu-utils";import{useCallback as we,useState as jn}from"react";import{jsx as U,jsxs as De}from"react/jsx-runtime";var er="vuuFormattingSettings",Lt=({column:t,onChange:e})=>{var u;let[o,n]=jn(qn(t)),r=we(c=>{(c.key==="Enter"||c.key==="Tab")&&e(o)},[o,e]),s=we(c=>{let{value:m}=c.target,d=m===""||isNaN(parseInt(m))?void 0:parseInt(m),b={...o,decimals:d};n(b)},[o]),i=we(c=>{let{checked:m}=c.target,d={...o,alignOnDecimals:m};n(d),e(d)},[o,e]),l=we(c=>{let{checked:m}=c.target,d={...o,zeroPad:m};n(d),e(d)},[o,e]);return De("div",{className:er,children:[De($e,{"data-field":"decimals",children:[U(Be,{children:"Number of decimals"}),U(Zn,{className:"vuuInput",onChange:s,onKeyDown:r,value:(u=o.decimals)!=null?u:""})]}),De($e,{labelPlacement:"left",children:[U(Be,{children:"Align on decimals"}),U(At,{checked:o.alignOnDecimals,onChange:i,value:"align-decimals"})]}),De($e,{labelPlacement:"left",children:[U(Be,{children:"Zero pad decimals"}),U(At,{checked:o.zeroPad,onChange:l,value:"zero-pad"})]})]})};import{jsx as ue,jsxs as kt}from"react/jsx-runtime";var We="vuuColumnFormattingPanel",sr=t=>{var e;return(e=t.label)!=null?e:t.name},Ft=({availableRenderers:t,selectedCellRenderer:e,className:o,column:n,onChangeFormatting:r,onChangeRenderer:s,...i})=>{let l=rr(()=>{switch(n.serverDataType){case"double":case"int":case"long":return ue(Lt,{column:n,onChange:r});default:return null}},[n,r]),{serverDataType:u="string"}=n;return kt("div",{...i,className:"vuuColumnSettingsPanel-header",children:[ue("div",{children:"Formatting"}),kt(or,{children:[ue(nr,{children:"Renderer"}),ue(tr,{className:Nt(`${We}-renderer`),itemToString:sr,onSelectionChange:s,selected:e,source:t,width:"100%"})]}),ue("div",{className:Nt(We,o,`${We}-${u}`),children:l})]})};import{getRegisteredCellRenderers as ir,isColumnTypeRenderer as lr,isTypeDescriptor as ar,isValidColumnAlignment as ur,isValidPinLocation as cr,setCalculatedColumnName as mr,updateColumnRenderer as pr,updateColumnType as dr}from"@vuu-ui/vuu-utils";import{useCallback as I,useMemo as fr,useRef as gr,useState as Cr}from"react";var br=[{description:"Default formatter for columns with data type integer",label:"Default Renderer (data type int, long)",name:"default-int"}],hr=[{description:"Default formatter for columns with data type double",label:"Default Renderer (data type double)",name:"default-double"},...ir("double")],It=[{description:"Default formatter for columns with data type string",label:"Default Renderer (data type string)",name:"default-string"}],zt=t=>{switch(t.serverDataType){case"char":case"string":return It;case"int":case"long":return br;case"double":return hr;default:return It}},Kt=(t,e)=>{if(ar(e.type)){let{renderer:n}=e.type;if(lr(n)){let r=t.find(s=>s.name===n.name);if(r)return r}}return zt(e)[0]},xr=t=>{let e=t.closest(".saltFormField");if(e&&e.dataset.field){let{dataset:{field:o}}=e;return o}else throw Error("named form field not found")},yr=(t,e)=>{if(e.name==="::")return e;{let o=t.find(n=>n.name===e.name);if(o)return o;throw Error(`columns does not contain column ${name}`)}},ce=(t,e)=>({...t,columns:t.columns.map(o=>o.name===e.name?e:o)}),Vt=({column:t,onConfigChange:e,onCreateCalculatedColumn:o,tableConfig:n})=>{let[r,s]=Cr(yr(n.columns,t)),i=fr(()=>zt(r),[r]),l=gr(Kt(i,r)),u=I(()=>{e(ce(n,r))},[r,e,n]),c=I(f=>{let h=f.target,v=xr(h),{value:T}=h;switch(v){case"column-label":s(y=>({...y,label:T}));break;case"column-name":s(y=>mr(y,T));break;case"column-width":s(y=>({...y,width:parseInt(T)}));break;case"column-alignment":if(ur(T)){let y={...r,align:T||void 0};s(y),e(ce(n,y))}break;case"column-pin":if(cr(T)){let y={...r,pin:T||void 0};s(y),e(ce(n,y));break}}},[r,e,n]),m=I((f,h)=>{if(h){let v=pr(r,h);l.current=h,s(v),e(ce(n,v))}},[r,e,n]),d=I(f=>{let h=dr(r,f);s(h),e(ce(n,h))},[r,e,n]),b=I(({moveBy:f})=>{let{columns:h}=n,v=h.indexOf(r)+f,T=h[v];T&&(l.current=Kt(i,T),s(T))},[i,r,n]),a=I(()=>{b({moveBy:1})},[b]),p=I(()=>{b({moveBy:-1})},[b]),g=I(f=>{o({...r,...f})},[r,o]);return{availableRenderers:i,selectedCellRenderer:l.current,column:r,navigateNextColumn:a,navigatePrevColumn:p,onChange:c,onChangeFormatting:d,onChangeRenderer:m,onInputCommit:u,onSave:g}};import{Dropdown as Es}from"@vuu-ui/vuu-ui-controls";import{getCalculatedColumnExpression as ws,getCalculatedColumnName as Ds,getCalculatedColumnType as Rs}from"@vuu-ui/vuu-utils";import{Button as st,FormField as it,FormFieldLabel as lt,Input as Ss}from"@salt-ds/core";import{useCallback as Ps,useRef as Ms}from"react";import{autocompletion as Vr,defaultKeymap as $r,EditorState as Br,EditorView as to,ensureSyntaxTree as Wr,keymap as oo,minimalSetup as Qr,startCompletion as no}from"@vuu-ui/vuu-codemirror";import{createEl as ro}from"@vuu-ui/vuu-utils";import{useEffect as Gr,useMemo as Ur,useRef as tt}from"react";import{LanguageSupport as Tr,LRLanguage as Er,styleTags as wr,tags as Se}from"@vuu-ui/vuu-codemirror";import{LRParser as vr}from"@lezer/lr";var Re=vr.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 Dr=Er.define({name:"VuuColumnExpression",parser:Re.configure({props:[wr({Function:Se.variableName,String:Se.string,Or:Se.emphasis,Operator:Se.operator})]})}),$t=()=>new Tr(Dr);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}}},Ge=class{constructor(e){this.type="colExpression";this.column=e}toJSON(){return{type:this.type,column:this.column}}},pe,$,Ue=class{constructor(e="unknown"){P(this,pe,[{type:"unknown"},{type:"unknown"}]);P(this,$,void 0);this.type="arithmeticExpression";F(this,$,e)}get op(){return C(this,$)}set op(e){F(this,$,e)}get expressions(){return C(this,pe)}toJSON(){return{type:this.type,op:C(this,$),expressions:C(this,pe)}}};pe=new WeakMap,$=new WeakMap;var J,Xe=class{constructor(e){P(this,J,[]);this.type="callExpression";this.functionName=e}get expressions(){return C(this,J)}get arguments(){return C(this,J)}toJSON(){return{type:this.type,functionName:this.functionName,arguments:C(this,J).map(e=>{var o;return(o=e.toJSON)==null?void 0:o.call(e)})}}};J=new WeakMap;var de,Z,_=class{constructor(){P(this,de,[{type:"unknown"},{type:"unknown"}]);P(this,Z,"unknown");this.type="relationalExpression"}get op(){return C(this,Z)}set op(e){F(this,Z,e)}get expressions(){return C(this,de)}toJSON(){return{type:this.type,op:C(this,Z),expressions:C(this,de)}}};de=new WeakMap,Z=new WeakMap;var fe,q,Y=class{constructor(e){P(this,fe,[{type:"unknown"},{type:"unknown"}]);P(this,q,void 0);this.type="booleanCondition";F(this,q,e)}get op(){return C(this,q)}get expressions(){return C(this,fe)}toJSON(){return{type:this.type,op:C(this,q),expressions:C(this,fe).map(e=>{var o;return(o=e.toJSON)==null?void 0:o.call(e)})}}};fe=new WeakMap,q=new WeakMap;var H,me=class{constructor(e){P(this,H,void 0);this.type="conditionalExpression";F(this,H,[e?new Y(e):new _,{type:"unknown"},{type:"unknown"}])}get expressions(){return C(this,H)}get condition(){return C(this,H)[0]}get truthyExpression(){return C(this,H)[1]}set truthyExpression(e){C(this,H)[1]=e}get falsyExpression(){return C(this,H)[2]}set falsyExpression(e){C(this,H)[2]=e}toJSON(){var e,o,n,r,s;return{type:this.type,condition:(o=(e=this.condition).toJSON)==null?void 0:o.call(e),truthyExpression:this.truthyExpression,falsyExpression:(s=(r=(n=this.falsyExpression)==null?void 0:n.toJSON)==null?void 0:r.call(n))!=null?s:this.falsyExpression}}};H=new WeakMap;var V=t=>t.type==="unknown",Pe=t=>t.type==="arithmeticExpression",Rr=t=>t.type==="callExpression",X=t=>t.type==="conditionalExpression",Sr=t=>t.type==="relationalExpression"||t.type==="booleanCondition";var Pr=t=>t.type==="booleanCondition",Ye=t=>(t==null?void 0:t.type)==="relationalExpression";var S=t=>{if(V(t))return t;if(Ye(t)){let[e,o]=t.expressions;if(w(e))return S(e);if(t.op==="unknown")return t;if(w(o))return S(o)}else if(Sr(t)){let{expressions:e=[]}=t;for(let o of e)if(w(o))return S(o)}else if(X(t)){let{condition:e,truthyExpression:o,falsyExpression:n}=t;if(w(e))return S(e);if(w(o))return S(o);if(w(n))return S(n)}else if(Pe(t)){let{expressions:e=[]}=t;for(let o of e)if(w(o))return S(o)}},Me=(t,e,o)=>{let{expressions:n=[]}=t;if(n.includes(e)){let r=n.indexOf(e);return n.splice(r,1,o),!0}else for(let r of n)if(Me(r,e,o))return!0;return!1},w=t=>V(t)?!0:X(t)?w(t.condition)||w(t.truthyExpression)||w(t.falsyExpression):Ye(t)||Pr(t)?t.op===void 0||t.expressions.some(e=>w(e)):!1,Bt=(t,e)=>{let o=S(t);o?o.expressions?o.expressions.push(e):console.warn("don't know how to treat targetExpression"):console.error("no target expression found")},x,B,_e=class{constructor(){P(this,x,void 0);P(this,B,[])}setCondition(e){if(C(this,x)===void 0)this.addExpression(new me(e));else if(X(C(this,x))){if(w(C(this,x).condition)){let o=e?new Y(e):new _;this.addExpression(o)}else if(V(C(this,x).truthyExpression))C(this,x).truthyExpression=new me(e);else if(w(C(this,x).truthyExpression)){let o=e?new Y(e):new _;this.addExpression(o)}else if(V(C(this,x).falsyExpression))C(this,x).falsyExpression=new me(e);else if(w(C(this,x).falsyExpression)){let o=e?new Y(e):new _;this.addExpression(o)}}else console.error("setCondition called unexpectedly")}addExpression(e){if(C(this,B).length>0){let o=C(this,B).at(-1);o==null||o.arguments.push(e)}else if(C(this,x)===void 0)F(this,x,e);else if(Pe(C(this,x))){let o=S(C(this,x));o&&V(o)&&Me(C(this,x),o,e)}else if(X(C(this,x))&&w(C(this,x))){let o=S(C(this,x));o&&V(o)?Me(C(this,x),o,e):o&&Bt(o,e)}}setFunction(e){let o=new Xe(e);this.addExpression(o),C(this,B).push(o)}setColumn(e){this.addExpression(new Ge(e))}setArithmeticOp(e){let o=e,n=C(this,x);Pe(n)&&(n.op=o)}setRelationalOperator(e){let o=e;if(C(this,x)&&X(C(this,x))){let n=S(C(this,x));Ye(n)?n.op=o:console.error(`no target expression found (op = ${e})`)}}setValue(e){let o=new Qe(e);if(C(this,x)===void 0)F(this,x,o);else if(Pe(C(this,x)))this.addExpression(o);else if(Rr(C(this,x)))C(this,x).arguments.push(o);else if(X(C(this,x)))if(w(C(this,x))){let n=S(C(this,x));n&&V(n)?Me(C(this,x),n,o):n&&Bt(n,o)}else console.log("what do we do with value, in a complete expression")}closeBrace(){C(this,B).pop()}get expression(){return C(this,x)}toJSON(){var e;return(e=C(this,x))==null?void 0:e.toJSON()}};x=new WeakMap,B=new WeakMap;var Wt=(t,e)=>{let o=new _e,n=t.cursor();do{let{name:r,from:s,to:i}=n;switch(r){case"AndCondition":o.setCondition("and");break;case"OrCondition":o.setCondition("or");break;case"RelationalExpression":o.setCondition();break;case"ArithmeticExpression":o.addExpression(new Ue);break;case"Column":{let l=e.substring(s,i);o.setColumn(l)}break;case"Function":{let l=e.substring(s,i);o.setFunction(l)}break;case"Times":case"Divide":case"Plus":case"Minus":{let l=e.substring(s,i);o.setArithmeticOp(l)}break;case"RelationalOperator":{let l=e.substring(s,i);o.setRelationalOperator(l)}break;case"False":case"True":{let l=e.substring(s,i);o.setValue(l==="true")}break;case"String":o.setValue(e.substring(s+1,i-1));break;case"Number":o.setValue(parseFloat(e.substring(s,i)));break;case"CloseBrace":o.closeBrace();break;default:}}while(n.next());return o.toJSON()};var Mr=Re.configure({strict:!0}),Qt=["Number","String"],Je=[...Qt,"AndCondition","ArithmeticExpression","BooleanOperator","RelationalOperatorOperator","CallExpression","CloseBrace","Column","Comma","ConditionalExpression","Divide","Equal","If","Minus","OpenBrace","OrCondition","ParenthesizedExpression","Plus","RelationalExpression","RelationalOperator","Times"],Gt=t=>{try{return Mr.parse(t),!0}catch{return!1}},Ze=t=>{let{lastChild:e}=t;for(;e&&!Je.includes(e.name);)e=e.prevSibling,console.log(e==null?void 0:e.name);return e},Ut=t=>{if((t==null?void 0:t.name)==="RelationalExpression"){let{firstChild:e}=t,o=Ze(t);if((e==null?void 0:e.name)==="Column"&&typeof(o==null?void 0:o.name)=="string"&&Qt.includes(o.name))return!0}return!1};import{HighlightStyle as Hr,syntaxHighlighting as Or,tags as Xt}from"@vuu-ui/vuu-codemirror";var Ar=Hr.define([{tag:Xt.variableName,color:"var(--vuuFilterEditor-variableColor)"},{tag:Xt.comment,color:"green",fontStyle:"italic"}]),_t=Or(Ar);import{EditorView as Lr}from"@vuu-ui/vuu-codemirror";var Yt=Lr.theme({"&":{border:"solid 1px var(--salt-container-primary-borderColor)",color:"var(--vuuFilterEditor-color)",backgroundColor:"var(--vuuFilterEditor-background)"},".cm-content":{caretColor:"var(--vuuFilterEditor-cursorColor)"},"&.cm-focused .cm-cursor":{borderLeftColor:"var(--vuuFilterEditor-cursorColor)"},"&.cm-focused .cm-selectionBackground, ::selection":{backgroundColor:"var(--vuuFilterEditor-selectionBackground)"},".cm-selectionBackground, ::selection":{backgroundColor:"var(--vuuFilterEditor-selectionBackground)"},".cm-scroller":{fontFamily:"var(--vuuFilterEditor-fontFamily)"},".cm-tooltip":{background:"var(--vuuFilterEditor-tooltipBackground)",border:"var(--vuuFilterEditor-tooltipBorder)",boxShadow:"var(--vuuFilterEditor-tooltipElevation)","&.cm-tooltip-autocomplete > ul":{fontFamily:"var(--vuuFilterEditor-fontFamily)",fontSize:"var(--vuuFilterEditor-fontSize)",maxHeight:"240px"},"&.cm-tooltip-autocomplete > ul > li":{height:"var(--vuuFilterEditor-suggestion-height)",padding:"0 3px",lineHeight:"var(--vuuFilterEditor-suggestion-height)"},"&.cm-tooltip-autocomplete li[aria-selected]":{background:"var(--vuuFilterEditor-suggestion-selectedBackground)",color:"var(--vuuFilterEditor-suggestion-selectedColor)"},"&.cm-tooltip-autocomplete li .cm-completionDetail":{color:"var(--vuuFilterEditor-suggestion-detailColor)"}}},{dark:!1});import{booleanJoinSuggestions as Nr,getNamedParentNode as Jt,getPreviousNode as kr,getValue as N,syntaxTree as Fr}from"@vuu-ui/vuu-codemirror";import{useCallback as Zt}from"react";var Ir=(t,e)=>e?t.map(o=>{var n;return{...o,apply:typeof o.apply=="function"?o.apply:`${e}${(n=o.apply)!=null?n:o.label}`}}):t,Kr=t=>t===void 0?!1:["Times","Divide","Plus","Minus"].includes(t.name),ge=t=>({apply:()=>{t==null||t()},label:"Done",boost:10}),j=(t,e)=>{var r;let{lastChild:o}=t,{pos:n}=e;for(;o;)if(o.from<n&&Je.includes(o.name)){if(o.name==="ParenthesizedExpression"){let i=(r=o.firstChild)==null?void 0:r.nextSibling;i&&(o=i)}return o}else o=o.prevSibling},qt=(t,e)=>{var o;if(t.name==="ArgList"){let n=t.prevSibling;if(n)return N(n,e)}else if(t.name==="OpenBrace"){let n=(o=t.parent)==null?void 0:o.prevSibling;if((n==null?void 0:n.name)==="Function")return N(n,e)}},jt=(t,e)=>{if(t.name==="RelationalExpression"){let o=Ze(t);if((o==null?void 0:o.name)==="RelationalOperator")return N(o,e)}else{let o=t.prevSibling;if((o==null?void 0:o.name)==="RelationalOperator")return N(o,e)}},et=(t,e)=>{var o;if(t.name==="RelationalExpression"){if(((o=t.firstChild)==null?void 0:o.name)==="Column")return N(t.firstChild,e)}else{let n=t.prevSibling;if((n==null?void 0:n.name)==="Column")return N(n,e);if((n==null?void 0:n.name)==="RelationalOperator")return et(n,e)}},qe=async(t,e,o,n={})=>{let r=await e.getSuggestions(o,n),{startsWith:s=""}=n;return{from:t.pos-s.length,options:r}},je=(t,e,o,n,r)=>{let s=j(t,e);switch(console.log(`conditional expression last child ${s==null?void 0:s.name}`),s==null?void 0:s.name){case"If":return qe(e,o,"expression",{prefix:"( "});case"OpenBrace":return qe(e,o,"expression");case"Condition":return qe(e,o,"expression",{prefix:", "});case"CloseBrace":if(n){let i=[ge(r)];return{from:e.pos,options:i}}}},zr=(t,e)=>{let o=[ge(e)];return{from:t.pos,options:o}},eo=(t,e)=>{let o=Zt(async(n,r,s={})=>{let i=await t.getSuggestions(r,s),{startsWith:l=""}=s;return{from:n.pos-l.length,options:i}},[t]);return Zt(async n=>{var d,b;let{state:r,pos:s}=n,i=(d=n.matchBefore(/\w*/))!=null?d:{from:0,to:0,text:void 0},u=Fr(r).resolveInner(s,-1),c=r.doc.toString(),m=Gt(c);switch(u.name){case"If":return console.log("conditional expression If"),o(n,"expression",{prefix:"( "});case"Condition":{let a=j(u,n);if((a==null?void 0:a.name)==="Column"){let p=kr(a);if((p==null?void 0:p.name)!=="RelationalOperator")return o(n,"condition-operator",{columnName:N(a,r)})}else if((a==null?void 0:a.name)==="RelationalOperator")return o(n,"expression");console.log(`condition last child ${a==null?void 0:a.name}`)}break;case"ConditionalExpression":return je(u,n,t);case"RelationalExpression":{if(Ut(u))return{from:n.pos,options:Nr.concat({label:", <truthy expression>, <falsy expression>",apply:", "})};{let a=jt(u,r),p=et(u,r);if(a)return o(n,"expression");{let g=await t.getSuggestions("condition-operator",{columnName:p});return{from:n.pos,options:g}}}}break;case"RelationalOperator":return o(n,"expression");case"String":{let a=jt(u,r),p=et(u,r),{from:g,to:f}=u;if(f-g===2&&n.pos===g+1){if(p&&a)return o(n,"columnValue",{columnName:p,operator:a,startsWith:i.text})}else if(f-g>2&&n.pos===f)return o(n,"expression",{prefix:", "})}break;case"ArithmeticExpression":{let a=j(u,n);if((a==null?void 0:a.name)==="Column")return o(n,"expression");if(Kr(a)){let p=a.name;return o(n,"column",{operator:p})}}break;case"OpenBrace":{let a=qt(u,r);return o(n,"expression",{functionName:a})}break;case"ArgList":{let a=qt(u,r),p=j(u,n),g=(p==null?void 0:p.name)==="OpenBrace"?void 0:",",f=await t.getSuggestions("expression",{functionName:a});return f=g?Ir(f,", "):f,(p==null?void 0:p.name)!=="OpenBrace"&&(p==null?void 0:p.name)!=="Comma"&&(f=[{apply:") ",boost:10,label:"Done - no more arguments"}].concat(f)),{from:n.pos,options:f}}case"Equal":if(c.trim()==="=")return o(n,"expression");break;case"ParenthesizedExpression":case"ColumnDefinitionExpression":if(n.pos===0)return o(n,"expression");{let a=j(u,n);if((a==null?void 0:a.name)==="Column"){if(m){let p=[ge(e.current)],g=N(a,r),f=await t.getSuggestions("operator",{columnName:g});return{from:n.pos,options:p.concat(f)}}}else if((a==null?void 0:a.name)==="CallExpression"){if(m)return{from:n.pos,options:[ge(e.current)]}}else if((a==null?void 0:a.name)==="ArithmeticExpression"){if(m){let p=[ge(e.current)],g=j(a,n);if((g==null?void 0:g.name)==="Column"){let f=N(g,r),h=await t.getSuggestions("operator",{columnName:f});p=p.concat(h)}return{from:n.pos,options:p}}}else if((a==null?void 0:a.name)==="ConditionalExpression")return je(a,n,t,m,e.current);break}case"Column":if(await t.isPartialMatch("expression",void 0,i.text))return o(n,"expression",{startsWith:i.text});break;case"Comma":{let a=Jt(u);if((a==null?void 0:a.name)==="ConditionalExpression")return o(n,"expression")}break;case"CloseBrace":{let a=Jt(u);if((a==null?void 0:a.name)==="ConditionalExpression")return je(a,n,t,m,e.current);if((a==null?void 0:a.name)==="ArgList"&&m)return zr(n,e.current)}break;default:((b=u==null?void 0:u.prevSibling)==null?void 0:b.name)==="FilterClause"&&console.log("looks like we ight be a or|and operator")}},[o,e,t])};var He=t=>{if(t.current==null)throw Error("EditorView not defined");return t.current},Xr=()=>"vuuSuggestion",_r=()=>console.log("noooop"),Yr=t=>"expressionType"in t,Jr=t=>{if(Yr(t)){let e=ro("div","expression-type-container"),o=ro("span","expression-type",t.expressionType);return e.appendChild(o),e}else return null},so=({onChange:t,onSubmitExpression:e,source:o,suggestionProvider:n})=>{let r=tt(null),s=tt(_r),i=tt(),l=eo(n,s),[u,c]=Ur(()=>{let m=()=>{let g=He(i),f=g.state.doc.toString(),h=Wr(g.state,g.state.doc.length,5e3);if(h){let v=Wt(h,f);return[f,v]}else return["",void 0]},d=()=>{He(i).setState(p())},b=()=>{let[g,f]=m();e==null||e(g,f)},a=g=>oo.of([{key:g,run(){return no(He(i)),!0}}]),p=()=>Br.create({doc:o,extensions:[Qr,Vr({addToOptions:[{render:Jr,position:70}],override:[l],optionClass:Xr}),$t(),oo.of($r),a("ArrowDown"),to.updateListener.of(g=>{let f=He(i);if(g.docChanged){no(f);let h=f.state.doc.toString();t==null||t(h)}}),Yt,_t]});return s.current=()=>{b()},[p,d]},[l,t,e,o]);return Gr(()=>{if(!r.current)throw Error("editor not in dom");return i.current=new to({state:u(),parent:r.current}),()=>{var m;(m=i.current)==null||m.destroy()}},[l,u]),{editorRef:r,clearInput:c}};import{jsx as qr}from"react/jsx-runtime";var Zr="vuuColumnExpressionInput",io=({onChange:t,onSubmitExpression:e,source:o="",suggestionProvider:n})=>{let{editorRef:r}=so({onChange:t,onSubmitExpression:e,source:o,suggestionProvider:n});return qr("div",{className:`${Zr}`,ref:r})};import{AnnotationType as jr,getRelationalOperators as es,numericOperators as ts,stringOperators as os,toSuggestions as ns}from"@vuu-ui/vuu-codemirror";import{getTypeaheadParams as rs,useTypeaheadSuggestions as ss}from"@vuu-ui/vuu-data-react";import{isNumericColumn as nt,isTextColumn as is}from"@vuu-ui/vuu-utils";import{useCallback as ot,useRef as ls}from"react";var ee=[{accepts:"string",description:"Returns multiple string values as a single joined string. Arguments may be string literal values, string columns or other string expressions. Non string arguments may also be included, these will be converted to strings.",example:{expression:'concatenate("example", "-test")',result:'"example-test"'},name:"concatenate",params:{description:"( string, string, [ string* ] )"},type:"string"},{accepts:["string","string"],description:"Tests a string value to determine whether it contains a given substring. Accepts two arguments: source text and target substring. Returns true if <source text> contains one or more occurrences of <target subscring>",example:{expression:'contains("Royal Bank of Scotland", "bank")',result:"true"},name:"contains",params:{description:"( string )"},type:"boolean"},{accepts:["string","number"],description:"Returns the leftmost <number> characters from <string>. First argument may be a string literal, string column or other string expression.",example:{expression:'left("USD Benchmark Report", 3)',result:'"USD"'},name:"left",params:{count:2,description:"( string, number )"},type:"string"},{accepts:"string",description:"Returns the number of characters in <string>. Argument may be a string literal, string column or other string expression.",example:{expression:'len("example")',result:"7"},name:"len",params:{description:"(string)"},type:"number"},{accepts:"string",description:"Convert a string value to lowercase. Argument may be a string column or other string expression.",example:{expression:'lower("examPLE")',result:'"example"'},name:"lower",params:{description:"( string )"},type:"string"},{accepts:"string",description:"Convert a string value to uppercase. Argument may be a string column or other string expression.",example:{expression:'upper("example")',result:'"EXAMPLE"'},name:"upper",params:{description:"( string )"},type:"string"},{accepts:["string","number"],description:"Returns the rightmost <number> characters from <string>. First argument may be a string literal, string column or other string expression.",example:{expression:"blah",result:"blah"},name:"right",params:{description:"( string )"},type:"string"},{accepts:["string","string","string"],description:"Replace characters within a string. Accepts three arguments: source text, text to replace and replacement text. Returns a copy of <source text> with any occurrences of <text to replace> replaced by <replacement text>",example:{expression:"blah",result:"blah"},name:"replace",params:{description:"( string )"},type:"string"},{accepts:"number",description:"Converts a number to a string.",example:{expression:"blah",result:"blah"},name:"text",params:{description:"( string )"},type:"string"},{accepts:"string",description:"Tests a string value to determine whether it starts with a given substring. Accepts two arguments: source text and target substring. Returns true if <source text> starts with <target subscring>.",example:{expression:"blah",result:"blah"},name:"starts",params:{description:"( string )"},type:"boolean"},{accepts:"string",description:"Tests a string value to determine whether it ends with a given substring. Accepts two arguments: source text and target substring. Returns true if <source text> ends with <target subscring>.",example:{expression:"blah",result:"blah"},name:"ends",params:{description:"( string )"},type:"boolean"},{accepts:"number",description:"blah",example:{expression:"blah",result:"blah"},name:"min",params:{description:"( string )"},type:"number"},{accepts:"number",description:"blah",example:{expression:"blah",result:"blah"},name:"max",params:{description:"( string )"},type:"number"},{accepts:"number",description:"blah",example:{expression:"blah",result:"blah"},name:"sum",params:{description:"( string )"},type:"number"},{accepts:"number",description:"blah",example:{expression:"blah",result:"blah"},name:"round",params:{description:"( string )"},type:"number"},{accepts:"any",description:"blah",example:{expression:"blah",result:"blah"},name:"or",params:{description:"( string )"},type:"boolean"},{accepts:"any",description:"blah",example:{expression:"blah",result:"blah"},name:"and",params:{description:"( string )"},type:"boolean"},{accepts:"any",description:"Return one of two possible result values, depending on the evaluation of a filter expression. If <filterExpression> resolves to true, result is <expression1>, otherwise <expression2>. ",example:{expression:"blah",result:"blah"},name:"if",params:{description:"( filterExpression, expression1, expression 2)"},type:"variable"}];import{createEl as k}from"@vuu-ui/vuu-utils";var lo=({name:t,description:e,example:o,params:n,type:r})=>{let s=k("div","vuuFunctionDoc"),i=k("div","function-heading"),l=k("span","function-name",t),u=k("span","param-list",n.description),c=k("span","function-type",r);i.appendChild(l),i.appendChild(u),i.appendChild(c);let m=k("p",void 0,e);if(s.appendChild(i),s.appendChild(m),o){let d=k("div","example-container","Example:"),b=k("div","example-expression",o.expression),a=k("div","example-result",o.result);d.appendChild(b),d.appendChild(a),s.appendChild(d)}return s};var as=[],W=t=>t.map(e=>{var o;return{...e,apply:((o=e.apply)!=null?o:e.label)+" "}}),us=(t,{functionName:e,operator:o})=>{if(o)return t.filter(nt);if(e){let n=ee.find(r=>r.name===e);if(n)switch(n.accepts){case"string":return t.filter(is);case"number":return t.filter(nt);default:return t}}return t},ao=(t,e)=>us(t,e).map(n=>{var s;let r=(s=n.label)!=null?s:n.name;return{apply:e.prefix?`${e.prefix}${r}`:r,label:r,boost:5,type:"column",expressionType:n.serverDataType}}),cs=[{apply:"* ",boost:2,label:"*",type:"operator"},{apply:"/ ",boost:2,label:"/",type:"operator"},{apply:"+ ",boost:2,label:"+",type:"operator"},{apply:"- ",boost:2,label:"-",type:"operator"}],ms=t=>t===void 0||nt(t)?cs:as,ps=t=>{switch(t.serverDataType){case"string":case"char":return W(os);case"int":case"long":case"double":return W(ts)}},rt=t=>({apply:`${t.name}( `,boost:2,expressionType:t.type,info:()=>lo(t),label:t.name,type:"function"}),ds=t=>{if(t){if(typeof t.accepts=="string")return t.accepts;if(Array.isArray(t.accepts))return t.accepts.every(e=>e==="string")?"string":"any"}return"any"},fs=ee.map(rt),gs=({functionName:t})=>{if(t){let e=ee.find(n=>n.name===t),o=ds(e);if(e)switch(o){case"string":return ee.filter(n=>n.type==="string"||n.type==="variable").map(rt);case"number":return ee.filter(n=>n.type==="number"||n.type==="variable").map(rt);default:}}return fs},Cs={},uo=({columns:t,table:e})=>{let o=ot(l=>l?t.find(u=>u.name===l):void 0,[t]),n=ls(),r=ss(),s=ot(async(l,u=Cs)=>{let{columnName:c,functionName:m,operator:d,prefix:b}=u;switch(l){case"expression":{let a=await W(ao(t,{functionName:m,prefix:b})).concat(gs(u));return n.current=a}case"column":{let a=await ao(t,u);return n.current=W(a)}case"operator":{let a=await ms(o(c));return n.current=W(a)}case"relational-operator":{let a=await es(o(c));return n.current=W(a)}case"condition-operator":{let a=o(c);if(a){let p=await ps(a);if(p)return n.current=W(p)}}break;case"columnValue":if(c&&d){let a=rs(e,c),p=await r(a);return n.current=ns(p,{suffix:""}),n.current.forEach(g=>{g.apply=(f,h,v)=>{let T=new jr,y=v+h.label.length+1;f.dispatch({changes:{from:v,insert:h.label},selection:{anchor:y,head:y},annotations:T.of(h)})}}),n.current}break}return[]},[t,o,r,e]),i=ot(async(l,u,c)=>{let{current:m}=n,d=!1,b=m||await s(l,{columnName:u});if(c&&b)for(let a of b){if(a.label===c)return!1;a.label.startsWith(c)&&(d=!0)}return d},[s]);return{getSuggestions:s,isPartialMatch:i}};import{getCalculatedColumnDetails as co,setCalculatedColumnExpression as bs,setCalculatedColumnName as hs,setCalculatedColumnType as xs}from"@vuu-ui/vuu-utils";import{useCallback as Oe,useRef as ys,useState as vs}from"react";var Ts=t=>{let[e,o,n]=co(t);return n===""?{...t,name:`${e}:${o}:string`}:t},mo=({column:t,onSave:e})=>{let[o,n]=vs(Ts(t)),r=ys(co(o)[1]),s=Oe(c=>{let{value:m}=c.target;n(d=>hs(d,m))},[]),i=Oe(c=>{r.current=c.trim()},[]),l=Oe((c,m)=>{typeof m=="string"&&n(d=>xs(d,m))},[]),u=Oe(()=>{let c=bs(o,r.current);n(c),e(c)},[o,e]);return{column:o,onChangeExpression:i,onChangeName:s,onChangeType:l,onSave:u}};import{jsx as M,jsxs as be}from"react/jsx-runtime";var Ce="vuuColumnExpressionPanel",po=({column:t,onSave:e,tableConfig:o,vuuTable:n})=>{let r=Ms(null),{column:s,onChangeExpression:i,onChangeName:l,onChangeType:u,onSave:c}=mo({column:t,onSave:e}),m=uo({columns:o.columns,table:n}),d=Ps(()=>{requestAnimationFrame(()=>{var b,a;(a=(b=r.current)==null?void 0:b.querySelector("button"))==null||a.focus()})},[]);return be("div",{className:Ce,children:[M("div",{className:"vuuColumnSettingsPanel-header",children:M("span",{children:"Calculation"})}),be(it,{"data-field":"column-name",children:[M(lt,{children:"Column Name"}),M(Ss,{className:"vuuInput",onChange:l,value:Ds(s)})]}),be(it,{"data-field":"column-expression",children:[M(lt,{children:"Expression"}),M(io,{onChange:i,onSubmitExpression:d,source:ws(s),suggestionProvider:m})]}),be(it,{"data-field":"type",children:[M(lt,{children:"Column type"}),M(Es,{className:`${Ce}-type`,onSelectionChange:u,ref:r,selected:Rs(s)||null,source:["double","long","string"],width:"100%"})]}),be("div",{className:"vuuColumnSettingsPanel-buttonBar","data-align":"right",children:[M(st,{className:`${Ce}-buttonCancel`,tabIndex:-1,children:"cancel"}),M(st,{className:`${Ce}-buttonApply`,tabIndex:-1,children:"apply"}),M(st,{className:`${Ce}-buttonSave`,onClick:c,variant:"cta",children:"save"})]})]})};import{VuuInput as Co}from"@vuu-ui/vuu-ui-controls";import{jsx as E,jsxs as K}from"react/jsx-runtime";var he="vuuColumnSettingsPanel",Cm=({column:t,onConfigChange:e,onCreateCalculatedColumn:o,tableConfig:n,vuuTable:r})=>{let s=t.name==="::",{availableRenderers:i,selectedCellRenderer:l,column:u,navigateNextColumn:c,navigatePrevColumn:m,onChange:d,onChangeFormatting:b,onChangeRenderer:a,onInputCommit:p,onSave:g}=Vt({column:t,onConfigChange:e,onCreateCalculatedColumn:o,tableConfig:n}),{serverDataType:f,align:h=Hs(f),name:v,label:T=v,pin:y,width:R}=u;return K("div",{className:he,children:[E("div",{className:`${he}-header`,children:E("span",{children:v})}),K(Ae,{"data-field":"column-label",children:[E(Le,{children:"Column Label"}),E(Co,{className:"vuuInput",onChange:d,onCommit:p,value:T})]}),K(Ae,{"data-field":"column-width",children:[E(Le,{children:"Column Width"}),E(Co,{className:"vuuInput",onChange:d,value:R,onCommit:p})]}),K(Ae,{"data-field":"column-alignment",children:[E(Le,{children:"Alignment"}),K(go,{className:"vuuToggleButtonGroup",onChange:d,value:h,children:[E(te,{"data-icon":"align-left",className:"vuuIconToggleButton",value:"left"}),E(te,{"data-icon":"align-right",className:"vuuIconToggleButton",value:"right"})]})]}),K(Ae,{"data-field":"column-pin",children:[E(Le,{children:"Pin Column"}),K(go,{className:"vuuToggleButtonGroup",onChange:d,value:y!=null?y:"",children:[E(te,{className:"vuuIconToggleButton","data-icon":"cross-circle",value:""}),E(te,{className:"vuuIconToggleButton","data-icon":"pin-left",value:"left"}),E(te,{className:"vuuIconToggleButton","data-icon":"pin-float",value:"floating"}),E(te,{className:"vuuIconToggleButton","data-icon":"pin-right",value:"right"})]})]}),E(Ft,{availableRenderers:i,selectedCellRenderer:l,column:u,onChangeFormatting:b,onChangeRenderer:a}),Os(u.name)?E(po,{column:u,onSave:g,tableConfig:n,vuuTable:r}):K("div",{className:`${he}-buttonBar`,"data-align":s?"right":void 0,children:[E(fo,{className:`${he}-buttonNavPrev`,variant:"secondary","data-icon":"arrow-left",onClick:m,children:"PREVIOUS"}),E(fo,{className:`${he}-buttonNavNext`,variant:"secondary","data-icon":"arrow-right",onClick:c,children:"NEXT"})]})]})};import{useEffect as As,useState as bo}from"react";import Ls from"classnames";import{jsx as oe,jsxs as Ns}from"react/jsx-runtime";var xe="vuuDatasourceStats",at=new Intl.NumberFormat,Sm=({className:t,dataSource:e})=>{let[o,n]=bo(e.range),[r,s]=bo(e.size);As(()=>{s(e.size),e.on("resize",s),e.on("range",n)},[e]);let i=Ls(xe,t),l=at.format(o.from),u=at.format(o.to-1),c=at.format(r);return Ns("div",{className:i,children:[oe("span",{className:`${xe}-label`,children:"Row count"}),oe("span",{className:`${xe}-range`,children:l}),oe("span",{children:"-"}),oe("span",{className:`${xe}-range`,children:u}),oe("span",{children:"of"}),oe("span",{className:`${xe}-size`,children:c})]})};import{Button as Vl,FormField as bt,FormFieldLabel as ht,Input as $l,ToggleButton as re,ToggleButtonGroup as Bl}from"@salt-ds/core";import{useLayoutEffectSkipFirst as Ol}from"@vuu-ui/vuu-layout";import{useCallback as km,useRef as Fm}from"react";import{jsx as zm}from"react/jsx-runtime";import{isNumericColumn as Bm}from"@vuu-ui/vuu-utils";import{removeColumnFromFilter as Gm}from"@vuu-ui/vuu-utils";import{addGroupColumn as Xm,addSortColumn as _m,AggregationType as ks,setAggregations as Ym,setSortColumn as Jm}from"@vuu-ui/vuu-utils";var{Average:Zm,Count:qm,Distinct:jm,High:ep,Low:tp,Sum:op}=ks;import{ContextMenuProvider as bb}from"@vuu-ui/vuu-popups";import{Button as xb,useIdMemo as yb}from"@salt-ds/core";import{buildColumnMap as jd,getColumnStyle as ef,isGroupColumn as tf,metadataKeys as pi,notHidden as of,visibleColumnAtIndex as nf}from"@vuu-ui/vuu-utils";import{useCallback as lf,useMemo as af}from"react";import{isGroupColumn as vo,isJsonColumn as Js,isJsonGroup as Zs,metadataKeys as qs,notHidden as js,RowSelected as ei}from"@vuu-ui/vuu-utils";import ti from"classnames";import{memo as oi,useCallback as To}from"react";import{getColumnStyle as Fs,metadataKeys as Is}from"@vuu-ui/vuu-utils";import{EditableLabel as Ks}from"@vuu-ui/vuu-ui-controls";import zs from"classnames";import{memo as Vs,useCallback as $s,useRef as Bs,useState as ho}from"react";import{jsx as Ne}from"react/jsx-runtime";var{KEY:xo}=Is,ut=Vs(({className:t,column:e,columnMap:o,onClick:n,row:r})=>{let s=Bs(null),{align:i,CellRenderer:l,key:u,pin:c,editable:m,resizing:d,valueFormatter:b}=e,[a,p]=ho(!1),g=b(r[u]),[f,h]=ho(g),v=()=>{var O;(O=s.current)==null||O.focus()},T=O=>{O.key==="Enter"&&p(!0)},y=$s(O=>{n==null||n(O,e)},[e,n]),R=()=>{p(!0)},se=(O="",vt="",Wo=!0,Qo=!1)=>{var Tt;p(!1),Qo?h(O):vt!==O&&h(vt),Wo===!1&&((Tt=s.current)==null||Tt.focus())},Ke=zs(t,{vuuAlignRight:i==="right",vuuPinFloating:c==="floating",vuuPinLeft:c==="left",vuuPinRight:c==="right","vuuTableCell-resizing":d})||void 0,yt=Fs(e);return m?Ne("div",{className:Ke,"data-editable":!0,role:"cell",style:yt,onKeyDown:T,children:Ne(Ks,{editing:a,value:f,onChange:h,onMouseDownCapture:v,onEnterEditMode:R,onExitEditMode:se,onKeyDown:T,ref:s,tabIndex:0},"title")}):Ne("div",{className:Ke,role:"cell",style:yt,onClick:y,children:l?Ne(l,{column:e,columnMap:o,row:r}):g})},Ws);ut.displayName="TableCell";function Ws(t,e){return t.column===e.column&&t.onClick===e.onClick&&t.row[xo]===e.row[xo]&&t.row[t.column.key]===e.row[e.column.key]}import{getColumnStyle as Qs,getGroupValueAndOffset as Gs,metadataKeys as Us}from"@vuu-ui/vuu-utils";import{useCallback as Xs}from"react";import{jsx as ct,jsxs as Ys}from"react/jsx-runtime";var{IS_LEAF:_s}=Us,yo=({column:t,onClick:e,row:o})=>{let{columns:n}=t,[r,s]=Gs(n,o),i=Xs(m=>{e==null||e(m,t)},[t,e]),l=Qs(t),u=o[_s],c=Array(s).fill(0).map((m,d)=>ct("span",{className:"vuuTableGroupCell-spacer"},d));return Ys("div",{className:"vuuTableGroupCell vuuPinLeft",onClick:u?void 0:i,role:"cell",style:l,children:[c,u?null:ct("span",{className:"vuuTableGroupCell-toggle","data-icon":"triangle-right"}),ct("span",{children:r})]})};import{jsx as wo,jsxs as ui}from"react/jsx-runtime";var{IDX:ni,IS_EXPANDED:ri,SELECTED:si}=qs,{True:Eo,First:ii,Last:li}=ei,ne="vuuTableRow",ai=oi(function({columnMap:e,columns:o,offset:n,onClick:r,onToggleGroup:s,virtualColSpan:i=0,row:l}){let{[ni]:u,[ri]:c,[si]:m}=l,d=ti(ne,{[`${ne}-even`]:u%2===0,[`${ne}-expanded`]:c,[`${ne}-selected`]:m&Eo,[`${ne}-selectedStart`]:m&ii,[`${ne}-selectedEnd`]:m&li}),b=To(p=>{let g=p.shiftKey,f=p.ctrlKey||p.metaKey;r==null||r(l,g,f)},[r,l]),a=To((p,g)=>{(vo(g)||Zs(g,l))&&(p.stopPropagation(),s==null||s(l,g))},[s,l]);return ui("div",{"aria-selected":m&Eo?!0:void 0,"aria-rowindex":u,className:d,onClick:b,role:"row",style:{transform:`translate3d(0px, ${n}px, 0px)`},children:[i>0?wo("div",{role:"cell",style:{width:i}}):null,o.filter(js).map(p=>{let g=vo(p),f=Js(p);return wo(g?yo:ut,{column:p,columnMap:e,onClick:g||f?a:void 0,row:l},p.name)})]})});import Xp from"classnames";import{useRef as Jp}from"react";import{useCallback as $p,useRef as Bp}from"react";import{jsx as td,jsxs as od}from"react/jsx-runtime";import Od from"classnames";import{useCallback as kd,useRef as Fd}from"react";import ld from"classnames";import{jsx as cd,jsxs as md}from"react/jsx-runtime";import{useContextMenu as Bd}from"@vuu-ui/vuu-popups";import{useContextMenu as hd}from"@vuu-ui/vuu-popups";import yd from"classnames";import{useCallback as Ed}from"react";import{jsx as Rd}from"react/jsx-runtime";import{jsx as Gd,jsxs as Ud}from"react/jsx-runtime";import{jsx as gf,jsxs as Cf}from"react/jsx-runtime";var{RENDER_IDX:df}=pi;import{useContextMenu as kC}from"@vuu-ui/vuu-popups";import{applySort as IC,buildColumnMap as KC,isJsonGroup as zC,metadataKeys as Si,moveItemDeprecated as VC}from"@vuu-ui/vuu-utils";import{useCallback as WC,useEffect as QC,useMemo as GC,useRef as UC,useState as XC}from"react";import{isVuuFeatureAction as xf,isVuuFeatureInvocation as yf}from"@vuu-ui/vuu-data-react";import{getFullRange as Tf,metadataKeys as di,WindowRange as Ef}from"@vuu-ui/vuu-utils";import{useCallback as Df,useEffect as Rf,useMemo as Sf,useRef as Pf,useState as Mf}from"react";var{SELECTED:Hf}=di;import{useDragDropNext as Lf}from"@vuu-ui/vuu-ui-controls";import{useCallback as Ff,useRef as If}from"react";import{withinRange as Qf}from"@vuu-ui/vuu-utils";import{useCallback as Yf,useEffect as Jf,useLayoutEffect as Zf,useMemo as qf,useRef as jf}from"react";function fi(t,...e){let o=new Set(t);for(let n of e)for(let r of n)o.add(r);return o}var Do="ArrowUp",Ro="ArrowDown",So="ArrowLeft",Po="ArrowRight";var Mo="Home",Ho="End",Oo="PageUp",Ao="PageDown";var gi=new Set(["Enter","Delete"," "]),Ci=new Set(["Tab"]),bi=new Set(["ArrowRight","ArrowLeft"]),hi=new Set([Mo,Ho,Oo,Ao,Ro,So,Po,Do]),xi=new Set(["F1","F2","F3","F4","F5","F6","F7","F8","F9","F10","F11","F12"]),zf=fi(gi,hi,bi,xi,Ci);import{isValidNumber as dg}from"@vuu-ui/vuu-utils";import{useCallback as Cg,useMemo as bg,useRef as hg,useState as xg}from"react";import{useCallback as ig,useEffect as lg,useRef as ag}from"react";var yi=new Map,vi=(t,e,o)=>{switch(o){case"height":return e.height;case"clientHeight":return t.clientHeight;case"clientWidth":return t.clientWidth;case"contentHeight":return e.contentHeight;case"contentWidth":return e.contentWidth;case"scrollHeight":return Math.ceil(t.scrollHeight);case"scrollWidth":return Math.ceil(t.scrollWidth);case"width":return e.width;default:return 0}},ug=new ResizeObserver(t=>{for(let e of t){let{target:o,borderBoxSize:n,contentBoxSize:r}=e,s=yi.get(o);if(s){let[{blockSize:i,inlineSize:l}]=n,[{blockSize:u,inlineSize:c}]=r,{onResize:m,measurements:d}=s,b=!1;for(let[a,p]of Object.entries(d)){let g=vi(o,{height:i,width:l,contentHeight:u,contentWidth:c},a);g!==p&&(b=!0,d[a]=g)}b&&m&&m(d)}}});import{deselectItem as wg,isRowSelected as Dg,metadataKeys as Ti,selectItem as Rg}from"@vuu-ui/vuu-utils";import{useCallback as Pg,useRef as Mg}from"react";var{IDX:Hg}=Ti;import{applyFilterToColumns as Lg,applyGroupByToColumns as Ng,applySortToColumns as kg,findColumn as Fg,getCellRenderer as Ig,getColumnName as Kg,getTableHeadings as zg,getValueFormatter as Vg,isFilteredColumn as $g,isGroupColumn as Bg,isPinned as Wg,isTypeDescriptor as Qg,metadataKeys as Ei,updateColumn as Gg,sortPinnedColumns as Ug,stripFilterFromColumns as Xg,moveItemDeprecated as _g,getDefaultAlignment as Yg}from"@vuu-ui/vuu-utils";import{useReducer as qg}from"react";var jg=Ei.count;import{useCallback as oC,useRef as nC}from"react";import{useCallback as iC,useMemo as lC,useRef as aC}from"react";import{actualRowPositioning as cC,virtualRowPositioning as fC}from"@vuu-ui/vuu-utils";import{getColumnsInViewport as bC,itemsChanged as hC}from"@vuu-ui/vuu-utils";import{useCallback as vC,useEffect as TC,useMemo as EC,useRef as wC,useState as DC}from"react";var{KEY:ib,IS_EXPANDED:lb,IS_LEAF:ab}=Si;import Db from"classnames";import{isDataLoading as Mb}from"@vuu-ui/vuu-utils";import{jsx as Ob,jsxs as Ab}from"react/jsx-runtime";import Mi from"classnames";import{isJsonAttribute as Hi,metadataKeys as Oi,registerComponent as Ai}from"@vuu-ui/vuu-utils";import{jsx as mt,jsxs as Ii}from"react/jsx-runtime";var ye="vuuJsonCell",{IS_EXPANDED:Li,KEY:Ni}=Oi,ki=t=>{let e=t.lastIndexOf("|");return e===-1?"":t.slice(e+1)},Fi=({column:t,row:e})=>{let{key:o}=t,n=e[o],r=!1;Hi(n)&&(n=n.slice(0,-1),r=!0);let s=ki(e[Ni]),i=Mi({[`${ye}-name`]:s===n,[`${ye}-value`]:s!==n,[`${ye}-group`]:r});if(r){let l=e[Li]?"minus-box":"plus-box";return Ii("span",{className:i,children:[mt("span",{className:`${ye}-value`,children:n}),mt("span",{className:`${ye}-toggle`,"data-icon":l})]})}else return n?mt("span",{className:i,children:n}):null};Ai("json",Fi,"cell-renderer",{description:"JSON formatter",label:"JSON formatter",serverDataType:"json"});import rx from"classnames";import{useRef as ix}from"react";import{useCallback as oh,useRef as nh}from"react";import{jsx as ih}from"react/jsx-runtime";import{useCallback as ch,useRef as mh,useState as ph}from"react";import{getColumnStyle as Ki}from"@vuu-ui/vuu-utils";import zi from"classnames";import{useMemo as Vi}from"react";var Q=(t,e,o)=>Vi(()=>{let n=zi(e,{vuuPinFloating:t.pin==="floating",vuuPinLeft:t.pin==="left",vuuPinRight:t.pin==="right",vuuEndPin:o&&t.endPin,[`${e}-editable`]:t.editable,[`${e}-right`]:t.align==="right"}),r=Ki(t);return{className:n,style:r}},[t,e,o]);import wh from"classnames";import{useCallback as Ph}from"react";import{jsx as Oh,jsxs as Ah}from"react/jsx-runtime";import{jsx as Vh,jsxs as $h}from"react/jsx-runtime";import{jsx as _h,jsxs as Yh}from"react/jsx-runtime";import{jsx as dx,jsxs as fx}from"react/jsx-runtime";import{createElement as px}from"react";import hx from"classnames";import{useCallback as yx,useRef as vx,useState as Tx}from"react";import{OverflowContainer as Sx,useLayoutEffectSkipFirst as Px}from"@vuu-ui/vuu-layout";import{jsx as Ax,jsxs as Lx}from"react/jsx-runtime";import{createElement as Ox}from"react";import{useCallback as ly,useRef as ay}from"react";import{useContextMenu as zx}from"@vuu-ui/vuu-popups";import $x from"classnames";import{useCallback as Gx,useRef as Ux,useState as Xx}from"react";import{jsx as Jx}from"react/jsx-runtime";import dy from"classnames";import{jsx as hy,jsxs as xy}from"react/jsx-runtime";import{ContextMenuProvider as $E}from"@vuu-ui/vuu-popups";import{isGroupColumn as WE,metadataKeys as fl,notHidden as QE}from"@vuu-ui/vuu-utils";import UE from"classnames";import{useRef as JE}from"react";import{isGroupColumn as Ko,isJsonColumn as qi,isJsonGroup as ji,metadataKeys as el,notHidden as tl,RowSelected as ol}from"@vuu-ui/vuu-utils";import nl from"classnames";import{memo as rl,useCallback as zo}from"react";import{metadataKeys as Bi}from"@vuu-ui/vuu-utils";import{useCallback as Wi}from"react";import{jsx as ko}from"react/jsx-runtime";var{IDX:Qi}=Bi,Gi="vuuTableNextCell",Fo=({column:t,columnMap:e,onDataEdited:o,row:n})=>{let{className:r,style:s}=Q(t,Gi),{CellRenderer:i,name:l,valueFormatter:u}=t,c=e[l],m=Wi(d=>(o==null||o(n[Qi],l,d),!0),[l,o,n]);return ko("div",{className:r,role:"cell",style:s,children:i?ko(i,{column:t,columnMap:e,onCommit:m,row:n}):u(n[c])})};import{getGroupValueAndOffset as Ui,metadataKeys as Xi}from"@vuu-ui/vuu-utils";import{useCallback as _i}from"react";import Yi from"classnames";import{jsx as ft,jsxs as Zi}from"react/jsx-runtime";var{IS_LEAF:Ji}=Xi,dt="vuuTableNextGroupCell",Io=({column:t,onClick:e,row:o})=>{let{columns:n}=t,[r,s]=Ui(n,o),{className:i,style:l}=Q(t,dt),u=_i(d=>{e==null||e(d,t)},[t,e]),c=o[Ji],m=Array(s).fill(0).map((d,b)=>ft("span",{className:`${dt}-spacer`},b));return Zi("div",{className:Yi(i,"vuuTableNextCell"),role:"cell",style:l,onClick:c?void 0:u,children:[m,c?null:ft("span",{className:`${dt}-toggle`,"data-icon":"triangle-right"}),ft("span",{children:r})]})};import{jsx as gt}from"react/jsx-runtime";import{createElement as al}from"react";var{IDX:sl,IS_EXPANDED:il,SELECTED:ll}=el,z="vuuTableNextRow",Vo=rl(({className:t,columnMap:e,columns:o,row:n,offset:r,onClick:s,onDataEdited:i,onToggleGroup:l,zebraStripes:u=!1,...c})=>{let{[sl]:m,[il]:d,[ll]:b}=n,a=zo(y=>{let R=y.shiftKey,se=y.ctrlKey||y.metaKey;s==null||s(n,R,se)},[s,n]),{True:p,First:g,Last:f}=ol,h=nl(z,t,{[`${z}-even`]:u&&m%2===0,[`${z}-expanded`]:d,[`${z}-selected`]:b&p,[`${z}-selectedStart`]:b&g,[`${z}-selectedEnd`]:b&f}),v={transform:`translate3d(0px, ${r}px, 0px)`},T=zo((y,R)=>{(Ko(R)||ji(R,n))&&(y.stopPropagation(),l==null||l(n,R))},[l,n]);return al("div",{...c,"aria-rowindex":n[0],key:`row-${n[0]}`,role:"row",className:h,onClick:a,style:v},gt("span",{className:`${z}-selectionDecorator vuuStickyLeft`}),o.filter(tl).map(y=>{let R=Ko(y),se=qi(y);return gt(R?Io:Fo,{column:y,columnMap:e,onClick:R||se?T:void 0,onDataEdited:i,row:n},y.key)}),gt("span",{className:`${z}-selectionDecorator vuuStickyRight`}))});Vo.displayName="Row";import{useLayoutEffectSkipFirst as ZT}from"@vuu-ui/vuu-layout";import{useDragDropNext as eE}from"@vuu-ui/vuu-ui-controls";import{useCallback as dv,useEffect as fv,useMemo as gv,useRef as Cv}from"react";import{applySort as nE,buildColumnMap as rE,isGroupColumn as sE,isJsonGroup as iE,isValidNumber as lE,metadataKeys as pl,updateColumn as aE,visibleColumnAtIndex as uE}from"@vuu-ui/vuu-utils";import{useCallback as fE,useEffect as gE,useMemo as CE,useState as bE}from"react";var ke=(t,e)=>{switch(e.type){case"col-size":return{...t,columns:t.columns.map(o=>o.name===e.column.name?{...o,width:e.width}:o)};case"column-prop":return{...t,columns:t.columns.map(o=>o.name===e.column.name?{...o,[e.property]:e.value}:o)};default:return t}};import{isVuuFeatureAction as Sv,isVuuFeatureInvocation as Pv}from"@vuu-ui/vuu-data-react/src";import{getFullRange as Hv,NULL_RANGE as Ov}from"@vuu-ui/vuu-utils";import{useCallback as Lv,useEffect as Nv,useMemo as kv,useRef as Fv,useState as Iv}from"react";import{metadataKeys as ul,WindowRange as Tv}from"@vuu-ui/vuu-utils";var{SELECTED:Ev}=ul;import{useMemo as $v,useRef as Bv}from"react";import{buildColumnMap as Gv}from"@vuu-ui/vuu-utils";import{useCallback as _v}from"react";import{useContextMenu as Jv}from"@vuu-ui/vuu-popups";import{isCharacterKey as eT}from"@vuu-ui/vuu-utils";import{useCallback as nT}from"react";import{applyFilterToColumns as lT,applyGroupByToColumns as aT,applySortToColumns as uT,getCellRenderer as cT,getTableHeadings as mT,getValueFormatter as pT,hasValidationRules as dT,isFilteredColumn as fT,isGroupColumn as gT,isPinned as CT,isTypeDescriptor as bT,logger as cl,metadataKeys as ml,moveItem as hT,sortPinnedColumns as xT,stripFilterFromColumns as yT,subscribedOnly as vT}from"@vuu-ui/vuu-utils";import{buildValidationChecker as ET}from"@vuu-ui/vuu-ui-controls";import{useReducer as RT}from"react";var{info:ST}=cl("useTableModel");var PT=ml.count;import{useCallback as OT,useRef as AT}from"react";import{useCallback as kT,useEffect as FT,useRef as IT}from"react";var{KEY:AE,IS_EXPANDED:LE,IS_LEAF:NE}=pl;import{MeasuredContainer as tw,useId as ow}from"@vuu-ui/vuu-layout";import{jsx as lw,jsxs as uw}from"react/jsx-runtime";import{createElement as aw}from"react";var{IDX:rw,RENDER_IDX:sw}=fl;import{Dropdown as gl}from"@vuu-ui/vuu-ui-controls";import{isColumnTypeRenderer as Cl,isTypeDescriptor as bl,registerComponent as hl}from"@vuu-ui/vuu-utils";import{useCallback as xl,useState as yl}from"react";import{jsx as wl}from"react/jsx-runtime";var vl="vuuTableDropdownCell",Tl=["Enter"," "],El=({column:t,columnMap:e,row:o})=>{var u,c,m;let n=bl(t.type)&&Cl((u=t.type)==null?void 0:u.renderer)?(m=(c=t.type)==null?void 0:c.renderer)==null?void 0:m.values:[],r=e[t.name],[s,i]=yl(o[r]),l=xl((d,b)=>{b&&i(b)},[]);return wl(gl,{className:vl,onSelectionChange:l,openKeys:Tl,selected:s,source:n,width:t.width-17})};hl("dropdown-cell",El,"cell-renderer",{});import{registerComponent as Dl}from"@vuu-ui/vuu-utils";import{Input as Rl}from"@salt-ds/core";import{useEditableText as Sl}from"@vuu-ui/vuu-ui-controls";import Pl from"classnames";import{jsx as Ct}from"react/jsx-runtime";var Fe="vuuTableInputCell",Ml=()=>(console.warn("onCommit handler has not been provided to InputCell cell renderer"),!0),Hl=({column:t,columnMap:e,onCommit:o=Ml,row:n})=>{let r=e[t.name],{align:s="left",clientSideEditValidationCheck:i,valueFormatter:l}=t,{warningMessage:u,...c}=Sl({initialValue:l(n[r]),onCommit:o,clientSideEditValidationCheck:i}),m=u&&s==="left"?Ct("span",{className:`${Fe}-icon`,"data-icon":"error"}):void 0,d=u&&s==="right"?Ct("span",{className:`${Fe}-icon`,"data-icon":"error"}):void 0;return Ct(Rl,{...c,className:Pl(Fe,{[`${Fe}-error`]:u!==void 0}),endAdornment:m,startAdornment:d})};Dl("input-cell",Hl,"cell-renderer",{});import{addColumnToSubscribedColumns as Al,isCalculatedColumn as Ll,moveItem as Nl,subscribedOnly as kl}from"@vuu-ui/vuu-utils";import{useCallback as Ie,useMemo as Fl,useState as Il}from"react";var Kl=(t,e)=>{let o=[];for(let{name:n}of t){let r=e.find(s=>s.name===n);r&&o.push(r)}return o},zl=(t,e)=>t.map(({name:o,serverDataType:n})=>{let r=e.find(s=>s.name===o);return{hidden:r==null?void 0:r.hidden,isCalculated:Ll(o),label:r==null?void 0:r.label,name:o,serverDataType:n,subscribed:r!==void 0}}),Bo=({availableColumns:t,onConfigChange:e,onDataSourceConfigChange:o,tableConfig:n})=>{let[{availableColumns:r,tableConfig:s},i]=Il({availableColumns:t,tableConfig:n}),l=Fl(()=>zl(r,s.columns),[r,s.columns]),u=Ie((a,p)=>{i(g=>{let f=Nl(g.availableColumns,a,p),h=Kl(f,s.columns);return{availableColumns:f,tableConfig:{...g.tableConfig,columns:h}}})},[s.columns]),c=Ie((a,p,g)=>{let f=l.find(h=>h.name===a);if(p==="subscribed")if(f!=null&&f.subscribed){let h=s.columns.filter(v=>v.name!==a).map(v=>v.name);i(v=>({...v,tableConfig:{...s,columns:s.columns.filter(kl(h))}})),o({columns:h})}else{let h={...s,columns:Al(s.columns,r,a)};i(T=>({...T,tableConfig:h}));let v=h.columns.map(T=>T.name);o({columns:v})}else if(f!=null&&f.subscribed){let h=s.columns.find(v=>v.name===a);if(h){let v=ke(s,{type:"column-prop",property:p,column:h,value:g});i(T=>({...T,tableConfig:v}))}}},[r,l,o,s]),m=Ie(a=>{let{value:p}=a.target,g=p==="0"?void 0:p==="1"?"capitalize":"uppercase";i(f=>({...f,tableConfig:{...f.tableConfig,columnFormatHeader:g}}))},[]),d=Ie(a=>{let{ariaChecked:p,value:g}=a.target;i(f=>({...f,tableConfig:{...f.tableConfig,[g]:p!=="true"}}))},[]);Ol(()=>{e==null||e(s)},[e,s]);let b=s.columnFormatHeader===void 0?0:s.columnFormatHeader==="capitalize"?1:2;return{columnItems:l,columnLabelsValue:b,onChangeColumnLabels:m,onChangeTableAttribute:d,onColumnChange:c,onMoveListItem:u,tableConfig:s}};import{jsx as D,jsxs as G}from"react/jsx-runtime";var xt="vuuTableSettingsPanel",lD=({availableColumns:t,onAddCalculatedColumn:e,onConfigChange:o,onDataSourceConfigChange:n,tableConfig:r,...s})=>{let{columnItems:i,columnLabelsValue:l,onChangeColumnLabels:u,onChangeTableAttribute:c,onColumnChange:m,onMoveListItem:d,tableConfig:b}=Bo({availableColumns:t,onConfigChange:o,onDataSourceConfigChange:n,tableConfig:r});return G("div",{...s,className:xt,children:[G(bt,{children:[D(ht,{children:"Column Labels"}),G(Bl,{className:"vuuToggleButtonGroup",onChange:u,value:l,children:[D(re,{className:"vuuIconToggleButton","data-icon":"text-strikethrough",value:0}),D(re,{className:"vuuIconToggleButton","data-icon":"text-Tt",value:1}),D(re,{className:"vuuIconToggleButton","data-icon":"text-T",value:2})]})]}),G(bt,{children:[D(ht,{children:"Grid separators"}),G("div",{className:"saltToggleButtonGroup vuuToggleButtonGroup saltToggleButtonGroup-horizontal vuuGridSeparators",children:[D(re,{className:"vuuIconToggleButton","data-icon":"row-striping",selected:b.zebraStripes,onChange:c,value:"zebraStripes"}),D(re,{className:"vuuIconToggleButton","data-icon":"row-lines",selected:b.rowSeparators,onChange:c,value:"rowSeparators"}),D(re,{className:"vuuIconToggleButton","data-icon":"col-lines",selected:b.columnSeparators,onChange:c,value:"columnSeparators"})]})]}),G(bt,{children:[D(ht,{children:"Default Column Width"}),D($l,{className:"vuuInput"})]}),D(Ot,{columnItems:i,onChange:m,onMoveListItem:d}),G("div",{className:`${xt}-calculatedButtonbar`,children:[D(Vl,{"data-icon":"plus",onClick:e}),D("span",{className:`${xt}-calculatedLabel`,children:"Add calculated column"})]})]})};import{useLayoutProviderDispatch as Wl}from"@vuu-ui/vuu-layout";import{getCalculatedColumnType as Ql}from"@vuu-ui/vuu-utils";import{useCallback as ve,useRef as Gl,useState as Ul}from"react";var dl=({availableColumns:t,onAvailableColumnsChange:e,onConfigChange:o,onCreateCalculatedColumn:n,onDataSourceConfigChange:r,tableConfig:s})=>{let i=Wl(),l=Gl(),[u,c]=Ul(t),m=ve((p,g,f)=>{i({type:"set-props",path:"#context-panel",props:{expanded:!0,content:{type:p,props:f},title:g}})},[i]),d=ve(p=>{let g=u.concat({name:p.name,serverDataType:Ql(p)});c(g),e==null||e(g),requestAnimationFrame(()=>{var f;(f=l.current)==null||f.call(l)}),n(p)},[u,e,n]),b=ve(p=>{m("ColumnSettings","Column Settings",{column:p.column,onConfigChange:o,onCreateCalculatedColumn:d,tableConfig:s,vuuTable:p.vuuTable})},[d,o,m,s]),a=ve(()=>{b({column:{name:"::",serverDataType:"string"},type:"columnSettings",vuuTable:{module:"SIMUL",table:"instruments"}})},[b]);return l.current=ve(()=>{m("TableSettings","DataGrid Settings",{availableColumns:u!=null?u:s.columns.map(({name:p,serverDataType:g})=>({name:p,serverDataType:g})),onAddCalculatedColumn:a,onConfigChange:o,onDataSourceConfigChange:r,tableConfig:s})},[u,a,o,r,m,s]),{showColumnSettingsPanel:b,showTableSettingsPanel:l.current}};export{$n as BackgroundCell,Xo as CaseValidator,io as ColumnExpressionInput,po as ColumnExpressionPanel,Ft as ColumnFormattingPanel,Ot as ColumnList,Je as ColumnNamedTerms,Cm as ColumnSettingsPanel,Sm as DataSourceStats,Lt as NumericFormattingSettings,Zo as PatternValidator,lD as TableSettingsPanel,$t as columnExpressionLanguageSupport,Gt as isCompleteExpression,Ut as isCompleteRelationalExpression,Ze as lastNamedChild,so as useColumnExpressionEditor,uo as useColumnExpressionSuggestionProvider,dl as useTableAndColumnSettings,Bo as useTableSettings,Wt as walkTree};
2
2
  //# sourceMappingURL=index.js.map