@deephaven/iris-grid 0.22.3-beta.15 → 0.22.3-beta.21

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 (209) hide show
  1. package/dist/AdvancedFilterCreator.js +7 -65
  2. package/dist/AdvancedFilterCreator.js.map +1 -1
  3. package/dist/AdvancedFilterCreatorFilterItem.js +0 -23
  4. package/dist/AdvancedFilterCreatorFilterItem.js.map +1 -1
  5. package/dist/AdvancedFilterCreatorSelectValue.js +0 -52
  6. package/dist/AdvancedFilterCreatorSelectValue.js.map +1 -1
  7. package/dist/AdvancedFilterCreatorSelectValueList.js +2 -42
  8. package/dist/AdvancedFilterCreatorSelectValueList.js.map +1 -1
  9. package/dist/ColumnHeaderGroup.js +0 -11
  10. package/dist/ColumnHeaderGroup.js.map +1 -1
  11. package/dist/ColumnStatistics.js +1 -20
  12. package/dist/ColumnStatistics.js.map +1 -1
  13. package/dist/CrossColumnSearch.js +2 -23
  14. package/dist/CrossColumnSearch.js.map +1 -1
  15. package/dist/FilterInputField.js +2 -36
  16. package/dist/FilterInputField.js.map +1 -1
  17. package/dist/GotoRow.d.ts +1 -1
  18. package/dist/GotoRow.d.ts.map +1 -1
  19. package/dist/GotoRow.js +2 -7
  20. package/dist/GotoRow.js.map +1 -1
  21. package/dist/IrisGrid.d.ts +41 -35
  22. package/dist/IrisGrid.d.ts.map +1 -1
  23. package/dist/IrisGrid.js +77 -519
  24. package/dist/IrisGrid.js.map +1 -1
  25. package/dist/IrisGridBottomBar.d.ts +1 -1
  26. package/dist/IrisGridBottomBar.d.ts.map +1 -1
  27. package/dist/IrisGridBottomBar.js +2 -2
  28. package/dist/IrisGridBottomBar.js.map +1 -1
  29. package/dist/IrisGridCellOverflowModal.js +6 -21
  30. package/dist/IrisGridCellOverflowModal.js.map +1 -1
  31. package/dist/IrisGridCopyHandler.js +3 -50
  32. package/dist/IrisGridCopyHandler.js.map +1 -1
  33. package/dist/IrisGridMetricCalculator.js +2 -12
  34. package/dist/IrisGridMetricCalculator.js.map +1 -1
  35. package/dist/IrisGridModel.js +32 -58
  36. package/dist/IrisGridModel.js.map +1 -1
  37. package/dist/IrisGridModelFactory.js +0 -7
  38. package/dist/IrisGridModelFactory.js.map +1 -1
  39. package/dist/IrisGridModelUpdater.js +0 -4
  40. package/dist/IrisGridModelUpdater.js.map +1 -1
  41. package/dist/IrisGridPartitionSelector.js +0 -23
  42. package/dist/IrisGridPartitionSelector.js.map +1 -1
  43. package/dist/IrisGridProxyModel.js +9 -153
  44. package/dist/IrisGridProxyModel.js.map +1 -1
  45. package/dist/IrisGridRenderer.js +41 -183
  46. package/dist/IrisGridRenderer.js.map +1 -1
  47. package/dist/IrisGridShortcuts.js.map +1 -1
  48. package/dist/IrisGridTableModel.d.ts +2 -2
  49. package/dist/IrisGridTableModel.d.ts.map +1 -1
  50. package/dist/IrisGridTableModel.js +10 -90
  51. package/dist/IrisGridTableModel.js.map +1 -1
  52. package/dist/IrisGridTableModelTemplate.d.ts +2 -2
  53. package/dist/IrisGridTableModelTemplate.d.ts.map +1 -1
  54. package/dist/IrisGridTableModelTemplate.js +70 -461
  55. package/dist/IrisGridTableModelTemplate.js.map +1 -1
  56. package/dist/IrisGridTestUtils.js +0 -23
  57. package/dist/IrisGridTestUtils.js.map +1 -1
  58. package/dist/IrisGridTheme.js.map +1 -1
  59. package/dist/IrisGridTreeTableModel.js +3 -42
  60. package/dist/IrisGridTreeTableModel.js.map +1 -1
  61. package/dist/IrisGridUtils.d.ts +11 -5
  62. package/dist/IrisGridUtils.d.ts.map +1 -1
  63. package/dist/IrisGridUtils.js +98 -196
  64. package/dist/IrisGridUtils.js.map +1 -1
  65. package/dist/MissingKeyError.js +0 -7
  66. package/dist/MissingKeyError.js.map +1 -1
  67. package/dist/PartitionSelectorSearch.js +2 -48
  68. package/dist/PartitionSelectorSearch.js.map +1 -1
  69. package/dist/PendingDataBottomBar.d.ts +1 -1
  70. package/dist/PendingDataBottomBar.d.ts.map +1 -1
  71. package/dist/PendingDataBottomBar.js +2 -7
  72. package/dist/PendingDataBottomBar.js.map +1 -1
  73. package/dist/TableViewportUpdater.d.ts +2 -2
  74. package/dist/TableViewportUpdater.d.ts.map +1 -1
  75. package/dist/TableViewportUpdater.js +3 -29
  76. package/dist/TableViewportUpdater.js.map +1 -1
  77. package/dist/ToastBottomBar.d.ts +1 -1
  78. package/dist/ToastBottomBar.d.ts.map +1 -1
  79. package/dist/ToastBottomBar.js +2 -4
  80. package/dist/ToastBottomBar.js.map +1 -1
  81. package/dist/TreeTableViewportUpdater.js +0 -21
  82. package/dist/TreeTableViewportUpdater.js.map +1 -1
  83. package/dist/format-context-menus/CustomFormatAction.js +4 -25
  84. package/dist/format-context-menus/CustomFormatAction.js.map +1 -1
  85. package/dist/format-context-menus/DateTimeFormatContextMenu.js +0 -7
  86. package/dist/format-context-menus/DateTimeFormatContextMenu.js.map +1 -1
  87. package/dist/format-context-menus/DecimalFormatContextMenu.js +0 -9
  88. package/dist/format-context-menus/DecimalFormatContextMenu.js.map +1 -1
  89. package/dist/format-context-menus/FormatContextMenuUtils.js +3 -9
  90. package/dist/format-context-menus/FormatContextMenuUtils.js.map +1 -1
  91. package/dist/format-context-menus/IntegerFormatContextMenu.js +0 -8
  92. package/dist/format-context-menus/IntegerFormatContextMenu.js.map +1 -1
  93. package/dist/format-context-menus/index.js.map +1 -1
  94. package/dist/index.d.ts +3 -3
  95. package/dist/index.d.ts.map +1 -1
  96. package/dist/index.js +3 -3
  97. package/dist/index.js.map +1 -1
  98. package/dist/key-handlers/ClearFilterKeyHandler.js +0 -8
  99. package/dist/key-handlers/ClearFilterKeyHandler.js.map +1 -1
  100. package/dist/key-handlers/CopyKeyHandler.js +1 -10
  101. package/dist/key-handlers/CopyKeyHandler.js.map +1 -1
  102. package/dist/key-handlers/ReverseKeyHandler.js +0 -11
  103. package/dist/key-handlers/ReverseKeyHandler.js.map +1 -1
  104. package/dist/key-handlers/index.js.map +1 -1
  105. package/dist/mousehandlers/IrisGridCellOverflowMouseHandler.js +2 -32
  106. package/dist/mousehandlers/IrisGridCellOverflowMouseHandler.js.map +1 -1
  107. package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.js +4 -34
  108. package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.js.map +1 -1
  109. package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.js +0 -20
  110. package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.js.map +1 -1
  111. package/dist/mousehandlers/IrisGridContextMenuHandler.js +15 -105
  112. package/dist/mousehandlers/IrisGridContextMenuHandler.js.map +1 -1
  113. package/dist/mousehandlers/IrisGridDataSelectMouseHandler.js +0 -9
  114. package/dist/mousehandlers/IrisGridDataSelectMouseHandler.js.map +1 -1
  115. package/dist/mousehandlers/IrisGridFilterMouseHandler.js +0 -17
  116. package/dist/mousehandlers/IrisGridFilterMouseHandler.js.map +1 -1
  117. package/dist/mousehandlers/IrisGridSortMouseHandler.js +2 -15
  118. package/dist/mousehandlers/IrisGridSortMouseHandler.js.map +1 -1
  119. package/dist/mousehandlers/PendingMouseHandler.js +0 -6
  120. package/dist/mousehandlers/PendingMouseHandler.js.map +1 -1
  121. package/dist/mousehandlers/index.js.map +1 -1
  122. package/dist/sidebar/AdvancedSettings.js.map +1 -1
  123. package/dist/sidebar/AdvancedSettingsMenu.d.ts +4 -4
  124. package/dist/sidebar/AdvancedSettingsMenu.d.ts.map +1 -1
  125. package/dist/sidebar/AdvancedSettingsMenu.js +2 -6
  126. package/dist/sidebar/AdvancedSettingsMenu.js.map +1 -1
  127. package/dist/sidebar/AdvancedSettingsType.js +0 -2
  128. package/dist/sidebar/AdvancedSettingsType.js.map +1 -1
  129. package/dist/sidebar/ChartBuilder.js +2 -46
  130. package/dist/sidebar/ChartBuilder.js.map +1 -1
  131. package/dist/sidebar/CustomColumnBuilder.js +6 -58
  132. package/dist/sidebar/CustomColumnBuilder.js.map +1 -1
  133. package/dist/sidebar/CustomColumnInput.js +4 -15
  134. package/dist/sidebar/CustomColumnInput.js.map +1 -1
  135. package/dist/sidebar/InputEditor.js +5 -36
  136. package/dist/sidebar/InputEditor.js.map +1 -1
  137. package/dist/sidebar/OptionType.js +0 -2
  138. package/dist/sidebar/OptionType.js.map +1 -1
  139. package/dist/sidebar/RollupRows.js +9 -65
  140. package/dist/sidebar/RollupRows.js.map +1 -1
  141. package/dist/sidebar/SelectDistinctBuilder.js +0 -13
  142. package/dist/sidebar/SelectDistinctBuilder.js.map +1 -1
  143. package/dist/sidebar/TableCsvExporter.js +0 -52
  144. package/dist/sidebar/TableCsvExporter.js.map +1 -1
  145. package/dist/sidebar/TableSaver.d.ts +1 -1
  146. package/dist/sidebar/TableSaver.d.ts.map +1 -1
  147. package/dist/sidebar/TableSaver.js +10 -123
  148. package/dist/sidebar/TableSaver.js.map +1 -1
  149. package/dist/sidebar/VisibilityOrderingBuilder.d.ts +3 -2
  150. package/dist/sidebar/VisibilityOrderingBuilder.d.ts.map +1 -1
  151. package/dist/sidebar/VisibilityOrderingBuilder.js +37 -116
  152. package/dist/sidebar/VisibilityOrderingBuilder.js.map +1 -1
  153. package/dist/sidebar/aggregations/AggregationEdit.d.ts +1 -1
  154. package/dist/sidebar/aggregations/AggregationEdit.d.ts.map +1 -1
  155. package/dist/sidebar/aggregations/AggregationEdit.js +2 -14
  156. package/dist/sidebar/aggregations/AggregationEdit.js.map +1 -1
  157. package/dist/sidebar/aggregations/AggregationOperation.js +0 -2
  158. package/dist/sidebar/aggregations/AggregationOperation.js.map +1 -1
  159. package/dist/sidebar/aggregations/AggregationUtils.js +2 -5
  160. package/dist/sidebar/aggregations/AggregationUtils.js.map +1 -1
  161. package/dist/sidebar/aggregations/Aggregations.d.ts +1 -1
  162. package/dist/sidebar/aggregations/Aggregations.d.ts.map +1 -1
  163. package/dist/sidebar/aggregations/Aggregations.js +2 -12
  164. package/dist/sidebar/aggregations/Aggregations.js.map +1 -1
  165. package/dist/sidebar/conditional-formatting/ColumnFormatEditor.d.ts +1 -1
  166. package/dist/sidebar/conditional-formatting/ColumnFormatEditor.d.ts.map +1 -1
  167. package/dist/sidebar/conditional-formatting/ColumnFormatEditor.js +2 -16
  168. package/dist/sidebar/conditional-formatting/ColumnFormatEditor.js.map +1 -1
  169. package/dist/sidebar/conditional-formatting/ConditionEditor.d.ts +1 -1
  170. package/dist/sidebar/conditional-formatting/ConditionEditor.d.ts.map +1 -1
  171. package/dist/sidebar/conditional-formatting/ConditionEditor.js +2 -35
  172. package/dist/sidebar/conditional-formatting/ConditionEditor.js.map +1 -1
  173. package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.d.ts +1 -1
  174. package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.d.ts.map +1 -1
  175. package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.js +2 -12
  176. package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.js.map +1 -1
  177. package/dist/sidebar/conditional-formatting/ConditionalFormattingAPIUtils.js +0 -3
  178. package/dist/sidebar/conditional-formatting/ConditionalFormattingAPIUtils.js.map +1 -1
  179. package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.d.ts +1 -1
  180. package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.d.ts.map +1 -1
  181. package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js +16 -26
  182. package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js.map +1 -1
  183. package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js +9 -172
  184. package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js.map +1 -1
  185. package/dist/sidebar/conditional-formatting/RowFormatEditor.d.ts +1 -1
  186. package/dist/sidebar/conditional-formatting/RowFormatEditor.d.ts.map +1 -1
  187. package/dist/sidebar/conditional-formatting/RowFormatEditor.js +2 -16
  188. package/dist/sidebar/conditional-formatting/RowFormatEditor.js.map +1 -1
  189. package/dist/sidebar/conditional-formatting/StyleEditor.d.ts +1 -1
  190. package/dist/sidebar/conditional-formatting/StyleEditor.d.ts.map +1 -1
  191. package/dist/sidebar/conditional-formatting/StyleEditor.js +2 -12
  192. package/dist/sidebar/conditional-formatting/StyleEditor.js.map +1 -1
  193. package/dist/sidebar/icons/BarIcon.js +0 -3
  194. package/dist/sidebar/icons/BarIcon.js.map +1 -1
  195. package/dist/sidebar/icons/FormatColumnWhereIcon.js +2 -5
  196. package/dist/sidebar/icons/FormatColumnWhereIcon.js.map +1 -1
  197. package/dist/sidebar/icons/FormatRowWhereIcon.js +2 -5
  198. package/dist/sidebar/icons/FormatRowWhereIcon.js.map +1 -1
  199. package/dist/sidebar/icons/HistogramIcon.js +0 -3
  200. package/dist/sidebar/icons/HistogramIcon.js.map +1 -1
  201. package/dist/sidebar/icons/LineIcon.js +0 -3
  202. package/dist/sidebar/icons/LineIcon.js.map +1 -1
  203. package/dist/sidebar/icons/PieIcon.js +0 -3
  204. package/dist/sidebar/icons/PieIcon.js.map +1 -1
  205. package/dist/sidebar/icons/ScatterIcon.js +0 -3
  206. package/dist/sidebar/icons/ScatterIcon.js.map +1 -1
  207. package/dist/sidebar/icons/index.js.map +1 -1
  208. package/dist/sidebar/index.js.map +1 -1
  209. 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
  import React, { Component } from 'react';
4
3
  import PropTypes from 'prop-types';
5
4
  import debounce from 'lodash.debounce';
@@ -10,27 +9,20 @@ import { CanceledPromiseError } from '@deephaven/utils';
10
9
  import "./PartitionSelectorSearch.css";
11
10
  var log = Log.module('PartitionSelectorSearch');
12
11
  var DEBOUNCE_UPDATE_FILTER = 150;
13
-
14
12
  class PartitionSelectorSearch extends Component {
15
13
  static handleError(error) {
16
14
  if (!(error instanceof CanceledPromiseError)) {
17
15
  log.error(error);
18
16
  }
19
17
  }
20
-
21
18
  constructor(props) {
22
19
  super(props);
23
-
24
20
  _defineProperty(this, "itemList", void 0);
25
-
26
21
  _defineProperty(this, "searchInput", void 0);
27
-
28
22
  _defineProperty(this, "timer", void 0);
29
-
30
23
  _defineProperty(this, "debounceUpdateFilter", debounce(() => {
31
24
  this.updateFilter();
32
25
  }, DEBOUNCE_UPDATE_FILTER));
33
-
34
26
  this.handleFilterChange = this.handleFilterChange.bind(this);
35
27
  this.handleInputFocus = this.handleInputFocus.bind(this);
36
28
  this.handleKeyDown = this.handleKeyDown.bind(this);
@@ -50,11 +42,9 @@ class PartitionSelectorSearch extends Component {
50
42
  isLoading: true
51
43
  };
52
44
  }
53
-
54
45
  componentDidMount() {
55
46
  this.startListening();
56
47
  }
57
-
58
48
  componentDidUpdate(prevProps, prevState) {
59
49
  var {
60
50
  isLoading,
@@ -63,32 +53,26 @@ class PartitionSelectorSearch extends Component {
63
53
  var {
64
54
  onListResized
65
55
  } = this.props;
66
-
67
56
  if (itemCount !== prevState.itemCount || isLoading !== prevState.isLoading) {
68
57
  onListResized();
69
58
  }
70
59
  }
71
-
72
60
  componentWillUnmount() {
73
61
  this.debounceUpdateFilter.cancel();
74
62
  this.stopListening();
75
63
  }
76
-
77
64
  handleKeyDown(event) {
78
65
  if (this.itemList == null) {
79
66
  return false;
80
67
  }
81
-
82
68
  var {
83
69
  items,
84
70
  itemCount
85
71
  } = this.state;
86
-
87
72
  switch (event.key) {
88
73
  case 'Enter':
89
74
  {
90
75
  var selectedValue = null;
91
-
92
76
  if (items.length > 0) {
93
77
  selectedValue = items[0].value;
94
78
  } else {
@@ -97,45 +81,37 @@ class PartitionSelectorSearch extends Component {
97
81
  } = this.state;
98
82
  selectedValue = text.trim();
99
83
  }
100
-
101
84
  if (selectedValue.length > 0) {
102
85
  var {
103
86
  onSelect
104
87
  } = this.props;
105
88
  onSelect(selectedValue);
106
89
  }
107
-
108
90
  event.stopPropagation();
109
91
  event.preventDefault();
110
92
  return true;
111
93
  }
112
-
113
94
  case 'ArrowDown':
114
95
  if (itemCount > 0) {
115
96
  this.itemList.focusItem(1);
116
97
  }
117
-
118
98
  event.stopPropagation();
119
99
  event.preventDefault();
120
100
  return true;
121
-
122
101
  default:
123
102
  return false;
124
103
  }
125
104
  }
126
-
127
105
  handleListKeydown(event) {
128
106
  switch (event.key) {
129
107
  case 'Escape':
130
108
  // Do nothing
131
109
  break;
132
-
133
110
  default:
134
111
  this.focus();
135
112
  break;
136
113
  }
137
114
  }
138
-
139
115
  handleFilterChange() {
140
116
  log.debug2('handleFilterChange');
141
117
  var {
@@ -147,13 +123,11 @@ class PartitionSelectorSearch extends Component {
147
123
  isLoading: true
148
124
  });
149
125
  }
150
-
151
126
  handleInputFocus() {
152
127
  if (this.itemList) {
153
128
  this.itemList.focusItem(0);
154
129
  }
155
130
  }
156
-
157
131
  handleSelect(itemIndex) {
158
132
  log.debug2('handleSelect', itemIndex);
159
133
  var {
@@ -164,18 +138,15 @@ class PartitionSelectorSearch extends Component {
164
138
  items
165
139
  } = this.state;
166
140
  var offsetIndex = itemIndex - offset;
167
-
168
141
  if (offsetIndex < 0 || items.length <= offsetIndex) {
169
142
  log.error('No data for item', itemIndex);
170
143
  return;
171
144
  }
172
-
173
145
  var {
174
146
  value
175
147
  } = items[offsetIndex];
176
148
  onSelect(value);
177
149
  }
178
-
179
150
  handleTableUpdate(event) {
180
151
  var data = event.detail;
181
152
  var {
@@ -187,19 +158,15 @@ class PartitionSelectorSearch extends Component {
187
158
  table
188
159
  } = this.props;
189
160
  var column = table.columns[0];
190
-
191
161
  for (var r = 0; r < data.rows.length; r += 1) {
192
162
  var row = data.rows[r];
193
-
194
163
  var _value = row.get(column);
195
-
196
164
  var displayValue = getFormattedString(_value, column.type, column.name);
197
165
  items.push({
198
166
  displayValue,
199
167
  value: _value
200
168
  });
201
169
  }
202
-
203
170
  var itemCount = table.size;
204
171
  log.debug2('handleTableUpdate', itemCount, offset, items.length);
205
172
  this.setState({
@@ -209,7 +176,6 @@ class PartitionSelectorSearch extends Component {
209
176
  isLoading: false
210
177
  });
211
178
  }
212
-
213
179
  handleTextChange(event) {
214
180
  log.debug2('handleTextChange');
215
181
  var {
@@ -220,7 +186,6 @@ class PartitionSelectorSearch extends Component {
220
186
  });
221
187
  this.debounceUpdateFilter();
222
188
  }
223
-
224
189
  handleViewportChange(topRow, bottomRow) {
225
190
  log.debug2('handleViewportChange', topRow, bottomRow);
226
191
  var delta = Math.max(1, bottomRow - topRow);
@@ -231,13 +196,11 @@ class PartitionSelectorSearch extends Component {
231
196
  } = this.props;
232
197
  table.setViewport(top, bottom);
233
198
  }
234
-
235
199
  focus() {
236
200
  if (this.searchInput) {
237
201
  this.searchInput.focus();
238
202
  }
239
203
  }
240
-
241
204
  startListening() {
242
205
  var {
243
206
  initialPageSize,
@@ -247,7 +210,6 @@ class PartitionSelectorSearch extends Component {
247
210
  table.addEventListener(dh.Table.EVENT_FILTERCHANGED, this.handleFilterChange);
248
211
  table.setViewport(0, initialPageSize);
249
212
  }
250
-
251
213
  stopListening() {
252
214
  var {
253
215
  table
@@ -255,7 +217,6 @@ class PartitionSelectorSearch extends Component {
255
217
  table.removeEventListener(dh.Table.EVENT_UPDATED, this.handleTableUpdate);
256
218
  table.removeEventListener(dh.Table.EVENT_FILTERCHANGED, this.handleFilterChange);
257
219
  }
258
-
259
220
  updateFilter() {
260
221
  var {
261
222
  initialPageSize,
@@ -266,18 +227,15 @@ class PartitionSelectorSearch extends Component {
266
227
  } = this.state;
267
228
  var filterText = text.trim();
268
229
  var filters = [];
269
-
270
230
  if (filterText.length > 0) {
271
231
  var column = table.columns[0];
272
232
  var filter = column.filter().invoke('matches', dh.FilterValue.ofString("(?s)(?i).*\\Q".concat(filterText, "\\E.*")));
273
233
  filters.push(filter);
274
234
  }
275
-
276
235
  log.debug2('updateFilter', filters);
277
236
  table.applyFilter(filters);
278
237
  table.setViewport(0, initialPageSize);
279
238
  }
280
-
281
239
  render() {
282
240
  var {
283
241
  isLoading,
@@ -286,7 +244,8 @@ class PartitionSelectorSearch extends Component {
286
244
  offset,
287
245
  text
288
246
  } = this.state;
289
- var listHeight = Math.min(itemCount, PartitionSelectorSearch.MAX_VISIBLE_ITEMS) * ItemList.DEFAULT_ROW_HEIGHT + // Adjust for ListItem vertical padding - .375rem ~ 5.25px
247
+ var listHeight = Math.min(itemCount, PartitionSelectorSearch.MAX_VISIBLE_ITEMS) * ItemList.DEFAULT_ROW_HEIGHT +
248
+ // Adjust for ListItem vertical padding - .375rem ~ 5.25px
290
249
  11;
291
250
  return /*#__PURE__*/React.createElement("div", {
292
251
  className: "iris-grid-partition-selector-search"
@@ -325,17 +284,13 @@ class PartitionSelectorSearch extends Component {
325
284
  className: "iris-grid-partition-selector-loading"
326
285
  }, /*#__PURE__*/React.createElement(LoadingSpinner, null), "\xA0Loading..."));
327
286
  }
328
-
329
287
  }
330
-
331
288
  _defineProperty(PartitionSelectorSearch, "MAX_VISIBLE_ITEMS", 12);
332
-
333
289
  _defineProperty(PartitionSelectorSearch, "defaultProps", {
334
290
  initialPageSize: 100,
335
291
  onSelect: () => undefined,
336
292
  onListResized: () => undefined
337
293
  });
338
-
339
294
  _defineProperty(PartitionSelectorSearch, "propTypes", {
340
295
  getFormattedString: PropTypes.func.isRequired,
341
296
  table: PropTypes.shape({
@@ -354,6 +309,5 @@ _defineProperty(PartitionSelectorSearch, "propTypes", {
354
309
  onSelect: PropTypes.func,
355
310
  onListResized: PropTypes.func
356
311
  });
357
-
358
312
  export default PartitionSelectorSearch;
359
313
  //# sourceMappingURL=PartitionSelectorSearch.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PartitionSelectorSearch.js","names":["React","Component","PropTypes","debounce","dh","ItemList","LoadingSpinner","Log","CanceledPromiseError","log","module","DEBOUNCE_UPDATE_FILTER","PartitionSelectorSearch","handleError","error","constructor","props","updateFilter","handleFilterChange","bind","handleInputFocus","handleKeyDown","handleListKeydown","handleSelect","handleTableUpdate","handleTextChange","handleViewportChange","itemList","searchInput","timer","state","offset","itemCount","items","text","isLoading","componentDidMount","startListening","componentDidUpdate","prevProps","prevState","onListResized","componentWillUnmount","debounceUpdateFilter","cancel","stopListening","event","key","selectedValue","length","value","trim","onSelect","stopPropagation","preventDefault","focusItem","focus","debug2","table","size","setState","itemIndex","offsetIndex","data","detail","getFormattedString","column","columns","r","rows","row","get","displayValue","type","name","push","target","topRow","bottomRow","delta","Math","max","top","bottom","setViewport","initialPageSize","addEventListener","Table","EVENT_UPDATED","EVENT_FILTERCHANGED","removeEventListener","filterText","filters","filter","invoke","FilterValue","ofString","applyFilter","render","listHeight","min","MAX_VISIBLE_ITEMS","DEFAULT_ROW_HEIGHT","height","undefined","func","isRequired","shape","arrayOf","string","number"],"sources":["../src/PartitionSelectorSearch.tsx"],"sourcesContent":["import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport debounce from 'lodash.debounce';\nimport dh, { Table } from '@deephaven/jsapi-shim';\nimport { ItemList, LoadingSpinner } from '@deephaven/components';\nimport Log from '@deephaven/log';\nimport { CanceledPromiseError } from '@deephaven/utils';\nimport './PartitionSelectorSearch.scss';\nimport { ModelIndex } from '@deephaven/grid';\n\nconst log = Log.module('PartitionSelectorSearch');\nconst DEBOUNCE_UPDATE_FILTER = 150;\n\ninterface Item {\n value: string;\n displayValue: string;\n}\n\ninterface PartitionSelectorSearchProps<T> {\n getFormattedString: (value: T, type: string, name: string) => string;\n table: Table;\n initialPageSize: number;\n onSelect: (value: string) => void;\n onListResized: () => void;\n}\ninterface PartitionSelectorSearchState {\n offset: number;\n itemCount: number;\n items: Item[];\n text: string;\n isLoading: boolean;\n}\nclass PartitionSelectorSearch<T> extends Component<\n PartitionSelectorSearchProps<T>,\n PartitionSelectorSearchState\n> {\n static MAX_VISIBLE_ITEMS = 12;\n\n static defaultProps = {\n initialPageSize: 100,\n onSelect: (): void => undefined,\n onListResized: (): void => undefined,\n };\n\n static propTypes = {\n getFormattedString: PropTypes.func.isRequired,\n table: PropTypes.shape({\n addEventListener: PropTypes.func.isRequired,\n removeEventListener: PropTypes.func.isRequired,\n columns: PropTypes.arrayOf(\n PropTypes.shape({\n name: PropTypes.string.isRequired,\n type: PropTypes.string.isRequired,\n filter: PropTypes.func.isRequired,\n })\n ),\n size: PropTypes.number.isRequired,\n applyFilter: PropTypes.func.isRequired,\n setViewport: PropTypes.func.isRequired,\n }).isRequired,\n initialPageSize: PropTypes.number,\n onSelect: PropTypes.func,\n onListResized: PropTypes.func,\n };\n\n static handleError(error: unknown): void {\n if (!(error instanceof CanceledPromiseError)) {\n log.error(error);\n }\n }\n\n constructor(props: PartitionSelectorSearchProps<T>) {\n super(props);\n\n this.handleFilterChange = this.handleFilterChange.bind(this);\n this.handleInputFocus = this.handleInputFocus.bind(this);\n this.handleKeyDown = this.handleKeyDown.bind(this);\n this.handleListKeydown = this.handleListKeydown.bind(this);\n this.handleSelect = this.handleSelect.bind(this);\n this.handleTableUpdate = this.handleTableUpdate.bind(this);\n this.handleTextChange = this.handleTextChange.bind(this);\n this.handleViewportChange = this.handleViewportChange.bind(this);\n\n this.itemList = null;\n this.searchInput = null;\n this.timer = null;\n\n this.state = {\n offset: 0,\n itemCount: 0,\n items: [],\n text: '',\n isLoading: true,\n };\n }\n\n componentDidMount(): void {\n this.startListening();\n }\n\n componentDidUpdate(\n prevProps: PartitionSelectorSearchProps<T>,\n prevState: PartitionSelectorSearchState\n ): void {\n const { isLoading, itemCount } = this.state;\n const { onListResized } = this.props;\n if (\n itemCount !== prevState.itemCount ||\n isLoading !== prevState.isLoading\n ) {\n onListResized();\n }\n }\n\n componentWillUnmount(): void {\n this.debounceUpdateFilter.cancel();\n\n this.stopListening();\n }\n\n itemList: ItemList<Item> | null;\n\n searchInput: HTMLInputElement | null;\n\n timer: null;\n\n handleKeyDown(event: React.KeyboardEvent<HTMLInputElement>): boolean {\n if (this.itemList == null) {\n return false;\n }\n\n const { items, itemCount } = this.state;\n switch (event.key) {\n case 'Enter': {\n let selectedValue = null;\n if (items.length > 0) {\n selectedValue = items[0].value;\n } else {\n const { text } = this.state;\n selectedValue = text.trim();\n }\n\n if (selectedValue.length > 0) {\n const { onSelect } = this.props;\n onSelect(selectedValue);\n }\n\n event.stopPropagation();\n event.preventDefault();\n return true;\n }\n case 'ArrowDown':\n if (itemCount > 0) {\n this.itemList.focusItem(1);\n }\n event.stopPropagation();\n event.preventDefault();\n return true;\n default:\n return false;\n }\n }\n\n handleListKeydown(event: React.KeyboardEvent<HTMLDivElement>): void {\n switch (event.key) {\n case 'Escape':\n // Do nothing\n break;\n default:\n this.focus();\n break;\n }\n }\n\n handleFilterChange(): void {\n log.debug2('handleFilterChange');\n\n const { table } = this.props;\n const itemCount = table.size;\n this.setState({ itemCount, isLoading: true });\n }\n\n handleInputFocus(): void {\n if (this.itemList) {\n this.itemList.focusItem(0);\n }\n }\n\n handleSelect(itemIndex: ModelIndex): void {\n log.debug2('handleSelect', itemIndex);\n\n const { onSelect } = this.props;\n const { offset, items } = this.state;\n const offsetIndex = itemIndex - offset;\n if (offsetIndex < 0 || items.length <= offsetIndex) {\n log.error('No data for item', itemIndex);\n return;\n }\n\n const { value } = items[offsetIndex];\n onSelect(value);\n }\n\n handleTableUpdate(event: CustomEvent): void {\n const data = event.detail;\n const { offset } = data;\n\n const items = [] as Item[];\n const { getFormattedString, table } = this.props;\n const column = table.columns[0];\n for (let r = 0; r < data.rows.length; r += 1) {\n const row = data.rows[r];\n const value = row.get(column);\n const displayValue = getFormattedString(value, column.type, column.name);\n items.push({\n displayValue,\n value,\n });\n }\n\n const itemCount = table.size;\n log.debug2('handleTableUpdate', itemCount, offset, items.length);\n this.setState({ itemCount, items, offset, isLoading: false });\n }\n\n handleTextChange(event: React.ChangeEvent<HTMLInputElement>): void {\n log.debug2('handleTextChange');\n\n const { value: text } = event.target;\n\n this.setState({ text });\n\n this.debounceUpdateFilter();\n }\n\n handleViewportChange(topRow: number, bottomRow: number): void {\n log.debug2('handleViewportChange', topRow, bottomRow);\n\n const delta = Math.max(1, bottomRow - topRow);\n const top = Math.max(0, topRow - delta);\n const bottom = bottomRow + delta;\n\n const { table } = this.props;\n table.setViewport(top, bottom);\n }\n\n debounceUpdateFilter = debounce((): void => {\n this.updateFilter();\n }, DEBOUNCE_UPDATE_FILTER);\n\n focus(): void {\n if (this.searchInput) {\n this.searchInput.focus();\n }\n }\n\n startListening(): void {\n const { initialPageSize, table } = this.props;\n table.addEventListener(dh.Table.EVENT_UPDATED, this.handleTableUpdate);\n table.addEventListener(\n dh.Table.EVENT_FILTERCHANGED,\n this.handleFilterChange\n );\n table.setViewport(0, initialPageSize);\n }\n\n stopListening(): void {\n const { table } = this.props;\n table.removeEventListener(dh.Table.EVENT_UPDATED, this.handleTableUpdate);\n table.removeEventListener(\n dh.Table.EVENT_FILTERCHANGED,\n this.handleFilterChange\n );\n }\n\n updateFilter(): void {\n const { initialPageSize, table } = this.props;\n const { text } = this.state;\n const filterText = text.trim();\n const filters = [];\n if (filterText.length > 0) {\n const column = table.columns[0];\n const filter = column\n .filter()\n .invoke(\n 'matches',\n dh.FilterValue.ofString(`(?s)(?i).*\\\\Q${filterText}\\\\E.*`)\n );\n filters.push(filter);\n }\n\n log.debug2('updateFilter', filters);\n\n table.applyFilter(filters);\n table.setViewport(0, initialPageSize);\n }\n\n render(): JSX.Element {\n const { isLoading, itemCount, items, offset, text } = this.state;\n const listHeight =\n Math.min(itemCount, PartitionSelectorSearch.MAX_VISIBLE_ITEMS) *\n ItemList.DEFAULT_ROW_HEIGHT +\n // Adjust for ListItem vertical padding - .375rem ~ 5.25px\n 11;\n return (\n <div className=\"iris-grid-partition-selector-search\">\n <div className=\"search-container\">\n <input\n type=\"text\"\n ref={searchInput => {\n this.searchInput = searchInput;\n }}\n value={text}\n placeholder=\"Available Partitions\"\n onChange={this.handleTextChange}\n onFocus={this.handleInputFocus}\n onKeyDown={this.handleKeyDown}\n className=\"form-control input-partition\"\n />\n </div>\n {!isLoading && itemCount > 0 && (\n <div\n className=\"iris-grid-partition-selector-search-list\"\n onKeyDown={this.handleListKeydown}\n role=\"presentation\"\n style={{ height: listHeight }}\n >\n <ItemList\n ref={itemList => {\n this.itemList = itemList;\n }}\n itemCount={itemCount}\n items={items}\n offset={offset}\n onSelect={this.handleSelect}\n onViewportChange={this.handleViewportChange}\n />\n </div>\n )}\n {!isLoading && itemCount === 0 && (\n <div className=\"iris-grid-partition-selector-search-empty\">\n No results\n </div>\n )}\n {isLoading && (\n <div className=\"iris-grid-partition-selector-loading\">\n <LoadingSpinner />\n &nbsp;Loading...\n </div>\n )}\n </div>\n );\n }\n}\n\nexport default PartitionSelectorSearch;\n"],"mappings":";;AAAA,OAAOA,KAAP,IAAgBC,SAAhB,QAAiC,OAAjC;AACA,OAAOC,SAAP,MAAsB,YAAtB;AACA,OAAOC,QAAP,MAAqB,iBAArB;AACA,OAAOC,EAAP,MAA0B,uBAA1B;AACA,SAASC,QAAT,EAAmBC,cAAnB,QAAyC,uBAAzC;AACA,OAAOC,GAAP,MAAgB,gBAAhB;AACA,SAASC,oBAAT,QAAqC,kBAArC;;AAIA,IAAMC,GAAG,GAAGF,GAAG,CAACG,MAAJ,CAAW,yBAAX,CAAZ;AACA,IAAMC,sBAAsB,GAAG,GAA/B;;AAqBA,MAAMC,uBAAN,SAAyCX,SAAzC,CAGE;EA8BkB,OAAXY,WAAW,CAACC,KAAD,EAAuB;IACvC,IAAI,EAAEA,KAAK,YAAYN,oBAAnB,CAAJ,EAA8C;MAC5CC,GAAG,CAACK,KAAJ,CAAUA,KAAV;IACD;EACF;;EAEDC,WAAW,CAACC,KAAD,EAAyC;IAClD,MAAMA,KAAN;;IADkD;;IAAA;;IAAA;;IAAA,8CA+K7Bb,QAAQ,CAAC,MAAY;MAC1C,KAAKc,YAAL;IACD,CAF8B,EAE5BN,sBAF4B,CA/KqB;;IAGlD,KAAKO,kBAAL,GAA0B,KAAKA,kBAAL,CAAwBC,IAAxB,CAA6B,IAA7B,CAA1B;IACA,KAAKC,gBAAL,GAAwB,KAAKA,gBAAL,CAAsBD,IAAtB,CAA2B,IAA3B,CAAxB;IACA,KAAKE,aAAL,GAAqB,KAAKA,aAAL,CAAmBF,IAAnB,CAAwB,IAAxB,CAArB;IACA,KAAKG,iBAAL,GAAyB,KAAKA,iBAAL,CAAuBH,IAAvB,CAA4B,IAA5B,CAAzB;IACA,KAAKI,YAAL,GAAoB,KAAKA,YAAL,CAAkBJ,IAAlB,CAAuB,IAAvB,CAApB;IACA,KAAKK,iBAAL,GAAyB,KAAKA,iBAAL,CAAuBL,IAAvB,CAA4B,IAA5B,CAAzB;IACA,KAAKM,gBAAL,GAAwB,KAAKA,gBAAL,CAAsBN,IAAtB,CAA2B,IAA3B,CAAxB;IACA,KAAKO,oBAAL,GAA4B,KAAKA,oBAAL,CAA0BP,IAA1B,CAA+B,IAA/B,CAA5B;IAEA,KAAKQ,QAAL,GAAgB,IAAhB;IACA,KAAKC,WAAL,GAAmB,IAAnB;IACA,KAAKC,KAAL,GAAa,IAAb;IAEA,KAAKC,KAAL,GAAa;MACXC,MAAM,EAAE,CADG;MAEXC,SAAS,EAAE,CAFA;MAGXC,KAAK,EAAE,EAHI;MAIXC,IAAI,EAAE,EAJK;MAKXC,SAAS,EAAE;IALA,CAAb;EAOD;;EAEDC,iBAAiB,GAAS;IACxB,KAAKC,cAAL;EACD;;EAEDC,kBAAkB,CAChBC,SADgB,EAEhBC,SAFgB,EAGV;IACN,IAAM;MAAEL,SAAF;MAAaH;IAAb,IAA2B,KAAKF,KAAtC;IACA,IAAM;MAAEW;IAAF,IAAoB,KAAKzB,KAA/B;;IACA,IACEgB,SAAS,KAAKQ,SAAS,CAACR,SAAxB,IACAG,SAAS,KAAKK,SAAS,CAACL,SAF1B,EAGE;MACAM,aAAa;IACd;EACF;;EAEDC,oBAAoB,GAAS;IAC3B,KAAKC,oBAAL,CAA0BC,MAA1B;IAEA,KAAKC,aAAL;EACD;;EAQDxB,aAAa,CAACyB,KAAD,EAAwD;IACnE,IAAI,KAAKnB,QAAL,IAAiB,IAArB,EAA2B;MACzB,OAAO,KAAP;IACD;;IAED,IAAM;MAAEM,KAAF;MAASD;IAAT,IAAuB,KAAKF,KAAlC;;IACA,QAAQgB,KAAK,CAACC,GAAd;MACE,KAAK,OAAL;QAAc;UACZ,IAAIC,aAAa,GAAG,IAApB;;UACA,IAAIf,KAAK,CAACgB,MAAN,GAAe,CAAnB,EAAsB;YACpBD,aAAa,GAAGf,KAAK,CAAC,CAAD,CAAL,CAASiB,KAAzB;UACD,CAFD,MAEO;YACL,IAAM;cAAEhB;YAAF,IAAW,KAAKJ,KAAtB;YACAkB,aAAa,GAAGd,IAAI,CAACiB,IAAL,EAAhB;UACD;;UAED,IAAIH,aAAa,CAACC,MAAd,GAAuB,CAA3B,EAA8B;YAC5B,IAAM;cAAEG;YAAF,IAAe,KAAKpC,KAA1B;YACAoC,QAAQ,CAACJ,aAAD,CAAR;UACD;;UAEDF,KAAK,CAACO,eAAN;UACAP,KAAK,CAACQ,cAAN;UACA,OAAO,IAAP;QACD;;MACD,KAAK,WAAL;QACE,IAAItB,SAAS,GAAG,CAAhB,EAAmB;UACjB,KAAKL,QAAL,CAAc4B,SAAd,CAAwB,CAAxB;QACD;;QACDT,KAAK,CAACO,eAAN;QACAP,KAAK,CAACQ,cAAN;QACA,OAAO,IAAP;;MACF;QACE,OAAO,KAAP;IA3BJ;EA6BD;;EAEDhC,iBAAiB,CAACwB,KAAD,EAAmD;IAClE,QAAQA,KAAK,CAACC,GAAd;MACE,KAAK,QAAL;QACE;QACA;;MACF;QACE,KAAKS,KAAL;QACA;IANJ;EAQD;;EAEDtC,kBAAkB,GAAS;IACzBT,GAAG,CAACgD,MAAJ,CAAW,oBAAX;IAEA,IAAM;MAAEC;IAAF,IAAY,KAAK1C,KAAvB;IACA,IAAMgB,SAAS,GAAG0B,KAAK,CAACC,IAAxB;IACA,KAAKC,QAAL,CAAc;MAAE5B,SAAF;MAAaG,SAAS,EAAE;IAAxB,CAAd;EACD;;EAEDf,gBAAgB,GAAS;IACvB,IAAI,KAAKO,QAAT,EAAmB;MACjB,KAAKA,QAAL,CAAc4B,SAAd,CAAwB,CAAxB;IACD;EACF;;EAEDhC,YAAY,CAACsC,SAAD,EAA8B;IACxCpD,GAAG,CAACgD,MAAJ,CAAW,cAAX,EAA2BI,SAA3B;IAEA,IAAM;MAAET;IAAF,IAAe,KAAKpC,KAA1B;IACA,IAAM;MAAEe,MAAF;MAAUE;IAAV,IAAoB,KAAKH,KAA/B;IACA,IAAMgC,WAAW,GAAGD,SAAS,GAAG9B,MAAhC;;IACA,IAAI+B,WAAW,GAAG,CAAd,IAAmB7B,KAAK,CAACgB,MAAN,IAAgBa,WAAvC,EAAoD;MAClDrD,GAAG,CAACK,KAAJ,CAAU,kBAAV,EAA8B+C,SAA9B;MACA;IACD;;IAED,IAAM;MAAEX;IAAF,IAAYjB,KAAK,CAAC6B,WAAD,CAAvB;IACAV,QAAQ,CAACF,KAAD,CAAR;EACD;;EAED1B,iBAAiB,CAACsB,KAAD,EAA2B;IAC1C,IAAMiB,IAAI,GAAGjB,KAAK,CAACkB,MAAnB;IACA,IAAM;MAAEjC;IAAF,IAAagC,IAAnB;IAEA,IAAM9B,KAAK,GAAG,EAAd;IACA,IAAM;MAAEgC,kBAAF;MAAsBP;IAAtB,IAAgC,KAAK1C,KAA3C;IACA,IAAMkD,MAAM,GAAGR,KAAK,CAACS,OAAN,CAAc,CAAd,CAAf;;IACA,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGL,IAAI,CAACM,IAAL,CAAUpB,MAA9B,EAAsCmB,CAAC,IAAI,CAA3C,EAA8C;MAC5C,IAAME,GAAG,GAAGP,IAAI,CAACM,IAAL,CAAUD,CAAV,CAAZ;;MACA,IAAMlB,MAAK,GAAGoB,GAAG,CAACC,GAAJ,CAAQL,MAAR,CAAd;;MACA,IAAMM,YAAY,GAAGP,kBAAkB,CAACf,MAAD,EAAQgB,MAAM,CAACO,IAAf,EAAqBP,MAAM,CAACQ,IAA5B,CAAvC;MACAzC,KAAK,CAAC0C,IAAN,CAAW;QACTH,YADS;QAETtB,KAAK,EAALA;MAFS,CAAX;IAID;;IAED,IAAMlB,SAAS,GAAG0B,KAAK,CAACC,IAAxB;IACAlD,GAAG,CAACgD,MAAJ,CAAW,mBAAX,EAAgCzB,SAAhC,EAA2CD,MAA3C,EAAmDE,KAAK,CAACgB,MAAzD;IACA,KAAKW,QAAL,CAAc;MAAE5B,SAAF;MAAaC,KAAb;MAAoBF,MAApB;MAA4BI,SAAS,EAAE;IAAvC,CAAd;EACD;;EAEDV,gBAAgB,CAACqB,KAAD,EAAmD;IACjErC,GAAG,CAACgD,MAAJ,CAAW,kBAAX;IAEA,IAAM;MAAEP,KAAK,EAAEhB;IAAT,IAAkBY,KAAK,CAAC8B,MAA9B;IAEA,KAAKhB,QAAL,CAAc;MAAE1B;IAAF,CAAd;IAEA,KAAKS,oBAAL;EACD;;EAEDjB,oBAAoB,CAACmD,MAAD,EAAiBC,SAAjB,EAA0C;IAC5DrE,GAAG,CAACgD,MAAJ,CAAW,sBAAX,EAAmCoB,MAAnC,EAA2CC,SAA3C;IAEA,IAAMC,KAAK,GAAGC,IAAI,CAACC,GAAL,CAAS,CAAT,EAAYH,SAAS,GAAGD,MAAxB,CAAd;IACA,IAAMK,GAAG,GAAGF,IAAI,CAACC,GAAL,CAAS,CAAT,EAAYJ,MAAM,GAAGE,KAArB,CAAZ;IACA,IAAMI,MAAM,GAAGL,SAAS,GAAGC,KAA3B;IAEA,IAAM;MAAErB;IAAF,IAAY,KAAK1C,KAAvB;IACA0C,KAAK,CAAC0B,WAAN,CAAkBF,GAAlB,EAAuBC,MAAvB;EACD;;EAMD3B,KAAK,GAAS;IACZ,IAAI,KAAK5B,WAAT,EAAsB;MACpB,KAAKA,WAAL,CAAiB4B,KAAjB;IACD;EACF;;EAEDnB,cAAc,GAAS;IACrB,IAAM;MAAEgD,eAAF;MAAmB3B;IAAnB,IAA6B,KAAK1C,KAAxC;IACA0C,KAAK,CAAC4B,gBAAN,CAAuBlF,EAAE,CAACmF,KAAH,CAASC,aAAhC,EAA+C,KAAKhE,iBAApD;IACAkC,KAAK,CAAC4B,gBAAN,CACElF,EAAE,CAACmF,KAAH,CAASE,mBADX,EAEE,KAAKvE,kBAFP;IAIAwC,KAAK,CAAC0B,WAAN,CAAkB,CAAlB,EAAqBC,eAArB;EACD;;EAEDxC,aAAa,GAAS;IACpB,IAAM;MAAEa;IAAF,IAAY,KAAK1C,KAAvB;IACA0C,KAAK,CAACgC,mBAAN,CAA0BtF,EAAE,CAACmF,KAAH,CAASC,aAAnC,EAAkD,KAAKhE,iBAAvD;IACAkC,KAAK,CAACgC,mBAAN,CACEtF,EAAE,CAACmF,KAAH,CAASE,mBADX,EAEE,KAAKvE,kBAFP;EAID;;EAEDD,YAAY,GAAS;IACnB,IAAM;MAAEoE,eAAF;MAAmB3B;IAAnB,IAA6B,KAAK1C,KAAxC;IACA,IAAM;MAAEkB;IAAF,IAAW,KAAKJ,KAAtB;IACA,IAAM6D,UAAU,GAAGzD,IAAI,CAACiB,IAAL,EAAnB;IACA,IAAMyC,OAAO,GAAG,EAAhB;;IACA,IAAID,UAAU,CAAC1C,MAAX,GAAoB,CAAxB,EAA2B;MACzB,IAAMiB,MAAM,GAAGR,KAAK,CAACS,OAAN,CAAc,CAAd,CAAf;MACA,IAAM0B,MAAM,GAAG3B,MAAM,CAClB2B,MADY,GAEZC,MAFY,CAGX,SAHW,EAIX1F,EAAE,CAAC2F,WAAH,CAAeC,QAAf,wBAAwCL,UAAxC,WAJW,CAAf;MAMAC,OAAO,CAACjB,IAAR,CAAakB,MAAb;IACD;;IAEDpF,GAAG,CAACgD,MAAJ,CAAW,cAAX,EAA2BmC,OAA3B;IAEAlC,KAAK,CAACuC,WAAN,CAAkBL,OAAlB;IACAlC,KAAK,CAAC0B,WAAN,CAAkB,CAAlB,EAAqBC,eAArB;EACD;;EAEDa,MAAM,GAAgB;IACpB,IAAM;MAAE/D,SAAF;MAAaH,SAAb;MAAwBC,KAAxB;MAA+BF,MAA/B;MAAuCG;IAAvC,IAAgD,KAAKJ,KAA3D;IACA,IAAMqE,UAAU,GACdnB,IAAI,CAACoB,GAAL,CAASpE,SAAT,EAAoBpB,uBAAuB,CAACyF,iBAA5C,IACEhG,QAAQ,CAACiG,kBADX,GAEA;IACA,EAJF;IAKA,oBACE;MAAK,SAAS,EAAC;IAAf,gBACE;MAAK,SAAS,EAAC;IAAf,gBACE;MACE,IAAI,EAAC,MADP;MAEE,GAAG,EAAE1E,WAAW,IAAI;QAClB,KAAKA,WAAL,GAAmBA,WAAnB;MACD,CAJH;MAKE,KAAK,EAAEM,IALT;MAME,WAAW,EAAC,sBANd;MAOE,QAAQ,EAAE,KAAKT,gBAPjB;MAQE,OAAO,EAAE,KAAKL,gBARhB;MASE,SAAS,EAAE,KAAKC,aATlB;MAUE,SAAS,EAAC;IAVZ,EADF,CADF,EAeG,CAACc,SAAD,IAAcH,SAAS,GAAG,CAA1B,iBACC;MACE,SAAS,EAAC,0CADZ;MAEE,SAAS,EAAE,KAAKV,iBAFlB;MAGE,IAAI,EAAC,cAHP;MAIE,KAAK,EAAE;QAAEiF,MAAM,EAAEJ;MAAV;IAJT,gBAME,oBAAC,QAAD;MACE,GAAG,EAAExE,QAAQ,IAAI;QACf,KAAKA,QAAL,GAAgBA,QAAhB;MACD,CAHH;MAIE,SAAS,EAAEK,SAJb;MAKE,KAAK,EAAEC,KALT;MAME,MAAM,EAAEF,MANV;MAOE,QAAQ,EAAE,KAAKR,YAPjB;MAQE,gBAAgB,EAAE,KAAKG;IARzB,EANF,CAhBJ,EAkCG,CAACS,SAAD,IAAcH,SAAS,KAAK,CAA5B,iBACC;MAAK,SAAS,EAAC;IAAf,gBAnCJ,EAuCGG,SAAS,iBACR;MAAK,SAAS,EAAC;IAAf,gBACE,oBAAC,cAAD,OADF,mBAxCJ,CADF;EAgDD;;AA7TD;;gBAHIvB,uB,uBAIuB,E;;gBAJvBA,uB,kBAMkB;EACpByE,eAAe,EAAE,GADG;EAEpBjC,QAAQ,EAAE,MAAYoD,SAFF;EAGpB/D,aAAa,EAAE,MAAY+D;AAHP,C;;gBANlB5F,uB,eAYe;EACjBqD,kBAAkB,EAAE/D,SAAS,CAACuG,IAAV,CAAeC,UADlB;EAEjBhD,KAAK,EAAExD,SAAS,CAACyG,KAAV,CAAgB;IACrBrB,gBAAgB,EAAEpF,SAAS,CAACuG,IAAV,CAAeC,UADZ;IAErBhB,mBAAmB,EAAExF,SAAS,CAACuG,IAAV,CAAeC,UAFf;IAGrBvC,OAAO,EAAEjE,SAAS,CAAC0G,OAAV,CACP1G,SAAS,CAACyG,KAAV,CAAgB;MACdjC,IAAI,EAAExE,SAAS,CAAC2G,MAAV,CAAiBH,UADT;MAEdjC,IAAI,EAAEvE,SAAS,CAAC2G,MAAV,CAAiBH,UAFT;MAGdb,MAAM,EAAE3F,SAAS,CAACuG,IAAV,CAAeC;IAHT,CAAhB,CADO,CAHY;IAUrB/C,IAAI,EAAEzD,SAAS,CAAC4G,MAAV,CAAiBJ,UAVF;IAWrBT,WAAW,EAAE/F,SAAS,CAACuG,IAAV,CAAeC,UAXP;IAYrBtB,WAAW,EAAElF,SAAS,CAACuG,IAAV,CAAeC;EAZP,CAAhB,EAaJA,UAfc;EAgBjBrB,eAAe,EAAEnF,SAAS,CAAC4G,MAhBV;EAiBjB1D,QAAQ,EAAElD,SAAS,CAACuG,IAjBH;EAkBjBhE,aAAa,EAAEvC,SAAS,CAACuG;AAlBR,C;;AAuTrB,eAAe7F,uBAAf"}
1
+ {"version":3,"file":"PartitionSelectorSearch.js","names":["React","Component","PropTypes","debounce","dh","ItemList","LoadingSpinner","Log","CanceledPromiseError","log","module","DEBOUNCE_UPDATE_FILTER","PartitionSelectorSearch","handleError","error","constructor","props","updateFilter","handleFilterChange","bind","handleInputFocus","handleKeyDown","handleListKeydown","handleSelect","handleTableUpdate","handleTextChange","handleViewportChange","itemList","searchInput","timer","state","offset","itemCount","items","text","isLoading","componentDidMount","startListening","componentDidUpdate","prevProps","prevState","onListResized","componentWillUnmount","debounceUpdateFilter","cancel","stopListening","event","key","selectedValue","length","value","trim","onSelect","stopPropagation","preventDefault","focusItem","focus","debug2","table","size","setState","itemIndex","offsetIndex","data","detail","getFormattedString","column","columns","r","rows","row","get","displayValue","type","name","push","target","topRow","bottomRow","delta","Math","max","top","bottom","setViewport","initialPageSize","addEventListener","Table","EVENT_UPDATED","EVENT_FILTERCHANGED","removeEventListener","filterText","filters","filter","invoke","FilterValue","ofString","applyFilter","render","listHeight","min","MAX_VISIBLE_ITEMS","DEFAULT_ROW_HEIGHT","height","undefined","func","isRequired","shape","arrayOf","string","number"],"sources":["../src/PartitionSelectorSearch.tsx"],"sourcesContent":["import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport debounce from 'lodash.debounce';\nimport dh, { Table } from '@deephaven/jsapi-shim';\nimport { ItemList, LoadingSpinner } from '@deephaven/components';\nimport Log from '@deephaven/log';\nimport { CanceledPromiseError } from '@deephaven/utils';\nimport './PartitionSelectorSearch.scss';\nimport { ModelIndex } from '@deephaven/grid';\n\nconst log = Log.module('PartitionSelectorSearch');\nconst DEBOUNCE_UPDATE_FILTER = 150;\n\ninterface Item {\n value: string;\n displayValue: string;\n}\n\ninterface PartitionSelectorSearchProps<T> {\n getFormattedString: (value: T, type: string, name: string) => string;\n table: Table;\n initialPageSize: number;\n onSelect: (value: string) => void;\n onListResized: () => void;\n}\ninterface PartitionSelectorSearchState {\n offset: number;\n itemCount: number;\n items: Item[];\n text: string;\n isLoading: boolean;\n}\nclass PartitionSelectorSearch<T> extends Component<\n PartitionSelectorSearchProps<T>,\n PartitionSelectorSearchState\n> {\n static MAX_VISIBLE_ITEMS = 12;\n\n static defaultProps = {\n initialPageSize: 100,\n onSelect: (): void => undefined,\n onListResized: (): void => undefined,\n };\n\n static propTypes = {\n getFormattedString: PropTypes.func.isRequired,\n table: PropTypes.shape({\n addEventListener: PropTypes.func.isRequired,\n removeEventListener: PropTypes.func.isRequired,\n columns: PropTypes.arrayOf(\n PropTypes.shape({\n name: PropTypes.string.isRequired,\n type: PropTypes.string.isRequired,\n filter: PropTypes.func.isRequired,\n })\n ),\n size: PropTypes.number.isRequired,\n applyFilter: PropTypes.func.isRequired,\n setViewport: PropTypes.func.isRequired,\n }).isRequired,\n initialPageSize: PropTypes.number,\n onSelect: PropTypes.func,\n onListResized: PropTypes.func,\n };\n\n static handleError(error: unknown): void {\n if (!(error instanceof CanceledPromiseError)) {\n log.error(error);\n }\n }\n\n constructor(props: PartitionSelectorSearchProps<T>) {\n super(props);\n\n this.handleFilterChange = this.handleFilterChange.bind(this);\n this.handleInputFocus = this.handleInputFocus.bind(this);\n this.handleKeyDown = this.handleKeyDown.bind(this);\n this.handleListKeydown = this.handleListKeydown.bind(this);\n this.handleSelect = this.handleSelect.bind(this);\n this.handleTableUpdate = this.handleTableUpdate.bind(this);\n this.handleTextChange = this.handleTextChange.bind(this);\n this.handleViewportChange = this.handleViewportChange.bind(this);\n\n this.itemList = null;\n this.searchInput = null;\n this.timer = null;\n\n this.state = {\n offset: 0,\n itemCount: 0,\n items: [],\n text: '',\n isLoading: true,\n };\n }\n\n componentDidMount(): void {\n this.startListening();\n }\n\n componentDidUpdate(\n prevProps: PartitionSelectorSearchProps<T>,\n prevState: PartitionSelectorSearchState\n ): void {\n const { isLoading, itemCount } = this.state;\n const { onListResized } = this.props;\n if (\n itemCount !== prevState.itemCount ||\n isLoading !== prevState.isLoading\n ) {\n onListResized();\n }\n }\n\n componentWillUnmount(): void {\n this.debounceUpdateFilter.cancel();\n\n this.stopListening();\n }\n\n itemList: ItemList<Item> | null;\n\n searchInput: HTMLInputElement | null;\n\n timer: null;\n\n handleKeyDown(event: React.KeyboardEvent<HTMLInputElement>): boolean {\n if (this.itemList == null) {\n return false;\n }\n\n const { items, itemCount } = this.state;\n switch (event.key) {\n case 'Enter': {\n let selectedValue = null;\n if (items.length > 0) {\n selectedValue = items[0].value;\n } else {\n const { text } = this.state;\n selectedValue = text.trim();\n }\n\n if (selectedValue.length > 0) {\n const { onSelect } = this.props;\n onSelect(selectedValue);\n }\n\n event.stopPropagation();\n event.preventDefault();\n return true;\n }\n case 'ArrowDown':\n if (itemCount > 0) {\n this.itemList.focusItem(1);\n }\n event.stopPropagation();\n event.preventDefault();\n return true;\n default:\n return false;\n }\n }\n\n handleListKeydown(event: React.KeyboardEvent<HTMLDivElement>): void {\n switch (event.key) {\n case 'Escape':\n // Do nothing\n break;\n default:\n this.focus();\n break;\n }\n }\n\n handleFilterChange(): void {\n log.debug2('handleFilterChange');\n\n const { table } = this.props;\n const itemCount = table.size;\n this.setState({ itemCount, isLoading: true });\n }\n\n handleInputFocus(): void {\n if (this.itemList) {\n this.itemList.focusItem(0);\n }\n }\n\n handleSelect(itemIndex: ModelIndex): void {\n log.debug2('handleSelect', itemIndex);\n\n const { onSelect } = this.props;\n const { offset, items } = this.state;\n const offsetIndex = itemIndex - offset;\n if (offsetIndex < 0 || items.length <= offsetIndex) {\n log.error('No data for item', itemIndex);\n return;\n }\n\n const { value } = items[offsetIndex];\n onSelect(value);\n }\n\n handleTableUpdate(event: CustomEvent): void {\n const data = event.detail;\n const { offset } = data;\n\n const items = [] as Item[];\n const { getFormattedString, table } = this.props;\n const column = table.columns[0];\n for (let r = 0; r < data.rows.length; r += 1) {\n const row = data.rows[r];\n const value = row.get(column);\n const displayValue = getFormattedString(value, column.type, column.name);\n items.push({\n displayValue,\n value,\n });\n }\n\n const itemCount = table.size;\n log.debug2('handleTableUpdate', itemCount, offset, items.length);\n this.setState({ itemCount, items, offset, isLoading: false });\n }\n\n handleTextChange(event: React.ChangeEvent<HTMLInputElement>): void {\n log.debug2('handleTextChange');\n\n const { value: text } = event.target;\n\n this.setState({ text });\n\n this.debounceUpdateFilter();\n }\n\n handleViewportChange(topRow: number, bottomRow: number): void {\n log.debug2('handleViewportChange', topRow, bottomRow);\n\n const delta = Math.max(1, bottomRow - topRow);\n const top = Math.max(0, topRow - delta);\n const bottom = bottomRow + delta;\n\n const { table } = this.props;\n table.setViewport(top, bottom);\n }\n\n debounceUpdateFilter = debounce((): void => {\n this.updateFilter();\n }, DEBOUNCE_UPDATE_FILTER);\n\n focus(): void {\n if (this.searchInput) {\n this.searchInput.focus();\n }\n }\n\n startListening(): void {\n const { initialPageSize, table } = this.props;\n table.addEventListener(dh.Table.EVENT_UPDATED, this.handleTableUpdate);\n table.addEventListener(\n dh.Table.EVENT_FILTERCHANGED,\n this.handleFilterChange\n );\n table.setViewport(0, initialPageSize);\n }\n\n stopListening(): void {\n const { table } = this.props;\n table.removeEventListener(dh.Table.EVENT_UPDATED, this.handleTableUpdate);\n table.removeEventListener(\n dh.Table.EVENT_FILTERCHANGED,\n this.handleFilterChange\n );\n }\n\n updateFilter(): void {\n const { initialPageSize, table } = this.props;\n const { text } = this.state;\n const filterText = text.trim();\n const filters = [];\n if (filterText.length > 0) {\n const column = table.columns[0];\n const filter = column\n .filter()\n .invoke(\n 'matches',\n dh.FilterValue.ofString(`(?s)(?i).*\\\\Q${filterText}\\\\E.*`)\n );\n filters.push(filter);\n }\n\n log.debug2('updateFilter', filters);\n\n table.applyFilter(filters);\n table.setViewport(0, initialPageSize);\n }\n\n render(): JSX.Element {\n const { isLoading, itemCount, items, offset, text } = this.state;\n const listHeight =\n Math.min(itemCount, PartitionSelectorSearch.MAX_VISIBLE_ITEMS) *\n ItemList.DEFAULT_ROW_HEIGHT +\n // Adjust for ListItem vertical padding - .375rem ~ 5.25px\n 11;\n return (\n <div className=\"iris-grid-partition-selector-search\">\n <div className=\"search-container\">\n <input\n type=\"text\"\n ref={searchInput => {\n this.searchInput = searchInput;\n }}\n value={text}\n placeholder=\"Available Partitions\"\n onChange={this.handleTextChange}\n onFocus={this.handleInputFocus}\n onKeyDown={this.handleKeyDown}\n className=\"form-control input-partition\"\n />\n </div>\n {!isLoading && itemCount > 0 && (\n <div\n className=\"iris-grid-partition-selector-search-list\"\n onKeyDown={this.handleListKeydown}\n role=\"presentation\"\n style={{ height: listHeight }}\n >\n <ItemList\n ref={itemList => {\n this.itemList = itemList;\n }}\n itemCount={itemCount}\n items={items}\n offset={offset}\n onSelect={this.handleSelect}\n onViewportChange={this.handleViewportChange}\n />\n </div>\n )}\n {!isLoading && itemCount === 0 && (\n <div className=\"iris-grid-partition-selector-search-empty\">\n No results\n </div>\n )}\n {isLoading && (\n <div className=\"iris-grid-partition-selector-loading\">\n <LoadingSpinner />\n &nbsp;Loading...\n </div>\n )}\n </div>\n );\n }\n}\n\nexport default PartitionSelectorSearch;\n"],"mappings":"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"}
@@ -15,6 +15,6 @@ export declare type PendingDataBottomBarProps = {
15
15
  onExiting?: () => void;
16
16
  onExited?: () => void;
17
17
  };
18
- export declare const PendingDataBottomBar: ({ isSaving, onSave, onDiscard, discardTooltip, saveTooltip, error, pendingDataErrors, pendingDataMap, onEntering, onEntered, onExiting, onExited, }: PendingDataBottomBarProps) => JSX.Element;
18
+ export declare function PendingDataBottomBar({ isSaving, onSave, onDiscard, discardTooltip, saveTooltip, error, pendingDataErrors, pendingDataMap, onEntering, onEntered, onExiting, onExited, }: PendingDataBottomBarProps): JSX.Element;
19
19
  export default PendingDataBottomBar;
20
20
  //# sourceMappingURL=PendingDataBottomBar.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"PendingDataBottomBar.d.ts","sourceRoot":"","sources":["../src/PendingDataBottomBar.tsx"],"names":[],"mappings":";AAMA,OAAO,6BAA6B,CAAC;AACrC,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAM/C,oBAAY,yBAAyB,GAAG;IACtC,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,SAAS,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;IACxC,cAAc,EAAE,cAAc,CAAC;IAC/B,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;CACvB,CAAC;AAEF,eAAO,MAAM,oBAAoB,wJAa9B,yBAAyB,KAAG,WA6G9B,CAAC;AAEF,eAAe,oBAAoB,CAAC"}
1
+ {"version":3,"file":"PendingDataBottomBar.d.ts","sourceRoot":"","sources":["../src/PendingDataBottomBar.tsx"],"names":[],"mappings":";AAMA,OAAO,6BAA6B,CAAC;AACrC,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAM/C,oBAAY,yBAAyB,GAAG;IACtC,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,SAAS,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;IACxC,cAAc,EAAE,cAAc,CAAC;IAC/B,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;CACvB,CAAC;AAEF,wBAAgB,oBAAoB,CAAC,EACnC,QAAgB,EAChB,MAAM,EACN,SAAS,EACT,cAAc,EACd,WAAW,EACX,KAAK,EACL,iBAAiB,EACjB,cAAc,EACd,UAAU,EACV,SAAS,EACT,SAAS,EACT,QAAQ,GACT,EAAE,yBAAyB,GAAG,GAAG,CAAC,OAAO,CA6GzC;AAED,eAAe,oBAAoB,CAAC"}
@@ -7,7 +7,7 @@ import IrisGridBottomBar from "./IrisGridBottomBar.js";
7
7
  import "./PendingDataBottomBar.css";
8
8
  var HIDE_TIMEOUT = 3000;
9
9
  var MAX_NUMBER_ROWS_SHOWN = 5;
10
- export var PendingDataBottomBar = _ref => {
10
+ export function PendingDataBottomBar(_ref) {
11
11
  var {
12
12
  isSaving = false,
13
13
  onSave,
@@ -30,11 +30,9 @@ export var PendingDataBottomBar = _ref => {
30
30
  if (pendingDataErrors.size === 0) {
31
31
  return error;
32
32
  }
33
-
34
33
  if (pendingDataErrors.size <= MAX_NUMBER_ROWS_SHOWN) {
35
34
  return "Key can't be empty (on pending row".concat(pendingDataErrors.size > 1 ? 's' : '', " ").concat(Array.from(pendingDataErrors.keys()).join(', ').trim(), ")");
36
35
  }
37
-
38
36
  return "Key can't be empty (on ".concat(pendingDataErrors.size, " rows)");
39
37
  }, [error, pendingDataErrors]);
40
38
  useEffect(function showSuccessMessage() {
@@ -59,13 +57,11 @@ export var PendingDataBottomBar = _ref => {
59
57
  }, []);
60
58
  var pendingRowCount = pendingDataMap.size;
61
59
  var commitIcon;
62
-
63
60
  if (isSaving) {
64
61
  commitIcon = /*#__PURE__*/React.createElement(LoadingSpinner, null);
65
62
  } else if (wasSuccessShown) {
66
63
  commitIcon = vsPass;
67
64
  }
68
-
69
65
  return /*#__PURE__*/React.createElement(IrisGridBottomBar, {
70
66
  className: "pending-data-bottom-bar",
71
67
  isShown: pendingRowCount > 0 || isSuccessShown || errorMessage != null,
@@ -74,7 +70,6 @@ export var PendingDataBottomBar = _ref => {
74
70
  onExiting: onExiting,
75
71
  onExited: () => {
76
72
  setWasSuccessShown(false);
77
-
78
73
  if (_onExited) {
79
74
  _onExited();
80
75
  }
@@ -98,6 +93,6 @@ export var PendingDataBottomBar = _ref => {
98
93
  disabled: isSaving || wasSuccessShown || errorMessage != null,
99
94
  tooltip: saveTooltip
100
95
  }, isSaving && "Committing...", !isSaving && wasSuccessShown && "Success", !isSaving && !wasSuccessShown && "Commit")));
101
- };
96
+ }
102
97
  export default PendingDataBottomBar;
103
98
  //# sourceMappingURL=PendingDataBottomBar.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PendingDataBottomBar.js","names":["React","useEffect","useMemo","useRef","useState","FontAwesomeIcon","vsPass","vsWarning","Button","LoadingSpinner","usePrevious","IrisGridBottomBar","HIDE_TIMEOUT","MAX_NUMBER_ROWS_SHOWN","PendingDataBottomBar","isSaving","onSave","onDiscard","discardTooltip","saveTooltip","error","pendingDataErrors","pendingDataMap","onEntering","onEntered","onExiting","onExited","isSuccessShown","setIsSuccessShown","wasSuccessShown","setWasSuccessShown","successTimeout","prevIsSaving","errorMessage","size","Array","from","keys","join","trim","showSuccessMessage","current","setTimeout","hideSuccessMessage","clearTimeout","cleanupTimeout","undefined","pendingRowCount","commitIcon"],"sources":["../src/PendingDataBottomBar.tsx"],"sourcesContent":["import React, { useEffect, useMemo, useRef, useState } from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsPass, vsWarning } from '@deephaven/icons';\nimport { Button, LoadingSpinner } from '@deephaven/components';\nimport { usePrevious } from '@deephaven/react-hooks';\nimport IrisGridBottomBar from './IrisGridBottomBar';\nimport './PendingDataBottomBar.scss';\nimport { PendingDataMap } from './CommonTypes';\n\nconst HIDE_TIMEOUT = 3000;\n\nconst MAX_NUMBER_ROWS_SHOWN = 5;\n\nexport type PendingDataBottomBarProps = {\n onSave: () => Promise<void>;\n onDiscard: () => Promise<void>;\n discardTooltip?: string;\n saveTooltip?: string;\n isSaving?: boolean;\n error?: string | null;\n pendingDataErrors: Map<number, Error[]>;\n pendingDataMap: PendingDataMap;\n onEntering?: () => void;\n onEntered?: () => void;\n onExiting?: () => void;\n onExited?: () => void;\n};\n\nexport const PendingDataBottomBar = ({\n isSaving = false,\n onSave,\n onDiscard,\n discardTooltip,\n saveTooltip,\n error,\n pendingDataErrors,\n pendingDataMap,\n onEntering,\n onEntered,\n onExiting,\n onExited,\n}: PendingDataBottomBarProps): JSX.Element => {\n const [isSuccessShown, setIsSuccessShown] = useState(false);\n const [wasSuccessShown, setWasSuccessShown] = useState(false);\n const successTimeout = useRef<ReturnType<typeof setTimeout>>();\n const prevIsSaving = usePrevious(isSaving);\n const errorMessage = useMemo(() => {\n if (pendingDataErrors.size === 0) {\n return error;\n }\n if (pendingDataErrors.size <= MAX_NUMBER_ROWS_SHOWN) {\n return `Key can't be empty (on pending row${\n pendingDataErrors.size > 1 ? 's' : ''\n } ${Array.from(pendingDataErrors.keys()).join(', ').trim()})`;\n }\n return `Key can't be empty (on ${pendingDataErrors.size} rows)`;\n }, [error, pendingDataErrors]);\n\n useEffect(\n function showSuccessMessage() {\n if (\n prevIsSaving != null &&\n prevIsSaving &&\n !isSaving &&\n errorMessage == null\n ) {\n setIsSuccessShown(true);\n setWasSuccessShown(true);\n successTimeout.current = setTimeout(() => {\n setIsSuccessShown(false);\n }, HIDE_TIMEOUT);\n }\n },\n [errorMessage, isSaving, prevIsSaving]\n );\n\n useEffect(\n function hideSuccessMessage() {\n if (successTimeout.current && pendingDataMap.size > 0) {\n // A change just occurred while the success message was still being shown, just hide the success message\n clearTimeout(successTimeout.current);\n setIsSuccessShown(false);\n setWasSuccessShown(false);\n }\n },\n [pendingDataMap]\n );\n\n useEffect(function cleanupTimeout() {\n return () =>\n successTimeout.current ? clearTimeout(successTimeout.current) : undefined;\n }, []);\n\n const pendingRowCount = pendingDataMap.size;\n let commitIcon;\n if (isSaving) {\n commitIcon = <LoadingSpinner />;\n } else if (wasSuccessShown) {\n commitIcon = vsPass;\n }\n\n return (\n <IrisGridBottomBar\n className=\"pending-data-bottom-bar\"\n isShown={pendingRowCount > 0 || isSuccessShown || errorMessage != null}\n onEntering={onEntering}\n onEntered={onEntered}\n onExiting={onExiting}\n onExited={() => {\n setWasSuccessShown(false);\n if (onExited) {\n onExited();\n }\n }}\n >\n {errorMessage != null && errorMessage !== '' && (\n <div className=\"error-message\">\n <FontAwesomeIcon icon={vsWarning} />\n <span>{`${errorMessage}`}</span>\n </div>\n )}\n {(errorMessage == null || errorMessage === '') && (\n <div className=\"status-message\">\n {pendingRowCount > 0 && (\n <span>{`${pendingRowCount} row${\n pendingRowCount > 1 ? 's' : ''\n } pending`}</span>\n )}\n </div>\n )}\n <div className=\"buttons-container\">\n {!isSaving && !wasSuccessShown && (\n <Button kind=\"secondary\" onClick={onDiscard} tooltip={discardTooltip}>\n Discard\n </Button>\n )}\n <Button\n kind={wasSuccessShown ? 'success' : 'primary'}\n onClick={onSave}\n icon={commitIcon}\n disabled={isSaving || wasSuccessShown || errorMessage != null}\n tooltip={saveTooltip}\n >\n {isSaving && `Committing...`}\n {!isSaving && wasSuccessShown && `Success`}\n {!isSaving && !wasSuccessShown && `Commit`}\n </Button>\n </div>\n </IrisGridBottomBar>\n );\n};\n\nexport default PendingDataBottomBar;\n"],"mappings":"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"}
1
+ {"version":3,"file":"PendingDataBottomBar.js","names":["React","useEffect","useMemo","useRef","useState","FontAwesomeIcon","vsPass","vsWarning","Button","LoadingSpinner","usePrevious","IrisGridBottomBar","HIDE_TIMEOUT","MAX_NUMBER_ROWS_SHOWN","PendingDataBottomBar","isSaving","onSave","onDiscard","discardTooltip","saveTooltip","error","pendingDataErrors","pendingDataMap","onEntering","onEntered","onExiting","onExited","isSuccessShown","setIsSuccessShown","wasSuccessShown","setWasSuccessShown","successTimeout","prevIsSaving","errorMessage","size","Array","from","keys","join","trim","showSuccessMessage","current","setTimeout","hideSuccessMessage","clearTimeout","cleanupTimeout","undefined","pendingRowCount","commitIcon"],"sources":["../src/PendingDataBottomBar.tsx"],"sourcesContent":["import React, { useEffect, useMemo, useRef, useState } from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsPass, vsWarning } from '@deephaven/icons';\nimport { Button, LoadingSpinner } from '@deephaven/components';\nimport { usePrevious } from '@deephaven/react-hooks';\nimport IrisGridBottomBar from './IrisGridBottomBar';\nimport './PendingDataBottomBar.scss';\nimport { PendingDataMap } from './CommonTypes';\n\nconst HIDE_TIMEOUT = 3000;\n\nconst MAX_NUMBER_ROWS_SHOWN = 5;\n\nexport type PendingDataBottomBarProps = {\n onSave: () => Promise<void>;\n onDiscard: () => Promise<void>;\n discardTooltip?: string;\n saveTooltip?: string;\n isSaving?: boolean;\n error?: string | null;\n pendingDataErrors: Map<number, Error[]>;\n pendingDataMap: PendingDataMap;\n onEntering?: () => void;\n onEntered?: () => void;\n onExiting?: () => void;\n onExited?: () => void;\n};\n\nexport function PendingDataBottomBar({\n isSaving = false,\n onSave,\n onDiscard,\n discardTooltip,\n saveTooltip,\n error,\n pendingDataErrors,\n pendingDataMap,\n onEntering,\n onEntered,\n onExiting,\n onExited,\n}: PendingDataBottomBarProps): JSX.Element {\n const [isSuccessShown, setIsSuccessShown] = useState(false);\n const [wasSuccessShown, setWasSuccessShown] = useState(false);\n const successTimeout = useRef<ReturnType<typeof setTimeout>>();\n const prevIsSaving = usePrevious(isSaving);\n const errorMessage = useMemo(() => {\n if (pendingDataErrors.size === 0) {\n return error;\n }\n if (pendingDataErrors.size <= MAX_NUMBER_ROWS_SHOWN) {\n return `Key can't be empty (on pending row${\n pendingDataErrors.size > 1 ? 's' : ''\n } ${Array.from(pendingDataErrors.keys()).join(', ').trim()})`;\n }\n return `Key can't be empty (on ${pendingDataErrors.size} rows)`;\n }, [error, pendingDataErrors]);\n\n useEffect(\n function showSuccessMessage() {\n if (\n prevIsSaving != null &&\n prevIsSaving &&\n !isSaving &&\n errorMessage == null\n ) {\n setIsSuccessShown(true);\n setWasSuccessShown(true);\n successTimeout.current = setTimeout(() => {\n setIsSuccessShown(false);\n }, HIDE_TIMEOUT);\n }\n },\n [errorMessage, isSaving, prevIsSaving]\n );\n\n useEffect(\n function hideSuccessMessage() {\n if (successTimeout.current && pendingDataMap.size > 0) {\n // A change just occurred while the success message was still being shown, just hide the success message\n clearTimeout(successTimeout.current);\n setIsSuccessShown(false);\n setWasSuccessShown(false);\n }\n },\n [pendingDataMap]\n );\n\n useEffect(function cleanupTimeout() {\n return () =>\n successTimeout.current ? clearTimeout(successTimeout.current) : undefined;\n }, []);\n\n const pendingRowCount = pendingDataMap.size;\n let commitIcon;\n if (isSaving) {\n commitIcon = <LoadingSpinner />;\n } else if (wasSuccessShown) {\n commitIcon = vsPass;\n }\n\n return (\n <IrisGridBottomBar\n className=\"pending-data-bottom-bar\"\n isShown={pendingRowCount > 0 || isSuccessShown || errorMessage != null}\n onEntering={onEntering}\n onEntered={onEntered}\n onExiting={onExiting}\n onExited={() => {\n setWasSuccessShown(false);\n if (onExited) {\n onExited();\n }\n }}\n >\n {errorMessage != null && errorMessage !== '' && (\n <div className=\"error-message\">\n <FontAwesomeIcon icon={vsWarning} />\n <span>{`${errorMessage}`}</span>\n </div>\n )}\n {(errorMessage == null || errorMessage === '') && (\n <div className=\"status-message\">\n {pendingRowCount > 0 && (\n <span>{`${pendingRowCount} row${\n pendingRowCount > 1 ? 's' : ''\n } pending`}</span>\n )}\n </div>\n )}\n <div className=\"buttons-container\">\n {!isSaving && !wasSuccessShown && (\n <Button kind=\"secondary\" onClick={onDiscard} tooltip={discardTooltip}>\n Discard\n </Button>\n )}\n <Button\n kind={wasSuccessShown ? 'success' : 'primary'}\n onClick={onSave}\n icon={commitIcon}\n disabled={isSaving || wasSuccessShown || errorMessage != null}\n tooltip={saveTooltip}\n >\n {isSaving && `Committing...`}\n {!isSaving && wasSuccessShown && `Success`}\n {!isSaving && !wasSuccessShown && `Commit`}\n </Button>\n </div>\n </IrisGridBottomBar>\n );\n}\n\nexport default PendingDataBottomBar;\n"],"mappings":"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"}
@@ -38,8 +38,8 @@ declare class TableViewportUpdater extends PureComponent<TableViewportUpdaterPro
38
38
  componentDidUpdate(prevProps: TableViewportUpdaterProps): void;
39
39
  componentWillUnmount(): void;
40
40
  subscription?: TableViewportSubscription;
41
- getViewportRowRange: (this: any, table: any, top: any, bottom: any) => any[];
42
- getViewportColumns: (this: any, table: any, left: any, right: any, movedColumns: MoveOperation[]) => any[] | null;
41
+ getViewportRowRange: (table: Table, top: number, bottom: number) => number[];
42
+ getViewportColumns: (table: Table, left: number, right: number, movedColumns: MoveOperation[]) => Column[] | null;
43
43
  closeSubscription(): void;
44
44
  updateViewport: import("lodash").DebouncedFunc<(top: number, bottom: number, left: number, right: number, viewColumns: Column[]) => void>;
45
45
  render(): null;
@@ -1 +1 @@
1
- {"version":3,"file":"TableViewportUpdater.d.ts","sourceRoot":"","sources":["../src/TableViewportUpdater.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAGtC,OAAO,EAAa,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EACL,MAAM,EACN,eAAe,EACf,IAAI,EACJ,KAAK,EACL,yBAAyB,EAC1B,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAM3C;;;GAGG;AAEH,UAAU,yBAAyB;IACjC,KAAK,EAAE,KAAK,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,aAAa,EAAE,UAAU,EAAE,CAAC;IAC5B,YAAY,EAAE,aAAa,EAAE,CAAC;IAC9B,cAAc,EAAE,CAAC,YAAY,CAAC,EAAE,yBAAyB,KAAK,IAAI,CAAC;CACpE;AAED,cAAM,oBAAqB,SAAQ,aAAa,CAC9C,yBAAyB,EACzB,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CACtB;IAEC,MAAM,CAAC,gBAAgB,SAAK;IAE5B,MAAM,CAAC,mBAAmB,SAAK;IAE/B,MAAM,CAAC,YAAY;;;;;;8BAMG,IAAI;;;;;MAKxB;IAEF,iBAAiB,IAAI,IAAI;IAkBzB,kBAAkB,CAAC,SAAS,EAAE,yBAAyB,GAAG,IAAI;IA2C9D,oBAAoB,IAAI,IAAI;IAI5B,YAAY,CAAC,EAAE,yBAAyB,CAAC;IAGzC,mBAAmB,0DAShB;IAGH,kBAAkB,+DACmB,aAAa,EAAE,kBAwBlD;IAEF,iBAAiB,IAAI,IAAI;IAazB,cAAc,uCAEL,MAAM,UACH,MAAM,QACR,MAAM,SACL,MAAM,eACA,MAAM,EAAE,KACpB,IAAI,EA4CP;IAEF,MAAM,IAAI,IAAI;CAGf;AAED,eAAe,oBAAoB,CAAC"}
1
+ {"version":3,"file":"TableViewportUpdater.d.ts","sourceRoot":"","sources":["../src/TableViewportUpdater.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAGtC,OAAO,EAAa,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EACL,MAAM,EACN,eAAe,EACf,IAAI,EACJ,KAAK,EACL,yBAAyB,EAC1B,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAM3C;;;GAGG;AAEH,UAAU,yBAAyB;IACjC,KAAK,EAAE,KAAK,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,aAAa,EAAE,UAAU,EAAE,CAAC;IAC5B,YAAY,EAAE,aAAa,EAAE,CAAC;IAC9B,cAAc,EAAE,CAAC,YAAY,CAAC,EAAE,yBAAyB,KAAK,IAAI,CAAC;CACpE;AAED,cAAM,oBAAqB,SAAQ,aAAa,CAC9C,yBAAyB,EACzB,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CACtB;IAEC,MAAM,CAAC,gBAAgB,SAAK;IAE5B,MAAM,CAAC,mBAAmB,SAAK;IAE/B,MAAM,CAAC,YAAY;;;;;;8BAMG,IAAI;;;;;MAKxB;IAEF,iBAAiB,IAAI,IAAI;IAkBzB,kBAAkB,CAAC,SAAS,EAAE,yBAAyB,GAAG,IAAI;IA2C9D,oBAAoB,IAAI,IAAI;IAI5B,YAAY,CAAC,EAAE,yBAAyB,CAAC;IAGzC,mBAAmB,UAAmB,KAAK,OAAO,MAAM,UAAU,MAAM,cASrE;IAGH,kBAAkB,UAEP,KAAK,QACN,MAAM,SACL,MAAM,gBACC,aAAa,EAAE,qBAyB/B;IAEF,iBAAiB,IAAI,IAAI;IAazB,cAAc,uCAEL,MAAM,UACH,MAAM,QACR,MAAM,SACL,MAAM,eACA,MAAM,EAAE,KACpB,IAAI,EA4CP;IAEF,MAAM,IAAI,IAAI;CAGf;AAED,eAAe,oBAAoB,CAAC"}