@vuu-ui/vuu-table-extras 0.13.7 → 0.13.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 (217) hide show
  1. package/cjs/index.js +4254 -65
  2. package/cjs/index.js.map +1 -1
  3. package/esm/index.js +4221 -28
  4. package/esm/index.js.map +1 -1
  5. package/package.json +11 -11
  6. package/cjs/cell-edit-validators/CaseValidator.js +0 -25
  7. package/cjs/cell-edit-validators/CaseValidator.js.map +0 -1
  8. package/cjs/cell-edit-validators/PatternValidator.js +0 -31
  9. package/cjs/cell-edit-validators/PatternValidator.js.map +0 -1
  10. package/cjs/cell-renderers/background-cell/BackgroundCell.css.js +0 -6
  11. package/cjs/cell-renderers/background-cell/BackgroundCell.css.js.map +0 -1
  12. package/cjs/cell-renderers/background-cell/BackgroundCell.js +0 -76
  13. package/cjs/cell-renderers/background-cell/BackgroundCell.js.map +0 -1
  14. package/cjs/cell-renderers/background-cell/BackgroundCellConfigurationEditor.css.js +0 -6
  15. package/cjs/cell-renderers/background-cell/BackgroundCellConfigurationEditor.css.js.map +0 -1
  16. package/cjs/cell-renderers/background-cell/BackgroundCellConfigurationEditor.js +0 -67
  17. package/cjs/cell-renderers/background-cell/BackgroundCellConfigurationEditor.js.map +0 -1
  18. package/cjs/cell-renderers/background-cell/BackgroundKeyframes.css.js +0 -6
  19. package/cjs/cell-renderers/background-cell/BackgroundKeyframes.css.js.map +0 -1
  20. package/cjs/cell-renderers/background-cell/useDirection.js +0 -20
  21. package/cjs/cell-renderers/background-cell/useDirection.js.map +0 -1
  22. package/cjs/cell-renderers/dropdown-cell/DropdownCell.css.js +0 -6
  23. package/cjs/cell-renderers/dropdown-cell/DropdownCell.css.js.map +0 -1
  24. package/cjs/cell-renderers/dropdown-cell/DropdownCell.js +0 -94
  25. package/cjs/cell-renderers/dropdown-cell/DropdownCell.js.map +0 -1
  26. package/cjs/cell-renderers/lookup-cell/LookupCell.js +0 -23
  27. package/cjs/cell-renderers/lookup-cell/LookupCell.js.map +0 -1
  28. package/cjs/cell-renderers/pct-progress-cell/PctProgressCell.css.js +0 -6
  29. package/cjs/cell-renderers/pct-progress-cell/PctProgressCell.css.js.map +0 -1
  30. package/cjs/cell-renderers/pct-progress-cell/PctProgressCell.js +0 -62
  31. package/cjs/cell-renderers/pct-progress-cell/PctProgressCell.js.map +0 -1
  32. package/cjs/cell-renderers/progress-cell/ProgressCell.css.js +0 -6
  33. package/cjs/cell-renderers/progress-cell/ProgressCell.css.js.map +0 -1
  34. package/cjs/cell-renderers/progress-cell/ProgressCell.js +0 -69
  35. package/cjs/cell-renderers/progress-cell/ProgressCell.js.map +0 -1
  36. package/cjs/column-expression-input/ColumnExpressionInput.css.js +0 -6
  37. package/cjs/column-expression-input/ColumnExpressionInput.css.js.map +0 -1
  38. package/cjs/column-expression-input/ColumnExpressionInput.js +0 -39
  39. package/cjs/column-expression-input/ColumnExpressionInput.js.map +0 -1
  40. package/cjs/column-expression-input/column-function-descriptors.js +0 -307
  41. package/cjs/column-expression-input/column-function-descriptors.js.map +0 -1
  42. package/cjs/column-expression-input/column-language-parser/ColumnExpressionLanguage.js +0 -28
  43. package/cjs/column-expression-input/column-language-parser/ColumnExpressionLanguage.js.map +0 -1
  44. package/cjs/column-expression-input/column-language-parser/ColumnExpressionTreeWalker.js +0 -465
  45. package/cjs/column-expression-input/column-language-parser/ColumnExpressionTreeWalker.js.map +0 -1
  46. package/cjs/column-expression-input/column-language-parser/column-expression-parse-utils.js +0 -61
  47. package/cjs/column-expression-input/column-language-parser/column-expression-parse-utils.js.map +0 -1
  48. package/cjs/column-expression-input/column-language-parser/generated/column-parser.js +0 -21
  49. package/cjs/column-expression-input/column-language-parser/generated/column-parser.js.map +0 -1
  50. package/cjs/column-expression-input/functionDocInfo.js +0 -39
  51. package/cjs/column-expression-input/functionDocInfo.js.map +0 -1
  52. package/cjs/column-expression-input/highlighting.js +0 -16
  53. package/cjs/column-expression-input/highlighting.js.map +0 -1
  54. package/cjs/column-expression-input/theme.js +0 -63
  55. package/cjs/column-expression-input/theme.js.map +0 -1
  56. package/cjs/column-expression-input/useColumnAutoComplete.js +0 -358
  57. package/cjs/column-expression-input/useColumnAutoComplete.js.map +0 -1
  58. package/cjs/column-expression-input/useColumnExpressionEditor.js +0 -131
  59. package/cjs/column-expression-input/useColumnExpressionEditor.js.map +0 -1
  60. package/cjs/column-expression-input/useColumnExpressionSuggestionProvider.js +0 -213
  61. package/cjs/column-expression-input/useColumnExpressionSuggestionProvider.js.map +0 -1
  62. package/cjs/column-expression-panel/ColumnExpressionPanel.js +0 -85
  63. package/cjs/column-expression-panel/ColumnExpressionPanel.js.map +0 -1
  64. package/cjs/column-expression-panel/useColumnExpression.js +0 -69
  65. package/cjs/column-expression-panel/useColumnExpression.js.map +0 -1
  66. package/cjs/column-formatting-settings/BaseNumericFormattingSettings.js +0 -97
  67. package/cjs/column-formatting-settings/BaseNumericFormattingSettings.js.map +0 -1
  68. package/cjs/column-formatting-settings/ColumnFormattingPanel.js +0 -104
  69. package/cjs/column-formatting-settings/ColumnFormattingPanel.js.map +0 -1
  70. package/cjs/column-formatting-settings/DateTimeFormattingSettings.js +0 -99
  71. package/cjs/column-formatting-settings/DateTimeFormattingSettings.js.map +0 -1
  72. package/cjs/column-formatting-settings/LongTypeFormattingSettings.css.js +0 -6
  73. package/cjs/column-formatting-settings/LongTypeFormattingSettings.css.js.map +0 -1
  74. package/cjs/column-formatting-settings/LongTypeFormattingSettings.js +0 -49
  75. package/cjs/column-formatting-settings/LongTypeFormattingSettings.js.map +0 -1
  76. package/cjs/column-list/ColumnList.css.js +0 -6
  77. package/cjs/column-list/ColumnList.css.js.map +0 -1
  78. package/cjs/column-list/ColumnList.js +0 -172
  79. package/cjs/column-list/ColumnList.js.map +0 -1
  80. package/cjs/column-menu/ColumnMenu.css.js +0 -6
  81. package/cjs/column-menu/ColumnMenu.css.js.map +0 -1
  82. package/cjs/column-menu/ColumnMenu.js +0 -116
  83. package/cjs/column-menu/ColumnMenu.js.map +0 -1
  84. package/cjs/column-menu/column-menu-utils.js +0 -489
  85. package/cjs/column-menu/column-menu-utils.js.map +0 -1
  86. package/cjs/column-menu/useColumnActions.js +0 -75
  87. package/cjs/column-menu/useColumnActions.js.map +0 -1
  88. package/cjs/datasource-stats/DatasourceStats.css.js +0 -6
  89. package/cjs/datasource-stats/DatasourceStats.css.js.map +0 -1
  90. package/cjs/datasource-stats/DatasourceStats.js +0 -52
  91. package/cjs/datasource-stats/DatasourceStats.js.map +0 -1
  92. package/cjs/table-column-settings/ColumnNameLabel.css.js +0 -6
  93. package/cjs/table-column-settings/ColumnNameLabel.css.js.map +0 -1
  94. package/cjs/table-column-settings/ColumnNameLabel.js +0 -45
  95. package/cjs/table-column-settings/ColumnNameLabel.js.map +0 -1
  96. package/cjs/table-column-settings/ColumnSettingsPanel.css.js +0 -6
  97. package/cjs/table-column-settings/ColumnSettingsPanel.css.js.map +0 -1
  98. package/cjs/table-column-settings/ColumnSettingsPanel.js +0 -202
  99. package/cjs/table-column-settings/ColumnSettingsPanel.js.map +0 -1
  100. package/cjs/table-column-settings/TableSettingsPanel.css.js +0 -6
  101. package/cjs/table-column-settings/TableSettingsPanel.css.js.map +0 -1
  102. package/cjs/table-column-settings/TableSettingsPanel.js +0 -139
  103. package/cjs/table-column-settings/TableSettingsPanel.js.map +0 -1
  104. package/cjs/table-column-settings/useColumnSettings.js +0 -224
  105. package/cjs/table-column-settings/useColumnSettings.js.map +0 -1
  106. package/cjs/table-column-settings/useTableAndColumnSettings.js +0 -126
  107. package/cjs/table-column-settings/useTableAndColumnSettings.js.map +0 -1
  108. package/cjs/table-column-settings/useTableSettings.js +0 -172
  109. package/cjs/table-column-settings/useTableSettings.js.map +0 -1
  110. package/cjs/table-provider/TableProvider.js +0 -48
  111. package/cjs/table-provider/TableProvider.js.map +0 -1
  112. package/esm/cell-edit-validators/CaseValidator.js +0 -23
  113. package/esm/cell-edit-validators/CaseValidator.js.map +0 -1
  114. package/esm/cell-edit-validators/PatternValidator.js +0 -29
  115. package/esm/cell-edit-validators/PatternValidator.js.map +0 -1
  116. package/esm/cell-renderers/background-cell/BackgroundCell.css.js +0 -4
  117. package/esm/cell-renderers/background-cell/BackgroundCell.css.js.map +0 -1
  118. package/esm/cell-renderers/background-cell/BackgroundCell.js +0 -74
  119. package/esm/cell-renderers/background-cell/BackgroundCell.js.map +0 -1
  120. package/esm/cell-renderers/background-cell/BackgroundCellConfigurationEditor.css.js +0 -4
  121. package/esm/cell-renderers/background-cell/BackgroundCellConfigurationEditor.css.js.map +0 -1
  122. package/esm/cell-renderers/background-cell/BackgroundCellConfigurationEditor.js +0 -65
  123. package/esm/cell-renderers/background-cell/BackgroundCellConfigurationEditor.js.map +0 -1
  124. package/esm/cell-renderers/background-cell/BackgroundKeyframes.css.js +0 -4
  125. package/esm/cell-renderers/background-cell/BackgroundKeyframes.css.js.map +0 -1
  126. package/esm/cell-renderers/background-cell/useDirection.js +0 -18
  127. package/esm/cell-renderers/background-cell/useDirection.js.map +0 -1
  128. package/esm/cell-renderers/dropdown-cell/DropdownCell.css.js +0 -4
  129. package/esm/cell-renderers/dropdown-cell/DropdownCell.css.js.map +0 -1
  130. package/esm/cell-renderers/dropdown-cell/DropdownCell.js +0 -92
  131. package/esm/cell-renderers/dropdown-cell/DropdownCell.js.map +0 -1
  132. package/esm/cell-renderers/lookup-cell/LookupCell.js +0 -21
  133. package/esm/cell-renderers/lookup-cell/LookupCell.js.map +0 -1
  134. package/esm/cell-renderers/pct-progress-cell/PctProgressCell.css.js +0 -4
  135. package/esm/cell-renderers/pct-progress-cell/PctProgressCell.css.js.map +0 -1
  136. package/esm/cell-renderers/pct-progress-cell/PctProgressCell.js +0 -60
  137. package/esm/cell-renderers/pct-progress-cell/PctProgressCell.js.map +0 -1
  138. package/esm/cell-renderers/progress-cell/ProgressCell.css.js +0 -4
  139. package/esm/cell-renderers/progress-cell/ProgressCell.css.js.map +0 -1
  140. package/esm/cell-renderers/progress-cell/ProgressCell.js +0 -67
  141. package/esm/cell-renderers/progress-cell/ProgressCell.js.map +0 -1
  142. package/esm/column-expression-input/ColumnExpressionInput.css.js +0 -4
  143. package/esm/column-expression-input/ColumnExpressionInput.css.js.map +0 -1
  144. package/esm/column-expression-input/ColumnExpressionInput.js +0 -37
  145. package/esm/column-expression-input/ColumnExpressionInput.js.map +0 -1
  146. package/esm/column-expression-input/column-function-descriptors.js +0 -305
  147. package/esm/column-expression-input/column-function-descriptors.js.map +0 -1
  148. package/esm/column-expression-input/column-language-parser/ColumnExpressionLanguage.js +0 -26
  149. package/esm/column-expression-input/column-language-parser/ColumnExpressionLanguage.js.map +0 -1
  150. package/esm/column-expression-input/column-language-parser/ColumnExpressionTreeWalker.js +0 -463
  151. package/esm/column-expression-input/column-language-parser/ColumnExpressionTreeWalker.js.map +0 -1
  152. package/esm/column-expression-input/column-language-parser/column-expression-parse-utils.js +0 -56
  153. package/esm/column-expression-input/column-language-parser/column-expression-parse-utils.js.map +0 -1
  154. package/esm/column-expression-input/column-language-parser/generated/column-parser.js +0 -19
  155. package/esm/column-expression-input/column-language-parser/generated/column-parser.js.map +0 -1
  156. package/esm/column-expression-input/functionDocInfo.js +0 -37
  157. package/esm/column-expression-input/functionDocInfo.js.map +0 -1
  158. package/esm/column-expression-input/highlighting.js +0 -14
  159. package/esm/column-expression-input/highlighting.js.map +0 -1
  160. package/esm/column-expression-input/theme.js +0 -61
  161. package/esm/column-expression-input/theme.js.map +0 -1
  162. package/esm/column-expression-input/useColumnAutoComplete.js +0 -356
  163. package/esm/column-expression-input/useColumnAutoComplete.js.map +0 -1
  164. package/esm/column-expression-input/useColumnExpressionEditor.js +0 -129
  165. package/esm/column-expression-input/useColumnExpressionEditor.js.map +0 -1
  166. package/esm/column-expression-input/useColumnExpressionSuggestionProvider.js +0 -211
  167. package/esm/column-expression-input/useColumnExpressionSuggestionProvider.js.map +0 -1
  168. package/esm/column-expression-panel/ColumnExpressionPanel.js +0 -83
  169. package/esm/column-expression-panel/ColumnExpressionPanel.js.map +0 -1
  170. package/esm/column-expression-panel/useColumnExpression.js +0 -67
  171. package/esm/column-expression-panel/useColumnExpression.js.map +0 -1
  172. package/esm/column-formatting-settings/BaseNumericFormattingSettings.js +0 -95
  173. package/esm/column-formatting-settings/BaseNumericFormattingSettings.js.map +0 -1
  174. package/esm/column-formatting-settings/ColumnFormattingPanel.js +0 -102
  175. package/esm/column-formatting-settings/ColumnFormattingPanel.js.map +0 -1
  176. package/esm/column-formatting-settings/DateTimeFormattingSettings.js +0 -97
  177. package/esm/column-formatting-settings/DateTimeFormattingSettings.js.map +0 -1
  178. package/esm/column-formatting-settings/LongTypeFormattingSettings.css.js +0 -4
  179. package/esm/column-formatting-settings/LongTypeFormattingSettings.css.js.map +0 -1
  180. package/esm/column-formatting-settings/LongTypeFormattingSettings.js +0 -47
  181. package/esm/column-formatting-settings/LongTypeFormattingSettings.js.map +0 -1
  182. package/esm/column-list/ColumnList.css.js +0 -4
  183. package/esm/column-list/ColumnList.css.js.map +0 -1
  184. package/esm/column-list/ColumnList.js +0 -170
  185. package/esm/column-list/ColumnList.js.map +0 -1
  186. package/esm/column-menu/ColumnMenu.css.js +0 -4
  187. package/esm/column-menu/ColumnMenu.css.js.map +0 -1
  188. package/esm/column-menu/ColumnMenu.js +0 -114
  189. package/esm/column-menu/ColumnMenu.js.map +0 -1
  190. package/esm/column-menu/column-menu-utils.js +0 -480
  191. package/esm/column-menu/column-menu-utils.js.map +0 -1
  192. package/esm/column-menu/useColumnActions.js +0 -73
  193. package/esm/column-menu/useColumnActions.js.map +0 -1
  194. package/esm/datasource-stats/DatasourceStats.css.js +0 -4
  195. package/esm/datasource-stats/DatasourceStats.css.js.map +0 -1
  196. package/esm/datasource-stats/DatasourceStats.js +0 -50
  197. package/esm/datasource-stats/DatasourceStats.js.map +0 -1
  198. package/esm/table-column-settings/ColumnNameLabel.css.js +0 -4
  199. package/esm/table-column-settings/ColumnNameLabel.css.js.map +0 -1
  200. package/esm/table-column-settings/ColumnNameLabel.js +0 -43
  201. package/esm/table-column-settings/ColumnNameLabel.js.map +0 -1
  202. package/esm/table-column-settings/ColumnSettingsPanel.css.js +0 -4
  203. package/esm/table-column-settings/ColumnSettingsPanel.css.js.map +0 -1
  204. package/esm/table-column-settings/ColumnSettingsPanel.js +0 -200
  205. package/esm/table-column-settings/ColumnSettingsPanel.js.map +0 -1
  206. package/esm/table-column-settings/TableSettingsPanel.css.js +0 -4
  207. package/esm/table-column-settings/TableSettingsPanel.css.js.map +0 -1
  208. package/esm/table-column-settings/TableSettingsPanel.js +0 -136
  209. package/esm/table-column-settings/TableSettingsPanel.js.map +0 -1
  210. package/esm/table-column-settings/useColumnSettings.js +0 -222
  211. package/esm/table-column-settings/useColumnSettings.js.map +0 -1
  212. package/esm/table-column-settings/useTableAndColumnSettings.js +0 -122
  213. package/esm/table-column-settings/useTableAndColumnSettings.js.map +0 -1
  214. package/esm/table-column-settings/useTableSettings.js +0 -170
  215. package/esm/table-column-settings/useTableSettings.js.map +0 -1
  216. package/esm/table-provider/TableProvider.js +0 -44
  217. package/esm/table-provider/TableProvider.js.map +0 -1
@@ -1,39 +0,0 @@
1
- 'use strict';
2
-
3
- var vuuUtils = require('@vuu-ui/vuu-utils');
4
-
5
- const functionDocInfo = ({
6
- name,
7
- description,
8
- example,
9
- params,
10
- type
11
- }) => {
12
- const rootElement = vuuUtils.createEl("div", "vuuFunctionDoc");
13
- const headingElement = vuuUtils.createEl("div", "function-heading");
14
- const nameElement = vuuUtils.createEl("span", "function-name", name);
15
- const paramElement = vuuUtils.createEl("span", "param-list", params.description);
16
- const typeElement = vuuUtils.createEl("span", "function-type", type);
17
- headingElement.appendChild(nameElement);
18
- headingElement.appendChild(paramElement);
19
- headingElement.appendChild(typeElement);
20
- const child2 = vuuUtils.createEl("p", void 0, description);
21
- rootElement.appendChild(headingElement);
22
- rootElement.appendChild(child2);
23
- if (example) {
24
- const exampleElement = vuuUtils.createEl("div", "example-container");
25
- const expressionElement = vuuUtils.createEl(
26
- "div",
27
- "example-expression",
28
- example.expression
29
- );
30
- const resultElement = vuuUtils.createEl("div", "example-result", example.result);
31
- exampleElement.appendChild(expressionElement);
32
- rootElement.appendChild(exampleElement);
33
- rootElement.appendChild(resultElement);
34
- }
35
- return rootElement;
36
- };
37
-
38
- exports.functionDocInfo = functionDocInfo;
39
- //# sourceMappingURL=functionDocInfo.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"functionDocInfo.js","sources":["../../src/column-expression-input/functionDocInfo.ts"],"sourcesContent":["import { createEl } from \"@vuu-ui/vuu-utils\";\nimport { ColumnFunctionDescriptor } from \"./column-function-descriptors\";\n\nexport const functionDocInfo = ({\n name,\n description,\n example,\n params,\n type,\n}: ColumnFunctionDescriptor) => {\n const rootElement = createEl(\"div\", \"vuuFunctionDoc\");\n const headingElement = createEl(\"div\", \"function-heading\");\n\n const nameElement = createEl(\"span\", \"function-name\", name);\n const paramElement = createEl(\"span\", \"param-list\", params.description);\n const typeElement = createEl(\"span\", \"function-type\", type);\n\n headingElement.appendChild(nameElement);\n headingElement.appendChild(paramElement);\n headingElement.appendChild(typeElement);\n\n const child2 = createEl(\"p\", undefined, description);\n\n rootElement.appendChild(headingElement);\n rootElement.appendChild(child2);\n\n if (example) {\n const exampleElement = createEl(\"div\", \"example-container\");\n const expressionElement = createEl(\n \"div\",\n \"example-expression\",\n example.expression,\n );\n const resultElement = createEl(\"div\", \"example-result\", example.result);\n\n exampleElement.appendChild(expressionElement);\n\n rootElement.appendChild(exampleElement);\n rootElement.appendChild(resultElement);\n }\n\n return rootElement;\n};\n"],"names":["createEl"],"mappings":";;;;AAGO,MAAM,kBAAkB,CAAC;AAAA,EAC9B,IAAA;AAAA,EACA,WAAA;AAAA,EACA,OAAA;AAAA,EACA,MAAA;AAAA,EACA;AACF,CAAgC,KAAA;AAC9B,EAAM,MAAA,WAAA,GAAcA,iBAAS,CAAA,KAAA,EAAO,gBAAgB,CAAA;AACpD,EAAM,MAAA,cAAA,GAAiBA,iBAAS,CAAA,KAAA,EAAO,kBAAkB,CAAA;AAEzD,EAAA,MAAM,WAAc,GAAAA,iBAAA,CAAS,MAAQ,EAAA,eAAA,EAAiB,IAAI,CAAA;AAC1D,EAAA,MAAM,YAAe,GAAAA,iBAAA,CAAS,MAAQ,EAAA,YAAA,EAAc,OAAO,WAAW,CAAA;AACtE,EAAA,MAAM,WAAc,GAAAA,iBAAA,CAAS,MAAQ,EAAA,eAAA,EAAiB,IAAI,CAAA;AAE1D,EAAA,cAAA,CAAe,YAAY,WAAW,CAAA;AACtC,EAAA,cAAA,CAAe,YAAY,YAAY,CAAA;AACvC,EAAA,cAAA,CAAe,YAAY,WAAW,CAAA;AAEtC,EAAA,MAAM,MAAS,GAAAA,iBAAA,CAAS,GAAK,EAAA,KAAA,CAAA,EAAW,WAAW,CAAA;AAEnD,EAAA,WAAA,CAAY,YAAY,cAAc,CAAA;AACtC,EAAA,WAAA,CAAY,YAAY,MAAM,CAAA;AAE9B,EAAA,IAAI,OAAS,EAAA;AACX,IAAM,MAAA,cAAA,GAAiBA,iBAAS,CAAA,KAAA,EAAO,mBAAmB,CAAA;AAC1D,IAAA,MAAM,iBAAoB,GAAAA,iBAAA;AAAA,MACxB,KAAA;AAAA,MACA,oBAAA;AAAA,MACA,OAAQ,CAAA;AAAA,KACV;AACA,IAAA,MAAM,aAAgB,GAAAA,iBAAA,CAAS,KAAO,EAAA,gBAAA,EAAkB,QAAQ,MAAM,CAAA;AAEtE,IAAA,cAAA,CAAe,YAAY,iBAAiB,CAAA;AAE5C,IAAA,WAAA,CAAY,YAAY,cAAc,CAAA;AACtC,IAAA,WAAA,CAAY,YAAY,aAAa,CAAA;AAAA;AAGvC,EAAO,OAAA,WAAA;AACT;;;;"}
@@ -1,16 +0,0 @@
1
- 'use strict';
2
-
3
- var vuuCodemirror = require('@vuu-ui/vuu-codemirror');
4
-
5
- const myHighlightStyle = vuuCodemirror.HighlightStyle.define([
6
- {
7
- tag: vuuCodemirror.tags.attributeValue,
8
- color: "var(--vuuFilterEditor-variableColor);font-weight: bold"
9
- },
10
- { tag: vuuCodemirror.tags.variableName, color: "var(--vuuFilterEditor-variableColor)" },
11
- { tag: vuuCodemirror.tags.comment, color: "green", fontStyle: "italic" }
12
- ]);
13
- const vuuHighlighting = vuuCodemirror.syntaxHighlighting(myHighlightStyle);
14
-
15
- exports.vuuHighlighting = vuuHighlighting;
16
- //# sourceMappingURL=highlighting.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"highlighting.js","sources":["../../src/column-expression-input/highlighting.ts"],"sourcesContent":["import {\n HighlightStyle,\n syntaxHighlighting,\n tags,\n} from \"@vuu-ui/vuu-codemirror\";\n\nconst myHighlightStyle = HighlightStyle.define([\n {\n tag: tags.attributeValue,\n color: \"var(--vuuFilterEditor-variableColor);font-weight: bold\",\n },\n { tag: tags.variableName, color: \"var(--vuuFilterEditor-variableColor)\" },\n { tag: tags.comment, color: \"green\", fontStyle: \"italic\" },\n]);\n\nexport const vuuHighlighting = syntaxHighlighting(myHighlightStyle);\n"],"names":["HighlightStyle","tags","syntaxHighlighting"],"mappings":";;;;AAMA,MAAM,gBAAA,GAAmBA,6BAAe,MAAO,CAAA;AAAA,EAC7C;AAAA,IACE,KAAKC,kBAAK,CAAA,cAAA;AAAA,IACV,KAAO,EAAA;AAAA,GACT;AAAA,EACA,EAAE,GAAA,EAAKA,kBAAK,CAAA,YAAA,EAAc,OAAO,sCAAuC,EAAA;AAAA,EACxE,EAAE,GAAK,EAAAA,kBAAA,CAAK,SAAS,KAAO,EAAA,OAAA,EAAS,WAAW,QAAS;AAC3D,CAAC,CAAA;AAEY,MAAA,eAAA,GAAkBC,iCAAmB,gBAAgB;;;;"}
@@ -1,63 +0,0 @@
1
- 'use strict';
2
-
3
- var vuuCodemirror = require('@vuu-ui/vuu-codemirror');
4
-
5
- const vuuTheme = vuuCodemirror.EditorView.theme(
6
- {
7
- "&": {
8
- border: "solid 1px var(--salt-container-primary-borderColor)",
9
- color: "var(--vuuFilterEditor-color)",
10
- backgroundColor: "var(--vuuFilterEditor-background)"
11
- },
12
- ".cm-content": {
13
- caretColor: "var(--vuuFilterEditor-cursorColor)"
14
- },
15
- "&.cm-focused .cm-cursor": {
16
- borderLeftColor: "var(--vuuFilterEditor-cursorColor)"
17
- },
18
- "&.cm-focused .cm-selectionBackground, ::selection": {
19
- backgroundColor: "var(--vuuFilterEditor-selectionBackground)"
20
- },
21
- ".cm-selectionBackground, ::selection": {
22
- backgroundColor: "var(--vuuFilterEditor-selectionBackground)"
23
- },
24
- ".cm-scroller": {
25
- fontFamily: "var(--vuuFilterEditor-fontFamily)"
26
- },
27
- ".cm-completionLabel": {
28
- color: "var(--vuu-color-gray-50)"
29
- },
30
- ".cm-completionMatchedText": {
31
- color: "var(--vuu-color-gray-80)",
32
- fontWeight: 700,
33
- textDecoration: "none"
34
- },
35
- ".cm-tooltip": {
36
- background: "var(--vuuFilterEditor-tooltipBackground)",
37
- border: "var(--vuuFilterEditor-tooltipBorder)",
38
- borderRadius: "4px",
39
- boxShadow: "var(--vuuFilterEditor-tooltipElevation)",
40
- "&.cm-tooltip-autocomplete > ul": {
41
- fontFamily: "var(--vuuFilterEditor-fontFamily)",
42
- fontSize: "var(--vuuFilterEditor-fontSize)",
43
- maxHeight: "240px"
44
- },
45
- "&.cm-tooltip-autocomplete > ul > li": {
46
- height: "var(--vuuFilterEditor-suggestion-height)",
47
- padding: "0 3px",
48
- lineHeight: "var(--vuuFilterEditor-suggestion-height)"
49
- },
50
- "&.cm-tooltip-autocomplete li[aria-selected]": {
51
- background: "var(--vuuFilterEditor-suggestion-selectedBackground)",
52
- color: "var(--vuuFilterEditor-suggestion-selectedColor)"
53
- },
54
- "&.cm-tooltip-autocomplete li .cm-completionDetail": {
55
- color: "var(--vuuFilterEditor-suggestion-detailColor)"
56
- }
57
- }
58
- },
59
- { dark: false }
60
- );
61
-
62
- exports.vuuTheme = vuuTheme;
63
- //# sourceMappingURL=theme.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"theme.js","sources":["../../src/column-expression-input/theme.ts"],"sourcesContent":["import { EditorView } from \"@vuu-ui/vuu-codemirror\";\n\nexport const vuuTheme = EditorView.theme(\n {\n \"&\": {\n border: \"solid 1px var(--salt-container-primary-borderColor)\",\n color: \"var(--vuuFilterEditor-color)\",\n backgroundColor: \"var(--vuuFilterEditor-background)\",\n },\n \".cm-content\": {\n caretColor: \"var(--vuuFilterEditor-cursorColor)\",\n },\n \"&.cm-focused .cm-cursor\": {\n borderLeftColor: \"var(--vuuFilterEditor-cursorColor)\",\n },\n \"&.cm-focused .cm-selectionBackground, ::selection\": {\n backgroundColor: \"var(--vuuFilterEditor-selectionBackground)\",\n },\n \".cm-selectionBackground, ::selection\": {\n backgroundColor: \"var(--vuuFilterEditor-selectionBackground)\",\n },\n \".cm-scroller\": {\n fontFamily: \"var(--vuuFilterEditor-fontFamily)\",\n },\n \".cm-completionLabel\": {\n color: \"var(--vuu-color-gray-50)\",\n },\n \".cm-completionMatchedText\": {\n color: \"var(--vuu-color-gray-80)\",\n fontWeight: 700,\n textDecoration: \"none\",\n },\n \".cm-tooltip\": {\n background: \"var(--vuuFilterEditor-tooltipBackground)\",\n border: \"var(--vuuFilterEditor-tooltipBorder)\",\n borderRadius: \"4px\",\n boxShadow: \"var(--vuuFilterEditor-tooltipElevation)\",\n \"&.cm-tooltip-autocomplete > ul\": {\n fontFamily: \"var(--vuuFilterEditor-fontFamily)\",\n fontSize: \"var(--vuuFilterEditor-fontSize)\",\n maxHeight: \"240px\",\n },\n \"&.cm-tooltip-autocomplete > ul > li\": {\n height: \"var(--vuuFilterEditor-suggestion-height)\",\n padding: \"0 3px\",\n lineHeight: \"var(--vuuFilterEditor-suggestion-height)\",\n },\n \"&.cm-tooltip-autocomplete li[aria-selected]\": {\n background: \"var(--vuuFilterEditor-suggestion-selectedBackground)\",\n color: \"var(--vuuFilterEditor-suggestion-selectedColor)\",\n },\n \"&.cm-tooltip-autocomplete li .cm-completionDetail\": {\n color: \"var(--vuuFilterEditor-suggestion-detailColor)\",\n },\n },\n },\n { dark: false },\n);\n"],"names":["EditorView"],"mappings":";;;;AAEO,MAAM,WAAWA,wBAAW,CAAA,KAAA;AAAA,EACjC;AAAA,IACE,GAAK,EAAA;AAAA,MACH,MAAQ,EAAA,qDAAA;AAAA,MACR,KAAO,EAAA,8BAAA;AAAA,MACP,eAAiB,EAAA;AAAA,KACnB;AAAA,IACA,aAAe,EAAA;AAAA,MACb,UAAY,EAAA;AAAA,KACd;AAAA,IACA,yBAA2B,EAAA;AAAA,MACzB,eAAiB,EAAA;AAAA,KACnB;AAAA,IACA,mDAAqD,EAAA;AAAA,MACnD,eAAiB,EAAA;AAAA,KACnB;AAAA,IACA,sCAAwC,EAAA;AAAA,MACtC,eAAiB,EAAA;AAAA,KACnB;AAAA,IACA,cAAgB,EAAA;AAAA,MACd,UAAY,EAAA;AAAA,KACd;AAAA,IACA,qBAAuB,EAAA;AAAA,MACrB,KAAO,EAAA;AAAA,KACT;AAAA,IACA,2BAA6B,EAAA;AAAA,MAC3B,KAAO,EAAA,0BAAA;AAAA,MACP,UAAY,EAAA,GAAA;AAAA,MACZ,cAAgB,EAAA;AAAA,KAClB;AAAA,IACA,aAAe,EAAA;AAAA,MACb,UAAY,EAAA,0CAAA;AAAA,MACZ,MAAQ,EAAA,sCAAA;AAAA,MACR,YAAc,EAAA,KAAA;AAAA,MACd,SAAW,EAAA,yCAAA;AAAA,MACX,gCAAkC,EAAA;AAAA,QAChC,UAAY,EAAA,mCAAA;AAAA,QACZ,QAAU,EAAA,iCAAA;AAAA,QACV,SAAW,EAAA;AAAA,OACb;AAAA,MACA,qCAAuC,EAAA;AAAA,QACrC,MAAQ,EAAA,0CAAA;AAAA,QACR,OAAS,EAAA,OAAA;AAAA,QACT,UAAY,EAAA;AAAA,OACd;AAAA,MACA,6CAA+C,EAAA;AAAA,QAC7C,UAAY,EAAA,sDAAA;AAAA,QACZ,KAAO,EAAA;AAAA,OACT;AAAA,MACA,mDAAqD,EAAA;AAAA,QACnD,KAAO,EAAA;AAAA;AACT;AACF,GACF;AAAA,EACA,EAAE,MAAM,KAAM;AAChB;;;;"}
@@ -1,358 +0,0 @@
1
- 'use strict';
2
-
3
- var vuuCodemirror = require('@vuu-ui/vuu-codemirror');
4
- var react = require('react');
5
- require('./column-language-parser/ColumnExpressionLanguage.js');
6
- require('./column-language-parser/ColumnExpressionTreeWalker.js');
7
- var columnExpressionParseUtils = require('./column-language-parser/column-expression-parse-utils.js');
8
-
9
- const applyPrefix = (completions, prefix) => prefix ? completions.map((completion) => ({
10
- ...completion,
11
- apply: typeof completion.apply === "function" ? completion.apply : `${prefix}${completion.apply ?? completion.label}`
12
- })) : completions;
13
- const isOperator = (node) => node === void 0 ? false : ["Times", "Divide", "Plus", "Minus"].includes(node.name);
14
- const completionDone = (onSubmit) => ({
15
- apply: () => {
16
- onSubmit?.();
17
- },
18
- label: "Done",
19
- boost: 10
20
- });
21
- const getLastChild = (node, context) => {
22
- let { lastChild: childNode } = node;
23
- const { pos } = context;
24
- while (childNode) {
25
- const isBeforeCursor = childNode.from < pos;
26
- if (isBeforeCursor && columnExpressionParseUtils.ColumnNamedTerms.includes(childNode.name)) {
27
- if (childNode.name === "ParenthesizedExpression") {
28
- const expression = childNode.firstChild?.nextSibling;
29
- if (expression) {
30
- childNode = expression;
31
- }
32
- }
33
- return childNode;
34
- } else {
35
- childNode = childNode.prevSibling;
36
- }
37
- }
38
- };
39
- const getFunctionName = (node, state) => {
40
- if (node.name === "ArgList") {
41
- const functionNode = node.prevSibling;
42
- if (functionNode) {
43
- return vuuCodemirror.getValue(functionNode, state);
44
- }
45
- } else if (node.name === "OpenBrace") {
46
- const maybeFunction = node.parent?.prevSibling;
47
- if (maybeFunction?.name === "Function") {
48
- return vuuCodemirror.getValue(maybeFunction, state);
49
- }
50
- }
51
- };
52
- const getRelationalOperator = (node, state) => {
53
- if (node.name === "RelationalExpression") {
54
- const lastNode = columnExpressionParseUtils.lastNamedChild(node);
55
- if (lastNode?.name === "RelationalOperator") {
56
- return vuuCodemirror.getValue(lastNode, state);
57
- }
58
- } else {
59
- const prevNode = node.prevSibling;
60
- if (prevNode?.name === "RelationalOperator") {
61
- return vuuCodemirror.getValue(prevNode, state);
62
- }
63
- }
64
- };
65
- const getColumnName = (node, state) => {
66
- if (node.name === "RelationalExpression") {
67
- if (node.firstChild?.name === "Column") {
68
- return vuuCodemirror.getValue(node.firstChild, state);
69
- }
70
- } else {
71
- const prevNode = node.prevSibling;
72
- if (prevNode?.name === "Column") {
73
- return vuuCodemirror.getValue(prevNode, state);
74
- } else if (prevNode?.name === "RelationalOperator") {
75
- return getColumnName(prevNode, state);
76
- }
77
- }
78
- };
79
- const makeSuggestions = async (context, suggestionProvider, suggestionType, optionalArgs = {}) => {
80
- const options = await suggestionProvider.getSuggestions(
81
- suggestionType,
82
- optionalArgs
83
- );
84
- const { startsWith = "" } = optionalArgs;
85
- return { from: context.pos - startsWith.length, options };
86
- };
87
- const handleConditionalExpression = (node, context, suggestionProvider, maybeComplete, onSubmit) => {
88
- const lastChild = getLastChild(node, context);
89
- switch (lastChild?.name) {
90
- case "If":
91
- return makeSuggestions(context, suggestionProvider, "expression", {
92
- prefix: "( "
93
- });
94
- case "OpenBrace":
95
- return makeSuggestions(context, suggestionProvider, "expression");
96
- case "Condition":
97
- return makeSuggestions(context, suggestionProvider, "expression", {
98
- prefix: ", "
99
- });
100
- case "CloseBrace":
101
- if (maybeComplete) {
102
- const options = [completionDone(onSubmit)];
103
- return { from: context.pos, options };
104
- }
105
- }
106
- };
107
- const promptToSave = (context, onSubmit) => {
108
- const options = [completionDone(onSubmit)];
109
- return { from: context.pos, options };
110
- };
111
- const useColumnAutoComplete = (suggestionProvider, onSubmit) => {
112
- const makeSuggestions2 = react.useCallback(
113
- async (context, suggestionType, optionalArgs = {}) => {
114
- const options = await suggestionProvider.getSuggestions(
115
- suggestionType,
116
- optionalArgs
117
- );
118
- const { startsWith = "" } = optionalArgs;
119
- return { from: context.pos - startsWith.length, options };
120
- },
121
- [suggestionProvider]
122
- );
123
- return react.useCallback(
124
- async (context) => {
125
- const { state, pos } = context;
126
- const word = context.matchBefore(/\w*/) ?? {
127
- from: 0,
128
- to: 0,
129
- text: void 0
130
- };
131
- const tree = vuuCodemirror.syntaxTree(state);
132
- const nodeBefore = tree.resolveInner(pos, -1);
133
- const text = state.doc.toString();
134
- const maybeComplete = columnExpressionParseUtils.isCompleteExpression(text);
135
- switch (nodeBefore.name) {
136
- case "If": {
137
- return makeSuggestions2(context, "expression", { prefix: "( " });
138
- }
139
- case "Condition":
140
- {
141
- const lastChild = getLastChild(nodeBefore, context);
142
- if (lastChild?.name === "Column") {
143
- const prevChild = vuuCodemirror.getPreviousNode(lastChild);
144
- if (prevChild?.name !== "RelationalOperator") {
145
- return makeSuggestions2(context, "condition-operator", {
146
- columnName: vuuCodemirror.getValue(lastChild, state)
147
- });
148
- }
149
- } else if (lastChild?.name === "RelationalOperator") {
150
- return makeSuggestions2(context, "expression");
151
- }
152
- }
153
- break;
154
- case "ConditionalExpression":
155
- return handleConditionalExpression(
156
- nodeBefore,
157
- context,
158
- suggestionProvider
159
- );
160
- case "RelationalExpression":
161
- {
162
- if (columnExpressionParseUtils.isCompleteRelationalExpression(nodeBefore)) {
163
- return {
164
- from: context.pos,
165
- options: vuuCodemirror.booleanJoinSuggestions.concat({
166
- label: ", <truthy expression>, <falsy expression>",
167
- apply: ", "
168
- })
169
- };
170
- } else {
171
- const operator = getRelationalOperator(nodeBefore, state);
172
- const columnName = getColumnName(nodeBefore, state);
173
- if (!operator) {
174
- const options = await suggestionProvider.getSuggestions(
175
- "condition-operator",
176
- {
177
- columnName
178
- }
179
- );
180
- return { from: context.pos, options };
181
- } else {
182
- return makeSuggestions2(context, "expression");
183
- }
184
- }
185
- }
186
- case "RelationalOperator":
187
- return makeSuggestions2(context, "expression");
188
- case "String":
189
- {
190
- const operator = getRelationalOperator(
191
- nodeBefore,
192
- state
193
- );
194
- const columnName = getColumnName(nodeBefore, state);
195
- const { from, to } = nodeBefore;
196
- if (to - from === 2 && context.pos === from + 1) {
197
- if (columnName && operator) {
198
- return makeSuggestions2(context, "columnValue", {
199
- columnName,
200
- operator,
201
- startsWith: word.text
202
- });
203
- }
204
- } else if (to - from > 2 && context.pos === to) {
205
- return makeSuggestions2(context, "expression", {
206
- prefix: ", "
207
- });
208
- }
209
- }
210
- break;
211
- case "ArithmeticExpression":
212
- {
213
- const lastChild = getLastChild(nodeBefore, context);
214
- if (lastChild?.name === "Column") {
215
- return makeSuggestions2(context, "expression");
216
- } else if (isOperator(lastChild)) {
217
- const operator = lastChild.name;
218
- return makeSuggestions2(context, "column", { operator });
219
- }
220
- }
221
- break;
222
- case "OpenBrace":
223
- {
224
- const functionName = getFunctionName(nodeBefore, state);
225
- return makeSuggestions2(context, "expression", { functionName });
226
- }
227
- case "ArgList": {
228
- const functionName = getFunctionName(nodeBefore, state);
229
- const lastArgument = getLastChild(nodeBefore, context);
230
- const prefix = lastArgument?.name === "OpenBrace" || lastArgument?.name === "Comma" ? void 0 : ",";
231
- let options = await suggestionProvider.getSuggestions("expression", {
232
- functionName
233
- });
234
- options = prefix ? applyPrefix(options, ", ") : options;
235
- if (lastArgument?.name !== "OpenBrace" && lastArgument?.name !== "Comma") {
236
- options = [
237
- {
238
- apply: ") ",
239
- boost: 10,
240
- label: "Done - no more arguments"
241
- }
242
- ].concat(options);
243
- }
244
- return { from: context.pos, options };
245
- }
246
- case "Equal":
247
- if (text.trim() === "=") {
248
- return makeSuggestions2(context, "expression");
249
- }
250
- break;
251
- case "ParenthesizedExpression":
252
- case "ColumnDefinitionExpression":
253
- if (context.pos === 0) {
254
- return makeSuggestions2(context, "expression");
255
- } else {
256
- const lastChild = getLastChild(nodeBefore, context);
257
- if (lastChild?.name === "Column") {
258
- if (maybeComplete) {
259
- const options = [
260
- completionDone(onSubmit.current)
261
- ];
262
- const columnName = vuuCodemirror.getValue(lastChild, state);
263
- const columnOptions = await suggestionProvider.getSuggestions("operator", {
264
- columnName
265
- });
266
- return {
267
- from: context.pos,
268
- options: options.concat(columnOptions)
269
- };
270
- }
271
- } else if (lastChild?.name === "CallExpression") {
272
- if (maybeComplete) {
273
- return {
274
- from: context.pos,
275
- options: [completionDone(onSubmit.current)]
276
- };
277
- }
278
- } else if (lastChild?.name === "ArithmeticExpression") {
279
- if (maybeComplete) {
280
- let options = [completionDone(onSubmit.current)];
281
- const lastExpressionChild = getLastChild(lastChild, context);
282
- if (lastExpressionChild?.name === "Column") {
283
- const columnName = vuuCodemirror.getValue(lastExpressionChild, state);
284
- const suggestions = await suggestionProvider.getSuggestions(
285
- "operator",
286
- { columnName }
287
- );
288
- options = options.concat(suggestions);
289
- }
290
- return {
291
- from: context.pos,
292
- options
293
- };
294
- }
295
- } else if (lastChild?.name === "ConditionalExpression") {
296
- return handleConditionalExpression(
297
- lastChild,
298
- context,
299
- suggestionProvider,
300
- maybeComplete,
301
- onSubmit.current
302
- );
303
- }
304
- break;
305
- }
306
- case "Column":
307
- {
308
- const isPartialMatch = await suggestionProvider.isPartialMatch(
309
- "expression",
310
- void 0,
311
- word.text
312
- );
313
- if (isPartialMatch) {
314
- return makeSuggestions2(context, "expression", {
315
- startsWith: word.text
316
- });
317
- }
318
- }
319
- break;
320
- case "Comma":
321
- {
322
- const parentNode = vuuCodemirror.getNamedParentNode(nodeBefore);
323
- if (parentNode?.name === "ConditionalExpression") {
324
- return makeSuggestions2(context, "expression");
325
- }
326
- }
327
- break;
328
- case "CloseBrace":
329
- {
330
- const parentNode = vuuCodemirror.getNamedParentNode(nodeBefore);
331
- if (parentNode?.name === "ConditionalExpression") {
332
- return handleConditionalExpression(
333
- parentNode,
334
- context,
335
- suggestionProvider,
336
- maybeComplete,
337
- onSubmit.current
338
- );
339
- } else if (parentNode?.name === "ArgList") {
340
- if (maybeComplete) {
341
- return promptToSave(context, onSubmit.current);
342
- }
343
- }
344
- }
345
- break;
346
- default: {
347
- if (nodeBefore?.prevSibling?.name === "FilterClause") {
348
- console.log("looks like we ight be a or|and operator");
349
- }
350
- }
351
- }
352
- },
353
- [makeSuggestions2, onSubmit, suggestionProvider]
354
- );
355
- };
356
-
357
- exports.useColumnAutoComplete = useColumnAutoComplete;
358
- //# sourceMappingURL=useColumnAutoComplete.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useColumnAutoComplete.js","sources":["../../src/column-expression-input/useColumnAutoComplete.ts"],"sourcesContent":["import {\n booleanJoinSuggestions,\n Completion,\n CompletionContext,\n CompletionSource,\n EditorState,\n getNamedParentNode,\n getPreviousNode,\n getValue,\n SyntaxNode,\n syntaxTree,\n} from \"@vuu-ui/vuu-codemirror\";\nimport { MutableRefObject, useCallback } from \"react\";\nimport {\n ColumnNamedTerms,\n isCompleteExpression,\n isCompleteRelationalExpression,\n} from \"./column-language-parser\";\nimport {\n ColumnExpressionOperator,\n ColumnExpressionSuggestionOptions,\n ColumnExpressionSuggestionType,\n IExpressionSuggestionProvider,\n} from \"./useColumnExpressionEditor\";\nimport { lastNamedChild } from \"./column-language-parser\";\n\nexport type ApplyCompletion = (mode?: \"add\" | \"replace\") => void;\n\nexport type Operator = \"\";\n\nconst applyPrefix = (completions: Completion[], prefix?: string) =>\n prefix\n ? completions.map((completion) => ({\n ...completion,\n apply:\n typeof completion.apply === \"function\"\n ? completion.apply\n : `${prefix}${completion.apply ?? completion.label}`,\n }))\n : completions;\n\nconst isOperator = (node?: SyntaxNode): node is SyntaxNode =>\n node === undefined\n ? false\n : [\"Times\", \"Divide\", \"Plus\", \"Minus\"].includes(node.name);\n\nconst completionDone = (onSubmit?: () => void): Completion => ({\n apply: () => {\n onSubmit?.();\n },\n label: \"Done\",\n boost: 10,\n});\n\nconst getLastChild = (node: SyntaxNode, context: CompletionContext) => {\n let { lastChild: childNode } = node;\n const { pos } = context;\n while (childNode) {\n const isBeforeCursor = childNode.from < pos;\n if (isBeforeCursor && ColumnNamedTerms.includes(childNode.name)) {\n if (childNode.name === \"ParenthesizedExpression\") {\n // extract the parenthesized expression\n const expression = childNode.firstChild?.nextSibling;\n if (expression) {\n childNode = expression;\n }\n }\n return childNode;\n } else {\n childNode = childNode.prevSibling;\n }\n }\n};\nconst getFunctionName = (node: SyntaxNode, state: EditorState) => {\n if (node.name === \"ArgList\") {\n const functionNode = node.prevSibling;\n if (functionNode) {\n return getValue(functionNode, state);\n }\n } else if (node.name === \"OpenBrace\") {\n const maybeFunction = node.parent?.prevSibling;\n if (maybeFunction?.name === \"Function\") {\n return getValue(maybeFunction, state);\n }\n }\n};\n\nconst getRelationalOperator = (node: SyntaxNode, state: EditorState) => {\n if (node.name === \"RelationalExpression\") {\n const lastNode = lastNamedChild(node);\n if (lastNode?.name === \"RelationalOperator\") {\n return getValue(lastNode, state);\n }\n } else {\n const prevNode = node.prevSibling;\n if (prevNode?.name === \"RelationalOperator\") {\n return getValue(prevNode, state) as ColumnExpressionOperator;\n }\n }\n};\n\nconst getColumnName = (\n node: SyntaxNode,\n state: EditorState,\n): string | undefined => {\n if (node.name === \"RelationalExpression\") {\n if (node.firstChild?.name === \"Column\") {\n return getValue(node.firstChild, state);\n }\n } else {\n const prevNode = node.prevSibling;\n if (prevNode?.name === \"Column\") {\n return getValue(prevNode, state);\n } else if (prevNode?.name === \"RelationalOperator\") {\n return getColumnName(prevNode, state);\n }\n }\n};\n\nconst makeSuggestions = async (\n context: CompletionContext,\n suggestionProvider: IExpressionSuggestionProvider,\n suggestionType: ColumnExpressionSuggestionType,\n optionalArgs: ColumnExpressionSuggestionOptions = {},\n) => {\n const options = await suggestionProvider.getSuggestions(\n suggestionType,\n optionalArgs,\n );\n const { startsWith = \"\" } = optionalArgs;\n return { from: context.pos - startsWith.length, options };\n};\n\nconst handleConditionalExpression = (\n node: SyntaxNode,\n context: CompletionContext,\n suggestionProvider: IExpressionSuggestionProvider,\n maybeComplete?: boolean,\n onSubmit?: () => void,\n) => {\n const lastChild = getLastChild(node, context);\n switch (lastChild?.name) {\n case \"If\":\n return makeSuggestions(context, suggestionProvider, \"expression\", {\n prefix: \"( \",\n });\n case \"OpenBrace\":\n return makeSuggestions(context, suggestionProvider, \"expression\");\n case \"Condition\":\n return makeSuggestions(context, suggestionProvider, \"expression\", {\n prefix: \", \",\n });\n case \"CloseBrace\":\n if (maybeComplete) {\n const options: Completion[] = [completionDone(onSubmit)];\n return { from: context.pos, options };\n }\n }\n};\n\nconst promptToSave = (context: CompletionContext, onSubmit: () => void) => {\n const options: Completion[] = [completionDone(onSubmit)];\n return { from: context.pos, options };\n};\n\nexport const useColumnAutoComplete = (\n suggestionProvider: IExpressionSuggestionProvider,\n onSubmit: MutableRefObject<ApplyCompletion>,\n) => {\n const makeSuggestions = useCallback(\n async (\n context: CompletionContext,\n suggestionType: ColumnExpressionSuggestionType,\n optionalArgs: ColumnExpressionSuggestionOptions = {},\n ) => {\n const options = await suggestionProvider.getSuggestions(\n suggestionType,\n optionalArgs,\n );\n const { startsWith = \"\" } = optionalArgs;\n return { from: context.pos - startsWith.length, options };\n },\n [suggestionProvider],\n );\n\n return useCallback(\n async (context: CompletionContext) => {\n const { state, pos } = context;\n const word = context.matchBefore(/\\w*/) ?? {\n from: 0,\n to: 0,\n text: undefined,\n };\n\n const tree = syntaxTree(state);\n const nodeBefore = tree.resolveInner(pos, -1);\n const text = state.doc.toString();\n const maybeComplete = isCompleteExpression(text);\n\n switch (nodeBefore.name) {\n case \"If\": {\n return makeSuggestions(context, \"expression\", { prefix: \"( \" });\n }\n case \"Condition\":\n {\n const lastChild = getLastChild(nodeBefore, context);\n if (lastChild?.name === \"Column\") {\n // is this the first term ?\n const prevChild = getPreviousNode(lastChild);\n if (prevChild?.name !== \"RelationalOperator\") {\n return makeSuggestions(context, \"condition-operator\", {\n columnName: getValue(lastChild, state),\n });\n }\n } else if (lastChild?.name === \"RelationalOperator\") {\n // we need the type of the expression on the other side of the operator\n return makeSuggestions(context, \"expression\");\n }\n }\n break;\n case \"ConditionalExpression\":\n return handleConditionalExpression(\n nodeBefore,\n context,\n suggestionProvider,\n );\n case \"RelationalExpression\":\n {\n if (isCompleteRelationalExpression(nodeBefore)) {\n return {\n from: context.pos,\n options: booleanJoinSuggestions.concat({\n label: \", <truthy expression>, <falsy expression>\",\n apply: \", \",\n }),\n };\n } else {\n const operator = getRelationalOperator(nodeBefore, state);\n const columnName = getColumnName(nodeBefore, state);\n if (!operator) {\n const options = await suggestionProvider.getSuggestions(\n \"condition-operator\",\n {\n columnName,\n },\n );\n return { from: context.pos, options };\n } else {\n return makeSuggestions(context, \"expression\");\n }\n }\n }\n break;\n\n case \"RelationalOperator\":\n // we need the type of the expression on the other side of the operator\n return makeSuggestions(context, \"expression\");\n\n case \"String\":\n {\n // we only encounter a string as the right hand operand of a conditional expression\n const operator = getRelationalOperator(\n nodeBefore,\n state,\n ) as ColumnExpressionOperator;\n const columnName = getColumnName(nodeBefore, state);\n // are we inside the string or immediately after it\n const { from, to } = nodeBefore;\n if (to - from === 2 && context.pos === from + 1) {\n // We are in an empty string, i.e between two quotes\n if (columnName && operator) {\n return makeSuggestions(context, \"columnValue\", {\n columnName,\n operator,\n startsWith: word.text,\n });\n }\n } else if (to - from > 2 && context.pos === to) {\n // NOte we couls also offer AND/OR to extend the condition\n return makeSuggestions(context, \"expression\", {\n prefix: \", \",\n });\n }\n }\n break;\n\n case \"ArithmeticExpression\":\n {\n const lastChild = getLastChild(nodeBefore, context);\n if (lastChild?.name === \"Column\") {\n return makeSuggestions(context, \"expression\");\n } else if (isOperator(lastChild)) {\n const operator = lastChild.name as ColumnExpressionOperator;\n return makeSuggestions(context, \"column\", { operator });\n }\n }\n\n break;\n case \"OpenBrace\":\n {\n // Might be a function expression, might be parenthesized\n const functionName = getFunctionName(nodeBefore, state);\n // If not function, what came before - if it's an operator\n // we restrict to numerics\n return makeSuggestions(context, \"expression\", { functionName });\n }\n break;\n case \"ArgList\": {\n const functionName = getFunctionName(nodeBefore, state);\n const lastArgument = getLastChild(nodeBefore, context);\n\n const prefix =\n lastArgument?.name === \"OpenBrace\" || lastArgument?.name === \"Comma\"\n ? undefined\n : \",\";\n let options = await suggestionProvider.getSuggestions(\"expression\", {\n functionName,\n });\n options = prefix ? applyPrefix(options, \", \") : options;\n\n // TODO per function check for number of arguments expected\n if (\n lastArgument?.name !== \"OpenBrace\" &&\n lastArgument?.name !== \"Comma\"\n ) {\n options = [\n {\n apply: \") \",\n boost: 10,\n label: \"Done - no more arguments\",\n } as Completion,\n ].concat(options);\n }\n return { from: context.pos, options };\n }\n case \"Equal\":\n if (text.trim() === \"=\") {\n return makeSuggestions(context, \"expression\");\n }\n break;\n case \"ParenthesizedExpression\":\n case \"ColumnDefinitionExpression\":\n if (context.pos === 0) {\n return makeSuggestions(context, \"expression\");\n } else {\n const lastChild = getLastChild(nodeBefore, context);\n if (lastChild?.name === \"Column\") {\n if (maybeComplete) {\n // We come in here is the columns IS complete, too (ie has space after)\n const options: Completion[] = [\n completionDone(onSubmit.current),\n ];\n const columnName = getValue(lastChild, state);\n const columnOptions: Completion[] =\n await suggestionProvider.getSuggestions(\"operator\", {\n columnName,\n });\n\n return {\n from: context.pos,\n options: options.concat(columnOptions),\n };\n }\n } else if (lastChild?.name === \"CallExpression\") {\n if (maybeComplete) {\n return {\n from: context.pos,\n options: [completionDone(onSubmit.current)],\n };\n }\n } else if (lastChild?.name === \"ArithmeticExpression\") {\n if (maybeComplete) {\n let options: Completion[] = [completionDone(onSubmit.current)];\n\n const lastExpressionChild = getLastChild(lastChild, context);\n if (lastExpressionChild?.name === \"Column\") {\n const columnName = getValue(lastExpressionChild, state);\n // TODO need to exclude columns already included in expression\n\n const suggestions = await suggestionProvider.getSuggestions(\n \"operator\",\n { columnName },\n );\n options = options.concat(suggestions);\n }\n\n return {\n from: context.pos,\n options,\n };\n }\n } else if (lastChild?.name === \"ConditionalExpression\") {\n return handleConditionalExpression(\n lastChild,\n context,\n suggestionProvider,\n maybeComplete,\n onSubmit.current,\n );\n }\n break;\n }\n case \"Column\":\n {\n const isPartialMatch = await suggestionProvider.isPartialMatch(\n \"expression\",\n undefined,\n word.text,\n );\n\n if (isPartialMatch) {\n return makeSuggestions(context, \"expression\", {\n startsWith: word.text,\n });\n }\n }\n break;\n case \"Comma\":\n {\n const parentNode = getNamedParentNode(nodeBefore);\n if (parentNode?.name === \"ConditionalExpression\") {\n return makeSuggestions(context, \"expression\");\n }\n }\n break;\n\n case \"CloseBrace\":\n {\n const parentNode = getNamedParentNode(nodeBefore);\n if (parentNode?.name === \"ConditionalExpression\") {\n return handleConditionalExpression(\n parentNode,\n context,\n suggestionProvider,\n maybeComplete,\n onSubmit.current,\n );\n } else if (parentNode?.name === \"ArgList\") {\n if (maybeComplete) {\n return promptToSave(context, onSubmit.current);\n }\n }\n }\n break;\n\n default: {\n if (nodeBefore?.prevSibling?.name === \"FilterClause\") {\n console.log(\"looks like we ight be a or|and operator\");\n }\n }\n }\n },\n [makeSuggestions, onSubmit, suggestionProvider],\n ) as CompletionSource;\n};\n"],"names":["ColumnNamedTerms","getValue","lastNamedChild","makeSuggestions","useCallback","syntaxTree","isCompleteExpression","getPreviousNode","isCompleteRelationalExpression","booleanJoinSuggestions","getNamedParentNode"],"mappings":"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"}