@deephaven/iris-grid 0.16.1-beta.0 → 0.16.1-vite.20

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/sidebar/AdvancedSettingsType.ts"],"names":["AdvancedSettingsType"],"mappings":"IAAKA,oB;;WAAAA,oB;AAAAA,EAAAA,oB;AAAAA,EAAAA,oB;GAAAA,oB,KAAAA,oB;;AAKL,eAAeA,oBAAf","sourcesContent":["enum AdvancedSettingsType {\n FILTER_CONTROL_CHANGE_CLEARS_ALL_FILTERS = 'filter-control-change-clears-all-filters',\n LINK_CHANGE_CLEARS_ALL_FILTERS = 'link-change-clears-all-filters',\n}\n\nexport default AdvancedSettingsType;\n"],"file":"AdvancedSettingsType.js"}
1
+ {"version":3,"file":"AdvancedSettingsType.js","names":["AdvancedSettingsType"],"sources":["../../src/sidebar/AdvancedSettingsType.ts"],"sourcesContent":["enum AdvancedSettingsType {\n FILTER_CONTROL_CHANGE_CLEARS_ALL_FILTERS = 'filter-control-change-clears-all-filters',\n LINK_CHANGE_CLEARS_ALL_FILTERS = 'link-change-clears-all-filters',\n}\n\nexport default AdvancedSettingsType;\n"],"mappings":"IAAKA,oB;;WAAAA,oB;EAAAA,oB;EAAAA,oB;GAAAA,oB,KAAAA,oB;;AAKL,eAAeA,oBAAf"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/sidebar/ChartBuilder.tsx"],"names":["React","PureComponent","classNames","FontAwesomeIcon","RadioGroup","RadioItem","vsLink","dhUnlink","dhTable","dhNewCircleLargeFilled","vsCircleLargeFilled","vsTrash","dh","Log","shortid","BarIcon","HistogramIcon","LineIcon","PieIcon","ScatterIcon","log","module","ChartBuilder","getTypeName","type","plot","SeriesPlotStyle","LINE","BAR","SCATTER","PIE","HISTOGRAM","getTypeIcon","getMaxSeriesCount","getXAxisLabel","getSeriesLabel","makeSeriesItem","value","id","generate","makeDefaultSeriesItems","columns","maxSeriesCount","length","name","getDefaultXAxis","constructor","props","handleAddSeries","bind","handleLinkStateChange","handleReset","handleSeriesChange","handleSeriesDeleteClick","handleSubmit","handleTypeClick","handleXAxisChange","sendChange","model","types","xAxis","seriesItems","state","isLinked","setState","push","event","target","index","getAttribute","intIndex","parseInt","changeEvent","splice","preventDefault","onSubmit","series","map","item","debug2","slice","onChange","render","xAxisLabel","seriesLabel","isSeriesVisible","isAddSeriesVisible","chartType","key","active","column","seriesItem","i"],"mappings":"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","sourcesContent":["import React, { PureComponent } from 'react';\nimport classNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { RadioGroup, RadioItem } from '@deephaven/components';\nimport {\n vsLink,\n dhUnlink,\n dhTable,\n dhNewCircleLargeFilled,\n vsCircleLargeFilled,\n vsTrash,\n} from '@deephaven/icons';\nimport dh, { Column, SeriesPlotStyle } from '@deephaven/jsapi-shim';\nimport Log from '@deephaven/log';\nimport shortid from 'shortid';\nimport {\n BarIcon,\n HistogramIcon,\n LineIcon,\n PieIcon,\n ScatterIcon,\n} from './icons';\nimport './ChartBuilder.scss';\nimport IrisGridModel from '../IrisGridModel';\n\nconst log = Log.module('ChartBuilder');\n\nexport type ChartBuilderSettings = {\n type: SeriesPlotStyle;\n series: unknown;\n xAxis: string;\n isLinked: boolean;\n};\nexport type SeriesItem = {\n id: string;\n value: string;\n};\n\ninterface ChartBuilderProps {\n model: IrisGridModel;\n onSubmit: (obj: ChartBuilderSettings) => void;\n onChange: (obj: ChartBuilderSettings) => void;\n}\ninterface ChartBuilderState {\n /** The selected chart type */\n type: SeriesPlotStyle;\n\n /** Array of column names of the series to display */\n seriesItems: SeriesItem[];\n\n /** The column name to use as the x-axis */\n xAxis: string;\n\n /** Whether the newly created chart should be linked with the table (update when filters update) */\n isLinked: boolean;\n}\n/**\n * Form for configuring all the settings when creating a console.\n */\nclass ChartBuilder extends PureComponent<ChartBuilderProps, ChartBuilderState> {\n static types = [\n dh.plot.SeriesPlotStyle.LINE,\n dh.plot.SeriesPlotStyle.BAR,\n dh.plot.SeriesPlotStyle.SCATTER,\n dh.plot.SeriesPlotStyle.PIE,\n // IDS-6808: Disable Histogram in Chart Builder until we pipe histogram creation through the API\n // dh.plot.SeriesPlotStyle.HISTOGRAM,\n ];\n\n /**\n * Converts the provided chart type into a readable type.\n * Just replaces underscores with spaces and capitals the first letter of each word.\n */\n static getTypeName(type: SeriesPlotStyle): string | SeriesPlotStyle {\n switch (type) {\n case dh.plot.SeriesPlotStyle.LINE:\n return 'Line';\n case dh.plot.SeriesPlotStyle.BAR:\n return 'Bar';\n case dh.plot.SeriesPlotStyle.SCATTER:\n return 'Scatter';\n case dh.plot.SeriesPlotStyle.PIE:\n return 'Pie';\n case dh.plot.SeriesPlotStyle.HISTOGRAM:\n return 'Histogram';\n default:\n return type;\n }\n }\n\n static getTypeIcon(type: SeriesPlotStyle): React.ReactElement | null {\n switch (type) {\n case dh.plot.SeriesPlotStyle.LINE:\n return <LineIcon />;\n case dh.plot.SeriesPlotStyle.BAR:\n return <BarIcon />;\n case dh.plot.SeriesPlotStyle.SCATTER:\n return <ScatterIcon />;\n case dh.plot.SeriesPlotStyle.PIE:\n return <PieIcon />;\n case dh.plot.SeriesPlotStyle.HISTOGRAM:\n return <HistogramIcon />;\n default:\n return null;\n }\n }\n\n static getMaxSeriesCount(type: SeriesPlotStyle): number {\n switch (type) {\n case dh.plot.SeriesPlotStyle.PIE:\n return 1;\n case dh.plot.SeriesPlotStyle.HISTOGRAM:\n return 0;\n default:\n return 100;\n }\n }\n\n static getXAxisLabel(type: SeriesPlotStyle): string {\n switch (type) {\n case dh.plot.SeriesPlotStyle.PIE:\n return 'Labels';\n case dh.plot.SeriesPlotStyle.HISTOGRAM:\n return 'Data';\n default:\n return 'X-Axis';\n }\n }\n\n static getSeriesLabel(type: SeriesPlotStyle): string {\n switch (type) {\n case dh.plot.SeriesPlotStyle.PIE:\n return 'Values';\n default:\n return 'Series';\n }\n }\n\n static makeSeriesItem(value: string): SeriesItem {\n return { id: shortid.generate(), value };\n }\n\n static makeDefaultSeriesItems(\n type: SeriesPlotStyle,\n columns: Column[]\n ): SeriesItem[] {\n const maxSeriesCount = ChartBuilder.getMaxSeriesCount(type);\n if (maxSeriesCount === 0 || columns == null || columns.length === 0) {\n return [];\n }\n\n const value = columns.length > 1 ? columns[1].name : columns[0].name;\n return [ChartBuilder.makeSeriesItem(value)];\n }\n\n static getDefaultXAxis(\n type: SeriesPlotStyle,\n columns: Column[]\n ): string | null {\n if (columns != null && columns.length > 0) {\n return columns[0].name;\n }\n\n return null;\n }\n\n constructor(props: ChartBuilderProps) {\n super(props);\n\n this.handleAddSeries = this.handleAddSeries.bind(this);\n this.handleLinkStateChange = this.handleLinkStateChange.bind(this);\n this.handleReset = this.handleReset.bind(this);\n this.handleSeriesChange = this.handleSeriesChange.bind(this);\n this.handleSeriesDeleteClick = this.handleSeriesDeleteClick.bind(this);\n this.handleSubmit = this.handleSubmit.bind(this);\n this.handleTypeClick = this.handleTypeClick.bind(this);\n this.handleXAxisChange = this.handleXAxisChange.bind(this);\n this.sendChange = this.sendChange.bind(this);\n\n const { model } = props;\n const { columns } = model;\n\n const type = ChartBuilder.types[0];\n const xAxis = ChartBuilder.getDefaultXAxis(type, columns) as string;\n const seriesItems = ChartBuilder.makeDefaultSeriesItems(type, columns);\n\n this.state = {\n /** The selected chart type */\n type,\n\n /** Array of column names of the series to display */\n seriesItems,\n\n /** The column name to use as the x-axis */\n xAxis,\n\n /** Whether the newly created chart should be linked with the table (update when filters update) */\n isLinked: true,\n };\n }\n\n handleAddSeries(): void {\n this.setState(state => {\n let { seriesItems } = state;\n seriesItems = [...seriesItems];\n\n const { model } = this.props;\n const { columns } = model;\n seriesItems.push({\n id: shortid.generate(),\n value: columns[0].name,\n });\n\n return { seriesItems };\n }, this.sendChange);\n }\n\n handleLinkStateChange(event: React.ChangeEvent<HTMLInputElement>): void {\n this.setState({ isLinked: event.target.value === 'true' }, this.sendChange);\n }\n\n handleReset(): void {\n const { model } = this.props;\n const { columns } = model;\n\n const type = ChartBuilder.types[0];\n const xAxis = ChartBuilder.getDefaultXAxis(type, columns) as string;\n const seriesItems = ChartBuilder.makeDefaultSeriesItems(type, columns);\n const isLinked = true;\n\n this.setState({ type, seriesItems, xAxis, isLinked }, this.sendChange);\n }\n\n handleSeriesChange(event: React.ChangeEvent<HTMLSelectElement>): void {\n const { value } = event.target;\n const index = event.target.getAttribute('data-index') as string;\n const intIndex = parseInt(index, 10);\n\n this.setState(state => {\n let { seriesItems } = state;\n\n seriesItems = [...seriesItems];\n seriesItems[intIndex].value = value;\n\n return { seriesItems };\n }, this.sendChange);\n }\n\n handleSeriesDeleteClick(event: React.MouseEvent<HTMLButtonElement>): void {\n const changeEvent = (event as unknown) as React.ChangeEvent<HTMLButtonElement>;\n const index = changeEvent.target.getAttribute('data-index') as string;\n const intIndex = parseInt(index, 10);\n\n this.setState(state => {\n let { seriesItems } = state;\n\n seriesItems = [...seriesItems];\n seriesItems.splice(intIndex, 1);\n\n return { seriesItems };\n }, this.sendChange);\n }\n\n handleSubmit(event: React.FormEvent<HTMLFormElement>): void {\n event.preventDefault();\n\n const { onSubmit } = this.props;\n const { type, seriesItems, xAxis, isLinked } = this.state;\n const series = seriesItems.map(item => item.value);\n onSubmit({\n type: (`${type}` as unknown) as SeriesPlotStyle,\n series,\n xAxis,\n isLinked,\n });\n }\n\n handleTypeClick(event: React.MouseEvent<HTMLButtonElement>): void {\n const changeEvent = (event as unknown) as React.ChangeEvent<HTMLButtonElement>;\n const index = changeEvent.target.getAttribute('data-index') as string;\n const intIndex = parseInt(index, 10);\n\n const type = ChartBuilder.types[intIndex];\n\n log.debug2('handleTypeSelect', type);\n\n this.setState(state => {\n const maxSeriesCount = ChartBuilder.getMaxSeriesCount(type);\n let { seriesItems } = state;\n seriesItems = seriesItems.slice(0, maxSeriesCount);\n if (seriesItems.length === 0 && maxSeriesCount > 0) {\n const { model } = this.props;\n const { columns } = model;\n seriesItems = ChartBuilder.makeDefaultSeriesItems(type, columns);\n }\n\n return { type, seriesItems };\n }, this.sendChange);\n }\n\n handleXAxisChange(event: React.ChangeEvent<HTMLSelectElement>): void {\n const xAxis = event.target.value;\n log.debug2('x-axis change', xAxis);\n\n this.setState({ xAxis }, this.sendChange);\n }\n\n sendChange(): void {\n const { onChange } = this.props;\n const { isLinked, type, seriesItems, xAxis } = this.state;\n const series = seriesItems.map(item => item.value);\n\n onChange({ type, series, xAxis, isLinked });\n }\n\n render(): JSX.Element {\n const { model } = this.props;\n const { columns } = model;\n const { seriesItems, type, xAxis, isLinked } = this.state;\n const maxSeriesCount = ChartBuilder.getMaxSeriesCount(type);\n const xAxisLabel = ChartBuilder.getXAxisLabel(type);\n const seriesLabel = ChartBuilder.getSeriesLabel(type);\n const isSeriesVisible = seriesItems.length > 0;\n const isAddSeriesVisible = seriesItems.length < maxSeriesCount;\n\n return (\n <div className=\"chart-builder\">\n <form onSubmit={this.handleSubmit}>\n <div className=\"form-row\">\n <label>Select Chart Type</label>\n <div className=\"form-row\">\n {ChartBuilder.types.map((chartType, index) => {\n const key = (chartType as unknown) as React.Key;\n return (\n <div key={key} className=\"col col-chart-type\">\n <button\n type=\"button\"\n className={classNames(\n 'btn',\n 'btn-icon',\n 'btn-chart-type',\n {\n active: chartType === type,\n }\n )}\n data-index={index}\n onClick={this.handleTypeClick}\n >\n {ChartBuilder.getTypeIcon(chartType)}\n {ChartBuilder.getTypeName(chartType)}\n </button>\n </div>\n );\n })}\n </div>\n </div>\n <hr />\n <div className=\"form-row form-inline\">\n <label className=\"col-2 label-left\">{xAxisLabel}</label>\n <select\n className=\"form-control custom-select select-x-axis col\"\n value={xAxis}\n onChange={this.handleXAxisChange}\n >\n {columns.map(column => (\n <option key={column.name} value={column.name}>\n {column.name}\n </option>\n ))}\n </select>\n </div>\n {isSeriesVisible && <hr />}\n {seriesItems.map((seriesItem, i) => (\n <div\n className=\"form-row form-inline form-series-item\"\n key={seriesItem.id}\n data-testid={`form-series-item-${i}`}\n >\n <label className=\"col-2 label-left\">\n {i === 0 ? seriesLabel : ''}\n </label>\n <select\n className=\"form-control custom-select select-series col\"\n value={seriesItem.value}\n onChange={this.handleSeriesChange}\n data-testid={`select-series-item-${i}`}\n data-index={i}\n >\n {columns.map(column => (\n <option key={column.name} value={column.name} data-index={i}>\n {column.name}\n </option>\n ))}\n </select>\n {seriesItems.length > 1 && (\n <button\n type=\"button\"\n className=\"btn btn-link btn-link-icon btn-delete-series ml-2 px-2\"\n data-index={i}\n data-testid={`delete-series-${i}`}\n onClick={this.handleSeriesDeleteClick}\n >\n <FontAwesomeIcon icon={vsTrash} />\n </button>\n )}\n </div>\n ))}\n {isAddSeriesVisible && (\n <div className=\"form-row\">\n <div className=\"col-2\" />\n <button\n type=\"button\"\n className=\"btn btn-link btn-add-series mt-1\"\n onClick={this.handleAddSeries}\n >\n <FontAwesomeIcon icon={dhNewCircleLargeFilled} />\n Add Series\n </button>\n </div>\n )}\n <div className=\"form-row chart-builder-link\">\n <label className=\"col-2 label-right\">\n <div className=\"fa-md fa-layers\">\n <FontAwesomeIcon\n mask={dhTable}\n icon={vsCircleLargeFilled}\n transform=\"right-5 down-5\"\n />\n <FontAwesomeIcon\n icon={isLinked ? vsLink : dhUnlink}\n transform=\"grow-2 right-8 down-6\"\n />\n </div>\n </label>\n <RadioGroup\n onChange={this.handleLinkStateChange}\n value={`${isLinked}`}\n >\n <RadioItem value=\"true\">Sync State</RadioItem>\n <RadioItem value=\"false\">Freeze State</RadioItem>\n </RadioGroup>\n </div>\n <div className=\"form-row\">\n <div className=\"col-2 label-right\" />\n <div className=\"col chart-builder-link-info\">\n {isLinked\n ? 'Charts with synced state will update to match any filters or user modifications applied to the parent table.'\n : 'Freeze State disconnects the chart state from the parent table. New filters or user modifications on the parent table will not be applied.'}\n </div>\n </div>\n <div\n className={classNames('form-row', 'justify-content-end', 'my-3')}\n >\n <button\n type=\"button\"\n className=\"btn btn-outline-primary btn-reset\"\n onClick={this.handleReset}\n >\n Reset\n </button>\n <button type=\"submit\" className=\"btn btn-primary btn-submit\">\n Create\n </button>\n </div>\n </form>\n </div>\n );\n }\n}\n\nexport default ChartBuilder;\n"],"file":"ChartBuilder.js"}
1
+ {"version":3,"file":"ChartBuilder.js","names":["React","PureComponent","classNames","FontAwesomeIcon","RadioGroup","RadioItem","vsLink","dhUnlink","dhTable","dhNewCircleLargeFilled","vsCircleLargeFilled","vsTrash","dh","Log","shortid","BarIcon","HistogramIcon","LineIcon","PieIcon","ScatterIcon","log","module","ChartBuilder","getTypeName","type","plot","SeriesPlotStyle","LINE","BAR","SCATTER","PIE","HISTOGRAM","getTypeIcon","getMaxSeriesCount","getXAxisLabel","getSeriesLabel","makeSeriesItem","value","id","generate","makeDefaultSeriesItems","columns","maxSeriesCount","length","name","getDefaultXAxis","constructor","props","handleAddSeries","bind","handleLinkStateChange","handleReset","handleSeriesChange","handleSeriesDeleteClick","handleSubmit","handleTypeClick","handleXAxisChange","sendChange","model","types","xAxis","seriesItems","state","isLinked","setState","push","event","target","index","getAttribute","intIndex","parseInt","changeEvent","splice","preventDefault","onSubmit","series","map","item","debug2","slice","onChange","render","xAxisLabel","seriesLabel","isSeriesVisible","isAddSeriesVisible","chartType","key","active","column","seriesItem","i"],"sources":["../../src/sidebar/ChartBuilder.tsx"],"sourcesContent":["import React, { PureComponent } from 'react';\nimport classNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { RadioGroup, RadioItem } from '@deephaven/components';\nimport {\n vsLink,\n dhUnlink,\n dhTable,\n dhNewCircleLargeFilled,\n vsCircleLargeFilled,\n vsTrash,\n} from '@deephaven/icons';\nimport dh, { Column, SeriesPlotStyle } from '@deephaven/jsapi-shim';\nimport Log from '@deephaven/log';\nimport shortid from 'shortid';\nimport {\n BarIcon,\n HistogramIcon,\n LineIcon,\n PieIcon,\n ScatterIcon,\n} from './icons';\nimport './ChartBuilder.scss';\nimport IrisGridModel from '../IrisGridModel';\n\nconst log = Log.module('ChartBuilder');\n\nexport type ChartBuilderSettings = {\n type: SeriesPlotStyle;\n series: unknown;\n xAxis: string;\n isLinked: boolean;\n};\nexport type SeriesItem = {\n id: string;\n value: string;\n};\n\ninterface ChartBuilderProps {\n model: IrisGridModel;\n onSubmit: (obj: ChartBuilderSettings) => void;\n onChange: (obj: ChartBuilderSettings) => void;\n}\ninterface ChartBuilderState {\n /** The selected chart type */\n type: SeriesPlotStyle;\n\n /** Array of column names of the series to display */\n seriesItems: SeriesItem[];\n\n /** The column name to use as the x-axis */\n xAxis: string;\n\n /** Whether the newly created chart should be linked with the table (update when filters update) */\n isLinked: boolean;\n}\n/**\n * Form for configuring all the settings when creating a console.\n */\nclass ChartBuilder extends PureComponent<ChartBuilderProps, ChartBuilderState> {\n static types = [\n dh.plot.SeriesPlotStyle.LINE,\n dh.plot.SeriesPlotStyle.BAR,\n dh.plot.SeriesPlotStyle.SCATTER,\n dh.plot.SeriesPlotStyle.PIE,\n // IDS-6808: Disable Histogram in Chart Builder until we pipe histogram creation through the API\n // dh.plot.SeriesPlotStyle.HISTOGRAM,\n ];\n\n /**\n * Converts the provided chart type into a readable type.\n * Just replaces underscores with spaces and capitals the first letter of each word.\n */\n static getTypeName(type: SeriesPlotStyle): string | SeriesPlotStyle {\n switch (type) {\n case dh.plot.SeriesPlotStyle.LINE:\n return 'Line';\n case dh.plot.SeriesPlotStyle.BAR:\n return 'Bar';\n case dh.plot.SeriesPlotStyle.SCATTER:\n return 'Scatter';\n case dh.plot.SeriesPlotStyle.PIE:\n return 'Pie';\n case dh.plot.SeriesPlotStyle.HISTOGRAM:\n return 'Histogram';\n default:\n return type;\n }\n }\n\n static getTypeIcon(type: SeriesPlotStyle): React.ReactElement | null {\n switch (type) {\n case dh.plot.SeriesPlotStyle.LINE:\n return <LineIcon />;\n case dh.plot.SeriesPlotStyle.BAR:\n return <BarIcon />;\n case dh.plot.SeriesPlotStyle.SCATTER:\n return <ScatterIcon />;\n case dh.plot.SeriesPlotStyle.PIE:\n return <PieIcon />;\n case dh.plot.SeriesPlotStyle.HISTOGRAM:\n return <HistogramIcon />;\n default:\n return null;\n }\n }\n\n static getMaxSeriesCount(type: SeriesPlotStyle): number {\n switch (type) {\n case dh.plot.SeriesPlotStyle.PIE:\n return 1;\n case dh.plot.SeriesPlotStyle.HISTOGRAM:\n return 0;\n default:\n return 100;\n }\n }\n\n static getXAxisLabel(type: SeriesPlotStyle): string {\n switch (type) {\n case dh.plot.SeriesPlotStyle.PIE:\n return 'Labels';\n case dh.plot.SeriesPlotStyle.HISTOGRAM:\n return 'Data';\n default:\n return 'X-Axis';\n }\n }\n\n static getSeriesLabel(type: SeriesPlotStyle): string {\n switch (type) {\n case dh.plot.SeriesPlotStyle.PIE:\n return 'Values';\n default:\n return 'Series';\n }\n }\n\n static makeSeriesItem(value: string): SeriesItem {\n return { id: shortid.generate(), value };\n }\n\n static makeDefaultSeriesItems(\n type: SeriesPlotStyle,\n columns: Column[]\n ): SeriesItem[] {\n const maxSeriesCount = ChartBuilder.getMaxSeriesCount(type);\n if (maxSeriesCount === 0 || columns == null || columns.length === 0) {\n return [];\n }\n\n const value = columns.length > 1 ? columns[1].name : columns[0].name;\n return [ChartBuilder.makeSeriesItem(value)];\n }\n\n static getDefaultXAxis(\n type: SeriesPlotStyle,\n columns: Column[]\n ): string | null {\n if (columns != null && columns.length > 0) {\n return columns[0].name;\n }\n\n return null;\n }\n\n constructor(props: ChartBuilderProps) {\n super(props);\n\n this.handleAddSeries = this.handleAddSeries.bind(this);\n this.handleLinkStateChange = this.handleLinkStateChange.bind(this);\n this.handleReset = this.handleReset.bind(this);\n this.handleSeriesChange = this.handleSeriesChange.bind(this);\n this.handleSeriesDeleteClick = this.handleSeriesDeleteClick.bind(this);\n this.handleSubmit = this.handleSubmit.bind(this);\n this.handleTypeClick = this.handleTypeClick.bind(this);\n this.handleXAxisChange = this.handleXAxisChange.bind(this);\n this.sendChange = this.sendChange.bind(this);\n\n const { model } = props;\n const { columns } = model;\n\n const type = ChartBuilder.types[0];\n const xAxis = ChartBuilder.getDefaultXAxis(type, columns) as string;\n const seriesItems = ChartBuilder.makeDefaultSeriesItems(type, columns);\n\n this.state = {\n /** The selected chart type */\n type,\n\n /** Array of column names of the series to display */\n seriesItems,\n\n /** The column name to use as the x-axis */\n xAxis,\n\n /** Whether the newly created chart should be linked with the table (update when filters update) */\n isLinked: true,\n };\n }\n\n handleAddSeries(): void {\n this.setState(state => {\n let { seriesItems } = state;\n seriesItems = [...seriesItems];\n\n const { model } = this.props;\n const { columns } = model;\n seriesItems.push({\n id: shortid.generate(),\n value: columns[0].name,\n });\n\n return { seriesItems };\n }, this.sendChange);\n }\n\n handleLinkStateChange(event: React.ChangeEvent<HTMLInputElement>): void {\n this.setState({ isLinked: event.target.value === 'true' }, this.sendChange);\n }\n\n handleReset(): void {\n const { model } = this.props;\n const { columns } = model;\n\n const type = ChartBuilder.types[0];\n const xAxis = ChartBuilder.getDefaultXAxis(type, columns) as string;\n const seriesItems = ChartBuilder.makeDefaultSeriesItems(type, columns);\n const isLinked = true;\n\n this.setState({ type, seriesItems, xAxis, isLinked }, this.sendChange);\n }\n\n handleSeriesChange(event: React.ChangeEvent<HTMLSelectElement>): void {\n const { value } = event.target;\n const index = event.target.getAttribute('data-index') as string;\n const intIndex = parseInt(index, 10);\n\n this.setState(state => {\n let { seriesItems } = state;\n\n seriesItems = [...seriesItems];\n seriesItems[intIndex].value = value;\n\n return { seriesItems };\n }, this.sendChange);\n }\n\n handleSeriesDeleteClick(event: React.MouseEvent<HTMLButtonElement>): void {\n const changeEvent = (event as unknown) as React.ChangeEvent<HTMLButtonElement>;\n const index = changeEvent.target.getAttribute('data-index') as string;\n const intIndex = parseInt(index, 10);\n\n this.setState(state => {\n let { seriesItems } = state;\n\n seriesItems = [...seriesItems];\n seriesItems.splice(intIndex, 1);\n\n return { seriesItems };\n }, this.sendChange);\n }\n\n handleSubmit(event: React.FormEvent<HTMLFormElement>): void {\n event.preventDefault();\n\n const { onSubmit } = this.props;\n const { type, seriesItems, xAxis, isLinked } = this.state;\n const series = seriesItems.map(item => item.value);\n onSubmit({\n type: (`${type}` as unknown) as SeriesPlotStyle,\n series,\n xAxis,\n isLinked,\n });\n }\n\n handleTypeClick(event: React.MouseEvent<HTMLButtonElement>): void {\n const changeEvent = (event as unknown) as React.ChangeEvent<HTMLButtonElement>;\n const index = changeEvent.target.getAttribute('data-index') as string;\n const intIndex = parseInt(index, 10);\n\n const type = ChartBuilder.types[intIndex];\n\n log.debug2('handleTypeSelect', type);\n\n this.setState(state => {\n const maxSeriesCount = ChartBuilder.getMaxSeriesCount(type);\n let { seriesItems } = state;\n seriesItems = seriesItems.slice(0, maxSeriesCount);\n if (seriesItems.length === 0 && maxSeriesCount > 0) {\n const { model } = this.props;\n const { columns } = model;\n seriesItems = ChartBuilder.makeDefaultSeriesItems(type, columns);\n }\n\n return { type, seriesItems };\n }, this.sendChange);\n }\n\n handleXAxisChange(event: React.ChangeEvent<HTMLSelectElement>): void {\n const xAxis = event.target.value;\n log.debug2('x-axis change', xAxis);\n\n this.setState({ xAxis }, this.sendChange);\n }\n\n sendChange(): void {\n const { onChange } = this.props;\n const { isLinked, type, seriesItems, xAxis } = this.state;\n const series = seriesItems.map(item => item.value);\n\n onChange({ type, series, xAxis, isLinked });\n }\n\n render(): JSX.Element {\n const { model } = this.props;\n const { columns } = model;\n const { seriesItems, type, xAxis, isLinked } = this.state;\n const maxSeriesCount = ChartBuilder.getMaxSeriesCount(type);\n const xAxisLabel = ChartBuilder.getXAxisLabel(type);\n const seriesLabel = ChartBuilder.getSeriesLabel(type);\n const isSeriesVisible = seriesItems.length > 0;\n const isAddSeriesVisible = seriesItems.length < maxSeriesCount;\n\n return (\n <div className=\"chart-builder\">\n <form onSubmit={this.handleSubmit}>\n <div className=\"form-row\">\n <label>Select Chart Type</label>\n <div className=\"form-row\">\n {ChartBuilder.types.map((chartType, index) => {\n const key = (chartType as unknown) as React.Key;\n return (\n <div key={key} className=\"col col-chart-type\">\n <button\n type=\"button\"\n className={classNames(\n 'btn',\n 'btn-icon',\n 'btn-chart-type',\n {\n active: chartType === type,\n }\n )}\n data-index={index}\n onClick={this.handleTypeClick}\n >\n {ChartBuilder.getTypeIcon(chartType)}\n {ChartBuilder.getTypeName(chartType)}\n </button>\n </div>\n );\n })}\n </div>\n </div>\n <hr />\n <div className=\"form-row form-inline\">\n <label className=\"col-2 label-left\">{xAxisLabel}</label>\n <select\n className=\"form-control custom-select select-x-axis col\"\n value={xAxis}\n onChange={this.handleXAxisChange}\n >\n {columns.map(column => (\n <option key={column.name} value={column.name}>\n {column.name}\n </option>\n ))}\n </select>\n </div>\n {isSeriesVisible && <hr />}\n {seriesItems.map((seriesItem, i) => (\n <div\n className=\"form-row form-inline form-series-item\"\n key={seriesItem.id}\n data-testid={`form-series-item-${i}`}\n >\n <label className=\"col-2 label-left\">\n {i === 0 ? seriesLabel : ''}\n </label>\n <select\n className=\"form-control custom-select select-series col\"\n value={seriesItem.value}\n onChange={this.handleSeriesChange}\n data-testid={`select-series-item-${i}`}\n data-index={i}\n >\n {columns.map(column => (\n <option key={column.name} value={column.name} data-index={i}>\n {column.name}\n </option>\n ))}\n </select>\n {seriesItems.length > 1 && (\n <button\n type=\"button\"\n className=\"btn btn-link btn-link-icon btn-delete-series ml-2 px-2\"\n data-index={i}\n data-testid={`delete-series-${i}`}\n onClick={this.handleSeriesDeleteClick}\n >\n <FontAwesomeIcon icon={vsTrash} />\n </button>\n )}\n </div>\n ))}\n {isAddSeriesVisible && (\n <div className=\"form-row\">\n <div className=\"col-2\" />\n <button\n type=\"button\"\n className=\"btn btn-link btn-add-series mt-1\"\n onClick={this.handleAddSeries}\n >\n <FontAwesomeIcon icon={dhNewCircleLargeFilled} />\n Add Series\n </button>\n </div>\n )}\n <div className=\"form-row chart-builder-link\">\n <label className=\"col-2 label-right\">\n <div className=\"fa-md fa-layers\">\n <FontAwesomeIcon\n mask={dhTable}\n icon={vsCircleLargeFilled}\n transform=\"right-5 down-5\"\n />\n <FontAwesomeIcon\n icon={isLinked ? vsLink : dhUnlink}\n transform=\"grow-2 right-8 down-6\"\n />\n </div>\n </label>\n <RadioGroup\n onChange={this.handleLinkStateChange}\n value={`${isLinked}`}\n >\n <RadioItem value=\"true\">Sync State</RadioItem>\n <RadioItem value=\"false\">Freeze State</RadioItem>\n </RadioGroup>\n </div>\n <div className=\"form-row\">\n <div className=\"col-2 label-right\" />\n <div className=\"col chart-builder-link-info\">\n {isLinked\n ? 'Charts with synced state will update to match any filters or user modifications applied to the parent table.'\n : 'Freeze State disconnects the chart state from the parent table. New filters or user modifications on the parent table will not be applied.'}\n </div>\n </div>\n <div\n className={classNames('form-row', 'justify-content-end', 'my-3')}\n >\n <button\n type=\"button\"\n className=\"btn btn-outline-primary btn-reset\"\n onClick={this.handleReset}\n >\n Reset\n </button>\n <button type=\"submit\" className=\"btn btn-primary btn-submit\">\n Create\n </button>\n </div>\n </form>\n </div>\n );\n }\n}\n\nexport default ChartBuilder;\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
1
+ function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
2
2
 
3
3
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
4
4
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/sidebar/CustomColumnBuilder.tsx"],"names":["React","Component","classNames","shortid","memoize","DragDropContext","Droppable","FontAwesomeIcon","DragUtils","LoadingSpinner","dhNewCircleLargeFilled","vsWarning","vsPass","CustomColumnInput","IrisGridModel","CustomColumnBuilder","makeCustomColumnInputEventKey","generate","createCustomColumnInput","eventKey","name","formula","constructor","props","inputs","key","find","input","findIndex","handleAddColumnClick","bind","handleSaveClick","handleInputChange","handleDeleteColumn","handleCustomColumnUpdated","handleRequestFailed","handleDragEnd","resetRequestFailed","handleEditorTabNavigation","state","isCustomColumnApplying","errorMessage","hasRequestFailed","isSuccessShowing","container","successButtonTimer","componentDidMount","customColumns","parseCustomColumns","startListening","componentWillUnmount","stopListening","messageTimer","clearTimeout","resetErrorMessage","setState","model","addEventListener","EVENT","COLUMNS_CHANGED","UPDATED","REQUEST_FAILED","removeEventListener","length","customColumnInputs","map","customColumn","split","newInputs","push","customColumnIndex","getInputIndex","splice","type","value","customColumnInput","getInput","newCustomInput","setTimeout","SUCCESS_SHOW_DURATION","event","customEvent","detail","JSON","stringify","configuration","result","stopDragging","destination","sourceIndex","source","index","destinationIndex","sourceInput","focusEditorIndex","shiftKey","querySelectorAll","focus","nextFocusIndex","onSave","forEach","renderInputs","renderSaveButton","saveText","render","onCancel","startDragging","provided","snapshot","innerRef","droppableProps","dragging","draggingFromThisWith","placeholder","undefined"],"mappings":"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","sourcesContent":["import React, { Component, ReactElement } from 'react';\nimport classNames from 'classnames';\nimport shortid from 'shortid';\nimport memoize from 'memoize-one';\nimport { DragDropContext, Droppable, DropResult } from 'react-beautiful-dnd';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { DragUtils, LoadingSpinner } from '@deephaven/components';\nimport { dhNewCircleLargeFilled, vsWarning, vsPass } from '@deephaven/icons';\nimport CustomColumnInput from './CustomColumnInput';\nimport './CustomColumnBuilder.scss';\nimport IrisGridModel from '../IrisGridModel';\n\nexport type CustomColumnKey = 'eventKey' | 'name' | 'formula';\n\ntype Input = {\n eventKey: string;\n name: string;\n formula: string;\n};\ninterface CustomColumnBuilderProps {\n model: IrisGridModel;\n customColumns: string[];\n onSave: (columns: string[]) => void;\n onCancel: () => void;\n}\n\ninterface CustomColumnBuilderState {\n inputs: Input[];\n isCustomColumnApplying: boolean;\n errorMessage: ReactElement | null;\n hasRequestFailed: boolean;\n isSuccessShowing: boolean;\n}\nclass CustomColumnBuilder extends Component<\n CustomColumnBuilderProps,\n CustomColumnBuilderState\n> {\n static SUCCESS_SHOW_DURATION = 750;\n\n static defaultProps = {\n customColumns: [],\n onSave: (): void => undefined,\n onCancel: (): void => undefined,\n };\n\n static makeCustomColumnInputEventKey(): string {\n return shortid.generate();\n }\n\n static createCustomColumnInput(): Input {\n return {\n eventKey: shortid.generate(),\n name: '',\n formula: '',\n };\n }\n\n constructor(props: CustomColumnBuilderProps) {\n super(props);\n\n this.handleAddColumnClick = this.handleAddColumnClick.bind(this);\n this.handleSaveClick = this.handleSaveClick.bind(this);\n this.handleInputChange = this.handleInputChange.bind(this);\n this.handleDeleteColumn = this.handleDeleteColumn.bind(this);\n this.handleCustomColumnUpdated = this.handleCustomColumnUpdated.bind(this);\n this.handleRequestFailed = this.handleRequestFailed.bind(this);\n this.handleDragEnd = this.handleDragEnd.bind(this);\n this.resetRequestFailed = this.resetRequestFailed.bind(this);\n\n this.handleEditorTabNavigation = this.handleEditorTabNavigation.bind(this);\n\n this.state = {\n inputs: [],\n isCustomColumnApplying: false,\n errorMessage: null,\n hasRequestFailed: false,\n isSuccessShowing: false,\n };\n this.container = null;\n this.successButtonTimer = null;\n }\n\n componentDidMount(): void {\n const { customColumns } = this.props;\n this.parseCustomColumns(customColumns);\n this.startListening();\n }\n\n componentWillUnmount(): void {\n this.stopListening();\n if (this.messageTimer) {\n clearTimeout(this.messageTimer);\n }\n if (this.successButtonTimer) {\n clearTimeout(this.successButtonTimer);\n }\n }\n\n container: HTMLDivElement | null;\n\n successButtonTimer: ReturnType<typeof setTimeout> | null;\n\n messageTimer: undefined;\n\n getInput = memoize((inputs: Input[], key: string) =>\n inputs.find(input => input.eventKey === key)\n );\n\n getInputIndex = memoize((inputs: Input[], key: string) =>\n inputs.findIndex(input => input.eventKey === key)\n );\n\n resetErrorMessage(): void {\n this.setState({ errorMessage: null });\n }\n\n startListening(): void {\n const { model } = this.props;\n model.addEventListener(\n IrisGridModel.EVENT.COLUMNS_CHANGED,\n this.handleCustomColumnUpdated\n );\n model.addEventListener(\n IrisGridModel.EVENT.UPDATED,\n this.handleCustomColumnUpdated\n );\n model.addEventListener(\n IrisGridModel.EVENT.REQUEST_FAILED,\n this.handleRequestFailed\n );\n }\n\n stopListening(): void {\n const { model } = this.props;\n model.removeEventListener(\n IrisGridModel.EVENT.COLUMNS_CHANGED,\n this.handleCustomColumnUpdated\n );\n model.removeEventListener(\n IrisGridModel.EVENT.UPDATED,\n this.handleCustomColumnUpdated\n );\n model.removeEventListener(\n IrisGridModel.EVENT.REQUEST_FAILED,\n this.handleRequestFailed\n );\n }\n\n parseCustomColumns(customColumns: string[]): void {\n if (customColumns.length > 0) {\n const customColumnInputs = customColumns.map(customColumn => {\n const input = customColumn.split(/=(.+)/, 2);\n return {\n eventKey: CustomColumnBuilder.makeCustomColumnInputEventKey(),\n name: input[0],\n formula: input[1],\n };\n });\n this.setState({ inputs: customColumnInputs });\n } else {\n this.setState({\n inputs: [CustomColumnBuilder.createCustomColumnInput()],\n });\n }\n }\n\n handleAddColumnClick(): void {\n const { inputs } = this.state;\n const newInputs = [...inputs];\n newInputs.push(CustomColumnBuilder.createCustomColumnInput());\n this.setState({\n inputs: newInputs,\n });\n }\n\n handleDeleteColumn(eventKey: string): void {\n const { inputs } = this.state;\n const customColumnIndex = this.getInputIndex(inputs, eventKey);\n const newInputs = [...inputs];\n newInputs.splice(customColumnIndex, 1);\n if (newInputs.length === 0) {\n newInputs.push(CustomColumnBuilder.createCustomColumnInput());\n }\n this.setState({\n inputs: newInputs,\n });\n }\n\n handleInputChange(\n eventKey: string,\n type: CustomColumnKey,\n value: string\n ): void {\n const { inputs } = this.state;\n const customColumnIndex = this.getInputIndex(inputs, eventKey);\n const customColumnInput = this.getInput(inputs, eventKey);\n\n const newCustomInput = { ...customColumnInput } as Input;\n newCustomInput[type] = value;\n\n const newInputs = [...inputs];\n newInputs.splice(customColumnIndex, 1, newCustomInput);\n this.setState({\n inputs: newInputs,\n });\n }\n\n handleCustomColumnUpdated(): void {\n const { isCustomColumnApplying } = this.state;\n if (!isCustomColumnApplying) {\n return;\n }\n this.setState(\n { isCustomColumnApplying: false, isSuccessShowing: true },\n () => {\n this.successButtonTimer = setTimeout(\n () => this.setState({ isSuccessShowing: false }),\n CustomColumnBuilder.SUCCESS_SHOW_DURATION\n );\n }\n );\n }\n\n handleRequestFailed(event: Event): void {\n const customEvent = event as CustomEvent;\n const { isCustomColumnApplying } = this.state;\n if (!isCustomColumnApplying) {\n return;\n }\n\n this.setState({\n isCustomColumnApplying: false,\n errorMessage: (\n <>\n <p>\n <FontAwesomeIcon icon={vsWarning} /> Failed to apply custom columns.\n </p>\n <div className=\"error-box\">\n {customEvent.detail.errorMessage}\n <br />\n Table configuration:{' '}\n {JSON.stringify(customEvent.detail.configuration)}\n </div>\n </>\n ),\n hasRequestFailed: true,\n });\n }\n\n handleDragEnd(result: DropResult): void {\n DragUtils.stopDragging();\n\n // if dropped outside the list\n if (!result.destination) {\n return;\n }\n const { inputs } = this.state;\n const sourceIndex = result.source.index;\n const destinationIndex = result.destination.index;\n const newInputs = [...inputs];\n const sourceInput = inputs[sourceIndex];\n\n newInputs.splice(sourceIndex, 1);\n newInputs.splice(destinationIndex, 0, sourceInput);\n\n this.setState({ inputs: newInputs });\n }\n\n handleEditorTabNavigation(focusEditorIndex: number, shiftKey: boolean): void {\n const { inputs } = this.state;\n // focus on drag handle\n if (shiftKey) {\n (this.container?.querySelectorAll(`.btn-drag-handle`)[\n focusEditorIndex\n ] as HTMLButtonElement).focus();\n return;\n }\n if (focusEditorIndex === inputs.length - 1) {\n (this.container?.querySelectorAll(`.btn-add-column`)[\n focusEditorIndex\n ] as HTMLButtonElement).focus();\n } else {\n // focus on next column name input\n const nextFocusIndex = focusEditorIndex + 1;\n (this.container?.querySelectorAll(`.custom-column-input`)[\n nextFocusIndex\n ] as HTMLInputElement).focus();\n }\n }\n\n handleSaveClick(): void {\n const { onSave } = this.props;\n const { inputs, isCustomColumnApplying } = this.state;\n if (isCustomColumnApplying) {\n return;\n }\n const customColumns = [] as string[];\n inputs.forEach(input => {\n const { name, formula } = input;\n if (name && formula) {\n customColumns.push(`${name}=${formula}`);\n }\n });\n this.resetErrorMessage();\n this.setState({ isCustomColumnApplying: true });\n onSave(customColumns);\n }\n\n resetRequestFailed(): void {\n this.setState(({ hasRequestFailed }) => {\n if (hasRequestFailed) {\n return { hasRequestFailed: false };\n }\n return null;\n });\n }\n\n renderInputs(): ReactElement[] {\n const { inputs, hasRequestFailed } = this.state;\n\n return inputs.map((input, index) => {\n const { eventKey, name, formula } = input;\n return (\n <CustomColumnInput\n key={eventKey}\n inputIndex={index}\n eventKey={eventKey}\n name={name}\n formula={formula}\n onChange={this.handleInputChange}\n onDeleteColumn={this.handleDeleteColumn}\n onTabInEditor={this.handleEditorTabNavigation}\n invalid={hasRequestFailed}\n />\n );\n });\n }\n\n renderSaveButton(): ReactElement {\n const { inputs, isCustomColumnApplying, isSuccessShowing } = this.state;\n const saveText = inputs.length > 1 ? 'Save Columns' : 'Save Column';\n\n return (\n <button\n type=\"button\"\n className={classNames(\n 'btn btn-apply',\n {\n 'btn-spinner': isCustomColumnApplying,\n },\n isSuccessShowing ? 'btn-success' : 'btn-primary'\n )}\n disabled={isSuccessShowing || isCustomColumnApplying}\n onClick={this.handleSaveClick}\n >\n {isCustomColumnApplying && (\n <span>\n <LoadingSpinner />\n <span className=\"btn-normal-content\">Applying</span>\n <span className=\"btn-hover-content\">Applying</span>\n </span>\n )}\n {!isSuccessShowing && !isCustomColumnApplying && saveText}\n {isSuccessShowing && (\n <>\n <FontAwesomeIcon icon={vsPass} /> Success\n </>\n )}\n </button>\n );\n }\n\n render(): ReactElement {\n const { onCancel } = this.props;\n const { errorMessage } = this.state;\n return (\n <div\n role=\"presentation\"\n className=\"custom-column-builder-container\"\n ref={container => {\n this.container = container;\n }}\n onClick={this.resetRequestFailed}\n onFocus={this.resetRequestFailed}\n >\n <div className=\"section-title\">Custom Column Name and Formula</div>\n <hr />\n <DragDropContext\n onDragStart={DragUtils.startDragging}\n onDragEnd={this.handleDragEnd}\n >\n <Droppable droppableId=\"droppable-custom-columns\">\n {(provided, snapshot) => (\n <div\n ref={provided.innerRef}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...provided.droppableProps}\n className={classNames('droppable-container', {\n dragging: snapshot.draggingFromThisWith,\n })}\n >\n {this.renderInputs()}\n {provided.placeholder}\n </div>\n )}\n </Droppable>\n </DragDropContext>\n\n <div className=\"pt-1 px-3\">\n <button\n type=\"button\"\n className=\"btn btn-link btn-add-column\"\n onClick={this.handleAddColumnClick}\n >\n <FontAwesomeIcon icon={dhNewCircleLargeFilled} />\n Add Another Column\n </button>\n </div>\n\n <div className=\"custom-column-builder-footer\">\n {errorMessage && <div className=\"error-message\">{errorMessage}</div>}\n\n <div className=\"d-flex justify-content-end\">\n <button\n type=\"button\"\n className=\"btn btn-outline-primary mr-2\"\n onClick={onCancel}\n >\n Cancel\n </button>\n {this.renderSaveButton()}\n </div>\n </div>\n </div>\n );\n }\n}\n\nexport default CustomColumnBuilder;\n"],"file":"CustomColumnBuilder.js"}
1
+ {"version":3,"file":"CustomColumnBuilder.js","names":["React","Component","classNames","shortid","memoize","DragDropContext","Droppable","FontAwesomeIcon","DragUtils","LoadingSpinner","dhNewCircleLargeFilled","vsWarning","vsPass","CustomColumnInput","IrisGridModel","CustomColumnBuilder","makeCustomColumnInputEventKey","generate","createCustomColumnInput","eventKey","name","formula","constructor","props","inputs","key","find","input","findIndex","handleAddColumnClick","bind","handleSaveClick","handleInputChange","handleDeleteColumn","handleCustomColumnUpdated","handleRequestFailed","handleDragEnd","resetRequestFailed","handleEditorTabNavigation","state","isCustomColumnApplying","errorMessage","hasRequestFailed","isSuccessShowing","container","successButtonTimer","componentDidMount","customColumns","parseCustomColumns","startListening","componentWillUnmount","stopListening","messageTimer","clearTimeout","resetErrorMessage","setState","model","addEventListener","EVENT","COLUMNS_CHANGED","UPDATED","REQUEST_FAILED","removeEventListener","length","customColumnInputs","map","customColumn","split","newInputs","push","customColumnIndex","getInputIndex","splice","type","value","customColumnInput","getInput","newCustomInput","setTimeout","SUCCESS_SHOW_DURATION","event","customEvent","detail","JSON","stringify","configuration","result","stopDragging","destination","sourceIndex","source","index","destinationIndex","sourceInput","focusEditorIndex","shiftKey","querySelectorAll","focus","nextFocusIndex","onSave","forEach","renderInputs","renderSaveButton","saveText","render","onCancel","startDragging","provided","snapshot","innerRef","droppableProps","dragging","draggingFromThisWith","placeholder","undefined"],"sources":["../../src/sidebar/CustomColumnBuilder.tsx"],"sourcesContent":["import React, { Component, ReactElement } from 'react';\nimport classNames from 'classnames';\nimport shortid from 'shortid';\nimport memoize from 'memoize-one';\nimport { DragDropContext, Droppable, DropResult } from 'react-beautiful-dnd';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { DragUtils, LoadingSpinner } from '@deephaven/components';\nimport { dhNewCircleLargeFilled, vsWarning, vsPass } from '@deephaven/icons';\nimport CustomColumnInput from './CustomColumnInput';\nimport './CustomColumnBuilder.scss';\nimport IrisGridModel from '../IrisGridModel';\n\nexport type CustomColumnKey = 'eventKey' | 'name' | 'formula';\n\ntype Input = {\n eventKey: string;\n name: string;\n formula: string;\n};\ninterface CustomColumnBuilderProps {\n model: IrisGridModel;\n customColumns: string[];\n onSave: (columns: string[]) => void;\n onCancel: () => void;\n}\n\ninterface CustomColumnBuilderState {\n inputs: Input[];\n isCustomColumnApplying: boolean;\n errorMessage: ReactElement | null;\n hasRequestFailed: boolean;\n isSuccessShowing: boolean;\n}\nclass CustomColumnBuilder extends Component<\n CustomColumnBuilderProps,\n CustomColumnBuilderState\n> {\n static SUCCESS_SHOW_DURATION = 750;\n\n static defaultProps = {\n customColumns: [],\n onSave: (): void => undefined,\n onCancel: (): void => undefined,\n };\n\n static makeCustomColumnInputEventKey(): string {\n return shortid.generate();\n }\n\n static createCustomColumnInput(): Input {\n return {\n eventKey: shortid.generate(),\n name: '',\n formula: '',\n };\n }\n\n constructor(props: CustomColumnBuilderProps) {\n super(props);\n\n this.handleAddColumnClick = this.handleAddColumnClick.bind(this);\n this.handleSaveClick = this.handleSaveClick.bind(this);\n this.handleInputChange = this.handleInputChange.bind(this);\n this.handleDeleteColumn = this.handleDeleteColumn.bind(this);\n this.handleCustomColumnUpdated = this.handleCustomColumnUpdated.bind(this);\n this.handleRequestFailed = this.handleRequestFailed.bind(this);\n this.handleDragEnd = this.handleDragEnd.bind(this);\n this.resetRequestFailed = this.resetRequestFailed.bind(this);\n\n this.handleEditorTabNavigation = this.handleEditorTabNavigation.bind(this);\n\n this.state = {\n inputs: [],\n isCustomColumnApplying: false,\n errorMessage: null,\n hasRequestFailed: false,\n isSuccessShowing: false,\n };\n this.container = null;\n this.successButtonTimer = null;\n }\n\n componentDidMount(): void {\n const { customColumns } = this.props;\n this.parseCustomColumns(customColumns);\n this.startListening();\n }\n\n componentWillUnmount(): void {\n this.stopListening();\n if (this.messageTimer) {\n clearTimeout(this.messageTimer);\n }\n if (this.successButtonTimer) {\n clearTimeout(this.successButtonTimer);\n }\n }\n\n container: HTMLDivElement | null;\n\n successButtonTimer: ReturnType<typeof setTimeout> | null;\n\n messageTimer: undefined;\n\n getInput = memoize((inputs: Input[], key: string) =>\n inputs.find(input => input.eventKey === key)\n );\n\n getInputIndex = memoize((inputs: Input[], key: string) =>\n inputs.findIndex(input => input.eventKey === key)\n );\n\n resetErrorMessage(): void {\n this.setState({ errorMessage: null });\n }\n\n startListening(): void {\n const { model } = this.props;\n model.addEventListener(\n IrisGridModel.EVENT.COLUMNS_CHANGED,\n this.handleCustomColumnUpdated\n );\n model.addEventListener(\n IrisGridModel.EVENT.UPDATED,\n this.handleCustomColumnUpdated\n );\n model.addEventListener(\n IrisGridModel.EVENT.REQUEST_FAILED,\n this.handleRequestFailed\n );\n }\n\n stopListening(): void {\n const { model } = this.props;\n model.removeEventListener(\n IrisGridModel.EVENT.COLUMNS_CHANGED,\n this.handleCustomColumnUpdated\n );\n model.removeEventListener(\n IrisGridModel.EVENT.UPDATED,\n this.handleCustomColumnUpdated\n );\n model.removeEventListener(\n IrisGridModel.EVENT.REQUEST_FAILED,\n this.handleRequestFailed\n );\n }\n\n parseCustomColumns(customColumns: string[]): void {\n if (customColumns.length > 0) {\n const customColumnInputs = customColumns.map(customColumn => {\n const input = customColumn.split(/=(.+)/, 2);\n return {\n eventKey: CustomColumnBuilder.makeCustomColumnInputEventKey(),\n name: input[0],\n formula: input[1],\n };\n });\n this.setState({ inputs: customColumnInputs });\n } else {\n this.setState({\n inputs: [CustomColumnBuilder.createCustomColumnInput()],\n });\n }\n }\n\n handleAddColumnClick(): void {\n const { inputs } = this.state;\n const newInputs = [...inputs];\n newInputs.push(CustomColumnBuilder.createCustomColumnInput());\n this.setState({\n inputs: newInputs,\n });\n }\n\n handleDeleteColumn(eventKey: string): void {\n const { inputs } = this.state;\n const customColumnIndex = this.getInputIndex(inputs, eventKey);\n const newInputs = [...inputs];\n newInputs.splice(customColumnIndex, 1);\n if (newInputs.length === 0) {\n newInputs.push(CustomColumnBuilder.createCustomColumnInput());\n }\n this.setState({\n inputs: newInputs,\n });\n }\n\n handleInputChange(\n eventKey: string,\n type: CustomColumnKey,\n value: string\n ): void {\n const { inputs } = this.state;\n const customColumnIndex = this.getInputIndex(inputs, eventKey);\n const customColumnInput = this.getInput(inputs, eventKey);\n\n const newCustomInput = { ...customColumnInput } as Input;\n newCustomInput[type] = value;\n\n const newInputs = [...inputs];\n newInputs.splice(customColumnIndex, 1, newCustomInput);\n this.setState({\n inputs: newInputs,\n });\n }\n\n handleCustomColumnUpdated(): void {\n const { isCustomColumnApplying } = this.state;\n if (!isCustomColumnApplying) {\n return;\n }\n this.setState(\n { isCustomColumnApplying: false, isSuccessShowing: true },\n () => {\n this.successButtonTimer = setTimeout(\n () => this.setState({ isSuccessShowing: false }),\n CustomColumnBuilder.SUCCESS_SHOW_DURATION\n );\n }\n );\n }\n\n handleRequestFailed(event: Event): void {\n const customEvent = event as CustomEvent;\n const { isCustomColumnApplying } = this.state;\n if (!isCustomColumnApplying) {\n return;\n }\n\n this.setState({\n isCustomColumnApplying: false,\n errorMessage: (\n <>\n <p>\n <FontAwesomeIcon icon={vsWarning} /> Failed to apply custom columns.\n </p>\n <div className=\"error-box\">\n {customEvent.detail.errorMessage}\n <br />\n Table configuration:{' '}\n {JSON.stringify(customEvent.detail.configuration)}\n </div>\n </>\n ),\n hasRequestFailed: true,\n });\n }\n\n handleDragEnd(result: DropResult): void {\n DragUtils.stopDragging();\n\n // if dropped outside the list\n if (!result.destination) {\n return;\n }\n const { inputs } = this.state;\n const sourceIndex = result.source.index;\n const destinationIndex = result.destination.index;\n const newInputs = [...inputs];\n const sourceInput = inputs[sourceIndex];\n\n newInputs.splice(sourceIndex, 1);\n newInputs.splice(destinationIndex, 0, sourceInput);\n\n this.setState({ inputs: newInputs });\n }\n\n handleEditorTabNavigation(focusEditorIndex: number, shiftKey: boolean): void {\n const { inputs } = this.state;\n // focus on drag handle\n if (shiftKey) {\n (this.container?.querySelectorAll(`.btn-drag-handle`)[\n focusEditorIndex\n ] as HTMLButtonElement).focus();\n return;\n }\n if (focusEditorIndex === inputs.length - 1) {\n (this.container?.querySelectorAll(`.btn-add-column`)[\n focusEditorIndex\n ] as HTMLButtonElement).focus();\n } else {\n // focus on next column name input\n const nextFocusIndex = focusEditorIndex + 1;\n (this.container?.querySelectorAll(`.custom-column-input`)[\n nextFocusIndex\n ] as HTMLInputElement).focus();\n }\n }\n\n handleSaveClick(): void {\n const { onSave } = this.props;\n const { inputs, isCustomColumnApplying } = this.state;\n if (isCustomColumnApplying) {\n return;\n }\n const customColumns = [] as string[];\n inputs.forEach(input => {\n const { name, formula } = input;\n if (name && formula) {\n customColumns.push(`${name}=${formula}`);\n }\n });\n this.resetErrorMessage();\n this.setState({ isCustomColumnApplying: true });\n onSave(customColumns);\n }\n\n resetRequestFailed(): void {\n this.setState(({ hasRequestFailed }) => {\n if (hasRequestFailed) {\n return { hasRequestFailed: false };\n }\n return null;\n });\n }\n\n renderInputs(): ReactElement[] {\n const { inputs, hasRequestFailed } = this.state;\n\n return inputs.map((input, index) => {\n const { eventKey, name, formula } = input;\n return (\n <CustomColumnInput\n key={eventKey}\n inputIndex={index}\n eventKey={eventKey}\n name={name}\n formula={formula}\n onChange={this.handleInputChange}\n onDeleteColumn={this.handleDeleteColumn}\n onTabInEditor={this.handleEditorTabNavigation}\n invalid={hasRequestFailed}\n />\n );\n });\n }\n\n renderSaveButton(): ReactElement {\n const { inputs, isCustomColumnApplying, isSuccessShowing } = this.state;\n const saveText = inputs.length > 1 ? 'Save Columns' : 'Save Column';\n\n return (\n <button\n type=\"button\"\n className={classNames(\n 'btn btn-apply',\n {\n 'btn-spinner': isCustomColumnApplying,\n },\n isSuccessShowing ? 'btn-success' : 'btn-primary'\n )}\n disabled={isSuccessShowing || isCustomColumnApplying}\n onClick={this.handleSaveClick}\n >\n {isCustomColumnApplying && (\n <span>\n <LoadingSpinner />\n <span className=\"btn-normal-content\">Applying</span>\n <span className=\"btn-hover-content\">Applying</span>\n </span>\n )}\n {!isSuccessShowing && !isCustomColumnApplying && saveText}\n {isSuccessShowing && (\n <>\n <FontAwesomeIcon icon={vsPass} /> Success\n </>\n )}\n </button>\n );\n }\n\n render(): ReactElement {\n const { onCancel } = this.props;\n const { errorMessage } = this.state;\n return (\n <div\n role=\"presentation\"\n className=\"custom-column-builder-container\"\n ref={container => {\n this.container = container;\n }}\n onClick={this.resetRequestFailed}\n onFocus={this.resetRequestFailed}\n >\n <div className=\"section-title\">Custom Column Name and Formula</div>\n <hr />\n <DragDropContext\n onDragStart={DragUtils.startDragging}\n onDragEnd={this.handleDragEnd}\n >\n <Droppable droppableId=\"droppable-custom-columns\">\n {(provided, snapshot) => (\n <div\n ref={provided.innerRef}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...provided.droppableProps}\n className={classNames('droppable-container', {\n dragging: snapshot.draggingFromThisWith,\n })}\n >\n {this.renderInputs()}\n {provided.placeholder}\n </div>\n )}\n </Droppable>\n </DragDropContext>\n\n <div className=\"pt-1 px-3\">\n <button\n type=\"button\"\n className=\"btn btn-link btn-add-column\"\n onClick={this.handleAddColumnClick}\n >\n <FontAwesomeIcon icon={dhNewCircleLargeFilled} />\n Add Another Column\n </button>\n </div>\n\n <div className=\"custom-column-builder-footer\">\n {errorMessage && <div className=\"error-message\">{errorMessage}</div>}\n\n <div className=\"d-flex justify-content-end\">\n <button\n type=\"button\"\n className=\"btn btn-outline-primary mr-2\"\n onClick={onCancel}\n >\n Cancel\n </button>\n {this.renderSaveButton()}\n </div>\n </div>\n </div>\n );\n }\n}\n\nexport default CustomColumnBuilder;\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
1
+ function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
2
2
 
3
3
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
4
4
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/sidebar/CustomColumnInput.tsx"],"names":["React","PureComponent","classNames","Draggable","FontAwesomeIcon","Tooltip","vsTrash","vsGripper","InputEditor","CustomColumnInput","constructor","props","handleFormulaEditorContentChanged","bind","formulaValue","onChange","eventKey","replace","INPUT_TYPE","FORMULA","render","name","formula","onDeleteColumn","inputIndex","onTabInEditor","invalid","provided","snapshot","dragging","isDragging","innerRef","draggableProps","event","NAME","target","value","dragHandleProps","language","undefined"],"mappings":";;;;AAAA,OAAOA,KAAP,IAAgBC,aAAhB,QAAmD,OAAnD;AACA,OAAOC,UAAP,MAAuB,YAAvB;AACA,SAASC,SAAT,QAA0B,qBAA1B;AACA,SAASC,eAAT,QAAgC,gCAAhC;AACA,SAASC,OAAT,QAAwB,uBAAxB;AACA,SAASC,OAAT,EAAkBC,SAAlB,QAAmC,kBAAnC;OACOC,W;;AAiBP,MAAMC,iBAAN,SAAgCR,aAAhC,CAGE;AAgBAS,EAAAA,WAAW,CAACC,KAAD,EAAgC;AACzC,UAAMA,KAAN;AACA,SAAKC,iCAAL,GAAyC,KAAKA,iCAAL,CAAuCC,IAAvC,CACvC,IADuC,CAAzC;AAGD;;AAEDD,EAAAA,iCAAiC,CAACE,YAAD,EAA8B;AAC7D,QAAM;AAAEC,MAAAA,QAAF;AAAYC,MAAAA;AAAZ,QAAyB,KAAKL,KAApC;;AACA,QAAIG,YAAJ,EAAkB;AAChBA,MAAAA,YAAY,CAACG,OAAb,CAAqB,gBAArB,EAAuC,EAAvC,EADgB,CAC4B;;AAC5CF,MAAAA,QAAQ,CACNC,QADM,EAENP,iBAAiB,CAACS,UAAlB,CAA6BC,OAFvB,EAGNL,YAHM,CAAR;AAKD;AACF;;AAEDM,EAAAA,MAAM,GAAiB;AACrB,QAAM;AACJJ,MAAAA,QADI;AAEJK,MAAAA,IAFI;AAGJC,MAAAA,OAHI;AAIJP,MAAAA,QAAQ,EAARA,SAJI;AAKJQ,MAAAA,cALI;AAMJC,MAAAA,UANI;AAOJC,MAAAA,aAPI;AAQJC,MAAAA;AARI,QASF,KAAKf,KATT;AAUA,wBACE,oBAAC,SAAD;AACE,MAAA,WAAW,EAAEK,QADf;AAEE,MAAA,KAAK,EAAEQ,UAFT;AAGE,MAAA,iCAAiC;AAHnC,OAKG,CAACG,QAAD,EAAWC,QAAX,kBACC;AACE,MAAA,SAAS,EAAE1B,UAAU,CAAC,qBAAD,EAAwB;AAC3C2B,QAAAA,QAAQ,EAAED,QAAQ,CAACE;AADwB,OAAxB,CADvB;AAIE,MAAA,GAAG,EAAEH,QAAQ,CAACI,QAJhB,CAKE;;AALF,OAMMJ,QAAQ,CAACK,cANf,gBAQE;AAAK,MAAA,SAAS,EAAC;AAAf,oBACE;AAAK,MAAA,SAAS,EAAC;AAAf,oBACE;AACE,MAAA,SAAS,EAAE9B,UAAU,CAAC,kCAAD,EAAqC;AACxD,sBAAcwB;AAD0C,OAArC,CADvB;AAIE,MAAA,WAAW,EAAC,aAJd;AAKE,MAAA,KAAK,EAAEL,IALT;AAME,MAAA,QAAQ,EAAEY,KAAK,IAAI;AACjBlB,QAAAA,SAAQ,CACNC,QADM,EAENP,iBAAiB,CAACS,UAAlB,CAA6BgB,IAFvB,EAGND,KAAK,CAACE,MAAN,CAAaC,KAHP,CAAR;AAKD;AAZH,MADF,eAeE;AACE,MAAA,IAAI,EAAC,QADP;AAEE,MAAA,SAAS,EAAC,sCAFZ;AAGE,MAAA,OAAO,EAAE,MAAM;AACbb,QAAAA,cAAc,CAACP,QAAD,CAAd;AACD;AALH,oBAOE,oBAAC,OAAD,+BAPF,eAQE,oBAAC,eAAD;AAAiB,MAAA,IAAI,EAAEV;AAAvB,MARF,CAfF,eA0BE;AACE,MAAA,IAAI,EAAC,QADP;AAEE,MAAA,SAAS,EAAC,iDAFZ,CAGE;;AAHF,OAIMqB,QAAQ,CAACU,eAJf,gBAME,oBAAC,OAAD,kCANF,eAOE,oBAAC,eAAD;AAAiB,MAAA,IAAI,EAAE9B;AAAvB,MAPF,CA1BF,CADF,eAqCE,oBAAC,WAAD;AACE,MAAA,cAAc,EAAE;AAAE+B,QAAAA,QAAQ,EAAE;AAAZ,OADlB;AAEE,MAAA,WAAW,EAAEd,UAFf;AAGE,MAAA,KAAK,EAAEF,OAHT;AAIE,MAAA,gBAAgB,EAAE,KAAKV,iCAJzB;AAKE,MAAA,KAAK,EAAEa,aALT;AAME,MAAA,OAAO,EAAEC;AANX,MArCF,CARF,eAsDE,+BAtDF,CANJ,CADF;AAkED;;AAhHD;;gBAHIjB,iB,gBAIgB;AAClByB,EAAAA,IAAI,EAAE,MADY;AAElBf,EAAAA,OAAO,EAAE;AAFS,C;;gBAJhBV,iB,kBASkB;AACpBY,EAAAA,IAAI,EAAE,EADc;AAEpBG,EAAAA,UAAU,EAAE,CAFQ;AAGpBF,EAAAA,OAAO,EAAE,EAHW;AAIpBP,EAAAA,QAAQ,EAAE,MAAYwB,SAJF;AAKpBhB,EAAAA,cAAc,EAAE,MAAYgB,SALR;AAMpBd,EAAAA,aAAa,EAAE,MAAYc,SANP;AAOpBb,EAAAA,OAAO,EAAE;AAPW,C;;AA6GxB,eAAejB,iBAAf","sourcesContent":["import React, { PureComponent, ReactElement } from 'react';\nimport classNames from 'classnames';\nimport { Draggable } from 'react-beautiful-dnd';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { Tooltip } from '@deephaven/components';\nimport { vsTrash, vsGripper } from '@deephaven/icons';\nimport InputEditor from './InputEditor';\nimport { CustomColumnKey } from './CustomColumnBuilder';\n\ninterface CustomColumnInputProps {\n eventKey: string;\n inputIndex: number;\n name: string;\n formula: string;\n onChange: (\n eventKey: string,\n inputType: CustomColumnKey,\n value: string\n ) => void;\n onDeleteColumn: (eventKey: string) => void;\n onTabInEditor: (editorIndex: number, shiftKey: boolean) => void;\n invalid: boolean;\n}\nclass CustomColumnInput extends PureComponent<\n CustomColumnInputProps,\n Record<string, never>\n> {\n static INPUT_TYPE = {\n NAME: 'name',\n FORMULA: 'formula',\n };\n\n static defaultProps = {\n name: '',\n inputIndex: 0,\n formula: '',\n onChange: (): void => undefined,\n onDeleteColumn: (): void => undefined,\n onTabInEditor: (): void => undefined,\n invalid: false,\n };\n\n constructor(props: CustomColumnInputProps) {\n super(props);\n this.handleFormulaEditorContentChanged = this.handleFormulaEditorContentChanged.bind(\n this\n );\n }\n\n handleFormulaEditorContentChanged(formulaValue?: string): void {\n const { onChange, eventKey } = this.props;\n if (formulaValue) {\n formulaValue.replace(/(\\r\\n|\\n|\\r)/gm, ''); // remove line break\n onChange(\n eventKey,\n CustomColumnInput.INPUT_TYPE.FORMULA as CustomColumnKey,\n formulaValue\n );\n }\n }\n\n render(): ReactElement {\n const {\n eventKey,\n name,\n formula,\n onChange,\n onDeleteColumn,\n inputIndex,\n onTabInEditor,\n invalid,\n } = this.props;\n return (\n <Draggable\n draggableId={eventKey}\n index={inputIndex}\n disableInteractiveElementBlocking\n >\n {(provided, snapshot) => (\n <div\n className={classNames('draggable-container', {\n dragging: snapshot.isDragging,\n })}\n ref={provided.innerRef}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...provided.draggableProps}\n >\n <div className=\"custom-column-input-container\">\n <div className=\"d-flex flex-row pb-3 custom-column-name\">\n <input\n className={classNames('form-control custom-column-input', {\n 'is-invalid': invalid,\n })}\n placeholder=\"Column Name\"\n value={name}\n onChange={event => {\n onChange(\n eventKey,\n CustomColumnInput.INPUT_TYPE.NAME as CustomColumnKey,\n event.target.value\n );\n }}\n />\n <button\n type=\"button\"\n className=\"btn btn-link btn-link-icon ml-1 px-2\"\n onClick={() => {\n onDeleteColumn(eventKey);\n }}\n >\n <Tooltip>Delete custom column</Tooltip>\n <FontAwesomeIcon icon={vsTrash} />\n </button>\n\n <button\n type=\"button\"\n className=\"btn btn-link btn-link-icon px-2 btn-drag-handle\"\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...provided.dragHandleProps}\n >\n <Tooltip>Drag column to re-order</Tooltip>\n <FontAwesomeIcon icon={vsGripper} />\n </button>\n </div>\n <InputEditor\n editorSettings={{ language: 'deephavenDb' }}\n editorIndex={inputIndex}\n value={formula}\n onContentChanged={this.handleFormulaEditorContentChanged}\n onTab={onTabInEditor}\n invalid={invalid}\n />\n </div>\n <hr />\n </div>\n )}\n </Draggable>\n );\n }\n}\n\nexport default CustomColumnInput;\n"],"file":"CustomColumnInput.js"}
1
+ {"version":3,"file":"CustomColumnInput.js","names":["React","PureComponent","classNames","Draggable","FontAwesomeIcon","Tooltip","vsTrash","vsGripper","InputEditor","CustomColumnInput","constructor","props","handleFormulaEditorContentChanged","bind","formulaValue","onChange","eventKey","replace","INPUT_TYPE","FORMULA","render","name","formula","onDeleteColumn","inputIndex","onTabInEditor","invalid","provided","snapshot","dragging","isDragging","innerRef","draggableProps","event","NAME","target","value","dragHandleProps","language","undefined"],"sources":["../../src/sidebar/CustomColumnInput.tsx"],"sourcesContent":["import React, { PureComponent, ReactElement } from 'react';\nimport classNames from 'classnames';\nimport { Draggable } from 'react-beautiful-dnd';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { Tooltip } from '@deephaven/components';\nimport { vsTrash, vsGripper } from '@deephaven/icons';\nimport InputEditor from './InputEditor';\nimport { CustomColumnKey } from './CustomColumnBuilder';\n\ninterface CustomColumnInputProps {\n eventKey: string;\n inputIndex: number;\n name: string;\n formula: string;\n onChange: (\n eventKey: string,\n inputType: CustomColumnKey,\n value: string\n ) => void;\n onDeleteColumn: (eventKey: string) => void;\n onTabInEditor: (editorIndex: number, shiftKey: boolean) => void;\n invalid: boolean;\n}\nclass CustomColumnInput extends PureComponent<\n CustomColumnInputProps,\n Record<string, never>\n> {\n static INPUT_TYPE = {\n NAME: 'name',\n FORMULA: 'formula',\n };\n\n static defaultProps = {\n name: '',\n inputIndex: 0,\n formula: '',\n onChange: (): void => undefined,\n onDeleteColumn: (): void => undefined,\n onTabInEditor: (): void => undefined,\n invalid: false,\n };\n\n constructor(props: CustomColumnInputProps) {\n super(props);\n this.handleFormulaEditorContentChanged = this.handleFormulaEditorContentChanged.bind(\n this\n );\n }\n\n handleFormulaEditorContentChanged(formulaValue?: string): void {\n const { onChange, eventKey } = this.props;\n if (formulaValue) {\n formulaValue.replace(/(\\r\\n|\\n|\\r)/gm, ''); // remove line break\n onChange(\n eventKey,\n CustomColumnInput.INPUT_TYPE.FORMULA as CustomColumnKey,\n formulaValue\n );\n }\n }\n\n render(): ReactElement {\n const {\n eventKey,\n name,\n formula,\n onChange,\n onDeleteColumn,\n inputIndex,\n onTabInEditor,\n invalid,\n } = this.props;\n return (\n <Draggable\n draggableId={eventKey}\n index={inputIndex}\n disableInteractiveElementBlocking\n >\n {(provided, snapshot) => (\n <div\n className={classNames('draggable-container', {\n dragging: snapshot.isDragging,\n })}\n ref={provided.innerRef}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...provided.draggableProps}\n >\n <div className=\"custom-column-input-container\">\n <div className=\"d-flex flex-row pb-3 custom-column-name\">\n <input\n className={classNames('form-control custom-column-input', {\n 'is-invalid': invalid,\n })}\n placeholder=\"Column Name\"\n value={name}\n onChange={event => {\n onChange(\n eventKey,\n CustomColumnInput.INPUT_TYPE.NAME as CustomColumnKey,\n event.target.value\n );\n }}\n />\n <button\n type=\"button\"\n className=\"btn btn-link btn-link-icon ml-1 px-2\"\n onClick={() => {\n onDeleteColumn(eventKey);\n }}\n >\n <Tooltip>Delete custom column</Tooltip>\n <FontAwesomeIcon icon={vsTrash} />\n </button>\n\n <button\n type=\"button\"\n className=\"btn btn-link btn-link-icon px-2 btn-drag-handle\"\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...provided.dragHandleProps}\n >\n <Tooltip>Drag column to re-order</Tooltip>\n <FontAwesomeIcon icon={vsGripper} />\n </button>\n </div>\n <InputEditor\n editorSettings={{ language: 'deephavenDb' }}\n editorIndex={inputIndex}\n value={formula}\n onContentChanged={this.handleFormulaEditorContentChanged}\n onTab={onTabInEditor}\n invalid={invalid}\n />\n </div>\n <hr />\n </div>\n )}\n </Draggable>\n );\n }\n}\n\nexport default CustomColumnInput;\n"],"mappings":";;;;AAAA,OAAOA,KAAP,IAAgBC,aAAhB,QAAmD,OAAnD;AACA,OAAOC,UAAP,MAAuB,YAAvB;AACA,SAASC,SAAT,QAA0B,qBAA1B;AACA,SAASC,eAAT,QAAgC,gCAAhC;AACA,SAASC,OAAT,QAAwB,uBAAxB;AACA,SAASC,OAAT,EAAkBC,SAAlB,QAAmC,kBAAnC;OACOC,W;;AAiBP,MAAMC,iBAAN,SAAgCR,aAAhC,CAGE;EAgBAS,WAAW,CAACC,KAAD,EAAgC;IACzC,MAAMA,KAAN;IACA,KAAKC,iCAAL,GAAyC,KAAKA,iCAAL,CAAuCC,IAAvC,CACvC,IADuC,CAAzC;EAGD;;EAEDD,iCAAiC,CAACE,YAAD,EAA8B;IAC7D,IAAM;MAAEC,QAAF;MAAYC;IAAZ,IAAyB,KAAKL,KAApC;;IACA,IAAIG,YAAJ,EAAkB;MAChBA,YAAY,CAACG,OAAb,CAAqB,gBAArB,EAAuC,EAAvC,EADgB,CAC4B;;MAC5CF,QAAQ,CACNC,QADM,EAENP,iBAAiB,CAACS,UAAlB,CAA6BC,OAFvB,EAGNL,YAHM,CAAR;IAKD;EACF;;EAEDM,MAAM,GAAiB;IACrB,IAAM;MACJJ,QADI;MAEJK,IAFI;MAGJC,OAHI;MAIJP,QAAQ,EAARA,SAJI;MAKJQ,cALI;MAMJC,UANI;MAOJC,aAPI;MAQJC;IARI,IASF,KAAKf,KATT;IAUA,oBACE,oBAAC,SAAD;MACE,WAAW,EAAEK,QADf;MAEE,KAAK,EAAEQ,UAFT;MAGE,iCAAiC;IAHnC,GAKG,CAACG,QAAD,EAAWC,QAAX,kBACC;MACE,SAAS,EAAE1B,UAAU,CAAC,qBAAD,EAAwB;QAC3C2B,QAAQ,EAAED,QAAQ,CAACE;MADwB,CAAxB,CADvB;MAIE,GAAG,EAAEH,QAAQ,CAACI,QAJhB,CAKE;;IALF,GAMMJ,QAAQ,CAACK,cANf,gBAQE;MAAK,SAAS,EAAC;IAAf,gBACE;MAAK,SAAS,EAAC;IAAf,gBACE;MACE,SAAS,EAAE9B,UAAU,CAAC,kCAAD,EAAqC;QACxD,cAAcwB;MAD0C,CAArC,CADvB;MAIE,WAAW,EAAC,aAJd;MAKE,KAAK,EAAEL,IALT;MAME,QAAQ,EAAEY,KAAK,IAAI;QACjBlB,SAAQ,CACNC,QADM,EAENP,iBAAiB,CAACS,UAAlB,CAA6BgB,IAFvB,EAGND,KAAK,CAACE,MAAN,CAAaC,KAHP,CAAR;MAKD;IAZH,EADF,eAeE;MACE,IAAI,EAAC,QADP;MAEE,SAAS,EAAC,sCAFZ;MAGE,OAAO,EAAE,MAAM;QACbb,cAAc,CAACP,QAAD,CAAd;MACD;IALH,gBAOE,oBAAC,OAAD,+BAPF,eAQE,oBAAC,eAAD;MAAiB,IAAI,EAAEV;IAAvB,EARF,CAfF,eA0BE;MACE,IAAI,EAAC,QADP;MAEE,SAAS,EAAC,iDAFZ,CAGE;;IAHF,GAIMqB,QAAQ,CAACU,eAJf,gBAME,oBAAC,OAAD,kCANF,eAOE,oBAAC,eAAD;MAAiB,IAAI,EAAE9B;IAAvB,EAPF,CA1BF,CADF,eAqCE,oBAAC,WAAD;MACE,cAAc,EAAE;QAAE+B,QAAQ,EAAE;MAAZ,CADlB;MAEE,WAAW,EAAEd,UAFf;MAGE,KAAK,EAAEF,OAHT;MAIE,gBAAgB,EAAE,KAAKV,iCAJzB;MAKE,KAAK,EAAEa,aALT;MAME,OAAO,EAAEC;IANX,EArCF,CARF,eAsDE,+BAtDF,CANJ,CADF;EAkED;;AAhHD;;gBAHIjB,iB,gBAIgB;EAClByB,IAAI,EAAE,MADY;EAElBf,OAAO,EAAE;AAFS,C;;gBAJhBV,iB,kBASkB;EACpBY,IAAI,EAAE,EADc;EAEpBG,UAAU,EAAE,CAFQ;EAGpBF,OAAO,EAAE,EAHW;EAIpBP,QAAQ,EAAE,MAAYwB,SAJF;EAKpBhB,cAAc,EAAE,MAAYgB,SALR;EAMpBd,aAAa,EAAE,MAAYc,SANP;EAOpBb,OAAO,EAAE;AAPW,C;;AA6GxB,eAAejB,iBAAf"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/sidebar/InputEditor.tsx"],"names":["React","Component","monaco","classNames","InputEditor","constructor","props","handleContentChanged","bind","handleEditorFocus","handleEditorBlur","handleContainerClick","handleKeyDown","state","isEditorFocused","isEditorEmpty","editorContainer","componentDidMount","initEditor","componentWillUnmount","destroyEditor","value","editorSettings","inputEditorSettings","copyWithSyntaxHighlighting","fixedOverflowWidgets","folding","fontFamily","glyphMargin","language","lineDecorationsWidth","lineNumbers","minimap","enabled","renderLineHighlight","scrollbar","arrowSize","horizontal","horizontalScrollbarSize","scrollBeyondLastLine","padding","top","bottom","tabCompletion","useTabStops","wordWrap","automaticLayout","Error","editor","create","layout","getModel","updateOptions","tabSize","onDidChangeModelContent","onDidFocusEditorText","onDidBlurEditorText","dispose","undefined","onContentChanged","getValue","setState","length","focus","event","onTab","editorIndex","key","shiftKey","render","invalid","focused"],"mappings":"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","sourcesContent":["import React, { Component, ReactElement } from 'react';\nimport * as monaco from 'monaco-editor/esm/vs/editor/editor.api.js';\nimport classNames from 'classnames';\nimport './InputEditor.scss';\n\ninterface InputEditorProps {\n value: string;\n onContentChanged: (value?: string) => void;\n editorSettings: Partial<monaco.editor.IStandaloneEditorConstructionOptions>;\n editorIndex: number;\n onTab: (editorIndex: number, shiftKey: boolean) => void;\n invalid: boolean;\n}\n\ninterface InputEditorState {\n isEditorFocused: boolean;\n isEditorEmpty: boolean;\n}\n/**\n * A monaco editor that looks like an general input\n */\n\nexport default class InputEditor extends Component<\n InputEditorProps,\n InputEditorState\n> {\n static defaultProps = {\n value: '',\n onContentChanged: (): void => undefined,\n editorSettings: {},\n editorIndex: 0,\n onTab: (): void => undefined,\n invalid: false,\n };\n\n constructor(props: InputEditorProps) {\n super(props);\n\n this.handleContentChanged = this.handleContentChanged.bind(this);\n this.handleEditorFocus = this.handleEditorFocus.bind(this);\n this.handleEditorBlur = this.handleEditorBlur.bind(this);\n this.handleContainerClick = this.handleContainerClick.bind(this);\n this.handleKeyDown = this.handleKeyDown.bind(this);\n\n this.state = {\n isEditorFocused: false,\n isEditorEmpty: true,\n };\n this.editorContainer = null;\n }\n\n componentDidMount(): void {\n this.initEditor();\n }\n\n componentWillUnmount(): void {\n this.destroyEditor();\n }\n\n editorContainer: HTMLDivElement | null;\n\n editor?: monaco.editor.IStandaloneCodeEditor;\n\n initEditor(): void {\n const { value, editorSettings } = this.props;\n const inputEditorSettings = {\n copyWithSyntaxHighlighting: 'false',\n fixedOverflowWidgets: true,\n folding: false,\n fontFamily: 'Fira Mono',\n glyphMargin: false,\n language: 'groovyDB',\n lineDecorationsWidth: 8,\n lineNumbers: 'off',\n minimap: { enabled: false },\n renderLineHighlight: 'none',\n scrollbar: {\n arrowSize: 0,\n horizontal: 'hidden',\n horizontalScrollbarSize: 0,\n },\n scrollBeyondLastLine: false,\n padding: {\n top: 6,\n bottom: 6,\n },\n tabCompletion: 'off',\n useTabStops: true,\n value,\n wordWrap: 'on',\n automaticLayout: true,\n ...editorSettings,\n } as monaco.editor.IStandaloneEditorConstructionOptions;\n if (!this.editorContainer) {\n throw new Error('editorContainer is null');\n }\n this.editor = monaco.editor.create(\n this.editorContainer,\n inputEditorSettings\n );\n this.editor.layout();\n\n // disable tab to spaces in this editor to improve tab navigation\n this.editor.getModel()?.updateOptions({ tabSize: 0 });\n\n this.editor.onDidChangeModelContent(this.handleContentChanged);\n this.editor.onDidFocusEditorText(this.handleEditorFocus);\n this.editor.onDidBlurEditorText(this.handleEditorBlur);\n }\n\n destroyEditor(): void {\n this.editor?.dispose();\n this.editor = undefined;\n }\n\n handleContentChanged(): void {\n const { onContentChanged } = this.props;\n const value = this.editor?.getModel()?.getValue();\n if (value) {\n this.setState({ isEditorEmpty: value.length === 0 });\n }\n onContentChanged(value);\n }\n\n handleEditorFocus(): void {\n this.setState({ isEditorFocused: true });\n }\n\n handleEditorBlur(): void {\n const value = this.editor?.getModel()?.getValue();\n if (!value) {\n throw new Error('value is undefined');\n }\n this.setState({\n isEditorEmpty: value.length === 0,\n isEditorFocused: false,\n });\n }\n\n // force editor to focus if clicked\n handleContainerClick(): void {\n const { isEditorFocused } = this.state;\n if (isEditorFocused) {\n return;\n }\n this.editor?.focus();\n }\n\n handleKeyDown(event: React.KeyboardEvent<HTMLDivElement>): void {\n const { onTab, editorIndex } = this.props;\n if (event.key === 'Tab') {\n onTab(editorIndex, event.shiftKey);\n }\n }\n\n render(): ReactElement {\n const { value, invalid } = this.props;\n const { isEditorFocused, isEditorEmpty } = this.state;\n return (\n <div\n className={classNames('input-editor-wrapper', {\n focused: isEditorFocused,\n invalid,\n })}\n onKeyDown={this.handleKeyDown}\n role=\"presentation\"\n onClick={this.handleContainerClick}\n >\n <div\n className=\"editor-container\"\n ref={editorContainer => {\n this.editorContainer = editorContainer;\n }}\n />\n {isEditorEmpty && !value && (\n <div className=\"editor-placeholder text-muted\">Column Formula</div>\n )}\n </div>\n );\n }\n}\n"],"file":"InputEditor.js"}
1
+ {"version":3,"file":"InputEditor.js","names":["React","Component","monaco","classNames","InputEditor","constructor","props","handleContentChanged","bind","handleEditorFocus","handleEditorBlur","handleContainerClick","handleKeyDown","state","isEditorFocused","isEditorEmpty","editorContainer","componentDidMount","initEditor","componentWillUnmount","destroyEditor","value","editorSettings","inputEditorSettings","copyWithSyntaxHighlighting","fixedOverflowWidgets","folding","fontFamily","glyphMargin","language","lineDecorationsWidth","lineNumbers","minimap","enabled","renderLineHighlight","scrollbar","arrowSize","horizontal","horizontalScrollbarSize","scrollBeyondLastLine","padding","top","bottom","tabCompletion","useTabStops","wordWrap","automaticLayout","Error","editor","create","layout","getModel","updateOptions","tabSize","onDidChangeModelContent","onDidFocusEditorText","onDidBlurEditorText","dispose","undefined","onContentChanged","getValue","setState","length","focus","event","onTab","editorIndex","key","shiftKey","render","invalid","focused"],"sources":["../../src/sidebar/InputEditor.tsx"],"sourcesContent":["import React, { Component, ReactElement } from 'react';\nimport * as monaco from 'monaco-editor/esm/vs/editor/editor.api.js';\nimport classNames from 'classnames';\nimport './InputEditor.scss';\n\ninterface InputEditorProps {\n value: string;\n onContentChanged: (value?: string) => void;\n editorSettings: Partial<monaco.editor.IStandaloneEditorConstructionOptions>;\n editorIndex: number;\n onTab: (editorIndex: number, shiftKey: boolean) => void;\n invalid: boolean;\n}\n\ninterface InputEditorState {\n isEditorFocused: boolean;\n isEditorEmpty: boolean;\n}\n/**\n * A monaco editor that looks like an general input\n */\n\nexport default class InputEditor extends Component<\n InputEditorProps,\n InputEditorState\n> {\n static defaultProps = {\n value: '',\n onContentChanged: (): void => undefined,\n editorSettings: {},\n editorIndex: 0,\n onTab: (): void => undefined,\n invalid: false,\n };\n\n constructor(props: InputEditorProps) {\n super(props);\n\n this.handleContentChanged = this.handleContentChanged.bind(this);\n this.handleEditorFocus = this.handleEditorFocus.bind(this);\n this.handleEditorBlur = this.handleEditorBlur.bind(this);\n this.handleContainerClick = this.handleContainerClick.bind(this);\n this.handleKeyDown = this.handleKeyDown.bind(this);\n\n this.state = {\n isEditorFocused: false,\n isEditorEmpty: true,\n };\n this.editorContainer = null;\n }\n\n componentDidMount(): void {\n this.initEditor();\n }\n\n componentWillUnmount(): void {\n this.destroyEditor();\n }\n\n editorContainer: HTMLDivElement | null;\n\n editor?: monaco.editor.IStandaloneCodeEditor;\n\n initEditor(): void {\n const { value, editorSettings } = this.props;\n const inputEditorSettings = {\n copyWithSyntaxHighlighting: 'false',\n fixedOverflowWidgets: true,\n folding: false,\n fontFamily: 'Fira Mono',\n glyphMargin: false,\n language: 'groovyDB',\n lineDecorationsWidth: 8,\n lineNumbers: 'off',\n minimap: { enabled: false },\n renderLineHighlight: 'none',\n scrollbar: {\n arrowSize: 0,\n horizontal: 'hidden',\n horizontalScrollbarSize: 0,\n },\n scrollBeyondLastLine: false,\n padding: {\n top: 6,\n bottom: 6,\n },\n tabCompletion: 'off',\n useTabStops: true,\n value,\n wordWrap: 'on',\n automaticLayout: true,\n ...editorSettings,\n } as monaco.editor.IStandaloneEditorConstructionOptions;\n if (!this.editorContainer) {\n throw new Error('editorContainer is null');\n }\n this.editor = monaco.editor.create(\n this.editorContainer,\n inputEditorSettings\n );\n this.editor.layout();\n\n // disable tab to spaces in this editor to improve tab navigation\n this.editor.getModel()?.updateOptions({ tabSize: 0 });\n\n this.editor.onDidChangeModelContent(this.handleContentChanged);\n this.editor.onDidFocusEditorText(this.handleEditorFocus);\n this.editor.onDidBlurEditorText(this.handleEditorBlur);\n }\n\n destroyEditor(): void {\n this.editor?.dispose();\n this.editor = undefined;\n }\n\n handleContentChanged(): void {\n const { onContentChanged } = this.props;\n const value = this.editor?.getModel()?.getValue();\n if (value) {\n this.setState({ isEditorEmpty: value.length === 0 });\n }\n onContentChanged(value);\n }\n\n handleEditorFocus(): void {\n this.setState({ isEditorFocused: true });\n }\n\n handleEditorBlur(): void {\n const value = this.editor?.getModel()?.getValue();\n if (!value) {\n throw new Error('value is undefined');\n }\n this.setState({\n isEditorEmpty: value.length === 0,\n isEditorFocused: false,\n });\n }\n\n // force editor to focus if clicked\n handleContainerClick(): void {\n const { isEditorFocused } = this.state;\n if (isEditorFocused) {\n return;\n }\n this.editor?.focus();\n }\n\n handleKeyDown(event: React.KeyboardEvent<HTMLDivElement>): void {\n const { onTab, editorIndex } = this.props;\n if (event.key === 'Tab') {\n onTab(editorIndex, event.shiftKey);\n }\n }\n\n render(): ReactElement {\n const { value, invalid } = this.props;\n const { isEditorFocused, isEditorEmpty } = this.state;\n return (\n <div\n className={classNames('input-editor-wrapper', {\n focused: isEditorFocused,\n invalid,\n })}\n onKeyDown={this.handleKeyDown}\n role=\"presentation\"\n onClick={this.handleContainerClick}\n >\n <div\n className=\"editor-container\"\n ref={editorContainer => {\n this.editorContainer = editorContainer;\n }}\n />\n {isEditorEmpty && !value && (\n <div className=\"editor-placeholder text-muted\">Column Formula</div>\n )}\n </div>\n );\n }\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/sidebar/OptionType.ts"],"names":["OptionType"],"mappings":"IAAKA,U;;WAAAA,U;AAAAA,EAAAA,U;AAAAA,EAAAA,U;AAAAA,EAAAA,U;AAAAA,EAAAA,U;AAAAA,EAAAA,U;AAAAA,EAAAA,U;AAAAA,EAAAA,U;AAAAA,EAAAA,U;AAAAA,EAAAA,U;AAAAA,EAAAA,U;AAAAA,EAAAA,U;AAAAA,EAAAA,U;AAAAA,EAAAA,U;AAAAA,EAAAA,U;GAAAA,U,KAAAA,U;;AAiBL,eAAeA,UAAf","sourcesContent":["enum OptionType {\n ADVANCED_SETTINGS = 'ADVANCED_SETTINGS',\n AGGREGATIONS = 'AGGREGATIONS',\n AGGREGATION_EDIT = 'AGGREGATIONS_EDIT',\n CHART_BUILDER = 'CHART_BUILDER',\n CUSTOM_COLUMN_BUILDER = 'CUSTOM_COLUMN_BUILDER',\n QUICK_FILTERS = 'QUICK_FILTERS',\n ROLLUP_ROWS = 'ROLLUP_ROWS',\n SEARCH_BAR = 'SEARCH_BAR',\n SELECT_DISTINCT = 'SELECT_DISTINCT',\n TABLE_EXPORTER = 'TABLE_EXPORTER',\n VISIBILITY_ORDERING_BUILDER = 'VISIBILITY_ORDERING_BUILDER',\n CONDITIONAL_FORMATTING = 'CONDITIONAL_FORMATTING',\n CONDITIONAL_FORMATTING_EDIT = 'CONDITIONAL_FORMATTING_EDIT',\n GOTO = 'GOTO',\n}\n\nexport default OptionType;\n"],"file":"OptionType.js"}
1
+ {"version":3,"file":"OptionType.js","names":["OptionType"],"sources":["../../src/sidebar/OptionType.ts"],"sourcesContent":["enum OptionType {\n ADVANCED_SETTINGS = 'ADVANCED_SETTINGS',\n AGGREGATIONS = 'AGGREGATIONS',\n AGGREGATION_EDIT = 'AGGREGATIONS_EDIT',\n CHART_BUILDER = 'CHART_BUILDER',\n CUSTOM_COLUMN_BUILDER = 'CUSTOM_COLUMN_BUILDER',\n QUICK_FILTERS = 'QUICK_FILTERS',\n ROLLUP_ROWS = 'ROLLUP_ROWS',\n SEARCH_BAR = 'SEARCH_BAR',\n SELECT_DISTINCT = 'SELECT_DISTINCT',\n TABLE_EXPORTER = 'TABLE_EXPORTER',\n VISIBILITY_ORDERING_BUILDER = 'VISIBILITY_ORDERING_BUILDER',\n CONDITIONAL_FORMATTING = 'CONDITIONAL_FORMATTING',\n CONDITIONAL_FORMATTING_EDIT = 'CONDITIONAL_FORMATTING_EDIT',\n GOTO = 'GOTO',\n}\n\nexport default OptionType;\n"],"mappings":"IAAKA,U;;WAAAA,U;EAAAA,U;EAAAA,U;EAAAA,U;EAAAA,U;EAAAA,U;EAAAA,U;EAAAA,U;EAAAA,U;EAAAA,U;EAAAA,U;EAAAA,U;EAAAA,U;EAAAA,U;EAAAA,U;GAAAA,U,KAAAA,U;;AAiBL,eAAeA,UAAf"}
@@ -1,4 +1,4 @@
1
- function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
1
+ function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
2
2
 
3
3
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
4
4
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/sidebar/RollupRows.tsx"],"names":["React","Component","classNames","FontAwesomeIcon","DragDropContext","Droppable","Checkbox","DraggableItemList","DragUtils","SearchInput","Tooltip","Button","vsTrash","dhSortAlphaDown","dhSortAlphaUp","TableUtils","memoize","debounce","Log","assertNotNull","log","module","DEBOUNCE_SEARCH","GROUPED_LIST_ID","UNGROUPED_LIST_ID","RollupRows","renderColumn","item","isClone","selectedCount","text","name","badgeText","undefined","className","renderTextItem","addGroupings","currentGroupings","newGroupings","index","length","insertIndex","groupings","filter","grouping","i","includes","splice","isGroupable","column","isDecimalType","type","constructor","props","searchFilter","columns","getSortedUngroupedColumns","selectedRanges","focusIndex","toLowerCase","push","setState","ungroupedSelectedRanges","ungroupedList","current","scrollToItem","groupedColumns","find","sort","sortColumns","SORT","ASCENDING","search","bind","handleDeleteClicked","handleSearchChange","handleUngroupedSelect","handleUngroupedSelectionChange","handleDragStart","handleDragEnd","handleGroupedSelectionChange","handleShowConstituentsChange","handleShowNonAggregatedColumnsChange","handleSortAscending","handleSortDescending","renderGroupedItem","createRef","groupedList","config","showConstituents","showNonAggregatedColumns","state","groupedSelectedRanges","dragSource","componentDidUpdate","prevProps","prevState","updateFromConfig","sendChange","componentWillUnmount","cancel","event","target","value","resetSelection","DESCENDING","e","debug","document","documentElement","classList","add","source","remove","destination","droppableId","newColumns","reorder","isSameList","destinationIndex","sourceItems","map","c","sourceRanges","draggedItems","adjustDestinationIndex","newSelectedRanges","itemIndex","debug2","stateUngroupedSelectedRanges","stateGroupedSelectedRanges","slice","onChange","getUngroupedColumns","model","originalColumns","getCachedUngroupedColumns","getCachedSortedColumns","indent","repeat","render","ungroupedColumns","groupListHeight","DEFAULT_ROW_HEIGHT","ungroupMaxListHeight","ungroupMinListHeight","Math","min","provided","snapshot","draggingFromThisWith","isDraggingOver","draggingOverWith","innerRef","droppableProps","height","active","maxHeight","minHeight","Object","freeze"],"mappings":"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","sourcesContent":["/* eslint-disable jsx-a11y/click-events-have-key-events */\nimport React, { ChangeEvent, Component, ReactElement, RefObject } from 'react';\nimport classNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {\n DragDropContext,\n DraggableLocation,\n DragStart,\n Droppable,\n DropResult,\n} from 'react-beautiful-dnd';\nimport {\n Checkbox,\n DraggableItemList,\n DragUtils,\n SearchInput,\n Tooltip,\n Range,\n RenderItemProps,\n Button,\n} from '@deephaven/components';\nimport { vsTrash, dhSortAlphaDown, dhSortAlphaUp } from '@deephaven/icons';\nimport { TableUtils, SortDirection } from '@deephaven/jsapi-utils';\nimport memoize from 'memoizee';\nimport debounce from 'lodash.debounce';\nimport Log from '@deephaven/log';\nimport { assertNotNull } from '@deephaven/utils';\nimport './RollupRows.scss';\nimport { Column } from '@deephaven/jsapi-shim';\nimport IrisGridModel from '../IrisGridModel';\nimport { ColumnName } from '../CommonTypes';\n\nconst log = Log.module('RollupRows');\nconst DEBOUNCE_SEARCH = 150;\nconst GROUPED_LIST_ID = 'grouped-rollup-rows';\nconst UNGROUPED_LIST_ID = 'ungrouped-rollup-rows';\n\nexport interface UIRollupConfig {\n columns: ColumnName[];\n showConstituents: boolean;\n showNonAggregatedColumns: boolean;\n includeDescriptions: true;\n}\n\ninterface RollupRowsProps {\n model: IrisGridModel;\n onChange: (rollupConfig: UIRollupConfig) => void;\n config: UIRollupConfig | null;\n}\n\ninterface RollupRowsState {\n ungroupedSelectedRanges: Range[];\n columns: ColumnName[];\n groupedSelectedRanges: Range[];\n searchFilter: string;\n showConstituents: boolean;\n showNonAggregatedColumns: boolean;\n dragSource: DraggableLocation | null;\n sort: SortDirection;\n}\n\nclass RollupRows extends Component<RollupRowsProps, RollupRowsState> {\n static SORT = Object.freeze({\n ASCENDING: 'ASCENDING',\n DESCENDING: 'DESCENDING',\n });\n\n static defaultProps = {\n config: null,\n onChange: (): void => undefined,\n };\n\n static renderColumn({\n item,\n isClone,\n selectedCount,\n }: RenderItemProps<Column> & {\n isClone?: boolean;\n selectedCount?: number;\n }): ReactElement {\n const text = item && item.name;\n const badgeText = isClone ? `${selectedCount}` : undefined;\n const className = isClone ? 'item-list-item-clone' : '';\n return DraggableItemList.renderTextItem({ text, badgeText, className });\n }\n\n static addGroupings(\n currentGroupings: string[],\n newGroupings: string[],\n index: number = currentGroupings.length\n ): string[] {\n if (newGroupings == null || newGroupings.length === 0) {\n return currentGroupings;\n }\n\n let insertIndex = index;\n const groupings = currentGroupings.filter((grouping, i) => {\n if (newGroupings.includes(grouping)) {\n if (i < insertIndex) {\n insertIndex -= 1;\n }\n return false;\n }\n return true;\n });\n groupings.splice(insertIndex, 0, ...newGroupings);\n return groupings;\n }\n\n static isGroupable(column: Column): boolean {\n return !TableUtils.isDecimalType(column.type);\n }\n\n constructor(props: RollupRowsProps) {\n super(props);\n\n this.search = this.search.bind(this);\n\n this.handleDeleteClicked = this.handleDeleteClicked.bind(this);\n this.handleSearchChange = this.handleSearchChange.bind(this);\n this.handleUngroupedSelect = this.handleUngroupedSelect.bind(this);\n this.handleUngroupedSelectionChange = this.handleUngroupedSelectionChange.bind(\n this\n );\n this.handleDragStart = this.handleDragStart.bind(this);\n this.handleDragEnd = this.handleDragEnd.bind(this);\n this.handleGroupedSelectionChange = this.handleGroupedSelectionChange.bind(\n this\n );\n this.handleShowConstituentsChange = this.handleShowConstituentsChange.bind(\n this\n );\n this.handleShowNonAggregatedColumnsChange = this.handleShowNonAggregatedColumnsChange.bind(\n this\n );\n this.handleSortAscending = this.handleSortAscending.bind(this);\n this.handleSortDescending = this.handleSortDescending.bind(this);\n this.renderGroupedItem = this.renderGroupedItem.bind(this);\n\n this.ungroupedList = React.createRef();\n this.groupedList = React.createRef();\n\n const { config } = props;\n const {\n columns = [],\n showConstituents = true,\n showNonAggregatedColumns = true,\n } = config ?? {};\n\n this.state = {\n ungroupedSelectedRanges: [],\n columns,\n groupedSelectedRanges: [],\n searchFilter: '',\n showConstituents,\n showNonAggregatedColumns,\n dragSource: null,\n sort: null,\n };\n }\n\n componentDidUpdate(\n prevProps: RollupRowsProps,\n prevState: RollupRowsState\n ): void {\n const { config } = this.props;\n const { columns, showConstituents, showNonAggregatedColumns } = this.state;\n if (config !== prevProps.config) {\n this.updateFromConfig();\n } else if (\n columns !== prevState.columns ||\n showConstituents !== prevState.showConstituents ||\n showNonAggregatedColumns !== prevState.showNonAggregatedColumns\n ) {\n if (\n config == null ||\n columns !== config.columns ||\n showConstituents !== config.showConstituents ||\n showNonAggregatedColumns !== config.showNonAggregatedColumns\n ) {\n this.sendChange();\n }\n }\n }\n\n componentWillUnmount(): void {\n this.search.cancel();\n }\n\n ungroupedList: RefObject<DraggableItemList<Column>>;\n\n groupedList: RefObject<DraggableItemList<string>>;\n\n handleSearchChange(event: ChangeEvent<HTMLInputElement>): void {\n const searchFilter = event.target.value;\n this.setState({ searchFilter });\n if (!searchFilter) {\n this.search.cancel();\n this.resetSelection();\n return;\n }\n this.search(searchFilter);\n }\n\n handleSortAscending(): void {\n this.setState(({ sort }) => ({\n sort:\n sort === RollupRows.SORT.ASCENDING\n ? null\n : (RollupRows.SORT.ASCENDING as SortDirection),\n }));\n }\n\n handleSortDescending(): void {\n this.setState(({ sort }) => ({\n sort:\n sort === RollupRows.SORT.DESCENDING\n ? null\n : (RollupRows.SORT.DESCENDING as SortDirection),\n }));\n }\n\n resetSelection(): void {\n this.setState({ ungroupedSelectedRanges: [], groupedSelectedRanges: [] });\n }\n\n search = debounce((searchFilter: string) => {\n const columns = this.getSortedUngroupedColumns();\n const selectedRanges = [] as Range[];\n let focusIndex = null;\n for (let i = 0; i < columns.length; i += 1) {\n const column = columns[i];\n if (column.name.toLowerCase().includes(searchFilter.toLowerCase())) {\n if (focusIndex == null) {\n focusIndex = i;\n }\n selectedRanges.push([i, i]);\n }\n }\n assertNotNull(focusIndex);\n this.setState({ ungroupedSelectedRanges: selectedRanges });\n\n if (selectedRanges.length > 0 && this.ungroupedList.current) {\n this.ungroupedList.current.scrollToItem(focusIndex);\n }\n }, DEBOUNCE_SEARCH);\n\n handleDragStart(e: DragStart): void {\n log.debug('handleDragStart', e);\n\n document.documentElement.classList.add('drag-pointer-events-none');\n\n this.setState({ dragSource: e.source });\n }\n\n handleDragEnd(e: DropResult): void {\n log.debug('handleDragEnd', e);\n\n document.documentElement.classList.remove('drag-pointer-events-none');\n\n this.setState({ dragSource: null });\n\n const { destination, source } = e;\n if (destination == null || source == null) {\n return;\n }\n\n // We don't allow dragging within the ungrouped list, so if we're dragging into the ungrouped list,\n // it must have came from the grouped list. Remove those grouped columns.\n if (destination.droppableId === UNGROUPED_LIST_ID) {\n this.setState(({ groupedSelectedRanges, columns }) => {\n const newColumns = [...columns];\n DragUtils.reorder(newColumns, groupedSelectedRanges, [], 0);\n return {\n columns: newColumns,\n ungroupedSelectedRanges: [],\n groupedSelectedRanges: [],\n };\n });\n return;\n }\n\n // Otherwise, it must be dropping into the grouped list, so we just need to check the source\n const isSameList = source.droppableId === GROUPED_LIST_ID;\n let destinationIndex = destination.index;\n if (isSameList && source.index < destination.index) {\n // react-beautiful-dnd adjusts the index when dragging within a list already, however that only supports single selection\n // We need to change it back to the index we actually want it to drop at before adjusting for the removed source index, as\n // we adjust the index based on all the selected ranges, not just the source.index.\n destinationIndex += 1;\n }\n this.setState(\n ({ columns, ungroupedSelectedRanges, groupedSelectedRanges }) => {\n const newColumns = [...columns];\n const sourceItems = isSameList\n ? newColumns\n : this.getSortedUngroupedColumns().map(c => c.name);\n const sourceRanges = isSameList\n ? groupedSelectedRanges\n : ungroupedSelectedRanges;\n const draggedItems = DragUtils.reorder(\n sourceItems,\n sourceRanges,\n newColumns,\n destinationIndex\n );\n\n // Select the newly dropped items\n const insertIndex = isSameList\n ? DragUtils.adjustDestinationIndex(\n destinationIndex,\n groupedSelectedRanges\n )\n : destinationIndex;\n const newSelectedRanges = [\n [insertIndex, insertIndex + draggedItems.length - 1] as Range,\n ];\n return {\n columns: newColumns,\n ungroupedSelectedRanges: [] as Range[],\n groupedSelectedRanges: newSelectedRanges,\n };\n }\n );\n this.resetSelection();\n }\n\n handleUngroupedSelect(itemIndex: number): void {\n log.debug('handleUngroupedSelect');\n\n this.setState(({ columns }) => ({\n columns: RollupRows.addGroupings(columns, [\n this.getSortedUngroupedColumns()[itemIndex].name,\n ]),\n ungroupedSelectedRanges: [],\n groupedSelectedRanges: [],\n }));\n }\n\n handleUngroupedSelectionChange(ungroupedSelectedRanges: Range[]): void {\n log.debug2('handleUngroupedSelectionChange', ungroupedSelectedRanges);\n this.setState(\n ({ ungroupedSelectedRanges: stateUngroupedSelectedRanges }) => {\n if (ungroupedSelectedRanges === stateUngroupedSelectedRanges) {\n return null;\n }\n\n return { ungroupedSelectedRanges, groupedSelectedRanges: [] };\n }\n );\n }\n\n handleGroupedSelectionChange(groupedSelectedRanges: Range[]): void {\n log.debug2('handleGroupedSelectedRanges', groupedSelectedRanges);\n this.setState(({ groupedSelectedRanges: stateGroupedSelectedRanges }) => {\n if (groupedSelectedRanges === stateGroupedSelectedRanges) {\n return null;\n }\n\n return { groupedSelectedRanges, ungroupedSelectedRanges: [] };\n });\n }\n\n handleDeleteClicked(index: number): void {\n this.setState(({ columns }) => {\n const newColumns = columns.slice();\n newColumns.splice(index, 1);\n return { columns: newColumns };\n });\n }\n\n handleShowConstituentsChange(): void {\n this.setState(({ showConstituents }) => ({\n showConstituents: !showConstituents,\n }));\n }\n\n handleShowNonAggregatedColumnsChange(): void {\n this.setState(({ showNonAggregatedColumns }) => ({\n showNonAggregatedColumns: !showNonAggregatedColumns,\n }));\n }\n\n updateFromConfig(): void {\n const { config } = this.props;\n const {\n columns = [],\n showConstituents = true,\n showNonAggregatedColumns = true,\n } = config ?? {};\n this.setState({ columns, showConstituents, showNonAggregatedColumns });\n }\n\n sendChange(): void {\n const { onChange } = this.props;\n const { columns, showConstituents, showNonAggregatedColumns } = this.state;\n onChange({\n columns,\n showConstituents,\n showNonAggregatedColumns,\n } as UIRollupConfig);\n }\n\n getCachedUngroupedColumns = memoize(\n (columns: Column[], groupedColumns: ColumnName[]): Column[] =>\n columns.filter(\n column =>\n RollupRows.isGroupable(column) &&\n !groupedColumns.find(name => name === column.name)\n )\n );\n\n getCachedSortedColumns = memoize(\n (columns: Column[], sort?: SortDirection): Column[] =>\n sort == null\n ? [...columns]\n : TableUtils.sortColumns(columns, sort === RollupRows.SORT.ASCENDING)\n );\n\n getUngroupedColumns(): Column[] {\n const { model } = this.props;\n const { columns } = this.state;\n const { originalColumns } = model;\n\n return this.getCachedUngroupedColumns(originalColumns, columns);\n }\n\n getSortedUngroupedColumns(): Column[] {\n const { sort } = this.state;\n const columns = this.getUngroupedColumns();\n return this.getCachedSortedColumns(columns, sort);\n }\n\n renderGroupedItem({\n item,\n itemIndex,\n isClone,\n selectedCount,\n }: RenderItemProps<string> & {\n isClone?: boolean;\n selectedCount?: number;\n }): ReactElement {\n const indent = isClone ? '' : '\\u00A0\\u00A0'.repeat(itemIndex);\n const text = `${indent}${item}`;\n const badgeText = isClone ? `${selectedCount}` : undefined;\n const className = isClone ? 'item-list-item-clone' : '';\n return (\n <>\n {DraggableItemList.renderTextItem({ text, badgeText, className })}\n {!isClone && (\n <Button\n kind=\"ghost\"\n className=\"btn btn-link btn-link-icon btn-delete-grouping float-right\"\n onClick={() => this.handleDeleteClicked(itemIndex)}\n >\n <FontAwesomeIcon icon={vsTrash} />\n </Button>\n )}\n </>\n );\n }\n\n render(): ReactElement {\n const {\n columns,\n dragSource,\n searchFilter,\n groupedSelectedRanges,\n ungroupedSelectedRanges,\n showConstituents,\n showNonAggregatedColumns,\n sort,\n } = this.state;\n\n const ungroupedColumns = this.getSortedUngroupedColumns();\n let groupListHeight = columns.length * DraggableItemList.DEFAULT_ROW_HEIGHT;\n if (dragSource?.droppableId === UNGROUPED_LIST_ID) {\n groupListHeight += DraggableItemList.DEFAULT_ROW_HEIGHT;\n }\n const ungroupMaxListHeight =\n ungroupedColumns.length * DraggableItemList.DEFAULT_ROW_HEIGHT + 10;\n const ungroupMinListHeight = Math.min(\n 3 * DraggableItemList.DEFAULT_ROW_HEIGHT,\n ungroupMaxListHeight\n );\n\n return (\n <div\n role=\"menu\"\n className={classNames('rollup-rows', {\n 'is-dragging': dragSource != null,\n })}\n tabIndex={0}\n >\n <DragDropContext\n onDragEnd={this.handleDragEnd}\n onDragStart={this.handleDragStart}\n >\n <div className=\"rollup-rows-group-by\">\n <div className=\"section-title\">Group By</div>\n {columns.length === 0 && (\n <Droppable isDropDisabled droppableId=\"placeholder\">\n {(provided, snapshot) => (\n <div\n className={classNames('placeholder', 'text-muted', {\n 'is-dragging-from-this': snapshot.draggingFromThisWith,\n 'is-dragging-over': snapshot.isDraggingOver,\n 'is-dropping': snapshot.draggingOverWith,\n })}\n ref={provided.innerRef}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...provided.droppableProps}\n >\n Create rollup by dragging columns here, from the available\n columns list below.\n </div>\n )}\n </Droppable>\n )}\n {columns.length > 0 && (\n <DraggableItemList\n draggingItemClassName=\"rollup-rows-dragging-grouped-item\"\n draggablePrefix={GROUPED_LIST_ID}\n droppableId={GROUPED_LIST_ID}\n itemCount={columns.length}\n items={columns}\n offset={0}\n onSelectionChange={this.handleGroupedSelectionChange}\n ref={this.groupedList}\n renderItem={this.renderGroupedItem}\n selectedRanges={groupedSelectedRanges}\n style={{ height: groupListHeight }}\n isMultiSelect\n />\n )}\n </div>\n <div className=\"rollup-rows-available-columns\">\n <div className=\"section-title\">Available Grouping Columns</div>\n <div className=\"top-menu\">\n <SearchInput\n className=\"w-100\"\n value={searchFilter}\n matchCount={\n searchFilter ? ungroupedSelectedRanges.length : undefined\n }\n placeholder=\"Find column...\"\n onChange={this.handleSearchChange}\n />\n <Button\n kind=\"ghost\"\n className={classNames('btn-link btn-link-icon', {\n active: sort === RollupRows.SORT.ASCENDING,\n })}\n onClick={this.handleSortAscending}\n >\n <FontAwesomeIcon icon={dhSortAlphaDown} />\n <Tooltip>Sort ascending</Tooltip>\n </Button>\n <Button\n kind=\"ghost\"\n className={classNames('btn-link btn-link-icon', {\n active: sort === RollupRows.SORT.DESCENDING,\n })}\n onClick={this.handleSortDescending}\n >\n <FontAwesomeIcon icon={dhSortAlphaUp} />\n <Tooltip>Sort descending</Tooltip>\n </Button>\n </div>\n <DraggableItemList\n className=\"rollup-available-grouping-columns\"\n draggablePrefix={UNGROUPED_LIST_ID}\n droppableId={UNGROUPED_LIST_ID}\n itemCount={ungroupedColumns.length}\n items={ungroupedColumns}\n renderItem={RollupRows.renderColumn}\n offset={0}\n onSelect={this.handleUngroupedSelect}\n onSelectionChange={this.handleUngroupedSelectionChange}\n ref={this.ungroupedList}\n selectedRanges={ungroupedSelectedRanges}\n style={{\n maxHeight: ungroupMaxListHeight,\n minHeight: ungroupMinListHeight,\n }}\n isDropDisabled={dragSource?.droppableId !== GROUPED_LIST_ID}\n isMultiSelect\n />\n <div className=\"bottom-menu\">\n <div className=\"label\">Show:</div>\n <Checkbox\n checked={showConstituents}\n onChange={this.handleShowConstituentsChange}\n >\n Constituents\n </Checkbox>\n <Checkbox\n checked={showNonAggregatedColumns}\n onChange={this.handleShowNonAggregatedColumnsChange}\n >\n Non-Aggregated Columns\n </Checkbox>\n </div>\n </div>\n </DragDropContext>\n </div>\n );\n }\n}\n\nexport default RollupRows;\n"],"file":"RollupRows.js"}
1
+ {"version":3,"file":"RollupRows.js","names":["React","Component","classNames","FontAwesomeIcon","DragDropContext","Droppable","Checkbox","DraggableItemList","DragUtils","SearchInput","Tooltip","Button","vsTrash","dhSortAlphaDown","dhSortAlphaUp","TableUtils","memoize","debounce","Log","assertNotNull","log","module","DEBOUNCE_SEARCH","GROUPED_LIST_ID","UNGROUPED_LIST_ID","RollupRows","renderColumn","item","isClone","selectedCount","text","name","badgeText","undefined","className","renderTextItem","addGroupings","currentGroupings","newGroupings","index","length","insertIndex","groupings","filter","grouping","i","includes","splice","isGroupable","column","isDecimalType","type","constructor","props","searchFilter","columns","getSortedUngroupedColumns","selectedRanges","focusIndex","toLowerCase","push","setState","ungroupedSelectedRanges","ungroupedList","current","scrollToItem","groupedColumns","find","sort","sortColumns","SORT","ASCENDING","search","bind","handleDeleteClicked","handleSearchChange","handleUngroupedSelect","handleUngroupedSelectionChange","handleDragStart","handleDragEnd","handleGroupedSelectionChange","handleShowConstituentsChange","handleShowNonAggregatedColumnsChange","handleSortAscending","handleSortDescending","renderGroupedItem","createRef","groupedList","config","showConstituents","showNonAggregatedColumns","state","groupedSelectedRanges","dragSource","componentDidUpdate","prevProps","prevState","updateFromConfig","sendChange","componentWillUnmount","cancel","event","target","value","resetSelection","DESCENDING","e","debug","document","documentElement","classList","add","source","remove","destination","droppableId","newColumns","reorder","isSameList","destinationIndex","sourceItems","map","c","sourceRanges","draggedItems","adjustDestinationIndex","newSelectedRanges","itemIndex","debug2","stateUngroupedSelectedRanges","stateGroupedSelectedRanges","slice","onChange","getUngroupedColumns","model","originalColumns","getCachedUngroupedColumns","getCachedSortedColumns","indent","repeat","render","ungroupedColumns","groupListHeight","DEFAULT_ROW_HEIGHT","ungroupMaxListHeight","ungroupMinListHeight","Math","min","provided","snapshot","draggingFromThisWith","isDraggingOver","draggingOverWith","innerRef","droppableProps","height","active","maxHeight","minHeight","Object","freeze"],"sources":["../../src/sidebar/RollupRows.tsx"],"sourcesContent":["/* eslint-disable jsx-a11y/click-events-have-key-events */\nimport React, { ChangeEvent, Component, ReactElement, RefObject } from 'react';\nimport classNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {\n DragDropContext,\n DraggableLocation,\n DragStart,\n Droppable,\n DropResult,\n} from 'react-beautiful-dnd';\nimport {\n Checkbox,\n DraggableItemList,\n DragUtils,\n SearchInput,\n Tooltip,\n Range,\n RenderItemProps,\n Button,\n} from '@deephaven/components';\nimport { vsTrash, dhSortAlphaDown, dhSortAlphaUp } from '@deephaven/icons';\nimport { TableUtils, SortDirection } from '@deephaven/jsapi-utils';\nimport memoize from 'memoizee';\nimport debounce from 'lodash.debounce';\nimport Log from '@deephaven/log';\nimport { assertNotNull } from '@deephaven/utils';\nimport './RollupRows.scss';\nimport { Column } from '@deephaven/jsapi-shim';\nimport IrisGridModel from '../IrisGridModel';\nimport { ColumnName } from '../CommonTypes';\n\nconst log = Log.module('RollupRows');\nconst DEBOUNCE_SEARCH = 150;\nconst GROUPED_LIST_ID = 'grouped-rollup-rows';\nconst UNGROUPED_LIST_ID = 'ungrouped-rollup-rows';\n\nexport interface UIRollupConfig {\n columns: ColumnName[];\n showConstituents: boolean;\n showNonAggregatedColumns: boolean;\n includeDescriptions: true;\n}\n\ninterface RollupRowsProps {\n model: IrisGridModel;\n onChange: (rollupConfig: UIRollupConfig) => void;\n config: UIRollupConfig | null;\n}\n\ninterface RollupRowsState {\n ungroupedSelectedRanges: Range[];\n columns: ColumnName[];\n groupedSelectedRanges: Range[];\n searchFilter: string;\n showConstituents: boolean;\n showNonAggregatedColumns: boolean;\n dragSource: DraggableLocation | null;\n sort: SortDirection;\n}\n\nclass RollupRows extends Component<RollupRowsProps, RollupRowsState> {\n static SORT = Object.freeze({\n ASCENDING: 'ASCENDING',\n DESCENDING: 'DESCENDING',\n });\n\n static defaultProps = {\n config: null,\n onChange: (): void => undefined,\n };\n\n static renderColumn({\n item,\n isClone,\n selectedCount,\n }: RenderItemProps<Column> & {\n isClone?: boolean;\n selectedCount?: number;\n }): ReactElement {\n const text = item && item.name;\n const badgeText = isClone ? `${selectedCount}` : undefined;\n const className = isClone ? 'item-list-item-clone' : '';\n return DraggableItemList.renderTextItem({ text, badgeText, className });\n }\n\n static addGroupings(\n currentGroupings: string[],\n newGroupings: string[],\n index: number = currentGroupings.length\n ): string[] {\n if (newGroupings == null || newGroupings.length === 0) {\n return currentGroupings;\n }\n\n let insertIndex = index;\n const groupings = currentGroupings.filter((grouping, i) => {\n if (newGroupings.includes(grouping)) {\n if (i < insertIndex) {\n insertIndex -= 1;\n }\n return false;\n }\n return true;\n });\n groupings.splice(insertIndex, 0, ...newGroupings);\n return groupings;\n }\n\n static isGroupable(column: Column): boolean {\n return !TableUtils.isDecimalType(column.type);\n }\n\n constructor(props: RollupRowsProps) {\n super(props);\n\n this.search = this.search.bind(this);\n\n this.handleDeleteClicked = this.handleDeleteClicked.bind(this);\n this.handleSearchChange = this.handleSearchChange.bind(this);\n this.handleUngroupedSelect = this.handleUngroupedSelect.bind(this);\n this.handleUngroupedSelectionChange = this.handleUngroupedSelectionChange.bind(\n this\n );\n this.handleDragStart = this.handleDragStart.bind(this);\n this.handleDragEnd = this.handleDragEnd.bind(this);\n this.handleGroupedSelectionChange = this.handleGroupedSelectionChange.bind(\n this\n );\n this.handleShowConstituentsChange = this.handleShowConstituentsChange.bind(\n this\n );\n this.handleShowNonAggregatedColumnsChange = this.handleShowNonAggregatedColumnsChange.bind(\n this\n );\n this.handleSortAscending = this.handleSortAscending.bind(this);\n this.handleSortDescending = this.handleSortDescending.bind(this);\n this.renderGroupedItem = this.renderGroupedItem.bind(this);\n\n this.ungroupedList = React.createRef();\n this.groupedList = React.createRef();\n\n const { config } = props;\n const {\n columns = [],\n showConstituents = true,\n showNonAggregatedColumns = true,\n } = config ?? {};\n\n this.state = {\n ungroupedSelectedRanges: [],\n columns,\n groupedSelectedRanges: [],\n searchFilter: '',\n showConstituents,\n showNonAggregatedColumns,\n dragSource: null,\n sort: null,\n };\n }\n\n componentDidUpdate(\n prevProps: RollupRowsProps,\n prevState: RollupRowsState\n ): void {\n const { config } = this.props;\n const { columns, showConstituents, showNonAggregatedColumns } = this.state;\n if (config !== prevProps.config) {\n this.updateFromConfig();\n } else if (\n columns !== prevState.columns ||\n showConstituents !== prevState.showConstituents ||\n showNonAggregatedColumns !== prevState.showNonAggregatedColumns\n ) {\n if (\n config == null ||\n columns !== config.columns ||\n showConstituents !== config.showConstituents ||\n showNonAggregatedColumns !== config.showNonAggregatedColumns\n ) {\n this.sendChange();\n }\n }\n }\n\n componentWillUnmount(): void {\n this.search.cancel();\n }\n\n ungroupedList: RefObject<DraggableItemList<Column>>;\n\n groupedList: RefObject<DraggableItemList<string>>;\n\n handleSearchChange(event: ChangeEvent<HTMLInputElement>): void {\n const searchFilter = event.target.value;\n this.setState({ searchFilter });\n if (!searchFilter) {\n this.search.cancel();\n this.resetSelection();\n return;\n }\n this.search(searchFilter);\n }\n\n handleSortAscending(): void {\n this.setState(({ sort }) => ({\n sort:\n sort === RollupRows.SORT.ASCENDING\n ? null\n : (RollupRows.SORT.ASCENDING as SortDirection),\n }));\n }\n\n handleSortDescending(): void {\n this.setState(({ sort }) => ({\n sort:\n sort === RollupRows.SORT.DESCENDING\n ? null\n : (RollupRows.SORT.DESCENDING as SortDirection),\n }));\n }\n\n resetSelection(): void {\n this.setState({ ungroupedSelectedRanges: [], groupedSelectedRanges: [] });\n }\n\n search = debounce((searchFilter: string) => {\n const columns = this.getSortedUngroupedColumns();\n const selectedRanges = [] as Range[];\n let focusIndex = null;\n for (let i = 0; i < columns.length; i += 1) {\n const column = columns[i];\n if (column.name.toLowerCase().includes(searchFilter.toLowerCase())) {\n if (focusIndex == null) {\n focusIndex = i;\n }\n selectedRanges.push([i, i]);\n }\n }\n assertNotNull(focusIndex);\n this.setState({ ungroupedSelectedRanges: selectedRanges });\n\n if (selectedRanges.length > 0 && this.ungroupedList.current) {\n this.ungroupedList.current.scrollToItem(focusIndex);\n }\n }, DEBOUNCE_SEARCH);\n\n handleDragStart(e: DragStart): void {\n log.debug('handleDragStart', e);\n\n document.documentElement.classList.add('drag-pointer-events-none');\n\n this.setState({ dragSource: e.source });\n }\n\n handleDragEnd(e: DropResult): void {\n log.debug('handleDragEnd', e);\n\n document.documentElement.classList.remove('drag-pointer-events-none');\n\n this.setState({ dragSource: null });\n\n const { destination, source } = e;\n if (destination == null || source == null) {\n return;\n }\n\n // We don't allow dragging within the ungrouped list, so if we're dragging into the ungrouped list,\n // it must have came from the grouped list. Remove those grouped columns.\n if (destination.droppableId === UNGROUPED_LIST_ID) {\n this.setState(({ groupedSelectedRanges, columns }) => {\n const newColumns = [...columns];\n DragUtils.reorder(newColumns, groupedSelectedRanges, [], 0);\n return {\n columns: newColumns,\n ungroupedSelectedRanges: [],\n groupedSelectedRanges: [],\n };\n });\n return;\n }\n\n // Otherwise, it must be dropping into the grouped list, so we just need to check the source\n const isSameList = source.droppableId === GROUPED_LIST_ID;\n let destinationIndex = destination.index;\n if (isSameList && source.index < destination.index) {\n // react-beautiful-dnd adjusts the index when dragging within a list already, however that only supports single selection\n // We need to change it back to the index we actually want it to drop at before adjusting for the removed source index, as\n // we adjust the index based on all the selected ranges, not just the source.index.\n destinationIndex += 1;\n }\n this.setState(\n ({ columns, ungroupedSelectedRanges, groupedSelectedRanges }) => {\n const newColumns = [...columns];\n const sourceItems = isSameList\n ? newColumns\n : this.getSortedUngroupedColumns().map(c => c.name);\n const sourceRanges = isSameList\n ? groupedSelectedRanges\n : ungroupedSelectedRanges;\n const draggedItems = DragUtils.reorder(\n sourceItems,\n sourceRanges,\n newColumns,\n destinationIndex\n );\n\n // Select the newly dropped items\n const insertIndex = isSameList\n ? DragUtils.adjustDestinationIndex(\n destinationIndex,\n groupedSelectedRanges\n )\n : destinationIndex;\n const newSelectedRanges = [\n [insertIndex, insertIndex + draggedItems.length - 1] as Range,\n ];\n return {\n columns: newColumns,\n ungroupedSelectedRanges: [] as Range[],\n groupedSelectedRanges: newSelectedRanges,\n };\n }\n );\n this.resetSelection();\n }\n\n handleUngroupedSelect(itemIndex: number): void {\n log.debug('handleUngroupedSelect');\n\n this.setState(({ columns }) => ({\n columns: RollupRows.addGroupings(columns, [\n this.getSortedUngroupedColumns()[itemIndex].name,\n ]),\n ungroupedSelectedRanges: [],\n groupedSelectedRanges: [],\n }));\n }\n\n handleUngroupedSelectionChange(ungroupedSelectedRanges: Range[]): void {\n log.debug2('handleUngroupedSelectionChange', ungroupedSelectedRanges);\n this.setState(\n ({ ungroupedSelectedRanges: stateUngroupedSelectedRanges }) => {\n if (ungroupedSelectedRanges === stateUngroupedSelectedRanges) {\n return null;\n }\n\n return { ungroupedSelectedRanges, groupedSelectedRanges: [] };\n }\n );\n }\n\n handleGroupedSelectionChange(groupedSelectedRanges: Range[]): void {\n log.debug2('handleGroupedSelectedRanges', groupedSelectedRanges);\n this.setState(({ groupedSelectedRanges: stateGroupedSelectedRanges }) => {\n if (groupedSelectedRanges === stateGroupedSelectedRanges) {\n return null;\n }\n\n return { groupedSelectedRanges, ungroupedSelectedRanges: [] };\n });\n }\n\n handleDeleteClicked(index: number): void {\n this.setState(({ columns }) => {\n const newColumns = columns.slice();\n newColumns.splice(index, 1);\n return { columns: newColumns };\n });\n }\n\n handleShowConstituentsChange(): void {\n this.setState(({ showConstituents }) => ({\n showConstituents: !showConstituents,\n }));\n }\n\n handleShowNonAggregatedColumnsChange(): void {\n this.setState(({ showNonAggregatedColumns }) => ({\n showNonAggregatedColumns: !showNonAggregatedColumns,\n }));\n }\n\n updateFromConfig(): void {\n const { config } = this.props;\n const {\n columns = [],\n showConstituents = true,\n showNonAggregatedColumns = true,\n } = config ?? {};\n this.setState({ columns, showConstituents, showNonAggregatedColumns });\n }\n\n sendChange(): void {\n const { onChange } = this.props;\n const { columns, showConstituents, showNonAggregatedColumns } = this.state;\n onChange({\n columns,\n showConstituents,\n showNonAggregatedColumns,\n } as UIRollupConfig);\n }\n\n getCachedUngroupedColumns = memoize(\n (columns: Column[], groupedColumns: ColumnName[]): Column[] =>\n columns.filter(\n column =>\n RollupRows.isGroupable(column) &&\n !groupedColumns.find(name => name === column.name)\n )\n );\n\n getCachedSortedColumns = memoize(\n (columns: Column[], sort?: SortDirection): Column[] =>\n sort == null\n ? [...columns]\n : TableUtils.sortColumns(columns, sort === RollupRows.SORT.ASCENDING)\n );\n\n getUngroupedColumns(): Column[] {\n const { model } = this.props;\n const { columns } = this.state;\n const { originalColumns } = model;\n\n return this.getCachedUngroupedColumns(originalColumns, columns);\n }\n\n getSortedUngroupedColumns(): Column[] {\n const { sort } = this.state;\n const columns = this.getUngroupedColumns();\n return this.getCachedSortedColumns(columns, sort);\n }\n\n renderGroupedItem({\n item,\n itemIndex,\n isClone,\n selectedCount,\n }: RenderItemProps<string> & {\n isClone?: boolean;\n selectedCount?: number;\n }): ReactElement {\n const indent = isClone ? '' : '\\u00A0\\u00A0'.repeat(itemIndex);\n const text = `${indent}${item}`;\n const badgeText = isClone ? `${selectedCount}` : undefined;\n const className = isClone ? 'item-list-item-clone' : '';\n return (\n <>\n {DraggableItemList.renderTextItem({ text, badgeText, className })}\n {!isClone && (\n <Button\n kind=\"ghost\"\n className=\"btn btn-link btn-link-icon btn-delete-grouping float-right\"\n onClick={() => this.handleDeleteClicked(itemIndex)}\n >\n <FontAwesomeIcon icon={vsTrash} />\n </Button>\n )}\n </>\n );\n }\n\n render(): ReactElement {\n const {\n columns,\n dragSource,\n searchFilter,\n groupedSelectedRanges,\n ungroupedSelectedRanges,\n showConstituents,\n showNonAggregatedColumns,\n sort,\n } = this.state;\n\n const ungroupedColumns = this.getSortedUngroupedColumns();\n let groupListHeight = columns.length * DraggableItemList.DEFAULT_ROW_HEIGHT;\n if (dragSource?.droppableId === UNGROUPED_LIST_ID) {\n groupListHeight += DraggableItemList.DEFAULT_ROW_HEIGHT;\n }\n const ungroupMaxListHeight =\n ungroupedColumns.length * DraggableItemList.DEFAULT_ROW_HEIGHT + 10;\n const ungroupMinListHeight = Math.min(\n 3 * DraggableItemList.DEFAULT_ROW_HEIGHT,\n ungroupMaxListHeight\n );\n\n return (\n <div\n role=\"menu\"\n className={classNames('rollup-rows', {\n 'is-dragging': dragSource != null,\n })}\n tabIndex={0}\n >\n <DragDropContext\n onDragEnd={this.handleDragEnd}\n onDragStart={this.handleDragStart}\n >\n <div className=\"rollup-rows-group-by\">\n <div className=\"section-title\">Group By</div>\n {columns.length === 0 && (\n <Droppable isDropDisabled droppableId=\"placeholder\">\n {(provided, snapshot) => (\n <div\n className={classNames('placeholder', 'text-muted', {\n 'is-dragging-from-this': snapshot.draggingFromThisWith,\n 'is-dragging-over': snapshot.isDraggingOver,\n 'is-dropping': snapshot.draggingOverWith,\n })}\n ref={provided.innerRef}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...provided.droppableProps}\n >\n Create rollup by dragging columns here, from the available\n columns list below.\n </div>\n )}\n </Droppable>\n )}\n {columns.length > 0 && (\n <DraggableItemList\n draggingItemClassName=\"rollup-rows-dragging-grouped-item\"\n draggablePrefix={GROUPED_LIST_ID}\n droppableId={GROUPED_LIST_ID}\n itemCount={columns.length}\n items={columns}\n offset={0}\n onSelectionChange={this.handleGroupedSelectionChange}\n ref={this.groupedList}\n renderItem={this.renderGroupedItem}\n selectedRanges={groupedSelectedRanges}\n style={{ height: groupListHeight }}\n isMultiSelect\n />\n )}\n </div>\n <div className=\"rollup-rows-available-columns\">\n <div className=\"section-title\">Available Grouping Columns</div>\n <div className=\"top-menu\">\n <SearchInput\n className=\"w-100\"\n value={searchFilter}\n matchCount={\n searchFilter ? ungroupedSelectedRanges.length : undefined\n }\n placeholder=\"Find column...\"\n onChange={this.handleSearchChange}\n />\n <Button\n kind=\"ghost\"\n className={classNames('btn-link btn-link-icon', {\n active: sort === RollupRows.SORT.ASCENDING,\n })}\n onClick={this.handleSortAscending}\n >\n <FontAwesomeIcon icon={dhSortAlphaDown} />\n <Tooltip>Sort ascending</Tooltip>\n </Button>\n <Button\n kind=\"ghost\"\n className={classNames('btn-link btn-link-icon', {\n active: sort === RollupRows.SORT.DESCENDING,\n })}\n onClick={this.handleSortDescending}\n >\n <FontAwesomeIcon icon={dhSortAlphaUp} />\n <Tooltip>Sort descending</Tooltip>\n </Button>\n </div>\n <DraggableItemList\n className=\"rollup-available-grouping-columns\"\n draggablePrefix={UNGROUPED_LIST_ID}\n droppableId={UNGROUPED_LIST_ID}\n itemCount={ungroupedColumns.length}\n items={ungroupedColumns}\n renderItem={RollupRows.renderColumn}\n offset={0}\n onSelect={this.handleUngroupedSelect}\n onSelectionChange={this.handleUngroupedSelectionChange}\n ref={this.ungroupedList}\n selectedRanges={ungroupedSelectedRanges}\n style={{\n maxHeight: ungroupMaxListHeight,\n minHeight: ungroupMinListHeight,\n }}\n isDropDisabled={dragSource?.droppableId !== GROUPED_LIST_ID}\n isMultiSelect\n />\n <div className=\"bottom-menu\">\n <div className=\"label\">Show:</div>\n <Checkbox\n checked={showConstituents}\n onChange={this.handleShowConstituentsChange}\n >\n Constituents\n </Checkbox>\n <Checkbox\n checked={showNonAggregatedColumns}\n onChange={this.handleShowNonAggregatedColumnsChange}\n >\n Non-Aggregated Columns\n </Checkbox>\n </div>\n </div>\n </DragDropContext>\n </div>\n );\n }\n}\n\nexport default RollupRows;\n"],"mappings":"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"}