@deephaven/iris-grid 0.50.1-beta.5 → 0.51.1-alpha-theme-fix.1

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 (123) hide show
  1. package/dist/AdvancedFilterCreator.js.map +1 -1
  2. package/dist/AdvancedFilterCreatorFilterItem.d.ts +2 -2
  3. package/dist/AdvancedFilterCreatorFilterItem.d.ts.map +1 -1
  4. package/dist/AdvancedFilterCreatorFilterItem.js.map +1 -1
  5. package/dist/AdvancedFilterCreatorSelectValue.d.ts +4 -4
  6. package/dist/AdvancedFilterCreatorSelectValue.d.ts.map +1 -1
  7. package/dist/AdvancedFilterCreatorSelectValue.js.map +1 -1
  8. package/dist/AdvancedFilterCreatorSelectValueList.d.ts +4 -4
  9. package/dist/AdvancedFilterCreatorSelectValueList.d.ts.map +1 -1
  10. package/dist/AdvancedFilterCreatorSelectValueList.js.map +1 -1
  11. package/dist/ColumnHeaderGroup.js.map +1 -1
  12. package/dist/ColumnStatistics.js.map +1 -1
  13. package/dist/CrossColumnSearch.js.map +1 -1
  14. package/dist/FilterInputField.js.map +1 -1
  15. package/dist/GotoRow.js.map +1 -1
  16. package/dist/IrisGrid.js +12 -0
  17. package/dist/IrisGrid.js.map +1 -1
  18. package/dist/IrisGridBottomBar.js.map +1 -1
  19. package/dist/IrisGridCellOverflowModal.js.map +1 -1
  20. package/dist/IrisGridCellRendererUtils.js.map +1 -1
  21. package/dist/IrisGridCopyHandler.js.map +1 -1
  22. package/dist/IrisGridDataBarCellRenderer.js.map +1 -1
  23. package/dist/IrisGridIcons.js.map +1 -1
  24. package/dist/IrisGridMetricCalculator.js.map +1 -1
  25. package/dist/IrisGridModel.d.ts +2 -3
  26. package/dist/IrisGridModel.d.ts.map +1 -1
  27. package/dist/IrisGridModel.js +138 -0
  28. package/dist/IrisGridModel.js.map +1 -1
  29. package/dist/IrisGridModelFactory.js.map +1 -1
  30. package/dist/IrisGridModelUpdater.js.map +1 -1
  31. package/dist/IrisGridPartitionSelector.js.map +1 -1
  32. package/dist/IrisGridProxyModel.js.map +1 -1
  33. package/dist/IrisGridRenderer.js.map +1 -1
  34. package/dist/IrisGridTableModel.js.map +1 -1
  35. package/dist/IrisGridTableModelTemplate.js +9 -0
  36. package/dist/IrisGridTableModelTemplate.js.map +1 -1
  37. package/dist/IrisGridTestUtils.js.map +1 -1
  38. package/dist/IrisGridTextCellRenderer.js.map +1 -1
  39. package/dist/IrisGridTheme.js.map +1 -1
  40. package/dist/IrisGridTreeTableModel.js.map +1 -1
  41. package/dist/IrisGridUtils.js +3 -0
  42. package/dist/IrisGridUtils.js.map +1 -1
  43. package/dist/MissingKeyError.js.map +1 -1
  44. package/dist/PartitionSelectorSearch.js.map +1 -1
  45. package/dist/PendingDataBottomBar.js.map +1 -1
  46. package/dist/TableViewportUpdater.js +6 -1
  47. package/dist/TableViewportUpdater.js.map +1 -1
  48. package/dist/ToastBottomBar.js.map +1 -1
  49. package/dist/TreeTableViewportUpdater.js.map +1 -1
  50. package/dist/format-context-menus/CustomFormatAction.js.map +1 -1
  51. package/dist/format-context-menus/DateTimeFormatContextMenu.js.map +1 -1
  52. package/dist/format-context-menus/DecimalFormatContextMenu.js.map +1 -1
  53. package/dist/format-context-menus/FormatContextMenuUtils.js.map +1 -1
  54. package/dist/format-context-menus/IntegerFormatContextMenu.js.map +1 -1
  55. package/dist/key-handlers/ClearFilterKeyHandler.js.map +1 -1
  56. package/dist/key-handlers/CopyKeyHandler.js.map +1 -1
  57. package/dist/key-handlers/ReverseKeyHandler.js.map +1 -1
  58. package/dist/mousehandlers/IrisGridCellOverflowMouseHandler.js.map +1 -1
  59. package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.js.map +1 -1
  60. package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.js.map +1 -1
  61. package/dist/mousehandlers/IrisGridContextMenuHandler.js.map +1 -1
  62. package/dist/mousehandlers/IrisGridDataSelectMouseHandler.js.map +1 -1
  63. package/dist/mousehandlers/IrisGridFilterMouseHandler.js.map +1 -1
  64. package/dist/mousehandlers/IrisGridRowTreeMouseHandler.js.map +1 -1
  65. package/dist/mousehandlers/IrisGridSortMouseHandler.js.map +1 -1
  66. package/dist/mousehandlers/IrisGridTokenMouseHandler.js.map +1 -1
  67. package/dist/mousehandlers/PendingMouseHandler.js +5 -0
  68. package/dist/mousehandlers/PendingMouseHandler.js.map +1 -1
  69. package/dist/sidebar/AdvancedSettings.js.map +1 -1
  70. package/dist/sidebar/AdvancedSettingsMenu.js.map +1 -1
  71. package/dist/sidebar/ChartBuilder.js.map +1 -1
  72. package/dist/sidebar/CustomColumnBuilder.js.map +1 -1
  73. package/dist/sidebar/CustomColumnInput.js.map +1 -1
  74. package/dist/sidebar/DownloadServiceWorkerUtils.js.map +1 -1
  75. package/dist/sidebar/InputEditor.js.map +1 -1
  76. package/dist/sidebar/RollupRows.d.ts +4 -4
  77. package/dist/sidebar/RollupRows.d.ts.map +1 -1
  78. package/dist/sidebar/RollupRows.js.map +1 -1
  79. package/dist/sidebar/SelectDistinctBuilder.js.map +1 -1
  80. package/dist/sidebar/TableCsvExporter.js.map +1 -1
  81. package/dist/sidebar/TableSaver.js +5 -0
  82. package/dist/sidebar/TableSaver.js.map +1 -1
  83. package/dist/sidebar/aggregations/AggregationEdit.js.map +1 -1
  84. package/dist/sidebar/aggregations/AggregationUtils.js.map +1 -1
  85. package/dist/sidebar/aggregations/Aggregations.js.map +1 -1
  86. package/dist/sidebar/conditional-formatting/ColumnFormatEditor.js.map +1 -1
  87. package/dist/sidebar/conditional-formatting/ConditionEditor.js.map +1 -1
  88. package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.js.map +1 -1
  89. package/dist/sidebar/conditional-formatting/ConditionalFormattingAPIUtils.js.map +1 -1
  90. package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js.map +1 -1
  91. package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js.map +1 -1
  92. package/dist/sidebar/conditional-formatting/RowFormatEditor.js.map +1 -1
  93. package/dist/sidebar/conditional-formatting/StyleEditor.js.map +1 -1
  94. package/dist/sidebar/icons/BarIcon.js.map +1 -1
  95. package/dist/sidebar/icons/FormatColumnWhereIcon.js.map +1 -1
  96. package/dist/sidebar/icons/FormatRowWhereIcon.js.map +1 -1
  97. package/dist/sidebar/icons/HistogramIcon.js.map +1 -1
  98. package/dist/sidebar/icons/LineIcon.js.map +1 -1
  99. package/dist/sidebar/icons/PieIcon.js.map +1 -1
  100. package/dist/sidebar/icons/ScatterIcon.js.map +1 -1
  101. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.js.map +1 -1
  102. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilderUtils.js.map +1 -1
  103. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingGroup.d.ts +4 -4
  104. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingGroup.d.ts.map +1 -1
  105. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingGroup.js.map +1 -1
  106. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingItem.d.ts +7 -7
  107. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingItem.d.ts.map +1 -1
  108. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingItem.js.map +1 -1
  109. package/dist/sidebar/visibility-ordering-builder/sortable-tree/PointerSensorWithInteraction.js.map +1 -1
  110. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTree.d.ts +7 -5
  111. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTree.d.ts.map +1 -1
  112. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTree.js.map +1 -1
  113. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeInner.d.ts +5 -3
  114. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeInner.d.ts.map +1 -1
  115. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeInner.js.map +1 -1
  116. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeItem.js.map +1 -1
  117. package/dist/sidebar/visibility-ordering-builder/sortable-tree/TreeItem.d.ts +5 -5
  118. package/dist/sidebar/visibility-ordering-builder/sortable-tree/TreeItem.d.ts.map +1 -1
  119. package/dist/sidebar/visibility-ordering-builder/sortable-tree/TreeItem.js.map +1 -1
  120. package/dist/sidebar/visibility-ordering-builder/sortable-tree/keyboardCoordinates.js.map +1 -1
  121. package/dist/sidebar/visibility-ordering-builder/sortable-tree/types.js.map +1 -1
  122. package/dist/sidebar/visibility-ordering-builder/sortable-tree/utilities.js.map +1 -1
  123. package/package.json +15 -15
@@ -1 +1 @@
1
- {"version":3,"file":"IrisGridContextMenuHandler.js","names":["React","FontAwesomeIcon","dhFilterFilled","vsRemove","vsCheck","vsFilter","debounce","ContextActions","ContextActionUtils","GLOBAL_SHORTCUTS","GridMouseHandler","GridRenderer","isEditableGridModel","isExpandableGridModel","TableColumnFormatter","DateTimeColumnFormatter","TableUtils","Log","assertNotNull","copyToClipboard","DateTimeFormatContextMenu","DecimalFormatContextMenu","IntegerFormatContextMenu","SHORTCUTS","log","module","DEBOUNCE_UPDATE_FORMAT","CONTEXT_MENU_DATE_FORMAT","IrisGridContextMenuHandler","getQuickFilterCondition","columnFilter","newColumnFilter","operator","and","or","getQuickFilterText","filterText","newFilterText","getOperatorAsText","getRowOptionFormatted","command","cellValue","len","truncate","length","constructor","irisGrid","dh","debouncedUpdateCustomFormat","handleFormatSelection","componentWillUnmount","flush","getHeaderActions","modelIndex","gridPoint","column","visibleIndex","model","props","columns","actions","metrics","reverseType","quickFilters","advancedFilters","searchFilter","state","theme","getTheme","filterIconColor","filterBarActiveColor","contextMenuSortIconColor","contextMenuReverseIconColor","modelSort","sort","columnSort","getSortForColumn","name","hasReverse","REVERSE_TYPE","NONE","userColumnWidths","isColumnHidden","values","some","columnWidth","isColumnFreezable","getColumnHeaderParentGroup","undefined","hasExpandableRows","isColumnFrozen","isColumnSortable","push","title","group","GROUP_HIDE_COLUMNS","action","hideColumnByVisibleIndex","disabled","unFreezeColumnByColumnName","freezeColumnByColumnName","order","showAllColumns","icon","iconColor","shortcut","TABLE","TOGGLE_QUICK_FILTER","GROUP_FILTER","toggleFilterBar","get","handleAdvancedMenuOpened","CLEAR_FILTERS","clearAllFilters","size","GROUP_SORT","sortByActions","additionalSortActions","sortColumn","COLUMN_SORT_DIRECTION","none","isReversible","REVERSE","reverse","POST_SORT","GROUP_COPY","textForColumnHeader","catch","e","error","isDateType","type","GROUP_FORMAT","dateFormatActions","isNumberType","numberFormatActions","getCellActions","modelColumn","grid","columnIndex","row","rowIndex","canCopy","modelRow","getModelRow","value","valueForCell","valueText","textForCell","settings","dateFilterFormatter","timeZone","showTimeZone","showTSeparator","defaultDateTimeFormatString","previewFilterFormatter","isFilterable","filterMenu","nullFilterActions","groups","high","emptyStringFilterActions","isBooleanType","booleanFilterActions","isCharType","numberValueText","String","fromCharCode","numberFilterActions","dateValueText","format","previewValue","dateFilterActions","stringFilterActions","isRowExpandable","expandingColumn","groupedColumns","depthForRow","cellText","isRowExpanded","GROUP_EXPAND_COLLAPSE","setRowExpanded","isExpandAllAvailable","expandAll","collapseAll","gotoRow","GOTO_ROW","GROUP_GOTO","toggleGotoRow","copyCell","getNumberValueEqualsFilter","filter","Number","POSITIVE_INFINITY","FilterCondition","invoke","greaterThan","FilterValue","ofNumber","NEGATIVE_INFINITY","lessThan","isNaN","filterValue","getFilterValueForNumberOrChar","eq","columnType","ofString","onContextMenu","event","y","columnHeaderDepth","getModelColumn","isFilterBarShown","selectedRanges","columnHeaderHeight","gridY","columnHeaderMaxDepth","removeColumnFilter","has","COPY","copyRanges","isEditable","GROUP_EDIT","deleteRanges","gridWrapper","triggerMenu","clientX","clientY","formatter","selectedFormat","getColumnFormat","formatOptions","getOptions","description","isSelected","i","getColumnIndexByName","isDecimalType","isIntegerType","TYPE_CONTEXT_CUSTOM","quickFilter","newQuickFilter","text","quickFilterValueText","escapeQuickTextFilter","menuElement","setQuickFilter","low","notEq","isNull","not","contains","isFinite","valueFilter","greaterThanOrEqualTo","lessThanOrEqualTo","isTrue","isFalse","sortActions","ascending","checkColumnSort","descending","color","isMacPlatform","direction","isAbs"],"sources":["../../src/mousehandlers/IrisGridContextMenuHandler.tsx"],"sourcesContent":["/* eslint class-methods-use-this: \"off\" */\nimport React from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {\n dhFilterFilled,\n vsRemove,\n vsCheck,\n vsFilter,\n IconDefinition,\n} from '@deephaven/icons';\nimport debounce from 'lodash.debounce';\nimport {\n ContextAction,\n ContextActions,\n ContextActionUtils,\n GLOBAL_SHORTCUTS,\n ResolvableContextAction,\n} from '@deephaven/components';\nimport {\n EventHandlerResult,\n Grid,\n GridMouseHandler,\n GridPoint,\n GridRenderer,\n isEditableGridModel,\n isExpandableGridModel,\n ModelIndex,\n} from '@deephaven/grid';\nimport type {\n Column,\n dh as DhType,\n FilterCondition,\n FilterValue,\n Sort,\n} from '@deephaven/jsapi-types';\nimport {\n TableColumnFormatter,\n DateTimeColumnFormatter,\n TableUtils,\n TableColumnFormat,\n IntegerColumnFormat,\n SortDirection,\n} from '@deephaven/jsapi-utils';\nimport Log from '@deephaven/log';\nimport type { DebouncedFunc } from 'lodash';\nimport { assertNotNull, copyToClipboard } from '@deephaven/utils';\nimport {\n DateTimeFormatContextMenu,\n DecimalFormatContextMenu,\n IntegerFormatContextMenu,\n} from '../format-context-menus';\nimport './IrisGridContextMenuHandler.scss';\nimport SHORTCUTS from '../IrisGridShortcuts';\nimport IrisGrid from '../IrisGrid';\nimport { QuickFilter } from '../CommonTypes';\n\nconst log = Log.module('IrisGridContextMenuHandler');\n\nconst DEBOUNCE_UPDATE_FORMAT = 150;\nconst CONTEXT_MENU_DATE_FORMAT = 'yyyy-MM-dd HH:mm:ss.SSSSSSSSS';\n\n/**\n * Used to eat the mouse event in the bottom right corner of the scroll bar\n */\nclass IrisGridContextMenuHandler extends GridMouseHandler {\n static GROUP_EDIT = ContextActions.groups.high + 10;\n\n static GROUP_HIDE_COLUMNS = ContextActions.groups.high + 25;\n\n static GROUP_FILTER = ContextActions.groups.high + 50;\n\n static GROUP_EXPAND_COLLAPSE = ContextActions.groups.high + 55;\n\n static GROUP_GOTO = ContextActions.groups.high + 60;\n\n static GROUP_SORT = ContextActions.groups.high + 75;\n\n static GROUP_COPY = ContextActions.groups.high + 100;\n\n static GROUP_FORMAT = ContextActions.groups.high + 150;\n\n static COLUMN_SORT_DIRECTION = {\n ascending: 'ASC',\n descending: 'DESC',\n none: null,\n } as const;\n\n /**\n * Get filter condition for quick filter and combines with a new filter using the operator specified,\n * returns new filter if no operator supplied.\n * @param columnFilter\n * @param newColumnFilter\n * @param operator\n */\n static getQuickFilterCondition(\n columnFilter: FilterCondition | null | undefined,\n newColumnFilter: FilterCondition,\n operator?: '&&' | '||' | null\n ): FilterCondition {\n if (columnFilter && operator === '&&') {\n return columnFilter.and(newColumnFilter);\n }\n if (columnFilter && operator === '||') {\n return columnFilter.or(newColumnFilter);\n }\n return newColumnFilter;\n }\n\n /**\n * combines filter text with operator if declared\n * @param filterText\n * @param newFilterText\n * @param operator\n */\n static getQuickFilterText(\n filterText: string | null | undefined,\n newFilterText: string,\n operator?: '&&' | '||' | null\n ): string {\n return operator && filterText != null\n ? `${filterText} ${operator} ${newFilterText}`\n : newFilterText;\n }\n\n /**\n * Converts operator to text string,\n */\n static getOperatorAsText(operator: '&&' | '||'): 'And' | 'Or' {\n return operator === '&&' ? 'And' : 'Or';\n }\n\n static getRowOptionFormatted(\n command: string,\n cellValue: string,\n len = 30\n ): string {\n return `${command} \"${GridRenderer.truncate(\n cellValue,\n len - command.length - 3\n )}\"`;\n }\n\n irisGrid: IrisGrid;\n\n debouncedUpdateCustomFormat: DebouncedFunc<\n (modelIndex: number, selectedFormat: TableColumnFormat | null) => void\n >;\n\n constructor(irisGrid: IrisGrid, dh: DhType) {\n super();\n\n this.debouncedUpdateCustomFormat = debounce(\n irisGrid.handleFormatSelection,\n DEBOUNCE_UPDATE_FORMAT\n );\n\n this.dh = dh;\n this.irisGrid = irisGrid;\n }\n\n componentWillUnmount(): void {\n this.debouncedUpdateCustomFormat.flush();\n }\n\n dh: DhType;\n\n getHeaderActions(\n modelIndex: ModelIndex,\n gridPoint: GridPoint\n ): ContextAction[] {\n const { irisGrid } = this;\n const { column: visibleIndex } = gridPoint;\n assertNotNull(visibleIndex);\n const { model } = irisGrid.props;\n const { columns } = model;\n const column = columns[modelIndex];\n\n const actions = [] as ContextAction[];\n\n const {\n metrics,\n reverseType,\n quickFilters,\n advancedFilters,\n searchFilter,\n } = irisGrid.state;\n const theme = irisGrid.getTheme();\n assertNotNull(metrics);\n const {\n filterIconColor,\n filterBarActiveColor,\n contextMenuSortIconColor,\n contextMenuReverseIconColor,\n } = theme;\n\n const modelSort = model.sort;\n const columnSort = TableUtils.getSortForColumn(modelSort, column.name);\n const hasReverse = reverseType !== TableUtils.REVERSE_TYPE.NONE;\n const { userColumnWidths } = metrics;\n const isColumnHidden = [...userColumnWidths.values()].some(\n columnWidth => columnWidth === 0\n );\n const isColumnFreezable =\n model.getColumnHeaderParentGroup(modelIndex, 0) === undefined &&\n !(isExpandableGridModel(model) && model.hasExpandableRows);\n const isColumnFrozen = model.isColumnFrozen(modelIndex);\n const isColumnSortable = model.isColumnSortable(modelIndex);\n actions.push({\n title: 'Hide Column',\n group: IrisGridContextMenuHandler.GROUP_HIDE_COLUMNS,\n action: () => {\n this.irisGrid.hideColumnByVisibleIndex(visibleIndex);\n },\n });\n actions.push({\n title: isColumnFrozen ? 'Unfreeze Column' : 'Freeze Column',\n group: IrisGridContextMenuHandler.GROUP_HIDE_COLUMNS,\n disabled: !isColumnFreezable,\n action: () => {\n if (isColumnFrozen) {\n this.irisGrid.unFreezeColumnByColumnName(column.name);\n } else {\n this.irisGrid.freezeColumnByColumnName(column.name);\n }\n },\n order: 10,\n });\n actions.push({\n title: 'Show All Columns',\n group: IrisGridContextMenuHandler.GROUP_HIDE_COLUMNS,\n action: () => {\n this.irisGrid.showAllColumns();\n },\n disabled: !isColumnHidden,\n });\n actions.push({\n title: 'Quick Filters',\n icon: vsRemove,\n iconColor: filterBarActiveColor,\n shortcut: SHORTCUTS.TABLE.TOGGLE_QUICK_FILTER,\n group: IrisGridContextMenuHandler.GROUP_FILTER,\n order: 10,\n action: () => {\n this.irisGrid.toggleFilterBar(visibleIndex);\n },\n });\n actions.push({\n title: 'Advanced Filters',\n icon: advancedFilters.get(modelIndex) ? dhFilterFilled : vsFilter,\n iconColor: filterIconColor,\n group: IrisGridContextMenuHandler.GROUP_FILTER,\n order: 20,\n action: () => {\n this.irisGrid.handleAdvancedMenuOpened(visibleIndex);\n },\n });\n actions.push({\n title: 'Clear Table Filters',\n group: IrisGridContextMenuHandler.GROUP_FILTER,\n order: 40,\n // this just displays the shortcut, the actual listener is in irisgrid handleKeyDown\n shortcut: SHORTCUTS.TABLE.CLEAR_FILTERS,\n action: () => {\n this.irisGrid.clearAllFilters();\n },\n disabled: !(\n quickFilters.size > 0 ||\n advancedFilters.size > 0 ||\n searchFilter != null\n ),\n });\n actions.push({\n title: 'Sort by',\n icon: vsRemove,\n iconColor: contextMenuSortIconColor,\n group: IrisGridContextMenuHandler.GROUP_SORT,\n order: 10,\n actions: this.sortByActions(column, modelIndex, columnSort),\n disabled: !isColumnSortable,\n });\n actions.push({\n title: 'Add Additional Sort',\n /**\n * disable conditions:\n * 1. table is sorted only by this column\n * 2. table is only reversed\n * 3. 1 & 2 combined\n * 4. table has no sort\n * reverse is a type of sort, so needs to be accounted for in exclusions\n * */\n disabled:\n (columnSort && modelSort.length === 1) ||\n (hasReverse && modelSort.length === 1) ||\n (columnSort && hasReverse && modelSort.length === 2) ||\n modelSort.length === 0 ||\n !isColumnSortable,\n group: IrisGridContextMenuHandler.GROUP_SORT,\n order: 20,\n actions: this.additionalSortActions(column, modelIndex),\n });\n actions.push({\n title: 'Clear Table Sorting',\n disabled:\n // reverse is a type of sort, but special and needs to be exluded despite being part of model.sort\n modelSort.length === 0 || (hasReverse && modelSort.length === 1),\n group: IrisGridContextMenuHandler.GROUP_SORT,\n action: () => {\n this.irisGrid.sortColumn(\n visibleIndex,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.none\n );\n },\n order: 30,\n });\n actions.push({\n title:\n reverseType === TableUtils.REVERSE_TYPE.NONE\n ? 'Reverse Table'\n : 'Clear Reverse Table',\n icon: vsRemove,\n iconColor: contextMenuReverseIconColor,\n group: IrisGridContextMenuHandler.GROUP_SORT,\n order: 40,\n disabled: !model.isReversible,\n // this just displays the shortcut, the actual listener is in irisgrid handleKeyDown\n shortcut: SHORTCUTS.TABLE.REVERSE,\n action: () => {\n if (reverseType === TableUtils.REVERSE_TYPE.NONE) {\n this.irisGrid.reverse(TableUtils.REVERSE_TYPE.POST_SORT);\n } else {\n this.irisGrid.reverse(TableUtils.REVERSE_TYPE.NONE);\n }\n },\n });\n actions.push({\n title: 'Copy Column Name',\n group: IrisGridContextMenuHandler.GROUP_COPY,\n action: () => {\n copyToClipboard(model.textForColumnHeader(modelIndex) ?? '').catch(e =>\n log.error('Unable to copy header', e)\n );\n },\n });\n\n if (TableUtils.isDateType(column.type)) {\n actions.push({\n title: 'Date/Time Format',\n group: IrisGridContextMenuHandler.GROUP_FORMAT,\n actions: this.dateFormatActions(column),\n });\n } else if (TableUtils.isNumberType(column.type)) {\n actions.push({\n title: 'Number Format',\n group: IrisGridContextMenuHandler.GROUP_FORMAT,\n actions: this.numberFormatActions(column) ?? undefined,\n });\n }\n return actions;\n }\n\n getCellActions(\n modelColumn: number | undefined | null,\n grid: Grid,\n gridPoint: GridPoint\n ): ContextAction[] {\n assertNotNull(modelColumn);\n const { dh, irisGrid } = this;\n const { column: columnIndex, row: rowIndex } = gridPoint;\n const { model, canCopy } = irisGrid.props;\n const { columns } = model;\n const modelRow = irisGrid.getModelRow(rowIndex);\n assertNotNull(modelRow);\n const value = model.valueForCell(modelColumn, modelRow);\n\n const valueText = model.textForCell(modelColumn, modelRow);\n const column = columns[modelColumn];\n\n const actions = [] as ContextAction[];\n\n const { quickFilters } = irisGrid.state;\n const theme = irisGrid.getTheme();\n const { filterIconColor } = theme;\n const { settings } = irisGrid.props;\n\n const dateFilterFormatter = new DateTimeColumnFormatter(dh, {\n timeZone: settings?.timeZone,\n showTimeZone: false,\n showTSeparator: true,\n defaultDateTimeFormatString: CONTEXT_MENU_DATE_FORMAT,\n });\n const previewFilterFormatter = new DateTimeColumnFormatter(dh, {\n timeZone: settings?.timeZone,\n showTimeZone: settings?.showTimeZone,\n showTSeparator: settings?.showTSeparator,\n defaultDateTimeFormatString: CONTEXT_MENU_DATE_FORMAT,\n });\n\n if (column == null || rowIndex == null) return actions;\n\n // grid data area context menu options\n if (model.isFilterable(modelColumn)) {\n // cell data area contextmenu options\n const filterMenu = {\n title: 'Filter by Value',\n icon: vsRemove,\n iconColor: filterIconColor,\n group: IrisGridContextMenuHandler.GROUP_FILTER,\n order: 10,\n actions: [],\n } as {\n title: string;\n icon: IconDefinition;\n iconColor: string;\n group: number;\n order: number;\n actions: ContextAction[];\n };\n\n if (value == null) {\n // null gets a special menu\n if (quickFilters.get(modelColumn)) {\n filterMenu.actions.push({\n title: 'And',\n actions: this.nullFilterActions(\n column,\n quickFilters.get(modelColumn),\n '&&'\n ),\n order: 2,\n group: ContextActions.groups.high,\n });\n }\n filterMenu.actions.push(...this.nullFilterActions(column));\n } else if (value === '') {\n // empty string gets a special menu\n if (quickFilters.get(modelColumn)) {\n filterMenu.actions.push({\n title: 'And',\n\n actions: this.emptyStringFilterActions(\n column,\n quickFilters.get(modelColumn),\n '&&'\n ),\n order: 2,\n group: ContextActions.groups.high,\n });\n }\n filterMenu.actions.push(...this.emptyStringFilterActions(column));\n } else if (TableUtils.isBooleanType(column.type)) {\n // boolean should have OR condition, and handles it's own null menu options\n if (quickFilters.get(modelColumn)) {\n filterMenu.actions.push({\n title: 'Or',\n actions: this.booleanFilterActions(\n column,\n valueText,\n quickFilters.get(modelColumn),\n '||'\n ),\n order: 2,\n group: ContextActions.groups.high,\n });\n }\n filterMenu.actions.push(\n ...this.booleanFilterActions(column, valueText)\n );\n } else if (\n TableUtils.isNumberType(column.type) ||\n TableUtils.isCharType(column.type)\n ) {\n // Chars get treated like numbers in terms of which filters are available\n assertNotNull(modelColumn);\n // We want to show the full unformatted value if it's a number, so user knows which value they are matching\n // If it's a Char we just show the char\n const numberValueText = TableUtils.isCharType(column.type)\n ? String.fromCharCode(value as number)\n : `${value}`;\n\n if (quickFilters.get(modelColumn)) {\n filterMenu.actions.push({\n title: 'And',\n actions: this.numberFilterActions(\n column,\n numberValueText,\n value,\n quickFilters.get(modelColumn),\n '&&'\n ),\n order: 2,\n group: ContextActions.groups.high,\n });\n }\n filterMenu.actions.push(\n ...this.numberFilterActions(\n column,\n numberValueText,\n value,\n quickFilters.get(modelColumn)\n )\n );\n } else if (TableUtils.isDateType(column.type)) {\n const dateValueText = dateFilterFormatter.format(value as Date);\n const previewValue = previewFilterFormatter.format(value as Date);\n if (quickFilters.get(modelColumn)) {\n filterMenu.actions.push({\n title: 'And',\n actions: this.dateFilterActions(\n column,\n dateValueText,\n previewValue,\n value,\n quickFilters.get(modelColumn),\n '&&'\n ),\n order: 2,\n group: ContextActions.groups.high,\n });\n }\n filterMenu.actions.push(\n ...this.dateFilterActions(\n column,\n dateValueText,\n previewValue,\n value,\n quickFilters.get(modelColumn)\n )\n );\n } else {\n if (quickFilters.get(modelColumn)) {\n filterMenu.actions.push({\n title: 'And',\n\n actions: this.stringFilterActions(\n column,\n valueText,\n value,\n quickFilters.get(modelColumn),\n '&&'\n ),\n order: 2,\n group: ContextActions.groups.high,\n });\n }\n filterMenu.actions.push(\n ...this.stringFilterActions(column, valueText, value)\n );\n }\n\n if (filterMenu.actions != null && filterMenu.actions.length > 0) {\n actions.push(filterMenu);\n }\n }\n\n // Expand/Collapse options\n if (isExpandableGridModel(model) && model.isRowExpandable(modelRow)) {\n // If there are grouped columns, then it is a rollup\n // For rollups, the column number will be the depth minus one\n const expandingColumn =\n model.groupedColumns.length > 0 ? model.depthForRow(modelRow) - 1 : 0;\n const cellValue = model.valueForCell(expandingColumn, modelRow);\n const cellText =\n cellValue == null\n ? 'null'\n : model.textForCell(expandingColumn, modelRow);\n\n actions.push({\n title: IrisGridContextMenuHandler.getRowOptionFormatted(\n model.isRowExpanded(modelRow) ? 'Collapse' : 'Expand',\n cellText\n ),\n group: IrisGridContextMenuHandler.GROUP_EXPAND_COLLAPSE,\n order: 10,\n action: () => {\n model.setRowExpanded(modelRow, !model.isRowExpanded(modelRow));\n },\n });\n\n if (model.isExpandAllAvailable === true) {\n actions.push({\n title: IrisGridContextMenuHandler.getRowOptionFormatted(\n 'Expand All in',\n cellText\n ),\n group: IrisGridContextMenuHandler.GROUP_EXPAND_COLLAPSE,\n order: 20,\n action: () => {\n model.setRowExpanded(modelRow, true, true);\n },\n });\n }\n }\n\n if (\n isExpandableGridModel(model) &&\n model.hasExpandableRows &&\n model.isExpandAllAvailable === true\n ) {\n actions.push({\n title: 'Expand Entire Table',\n group: IrisGridContextMenuHandler.GROUP_EXPAND_COLLAPSE,\n order: 30,\n action: () => {\n model.expandAll();\n },\n });\n\n actions.push({\n title: 'Collapse Entire Table',\n group: IrisGridContextMenuHandler.GROUP_EXPAND_COLLAPSE,\n order: 40,\n action: () => {\n model.collapseAll();\n },\n });\n }\n\n const gotoRow = {\n title: 'Go to',\n iconColor: filterIconColor,\n shortcut: SHORTCUTS.TABLE.GOTO_ROW,\n group: IrisGridContextMenuHandler.GROUP_GOTO,\n order: 10,\n action: () =>\n this.irisGrid.toggleGotoRow(`${rowIndex + 1}`, `${value}`, column.name),\n };\n actions.push(gotoRow);\n\n if (canCopy) {\n actions.push({\n title: 'Copy Cell',\n group: IrisGridContextMenuHandler.GROUP_COPY,\n order: 10,\n action: () => {\n irisGrid.copyCell(columnIndex, rowIndex);\n },\n });\n\n actions.push({\n title: 'Copy Cell Unformatted',\n group: IrisGridContextMenuHandler.GROUP_COPY,\n order: 20,\n action: () => {\n irisGrid.copyCell(columnIndex, rowIndex, true);\n },\n });\n }\n\n return actions;\n }\n\n /**\n * Gets an equality filter for the provided numeric value\n * @param column The column to make the filter for\n * @param value The value to get the equality filter for\n */\n getNumberValueEqualsFilter(column: Column, value: number): FilterCondition {\n const { dh } = this;\n const columnFilter = column.filter();\n if (value === Number.POSITIVE_INFINITY) {\n return dh.FilterCondition.invoke('isInf', columnFilter).and(\n columnFilter.greaterThan(dh.FilterValue.ofNumber(0))\n );\n }\n if (value === Number.NEGATIVE_INFINITY) {\n return dh.FilterCondition.invoke('isInf', columnFilter).and(\n columnFilter.lessThan(dh.FilterValue.ofNumber(0))\n );\n }\n if (Number.isNaN(value)) {\n return dh.FilterCondition.invoke('isNaN', columnFilter);\n }\n\n const filterValue = this.getFilterValueForNumberOrChar(column.type, value);\n return columnFilter.eq(filterValue);\n }\n\n getFilterValueForNumberOrChar(\n columnType: string,\n value: unknown\n ): FilterValue {\n const { dh } = this;\n return TableUtils.isCharType(columnType)\n ? dh.FilterValue.ofString(String.fromCharCode(value as number))\n : dh.FilterValue.ofNumber(value);\n }\n\n onContextMenu(\n gridPoint: GridPoint,\n grid: Grid,\n event: React.MouseEvent<Element, MouseEvent>\n ): EventHandlerResult {\n const { irisGrid } = this;\n const {\n y,\n column: columnIndex,\n row: rowIndex,\n columnHeaderDepth,\n } = gridPoint;\n const modelColumn = irisGrid.getModelColumn(columnIndex);\n const modelRow = irisGrid.getModelRow(rowIndex);\n\n const { model, canCopy } = irisGrid.props;\n const { columns } = model;\n\n const {\n metrics,\n isFilterBarShown,\n quickFilters,\n advancedFilters,\n selectedRanges,\n } = irisGrid.state;\n\n assertNotNull(metrics);\n\n const { columnHeaderHeight, gridY, columnHeaderMaxDepth } = metrics;\n\n const actions: ResolvableContextAction[] = [];\n\n if (modelColumn != null && modelRow != null) {\n const value = model.valueForCell(modelColumn, modelRow);\n\n const valueText = model.textForCell(modelColumn, modelRow);\n const column = columns[modelColumn];\n\n const { onContextMenu } = irisGrid.props;\n\n if (column != null) {\n actions.push(\n ...onContextMenu({\n model,\n value,\n valueText,\n column,\n rowIndex,\n columnIndex,\n modelRow,\n modelColumn,\n })\n );\n }\n }\n\n if (modelColumn != null && model.isFilterable(modelColumn)) {\n // Clear column filter should still be available after last row\n // And should be available in both header and body context menus\n actions.push({\n title: 'Clear Column Filter',\n group: IrisGridContextMenuHandler.GROUP_FILTER,\n order: 30,\n action: () => {\n this.irisGrid.removeColumnFilter(modelColumn);\n },\n disabled: !(\n quickFilters.has(modelColumn) || advancedFilters.has(modelColumn)\n ),\n });\n }\n\n if (\n isFilterBarShown\n ? y <= gridY\n : y <= columnHeaderHeight * columnHeaderMaxDepth &&\n columnHeaderDepth === 0\n ) {\n // grid header context menu options\n if (modelColumn != null) {\n actions.push(...this.getHeaderActions(modelColumn, gridPoint));\n }\n } else {\n // grid body context menu options\n if (modelColumn != null && modelRow != null) {\n actions.push(...this.getCellActions(modelColumn, grid, gridPoint));\n }\n\n // blank space context menu options\n if (canCopy && selectedRanges.length > 0) {\n actions.push({\n title: 'Copy Selection',\n shortcut: GLOBAL_SHORTCUTS.COPY,\n group: IrisGridContextMenuHandler.GROUP_COPY,\n order: 30,\n action: () => {\n irisGrid.copyRanges(selectedRanges);\n },\n });\n\n actions.push({\n title: 'Copy Selection w/ Headers',\n group: IrisGridContextMenuHandler.GROUP_COPY,\n order: 40,\n action: () => {\n irisGrid.copyRanges(selectedRanges, true);\n },\n });\n }\n\n if (\n isEditableGridModel(model) &&\n model.isEditable &&\n selectedRanges.length > 0\n ) {\n actions.push({\n title: 'Delete Selected Rows',\n group: IrisGridContextMenuHandler.GROUP_EDIT,\n order: 50,\n action: () => {\n this.irisGrid.deleteRanges(selectedRanges);\n },\n });\n }\n }\n\n if (actions.length === 0) {\n return false;\n }\n\n assertNotNull(irisGrid.gridWrapper);\n\n ContextActions.triggerMenu(\n irisGrid.gridWrapper,\n event.clientX,\n event.clientY,\n actions\n );\n return true;\n }\n\n dateFormatActions(column: Column): ContextAction[] {\n const { model } = this.irisGrid.props;\n const { formatter } = model;\n const selectedFormat = formatter.getColumnFormat(column.type, column.name);\n\n const formatOptions = DateTimeFormatContextMenu.getOptions(\n formatter,\n selectedFormat\n );\n\n const actions = [];\n\n for (let i = 0; i < formatOptions.length; i += 1) {\n const { description, format, group, isSelected, title } =\n formatOptions[i];\n actions.push({\n title,\n description,\n icon: isSelected ? vsCheck : undefined,\n group,\n order: i,\n action: () => {\n const modelIndex = model.getColumnIndexByName(column.name);\n assertNotNull(modelIndex);\n this.irisGrid.handleFormatSelection(modelIndex, format);\n },\n });\n }\n return actions;\n }\n\n numberFormatActions(column: Column): ContextAction[] | null {\n const { model } = this.irisGrid.props;\n const { formatter } = model;\n const { dh } = this;\n const selectedFormat = formatter.getColumnFormat(\n column.type,\n column.name\n ) as IntegerColumnFormat;\n let formatOptions;\n\n const columnIndex = model.getColumnIndexByName(column.name);\n if (TableUtils.isDecimalType(column.type)) {\n formatOptions = DecimalFormatContextMenu.getOptions(\n dh,\n selectedFormat,\n format => {\n assertNotNull(columnIndex);\n this.debouncedUpdateCustomFormat(columnIndex, format);\n }\n );\n } else if (TableUtils.isIntegerType(column.type)) {\n formatOptions = IntegerFormatContextMenu.getOptions(\n dh,\n selectedFormat,\n format => {\n assertNotNull(columnIndex);\n this.debouncedUpdateCustomFormat(columnIndex, format);\n }\n );\n } else {\n log.error('Invalid column type in numberFormatActions');\n return null;\n }\n\n const actions = [];\n\n for (let i = 0; i < formatOptions.length; i += 1) {\n const { format, isSelected } = formatOptions[i];\n actions.push({\n ...formatOptions[i],\n icon: isSelected ? vsCheck : undefined,\n order: i,\n action: () => {\n if (\n columnIndex === undefined &&\n format &&\n format.type === TableColumnFormatter.TYPE_CONTEXT_CUSTOM\n ) {\n return;\n }\n assertNotNull(columnIndex);\n this.irisGrid.handleFormatSelection(columnIndex, format);\n },\n });\n }\n return actions;\n }\n\n stringFilterActions(\n column: Column,\n valueText: string | null,\n value?: unknown,\n quickFilter?: QuickFilter,\n operator?: '&&' | '||' | null\n ): ContextAction[] {\n const { dh } = this;\n const filterValue = dh.FilterValue.ofString(value);\n let newQuickFilter:\n | {\n filter: null | FilterCondition | undefined;\n text: string | null;\n }\n | undefined\n | null = quickFilter;\n if (!newQuickFilter) {\n newQuickFilter = { filter: null, text: null };\n }\n const { filter, text: filterText } = newQuickFilter;\n const actions = [];\n const { model } = this.irisGrid.props;\n const columnIndex = model.getColumnIndexByName(column.name);\n\n const quickFilterValueText: string | null =\n TableUtils.escapeQuickTextFilter(valueText);\n\n assertNotNull(columnIndex);\n\n actions.push({\n menuElement: (\n <div className=\"iris-grid-filter-menu-item-value\">\n {operator\n ? IrisGridContextMenuHandler.getOperatorAsText(operator)\n : ''}{' '}\n &quot;{valueText}&quot;\n </div>\n ),\n order: 1,\n group: ContextActions.groups.high,\n });\n\n actions.push({\n title: 'text is exactly',\n description: `Show only rows where ${column.name} is ${value} (case sensitive)`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().eq(filterValue),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `${quickFilterValueText}`,\n operator\n )\n );\n },\n order: 10,\n group: ContextActions.groups.low,\n });\n actions.push({\n title: 'text is not exactly',\n description: `Show only rows where ${column.name} is not ${valueText} (case sensitive)`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().notEq(filterValue),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `!=${quickFilterValueText}`,\n operator\n )\n );\n },\n order: 20,\n group: ContextActions.groups.low,\n });\n actions.push({\n title: `text contains`,\n description: `Show only rows where ${column.name} contains ${valueText}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column\n .filter()\n .isNull()\n .not()\n .and(column.filter().contains(filterValue)),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `~${quickFilterValueText}`,\n operator\n )\n );\n },\n order: 30,\n group: ContextActions.groups.low,\n });\n actions.push({\n title: 'text does not contain',\n description: `Show only rows where ${column.name} does not contain ${value}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column\n .filter()\n .isNull()\n .or(column.filter().contains(filterValue).not()),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `!~${quickFilterValueText}`,\n operator\n )\n );\n },\n order: 40,\n group: ContextActions.groups.low,\n });\n actions.push({\n title: 'text starts with',\n description: `Show only rows where ${column.name} starts with ${valueText}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column\n .filter()\n .isNull()\n .not()\n .and(column.filter().invoke('startsWith', filterValue)),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `${quickFilterValueText}*`,\n operator\n )\n );\n },\n order: 50,\n group: ContextActions.groups.low,\n });\n actions.push({\n title: 'text ends with',\n description: `Show only rows where ${column.name} ends with ${valueText}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column\n .filter()\n .isNull()\n .not()\n .and(column.filter().invoke('endsWith', filterValue)),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `*${quickFilterValueText}`,\n operator\n )\n );\n },\n order: 60,\n group: ContextActions.groups.low,\n });\n return actions;\n }\n\n numberFilterActions(\n column: Column,\n valueText: string,\n value: unknown,\n quickFilter?: QuickFilter | null,\n operator?: '&&' | '||' | null\n ): ContextAction[] {\n const filterValue = this.getFilterValueForNumberOrChar(column.type, value);\n let filter: FilterCondition | null = null;\n let filterText: string | null = null;\n if (quickFilter) {\n filter = quickFilter.filter;\n filterText = quickFilter.text;\n }\n const actions = [];\n const isFinite =\n value !== Number.POSITIVE_INFINITY &&\n value !== Number.NEGATIVE_INFINITY &&\n !Number.isNaN(value);\n const { model } = this.irisGrid.props;\n const columnIndex = model.getColumnIndexByName(column.name);\n assertNotNull(columnIndex);\n actions.push({\n menuElement: (\n <div className=\"iris-grid-filter-menu-item-value\">\n {operator\n ? IrisGridContextMenuHandler.getOperatorAsText(operator)\n : ''}{' '}\n &quot;{valueText}&quot;\n </div>\n ),\n order: 1,\n group: ContextActions.groups.high,\n });\n actions.push({\n title: 'is equal to',\n description: `Show only rows where ${column.name} is ${valueText}`,\n action: () => {\n const valueFilter = this.getNumberValueEqualsFilter(\n column,\n value as number\n );\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n valueFilter,\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `=${valueText}`,\n operator\n )\n );\n },\n order: 10,\n group: ContextActions.groups.low,\n });\n actions.push({\n title: 'is not equal to',\n description: `Show only rows where ${column.name} is not ${valueText}`,\n action: () => {\n const valueFilter = this.getNumberValueEqualsFilter(\n column,\n value as number\n ).not();\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n valueFilter,\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `!=${valueText}`,\n operator\n )\n );\n },\n order: 20,\n group: ContextActions.groups.low,\n });\n\n // IDS-6092 Less/greater than filters don't make sense for Infinite/NaN\n // TODO (DH-11799): These char filters should work in Bard, with the merge for DH-11040: https://gitlab.eng.illumon.com/illumon/iris/merge_requests/5801\n // They do not work in Powell though, so disable them.\n if (isFinite && !TableUtils.isCharType(column.type)) {\n actions.push({\n title: 'greater than',\n description: `Show only rows where ${column.name} is greater than ${valueText}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().greaterThan(filterValue),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `>${valueText}`,\n operator\n )\n );\n },\n order: 30,\n group: ContextActions.groups.low,\n });\n actions.push({\n title: 'greater than or equal to',\n description: `Show only rows where ${column.name} is greater than or equal to ${valueText}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().greaterThanOrEqualTo(filterValue),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `>=${valueText}`,\n operator\n )\n );\n },\n order: 40,\n group: ContextActions.groups.low,\n });\n actions.push({\n title: 'less than',\n description: `Show only rows where ${column.name} is less than ${valueText}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().lessThan(filterValue),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `<${valueText}`,\n operator\n )\n );\n },\n order: 50,\n group: ContextActions.groups.low,\n });\n actions.push({\n title: 'less than or equal to',\n description: `Show only rows where ${column.name} is less than or equal to ${valueText}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().lessThanOrEqualTo(filterValue),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `<=${valueText}`,\n operator\n )\n );\n },\n order: 60,\n group: ContextActions.groups.low,\n });\n }\n return actions;\n }\n\n booleanFilterActions(\n column: Column,\n valueText: string | null,\n quickFilter?: QuickFilter | null,\n operator?: '&&' | '||' | null\n ): ContextAction[] {\n const actions: ContextAction[] = [];\n\n const { model } = this.irisGrid.props;\n const { filter, text: filterText } = quickFilter || {};\n const columnIndex = model.getColumnIndexByName(column.name);\n assertNotNull(columnIndex);\n\n actions.push({\n menuElement: (\n <div className=\"iris-grid-filter-menu-item-value\">\n {operator\n ? IrisGridContextMenuHandler.getOperatorAsText(operator)\n : ''}{' '}\n &quot;{valueText ?? 'null'}&quot;\n </div>\n ),\n order: 1,\n group: ContextActions.groups.high,\n });\n\n actions.push({\n title: 'true',\n description: `Show only rows where ${column.name} is true`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().isTrue(),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n 'true',\n operator\n )\n );\n },\n order: 10,\n group: ContextActions.groups.low,\n });\n actions.push({\n title: 'false',\n description: `Show only rows where ${column.name} is false`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().isFalse(),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n 'false',\n operator\n )\n );\n },\n order: 20,\n group: ContextActions.groups.low,\n });\n actions.push({\n title: 'is null',\n description: `Show only rows where ${column.name} is null`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().isNull(),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n 'null',\n operator\n )\n );\n },\n order: 30,\n group: ContextActions.groups.low,\n });\n\n actions.push({\n title: 'is not null',\n description: `Show only rows where ${column.name} is not null`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().isNull().not(),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n '!null',\n operator\n )\n );\n },\n order: 40,\n group: ContextActions.groups.low,\n });\n\n return actions;\n }\n\n dateFilterActions(\n column: Column,\n valueText: string,\n previewValue: unknown,\n value: unknown,\n quickFilter?: QuickFilter | null,\n operator?: '&&' | '||' | null\n ): ContextAction[] {\n const { dh } = this;\n const filterValue = dh.FilterValue.ofNumber(value);\n\n let filter: FilterCondition | null = null;\n let filterText: string | null = null;\n if (quickFilter) {\n filter = quickFilter.filter;\n filterText = quickFilter.text;\n }\n const { model } = this.irisGrid.props;\n const columnIndex = model.getColumnIndexByName(column.name);\n assertNotNull(columnIndex);\n\n const actions = [];\n\n actions.push({\n menuElement: (\n <div className=\"iris-grid-filter-menu-item-value\">\n {operator\n ? IrisGridContextMenuHandler.getOperatorAsText(operator)\n : ''}{' '}\n &quot;{previewValue}&quot;\n </div>\n ),\n order: 1,\n group: ContextActions.groups.high,\n });\n actions.push({\n title: 'date is',\n description: `Show only rows where ${column.name} is ${previewValue}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().eq(filterValue),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `=${valueText}`,\n operator\n )\n );\n },\n order: 10,\n group: ContextActions.groups.low,\n });\n actions.push({\n title: 'date is not',\n description: `Show only rows where ${column.name} is not ${previewValue}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().notEq(filterValue),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `!=${valueText}`,\n operator\n )\n );\n },\n order: 20,\n group: ContextActions.groups.low,\n });\n actions.push({\n title: 'date is before',\n description: `Show only rows where ${column.name} is before ${previewValue}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().lessThan(filterValue),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `<${valueText}`,\n operator\n )\n );\n },\n order: 30,\n group: ContextActions.groups.low,\n });\n actions.push({\n title: 'date is before or equal',\n description: `Show only rows where ${column.name} is before or equal to ${previewValue}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().lessThanOrEqualTo(filterValue),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `<=${valueText}`,\n operator\n )\n );\n },\n order: 40,\n group: ContextActions.groups.low,\n });\n actions.push({\n title: 'date is after',\n description: `Show only rows where ${column.name} is greater than ${previewValue}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().greaterThan(filterValue),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `>${valueText}`,\n operator\n )\n );\n },\n order: 50,\n group: ContextActions.groups.low,\n });\n actions.push({\n title: 'date is after or equal',\n description: `Show only rows where ${column.name} is after or equal to ${previewValue}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().greaterThanOrEqualTo(filterValue),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `>=${valueText}`,\n operator\n )\n );\n },\n order: 60,\n group: ContextActions.groups.low,\n });\n return actions;\n }\n\n emptyStringFilterActions(\n column: Column,\n quickFilter?: QuickFilter,\n operator?: '&&' | '||' | null\n ): ContextAction[] {\n const { dh } = this;\n const filterValue = dh.FilterValue.ofString('');\n let newQuickFilter:\n | {\n filter: null | FilterCondition | undefined;\n text: string | null;\n }\n | undefined\n | null = quickFilter;\n if (!newQuickFilter) {\n newQuickFilter = { filter: null, text: null };\n }\n const { filter, text: filterText } = newQuickFilter;\n const actions = [];\n const { model } = this.irisGrid.props;\n const columnIndex = model.getColumnIndexByName(column.name);\n assertNotNull(columnIndex);\n\n actions.push({\n menuElement: (\n <div className=\"iris-grid-filter-menu-item-value\">\n {operator\n ? IrisGridContextMenuHandler.getOperatorAsText(operator)\n : ''}{' '}\n <i className=\"text-muted\">empty</i>\n </div>\n ),\n order: 1,\n group: ContextActions.groups.high,\n });\n\n actions.push({\n title: 'is empty string',\n description: `Show only rows where ${column.name} is empty`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().eq(filterValue),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `=`,\n operator\n )\n );\n },\n order: 10,\n group: ContextActions.groups.low,\n });\n actions.push({\n title: 'is not empty string',\n description: `Show only rows where ${column.name} is not empty`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().notEq(filterValue),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `!=`,\n operator\n )\n );\n },\n order: 20,\n group: ContextActions.groups.low,\n });\n\n return actions;\n }\n\n nullFilterActions(\n column: Column,\n quickFilter?: QuickFilter,\n operator?: '&&' | '||' | null\n ): ContextAction[] {\n let filter: FilterCondition | null = null;\n let filterText: string | null = null;\n if (quickFilter) {\n filter = quickFilter.filter;\n filterText = quickFilter.text;\n }\n const actions = [];\n const { model } = this.irisGrid.props;\n const columnIndex = model.getColumnIndexByName(column.name);\n assertNotNull(columnIndex);\n\n actions.push({\n menuElement: (\n <div className=\"iris-grid-filter-menu-item-value\">\n {operator\n ? IrisGridContextMenuHandler.getOperatorAsText(operator)\n : ''}{' '}\n <i className=\"text-muted\">null</i>\n </div>\n ),\n order: 1,\n group: ContextActions.groups.high,\n });\n actions.push({\n title: 'is null',\n description: `Show only rows where ${column.name} is null`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().isNull(),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n 'null',\n operator\n )\n );\n },\n order: 10,\n group: ContextActions.groups.low,\n });\n actions.push({\n title: 'is not null',\n description: `Show only rows where ${column.name} is not null`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().isNull().not(),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n '!null',\n operator\n )\n );\n },\n order: 20,\n group: ContextActions.groups.low,\n });\n\n return actions;\n }\n\n sortByActions(\n column: Column,\n modelColumn: ModelIndex,\n columnSort: Sort | null\n ): ContextAction[] {\n const theme = this.irisGrid.getTheme();\n const { contextMenuSortIconColor } = theme;\n const sortActions = [\n {\n title: `${column.name} Ascending`,\n order: 10,\n action: () => {\n this.irisGrid.sortColumn(\n modelColumn,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.ascending\n );\n },\n icon: this.checkColumnSort(\n columnSort,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.ascending\n )\n ? vsRemove\n : undefined,\n iconColor: contextMenuSortIconColor,\n },\n {\n title: `${column.name} Descending`,\n order: 20,\n action: () => {\n this.irisGrid.sortColumn(\n modelColumn,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.descending\n );\n },\n icon: this.checkColumnSort(\n columnSort,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.descending\n )\n ? vsRemove\n : undefined,\n iconColor: contextMenuSortIconColor,\n },\n {\n title: `Remove Sort`,\n order: 50,\n action: () => {\n this.irisGrid.sortColumn(\n modelColumn,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.none,\n false,\n true\n );\n },\n disabled: !columnSort,\n },\n ];\n if (TableUtils.isNumberType(column.type)) {\n sortActions.push({\n title: `ABS(${column.name}) Ascending`,\n order: 30,\n action: () => {\n this.irisGrid.sortColumn(\n modelColumn,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.ascending,\n true\n );\n },\n icon: this.checkColumnSort(\n columnSort,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.ascending,\n true\n )\n ? vsRemove\n : undefined,\n iconColor: contextMenuSortIconColor,\n });\n sortActions.push({\n title: `ABS(${column.name}) Descending`,\n order: 40,\n action: () => {\n this.irisGrid.sortColumn(\n modelColumn,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.descending,\n true\n );\n },\n icon: this.checkColumnSort(\n columnSort,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.descending,\n true\n )\n ? vsRemove\n : undefined,\n iconColor: contextMenuSortIconColor,\n });\n }\n return sortActions;\n }\n\n additionalSortActions(\n column: Column,\n columnIndex: ModelIndex\n ): ContextAction[] {\n const theme = this.irisGrid.getTheme();\n const { contextMenuSortIconColor } = theme;\n const additionalSortActions = [\n {\n title: 'Add Sort By',\n menuElement: (\n <div className=\"btn-context-menu menu-title\">\n <span className=\"icon\">\n <FontAwesomeIcon\n icon={vsRemove}\n style={{ color: contextMenuSortIconColor ?? undefined }}\n />\n </span>\n <span className=\"title\">Add Additional Sort</span>\n <span className=\"shortcut\">\n {ContextActionUtils.isMacPlatform() ? '⌘Click' : 'Ctrl+Click'}\n </span>\n </div>\n ),\n order: 1,\n },\n {\n title: `${column.name} Ascending`,\n order: 10,\n action: () => {\n this.irisGrid.sortColumn(\n columnIndex,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.ascending,\n false,\n true\n );\n },\n },\n {\n title: `${column.name} Descending`,\n order: 20,\n action: () => {\n this.irisGrid.sortColumn(\n columnIndex,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.descending,\n false,\n true\n );\n },\n },\n ];\n if (TableUtils.isNumberType(column.type)) {\n additionalSortActions.push({\n title: `ABS(${column.name}) Ascending`,\n order: 30,\n action: () => {\n this.irisGrid.sortColumn(\n columnIndex,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.ascending,\n true,\n true\n );\n },\n });\n additionalSortActions.push({\n title: `ABS(${column.name}) Descending`,\n order: 40,\n action: () => {\n this.irisGrid.sortColumn(\n columnIndex,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.descending,\n true,\n true\n );\n },\n });\n }\n return additionalSortActions;\n }\n\n checkColumnSort(\n columnSort?: Sort | null,\n direction: SortDirection = null,\n isAbs = false\n ): boolean {\n if (!columnSort) {\n return false;\n }\n return columnSort.direction === direction && columnSort.isAbs === isAbs;\n }\n}\n\nexport default IrisGridContextMenuHandler;\n"],"mappings":"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"}
1
+ {"version":3,"file":"IrisGridContextMenuHandler.js","names":["React","FontAwesomeIcon","dhFilterFilled","vsRemove","vsCheck","vsFilter","debounce","ContextActions","ContextActionUtils","GLOBAL_SHORTCUTS","GridMouseHandler","GridRenderer","isEditableGridModel","isExpandableGridModel","TableColumnFormatter","DateTimeColumnFormatter","TableUtils","Log","assertNotNull","copyToClipboard","DateTimeFormatContextMenu","DecimalFormatContextMenu","IntegerFormatContextMenu","SHORTCUTS","jsxs","_jsxs","jsx","_jsx","log","module","DEBOUNCE_UPDATE_FORMAT","CONTEXT_MENU_DATE_FORMAT","IrisGridContextMenuHandler","getQuickFilterCondition","columnFilter","newColumnFilter","operator","and","or","getQuickFilterText","filterText","newFilterText","concat","getOperatorAsText","getRowOptionFormatted","command","cellValue","len","arguments","length","undefined","truncate","constructor","irisGrid","dh","_defineProperty","debouncedUpdateCustomFormat","handleFormatSelection","componentWillUnmount","flush","getHeaderActions","modelIndex","gridPoint","column","visibleIndex","model","props","columns","actions","metrics","reverseType","quickFilters","advancedFilters","searchFilter","state","theme","getTheme","filterIconColor","filterBarActiveColor","contextMenuSortIconColor","contextMenuReverseIconColor","modelSort","sort","columnSort","getSortForColumn","name","hasReverse","REVERSE_TYPE","NONE","userColumnWidths","isColumnHidden","values","some","columnWidth","isColumnFreezable","getColumnHeaderParentGroup","hasExpandableRows","isColumnFrozen","isColumnSortable","push","title","group","GROUP_HIDE_COLUMNS","action","hideColumnByVisibleIndex","disabled","unFreezeColumnByColumnName","freezeColumnByColumnName","order","showAllColumns","icon","iconColor","shortcut","TABLE","TOGGLE_QUICK_FILTER","GROUP_FILTER","toggleFilterBar","get","handleAdvancedMenuOpened","CLEAR_FILTERS","clearAllFilters","size","GROUP_SORT","sortByActions","additionalSortActions","sortColumn","COLUMN_SORT_DIRECTION","none","isReversible","REVERSE","reverse","POST_SORT","GROUP_COPY","_model$textForColumnH","textForColumnHeader","catch","e","error","isDateType","type","GROUP_FORMAT","dateFormatActions","isNumberType","_this$numberFormatAct","numberFormatActions","getCellActions","modelColumn","grid","columnIndex","row","rowIndex","canCopy","modelRow","getModelRow","value","valueForCell","valueText","textForCell","settings","dateFilterFormatter","timeZone","showTimeZone","showTSeparator","defaultDateTimeFormatString","previewFilterFormatter","isFilterable","filterMenu","nullFilterActions","groups","high","emptyStringFilterActions","isBooleanType","booleanFilterActions","isCharType","numberValueText","String","fromCharCode","numberFilterActions","dateValueText","format","previewValue","dateFilterActions","stringFilterActions","isRowExpandable","expandingColumn","groupedColumns","depthForRow","cellText","isRowExpanded","GROUP_EXPAND_COLLAPSE","setRowExpanded","isExpandAllAvailable","expandAll","collapseAll","gotoRow","GOTO_ROW","GROUP_GOTO","toggleGotoRow","copyCell","getNumberValueEqualsFilter","filter","Number","POSITIVE_INFINITY","FilterCondition","invoke","greaterThan","FilterValue","ofNumber","NEGATIVE_INFINITY","lessThan","isNaN","filterValue","getFilterValueForNumberOrChar","eq","columnType","ofString","onContextMenu","event","y","columnHeaderDepth","getModelColumn","isFilterBarShown","selectedRanges","columnHeaderHeight","gridY","columnHeaderMaxDepth","removeColumnFilter","has","COPY","copyRanges","isEditable","GROUP_EDIT","deleteRanges","gridWrapper","triggerMenu","clientX","clientY","_this","formatter","selectedFormat","getColumnFormat","formatOptions","getOptions","_loop","description","isSelected","i","getColumnIndexByName","_this2","isDecimalType","isIntegerType","_loop2","_objectSpread","TYPE_CONTEXT_CUSTOM","quickFilter","newQuickFilter","text","quickFilterValueText","escapeQuickTextFilter","menuElement","className","children","setQuickFilter","low","notEq","isNull","not","contains","isFinite","valueFilter","greaterThanOrEqualTo","lessThanOrEqualTo","isTrue","isFalse","sortActions","ascending","checkColumnSort","descending","style","color","isMacPlatform","direction","isAbs"],"sources":["../../src/mousehandlers/IrisGridContextMenuHandler.tsx"],"sourcesContent":["/* eslint class-methods-use-this: \"off\" */\nimport React from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {\n dhFilterFilled,\n vsRemove,\n vsCheck,\n vsFilter,\n IconDefinition,\n} from '@deephaven/icons';\nimport debounce from 'lodash.debounce';\nimport {\n ContextAction,\n ContextActions,\n ContextActionUtils,\n GLOBAL_SHORTCUTS,\n ResolvableContextAction,\n} from '@deephaven/components';\nimport {\n EventHandlerResult,\n Grid,\n GridMouseHandler,\n GridPoint,\n GridRenderer,\n isEditableGridModel,\n isExpandableGridModel,\n ModelIndex,\n} from '@deephaven/grid';\nimport type {\n Column,\n dh as DhType,\n FilterCondition,\n FilterValue,\n Sort,\n} from '@deephaven/jsapi-types';\nimport {\n TableColumnFormatter,\n DateTimeColumnFormatter,\n TableUtils,\n TableColumnFormat,\n IntegerColumnFormat,\n SortDirection,\n} from '@deephaven/jsapi-utils';\nimport Log from '@deephaven/log';\nimport type { DebouncedFunc } from 'lodash';\nimport { assertNotNull, copyToClipboard } from '@deephaven/utils';\nimport {\n DateTimeFormatContextMenu,\n DecimalFormatContextMenu,\n IntegerFormatContextMenu,\n} from '../format-context-menus';\nimport './IrisGridContextMenuHandler.scss';\nimport SHORTCUTS from '../IrisGridShortcuts';\nimport IrisGrid from '../IrisGrid';\nimport { QuickFilter } from '../CommonTypes';\n\nconst log = Log.module('IrisGridContextMenuHandler');\n\nconst DEBOUNCE_UPDATE_FORMAT = 150;\nconst CONTEXT_MENU_DATE_FORMAT = 'yyyy-MM-dd HH:mm:ss.SSSSSSSSS';\n\n/**\n * Used to eat the mouse event in the bottom right corner of the scroll bar\n */\nclass IrisGridContextMenuHandler extends GridMouseHandler {\n static GROUP_EDIT = ContextActions.groups.high + 10;\n\n static GROUP_HIDE_COLUMNS = ContextActions.groups.high + 25;\n\n static GROUP_FILTER = ContextActions.groups.high + 50;\n\n static GROUP_EXPAND_COLLAPSE = ContextActions.groups.high + 55;\n\n static GROUP_GOTO = ContextActions.groups.high + 60;\n\n static GROUP_SORT = ContextActions.groups.high + 75;\n\n static GROUP_COPY = ContextActions.groups.high + 100;\n\n static GROUP_FORMAT = ContextActions.groups.high + 150;\n\n static COLUMN_SORT_DIRECTION = {\n ascending: 'ASC',\n descending: 'DESC',\n none: null,\n } as const;\n\n /**\n * Get filter condition for quick filter and combines with a new filter using the operator specified,\n * returns new filter if no operator supplied.\n * @param columnFilter\n * @param newColumnFilter\n * @param operator\n */\n static getQuickFilterCondition(\n columnFilter: FilterCondition | null | undefined,\n newColumnFilter: FilterCondition,\n operator?: '&&' | '||' | null\n ): FilterCondition {\n if (columnFilter && operator === '&&') {\n return columnFilter.and(newColumnFilter);\n }\n if (columnFilter && operator === '||') {\n return columnFilter.or(newColumnFilter);\n }\n return newColumnFilter;\n }\n\n /**\n * combines filter text with operator if declared\n * @param filterText\n * @param newFilterText\n * @param operator\n */\n static getQuickFilterText(\n filterText: string | null | undefined,\n newFilterText: string,\n operator?: '&&' | '||' | null\n ): string {\n return operator && filterText != null\n ? `${filterText} ${operator} ${newFilterText}`\n : newFilterText;\n }\n\n /**\n * Converts operator to text string,\n */\n static getOperatorAsText(operator: '&&' | '||'): 'And' | 'Or' {\n return operator === '&&' ? 'And' : 'Or';\n }\n\n static getRowOptionFormatted(\n command: string,\n cellValue: string,\n len = 30\n ): string {\n return `${command} \"${GridRenderer.truncate(\n cellValue,\n len - command.length - 3\n )}\"`;\n }\n\n irisGrid: IrisGrid;\n\n debouncedUpdateCustomFormat: DebouncedFunc<\n (modelIndex: number, selectedFormat: TableColumnFormat | null) => void\n >;\n\n constructor(irisGrid: IrisGrid, dh: DhType) {\n super();\n\n this.debouncedUpdateCustomFormat = debounce(\n irisGrid.handleFormatSelection,\n DEBOUNCE_UPDATE_FORMAT\n );\n\n this.dh = dh;\n this.irisGrid = irisGrid;\n }\n\n componentWillUnmount(): void {\n this.debouncedUpdateCustomFormat.flush();\n }\n\n dh: DhType;\n\n getHeaderActions(\n modelIndex: ModelIndex,\n gridPoint: GridPoint\n ): ContextAction[] {\n const { irisGrid } = this;\n const { column: visibleIndex } = gridPoint;\n assertNotNull(visibleIndex);\n const { model } = irisGrid.props;\n const { columns } = model;\n const column = columns[modelIndex];\n\n const actions = [] as ContextAction[];\n\n const {\n metrics,\n reverseType,\n quickFilters,\n advancedFilters,\n searchFilter,\n } = irisGrid.state;\n const theme = irisGrid.getTheme();\n assertNotNull(metrics);\n const {\n filterIconColor,\n filterBarActiveColor,\n contextMenuSortIconColor,\n contextMenuReverseIconColor,\n } = theme;\n\n const modelSort = model.sort;\n const columnSort = TableUtils.getSortForColumn(modelSort, column.name);\n const hasReverse = reverseType !== TableUtils.REVERSE_TYPE.NONE;\n const { userColumnWidths } = metrics;\n const isColumnHidden = [...userColumnWidths.values()].some(\n columnWidth => columnWidth === 0\n );\n const isColumnFreezable =\n model.getColumnHeaderParentGroup(modelIndex, 0) === undefined &&\n !(isExpandableGridModel(model) && model.hasExpandableRows);\n const isColumnFrozen = model.isColumnFrozen(modelIndex);\n const isColumnSortable = model.isColumnSortable(modelIndex);\n actions.push({\n title: 'Hide Column',\n group: IrisGridContextMenuHandler.GROUP_HIDE_COLUMNS,\n action: () => {\n this.irisGrid.hideColumnByVisibleIndex(visibleIndex);\n },\n });\n actions.push({\n title: isColumnFrozen ? 'Unfreeze Column' : 'Freeze Column',\n group: IrisGridContextMenuHandler.GROUP_HIDE_COLUMNS,\n disabled: !isColumnFreezable,\n action: () => {\n if (isColumnFrozen) {\n this.irisGrid.unFreezeColumnByColumnName(column.name);\n } else {\n this.irisGrid.freezeColumnByColumnName(column.name);\n }\n },\n order: 10,\n });\n actions.push({\n title: 'Show All Columns',\n group: IrisGridContextMenuHandler.GROUP_HIDE_COLUMNS,\n action: () => {\n this.irisGrid.showAllColumns();\n },\n disabled: !isColumnHidden,\n });\n actions.push({\n title: 'Quick Filters',\n icon: vsRemove,\n iconColor: filterBarActiveColor,\n shortcut: SHORTCUTS.TABLE.TOGGLE_QUICK_FILTER,\n group: IrisGridContextMenuHandler.GROUP_FILTER,\n order: 10,\n action: () => {\n this.irisGrid.toggleFilterBar(visibleIndex);\n },\n });\n actions.push({\n title: 'Advanced Filters',\n icon: advancedFilters.get(modelIndex) ? dhFilterFilled : vsFilter,\n iconColor: filterIconColor,\n group: IrisGridContextMenuHandler.GROUP_FILTER,\n order: 20,\n action: () => {\n this.irisGrid.handleAdvancedMenuOpened(visibleIndex);\n },\n });\n actions.push({\n title: 'Clear Table Filters',\n group: IrisGridContextMenuHandler.GROUP_FILTER,\n order: 40,\n // this just displays the shortcut, the actual listener is in irisgrid handleKeyDown\n shortcut: SHORTCUTS.TABLE.CLEAR_FILTERS,\n action: () => {\n this.irisGrid.clearAllFilters();\n },\n disabled: !(\n quickFilters.size > 0 ||\n advancedFilters.size > 0 ||\n searchFilter != null\n ),\n });\n actions.push({\n title: 'Sort by',\n icon: vsRemove,\n iconColor: contextMenuSortIconColor,\n group: IrisGridContextMenuHandler.GROUP_SORT,\n order: 10,\n actions: this.sortByActions(column, modelIndex, columnSort),\n disabled: !isColumnSortable,\n });\n actions.push({\n title: 'Add Additional Sort',\n /**\n * disable conditions:\n * 1. table is sorted only by this column\n * 2. table is only reversed\n * 3. 1 & 2 combined\n * 4. table has no sort\n * reverse is a type of sort, so needs to be accounted for in exclusions\n * */\n disabled:\n (columnSort && modelSort.length === 1) ||\n (hasReverse && modelSort.length === 1) ||\n (columnSort && hasReverse && modelSort.length === 2) ||\n modelSort.length === 0 ||\n !isColumnSortable,\n group: IrisGridContextMenuHandler.GROUP_SORT,\n order: 20,\n actions: this.additionalSortActions(column, modelIndex),\n });\n actions.push({\n title: 'Clear Table Sorting',\n disabled:\n // reverse is a type of sort, but special and needs to be exluded despite being part of model.sort\n modelSort.length === 0 || (hasReverse && modelSort.length === 1),\n group: IrisGridContextMenuHandler.GROUP_SORT,\n action: () => {\n this.irisGrid.sortColumn(\n visibleIndex,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.none\n );\n },\n order: 30,\n });\n actions.push({\n title:\n reverseType === TableUtils.REVERSE_TYPE.NONE\n ? 'Reverse Table'\n : 'Clear Reverse Table',\n icon: vsRemove,\n iconColor: contextMenuReverseIconColor,\n group: IrisGridContextMenuHandler.GROUP_SORT,\n order: 40,\n disabled: !model.isReversible,\n // this just displays the shortcut, the actual listener is in irisgrid handleKeyDown\n shortcut: SHORTCUTS.TABLE.REVERSE,\n action: () => {\n if (reverseType === TableUtils.REVERSE_TYPE.NONE) {\n this.irisGrid.reverse(TableUtils.REVERSE_TYPE.POST_SORT);\n } else {\n this.irisGrid.reverse(TableUtils.REVERSE_TYPE.NONE);\n }\n },\n });\n actions.push({\n title: 'Copy Column Name',\n group: IrisGridContextMenuHandler.GROUP_COPY,\n action: () => {\n copyToClipboard(model.textForColumnHeader(modelIndex) ?? '').catch(e =>\n log.error('Unable to copy header', e)\n );\n },\n });\n\n if (TableUtils.isDateType(column.type)) {\n actions.push({\n title: 'Date/Time Format',\n group: IrisGridContextMenuHandler.GROUP_FORMAT,\n actions: this.dateFormatActions(column),\n });\n } else if (TableUtils.isNumberType(column.type)) {\n actions.push({\n title: 'Number Format',\n group: IrisGridContextMenuHandler.GROUP_FORMAT,\n actions: this.numberFormatActions(column) ?? undefined,\n });\n }\n return actions;\n }\n\n getCellActions(\n modelColumn: number | undefined | null,\n grid: Grid,\n gridPoint: GridPoint\n ): ContextAction[] {\n assertNotNull(modelColumn);\n const { dh, irisGrid } = this;\n const { column: columnIndex, row: rowIndex } = gridPoint;\n const { model, canCopy } = irisGrid.props;\n const { columns } = model;\n const modelRow = irisGrid.getModelRow(rowIndex);\n assertNotNull(modelRow);\n const value = model.valueForCell(modelColumn, modelRow);\n\n const valueText = model.textForCell(modelColumn, modelRow);\n const column = columns[modelColumn];\n\n const actions = [] as ContextAction[];\n\n const { quickFilters } = irisGrid.state;\n const theme = irisGrid.getTheme();\n const { filterIconColor } = theme;\n const { settings } = irisGrid.props;\n\n const dateFilterFormatter = new DateTimeColumnFormatter(dh, {\n timeZone: settings?.timeZone,\n showTimeZone: false,\n showTSeparator: true,\n defaultDateTimeFormatString: CONTEXT_MENU_DATE_FORMAT,\n });\n const previewFilterFormatter = new DateTimeColumnFormatter(dh, {\n timeZone: settings?.timeZone,\n showTimeZone: settings?.showTimeZone,\n showTSeparator: settings?.showTSeparator,\n defaultDateTimeFormatString: CONTEXT_MENU_DATE_FORMAT,\n });\n\n if (column == null || rowIndex == null) return actions;\n\n // grid data area context menu options\n if (model.isFilterable(modelColumn)) {\n // cell data area contextmenu options\n const filterMenu = {\n title: 'Filter by Value',\n icon: vsRemove,\n iconColor: filterIconColor,\n group: IrisGridContextMenuHandler.GROUP_FILTER,\n order: 10,\n actions: [],\n } as {\n title: string;\n icon: IconDefinition;\n iconColor: string;\n group: number;\n order: number;\n actions: ContextAction[];\n };\n\n if (value == null) {\n // null gets a special menu\n if (quickFilters.get(modelColumn)) {\n filterMenu.actions.push({\n title: 'And',\n actions: this.nullFilterActions(\n column,\n quickFilters.get(modelColumn),\n '&&'\n ),\n order: 2,\n group: ContextActions.groups.high,\n });\n }\n filterMenu.actions.push(...this.nullFilterActions(column));\n } else if (value === '') {\n // empty string gets a special menu\n if (quickFilters.get(modelColumn)) {\n filterMenu.actions.push({\n title: 'And',\n\n actions: this.emptyStringFilterActions(\n column,\n quickFilters.get(modelColumn),\n '&&'\n ),\n order: 2,\n group: ContextActions.groups.high,\n });\n }\n filterMenu.actions.push(...this.emptyStringFilterActions(column));\n } else if (TableUtils.isBooleanType(column.type)) {\n // boolean should have OR condition, and handles it's own null menu options\n if (quickFilters.get(modelColumn)) {\n filterMenu.actions.push({\n title: 'Or',\n actions: this.booleanFilterActions(\n column,\n valueText,\n quickFilters.get(modelColumn),\n '||'\n ),\n order: 2,\n group: ContextActions.groups.high,\n });\n }\n filterMenu.actions.push(\n ...this.booleanFilterActions(column, valueText)\n );\n } else if (\n TableUtils.isNumberType(column.type) ||\n TableUtils.isCharType(column.type)\n ) {\n // Chars get treated like numbers in terms of which filters are available\n assertNotNull(modelColumn);\n // We want to show the full unformatted value if it's a number, so user knows which value they are matching\n // If it's a Char we just show the char\n const numberValueText = TableUtils.isCharType(column.type)\n ? String.fromCharCode(value as number)\n : `${value}`;\n\n if (quickFilters.get(modelColumn)) {\n filterMenu.actions.push({\n title: 'And',\n actions: this.numberFilterActions(\n column,\n numberValueText,\n value,\n quickFilters.get(modelColumn),\n '&&'\n ),\n order: 2,\n group: ContextActions.groups.high,\n });\n }\n filterMenu.actions.push(\n ...this.numberFilterActions(\n column,\n numberValueText,\n value,\n quickFilters.get(modelColumn)\n )\n );\n } else if (TableUtils.isDateType(column.type)) {\n const dateValueText = dateFilterFormatter.format(value as Date);\n const previewValue = previewFilterFormatter.format(value as Date);\n if (quickFilters.get(modelColumn)) {\n filterMenu.actions.push({\n title: 'And',\n actions: this.dateFilterActions(\n column,\n dateValueText,\n previewValue,\n value,\n quickFilters.get(modelColumn),\n '&&'\n ),\n order: 2,\n group: ContextActions.groups.high,\n });\n }\n filterMenu.actions.push(\n ...this.dateFilterActions(\n column,\n dateValueText,\n previewValue,\n value,\n quickFilters.get(modelColumn)\n )\n );\n } else {\n if (quickFilters.get(modelColumn)) {\n filterMenu.actions.push({\n title: 'And',\n\n actions: this.stringFilterActions(\n column,\n valueText,\n value,\n quickFilters.get(modelColumn),\n '&&'\n ),\n order: 2,\n group: ContextActions.groups.high,\n });\n }\n filterMenu.actions.push(\n ...this.stringFilterActions(column, valueText, value)\n );\n }\n\n if (filterMenu.actions != null && filterMenu.actions.length > 0) {\n actions.push(filterMenu);\n }\n }\n\n // Expand/Collapse options\n if (isExpandableGridModel(model) && model.isRowExpandable(modelRow)) {\n // If there are grouped columns, then it is a rollup\n // For rollups, the column number will be the depth minus one\n const expandingColumn =\n model.groupedColumns.length > 0 ? model.depthForRow(modelRow) - 1 : 0;\n const cellValue = model.valueForCell(expandingColumn, modelRow);\n const cellText =\n cellValue == null\n ? 'null'\n : model.textForCell(expandingColumn, modelRow);\n\n actions.push({\n title: IrisGridContextMenuHandler.getRowOptionFormatted(\n model.isRowExpanded(modelRow) ? 'Collapse' : 'Expand',\n cellText\n ),\n group: IrisGridContextMenuHandler.GROUP_EXPAND_COLLAPSE,\n order: 10,\n action: () => {\n model.setRowExpanded(modelRow, !model.isRowExpanded(modelRow));\n },\n });\n\n if (model.isExpandAllAvailable === true) {\n actions.push({\n title: IrisGridContextMenuHandler.getRowOptionFormatted(\n 'Expand All in',\n cellText\n ),\n group: IrisGridContextMenuHandler.GROUP_EXPAND_COLLAPSE,\n order: 20,\n action: () => {\n model.setRowExpanded(modelRow, true, true);\n },\n });\n }\n }\n\n if (\n isExpandableGridModel(model) &&\n model.hasExpandableRows &&\n model.isExpandAllAvailable === true\n ) {\n actions.push({\n title: 'Expand Entire Table',\n group: IrisGridContextMenuHandler.GROUP_EXPAND_COLLAPSE,\n order: 30,\n action: () => {\n model.expandAll();\n },\n });\n\n actions.push({\n title: 'Collapse Entire Table',\n group: IrisGridContextMenuHandler.GROUP_EXPAND_COLLAPSE,\n order: 40,\n action: () => {\n model.collapseAll();\n },\n });\n }\n\n const gotoRow = {\n title: 'Go to',\n iconColor: filterIconColor,\n shortcut: SHORTCUTS.TABLE.GOTO_ROW,\n group: IrisGridContextMenuHandler.GROUP_GOTO,\n order: 10,\n action: () =>\n this.irisGrid.toggleGotoRow(`${rowIndex + 1}`, `${value}`, column.name),\n };\n actions.push(gotoRow);\n\n if (canCopy) {\n actions.push({\n title: 'Copy Cell',\n group: IrisGridContextMenuHandler.GROUP_COPY,\n order: 10,\n action: () => {\n irisGrid.copyCell(columnIndex, rowIndex);\n },\n });\n\n actions.push({\n title: 'Copy Cell Unformatted',\n group: IrisGridContextMenuHandler.GROUP_COPY,\n order: 20,\n action: () => {\n irisGrid.copyCell(columnIndex, rowIndex, true);\n },\n });\n }\n\n return actions;\n }\n\n /**\n * Gets an equality filter for the provided numeric value\n * @param column The column to make the filter for\n * @param value The value to get the equality filter for\n */\n getNumberValueEqualsFilter(column: Column, value: number): FilterCondition {\n const { dh } = this;\n const columnFilter = column.filter();\n if (value === Number.POSITIVE_INFINITY) {\n return dh.FilterCondition.invoke('isInf', columnFilter).and(\n columnFilter.greaterThan(dh.FilterValue.ofNumber(0))\n );\n }\n if (value === Number.NEGATIVE_INFINITY) {\n return dh.FilterCondition.invoke('isInf', columnFilter).and(\n columnFilter.lessThan(dh.FilterValue.ofNumber(0))\n );\n }\n if (Number.isNaN(value)) {\n return dh.FilterCondition.invoke('isNaN', columnFilter);\n }\n\n const filterValue = this.getFilterValueForNumberOrChar(column.type, value);\n return columnFilter.eq(filterValue);\n }\n\n getFilterValueForNumberOrChar(\n columnType: string,\n value: unknown\n ): FilterValue {\n const { dh } = this;\n return TableUtils.isCharType(columnType)\n ? dh.FilterValue.ofString(String.fromCharCode(value as number))\n : dh.FilterValue.ofNumber(value);\n }\n\n onContextMenu(\n gridPoint: GridPoint,\n grid: Grid,\n event: React.MouseEvent<Element, MouseEvent>\n ): EventHandlerResult {\n const { irisGrid } = this;\n const {\n y,\n column: columnIndex,\n row: rowIndex,\n columnHeaderDepth,\n } = gridPoint;\n const modelColumn = irisGrid.getModelColumn(columnIndex);\n const modelRow = irisGrid.getModelRow(rowIndex);\n\n const { model, canCopy } = irisGrid.props;\n const { columns } = model;\n\n const {\n metrics,\n isFilterBarShown,\n quickFilters,\n advancedFilters,\n selectedRanges,\n } = irisGrid.state;\n\n assertNotNull(metrics);\n\n const { columnHeaderHeight, gridY, columnHeaderMaxDepth } = metrics;\n\n const actions: ResolvableContextAction[] = [];\n\n if (modelColumn != null && modelRow != null) {\n const value = model.valueForCell(modelColumn, modelRow);\n\n const valueText = model.textForCell(modelColumn, modelRow);\n const column = columns[modelColumn];\n\n const { onContextMenu } = irisGrid.props;\n\n if (column != null) {\n actions.push(\n ...onContextMenu({\n model,\n value,\n valueText,\n column,\n rowIndex,\n columnIndex,\n modelRow,\n modelColumn,\n })\n );\n }\n }\n\n if (modelColumn != null && model.isFilterable(modelColumn)) {\n // Clear column filter should still be available after last row\n // And should be available in both header and body context menus\n actions.push({\n title: 'Clear Column Filter',\n group: IrisGridContextMenuHandler.GROUP_FILTER,\n order: 30,\n action: () => {\n this.irisGrid.removeColumnFilter(modelColumn);\n },\n disabled: !(\n quickFilters.has(modelColumn) || advancedFilters.has(modelColumn)\n ),\n });\n }\n\n if (\n isFilterBarShown\n ? y <= gridY\n : y <= columnHeaderHeight * columnHeaderMaxDepth &&\n columnHeaderDepth === 0\n ) {\n // grid header context menu options\n if (modelColumn != null) {\n actions.push(...this.getHeaderActions(modelColumn, gridPoint));\n }\n } else {\n // grid body context menu options\n if (modelColumn != null && modelRow != null) {\n actions.push(...this.getCellActions(modelColumn, grid, gridPoint));\n }\n\n // blank space context menu options\n if (canCopy && selectedRanges.length > 0) {\n actions.push({\n title: 'Copy Selection',\n shortcut: GLOBAL_SHORTCUTS.COPY,\n group: IrisGridContextMenuHandler.GROUP_COPY,\n order: 30,\n action: () => {\n irisGrid.copyRanges(selectedRanges);\n },\n });\n\n actions.push({\n title: 'Copy Selection w/ Headers',\n group: IrisGridContextMenuHandler.GROUP_COPY,\n order: 40,\n action: () => {\n irisGrid.copyRanges(selectedRanges, true);\n },\n });\n }\n\n if (\n isEditableGridModel(model) &&\n model.isEditable &&\n selectedRanges.length > 0\n ) {\n actions.push({\n title: 'Delete Selected Rows',\n group: IrisGridContextMenuHandler.GROUP_EDIT,\n order: 50,\n action: () => {\n this.irisGrid.deleteRanges(selectedRanges);\n },\n });\n }\n }\n\n if (actions.length === 0) {\n return false;\n }\n\n assertNotNull(irisGrid.gridWrapper);\n\n ContextActions.triggerMenu(\n irisGrid.gridWrapper,\n event.clientX,\n event.clientY,\n actions\n );\n return true;\n }\n\n dateFormatActions(column: Column): ContextAction[] {\n const { model } = this.irisGrid.props;\n const { formatter } = model;\n const selectedFormat = formatter.getColumnFormat(column.type, column.name);\n\n const formatOptions = DateTimeFormatContextMenu.getOptions(\n formatter,\n selectedFormat\n );\n\n const actions = [];\n\n for (let i = 0; i < formatOptions.length; i += 1) {\n const { description, format, group, isSelected, title } =\n formatOptions[i];\n actions.push({\n title,\n description,\n icon: isSelected ? vsCheck : undefined,\n group,\n order: i,\n action: () => {\n const modelIndex = model.getColumnIndexByName(column.name);\n assertNotNull(modelIndex);\n this.irisGrid.handleFormatSelection(modelIndex, format);\n },\n });\n }\n return actions;\n }\n\n numberFormatActions(column: Column): ContextAction[] | null {\n const { model } = this.irisGrid.props;\n const { formatter } = model;\n const { dh } = this;\n const selectedFormat = formatter.getColumnFormat(\n column.type,\n column.name\n ) as IntegerColumnFormat;\n let formatOptions;\n\n const columnIndex = model.getColumnIndexByName(column.name);\n if (TableUtils.isDecimalType(column.type)) {\n formatOptions = DecimalFormatContextMenu.getOptions(\n dh,\n selectedFormat,\n format => {\n assertNotNull(columnIndex);\n this.debouncedUpdateCustomFormat(columnIndex, format);\n }\n );\n } else if (TableUtils.isIntegerType(column.type)) {\n formatOptions = IntegerFormatContextMenu.getOptions(\n dh,\n selectedFormat,\n format => {\n assertNotNull(columnIndex);\n this.debouncedUpdateCustomFormat(columnIndex, format);\n }\n );\n } else {\n log.error('Invalid column type in numberFormatActions');\n return null;\n }\n\n const actions = [];\n\n for (let i = 0; i < formatOptions.length; i += 1) {\n const { format, isSelected } = formatOptions[i];\n actions.push({\n ...formatOptions[i],\n icon: isSelected ? vsCheck : undefined,\n order: i,\n action: () => {\n if (\n columnIndex === undefined &&\n format &&\n format.type === TableColumnFormatter.TYPE_CONTEXT_CUSTOM\n ) {\n return;\n }\n assertNotNull(columnIndex);\n this.irisGrid.handleFormatSelection(columnIndex, format);\n },\n });\n }\n return actions;\n }\n\n stringFilterActions(\n column: Column,\n valueText: string | null,\n value?: unknown,\n quickFilter?: QuickFilter,\n operator?: '&&' | '||' | null\n ): ContextAction[] {\n const { dh } = this;\n const filterValue = dh.FilterValue.ofString(value);\n let newQuickFilter:\n | {\n filter: null | FilterCondition | undefined;\n text: string | null;\n }\n | undefined\n | null = quickFilter;\n if (!newQuickFilter) {\n newQuickFilter = { filter: null, text: null };\n }\n const { filter, text: filterText } = newQuickFilter;\n const actions = [];\n const { model } = this.irisGrid.props;\n const columnIndex = model.getColumnIndexByName(column.name);\n\n const quickFilterValueText: string | null =\n TableUtils.escapeQuickTextFilter(valueText);\n\n assertNotNull(columnIndex);\n\n actions.push({\n menuElement: (\n <div className=\"iris-grid-filter-menu-item-value\">\n {operator\n ? IrisGridContextMenuHandler.getOperatorAsText(operator)\n : ''}{' '}\n &quot;{valueText}&quot;\n </div>\n ),\n order: 1,\n group: ContextActions.groups.high,\n });\n\n actions.push({\n title: 'text is exactly',\n description: `Show only rows where ${column.name} is ${value} (case sensitive)`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().eq(filterValue),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `${quickFilterValueText}`,\n operator\n )\n );\n },\n order: 10,\n group: ContextActions.groups.low,\n });\n actions.push({\n title: 'text is not exactly',\n description: `Show only rows where ${column.name} is not ${valueText} (case sensitive)`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().notEq(filterValue),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `!=${quickFilterValueText}`,\n operator\n )\n );\n },\n order: 20,\n group: ContextActions.groups.low,\n });\n actions.push({\n title: `text contains`,\n description: `Show only rows where ${column.name} contains ${valueText}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column\n .filter()\n .isNull()\n .not()\n .and(column.filter().contains(filterValue)),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `~${quickFilterValueText}`,\n operator\n )\n );\n },\n order: 30,\n group: ContextActions.groups.low,\n });\n actions.push({\n title: 'text does not contain',\n description: `Show only rows where ${column.name} does not contain ${value}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column\n .filter()\n .isNull()\n .or(column.filter().contains(filterValue).not()),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `!~${quickFilterValueText}`,\n operator\n )\n );\n },\n order: 40,\n group: ContextActions.groups.low,\n });\n actions.push({\n title: 'text starts with',\n description: `Show only rows where ${column.name} starts with ${valueText}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column\n .filter()\n .isNull()\n .not()\n .and(column.filter().invoke('startsWith', filterValue)),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `${quickFilterValueText}*`,\n operator\n )\n );\n },\n order: 50,\n group: ContextActions.groups.low,\n });\n actions.push({\n title: 'text ends with',\n description: `Show only rows where ${column.name} ends with ${valueText}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column\n .filter()\n .isNull()\n .not()\n .and(column.filter().invoke('endsWith', filterValue)),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `*${quickFilterValueText}`,\n operator\n )\n );\n },\n order: 60,\n group: ContextActions.groups.low,\n });\n return actions;\n }\n\n numberFilterActions(\n column: Column,\n valueText: string,\n value: unknown,\n quickFilter?: QuickFilter | null,\n operator?: '&&' | '||' | null\n ): ContextAction[] {\n const filterValue = this.getFilterValueForNumberOrChar(column.type, value);\n let filter: FilterCondition | null = null;\n let filterText: string | null = null;\n if (quickFilter) {\n filter = quickFilter.filter;\n filterText = quickFilter.text;\n }\n const actions = [];\n const isFinite =\n value !== Number.POSITIVE_INFINITY &&\n value !== Number.NEGATIVE_INFINITY &&\n !Number.isNaN(value);\n const { model } = this.irisGrid.props;\n const columnIndex = model.getColumnIndexByName(column.name);\n assertNotNull(columnIndex);\n actions.push({\n menuElement: (\n <div className=\"iris-grid-filter-menu-item-value\">\n {operator\n ? IrisGridContextMenuHandler.getOperatorAsText(operator)\n : ''}{' '}\n &quot;{valueText}&quot;\n </div>\n ),\n order: 1,\n group: ContextActions.groups.high,\n });\n actions.push({\n title: 'is equal to',\n description: `Show only rows where ${column.name} is ${valueText}`,\n action: () => {\n const valueFilter = this.getNumberValueEqualsFilter(\n column,\n value as number\n );\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n valueFilter,\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `=${valueText}`,\n operator\n )\n );\n },\n order: 10,\n group: ContextActions.groups.low,\n });\n actions.push({\n title: 'is not equal to',\n description: `Show only rows where ${column.name} is not ${valueText}`,\n action: () => {\n const valueFilter = this.getNumberValueEqualsFilter(\n column,\n value as number\n ).not();\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n valueFilter,\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `!=${valueText}`,\n operator\n )\n );\n },\n order: 20,\n group: ContextActions.groups.low,\n });\n\n // IDS-6092 Less/greater than filters don't make sense for Infinite/NaN\n // TODO (DH-11799): These char filters should work in Bard, with the merge for DH-11040: https://gitlab.eng.illumon.com/illumon/iris/merge_requests/5801\n // They do not work in Powell though, so disable them.\n if (isFinite && !TableUtils.isCharType(column.type)) {\n actions.push({\n title: 'greater than',\n description: `Show only rows where ${column.name} is greater than ${valueText}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().greaterThan(filterValue),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `>${valueText}`,\n operator\n )\n );\n },\n order: 30,\n group: ContextActions.groups.low,\n });\n actions.push({\n title: 'greater than or equal to',\n description: `Show only rows where ${column.name} is greater than or equal to ${valueText}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().greaterThanOrEqualTo(filterValue),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `>=${valueText}`,\n operator\n )\n );\n },\n order: 40,\n group: ContextActions.groups.low,\n });\n actions.push({\n title: 'less than',\n description: `Show only rows where ${column.name} is less than ${valueText}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().lessThan(filterValue),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `<${valueText}`,\n operator\n )\n );\n },\n order: 50,\n group: ContextActions.groups.low,\n });\n actions.push({\n title: 'less than or equal to',\n description: `Show only rows where ${column.name} is less than or equal to ${valueText}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().lessThanOrEqualTo(filterValue),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `<=${valueText}`,\n operator\n )\n );\n },\n order: 60,\n group: ContextActions.groups.low,\n });\n }\n return actions;\n }\n\n booleanFilterActions(\n column: Column,\n valueText: string | null,\n quickFilter?: QuickFilter | null,\n operator?: '&&' | '||' | null\n ): ContextAction[] {\n const actions: ContextAction[] = [];\n\n const { model } = this.irisGrid.props;\n const { filter, text: filterText } = quickFilter || {};\n const columnIndex = model.getColumnIndexByName(column.name);\n assertNotNull(columnIndex);\n\n actions.push({\n menuElement: (\n <div className=\"iris-grid-filter-menu-item-value\">\n {operator\n ? IrisGridContextMenuHandler.getOperatorAsText(operator)\n : ''}{' '}\n &quot;{valueText ?? 'null'}&quot;\n </div>\n ),\n order: 1,\n group: ContextActions.groups.high,\n });\n\n actions.push({\n title: 'true',\n description: `Show only rows where ${column.name} is true`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().isTrue(),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n 'true',\n operator\n )\n );\n },\n order: 10,\n group: ContextActions.groups.low,\n });\n actions.push({\n title: 'false',\n description: `Show only rows where ${column.name} is false`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().isFalse(),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n 'false',\n operator\n )\n );\n },\n order: 20,\n group: ContextActions.groups.low,\n });\n actions.push({\n title: 'is null',\n description: `Show only rows where ${column.name} is null`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().isNull(),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n 'null',\n operator\n )\n );\n },\n order: 30,\n group: ContextActions.groups.low,\n });\n\n actions.push({\n title: 'is not null',\n description: `Show only rows where ${column.name} is not null`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().isNull().not(),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n '!null',\n operator\n )\n );\n },\n order: 40,\n group: ContextActions.groups.low,\n });\n\n return actions;\n }\n\n dateFilterActions(\n column: Column,\n valueText: string,\n previewValue: unknown,\n value: unknown,\n quickFilter?: QuickFilter | null,\n operator?: '&&' | '||' | null\n ): ContextAction[] {\n const { dh } = this;\n const filterValue = dh.FilterValue.ofNumber(value);\n\n let filter: FilterCondition | null = null;\n let filterText: string | null = null;\n if (quickFilter) {\n filter = quickFilter.filter;\n filterText = quickFilter.text;\n }\n const { model } = this.irisGrid.props;\n const columnIndex = model.getColumnIndexByName(column.name);\n assertNotNull(columnIndex);\n\n const actions = [];\n\n actions.push({\n menuElement: (\n <div className=\"iris-grid-filter-menu-item-value\">\n {operator\n ? IrisGridContextMenuHandler.getOperatorAsText(operator)\n : ''}{' '}\n &quot;{previewValue}&quot;\n </div>\n ),\n order: 1,\n group: ContextActions.groups.high,\n });\n actions.push({\n title: 'date is',\n description: `Show only rows where ${column.name} is ${previewValue}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().eq(filterValue),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `=${valueText}`,\n operator\n )\n );\n },\n order: 10,\n group: ContextActions.groups.low,\n });\n actions.push({\n title: 'date is not',\n description: `Show only rows where ${column.name} is not ${previewValue}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().notEq(filterValue),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `!=${valueText}`,\n operator\n )\n );\n },\n order: 20,\n group: ContextActions.groups.low,\n });\n actions.push({\n title: 'date is before',\n description: `Show only rows where ${column.name} is before ${previewValue}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().lessThan(filterValue),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `<${valueText}`,\n operator\n )\n );\n },\n order: 30,\n group: ContextActions.groups.low,\n });\n actions.push({\n title: 'date is before or equal',\n description: `Show only rows where ${column.name} is before or equal to ${previewValue}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().lessThanOrEqualTo(filterValue),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `<=${valueText}`,\n operator\n )\n );\n },\n order: 40,\n group: ContextActions.groups.low,\n });\n actions.push({\n title: 'date is after',\n description: `Show only rows where ${column.name} is greater than ${previewValue}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().greaterThan(filterValue),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `>${valueText}`,\n operator\n )\n );\n },\n order: 50,\n group: ContextActions.groups.low,\n });\n actions.push({\n title: 'date is after or equal',\n description: `Show only rows where ${column.name} is after or equal to ${previewValue}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().greaterThanOrEqualTo(filterValue),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `>=${valueText}`,\n operator\n )\n );\n },\n order: 60,\n group: ContextActions.groups.low,\n });\n return actions;\n }\n\n emptyStringFilterActions(\n column: Column,\n quickFilter?: QuickFilter,\n operator?: '&&' | '||' | null\n ): ContextAction[] {\n const { dh } = this;\n const filterValue = dh.FilterValue.ofString('');\n let newQuickFilter:\n | {\n filter: null | FilterCondition | undefined;\n text: string | null;\n }\n | undefined\n | null = quickFilter;\n if (!newQuickFilter) {\n newQuickFilter = { filter: null, text: null };\n }\n const { filter, text: filterText } = newQuickFilter;\n const actions = [];\n const { model } = this.irisGrid.props;\n const columnIndex = model.getColumnIndexByName(column.name);\n assertNotNull(columnIndex);\n\n actions.push({\n menuElement: (\n <div className=\"iris-grid-filter-menu-item-value\">\n {operator\n ? IrisGridContextMenuHandler.getOperatorAsText(operator)\n : ''}{' '}\n <i className=\"text-muted\">empty</i>\n </div>\n ),\n order: 1,\n group: ContextActions.groups.high,\n });\n\n actions.push({\n title: 'is empty string',\n description: `Show only rows where ${column.name} is empty`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().eq(filterValue),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `=`,\n operator\n )\n );\n },\n order: 10,\n group: ContextActions.groups.low,\n });\n actions.push({\n title: 'is not empty string',\n description: `Show only rows where ${column.name} is not empty`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().notEq(filterValue),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `!=`,\n operator\n )\n );\n },\n order: 20,\n group: ContextActions.groups.low,\n });\n\n return actions;\n }\n\n nullFilterActions(\n column: Column,\n quickFilter?: QuickFilter,\n operator?: '&&' | '||' | null\n ): ContextAction[] {\n let filter: FilterCondition | null = null;\n let filterText: string | null = null;\n if (quickFilter) {\n filter = quickFilter.filter;\n filterText = quickFilter.text;\n }\n const actions = [];\n const { model } = this.irisGrid.props;\n const columnIndex = model.getColumnIndexByName(column.name);\n assertNotNull(columnIndex);\n\n actions.push({\n menuElement: (\n <div className=\"iris-grid-filter-menu-item-value\">\n {operator\n ? IrisGridContextMenuHandler.getOperatorAsText(operator)\n : ''}{' '}\n <i className=\"text-muted\">null</i>\n </div>\n ),\n order: 1,\n group: ContextActions.groups.high,\n });\n actions.push({\n title: 'is null',\n description: `Show only rows where ${column.name} is null`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().isNull(),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n 'null',\n operator\n )\n );\n },\n order: 10,\n group: ContextActions.groups.low,\n });\n actions.push({\n title: 'is not null',\n description: `Show only rows where ${column.name} is not null`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().isNull().not(),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n '!null',\n operator\n )\n );\n },\n order: 20,\n group: ContextActions.groups.low,\n });\n\n return actions;\n }\n\n sortByActions(\n column: Column,\n modelColumn: ModelIndex,\n columnSort: Sort | null\n ): ContextAction[] {\n const theme = this.irisGrid.getTheme();\n const { contextMenuSortIconColor } = theme;\n const sortActions = [\n {\n title: `${column.name} Ascending`,\n order: 10,\n action: () => {\n this.irisGrid.sortColumn(\n modelColumn,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.ascending\n );\n },\n icon: this.checkColumnSort(\n columnSort,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.ascending\n )\n ? vsRemove\n : undefined,\n iconColor: contextMenuSortIconColor,\n },\n {\n title: `${column.name} Descending`,\n order: 20,\n action: () => {\n this.irisGrid.sortColumn(\n modelColumn,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.descending\n );\n },\n icon: this.checkColumnSort(\n columnSort,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.descending\n )\n ? vsRemove\n : undefined,\n iconColor: contextMenuSortIconColor,\n },\n {\n title: `Remove Sort`,\n order: 50,\n action: () => {\n this.irisGrid.sortColumn(\n modelColumn,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.none,\n false,\n true\n );\n },\n disabled: !columnSort,\n },\n ];\n if (TableUtils.isNumberType(column.type)) {\n sortActions.push({\n title: `ABS(${column.name}) Ascending`,\n order: 30,\n action: () => {\n this.irisGrid.sortColumn(\n modelColumn,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.ascending,\n true\n );\n },\n icon: this.checkColumnSort(\n columnSort,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.ascending,\n true\n )\n ? vsRemove\n : undefined,\n iconColor: contextMenuSortIconColor,\n });\n sortActions.push({\n title: `ABS(${column.name}) Descending`,\n order: 40,\n action: () => {\n this.irisGrid.sortColumn(\n modelColumn,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.descending,\n true\n );\n },\n icon: this.checkColumnSort(\n columnSort,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.descending,\n true\n )\n ? vsRemove\n : undefined,\n iconColor: contextMenuSortIconColor,\n });\n }\n return sortActions;\n }\n\n additionalSortActions(\n column: Column,\n columnIndex: ModelIndex\n ): ContextAction[] {\n const theme = this.irisGrid.getTheme();\n const { contextMenuSortIconColor } = theme;\n const additionalSortActions = [\n {\n title: 'Add Sort By',\n menuElement: (\n <div className=\"btn-context-menu menu-title\">\n <span className=\"icon\">\n <FontAwesomeIcon\n icon={vsRemove}\n style={{ color: contextMenuSortIconColor ?? undefined }}\n />\n </span>\n <span className=\"title\">Add Additional Sort</span>\n <span className=\"shortcut\">\n {ContextActionUtils.isMacPlatform() ? '⌘Click' : 'Ctrl+Click'}\n </span>\n </div>\n ),\n order: 1,\n },\n {\n title: `${column.name} Ascending`,\n order: 10,\n action: () => {\n this.irisGrid.sortColumn(\n columnIndex,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.ascending,\n false,\n true\n );\n },\n },\n {\n title: `${column.name} Descending`,\n order: 20,\n action: () => {\n this.irisGrid.sortColumn(\n columnIndex,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.descending,\n false,\n true\n );\n },\n },\n ];\n if (TableUtils.isNumberType(column.type)) {\n additionalSortActions.push({\n title: `ABS(${column.name}) Ascending`,\n order: 30,\n action: () => {\n this.irisGrid.sortColumn(\n columnIndex,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.ascending,\n true,\n true\n );\n },\n });\n additionalSortActions.push({\n title: `ABS(${column.name}) Descending`,\n order: 40,\n action: () => {\n this.irisGrid.sortColumn(\n columnIndex,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.descending,\n true,\n true\n );\n },\n });\n }\n return additionalSortActions;\n }\n\n checkColumnSort(\n columnSort?: Sort | null,\n direction: SortDirection = null,\n isAbs = false\n ): boolean {\n if (!columnSort) {\n return false;\n }\n return columnSort.direction === direction && columnSort.isAbs === isAbs;\n }\n}\n\nexport default IrisGridContextMenuHandler;\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"IrisGridDataSelectMouseHandler.js","names":["GridMouseHandler","IrisGridDataSelectMouseHandler","constructor","irisGrid","onDoubleClick","gridPoint","column","row","selectData"],"sources":["../../src/mousehandlers/IrisGridDataSelectMouseHandler.ts"],"sourcesContent":["/* eslint class-methods-use-this: \"off\" */\nimport {\n GridMouseHandler,\n GridPoint,\n EventHandlerResult,\n} from '@deephaven/grid';\nimport type { IrisGrid } from '../IrisGrid';\n\n/**\n * Handles sending data selected via double click\n */\nclass IrisGridDataSelectMouseHandler extends GridMouseHandler {\n constructor(irisGrid: IrisGrid) {\n super();\n\n this.irisGrid = irisGrid;\n }\n\n irisGrid: IrisGrid;\n\n onDoubleClick(gridPoint: GridPoint): EventHandlerResult {\n const { column, row } = gridPoint;\n if (row == null || column == null) {\n return false;\n }\n\n this.irisGrid.selectData(column, row);\n\n return true;\n }\n}\n\nexport default IrisGridDataSelectMouseHandler;\n"],"mappings":";;;AAAA;AACA,SACEA,gBAAgB,QAGX,iBAAiB;AAGxB;AACA;AACA;AACA,MAAMC,8BAA8B,SAASD,gBAAgB,CAAC;EAC5DE,WAAW,CAACC,QAAkB,EAAE;IAC9B,KAAK,EAAE;IAAC;IAER,IAAI,CAACA,QAAQ,GAAGA,QAAQ;EAC1B;EAIAC,aAAa,CAACC,SAAoB,EAAsB;IACtD,IAAM;MAAEC,MAAM;MAAEC;IAAI,CAAC,GAAGF,SAAS;IACjC,IAAIE,GAAG,IAAI,IAAI,IAAID,MAAM,IAAI,IAAI,EAAE;MACjC,OAAO,KAAK;IACd;IAEA,IAAI,CAACH,QAAQ,CAACK,UAAU,CAACF,MAAM,EAAEC,GAAG,CAAC;IAErC,OAAO,IAAI;EACb;AACF;AAEA,eAAeN,8BAA8B"}
1
+ {"version":3,"file":"IrisGridDataSelectMouseHandler.js","names":["GridMouseHandler","IrisGridDataSelectMouseHandler","constructor","irisGrid","_defineProperty","onDoubleClick","gridPoint","column","row","selectData"],"sources":["../../src/mousehandlers/IrisGridDataSelectMouseHandler.ts"],"sourcesContent":["/* eslint class-methods-use-this: \"off\" */\nimport {\n GridMouseHandler,\n GridPoint,\n EventHandlerResult,\n} from '@deephaven/grid';\nimport type { IrisGrid } from '../IrisGrid';\n\n/**\n * Handles sending data selected via double click\n */\nclass IrisGridDataSelectMouseHandler extends GridMouseHandler {\n constructor(irisGrid: IrisGrid) {\n super();\n\n this.irisGrid = irisGrid;\n }\n\n irisGrid: IrisGrid;\n\n onDoubleClick(gridPoint: GridPoint): EventHandlerResult {\n const { column, row } = gridPoint;\n if (row == null || column == null) {\n return false;\n }\n\n this.irisGrid.selectData(column, row);\n\n return true;\n }\n}\n\nexport default IrisGridDataSelectMouseHandler;\n"],"mappings":";;;AAAA;AACA,SACEA,gBAAgB,QAGX,iBAAiB;AAGxB;AACA;AACA;AACA,MAAMC,8BAA8B,SAASD,gBAAgB,CAAC;EAC5DE,WAAWA,CAACC,QAAkB,EAAE;IAC9B,KAAK,CAAC,CAAC;IAACC,eAAA;IAER,IAAI,CAACD,QAAQ,GAAGA,QAAQ;EAC1B;EAIAE,aAAaA,CAACC,SAAoB,EAAsB;IACtD,IAAM;MAAEC,MAAM;MAAEC;IAAI,CAAC,GAAGF,SAAS;IACjC,IAAIE,GAAG,IAAI,IAAI,IAAID,MAAM,IAAI,IAAI,EAAE;MACjC,OAAO,KAAK;IACd;IAEA,IAAI,CAACJ,QAAQ,CAACM,UAAU,CAACF,MAAM,EAAEC,GAAG,CAAC;IAErC,OAAO,IAAI;EACb;AACF;AAEA,eAAeP,8BAA8B"}
@@ -1 +1 @@
1
- {"version":3,"file":"IrisGridFilterMouseHandler.js","names":["GridMouseHandler","IrisGridFilterMouseHandler","constructor","irisGrid","onDown","gridPoint","y","column","row","isFilterBarShown","metrics","state","Error","columnHeaderMaxDepth","theme","getTheme","columnHeaderHeight","filterBarHeight","focusFilterBar","onMove","hoverAdvancedFilter","newHoverAdvancedFilter","setState","onLeave"],"sources":["../../src/mousehandlers/IrisGridFilterMouseHandler.ts"],"sourcesContent":["/* eslint class-methods-use-this: \"off\" */\nimport {\n GridMouseHandler,\n GridPoint,\n EventHandlerResult,\n} from '@deephaven/grid';\nimport type { IrisGrid } from '../IrisGrid';\n\n/**\n * Trigger quick filters and advanced filters\n */\nclass IrisGridFilterMouseHandler extends GridMouseHandler {\n constructor(irisGrid: IrisGrid) {\n super();\n\n this.irisGrid = irisGrid;\n }\n\n irisGrid: IrisGrid;\n\n onDown(gridPoint: GridPoint): EventHandlerResult {\n const { y, column, row } = gridPoint;\n if (column !== null && row === null) {\n const { isFilterBarShown, metrics } = this.irisGrid.state;\n if (!metrics) throw new Error('Metrics not set');\n\n const { columnHeaderMaxDepth } = metrics;\n const theme = this.irisGrid.getTheme();\n if (\n isFilterBarShown &&\n theme.columnHeaderHeight != null &&\n theme.filterBarHeight != null &&\n y > theme.columnHeaderHeight * columnHeaderMaxDepth &&\n y <=\n theme.columnHeaderHeight * columnHeaderMaxDepth +\n theme.filterBarHeight\n ) {\n this.irisGrid.focusFilterBar(column);\n return true;\n }\n }\n\n return false;\n }\n\n onMove(gridPoint: GridPoint): EventHandlerResult {\n const { y, column } = gridPoint;\n const { isFilterBarShown, hoverAdvancedFilter, metrics } =\n this.irisGrid.state;\n if (!metrics) throw new Error('Metrics not set');\n const { columnHeaderMaxDepth } = metrics;\n const theme = this.irisGrid.getTheme();\n\n let newHoverAdvancedFilter = null;\n if (\n isFilterBarShown &&\n theme.columnHeaderHeight != null &&\n theme.filterBarHeight != null &&\n column !== null &&\n y >= theme.columnHeaderHeight * columnHeaderMaxDepth &&\n y <=\n theme.columnHeaderHeight * columnHeaderMaxDepth + theme.filterBarHeight\n ) {\n newHoverAdvancedFilter = column;\n }\n\n if (newHoverAdvancedFilter !== hoverAdvancedFilter) {\n this.irisGrid.setState({ hoverAdvancedFilter: newHoverAdvancedFilter });\n }\n\n return false;\n }\n\n onLeave(gridPoint: GridPoint): EventHandlerResult {\n const { column } = gridPoint;\n const { hoverAdvancedFilter } = this.irisGrid.state;\n if (hoverAdvancedFilter !== null && column !== hoverAdvancedFilter) {\n this.irisGrid.setState({ hoverAdvancedFilter: null });\n }\n\n return false;\n }\n}\n\nexport default IrisGridFilterMouseHandler;\n"],"mappings":";;;AAAA;AACA,SACEA,gBAAgB,QAGX,iBAAiB;AAGxB;AACA;AACA;AACA,MAAMC,0BAA0B,SAASD,gBAAgB,CAAC;EACxDE,WAAW,CAACC,QAAkB,EAAE;IAC9B,KAAK,EAAE;IAAC;IAER,IAAI,CAACA,QAAQ,GAAGA,QAAQ;EAC1B;EAIAC,MAAM,CAACC,SAAoB,EAAsB;IAC/C,IAAM;MAAEC,CAAC;MAAEC,MAAM;MAAEC;IAAI,CAAC,GAAGH,SAAS;IACpC,IAAIE,MAAM,KAAK,IAAI,IAAIC,GAAG,KAAK,IAAI,EAAE;MACnC,IAAM;QAAEC,gBAAgB;QAAEC;MAAQ,CAAC,GAAG,IAAI,CAACP,QAAQ,CAACQ,KAAK;MACzD,IAAI,CAACD,OAAO,EAAE,MAAM,IAAIE,KAAK,CAAC,iBAAiB,CAAC;MAEhD,IAAM;QAAEC;MAAqB,CAAC,GAAGH,OAAO;MACxC,IAAMI,KAAK,GAAG,IAAI,CAACX,QAAQ,CAACY,QAAQ,EAAE;MACtC,IACEN,gBAAgB,IAChBK,KAAK,CAACE,kBAAkB,IAAI,IAAI,IAChCF,KAAK,CAACG,eAAe,IAAI,IAAI,IAC7BX,CAAC,GAAGQ,KAAK,CAACE,kBAAkB,GAAGH,oBAAoB,IACnDP,CAAC,IACCQ,KAAK,CAACE,kBAAkB,GAAGH,oBAAoB,GAC7CC,KAAK,CAACG,eAAe,EACzB;QACA,IAAI,CAACd,QAAQ,CAACe,cAAc,CAACX,MAAM,CAAC;QACpC,OAAO,IAAI;MACb;IACF;IAEA,OAAO,KAAK;EACd;EAEAY,MAAM,CAACd,SAAoB,EAAsB;IAC/C,IAAM;MAAEC,CAAC;MAAEC;IAAO,CAAC,GAAGF,SAAS;IAC/B,IAAM;MAAEI,gBAAgB;MAAEW,mBAAmB;MAAEV;IAAQ,CAAC,GACtD,IAAI,CAACP,QAAQ,CAACQ,KAAK;IACrB,IAAI,CAACD,OAAO,EAAE,MAAM,IAAIE,KAAK,CAAC,iBAAiB,CAAC;IAChD,IAAM;MAAEC;IAAqB,CAAC,GAAGH,OAAO;IACxC,IAAMI,KAAK,GAAG,IAAI,CAACX,QAAQ,CAACY,QAAQ,EAAE;IAEtC,IAAIM,sBAAsB,GAAG,IAAI;IACjC,IACEZ,gBAAgB,IAChBK,KAAK,CAACE,kBAAkB,IAAI,IAAI,IAChCF,KAAK,CAACG,eAAe,IAAI,IAAI,IAC7BV,MAAM,KAAK,IAAI,IACfD,CAAC,IAAIQ,KAAK,CAACE,kBAAkB,GAAGH,oBAAoB,IACpDP,CAAC,IACCQ,KAAK,CAACE,kBAAkB,GAAGH,oBAAoB,GAAGC,KAAK,CAACG,eAAe,EACzE;MACAI,sBAAsB,GAAGd,MAAM;IACjC;IAEA,IAAIc,sBAAsB,KAAKD,mBAAmB,EAAE;MAClD,IAAI,CAACjB,QAAQ,CAACmB,QAAQ,CAAC;QAAEF,mBAAmB,EAAEC;MAAuB,CAAC,CAAC;IACzE;IAEA,OAAO,KAAK;EACd;EAEAE,OAAO,CAAClB,SAAoB,EAAsB;IAChD,IAAM;MAAEE;IAAO,CAAC,GAAGF,SAAS;IAC5B,IAAM;MAAEe;IAAoB,CAAC,GAAG,IAAI,CAACjB,QAAQ,CAACQ,KAAK;IACnD,IAAIS,mBAAmB,KAAK,IAAI,IAAIb,MAAM,KAAKa,mBAAmB,EAAE;MAClE,IAAI,CAACjB,QAAQ,CAACmB,QAAQ,CAAC;QAAEF,mBAAmB,EAAE;MAAK,CAAC,CAAC;IACvD;IAEA,OAAO,KAAK;EACd;AACF;AAEA,eAAenB,0BAA0B"}
1
+ {"version":3,"file":"IrisGridFilterMouseHandler.js","names":["GridMouseHandler","IrisGridFilterMouseHandler","constructor","irisGrid","_defineProperty","onDown","gridPoint","y","column","row","isFilterBarShown","metrics","state","Error","columnHeaderMaxDepth","theme","getTheme","columnHeaderHeight","filterBarHeight","focusFilterBar","onMove","hoverAdvancedFilter","newHoverAdvancedFilter","setState","onLeave"],"sources":["../../src/mousehandlers/IrisGridFilterMouseHandler.ts"],"sourcesContent":["/* eslint class-methods-use-this: \"off\" */\nimport {\n GridMouseHandler,\n GridPoint,\n EventHandlerResult,\n} from '@deephaven/grid';\nimport type { IrisGrid } from '../IrisGrid';\n\n/**\n * Trigger quick filters and advanced filters\n */\nclass IrisGridFilterMouseHandler extends GridMouseHandler {\n constructor(irisGrid: IrisGrid) {\n super();\n\n this.irisGrid = irisGrid;\n }\n\n irisGrid: IrisGrid;\n\n onDown(gridPoint: GridPoint): EventHandlerResult {\n const { y, column, row } = gridPoint;\n if (column !== null && row === null) {\n const { isFilterBarShown, metrics } = this.irisGrid.state;\n if (!metrics) throw new Error('Metrics not set');\n\n const { columnHeaderMaxDepth } = metrics;\n const theme = this.irisGrid.getTheme();\n if (\n isFilterBarShown &&\n theme.columnHeaderHeight != null &&\n theme.filterBarHeight != null &&\n y > theme.columnHeaderHeight * columnHeaderMaxDepth &&\n y <=\n theme.columnHeaderHeight * columnHeaderMaxDepth +\n theme.filterBarHeight\n ) {\n this.irisGrid.focusFilterBar(column);\n return true;\n }\n }\n\n return false;\n }\n\n onMove(gridPoint: GridPoint): EventHandlerResult {\n const { y, column } = gridPoint;\n const { isFilterBarShown, hoverAdvancedFilter, metrics } =\n this.irisGrid.state;\n if (!metrics) throw new Error('Metrics not set');\n const { columnHeaderMaxDepth } = metrics;\n const theme = this.irisGrid.getTheme();\n\n let newHoverAdvancedFilter = null;\n if (\n isFilterBarShown &&\n theme.columnHeaderHeight != null &&\n theme.filterBarHeight != null &&\n column !== null &&\n y >= theme.columnHeaderHeight * columnHeaderMaxDepth &&\n y <=\n theme.columnHeaderHeight * columnHeaderMaxDepth + theme.filterBarHeight\n ) {\n newHoverAdvancedFilter = column;\n }\n\n if (newHoverAdvancedFilter !== hoverAdvancedFilter) {\n this.irisGrid.setState({ hoverAdvancedFilter: newHoverAdvancedFilter });\n }\n\n return false;\n }\n\n onLeave(gridPoint: GridPoint): EventHandlerResult {\n const { column } = gridPoint;\n const { hoverAdvancedFilter } = this.irisGrid.state;\n if (hoverAdvancedFilter !== null && column !== hoverAdvancedFilter) {\n this.irisGrid.setState({ hoverAdvancedFilter: null });\n }\n\n return false;\n }\n}\n\nexport default IrisGridFilterMouseHandler;\n"],"mappings":";;;AAAA;AACA,SACEA,gBAAgB,QAGX,iBAAiB;AAGxB;AACA;AACA;AACA,MAAMC,0BAA0B,SAASD,gBAAgB,CAAC;EACxDE,WAAWA,CAACC,QAAkB,EAAE;IAC9B,KAAK,CAAC,CAAC;IAACC,eAAA;IAER,IAAI,CAACD,QAAQ,GAAGA,QAAQ;EAC1B;EAIAE,MAAMA,CAACC,SAAoB,EAAsB;IAC/C,IAAM;MAAEC,CAAC;MAAEC,MAAM;MAAEC;IAAI,CAAC,GAAGH,SAAS;IACpC,IAAIE,MAAM,KAAK,IAAI,IAAIC,GAAG,KAAK,IAAI,EAAE;MACnC,IAAM;QAAEC,gBAAgB;QAAEC;MAAQ,CAAC,GAAG,IAAI,CAACR,QAAQ,CAACS,KAAK;MACzD,IAAI,CAACD,OAAO,EAAE,MAAM,IAAIE,KAAK,CAAC,iBAAiB,CAAC;MAEhD,IAAM;QAAEC;MAAqB,CAAC,GAAGH,OAAO;MACxC,IAAMI,KAAK,GAAG,IAAI,CAACZ,QAAQ,CAACa,QAAQ,CAAC,CAAC;MACtC,IACEN,gBAAgB,IAChBK,KAAK,CAACE,kBAAkB,IAAI,IAAI,IAChCF,KAAK,CAACG,eAAe,IAAI,IAAI,IAC7BX,CAAC,GAAGQ,KAAK,CAACE,kBAAkB,GAAGH,oBAAoB,IACnDP,CAAC,IACCQ,KAAK,CAACE,kBAAkB,GAAGH,oBAAoB,GAC7CC,KAAK,CAACG,eAAe,EACzB;QACA,IAAI,CAACf,QAAQ,CAACgB,cAAc,CAACX,MAAM,CAAC;QACpC,OAAO,IAAI;MACb;IACF;IAEA,OAAO,KAAK;EACd;EAEAY,MAAMA,CAACd,SAAoB,EAAsB;IAC/C,IAAM;MAAEC,CAAC;MAAEC;IAAO,CAAC,GAAGF,SAAS;IAC/B,IAAM;MAAEI,gBAAgB;MAAEW,mBAAmB;MAAEV;IAAQ,CAAC,GACtD,IAAI,CAACR,QAAQ,CAACS,KAAK;IACrB,IAAI,CAACD,OAAO,EAAE,MAAM,IAAIE,KAAK,CAAC,iBAAiB,CAAC;IAChD,IAAM;MAAEC;IAAqB,CAAC,GAAGH,OAAO;IACxC,IAAMI,KAAK,GAAG,IAAI,CAACZ,QAAQ,CAACa,QAAQ,CAAC,CAAC;IAEtC,IAAIM,sBAAsB,GAAG,IAAI;IACjC,IACEZ,gBAAgB,IAChBK,KAAK,CAACE,kBAAkB,IAAI,IAAI,IAChCF,KAAK,CAACG,eAAe,IAAI,IAAI,IAC7BV,MAAM,KAAK,IAAI,IACfD,CAAC,IAAIQ,KAAK,CAACE,kBAAkB,GAAGH,oBAAoB,IACpDP,CAAC,IACCQ,KAAK,CAACE,kBAAkB,GAAGH,oBAAoB,GAAGC,KAAK,CAACG,eAAe,EACzE;MACAI,sBAAsB,GAAGd,MAAM;IACjC;IAEA,IAAIc,sBAAsB,KAAKD,mBAAmB,EAAE;MAClD,IAAI,CAAClB,QAAQ,CAACoB,QAAQ,CAAC;QAAEF,mBAAmB,EAAEC;MAAuB,CAAC,CAAC;IACzE;IAEA,OAAO,KAAK;EACd;EAEAE,OAAOA,CAAClB,SAAoB,EAAsB;IAChD,IAAM;MAAEE;IAAO,CAAC,GAAGF,SAAS;IAC5B,IAAM;MAAEe;IAAoB,CAAC,GAAG,IAAI,CAAClB,QAAQ,CAACS,KAAK;IACnD,IAAIS,mBAAmB,KAAK,IAAI,IAAIb,MAAM,KAAKa,mBAAmB,EAAE;MAClE,IAAI,CAAClB,QAAQ,CAACoB,QAAQ,CAAC;QAAEF,mBAAmB,EAAE;MAAK,CAAC,CAAC;IACvD;IAEA,OAAO,KAAK;EACd;AACF;AAEA,eAAepB,0BAA0B"}
@@ -1 +1 @@
1
- {"version":3,"file":"IrisGridRowTreeMouseHandler.js","names":["GridMouseHandler","GridRowTreeMouseHandler","isExpandableGridModel","assertNotNull","deepEqual","IrisGridRowTreeMouseHandler","constructor","irisGrid","destroyTooltip","setState","expandCellTooltipProps","setCursor","gridPoint","grid","isInTreeBox","cursor","stopPropagation","preventDefault","getButtonPosition","x","y","column","row","renderer","state","props","metrics","model","canvasContext","context","theme","getTheme","rendererState","mouseX","mouseY","depth","depthForRow","left","top","width","height","getExpandButtonPosition","onMove","newProps","isRowExpanded","expandTooltipDisplayValue","onDown","onContextMenu","onWheel","onLeave"],"sources":["../../src/mousehandlers/IrisGridRowTreeMouseHandler.ts"],"sourcesContent":["import {\n EventHandlerResult,\n Grid,\n GridMouseHandler,\n GridPoint,\n GridRowTreeMouseHandler,\n isExpandableGridModel,\n} from '@deephaven/grid';\nimport { assertNotNull } from '@deephaven/utils';\nimport deepEqual from 'deep-equal';\nimport type IrisGrid from '../IrisGrid';\n\nclass IrisGridRowTreeMouseHandler extends GridMouseHandler {\n private irisGrid: IrisGrid;\n\n constructor(irisGrid: IrisGrid) {\n super(750); // Needs to be before GridRowTreeMouseHandler\n\n this.irisGrid = irisGrid;\n }\n\n private destroyTooltip(): void {\n this.irisGrid.setState({ expandCellTooltipProps: null });\n }\n\n private setCursor(gridPoint: GridPoint, grid: Grid): EventHandlerResult {\n if (GridRowTreeMouseHandler.isInTreeBox(gridPoint, grid)) {\n this.cursor = 'pointer';\n return { stopPropagation: false, preventDefault: false };\n }\n\n this.cursor = null;\n return false;\n }\n\n private getButtonPosition({ x, y, column, row }: GridPoint): {\n left: number;\n top: number;\n width: number;\n height: number;\n } | null {\n if (column == null || row == null) {\n return null;\n }\n const { renderer, grid, state, props } = this.irisGrid;\n if (!grid) {\n return null;\n }\n const { metrics } = state;\n const { model } = props;\n\n const { canvasContext: context } = grid;\n const theme = grid.getTheme();\n const rendererState = {\n context,\n mouseX: x,\n mouseY: y,\n metrics,\n model,\n theme,\n };\n\n const depth = isExpandableGridModel(model) ? model.depthForRow(row) : null;\n\n const { left, top, width, height } = renderer.getExpandButtonPosition(\n rendererState,\n depth\n );\n if (left == null || width == null || top == null || height == null) {\n return null;\n }\n\n return { left, top, width, height };\n }\n\n onMove(gridPoint: GridPoint, grid: Grid): EventHandlerResult {\n if (GridRowTreeMouseHandler.isInTreeBox(gridPoint, grid)) {\n const { expandCellTooltipProps } = this.irisGrid.state;\n const { model } = this.irisGrid.props;\n const newProps = this.getButtonPosition(gridPoint);\n const { row } = gridPoint;\n assertNotNull(row);\n const isRowExpanded =\n isExpandableGridModel(model) && model.isRowExpanded(row);\n if (!deepEqual(expandCellTooltipProps, newProps)) {\n this.irisGrid.setState({\n expandCellTooltipProps: newProps,\n expandTooltipDisplayValue: isRowExpanded ? 'collapse' : 'expand',\n });\n }\n } else {\n this.destroyTooltip();\n }\n return this.setCursor(gridPoint, grid);\n }\n\n onDown(): EventHandlerResult {\n this.destroyTooltip();\n return false;\n }\n\n onContextMenu(): EventHandlerResult {\n this.destroyTooltip();\n return false;\n }\n\n onWheel(): EventHandlerResult {\n this.destroyTooltip();\n return false;\n }\n\n onLeave(): EventHandlerResult {\n this.destroyTooltip();\n return false;\n }\n}\n\nexport default IrisGridRowTreeMouseHandler;\n"],"mappings":"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"}
1
+ {"version":3,"file":"IrisGridRowTreeMouseHandler.js","names":["GridMouseHandler","GridRowTreeMouseHandler","isExpandableGridModel","assertNotNull","deepEqual","IrisGridRowTreeMouseHandler","constructor","irisGrid","_defineProperty","destroyTooltip","setState","expandCellTooltipProps","setCursor","gridPoint","grid","isInTreeBox","cursor","stopPropagation","preventDefault","getButtonPosition","_ref","x","y","column","row","renderer","state","props","metrics","model","canvasContext","context","theme","getTheme","rendererState","mouseX","mouseY","depth","depthForRow","left","top","width","height","getExpandButtonPosition","onMove","newProps","isRowExpanded","expandTooltipDisplayValue","onDown","onContextMenu","onWheel","onLeave"],"sources":["../../src/mousehandlers/IrisGridRowTreeMouseHandler.ts"],"sourcesContent":["import {\n EventHandlerResult,\n Grid,\n GridMouseHandler,\n GridPoint,\n GridRowTreeMouseHandler,\n isExpandableGridModel,\n} from '@deephaven/grid';\nimport { assertNotNull } from '@deephaven/utils';\nimport deepEqual from 'deep-equal';\nimport type IrisGrid from '../IrisGrid';\n\nclass IrisGridRowTreeMouseHandler extends GridMouseHandler {\n private irisGrid: IrisGrid;\n\n constructor(irisGrid: IrisGrid) {\n super(750); // Needs to be before GridRowTreeMouseHandler\n\n this.irisGrid = irisGrid;\n }\n\n private destroyTooltip(): void {\n this.irisGrid.setState({ expandCellTooltipProps: null });\n }\n\n private setCursor(gridPoint: GridPoint, grid: Grid): EventHandlerResult {\n if (GridRowTreeMouseHandler.isInTreeBox(gridPoint, grid)) {\n this.cursor = 'pointer';\n return { stopPropagation: false, preventDefault: false };\n }\n\n this.cursor = null;\n return false;\n }\n\n private getButtonPosition({ x, y, column, row }: GridPoint): {\n left: number;\n top: number;\n width: number;\n height: number;\n } | null {\n if (column == null || row == null) {\n return null;\n }\n const { renderer, grid, state, props } = this.irisGrid;\n if (!grid) {\n return null;\n }\n const { metrics } = state;\n const { model } = props;\n\n const { canvasContext: context } = grid;\n const theme = grid.getTheme();\n const rendererState = {\n context,\n mouseX: x,\n mouseY: y,\n metrics,\n model,\n theme,\n };\n\n const depth = isExpandableGridModel(model) ? model.depthForRow(row) : null;\n\n const { left, top, width, height } = renderer.getExpandButtonPosition(\n rendererState,\n depth\n );\n if (left == null || width == null || top == null || height == null) {\n return null;\n }\n\n return { left, top, width, height };\n }\n\n onMove(gridPoint: GridPoint, grid: Grid): EventHandlerResult {\n if (GridRowTreeMouseHandler.isInTreeBox(gridPoint, grid)) {\n const { expandCellTooltipProps } = this.irisGrid.state;\n const { model } = this.irisGrid.props;\n const newProps = this.getButtonPosition(gridPoint);\n const { row } = gridPoint;\n assertNotNull(row);\n const isRowExpanded =\n isExpandableGridModel(model) && model.isRowExpanded(row);\n if (!deepEqual(expandCellTooltipProps, newProps)) {\n this.irisGrid.setState({\n expandCellTooltipProps: newProps,\n expandTooltipDisplayValue: isRowExpanded ? 'collapse' : 'expand',\n });\n }\n } else {\n this.destroyTooltip();\n }\n return this.setCursor(gridPoint, grid);\n }\n\n onDown(): EventHandlerResult {\n this.destroyTooltip();\n return false;\n }\n\n onContextMenu(): EventHandlerResult {\n this.destroyTooltip();\n return false;\n }\n\n onWheel(): EventHandlerResult {\n this.destroyTooltip();\n return false;\n }\n\n onLeave(): EventHandlerResult {\n this.destroyTooltip();\n return false;\n }\n}\n\nexport default IrisGridRowTreeMouseHandler;\n"],"mappings":"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"}