@deephaven/iris-grid 0.42.1-beta.4 → 0.43.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (277) hide show
  1. package/package.json +15 -15
  2. package/dist/AdvancedFilterCreator.css +0 -106
  3. package/dist/AdvancedFilterCreator.css.map +0 -1
  4. package/dist/AdvancedFilterCreator.js +0 -541
  5. package/dist/AdvancedFilterCreator.js.map +0 -1
  6. package/dist/AdvancedFilterCreatorFilterItem.css +0 -9
  7. package/dist/AdvancedFilterCreatorFilterItem.css.map +0 -1
  8. package/dist/AdvancedFilterCreatorFilterItem.js +0 -184
  9. package/dist/AdvancedFilterCreatorFilterItem.js.map +0 -1
  10. package/dist/AdvancedFilterCreatorSelectValue.css +0 -50
  11. package/dist/AdvancedFilterCreatorSelectValue.css.map +0 -1
  12. package/dist/AdvancedFilterCreatorSelectValue.js +0 -301
  13. package/dist/AdvancedFilterCreatorSelectValue.js.map +0 -1
  14. package/dist/AdvancedFilterCreatorSelectValueList.js +0 -272
  15. package/dist/AdvancedFilterCreatorSelectValueList.js.map +0 -1
  16. package/dist/ColumnHeaderGroup.js +0 -61
  17. package/dist/ColumnHeaderGroup.js.map +0 -1
  18. package/dist/ColumnStatistics.css +0 -76
  19. package/dist/ColumnStatistics.css.map +0 -1
  20. package/dist/ColumnStatistics.js +0 -202
  21. package/dist/ColumnStatistics.js.map +0 -1
  22. package/dist/CommonTypes.js +0 -2
  23. package/dist/CommonTypes.js.map +0 -1
  24. package/dist/CrossColumnSearch.css +0 -35
  25. package/dist/CrossColumnSearch.css.map +0 -1
  26. package/dist/CrossColumnSearch.js +0 -199
  27. package/dist/CrossColumnSearch.js.map +0 -1
  28. package/dist/FilterInputField.css +0 -56
  29. package/dist/FilterInputField.css.map +0 -1
  30. package/dist/FilterInputField.js +0 -232
  31. package/dist/FilterInputField.js.map +0 -1
  32. package/dist/GotoRow.css +0 -45
  33. package/dist/GotoRow.css.map +0 -1
  34. package/dist/GotoRow.js +0 -298
  35. package/dist/GotoRow.js.map +0 -1
  36. package/dist/IrisGrid.css +0 -359
  37. package/dist/IrisGrid.css.map +0 -1
  38. package/dist/IrisGrid.js +0 -3651
  39. package/dist/IrisGrid.js.map +0 -1
  40. package/dist/IrisGridBottomBar.css +0 -85
  41. package/dist/IrisGridBottomBar.css.map +0 -1
  42. package/dist/IrisGridBottomBar.js +0 -36
  43. package/dist/IrisGridBottomBar.js.map +0 -1
  44. package/dist/IrisGridCellOverflowModal.css +0 -17
  45. package/dist/IrisGridCellOverflowModal.css.map +0 -1
  46. package/dist/IrisGridCellOverflowModal.js +0 -157
  47. package/dist/IrisGridCellOverflowModal.js.map +0 -1
  48. package/dist/IrisGridCellRendererUtils.js +0 -20
  49. package/dist/IrisGridCellRendererUtils.js.map +0 -1
  50. package/dist/IrisGridCopyHandler.css +0 -64
  51. package/dist/IrisGridCopyHandler.css.map +0 -1
  52. package/dist/IrisGridCopyHandler.js +0 -331
  53. package/dist/IrisGridCopyHandler.js.map +0 -1
  54. package/dist/IrisGridDataBarCellRenderer.js +0 -10
  55. package/dist/IrisGridDataBarCellRenderer.js.map +0 -1
  56. package/dist/IrisGridIcons.js +0 -25
  57. package/dist/IrisGridIcons.js.map +0 -1
  58. package/dist/IrisGridMetricCalculator.js +0 -33
  59. package/dist/IrisGridMetricCalculator.js.map +0 -1
  60. package/dist/IrisGridModel.js +0 -263
  61. package/dist/IrisGridModel.js.map +0 -1
  62. package/dist/IrisGridModelFactory.js +0 -27
  63. package/dist/IrisGridModelFactory.js.map +0 -1
  64. package/dist/IrisGridModelUpdater.js +0 -96
  65. package/dist/IrisGridModelUpdater.js.map +0 -1
  66. package/dist/IrisGridPartitionSelector.css +0 -48
  67. package/dist/IrisGridPartitionSelector.css.map +0 -1
  68. package/dist/IrisGridPartitionSelector.js +0 -198
  69. package/dist/IrisGridPartitionSelector.js.map +0 -1
  70. package/dist/IrisGridProxyModel.js +0 -530
  71. package/dist/IrisGridProxyModel.js.map +0 -1
  72. package/dist/IrisGridRenderer.js +0 -779
  73. package/dist/IrisGridRenderer.js.map +0 -1
  74. package/dist/IrisGridShortcuts.js +0 -59
  75. package/dist/IrisGridShortcuts.js.map +0 -1
  76. package/dist/IrisGridTableModel.js +0 -273
  77. package/dist/IrisGridTableModel.js.map +0 -1
  78. package/dist/IrisGridTableModelTemplate.js +0 -1589
  79. package/dist/IrisGridTableModelTemplate.js.map +0 -1
  80. package/dist/IrisGridTestUtils.js +0 -121
  81. package/dist/IrisGridTestUtils.js.map +0 -1
  82. package/dist/IrisGridTextCellRenderer.js +0 -139
  83. package/dist/IrisGridTextCellRenderer.js.map +0 -1
  84. package/dist/IrisGridTheme.js +0 -96
  85. package/dist/IrisGridTheme.js.map +0 -1
  86. package/dist/IrisGridTheme.module.css +0 -69
  87. package/dist/IrisGridTheme.module.css.map +0 -1
  88. package/dist/IrisGridTreeTableModel.js +0 -145
  89. package/dist/IrisGridTreeTableModel.js.map +0 -1
  90. package/dist/IrisGridUtils.js +0 -1279
  91. package/dist/IrisGridUtils.js.map +0 -1
  92. package/dist/MissingKeyError.js +0 -15
  93. package/dist/MissingKeyError.js.map +0 -1
  94. package/dist/PartitionSelectorSearch.css +0 -22
  95. package/dist/PartitionSelectorSearch.css.map +0 -1
  96. package/dist/PartitionSelectorSearch.js +0 -317
  97. package/dist/PartitionSelectorSearch.js.map +0 -1
  98. package/dist/PendingDataBottomBar.css +0 -13
  99. package/dist/PendingDataBottomBar.css.map +0 -1
  100. package/dist/PendingDataBottomBar.js +0 -98
  101. package/dist/PendingDataBottomBar.js.map +0 -1
  102. package/dist/TableViewportUpdater.js +0 -156
  103. package/dist/TableViewportUpdater.js.map +0 -1
  104. package/dist/ToastBottomBar.js +0 -42
  105. package/dist/ToastBottomBar.js.map +0 -1
  106. package/dist/TreeTableViewportUpdater.js +0 -96
  107. package/dist/TreeTableViewportUpdater.js.map +0 -1
  108. package/dist/declaration.d.js +0 -2
  109. package/dist/declaration.d.js.map +0 -1
  110. package/dist/format-context-menus/CustomFormatAction.css +0 -25
  111. package/dist/format-context-menus/CustomFormatAction.css.map +0 -1
  112. package/dist/format-context-menus/CustomFormatAction.js +0 -132
  113. package/dist/format-context-menus/CustomFormatAction.js.map +0 -1
  114. package/dist/format-context-menus/DateTimeFormatContextMenu.js +0 -53
  115. package/dist/format-context-menus/DateTimeFormatContextMenu.js.map +0 -1
  116. package/dist/format-context-menus/DecimalFormatContextMenu.js +0 -59
  117. package/dist/format-context-menus/DecimalFormatContextMenu.js.map +0 -1
  118. package/dist/format-context-menus/FormatContextMenuUtils.js +0 -63
  119. package/dist/format-context-menus/FormatContextMenuUtils.js.map +0 -1
  120. package/dist/format-context-menus/IntegerFormatContextMenu.js +0 -43
  121. package/dist/format-context-menus/IntegerFormatContextMenu.js.map +0 -1
  122. package/dist/format-context-menus/index.js +0 -4
  123. package/dist/format-context-menus/index.js.map +0 -1
  124. package/dist/index.js +0 -24
  125. package/dist/index.js.map +0 -1
  126. package/dist/key-handlers/ClearFilterKeyHandler.js +0 -21
  127. package/dist/key-handlers/ClearFilterKeyHandler.js.map +0 -1
  128. package/dist/key-handlers/CopyKeyHandler.js +0 -31
  129. package/dist/key-handlers/CopyKeyHandler.js.map +0 -1
  130. package/dist/key-handlers/ReverseKeyHandler.js +0 -32
  131. package/dist/key-handlers/ReverseKeyHandler.js.map +0 -1
  132. package/dist/key-handlers/index.js +0 -4
  133. package/dist/key-handlers/index.js.map +0 -1
  134. package/dist/mousehandlers/IrisGridCellOverflowMouseHandler.js +0 -175
  135. package/dist/mousehandlers/IrisGridCellOverflowMouseHandler.js.map +0 -1
  136. package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.js +0 -139
  137. package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.js.map +0 -1
  138. package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.js +0 -83
  139. package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.js.map +0 -1
  140. package/dist/mousehandlers/IrisGridContextMenuHandler.css +0 -19
  141. package/dist/mousehandlers/IrisGridContextMenuHandler.css.map +0 -1
  142. package/dist/mousehandlers/IrisGridContextMenuHandler.js +0 -1220
  143. package/dist/mousehandlers/IrisGridContextMenuHandler.js.map +0 -1
  144. package/dist/mousehandlers/IrisGridDataSelectMouseHandler.js +0 -28
  145. package/dist/mousehandlers/IrisGridDataSelectMouseHandler.js.map +0 -1
  146. package/dist/mousehandlers/IrisGridFilterMouseHandler.js +0 -80
  147. package/dist/mousehandlers/IrisGridFilterMouseHandler.js.map +0 -1
  148. package/dist/mousehandlers/IrisGridRowTreeMouseHandler.js +0 -126
  149. package/dist/mousehandlers/IrisGridRowTreeMouseHandler.js.map +0 -1
  150. package/dist/mousehandlers/IrisGridSortMouseHandler.js +0 -46
  151. package/dist/mousehandlers/IrisGridSortMouseHandler.js.map +0 -1
  152. package/dist/mousehandlers/IrisGridTokenMouseHandler.js +0 -151
  153. package/dist/mousehandlers/IrisGridTokenMouseHandler.js.map +0 -1
  154. package/dist/mousehandlers/PendingMouseHandler.js +0 -39
  155. package/dist/mousehandlers/PendingMouseHandler.js.map +0 -1
  156. package/dist/mousehandlers/index.js +0 -11
  157. package/dist/mousehandlers/index.js.map +0 -1
  158. package/dist/sidebar/AdvancedSettings.js +0 -6
  159. package/dist/sidebar/AdvancedSettings.js.map +0 -1
  160. package/dist/sidebar/AdvancedSettingsMenu.js +0 -29
  161. package/dist/sidebar/AdvancedSettingsMenu.js.map +0 -1
  162. package/dist/sidebar/AdvancedSettingsType.js +0 -7
  163. package/dist/sidebar/AdvancedSettingsType.js.map +0 -1
  164. package/dist/sidebar/ChartBuilder.css +0 -56
  165. package/dist/sidebar/ChartBuilder.css.map +0 -1
  166. package/dist/sidebar/ChartBuilder.js +0 -443
  167. package/dist/sidebar/ChartBuilder.js.map +0 -1
  168. package/dist/sidebar/CustomColumnBuilder.css +0 -58
  169. package/dist/sidebar/CustomColumnBuilder.css.map +0 -1
  170. package/dist/sidebar/CustomColumnBuilder.js +0 -384
  171. package/dist/sidebar/CustomColumnBuilder.js.map +0 -1
  172. package/dist/sidebar/CustomColumnInput.js +0 -90
  173. package/dist/sidebar/CustomColumnInput.js.map +0 -1
  174. package/dist/sidebar/InputEditor.css +0 -35
  175. package/dist/sidebar/InputEditor.css.map +0 -1
  176. package/dist/sidebar/InputEditor.js +0 -177
  177. package/dist/sidebar/InputEditor.js.map +0 -1
  178. package/dist/sidebar/OptionType.js +0 -19
  179. package/dist/sidebar/OptionType.js.map +0 -1
  180. package/dist/sidebar/RollupRows.css +0 -120
  181. package/dist/sidebar/RollupRows.css.map +0 -1
  182. package/dist/sidebar/RollupRows.js +0 -519
  183. package/dist/sidebar/RollupRows.js.map +0 -1
  184. package/dist/sidebar/SelectDistinctBuilder.css +0 -41
  185. package/dist/sidebar/SelectDistinctBuilder.css.map +0 -1
  186. package/dist/sidebar/SelectDistinctBuilder.js +0 -155
  187. package/dist/sidebar/SelectDistinctBuilder.js.map +0 -1
  188. package/dist/sidebar/TableCsvExporter.css +0 -32
  189. package/dist/sidebar/TableCsvExporter.css.map +0 -1
  190. package/dist/sidebar/TableCsvExporter.js +0 -399
  191. package/dist/sidebar/TableCsvExporter.js.map +0 -1
  192. package/dist/sidebar/TableSaver.js +0 -487
  193. package/dist/sidebar/TableSaver.js.map +0 -1
  194. package/dist/sidebar/aggregations/AggregationEdit.css +0 -61
  195. package/dist/sidebar/aggregations/AggregationEdit.css.map +0 -1
  196. package/dist/sidebar/aggregations/AggregationEdit.js +0 -155
  197. package/dist/sidebar/aggregations/AggregationEdit.js.map +0 -1
  198. package/dist/sidebar/aggregations/AggregationOperation.js +0 -19
  199. package/dist/sidebar/aggregations/AggregationOperation.js.map +0 -1
  200. package/dist/sidebar/aggregations/AggregationUtils.js +0 -59
  201. package/dist/sidebar/aggregations/AggregationUtils.js.map +0 -1
  202. package/dist/sidebar/aggregations/Aggregations.css +0 -43
  203. package/dist/sidebar/aggregations/Aggregations.css.map +0 -1
  204. package/dist/sidebar/aggregations/Aggregations.js +0 -178
  205. package/dist/sidebar/aggregations/Aggregations.js.map +0 -1
  206. package/dist/sidebar/aggregations/index.js +0 -2
  207. package/dist/sidebar/aggregations/index.js.map +0 -1
  208. package/dist/sidebar/conditional-formatting/ColumnFormatEditor.js +0 -123
  209. package/dist/sidebar/conditional-formatting/ColumnFormatEditor.js.map +0 -1
  210. package/dist/sidebar/conditional-formatting/ConditionEditor.js +0 -243
  211. package/dist/sidebar/conditional-formatting/ConditionEditor.js.map +0 -1
  212. package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.css +0 -22
  213. package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.css.map +0 -1
  214. package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.js +0 -109
  215. package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.js.map +0 -1
  216. package/dist/sidebar/conditional-formatting/ConditionalFormattingAPIUtils.js +0 -18
  217. package/dist/sidebar/conditional-formatting/ConditionalFormattingAPIUtils.js.map +0 -1
  218. package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.css +0 -57
  219. package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.css.map +0 -1
  220. package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js +0 -150
  221. package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js.map +0 -1
  222. package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js +0 -635
  223. package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js.map +0 -1
  224. package/dist/sidebar/conditional-formatting/RowFormatEditor.js +0 -122
  225. package/dist/sidebar/conditional-formatting/RowFormatEditor.js.map +0 -1
  226. package/dist/sidebar/conditional-formatting/StyleEditor.css +0 -55
  227. package/dist/sidebar/conditional-formatting/StyleEditor.css.map +0 -1
  228. package/dist/sidebar/conditional-formatting/StyleEditor.js +0 -150
  229. package/dist/sidebar/conditional-formatting/StyleEditor.js.map +0 -1
  230. package/dist/sidebar/icons/BarIcon.js +0 -24
  231. package/dist/sidebar/icons/BarIcon.js.map +0 -1
  232. package/dist/sidebar/icons/FormatColumnWhereIcon.js +0 -42
  233. package/dist/sidebar/icons/FormatColumnWhereIcon.js.map +0 -1
  234. package/dist/sidebar/icons/FormatRowWhereIcon.js +0 -36
  235. package/dist/sidebar/icons/FormatRowWhereIcon.js.map +0 -1
  236. package/dist/sidebar/icons/HistogramIcon.js +0 -24
  237. package/dist/sidebar/icons/HistogramIcon.js.map +0 -1
  238. package/dist/sidebar/icons/LineIcon.js +0 -27
  239. package/dist/sidebar/icons/LineIcon.js.map +0 -1
  240. package/dist/sidebar/icons/PieIcon.js +0 -24
  241. package/dist/sidebar/icons/PieIcon.js.map +0 -1
  242. package/dist/sidebar/icons/ScatterIcon.js +0 -74
  243. package/dist/sidebar/icons/ScatterIcon.js.map +0 -1
  244. package/dist/sidebar/icons/index.js +0 -8
  245. package/dist/sidebar/icons/index.js.map +0 -1
  246. package/dist/sidebar/index.js +0 -18
  247. package/dist/sidebar/index.js.map +0 -1
  248. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.css +0 -68
  249. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.css.map +0 -1
  250. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.js +0 -964
  251. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.js.map +0 -1
  252. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilderUtils.js +0 -132
  253. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilderUtils.js.map +0 -1
  254. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingGroup.css +0 -29
  255. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingGroup.css.map +0 -1
  256. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingGroup.js +0 -188
  257. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingGroup.js.map +0 -1
  258. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingItem.js +0 -81
  259. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingItem.js.map +0 -1
  260. package/dist/sidebar/visibility-ordering-builder/sortable-tree/PointerSensorWithInteraction.js +0 -30
  261. package/dist/sidebar/visibility-ordering-builder/sortable-tree/PointerSensorWithInteraction.js.map +0 -1
  262. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTree.js +0 -158
  263. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTree.js.map +0 -1
  264. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeInner.js +0 -146
  265. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeInner.js.map +0 -1
  266. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeItem.js +0 -59
  267. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeItem.js.map +0 -1
  268. package/dist/sidebar/visibility-ordering-builder/sortable-tree/TreeItem.css +0 -139
  269. package/dist/sidebar/visibility-ordering-builder/sortable-tree/TreeItem.css.map +0 -1
  270. package/dist/sidebar/visibility-ordering-builder/sortable-tree/TreeItem.js +0 -44
  271. package/dist/sidebar/visibility-ordering-builder/sortable-tree/TreeItem.js.map +0 -1
  272. package/dist/sidebar/visibility-ordering-builder/sortable-tree/keyboardCoordinates.js +0 -129
  273. package/dist/sidebar/visibility-ordering-builder/sortable-tree/keyboardCoordinates.js.map +0 -1
  274. package/dist/sidebar/visibility-ordering-builder/sortable-tree/types.js +0 -4
  275. package/dist/sidebar/visibility-ordering-builder/sortable-tree/types.js.map +0 -1
  276. package/dist/sidebar/visibility-ordering-builder/sortable-tree/utilities.js +0 -261
  277. package/dist/sidebar/visibility-ordering-builder/sortable-tree/utilities.js.map +0 -1
@@ -1,779 +0,0 @@
1
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
2
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
3
- function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
4
- function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
5
- function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
6
- /* eslint react/destructuring-assignment: "off" */
7
- /* eslint class-methods-use-this: "off" */
8
- /* eslint no-param-reassign: "off" */
9
- import { DEFAULT_FONT_WIDTH, GridRenderer, GridUtils } from '@deephaven/grid';
10
- import { TableUtils } from '@deephaven/jsapi-utils';
11
- import { assertNotNull, getOrThrow } from '@deephaven/utils';
12
- import IrisGridTextCellRenderer from "./IrisGridTextCellRenderer.js";
13
- import IrisGridDataBarCellRenderer from "./IrisGridDataBarCellRenderer.js";
14
- import { getIcon } from "./IrisGridIcons.js";
15
- var ICON_NAMES = Object.freeze({
16
- SORT_UP: 'sortUp',
17
- SORT_DOWN: 'sortDown',
18
- CARET_DOWN: 'caretDown',
19
- CARET_RIGHT: 'caretRight',
20
- CELL_OVERFLOW: 'cellOverflow'
21
- });
22
- var EXPAND_ICON_SIZE = 10;
23
- /**
24
- * Handles rendering some of the Iris specific features, such as sorting icons, sort bar display
25
- * */
26
- class IrisGridRenderer extends GridRenderer {
27
- constructor() {
28
- super(...arguments);
29
- _defineProperty(this, "textCellRenderer", new IrisGridTextCellRenderer());
30
- _defineProperty(this, "dataBarCellRenderer", new IrisGridDataBarCellRenderer());
31
- }
32
- static isFilterValid(advancedFilter, quickFilter) {
33
- var isAdvancedFilterValid = advancedFilter == null || advancedFilter.filter != null;
34
- var isQuickFilterValid = quickFilter == null || quickFilter.filter != null;
35
- return isAdvancedFilterValid && isQuickFilterValid;
36
- }
37
- getSortIcon(sort) {
38
- if (!sort) {
39
- return null;
40
- }
41
- if (sort.direction === TableUtils.sortDirection.ascending) {
42
- return getIcon(ICON_NAMES.SORT_UP);
43
- }
44
- if (sort.direction === TableUtils.sortDirection.descending) {
45
- return getIcon(ICON_NAMES.SORT_DOWN);
46
- }
47
- return null;
48
- }
49
- drawCanvas(state) {
50
- super.drawCanvas(state);
51
- this.drawScrim(state);
52
- }
53
- drawGrid(context, state) {
54
- super.drawGrid(context, state);
55
- this.drawCellOverflowButton(state);
56
- }
57
- drawGridLines(context, state) {
58
- super.drawGridLines(context, state);
59
- this.drawGroupedColumnLine(context, state);
60
- this.drawPendingRowLine(context, state);
61
- }
62
- drawCellContent(context, state, column, row) {
63
- var {
64
- metrics,
65
- model
66
- } = state;
67
- var {
68
- modelColumns,
69
- modelRows
70
- } = metrics;
71
- var modelColumn = modelColumns.get(column);
72
- var modelRow = getOrThrow(modelRows, row);
73
- if (modelColumn === undefined) {
74
- return;
75
- }
76
- var renderType = model.renderTypeForCell(modelColumn, modelRow);
77
- var cellRenderer = this.getCellRenderer(renderType);
78
- cellRenderer.drawCellContent(context, state, column, row);
79
- }
80
- getCellOverflowButtonPosition(_ref) {
81
- var {
82
- mouseX,
83
- mouseY,
84
- metrics,
85
- theme
86
- } = _ref;
87
- return this.textCellRenderer.getCellOverflowButtonPosition(mouseX, mouseY, metrics, theme);
88
- }
89
- shouldRenderOverflowButton(state) {
90
- return this.textCellRenderer.shouldRenderOverflowButton(state);
91
- }
92
- drawCellOverflowButton(state) {
93
- var {
94
- context,
95
- mouseX,
96
- mouseY,
97
- theme
98
- } = state;
99
- if (mouseX == null || mouseY == null) return;
100
- if (!this.shouldRenderOverflowButton(state)) {
101
- return;
102
- }
103
- var {
104
- left: buttonLeft,
105
- top: buttonTop,
106
- width: buttonWidth,
107
- height: buttonHeight
108
- } = this.getCellOverflowButtonPosition(state);
109
- var {
110
- cellHorizontalPadding,
111
- overflowButtonColor,
112
- overflowButtonHoverColor
113
- } = theme;
114
- context.save();
115
- if (overflowButtonHoverColor != null && buttonLeft != null && buttonWidth != null && buttonTop != null && buttonHeight != null && mouseX >= buttonLeft && mouseX <= buttonLeft + buttonWidth && mouseY >= buttonTop && mouseY <= buttonTop + buttonHeight) {
116
- context.fillStyle = overflowButtonHoverColor;
117
- } else if (overflowButtonColor != null) {
118
- context.fillStyle = overflowButtonColor;
119
- }
120
- var icon = getIcon(ICON_NAMES.CELL_OVERFLOW);
121
- if (buttonLeft != null && buttonTop != null) {
122
- context.translate(buttonLeft + cellHorizontalPadding, buttonTop + 2);
123
- }
124
- context.fill(icon);
125
- context.restore();
126
- }
127
- drawGroupedColumnLine(context, state) {
128
- var {
129
- metrics,
130
- model,
131
- theme
132
- } = state;
133
- var {
134
- groupedColumns
135
- } = model;
136
- var {
137
- maxY,
138
- allColumnWidths,
139
- allColumnXs
140
- } = metrics;
141
- if (groupedColumns.length === 0 || theme.groupedColumnDividerColor == null) {
142
- return;
143
- }
144
-
145
- // This assumes that the engine puts the grouped columns at the start of the
146
- // model, so model and visible index match for grouped columns. If we ever
147
- // add freeze support for tree tables or allow moving the grouped columns,
148
- // this assumption may no longer hold true. If such a change occurs, we'll
149
- // need to revisit this since a single vertical divider may no longer make
150
- // sense.
151
- var lastVisibleGroupColumnIndex = groupedColumns.length - 1;
152
- var columnX = allColumnXs.get(lastVisibleGroupColumnIndex);
153
- var columnWidth = allColumnWidths.get(lastVisibleGroupColumnIndex);
154
- if (columnX == null || columnWidth == null) {
155
- return;
156
- }
157
- var x = columnX + columnWidth + 0.5;
158
- context.strokeStyle = theme.groupedColumnDividerColor;
159
- context.lineWidth = 1;
160
- context.beginPath();
161
- context.moveTo(x, 0);
162
- context.lineTo(x, maxY);
163
- context.stroke();
164
- }
165
- drawPendingRowLine(context, state) {
166
- var {
167
- metrics,
168
- model,
169
- theme
170
- } = state;
171
- var {
172
- allRowYs,
173
- maxX
174
- } = metrics;
175
- var {
176
- pendingRowCount
177
- } = model;
178
- if (pendingRowCount <= 0) {
179
- return;
180
- }
181
- var firstPendingRow = model.rowCount - model.pendingRowCount - model.floatingBottomRowCount;
182
- var y = allRowYs.get(firstPendingRow);
183
- if (y == null) {
184
- return;
185
- }
186
- y -= 0.5;
187
- context.save();
188
- context.setLineDash([4, 2]);
189
- context.strokeStyle = theme.pendingTextColor;
190
- context.lineWidth = 1;
191
- context.beginPath();
192
- context.moveTo(0, y);
193
- context.lineTo(maxX, y);
194
- context.stroke();
195
- context.restore();
196
- }
197
- drawMouseColumnHover(context, state) {
198
- var {
199
- theme,
200
- metrics,
201
- hoverSelectColumn
202
- } = state;
203
- if (hoverSelectColumn == null || theme.linkerColumnHoverBackgroundColor == null) {
204
- return;
205
- }
206
- var {
207
- allColumnWidths,
208
- allColumnXs,
209
- maxY
210
- } = metrics;
211
- var x = getOrThrow(allColumnXs, hoverSelectColumn);
212
- var columnWidth = getOrThrow(allColumnWidths, hoverSelectColumn);
213
- context.fillStyle = theme.linkerColumnHoverBackgroundColor;
214
- context.fillRect(x, 0, columnWidth, maxY);
215
- }
216
- drawMouseRowHover(context, state) {
217
- var {
218
- isSelectingColumn
219
- } = state;
220
- if (!isSelectingColumn) {
221
- super.drawMouseRowHover(context, state);
222
- }
223
- }
224
- drawScrim(state) {
225
- var {
226
- context,
227
- loadingScrimProgress,
228
- metrics,
229
- theme
230
- } = state;
231
- if (loadingScrimProgress == null) {
232
- return;
233
- }
234
- var {
235
- width,
236
- height,
237
- gridY
238
- } = metrics;
239
- var {
240
- scrimBlurSize,
241
- scrimColor
242
- } = theme;
243
- context.save();
244
-
245
- // Use global composite so we can change the underlying layer to grayscale
246
- context.globalCompositeOperation = 'color';
247
- context.filter = "blur(".concat(scrimBlurSize, "px)");
248
- if (scrimColor != null) {
249
- context.fillStyle = scrimColor;
250
- }
251
-
252
- // Clip the path so the top edge is hard edge, bottom edge is soft/blurry
253
- context.beginPath();
254
- context.rect(0, gridY, width, height - gridY);
255
- context.clip();
256
-
257
- // Extend the edges beyond the clip area so they're hard edges
258
- context.fillRect(-scrimBlurSize, -scrimBlurSize + gridY, scrimBlurSize * 2 + width, (scrimBlurSize * 2 + (height - gridY)) * loadingScrimProgress);
259
-
260
- // add an overlay of the scrim color to darken things a bit
261
- context.globalCompositeOperation = 'overlay';
262
- context.filter = "blur(".concat(scrimBlurSize, "px) opacity(15%)");
263
- context.fillRect(-scrimBlurSize, -scrimBlurSize + gridY, scrimBlurSize * 2 + width, (scrimBlurSize * 2 + (height - gridY)) * loadingScrimProgress);
264
- context.restore();
265
- }
266
- drawColumnHeaders(context, state) {
267
- super.drawColumnHeaders(context, state);
268
- var {
269
- theme,
270
- metrics,
271
- model,
272
- reverseType
273
- } = state;
274
- var {
275
- columnHeaderHeight
276
- } = metrics;
277
- this.drawFilterHeaders(context, state);
278
- if (columnHeaderHeight <= 0) {
279
- return;
280
- }
281
- var {
282
- sort
283
- } = model;
284
- // if there is only one sort bar, it is interior to the header to save space
285
- if (sort.length === 1) {
286
- var hasReverse = reverseType !== TableUtils.REVERSE_TYPE.NONE;
287
- var color;
288
- if (hasReverse) {
289
- color = theme.headerReverseBarColor;
290
- } else {
291
- color = theme.headerSortBarColor;
292
- }
293
- this.drawHeaderBar(context, state, color, hasReverse ? theme.reverseHeaderBarHeight : theme.sortHeaderBarHeight);
294
- } else if (sort.length > 1) {
295
- // if there's multiple bars, the sort is interior to header
296
- // and the reverse claims space in the table
297
- if (
298
- // has table reverse
299
- reverseType !== TableUtils.REVERSE_TYPE.NONE) {
300
- this.drawHeaderBar(context, state, theme.headerReverseBarColor, theme.reverseHeaderBarHeight, false);
301
- }
302
- this.drawHeaderBar(context, state, theme.headerSortBarColor, theme.sortHeaderBarHeight);
303
- }
304
- }
305
- drawHeaderBar(context, state, color, barHeight) {
306
- var interior = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;
307
- var {
308
- theme,
309
- metrics,
310
- model
311
- } = state;
312
- var {
313
- columnHeaderHeight,
314
- width
315
- } = metrics;
316
- // Draw casing with 1 pixel above and below the bar,
317
- // 1px falls on the existing split between grid/headers
318
- // so don't need to be accounnted for in math elsewhere
319
- var offset = 0;
320
- if (!interior) {
321
- offset = barHeight;
322
- }
323
- context.fillStyle = theme.headerBarCasingColor;
324
- context.fillRect(0, model.columnHeaderMaxDepth * columnHeaderHeight - barHeight - 2 + offset, width, barHeight + 2);
325
- context.fillStyle = color;
326
- context.fillRect(0, model.columnHeaderMaxDepth * columnHeaderHeight - barHeight - 1 + offset, width, barHeight);
327
- }
328
- drawColumnHeadersAtDepth(context, state, range, boundsProp, depth) {
329
- var {
330
- metrics,
331
- model,
332
- isMenuShown
333
- } = state;
334
- var {
335
- columnHeaderMaxDepth
336
- } = model;
337
- var {
338
- width
339
- } = metrics;
340
- var bounds = _objectSpread(_objectSpread({}, boundsProp), {}, {
341
- maxX: depth === columnHeaderMaxDepth - 1 && boundsProp.maxX === width ? width - (isMenuShown ? 0 : 30) // Account for the menu button
342
- : boundsProp.maxX
343
- });
344
- super.drawColumnHeadersAtDepth(context, state, range, bounds, depth);
345
- }
346
- drawColumnHeaderAtIndex(context, state, index, bounds) {
347
- var _model$columns$modelC, _fontWidths$get;
348
- super.drawColumnHeaderAtIndex(context, state, index, bounds);
349
- var {
350
- metrics,
351
- model,
352
- theme
353
- } = state;
354
- var {
355
- modelColumns,
356
- allColumnWidths,
357
- allColumnXs,
358
- gridX,
359
- columnHeaderHeight,
360
- fontWidths
361
- } = metrics;
362
- var {
363
- headerHorizontalPadding
364
- } = theme;
365
- var columnWidth = getOrThrow(allColumnWidths, index, 0);
366
- var columnX = getOrThrow(allColumnXs, index) + gridX;
367
- var modelColumn = modelColumns.get(index);
368
- if (modelColumn == null) {
369
- return;
370
- }
371
- var columnName = (_model$columns$modelC = model.columns[modelColumn]) === null || _model$columns$modelC === void 0 ? void 0 : _model$columns$modelC.name;
372
- if (columnName == null) {
373
- return;
374
- }
375
- var sort = TableUtils.getSortForColumn(model.sort, columnName);
376
- if (!sort) {
377
- return;
378
- }
379
- var icon = this.getSortIcon(sort);
380
- if (!icon) {
381
- return;
382
- }
383
- var text = model.textForColumnHeader(modelColumn);
384
- if (text === undefined) {
385
- return;
386
- }
387
- var fontWidth = (_fontWidths$get = fontWidths.get(context.font)) !== null && _fontWidths$get !== void 0 ? _fontWidths$get : DEFAULT_FONT_WIDTH;
388
- assertNotNull(fontWidth);
389
- var textWidth = text.length * fontWidth;
390
- var textRight = gridX + columnX + textWidth + headerHorizontalPadding;
391
- var {
392
- maxX
393
- } = bounds;
394
- maxX -= headerHorizontalPadding;
395
- var defaultX = gridX + columnX + columnWidth - headerHorizontalPadding - 1;
396
- var x = textRight > maxX ? textRight + 1 : Math.min(maxX, defaultX);
397
- var yOffset = sort.direction === TableUtils.sortDirection.ascending ? -6 : -12;
398
- var y = columnHeaderHeight * 0.5 + yOffset;
399
- context.save();
400
- context.beginPath();
401
- context.rect(columnX, 0, columnWidth, columnHeaderHeight);
402
- context.clip();
403
- context.fillStyle = theme.headerSortBarColor;
404
- context.translate(x, y);
405
- context.fill(icon);
406
- context.restore();
407
- }
408
- drawFilterHeaders(context, state) {
409
- var {
410
- isFilterBarShown,
411
- quickFilters,
412
- advancedFilters
413
- } = state;
414
- if (isFilterBarShown) {
415
- this.drawExpandedFilterHeaders(context, state);
416
- } else if (quickFilters != null && quickFilters.size > 0 || advancedFilters != null && advancedFilters.size > 0) {
417
- this.drawCollapsedFilterHeaders(context, state);
418
- }
419
- }
420
- drawExpandedFilterHeaders(context, state) {
421
- var {
422
- metrics,
423
- model,
424
- theme,
425
- quickFilters,
426
- advancedFilters
427
- } = state;
428
- var {
429
- filterBarHeight
430
- } = theme;
431
- if (filterBarHeight <= 0) {
432
- return;
433
- }
434
- var {
435
- gridX,
436
- gridY,
437
- maxX,
438
- modelColumns,
439
- visibleColumns,
440
- allColumnWidths,
441
- allColumnXs
442
- } = metrics;
443
- var columnHeaderHeight = gridY - filterBarHeight;
444
- context.save();
445
- context.font = theme.font;
446
- context.textAlign = 'left';
447
- if (quickFilters != null && quickFilters.size > 0 || advancedFilters != null && advancedFilters.size > 0) {
448
- // fill style if a fiter is set on any column
449
- context.fillStyle = theme.filterBarExpandedActiveBackgroundColor;
450
- } else {
451
- // fill style with no filters set
452
- context.fillStyle = theme.filterBarExpandedBackgroundColor;
453
- }
454
-
455
- // Draw the background
456
- context.fillRect(gridX, columnHeaderHeight, maxX, filterBarHeight - 1);
457
-
458
- // Draw the bottom border
459
- context.fillStyle = theme.headerBarCasingColor;
460
- context.fillRect(gridX, columnHeaderHeight + filterBarHeight - 1, maxX, 1);
461
-
462
- // Draw the filter input boxes
463
- var y1 = columnHeaderHeight;
464
- context.strokeStyle = theme.filterBarSeparatorColor;
465
- context.beginPath();
466
- for (var i = 0; i < visibleColumns.length; i += 1) {
467
- var column = visibleColumns[i];
468
- var modelColumn = getOrThrow(modelColumns, column);
469
- var columnX = getOrThrow(allColumnXs, column);
470
- var columnWidth = getOrThrow(allColumnWidths, column);
471
- if (model.isFilterable(modelColumn) && columnWidth > 0) {
472
- var x1 = gridX + (columnX !== null && columnX !== void 0 ? columnX : 0);
473
- context.rect(x1 + 0.5, y1 + 0.5, columnWidth, filterBarHeight - 2); // 1 for the border, 1 for the casing
474
- }
475
- }
476
-
477
- context.stroke();
478
- for (var _i = 0; _i < visibleColumns.length; _i += 1) {
479
- var _column = visibleColumns[_i];
480
- var _columnWidth = getOrThrow(allColumnWidths, _column);
481
- var _columnX = getOrThrow(allColumnXs, _column);
482
- var x = _columnX + gridX;
483
- this.drawExpandedFilterHeader(context, state, _column, x, _columnWidth);
484
- }
485
- context.restore();
486
- }
487
- drawExpandedFilterHeader(context, state, column, columnX, columnWidth) {
488
- if (columnWidth <= 0) {
489
- return;
490
- }
491
- var {
492
- metrics,
493
- theme,
494
- quickFilters,
495
- advancedFilters
496
- } = state;
497
- var {
498
- modelColumns,
499
- gridY
500
- } = metrics;
501
- var {
502
- filterBarHeight,
503
- filterBarExpandedActiveCellBackgroundColor,
504
- filterBarErrorColor,
505
- filterBarHorizontalPadding,
506
- headerColor
507
- } = theme;
508
- var columnHeaderHeight = gridY - filterBarHeight;
509
- var modelColumn = modelColumns.get(column);
510
- if (modelColumn === undefined) return;
511
- var quickFilter = quickFilters.get(modelColumn);
512
- var advancedFilter = advancedFilters.get(modelColumn);
513
- if (quickFilter == null && advancedFilter == null) {
514
- return;
515
- }
516
- var text = null;
517
- if (quickFilter != null) {
518
- var {
519
- text: filterText
520
- } = quickFilter;
521
- text = filterText;
522
- if (!text) {
523
- text = TableUtils.getFilterText(quickFilter.filter);
524
- }
525
- if (text != null) {
526
- var {
527
- fontWidths
528
- } = metrics;
529
- var fontWidth = fontWidths.get(context.font);
530
- if (fontWidth == null || fontWidth === 0) {
531
- fontWidth = context.measureText('8').width;
532
- if (!fontWidth) {
533
- fontWidth = 10;
534
- }
535
- }
536
- var maxLength = (columnWidth - filterBarHorizontalPadding * 2) / fontWidth;
537
- if (maxLength <= 0) {
538
- text = '';
539
- } else if (text.length > maxLength) {
540
- text = "".concat(text.substring(0, maxLength - 1), "\u2026");
541
- }
542
- }
543
- }
544
- context.save();
545
- var isFilterValid = IrisGridRenderer.isFilterValid(advancedFilter, quickFilter);
546
- if (isFilterValid && filterBarExpandedActiveCellBackgroundColor != null) {
547
- // draw active filter background inside cell
548
- context.fillStyle = filterBarExpandedActiveCellBackgroundColor;
549
- context.fillRect(columnX + 1,
550
- // +1 left border
551
- columnHeaderHeight + 1,
552
- // +1 top border
553
- columnWidth - 1,
554
- // -1 right border
555
- filterBarHeight - 3 // -3 top, bottom border and bottom casing
556
- );
557
- } else if (filterBarErrorColor != null) {
558
- // draw error box inside cell
559
- context.fillStyle = filterBarErrorColor;
560
- context.lineWidth = 2;
561
- context.strokeStyle = filterBarErrorColor;
562
- // Because this is drawn with a strokeRect, we have to add/subtract half the,
563
- // linewidth from each side to make interior, in addition to accounting for any borders/casings
564
- var rectLeft = columnX + 2; // 1 for strokeRect, 1 for border
565
- var rectTop = columnHeaderHeight + 2; // 1 for strokeRect, 1 for border
566
- var rectWidth = columnWidth - 3; // for 2 border and 1 for strokeRect
567
- var rectHeight = filterBarHeight - 5; // -2 for strokeRect, -3 for top, bottom border and bottom casing
568
- context.strokeRect(rectLeft, rectTop, rectWidth, rectHeight);
569
- }
570
- if (text != null && text !== '') {
571
- var textX = columnX + filterBarHorizontalPadding;
572
- var textY = columnHeaderHeight + filterBarHeight * 0.5 + 1; // + 1 for border
573
- context.fillStyle = headerColor;
574
- context.fillText(text, textX, textY);
575
- }
576
- context.restore();
577
- }
578
- drawCollapsedFilterHeaders(context, state) {
579
- var {
580
- metrics,
581
- theme
582
- } = state;
583
- var {
584
- headerSeparatorColor,
585
- filterBarCollapsedHeight
586
- } = theme;
587
- if (filterBarCollapsedHeight <= 0) {
588
- return;
589
- }
590
- var {
591
- gridX,
592
- gridY,
593
- maxX,
594
- visibleColumns,
595
- allColumnWidths,
596
- allColumnXs
597
- } = metrics;
598
- var columnHeaderHeight = gridY - filterBarCollapsedHeight;
599
- context.save();
600
-
601
- // Draw the background of the collapsed filter bar
602
- context.fillStyle = headerSeparatorColor;
603
- context.fillRect(gridX, columnHeaderHeight, maxX, filterBarCollapsedHeight);
604
- for (var i = 0; i < visibleColumns.length; i += 1) {
605
- var column = visibleColumns[i];
606
- var columnWidth = allColumnWidths.get(column);
607
- var columnX = allColumnXs.get(column);
608
- if (columnX != null && columnWidth != null) {
609
- var x = columnX + gridX;
610
- // draw the collapsed cells
611
- this.drawCollapsedFilterHeader(context, state, column, x, columnWidth);
612
- }
613
- }
614
- context.restore();
615
- }
616
- drawCollapsedFilterHeader(context, state, column, columnX, columnWidth) {
617
- if (columnWidth <= 0) {
618
- return;
619
- }
620
- var {
621
- metrics,
622
- theme,
623
- quickFilters,
624
- advancedFilters
625
- } = state;
626
- var {
627
- modelColumns,
628
- gridY
629
- } = metrics;
630
- var modelColumn = modelColumns.get(column);
631
- if (modelColumn === undefined) return;
632
- var quickFilter = quickFilters.get(modelColumn);
633
- var advancedFilter = advancedFilters.get(modelColumn);
634
- var {
635
- filterBarCollapsedHeight,
636
- filterBarActiveColor,
637
- filterBarActiveBackgroundColor,
638
- filterBarErrorColor
639
- } = theme;
640
- context.save();
641
- var isFilterValid = IrisGridRenderer.isFilterValid(advancedFilter, quickFilter);
642
- if (filterBarActiveBackgroundColor != null && quickFilter == null && advancedFilter == null) {
643
- context.fillStyle = filterBarActiveBackgroundColor;
644
- } else if (filterBarActiveColor != null && isFilterValid) {
645
- context.fillStyle = filterBarActiveColor;
646
- } else if (filterBarErrorColor != null) {
647
- context.fillStyle = filterBarErrorColor;
648
- }
649
- var x = columnX + 1; // for gap between columns
650
- var y = gridY - filterBarCollapsedHeight;
651
- var rectWidth = columnWidth - 1; // for gap between columns
652
- var rectHeight = filterBarCollapsedHeight - 1; // for casing bottom
653
- context.fillRect(x, y, rectWidth, rectHeight);
654
- context.restore();
655
- }
656
- drawRowFooters(context, state) {
657
- var {
658
- metrics,
659
- model,
660
- mouseX,
661
- mouseY,
662
- theme
663
- } = state;
664
- var {
665
- gridY,
666
- gridX,
667
- maxX,
668
- modelRows,
669
- floatingTopHeight,
670
- floatingBottomHeight,
671
- floatingRows,
672
- rowFooterWidth,
673
- height,
674
- horizontalBarHeight,
675
- verticalBarWidth,
676
- allRowHeights,
677
- allRowYs,
678
- width
679
- } = metrics;
680
- // Only draw the footers on the floating rows
681
- if (rowFooterWidth <= 0 || floatingRows.length === 0) {
682
- return;
683
- }
684
- var {
685
- cellHorizontalPadding,
686
- floatingGridRowColor,
687
- floatingRowBackgroundColors,
688
- headerColor,
689
- rowHoverBackgroundColor
690
- } = theme;
691
- context.translate(gridX, gridY);
692
- context.beginPath();
693
- var x = Math.min(maxX, width - rowFooterWidth - verticalBarWidth - gridX);
694
- context.fillStyle = floatingRowBackgroundColors;
695
- if (floatingTopHeight > 0) {
696
- context.rect(x, 0, rowFooterWidth, floatingTopHeight);
697
- }
698
- if (floatingBottomHeight > 0) {
699
- context.rect(x, height - gridY - horizontalBarHeight - floatingBottomHeight, rowFooterWidth, floatingBottomHeight);
700
- }
701
- context.fill();
702
- var mouseRow = mouseX != null && mouseY != null && mouseX >= gridX && mouseX <= maxX + rowFooterWidth ? GridUtils.getRowAtY(mouseY, metrics) : null;
703
- if (rowHoverBackgroundColor != null && mouseRow !== null && floatingRows.includes(mouseRow)) {
704
- context.fillStyle = rowHoverBackgroundColor;
705
- var y = allRowYs.get(mouseRow);
706
- var rowHeight = allRowHeights.get(mouseRow);
707
- assertNotNull(y);
708
- assertNotNull(rowHeight);
709
- context.fillRect(x, y, rowFooterWidth, rowHeight);
710
- }
711
- context.beginPath();
712
- if (floatingGridRowColor != null) {
713
- context.strokeStyle = floatingGridRowColor;
714
- }
715
- if (floatingTopHeight > 0) {
716
- context.moveTo(x + 0.5, 0.5);
717
- context.lineTo(x + 0.5, floatingTopHeight - 0.5);
718
- }
719
- if (floatingBottomHeight > 0) {
720
- var _y = height - gridY - horizontalBarHeight - floatingBottomHeight;
721
- context.moveTo(x - 0.5, _y + 0.5);
722
- context.lineTo(x - 0.5, _y + floatingBottomHeight - 0.5);
723
- }
724
- context.stroke();
725
- context.fillStyle = headerColor;
726
- context.textAlign = 'left';
727
- var textX = x + cellHorizontalPadding;
728
- for (var i = 0; i < floatingRows.length; i += 1) {
729
- var row = floatingRows[i];
730
- var _rowHeight = allRowHeights.get(row);
731
- var rowY = allRowYs.get(row);
732
- var modelRow = modelRows.get(row);
733
- if (rowY != null && _rowHeight != null && modelRow != null) {
734
- var textY = rowY + _rowHeight * 0.5;
735
- context.fillText(model.textForRowFooter(modelRow), textX, textY);
736
- }
737
- }
738
- context.translate(-gridX, -gridY);
739
- }
740
- getExpandButtonPosition(_ref2, depth) {
741
- var {
742
- mouseX,
743
- mouseY,
744
- metrics,
745
- theme
746
- } = _ref2;
747
- var NULL_POSITION = {
748
- left: null,
749
- top: null,
750
- width: null,
751
- height: null
752
- };
753
- if (mouseX == null || mouseY == null || depth == null || !metrics) {
754
- return NULL_POSITION;
755
- }
756
- var {
757
- rowHeight,
758
- left,
759
- top
760
- } = GridUtils.getCellInfoFromXY(mouseX, mouseY, metrics);
761
- assertNotNull(left);
762
- assertNotNull(rowHeight);
763
- assertNotNull(top);
764
- var {
765
- cellHorizontalPadding
766
- } = theme;
767
- var width = EXPAND_ICON_SIZE + 2 * cellHorizontalPadding;
768
- var buttonLeft = Math.max(left + EXPAND_ICON_SIZE * depth, metrics.gridX);
769
- var buttonTop = metrics.gridY + top;
770
- return {
771
- left: buttonLeft,
772
- top: buttonTop,
773
- width,
774
- height: rowHeight
775
- };
776
- }
777
- }
778
- export default IrisGridRenderer;
779
- //# sourceMappingURL=IrisGridRenderer.js.map