@deephaven/iris-grid 0.22.3-deep-bot-test.14 → 0.23.0

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 (236) hide show
  1. package/dist/AdvancedFilterCreator.d.ts +1 -1
  2. package/dist/AdvancedFilterCreator.d.ts.map +1 -1
  3. package/dist/AdvancedFilterCreator.js +7 -65
  4. package/dist/AdvancedFilterCreator.js.map +1 -1
  5. package/dist/AdvancedFilterCreatorFilterItem.d.ts +1 -1
  6. package/dist/AdvancedFilterCreatorFilterItem.d.ts.map +1 -1
  7. package/dist/AdvancedFilterCreatorFilterItem.js +0 -23
  8. package/dist/AdvancedFilterCreatorFilterItem.js.map +1 -1
  9. package/dist/AdvancedFilterCreatorSelectValue.js +0 -52
  10. package/dist/AdvancedFilterCreatorSelectValue.js.map +1 -1
  11. package/dist/AdvancedFilterCreatorSelectValueList.d.ts +1 -5
  12. package/dist/AdvancedFilterCreatorSelectValueList.d.ts.map +1 -1
  13. package/dist/AdvancedFilterCreatorSelectValueList.js +2 -42
  14. package/dist/AdvancedFilterCreatorSelectValueList.js.map +1 -1
  15. package/dist/ColumnHeaderGroup.js +0 -11
  16. package/dist/ColumnHeaderGroup.js.map +1 -1
  17. package/dist/ColumnStatistics.js +1 -20
  18. package/dist/ColumnStatistics.js.map +1 -1
  19. package/dist/CommonTypes.d.ts +14 -14
  20. package/dist/CommonTypes.d.ts.map +1 -1
  21. package/dist/CrossColumnSearch.js +2 -23
  22. package/dist/CrossColumnSearch.js.map +1 -1
  23. package/dist/FilterInputField.js +2 -36
  24. package/dist/FilterInputField.js.map +1 -1
  25. package/dist/GotoRow.d.ts +1 -1
  26. package/dist/GotoRow.d.ts.map +1 -1
  27. package/dist/GotoRow.js +2 -7
  28. package/dist/GotoRow.js.map +1 -1
  29. package/dist/IrisGrid.d.ts +45 -39
  30. package/dist/IrisGrid.d.ts.map +1 -1
  31. package/dist/IrisGrid.js +77 -519
  32. package/dist/IrisGrid.js.map +1 -1
  33. package/dist/IrisGridBottomBar.d.ts +2 -2
  34. package/dist/IrisGridBottomBar.d.ts.map +1 -1
  35. package/dist/IrisGridBottomBar.js +2 -2
  36. package/dist/IrisGridBottomBar.js.map +1 -1
  37. package/dist/IrisGridCellOverflowModal.js +6 -21
  38. package/dist/IrisGridCellOverflowModal.js.map +1 -1
  39. package/dist/IrisGridCopyHandler.d.ts +3 -3
  40. package/dist/IrisGridCopyHandler.d.ts.map +1 -1
  41. package/dist/IrisGridCopyHandler.js +3 -50
  42. package/dist/IrisGridCopyHandler.js.map +1 -1
  43. package/dist/IrisGridMetricCalculator.js +2 -12
  44. package/dist/IrisGridMetricCalculator.js.map +1 -1
  45. package/dist/IrisGridModel.d.ts +3 -3
  46. package/dist/IrisGridModel.d.ts.map +1 -1
  47. package/dist/IrisGridModel.js +32 -58
  48. package/dist/IrisGridModel.js.map +1 -1
  49. package/dist/IrisGridModelFactory.js +0 -7
  50. package/dist/IrisGridModelFactory.js.map +1 -1
  51. package/dist/IrisGridModelUpdater.js +0 -4
  52. package/dist/IrisGridModelUpdater.js.map +1 -1
  53. package/dist/IrisGridPartitionSelector.js +0 -23
  54. package/dist/IrisGridPartitionSelector.js.map +1 -1
  55. package/dist/IrisGridProxyModel.js +9 -153
  56. package/dist/IrisGridProxyModel.js.map +1 -1
  57. package/dist/IrisGridRenderer.d.ts +1 -1
  58. package/dist/IrisGridRenderer.d.ts.map +1 -1
  59. package/dist/IrisGridRenderer.js +41 -183
  60. package/dist/IrisGridRenderer.js.map +1 -1
  61. package/dist/IrisGridShortcuts.js.map +1 -1
  62. package/dist/IrisGridTableModel.d.ts +3 -3
  63. package/dist/IrisGridTableModel.d.ts.map +1 -1
  64. package/dist/IrisGridTableModel.js +10 -90
  65. package/dist/IrisGridTableModel.js.map +1 -1
  66. package/dist/IrisGridTableModelTemplate.d.ts +3 -3
  67. package/dist/IrisGridTableModelTemplate.d.ts.map +1 -1
  68. package/dist/IrisGridTableModelTemplate.js +70 -461
  69. package/dist/IrisGridTableModelTemplate.js.map +1 -1
  70. package/dist/IrisGridTestUtils.js +0 -23
  71. package/dist/IrisGridTestUtils.js.map +1 -1
  72. package/dist/IrisGridTheme.d.ts +1 -1
  73. package/dist/IrisGridTheme.d.ts.map +1 -1
  74. package/dist/IrisGridTheme.js.map +1 -1
  75. package/dist/IrisGridTreeTableModel.js +3 -42
  76. package/dist/IrisGridTreeTableModel.js.map +1 -1
  77. package/dist/IrisGridUtils.d.ts +13 -7
  78. package/dist/IrisGridUtils.d.ts.map +1 -1
  79. package/dist/IrisGridUtils.js +98 -196
  80. package/dist/IrisGridUtils.js.map +1 -1
  81. package/dist/MissingKeyError.js +0 -7
  82. package/dist/MissingKeyError.js.map +1 -1
  83. package/dist/PartitionSelectorSearch.d.ts +2 -2
  84. package/dist/PartitionSelectorSearch.js +2 -48
  85. package/dist/PartitionSelectorSearch.js.map +1 -1
  86. package/dist/PendingDataBottomBar.d.ts +2 -2
  87. package/dist/PendingDataBottomBar.d.ts.map +1 -1
  88. package/dist/PendingDataBottomBar.js +2 -7
  89. package/dist/PendingDataBottomBar.js.map +1 -1
  90. package/dist/TableViewportUpdater.d.ts +2 -2
  91. package/dist/TableViewportUpdater.d.ts.map +1 -1
  92. package/dist/TableViewportUpdater.js +3 -29
  93. package/dist/TableViewportUpdater.js.map +1 -1
  94. package/dist/ToastBottomBar.d.ts +2 -2
  95. package/dist/ToastBottomBar.d.ts.map +1 -1
  96. package/dist/ToastBottomBar.js +2 -4
  97. package/dist/ToastBottomBar.js.map +1 -1
  98. package/dist/TreeTableViewportUpdater.js +0 -21
  99. package/dist/TreeTableViewportUpdater.js.map +1 -1
  100. package/dist/format-context-menus/CustomFormatAction.d.ts +1 -1
  101. package/dist/format-context-menus/CustomFormatAction.d.ts.map +1 -1
  102. package/dist/format-context-menus/CustomFormatAction.js +4 -25
  103. package/dist/format-context-menus/CustomFormatAction.js.map +1 -1
  104. package/dist/format-context-menus/DateTimeFormatContextMenu.js +0 -7
  105. package/dist/format-context-menus/DateTimeFormatContextMenu.js.map +1 -1
  106. package/dist/format-context-menus/DecimalFormatContextMenu.js +0 -9
  107. package/dist/format-context-menus/DecimalFormatContextMenu.js.map +1 -1
  108. package/dist/format-context-menus/FormatContextMenuUtils.js +3 -9
  109. package/dist/format-context-menus/FormatContextMenuUtils.js.map +1 -1
  110. package/dist/format-context-menus/IntegerFormatContextMenu.js +0 -8
  111. package/dist/format-context-menus/IntegerFormatContextMenu.js.map +1 -1
  112. package/dist/format-context-menus/index.js.map +1 -1
  113. package/dist/index.d.ts +3 -3
  114. package/dist/index.d.ts.map +1 -1
  115. package/dist/index.js +3 -3
  116. package/dist/index.js.map +1 -1
  117. package/dist/key-handlers/ClearFilterKeyHandler.js +0 -8
  118. package/dist/key-handlers/ClearFilterKeyHandler.js.map +1 -1
  119. package/dist/key-handlers/CopyKeyHandler.js +1 -10
  120. package/dist/key-handlers/CopyKeyHandler.js.map +1 -1
  121. package/dist/key-handlers/ReverseKeyHandler.js +0 -11
  122. package/dist/key-handlers/ReverseKeyHandler.js.map +1 -1
  123. package/dist/key-handlers/index.js.map +1 -1
  124. package/dist/mousehandlers/IrisGridCellOverflowMouseHandler.js +2 -32
  125. package/dist/mousehandlers/IrisGridCellOverflowMouseHandler.js.map +1 -1
  126. package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.js +4 -34
  127. package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.js.map +1 -1
  128. package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.js +0 -20
  129. package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.js.map +1 -1
  130. package/dist/mousehandlers/IrisGridContextMenuHandler.js +15 -105
  131. package/dist/mousehandlers/IrisGridContextMenuHandler.js.map +1 -1
  132. package/dist/mousehandlers/IrisGridDataSelectMouseHandler.js +0 -9
  133. package/dist/mousehandlers/IrisGridDataSelectMouseHandler.js.map +1 -1
  134. package/dist/mousehandlers/IrisGridFilterMouseHandler.js +0 -17
  135. package/dist/mousehandlers/IrisGridFilterMouseHandler.js.map +1 -1
  136. package/dist/mousehandlers/IrisGridSortMouseHandler.js +2 -15
  137. package/dist/mousehandlers/IrisGridSortMouseHandler.js.map +1 -1
  138. package/dist/mousehandlers/PendingMouseHandler.js +0 -6
  139. package/dist/mousehandlers/PendingMouseHandler.js.map +1 -1
  140. package/dist/mousehandlers/index.js.map +1 -1
  141. package/dist/sidebar/AdvancedSettings.js.map +1 -1
  142. package/dist/sidebar/AdvancedSettingsMenu.d.ts +6 -6
  143. package/dist/sidebar/AdvancedSettingsMenu.d.ts.map +1 -1
  144. package/dist/sidebar/AdvancedSettingsMenu.js +2 -6
  145. package/dist/sidebar/AdvancedSettingsMenu.js.map +1 -1
  146. package/dist/sidebar/AdvancedSettingsType.js +0 -2
  147. package/dist/sidebar/AdvancedSettingsType.js.map +1 -1
  148. package/dist/sidebar/ChartBuilder.d.ts +2 -2
  149. package/dist/sidebar/ChartBuilder.d.ts.map +1 -1
  150. package/dist/sidebar/ChartBuilder.js +2 -46
  151. package/dist/sidebar/ChartBuilder.js.map +1 -1
  152. package/dist/sidebar/CustomColumnBuilder.d.ts +2 -2
  153. package/dist/sidebar/CustomColumnBuilder.d.ts.map +1 -1
  154. package/dist/sidebar/CustomColumnBuilder.js +6 -58
  155. package/dist/sidebar/CustomColumnBuilder.js.map +1 -1
  156. package/dist/sidebar/CustomColumnInput.js +4 -15
  157. package/dist/sidebar/CustomColumnInput.js.map +1 -1
  158. package/dist/sidebar/InputEditor.js +5 -36
  159. package/dist/sidebar/InputEditor.js.map +1 -1
  160. package/dist/sidebar/OptionType.js +0 -2
  161. package/dist/sidebar/OptionType.js.map +1 -1
  162. package/dist/sidebar/RollupRows.d.ts +3 -3
  163. package/dist/sidebar/RollupRows.d.ts.map +1 -1
  164. package/dist/sidebar/RollupRows.js +9 -65
  165. package/dist/sidebar/RollupRows.js.map +1 -1
  166. package/dist/sidebar/SelectDistinctBuilder.js +0 -13
  167. package/dist/sidebar/SelectDistinctBuilder.js.map +1 -1
  168. package/dist/sidebar/TableCsvExporter.js +0 -52
  169. package/dist/sidebar/TableCsvExporter.js.map +1 -1
  170. package/dist/sidebar/TableSaver.d.ts +1 -1
  171. package/dist/sidebar/TableSaver.d.ts.map +1 -1
  172. package/dist/sidebar/TableSaver.js +10 -123
  173. package/dist/sidebar/TableSaver.js.map +1 -1
  174. package/dist/sidebar/VisibilityOrderingBuilder.d.ts +5 -4
  175. package/dist/sidebar/VisibilityOrderingBuilder.d.ts.map +1 -1
  176. package/dist/sidebar/VisibilityOrderingBuilder.js +37 -116
  177. package/dist/sidebar/VisibilityOrderingBuilder.js.map +1 -1
  178. package/dist/sidebar/aggregations/AggregationEdit.d.ts +2 -2
  179. package/dist/sidebar/aggregations/AggregationEdit.d.ts.map +1 -1
  180. package/dist/sidebar/aggregations/AggregationEdit.js +2 -14
  181. package/dist/sidebar/aggregations/AggregationEdit.js.map +1 -1
  182. package/dist/sidebar/aggregations/AggregationOperation.js +0 -2
  183. package/dist/sidebar/aggregations/AggregationOperation.js.map +1 -1
  184. package/dist/sidebar/aggregations/AggregationUtils.js +2 -5
  185. package/dist/sidebar/aggregations/AggregationUtils.js.map +1 -1
  186. package/dist/sidebar/aggregations/Aggregations.d.ts +4 -4
  187. package/dist/sidebar/aggregations/Aggregations.d.ts.map +1 -1
  188. package/dist/sidebar/aggregations/Aggregations.js +2 -12
  189. package/dist/sidebar/aggregations/Aggregations.js.map +1 -1
  190. package/dist/sidebar/conditional-formatting/ColumnFormatEditor.d.ts +1 -1
  191. package/dist/sidebar/conditional-formatting/ColumnFormatEditor.d.ts.map +1 -1
  192. package/dist/sidebar/conditional-formatting/ColumnFormatEditor.js +2 -16
  193. package/dist/sidebar/conditional-formatting/ColumnFormatEditor.js.map +1 -1
  194. package/dist/sidebar/conditional-formatting/ConditionEditor.d.ts +1 -1
  195. package/dist/sidebar/conditional-formatting/ConditionEditor.d.ts.map +1 -1
  196. package/dist/sidebar/conditional-formatting/ConditionEditor.js +2 -35
  197. package/dist/sidebar/conditional-formatting/ConditionEditor.js.map +1 -1
  198. package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.d.ts +4 -4
  199. package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.d.ts.map +1 -1
  200. package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.js +2 -12
  201. package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.js.map +1 -1
  202. package/dist/sidebar/conditional-formatting/ConditionalFormattingAPIUtils.js +0 -3
  203. package/dist/sidebar/conditional-formatting/ConditionalFormattingAPIUtils.js.map +1 -1
  204. package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.d.ts +5 -5
  205. package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.d.ts.map +1 -1
  206. package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js +16 -26
  207. package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js.map +1 -1
  208. package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.d.ts +3 -3
  209. package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.d.ts.map +1 -1
  210. package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js +9 -172
  211. package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js.map +1 -1
  212. package/dist/sidebar/conditional-formatting/RowFormatEditor.d.ts +1 -1
  213. package/dist/sidebar/conditional-formatting/RowFormatEditor.d.ts.map +1 -1
  214. package/dist/sidebar/conditional-formatting/RowFormatEditor.js +2 -16
  215. package/dist/sidebar/conditional-formatting/RowFormatEditor.js.map +1 -1
  216. package/dist/sidebar/conditional-formatting/StyleEditor.d.ts +1 -1
  217. package/dist/sidebar/conditional-formatting/StyleEditor.d.ts.map +1 -1
  218. package/dist/sidebar/conditional-formatting/StyleEditor.js +2 -12
  219. package/dist/sidebar/conditional-formatting/StyleEditor.js.map +1 -1
  220. package/dist/sidebar/icons/BarIcon.js +0 -3
  221. package/dist/sidebar/icons/BarIcon.js.map +1 -1
  222. package/dist/sidebar/icons/FormatColumnWhereIcon.js +2 -5
  223. package/dist/sidebar/icons/FormatColumnWhereIcon.js.map +1 -1
  224. package/dist/sidebar/icons/FormatRowWhereIcon.js +2 -5
  225. package/dist/sidebar/icons/FormatRowWhereIcon.js.map +1 -1
  226. package/dist/sidebar/icons/HistogramIcon.js +0 -3
  227. package/dist/sidebar/icons/HistogramIcon.js.map +1 -1
  228. package/dist/sidebar/icons/LineIcon.js +0 -3
  229. package/dist/sidebar/icons/LineIcon.js.map +1 -1
  230. package/dist/sidebar/icons/PieIcon.js +0 -3
  231. package/dist/sidebar/icons/PieIcon.js.map +1 -1
  232. package/dist/sidebar/icons/ScatterIcon.js +0 -3
  233. package/dist/sidebar/icons/ScatterIcon.js.map +1 -1
  234. package/dist/sidebar/icons/index.js.map +1 -1
  235. package/dist/sidebar/index.js.map +1 -1
  236. package/package.json +15 -15
@@ -1,5 +1,4 @@
1
1
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
2
-
3
2
  /* eslint react/no-did-update-set-state: "off" */
4
3
  import React, { PureComponent } from 'react';
5
4
  import { Button } from '@deephaven/components';
@@ -17,31 +16,24 @@ export class AdvancedFilterCreatorFilterItem extends PureComponent {
17
16
  if (TableUtils.isNumberType(columnType) || TableUtils.isCharType(columnType)) {
18
17
  return getLabelForNumberFilter(filterType);
19
18
  }
20
-
21
19
  if (TableUtils.isTextType(columnType)) {
22
20
  return getLabelForTextFilter(filterType);
23
21
  }
24
-
25
22
  if (TableUtils.isDateType(columnType)) {
26
23
  return getLabelForDateFilter(filterType);
27
24
  }
28
-
29
25
  if (TableUtils.isBooleanType(columnType)) {
30
26
  return getLabelForBooleanFilter(filterType);
31
27
  }
32
-
33
28
  throw new Error("Unrecognized column type: ".concat(columnType));
34
29
  } catch (e) {
35
30
  log.warn(e);
36
31
  return '';
37
32
  }
38
33
  }
39
-
40
34
  constructor(props) {
41
35
  super(props);
42
-
43
36
  _defineProperty(this, "typeDropdown", void 0);
44
-
45
37
  _defineProperty(this, "getCachedIsValid", memoizeOne((column, operation, value, timeZone) => {
46
38
  try {
47
39
  // We don't want to show an error for an empty value
@@ -50,7 +42,6 @@ export class AdvancedFilterCreatorFilterItem extends PureComponent {
50
42
  return false;
51
43
  }
52
44
  }));
53
-
54
45
  this.handleDelete = this.handleDelete.bind(this);
55
46
  this.handleTypeChange = this.handleTypeChange.bind(this);
56
47
  this.handleValueChange = this.handleValueChange.bind(this);
@@ -65,32 +56,26 @@ export class AdvancedFilterCreatorFilterItem extends PureComponent {
65
56
  value: _value
66
57
  };
67
58
  }
68
-
69
59
  componentDidMount() {
70
60
  var _this$typeDropdown;
71
-
72
61
  (_this$typeDropdown = this.typeDropdown) === null || _this$typeDropdown === void 0 ? void 0 : _this$typeDropdown.focus();
73
62
  }
74
-
75
63
  componentDidUpdate(prevProps) {
76
64
  var {
77
65
  value,
78
66
  selectedType
79
67
  } = this.props;
80
-
81
68
  if (selectedType !== undefined && prevProps.selectedType !== selectedType) {
82
69
  this.setState({
83
70
  selectedType
84
71
  });
85
72
  }
86
-
87
73
  if (value !== undefined && prevProps.value !== value) {
88
74
  this.setState({
89
75
  value
90
76
  });
91
77
  }
92
78
  }
93
-
94
79
  handleTypeChange(event) {
95
80
  var selectedType = event.target.value;
96
81
  log.debug2('typeChange', selectedType);
@@ -103,13 +88,11 @@ export class AdvancedFilterCreatorFilterItem extends PureComponent {
103
88
  var {
104
89
  value
105
90
  } = this.state;
106
-
107
91
  if (value != null && value.length > 0) {
108
92
  // Don't send an update unless there's already a value entered
109
93
  onChange(selectedType, value);
110
94
  }
111
95
  }
112
-
113
96
  handleValueChange(event) {
114
97
  log.debug2('valueChange');
115
98
  var {
@@ -124,13 +107,11 @@ export class AdvancedFilterCreatorFilterItem extends PureComponent {
124
107
  var {
125
108
  selectedType
126
109
  } = this.state;
127
-
128
110
  if (selectedType != null) {
129
111
  // Don't send an update unless they've already selected a type
130
112
  onChange(selectedType, value);
131
113
  }
132
114
  }
133
-
134
115
  handleDelete() {
135
116
  log.debug('delete');
136
117
  var {
@@ -138,7 +119,6 @@ export class AdvancedFilterCreatorFilterItem extends PureComponent {
138
119
  } = this.props;
139
120
  onDelete();
140
121
  }
141
-
142
122
  render() {
143
123
  var {
144
124
  column,
@@ -152,7 +132,6 @@ export class AdvancedFilterCreatorFilterItem extends PureComponent {
152
132
  var showValueInput = !TableUtils.isBooleanType(column.type);
153
133
  var typeOptionElements = [];
154
134
  var isValid = this.getCachedIsValid(column, selectedType, value, formatter.timeZone);
155
-
156
135
  for (var i = 0; i < filterTypes.length; i += 1) {
157
136
  var _type = filterTypes[i];
158
137
  var label = AdvancedFilterCreatorFilterItem.getLabelForFilter(column.type, _type);
@@ -162,7 +141,6 @@ export class AdvancedFilterCreatorFilterItem extends PureComponent {
162
141
  }, label);
163
142
  typeOptionElements.push(element);
164
143
  }
165
-
166
144
  return /*#__PURE__*/React.createElement("div", {
167
145
  className: "advanced-filter-creator-filter-item"
168
146
  }, /*#__PURE__*/React.createElement("div", {
@@ -198,7 +176,6 @@ export class AdvancedFilterCreatorFilterItem extends PureComponent {
198
176
  tooltip: "Remove Filter"
199
177
  }))));
200
178
  }
201
-
202
179
  }
203
180
  export default AdvancedFilterCreatorFilterItem;
204
181
  //# sourceMappingURL=AdvancedFilterCreatorFilterItem.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AdvancedFilterCreatorFilterItem.js","names":["React","PureComponent","Button","getLabelForBooleanFilter","getLabelForDateFilter","getLabelForNumberFilter","getLabelForTextFilter","vsTrash","TableUtils","Log","classNames","memoizeOne","log","module","AdvancedFilterCreatorFilterItem","getLabelForFilter","columnType","filterType","isNumberType","isCharType","isTextType","isDateType","isBooleanType","Error","e","warn","constructor","props","column","operation","value","timeZone","makeAdvancedValueFilter","handleDelete","bind","handleTypeChange","handleValueChange","typeDropdown","filterTypes","selectedType","state","componentDidMount","focus","componentDidUpdate","prevProps","undefined","setState","event","target","debug2","onChange","length","debug","onDelete","render","formatter","showValueInput","type","typeOptionElements","isValid","getCachedIsValid","i","label","element","push","error"],"sources":["../src/AdvancedFilterCreatorFilterItem.tsx"],"sourcesContent":["/* eslint react/no-did-update-set-state: \"off\" */\nimport React, { PureComponent } from 'react';\nimport { Button } from '@deephaven/components';\nimport {\n getLabelForBooleanFilter,\n getLabelForDateFilter,\n getLabelForNumberFilter,\n getLabelForTextFilter,\n TypeValue as FilterTypeValue,\n} from '@deephaven/filters';\nimport { vsTrash } from '@deephaven/icons';\nimport { Column } from '@deephaven/jsapi-shim';\nimport {\n AdvancedFilterItemType,\n Formatter,\n TableUtils,\n} from '@deephaven/jsapi-utils';\nimport Log from '@deephaven/log';\nimport classNames from 'classnames';\nimport memoizeOne from 'memoize-one';\nimport './AdvancedFilterCreatorFilterItem.scss';\n\nconst log = Log.module('AdvancedFilterCreatorFilterItem');\n\nexport interface AdvancedFilterCreatorFilterItemProps {\n column: Column;\n filterTypes: FilterTypeValue[];\n onChange(type: FilterTypeValue, value: string): void;\n onDelete(): void;\n selectedType?: FilterTypeValue;\n value?: string;\n formatter: Formatter;\n}\n\nexport type AdvancedFilterCreatorFilterItemState = AdvancedFilterItemType;\n\nexport class AdvancedFilterCreatorFilterItem extends PureComponent<\n AdvancedFilterCreatorFilterItemProps,\n AdvancedFilterCreatorFilterItemState\n> {\n static getLabelForFilter(\n columnType: string,\n filterType: FilterTypeValue\n ): string {\n try {\n if (\n TableUtils.isNumberType(columnType) ||\n TableUtils.isCharType(columnType)\n ) {\n return getLabelForNumberFilter(filterType);\n }\n if (TableUtils.isTextType(columnType)) {\n return getLabelForTextFilter(filterType);\n }\n if (TableUtils.isDateType(columnType)) {\n return getLabelForDateFilter(filterType);\n }\n if (TableUtils.isBooleanType(columnType)) {\n return getLabelForBooleanFilter(filterType);\n }\n throw new Error(`Unrecognized column type: ${columnType}`);\n } catch (e) {\n log.warn(e);\n return '';\n }\n }\n\n constructor(props: AdvancedFilterCreatorFilterItemProps) {\n super(props);\n\n this.handleDelete = this.handleDelete.bind(this);\n this.handleTypeChange = this.handleTypeChange.bind(this);\n this.handleValueChange = this.handleValueChange.bind(this);\n this.typeDropdown = null;\n\n const { value = '', filterTypes, selectedType = filterTypes[0] } = props;\n\n this.state = {\n selectedType,\n value,\n };\n }\n\n componentDidMount(): void {\n this.typeDropdown?.focus();\n }\n\n componentDidUpdate(prevProps: AdvancedFilterCreatorFilterItemProps): void {\n const { value, selectedType } = this.props;\n if (selectedType !== undefined && prevProps.selectedType !== selectedType) {\n this.setState({ selectedType });\n }\n if (value !== undefined && prevProps.value !== value) {\n this.setState({ value });\n }\n }\n\n typeDropdown: HTMLSelectElement | null;\n\n handleTypeChange(event: React.ChangeEvent<HTMLSelectElement>): void {\n const selectedType = event.target.value as FilterTypeValue;\n log.debug2('typeChange', selectedType);\n this.setState({ selectedType });\n\n const { onChange } = this.props;\n const { value } = this.state;\n if (value != null && value.length > 0) {\n // Don't send an update unless there's already a value entered\n onChange(selectedType, value);\n }\n }\n\n handleValueChange(event: React.ChangeEvent<HTMLInputElement>): void {\n log.debug2('valueChange');\n const { value } = event.target;\n this.setState({ value });\n\n const { onChange } = this.props;\n const { selectedType } = this.state;\n if (selectedType != null) {\n // Don't send an update unless they've already selected a type\n onChange(selectedType, value);\n }\n }\n\n handleDelete(): void {\n log.debug('delete');\n\n const { onDelete } = this.props;\n onDelete();\n }\n\n getCachedIsValid = memoizeOne(\n (\n column: Column,\n operation: FilterTypeValue,\n value: string,\n timeZone: string\n ): boolean => {\n try {\n // We don't want to show an error for an empty value\n return (\n !value ||\n TableUtils.makeAdvancedValueFilter(\n column,\n operation,\n value,\n timeZone\n ) != null\n );\n } catch (e) {\n return false;\n }\n }\n );\n\n render(): JSX.Element {\n const { column, filterTypes, formatter } = this.props;\n const { selectedType, value } = this.state;\n const showValueInput = !TableUtils.isBooleanType(column.type);\n const typeOptionElements = [];\n const isValid = this.getCachedIsValid(\n column,\n selectedType,\n value,\n formatter.timeZone\n );\n for (let i = 0; i < filterTypes.length; i += 1) {\n const type = filterTypes[i];\n const label = AdvancedFilterCreatorFilterItem.getLabelForFilter(\n column.type,\n type\n );\n const element = (\n <option key={type} value={type}>\n {label}\n </option>\n );\n typeOptionElements.push(element);\n }\n\n return (\n <div className=\"advanced-filter-creator-filter-item\">\n <div className=\"form-row\">\n <div className=\"form-group col\">\n <select\n className=\"form-control custom-select\"\n value={selectedType}\n onChange={this.handleTypeChange}\n ref={typeDropdown => {\n this.typeDropdown = typeDropdown;\n }}\n >\n {typeOptionElements}\n </select>\n </div>\n {showValueInput && (\n <div className=\"form-group col\">\n <div className=\"input-group\">\n <input\n type=\"text\"\n className={classNames('form-control', { error: !isValid })}\n placeholder=\"Enter value\"\n value={value}\n onChange={this.handleValueChange}\n />\n </div>\n </div>\n )}\n <div className=\"form-group col-1 px-0\">\n <Button\n kind=\"ghost\"\n className=\"w-100 h-100 p-0 m-0\"\n onClick={this.handleDelete}\n icon={vsTrash}\n tooltip=\"Remove Filter\"\n />\n </div>\n </div>\n </div>\n );\n }\n}\n\nexport default AdvancedFilterCreatorFilterItem;\n"],"mappings":"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"}
1
+ {"version":3,"file":"AdvancedFilterCreatorFilterItem.js","names":["React","PureComponent","Button","getLabelForBooleanFilter","getLabelForDateFilter","getLabelForNumberFilter","getLabelForTextFilter","vsTrash","TableUtils","Log","classNames","memoizeOne","log","module","AdvancedFilterCreatorFilterItem","getLabelForFilter","columnType","filterType","isNumberType","isCharType","isTextType","isDateType","isBooleanType","Error","e","warn","constructor","props","column","operation","value","timeZone","makeAdvancedValueFilter","handleDelete","bind","handleTypeChange","handleValueChange","typeDropdown","filterTypes","selectedType","state","componentDidMount","focus","componentDidUpdate","prevProps","undefined","setState","event","target","debug2","onChange","length","debug","onDelete","render","formatter","showValueInput","type","typeOptionElements","isValid","getCachedIsValid","i","label","element","push","error"],"sources":["../src/AdvancedFilterCreatorFilterItem.tsx"],"sourcesContent":["/* eslint react/no-did-update-set-state: \"off\" */\nimport React, { PureComponent } from 'react';\nimport { Button } from '@deephaven/components';\nimport {\n getLabelForBooleanFilter,\n getLabelForDateFilter,\n getLabelForNumberFilter,\n getLabelForTextFilter,\n TypeValue as FilterTypeValue,\n} from '@deephaven/filters';\nimport { vsTrash } from '@deephaven/icons';\nimport { Column } from '@deephaven/jsapi-shim';\nimport {\n AdvancedFilterItemType,\n Formatter,\n TableUtils,\n} from '@deephaven/jsapi-utils';\nimport Log from '@deephaven/log';\nimport classNames from 'classnames';\nimport memoizeOne from 'memoize-one';\nimport './AdvancedFilterCreatorFilterItem.scss';\n\nconst log = Log.module('AdvancedFilterCreatorFilterItem');\n\nexport interface AdvancedFilterCreatorFilterItemProps {\n column: Column;\n filterTypes: FilterTypeValue[];\n onChange(type: FilterTypeValue, value: string): void;\n onDelete(): void;\n selectedType?: FilterTypeValue;\n value?: string;\n formatter: Formatter;\n}\n\nexport type AdvancedFilterCreatorFilterItemState = AdvancedFilterItemType;\n\nexport class AdvancedFilterCreatorFilterItem extends PureComponent<\n AdvancedFilterCreatorFilterItemProps,\n AdvancedFilterCreatorFilterItemState\n> {\n static getLabelForFilter(\n columnType: string,\n filterType: FilterTypeValue\n ): string {\n try {\n if (\n TableUtils.isNumberType(columnType) ||\n TableUtils.isCharType(columnType)\n ) {\n return getLabelForNumberFilter(filterType);\n }\n if (TableUtils.isTextType(columnType)) {\n return getLabelForTextFilter(filterType);\n }\n if (TableUtils.isDateType(columnType)) {\n return getLabelForDateFilter(filterType);\n }\n if (TableUtils.isBooleanType(columnType)) {\n return getLabelForBooleanFilter(filterType);\n }\n throw new Error(`Unrecognized column type: ${columnType}`);\n } catch (e) {\n log.warn(e);\n return '';\n }\n }\n\n constructor(props: AdvancedFilterCreatorFilterItemProps) {\n super(props);\n\n this.handleDelete = this.handleDelete.bind(this);\n this.handleTypeChange = this.handleTypeChange.bind(this);\n this.handleValueChange = this.handleValueChange.bind(this);\n this.typeDropdown = null;\n\n const { value = '', filterTypes, selectedType = filterTypes[0] } = props;\n\n this.state = {\n selectedType,\n value,\n };\n }\n\n componentDidMount(): void {\n this.typeDropdown?.focus();\n }\n\n componentDidUpdate(prevProps: AdvancedFilterCreatorFilterItemProps): void {\n const { value, selectedType } = this.props;\n if (selectedType !== undefined && prevProps.selectedType !== selectedType) {\n this.setState({ selectedType });\n }\n if (value !== undefined && prevProps.value !== value) {\n this.setState({ value });\n }\n }\n\n typeDropdown: HTMLSelectElement | null;\n\n handleTypeChange(event: React.ChangeEvent<HTMLSelectElement>): void {\n const selectedType = event.target.value as FilterTypeValue;\n log.debug2('typeChange', selectedType);\n this.setState({ selectedType });\n\n const { onChange } = this.props;\n const { value } = this.state;\n if (value != null && value.length > 0) {\n // Don't send an update unless there's already a value entered\n onChange(selectedType, value);\n }\n }\n\n handleValueChange(event: React.ChangeEvent<HTMLInputElement>): void {\n log.debug2('valueChange');\n const { value } = event.target;\n this.setState({ value });\n\n const { onChange } = this.props;\n const { selectedType } = this.state;\n if (selectedType != null) {\n // Don't send an update unless they've already selected a type\n onChange(selectedType, value);\n }\n }\n\n handleDelete(): void {\n log.debug('delete');\n\n const { onDelete } = this.props;\n onDelete();\n }\n\n getCachedIsValid = memoizeOne(\n (\n column: Column,\n operation: FilterTypeValue,\n value: string,\n timeZone: string\n ): boolean => {\n try {\n // We don't want to show an error for an empty value\n return (\n !value ||\n TableUtils.makeAdvancedValueFilter(\n column,\n operation,\n value,\n timeZone\n ) != null\n );\n } catch (e) {\n return false;\n }\n }\n );\n\n render(): JSX.Element {\n const { column, filterTypes, formatter } = this.props;\n const { selectedType, value } = this.state;\n const showValueInput = !TableUtils.isBooleanType(column.type);\n const typeOptionElements = [];\n const isValid = this.getCachedIsValid(\n column,\n selectedType,\n value,\n formatter.timeZone\n );\n for (let i = 0; i < filterTypes.length; i += 1) {\n const type = filterTypes[i];\n const label = AdvancedFilterCreatorFilterItem.getLabelForFilter(\n column.type,\n type\n );\n const element = (\n <option key={type} value={type}>\n {label}\n </option>\n );\n typeOptionElements.push(element);\n }\n\n return (\n <div className=\"advanced-filter-creator-filter-item\">\n <div className=\"form-row\">\n <div className=\"form-group col\">\n <select\n className=\"form-control custom-select\"\n value={selectedType}\n onChange={this.handleTypeChange}\n ref={typeDropdown => {\n this.typeDropdown = typeDropdown;\n }}\n >\n {typeOptionElements}\n </select>\n </div>\n {showValueInput && (\n <div className=\"form-group col\">\n <div className=\"input-group\">\n <input\n type=\"text\"\n className={classNames('form-control', { error: !isValid })}\n placeholder=\"Enter value\"\n value={value}\n onChange={this.handleValueChange}\n />\n </div>\n </div>\n )}\n <div className=\"form-group col-1 px-0\">\n <Button\n kind=\"ghost\"\n className=\"w-100 h-100 p-0 m-0\"\n onClick={this.handleDelete}\n icon={vsTrash}\n tooltip=\"Remove Filter\"\n />\n </div>\n </div>\n </div>\n );\n }\n}\n\nexport default AdvancedFilterCreatorFilterItem;\n"],"mappings":"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"}
@@ -1,5 +1,4 @@
1
1
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
2
-
3
2
  /* eslint react/no-did-update-set-state: "off" */
4
3
  import React, { PureComponent } from 'react';
5
4
  import { CSSTransition } from 'react-transition-group';
@@ -8,15 +7,11 @@ import { TableUtils } from '@deephaven/jsapi-utils';
8
7
  import { Button } from '@deephaven/components';
9
8
  import AdvancedFilterCreatorSelectValueList from "./AdvancedFilterCreatorSelectValueList.js";
10
9
  import "./AdvancedFilterCreatorSelectValue.css";
11
-
12
10
  class AdvancedFilterCreatorSelectValue extends PureComponent {
13
11
  constructor(props) {
14
12
  super(props);
15
-
16
13
  _defineProperty(this, "searchTablePromise", void 0);
17
-
18
14
  _defineProperty(this, "updateFilterTimer", void 0);
19
-
20
15
  this.handleSelectAllClick = this.handleSelectAllClick.bind(this);
21
16
  this.handleClearAllClick = this.handleClearAllClick.bind(this);
22
17
  this.handleListChange = this.handleListChange.bind(this);
@@ -33,97 +28,77 @@ class AdvancedFilterCreatorSelectValue extends PureComponent {
33
28
  searchText: ''
34
29
  };
35
30
  }
36
-
37
31
  componentDidMount() {
38
32
  this.initSearchTable();
39
33
  }
40
-
41
34
  componentDidUpdate(prevProps, prevState) {
42
35
  var {
43
36
  invertSelection,
44
37
  selectedValues,
45
38
  table
46
39
  } = this.props;
47
-
48
40
  if (prevProps.table !== table) {
49
41
  this.initSearchTable();
50
42
  }
51
-
52
43
  if (prevProps.invertSelection !== invertSelection) {
53
44
  this.setState({
54
45
  invertSelection
55
46
  });
56
47
  }
57
-
58
48
  if (prevProps.selectedValues !== selectedValues) {
59
49
  this.setState({
60
50
  selectedValues
61
51
  });
62
52
  }
63
-
64
53
  var {
65
54
  table: searchTable,
66
55
  searchText
67
56
  } = this.state;
68
-
69
57
  if (searchTable !== prevState.table) {
70
58
  if (prevState.table != null) {
71
59
  prevState.table.close();
72
60
  }
73
-
74
61
  if (searchTable != null) {
75
62
  this.startUpdateFilterTimer();
76
63
  }
77
64
  }
78
-
79
65
  if (searchText !== prevState.searchText) {
80
66
  this.startUpdateFilterTimer();
81
67
  }
82
68
  }
83
-
84
69
  componentWillUnmount() {
85
70
  var {
86
71
  table
87
72
  } = this.state;
88
-
89
73
  if (table != null) {
90
74
  table.close();
91
75
  }
92
-
93
76
  this.searchTablePromise = undefined;
94
77
  this.stopUpdateFilterTimer();
95
78
  }
96
-
97
79
  getColumnName() {
98
80
  var {
99
81
  table
100
82
  } = this.props;
101
-
102
83
  if (table != null) {
103
84
  return table.columns[0].name;
104
85
  }
105
-
106
86
  return '';
107
87
  }
108
-
109
88
  getDisplayedValuesCount() {
110
89
  var {
111
90
  invertSelection,
112
91
  selectedValues,
113
92
  table
114
93
  } = this.state;
115
-
116
94
  if (table == null) {
117
95
  return null;
118
96
  }
119
-
120
97
  if (invertSelection) {
121
98
  return table.totalSize - selectedValues.length;
122
99
  }
123
-
124
100
  return selectedValues.length;
125
101
  }
126
-
127
102
  getDisplayedValueText() {
128
103
  var count = this.getDisplayedValuesCount();
129
104
  var {
@@ -132,31 +107,24 @@ class AdvancedFilterCreatorSelectValue extends PureComponent {
132
107
  var {
133
108
  formatter
134
109
  } = this.props;
135
-
136
110
  if (count != null && table != null) {
137
111
  var formattedCount = formatter.getFormattedString(count, 'long');
138
112
  var formattedTableSize = formatter.getFormattedString(table.totalSize, 'long');
139
113
  var prefix = '';
140
-
141
114
  if (count < 1000000) {
142
115
  prefix = 'Displaying ';
143
116
  }
144
-
145
117
  return "".concat(prefix).concat(formattedCount, " of ").concat(formattedTableSize);
146
118
  }
147
-
148
119
  return null;
149
120
  }
150
-
151
121
  initSearchTable() {
152
122
  var {
153
123
  table
154
124
  } = this.props;
155
-
156
125
  if (table == null) {
157
126
  return;
158
127
  }
159
-
160
128
  var searchTablePromise = table.copy();
161
129
  this.searchTablePromise = searchTablePromise;
162
130
  this.searchTablePromise.then(searchTable => {
@@ -170,7 +138,6 @@ class AdvancedFilterCreatorSelectValue extends PureComponent {
170
138
  }
171
139
  });
172
140
  }
173
-
174
141
  handleListChange(selectedValues, invertSelection) {
175
142
  this.setState({
176
143
  selectedValues,
@@ -181,27 +148,22 @@ class AdvancedFilterCreatorSelectValue extends PureComponent {
181
148
  } = this.props;
182
149
  onChange(selectedValues, invertSelection);
183
150
  }
184
-
185
151
  handleSearchChange(event) {
186
152
  var searchText = event.target.value;
187
153
  this.setState({
188
154
  searchText
189
155
  });
190
156
  }
191
-
192
157
  handleSelectAllClick() {
193
158
  this.resetSelection(true);
194
159
  }
195
-
196
160
  handleClearAllClick() {
197
161
  this.resetSelection(false);
198
162
  }
199
-
200
163
  handleUpdateFilterTimeout() {
201
164
  this.updateFilterTimer = undefined;
202
165
  this.updateTableFilter();
203
166
  }
204
-
205
167
  resetSelection(invertSelection) {
206
168
  var selectedValues = [];
207
169
  this.setState({
@@ -213,19 +175,16 @@ class AdvancedFilterCreatorSelectValue extends PureComponent {
213
175
  } = this.props;
214
176
  onChange(selectedValues, invertSelection);
215
177
  }
216
-
217
178
  startUpdateFilterTimer() {
218
179
  this.stopUpdateFilterTimer();
219
180
  this.updateFilterTimer = setTimeout(this.handleUpdateFilterTimeout, AdvancedFilterCreatorSelectValue.searchDebounceTime);
220
181
  }
221
-
222
182
  stopUpdateFilterTimer() {
223
183
  if (this.updateFilterTimer != null) {
224
184
  clearTimeout(this.updateFilterTimer);
225
185
  this.updateFilterTimer = undefined;
226
186
  }
227
187
  }
228
-
229
188
  updateTableFilter() {
230
189
  var {
231
190
  table,
@@ -236,16 +195,12 @@ class AdvancedFilterCreatorSelectValue extends PureComponent {
236
195
  } = this.props;
237
196
  var column = table === null || table === void 0 ? void 0 : table.columns[0];
238
197
  var filters = [];
239
-
240
198
  if (column == null) {
241
199
  return;
242
200
  }
243
-
244
201
  var error;
245
-
246
202
  if (searchText.length > 0) {
247
203
  var filter = null;
248
-
249
204
  if (TableUtils.isCharType(column.type)) {
250
205
  // Just exact match for char
251
206
  filter = TableUtils.makeQuickFilter(column, searchText);
@@ -257,20 +212,17 @@ class AdvancedFilterCreatorSelectValue extends PureComponent {
257
212
  // we may want to be smarter with some other types (like dates)
258
213
  filter = TableUtils.makeQuickFilter(column, ">=".concat(searchText), timeZone);
259
214
  }
260
-
261
215
  if (filter != null) {
262
216
  filters.push(filter);
263
217
  } else {
264
218
  error = 'Invalid search text';
265
219
  }
266
220
  }
267
-
268
221
  this.setState({
269
222
  filters,
270
223
  error
271
224
  });
272
225
  }
273
-
274
226
  render() {
275
227
  var {
276
228
  error,
@@ -327,17 +279,13 @@ class AdvancedFilterCreatorSelectValue extends PureComponent {
327
279
  className: "row-count-info"
328
280
  }, displayedValuesText))));
329
281
  }
330
-
331
282
  }
332
-
333
283
  _defineProperty(AdvancedFilterCreatorSelectValue, "searchDebounceTime", 250);
334
-
335
284
  _defineProperty(AdvancedFilterCreatorSelectValue, "defaultProps", {
336
285
  invertSelection: true,
337
286
  selectedValues: [],
338
287
  onChange: () => undefined,
339
288
  showSearch: true
340
289
  });
341
-
342
290
  export default AdvancedFilterCreatorSelectValue;
343
291
  //# sourceMappingURL=AdvancedFilterCreatorSelectValue.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AdvancedFilterCreatorSelectValue.js","names":["React","PureComponent","CSSTransition","classNames","TableUtils","Button","AdvancedFilterCreatorSelectValueList","AdvancedFilterCreatorSelectValue","constructor","props","handleSelectAllClick","bind","handleClearAllClick","handleListChange","handleSearchChange","handleUpdateFilterTimeout","invertSelection","selectedValues","state","filters","searchText","componentDidMount","initSearchTable","componentDidUpdate","prevProps","prevState","table","setState","searchTable","close","startUpdateFilterTimer","componentWillUnmount","searchTablePromise","undefined","stopUpdateFilterTimer","getColumnName","columns","name","getDisplayedValuesCount","totalSize","length","getDisplayedValueText","count","formatter","formattedCount","getFormattedString","formattedTableSize","prefix","copy","then","onChange","event","target","value","resetSelection","updateFilterTimer","updateTableFilter","setTimeout","searchDebounceTime","clearTimeout","timeZone","column","error","filter","isCharType","type","makeQuickFilter","isTextType","push","render","showSearch","columnName","displayedValuesText","placeholderText"],"sources":["../src/AdvancedFilterCreatorSelectValue.tsx"],"sourcesContent":["/* eslint react/no-did-update-set-state: \"off\" */\nimport React, { PureComponent } from 'react';\nimport { CSSTransition } from 'react-transition-group';\nimport classNames from 'classnames';\nimport { Formatter, TableUtils } from '@deephaven/jsapi-utils';\nimport { FilterCondition, Table } from '@deephaven/jsapi-shim';\nimport { Button } from '@deephaven/components';\nimport AdvancedFilterCreatorSelectValueList from './AdvancedFilterCreatorSelectValueList';\nimport './AdvancedFilterCreatorSelectValue.scss';\nimport { ColumnName } from './CommonTypes';\n\ninterface AdvancedFilterCreatorSelectValueProps<T> {\n invertSelection: boolean;\n selectedValues: T[];\n table?: Table;\n formatter: Formatter;\n onChange: (selectedValues: T[], invertSelection: boolean) => void;\n showSearch: boolean;\n timeZone: string;\n}\n\ninterface AdvancedFilterCreatorSelectValueState<T> {\n error?: string;\n filters: FilterCondition[];\n invertSelection: boolean;\n selectedValues: T[];\n searchText: string;\n table?: Table;\n}\n\nclass AdvancedFilterCreatorSelectValue<T = unknown> extends PureComponent<\n AdvancedFilterCreatorSelectValueProps<T>,\n AdvancedFilterCreatorSelectValueState<T>\n> {\n static searchDebounceTime = 250;\n\n static defaultProps = {\n invertSelection: true,\n selectedValues: [],\n onChange: (): void => undefined,\n showSearch: true,\n };\n\n constructor(props: AdvancedFilterCreatorSelectValueProps<T>) {\n super(props);\n\n this.handleSelectAllClick = this.handleSelectAllClick.bind(this);\n this.handleClearAllClick = this.handleClearAllClick.bind(this);\n this.handleListChange = this.handleListChange.bind(this);\n this.handleSearchChange = this.handleSearchChange.bind(this);\n this.handleUpdateFilterTimeout = this.handleUpdateFilterTimeout.bind(this);\n\n const { invertSelection, selectedValues } = props;\n\n this.state = {\n filters: [],\n invertSelection,\n selectedValues,\n searchText: '',\n };\n }\n\n componentDidMount(): void {\n this.initSearchTable();\n }\n\n componentDidUpdate(\n prevProps: AdvancedFilterCreatorSelectValueProps<T>,\n prevState: AdvancedFilterCreatorSelectValueState<T>\n ): void {\n const { invertSelection, selectedValues, table } = this.props;\n if (prevProps.table !== table) {\n this.initSearchTable();\n }\n\n if (prevProps.invertSelection !== invertSelection) {\n this.setState({ invertSelection });\n }\n\n if (prevProps.selectedValues !== selectedValues) {\n this.setState({ selectedValues });\n }\n\n const { table: searchTable, searchText } = this.state;\n\n if (searchTable !== prevState.table) {\n if (prevState.table != null) {\n prevState.table.close();\n }\n if (searchTable != null) {\n this.startUpdateFilterTimer();\n }\n }\n\n if (searchText !== prevState.searchText) {\n this.startUpdateFilterTimer();\n }\n }\n\n componentWillUnmount(): void {\n const { table } = this.state;\n if (table != null) {\n table.close();\n }\n this.searchTablePromise = undefined;\n\n this.stopUpdateFilterTimer();\n }\n\n searchTablePromise?: Promise<Table>;\n\n updateFilterTimer?: ReturnType<typeof setTimeout>;\n\n getColumnName(): ColumnName {\n const { table } = this.props;\n if (table != null) {\n return table.columns[0].name;\n }\n return '';\n }\n\n getDisplayedValuesCount(): number | null {\n const { invertSelection, selectedValues, table } = this.state;\n if (table == null) {\n return null;\n }\n\n if (invertSelection) {\n return table.totalSize - selectedValues.length;\n }\n return selectedValues.length;\n }\n\n getDisplayedValueText(): string | null {\n const count = this.getDisplayedValuesCount();\n const { table } = this.state;\n\n const { formatter } = this.props;\n\n if (count != null && table != null) {\n const formattedCount = formatter.getFormattedString(count, 'long');\n const formattedTableSize = formatter.getFormattedString(\n table.totalSize,\n 'long'\n );\n let prefix = '';\n if (count < 1000000) {\n prefix = 'Displaying ';\n }\n return `${prefix}${formattedCount} of ${formattedTableSize}`;\n }\n return null;\n }\n\n initSearchTable(): void {\n const { table } = this.props;\n if (table == null) {\n return;\n }\n\n const searchTablePromise = table.copy();\n this.searchTablePromise = searchTablePromise;\n this.searchTablePromise.then(searchTable => {\n if (this.searchTablePromise === searchTablePromise) {\n this.setState({ table: searchTable });\n this.searchTablePromise = undefined;\n } else {\n searchTable.close();\n }\n });\n }\n\n handleListChange(selectedValues: T[], invertSelection: boolean): void {\n this.setState({ selectedValues, invertSelection });\n\n const { onChange } = this.props;\n onChange(selectedValues, invertSelection);\n }\n\n handleSearchChange(event: React.ChangeEvent<HTMLInputElement>): void {\n const searchText = event.target.value;\n this.setState({ searchText });\n }\n\n handleSelectAllClick(): void {\n this.resetSelection(true);\n }\n\n handleClearAllClick(): void {\n this.resetSelection(false);\n }\n\n handleUpdateFilterTimeout(): void {\n this.updateFilterTimer = undefined;\n this.updateTableFilter();\n }\n\n resetSelection(invertSelection: boolean): void {\n const selectedValues: T[] = [];\n\n this.setState({ invertSelection, selectedValues });\n\n const { onChange } = this.props;\n onChange(selectedValues, invertSelection);\n }\n\n startUpdateFilterTimer(): void {\n this.stopUpdateFilterTimer();\n\n this.updateFilterTimer = setTimeout(\n this.handleUpdateFilterTimeout,\n AdvancedFilterCreatorSelectValue.searchDebounceTime\n );\n }\n\n stopUpdateFilterTimer(): void {\n if (this.updateFilterTimer != null) {\n clearTimeout(this.updateFilterTimer);\n this.updateFilterTimer = undefined;\n }\n }\n\n updateTableFilter(): void {\n const { table, searchText } = this.state;\n const { timeZone } = this.props;\n const column = table?.columns[0];\n const filters = [];\n if (column == null) {\n return;\n }\n let error;\n if (searchText.length > 0) {\n let filter = null;\n if (TableUtils.isCharType(column.type)) {\n // Just exact match for char\n filter = TableUtils.makeQuickFilter(column, searchText);\n } else if (TableUtils.isTextType(column.type)) {\n // case insensitive & contains search text\n filter = TableUtils.makeQuickFilter(column, `~${searchText}`, timeZone);\n } else {\n // greater than or equal search for everything else\n // we may want to be smarter with some other types (like dates)\n filter = TableUtils.makeQuickFilter(\n column,\n `>=${searchText}`,\n timeZone\n );\n }\n\n if (filter != null) {\n filters.push(filter);\n } else {\n error = 'Invalid search text';\n }\n }\n\n this.setState({ filters, error });\n }\n\n render(): React.ReactElement {\n const {\n error,\n filters,\n invertSelection,\n selectedValues,\n searchText,\n table,\n } = this.state;\n const { formatter, showSearch } = this.props;\n const columnName = this.getColumnName();\n const displayedValuesText = this.getDisplayedValueText();\n const placeholderText = columnName ? `Find ${columnName}...` : '';\n\n return (\n <div className=\"advanced-filter-creator-select-value\">\n <div className={showSearch ? 'form-group' : ''}>\n <label htmlFor=\"advanced-filter-creator-select-value-input\">\n Select Values\n </label>\n {showSearch && (\n <input\n type=\"text\"\n className={classNames('form-control', {\n 'is-invalid': error != null,\n })}\n id=\"advanced-filter-creator-select-value-input\"\n placeholder={placeholderText}\n value={searchText}\n onChange={this.handleSearchChange}\n />\n )}\n </div>\n <AdvancedFilterCreatorSelectValueList\n table={table}\n filters={filters}\n invertSelection={invertSelection}\n selectedValues={selectedValues}\n formatter={formatter}\n onChange={this.handleListChange}\n />\n <div className=\"advanced-filter-creator-select-meta-row\">\n <div>\n <Button kind=\"ghost\" onClick={this.handleSelectAllClick}>\n Select All\n </Button>\n <Button kind=\"ghost\" onClick={this.handleClearAllClick}>\n Clear\n </Button>\n </div>\n <CSSTransition\n in={displayedValuesText != null}\n timeout={250}\n classNames=\"fade\"\n mountOnEnter\n unmountOnExit\n >\n <div className=\"row-count-info\">{displayedValuesText}</div>\n </CSSTransition>\n </div>\n </div>\n );\n }\n}\n\nexport default AdvancedFilterCreatorSelectValue;\n"],"mappings":"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"}
1
+ {"version":3,"file":"AdvancedFilterCreatorSelectValue.js","names":["React","PureComponent","CSSTransition","classNames","TableUtils","Button","AdvancedFilterCreatorSelectValueList","AdvancedFilterCreatorSelectValue","constructor","props","handleSelectAllClick","bind","handleClearAllClick","handleListChange","handleSearchChange","handleUpdateFilterTimeout","invertSelection","selectedValues","state","filters","searchText","componentDidMount","initSearchTable","componentDidUpdate","prevProps","prevState","table","setState","searchTable","close","startUpdateFilterTimer","componentWillUnmount","searchTablePromise","undefined","stopUpdateFilterTimer","getColumnName","columns","name","getDisplayedValuesCount","totalSize","length","getDisplayedValueText","count","formatter","formattedCount","getFormattedString","formattedTableSize","prefix","copy","then","onChange","event","target","value","resetSelection","updateFilterTimer","updateTableFilter","setTimeout","searchDebounceTime","clearTimeout","timeZone","column","error","filter","isCharType","type","makeQuickFilter","isTextType","push","render","showSearch","columnName","displayedValuesText","placeholderText"],"sources":["../src/AdvancedFilterCreatorSelectValue.tsx"],"sourcesContent":["/* eslint react/no-did-update-set-state: \"off\" */\nimport React, { PureComponent } from 'react';\nimport { CSSTransition } from 'react-transition-group';\nimport classNames from 'classnames';\nimport { Formatter, TableUtils } from '@deephaven/jsapi-utils';\nimport { FilterCondition, Table } from '@deephaven/jsapi-shim';\nimport { Button } from '@deephaven/components';\nimport AdvancedFilterCreatorSelectValueList from './AdvancedFilterCreatorSelectValueList';\nimport './AdvancedFilterCreatorSelectValue.scss';\nimport { ColumnName } from './CommonTypes';\n\ninterface AdvancedFilterCreatorSelectValueProps<T> {\n invertSelection: boolean;\n selectedValues: T[];\n table?: Table;\n formatter: Formatter;\n onChange: (selectedValues: T[], invertSelection: boolean) => void;\n showSearch: boolean;\n timeZone: string;\n}\n\ninterface AdvancedFilterCreatorSelectValueState<T> {\n error?: string;\n filters: FilterCondition[];\n invertSelection: boolean;\n selectedValues: T[];\n searchText: string;\n table?: Table;\n}\n\nclass AdvancedFilterCreatorSelectValue<T = unknown> extends PureComponent<\n AdvancedFilterCreatorSelectValueProps<T>,\n AdvancedFilterCreatorSelectValueState<T>\n> {\n static searchDebounceTime = 250;\n\n static defaultProps = {\n invertSelection: true,\n selectedValues: [],\n onChange: (): void => undefined,\n showSearch: true,\n };\n\n constructor(props: AdvancedFilterCreatorSelectValueProps<T>) {\n super(props);\n\n this.handleSelectAllClick = this.handleSelectAllClick.bind(this);\n this.handleClearAllClick = this.handleClearAllClick.bind(this);\n this.handleListChange = this.handleListChange.bind(this);\n this.handleSearchChange = this.handleSearchChange.bind(this);\n this.handleUpdateFilterTimeout = this.handleUpdateFilterTimeout.bind(this);\n\n const { invertSelection, selectedValues } = props;\n\n this.state = {\n filters: [],\n invertSelection,\n selectedValues,\n searchText: '',\n };\n }\n\n componentDidMount(): void {\n this.initSearchTable();\n }\n\n componentDidUpdate(\n prevProps: AdvancedFilterCreatorSelectValueProps<T>,\n prevState: AdvancedFilterCreatorSelectValueState<T>\n ): void {\n const { invertSelection, selectedValues, table } = this.props;\n if (prevProps.table !== table) {\n this.initSearchTable();\n }\n\n if (prevProps.invertSelection !== invertSelection) {\n this.setState({ invertSelection });\n }\n\n if (prevProps.selectedValues !== selectedValues) {\n this.setState({ selectedValues });\n }\n\n const { table: searchTable, searchText } = this.state;\n\n if (searchTable !== prevState.table) {\n if (prevState.table != null) {\n prevState.table.close();\n }\n if (searchTable != null) {\n this.startUpdateFilterTimer();\n }\n }\n\n if (searchText !== prevState.searchText) {\n this.startUpdateFilterTimer();\n }\n }\n\n componentWillUnmount(): void {\n const { table } = this.state;\n if (table != null) {\n table.close();\n }\n this.searchTablePromise = undefined;\n\n this.stopUpdateFilterTimer();\n }\n\n searchTablePromise?: Promise<Table>;\n\n updateFilterTimer?: ReturnType<typeof setTimeout>;\n\n getColumnName(): ColumnName {\n const { table } = this.props;\n if (table != null) {\n return table.columns[0].name;\n }\n return '';\n }\n\n getDisplayedValuesCount(): number | null {\n const { invertSelection, selectedValues, table } = this.state;\n if (table == null) {\n return null;\n }\n\n if (invertSelection) {\n return table.totalSize - selectedValues.length;\n }\n return selectedValues.length;\n }\n\n getDisplayedValueText(): string | null {\n const count = this.getDisplayedValuesCount();\n const { table } = this.state;\n\n const { formatter } = this.props;\n\n if (count != null && table != null) {\n const formattedCount = formatter.getFormattedString(count, 'long');\n const formattedTableSize = formatter.getFormattedString(\n table.totalSize,\n 'long'\n );\n let prefix = '';\n if (count < 1000000) {\n prefix = 'Displaying ';\n }\n return `${prefix}${formattedCount} of ${formattedTableSize}`;\n }\n return null;\n }\n\n initSearchTable(): void {\n const { table } = this.props;\n if (table == null) {\n return;\n }\n\n const searchTablePromise = table.copy();\n this.searchTablePromise = searchTablePromise;\n this.searchTablePromise.then(searchTable => {\n if (this.searchTablePromise === searchTablePromise) {\n this.setState({ table: searchTable });\n this.searchTablePromise = undefined;\n } else {\n searchTable.close();\n }\n });\n }\n\n handleListChange(selectedValues: T[], invertSelection: boolean): void {\n this.setState({ selectedValues, invertSelection });\n\n const { onChange } = this.props;\n onChange(selectedValues, invertSelection);\n }\n\n handleSearchChange(event: React.ChangeEvent<HTMLInputElement>): void {\n const searchText = event.target.value;\n this.setState({ searchText });\n }\n\n handleSelectAllClick(): void {\n this.resetSelection(true);\n }\n\n handleClearAllClick(): void {\n this.resetSelection(false);\n }\n\n handleUpdateFilterTimeout(): void {\n this.updateFilterTimer = undefined;\n this.updateTableFilter();\n }\n\n resetSelection(invertSelection: boolean): void {\n const selectedValues: T[] = [];\n\n this.setState({ invertSelection, selectedValues });\n\n const { onChange } = this.props;\n onChange(selectedValues, invertSelection);\n }\n\n startUpdateFilterTimer(): void {\n this.stopUpdateFilterTimer();\n\n this.updateFilterTimer = setTimeout(\n this.handleUpdateFilterTimeout,\n AdvancedFilterCreatorSelectValue.searchDebounceTime\n );\n }\n\n stopUpdateFilterTimer(): void {\n if (this.updateFilterTimer != null) {\n clearTimeout(this.updateFilterTimer);\n this.updateFilterTimer = undefined;\n }\n }\n\n updateTableFilter(): void {\n const { table, searchText } = this.state;\n const { timeZone } = this.props;\n const column = table?.columns[0];\n const filters = [];\n if (column == null) {\n return;\n }\n let error;\n if (searchText.length > 0) {\n let filter = null;\n if (TableUtils.isCharType(column.type)) {\n // Just exact match for char\n filter = TableUtils.makeQuickFilter(column, searchText);\n } else if (TableUtils.isTextType(column.type)) {\n // case insensitive & contains search text\n filter = TableUtils.makeQuickFilter(column, `~${searchText}`, timeZone);\n } else {\n // greater than or equal search for everything else\n // we may want to be smarter with some other types (like dates)\n filter = TableUtils.makeQuickFilter(\n column,\n `>=${searchText}`,\n timeZone\n );\n }\n\n if (filter != null) {\n filters.push(filter);\n } else {\n error = 'Invalid search text';\n }\n }\n\n this.setState({ filters, error });\n }\n\n render(): React.ReactElement {\n const {\n error,\n filters,\n invertSelection,\n selectedValues,\n searchText,\n table,\n } = this.state;\n const { formatter, showSearch } = this.props;\n const columnName = this.getColumnName();\n const displayedValuesText = this.getDisplayedValueText();\n const placeholderText = columnName ? `Find ${columnName}...` : '';\n\n return (\n <div className=\"advanced-filter-creator-select-value\">\n <div className={showSearch ? 'form-group' : ''}>\n <label htmlFor=\"advanced-filter-creator-select-value-input\">\n Select Values\n </label>\n {showSearch && (\n <input\n type=\"text\"\n className={classNames('form-control', {\n 'is-invalid': error != null,\n })}\n id=\"advanced-filter-creator-select-value-input\"\n placeholder={placeholderText}\n value={searchText}\n onChange={this.handleSearchChange}\n />\n )}\n </div>\n <AdvancedFilterCreatorSelectValueList\n table={table}\n filters={filters}\n invertSelection={invertSelection}\n selectedValues={selectedValues}\n formatter={formatter}\n onChange={this.handleListChange}\n />\n <div className=\"advanced-filter-creator-select-meta-row\">\n <div>\n <Button kind=\"ghost\" onClick={this.handleSelectAllClick}>\n Select All\n </Button>\n <Button kind=\"ghost\" onClick={this.handleClearAllClick}>\n Clear\n </Button>\n </div>\n <CSSTransition\n in={displayedValuesText != null}\n timeout={250}\n classNames=\"fade\"\n mountOnEnter\n unmountOnExit\n >\n <div className=\"row-count-info\">{displayedValuesText}</div>\n </CSSTransition>\n </div>\n </div>\n );\n }\n}\n\nexport default AdvancedFilterCreatorSelectValue;\n"],"mappings":"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"}
@@ -32,11 +32,7 @@ declare class AdvancedFilterCreatorSelectValueList<T = unknown> extends PureComp
32
32
  * @param value The value to search for
33
33
  * @param values The array of values to search within
34
34
  */
35
- static indexOf(value: {
36
- valueof?: unknown;
37
- }, values: {
38
- valueof?: unknown;
39
- }[]): number;
35
+ static indexOf(value: unknown, values: unknown[]): number;
40
36
  constructor(props: AdvancedFilterCreatorSelectValueListProps<T>);
41
37
  componentDidMount(): void;
42
38
  componentDidUpdate(prevProps: AdvancedFilterCreatorSelectValueListProps<T>): void;
@@ -1 +1 @@
1
- {"version":3,"file":"AdvancedFilterCreatorSelectValueList.d.ts","sourceRoot":"","sources":["../src/AdvancedFilterCreatorSelectValueList.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAE7C,OAAW,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAEL,eAAe,EACf,UAAU,EACX,MAAM,uBAAuB,CAAC;AAK/B,UAAU,yCAAyC,CAAC,CAAC;IACnD,cAAc,EAAE,CAAC,EAAE,CAAC;IACpB,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,eAAe,EAAE,OAAO,CAAC;IACzB,QAAQ,EAAE,CAAC,cAAc,EAAE,CAAC,EAAE,EAAE,eAAe,EAAE,OAAO,KAAK,IAAI,CAAC;IAClE,SAAS,EAAE,SAAS,CAAC;CACtB;AAED,UAAU,yCAAyC,CAAC,CAAC;IACnD,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,CAAC,EAAE,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;CACpB;AACD;;;GAGG;AACH,cAAM,oCAAoC,CAAC,CAAC,GAAG,OAAO,CAAE,SAAQ,aAAa,CAC3E,yCAAyC,CAAC,CAAC,CAAC,EAC5C,yCAAyC,CAAC,CAAC,CAAC,CAC7C;IACC,MAAM,CAAC,YAAY;;;wBAGH,IAAI;MAClB;IAEF;;;;OAIG;IACH,MAAM,CAAC,OAAO,CACZ,KAAK,EAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,EAC5B,MAAM,EAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,EAAE,GAC9B,MAAM;gBAkBG,KAAK,EAAE,yCAAyC,CAAC,CAAC,CAAC;IAqB/D,iBAAiB,IAAI,IAAI;IAKzB,kBAAkB,CAChB,SAAS,EAAE,yCAAyC,CAAC,CAAC,CAAC,GACtD,IAAI;IAsBP,oBAAoB,IAAI,IAAI;IAK5B,IAAI,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAEhC,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IAiC/C,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAIvD,qBAAqB,IAAI,IAAI;IAI7B,iBAAiB,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI;IA8B3C,eAAe,CAAC,KAAK,EAAE,CAAC,GAAG,OAAO;IAalC,cAAc,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAIlC,aAAa,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAIjC,aAAa,IAAI,IAAI;IAMrB,mBAAmB,IAAI,IAAI;IAc3B,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,UAAQ,GAAG,IAAI;IAkBpE,MAAM,IAAI,KAAK,CAAC,YAAY;CA6B7B;AAED,eAAe,oCAAoC,CAAC"}
1
+ {"version":3,"file":"AdvancedFilterCreatorSelectValueList.d.ts","sourceRoot":"","sources":["../src/AdvancedFilterCreatorSelectValueList.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAE7C,OAAW,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAEL,eAAe,EACf,UAAU,EACX,MAAM,uBAAuB,CAAC;AAK/B,UAAU,yCAAyC,CAAC,CAAC;IACnD,cAAc,EAAE,CAAC,EAAE,CAAC;IACpB,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,eAAe,EAAE,OAAO,CAAC;IACzB,QAAQ,EAAE,CAAC,cAAc,EAAE,CAAC,EAAE,EAAE,eAAe,EAAE,OAAO,KAAK,IAAI,CAAC;IAClE,SAAS,EAAE,SAAS,CAAC;CACtB;AAED,UAAU,yCAAyC,CAAC,CAAC;IACnD,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,CAAC,EAAE,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;CACpB;AACD;;;GAGG;AACH,cAAM,oCAAoC,CAAC,CAAC,GAAG,OAAO,CAAE,SAAQ,aAAa,CAC3E,yCAAyC,CAAC,CAAC,CAAC,EAC5C,yCAAyC,CAAC,CAAC,CAAC,CAC7C;IACC,MAAM,CAAC,YAAY;;;wBAGH,IAAI;MAClB;IAEF;;;;OAIG;IACH,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM;gBAkB7C,KAAK,EAAE,yCAAyC,CAAC,CAAC,CAAC;IAqB/D,iBAAiB,IAAI,IAAI;IAKzB,kBAAkB,CAChB,SAAS,EAAE,yCAAyC,CAAC,CAAC,CAAC,GACtD,IAAI;IAsBP,oBAAoB,IAAI,IAAI;IAK5B,IAAI,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAEhC,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IAiC/C,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAIvD,qBAAqB,IAAI,IAAI;IAI7B,iBAAiB,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI;IA8B3C,eAAe,CAAC,KAAK,EAAE,CAAC,GAAG,OAAO;IAalC,cAAc,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAIlC,aAAa,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAIjC,aAAa,IAAI,IAAI;IAMrB,mBAAmB,IAAI,IAAI;IAc3B,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,UAAQ,GAAG,IAAI;IAkBpE,MAAM,IAAI,KAAK,CAAC,YAAY;CA6B7B;AAED,eAAe,oCAAoC,CAAC"}