@deephaven/iris-grid 1.22.1-alpha-pivot-builder.0 → 1.22.2-alpha-pivot-builder.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 (160) hide show
  1. package/dist/AdvancedFilterCreator.js +65 -102
  2. package/dist/AdvancedFilterCreator.js.map +1 -1
  3. package/dist/AdvancedFilterCreatorFilterItem.js +22 -37
  4. package/dist/AdvancedFilterCreatorFilterItem.js.map +1 -1
  5. package/dist/AdvancedFilterCreatorSelectValue.js +37 -63
  6. package/dist/AdvancedFilterCreatorSelectValue.js.map +1 -1
  7. package/dist/AdvancedFilterCreatorSelectValueList.js +29 -59
  8. package/dist/AdvancedFilterCreatorSelectValueList.js.map +1 -1
  9. package/dist/ColumnHeaderGroup.js +6 -8
  10. package/dist/ColumnHeaderGroup.js.map +1 -1
  11. package/dist/ColumnStatistics.js +22 -28
  12. package/dist/ColumnStatistics.js.map +1 -1
  13. package/dist/CrossColumnSearch.js +20 -29
  14. package/dist/CrossColumnSearch.js.map +1 -1
  15. package/dist/FilterInputField.js +19 -46
  16. package/dist/FilterInputField.js.map +1 -1
  17. package/dist/GotoRow.js +32 -29
  18. package/dist/GotoRow.js.map +1 -1
  19. package/dist/IrisGrid.js +490 -822
  20. package/dist/IrisGrid.js.map +1 -1
  21. package/dist/IrisGridBottomBar.js +10 -11
  22. package/dist/IrisGridBottomBar.js.map +1 -1
  23. package/dist/IrisGridCacheUtils.js +28 -8
  24. package/dist/IrisGridCacheUtils.js.map +1 -1
  25. package/dist/IrisGridCellOverflowModal.js +30 -13
  26. package/dist/IrisGridCellOverflowModal.js.map +1 -1
  27. package/dist/IrisGridCellRendererUtils.js +6 -12
  28. package/dist/IrisGridCellRendererUtils.js.map +1 -1
  29. package/dist/IrisGridCopyHandler.js +28 -47
  30. package/dist/IrisGridCopyHandler.js.map +1 -1
  31. package/dist/IrisGridMetricCalculator.js +28 -51
  32. package/dist/IrisGridMetricCalculator.js.map +1 -1
  33. package/dist/IrisGridModelUpdater.js +32 -30
  34. package/dist/IrisGridModelUpdater.js.map +1 -1
  35. package/dist/IrisGridPartitionSelector.js +28 -62
  36. package/dist/IrisGridPartitionSelector.js.map +1 -1
  37. package/dist/IrisGridProxyModel.js +7 -12
  38. package/dist/IrisGridProxyModel.js.map +1 -1
  39. package/dist/IrisGridRenderer.js +162 -264
  40. package/dist/IrisGridRenderer.js.map +1 -1
  41. package/dist/IrisGridTableModel.js +23 -16
  42. package/dist/IrisGridTableModel.js.map +1 -1
  43. package/dist/IrisGridTableModelTemplate.js +49 -73
  44. package/dist/IrisGridTableModelTemplate.js.map +1 -1
  45. package/dist/IrisGridTestUtils.js +19 -19
  46. package/dist/IrisGridTestUtils.js.map +1 -1
  47. package/dist/IrisGridTextCellRenderer.js +35 -52
  48. package/dist/IrisGridTextCellRenderer.js.map +1 -1
  49. package/dist/IrisGridTheme.js +9 -1
  50. package/dist/IrisGridTheme.js.map +1 -1
  51. package/dist/IrisGridThemeProvider.js +5 -7
  52. package/dist/IrisGridThemeProvider.js.map +1 -1
  53. package/dist/IrisGridTreeTableModel.js +5 -9
  54. package/dist/IrisGridTreeTableModel.js.map +1 -1
  55. package/dist/IrisGridUtils.js +246 -300
  56. package/dist/IrisGridUtils.js.map +1 -1
  57. package/dist/NoPastePermissionModal.js +3 -5
  58. package/dist/NoPastePermissionModal.js.map +1 -1
  59. package/dist/PendingDataBottomBar.js +27 -16
  60. package/dist/PendingDataBottomBar.js.map +1 -1
  61. package/dist/ToastBottomBar.js +16 -8
  62. package/dist/ToastBottomBar.js.map +1 -1
  63. package/dist/format-context-menus/CustomFormatAction.js +11 -24
  64. package/dist/format-context-menus/CustomFormatAction.js.map +1 -1
  65. package/dist/key-handlers/CopyCellKeyHandler.js +3 -4
  66. package/dist/key-handlers/CopyCellKeyHandler.js.map +1 -1
  67. package/dist/key-handlers/CopyKeyHandler.js +1 -3
  68. package/dist/key-handlers/CopyKeyHandler.js.map +1 -1
  69. package/dist/key-handlers/ReverseKeyHandler.js +1 -3
  70. package/dist/key-handlers/ReverseKeyHandler.js.map +1 -1
  71. package/dist/mousehandlers/IrisGridCellOverflowMouseHandler.js +35 -59
  72. package/dist/mousehandlers/IrisGridCellOverflowMouseHandler.js.map +1 -1
  73. package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.js +13 -29
  74. package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.js.map +1 -1
  75. package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.js +8 -17
  76. package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.js.map +1 -1
  77. package/dist/mousehandlers/IrisGridContextMenuHandler.js +96 -199
  78. package/dist/mousehandlers/IrisGridContextMenuHandler.js.map +1 -1
  79. package/dist/mousehandlers/IrisGridDataSelectMouseHandler.js +2 -4
  80. package/dist/mousehandlers/IrisGridDataSelectMouseHandler.js.map +1 -1
  81. package/dist/mousehandlers/IrisGridFilterMouseHandler.js +16 -30
  82. package/dist/mousehandlers/IrisGridFilterMouseHandler.js.map +1 -1
  83. package/dist/mousehandlers/IrisGridPartitionedTableMouseHandler.js +5 -13
  84. package/dist/mousehandlers/IrisGridPartitionedTableMouseHandler.js.map +1 -1
  85. package/dist/mousehandlers/IrisGridRowTreeMouseHandler.js +20 -36
  86. package/dist/mousehandlers/IrisGridRowTreeMouseHandler.js.map +1 -1
  87. package/dist/mousehandlers/IrisGridSortMouseHandler.js +3 -5
  88. package/dist/mousehandlers/IrisGridSortMouseHandler.js.map +1 -1
  89. package/dist/mousehandlers/IrisGridTokenMouseHandler.js +9 -18
  90. package/dist/mousehandlers/IrisGridTokenMouseHandler.js.map +1 -1
  91. package/dist/mousehandlers/PendingMouseHandler.js +10 -18
  92. package/dist/mousehandlers/PendingMouseHandler.js.map +1 -1
  93. package/dist/sidebar/AdvancedSettingsMenu.js +12 -5
  94. package/dist/sidebar/AdvancedSettingsMenu.js.map +1 -1
  95. package/dist/sidebar/ChartBuilder.js +45 -102
  96. package/dist/sidebar/ChartBuilder.js.map +1 -1
  97. package/dist/sidebar/CustomColumnBuilder.js +35 -77
  98. package/dist/sidebar/CustomColumnBuilder.js.map +1 -1
  99. package/dist/sidebar/CustomColumnInput.js +9 -11
  100. package/dist/sidebar/CustomColumnInput.js.map +1 -1
  101. package/dist/sidebar/InputEditor.js +17 -24
  102. package/dist/sidebar/InputEditor.js.map +1 -1
  103. package/dist/sidebar/PluginTableOptionsErrorBoundary.js +6 -11
  104. package/dist/sidebar/PluginTableOptionsErrorBoundary.js.map +1 -1
  105. package/dist/sidebar/RollupRows.js +72 -113
  106. package/dist/sidebar/RollupRows.js.map +1 -1
  107. package/dist/sidebar/SelectDistinctBuilder.js +16 -33
  108. package/dist/sidebar/SelectDistinctBuilder.js.map +1 -1
  109. package/dist/sidebar/TableCsvExporter.js +50 -74
  110. package/dist/sidebar/TableCsvExporter.js.map +1 -1
  111. package/dist/sidebar/TableSaver.js +18 -42
  112. package/dist/sidebar/TableSaver.js.map +1 -1
  113. package/dist/sidebar/aggregations/AggregationEdit.js +25 -18
  114. package/dist/sidebar/aggregations/AggregationEdit.js.map +1 -1
  115. package/dist/sidebar/aggregations/AggregationUtils.d.ts.map +1 -1
  116. package/dist/sidebar/aggregations/AggregationUtils.js +3 -4
  117. package/dist/sidebar/aggregations/AggregationUtils.js.map +1 -1
  118. package/dist/sidebar/aggregations/Aggregations.js +45 -34
  119. package/dist/sidebar/aggregations/Aggregations.js.map +1 -1
  120. package/dist/sidebar/conditional-formatting/ColumnFormatEditor.js +35 -24
  121. package/dist/sidebar/conditional-formatting/ColumnFormatEditor.js.map +1 -1
  122. package/dist/sidebar/conditional-formatting/ConditionEditor.js +38 -21
  123. package/dist/sidebar/conditional-formatting/ConditionEditor.js.map +1 -1
  124. package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.js +27 -11
  125. package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.js.map +1 -1
  126. package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js +9 -11
  127. package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js.map +1 -1
  128. package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js +48 -57
  129. package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js.map +1 -1
  130. package/dist/sidebar/conditional-formatting/RowFormatEditor.js +35 -24
  131. package/dist/sidebar/conditional-formatting/RowFormatEditor.js.map +1 -1
  132. package/dist/sidebar/conditional-formatting/StyleEditor.js +26 -11
  133. package/dist/sidebar/conditional-formatting/StyleEditor.js.map +1 -1
  134. package/dist/sidebar/visibility-ordering-builder/SearchItem.js +5 -7
  135. package/dist/sidebar/visibility-ordering-builder/SearchItem.js.map +1 -1
  136. package/dist/sidebar/visibility-ordering-builder/SearchWithModal.js +24 -18
  137. package/dist/sidebar/visibility-ordering-builder/SearchWithModal.js.map +1 -1
  138. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.js +166 -256
  139. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.js.map +1 -1
  140. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilderUtils.js +4 -11
  141. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilderUtils.js.map +1 -1
  142. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingGroup.js +28 -14
  143. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingGroup.js.map +1 -1
  144. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingItem.js +16 -19
  145. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingItem.js.map +1 -1
  146. package/dist/sidebar/visibility-ordering-builder/sortable-tree/PointerSensorWithInteraction.js +1 -3
  147. package/dist/sidebar/visibility-ordering-builder/sortable-tree/PointerSensorWithInteraction.js.map +1 -1
  148. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTree.js +19 -29
  149. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTree.js.map +1 -1
  150. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeDndContext.js +39 -52
  151. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeDndContext.js.map +1 -1
  152. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeItem.js +18 -23
  153. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeItem.js.map +1 -1
  154. package/dist/sidebar/visibility-ordering-builder/sortable-tree/TreeItem.js +19 -15
  155. package/dist/sidebar/visibility-ordering-builder/sortable-tree/TreeItem.js.map +1 -1
  156. package/dist/sidebar/visibility-ordering-builder/sortable-tree/keyboardCoordinates.js +16 -30
  157. package/dist/sidebar/visibility-ordering-builder/sortable-tree/keyboardCoordinates.js.map +1 -1
  158. package/dist/sidebar/visibility-ordering-builder/sortable-tree/utilities.js +30 -39
  159. package/dist/sidebar/visibility-ordering-builder/sortable-tree/utilities.js.map +1 -1
  160. package/package.json +16 -16
@@ -47,13 +47,9 @@ class ChartBuilder extends PureComponent {
47
47
  constructor(props) {
48
48
  super(props);
49
49
  bindAllMethods(this);
50
- var {
51
- model
52
- } = props;
53
- var {
54
- columns,
55
- dh
56
- } = model;
50
+ var model = props.model;
51
+ var columns = model.columns,
52
+ dh = model.dh;
57
53
  var type = this.getTypes()[0];
58
54
  var xAxis = ChartBuilder.getDefaultXAxis(type, columns);
59
55
  var seriesItems = ChartBuilder.makeDefaultSeriesItems(dh, type, columns);
@@ -69,12 +65,8 @@ class ChartBuilder extends PureComponent {
69
65
  };
70
66
  }
71
67
  getTypes() {
72
- var {
73
- model
74
- } = this.props;
75
- var {
76
- dh
77
- } = model;
68
+ var model = this.props.model;
69
+ var dh = model.dh;
78
70
  return [dh.plot.SeriesPlotStyle.LINE, dh.plot.SeriesPlotStyle.BAR, dh.plot.SeriesPlotStyle.SCATTER, dh.plot.SeriesPlotStyle.PIE
79
71
  // IDS-6808: Disable Histogram in Chart Builder until we pipe histogram creation through the API
80
72
  // dh.plot.SeriesPlotStyle.HISTOGRAM,
@@ -86,12 +78,8 @@ class ChartBuilder extends PureComponent {
86
78
  * Just replaces underscores with spaces and capitals the first letter of each word.
87
79
  */
88
80
  getTypeName(type) {
89
- var {
90
- model
91
- } = this.props;
92
- var {
93
- dh
94
- } = model;
81
+ var model = this.props.model;
82
+ var dh = model.dh;
95
83
  switch (type) {
96
84
  case dh.plot.SeriesPlotStyle.LINE:
97
85
  return 'Line';
@@ -108,12 +96,8 @@ class ChartBuilder extends PureComponent {
108
96
  }
109
97
  }
110
98
  getTypeIcon(type) {
111
- var {
112
- model
113
- } = this.props;
114
- var {
115
- dh
116
- } = model;
99
+ var model = this.props.model;
100
+ var dh = model.dh;
117
101
  switch (type) {
118
102
  case dh.plot.SeriesPlotStyle.LINE:
119
103
  return /*#__PURE__*/_jsx(LineIcon, {});
@@ -130,12 +114,8 @@ class ChartBuilder extends PureComponent {
130
114
  }
131
115
  }
132
116
  getXAxisLabel(type) {
133
- var {
134
- model
135
- } = this.props;
136
- var {
137
- dh
138
- } = model;
117
+ var model = this.props.model;
118
+ var dh = model.dh;
139
119
  switch (type) {
140
120
  case dh.plot.SeriesPlotStyle.PIE:
141
121
  return 'Labels';
@@ -146,12 +126,8 @@ class ChartBuilder extends PureComponent {
146
126
  }
147
127
  }
148
128
  getSeriesLabel(type) {
149
- var {
150
- model
151
- } = this.props;
152
- var {
153
- dh
154
- } = model;
129
+ var model = this.props.model;
130
+ var dh = model.dh;
155
131
  switch (type) {
156
132
  case dh.plot.SeriesPlotStyle.PIE:
157
133
  return 'Values';
@@ -161,16 +137,10 @@ class ChartBuilder extends PureComponent {
161
137
  }
162
138
  handleAddSeries() {
163
139
  this.setState(state => {
164
- var {
165
- seriesItems
166
- } = state;
140
+ var seriesItems = state.seriesItems;
167
141
  var newSeriesItems = [...seriesItems];
168
- var {
169
- model
170
- } = this.props;
171
- var {
172
- columns
173
- } = model;
142
+ var model = this.props.model;
143
+ var columns = model.columns;
174
144
  newSeriesItems.push({
175
145
  id: nanoid(),
176
146
  value: columns[0].name
@@ -186,13 +156,9 @@ class ChartBuilder extends PureComponent {
186
156
  }, this.sendChange);
187
157
  }
188
158
  handleReset() {
189
- var {
190
- model
191
- } = this.props;
192
- var {
193
- columns,
194
- dh
195
- } = model;
159
+ var model = this.props.model;
160
+ var columns = model.columns,
161
+ dh = model.dh;
196
162
  var type = this.getTypes()[0];
197
163
  var xAxis = ChartBuilder.getDefaultXAxis(type, columns);
198
164
  var seriesItems = ChartBuilder.makeDefaultSeriesItems(dh, type, columns);
@@ -207,9 +173,7 @@ class ChartBuilder extends PureComponent {
207
173
  handleSeriesChange(eventTargetValue, index) {
208
174
  var value = eventTargetValue;
209
175
  this.setState(state => {
210
- var {
211
- seriesItems
212
- } = state;
176
+ var seriesItems = state.seriesItems;
213
177
  seriesItems = [...seriesItems];
214
178
  seriesItems[index].value = value;
215
179
  return {
@@ -219,9 +183,7 @@ class ChartBuilder extends PureComponent {
219
183
  }
220
184
  handleSeriesDeleteClick(index) {
221
185
  this.setState(state => {
222
- var {
223
- seriesItems
224
- } = state;
186
+ var seriesItems = state.seriesItems;
225
187
  var newSeriesItems = [...seriesItems];
226
188
  newSeriesItems.splice(index, 1);
227
189
  return {
@@ -231,15 +193,12 @@ class ChartBuilder extends PureComponent {
231
193
  }
232
194
  handleSubmit(event) {
233
195
  event.preventDefault();
234
- var {
235
- onSubmit
236
- } = this.props;
237
- var {
238
- type,
239
- seriesItems,
240
- xAxis,
241
- isLinked
242
- } = this.state;
196
+ var onSubmit = this.props.onSubmit;
197
+ var _this$state = this.state,
198
+ type = _this$state.type,
199
+ seriesItems = _this$state.seriesItems,
200
+ xAxis = _this$state.xAxis,
201
+ isLinked = _this$state.isLinked;
243
202
  var series = seriesItems.map(item => item.value);
244
203
  onSubmit({
245
204
  type,
@@ -252,21 +211,13 @@ class ChartBuilder extends PureComponent {
252
211
  var type = this.getTypes()[index];
253
212
  log.debug2('handleTypeSelect', type);
254
213
  this.setState(state => {
255
- var {
256
- model
257
- } = this.props;
258
- var {
259
- dh
260
- } = model;
214
+ var model = this.props.model;
215
+ var dh = model.dh;
261
216
  var maxSeriesCount = ChartBuilder.getMaxSeriesCount(dh, type);
262
- var {
263
- seriesItems
264
- } = state;
217
+ var seriesItems = state.seriesItems;
265
218
  seriesItems = seriesItems.slice(0, maxSeriesCount);
266
219
  if (seriesItems.length === 0 && maxSeriesCount > 0) {
267
- var {
268
- columns
269
- } = model;
220
+ var columns = model.columns;
270
221
  seriesItems = ChartBuilder.makeDefaultSeriesItems(dh, type, columns);
271
222
  }
272
223
  return {
@@ -283,15 +234,12 @@ class ChartBuilder extends PureComponent {
283
234
  }, this.sendChange);
284
235
  }
285
236
  sendChange() {
286
- var {
287
- onChange
288
- } = this.props;
289
- var {
290
- isLinked,
291
- type,
292
- seriesItems,
293
- xAxis
294
- } = this.state;
237
+ var onChange = this.props.onChange;
238
+ var _this$state2 = this.state,
239
+ isLinked = _this$state2.isLinked,
240
+ type = _this$state2.type,
241
+ seriesItems = _this$state2.seriesItems,
242
+ xAxis = _this$state2.xAxis;
295
243
  var series = seriesItems.map(item => item.value);
296
244
  onChange({
297
245
  type,
@@ -301,19 +249,14 @@ class ChartBuilder extends PureComponent {
301
249
  });
302
250
  }
303
251
  render() {
304
- var {
305
- model
306
- } = this.props;
307
- var {
308
- columns,
309
- dh
310
- } = model;
311
- var {
312
- seriesItems,
313
- type,
314
- xAxis,
315
- isLinked
316
- } = this.state;
252
+ var model = this.props.model;
253
+ var columns = model.columns,
254
+ dh = model.dh;
255
+ var _this$state3 = this.state,
256
+ seriesItems = _this$state3.seriesItems,
257
+ type = _this$state3.type,
258
+ xAxis = _this$state3.xAxis,
259
+ isLinked = _this$state3.isLinked;
317
260
  var maxSeriesCount = ChartBuilder.getMaxSeriesCount(dh, type);
318
261
  var xAxisLabel = this.getXAxisLabel(type);
319
262
  var seriesLabel = this.getSeriesLabel(type);
@@ -1 +1 @@
1
- {"version":3,"file":"ChartBuilder.js","names":["React","PureComponent","classNames","FontAwesomeIcon","Button","RadioGroup","Radio","Select","vsLink","dhUnlink","dhTable","dhNewCircleLargeFilled","vsCircleLargeFilled","vsTrash","Log","bindAllMethods","nanoid","BarIcon","HistogramIcon","LineIcon","PieIcon","ScatterIcon","jsx","_jsx","jsxs","_jsxs","log","module","ChartBuilder","getMaxSeriesCount","dh","type","plot","SeriesPlotStyle","PIE","HISTOGRAM","makeSeriesItem","value","id","makeDefaultSeriesItems","columns","maxSeriesCount","length","name","getDefaultXAxis","constructor","props","model","getTypes","xAxis","seriesItems","state","isLinked","LINE","BAR","SCATTER","getTypeName","getTypeIcon","getXAxisLabel","getSeriesLabel","handleAddSeries","setState","newSeriesItems","push","sendChange","handleLinkStateChange","handleReset","handleSeriesChange","eventTargetValue","index","handleSeriesDeleteClick","splice","handleSubmit","event","preventDefault","onSubmit","series","map","item","handleTypeClick","debug2","slice","handleXAxisChange","onChange","render","xAxisLabel","seriesLabel","isSeriesVisible","isAddSeriesVisible","className","children","chartType","key","active","onClick","column","seriesItem","i","concat","v","kind","icon","tooltip","mask","transform","orientation"],"sources":["../../src/sidebar/ChartBuilder.tsx"],"sourcesContent":["import React, { PureComponent } from 'react';\nimport classNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { Button, RadioGroup, Radio, Select } from '@deephaven/components';\nimport {\n vsLink,\n dhUnlink,\n dhTable,\n dhNewCircleLargeFilled,\n vsCircleLargeFilled,\n vsTrash,\n} from '@deephaven/icons';\nimport type { dh as DhType } from '@deephaven/jsapi-types';\nimport Log from '@deephaven/log';\nimport { bindAllMethods } from '@deephaven/utils';\nimport { nanoid } from 'nanoid';\nimport {\n BarIcon,\n HistogramIcon,\n LineIcon,\n PieIcon,\n ScatterIcon,\n} from './icons';\nimport './ChartBuilder.scss';\nimport type IrisGridModel from '../IrisGridModel';\n\nconst log = Log.module('ChartBuilder');\n\nexport type ChartBuilderSettings = {\n type: DhType.plot.SeriesPlotStyle;\n series: string[];\n xAxis: string;\n isLinked: boolean;\n};\nexport type SeriesItem = {\n id: string;\n value: string;\n};\n\ninterface ChartBuilderProps {\n model: IrisGridModel;\n onSubmit: (obj: ChartBuilderSettings) => void;\n onChange: (obj: ChartBuilderSettings) => void;\n}\ninterface ChartBuilderState {\n /** The selected chart type */\n type: DhType.plot.SeriesPlotStyle;\n\n /** Array of column names of the series to display */\n seriesItems: readonly SeriesItem[];\n\n /** The column name to use as the x-axis */\n xAxis: string;\n\n /** Whether the newly created chart should be linked with the table (update when filters update) */\n isLinked: boolean;\n}\n/**\n * Form for configuring all the settings when creating a console.\n */\nclass ChartBuilder extends PureComponent<ChartBuilderProps, ChartBuilderState> {\n static getMaxSeriesCount(\n dh: typeof DhType,\n type: DhType.plot.SeriesPlotStyle\n ): number {\n switch (type) {\n case dh.plot.SeriesPlotStyle.PIE:\n return 1;\n case dh.plot.SeriesPlotStyle.HISTOGRAM:\n return 0;\n default:\n return 100;\n }\n }\n\n static makeSeriesItem(value: string): SeriesItem {\n return { id: nanoid(), value };\n }\n\n static makeDefaultSeriesItems(\n dh: typeof DhType,\n type: DhType.plot.SeriesPlotStyle,\n columns: readonly DhType.Column[]\n ): SeriesItem[] {\n const maxSeriesCount = ChartBuilder.getMaxSeriesCount(dh, type);\n if (maxSeriesCount === 0 || columns == null || columns.length === 0) {\n return [];\n }\n\n const value = columns.length > 1 ? columns[1].name : columns[0].name;\n return [ChartBuilder.makeSeriesItem(value)];\n }\n\n static getDefaultXAxis(\n type: DhType.plot.SeriesPlotStyle,\n columns: readonly DhType.Column[]\n ): string | null {\n if (columns != null && columns.length > 0) {\n return columns[0].name;\n }\n\n return null;\n }\n\n constructor(props: ChartBuilderProps) {\n super(props);\n\n bindAllMethods(this);\n\n const { model } = props;\n const { columns, dh } = model;\n\n const type = this.getTypes()[0];\n const xAxis = ChartBuilder.getDefaultXAxis(type, columns) as string;\n const seriesItems = ChartBuilder.makeDefaultSeriesItems(dh, type, columns);\n\n this.state = {\n /** The selected chart type */\n type,\n\n /** Array of column names of the series to display */\n seriesItems,\n\n /** The column name to use as the x-axis */\n xAxis,\n\n /** Whether the newly created chart should be linked with the table (update when filters update) */\n isLinked: true,\n };\n }\n\n getTypes(): number[] {\n const { model } = this.props;\n const { dh } = model;\n return [\n dh.plot.SeriesPlotStyle.LINE,\n dh.plot.SeriesPlotStyle.BAR,\n dh.plot.SeriesPlotStyle.SCATTER,\n dh.plot.SeriesPlotStyle.PIE,\n // IDS-6808: Disable Histogram in Chart Builder until we pipe histogram creation through the API\n // dh.plot.SeriesPlotStyle.HISTOGRAM,\n ];\n }\n\n /**\n * Converts the provided chart type into a readable type.\n * Just replaces underscores with spaces and capitals the first letter of each word.\n */\n getTypeName(type: number): string | number {\n const { model } = this.props;\n const { dh } = model;\n switch (type) {\n case dh.plot.SeriesPlotStyle.LINE:\n return 'Line';\n case dh.plot.SeriesPlotStyle.BAR:\n return 'Bar';\n case dh.plot.SeriesPlotStyle.SCATTER:\n return 'Scatter';\n case dh.plot.SeriesPlotStyle.PIE:\n return 'Pie';\n case dh.plot.SeriesPlotStyle.HISTOGRAM:\n return 'Histogram';\n default:\n return type;\n }\n }\n\n getTypeIcon(type: DhType.plot.SeriesPlotStyle): React.ReactElement | null {\n const { model } = this.props;\n const { dh } = model;\n switch (type) {\n case dh.plot.SeriesPlotStyle.LINE:\n return <LineIcon />;\n case dh.plot.SeriesPlotStyle.BAR:\n return <BarIcon />;\n case dh.plot.SeriesPlotStyle.SCATTER:\n return <ScatterIcon />;\n case dh.plot.SeriesPlotStyle.PIE:\n return <PieIcon />;\n case dh.plot.SeriesPlotStyle.HISTOGRAM:\n return <HistogramIcon />;\n default:\n return null;\n }\n }\n\n getXAxisLabel(type: DhType.plot.SeriesPlotStyle): string {\n const { model } = this.props;\n const { dh } = model;\n switch (type) {\n case dh.plot.SeriesPlotStyle.PIE:\n return 'Labels';\n case dh.plot.SeriesPlotStyle.HISTOGRAM:\n return 'Data';\n default:\n return 'X-Axis';\n }\n }\n\n getSeriesLabel(type: DhType.plot.SeriesPlotStyle): string {\n const { model } = this.props;\n const { dh } = model;\n switch (type) {\n case dh.plot.SeriesPlotStyle.PIE:\n return 'Values';\n default:\n return 'Series';\n }\n }\n\n handleAddSeries(): void {\n this.setState(state => {\n const { seriesItems } = state;\n const newSeriesItems = [...seriesItems];\n\n const { model } = this.props;\n const { columns } = model;\n newSeriesItems.push({\n id: nanoid(),\n value: columns[0].name,\n });\n\n return { seriesItems: newSeriesItems };\n }, this.sendChange);\n }\n\n handleLinkStateChange(value: string): void {\n this.setState({ isLinked: value === 'true' }, this.sendChange);\n }\n\n handleReset(): void {\n const { model } = this.props;\n const { columns, dh } = model;\n\n const type = this.getTypes()[0];\n const xAxis = ChartBuilder.getDefaultXAxis(type, columns) as string;\n const seriesItems = ChartBuilder.makeDefaultSeriesItems(dh, type, columns);\n const isLinked = true;\n\n this.setState({ type, seriesItems, xAxis, isLinked }, this.sendChange);\n }\n\n handleSeriesChange(eventTargetValue: string, index: number): void {\n const value = eventTargetValue;\n\n this.setState(state => {\n let { seriesItems } = state;\n seriesItems = [...seriesItems];\n seriesItems[index].value = value;\n\n return { seriesItems };\n }, this.sendChange);\n }\n\n handleSeriesDeleteClick(index: number): void {\n this.setState(state => {\n const { seriesItems } = state;\n const newSeriesItems = [...seriesItems];\n\n newSeriesItems.splice(index, 1);\n\n return { seriesItems: newSeriesItems };\n }, this.sendChange);\n }\n\n handleSubmit(event: React.FormEvent<HTMLFormElement>): void {\n event.preventDefault();\n\n const { onSubmit } = this.props;\n const { type, seriesItems, xAxis, isLinked } = this.state;\n const series = seriesItems.map(item => item.value);\n onSubmit({\n type,\n series,\n xAxis,\n isLinked,\n });\n }\n\n handleTypeClick(index: number): void {\n const type = this.getTypes()[index];\n\n log.debug2('handleTypeSelect', type);\n\n this.setState(state => {\n const { model } = this.props;\n const { dh } = model;\n const maxSeriesCount = ChartBuilder.getMaxSeriesCount(dh, type);\n let { seriesItems } = state;\n seriesItems = seriesItems.slice(0, maxSeriesCount);\n if (seriesItems.length === 0 && maxSeriesCount > 0) {\n const { columns } = model;\n seriesItems = ChartBuilder.makeDefaultSeriesItems(dh, type, columns);\n }\n\n return { type, seriesItems };\n }, this.sendChange);\n }\n\n handleXAxisChange(eventTargetValue: string): void {\n const xAxis = eventTargetValue;\n log.debug2('x-axis change', xAxis);\n\n this.setState({ xAxis }, this.sendChange);\n }\n\n sendChange(): void {\n const { onChange } = this.props;\n const { isLinked, type, seriesItems, xAxis } = this.state;\n const series = seriesItems.map(item => item.value);\n\n onChange({ type, series, xAxis, isLinked });\n }\n\n render(): JSX.Element {\n const { model } = this.props;\n const { columns, dh } = model;\n const { seriesItems, type, xAxis, isLinked } = this.state;\n const maxSeriesCount = ChartBuilder.getMaxSeriesCount(dh, type);\n const xAxisLabel = this.getXAxisLabel(type);\n const seriesLabel = this.getSeriesLabel(type);\n const isSeriesVisible = seriesItems.length > 0;\n const isAddSeriesVisible = seriesItems.length < maxSeriesCount;\n\n return (\n <div className=\"chart-builder\">\n <form onSubmit={this.handleSubmit}>\n <div className=\"form-row\">\n <label>Select Chart Type</label>\n <div className=\"form-row\">\n {this.getTypes().map((chartType, index) => {\n const key = chartType as unknown as React.Key;\n return (\n <div key={key} className=\"col col-chart-type\">\n <button\n type=\"button\"\n className={classNames(\n 'btn',\n 'btn-icon',\n 'btn-chart-type',\n {\n active: chartType === type,\n }\n )}\n onClick={() => this.handleTypeClick(index)}\n >\n {this.getTypeIcon(chartType)}\n {this.getTypeName(chartType)}\n </button>\n </div>\n );\n })}\n </div>\n </div>\n <hr />\n <div className=\"form-row form-inline\">\n <label className=\"col-2 label-left\">{xAxisLabel}</label>\n <Select\n className=\"form-control select-x-axis col\"\n value={xAxis}\n onChange={this.handleXAxisChange}\n >\n {columns.map(column => (\n <option key={column.name} value={column.name}>\n {column.name}\n </option>\n ))}\n </Select>\n </div>\n {isSeriesVisible && <hr />}\n {seriesItems.map((seriesItem, i) => (\n <div\n className=\"form-row form-inline form-series-item\"\n key={seriesItem.id}\n data-testid={`form-series-item-${i}`}\n >\n <label className=\"col-2 label-left\">\n {i === 0 ? seriesLabel : ''}\n </label>\n <Select\n className=\"form-control select-series col\"\n value={seriesItem.value}\n onChange={v => this.handleSeriesChange(v, i)}\n data-testid={`select-series-item-${i}`}\n >\n {columns.map(column => (\n <option key={column.name} value={column.name}>\n {column.name}\n </option>\n ))}\n </Select>\n {seriesItems.length > 1 && (\n <Button\n kind=\"ghost\"\n className=\"btn-delete-series ml-2 px-2\"\n data-testid={`delete-series-${i}`}\n onClick={() => {\n this.handleSeriesDeleteClick(i);\n }}\n icon={vsTrash}\n tooltip=\"Delete\"\n />\n )}\n </div>\n ))}\n {isAddSeriesVisible && (\n <div className=\"form-row\">\n <div className=\"col-2\" />\n <Button\n kind=\"ghost\"\n className=\"btn-add-series mt-1\"\n onClick={this.handleAddSeries}\n icon={dhNewCircleLargeFilled}\n >\n Add Series\n </Button>\n </div>\n )}\n <div className=\"form-row chart-builder-link\">\n <label className=\"col-2 label-right\">\n <div className=\"fa-md fa-layers\">\n <FontAwesomeIcon\n mask={dhTable}\n icon={vsCircleLargeFilled}\n transform=\"right-5 down-5\"\n />\n <FontAwesomeIcon\n icon={isLinked ? vsLink : dhUnlink}\n transform=\"grow-2 right-8 down-6\"\n />\n </div>\n </label>\n <RadioGroup\n aria-label=\"Link state options\"\n orientation=\"horizontal\"\n onChange={this.handleLinkStateChange}\n value={`${isLinked}`}\n >\n <Radio value=\"true\">Sync State</Radio>\n <Radio value=\"false\">Freeze State</Radio>\n </RadioGroup>\n </div>\n <div className=\"form-row\">\n <div className=\"col-2 label-right\" />\n <div className=\"col chart-builder-link-info\">\n {isLinked\n ? 'Charts with synced state will update to match any filters or user modifications applied to the parent table.'\n : 'Freeze State disconnects the chart state from the parent table. New filters or user modifications on the parent table will not be applied.'}\n </div>\n </div>\n <div\n className={classNames('form-row', 'justify-content-end', 'my-3')}\n >\n <Button\n kind=\"secondary\"\n className=\"btn-reset\"\n onClick={this.handleReset}\n >\n Reset\n </Button>\n <Button kind=\"primary\" type=\"submit\" className=\"btn-submit\">\n Create\n </Button>\n </div>\n </form>\n </div>\n );\n }\n}\n\nexport default ChartBuilder;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"ChartBuilder.js","names":["React","PureComponent","classNames","FontAwesomeIcon","Button","RadioGroup","Radio","Select","vsLink","dhUnlink","dhTable","dhNewCircleLargeFilled","vsCircleLargeFilled","vsTrash","Log","bindAllMethods","nanoid","BarIcon","HistogramIcon","LineIcon","PieIcon","ScatterIcon","jsx","_jsx","jsxs","_jsxs","log","module","ChartBuilder","getMaxSeriesCount","dh","type","plot","SeriesPlotStyle","PIE","HISTOGRAM","makeSeriesItem","value","id","makeDefaultSeriesItems","columns","maxSeriesCount","length","name","getDefaultXAxis","constructor","props","model","getTypes","xAxis","seriesItems","state","isLinked","LINE","BAR","SCATTER","getTypeName","getTypeIcon","getXAxisLabel","getSeriesLabel","handleAddSeries","setState","newSeriesItems","push","sendChange","handleLinkStateChange","handleReset","handleSeriesChange","eventTargetValue","index","handleSeriesDeleteClick","splice","handleSubmit","event","preventDefault","onSubmit","_this$state","series","map","item","handleTypeClick","debug2","slice","handleXAxisChange","onChange","_this$state2","render","_this$state3","xAxisLabel","seriesLabel","isSeriesVisible","isAddSeriesVisible","className","children","chartType","key","active","onClick","column","seriesItem","i","concat","v","kind","icon","tooltip","mask","transform","orientation"],"sources":["../../src/sidebar/ChartBuilder.tsx"],"sourcesContent":["import React, { PureComponent } from 'react';\nimport classNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { Button, RadioGroup, Radio, Select } from '@deephaven/components';\nimport {\n vsLink,\n dhUnlink,\n dhTable,\n dhNewCircleLargeFilled,\n vsCircleLargeFilled,\n vsTrash,\n} from '@deephaven/icons';\nimport type { dh as DhType } from '@deephaven/jsapi-types';\nimport Log from '@deephaven/log';\nimport { bindAllMethods } from '@deephaven/utils';\nimport { nanoid } from 'nanoid';\nimport {\n BarIcon,\n HistogramIcon,\n LineIcon,\n PieIcon,\n ScatterIcon,\n} from './icons';\nimport './ChartBuilder.scss';\nimport type IrisGridModel from '../IrisGridModel';\n\nconst log = Log.module('ChartBuilder');\n\nexport type ChartBuilderSettings = {\n type: DhType.plot.SeriesPlotStyle;\n series: string[];\n xAxis: string;\n isLinked: boolean;\n};\nexport type SeriesItem = {\n id: string;\n value: string;\n};\n\ninterface ChartBuilderProps {\n model: IrisGridModel;\n onSubmit: (obj: ChartBuilderSettings) => void;\n onChange: (obj: ChartBuilderSettings) => void;\n}\ninterface ChartBuilderState {\n /** The selected chart type */\n type: DhType.plot.SeriesPlotStyle;\n\n /** Array of column names of the series to display */\n seriesItems: readonly SeriesItem[];\n\n /** The column name to use as the x-axis */\n xAxis: string;\n\n /** Whether the newly created chart should be linked with the table (update when filters update) */\n isLinked: boolean;\n}\n/**\n * Form for configuring all the settings when creating a console.\n */\nclass ChartBuilder extends PureComponent<ChartBuilderProps, ChartBuilderState> {\n static getMaxSeriesCount(\n dh: typeof DhType,\n type: DhType.plot.SeriesPlotStyle\n ): number {\n switch (type) {\n case dh.plot.SeriesPlotStyle.PIE:\n return 1;\n case dh.plot.SeriesPlotStyle.HISTOGRAM:\n return 0;\n default:\n return 100;\n }\n }\n\n static makeSeriesItem(value: string): SeriesItem {\n return { id: nanoid(), value };\n }\n\n static makeDefaultSeriesItems(\n dh: typeof DhType,\n type: DhType.plot.SeriesPlotStyle,\n columns: readonly DhType.Column[]\n ): SeriesItem[] {\n const maxSeriesCount = ChartBuilder.getMaxSeriesCount(dh, type);\n if (maxSeriesCount === 0 || columns == null || columns.length === 0) {\n return [];\n }\n\n const value = columns.length > 1 ? columns[1].name : columns[0].name;\n return [ChartBuilder.makeSeriesItem(value)];\n }\n\n static getDefaultXAxis(\n type: DhType.plot.SeriesPlotStyle,\n columns: readonly DhType.Column[]\n ): string | null {\n if (columns != null && columns.length > 0) {\n return columns[0].name;\n }\n\n return null;\n }\n\n constructor(props: ChartBuilderProps) {\n super(props);\n\n bindAllMethods(this);\n\n const { model } = props;\n const { columns, dh } = model;\n\n const type = this.getTypes()[0];\n const xAxis = ChartBuilder.getDefaultXAxis(type, columns) as string;\n const seriesItems = ChartBuilder.makeDefaultSeriesItems(dh, type, columns);\n\n this.state = {\n /** The selected chart type */\n type,\n\n /** Array of column names of the series to display */\n seriesItems,\n\n /** The column name to use as the x-axis */\n xAxis,\n\n /** Whether the newly created chart should be linked with the table (update when filters update) */\n isLinked: true,\n };\n }\n\n getTypes(): number[] {\n const { model } = this.props;\n const { dh } = model;\n return [\n dh.plot.SeriesPlotStyle.LINE,\n dh.plot.SeriesPlotStyle.BAR,\n dh.plot.SeriesPlotStyle.SCATTER,\n dh.plot.SeriesPlotStyle.PIE,\n // IDS-6808: Disable Histogram in Chart Builder until we pipe histogram creation through the API\n // dh.plot.SeriesPlotStyle.HISTOGRAM,\n ];\n }\n\n /**\n * Converts the provided chart type into a readable type.\n * Just replaces underscores with spaces and capitals the first letter of each word.\n */\n getTypeName(type: number): string | number {\n const { model } = this.props;\n const { dh } = model;\n switch (type) {\n case dh.plot.SeriesPlotStyle.LINE:\n return 'Line';\n case dh.plot.SeriesPlotStyle.BAR:\n return 'Bar';\n case dh.plot.SeriesPlotStyle.SCATTER:\n return 'Scatter';\n case dh.plot.SeriesPlotStyle.PIE:\n return 'Pie';\n case dh.plot.SeriesPlotStyle.HISTOGRAM:\n return 'Histogram';\n default:\n return type;\n }\n }\n\n getTypeIcon(type: DhType.plot.SeriesPlotStyle): React.ReactElement | null {\n const { model } = this.props;\n const { dh } = model;\n switch (type) {\n case dh.plot.SeriesPlotStyle.LINE:\n return <LineIcon />;\n case dh.plot.SeriesPlotStyle.BAR:\n return <BarIcon />;\n case dh.plot.SeriesPlotStyle.SCATTER:\n return <ScatterIcon />;\n case dh.plot.SeriesPlotStyle.PIE:\n return <PieIcon />;\n case dh.plot.SeriesPlotStyle.HISTOGRAM:\n return <HistogramIcon />;\n default:\n return null;\n }\n }\n\n getXAxisLabel(type: DhType.plot.SeriesPlotStyle): string {\n const { model } = this.props;\n const { dh } = model;\n switch (type) {\n case dh.plot.SeriesPlotStyle.PIE:\n return 'Labels';\n case dh.plot.SeriesPlotStyle.HISTOGRAM:\n return 'Data';\n default:\n return 'X-Axis';\n }\n }\n\n getSeriesLabel(type: DhType.plot.SeriesPlotStyle): string {\n const { model } = this.props;\n const { dh } = model;\n switch (type) {\n case dh.plot.SeriesPlotStyle.PIE:\n return 'Values';\n default:\n return 'Series';\n }\n }\n\n handleAddSeries(): void {\n this.setState(state => {\n const { seriesItems } = state;\n const newSeriesItems = [...seriesItems];\n\n const { model } = this.props;\n const { columns } = model;\n newSeriesItems.push({\n id: nanoid(),\n value: columns[0].name,\n });\n\n return { seriesItems: newSeriesItems };\n }, this.sendChange);\n }\n\n handleLinkStateChange(value: string): void {\n this.setState({ isLinked: value === 'true' }, this.sendChange);\n }\n\n handleReset(): void {\n const { model } = this.props;\n const { columns, dh } = model;\n\n const type = this.getTypes()[0];\n const xAxis = ChartBuilder.getDefaultXAxis(type, columns) as string;\n const seriesItems = ChartBuilder.makeDefaultSeriesItems(dh, type, columns);\n const isLinked = true;\n\n this.setState({ type, seriesItems, xAxis, isLinked }, this.sendChange);\n }\n\n handleSeriesChange(eventTargetValue: string, index: number): void {\n const value = eventTargetValue;\n\n this.setState(state => {\n let { seriesItems } = state;\n seriesItems = [...seriesItems];\n seriesItems[index].value = value;\n\n return { seriesItems };\n }, this.sendChange);\n }\n\n handleSeriesDeleteClick(index: number): void {\n this.setState(state => {\n const { seriesItems } = state;\n const newSeriesItems = [...seriesItems];\n\n newSeriesItems.splice(index, 1);\n\n return { seriesItems: newSeriesItems };\n }, this.sendChange);\n }\n\n handleSubmit(event: React.FormEvent<HTMLFormElement>): void {\n event.preventDefault();\n\n const { onSubmit } = this.props;\n const { type, seriesItems, xAxis, isLinked } = this.state;\n const series = seriesItems.map(item => item.value);\n onSubmit({\n type,\n series,\n xAxis,\n isLinked,\n });\n }\n\n handleTypeClick(index: number): void {\n const type = this.getTypes()[index];\n\n log.debug2('handleTypeSelect', type);\n\n this.setState(state => {\n const { model } = this.props;\n const { dh } = model;\n const maxSeriesCount = ChartBuilder.getMaxSeriesCount(dh, type);\n let { seriesItems } = state;\n seriesItems = seriesItems.slice(0, maxSeriesCount);\n if (seriesItems.length === 0 && maxSeriesCount > 0) {\n const { columns } = model;\n seriesItems = ChartBuilder.makeDefaultSeriesItems(dh, type, columns);\n }\n\n return { type, seriesItems };\n }, this.sendChange);\n }\n\n handleXAxisChange(eventTargetValue: string): void {\n const xAxis = eventTargetValue;\n log.debug2('x-axis change', xAxis);\n\n this.setState({ xAxis }, this.sendChange);\n }\n\n sendChange(): void {\n const { onChange } = this.props;\n const { isLinked, type, seriesItems, xAxis } = this.state;\n const series = seriesItems.map(item => item.value);\n\n onChange({ type, series, xAxis, isLinked });\n }\n\n render(): JSX.Element {\n const { model } = this.props;\n const { columns, dh } = model;\n const { seriesItems, type, xAxis, isLinked } = this.state;\n const maxSeriesCount = ChartBuilder.getMaxSeriesCount(dh, type);\n const xAxisLabel = this.getXAxisLabel(type);\n const seriesLabel = this.getSeriesLabel(type);\n const isSeriesVisible = seriesItems.length > 0;\n const isAddSeriesVisible = seriesItems.length < maxSeriesCount;\n\n return (\n <div className=\"chart-builder\">\n <form onSubmit={this.handleSubmit}>\n <div className=\"form-row\">\n <label>Select Chart Type</label>\n <div className=\"form-row\">\n {this.getTypes().map((chartType, index) => {\n const key = chartType as unknown as React.Key;\n return (\n <div key={key} className=\"col col-chart-type\">\n <button\n type=\"button\"\n className={classNames(\n 'btn',\n 'btn-icon',\n 'btn-chart-type',\n {\n active: chartType === type,\n }\n )}\n onClick={() => this.handleTypeClick(index)}\n >\n {this.getTypeIcon(chartType)}\n {this.getTypeName(chartType)}\n </button>\n </div>\n );\n })}\n </div>\n </div>\n <hr />\n <div className=\"form-row form-inline\">\n <label className=\"col-2 label-left\">{xAxisLabel}</label>\n <Select\n className=\"form-control select-x-axis col\"\n value={xAxis}\n onChange={this.handleXAxisChange}\n >\n {columns.map(column => (\n <option key={column.name} value={column.name}>\n {column.name}\n </option>\n ))}\n </Select>\n </div>\n {isSeriesVisible && <hr />}\n {seriesItems.map((seriesItem, i) => (\n <div\n className=\"form-row form-inline form-series-item\"\n key={seriesItem.id}\n data-testid={`form-series-item-${i}`}\n >\n <label className=\"col-2 label-left\">\n {i === 0 ? seriesLabel : ''}\n </label>\n <Select\n className=\"form-control select-series col\"\n value={seriesItem.value}\n onChange={v => this.handleSeriesChange(v, i)}\n data-testid={`select-series-item-${i}`}\n >\n {columns.map(column => (\n <option key={column.name} value={column.name}>\n {column.name}\n </option>\n ))}\n </Select>\n {seriesItems.length > 1 && (\n <Button\n kind=\"ghost\"\n className=\"btn-delete-series ml-2 px-2\"\n data-testid={`delete-series-${i}`}\n onClick={() => {\n this.handleSeriesDeleteClick(i);\n }}\n icon={vsTrash}\n tooltip=\"Delete\"\n />\n )}\n </div>\n ))}\n {isAddSeriesVisible && (\n <div className=\"form-row\">\n <div className=\"col-2\" />\n <Button\n kind=\"ghost\"\n className=\"btn-add-series mt-1\"\n onClick={this.handleAddSeries}\n icon={dhNewCircleLargeFilled}\n >\n Add Series\n </Button>\n </div>\n )}\n <div className=\"form-row chart-builder-link\">\n <label className=\"col-2 label-right\">\n <div className=\"fa-md fa-layers\">\n <FontAwesomeIcon\n mask={dhTable}\n icon={vsCircleLargeFilled}\n transform=\"right-5 down-5\"\n />\n <FontAwesomeIcon\n icon={isLinked ? vsLink : dhUnlink}\n transform=\"grow-2 right-8 down-6\"\n />\n </div>\n </label>\n <RadioGroup\n aria-label=\"Link state options\"\n orientation=\"horizontal\"\n onChange={this.handleLinkStateChange}\n value={`${isLinked}`}\n >\n <Radio value=\"true\">Sync State</Radio>\n <Radio value=\"false\">Freeze State</Radio>\n </RadioGroup>\n </div>\n <div className=\"form-row\">\n <div className=\"col-2 label-right\" />\n <div className=\"col chart-builder-link-info\">\n {isLinked\n ? 'Charts with synced state will update to match any filters or user modifications applied to the parent table.'\n : 'Freeze State disconnects the chart state from the parent table. New filters or user modifications on the parent table will not be applied.'}\n </div>\n </div>\n <div\n className={classNames('form-row', 'justify-content-end', 'my-3')}\n >\n <Button\n kind=\"secondary\"\n className=\"btn-reset\"\n onClick={this.handleReset}\n >\n Reset\n </Button>\n <Button kind=\"primary\" type=\"submit\" className=\"btn-submit\">\n Create\n </Button>\n </div>\n </form>\n </div>\n );\n }\n}\n\nexport default ChartBuilder;\n"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,aAAa,QAAQ,OAAO;AAC5C,OAAOC,UAAU,MAAM,YAAY;AACnC,SAASC,eAAe,QAAQ,gCAAgC;AAChE,SAASC,MAAM,EAAEC,UAAU,EAAEC,KAAK,EAAEC,MAAM,QAAQ,uBAAuB;AACzE,SACEC,MAAM,EACNC,QAAQ,EACRC,OAAO,EACPC,sBAAsB,EACtBC,mBAAmB,EACnBC,OAAO,QACF,kBAAkB;AAEzB,OAAOC,GAAG,MAAM,gBAAgB;AAChC,SAASC,cAAc,QAAQ,kBAAkB;AACjD,SAASC,MAAM,QAAQ,QAAQ;AAAC,SAE9BC,OAAO,EACPC,aAAa,EACbC,QAAQ,EACRC,OAAO,EACPC,WAAW;AAAA;AAAA,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAKb,IAAMC,GAAG,GAAGZ,GAAG,CAACa,MAAM,CAAC,cAAc,CAAC;AA+BtC;AACA;AACA;AACA,MAAMC,YAAY,SAAS3B,aAAa,CAAuC;EAC7E,OAAO4B,iBAAiBA,CACtBC,EAAiB,EACjBC,IAAiC,EACzB;IACR,QAAQA,IAAI;MACV,KAAKD,EAAE,CAACE,IAAI,CAACC,eAAe,CAACC,GAAG;QAC9B,OAAO,CAAC;MACV,KAAKJ,EAAE,CAACE,IAAI,CAACC,eAAe,CAACE,SAAS;QACpC,OAAO,CAAC;MACV;QACE,OAAO,GAAG;IACd;EACF;EAEA,OAAOC,cAAcA,CAACC,KAAa,EAAc;IAC/C,OAAO;MAAEC,EAAE,EAAEtB,MAAM,CAAC,CAAC;MAAEqB;IAAM,CAAC;EAChC;EAEA,OAAOE,sBAAsBA,CAC3BT,EAAiB,EACjBC,IAAiC,EACjCS,OAAiC,EACnB;IACd,IAAMC,cAAc,GAAGb,YAAY,CAACC,iBAAiB,CAACC,EAAE,EAAEC,IAAI,CAAC;IAC/D,IAAIU,cAAc,KAAK,CAAC,IAAID,OAAO,IAAI,IAAI,IAAIA,OAAO,CAACE,MAAM,KAAK,CAAC,EAAE;MACnE,OAAO,EAAE;IACX;IAEA,IAAML,KAAK,GAAGG,OAAO,CAACE,MAAM,GAAG,CAAC,GAAGF,OAAO,CAAC,CAAC,CAAC,CAACG,IAAI,GAAGH,OAAO,CAAC,CAAC,CAAC,CAACG,IAAI;IACpE,OAAO,CAACf,YAAY,CAACQ,cAAc,CAACC,KAAK,CAAC,CAAC;EAC7C;EAEA,OAAOO,eAAeA,CACpBb,IAAiC,EACjCS,OAAiC,EAClB;IACf,IAAIA,OAAO,IAAI,IAAI,IAAIA,OAAO,CAACE,MAAM,GAAG,CAAC,EAAE;MACzC,OAAOF,OAAO,CAAC,CAAC,CAAC,CAACG,IAAI;IACxB;IAEA,OAAO,IAAI;EACb;EAEAE,WAAWA,CAACC,KAAwB,EAAE;IACpC,KAAK,CAACA,KAAK,CAAC;IAEZ/B,cAAc,CAAC,IAAI,CAAC;IAEpB,IAAQgC,KAAK,GAAKD,KAAK,CAAfC,KAAK;IACb,IAAQP,OAAO,GAASO,KAAK,CAArBP,OAAO;MAAEV,EAAE,GAAKiB,KAAK,CAAZjB,EAAE;IAEnB,IAAMC,IAAI,GAAG,IAAI,CAACiB,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/B,IAAMC,KAAK,GAAGrB,YAAY,CAACgB,eAAe,CAACb,IAAI,EAAES,OAAO,CAAW;IACnE,IAAMU,WAAW,GAAGtB,YAAY,CAACW,sBAAsB,CAACT,EAAE,EAAEC,IAAI,EAAES,OAAO,CAAC;IAE1E,IAAI,CAACW,KAAK,GAAG;MACX;MACApB,IAAI;MAEJ;MACAmB,WAAW;MAEX;MACAD,KAAK;MAEL;MACAG,QAAQ,EAAE;IACZ,CAAC;EACH;EAEAJ,QAAQA,CAAA,EAAa;IACnB,IAAQD,KAAK,GAAK,IAAI,CAACD,KAAK,CAApBC,KAAK;IACb,IAAQjB,EAAE,GAAKiB,KAAK,CAAZjB,EAAE;IACV,OAAO,CACLA,EAAE,CAACE,IAAI,CAACC,eAAe,CAACoB,IAAI,EAC5BvB,EAAE,CAACE,IAAI,CAACC,eAAe,CAACqB,GAAG,EAC3BxB,EAAE,CAACE,IAAI,CAACC,eAAe,CAACsB,OAAO,EAC/BzB,EAAE,CAACE,IAAI,CAACC,eAAe,CAACC;IACxB;IACA;IAAA,CACD;EACH;;EAEA;AACF;AACA;AACA;EACEsB,WAAWA,CAACzB,IAAY,EAAmB;IACzC,IAAQgB,KAAK,GAAK,IAAI,CAACD,KAAK,CAApBC,KAAK;IACb,IAAQjB,EAAE,GAAKiB,KAAK,CAAZjB,EAAE;IACV,QAAQC,IAAI;MACV,KAAKD,EAAE,CAACE,IAAI,CAACC,eAAe,CAACoB,IAAI;QAC/B,OAAO,MAAM;MACf,KAAKvB,EAAE,CAACE,IAAI,CAACC,eAAe,CAACqB,GAAG;QAC9B,OAAO,KAAK;MACd,KAAKxB,EAAE,CAACE,IAAI,CAACC,eAAe,CAACsB,OAAO;QAClC,OAAO,SAAS;MAClB,KAAKzB,EAAE,CAACE,IAAI,CAACC,eAAe,CAACC,GAAG;QAC9B,OAAO,KAAK;MACd,KAAKJ,EAAE,CAACE,IAAI,CAACC,eAAe,CAACE,SAAS;QACpC,OAAO,WAAW;MACpB;QACE,OAAOJ,IAAI;IACf;EACF;EAEA0B,WAAWA,CAAC1B,IAAiC,EAA6B;IACxE,IAAQgB,KAAK,GAAK,IAAI,CAACD,KAAK,CAApBC,KAAK;IACb,IAAQjB,EAAE,GAAKiB,KAAK,CAAZjB,EAAE;IACV,QAAQC,IAAI;MACV,KAAKD,EAAE,CAACE,IAAI,CAACC,eAAe,CAACoB,IAAI;QAC/B,oBAAO9B,IAAA,CAACJ,QAAQ,IAAE,CAAC;MACrB,KAAKW,EAAE,CAACE,IAAI,CAACC,eAAe,CAACqB,GAAG;QAC9B,oBAAO/B,IAAA,CAACN,OAAO,IAAE,CAAC;MACpB,KAAKa,EAAE,CAACE,IAAI,CAACC,eAAe,CAACsB,OAAO;QAClC,oBAAOhC,IAAA,CAACF,WAAW,IAAE,CAAC;MACxB,KAAKS,EAAE,CAACE,IAAI,CAACC,eAAe,CAACC,GAAG;QAC9B,oBAAOX,IAAA,CAACH,OAAO,IAAE,CAAC;MACpB,KAAKU,EAAE,CAACE,IAAI,CAACC,eAAe,CAACE,SAAS;QACpC,oBAAOZ,IAAA,CAACL,aAAa,IAAE,CAAC;MAC1B;QACE,OAAO,IAAI;IACf;EACF;EAEAwC,aAAaA,CAAC3B,IAAiC,EAAU;IACvD,IAAQgB,KAAK,GAAK,IAAI,CAACD,KAAK,CAApBC,KAAK;IACb,IAAQjB,EAAE,GAAKiB,KAAK,CAAZjB,EAAE;IACV,QAAQC,IAAI;MACV,KAAKD,EAAE,CAACE,IAAI,CAACC,eAAe,CAACC,GAAG;QAC9B,OAAO,QAAQ;MACjB,KAAKJ,EAAE,CAACE,IAAI,CAACC,eAAe,CAACE,SAAS;QACpC,OAAO,MAAM;MACf;QACE,OAAO,QAAQ;IACnB;EACF;EAEAwB,cAAcA,CAAC5B,IAAiC,EAAU;IACxD,IAAQgB,KAAK,GAAK,IAAI,CAACD,KAAK,CAApBC,KAAK;IACb,IAAQjB,EAAE,GAAKiB,KAAK,CAAZjB,EAAE;IACV,QAAQC,IAAI;MACV,KAAKD,EAAE,CAACE,IAAI,CAACC,eAAe,CAACC,GAAG;QAC9B,OAAO,QAAQ;MACjB;QACE,OAAO,QAAQ;IACnB;EACF;EAEA0B,eAAeA,CAAA,EAAS;IACtB,IAAI,CAACC,QAAQ,CAACV,KAAK,IAAI;MACrB,IAAQD,WAAW,GAAKC,KAAK,CAArBD,WAAW;MACnB,IAAMY,cAAc,GAAG,CAAC,GAAGZ,WAAW,CAAC;MAEvC,IAAQH,KAAK,GAAK,IAAI,CAACD,KAAK,CAApBC,KAAK;MACb,IAAQP,OAAO,GAAKO,KAAK,CAAjBP,OAAO;MACfsB,cAAc,CAACC,IAAI,CAAC;QAClBzB,EAAE,EAAEtB,MAAM,CAAC,CAAC;QACZqB,KAAK,EAAEG,OAAO,CAAC,CAAC,CAAC,CAACG;MACpB,CAAC,CAAC;MAEF,OAAO;QAAEO,WAAW,EAAEY;MAAe,CAAC;IACxC,CAAC,EAAE,IAAI,CAACE,UAAU,CAAC;EACrB;EAEAC,qBAAqBA,CAAC5B,KAAa,EAAQ;IACzC,IAAI,CAACwB,QAAQ,CAAC;MAAET,QAAQ,EAAEf,KAAK,KAAK;IAAO,CAAC,EAAE,IAAI,CAAC2B,UAAU,CAAC;EAChE;EAEAE,WAAWA,CAAA,EAAS;IAClB,IAAQnB,KAAK,GAAK,IAAI,CAACD,KAAK,CAApBC,KAAK;IACb,IAAQP,OAAO,GAASO,KAAK,CAArBP,OAAO;MAAEV,EAAE,GAAKiB,KAAK,CAAZjB,EAAE;IAEnB,IAAMC,IAAI,GAAG,IAAI,CAACiB,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/B,IAAMC,KAAK,GAAGrB,YAAY,CAACgB,eAAe,CAACb,IAAI,EAAES,OAAO,CAAW;IACnE,IAAMU,WAAW,GAAGtB,YAAY,CAACW,sBAAsB,CAACT,EAAE,EAAEC,IAAI,EAAES,OAAO,CAAC;IAC1E,IAAMY,QAAQ,GAAG,IAAI;IAErB,IAAI,CAACS,QAAQ,CAAC;MAAE9B,IAAI;MAAEmB,WAAW;MAAED,KAAK;MAAEG;IAAS,CAAC,EAAE,IAAI,CAACY,UAAU,CAAC;EACxE;EAEAG,kBAAkBA,CAACC,gBAAwB,EAAEC,KAAa,EAAQ;IAChE,IAAMhC,KAAK,GAAG+B,gBAAgB;IAE9B,IAAI,CAACP,QAAQ,CAACV,KAAK,IAAI;MACrB,IAAMD,WAAW,GAAKC,KAAK,CAArBD,WAAW;MACjBA,WAAW,GAAG,CAAC,GAAGA,WAAW,CAAC;MAC9BA,WAAW,CAACmB,KAAK,CAAC,CAAChC,KAAK,GAAGA,KAAK;MAEhC,OAAO;QAAEa;MAAY,CAAC;IACxB,CAAC,EAAE,IAAI,CAACc,UAAU,CAAC;EACrB;EAEAM,uBAAuBA,CAACD,KAAa,EAAQ;IAC3C,IAAI,CAACR,QAAQ,CAACV,KAAK,IAAI;MACrB,IAAQD,WAAW,GAAKC,KAAK,CAArBD,WAAW;MACnB,IAAMY,cAAc,GAAG,CAAC,GAAGZ,WAAW,CAAC;MAEvCY,cAAc,CAACS,MAAM,CAACF,KAAK,EAAE,CAAC,CAAC;MAE/B,OAAO;QAAEnB,WAAW,EAAEY;MAAe,CAAC;IACxC,CAAC,EAAE,IAAI,CAACE,UAAU,CAAC;EACrB;EAEAQ,YAAYA,CAACC,KAAuC,EAAQ;IAC1DA,KAAK,CAACC,cAAc,CAAC,CAAC;IAEtB,IAAQC,QAAQ,GAAK,IAAI,CAAC7B,KAAK,CAAvB6B,QAAQ;IAChB,IAAAC,WAAA,GAA+C,IAAI,CAACzB,KAAK;MAAjDpB,IAAI,GAAA6C,WAAA,CAAJ7C,IAAI;MAAEmB,WAAW,GAAA0B,WAAA,CAAX1B,WAAW;MAAED,KAAK,GAAA2B,WAAA,CAAL3B,KAAK;MAAEG,QAAQ,GAAAwB,WAAA,CAARxB,QAAQ;IAC1C,IAAMyB,MAAM,GAAG3B,WAAW,CAAC4B,GAAG,CAACC,IAAI,IAAIA,IAAI,CAAC1C,KAAK,CAAC;IAClDsC,QAAQ,CAAC;MACP5C,IAAI;MACJ8C,MAAM;MACN5B,KAAK;MACLG;IACF,CAAC,CAAC;EACJ;EAEA4B,eAAeA,CAACX,KAAa,EAAQ;IACnC,IAAMtC,IAAI,GAAG,IAAI,CAACiB,QAAQ,CAAC,CAAC,CAACqB,KAAK,CAAC;IAEnC3C,GAAG,CAACuD,MAAM,CAAC,kBAAkB,EAAElD,IAAI,CAAC;IAEpC,IAAI,CAAC8B,QAAQ,CAACV,KAAK,IAAI;MACrB,IAAQJ,KAAK,GAAK,IAAI,CAACD,KAAK,CAApBC,KAAK;MACb,IAAQjB,EAAE,GAAKiB,KAAK,CAAZjB,EAAE;MACV,IAAMW,cAAc,GAAGb,YAAY,CAACC,iBAAiB,CAACC,EAAE,EAAEC,IAAI,CAAC;MAC/D,IAAMmB,WAAW,GAAKC,KAAK,CAArBD,WAAW;MACjBA,WAAW,GAAGA,WAAW,CAACgC,KAAK,CAAC,CAAC,EAAEzC,cAAc,CAAC;MAClD,IAAIS,WAAW,CAACR,MAAM,KAAK,CAAC,IAAID,cAAc,GAAG,CAAC,EAAE;QAClD,IAAQD,OAAO,GAAKO,KAAK,CAAjBP,OAAO;QACfU,WAAW,GAAGtB,YAAY,CAACW,sBAAsB,CAACT,EAAE,EAAEC,IAAI,EAAES,OAAO,CAAC;MACtE;MAEA,OAAO;QAAET,IAAI;QAAEmB;MAAY,CAAC;IAC9B,CAAC,EAAE,IAAI,CAACc,UAAU,CAAC;EACrB;EAEAmB,iBAAiBA,CAACf,gBAAwB,EAAQ;IAChD,IAAMnB,KAAK,GAAGmB,gBAAgB;IAC9B1C,GAAG,CAACuD,MAAM,CAAC,eAAe,EAAEhC,KAAK,CAAC;IAElC,IAAI,CAACY,QAAQ,CAAC;MAAEZ;IAAM,CAAC,EAAE,IAAI,CAACe,UAAU,CAAC;EAC3C;EAEAA,UAAUA,CAAA,EAAS;IACjB,IAAQoB,QAAQ,GAAK,IAAI,CAACtC,KAAK,CAAvBsC,QAAQ;IAChB,IAAAC,YAAA,GAA+C,IAAI,CAAClC,KAAK;MAAjDC,QAAQ,GAAAiC,YAAA,CAARjC,QAAQ;MAAErB,IAAI,GAAAsD,YAAA,CAAJtD,IAAI;MAAEmB,WAAW,GAAAmC,YAAA,CAAXnC,WAAW;MAAED,KAAK,GAAAoC,YAAA,CAALpC,KAAK;IAC1C,IAAM4B,MAAM,GAAG3B,WAAW,CAAC4B,GAAG,CAACC,IAAI,IAAIA,IAAI,CAAC1C,KAAK,CAAC;IAElD+C,QAAQ,CAAC;MAAErD,IAAI;MAAE8C,MAAM;MAAE5B,KAAK;MAAEG;IAAS,CAAC,CAAC;EAC7C;EAEAkC,MAAMA,CAAA,EAAgB;IACpB,IAAQvC,KAAK,GAAK,IAAI,CAACD,KAAK,CAApBC,KAAK;IACb,IAAQP,OAAO,GAASO,KAAK,CAArBP,OAAO;MAAEV,EAAE,GAAKiB,KAAK,CAAZjB,EAAE;IACnB,IAAAyD,YAAA,GAA+C,IAAI,CAACpC,KAAK;MAAjDD,WAAW,GAAAqC,YAAA,CAAXrC,WAAW;MAAEnB,IAAI,GAAAwD,YAAA,CAAJxD,IAAI;MAAEkB,KAAK,GAAAsC,YAAA,CAALtC,KAAK;MAAEG,QAAQ,GAAAmC,YAAA,CAARnC,QAAQ;IAC1C,IAAMX,cAAc,GAAGb,YAAY,CAACC,iBAAiB,CAACC,EAAE,EAAEC,IAAI,CAAC;IAC/D,IAAMyD,UAAU,GAAG,IAAI,CAAC9B,aAAa,CAAC3B,IAAI,CAAC;IAC3C,IAAM0D,WAAW,GAAG,IAAI,CAAC9B,cAAc,CAAC5B,IAAI,CAAC;IAC7C,IAAM2D,eAAe,GAAGxC,WAAW,CAACR,MAAM,GAAG,CAAC;IAC9C,IAAMiD,kBAAkB,GAAGzC,WAAW,CAACR,MAAM,GAAGD,cAAc;IAE9D,oBACElB,IAAA;MAAKqE,SAAS,EAAC,eAAe;MAAAC,QAAA,eAC5BpE,KAAA;QAAMkD,QAAQ,EAAE,IAAI,CAACH,YAAa;QAAAqB,QAAA,gBAChCpE,KAAA;UAAKmE,SAAS,EAAC,UAAU;UAAAC,QAAA,gBACvBtE,IAAA;YAAAsE,QAAA,EAAO;UAAiB,CAAO,CAAC,eAChCtE,IAAA;YAAKqE,SAAS,EAAC,UAAU;YAAAC,QAAA,EACtB,IAAI,CAAC7C,QAAQ,CAAC,CAAC,CAAC8B,GAAG,CAAC,CAACgB,SAAS,EAAEzB,KAAK,KAAK;cACzC,IAAM0B,GAAG,GAAGD,SAAiC;cAC7C,oBACEvE,IAAA;gBAAeqE,SAAS,EAAC,oBAAoB;gBAAAC,QAAA,eAC3CpE,KAAA;kBACEM,IAAI,EAAC,QAAQ;kBACb6D,SAAS,EAAE1F,UAAU,CACnB,KAAK,EACL,UAAU,EACV,gBAAgB,EAChB;oBACE8F,MAAM,EAAEF,SAAS,KAAK/D;kBACxB,CACF,CAAE;kBACFkE,OAAO,EAAEA,CAAA,KAAM,IAAI,CAACjB,eAAe,CAACX,KAAK,CAAE;kBAAAwB,QAAA,GAE1C,IAAI,CAACpC,WAAW,CAACqC,SAAS,CAAC,EAC3B,IAAI,CAACtC,WAAW,CAACsC,SAAS,CAAC;gBAAA,CACtB;cAAC,GAfDC,GAgBL,CAAC;YAEV,CAAC;UAAC,CACC,CAAC;QAAA,CACH,CAAC,eACNxE,IAAA,SAAK,CAAC,eACNE,KAAA;UAAKmE,SAAS,EAAC,sBAAsB;UAAAC,QAAA,gBACnCtE,IAAA;YAAOqE,SAAS,EAAC,kBAAkB;YAAAC,QAAA,EAAEL;UAAU,CAAQ,CAAC,eACxDjE,IAAA,CAAChB,MAAM;YACLqF,SAAS,EAAC,gCAAgC;YAC1CvD,KAAK,EAAEY,KAAM;YACbmC,QAAQ,EAAE,IAAI,CAACD,iBAAkB;YAAAU,QAAA,EAEhCrD,OAAO,CAACsC,GAAG,CAACoB,MAAM,iBACjB3E,IAAA;cAA0Bc,KAAK,EAAE6D,MAAM,CAACvD,IAAK;cAAAkD,QAAA,EAC1CK,MAAM,CAACvD;YAAI,GADDuD,MAAM,CAACvD,IAEZ,CACT;UAAC,CACI,CAAC;QAAA,CACN,CAAC,EACL+C,eAAe,iBAAInE,IAAA,SAAK,CAAC,EACzB2B,WAAW,CAAC4B,GAAG,CAAC,CAACqB,UAAU,EAAEC,CAAC,kBAC7B3E,KAAA;UACEmE,SAAS,EAAC,uCAAuC;UAEjD,mCAAAS,MAAA,CAAiCD,CAAC,CAAG;UAAAP,QAAA,gBAErCtE,IAAA;YAAOqE,SAAS,EAAC,kBAAkB;YAAAC,QAAA,EAChCO,CAAC,KAAK,CAAC,GAAGX,WAAW,GAAG;UAAE,CACtB,CAAC,eACRlE,IAAA,CAAChB,MAAM;YACLqF,SAAS,EAAC,gCAAgC;YAC1CvD,KAAK,EAAE8D,UAAU,CAAC9D,KAAM;YACxB+C,QAAQ,EAAEkB,CAAC,IAAI,IAAI,CAACnC,kBAAkB,CAACmC,CAAC,EAAEF,CAAC,CAAE;YAC7C,qCAAAC,MAAA,CAAmCD,CAAC,CAAG;YAAAP,QAAA,EAEtCrD,OAAO,CAACsC,GAAG,CAACoB,MAAM,iBACjB3E,IAAA;cAA0Bc,KAAK,EAAE6D,MAAM,CAACvD,IAAK;cAAAkD,QAAA,EAC1CK,MAAM,CAACvD;YAAI,GADDuD,MAAM,CAACvD,IAEZ,CACT;UAAC,CACI,CAAC,EACRO,WAAW,CAACR,MAAM,GAAG,CAAC,iBACrBnB,IAAA,CAACnB,MAAM;YACLmG,IAAI,EAAC,OAAO;YACZX,SAAS,EAAC,6BAA6B;YACvC,gCAAAS,MAAA,CAA8BD,CAAC,CAAG;YAClCH,OAAO,EAAEA,CAAA,KAAM;cACb,IAAI,CAAC3B,uBAAuB,CAAC8B,CAAC,CAAC;YACjC,CAAE;YACFI,IAAI,EAAE3F,OAAQ;YACd4F,OAAO,EAAC;UAAQ,CACjB,CACF;QAAA,GA7BIN,UAAU,CAAC7D,EA8Bb,CACN,CAAC,EACDqD,kBAAkB,iBACjBlE,KAAA;UAAKmE,SAAS,EAAC,UAAU;UAAAC,QAAA,gBACvBtE,IAAA;YAAKqE,SAAS,EAAC;UAAO,CAAE,CAAC,eACzBrE,IAAA,CAACnB,MAAM;YACLmG,IAAI,EAAC,OAAO;YACZX,SAAS,EAAC,qBAAqB;YAC/BK,OAAO,EAAE,IAAI,CAACrC,eAAgB;YAC9B4C,IAAI,EAAE7F,sBAAuB;YAAAkF,QAAA,EAC9B;UAED,CAAQ,CAAC;QAAA,CACN,CACN,eACDpE,KAAA;UAAKmE,SAAS,EAAC,6BAA6B;UAAAC,QAAA,gBAC1CtE,IAAA;YAAOqE,SAAS,EAAC,mBAAmB;YAAAC,QAAA,eAClCpE,KAAA;cAAKmE,SAAS,EAAC,iBAAiB;cAAAC,QAAA,gBAC9BtE,IAAA,CAACpB,eAAe;gBACduG,IAAI,EAAEhG,OAAQ;gBACd8F,IAAI,EAAE5F,mBAAoB;gBAC1B+F,SAAS,EAAC;cAAgB,CAC3B,CAAC,eACFpF,IAAA,CAACpB,eAAe;gBACdqG,IAAI,EAAEpD,QAAQ,GAAG5C,MAAM,GAAGC,QAAS;gBACnCkG,SAAS,EAAC;cAAuB,CAClC,CAAC;YAAA,CACC;UAAC,CACD,CAAC,eACRlF,KAAA,CAACpB,UAAU;YACT,cAAW,oBAAoB;YAC/BuG,WAAW,EAAC,YAAY;YACxBxB,QAAQ,EAAE,IAAI,CAACnB,qBAAsB;YACrC5B,KAAK,KAAAgE,MAAA,CAAKjD,QAAQ,CAAG;YAAAyC,QAAA,gBAErBtE,IAAA,CAACjB,KAAK;cAAC+B,KAAK,EAAC,MAAM;cAAAwD,QAAA,EAAC;YAAU,CAAO,CAAC,eACtCtE,IAAA,CAACjB,KAAK;cAAC+B,KAAK,EAAC,OAAO;cAAAwD,QAAA,EAAC;YAAY,CAAO,CAAC;UAAA,CAC/B,CAAC;QAAA,CACV,CAAC,eACNpE,KAAA;UAAKmE,SAAS,EAAC,UAAU;UAAAC,QAAA,gBACvBtE,IAAA;YAAKqE,SAAS,EAAC;UAAmB,CAAE,CAAC,eACrCrE,IAAA;YAAKqE,SAAS,EAAC,6BAA6B;YAAAC,QAAA,EACzCzC,QAAQ,GACL,8GAA8G,GAC9G;UAA4I,CAC7I,CAAC;QAAA,CACH,CAAC,eACN3B,KAAA;UACEmE,SAAS,EAAE1F,UAAU,CAAC,UAAU,EAAE,qBAAqB,EAAE,MAAM,CAAE;UAAA2F,QAAA,gBAEjEtE,IAAA,CAACnB,MAAM;YACLmG,IAAI,EAAC,WAAW;YAChBX,SAAS,EAAC,WAAW;YACrBK,OAAO,EAAE,IAAI,CAAC/B,WAAY;YAAA2B,QAAA,EAC3B;UAED,CAAQ,CAAC,eACTtE,IAAA,CAACnB,MAAM;YAACmG,IAAI,EAAC,SAAS;YAACxE,IAAI,EAAC,QAAQ;YAAC6D,SAAS,EAAC,YAAY;YAAAC,QAAA,EAAC;UAE5D,CAAQ,CAAC;QAAA,CACN,CAAC;MAAA,CACF;IAAC,CACJ,CAAC;EAEV;AACF;AAEA,eAAejE,YAAY","ignoreList":[]}
@@ -53,9 +53,7 @@ class CustomColumnBuilder extends Component {
53
53
  this.successButtonTimer = null;
54
54
  }
55
55
  componentDidMount() {
56
- var {
57
- customColumns
58
- } = this.props;
56
+ var customColumns = this.props.customColumns;
59
57
  this.parseCustomColumns(customColumns);
60
58
  this.startListening();
61
59
  }
@@ -71,17 +69,13 @@ class CustomColumnBuilder extends Component {
71
69
  });
72
70
  }
73
71
  startListening() {
74
- var {
75
- model
76
- } = this.props;
72
+ var model = this.props.model;
77
73
  model.addEventListener(IrisGridModel.EVENT.COLUMNS_CHANGED, this.handleCustomColumnUpdated);
78
74
  model.addEventListener(IrisGridModel.EVENT.UPDATED, this.handleCustomColumnUpdated);
79
75
  model.addEventListener(IrisGridModel.EVENT.REQUEST_FAILED, this.handleRequestFailed);
80
76
  }
81
77
  stopListening() {
82
- var {
83
- model
84
- } = this.props;
78
+ var model = this.props.model;
85
79
  model.removeEventListener(IrisGridModel.EVENT.COLUMNS_CHANGED, this.handleCustomColumnUpdated);
86
80
  model.removeEventListener(IrisGridModel.EVENT.UPDATED, this.handleCustomColumnUpdated);
87
81
  model.removeEventListener(IrisGridModel.EVENT.REQUEST_FAILED, this.handleRequestFailed);
@@ -106,9 +100,7 @@ class CustomColumnBuilder extends Component {
106
100
  }
107
101
  }
108
102
  handleAddColumnClick() {
109
- var {
110
- inputs
111
- } = this.state;
103
+ var inputs = this.state.inputs;
112
104
  var newInputs = [...inputs];
113
105
  newInputs.push(CustomColumnBuilder.createCustomColumnInput());
114
106
  this.setState({
@@ -116,9 +108,7 @@ class CustomColumnBuilder extends Component {
116
108
  });
117
109
  }
118
110
  handleDeleteColumn(eventKey) {
119
- var {
120
- inputs
121
- } = this.state;
111
+ var inputs = this.state.inputs;
122
112
  var customColumnIndex = this.getInputIndex(inputs, eventKey);
123
113
  var newInputs = [...inputs];
124
114
  newInputs.splice(customColumnIndex, 1);
@@ -130,9 +120,7 @@ class CustomColumnBuilder extends Component {
130
120
  });
131
121
  }
132
122
  handleInputChange(eventKey, type, value) {
133
- var {
134
- inputs
135
- } = this.state;
123
+ var inputs = this.state.inputs;
136
124
  var customColumnIndex = this.getInputIndex(inputs, eventKey);
137
125
  var customColumnInput = this.getInput(inputs, eventKey);
138
126
  var newCustomInput = _objectSpread({}, customColumnInput);
@@ -144,9 +132,7 @@ class CustomColumnBuilder extends Component {
144
132
  });
145
133
  }
146
134
  handleCustomColumnUpdated() {
147
- var {
148
- isCustomColumnApplying
149
- } = this.state;
135
+ var isCustomColumnApplying = this.state.isCustomColumnApplying;
150
136
  if (!isCustomColumnApplying) {
151
137
  return;
152
138
  }
@@ -161,9 +147,7 @@ class CustomColumnBuilder extends Component {
161
147
  }
162
148
  handleRequestFailed(event) {
163
149
  var customEvent = event;
164
- var {
165
- isCustomColumnApplying
166
- } = this.state;
150
+ var isCustomColumnApplying = this.state.isCustomColumnApplying;
167
151
  if (!isCustomColumnApplying) {
168
152
  return;
169
153
  }
@@ -189,9 +173,7 @@ class CustomColumnBuilder extends Component {
189
173
  if (!result.destination) {
190
174
  return;
191
175
  }
192
- var {
193
- inputs
194
- } = this.state;
176
+ var inputs = this.state.inputs;
195
177
  var sourceIndex = result.source.index;
196
178
  var destinationIndex = result.destination.index;
197
179
  var newInputs = [...inputs];
@@ -203,9 +185,7 @@ class CustomColumnBuilder extends Component {
203
185
  });
204
186
  }
205
187
  handleEditorTabNavigation(focusEditorIndex, shiftKey) {
206
- var {
207
- inputs
208
- } = this.state;
188
+ var inputs = this.state.inputs;
209
189
  // focus on drag handle
210
190
  if (shiftKey) {
211
191
  var _this$container;
@@ -223,23 +203,19 @@ class CustomColumnBuilder extends Component {
223
203
  }
224
204
  }
225
205
  handleSaveClick() {
226
- var {
227
- onSave,
228
- customColumns: originalCustomColumns
229
- } = this.props;
230
- var {
231
- inputs,
232
- isCustomColumnApplying
233
- } = this.state;
206
+ var _this$props = this.props,
207
+ onSave = _this$props.onSave,
208
+ originalCustomColumns = _this$props.customColumns;
209
+ var _this$state = this.state,
210
+ inputs = _this$state.inputs,
211
+ isCustomColumnApplying = _this$state.isCustomColumnApplying;
234
212
  if (isCustomColumnApplying) {
235
213
  return;
236
214
  }
237
215
  var customColumns = [];
238
216
  inputs.forEach(input => {
239
- var {
240
- name,
241
- formula
242
- } = input;
217
+ var name = input.name,
218
+ formula = input.formula;
243
219
  if (name && formula) {
244
220
  customColumns.push("".concat(name, "=").concat(formula));
245
221
  }
@@ -253,9 +229,7 @@ class CustomColumnBuilder extends Component {
253
229
  }
254
230
  resetRequestFailed() {
255
231
  this.setState(_ref => {
256
- var {
257
- hasRequestFailed
258
- } = _ref;
232
+ var hasRequestFailed = _ref.hasRequestFailed;
259
233
  if (hasRequestFailed) {
260
234
  return {
261
235
  hasRequestFailed: false
@@ -265,25 +239,20 @@ class CustomColumnBuilder extends Component {
265
239
  });
266
240
  }
267
241
  renderInputs() {
268
- var {
269
- inputs,
270
- hasRequestFailed
271
- } = this.state;
242
+ var _this$state2 = this.state,
243
+ inputs = _this$state2.inputs,
244
+ hasRequestFailed = _this$state2.hasRequestFailed;
272
245
  var nameCount = new Map();
273
246
  inputs.forEach(_ref2 => {
274
247
  var _nameCount$get;
275
- var {
276
- name
277
- } = _ref2;
248
+ var name = _ref2.name;
278
249
  return nameCount.set(name, ((_nameCount$get = nameCount.get(name)) !== null && _nameCount$get !== void 0 ? _nameCount$get : 0) + 1);
279
250
  });
280
251
  return inputs.map((input, index) => {
281
252
  var _nameCount$get2;
282
- var {
283
- eventKey,
284
- name,
285
- formula
286
- } = input;
253
+ var eventKey = input.eventKey,
254
+ name = input.name,
255
+ formula = input.formula;
287
256
  var isDuplicate = ((_nameCount$get2 = nameCount.get(name)) !== null && _nameCount$get2 !== void 0 ? _nameCount$get2 : 0) > 1;
288
257
  return /*#__PURE__*/_jsx(CustomColumnInput, {
289
258
  inputIndex: index,
@@ -299,27 +268,20 @@ class CustomColumnBuilder extends Component {
299
268
  });
300
269
  }
301
270
  renderSaveButton() {
302
- var {
303
- inputs,
304
- isCustomColumnApplying,
305
- isSuccessShowing
306
- } = this.state;
271
+ var _this$state3 = this.state,
272
+ inputs = _this$state3.inputs,
273
+ isCustomColumnApplying = _this$state3.isCustomColumnApplying,
274
+ isSuccessShowing = _this$state3.isSuccessShowing;
307
275
  var saveText = inputs.length > 1 ? 'Save Columns' : 'Save Column';
308
276
  var areNamesValid = inputs.every(_ref3 => {
309
- var {
310
- name
311
- } = _ref3;
277
+ var name = _ref3.name;
312
278
  return name === '' || DbNameValidator.isValidColumnName(name);
313
279
  });
314
280
  var filteredNames = inputs.filter(_ref4 => {
315
- var {
316
- name
317
- } = _ref4;
281
+ var name = _ref4.name;
318
282
  return name !== '';
319
283
  }).map(_ref5 => {
320
- var {
321
- name
322
- } = _ref5;
284
+ var name = _ref5.name;
323
285
  return name;
324
286
  });
325
287
  var areNamesUnique = new Set(filteredNames).size === filteredNames.length;
@@ -342,12 +304,8 @@ class CustomColumnBuilder extends Component {
342
304
  });
343
305
  }
344
306
  render() {
345
- var {
346
- onCancel
347
- } = this.props;
348
- var {
349
- errorMessage
350
- } = this.state;
307
+ var onCancel = this.props.onCancel;
308
+ var errorMessage = this.state.errorMessage;
351
309
  return /*#__PURE__*/_jsxs("div", {
352
310
  role: "presentation",
353
311
  className: "custom-column-builder-container",