@deephaven/iris-grid 1.4.1-beta.0 → 1.4.1-react19.43

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 (238) hide show
  1. package/dist/AdvancedFilterCreator.js +5 -7
  2. package/dist/AdvancedFilterCreator.js.map +1 -1
  3. package/dist/AdvancedFilterCreatorFilterItem.js +6 -7
  4. package/dist/AdvancedFilterCreatorFilterItem.js.map +1 -1
  5. package/dist/AdvancedFilterCreatorSelectValue.js +1 -2
  6. package/dist/AdvancedFilterCreatorSelectValue.js.map +1 -1
  7. package/dist/AdvancedFilterCreatorSelectValueList.js +2 -3
  8. package/dist/AdvancedFilterCreatorSelectValueList.js.map +1 -1
  9. package/dist/ColumnHeaderGroup.js.map +1 -1
  10. package/dist/ColumnStatistics.d.ts +2 -2
  11. package/dist/ColumnStatistics.d.ts.map +1 -1
  12. package/dist/ColumnStatistics.js +2 -5
  13. package/dist/ColumnStatistics.js.map +1 -1
  14. package/dist/CommonTypes.js.map +1 -1
  15. package/dist/CrossColumnSearch.js +2 -4
  16. package/dist/CrossColumnSearch.js.map +1 -1
  17. package/dist/EmptyIrisGridModel.d.ts +3 -0
  18. package/dist/EmptyIrisGridModel.d.ts.map +1 -1
  19. package/dist/EmptyIrisGridModel.js +8 -0
  20. package/dist/EmptyIrisGridModel.js.map +1 -1
  21. package/dist/FilterInputField.js +4 -5
  22. package/dist/FilterInputField.js.map +1 -1
  23. package/dist/GotoRow.js +4 -6
  24. package/dist/GotoRow.js.map +1 -1
  25. package/dist/IrisGrid.d.ts +38 -43
  26. package/dist/IrisGrid.d.ts.map +1 -1
  27. package/dist/IrisGrid.js +181 -168
  28. package/dist/IrisGrid.js.map +1 -1
  29. package/dist/IrisGridBottomBar.d.ts.map +1 -1
  30. package/dist/IrisGridBottomBar.js +4 -1
  31. package/dist/IrisGridBottomBar.js.map +1 -1
  32. package/dist/IrisGridCacheUtils.d.ts.map +1 -1
  33. package/dist/IrisGridCacheUtils.js +1 -1
  34. package/dist/IrisGridCacheUtils.js.map +1 -1
  35. package/dist/IrisGridCellOverflowModal.js +1 -2
  36. package/dist/IrisGridCellOverflowModal.js.map +1 -1
  37. package/dist/IrisGridCellRendererUtils.js.map +1 -1
  38. package/dist/IrisGridCopyHandler.js +4 -6
  39. package/dist/IrisGridCopyHandler.js.map +1 -1
  40. package/dist/IrisGridDataBarCellRenderer.js.map +1 -1
  41. package/dist/IrisGridIcons.js.map +1 -1
  42. package/dist/IrisGridMetricCalculator.d.ts +1 -2
  43. package/dist/IrisGridMetricCalculator.d.ts.map +1 -1
  44. package/dist/IrisGridMetricCalculator.js.map +1 -1
  45. package/dist/IrisGridModel.d.ts +8 -0
  46. package/dist/IrisGridModel.d.ts.map +1 -1
  47. package/dist/IrisGridModel.js +8 -0
  48. package/dist/IrisGridModel.js.map +1 -1
  49. package/dist/IrisGridModelFactory.js.map +1 -1
  50. package/dist/IrisGridModelUpdater.d.ts +2 -1
  51. package/dist/IrisGridModelUpdater.d.ts.map +1 -1
  52. package/dist/IrisGridModelUpdater.js +4 -0
  53. package/dist/IrisGridModelUpdater.js.map +1 -1
  54. package/dist/IrisGridPartitionSelector.d.ts.map +1 -1
  55. package/dist/IrisGridPartitionSelector.js +6 -8
  56. package/dist/IrisGridPartitionSelector.js.map +1 -1
  57. package/dist/IrisGridPartitionedTableModel.js.map +1 -1
  58. package/dist/IrisGridProxyModel.d.ts +2 -0
  59. package/dist/IrisGridProxyModel.d.ts.map +1 -1
  60. package/dist/IrisGridProxyModel.js +12 -7
  61. package/dist/IrisGridProxyModel.js.map +1 -1
  62. package/dist/IrisGridRenderer.js +0 -1
  63. package/dist/IrisGridRenderer.js.map +1 -1
  64. package/dist/IrisGridShortcuts.js.map +1 -1
  65. package/dist/IrisGridTableModel.js +1 -2
  66. package/dist/IrisGridTableModel.js.map +1 -1
  67. package/dist/IrisGridTableModelTemplate.d.ts +6 -2
  68. package/dist/IrisGridTableModelTemplate.d.ts.map +1 -1
  69. package/dist/IrisGridTableModelTemplate.js +71 -61
  70. package/dist/IrisGridTableModelTemplate.js.map +1 -1
  71. package/dist/IrisGridTestUtils.js.map +1 -1
  72. package/dist/IrisGridTextCellRenderer.js.map +1 -1
  73. package/dist/IrisGridTheme.js.map +1 -1
  74. package/dist/IrisGridThemeProvider.d.ts.map +1 -1
  75. package/dist/IrisGridThemeProvider.js +1 -0
  76. package/dist/IrisGridThemeProvider.js.map +1 -1
  77. package/dist/IrisGridTreeTableModel.d.ts +1 -1
  78. package/dist/IrisGridTreeTableModel.d.ts.map +1 -1
  79. package/dist/IrisGridTreeTableModel.js +19 -14
  80. package/dist/IrisGridTreeTableModel.js.map +1 -1
  81. package/dist/IrisGridUtils.d.ts +3 -1
  82. package/dist/IrisGridUtils.d.ts.map +1 -1
  83. package/dist/IrisGridUtils.js +60 -56
  84. package/dist/IrisGridUtils.js.map +1 -1
  85. package/dist/LazyIrisGrid.d.ts +55 -77
  86. package/dist/LazyIrisGrid.d.ts.map +1 -1
  87. package/dist/LazyIrisGrid.js +3 -1
  88. package/dist/LazyIrisGrid.js.map +1 -1
  89. package/dist/MissingKeyError.js.map +1 -1
  90. package/dist/MissingPartitionError.js.map +1 -1
  91. package/dist/NoPastePermissionModal.js +1 -2
  92. package/dist/NoPastePermissionModal.js.map +1 -1
  93. package/dist/PartitionedGridModel.js.map +1 -1
  94. package/dist/PendingDataBottomBar.js +1 -2
  95. package/dist/PendingDataBottomBar.js.map +1 -1
  96. package/dist/ToastBottomBar.js.map +1 -1
  97. package/dist/declaration.d.js.map +1 -1
  98. package/dist/format-context-menus/CustomFormatAction.js +1 -2
  99. package/dist/format-context-menus/CustomFormatAction.js.map +1 -1
  100. package/dist/format-context-menus/DateTimeFormatContextMenu.js.map +1 -1
  101. package/dist/format-context-menus/DecimalFormatContextMenu.js.map +1 -1
  102. package/dist/format-context-menus/FormatContextMenuUtils.js.map +1 -1
  103. package/dist/format-context-menus/IntegerFormatContextMenu.js.map +1 -1
  104. package/dist/format-context-menus/TextAlignmentFormatContextMenu.d.ts +21 -0
  105. package/dist/format-context-menus/TextAlignmentFormatContextMenu.d.ts.map +1 -0
  106. package/dist/format-context-menus/TextAlignmentFormatContextMenu.js +42 -0
  107. package/dist/format-context-menus/TextAlignmentFormatContextMenu.js.map +1 -0
  108. package/dist/format-context-menus/index.d.ts +1 -0
  109. package/dist/format-context-menus/index.d.ts.map +1 -1
  110. package/dist/format-context-menus/index.js +1 -0
  111. package/dist/format-context-menus/index.js.map +1 -1
  112. package/dist/index.js.map +1 -1
  113. package/dist/key-handlers/ClearFilterKeyHandler.js.map +1 -1
  114. package/dist/key-handlers/CopyCellKeyHandler.js.map +1 -1
  115. package/dist/key-handlers/CopyKeyHandler.js.map +1 -1
  116. package/dist/key-handlers/ReverseKeyHandler.js.map +1 -1
  117. package/dist/key-handlers/index.js.map +1 -1
  118. package/dist/mousehandlers/IrisGridCellOverflowMouseHandler.js.map +1 -1
  119. package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.js.map +1 -1
  120. package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.d.ts.map +1 -1
  121. package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.js +5 -2
  122. package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.js.map +1 -1
  123. package/dist/mousehandlers/IrisGridContextMenuHandler.d.ts +1 -0
  124. package/dist/mousehandlers/IrisGridContextMenuHandler.d.ts.map +1 -1
  125. package/dist/mousehandlers/IrisGridContextMenuHandler.js +27 -3
  126. package/dist/mousehandlers/IrisGridContextMenuHandler.js.map +1 -1
  127. package/dist/mousehandlers/IrisGridCopyCellMouseHandler.js.map +1 -1
  128. package/dist/mousehandlers/IrisGridDataSelectMouseHandler.js.map +1 -1
  129. package/dist/mousehandlers/IrisGridFilterMouseHandler.js.map +1 -1
  130. package/dist/mousehandlers/IrisGridPartitionedTableMouseHandler.js.map +1 -1
  131. package/dist/mousehandlers/IrisGridRowTreeMouseHandler.js.map +1 -1
  132. package/dist/mousehandlers/IrisGridSortMouseHandler.js.map +1 -1
  133. package/dist/mousehandlers/IrisGridTokenMouseHandler.js +1 -3
  134. package/dist/mousehandlers/IrisGridTokenMouseHandler.js.map +1 -1
  135. package/dist/mousehandlers/PendingMouseHandler.js.map +1 -1
  136. package/dist/mousehandlers/index.js.map +1 -1
  137. package/dist/sidebar/AdvancedSettings.js.map +1 -1
  138. package/dist/sidebar/AdvancedSettingsMenu.d.ts +1 -1
  139. package/dist/sidebar/AdvancedSettingsMenu.d.ts.map +1 -1
  140. package/dist/sidebar/AdvancedSettingsMenu.js.map +1 -1
  141. package/dist/sidebar/AdvancedSettingsType.js +3 -3
  142. package/dist/sidebar/AdvancedSettingsType.js.map +1 -1
  143. package/dist/sidebar/ChartBuilder.d.ts +2 -2
  144. package/dist/sidebar/ChartBuilder.d.ts.map +1 -1
  145. package/dist/sidebar/ChartBuilder.js +1 -2
  146. package/dist/sidebar/ChartBuilder.js.map +1 -1
  147. package/dist/sidebar/CustomColumnBuilder.d.ts +1 -1
  148. package/dist/sidebar/CustomColumnBuilder.d.ts.map +1 -1
  149. package/dist/sidebar/CustomColumnBuilder.js +4 -6
  150. package/dist/sidebar/CustomColumnBuilder.js.map +1 -1
  151. package/dist/sidebar/CustomColumnInput.js +2 -3
  152. package/dist/sidebar/CustomColumnInput.js.map +1 -1
  153. package/dist/sidebar/DownloadServiceWorkerUtils.js +1 -1
  154. package/dist/sidebar/DownloadServiceWorkerUtils.js.map +1 -1
  155. package/dist/sidebar/InputEditor.js +8 -9
  156. package/dist/sidebar/InputEditor.js.map +1 -1
  157. package/dist/sidebar/OptionType.js +3 -3
  158. package/dist/sidebar/OptionType.js.map +1 -1
  159. package/dist/sidebar/RollupRows.d.ts +1 -1
  160. package/dist/sidebar/RollupRows.d.ts.map +1 -1
  161. package/dist/sidebar/RollupRows.js +9 -11
  162. package/dist/sidebar/RollupRows.js.map +1 -1
  163. package/dist/sidebar/SelectDistinctBuilder.js +1 -2
  164. package/dist/sidebar/SelectDistinctBuilder.js.map +1 -1
  165. package/dist/sidebar/TableCsvExporter.js +5 -7
  166. package/dist/sidebar/TableCsvExporter.js.map +1 -1
  167. package/dist/sidebar/TableSaver.js +9 -10
  168. package/dist/sidebar/TableSaver.js.map +1 -1
  169. package/dist/sidebar/aggregations/AggregationEdit.js +4 -5
  170. package/dist/sidebar/aggregations/AggregationEdit.js.map +1 -1
  171. package/dist/sidebar/aggregations/AggregationOperation.js +3 -3
  172. package/dist/sidebar/aggregations/AggregationOperation.js.map +1 -1
  173. package/dist/sidebar/aggregations/AggregationUtils.js +0 -1
  174. package/dist/sidebar/aggregations/AggregationUtils.js.map +1 -1
  175. package/dist/sidebar/aggregations/Aggregations.d.ts.map +1 -1
  176. package/dist/sidebar/aggregations/Aggregations.js +3 -5
  177. package/dist/sidebar/aggregations/Aggregations.js.map +1 -1
  178. package/dist/sidebar/aggregations/index.js.map +1 -1
  179. package/dist/sidebar/conditional-formatting/ColumnFormatEditor.d.ts.map +1 -1
  180. package/dist/sidebar/conditional-formatting/ColumnFormatEditor.js +1 -3
  181. package/dist/sidebar/conditional-formatting/ColumnFormatEditor.js.map +1 -1
  182. package/dist/sidebar/conditional-formatting/ConditionEditor.d.ts.map +1 -1
  183. package/dist/sidebar/conditional-formatting/ConditionEditor.js +2 -3
  184. package/dist/sidebar/conditional-formatting/ConditionEditor.js.map +1 -1
  185. package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.js +1 -2
  186. package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.js.map +1 -1
  187. package/dist/sidebar/conditional-formatting/ConditionalFormattingAPIUtils.js.map +1 -1
  188. package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js +2 -3
  189. package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js.map +1 -1
  190. package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js +21 -21
  191. package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js.map +1 -1
  192. package/dist/sidebar/conditional-formatting/RowFormatEditor.d.ts.map +1 -1
  193. package/dist/sidebar/conditional-formatting/RowFormatEditor.js +1 -3
  194. package/dist/sidebar/conditional-formatting/RowFormatEditor.js.map +1 -1
  195. package/dist/sidebar/conditional-formatting/StyleEditor.d.ts.map +1 -1
  196. package/dist/sidebar/conditional-formatting/StyleEditor.js +2 -3
  197. package/dist/sidebar/conditional-formatting/StyleEditor.js.map +1 -1
  198. package/dist/sidebar/icons/BarIcon.js +1 -2
  199. package/dist/sidebar/icons/BarIcon.js.map +1 -1
  200. package/dist/sidebar/icons/FormatColumnWhereIcon.js +1 -2
  201. package/dist/sidebar/icons/FormatColumnWhereIcon.js.map +1 -1
  202. package/dist/sidebar/icons/FormatRowWhereIcon.js +1 -2
  203. package/dist/sidebar/icons/FormatRowWhereIcon.js.map +1 -1
  204. package/dist/sidebar/icons/HistogramIcon.js +1 -2
  205. package/dist/sidebar/icons/HistogramIcon.js.map +1 -1
  206. package/dist/sidebar/icons/LineIcon.js +1 -2
  207. package/dist/sidebar/icons/LineIcon.js.map +1 -1
  208. package/dist/sidebar/icons/PieIcon.js +1 -2
  209. package/dist/sidebar/icons/PieIcon.js.map +1 -1
  210. package/dist/sidebar/icons/ScatterIcon.js +1 -2
  211. package/dist/sidebar/icons/ScatterIcon.js.map +1 -1
  212. package/dist/sidebar/icons/index.js.map +1 -1
  213. package/dist/sidebar/index.js.map +1 -1
  214. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.d.ts +2 -2
  215. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.d.ts.map +1 -1
  216. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.js +34 -36
  217. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.js.map +1 -1
  218. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilderUtils.js +3 -3
  219. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilderUtils.js.map +1 -1
  220. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingGroup.js +3 -5
  221. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingGroup.js.map +1 -1
  222. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingItem.d.ts.map +1 -1
  223. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingItem.js +2 -4
  224. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingItem.js.map +1 -1
  225. package/dist/sidebar/visibility-ordering-builder/sortable-tree/PointerSensorWithInteraction.js.map +1 -1
  226. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTree.js +4 -4
  227. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTree.js.map +1 -1
  228. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeInner.js +3 -6
  229. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeInner.js.map +1 -1
  230. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeItem.js.map +1 -1
  231. package/dist/sidebar/visibility-ordering-builder/sortable-tree/TreeItem.js +1 -2
  232. package/dist/sidebar/visibility-ordering-builder/sortable-tree/TreeItem.js.map +1 -1
  233. package/dist/sidebar/visibility-ordering-builder/sortable-tree/keyboardCoordinates.js.map +1 -1
  234. package/dist/sidebar/visibility-ordering-builder/sortable-tree/types.js.map +1 -1
  235. package/dist/sidebar/visibility-ordering-builder/sortable-tree/utilities.d.ts +1 -2
  236. package/dist/sidebar/visibility-ordering-builder/sortable-tree/utilities.d.ts.map +1 -1
  237. package/dist/sidebar/visibility-ordering-builder/sortable-tree/utilities.js.map +1 -1
  238. package/package.json +17 -18
@@ -10,16 +10,12 @@ import Log from '@deephaven/log';
10
10
  import { PromiseUtils } from '@deephaven/utils';
11
11
  import { isExpandableGridModel } from '@deephaven/grid';
12
12
  import "./ColumnStatistics.css";
13
- import { jsx as _jsx } from "react/jsx-runtime";
14
- import { jsxs as _jsxs } from "react/jsx-runtime";
15
- import { Fragment as _Fragment } from "react/jsx-runtime";
13
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
16
14
  var log = Log.module('ColumnStatistics');
17
15
  var STATS_LABEL_OVERRIDES = {
18
16
  SIZE: 'Number of Rows'
19
17
  };
20
18
  class ColumnStatistics extends Component {
21
- /** Automatically generate the statistics when the row count is below this threshold */
22
-
23
19
  static getStatsLabel(operation) {
24
20
  var _STATS_LABEL_OVERRIDE;
25
21
  return (_STATS_LABEL_OVERRIDE = STATS_LABEL_OVERRIDES[operation]) !== null && _STATS_LABEL_OVERRIDE !== void 0 ? _STATS_LABEL_OVERRIDE : operation.split(' ').map(w => w[0].toUpperCase() + w.substr(1).toLowerCase()).join(' ');
@@ -216,6 +212,7 @@ class ColumnStatistics extends Component {
216
212
  });
217
213
  }
218
214
  }
215
+ /** Automatically generate the statistics when the row count is below this threshold */
219
216
  _defineProperty(ColumnStatistics, "AUTO_GENERATE_LIMIT", 100000);
220
217
  export default ColumnStatistics;
221
218
  //# sourceMappingURL=ColumnStatistics.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ColumnStatistics.js","names":["React","Component","classNames","FontAwesomeIcon","Button","CopyButton","LoadingSpinner","dhFreeze","dhRefresh","dhSortSlash","vsLock","Log","PromiseUtils","isExpandableGridModel","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","log","module","STATS_LABEL_OVERRIDES","SIZE","ColumnStatistics","getStatsLabel","operation","_STATS_LABEL_OVERRIDE","split","map","w","toUpperCase","substr","toLowerCase","join","constructor","props","_defineProperty","handleError","bind","handleGenerateStatistics","handleStatistics","cancelablePromise","state","error","loading","statistics","numRows","componentDidMount","maybeGenerateStatistics","componentWillUnmount","cancel","column","model","rowCount","pendingRowCount","floatingBottomRowCount","floatingTopRowCount","setState","isColumnStatisticsAvailable","isProxy","AUTO_GENERATE_LIMIT","makeCancelable","columnStatistics","then","catch","stats","debug","onStatistics","statisticsMap","forEach","value","push","type","getType","uniqueValues","className","isCanceled","render","_column$displayName","showGenerateStatistics","statisticElements","columnType","substring","lastIndexOf","description","i","length","formattedValue","displayString","name","statisticElement","children","rowCountLabel","hasExpandableRows","formattedRowCount","columnIndex","getColumnIndexByName","displayName","tooltip","copy","isColumnSortable","icon","isColumnMovable","isColumnFrozen","kind","onClick","concat"],"sources":["../src/ColumnStatistics.tsx"],"sourcesContent":["import React, { Component, type Key } from 'react';\nimport classNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { Button, CopyButton, LoadingSpinner } from '@deephaven/components';\nimport { dhFreeze, dhRefresh, dhSortSlash, vsLock } from '@deephaven/icons';\nimport type { dh } from '@deephaven/jsapi-types';\nimport Log from '@deephaven/log';\nimport { type CancelablePromise, PromiseUtils } from '@deephaven/utils';\nimport { isExpandableGridModel } from '@deephaven/grid';\nimport './ColumnStatistics.scss';\nimport { type DisplayColumn } from './IrisGridModel';\nimport type IrisGridModel from './IrisGridModel';\n\nconst log = Log.module('ColumnStatistics');\nconst STATS_LABEL_OVERRIDES: Record<string, string> = {\n SIZE: 'Number of Rows',\n};\n\ninterface Statistic {\n operation: Key;\n className?: string;\n value: unknown;\n type: string;\n}\n\ninterface ColumnStatisticsProps {\n column: DisplayColumn;\n model: IrisGridModel;\n onStatistics: () => void;\n}\ninterface ColumnStatisticsState {\n error: unknown;\n loading: boolean;\n statistics: readonly Statistic[] | null;\n numRows: number;\n}\n\nclass ColumnStatistics extends Component<\n ColumnStatisticsProps,\n ColumnStatisticsState\n> {\n /** Automatically generate the statistics when the row count is below this threshold */\n static AUTO_GENERATE_LIMIT = 100000;\n\n static getStatsLabel(operation: string): string {\n return (\n STATS_LABEL_OVERRIDES[operation] ??\n operation\n .split(' ')\n .map(w => w[0].toUpperCase() + w.substr(1).toLowerCase())\n .join(' ')\n );\n }\n\n constructor(props: ColumnStatisticsProps) {\n super(props);\n\n this.handleError = this.handleError.bind(this);\n this.handleGenerateStatistics = this.handleGenerateStatistics.bind(this);\n this.handleStatistics = this.handleStatistics.bind(this);\n\n this.cancelablePromise = null;\n\n this.state = {\n error: null,\n loading: false,\n statistics: null,\n numRows: 0,\n };\n }\n\n componentDidMount(): void {\n this.maybeGenerateStatistics();\n }\n\n componentWillUnmount(): void {\n if (this.cancelablePromise) {\n this.cancelablePromise.cancel();\n }\n }\n\n cancelablePromise: CancelablePromise<dh.ColumnStatistics> | null;\n\n maybeGenerateStatistics(): void {\n const { column, model } = this.props;\n\n const numRows =\n model.rowCount -\n model.pendingRowCount -\n model.floatingBottomRowCount -\n model.floatingTopRowCount;\n this.setState({ numRows });\n if (!model.isColumnStatisticsAvailable || column.isProxy === true) {\n this.setState({ loading: false });\n } else if (numRows < ColumnStatistics.AUTO_GENERATE_LIMIT) {\n this.handleGenerateStatistics();\n }\n }\n\n handleGenerateStatistics(): void {\n this.setState({ loading: true });\n\n const { column, model } = this.props;\n\n this.cancelablePromise = PromiseUtils.makeCancelable(\n model.columnStatistics(column)\n );\n\n this.cancelablePromise.then(this.handleStatistics).catch(this.handleError);\n }\n\n handleStatistics(stats: dh.ColumnStatistics): void {\n log.debug('Received statistics', stats);\n\n const { model, onStatistics } = this.props;\n const statistics: Statistic[] = [];\n\n stats.statisticsMap.forEach((value, operation) => {\n statistics.push({\n operation: ColumnStatistics.getStatsLabel(operation),\n value,\n type: stats.getType(operation),\n });\n });\n\n stats.uniqueValues.forEach((value, operation) => {\n statistics.push({\n operation,\n className: 'column-statistics-unique-value',\n value,\n type: 'long',\n });\n });\n\n this.setState({\n loading: false,\n statistics,\n numRows:\n model.rowCount -\n model.pendingRowCount -\n model.floatingBottomRowCount -\n model.floatingTopRowCount,\n });\n\n onStatistics();\n }\n\n handleError(error: Error): void {\n if (error != null && PromiseUtils.isCanceled(error)) {\n log.debug('Called handleError on a cancelled promise result');\n return;\n }\n\n log.error('Error generating statistics', error);\n this.setState({\n error,\n loading: false,\n statistics: null,\n });\n }\n\n render(): React.ReactElement {\n const { column, model } = this.props;\n const { error, loading, statistics, numRows } = this.state;\n const showGenerateStatistics =\n !loading &&\n error == null &&\n statistics == null &&\n model.isColumnStatisticsAvailable;\n const statisticElements = [];\n const columnType = column.type.substring(column.type.lastIndexOf('.') + 1);\n const description = column.description === null ? null : column.description;\n if (statistics != null) {\n for (let i = 0; i < statistics.length; i += 1) {\n const { operation, className, value, type } = statistics[i];\n const formattedValue = !type\n ? model.displayString(value, column.type, column.name)\n : model.displayString(value, type);\n const statisticElement = (\n <React.Fragment key={operation}>\n <div\n className={classNames('column-statistic-operation', className)}\n >\n {operation}\n </div>\n <div className=\"column-statistic-value\">{formattedValue}</div>\n </React.Fragment>\n );\n statisticElements.push(statisticElement);\n }\n }\n const rowCountLabel =\n isExpandableGridModel(model) && model.hasExpandableRows\n ? 'Expanded Rows'\n : 'Number of Rows';\n const formattedRowCount = model.displayString(numRows, 'long');\n const columnIndex = model.getColumnIndexByName(column.name);\n return (\n <div className=\"column-statistics\">\n <div className=\"column-statistics-title\">\n {column.displayName ?? column.name}\n <span className=\"column-statistics-type\">&nbsp;({columnType})</span>\n <CopyButton\n className=\"column-statistics-copy\"\n tooltip=\"Copy column name\"\n copy={column.name}\n />\n </div>\n {description != null && (\n <div className=\"column-statistics-description\">{description}</div>\n )}\n {columnIndex != null && !model.isColumnSortable(columnIndex) && (\n <div className=\"column-statistics-status\">\n <FontAwesomeIcon icon={dhSortSlash} className=\"mr-1\" />\n Not sortable\n </div>\n )}\n {columnIndex != null && !model.isColumnMovable(columnIndex) && (\n <div className=\"column-statistics-status\">\n <FontAwesomeIcon\n icon={model.isColumnFrozen(columnIndex) ? dhFreeze : vsLock}\n className=\"mr-1\"\n />\n {model.isColumnFrozen(columnIndex) ? 'Frozen' : 'Not movable'}\n </div>\n )}\n <div className=\"column-statistics-grid\">\n {statistics == null && (\n <>\n <div className=\"column-statistic-operation\">{rowCountLabel}</div>\n <div className=\"column-statistic-value\">{formattedRowCount}</div>\n </>\n )}\n\n {statisticElements}\n </div>\n {showGenerateStatistics && (\n <Button\n kind=\"ghost\"\n className=\"px-0\"\n onClick={this.handleGenerateStatistics}\n >\n Generate Stats\n </Button>\n )}\n {error != null && <div className=\"error-message\">{`${error}`}</div>}\n {statistics && !loading && (\n <Button\n kind=\"ghost\"\n className=\"px-0\"\n onClick={this.handleGenerateStatistics}\n icon={dhRefresh}\n >\n Refresh\n </Button>\n )}\n {loading && (\n <div className=\"column-statistics-loading\">\n <LoadingSpinner className=\"loading-spinner-vertical-align\" />\n Calculating Stats...\n </div>\n )}\n </div>\n );\n }\n}\n\nexport default ColumnStatistics;\n"],"mappings":"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"}
1
+ {"version":3,"file":"ColumnStatistics.js","names":["React","Component","classNames","FontAwesomeIcon","Button","CopyButton","LoadingSpinner","dhFreeze","dhRefresh","dhSortSlash","vsLock","Log","PromiseUtils","isExpandableGridModel","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","log","module","STATS_LABEL_OVERRIDES","SIZE","ColumnStatistics","getStatsLabel","operation","_STATS_LABEL_OVERRIDE","split","map","w","toUpperCase","substr","toLowerCase","join","constructor","props","_defineProperty","handleError","bind","handleGenerateStatistics","handleStatistics","cancelablePromise","state","error","loading","statistics","numRows","componentDidMount","maybeGenerateStatistics","componentWillUnmount","cancel","column","model","rowCount","pendingRowCount","floatingBottomRowCount","floatingTopRowCount","setState","isColumnStatisticsAvailable","isProxy","AUTO_GENERATE_LIMIT","makeCancelable","columnStatistics","then","catch","stats","debug","onStatistics","statisticsMap","forEach","value","push","type","getType","uniqueValues","className","isCanceled","render","_column$displayName","showGenerateStatistics","statisticElements","columnType","substring","lastIndexOf","description","i","length","formattedValue","displayString","name","statisticElement","children","rowCountLabel","hasExpandableRows","formattedRowCount","columnIndex","getColumnIndexByName","displayName","tooltip","copy","isColumnSortable","icon","isColumnMovable","isColumnFrozen","kind","onClick","concat"],"sources":["../src/ColumnStatistics.tsx"],"sourcesContent":["import React, { Component } from 'react';\nimport classNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { Button, CopyButton, LoadingSpinner } from '@deephaven/components';\nimport { dhFreeze, dhRefresh, dhSortSlash, vsLock } from '@deephaven/icons';\nimport type { dh } from '@deephaven/jsapi-types';\nimport Log from '@deephaven/log';\nimport { type CancelablePromise, PromiseUtils } from '@deephaven/utils';\nimport { isExpandableGridModel } from '@deephaven/grid';\nimport './ColumnStatistics.scss';\nimport { type DisplayColumn } from './IrisGridModel';\nimport type IrisGridModel from './IrisGridModel';\n\nconst log = Log.module('ColumnStatistics');\nconst STATS_LABEL_OVERRIDES: Record<string, string> = {\n SIZE: 'Number of Rows',\n};\n\ninterface Statistic {\n operation: string;\n className?: string;\n value: unknown;\n type: string;\n}\n\ninterface ColumnStatisticsProps {\n column: DisplayColumn;\n model: IrisGridModel;\n onStatistics: () => void;\n}\ninterface ColumnStatisticsState {\n error: unknown;\n loading: boolean;\n statistics: readonly Statistic[] | null;\n numRows: number;\n}\n\nclass ColumnStatistics extends Component<\n ColumnStatisticsProps,\n ColumnStatisticsState\n> {\n /** Automatically generate the statistics when the row count is below this threshold */\n static AUTO_GENERATE_LIMIT = 100000;\n\n static getStatsLabel(operation: string): string {\n return (\n STATS_LABEL_OVERRIDES[operation] ??\n operation\n .split(' ')\n .map(w => w[0].toUpperCase() + w.substr(1).toLowerCase())\n .join(' ')\n );\n }\n\n constructor(props: ColumnStatisticsProps) {\n super(props);\n\n this.handleError = this.handleError.bind(this);\n this.handleGenerateStatistics = this.handleGenerateStatistics.bind(this);\n this.handleStatistics = this.handleStatistics.bind(this);\n\n this.cancelablePromise = null;\n\n this.state = {\n error: null,\n loading: false,\n statistics: null,\n numRows: 0,\n };\n }\n\n componentDidMount(): void {\n this.maybeGenerateStatistics();\n }\n\n componentWillUnmount(): void {\n if (this.cancelablePromise) {\n this.cancelablePromise.cancel();\n }\n }\n\n cancelablePromise: CancelablePromise<dh.ColumnStatistics> | null;\n\n maybeGenerateStatistics(): void {\n const { column, model } = this.props;\n\n const numRows =\n model.rowCount -\n model.pendingRowCount -\n model.floatingBottomRowCount -\n model.floatingTopRowCount;\n this.setState({ numRows });\n if (!model.isColumnStatisticsAvailable || column.isProxy === true) {\n this.setState({ loading: false });\n } else if (numRows < ColumnStatistics.AUTO_GENERATE_LIMIT) {\n this.handleGenerateStatistics();\n }\n }\n\n handleGenerateStatistics(): void {\n this.setState({ loading: true });\n\n const { column, model } = this.props;\n\n this.cancelablePromise = PromiseUtils.makeCancelable(\n model.columnStatistics(column)\n );\n\n this.cancelablePromise.then(this.handleStatistics).catch(this.handleError);\n }\n\n handleStatistics(stats: dh.ColumnStatistics): void {\n log.debug('Received statistics', stats);\n\n const { model, onStatistics } = this.props;\n const statistics: Statistic[] = [];\n\n stats.statisticsMap.forEach((value, operation) => {\n statistics.push({\n operation: ColumnStatistics.getStatsLabel(operation),\n value,\n type: stats.getType(operation),\n });\n });\n\n stats.uniqueValues.forEach((value, operation) => {\n statistics.push({\n operation,\n className: 'column-statistics-unique-value',\n value,\n type: 'long',\n });\n });\n\n this.setState({\n loading: false,\n statistics,\n numRows:\n model.rowCount -\n model.pendingRowCount -\n model.floatingBottomRowCount -\n model.floatingTopRowCount,\n });\n\n onStatistics();\n }\n\n handleError(error: Error): void {\n if (error != null && PromiseUtils.isCanceled(error)) {\n log.debug('Called handleError on a cancelled promise result');\n return;\n }\n\n log.error('Error generating statistics', error);\n this.setState({\n error,\n loading: false,\n statistics: null,\n });\n }\n\n render(): React.ReactElement {\n const { column, model } = this.props;\n const { error, loading, statistics, numRows } = this.state;\n const showGenerateStatistics =\n !loading &&\n error == null &&\n statistics == null &&\n model.isColumnStatisticsAvailable;\n const statisticElements = [];\n const columnType = column.type.substring(column.type.lastIndexOf('.') + 1);\n const description = column.description === null ? null : column.description;\n if (statistics != null) {\n for (let i = 0; i < statistics.length; i += 1) {\n const { operation, className, value, type } = statistics[i];\n const formattedValue = !type\n ? model.displayString(value, column.type, column.name)\n : model.displayString(value, type);\n const statisticElement = (\n <React.Fragment key={operation}>\n <div\n className={classNames('column-statistic-operation', className)}\n >\n {operation}\n </div>\n <div className=\"column-statistic-value\">{formattedValue}</div>\n </React.Fragment>\n );\n statisticElements.push(statisticElement);\n }\n }\n const rowCountLabel =\n isExpandableGridModel(model) && model.hasExpandableRows\n ? 'Expanded Rows'\n : 'Number of Rows';\n const formattedRowCount = model.displayString(numRows, 'long');\n const columnIndex = model.getColumnIndexByName(column.name);\n return (\n <div className=\"column-statistics\">\n <div className=\"column-statistics-title\">\n {column.displayName ?? column.name}\n <span className=\"column-statistics-type\">&nbsp;({columnType})</span>\n <CopyButton\n className=\"column-statistics-copy\"\n tooltip=\"Copy column name\"\n copy={column.name}\n />\n </div>\n {description != null && (\n <div className=\"column-statistics-description\">{description}</div>\n )}\n {columnIndex != null && !model.isColumnSortable(columnIndex) && (\n <div className=\"column-statistics-status\">\n <FontAwesomeIcon icon={dhSortSlash} className=\"mr-1\" />\n Not sortable\n </div>\n )}\n {columnIndex != null && !model.isColumnMovable(columnIndex) && (\n <div className=\"column-statistics-status\">\n <FontAwesomeIcon\n icon={model.isColumnFrozen(columnIndex) ? dhFreeze : vsLock}\n className=\"mr-1\"\n />\n {model.isColumnFrozen(columnIndex) ? 'Frozen' : 'Not movable'}\n </div>\n )}\n <div className=\"column-statistics-grid\">\n {statistics == null && (\n <>\n <div className=\"column-statistic-operation\">{rowCountLabel}</div>\n <div className=\"column-statistic-value\">{formattedRowCount}</div>\n </>\n )}\n\n {statisticElements}\n </div>\n {showGenerateStatistics && (\n <Button\n kind=\"ghost\"\n className=\"px-0\"\n onClick={this.handleGenerateStatistics}\n >\n Generate Stats\n </Button>\n )}\n {error != null && <div className=\"error-message\">{`${error}`}</div>}\n {statistics && !loading && (\n <Button\n kind=\"ghost\"\n className=\"px-0\"\n onClick={this.handleGenerateStatistics}\n icon={dhRefresh}\n >\n Refresh\n </Button>\n )}\n {loading && (\n <div className=\"column-statistics-loading\">\n <LoadingSpinner className=\"loading-spinner-vertical-align\" />\n Calculating Stats...\n </div>\n )}\n </div>\n );\n }\n}\n\nexport default ColumnStatistics;\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"CommonTypes.js","names":[],"sources":["../src/CommonTypes.tsx"],"sourcesContent":["import { type AdvancedFilterOptions } from '@deephaven/jsapi-utils';\nimport { type ModelIndex } from '@deephaven/grid';\nimport type { dh } from '@deephaven/jsapi-types';\nimport { type Shortcut } from '@deephaven/components';\nimport { type IconDefinition } from '@deephaven/icons';\nimport type AggregationOperation from './sidebar/aggregations/AggregationOperation';\nimport { type OptionType } from './sidebar';\n\nexport type RowIndex = ModelIndex;\n\nexport type { AdvancedFilterOptions };\nexport type ColumnName = string;\nexport type AdvancedFilterMap = Map<ModelIndex, AdvancedFilter>;\nexport type QuickFilterMap = Map<ModelIndex, QuickFilter>;\nexport type ReadonlyAdvancedFilterMap = ReadonlyMap<ModelIndex, AdvancedFilter>;\nexport type ReadonlyQuickFilterMap = ReadonlyMap<ModelIndex, QuickFilter>;\nexport type ReadonlyAggregationMap = Readonly<\n Record<AggregationOperation, readonly ColumnName[]>\n>;\nexport type OperationMap = Record<ColumnName, readonly AggregationOperation[]>;\nexport type ReadonlyOperationMap = Readonly<\n Record<ColumnName, readonly AggregationOperation[]>\n>;\n\nexport type QuickFilter = {\n text: string;\n filter: dh.FilterCondition | null;\n};\n\nexport type AdvancedFilter = {\n filter: dh.FilterCondition | null;\n options: AdvancedFilterOptions;\n};\n\nexport type Action = {\n action: () => void;\n shortcut: Shortcut;\n};\n\nexport type OptionItem = {\n type: OptionType;\n title: string;\n subtitle?: string;\n icon?: IconDefinition;\n isOn?: boolean;\n onChange?: () => void;\n};\n\nexport interface UITotalsTableConfig extends dh.TotalsTableConfig {\n operationOrder: AggregationOperation[];\n showOnTop: boolean;\n}\n\nexport type InputFilter = {\n name: string;\n type: string;\n value: string;\n excludePanelIds?: (string | string[])[];\n};\n\nexport interface UIRow {\n /**\n * The data in the row indexed by column number.\n * If a column is not part of the columns array (i.e. it's hidden by the model/table),\n * then it will be included by its name instead of index.\n */\n data: Map<ModelIndex | ColumnName, CellData>;\n}\n\nexport type UIViewportData<R extends UIRow = UIRow> = {\n offset: number;\n rows: R[];\n};\nexport type RowData<T = unknown> = Map<number, { value: T }>;\n\nexport type CellData = {\n value: unknown;\n format?: dh.Format;\n};\nexport type PendingDataMap<R extends UIRow = UIRow> = ReadonlyMap<RowIndex, R>;\n\n/** Maps from a row index to the errors for that row */\nexport type PendingDataErrorMap<T extends Error = Error> = ReadonlyMap<\n RowIndex,\n readonly T[]\n>;\n"],"mappings":""}
1
+ {"version":3,"file":"CommonTypes.js","names":[],"sources":["../src/CommonTypes.tsx"],"sourcesContent":["import { type AdvancedFilterOptions } from '@deephaven/jsapi-utils';\nimport { type ModelIndex } from '@deephaven/grid';\nimport type { dh } from '@deephaven/jsapi-types';\nimport { type Shortcut } from '@deephaven/components';\nimport { type IconDefinition } from '@deephaven/icons';\nimport type AggregationOperation from './sidebar/aggregations/AggregationOperation';\nimport { type OptionType } from './sidebar';\n\nexport type RowIndex = ModelIndex;\n\nexport type { AdvancedFilterOptions };\nexport type ColumnName = string;\nexport type AdvancedFilterMap = Map<ModelIndex, AdvancedFilter>;\nexport type QuickFilterMap = Map<ModelIndex, QuickFilter>;\nexport type ReadonlyAdvancedFilterMap = ReadonlyMap<ModelIndex, AdvancedFilter>;\nexport type ReadonlyQuickFilterMap = ReadonlyMap<ModelIndex, QuickFilter>;\nexport type ReadonlyAggregationMap = Readonly<\n Record<AggregationOperation, readonly ColumnName[]>\n>;\nexport type OperationMap = Record<ColumnName, readonly AggregationOperation[]>;\nexport type ReadonlyOperationMap = Readonly<\n Record<ColumnName, readonly AggregationOperation[]>\n>;\n\nexport type QuickFilter = {\n text: string;\n filter: dh.FilterCondition | null;\n};\n\nexport type AdvancedFilter = {\n filter: dh.FilterCondition | null;\n options: AdvancedFilterOptions;\n};\n\nexport type Action = {\n action: () => void;\n shortcut: Shortcut;\n};\n\nexport type OptionItem = {\n type: OptionType;\n title: string;\n subtitle?: string;\n icon?: IconDefinition;\n isOn?: boolean;\n onChange?: () => void;\n};\n\nexport interface UITotalsTableConfig extends dh.TotalsTableConfig {\n operationOrder: AggregationOperation[];\n showOnTop: boolean;\n}\n\nexport type InputFilter = {\n name: string;\n type: string;\n value: string;\n excludePanelIds?: (string | string[])[];\n};\n\nexport interface UIRow {\n /**\n * The data in the row indexed by column number.\n * If a column is not part of the columns array (i.e. it's hidden by the model/table),\n * then it will be included by its name instead of index.\n */\n data: Map<ModelIndex | ColumnName, CellData>;\n}\n\nexport type UIViewportData<R extends UIRow = UIRow> = {\n offset: number;\n rows: R[];\n};\nexport type RowData<T = unknown> = Map<number, { value: T }>;\n\nexport type CellData = {\n value: unknown;\n format?: dh.Format;\n};\nexport type PendingDataMap<R extends UIRow = UIRow> = ReadonlyMap<RowIndex, R>;\n\n/** Maps from a row index to the errors for that row */\nexport type PendingDataErrorMap<T extends Error = Error> = ReadonlyMap<\n RowIndex,\n readonly T[]\n>;\n"],"mappings":"","ignoreList":[]}
@@ -7,9 +7,7 @@ import { Checkbox, Popper, SearchInput, Tooltip } from '@deephaven/components';
7
7
  import { dhGearFilled, dhCheckSquare, dhSquareFilled, dhRemoveSquareFilled, dhWarningCircleFilled, vsCircleLargeFilled } from '@deephaven/icons';
8
8
  import { TableUtils } from '@deephaven/jsapi-utils';
9
9
  import "./CrossColumnSearch.css";
10
- import { jsx as _jsx } from "react/jsx-runtime";
11
- import { Fragment as _Fragment } from "react/jsx-runtime";
12
- import { jsxs as _jsxs } from "react/jsx-runtime";
10
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
13
11
  class CrossColumnSearch extends PureComponent {
14
12
  static createSearchFilter(dh, searchValue, selectedColumns, columns, invertSelection) {
15
13
  var filterColumns = invertSelection ? columns.filter(column => !selectedColumns.includes(column.name)).map(column => column.name) : selectedColumns;
@@ -35,7 +33,7 @@ class CrossColumnSearch extends PureComponent {
35
33
  }
36
34
  focus() {
37
35
  var _this$searchField$cur;
38
- (_this$searchField$cur = this.searchField.current) === null || _this$searchField$cur === void 0 ? void 0 : _this$searchField$cur.focus();
36
+ (_this$searchField$cur = this.searchField.current) === null || _this$searchField$cur === void 0 || _this$searchField$cur.focus();
39
37
  }
40
38
  handleSearchValueChange(event) {
41
39
  var {
@@ -1 +1 @@
1
- {"version":3,"file":"CrossColumnSearch.js","names":["React","PureComponent","FontAwesomeIcon","Checkbox","Popper","SearchInput","Tooltip","dhGearFilled","dhCheckSquare","dhSquareFilled","dhRemoveSquareFilled","dhWarningCircleFilled","vsCircleLargeFilled","TableUtils","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","CrossColumnSearch","createSearchFilter","dh","searchValue","selectedColumns","columns","invertSelection","filterColumns","filter","column","includes","name","map","length","filterValue","FilterValue","ofString","searchFilter","FilterCondition","search","undefined","constructor","props","_defineProperty","handleSearchValueChange","bind","toggleColumn","selectAll","clear","selectNumbers","searchField","createRef","state","isConfigureColumnsShown","focus","_this$searchField$cur","current","event","onChange","target","value","sendColumnChange","setInvertSelection","c","update","slice","push","isNumberType","type","render","hasAllColumnsSelected","hasNoColumnsSelected","icon","children","mask","transform","className","placeholder","ref","onClick","setState","isShown","onExited","closeOnBlur","interactive","isProxy","checked","substring","lastIndexOf"],"sources":["../src/CrossColumnSearch.tsx"],"sourcesContent":["import React, { PureComponent } from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { Checkbox, Popper, SearchInput, Tooltip } from '@deephaven/components';\nimport {\n dhGearFilled,\n dhCheckSquare,\n dhSquareFilled,\n dhRemoveSquareFilled,\n dhWarningCircleFilled,\n vsCircleLargeFilled,\n} from '@deephaven/icons';\nimport type { dh as DhType } from '@deephaven/jsapi-types';\nimport { TableUtils } from '@deephaven/jsapi-utils';\nimport './CrossColumnSearch.scss';\nimport { type ColumnName } from './CommonTypes';\nimport { type DisplayColumn } from './IrisGridModel';\n\ninterface CrossColumnSearchProps {\n value: string;\n selectedColumns: readonly ColumnName[];\n invertSelection: boolean;\n onChange: (\n value: string,\n selectedColumns: readonly ColumnName[],\n invertSelection: boolean\n ) => void;\n columns: readonly DisplayColumn[];\n}\n\ninterface CrossColumnSearchState {\n isConfigureColumnsShown: boolean;\n}\nclass CrossColumnSearch extends PureComponent<\n CrossColumnSearchProps,\n CrossColumnSearchState\n> {\n static createSearchFilter(\n dh: typeof DhType,\n searchValue: string,\n selectedColumns: readonly ColumnName[],\n columns: readonly DhType.Column[],\n invertSelection: boolean\n ): DhType.FilterCondition | undefined {\n const filterColumns = invertSelection\n ? columns\n .filter(column => !selectedColumns.includes(column.name))\n .map(column => column.name)\n : selectedColumns;\n if (searchValue && filterColumns.length > 0) {\n const filterValue = dh.FilterValue.ofString(searchValue);\n const searchFilter =\n filterColumns.length === columns.length\n ? dh.FilterCondition.search(filterValue)\n : dh.FilterCondition.search(\n filterValue,\n columns\n .filter(column => filterColumns.includes(column.name))\n .map(column => column.filter())\n );\n return searchFilter;\n }\n return undefined;\n }\n\n constructor(props: CrossColumnSearchProps) {\n super(props);\n this.handleSearchValueChange = this.handleSearchValueChange.bind(this);\n this.toggleColumn = this.toggleColumn.bind(this);\n this.selectAll = this.selectAll.bind(this);\n this.clear = this.clear.bind(this);\n this.selectNumbers = this.selectNumbers.bind(this);\n\n this.searchField = React.createRef();\n\n this.state = {\n isConfigureColumnsShown: false,\n };\n }\n\n searchField: React.RefObject<SearchInput>;\n\n focus(): void {\n this.searchField.current?.focus();\n }\n\n handleSearchValueChange(event: React.ChangeEvent<HTMLInputElement>): void {\n const { onChange, selectedColumns, invertSelection } = this.props;\n onChange(event.target.value, selectedColumns, invertSelection);\n }\n\n sendColumnChange(\n selectedColumns: readonly ColumnName[],\n invertSelection: boolean\n ): void {\n const { onChange, value } = this.props;\n onChange(value, selectedColumns, invertSelection);\n }\n\n setInvertSelection(invertSelection: boolean): void {\n const { onChange, value } = this.props;\n onChange(value, [], invertSelection);\n }\n\n toggleColumn(name: string): void {\n const { selectedColumns, invertSelection } = this.props;\n if (selectedColumns.includes(name)) {\n this.sendColumnChange(\n selectedColumns.filter(c => c !== name),\n invertSelection\n );\n } else {\n const update = selectedColumns.slice();\n update.push(name);\n this.sendColumnChange(update, invertSelection);\n }\n }\n\n selectAll(): void {\n this.setInvertSelection(true);\n }\n\n clear(): void {\n this.setInvertSelection(false);\n }\n\n selectNumbers(): void {\n const { columns } = this.props;\n this.sendColumnChange(\n columns\n .filter(c => TableUtils.isNumberType(c.type))\n .map(column => column.name),\n false\n );\n }\n\n render(): React.ReactElement {\n const { value, selectedColumns, invertSelection, columns } = this.props;\n const { isConfigureColumnsShown } = this.state;\n const hasAllColumnsSelected =\n (selectedColumns.length === 0 && invertSelection === true) ||\n (selectedColumns.length === columns.length && invertSelection === false);\n const hasNoColumnsSelected =\n (selectedColumns.length === 0 && invertSelection === false) ||\n (selectedColumns.length === columns.length && invertSelection === true);\n\n // set icon layers\n let icon;\n if (hasAllColumnsSelected) {\n // icon if all columns selected for search\n icon = (\n <>\n <FontAwesomeIcon\n icon={dhSquareFilled}\n mask={dhGearFilled}\n transform=\"shrink-2 down-5 right-7\"\n />\n <FontAwesomeIcon\n icon={dhCheckSquare}\n className=\"text-primary\"\n transform=\"shrink-4 down-5 right-7\"\n />\n </>\n );\n } else if (hasNoColumnsSelected) {\n // icon error, no columns selected for searching\n icon = (\n <>\n <FontAwesomeIcon\n icon={vsCircleLargeFilled}\n mask={dhGearFilled}\n transform=\"shrink-1 down-5 right-7\"\n />\n <FontAwesomeIcon\n icon={dhWarningCircleFilled}\n className=\"text-danger\"\n transform=\"shrink-4 down-5 right-7\"\n />\n </>\n );\n } else {\n // icon if some columns selected, but not all\n icon = (\n <>\n <FontAwesomeIcon\n icon={dhSquareFilled}\n mask={dhGearFilled}\n transform=\"shrink-2 down-5 right-7\"\n />\n <FontAwesomeIcon\n icon={dhRemoveSquareFilled}\n className=\"text-primary\"\n transform=\"shrink-4 down-5 right-7\"\n />\n </>\n );\n }\n\n return (\n <div className=\"cross-column-container\">\n <SearchInput\n className=\"cross-column-search\"\n placeholder=\"Search Data...\"\n data-testid=\"cross-column-search\"\n value={value}\n onChange={this.handleSearchValueChange}\n ref={this.searchField}\n />\n <button\n type=\"button\"\n className=\"btn btn-link btn-link-icon px-2\"\n onClick={() => {\n if (isConfigureColumnsShown) {\n this.setState({ isConfigureColumnsShown: false });\n } else {\n this.setState({ isConfigureColumnsShown: true });\n }\n }}\n >\n <div className=\"fa-layers\">{icon}</div>\n <Tooltip>Configure Columns</Tooltip>\n <Popper\n isShown={isConfigureColumnsShown}\n className=\"cross-column-popper\"\n onExited={() => {\n this.setState({ isConfigureColumnsShown: false });\n }}\n closeOnBlur\n interactive\n >\n <div className=\"cross-column-popup\">\n Searched Columns\n <div className=\"cross-column-scroll\">\n {columns.map(column => {\n if (column.isProxy === true) return null;\n\n return (\n <React.Fragment key={column.name}>\n <Checkbox\n className=\"cross-column-checkbox\"\n checked={\n invertSelection\n ? !selectedColumns.includes(column.name)\n : selectedColumns.includes(column.name)\n }\n onChange={() => this.toggleColumn(column.name)}\n >\n {column.name}\n </Checkbox>\n\n {column.type.substring(column.type.lastIndexOf('.') + 1)}\n </React.Fragment>\n );\n })}\n </div>\n <div className=\"cross-column-button-bar\">\n <button\n type=\"button\"\n className=\"btn btn-link\"\n onClick={this.selectAll}\n >\n Select All\n </button>\n <button\n type=\"button\"\n className=\"btn btn-link\"\n onClick={this.clear}\n >\n Clear\n </button>\n <button\n type=\"button\"\n className=\"btn btn-link\"\n onClick={this.selectNumbers}\n >\n Numbers Only\n </button>\n </div>\n {hasNoColumnsSelected && (\n <p className=\"text-danger\">\n <FontAwesomeIcon icon={dhWarningCircleFilled} /> Select at\n least one column to search.\n </p>\n )}\n </div>\n </Popper>\n </button>\n </div>\n );\n }\n}\n\nexport default CrossColumnSearch;\n"],"mappings":"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"}
1
+ {"version":3,"file":"CrossColumnSearch.js","names":["React","PureComponent","FontAwesomeIcon","Checkbox","Popper","SearchInput","Tooltip","dhGearFilled","dhCheckSquare","dhSquareFilled","dhRemoveSquareFilled","dhWarningCircleFilled","vsCircleLargeFilled","TableUtils","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","CrossColumnSearch","createSearchFilter","dh","searchValue","selectedColumns","columns","invertSelection","filterColumns","filter","column","includes","name","map","length","filterValue","FilterValue","ofString","searchFilter","FilterCondition","search","undefined","constructor","props","_defineProperty","handleSearchValueChange","bind","toggleColumn","selectAll","clear","selectNumbers","searchField","createRef","state","isConfigureColumnsShown","focus","_this$searchField$cur","current","event","onChange","target","value","sendColumnChange","setInvertSelection","c","update","slice","push","isNumberType","type","render","hasAllColumnsSelected","hasNoColumnsSelected","icon","children","mask","transform","className","placeholder","ref","onClick","setState","isShown","onExited","closeOnBlur","interactive","isProxy","checked","substring","lastIndexOf"],"sources":["../src/CrossColumnSearch.tsx"],"sourcesContent":["import React, { PureComponent } from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { Checkbox, Popper, SearchInput, Tooltip } from '@deephaven/components';\nimport {\n dhGearFilled,\n dhCheckSquare,\n dhSquareFilled,\n dhRemoveSquareFilled,\n dhWarningCircleFilled,\n vsCircleLargeFilled,\n} from '@deephaven/icons';\nimport type { dh as DhType } from '@deephaven/jsapi-types';\nimport { TableUtils } from '@deephaven/jsapi-utils';\nimport './CrossColumnSearch.scss';\nimport { type ColumnName } from './CommonTypes';\nimport { type DisplayColumn } from './IrisGridModel';\n\ninterface CrossColumnSearchProps {\n value: string;\n selectedColumns: readonly ColumnName[];\n invertSelection: boolean;\n onChange: (\n value: string,\n selectedColumns: readonly ColumnName[],\n invertSelection: boolean\n ) => void;\n columns: readonly DisplayColumn[];\n}\n\ninterface CrossColumnSearchState {\n isConfigureColumnsShown: boolean;\n}\nclass CrossColumnSearch extends PureComponent<\n CrossColumnSearchProps,\n CrossColumnSearchState\n> {\n static createSearchFilter(\n dh: typeof DhType,\n searchValue: string,\n selectedColumns: readonly ColumnName[],\n columns: readonly DhType.Column[],\n invertSelection: boolean\n ): DhType.FilterCondition | undefined {\n const filterColumns = invertSelection\n ? columns\n .filter(column => !selectedColumns.includes(column.name))\n .map(column => column.name)\n : selectedColumns;\n if (searchValue && filterColumns.length > 0) {\n const filterValue = dh.FilterValue.ofString(searchValue);\n const searchFilter =\n filterColumns.length === columns.length\n ? dh.FilterCondition.search(filterValue)\n : dh.FilterCondition.search(\n filterValue,\n columns\n .filter(column => filterColumns.includes(column.name))\n .map(column => column.filter())\n );\n return searchFilter;\n }\n return undefined;\n }\n\n constructor(props: CrossColumnSearchProps) {\n super(props);\n this.handleSearchValueChange = this.handleSearchValueChange.bind(this);\n this.toggleColumn = this.toggleColumn.bind(this);\n this.selectAll = this.selectAll.bind(this);\n this.clear = this.clear.bind(this);\n this.selectNumbers = this.selectNumbers.bind(this);\n\n this.searchField = React.createRef();\n\n this.state = {\n isConfigureColumnsShown: false,\n };\n }\n\n searchField: React.RefObject<SearchInput>;\n\n focus(): void {\n this.searchField.current?.focus();\n }\n\n handleSearchValueChange(event: React.ChangeEvent<HTMLInputElement>): void {\n const { onChange, selectedColumns, invertSelection } = this.props;\n onChange(event.target.value, selectedColumns, invertSelection);\n }\n\n sendColumnChange(\n selectedColumns: readonly ColumnName[],\n invertSelection: boolean\n ): void {\n const { onChange, value } = this.props;\n onChange(value, selectedColumns, invertSelection);\n }\n\n setInvertSelection(invertSelection: boolean): void {\n const { onChange, value } = this.props;\n onChange(value, [], invertSelection);\n }\n\n toggleColumn(name: string): void {\n const { selectedColumns, invertSelection } = this.props;\n if (selectedColumns.includes(name)) {\n this.sendColumnChange(\n selectedColumns.filter(c => c !== name),\n invertSelection\n );\n } else {\n const update = selectedColumns.slice();\n update.push(name);\n this.sendColumnChange(update, invertSelection);\n }\n }\n\n selectAll(): void {\n this.setInvertSelection(true);\n }\n\n clear(): void {\n this.setInvertSelection(false);\n }\n\n selectNumbers(): void {\n const { columns } = this.props;\n this.sendColumnChange(\n columns\n .filter(c => TableUtils.isNumberType(c.type))\n .map(column => column.name),\n false\n );\n }\n\n render(): React.ReactElement {\n const { value, selectedColumns, invertSelection, columns } = this.props;\n const { isConfigureColumnsShown } = this.state;\n const hasAllColumnsSelected =\n (selectedColumns.length === 0 && invertSelection === true) ||\n (selectedColumns.length === columns.length && invertSelection === false);\n const hasNoColumnsSelected =\n (selectedColumns.length === 0 && invertSelection === false) ||\n (selectedColumns.length === columns.length && invertSelection === true);\n\n // set icon layers\n let icon;\n if (hasAllColumnsSelected) {\n // icon if all columns selected for search\n icon = (\n <>\n <FontAwesomeIcon\n icon={dhSquareFilled}\n mask={dhGearFilled}\n transform=\"shrink-2 down-5 right-7\"\n />\n <FontAwesomeIcon\n icon={dhCheckSquare}\n className=\"text-primary\"\n transform=\"shrink-4 down-5 right-7\"\n />\n </>\n );\n } else if (hasNoColumnsSelected) {\n // icon error, no columns selected for searching\n icon = (\n <>\n <FontAwesomeIcon\n icon={vsCircleLargeFilled}\n mask={dhGearFilled}\n transform=\"shrink-1 down-5 right-7\"\n />\n <FontAwesomeIcon\n icon={dhWarningCircleFilled}\n className=\"text-danger\"\n transform=\"shrink-4 down-5 right-7\"\n />\n </>\n );\n } else {\n // icon if some columns selected, but not all\n icon = (\n <>\n <FontAwesomeIcon\n icon={dhSquareFilled}\n mask={dhGearFilled}\n transform=\"shrink-2 down-5 right-7\"\n />\n <FontAwesomeIcon\n icon={dhRemoveSquareFilled}\n className=\"text-primary\"\n transform=\"shrink-4 down-5 right-7\"\n />\n </>\n );\n }\n\n return (\n <div className=\"cross-column-container\">\n <SearchInput\n className=\"cross-column-search\"\n placeholder=\"Search Data...\"\n data-testid=\"cross-column-search\"\n value={value}\n onChange={this.handleSearchValueChange}\n ref={this.searchField}\n />\n <button\n type=\"button\"\n className=\"btn btn-link btn-link-icon px-2\"\n onClick={() => {\n if (isConfigureColumnsShown) {\n this.setState({ isConfigureColumnsShown: false });\n } else {\n this.setState({ isConfigureColumnsShown: true });\n }\n }}\n >\n <div className=\"fa-layers\">{icon}</div>\n <Tooltip>Configure Columns</Tooltip>\n <Popper\n isShown={isConfigureColumnsShown}\n className=\"cross-column-popper\"\n onExited={() => {\n this.setState({ isConfigureColumnsShown: false });\n }}\n closeOnBlur\n interactive\n >\n <div className=\"cross-column-popup\">\n Searched Columns\n <div className=\"cross-column-scroll\">\n {columns.map(column => {\n if (column.isProxy === true) return null;\n\n return (\n <React.Fragment key={column.name}>\n <Checkbox\n className=\"cross-column-checkbox\"\n checked={\n invertSelection\n ? !selectedColumns.includes(column.name)\n : selectedColumns.includes(column.name)\n }\n onChange={() => this.toggleColumn(column.name)}\n >\n {column.name}\n </Checkbox>\n\n {column.type.substring(column.type.lastIndexOf('.') + 1)}\n </React.Fragment>\n );\n })}\n </div>\n <div className=\"cross-column-button-bar\">\n <button\n type=\"button\"\n className=\"btn btn-link\"\n onClick={this.selectAll}\n >\n Select All\n </button>\n <button\n type=\"button\"\n className=\"btn btn-link\"\n onClick={this.clear}\n >\n Clear\n </button>\n <button\n type=\"button\"\n className=\"btn btn-link\"\n onClick={this.selectNumbers}\n >\n Numbers Only\n </button>\n </div>\n {hasNoColumnsSelected && (\n <p className=\"text-danger\">\n <FontAwesomeIcon icon={dhWarningCircleFilled} /> Select at\n least one column to search.\n </p>\n )}\n </div>\n </Popper>\n </button>\n </div>\n );\n }\n}\n\nexport default CrossColumnSearch;\n"],"mappings":"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","ignoreList":[]}
@@ -7,6 +7,7 @@ import { type PendingDataErrorMap, type PendingDataMap, type UITotalsTableConfig
7
7
  declare class EmptyIrisGridModel extends IrisGridModel {
8
8
  constructor(dh: typeof DhType, formatter?: Formatter);
9
9
  modelFormatter: Formatter;
10
+ modelColumnAlignmentMap: Map<string, CanvasTextAlign>;
10
11
  get rowCount(): number;
11
12
  get columnCount(): number;
12
13
  textForCell(column: number, row: number): string;
@@ -26,6 +27,8 @@ declare class EmptyIrisGridModel extends IrisGridModel {
26
27
  get partitionColumns(): readonly DhType.Column[];
27
28
  get formatter(): Formatter;
28
29
  set formatter(formatter: Formatter);
30
+ get columnAlignmentMap(): ReadonlyMap<string, CanvasTextAlign>;
31
+ set columnAlignmentMap(columnAlignmentMap: Map<string, CanvasTextAlign>);
29
32
  displayString(value: unknown, columnType: string, columnName?: ColumnName): string;
30
33
  get sort(): readonly DhType.Sort[];
31
34
  set sort(sort: readonly DhType.Sort[]);
@@ -1 +1 @@
1
- {"version":3,"file":"EmptyIrisGridModel.d.ts","sourceRoot":"","sources":["../src/EmptyIrisGridModel.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"EmptyIrisGridModel.d.ts","sourceRoot":"","sources":["../src/EmptyIrisGridModel.ts"],"names":[],"mappings":"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"}
@@ -11,7 +11,9 @@ class EmptyIrisGridModel extends IrisGridModel {
11
11
  var formatter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : new Formatter(dh);
12
12
  super(dh);
13
13
  _defineProperty(this, "modelFormatter", void 0);
14
+ _defineProperty(this, "modelColumnAlignmentMap", void 0);
14
15
  this.modelFormatter = formatter;
16
+ this.modelColumnAlignmentMap = new Map();
15
17
  }
16
18
  get rowCount() {
17
19
  return 0;
@@ -70,6 +72,12 @@ class EmptyIrisGridModel extends IrisGridModel {
70
72
  set formatter(formatter) {
71
73
  this.modelFormatter = formatter;
72
74
  }
75
+ get columnAlignmentMap() {
76
+ return this.modelColumnAlignmentMap;
77
+ }
78
+ set columnAlignmentMap(columnAlignmentMap) {
79
+ this.modelColumnAlignmentMap = columnAlignmentMap;
80
+ }
73
81
  displayString(value, columnType, columnName) {
74
82
  return '';
75
83
  }
@@ -1 +1 @@
1
- {"version":3,"file":"EmptyIrisGridModel.js","names":["Formatter","EMPTY_ARRAY","EMPTY_MAP","IrisGridModel","EmptyIrisGridModel","constructor","dh","formatter","arguments","length","undefined","_defineProperty","modelFormatter","rowCount","columnCount","textForCell","column","row","textForColumnHeader","depth","columns","getColumnIndexByName","name","initialMovedColumns","initialMovedRows","initialColumnHeaderGroups","groupedColumns","formatForCell","valueForCell","filter","partition","partitionColumns","displayString","value","columnType","columnName","sort","customColumns","formatColumns","updateFrozenColumns","rollupConfig","totalsConfig","export","Error","columnStatistics","selectDistinctColumns","pendingDataMap","map","pendingRowCount","count","pendingDataErrors","commitPending","Promise","resolve","setViewport","top","bottom","snapshot","ranges","textSnapshot","includeHeaders","formatValue","valuesTable","delete","seekRow","startRow","valueType","insensitive","contains","isBackwards","columnHeaderGroups","groups","columnHeaderGroupMap","getColumnHeaderParentGroup","modelIndex"],"sources":["../src/EmptyIrisGridModel.ts"],"sourcesContent":["/* eslint class-methods-use-this: \"off\" */\nimport {\n type GridRange,\n type ModelIndex,\n type MoveOperation,\n type VisibleIndex,\n} from '@deephaven/grid';\nimport { type dh as DhType } from '@deephaven/jsapi-types';\nimport { type ColumnName, Formatter } from '@deephaven/jsapi-utils';\nimport { EMPTY_ARRAY, EMPTY_MAP } from '@deephaven/utils';\nimport IrisGridModel from './IrisGridModel';\nimport type ColumnHeaderGroup from './ColumnHeaderGroup';\nimport {\n type PendingDataErrorMap,\n type PendingDataMap,\n type UITotalsTableConfig,\n} from './CommonTypes';\n\nclass EmptyIrisGridModel extends IrisGridModel {\n constructor(dh: typeof DhType, formatter = new Formatter(dh)) {\n super(dh);\n\n this.modelFormatter = formatter;\n }\n\n modelFormatter: Formatter;\n\n get rowCount(): number {\n return 0;\n }\n\n get columnCount(): number {\n return 0;\n }\n\n textForCell(column: number, row: number): string {\n return '';\n }\n\n textForColumnHeader(column: ModelIndex, depth?: number): string | undefined {\n return undefined;\n }\n\n get columns(): readonly DhType.Column[] {\n return EMPTY_ARRAY;\n }\n\n getColumnIndexByName(name: string): ModelIndex | undefined {\n return undefined;\n }\n\n get initialMovedColumns(): readonly MoveOperation[] {\n return EMPTY_ARRAY;\n }\n\n get initialMovedRows(): readonly MoveOperation[] {\n return EMPTY_ARRAY;\n }\n\n get initialColumnHeaderGroups(): readonly ColumnHeaderGroup[] {\n return EMPTY_ARRAY;\n }\n\n get groupedColumns(): readonly DhType.Column[] {\n return EMPTY_ARRAY;\n }\n\n formatForCell(\n column: ModelIndex,\n row: ModelIndex\n ): DhType.Format | undefined {\n return undefined;\n }\n\n valueForCell(column: ModelIndex, row: ModelIndex): unknown {\n return undefined;\n }\n\n get filter(): readonly DhType.FilterCondition[] {\n return EMPTY_ARRAY;\n }\n\n set filter(filter: readonly DhType.FilterCondition[]) {\n // No-op\n }\n\n get partition(): readonly unknown[] {\n return EMPTY_ARRAY;\n }\n\n set partition(partition: readonly unknown[]) {\n // No-op\n }\n\n get partitionColumns(): readonly DhType.Column[] {\n return EMPTY_ARRAY;\n }\n\n get formatter(): Formatter {\n return this.modelFormatter;\n }\n\n set formatter(formatter: Formatter) {\n this.modelFormatter = formatter;\n }\n\n displayString(\n value: unknown,\n columnType: string,\n columnName?: ColumnName\n ): string {\n return '';\n }\n\n get sort(): readonly DhType.Sort[] {\n return EMPTY_ARRAY;\n }\n\n set sort(sort: readonly DhType.Sort[]) {\n // No-op\n }\n\n get customColumns(): readonly ColumnName[] {\n return EMPTY_ARRAY;\n }\n\n set customColumns(customColumns: readonly ColumnName[]) {\n // No-op\n }\n\n get formatColumns(): readonly DhType.CustomColumn[] {\n return EMPTY_ARRAY;\n }\n\n updateFrozenColumns(columns: readonly ColumnName[]): void {\n // Do nothing\n }\n\n get rollupConfig(): DhType.RollupConfig | null {\n return null;\n }\n\n set rollupConfig(rollupConfig: DhType.RollupConfig | null) {\n // No-op\n }\n\n get totalsConfig(): UITotalsTableConfig | null {\n return null;\n }\n\n set totalsConfig(totalsConfig: UITotalsTableConfig | null) {\n // No-op\n }\n\n export(): Promise<DhType.Table> {\n throw new Error('Method not implemented.');\n }\n\n columnStatistics(column: DhType.Column): Promise<DhType.ColumnStatistics> {\n throw new Error('Method not implemented.');\n }\n\n get selectDistinctColumns(): readonly ColumnName[] {\n return EMPTY_ARRAY;\n }\n\n set selectDistinctColumns(selectDistinctColumns: readonly ColumnName[]) {\n // No-op\n }\n\n get pendingDataMap(): PendingDataMap {\n return EMPTY_MAP;\n }\n\n set pendingDataMap(map: PendingDataMap) {\n // No-op\n }\n\n get pendingRowCount(): number {\n return 0;\n }\n\n set pendingRowCount(count: number) {\n // No-op\n }\n\n get pendingDataErrors(): PendingDataErrorMap {\n return EMPTY_MAP;\n }\n\n commitPending(): Promise<void> {\n return Promise.resolve();\n }\n\n setViewport(\n top: VisibleIndex,\n bottom: VisibleIndex,\n columns?: DhType.Column[]\n ): void {\n // No-op\n }\n\n snapshot(ranges: readonly GridRange[]): Promise<readonly unknown[][]> {\n return Promise.resolve([]);\n }\n\n textSnapshot(\n ranges: readonly GridRange[],\n includeHeaders?: boolean,\n formatValue?: (\n value: unknown,\n column: DhType.Column,\n row?: DhType.Row\n ) => string\n ): Promise<string> {\n return Promise.resolve('');\n }\n\n valuesTable(\n columns: DhType.Column | readonly DhType.Column[]\n ): Promise<DhType.Table> {\n throw new Error('Method not implemented.');\n }\n\n delete(ranges: readonly GridRange[]): Promise<void> {\n return Promise.resolve();\n }\n\n seekRow(\n startRow: number,\n column: DhType.Column,\n valueType: unknown,\n value: unknown,\n insensitive?: boolean,\n contains?: boolean,\n isBackwards?: boolean\n ): Promise<number> {\n return Promise.resolve(0);\n }\n\n get columnHeaderGroups(): readonly ColumnHeaderGroup[] {\n return EMPTY_ARRAY;\n }\n\n set columnHeaderGroups(groups: readonly ColumnHeaderGroup[]) {\n // No-op\n }\n\n get columnHeaderGroupMap(): ReadonlyMap<string, ColumnHeaderGroup> {\n return EMPTY_MAP;\n }\n\n getColumnHeaderParentGroup(\n modelIndex: ModelIndex,\n depth: number\n ): ColumnHeaderGroup | undefined {\n return undefined;\n }\n}\n\nexport default EmptyIrisGridModel;\n"],"mappings":"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"}
1
+ {"version":3,"file":"EmptyIrisGridModel.js","names":["Formatter","EMPTY_ARRAY","EMPTY_MAP","IrisGridModel","EmptyIrisGridModel","constructor","dh","formatter","arguments","length","undefined","_defineProperty","modelFormatter","modelColumnAlignmentMap","Map","rowCount","columnCount","textForCell","column","row","textForColumnHeader","depth","columns","getColumnIndexByName","name","initialMovedColumns","initialMovedRows","initialColumnHeaderGroups","groupedColumns","formatForCell","valueForCell","filter","partition","partitionColumns","columnAlignmentMap","displayString","value","columnType","columnName","sort","customColumns","formatColumns","updateFrozenColumns","rollupConfig","totalsConfig","export","Error","columnStatistics","selectDistinctColumns","pendingDataMap","map","pendingRowCount","count","pendingDataErrors","commitPending","Promise","resolve","setViewport","top","bottom","snapshot","ranges","textSnapshot","includeHeaders","formatValue","valuesTable","delete","seekRow","startRow","valueType","insensitive","contains","isBackwards","columnHeaderGroups","groups","columnHeaderGroupMap","getColumnHeaderParentGroup","modelIndex"],"sources":["../src/EmptyIrisGridModel.ts"],"sourcesContent":["/* eslint class-methods-use-this: \"off\" */\nimport {\n type GridRange,\n type ModelIndex,\n type MoveOperation,\n type VisibleIndex,\n} from '@deephaven/grid';\nimport { type dh as DhType } from '@deephaven/jsapi-types';\nimport { type ColumnName, Formatter } from '@deephaven/jsapi-utils';\nimport { EMPTY_ARRAY, EMPTY_MAP } from '@deephaven/utils';\nimport IrisGridModel from './IrisGridModel';\nimport type ColumnHeaderGroup from './ColumnHeaderGroup';\nimport {\n type PendingDataErrorMap,\n type PendingDataMap,\n type UITotalsTableConfig,\n} from './CommonTypes';\n\nclass EmptyIrisGridModel extends IrisGridModel {\n constructor(dh: typeof DhType, formatter = new Formatter(dh)) {\n super(dh);\n\n this.modelFormatter = formatter;\n this.modelColumnAlignmentMap = new Map<string, CanvasTextAlign>();\n }\n\n modelFormatter: Formatter;\n\n modelColumnAlignmentMap: Map<string, CanvasTextAlign>;\n\n get rowCount(): number {\n return 0;\n }\n\n get columnCount(): number {\n return 0;\n }\n\n textForCell(column: number, row: number): string {\n return '';\n }\n\n textForColumnHeader(column: ModelIndex, depth?: number): string | undefined {\n return undefined;\n }\n\n get columns(): readonly DhType.Column[] {\n return EMPTY_ARRAY;\n }\n\n getColumnIndexByName(name: string): ModelIndex | undefined {\n return undefined;\n }\n\n get initialMovedColumns(): readonly MoveOperation[] {\n return EMPTY_ARRAY;\n }\n\n get initialMovedRows(): readonly MoveOperation[] {\n return EMPTY_ARRAY;\n }\n\n get initialColumnHeaderGroups(): readonly ColumnHeaderGroup[] {\n return EMPTY_ARRAY;\n }\n\n get groupedColumns(): readonly DhType.Column[] {\n return EMPTY_ARRAY;\n }\n\n formatForCell(\n column: ModelIndex,\n row: ModelIndex\n ): DhType.Format | undefined {\n return undefined;\n }\n\n valueForCell(column: ModelIndex, row: ModelIndex): unknown {\n return undefined;\n }\n\n get filter(): readonly DhType.FilterCondition[] {\n return EMPTY_ARRAY;\n }\n\n set filter(filter: readonly DhType.FilterCondition[]) {\n // No-op\n }\n\n get partition(): readonly unknown[] {\n return EMPTY_ARRAY;\n }\n\n set partition(partition: readonly unknown[]) {\n // No-op\n }\n\n get partitionColumns(): readonly DhType.Column[] {\n return EMPTY_ARRAY;\n }\n\n get formatter(): Formatter {\n return this.modelFormatter;\n }\n\n set formatter(formatter: Formatter) {\n this.modelFormatter = formatter;\n }\n\n get columnAlignmentMap(): ReadonlyMap<string, CanvasTextAlign> {\n return this.modelColumnAlignmentMap;\n }\n\n set columnAlignmentMap(columnAlignmentMap: Map<string, CanvasTextAlign>) {\n this.modelColumnAlignmentMap = columnAlignmentMap;\n }\n\n displayString(\n value: unknown,\n columnType: string,\n columnName?: ColumnName\n ): string {\n return '';\n }\n\n get sort(): readonly DhType.Sort[] {\n return EMPTY_ARRAY;\n }\n\n set sort(sort: readonly DhType.Sort[]) {\n // No-op\n }\n\n get customColumns(): readonly ColumnName[] {\n return EMPTY_ARRAY;\n }\n\n set customColumns(customColumns: readonly ColumnName[]) {\n // No-op\n }\n\n get formatColumns(): readonly DhType.CustomColumn[] {\n return EMPTY_ARRAY;\n }\n\n updateFrozenColumns(columns: readonly ColumnName[]): void {\n // Do nothing\n }\n\n get rollupConfig(): DhType.RollupConfig | null {\n return null;\n }\n\n set rollupConfig(rollupConfig: DhType.RollupConfig | null) {\n // No-op\n }\n\n get totalsConfig(): UITotalsTableConfig | null {\n return null;\n }\n\n set totalsConfig(totalsConfig: UITotalsTableConfig | null) {\n // No-op\n }\n\n export(): Promise<DhType.Table> {\n throw new Error('Method not implemented.');\n }\n\n columnStatistics(column: DhType.Column): Promise<DhType.ColumnStatistics> {\n throw new Error('Method not implemented.');\n }\n\n get selectDistinctColumns(): readonly ColumnName[] {\n return EMPTY_ARRAY;\n }\n\n set selectDistinctColumns(selectDistinctColumns: readonly ColumnName[]) {\n // No-op\n }\n\n get pendingDataMap(): PendingDataMap {\n return EMPTY_MAP;\n }\n\n set pendingDataMap(map: PendingDataMap) {\n // No-op\n }\n\n get pendingRowCount(): number {\n return 0;\n }\n\n set pendingRowCount(count: number) {\n // No-op\n }\n\n get pendingDataErrors(): PendingDataErrorMap {\n return EMPTY_MAP;\n }\n\n commitPending(): Promise<void> {\n return Promise.resolve();\n }\n\n setViewport(\n top: VisibleIndex,\n bottom: VisibleIndex,\n columns?: DhType.Column[]\n ): void {\n // No-op\n }\n\n snapshot(ranges: readonly GridRange[]): Promise<readonly unknown[][]> {\n return Promise.resolve([]);\n }\n\n textSnapshot(\n ranges: readonly GridRange[],\n includeHeaders?: boolean,\n formatValue?: (\n value: unknown,\n column: DhType.Column,\n row?: DhType.Row\n ) => string\n ): Promise<string> {\n return Promise.resolve('');\n }\n\n valuesTable(\n columns: DhType.Column | readonly DhType.Column[]\n ): Promise<DhType.Table> {\n throw new Error('Method not implemented.');\n }\n\n delete(ranges: readonly GridRange[]): Promise<void> {\n return Promise.resolve();\n }\n\n seekRow(\n startRow: number,\n column: DhType.Column,\n valueType: unknown,\n value: unknown,\n insensitive?: boolean,\n contains?: boolean,\n isBackwards?: boolean\n ): Promise<number> {\n return Promise.resolve(0);\n }\n\n get columnHeaderGroups(): readonly ColumnHeaderGroup[] {\n return EMPTY_ARRAY;\n }\n\n set columnHeaderGroups(groups: readonly ColumnHeaderGroup[]) {\n // No-op\n }\n\n get columnHeaderGroupMap(): ReadonlyMap<string, ColumnHeaderGroup> {\n return EMPTY_MAP;\n }\n\n getColumnHeaderParentGroup(\n modelIndex: ModelIndex,\n depth: number\n ): ColumnHeaderGroup | undefined {\n return undefined;\n }\n}\n\nexport default EmptyIrisGridModel;\n"],"mappings":"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","ignoreList":[]}
@@ -8,8 +8,7 @@ import { vsFilter, dhFilterFilled } from '@deephaven/icons';
8
8
  import "./FilterInputField.css";
9
9
  import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
10
10
  import { Button } from '@deephaven/components';
11
- import { jsx as _jsx } from "react/jsx-runtime";
12
- import { jsxs as _jsxs } from "react/jsx-runtime";
11
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
13
12
  /**
14
13
  * An input field showing a input field and button.
15
14
  * Debounces changes.
@@ -43,7 +42,7 @@ class FilterInputField extends PureComponent {
43
42
  }
44
43
  componentDidMount() {
45
44
  var _this$inputField;
46
- (_this$inputField = this.inputField) === null || _this$inputField === void 0 ? void 0 : _this$inputField.focus();
45
+ (_this$inputField = this.inputField) === null || _this$inputField === void 0 || _this$inputField.focus();
47
46
  }
48
47
  componentDidUpdate(prevProps) {
49
48
  var {
@@ -68,7 +67,7 @@ class FilterInputField extends PureComponent {
68
67
  }
69
68
  focus() {
70
69
  var _this$inputField2;
71
- (_this$inputField2 = this.inputField) === null || _this$inputField2 === void 0 ? void 0 : _this$inputField2.focus();
70
+ (_this$inputField2 = this.inputField) === null || _this$inputField2 === void 0 || _this$inputField2.focus();
72
71
  }
73
72
  handleChange(event) {
74
73
  var {
@@ -107,7 +106,7 @@ class FilterInputField extends PureComponent {
107
106
  }
108
107
  handleFocus() {
109
108
  var _this$inputField3;
110
- (_this$inputField3 = this.inputField) === null || _this$inputField3 === void 0 ? void 0 : _this$inputField3.select();
109
+ (_this$inputField3 = this.inputField) === null || _this$inputField3 === void 0 || _this$inputField3.select();
111
110
  }
112
111
  handleBlur(event) {
113
112
  var {
@@ -1 +1 @@
1
- {"version":3,"file":"FilterInputField.js","names":["React","PureComponent","classNames","debounce","vsFilter","dhFilterFilled","FontAwesomeIcon","Button","jsx","_jsx","jsxs","_jsxs","FilterInputField","constructor","props","_defineProperty","debounceMs","debouncedSendUpdate","sendUpdate","bind","handleCancel","handleChange","handleCommit","handleFocus","handleBlur","handleKeyDown","handleContextMenu","inputField","value","initialValue","state","isChanged","componentDidMount","_this$inputField","focus","componentDidUpdate","prevProps","flush","componentWillUnmount","cancel","setValue","setState","_this$inputField2","event","target","onDone","setGridFocus","arguments","length","undefined","defocusInput","_this$inputField3","select","relatedTarget","classList","contains","handleTab","backward","onTab","key","stopPropagation","preventDefault","shiftKey","onContextMenu","onChange","render","className","style","isAdvancedFilterSet","onAdvancedFiltersTriggered","children","ref","type","onBlur","onFocus","onKeyDown","autoComplete","autoCorrect","autoCapitalize","spellCheck","kind","onClick","icon"],"sources":["../src/FilterInputField.tsx"],"sourcesContent":["import React, {\n type ChangeEvent,\n PureComponent,\n type ReactElement,\n} from 'react';\nimport classNames from 'classnames';\nimport debounce from 'lodash.debounce';\nimport { vsFilter, dhFilterFilled } from '@deephaven/icons';\nimport './FilterInputField.scss';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport type { DebouncedFunc } from 'lodash';\nimport { Button } from '@deephaven/components';\n\ninterface FilterInputFieldProps {\n className: string;\n style: React.CSSProperties;\n value: string;\n isAdvancedFilterSet: boolean;\n onAdvancedFiltersTriggered: React.MouseEventHandler<HTMLButtonElement>;\n onChange: (value: string) => void;\n onDone: (setGridFocus?: boolean, defocusInput?: boolean) => void;\n onTab: (backward: boolean) => void;\n onContextMenu: React.MouseEventHandler<HTMLInputElement | HTMLButtonElement>;\n debounceMs: number;\n}\ninterface FilterInputFieldState {\n isChanged: boolean;\n value: string;\n}\n/**\n * An input field showing a input field and button.\n * Debounces changes.\n */\nclass FilterInputField extends PureComponent<\n FilterInputFieldProps,\n FilterInputFieldState\n> {\n static defaultProps = {\n style: {},\n className: '',\n value: '',\n isAdvancedFilterSet: false,\n onAdvancedFiltersTriggered: (): void => undefined,\n onChange: (): void => undefined,\n onDone: (): void => undefined,\n onTab: (): void => undefined,\n onContextMenu: (): void => undefined,\n debounceMs: 150,\n };\n\n constructor(props: FilterInputFieldProps) {\n super(props);\n\n const { debounceMs } = props;\n\n this.debouncedSendUpdate = debounce(this.sendUpdate.bind(this), debounceMs);\n this.handleCancel = this.handleCancel.bind(this);\n this.handleChange = this.handleChange.bind(this);\n this.handleCommit = this.handleCommit.bind(this);\n this.handleFocus = this.handleFocus.bind(this);\n this.handleBlur = this.handleBlur.bind(this);\n this.handleKeyDown = this.handleKeyDown.bind(this);\n this.handleContextMenu = this.handleContextMenu.bind(this);\n\n this.inputField = null;\n\n const { value } = props;\n this.initialValue = value;\n this.state = {\n isChanged: false,\n value,\n };\n }\n\n componentDidMount(): void {\n this.inputField?.focus();\n }\n\n componentDidUpdate(prevProps: FilterInputFieldProps): void {\n const { debounceMs } = this.props;\n if (prevProps.debounceMs !== debounceMs) {\n this.debouncedSendUpdate.flush();\n this.debouncedSendUpdate = debounce(\n this.sendUpdate.bind(this),\n debounceMs\n );\n }\n }\n\n componentWillUnmount(): void {\n this.debouncedSendUpdate.cancel();\n }\n\n inputField: HTMLInputElement | null;\n\n initialValue: string;\n\n debouncedSendUpdate: DebouncedFunc<(value: string) => void>;\n\n // clear filters needs to be able to reset the value externally\n // and due to the way this component handles its own debouncing\n // this was easier than moving state up.\n setValue(value: string): void {\n this.initialValue = value;\n this.setState({ value });\n }\n\n focus(): void {\n this.inputField?.focus();\n }\n\n handleChange(event: ChangeEvent<HTMLInputElement>): void {\n const { value } = event.target;\n this.setState({ value, isChanged: true });\n\n this.debouncedSendUpdate(value);\n }\n\n handleCancel(): void {\n this.debouncedSendUpdate.cancel();\n const { initialValue } = this;\n const { isChanged } = this.state;\n if (isChanged) {\n this.sendUpdate(initialValue);\n }\n\n const { onDone } = this.props;\n onDone();\n }\n\n handleCommit(setGridFocus = true, defocusInput = true): void {\n this.debouncedSendUpdate.flush();\n\n const { onDone } = this.props;\n onDone(setGridFocus, defocusInput);\n }\n\n handleFocus(): void {\n this.inputField?.select();\n }\n\n handleBlur(event: React.FocusEvent<HTMLInputElement>): void {\n const { relatedTarget } = event;\n // handleCommit results in a call that steals focus\n if (\n relatedTarget != null &&\n relatedTarget.classList.contains('context-menu-container')\n ) {\n // input blurred by calling context-menu\n // don't set grid focus, but do null column focus\n this.handleCommit(false, true);\n } else if (\n relatedTarget != null &&\n relatedTarget.classList.contains('advanced-filter-button')\n ) {\n // blurred by clicking an advanced filter button\n // don't set grid focus, maintain focusedFilterBarColumn state\n this.handleCommit(false, false);\n } else {\n // clear both, blurred elsewhere\n this.handleCommit(true, true);\n }\n }\n\n handleTab(backward = false): void {\n this.debouncedSendUpdate.flush();\n\n const { onTab } = this.props;\n onTab(backward);\n }\n\n handleKeyDown(event: React.KeyboardEvent<HTMLInputElement>): void {\n switch (event.key) {\n case 'Escape':\n event.stopPropagation();\n event.preventDefault();\n this.handleCancel();\n break;\n case 'Enter':\n event.stopPropagation();\n event.preventDefault();\n this.handleCommit();\n break;\n case 'Tab':\n event.stopPropagation();\n event.preventDefault();\n this.handleTab(event.shiftKey);\n break;\n default:\n break;\n }\n }\n\n handleContextMenu(\n event: React.MouseEvent<HTMLInputElement | HTMLButtonElement>\n ): void {\n const { onContextMenu } = this.props;\n onContextMenu(event);\n }\n\n sendUpdate(value: string): void {\n const { onChange } = this.props;\n onChange(value);\n }\n\n render(): ReactElement {\n const {\n className,\n style,\n isAdvancedFilterSet,\n onAdvancedFiltersTriggered,\n } = this.props;\n const { value } = this.state;\n return (\n <div\n style={style}\n className=\"iris-grid-input-autosized-wrapper\"\n data-value={value} // used by css based autosizer\n >\n <input\n ref={inputField => {\n this.inputField = inputField;\n }}\n className={classNames('iris-grid-input-field', className)}\n type=\"text\"\n value={value}\n onBlur={this.handleBlur}\n onFocus={this.handleFocus}\n onChange={this.handleChange}\n onKeyDown={this.handleKeyDown}\n onContextMenu={this.handleContextMenu}\n autoComplete=\"off\"\n autoCorrect=\"off\"\n autoCapitalize=\"off\"\n spellCheck=\"false\"\n />\n <div className=\"advanced-filter-button-container\">\n <Button\n kind=\"ghost\"\n className={classNames('btn-link-icon advanced-filter-button', {\n 'filter-set': isAdvancedFilterSet,\n })}\n onClick={onAdvancedFiltersTriggered}\n onContextMenu={this.handleContextMenu}\n >\n <div className=\"fa-layers \">\n <FontAwesomeIcon icon={dhFilterFilled} className=\"filter-solid\" />\n <FontAwesomeIcon icon={vsFilter} className=\"filter-light\" />\n </div>\n </Button>\n </div>\n </div>\n );\n }\n}\n\nexport default FilterInputField;\n"],"mappings":"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"}
1
+ {"version":3,"file":"FilterInputField.js","names":["React","PureComponent","classNames","debounce","vsFilter","dhFilterFilled","FontAwesomeIcon","Button","jsx","_jsx","jsxs","_jsxs","FilterInputField","constructor","props","_defineProperty","debounceMs","debouncedSendUpdate","sendUpdate","bind","handleCancel","handleChange","handleCommit","handleFocus","handleBlur","handleKeyDown","handleContextMenu","inputField","value","initialValue","state","isChanged","componentDidMount","_this$inputField","focus","componentDidUpdate","prevProps","flush","componentWillUnmount","cancel","setValue","setState","_this$inputField2","event","target","onDone","setGridFocus","arguments","length","undefined","defocusInput","_this$inputField3","select","relatedTarget","classList","contains","handleTab","backward","onTab","key","stopPropagation","preventDefault","shiftKey","onContextMenu","onChange","render","className","style","isAdvancedFilterSet","onAdvancedFiltersTriggered","children","ref","type","onBlur","onFocus","onKeyDown","autoComplete","autoCorrect","autoCapitalize","spellCheck","kind","onClick","icon"],"sources":["../src/FilterInputField.tsx"],"sourcesContent":["import React, {\n type ChangeEvent,\n PureComponent,\n type ReactElement,\n} from 'react';\nimport classNames from 'classnames';\nimport debounce from 'lodash.debounce';\nimport { vsFilter, dhFilterFilled } from '@deephaven/icons';\nimport './FilterInputField.scss';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport type { DebouncedFunc } from 'lodash';\nimport { Button } from '@deephaven/components';\n\ninterface FilterInputFieldProps {\n className: string;\n style: React.CSSProperties;\n value: string;\n isAdvancedFilterSet: boolean;\n onAdvancedFiltersTriggered: React.MouseEventHandler<HTMLButtonElement>;\n onChange: (value: string) => void;\n onDone: (setGridFocus?: boolean, defocusInput?: boolean) => void;\n onTab: (backward: boolean) => void;\n onContextMenu: React.MouseEventHandler<HTMLInputElement | HTMLButtonElement>;\n debounceMs: number;\n}\ninterface FilterInputFieldState {\n isChanged: boolean;\n value: string;\n}\n/**\n * An input field showing a input field and button.\n * Debounces changes.\n */\nclass FilterInputField extends PureComponent<\n FilterInputFieldProps,\n FilterInputFieldState\n> {\n static defaultProps = {\n style: {},\n className: '',\n value: '',\n isAdvancedFilterSet: false,\n onAdvancedFiltersTriggered: (): void => undefined,\n onChange: (): void => undefined,\n onDone: (): void => undefined,\n onTab: (): void => undefined,\n onContextMenu: (): void => undefined,\n debounceMs: 150,\n };\n\n constructor(props: FilterInputFieldProps) {\n super(props);\n\n const { debounceMs } = props;\n\n this.debouncedSendUpdate = debounce(this.sendUpdate.bind(this), debounceMs);\n this.handleCancel = this.handleCancel.bind(this);\n this.handleChange = this.handleChange.bind(this);\n this.handleCommit = this.handleCommit.bind(this);\n this.handleFocus = this.handleFocus.bind(this);\n this.handleBlur = this.handleBlur.bind(this);\n this.handleKeyDown = this.handleKeyDown.bind(this);\n this.handleContextMenu = this.handleContextMenu.bind(this);\n\n this.inputField = null;\n\n const { value } = props;\n this.initialValue = value;\n this.state = {\n isChanged: false,\n value,\n };\n }\n\n componentDidMount(): void {\n this.inputField?.focus();\n }\n\n componentDidUpdate(prevProps: FilterInputFieldProps): void {\n const { debounceMs } = this.props;\n if (prevProps.debounceMs !== debounceMs) {\n this.debouncedSendUpdate.flush();\n this.debouncedSendUpdate = debounce(\n this.sendUpdate.bind(this),\n debounceMs\n );\n }\n }\n\n componentWillUnmount(): void {\n this.debouncedSendUpdate.cancel();\n }\n\n inputField: HTMLInputElement | null;\n\n initialValue: string;\n\n debouncedSendUpdate: DebouncedFunc<(value: string) => void>;\n\n // clear filters needs to be able to reset the value externally\n // and due to the way this component handles its own debouncing\n // this was easier than moving state up.\n setValue(value: string): void {\n this.initialValue = value;\n this.setState({ value });\n }\n\n focus(): void {\n this.inputField?.focus();\n }\n\n handleChange(event: ChangeEvent<HTMLInputElement>): void {\n const { value } = event.target;\n this.setState({ value, isChanged: true });\n\n this.debouncedSendUpdate(value);\n }\n\n handleCancel(): void {\n this.debouncedSendUpdate.cancel();\n const { initialValue } = this;\n const { isChanged } = this.state;\n if (isChanged) {\n this.sendUpdate(initialValue);\n }\n\n const { onDone } = this.props;\n onDone();\n }\n\n handleCommit(setGridFocus = true, defocusInput = true): void {\n this.debouncedSendUpdate.flush();\n\n const { onDone } = this.props;\n onDone(setGridFocus, defocusInput);\n }\n\n handleFocus(): void {\n this.inputField?.select();\n }\n\n handleBlur(event: React.FocusEvent<HTMLInputElement>): void {\n const { relatedTarget } = event;\n // handleCommit results in a call that steals focus\n if (\n relatedTarget != null &&\n relatedTarget.classList.contains('context-menu-container')\n ) {\n // input blurred by calling context-menu\n // don't set grid focus, but do null column focus\n this.handleCommit(false, true);\n } else if (\n relatedTarget != null &&\n relatedTarget.classList.contains('advanced-filter-button')\n ) {\n // blurred by clicking an advanced filter button\n // don't set grid focus, maintain focusedFilterBarColumn state\n this.handleCommit(false, false);\n } else {\n // clear both, blurred elsewhere\n this.handleCommit(true, true);\n }\n }\n\n handleTab(backward = false): void {\n this.debouncedSendUpdate.flush();\n\n const { onTab } = this.props;\n onTab(backward);\n }\n\n handleKeyDown(event: React.KeyboardEvent<HTMLInputElement>): void {\n switch (event.key) {\n case 'Escape':\n event.stopPropagation();\n event.preventDefault();\n this.handleCancel();\n break;\n case 'Enter':\n event.stopPropagation();\n event.preventDefault();\n this.handleCommit();\n break;\n case 'Tab':\n event.stopPropagation();\n event.preventDefault();\n this.handleTab(event.shiftKey);\n break;\n default:\n break;\n }\n }\n\n handleContextMenu(\n event: React.MouseEvent<HTMLInputElement | HTMLButtonElement>\n ): void {\n const { onContextMenu } = this.props;\n onContextMenu(event);\n }\n\n sendUpdate(value: string): void {\n const { onChange } = this.props;\n onChange(value);\n }\n\n render(): ReactElement {\n const {\n className,\n style,\n isAdvancedFilterSet,\n onAdvancedFiltersTriggered,\n } = this.props;\n const { value } = this.state;\n return (\n <div\n style={style}\n className=\"iris-grid-input-autosized-wrapper\"\n data-value={value} // used by css based autosizer\n >\n <input\n ref={inputField => {\n this.inputField = inputField;\n }}\n className={classNames('iris-grid-input-field', className)}\n type=\"text\"\n value={value}\n onBlur={this.handleBlur}\n onFocus={this.handleFocus}\n onChange={this.handleChange}\n onKeyDown={this.handleKeyDown}\n onContextMenu={this.handleContextMenu}\n autoComplete=\"off\"\n autoCorrect=\"off\"\n autoCapitalize=\"off\"\n spellCheck=\"false\"\n />\n <div className=\"advanced-filter-button-container\">\n <Button\n kind=\"ghost\"\n className={classNames('btn-link-icon advanced-filter-button', {\n 'filter-set': isAdvancedFilterSet,\n })}\n onClick={onAdvancedFiltersTriggered}\n onContextMenu={this.handleContextMenu}\n >\n <div className=\"fa-layers \">\n <FontAwesomeIcon icon={dhFilterFilled} className=\"filter-solid\" />\n <FontAwesomeIcon icon={vsFilter} className=\"filter-light\" />\n </div>\n </Button>\n </div>\n </div>\n );\n }\n}\n\nexport default FilterInputField;\n"],"mappings":";;;AAAA,OAAOA,KAAK,IAEVC,aAAa,QAER,OAAO;AACd,OAAOC,UAAU,MAAM,YAAY;AACnC,OAAOC,QAAQ,MAAM,iBAAiB;AACtC,SAASC,QAAQ,EAAEC,cAAc,QAAQ,kBAAkB;AAAC;AAE5D,SAASC,eAAe,QAAQ,gCAAgC;AAEhE,SAASC,MAAM,QAAQ,uBAAuB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAkB/C;AACA;AACA;AACA;AACA,MAAMC,gBAAgB,SAASX,aAAa,CAG1C;EAcAY,WAAWA,CAACC,KAA4B,EAAE;IACxC,KAAK,CAACA,KAAK,CAAC;IAACC,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAEb,IAAM;MAAEC;IAAW,CAAC,GAAGF,KAAK;IAE5B,IAAI,CAACG,mBAAmB,GAAGd,QAAQ,CAAC,IAAI,CAACe,UAAU,CAACC,IAAI,CAAC,IAAI,CAAC,EAAEH,UAAU,CAAC;IAC3E,IAAI,CAACI,YAAY,GAAG,IAAI,CAACA,YAAY,CAACD,IAAI,CAAC,IAAI,CAAC;IAChD,IAAI,CAACE,YAAY,GAAG,IAAI,CAACA,YAAY,CAACF,IAAI,CAAC,IAAI,CAAC;IAChD,IAAI,CAACG,YAAY,GAAG,IAAI,CAACA,YAAY,CAACH,IAAI,CAAC,IAAI,CAAC;IAChD,IAAI,CAACI,WAAW,GAAG,IAAI,CAACA,WAAW,CAACJ,IAAI,CAAC,IAAI,CAAC;IAC9C,IAAI,CAACK,UAAU,GAAG,IAAI,CAACA,UAAU,CAACL,IAAI,CAAC,IAAI,CAAC;IAC5C,IAAI,CAACM,aAAa,GAAG,IAAI,CAACA,aAAa,CAACN,IAAI,CAAC,IAAI,CAAC;IAClD,IAAI,CAACO,iBAAiB,GAAG,IAAI,CAACA,iBAAiB,CAACP,IAAI,CAAC,IAAI,CAAC;IAE1D,IAAI,CAACQ,UAAU,GAAG,IAAI;IAEtB,IAAM;MAAEC;IAAM,CAAC,GAAGd,KAAK;IACvB,IAAI,CAACe,YAAY,GAAGD,KAAK;IACzB,IAAI,CAACE,KAAK,GAAG;MACXC,SAAS,EAAE,KAAK;MAChBH;IACF,CAAC;EACH;EAEAI,iBAAiBA,CAAA,EAAS;IAAA,IAAAC,gBAAA;IACxB,CAAAA,gBAAA,OAAI,CAACN,UAAU,cAAAM,gBAAA,eAAfA,gBAAA,CAAiBC,KAAK,CAAC,CAAC;EAC1B;EAEAC,kBAAkBA,CAACC,SAAgC,EAAQ;IACzD,IAAM;MAAEpB;IAAW,CAAC,GAAG,IAAI,CAACF,KAAK;IACjC,IAAIsB,SAAS,CAACpB,UAAU,KAAKA,UAAU,EAAE;MACvC,IAAI,CAACC,mBAAmB,CAACoB,KAAK,CAAC,CAAC;MAChC,IAAI,CAACpB,mBAAmB,GAAGd,QAAQ,CACjC,IAAI,CAACe,UAAU,CAACC,IAAI,CAAC,IAAI,CAAC,EAC1BH,UACF,CAAC;IACH;EACF;EAEAsB,oBAAoBA,CAAA,EAAS;IAC3B,IAAI,CAACrB,mBAAmB,CAACsB,MAAM,CAAC,CAAC;EACnC;EAQA;EACA;EACA;EACAC,QAAQA,CAACZ,KAAa,EAAQ;IAC5B,IAAI,CAACC,YAAY,GAAGD,KAAK;IACzB,IAAI,CAACa,QAAQ,CAAC;MAAEb;IAAM,CAAC,CAAC;EAC1B;EAEAM,KAAKA,CAAA,EAAS;IAAA,IAAAQ,iBAAA;IACZ,CAAAA,iBAAA,OAAI,CAACf,UAAU,cAAAe,iBAAA,eAAfA,iBAAA,CAAiBR,KAAK,CAAC,CAAC;EAC1B;EAEAb,YAAYA,CAACsB,KAAoC,EAAQ;IACvD,IAAM;MAAEf;IAAM,CAAC,GAAGe,KAAK,CAACC,MAAM;IAC9B,IAAI,CAACH,QAAQ,CAAC;MAAEb,KAAK;MAAEG,SAAS,EAAE;IAAK,CAAC,CAAC;IAEzC,IAAI,CAACd,mBAAmB,CAACW,KAAK,CAAC;EACjC;EAEAR,YAAYA,CAAA,EAAS;IACnB,IAAI,CAACH,mBAAmB,CAACsB,MAAM,CAAC,CAAC;IACjC,IAAM;MAAEV;IAAa,CAAC,GAAG,IAAI;IAC7B,IAAM;MAAEE;IAAU,CAAC,GAAG,IAAI,CAACD,KAAK;IAChC,IAAIC,SAAS,EAAE;MACb,IAAI,CAACb,UAAU,CAACW,YAAY,CAAC;IAC/B;IAEA,IAAM;MAAEgB;IAAO,CAAC,GAAG,IAAI,CAAC/B,KAAK;IAC7B+B,MAAM,CAAC,CAAC;EACV;EAEAvB,YAAYA,CAAA,EAAiD;IAAA,IAAhDwB,YAAY,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,IAAI;IAAA,IAAEG,YAAY,GAAAH,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,IAAI;IACnD,IAAI,CAAC9B,mBAAmB,CAACoB,KAAK,CAAC,CAAC;IAEhC,IAAM;MAAEQ;IAAO,CAAC,GAAG,IAAI,CAAC/B,KAAK;IAC7B+B,MAAM,CAACC,YAAY,EAAEI,YAAY,CAAC;EACpC;EAEA3B,WAAWA,CAAA,EAAS;IAAA,IAAA4B,iBAAA;IAClB,CAAAA,iBAAA,OAAI,CAACxB,UAAU,cAAAwB,iBAAA,eAAfA,iBAAA,CAAiBC,MAAM,CAAC,CAAC;EAC3B;EAEA5B,UAAUA,CAACmB,KAAyC,EAAQ;IAC1D,IAAM;MAAEU;IAAc,CAAC,GAAGV,KAAK;IAC/B;IACA,IACEU,aAAa,IAAI,IAAI,IACrBA,aAAa,CAACC,SAAS,CAACC,QAAQ,CAAC,wBAAwB,CAAC,EAC1D;MACA;MACA;MACA,IAAI,CAACjC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC;IAChC,CAAC,MAAM,IACL+B,aAAa,IAAI,IAAI,IACrBA,aAAa,CAACC,SAAS,CAACC,QAAQ,CAAC,wBAAwB,CAAC,EAC1D;MACA;MACA;MACA,IAAI,CAACjC,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC;IACjC,CAAC,MAAM;MACL;MACA,IAAI,CAACA,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC;IAC/B;EACF;EAEAkC,SAASA,CAAA,EAAyB;IAAA,IAAxBC,QAAQ,GAAAV,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,KAAK;IACxB,IAAI,CAAC9B,mBAAmB,CAACoB,KAAK,CAAC,CAAC;IAEhC,IAAM;MAAEqB;IAAM,CAAC,GAAG,IAAI,CAAC5C,KAAK;IAC5B4C,KAAK,CAACD,QAAQ,CAAC;EACjB;EAEAhC,aAAaA,CAACkB,KAA4C,EAAQ;IAChE,QAAQA,KAAK,CAACgB,GAAG;MACf,KAAK,QAAQ;QACXhB,KAAK,CAACiB,eAAe,CAAC,CAAC;QACvBjB,KAAK,CAACkB,cAAc,CAAC,CAAC;QACtB,IAAI,CAACzC,YAAY,CAAC,CAAC;QACnB;MACF,KAAK,OAAO;QACVuB,KAAK,CAACiB,eAAe,CAAC,CAAC;QACvBjB,KAAK,CAACkB,cAAc,CAAC,CAAC;QACtB,IAAI,CAACvC,YAAY,CAAC,CAAC;QACnB;MACF,KAAK,KAAK;QACRqB,KAAK,CAACiB,eAAe,CAAC,CAAC;QACvBjB,KAAK,CAACkB,cAAc,CAAC,CAAC;QACtB,IAAI,CAACL,SAAS,CAACb,KAAK,CAACmB,QAAQ,CAAC;QAC9B;MACF;QACE;IACJ;EACF;EAEApC,iBAAiBA,CACfiB,KAA6D,EACvD;IACN,IAAM;MAAEoB;IAAc,CAAC,GAAG,IAAI,CAACjD,KAAK;IACpCiD,aAAa,CAACpB,KAAK,CAAC;EACtB;EAEAzB,UAAUA,CAACU,KAAa,EAAQ;IAC9B,IAAM;MAAEoC;IAAS,CAAC,GAAG,IAAI,CAAClD,KAAK;IAC/BkD,QAAQ,CAACpC,KAAK,CAAC;EACjB;EAEAqC,MAAMA,CAAA,EAAiB;IACrB,IAAM;MACJC,SAAS;MACTC,KAAK;MACLC,mBAAmB;MACnBC;IACF,CAAC,GAAG,IAAI,CAACvD,KAAK;IACd,IAAM;MAAEc;IAAM,CAAC,GAAG,IAAI,CAACE,KAAK;IAC5B,oBACEnB,KAAA;MACEwD,KAAK,EAAEA,KAAM;MACbD,SAAS,EAAC,mCAAmC;MAC7C,cAAYtC,KAAM,CAAC;MAAA;MAAA0C,QAAA,gBAEnB7D,IAAA;QACE8D,GAAG,EAAE5C,UAAU,IAAI;UACjB,IAAI,CAACA,UAAU,GAAGA,UAAU;QAC9B,CAAE;QACFuC,SAAS,EAAEhE,UAAU,CAAC,uBAAuB,EAAEgE,SAAS,CAAE;QAC1DM,IAAI,EAAC,MAAM;QACX5C,KAAK,EAAEA,KAAM;QACb6C,MAAM,EAAE,IAAI,CAACjD,UAAW;QACxBkD,OAAO,EAAE,IAAI,CAACnD,WAAY;QAC1ByC,QAAQ,EAAE,IAAI,CAAC3C,YAAa;QAC5BsD,SAAS,EAAE,IAAI,CAAClD,aAAc;QAC9BsC,aAAa,EAAE,IAAI,CAACrC,iBAAkB;QACtCkD,YAAY,EAAC,KAAK;QAClBC,WAAW,EAAC,KAAK;QACjBC,cAAc,EAAC,KAAK;QACpBC,UAAU,EAAC;MAAO,CACnB,CAAC,eACFtE,IAAA;QAAKyD,SAAS,EAAC,kCAAkC;QAAAI,QAAA,eAC/C7D,IAAA,CAACF,MAAM;UACLyE,IAAI,EAAC,OAAO;UACZd,SAAS,EAAEhE,UAAU,CAAC,sCAAsC,EAAE;YAC5D,YAAY,EAAEkE;UAChB,CAAC,CAAE;UACHa,OAAO,EAAEZ,0BAA2B;UACpCN,aAAa,EAAE,IAAI,CAACrC,iBAAkB;UAAA4C,QAAA,eAEtC3D,KAAA;YAAKuD,SAAS,EAAC,YAAY;YAAAI,QAAA,gBACzB7D,IAAA,CAACH,eAAe;cAAC4E,IAAI,EAAE7E,cAAe;cAAC6D,SAAS,EAAC;YAAc,CAAE,CAAC,eAClEzD,IAAA,CAACH,eAAe;cAAC4E,IAAI,EAAE9E,QAAS;cAAC8D,SAAS,EAAC;YAAc,CAAE,CAAC;UAAA,CACzD;QAAC,CACA;MAAC,CACN,CAAC;IAAA,CACH,CAAC;EAEV;AACF;AAACnD,eAAA,CA7NKH,gBAAgB,kBAIE;EACpBuD,KAAK,EAAE,CAAC,CAAC;EACTD,SAAS,EAAE,EAAE;EACbtC,KAAK,EAAE,EAAE;EACTwC,mBAAmB,EAAE,KAAK;EAC1BC,0BAA0B,EAAEA,CAAA,KAAYpB,SAAS;EACjDe,QAAQ,EAAEA,CAAA,KAAYf,SAAS;EAC/BJ,MAAM,EAAEA,CAAA,KAAYI,SAAS;EAC7BS,KAAK,EAAEA,CAAA,KAAYT,SAAS;EAC5Bc,aAAa,EAAEA,CAAA,KAAYd,SAAS;EACpCjC,UAAU,EAAE;AACd,CAAC;AAgNH,eAAeJ,gBAAgB","ignoreList":[]}
package/dist/GotoRow.js CHANGED
@@ -9,9 +9,7 @@ import "./GotoRow.css";
9
9
  import { nanoid } from 'nanoid';
10
10
  import IrisGridBottomBar from "./IrisGridBottomBar.js";
11
11
  import { isIrisGridTableModelTemplate } from "./IrisGridTableModelTemplate.js";
12
- import { jsx as _jsx } from "react/jsx-runtime";
13
- import { jsxs as _jsxs } from "react/jsx-runtime";
14
- import { Fragment as _Fragment } from "react/jsx-runtime";
12
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
15
13
  var DEFAULT_FORMAT_STRING = '###,##0';
16
14
  var GotoRow = /*#__PURE__*/forwardRef((_ref, ref) => {
17
15
  var {
@@ -76,17 +74,17 @@ var GotoRow = /*#__PURE__*/forwardRef((_ref, ref) => {
76
74
  focus() {
77
75
  var _gotoRowInputRef$curr;
78
76
  setIsGotoRowActive(true);
79
- (_gotoRowInputRef$curr = gotoRowInputRef.current) === null || _gotoRowInputRef$curr === void 0 ? void 0 : _gotoRowInputRef$curr.select();
77
+ (_gotoRowInputRef$curr = gotoRowInputRef.current) === null || _gotoRowInputRef$curr === void 0 || _gotoRowInputRef$curr.select();
80
78
  }
81
79
  }));
82
80
  var selectInput = () => {
83
81
  // when row changes without focus (i.e. via context menu), re-select input
84
82
  if (isGotoRowActive && document.activeElement !== gotoRowInputRef.current) {
85
83
  var _gotoRowInputRef$curr2;
86
- (_gotoRowInputRef$curr2 = gotoRowInputRef.current) === null || _gotoRowInputRef$curr2 === void 0 ? void 0 : _gotoRowInputRef$curr2.select();
84
+ (_gotoRowInputRef$curr2 = gotoRowInputRef.current) === null || _gotoRowInputRef$curr2 === void 0 || _gotoRowInputRef$curr2.select();
87
85
  } else if (!isGotoRowActive && document.activeElement !== gotoValueInputRef.current) {
88
86
  var _gotoValueInputRef$cu;
89
- (_gotoValueInputRef$cu = gotoValueInputRef.current) === null || _gotoValueInputRef$cu === void 0 ? void 0 : _gotoValueInputRef$cu.select();
87
+ (_gotoValueInputRef$cu = gotoValueInputRef.current) === null || _gotoValueInputRef$cu === void 0 || _gotoValueInputRef$cu.select();
90
88
  }
91
89
  };
92
90
  useEffect(selectInput, [isGotoRowActive]);