@deephaven/iris-grid 0.16.1-beta.2 → 0.16.1-beta.4

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 (103) hide show
  1. package/dist/AdvancedFilterCreator.js.map +1 -1
  2. package/dist/AdvancedFilterCreatorFilterItem.js.map +1 -1
  3. package/dist/AdvancedFilterCreatorSelectValue.js.map +1 -1
  4. package/dist/AdvancedFilterCreatorSelectValueList.js.map +1 -1
  5. package/dist/ColumnHeaderGroup.js.map +1 -1
  6. package/dist/ColumnStatistics.js.map +1 -1
  7. package/dist/CommonTypes.js.map +1 -1
  8. package/dist/CrossColumnSearch.js.map +1 -1
  9. package/dist/FilterInputField.js.map +1 -1
  10. package/dist/GotoRow.js.map +1 -1
  11. package/dist/IrisGrid.js.map +1 -1
  12. package/dist/IrisGridBottomBar.js.map +1 -1
  13. package/dist/IrisGridCellOverflowModal.js.map +1 -1
  14. package/dist/IrisGridCopyHandler.js.map +1 -1
  15. package/dist/IrisGridMetricCalculator.js.map +1 -1
  16. package/dist/IrisGridModel.js.map +1 -1
  17. package/dist/IrisGridModelFactory.js.map +1 -1
  18. package/dist/IrisGridModelUpdater.js.map +1 -1
  19. package/dist/IrisGridPartitionSelector.js.map +1 -1
  20. package/dist/IrisGridProxyModel.js.map +1 -1
  21. package/dist/IrisGridRenderer.js.map +1 -1
  22. package/dist/IrisGridShortcuts.js.map +1 -1
  23. package/dist/IrisGridTableModel.js.map +1 -1
  24. package/dist/IrisGridTableModelTemplate.js.map +1 -1
  25. package/dist/IrisGridTestUtils.js.map +1 -1
  26. package/dist/IrisGridTheme.js.map +1 -1
  27. package/dist/IrisGridTreeTableModel.js.map +1 -1
  28. package/dist/IrisGridUtils.js.map +1 -1
  29. package/dist/MissingKeyError.js.map +1 -1
  30. package/dist/PartitionSelectorSearch.js.map +1 -1
  31. package/dist/PendingDataBottomBar.js.map +1 -1
  32. package/dist/TableViewportUpdater.js.map +1 -1
  33. package/dist/ToastBottomBar.js.map +1 -1
  34. package/dist/TreeTableViewportUpdater.js.map +1 -1
  35. package/dist/declaration.d.js.map +1 -1
  36. package/dist/format-context-menus/CustomFormatAction.js.map +1 -1
  37. package/dist/format-context-menus/DateTimeFormatContextMenu.js.map +1 -1
  38. package/dist/format-context-menus/DecimalFormatContextMenu.js.map +1 -1
  39. package/dist/format-context-menus/FormatContextMenuUtils.js.map +1 -1
  40. package/dist/format-context-menus/IntegerFormatContextMenu.js.map +1 -1
  41. package/dist/format-context-menus/index.js.map +1 -1
  42. package/dist/index.js.map +1 -1
  43. package/dist/key-handlers/ClearFilterKeyHandler.js.map +1 -1
  44. package/dist/key-handlers/CopyKeyHandler.js.map +1 -1
  45. package/dist/key-handlers/ReverseKeyHandler.js.map +1 -1
  46. package/dist/key-handlers/index.js.map +1 -1
  47. package/dist/mousehandlers/IrisGridCellOverflowMouseHandler.js.map +1 -1
  48. package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.js.map +1 -1
  49. package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.js.map +1 -1
  50. package/dist/mousehandlers/IrisGridContextMenuHandler.js.map +1 -1
  51. package/dist/mousehandlers/IrisGridDataSelectMouseHandler.js.map +1 -1
  52. package/dist/mousehandlers/IrisGridFilterMouseHandler.js.map +1 -1
  53. package/dist/mousehandlers/IrisGridSortMouseHandler.js.map +1 -1
  54. package/dist/mousehandlers/PendingMouseHandler.js.map +1 -1
  55. package/dist/mousehandlers/index.js.map +1 -1
  56. package/dist/sidebar/AdvancedSettings.js.map +1 -1
  57. package/dist/sidebar/AdvancedSettingsMenu.js.map +1 -1
  58. package/dist/sidebar/AdvancedSettingsType.js.map +1 -1
  59. package/dist/sidebar/ChartBuilder.js.map +1 -1
  60. package/dist/sidebar/CustomColumnBuilder.js +1 -1
  61. package/dist/sidebar/CustomColumnBuilder.js.map +1 -1
  62. package/dist/sidebar/CustomColumnInput.js +1 -1
  63. package/dist/sidebar/CustomColumnInput.js.map +1 -1
  64. package/dist/sidebar/InputEditor.js.map +1 -1
  65. package/dist/sidebar/OptionType.js.map +1 -1
  66. package/dist/sidebar/RollupRows.js +1 -1
  67. package/dist/sidebar/RollupRows.js.map +1 -1
  68. package/dist/sidebar/SelectDistinctBuilder.js.map +1 -1
  69. package/dist/sidebar/TableCsvExporter.js.map +1 -1
  70. package/dist/sidebar/TableSaver.js.map +1 -1
  71. package/dist/sidebar/VisibilityOrderingBuilder.js +1 -1
  72. package/dist/sidebar/VisibilityOrderingBuilder.js.map +1 -1
  73. package/dist/sidebar/aggregations/AggregationEdit.js.map +1 -1
  74. package/dist/sidebar/aggregations/AggregationOperation.js.map +1 -1
  75. package/dist/sidebar/aggregations/AggregationUtils.js.map +1 -1
  76. package/dist/sidebar/aggregations/Aggregations.js.map +1 -1
  77. package/dist/sidebar/aggregations/index.js.map +1 -1
  78. package/dist/sidebar/conditional-formatting/ColumnFormatEditor.js.map +1 -1
  79. package/dist/sidebar/conditional-formatting/ConditionEditor.js.map +1 -1
  80. package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.js.map +1 -1
  81. package/dist/sidebar/conditional-formatting/ConditionalFormattingAPIUtils.js.map +1 -1
  82. package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js +1 -1
  83. package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js.map +1 -1
  84. package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js.map +1 -1
  85. package/dist/sidebar/conditional-formatting/RowFormatEditor.js.map +1 -1
  86. package/dist/sidebar/conditional-formatting/StyleEditor.js.map +1 -1
  87. package/dist/sidebar/icons/BarIcon.js +1 -1
  88. package/dist/sidebar/icons/BarIcon.js.map +1 -1
  89. package/dist/sidebar/icons/FormatColumnWhereIcon.js +1 -1
  90. package/dist/sidebar/icons/FormatColumnWhereIcon.js.map +1 -1
  91. package/dist/sidebar/icons/FormatRowWhereIcon.js +1 -1
  92. package/dist/sidebar/icons/FormatRowWhereIcon.js.map +1 -1
  93. package/dist/sidebar/icons/HistogramIcon.js +1 -1
  94. package/dist/sidebar/icons/HistogramIcon.js.map +1 -1
  95. package/dist/sidebar/icons/LineIcon.js +1 -1
  96. package/dist/sidebar/icons/LineIcon.js.map +1 -1
  97. package/dist/sidebar/icons/PieIcon.js +1 -1
  98. package/dist/sidebar/icons/PieIcon.js.map +1 -1
  99. package/dist/sidebar/icons/ScatterIcon.js +1 -1
  100. package/dist/sidebar/icons/ScatterIcon.js.map +1 -1
  101. package/dist/sidebar/icons/index.js.map +1 -1
  102. package/dist/sidebar/index.js.map +1 -1
  103. package/package.json +16 -16
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/mousehandlers/IrisGridColumnTooltipMouseHandler.ts"],"names":["GridMouseHandler","IrisGridColumnTooltipMouseHandler","constructor","irisGrid","hideColumnTooltip","tooltip","stopTimer","hide","onDown","onContextMenu","onWheel","onLeave","gridPoint","grid","event","relatedTarget","MouseEvent","nativeEvent","popper","current","Element","element","contains","onMove","column","row","columnHeaderDepth","shownColumnTooltip","state","newTooltip","setState"],"mappings":";;AAAA;AACA,SACEA,gBADF,QAMO,iBANP;;AASA;AACA;AACA;AACA,MAAMC,iCAAN,SAAgDD,gBAAhD,CAAiE;AAC/DE,EAAAA,WAAW,CAACC,QAAD,EAAqB;AAC9B;;AAD8B;;AAG9B,SAAKA,QAAL,GAAgBA,QAAhB;AACD;;AAIOC,EAAAA,iBAAiB,GAAS;AAChC,QAAM;AAAEC,MAAAA;AAAF,QAAc,KAAKF,QAAzB;;AACA,QAAIE,OAAJ,EAAa;AACXA,MAAAA,OAAO,CAACC,SAAR;AACAD,MAAAA,OAAO,CAACE,IAAR;AACD;AACF;;AAEDC,EAAAA,MAAM,GAAuB;AAC3B,SAAKJ,iBAAL;AACA,WAAO,KAAP;AACD;;AAEDK,EAAAA,aAAa,GAAuB;AAClC,SAAKL,iBAAL;AACA,WAAO,KAAP;AACD;;AAEDM,EAAAA,OAAO,GAAuB;AAC5B,SAAKN,iBAAL;AACA,WAAO,KAAP;AACD;;AAEDO,EAAAA,OAAO,CACLC,SADK,EAELC,IAFK,EAGLC,KAHK,EAIe;AACpB;AACJ;AACA;AACA;AACA;AACA;AACA;AACI,QAAM;AAAEC,MAAAA;AAAF,QACJD,KAAK,YAAYE,UAAjB,GAA8BF,KAA9B,GAAsCA,KAAK,CAACG,WAD9C;AAGA,QAAM;AAAEZ,MAAAA;AAAF,QAAc,KAAKF,QAAzB;;AACA,QAAI,CAACE,OAAL,EAAc;AACZ,aAAO,KAAP;AACD;;AAED,QAAMa,MAAM,GAAGb,OAAO,CAACa,MAAR,CAAeC,OAA9B;;AAEA,QACED,MAAM,IACNH,aAAa,YAAYK,OADzB,IAEAF,MAAM,CAACG,OAAP,CAAeC,QAAf,CAAwBP,aAAxB,CAHF,EAIE;AACA;AACA,aAAO,KAAP;AACD;;AACD,SAAKX,iBAAL;AACA,WAAO,KAAP;AACD;;AAEDmB,EAAAA,MAAM,CAACX,SAAD,EAA2C;AAC/C,QAAM;AAAEY,MAAAA,MAAF;AAAUC,MAAAA,GAAV;AAAeC,MAAAA;AAAf,QAAqCd,SAA3C;AACA,QAAM;AAAEe,MAAAA;AAAF,QAAyB,KAAKxB,QAAL,CAAcyB,KAA7C;AACA,QAAIC,UAAU,GAAG,IAAjB;;AACA,QAAIL,MAAM,KAAK,IAAX,IAAmBC,GAAG,KAAK,IAA3B,IAAmCC,iBAAiB,KAAK,CAA7D,EAAgE;AAC9DG,MAAAA,UAAU,GAAGL,MAAb;AACD;;AAED,QAAIK,UAAU,KAAKF,kBAAnB,EAAuC;AACrC,WAAKxB,QAAL,CAAc2B,QAAd,CAAuB;AAAEH,QAAAA,kBAAkB,EAAEE;AAAtB,OAAvB;AACD;;AAED,WAAO,KAAP;AACD;;AA/E8D;;AAkFjE,eAAe5B,iCAAf","sourcesContent":["/* eslint class-methods-use-this: \"off\" */\nimport {\n GridMouseHandler,\n GridPoint,\n EventHandlerResult,\n Grid,\n GridMouseEvent,\n} from '@deephaven/grid';\nimport type { IrisGrid } from '../IrisGrid';\n\n/**\n * Detects mouse hover over column headers and displays the appropriate tooltip\n */\nclass IrisGridColumnTooltipMouseHandler extends GridMouseHandler {\n constructor(irisGrid: IrisGrid) {\n super();\n\n this.irisGrid = irisGrid;\n }\n\n private irisGrid: IrisGrid;\n\n private hideColumnTooltip(): void {\n const { tooltip } = this.irisGrid;\n if (tooltip) {\n tooltip.stopTimer();\n tooltip.hide();\n }\n }\n\n onDown(): EventHandlerResult {\n this.hideColumnTooltip();\n return false;\n }\n\n onContextMenu(): EventHandlerResult {\n this.hideColumnTooltip();\n return false;\n }\n\n onWheel(): EventHandlerResult {\n this.hideColumnTooltip();\n return false;\n }\n\n onLeave(\n gridPoint: GridPoint,\n grid: Grid,\n event: GridMouseEvent\n ): EventHandlerResult {\n /**\n * This should always be a react event\n * React seems to be handling onMouseLeave incorrectly at times\n * When moving to the padding between the column and popper, React sets\n * event.relatedTarget to window, but event.nativeEvent.relatedTarget is the popper.\n * It's possibly related to popper being rendered in a portal\n */\n const { relatedTarget } =\n event instanceof MouseEvent ? event : event.nativeEvent;\n\n const { tooltip } = this.irisGrid;\n if (!tooltip) {\n return false;\n }\n\n const popper = tooltip.popper.current;\n\n if (\n popper &&\n relatedTarget instanceof Element &&\n popper.element.contains(relatedTarget)\n ) {\n // Do not hide the popper if we moved the cursor from canvas to popper\n return false;\n }\n this.hideColumnTooltip();\n return false;\n }\n\n onMove(gridPoint: GridPoint): EventHandlerResult {\n const { column, row, columnHeaderDepth } = gridPoint;\n const { shownColumnTooltip } = this.irisGrid.state;\n let newTooltip = null;\n if (column !== null && row === null && columnHeaderDepth === 0) {\n newTooltip = column;\n }\n\n if (newTooltip !== shownColumnTooltip) {\n this.irisGrid.setState({ shownColumnTooltip: newTooltip });\n }\n\n return false;\n }\n}\n\nexport default IrisGridColumnTooltipMouseHandler;\n"],"file":"IrisGridColumnTooltipMouseHandler.js"}
1
+ {"version":3,"file":"IrisGridColumnTooltipMouseHandler.js","names":["GridMouseHandler","IrisGridColumnTooltipMouseHandler","constructor","irisGrid","hideColumnTooltip","tooltip","stopTimer","hide","onDown","onContextMenu","onWheel","onLeave","gridPoint","grid","event","relatedTarget","MouseEvent","nativeEvent","popper","current","Element","element","contains","onMove","column","row","columnHeaderDepth","shownColumnTooltip","state","newTooltip","setState"],"sources":["../../src/mousehandlers/IrisGridColumnTooltipMouseHandler.ts"],"sourcesContent":["/* eslint class-methods-use-this: \"off\" */\nimport {\n GridMouseHandler,\n GridPoint,\n EventHandlerResult,\n Grid,\n GridMouseEvent,\n} from '@deephaven/grid';\nimport type { IrisGrid } from '../IrisGrid';\n\n/**\n * Detects mouse hover over column headers and displays the appropriate tooltip\n */\nclass IrisGridColumnTooltipMouseHandler extends GridMouseHandler {\n constructor(irisGrid: IrisGrid) {\n super();\n\n this.irisGrid = irisGrid;\n }\n\n private irisGrid: IrisGrid;\n\n private hideColumnTooltip(): void {\n const { tooltip } = this.irisGrid;\n if (tooltip) {\n tooltip.stopTimer();\n tooltip.hide();\n }\n }\n\n onDown(): EventHandlerResult {\n this.hideColumnTooltip();\n return false;\n }\n\n onContextMenu(): EventHandlerResult {\n this.hideColumnTooltip();\n return false;\n }\n\n onWheel(): EventHandlerResult {\n this.hideColumnTooltip();\n return false;\n }\n\n onLeave(\n gridPoint: GridPoint,\n grid: Grid,\n event: GridMouseEvent\n ): EventHandlerResult {\n /**\n * This should always be a react event\n * React seems to be handling onMouseLeave incorrectly at times\n * When moving to the padding between the column and popper, React sets\n * event.relatedTarget to window, but event.nativeEvent.relatedTarget is the popper.\n * It's possibly related to popper being rendered in a portal\n */\n const { relatedTarget } =\n event instanceof MouseEvent ? event : event.nativeEvent;\n\n const { tooltip } = this.irisGrid;\n if (!tooltip) {\n return false;\n }\n\n const popper = tooltip.popper.current;\n\n if (\n popper &&\n relatedTarget instanceof Element &&\n popper.element.contains(relatedTarget)\n ) {\n // Do not hide the popper if we moved the cursor from canvas to popper\n return false;\n }\n this.hideColumnTooltip();\n return false;\n }\n\n onMove(gridPoint: GridPoint): EventHandlerResult {\n const { column, row, columnHeaderDepth } = gridPoint;\n const { shownColumnTooltip } = this.irisGrid.state;\n let newTooltip = null;\n if (column !== null && row === null && columnHeaderDepth === 0) {\n newTooltip = column;\n }\n\n if (newTooltip !== shownColumnTooltip) {\n this.irisGrid.setState({ shownColumnTooltip: newTooltip });\n }\n\n return false;\n }\n}\n\nexport default IrisGridColumnTooltipMouseHandler;\n"],"mappings":";;AAAA;AACA,SACEA,gBADF,QAMO,iBANP;;AASA;AACA;AACA;AACA,MAAMC,iCAAN,SAAgDD,gBAAhD,CAAiE;EAC/DE,WAAW,CAACC,QAAD,EAAqB;IAC9B;;IAD8B;;IAG9B,KAAKA,QAAL,GAAgBA,QAAhB;EACD;;EAIOC,iBAAiB,GAAS;IAChC,IAAM;MAAEC;IAAF,IAAc,KAAKF,QAAzB;;IACA,IAAIE,OAAJ,EAAa;MACXA,OAAO,CAACC,SAAR;MACAD,OAAO,CAACE,IAAR;IACD;EACF;;EAEDC,MAAM,GAAuB;IAC3B,KAAKJ,iBAAL;IACA,OAAO,KAAP;EACD;;EAEDK,aAAa,GAAuB;IAClC,KAAKL,iBAAL;IACA,OAAO,KAAP;EACD;;EAEDM,OAAO,GAAuB;IAC5B,KAAKN,iBAAL;IACA,OAAO,KAAP;EACD;;EAEDO,OAAO,CACLC,SADK,EAELC,IAFK,EAGLC,KAHK,EAIe;IACpB;AACJ;AACA;AACA;AACA;AACA;AACA;IACI,IAAM;MAAEC;IAAF,IACJD,KAAK,YAAYE,UAAjB,GAA8BF,KAA9B,GAAsCA,KAAK,CAACG,WAD9C;IAGA,IAAM;MAAEZ;IAAF,IAAc,KAAKF,QAAzB;;IACA,IAAI,CAACE,OAAL,EAAc;MACZ,OAAO,KAAP;IACD;;IAED,IAAMa,MAAM,GAAGb,OAAO,CAACa,MAAR,CAAeC,OAA9B;;IAEA,IACED,MAAM,IACNH,aAAa,YAAYK,OADzB,IAEAF,MAAM,CAACG,OAAP,CAAeC,QAAf,CAAwBP,aAAxB,CAHF,EAIE;MACA;MACA,OAAO,KAAP;IACD;;IACD,KAAKX,iBAAL;IACA,OAAO,KAAP;EACD;;EAEDmB,MAAM,CAACX,SAAD,EAA2C;IAC/C,IAAM;MAAEY,MAAF;MAAUC,GAAV;MAAeC;IAAf,IAAqCd,SAA3C;IACA,IAAM;MAAEe;IAAF,IAAyB,KAAKxB,QAAL,CAAcyB,KAA7C;IACA,IAAIC,UAAU,GAAG,IAAjB;;IACA,IAAIL,MAAM,KAAK,IAAX,IAAmBC,GAAG,KAAK,IAA3B,IAAmCC,iBAAiB,KAAK,CAA7D,EAAgE;MAC9DG,UAAU,GAAGL,MAAb;IACD;;IAED,IAAIK,UAAU,KAAKF,kBAAnB,EAAuC;MACrC,KAAKxB,QAAL,CAAc2B,QAAd,CAAuB;QAAEH,kBAAkB,EAAEE;MAAtB,CAAvB;IACD;;IAED,OAAO,KAAP;EACD;;AA/E8D;;AAkFjE,eAAe5B,iCAAf"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/mousehandlers/IrisGridContextMenuHandler.tsx"],"names":["React","FontAwesomeIcon","dhFilterFilled","vsRemove","vsCheck","vsFilter","debounce","ContextActions","ContextActionUtils","GLOBAL_SHORTCUTS","GridMouseHandler","isEditableGridModel","dh","TableColumnFormatter","DateTimeColumnFormatter","TableUtils","Log","assertNotNull","DateTimeFormatContextMenu","DecimalFormatContextMenu","IntegerFormatContextMenu","SHORTCUTS","log","module","DEBOUNCE_UPDATE_FORMAT","CONTEXT_MENU_DATE_FORMAT","IrisGridContextMenuHandler","getQuickFilterCondition","columnFilter","newColumnFilter","operator","and","or","getQuickFilterText","filterText","newFilterText","getOperatorAsText","getNumberValueEqualsFilter","column","value","filter","Number","POSITIVE_INFINITY","FilterCondition","invoke","greaterThan","FilterValue","ofNumber","NEGATIVE_INFINITY","lessThan","isNaN","filterValue","getFilterValueForNumberOrChar","type","eq","columnType","isCharType","ofString","String","fromCharCode","constructor","irisGrid","debouncedUpdateCustomFormat","handleFormatSelection","componentWillUnmount","flush","getHeaderActions","modelColumn","gridPoint","columnIndex","model","props","columns","actions","metrics","reverseType","quickFilters","advancedFilters","searchFilter","state","theme","getTheme","filterIconColor","filterBarActiveColor","contextMenuSortIconColor","contextMenuReverseIconColor","modelSort","sort","columnSort","getSortForColumn","hasReverse","REVERSE_TYPE","NONE","userColumnWidths","isColumnHidden","values","some","columnWidth","isColumnFrozen","push","title","group","GROUP_HIDE_COLUMNS","action","hideColumnByVisibleIndex","unFreezeColumnByColumnName","name","freezeColumnByColumnName","order","showAllColumns","disabled","icon","iconColor","shortcut","TABLE","TOGGLE_QUICK_FILTER","GROUP_FILTER","toggleFilterBar","get","handleAdvancedMenuOpened","CLEAR_FILTERS","clearAllFilters","size","GROUP_SORT","sortByActions","length","additionalSortActions","sortColumn","COLUMN_SORT_DIRECTION","none","isReversible","REVERSE","reverse","POST_SORT","GROUP_COPY","copyToClipboard","textForColumnHeader","catch","e","error","isDateType","GROUP_FORMAT","dateFormatActions","isNumberType","numberFormatActions","undefined","getCellActions","grid","row","rowIndex","canCopy","modelRow","getModelRow","valueForCell","valueText","textForCell","settings","dateFilterFormatter","timeZone","showTimeZone","showTSeparator","defaultDateTimeFormatString","previewFilterFormatter","isFilterable","filterMenu","nullFilterActions","groups","high","isBooleanType","booleanFilterActions","numberValueText","numberFilterActions","dateValueText","format","previewValue","dateFilterActions","stringFilterActions","gotoRow","GOTO_ROW","GROUP_GOTO","toggleGotoRow","copyCell","onContextMenu","event","y","columnHeaderDepth","getModelColumn","isFilterBarShown","selectedRanges","columnHeaderHeight","gridY","columnHeaderMaxDepth","removeColumnFilter","has","COPY","copyRanges","isEditable","GROUP_EDIT","deleteRanges","gridWrapper","triggerMenu","pageX","pageY","formatter","selectedFormat","getColumnFormat","formatOptions","getOptions","i","description","isSelected","modelIndex","getColumnIndexByName","isDecimalType","isIntegerType","TYPE_CONTEXT_CUSTOM","quickFilter","newQuickFilter","text","menuElement","setQuickFilter","low","notEq","contains","not","isFinite","valueFilter","greaterThanOrEqualTo","lessThanOrEqualTo","isTrue","isFalse","isNull","sortActions","ascending","checkColumnSort","descending","color","isMacPlatform","direction","isAbs"],"mappings":"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","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} from '@deephaven/components';\nimport {\n EventHandlerResult,\n Grid,\n GridMouseHandler,\n GridPoint,\n isEditableGridModel,\n ModelIndex,\n VisibleIndex,\n} from '@deephaven/grid';\nimport dh, {\n Column,\n FilterCondition,\n FilterValue,\n Sort,\n} from '@deephaven/jsapi-shim';\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 } 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_GOTO = ContextActions.groups.high + 51;\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\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 /**\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 static getNumberValueEqualsFilter(\n column: Column,\n value: number\n ): FilterCondition {\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 = IrisGridContextMenuHandler.getFilterValueForNumberOrChar(\n column.type,\n value\n );\n return columnFilter.eq(filterValue);\n }\n\n static getFilterValueForNumberOrChar(\n columnType: string,\n value: unknown\n ): FilterValue {\n return TableUtils.isCharType(columnType)\n ? dh.FilterValue.ofString(String.fromCharCode(value as number))\n : dh.FilterValue.ofNumber(value);\n }\n\n irisGrid: IrisGrid;\n\n debouncedUpdateCustomFormat: DebouncedFunc<\n (modelIndex: number, selectedFormat: TableColumnFormat | null) => void\n >;\n\n constructor(irisGrid: IrisGrid) {\n super();\n\n this.debouncedUpdateCustomFormat = debounce(\n irisGrid.handleFormatSelection,\n DEBOUNCE_UPDATE_FORMAT\n );\n\n this.irisGrid = irisGrid;\n }\n\n componentWillUnmount(): void {\n this.debouncedUpdateCustomFormat.flush();\n }\n\n getHeaderActions(modelColumn: number, gridPoint: GridPoint): ContextAction[] {\n const { irisGrid } = this;\n const { column: columnIndex } = gridPoint;\n assertNotNull(columnIndex);\n const { model } = irisGrid.props;\n const { columns } = model;\n const column = columns[modelColumn];\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, modelColumn);\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 isColumnFrozen = model.isColumnFrozen(columnIndex as VisibleIndex);\n actions.push({\n title: 'Hide Column',\n group: IrisGridContextMenuHandler.GROUP_HIDE_COLUMNS,\n action: () => {\n this.irisGrid.hideColumnByVisibleIndex(columnIndex as VisibleIndex);\n },\n });\n actions.push({\n title: isColumnFrozen ? 'Unfreeze Column' : 'Freeze Column',\n group: IrisGridContextMenuHandler.GROUP_HIDE_COLUMNS,\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(columnIndex);\n },\n });\n actions.push({\n title: 'Advanced Filters',\n icon: advancedFilters.get(modelColumn) ? dhFilterFilled : vsFilter,\n iconColor: filterIconColor,\n group: IrisGridContextMenuHandler.GROUP_FILTER,\n order: 20,\n action: () => {\n this.irisGrid.handleAdvancedMenuOpened(columnIndex);\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, modelColumn, columnSort),\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 group: IrisGridContextMenuHandler.GROUP_SORT,\n order: 20,\n actions: this.additionalSortActions(column, modelColumn),\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 columnIndex,\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 ContextActionUtils.copyToClipboard(\n model.textForColumnHeader(modelColumn) ?? ''\n ).catch(e => log.error('Unable to copy header', e));\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 { 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({\n timeZone: settings?.timeZone,\n showTimeZone: false,\n showTSeparator: true,\n defaultDateTimeFormatString: CONTEXT_MENU_DATE_FORMAT,\n });\n const previewFilterFormatter = new DateTimeColumnFormatter({\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 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 (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 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: () => this.irisGrid.toggleGotoRow(`${rowIndex + 1}`),\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 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 = [] as ContextAction[];\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.pageX,\n event.pageY,\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 } = formatOptions[\n i\n ];\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 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 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 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 &&\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 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 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 `=${valueText}`,\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 `!=${valueText}`,\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.filter().contains(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: '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.filter().contains(filterValue).not(),\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: '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.filter().invoke('startsWith', 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: '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.filter().invoke('endsWith', 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 numberFilterActions(\n column: Column,\n valueText: string,\n value: unknown,\n quickFilter?: QuickFilter | null,\n operator?: '&&' | '||' | null\n ): ContextAction[] {\n const filterValue = IrisGridContextMenuHandler.getFilterValueForNumberOrChar(\n column.type,\n 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 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 = IrisGridContextMenuHandler.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 = IrisGridContextMenuHandler.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 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 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 &quot;null&quot;\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' : '^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"],"file":"IrisGridContextMenuHandler.js"}
1
+ {"version":3,"file":"IrisGridContextMenuHandler.js","names":["React","FontAwesomeIcon","dhFilterFilled","vsRemove","vsCheck","vsFilter","debounce","ContextActions","ContextActionUtils","GLOBAL_SHORTCUTS","GridMouseHandler","isEditableGridModel","dh","TableColumnFormatter","DateTimeColumnFormatter","TableUtils","Log","assertNotNull","DateTimeFormatContextMenu","DecimalFormatContextMenu","IntegerFormatContextMenu","SHORTCUTS","log","module","DEBOUNCE_UPDATE_FORMAT","CONTEXT_MENU_DATE_FORMAT","IrisGridContextMenuHandler","getQuickFilterCondition","columnFilter","newColumnFilter","operator","and","or","getQuickFilterText","filterText","newFilterText","getOperatorAsText","getNumberValueEqualsFilter","column","value","filter","Number","POSITIVE_INFINITY","FilterCondition","invoke","greaterThan","FilterValue","ofNumber","NEGATIVE_INFINITY","lessThan","isNaN","filterValue","getFilterValueForNumberOrChar","type","eq","columnType","isCharType","ofString","String","fromCharCode","constructor","irisGrid","debouncedUpdateCustomFormat","handleFormatSelection","componentWillUnmount","flush","getHeaderActions","modelColumn","gridPoint","columnIndex","model","props","columns","actions","metrics","reverseType","quickFilters","advancedFilters","searchFilter","state","theme","getTheme","filterIconColor","filterBarActiveColor","contextMenuSortIconColor","contextMenuReverseIconColor","modelSort","sort","columnSort","getSortForColumn","hasReverse","REVERSE_TYPE","NONE","userColumnWidths","isColumnHidden","values","some","columnWidth","isColumnFrozen","push","title","group","GROUP_HIDE_COLUMNS","action","hideColumnByVisibleIndex","unFreezeColumnByColumnName","name","freezeColumnByColumnName","order","showAllColumns","disabled","icon","iconColor","shortcut","TABLE","TOGGLE_QUICK_FILTER","GROUP_FILTER","toggleFilterBar","get","handleAdvancedMenuOpened","CLEAR_FILTERS","clearAllFilters","size","GROUP_SORT","sortByActions","length","additionalSortActions","sortColumn","COLUMN_SORT_DIRECTION","none","isReversible","REVERSE","reverse","POST_SORT","GROUP_COPY","copyToClipboard","textForColumnHeader","catch","e","error","isDateType","GROUP_FORMAT","dateFormatActions","isNumberType","numberFormatActions","undefined","getCellActions","grid","row","rowIndex","canCopy","modelRow","getModelRow","valueForCell","valueText","textForCell","settings","dateFilterFormatter","timeZone","showTimeZone","showTSeparator","defaultDateTimeFormatString","previewFilterFormatter","isFilterable","filterMenu","nullFilterActions","groups","high","isBooleanType","booleanFilterActions","numberValueText","numberFilterActions","dateValueText","format","previewValue","dateFilterActions","stringFilterActions","gotoRow","GOTO_ROW","GROUP_GOTO","toggleGotoRow","copyCell","onContextMenu","event","y","columnHeaderDepth","getModelColumn","isFilterBarShown","selectedRanges","columnHeaderHeight","gridY","columnHeaderMaxDepth","removeColumnFilter","has","COPY","copyRanges","isEditable","GROUP_EDIT","deleteRanges","gridWrapper","triggerMenu","pageX","pageY","formatter","selectedFormat","getColumnFormat","formatOptions","getOptions","i","description","isSelected","modelIndex","getColumnIndexByName","isDecimalType","isIntegerType","TYPE_CONTEXT_CUSTOM","quickFilter","newQuickFilter","text","menuElement","setQuickFilter","low","notEq","contains","not","isFinite","valueFilter","greaterThanOrEqualTo","lessThanOrEqualTo","isTrue","isFalse","isNull","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} from '@deephaven/components';\nimport {\n EventHandlerResult,\n Grid,\n GridMouseHandler,\n GridPoint,\n isEditableGridModel,\n ModelIndex,\n VisibleIndex,\n} from '@deephaven/grid';\nimport dh, {\n Column,\n FilterCondition,\n FilterValue,\n Sort,\n} from '@deephaven/jsapi-shim';\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 } 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_GOTO = ContextActions.groups.high + 51;\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\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 /**\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 static getNumberValueEqualsFilter(\n column: Column,\n value: number\n ): FilterCondition {\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 = IrisGridContextMenuHandler.getFilterValueForNumberOrChar(\n column.type,\n value\n );\n return columnFilter.eq(filterValue);\n }\n\n static getFilterValueForNumberOrChar(\n columnType: string,\n value: unknown\n ): FilterValue {\n return TableUtils.isCharType(columnType)\n ? dh.FilterValue.ofString(String.fromCharCode(value as number))\n : dh.FilterValue.ofNumber(value);\n }\n\n irisGrid: IrisGrid;\n\n debouncedUpdateCustomFormat: DebouncedFunc<\n (modelIndex: number, selectedFormat: TableColumnFormat | null) => void\n >;\n\n constructor(irisGrid: IrisGrid) {\n super();\n\n this.debouncedUpdateCustomFormat = debounce(\n irisGrid.handleFormatSelection,\n DEBOUNCE_UPDATE_FORMAT\n );\n\n this.irisGrid = irisGrid;\n }\n\n componentWillUnmount(): void {\n this.debouncedUpdateCustomFormat.flush();\n }\n\n getHeaderActions(modelColumn: number, gridPoint: GridPoint): ContextAction[] {\n const { irisGrid } = this;\n const { column: columnIndex } = gridPoint;\n assertNotNull(columnIndex);\n const { model } = irisGrid.props;\n const { columns } = model;\n const column = columns[modelColumn];\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, modelColumn);\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 isColumnFrozen = model.isColumnFrozen(columnIndex as VisibleIndex);\n actions.push({\n title: 'Hide Column',\n group: IrisGridContextMenuHandler.GROUP_HIDE_COLUMNS,\n action: () => {\n this.irisGrid.hideColumnByVisibleIndex(columnIndex as VisibleIndex);\n },\n });\n actions.push({\n title: isColumnFrozen ? 'Unfreeze Column' : 'Freeze Column',\n group: IrisGridContextMenuHandler.GROUP_HIDE_COLUMNS,\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(columnIndex);\n },\n });\n actions.push({\n title: 'Advanced Filters',\n icon: advancedFilters.get(modelColumn) ? dhFilterFilled : vsFilter,\n iconColor: filterIconColor,\n group: IrisGridContextMenuHandler.GROUP_FILTER,\n order: 20,\n action: () => {\n this.irisGrid.handleAdvancedMenuOpened(columnIndex);\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, modelColumn, columnSort),\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 group: IrisGridContextMenuHandler.GROUP_SORT,\n order: 20,\n actions: this.additionalSortActions(column, modelColumn),\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 columnIndex,\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 ContextActionUtils.copyToClipboard(\n model.textForColumnHeader(modelColumn) ?? ''\n ).catch(e => log.error('Unable to copy header', e));\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 { 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({\n timeZone: settings?.timeZone,\n showTimeZone: false,\n showTSeparator: true,\n defaultDateTimeFormatString: CONTEXT_MENU_DATE_FORMAT,\n });\n const previewFilterFormatter = new DateTimeColumnFormatter({\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 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 (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 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: () => this.irisGrid.toggleGotoRow(`${rowIndex + 1}`),\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 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 = [] as ContextAction[];\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.pageX,\n event.pageY,\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 } = formatOptions[\n i\n ];\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 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 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 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 &&\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 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 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 `=${valueText}`,\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 `!=${valueText}`,\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.filter().contains(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: '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.filter().contains(filterValue).not(),\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: '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.filter().invoke('startsWith', 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: '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.filter().invoke('endsWith', 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 numberFilterActions(\n column: Column,\n valueText: string,\n value: unknown,\n quickFilter?: QuickFilter | null,\n operator?: '&&' | '||' | null\n ): ContextAction[] {\n const filterValue = IrisGridContextMenuHandler.getFilterValueForNumberOrChar(\n column.type,\n 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 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 = IrisGridContextMenuHandler.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 = IrisGridContextMenuHandler.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 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 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 &quot;null&quot;\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' : '^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,"sources":["../../src/mousehandlers/IrisGridDataSelectMouseHandler.ts"],"names":["GridMouseHandler","IrisGridDataSelectMouseHandler","constructor","irisGrid","onDoubleClick","gridPoint","column","row","selectData"],"mappings":";;AAAA;AACA,SACEA,gBADF,QAIO,iBAJP;;AAOA;AACA;AACA;AACA,MAAMC,8BAAN,SAA6CD,gBAA7C,CAA8D;AAC5DE,EAAAA,WAAW,CAACC,QAAD,EAAqB;AAC9B;;AAD8B;;AAG9B,SAAKA,QAAL,GAAgBA,QAAhB;AACD;;AAIDC,EAAAA,aAAa,CAACC,SAAD,EAA2C;AACtD,QAAM;AAAEC,MAAAA,MAAF;AAAUC,MAAAA;AAAV,QAAkBF,SAAxB;;AACA,QAAIE,GAAG,IAAI,IAAP,IAAeD,MAAM,IAAI,IAA7B,EAAmC;AACjC,aAAO,KAAP;AACD;;AAED,SAAKH,QAAL,CAAcK,UAAd,CAAyBF,MAAzB,EAAiCC,GAAjC;AAEA,WAAO,IAAP;AACD;;AAlB2D;;AAqB9D,eAAeN,8BAAf","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"],"file":"IrisGridDataSelectMouseHandler.js"}
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,gBADF,QAIO,iBAJP;;AAOA;AACA;AACA;AACA,MAAMC,8BAAN,SAA6CD,gBAA7C,CAA8D;EAC5DE,WAAW,CAACC,QAAD,EAAqB;IAC9B;;IAD8B;;IAG9B,KAAKA,QAAL,GAAgBA,QAAhB;EACD;;EAIDC,aAAa,CAACC,SAAD,EAA2C;IACtD,IAAM;MAAEC,MAAF;MAAUC;IAAV,IAAkBF,SAAxB;;IACA,IAAIE,GAAG,IAAI,IAAP,IAAeD,MAAM,IAAI,IAA7B,EAAmC;MACjC,OAAO,KAAP;IACD;;IAED,KAAKH,QAAL,CAAcK,UAAd,CAAyBF,MAAzB,EAAiCC,GAAjC;IAEA,OAAO,IAAP;EACD;;AAlB2D;;AAqB9D,eAAeN,8BAAf"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/mousehandlers/IrisGridFilterMouseHandler.ts"],"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"],"mappings":";;AAAA;AACA,SACEA,gBADF,QAIO,iBAJP;;AAOA;AACA;AACA;AACA,MAAMC,0BAAN,SAAyCD,gBAAzC,CAA0D;AACxDE,EAAAA,WAAW,CAACC,QAAD,EAAqB;AAC9B;;AAD8B;;AAG9B,SAAKA,QAAL,GAAgBA,QAAhB;AACD;;AAIDC,EAAAA,MAAM,CAACC,SAAD,EAA2C;AAC/C,QAAM;AAAEC,MAAAA,CAAF;AAAKC,MAAAA,MAAL;AAAaC,MAAAA;AAAb,QAAqBH,SAA3B;;AACA,QAAIE,MAAM,KAAK,IAAX,IAAmBC,GAAG,KAAK,IAA/B,EAAqC;AACnC,UAAM;AAAEC,QAAAA,gBAAF;AAAoBC,QAAAA;AAApB,UAAgC,KAAKP,QAAL,CAAcQ,KAApD;AACA,UAAI,CAACD,OAAL,EAAc,MAAM,IAAIE,KAAJ,CAAU,iBAAV,CAAN;AAEd,UAAM;AAAEC,QAAAA;AAAF,UAA2BH,OAAjC;AACA,UAAMI,KAAK,GAAG,KAAKX,QAAL,CAAcY,QAAd,EAAd;;AACA,UACEN,gBAAgB,IAChBK,KAAK,CAACE,kBADN,IAEAF,KAAK,CAACG,eAFN,IAGAX,CAAC,GAAGQ,KAAK,CAACE,kBAAN,GAA2BH,oBAH/B,IAIAP,CAAC,IACCQ,KAAK,CAACE,kBAAN,GAA2BH,oBAA3B,GACEC,KAAK,CAACG,eAPZ,EAQE;AACA,aAAKd,QAAL,CAAce,cAAd,CAA6BX,MAA7B;AACA,eAAO,IAAP;AACD;AACF;;AAED,WAAO,KAAP;AACD;;AAEDY,EAAAA,MAAM,CAACd,SAAD,EAA2C;AAC/C,QAAM;AAAEC,MAAAA,CAAF;AAAKC,MAAAA;AAAL,QAAgBF,SAAtB;AACA,QAAM;AACJI,MAAAA,gBADI;AAEJW,MAAAA,mBAFI;AAGJV,MAAAA;AAHI,QAIF,KAAKP,QAAL,CAAcQ,KAJlB;AAKA,QAAI,CAACD,OAAL,EAAc,MAAM,IAAIE,KAAJ,CAAU,iBAAV,CAAN;AACd,QAAM;AAAEC,MAAAA;AAAF,QAA2BH,OAAjC;AACA,QAAMI,KAAK,GAAG,KAAKX,QAAL,CAAcY,QAAd,EAAd;AAEA,QAAIM,sBAAsB,GAAG,IAA7B;;AACA,QACEZ,gBAAgB,IAChBK,KAAK,CAACE,kBADN,IAEAF,KAAK,CAACG,eAFN,IAGAV,MAAM,KAAK,IAHX,IAIAD,CAAC,IAAIQ,KAAK,CAACE,kBAAN,GAA2BH,oBAJhC,IAKAP,CAAC,IACCQ,KAAK,CAACE,kBAAN,GAA2BH,oBAA3B,GAAkDC,KAAK,CAACG,eAP5D,EAQE;AACAI,MAAAA,sBAAsB,GAAGd,MAAzB;AACD;;AAED,QAAIc,sBAAsB,KAAKD,mBAA/B,EAAoD;AAClD,WAAKjB,QAAL,CAAcmB,QAAd,CAAuB;AAAEF,QAAAA,mBAAmB,EAAEC;AAAvB,OAAvB;AACD;;AAED,WAAO,KAAP;AACD;;AAEDE,EAAAA,OAAO,CAAClB,SAAD,EAA2C;AAChD,QAAM;AAAEE,MAAAA;AAAF,QAAaF,SAAnB;AACA,QAAM;AAAEe,MAAAA;AAAF,QAA0B,KAAKjB,QAAL,CAAcQ,KAA9C;;AACA,QAAIS,mBAAmB,KAAK,IAAxB,IAAgCb,MAAM,KAAKa,mBAA/C,EAAoE;AAClE,WAAKjB,QAAL,CAAcmB,QAAd,CAAuB;AAAEF,QAAAA,mBAAmB,EAAE;AAAvB,OAAvB;AACD;;AAED,WAAO,KAAP;AACD;;AAzEuD;;AA4E1D,eAAenB,0BAAf","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 &&\n theme.filterBarHeight &&\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 {\n isFilterBarShown,\n hoverAdvancedFilter,\n 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 &&\n theme.filterBarHeight &&\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"],"file":"IrisGridFilterMouseHandler.js"}
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 &&\n theme.filterBarHeight &&\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 {\n isFilterBarShown,\n hoverAdvancedFilter,\n 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 &&\n theme.filterBarHeight &&\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,gBADF,QAIO,iBAJP;;AAOA;AACA;AACA;AACA,MAAMC,0BAAN,SAAyCD,gBAAzC,CAA0D;EACxDE,WAAW,CAACC,QAAD,EAAqB;IAC9B;;IAD8B;;IAG9B,KAAKA,QAAL,GAAgBA,QAAhB;EACD;;EAIDC,MAAM,CAACC,SAAD,EAA2C;IAC/C,IAAM;MAAEC,CAAF;MAAKC,MAAL;MAAaC;IAAb,IAAqBH,SAA3B;;IACA,IAAIE,MAAM,KAAK,IAAX,IAAmBC,GAAG,KAAK,IAA/B,EAAqC;MACnC,IAAM;QAAEC,gBAAF;QAAoBC;MAApB,IAAgC,KAAKP,QAAL,CAAcQ,KAApD;MACA,IAAI,CAACD,OAAL,EAAc,MAAM,IAAIE,KAAJ,CAAU,iBAAV,CAAN;MAEd,IAAM;QAAEC;MAAF,IAA2BH,OAAjC;MACA,IAAMI,KAAK,GAAG,KAAKX,QAAL,CAAcY,QAAd,EAAd;;MACA,IACEN,gBAAgB,IAChBK,KAAK,CAACE,kBADN,IAEAF,KAAK,CAACG,eAFN,IAGAX,CAAC,GAAGQ,KAAK,CAACE,kBAAN,GAA2BH,oBAH/B,IAIAP,CAAC,IACCQ,KAAK,CAACE,kBAAN,GAA2BH,oBAA3B,GACEC,KAAK,CAACG,eAPZ,EAQE;QACA,KAAKd,QAAL,CAAce,cAAd,CAA6BX,MAA7B;QACA,OAAO,IAAP;MACD;IACF;;IAED,OAAO,KAAP;EACD;;EAEDY,MAAM,CAACd,SAAD,EAA2C;IAC/C,IAAM;MAAEC,CAAF;MAAKC;IAAL,IAAgBF,SAAtB;IACA,IAAM;MACJI,gBADI;MAEJW,mBAFI;MAGJV;IAHI,IAIF,KAAKP,QAAL,CAAcQ,KAJlB;IAKA,IAAI,CAACD,OAAL,EAAc,MAAM,IAAIE,KAAJ,CAAU,iBAAV,CAAN;IACd,IAAM;MAAEC;IAAF,IAA2BH,OAAjC;IACA,IAAMI,KAAK,GAAG,KAAKX,QAAL,CAAcY,QAAd,EAAd;IAEA,IAAIM,sBAAsB,GAAG,IAA7B;;IACA,IACEZ,gBAAgB,IAChBK,KAAK,CAACE,kBADN,IAEAF,KAAK,CAACG,eAFN,IAGAV,MAAM,KAAK,IAHX,IAIAD,CAAC,IAAIQ,KAAK,CAACE,kBAAN,GAA2BH,oBAJhC,IAKAP,CAAC,IACCQ,KAAK,CAACE,kBAAN,GAA2BH,oBAA3B,GAAkDC,KAAK,CAACG,eAP5D,EAQE;MACAI,sBAAsB,GAAGd,MAAzB;IACD;;IAED,IAAIc,sBAAsB,KAAKD,mBAA/B,EAAoD;MAClD,KAAKjB,QAAL,CAAcmB,QAAd,CAAuB;QAAEF,mBAAmB,EAAEC;MAAvB,CAAvB;IACD;;IAED,OAAO,KAAP;EACD;;EAEDE,OAAO,CAAClB,SAAD,EAA2C;IAChD,IAAM;MAAEE;IAAF,IAAaF,SAAnB;IACA,IAAM;MAAEe;IAAF,IAA0B,KAAKjB,QAAL,CAAcQ,KAA9C;;IACA,IAAIS,mBAAmB,KAAK,IAAxB,IAAgCb,MAAM,KAAKa,mBAA/C,EAAoE;MAClE,KAAKjB,QAAL,CAAcmB,QAAd,CAAuB;QAAEF,mBAAmB,EAAE;MAAvB,CAAvB;IACD;;IAED,OAAO,KAAP;EACD;;AAzEuD;;AA4E1D,eAAenB,0BAAf"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/mousehandlers/IrisGridSortMouseHandler.ts"],"names":["ContextActionUtils","GridMouseHandler","IrisGridSortMouseHandler","constructor","irisGrid","column","getColumnFromGridPoint","gridPoint","row","columnHeaderDepth","onDown","onClick","grid","event","addToExisting","isModifierKeyDown","toggleSort"],"mappings":";;AAAA;AACA,SAASA,kBAAT,QAAmC,uBAAnC;AACA,SAGEC,gBAHF,QAOO,iBAPP;;AAUA;AACA;AACA;AACA,MAAMC,wBAAN,SAAuCD,gBAAvC,CAAwD;AACtDE,EAAAA,WAAW,CAACC,QAAD,EAAqB;AAC9B;;AAD8B;;AAAA;;AAG9B,SAAKC,MAAL,GAAc,IAAd;AACA,SAAKD,QAAL,GAAgBA,QAAhB;AACD;;AAMDE,EAAAA,sBAAsB,CAACC,SAAD,EAAuC;AAC3D,QAAM;AAAEF,MAAAA,MAAF;AAAUG,MAAAA,GAAV;AAAeC,MAAAA;AAAf,QAAqCF,SAA3C;;AACA,QAAIF,MAAM,KAAK,IAAX,IAAmBG,GAAG,KAAK,IAA3B,IAAmCC,iBAAiB,KAAK,CAA7D,EAAgE;AAC9D,aAAOJ,MAAP;AACD;;AAED,WAAO,IAAP;AACD,GAnBqD,CAqBtD;;;AACAK,EAAAA,MAAM,CAACH,SAAD,EAA2C;AAC/C,SAAKF,MAAL,GAAc,KAAKC,sBAAL,CAA4BC,SAA5B,CAAd;AACA,WAAO,KAAP;AACD;;AAEDI,EAAAA,OAAO,CACLJ,SADK,EAELK,IAFK,EAGLC,KAHK,EAIe;AACpB,QAAMR,MAAM,GAAG,KAAKC,sBAAL,CAA4BC,SAA5B,CAAf;;AACA,QAAIF,MAAM,IAAI,IAAV,IAAkBA,MAAM,KAAK,KAAKA,MAAtC,EAA8C;AAC5C,UAAMS,aAAa,GAAGd,kBAAkB,CAACe,iBAAnB,CAAqCF,KAArC,CAAtB;AACA,WAAKT,QAAL,CAAcY,UAAd,CAAyBX,MAAzB,EAAiCS,aAAjC;AACA,aAAO,IAAP;AACD;;AAED,WAAO,KAAP;AACD;;AAxCqD;;AA2CxD,eAAeZ,wBAAf","sourcesContent":["/* eslint class-methods-use-this: \"off\" */\nimport { ContextActionUtils } from '@deephaven/components';\nimport {\n Grid,\n GridMouseEvent,\n GridMouseHandler,\n GridPoint,\n GridRangeIndex,\n EventHandlerResult,\n} from '@deephaven/grid';\nimport type { IrisGrid } from '../IrisGrid';\n\n/**\n * Used to handle sorting on column header clicks\n */\nclass IrisGridSortMouseHandler extends GridMouseHandler {\n constructor(irisGrid: IrisGrid) {\n super();\n\n this.column = null;\n this.irisGrid = irisGrid;\n }\n\n irisGrid: IrisGrid;\n\n column: GridRangeIndex;\n\n getColumnFromGridPoint(gridPoint: GridPoint): GridRangeIndex {\n const { column, row, columnHeaderDepth } = gridPoint;\n if (column !== null && row === null && columnHeaderDepth === 0) {\n return column;\n }\n\n return null;\n }\n\n // We need to remember where the down started, because the canvas element will trigger a click whereever mouseUp is\n onDown(gridPoint: GridPoint): EventHandlerResult {\n this.column = this.getColumnFromGridPoint(gridPoint);\n return false;\n }\n\n onClick(\n gridPoint: GridPoint,\n grid: Grid,\n event: GridMouseEvent\n ): EventHandlerResult {\n const column = this.getColumnFromGridPoint(gridPoint);\n if (column != null && column === this.column) {\n const addToExisting = ContextActionUtils.isModifierKeyDown(event);\n this.irisGrid.toggleSort(column, addToExisting);\n return true;\n }\n\n return false;\n }\n}\n\nexport default IrisGridSortMouseHandler;\n"],"file":"IrisGridSortMouseHandler.js"}
1
+ {"version":3,"file":"IrisGridSortMouseHandler.js","names":["ContextActionUtils","GridMouseHandler","IrisGridSortMouseHandler","constructor","irisGrid","column","getColumnFromGridPoint","gridPoint","row","columnHeaderDepth","onDown","onClick","grid","event","addToExisting","isModifierKeyDown","toggleSort"],"sources":["../../src/mousehandlers/IrisGridSortMouseHandler.ts"],"sourcesContent":["/* eslint class-methods-use-this: \"off\" */\nimport { ContextActionUtils } from '@deephaven/components';\nimport {\n Grid,\n GridMouseEvent,\n GridMouseHandler,\n GridPoint,\n GridRangeIndex,\n EventHandlerResult,\n} from '@deephaven/grid';\nimport type { IrisGrid } from '../IrisGrid';\n\n/**\n * Used to handle sorting on column header clicks\n */\nclass IrisGridSortMouseHandler extends GridMouseHandler {\n constructor(irisGrid: IrisGrid) {\n super();\n\n this.column = null;\n this.irisGrid = irisGrid;\n }\n\n irisGrid: IrisGrid;\n\n column: GridRangeIndex;\n\n getColumnFromGridPoint(gridPoint: GridPoint): GridRangeIndex {\n const { column, row, columnHeaderDepth } = gridPoint;\n if (column !== null && row === null && columnHeaderDepth === 0) {\n return column;\n }\n\n return null;\n }\n\n // We need to remember where the down started, because the canvas element will trigger a click whereever mouseUp is\n onDown(gridPoint: GridPoint): EventHandlerResult {\n this.column = this.getColumnFromGridPoint(gridPoint);\n return false;\n }\n\n onClick(\n gridPoint: GridPoint,\n grid: Grid,\n event: GridMouseEvent\n ): EventHandlerResult {\n const column = this.getColumnFromGridPoint(gridPoint);\n if (column != null && column === this.column) {\n const addToExisting = ContextActionUtils.isModifierKeyDown(event);\n this.irisGrid.toggleSort(column, addToExisting);\n return true;\n }\n\n return false;\n }\n}\n\nexport default IrisGridSortMouseHandler;\n"],"mappings":";;AAAA;AACA,SAASA,kBAAT,QAAmC,uBAAnC;AACA,SAGEC,gBAHF,QAOO,iBAPP;;AAUA;AACA;AACA;AACA,MAAMC,wBAAN,SAAuCD,gBAAvC,CAAwD;EACtDE,WAAW,CAACC,QAAD,EAAqB;IAC9B;;IAD8B;;IAAA;;IAG9B,KAAKC,MAAL,GAAc,IAAd;IACA,KAAKD,QAAL,GAAgBA,QAAhB;EACD;;EAMDE,sBAAsB,CAACC,SAAD,EAAuC;IAC3D,IAAM;MAAEF,MAAF;MAAUG,GAAV;MAAeC;IAAf,IAAqCF,SAA3C;;IACA,IAAIF,MAAM,KAAK,IAAX,IAAmBG,GAAG,KAAK,IAA3B,IAAmCC,iBAAiB,KAAK,CAA7D,EAAgE;MAC9D,OAAOJ,MAAP;IACD;;IAED,OAAO,IAAP;EACD,CAnBqD,CAqBtD;;;EACAK,MAAM,CAACH,SAAD,EAA2C;IAC/C,KAAKF,MAAL,GAAc,KAAKC,sBAAL,CAA4BC,SAA5B,CAAd;IACA,OAAO,KAAP;EACD;;EAEDI,OAAO,CACLJ,SADK,EAELK,IAFK,EAGLC,KAHK,EAIe;IACpB,IAAMR,MAAM,GAAG,KAAKC,sBAAL,CAA4BC,SAA5B,CAAf;;IACA,IAAIF,MAAM,IAAI,IAAV,IAAkBA,MAAM,KAAK,KAAKA,MAAtC,EAA8C;MAC5C,IAAMS,aAAa,GAAGd,kBAAkB,CAACe,iBAAnB,CAAqCF,KAArC,CAAtB;MACA,KAAKT,QAAL,CAAcY,UAAd,CAAyBX,MAAzB,EAAiCS,aAAjC;MACA,OAAO,IAAP;IACD;;IAED,OAAO,KAAP;EACD;;AAxCqD;;AA2CxD,eAAeZ,wBAAf"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/mousehandlers/PendingMouseHandler.ts"],"names":["GridMouseHandler","GridUtils","isEditableGridModel","assertNotNull","PendingMouseHandler","constructor","irisGrid","onWheel","gridPoint","grid","wheelEvent","model","props","metrics","pendingRowCount","state","bottom","rowCount","rowHeight","deltaY","getScrollDelta","isEditable","setState","Math","ceil"],"mappings":"AAAA;AACA,SAEEA,gBAFF,EAIEC,SAJF,EAMEC,mBANF,QAOO,iBAPP;AAQA,SAASC,aAAT,QAA8B,kBAA9B;;AAUA,MAAMC,mBAAN,SAAkCJ,gBAAlC,CAAmD;AACjDK,EAAAA,WAAW,CAACC,QAAD,EAAqB;AAC9B;AAEA,SAAKA,QAAL,GAAgBA,QAAhB;AACD;;AAEDC,EAAAA,OAAO,CAACC,SAAD,EAAuBC,IAAvB,EAAmCC,UAAnC,EAAsE;AAC3E,QAAM;AAAEJ,MAAAA;AAAF,QAAe,IAArB;AACA,QAAM;AAAEK,MAAAA;AAAF,QAAYL,QAAQ,CAACM,KAA3B;AACA,QAAM;AAAEC,MAAAA,OAAF;AAAWC,MAAAA;AAAX,QAA+BR,QAAQ,CAACS,KAA9C;AACAZ,IAAAA,aAAa,CAACU,OAAD,CAAb;AACA,QAAM;AAAEG,MAAAA,MAAF;AAAUC,MAAAA,QAAV;AAAoBC,MAAAA;AAApB,QAAkCL,OAAxC;AACA,QAAM;AAAEM,MAAAA;AAAF,QAAalB,SAAS,CAACmB,cAAV,CAAyBV,UAAzB,CAAnB;;AACA,QACER,mBAAmB,CAACS,KAAD,CAAnB,IACAA,KAAK,CAACU,UADN,IAEAL,MAAM,IAAIC,QAAQ,GAAG,CAFrB,IAGAE,MAAM,GAAG,CAJX,EAKE;AACA;AACAb,MAAAA,QAAQ,CAACgB,QAAT,CAAkB;AAChBR,QAAAA,eAAe,EAAEA,eAAe,GAAGS,IAAI,CAACC,IAAL,CAAUL,MAAM,GAAGD,SAAnB;AADnB,OAAlB;AAGD;;AACD,WAAO,KAAP;AACD;;AA1BgD;;AA6BnD,eAAed,mBAAf","sourcesContent":["/* eslint class-methods-use-this: \"off\" */\nimport {\n Grid,\n GridMouseHandler,\n GridPoint,\n GridUtils,\n GridWheelEvent,\n isEditableGridModel,\n} from '@deephaven/grid';\nimport { assertNotNull } from '@deephaven/utils';\nimport IrisGrid from '../IrisGrid';\n\n/**\n * Handles sending data selected via double click\n */\n\ninterface PendingMouseHandler {\n irisGrid: IrisGrid;\n}\nclass PendingMouseHandler extends GridMouseHandler {\n constructor(irisGrid: IrisGrid) {\n super();\n\n this.irisGrid = irisGrid;\n }\n\n onWheel(gridPoint: GridPoint, grid: Grid, wheelEvent: GridWheelEvent): false {\n const { irisGrid } = this;\n const { model } = irisGrid.props;\n const { metrics, pendingRowCount } = irisGrid.state;\n assertNotNull(metrics);\n const { bottom, rowCount, rowHeight } = metrics;\n const { deltaY } = GridUtils.getScrollDelta(wheelEvent);\n if (\n isEditableGridModel(model) &&\n model.isEditable &&\n bottom >= rowCount - 1 &&\n deltaY > 0\n ) {\n // We add new rows onto the bottom, but we don't consume the event\n irisGrid.setState({\n pendingRowCount: pendingRowCount + Math.ceil(deltaY / rowHeight),\n });\n }\n return false;\n }\n}\n\nexport default PendingMouseHandler;\n"],"file":"PendingMouseHandler.js"}
1
+ {"version":3,"file":"PendingMouseHandler.js","names":["GridMouseHandler","GridUtils","isEditableGridModel","assertNotNull","PendingMouseHandler","constructor","irisGrid","onWheel","gridPoint","grid","wheelEvent","model","props","metrics","pendingRowCount","state","bottom","rowCount","rowHeight","deltaY","getScrollDelta","isEditable","setState","Math","ceil"],"sources":["../../src/mousehandlers/PendingMouseHandler.ts"],"sourcesContent":["/* eslint class-methods-use-this: \"off\" */\nimport {\n Grid,\n GridMouseHandler,\n GridPoint,\n GridUtils,\n GridWheelEvent,\n isEditableGridModel,\n} from '@deephaven/grid';\nimport { assertNotNull } from '@deephaven/utils';\nimport IrisGrid from '../IrisGrid';\n\n/**\n * Handles sending data selected via double click\n */\n\ninterface PendingMouseHandler {\n irisGrid: IrisGrid;\n}\nclass PendingMouseHandler extends GridMouseHandler {\n constructor(irisGrid: IrisGrid) {\n super();\n\n this.irisGrid = irisGrid;\n }\n\n onWheel(gridPoint: GridPoint, grid: Grid, wheelEvent: GridWheelEvent): false {\n const { irisGrid } = this;\n const { model } = irisGrid.props;\n const { metrics, pendingRowCount } = irisGrid.state;\n assertNotNull(metrics);\n const { bottom, rowCount, rowHeight } = metrics;\n const { deltaY } = GridUtils.getScrollDelta(wheelEvent);\n if (\n isEditableGridModel(model) &&\n model.isEditable &&\n bottom >= rowCount - 1 &&\n deltaY > 0\n ) {\n // We add new rows onto the bottom, but we don't consume the event\n irisGrid.setState({\n pendingRowCount: pendingRowCount + Math.ceil(deltaY / rowHeight),\n });\n }\n return false;\n }\n}\n\nexport default PendingMouseHandler;\n"],"mappings":"AAAA;AACA,SAEEA,gBAFF,EAIEC,SAJF,EAMEC,mBANF,QAOO,iBAPP;AAQA,SAASC,aAAT,QAA8B,kBAA9B;;AAUA,MAAMC,mBAAN,SAAkCJ,gBAAlC,CAAmD;EACjDK,WAAW,CAACC,QAAD,EAAqB;IAC9B;IAEA,KAAKA,QAAL,GAAgBA,QAAhB;EACD;;EAEDC,OAAO,CAACC,SAAD,EAAuBC,IAAvB,EAAmCC,UAAnC,EAAsE;IAC3E,IAAM;MAAEJ;IAAF,IAAe,IAArB;IACA,IAAM;MAAEK;IAAF,IAAYL,QAAQ,CAACM,KAA3B;IACA,IAAM;MAAEC,OAAF;MAAWC;IAAX,IAA+BR,QAAQ,CAACS,KAA9C;IACAZ,aAAa,CAACU,OAAD,CAAb;IACA,IAAM;MAAEG,MAAF;MAAUC,QAAV;MAAoBC;IAApB,IAAkCL,OAAxC;IACA,IAAM;MAAEM;IAAF,IAAalB,SAAS,CAACmB,cAAV,CAAyBV,UAAzB,CAAnB;;IACA,IACER,mBAAmB,CAACS,KAAD,CAAnB,IACAA,KAAK,CAACU,UADN,IAEAL,MAAM,IAAIC,QAAQ,GAAG,CAFrB,IAGAE,MAAM,GAAG,CAJX,EAKE;MACA;MACAb,QAAQ,CAACgB,QAAT,CAAkB;QAChBR,eAAe,EAAEA,eAAe,GAAGS,IAAI,CAACC,IAAL,CAAUL,MAAM,GAAGD,SAAnB;MADnB,CAAlB;IAGD;;IACD,OAAO,KAAP;EACD;;AA1BgD;;AA6BnD,eAAed,mBAAf"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/mousehandlers/index.ts"],"names":["default","IrisGridCellOverflowMouseHandler","IrisGridColumnSelectMouseHandler","IrisGridColumnTooltipMouseHandler","IrisGridContextMenuHandler","IrisGridDataSelectMouseHandler","IrisGridFilterMouseHandler","IrisGridSortMouseHandler","PendingMouseHandler"],"mappings":"SAASA,OAAO,IAAIC,gC;SACXD,OAAO,IAAIE,gC;SACXF,OAAO,IAAIG,iC;SACXH,OAAO,IAAII,0B;SACXJ,OAAO,IAAIK,8B;SACXL,OAAO,IAAIM,0B;SACXN,OAAO,IAAIO,wB;SACXP,OAAO,IAAIQ,mB","sourcesContent":["export { default as IrisGridCellOverflowMouseHandler } from './IrisGridCellOverflowMouseHandler';\nexport { default as IrisGridColumnSelectMouseHandler } from './IrisGridColumnSelectMouseHandler';\nexport { default as IrisGridColumnTooltipMouseHandler } from './IrisGridColumnTooltipMouseHandler';\nexport { default as IrisGridContextMenuHandler } from './IrisGridContextMenuHandler';\nexport { default as IrisGridDataSelectMouseHandler } from './IrisGridDataSelectMouseHandler';\nexport { default as IrisGridFilterMouseHandler } from './IrisGridFilterMouseHandler';\nexport { default as IrisGridSortMouseHandler } from './IrisGridSortMouseHandler';\nexport { default as PendingMouseHandler } from './PendingMouseHandler';\n"],"file":"index.js"}
1
+ {"version":3,"file":"index.js","names":["default","IrisGridCellOverflowMouseHandler","IrisGridColumnSelectMouseHandler","IrisGridColumnTooltipMouseHandler","IrisGridContextMenuHandler","IrisGridDataSelectMouseHandler","IrisGridFilterMouseHandler","IrisGridSortMouseHandler","PendingMouseHandler"],"sources":["../../src/mousehandlers/index.ts"],"sourcesContent":["export { default as IrisGridCellOverflowMouseHandler } from './IrisGridCellOverflowMouseHandler';\nexport { default as IrisGridColumnSelectMouseHandler } from './IrisGridColumnSelectMouseHandler';\nexport { default as IrisGridColumnTooltipMouseHandler } from './IrisGridColumnTooltipMouseHandler';\nexport { default as IrisGridContextMenuHandler } from './IrisGridContextMenuHandler';\nexport { default as IrisGridDataSelectMouseHandler } from './IrisGridDataSelectMouseHandler';\nexport { default as IrisGridFilterMouseHandler } from './IrisGridFilterMouseHandler';\nexport { default as IrisGridSortMouseHandler } from './IrisGridSortMouseHandler';\nexport { default as PendingMouseHandler } from './PendingMouseHandler';\n"],"mappings":"SAASA,OAAO,IAAIC,gC;SACXD,OAAO,IAAIE,gC;SACXF,OAAO,IAAIG,iC;SACXH,OAAO,IAAII,0B;SACXJ,OAAO,IAAIK,8B;SACXL,OAAO,IAAIM,0B;SACXN,OAAO,IAAIO,wB;SACXP,OAAO,IAAIQ,mB"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/sidebar/AdvancedSettings.ts"],"names":["AdvancedSettingsType","DEFAULTS","Object","freeze","FILTER_CONTROL_CHANGE_CLEARS_ALL_FILTERS","LINK_CHANGE_CLEARS_ALL_FILTERS"],"mappings":"OAAOA,oB;AAEP,IAAMC,QAAQ,GAAGC,MAAM,CAACC,MAAP,CAAc,CAC7B,CAACH,oBAAoB,CAACI,wCAAtB,EAAgE,KAAhE,CAD6B,EAE7B,CAACJ,oBAAoB,CAACK,8BAAtB,EAAsD,KAAtD,CAF6B,CAAd,CAAjB;AAKA,eAAe;AAAEJ,EAAAA;AAAF,CAAf","sourcesContent":["import AdvancedSettingsType from './AdvancedSettingsType';\n\nconst DEFAULTS = Object.freeze([\n [AdvancedSettingsType.FILTER_CONTROL_CHANGE_CLEARS_ALL_FILTERS, false],\n [AdvancedSettingsType.LINK_CHANGE_CLEARS_ALL_FILTERS, false],\n] as const);\n\nexport default { DEFAULTS };\n"],"file":"AdvancedSettings.js"}
1
+ {"version":3,"file":"AdvancedSettings.js","names":["AdvancedSettingsType","DEFAULTS","Object","freeze","FILTER_CONTROL_CHANGE_CLEARS_ALL_FILTERS","LINK_CHANGE_CLEARS_ALL_FILTERS"],"sources":["../../src/sidebar/AdvancedSettings.ts"],"sourcesContent":["import AdvancedSettingsType from './AdvancedSettingsType';\n\nconst DEFAULTS = Object.freeze([\n [AdvancedSettingsType.FILTER_CONTROL_CHANGE_CLEARS_ALL_FILTERS, false],\n [AdvancedSettingsType.LINK_CHANGE_CLEARS_ALL_FILTERS, false],\n] as const);\n\nexport default { DEFAULTS };\n"],"mappings":"OAAOA,oB;AAEP,IAAMC,QAAQ,GAAGC,MAAM,CAACC,MAAP,CAAc,CAC7B,CAACH,oBAAoB,CAACI,wCAAtB,EAAgE,KAAhE,CAD6B,EAE7B,CAACJ,oBAAoB,CAACK,8BAAtB,EAAsD,KAAtD,CAF6B,CAAd,CAAjB;AAKA,eAAe;EAAEJ;AAAF,CAAf"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/sidebar/AdvancedSettingsMenu.tsx"],"names":["React","Menu","AdvancedSettingsType","AdvancedSettingsMenu","items","onChange","undefined","Array","from","entries","map","key","isOn","title","getAdvancedSettingsTitleForKey","value","FILTER_CONTROL_CHANGE_CLEARS_ALL_FILTERS","LINK_CHANGE_CLEARS_ALL_FILTERS"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,SAASC,IAAT,QAAwC,uBAAxC;OACOC,oB;;AAYP,IAAMC,oBAAoB,GAAG;AAAA,MAAC;AAC5BC,IAAAA,KAD4B;AAE5BC,IAAAA,QAAQ,EAARA,SAAQ,GAAG,MAAMC;AAFW,GAAD;AAAA,sBAI3B,oBAAC,IAAD;AACE,IAAA,KAAK,EAAEC,KAAK,CAACC,IAAN,CAAWJ,KAAK,CAACK,OAAN,EAAX,EAA4BC,GAA5B,CACL;AAAA,UAAC,CAACC,GAAD,EAAMC,IAAN,CAAD;AAAA,aAAqC;AACnCC,QAAAA,KAAK,EAAEV,oBAAoB,CAACW,8BAArB,CAAoDH,GAApD,CAD4B;AAEnCC,QAAAA,IAFmC;AAGnCP,QAAAA,QAAQ,EAAGU,KAAD,IAAoBV,SAAQ,CAACM,GAAD,EAAMI,KAAN;AAHH,OAArC;AAAA,KADK;AADT,IAJ2B;AAAA,CAA7B;;AAeAZ,oBAAoB,CAACW,8BAArB,GACEH,GADoD,IAEzC;AACX,UAAQA,GAAR;AACE,SAAKT,oBAAoB,CAACc,wCAA1B;AACE,aAAO,8CAAP;;AACF,SAAKd,oBAAoB,CAACe,8BAA1B;AACE,aAAO,4CAAP;AAJJ;AAMD,CATD;;AAWA,eAAed,oBAAf","sourcesContent":["import React from 'react';\nimport { Menu, SwitchMenuItemDef } from '@deephaven/components';\nimport AdvancedSettingsType from './AdvancedSettingsType';\n\nexport type AdvancedSettingsMenuCallback = (\n key: AdvancedSettingsType,\n isOn: boolean\n) => void;\n\nexport type AdvancedSettingsMenuProps = {\n items: Map<AdvancedSettingsType, boolean>;\n onChange?: AdvancedSettingsMenuCallback;\n};\n\nconst AdvancedSettingsMenu = ({\n items,\n onChange = () => undefined,\n}: AdvancedSettingsMenuProps): JSX.Element => (\n <Menu\n items={Array.from(items.entries()).map(\n ([key, isOn]): SwitchMenuItemDef => ({\n title: AdvancedSettingsMenu.getAdvancedSettingsTitleForKey(key),\n isOn,\n onChange: (value: boolean) => onChange(key, value),\n })\n )}\n />\n);\n\nAdvancedSettingsMenu.getAdvancedSettingsTitleForKey = (\n key: AdvancedSettingsType\n): string => {\n switch (key) {\n case AdvancedSettingsType.FILTER_CONTROL_CHANGE_CLEARS_ALL_FILTERS:\n return 'Control filters clear existing table filters';\n case AdvancedSettingsType.LINK_CHANGE_CLEARS_ALL_FILTERS:\n return 'Inbound links clear existing table filters';\n }\n};\n\nexport default AdvancedSettingsMenu;\n"],"file":"AdvancedSettingsMenu.js"}
1
+ {"version":3,"file":"AdvancedSettingsMenu.js","names":["React","Menu","AdvancedSettingsType","AdvancedSettingsMenu","items","onChange","undefined","Array","from","entries","map","key","isOn","title","getAdvancedSettingsTitleForKey","value","FILTER_CONTROL_CHANGE_CLEARS_ALL_FILTERS","LINK_CHANGE_CLEARS_ALL_FILTERS"],"sources":["../../src/sidebar/AdvancedSettingsMenu.tsx"],"sourcesContent":["import React from 'react';\nimport { Menu, SwitchMenuItemDef } from '@deephaven/components';\nimport AdvancedSettingsType from './AdvancedSettingsType';\n\nexport type AdvancedSettingsMenuCallback = (\n key: AdvancedSettingsType,\n isOn: boolean\n) => void;\n\nexport type AdvancedSettingsMenuProps = {\n items: Map<AdvancedSettingsType, boolean>;\n onChange?: AdvancedSettingsMenuCallback;\n};\n\nconst AdvancedSettingsMenu = ({\n items,\n onChange = () => undefined,\n}: AdvancedSettingsMenuProps): JSX.Element => (\n <Menu\n items={Array.from(items.entries()).map(\n ([key, isOn]): SwitchMenuItemDef => ({\n title: AdvancedSettingsMenu.getAdvancedSettingsTitleForKey(key),\n isOn,\n onChange: (value: boolean) => onChange(key, value),\n })\n )}\n />\n);\n\nAdvancedSettingsMenu.getAdvancedSettingsTitleForKey = (\n key: AdvancedSettingsType\n): string => {\n switch (key) {\n case AdvancedSettingsType.FILTER_CONTROL_CHANGE_CLEARS_ALL_FILTERS:\n return 'Control filters clear existing table filters';\n case AdvancedSettingsType.LINK_CHANGE_CLEARS_ALL_FILTERS:\n return 'Inbound links clear existing table filters';\n }\n};\n\nexport default AdvancedSettingsMenu;\n"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,SAASC,IAAT,QAAwC,uBAAxC;OACOC,oB;;AAYP,IAAMC,oBAAoB,GAAG;EAAA,IAAC;IAC5BC,KAD4B;IAE5BC,QAAQ,EAARA,SAAQ,GAAG,MAAMC;EAFW,CAAD;EAAA,oBAI3B,oBAAC,IAAD;IACE,KAAK,EAAEC,KAAK,CAACC,IAAN,CAAWJ,KAAK,CAACK,OAAN,EAAX,EAA4BC,GAA5B,CACL;MAAA,IAAC,CAACC,GAAD,EAAMC,IAAN,CAAD;MAAA,OAAqC;QACnCC,KAAK,EAAEV,oBAAoB,CAACW,8BAArB,CAAoDH,GAApD,CAD4B;QAEnCC,IAFmC;QAGnCP,QAAQ,EAAGU,KAAD,IAAoBV,SAAQ,CAACM,GAAD,EAAMI,KAAN;MAHH,CAArC;IAAA,CADK;EADT,EAJ2B;AAAA,CAA7B;;AAeAZ,oBAAoB,CAACW,8BAArB,GACEH,GADoD,IAEzC;EACX,QAAQA,GAAR;IACE,KAAKT,oBAAoB,CAACc,wCAA1B;MACE,OAAO,8CAAP;;IACF,KAAKd,oBAAoB,CAACe,8BAA1B;MACE,OAAO,4CAAP;EAJJ;AAMD,CATD;;AAWA,eAAed,oBAAf"}