@deephaven/console 0.46.1-beta.2 → 0.46.1-beta.7

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 (59) hide show
  1. package/dist/Console.js +66 -59
  2. package/dist/Console.js.map +1 -1
  3. package/dist/ConsoleInput.js +20 -16
  4. package/dist/ConsoleInput.js.map +1 -1
  5. package/dist/ConsoleMenu.js +73 -67
  6. package/dist/ConsoleMenu.js.map +1 -1
  7. package/dist/ConsoleStatusBar.js +17 -10
  8. package/dist/ConsoleStatusBar.js.map +1 -1
  9. package/dist/HeapUsage.js +89 -74
  10. package/dist/HeapUsage.js.map +1 -1
  11. package/dist/command-history/CommandHistory.js +43 -38
  12. package/dist/command-history/CommandHistory.js.map +1 -1
  13. package/dist/command-history/CommandHistoryActions.js +25 -22
  14. package/dist/command-history/CommandHistoryActions.js.map +1 -1
  15. package/dist/command-history/CommandHistoryItem.js +25 -21
  16. package/dist/command-history/CommandHistoryItem.js.map +1 -1
  17. package/dist/command-history/CommandHistoryItemTooltip.js +34 -21
  18. package/dist/command-history/CommandHistoryItemTooltip.js.map +1 -1
  19. package/dist/common/Code.js +16 -12
  20. package/dist/common/Code.js.map +1 -1
  21. package/dist/common/ObjectIcon.js +5 -4
  22. package/dist/common/ObjectIcon.js.map +1 -1
  23. package/dist/console-history/ConsoleHistory.js +7 -6
  24. package/dist/console-history/ConsoleHistory.js.map +1 -1
  25. package/dist/console-history/ConsoleHistoryItem.js +35 -28
  26. package/dist/console-history/ConsoleHistoryItem.js.map +1 -1
  27. package/dist/console-history/ConsoleHistoryItemResult.js +12 -7
  28. package/dist/console-history/ConsoleHistoryItemResult.js.map +1 -1
  29. package/dist/console-history/ConsoleHistoryResultErrorMessage.js +41 -30
  30. package/dist/console-history/ConsoleHistoryResultErrorMessage.js.map +1 -1
  31. package/dist/console-history/ConsoleHistoryResultInProgress.js +15 -11
  32. package/dist/console-history/ConsoleHistoryResultInProgress.js.map +1 -1
  33. package/dist/csv/CsvInputBar.d.ts +1 -1
  34. package/dist/csv/CsvInputBar.d.ts.map +1 -1
  35. package/dist/csv/CsvInputBar.js +80 -60
  36. package/dist/csv/CsvInputBar.js.map +1 -1
  37. package/dist/csv/CsvOverlay.js +74 -50
  38. package/dist/csv/CsvOverlay.js.map +1 -1
  39. package/dist/csv/CsvParser.d.ts +4 -2
  40. package/dist/csv/CsvParser.d.ts.map +1 -1
  41. package/dist/csv/CsvParser.js +21 -7
  42. package/dist/csv/CsvParser.js.map +1 -1
  43. package/dist/csv/CsvTypeParser.d.ts +4 -3
  44. package/dist/csv/CsvTypeParser.d.ts.map +1 -1
  45. package/dist/csv/CsvTypeParser.js +16 -7
  46. package/dist/csv/CsvTypeParser.js.map +1 -1
  47. package/dist/csv/ZipStreamHelper.d.ts +14 -0
  48. package/dist/csv/ZipStreamHelper.d.ts.map +1 -0
  49. package/dist/csv/ZipStreamHelper.js +15 -0
  50. package/dist/csv/ZipStreamHelper.js.map +1 -0
  51. package/dist/log/LogLevelMenuItem.js +9 -6
  52. package/dist/log/LogLevelMenuItem.js.map +1 -1
  53. package/dist/log/LogView.js +51 -42
  54. package/dist/log/LogView.js.map +1 -1
  55. package/dist/notebook/Editor.js +2 -1
  56. package/dist/notebook/Editor.js.map +1 -1
  57. package/dist/notebook/ScriptEditor.js +27 -18
  58. package/dist/notebook/ScriptEditor.js.map +1 -1
  59. package/package.json +13 -13
package/dist/HeapUsage.js CHANGED
@@ -7,6 +7,9 @@ import { Plot, ChartTheme } from '@deephaven/chart';
7
7
  import Log from '@deephaven/log';
8
8
  import { useAsyncInterval } from '@deephaven/react-hooks';
9
9
  import "./HeapUsage.css";
10
+ import { jsx as _jsx } from "react/jsx-runtime";
11
+ import { jsxs as _jsxs } from "react/jsx-runtime";
12
+ import { Fragment as _Fragment } from "react/jsx-runtime";
10
13
  var log = Log.module('HeapUsage');
11
14
  function HeapUsage(_ref) {
12
15
  var _timestamps2;
@@ -69,13 +72,17 @@ function HeapUsage(_ref) {
69
72
  var inUseGB = totalHeapGB - freeMemoryGB;
70
73
  var getRow = function getRow(text, size) {
71
74
  var bottomBorder = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
72
- return /*#__PURE__*/React.createElement("div", {
75
+ return /*#__PURE__*/_jsxs("div", {
73
76
  className: classNames("heap-usage-info-row", {
74
77
  'heading-bottom-border': bottomBorder
75
- })
76
- }, /*#__PURE__*/React.createElement("div", {
77
- className: "font-weight-bold"
78
- }, text), /*#__PURE__*/React.createElement("div", null, size));
78
+ }),
79
+ children: [/*#__PURE__*/_jsx("div", {
80
+ className: "font-weight-bold",
81
+ children: text
82
+ }), /*#__PURE__*/_jsx("div", {
83
+ children: size
84
+ })]
85
+ });
79
86
  };
80
87
  var {
81
88
  timestamps,
@@ -84,75 +91,83 @@ function HeapUsage(_ref) {
84
91
  var lastTimestamp = (_timestamps2 = timestamps[timestamps.length - 1]) !== null && _timestamps2 !== void 0 ? _timestamps2 : 0;
85
92
  var totalPercentage = totalHeapSize / maximumHeapSize;
86
93
  var usedPercentage = (totalHeapSize - freeMemory) / maximumHeapSize;
87
- return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
88
- className: "max-memory"
89
- }, /*#__PURE__*/React.createElement("div", {
90
- className: "total-memory",
91
- style: {
92
- width: "calc(".concat(totalPercentage * 100, "% - ").concat(totalPercentage * 2, "px")
93
- }
94
- }), /*#__PURE__*/React.createElement("div", {
95
- className: classNames('used-memory', {
96
- 'heap-overflow': (totalHeapSize - freeMemory) / maximumHeapSize > 0.95
97
- }),
98
- style: {
99
- width: "calc(".concat(usedPercentage * 100, "% - ").concat(usedPercentage * 2, "px")
100
- }
101
- }), /*#__PURE__*/React.createElement("div", {
102
- className: "memory-text"
103
- }, maxHeapGB.toFixed(1), " GB")), /*#__PURE__*/React.createElement(Tooltip, {
104
- onEntered: () => setIsOpen(true),
105
- onExited: () => setIsOpen(false),
106
- interactive: true
107
- }, /*#__PURE__*/React.createElement("div", {
108
- className: "heap-tooltip"
109
- }, getRow('In use:', "".concat(inUseGB.toFixed(decimalPlace), " of ").concat(maxHeapGB.toFixed(decimalPlace), " GB"), true), getRow('Free:', "".concat(freeMemoryGB.toFixed(decimalPlace), " GB")), getRow('Total:', "".concat(totalHeapGB.toFixed(decimalPlace), " GB")), getRow('Max:', "".concat(maxHeapGB.toFixed(decimalPlace), " GB")), /*#__PURE__*/React.createElement("div", {
110
- className: "heap-plot"
111
- }, /*#__PURE__*/React.createElement(Plot, {
112
- data: [{
113
- x: [...timestamps],
114
- y: [...usages],
115
- type: 'scatter',
116
- mode: 'lines'
117
- }],
118
- config: {
119
- staticPlot: true,
120
- responsive: true
121
- },
122
- style: {
123
- width: '196px',
124
- height: '100px'
125
- },
126
- layout: {
127
- margin: {
128
- l: 2,
129
- t: 2,
130
- r: 2,
131
- b: 2
132
- },
133
- plot_bgcolor: 'transparent',
134
- paper_bgcolor: 'transparent',
135
- colorway: ['#4878ea'],
136
- xaxis: {
137
- dtick: Math.round(monitorDuration / 6),
138
- gridcolor: ChartTheme.linecolor,
139
- range: [lastTimestamp - monitorDuration, lastTimestamp],
140
- linecolor: ChartTheme.linecolor,
141
- linewidth: 2,
142
- mirror: true
143
- },
144
- yaxis: {
145
- dtick: 0.2,
146
- gridcolor: ChartTheme.linecolor,
147
- range: [0, 1],
148
- linecolor: ChartTheme.linecolor,
149
- linewidth: 2,
150
- mirror: true
151
- }
152
- }
153
- })), /*#__PURE__*/React.createElement("div", {
154
- className: "heap-utilisation-text"
155
- }, "% utilization over ", Math.round(monitorDuration / 1000 / 60), " min."))));
94
+ return /*#__PURE__*/_jsxs(_Fragment, {
95
+ children: [/*#__PURE__*/_jsxs("div", {
96
+ className: "max-memory",
97
+ children: [/*#__PURE__*/_jsx("div", {
98
+ className: "total-memory",
99
+ style: {
100
+ width: "calc(".concat(totalPercentage * 100, "% - ").concat(totalPercentage * 2, "px")
101
+ }
102
+ }), /*#__PURE__*/_jsx("div", {
103
+ className: classNames('used-memory', {
104
+ 'heap-overflow': (totalHeapSize - freeMemory) / maximumHeapSize > 0.95
105
+ }),
106
+ style: {
107
+ width: "calc(".concat(usedPercentage * 100, "% - ").concat(usedPercentage * 2, "px")
108
+ }
109
+ }), /*#__PURE__*/_jsxs("div", {
110
+ className: "memory-text",
111
+ children: [maxHeapGB.toFixed(1), " GB"]
112
+ })]
113
+ }), /*#__PURE__*/_jsx(Tooltip, {
114
+ onEntered: () => setIsOpen(true),
115
+ onExited: () => setIsOpen(false),
116
+ interactive: true,
117
+ children: /*#__PURE__*/_jsxs("div", {
118
+ className: "heap-tooltip",
119
+ children: [getRow('In use:', "".concat(inUseGB.toFixed(decimalPlace), " of ").concat(maxHeapGB.toFixed(decimalPlace), " GB"), true), getRow('Free:', "".concat(freeMemoryGB.toFixed(decimalPlace), " GB")), getRow('Total:', "".concat(totalHeapGB.toFixed(decimalPlace), " GB")), getRow('Max:', "".concat(maxHeapGB.toFixed(decimalPlace), " GB")), /*#__PURE__*/_jsx("div", {
120
+ className: "heap-plot",
121
+ children: /*#__PURE__*/_jsx(Plot, {
122
+ data: [{
123
+ x: [...timestamps],
124
+ y: [...usages],
125
+ type: 'scatter',
126
+ mode: 'lines'
127
+ }],
128
+ config: {
129
+ staticPlot: true,
130
+ responsive: true
131
+ },
132
+ style: {
133
+ width: '196px',
134
+ height: '100px'
135
+ },
136
+ layout: {
137
+ margin: {
138
+ l: 2,
139
+ t: 2,
140
+ r: 2,
141
+ b: 2
142
+ },
143
+ plot_bgcolor: 'transparent',
144
+ paper_bgcolor: 'transparent',
145
+ colorway: ['#4878ea'],
146
+ xaxis: {
147
+ dtick: Math.round(monitorDuration / 6),
148
+ gridcolor: ChartTheme.linecolor,
149
+ range: [lastTimestamp - monitorDuration, lastTimestamp],
150
+ linecolor: ChartTheme.linecolor,
151
+ linewidth: 2,
152
+ mirror: true
153
+ },
154
+ yaxis: {
155
+ dtick: 0.2,
156
+ gridcolor: ChartTheme.linecolor,
157
+ range: [0, 1],
158
+ linecolor: ChartTheme.linecolor,
159
+ linewidth: 2,
160
+ mirror: true
161
+ }
162
+ }
163
+ })
164
+ }), /*#__PURE__*/_jsxs("div", {
165
+ className: "heap-utilisation-text",
166
+ children: ["% utilization over ", Math.round(monitorDuration / 1000 / 60), " min."]
167
+ })]
168
+ })
169
+ })]
170
+ });
156
171
  }
157
172
  export default HeapUsage;
158
173
  //# sourceMappingURL=HeapUsage.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"HeapUsage.js","names":["useState","useRef","useCallback","classNames","Tooltip","Plot","ChartTheme","Log","useAsyncInterval","log","module","HeapUsage","connection","defaultUpdateInterval","hoverUpdateInterval","bgMonitoring","monitorDuration","memoryUsage","setMemoryUsage","freeMemory","maximumHeapSize","totalHeapSize","isOpen","setIsOpen","historyUsage","timestamps","usages","setUsageUpdateInterval","newUsage","getWorkerHeapInfo","currentUsage","currentTime","Date","now","current","length","shift","push","e","warn","toDecimalPlace","num","dec","Math","round","decimalPlace","GbToByte","freeMemoryGB","totalHeapGB","maxHeapGB","inUseGB","getRow","text","size","bottomBorder","lastTimestamp","totalPercentage","usedPercentage","width","toFixed","x","y","type","mode","staticPlot","responsive","height","margin","l","t","r","b","plot_bgcolor","paper_bgcolor","colorway","xaxis","dtick","gridcolor","linecolor","range","linewidth","mirror","yaxis"],"sources":["../src/HeapUsage.tsx"],"sourcesContent":["import { useState, ReactElement, useRef, useCallback } from 'react';\nimport classNames from 'classnames';\nimport { Tooltip } from '@deephaven/components';\nimport type { QueryConnectable } from '@deephaven/jsapi-types';\nimport { Plot, ChartTheme } from '@deephaven/chart';\nimport Log from '@deephaven/log';\nimport { useAsyncInterval } from '@deephaven/react-hooks';\nimport './HeapUsage.scss';\n\nconst log = Log.module('HeapUsage');\n\ninterface HeapUsageProps {\n connection: QueryConnectable;\n defaultUpdateInterval: number;\n hoverUpdateInterval: number;\n bgMonitoring?: boolean;\n\n // in millis\n monitorDuration: number;\n}\n\nfunction HeapUsage({\n connection,\n defaultUpdateInterval,\n hoverUpdateInterval,\n bgMonitoring = true,\n monitorDuration,\n}: HeapUsageProps): ReactElement {\n const [memoryUsage, setMemoryUsage] = useState({\n freeMemory: 0,\n maximumHeapSize: 999,\n totalHeapSize: 0,\n });\n\n const [isOpen, setIsOpen] = useState(false);\n\n const historyUsage = useRef<{ timestamps: number[]; usages: number[] }>({\n timestamps: [],\n usages: [],\n });\n\n const setUsageUpdateInterval = useCallback(async () => {\n try {\n const newUsage = await connection.getWorkerHeapInfo();\n setMemoryUsage(newUsage);\n\n if (bgMonitoring || isOpen) {\n const currentUsage =\n (newUsage.totalHeapSize - newUsage.freeMemory) /\n newUsage.maximumHeapSize;\n const currentTime = Date.now();\n\n const { timestamps, usages } = historyUsage.current;\n while (\n timestamps.length !== 0 &&\n currentTime - timestamps[0] > monitorDuration * 1.5\n ) {\n timestamps.shift();\n usages.shift();\n }\n\n timestamps.push(currentTime);\n usages.push(currentUsage);\n } else {\n historyUsage.current = { timestamps: [], usages: [] };\n }\n } catch (e) {\n log.warn('Unable to get heap usage', e);\n }\n }, [isOpen, connection, monitorDuration, bgMonitoring]);\n\n useAsyncInterval(\n setUsageUpdateInterval,\n isOpen ? hoverUpdateInterval : defaultUpdateInterval\n );\n\n const toDecimalPlace = (num: number, dec: number) =>\n Math.round(num * 10 ** dec) / 10 ** dec;\n\n const decimalPlace = 2;\n const GbToByte = 1024 ** 3;\n\n const { freeMemory, totalHeapSize, maximumHeapSize } = memoryUsage;\n\n const freeMemoryGB = toDecimalPlace(freeMemory / GbToByte, decimalPlace);\n const totalHeapGB = toDecimalPlace(totalHeapSize / GbToByte, decimalPlace);\n const maxHeapGB = toDecimalPlace(maximumHeapSize / GbToByte, decimalPlace);\n const inUseGB = totalHeapGB - freeMemoryGB;\n\n const getRow = (text: string, size: string, bottomBorder = false) => (\n <div\n className={classNames(`heap-usage-info-row`, {\n 'heading-bottom-border': bottomBorder,\n })}\n >\n <div className=\"font-weight-bold\">{text}</div>\n <div>{size}</div>\n </div>\n );\n\n const { timestamps, usages } = historyUsage.current;\n\n const lastTimestamp = timestamps[timestamps.length - 1] ?? 0;\n\n const totalPercentage = totalHeapSize / maximumHeapSize;\n const usedPercentage = (totalHeapSize - freeMemory) / maximumHeapSize;\n\n return (\n <>\n <div className=\"max-memory\">\n <div\n className=\"total-memory\"\n style={{\n width: `calc(${totalPercentage * 100}% - ${totalPercentage * 2}px`,\n }}\n />\n <div\n className={classNames('used-memory', {\n 'heap-overflow':\n (totalHeapSize - freeMemory) / maximumHeapSize > 0.95,\n })}\n style={{\n width: `calc(${usedPercentage * 100}% - ${usedPercentage * 2}px`,\n }}\n />\n <div className=\"memory-text\">{maxHeapGB.toFixed(1)} GB</div>\n </div>\n\n <Tooltip\n onEntered={() => setIsOpen(true)}\n onExited={() => setIsOpen(false)}\n interactive\n >\n <div className=\"heap-tooltip\">\n {getRow(\n 'In use:',\n `${inUseGB.toFixed(decimalPlace)} of ${maxHeapGB.toFixed(\n decimalPlace\n )} GB`,\n true\n )}\n {getRow('Free:', `${freeMemoryGB.toFixed(decimalPlace)} GB`)}\n {getRow('Total:', `${totalHeapGB.toFixed(decimalPlace)} GB`)}\n {getRow('Max:', `${maxHeapGB.toFixed(decimalPlace)} GB`)}\n <div className=\"heap-plot\">\n <Plot\n data={[\n {\n x: [...timestamps],\n y: [...usages],\n type: 'scatter',\n mode: 'lines',\n },\n ]}\n config={{ staticPlot: true, responsive: true }}\n style={{\n width: '196px',\n height: '100px',\n }}\n layout={{\n margin: { l: 2, t: 2, r: 2, b: 2 },\n plot_bgcolor: 'transparent',\n paper_bgcolor: 'transparent',\n colorway: ['#4878ea'],\n xaxis: {\n dtick: Math.round(monitorDuration / 6),\n gridcolor: ChartTheme.linecolor,\n range: [lastTimestamp - monitorDuration, lastTimestamp],\n linecolor: ChartTheme.linecolor,\n linewidth: 2,\n mirror: true,\n },\n yaxis: {\n dtick: 0.2,\n gridcolor: ChartTheme.linecolor,\n range: [0, 1],\n linecolor: ChartTheme.linecolor,\n linewidth: 2,\n mirror: true,\n },\n }}\n />\n </div>\n <div className=\"heap-utilisation-text\">\n % utilization over {Math.round(monitorDuration / 1000 / 60)} min.\n </div>\n </div>\n </Tooltip>\n </>\n );\n}\n\nexport default HeapUsage;\n"],"mappings":"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"}
1
+ {"version":3,"file":"HeapUsage.js","names":["useState","useRef","useCallback","classNames","Tooltip","Plot","ChartTheme","Log","useAsyncInterval","log","module","HeapUsage","connection","defaultUpdateInterval","hoverUpdateInterval","bgMonitoring","monitorDuration","memoryUsage","setMemoryUsage","freeMemory","maximumHeapSize","totalHeapSize","isOpen","setIsOpen","historyUsage","timestamps","usages","setUsageUpdateInterval","newUsage","getWorkerHeapInfo","currentUsage","currentTime","Date","now","current","length","shift","push","e","warn","toDecimalPlace","num","dec","Math","round","decimalPlace","GbToByte","freeMemoryGB","totalHeapGB","maxHeapGB","inUseGB","getRow","text","size","bottomBorder","lastTimestamp","totalPercentage","usedPercentage","width","toFixed","x","y","type","mode","staticPlot","responsive","height","margin","l","t","r","b","plot_bgcolor","paper_bgcolor","colorway","xaxis","dtick","gridcolor","linecolor","range","linewidth","mirror","yaxis"],"sources":["../src/HeapUsage.tsx"],"sourcesContent":["import { useState, ReactElement, useRef, useCallback } from 'react';\nimport classNames from 'classnames';\nimport { Tooltip } from '@deephaven/components';\nimport type { QueryConnectable } from '@deephaven/jsapi-types';\nimport { Plot, ChartTheme } from '@deephaven/chart';\nimport Log from '@deephaven/log';\nimport { useAsyncInterval } from '@deephaven/react-hooks';\nimport './HeapUsage.scss';\n\nconst log = Log.module('HeapUsage');\n\ninterface HeapUsageProps {\n connection: QueryConnectable;\n defaultUpdateInterval: number;\n hoverUpdateInterval: number;\n bgMonitoring?: boolean;\n\n // in millis\n monitorDuration: number;\n}\n\nfunction HeapUsage({\n connection,\n defaultUpdateInterval,\n hoverUpdateInterval,\n bgMonitoring = true,\n monitorDuration,\n}: HeapUsageProps): ReactElement {\n const [memoryUsage, setMemoryUsage] = useState({\n freeMemory: 0,\n maximumHeapSize: 999,\n totalHeapSize: 0,\n });\n\n const [isOpen, setIsOpen] = useState(false);\n\n const historyUsage = useRef<{ timestamps: number[]; usages: number[] }>({\n timestamps: [],\n usages: [],\n });\n\n const setUsageUpdateInterval = useCallback(async () => {\n try {\n const newUsage = await connection.getWorkerHeapInfo();\n setMemoryUsage(newUsage);\n\n if (bgMonitoring || isOpen) {\n const currentUsage =\n (newUsage.totalHeapSize - newUsage.freeMemory) /\n newUsage.maximumHeapSize;\n const currentTime = Date.now();\n\n const { timestamps, usages } = historyUsage.current;\n while (\n timestamps.length !== 0 &&\n currentTime - timestamps[0] > monitorDuration * 1.5\n ) {\n timestamps.shift();\n usages.shift();\n }\n\n timestamps.push(currentTime);\n usages.push(currentUsage);\n } else {\n historyUsage.current = { timestamps: [], usages: [] };\n }\n } catch (e) {\n log.warn('Unable to get heap usage', e);\n }\n }, [isOpen, connection, monitorDuration, bgMonitoring]);\n\n useAsyncInterval(\n setUsageUpdateInterval,\n isOpen ? hoverUpdateInterval : defaultUpdateInterval\n );\n\n const toDecimalPlace = (num: number, dec: number) =>\n Math.round(num * 10 ** dec) / 10 ** dec;\n\n const decimalPlace = 2;\n const GbToByte = 1024 ** 3;\n\n const { freeMemory, totalHeapSize, maximumHeapSize } = memoryUsage;\n\n const freeMemoryGB = toDecimalPlace(freeMemory / GbToByte, decimalPlace);\n const totalHeapGB = toDecimalPlace(totalHeapSize / GbToByte, decimalPlace);\n const maxHeapGB = toDecimalPlace(maximumHeapSize / GbToByte, decimalPlace);\n const inUseGB = totalHeapGB - freeMemoryGB;\n\n const getRow = (text: string, size: string, bottomBorder = false) => (\n <div\n className={classNames(`heap-usage-info-row`, {\n 'heading-bottom-border': bottomBorder,\n })}\n >\n <div className=\"font-weight-bold\">{text}</div>\n <div>{size}</div>\n </div>\n );\n\n const { timestamps, usages } = historyUsage.current;\n\n const lastTimestamp = timestamps[timestamps.length - 1] ?? 0;\n\n const totalPercentage = totalHeapSize / maximumHeapSize;\n const usedPercentage = (totalHeapSize - freeMemory) / maximumHeapSize;\n\n return (\n <>\n <div className=\"max-memory\">\n <div\n className=\"total-memory\"\n style={{\n width: `calc(${totalPercentage * 100}% - ${totalPercentage * 2}px`,\n }}\n />\n <div\n className={classNames('used-memory', {\n 'heap-overflow':\n (totalHeapSize - freeMemory) / maximumHeapSize > 0.95,\n })}\n style={{\n width: `calc(${usedPercentage * 100}% - ${usedPercentage * 2}px`,\n }}\n />\n <div className=\"memory-text\">{maxHeapGB.toFixed(1)} GB</div>\n </div>\n\n <Tooltip\n onEntered={() => setIsOpen(true)}\n onExited={() => setIsOpen(false)}\n interactive\n >\n <div className=\"heap-tooltip\">\n {getRow(\n 'In use:',\n `${inUseGB.toFixed(decimalPlace)} of ${maxHeapGB.toFixed(\n decimalPlace\n )} GB`,\n true\n )}\n {getRow('Free:', `${freeMemoryGB.toFixed(decimalPlace)} GB`)}\n {getRow('Total:', `${totalHeapGB.toFixed(decimalPlace)} GB`)}\n {getRow('Max:', `${maxHeapGB.toFixed(decimalPlace)} GB`)}\n <div className=\"heap-plot\">\n <Plot\n data={[\n {\n x: [...timestamps],\n y: [...usages],\n type: 'scatter',\n mode: 'lines',\n },\n ]}\n config={{ staticPlot: true, responsive: true }}\n style={{\n width: '196px',\n height: '100px',\n }}\n layout={{\n margin: { l: 2, t: 2, r: 2, b: 2 },\n plot_bgcolor: 'transparent',\n paper_bgcolor: 'transparent',\n colorway: ['#4878ea'],\n xaxis: {\n dtick: Math.round(monitorDuration / 6),\n gridcolor: ChartTheme.linecolor,\n range: [lastTimestamp - monitorDuration, lastTimestamp],\n linecolor: ChartTheme.linecolor,\n linewidth: 2,\n mirror: true,\n },\n yaxis: {\n dtick: 0.2,\n gridcolor: ChartTheme.linecolor,\n range: [0, 1],\n linecolor: ChartTheme.linecolor,\n linewidth: 2,\n mirror: true,\n },\n }}\n />\n </div>\n <div className=\"heap-utilisation-text\">\n % utilization over {Math.round(monitorDuration / 1000 / 60)} min.\n </div>\n </div>\n </Tooltip>\n </>\n );\n}\n\nexport default HeapUsage;\n"],"mappings":"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"}
@@ -15,6 +15,8 @@ import ConsoleConstants from "../common/ConsoleConstants.js";
15
15
  import "./CommandHistory.css";
16
16
  import CommandHistoryViewportUpdater from "./CommandHistoryViewportUpdater.js";
17
17
  import SHORTCUTS from "../ConsoleShortcuts.js";
18
+ import { jsx as _jsx } from "react/jsx-runtime";
19
+ import { jsxs as _jsxs } from "react/jsx-runtime";
18
20
  var log = Log.module('CommandHistory');
19
21
  class CommandHistory extends Component {
20
22
  static getCommandsFromViewport(items, offset, sortedRanges) {
@@ -297,7 +299,7 @@ class CommandHistory extends Component {
297
299
  language,
298
300
  commandHistoryStorage
299
301
  } = this.props;
300
- return /*#__PURE__*/React.createElement(CommandHistoryItem, {
302
+ return /*#__PURE__*/_jsx(CommandHistoryItem, {
301
303
  isSelected: isSelected,
302
304
  item: item,
303
305
  language: language,
@@ -332,43 +334,46 @@ class CommandHistory extends Component {
332
334
  selectedRanges
333
335
  } = this.state;
334
336
  var languageDisplayString = (_ConsoleConstants$LAN = ConsoleConstants.LANGUAGE_MAP.get(language)) !== null && _ConsoleConstants$LAN !== void 0 ? _ConsoleConstants$LAN : '';
335
- return /*#__PURE__*/React.createElement("div", {
336
- className: "command-history"
337
- }, /*#__PURE__*/React.createElement("div", {
338
- className: "command-history-search-bar"
339
- }, /*#__PURE__*/React.createElement(SearchInput, {
340
- ref: this.searchInputRef,
341
- value: searchText,
342
- placeholder: "".concat(languageDisplayString, " Command History"),
343
- onChange: this.handleSearchChange
344
- }), /*#__PURE__*/React.createElement(CommandHistoryActions, {
345
- actions: historyActions,
346
- hasSelection: selectedRanges.length > 0
347
- })), /*#__PURE__*/React.createElement("div", {
348
- className: "command-history-list"
349
- }, /*#__PURE__*/React.createElement(ItemList, {
350
- ref: this.itemListRef,
351
- itemCount: itemCount,
352
- items: items,
353
- offset: offset,
354
- selectedRanges: selectedRanges,
355
- onSelect: this.handleSelect,
356
- onSelectionChange: this.handleSelectionChange,
357
- onViewportChange: this.handleViewportChange,
358
- renderItem: this.renderItem,
359
- rowHeight: CommandHistory.ITEM_HEIGHT,
360
- isDoubleClickSelect: true,
361
- isMultiSelect: true,
362
- isStickyBottom: true
363
- }), /*#__PURE__*/React.createElement(CommandHistoryViewportUpdater, {
364
- table: table,
365
- top: top,
366
- bottom: bottom,
367
- search: debouncedSearchText,
368
- onUpdate: this.handleViewportUpdate
369
- }), /*#__PURE__*/React.createElement(ContextActions, {
370
- actions: actions
371
- })));
337
+ return /*#__PURE__*/_jsxs("div", {
338
+ className: "command-history",
339
+ children: [/*#__PURE__*/_jsxs("div", {
340
+ className: "command-history-search-bar",
341
+ children: [/*#__PURE__*/_jsx(SearchInput, {
342
+ ref: this.searchInputRef,
343
+ value: searchText,
344
+ placeholder: "".concat(languageDisplayString, " Command History"),
345
+ onChange: this.handleSearchChange
346
+ }), /*#__PURE__*/_jsx(CommandHistoryActions, {
347
+ actions: historyActions,
348
+ hasSelection: selectedRanges.length > 0
349
+ })]
350
+ }), /*#__PURE__*/_jsxs("div", {
351
+ className: "command-history-list",
352
+ children: [/*#__PURE__*/_jsx(ItemList, {
353
+ ref: this.itemListRef,
354
+ itemCount: itemCount,
355
+ items: items,
356
+ offset: offset,
357
+ selectedRanges: selectedRanges,
358
+ onSelect: this.handleSelect,
359
+ onSelectionChange: this.handleSelectionChange,
360
+ onViewportChange: this.handleViewportChange,
361
+ renderItem: this.renderItem,
362
+ rowHeight: CommandHistory.ITEM_HEIGHT,
363
+ isDoubleClickSelect: true,
364
+ isMultiSelect: true,
365
+ isStickyBottom: true
366
+ }), /*#__PURE__*/_jsx(CommandHistoryViewportUpdater, {
367
+ table: table,
368
+ top: top,
369
+ bottom: bottom,
370
+ search: debouncedSearchText,
371
+ onUpdate: this.handleViewportUpdate
372
+ }), /*#__PURE__*/_jsx(ContextActions, {
373
+ actions: actions
374
+ })]
375
+ })]
376
+ });
372
377
  }
373
378
  }
374
379
  _defineProperty(CommandHistory, "ITEM_HEIGHT", 29);
@@ -1 +1 @@
1
- {"version":3,"file":"CommandHistory.js","names":["React","Component","debounce","ContextActions","ItemList","SearchInput","GLOBAL_SHORTCUTS","vsFileCode","vsFiles","vsNewFile","vsPlay","vsTerminal","copyToClipboard","Pending","Log","CommandHistoryItem","CommandHistoryActions","ConsoleConstants","CommandHistoryViewportUpdater","SHORTCUTS","log","module","CommandHistory","getCommandsFromViewport","items","offset","sortedRanges","commands","i","length","range","j","name","push","getCommandsFromSnapshot","table","getSnapshot","values","map","item","constructor","props","setState","searchText","debouncedSearchText","selectedRanges","SET_SEARCH_DEBOUNCE_MS","copySelectedCommands","bind","createNotebook","sendToConsole","renderItem","runInConsole","sendToNotebook","handleSelect","handleSelectionChange","handleSearchChange","handleViewportChange","handleViewportUpdate","itemActions","title","description","icon","shortcut","COPY","action","group","groups","edit","COMMAND_HISTORY","SEND_TO_CONSOLE","menuGroups","send","order","RUN","SEND_TO_NOTEBOOK","historyActions","selectionRequired","pending","searchInputRef","createRef","itemListRef","state","actions","top","bottom","itemCount","size","componentWillUnmount","debouncedSearchChange","cancel","getSelectedCommands","ranges","slice","sort","a","b","add","getSelectedCommandText","then","join","updateActions","selectedRowCount","reduce","count","MAX_SELECTION_COUNT","debug","catch","error","commandText","language","value","index","e","target","itemIndex","isSelected","commandHistoryStorage","focus","current","restoreScrollPosition","render","languageDisplayString","LANGUAGE_MAP","get","ITEM_HEIGHT","medium"],"sources":["../../src/command-history/CommandHistory.tsx"],"sourcesContent":["import React, { ChangeEvent, Component, ReactElement, RefObject } from 'react';\nimport debounce from 'lodash.debounce';\nimport {\n ContextActions,\n ItemList,\n SearchInput,\n GLOBAL_SHORTCUTS,\n RenderItemProps,\n} from '@deephaven/components';\nimport { ViewportData } from '@deephaven/storage';\nimport {\n vsFileCode,\n vsFiles,\n vsNewFile,\n vsPlay,\n vsTerminal,\n} from '@deephaven/icons';\nimport { copyToClipboard, Pending, Range } from '@deephaven/utils';\nimport Log from '@deephaven/log';\nimport CommandHistoryItem from './CommandHistoryItem';\nimport CommandHistoryActions from './CommandHistoryActions';\nimport ConsoleConstants from '../common/ConsoleConstants';\n\nimport './CommandHistory.scss';\nimport CommandHistoryViewportUpdater from './CommandHistoryViewportUpdater';\nimport SHORTCUTS from '../ConsoleShortcuts';\nimport CommandHistoryStorage, {\n CommandHistoryStorageItem,\n CommandHistoryTable,\n} from './CommandHistoryStorage';\nimport { ItemAction, HistoryAction } from './CommandHistoryTypes';\n\nconst log = Log.module('CommandHistory');\n\nexport type CommandHistorySettings = {\n value: string;\n language: string;\n};\ninterface CommandHistoryProps {\n language: string;\n sendToConsole: (command: string, focus?: boolean, execute?: boolean) => void;\n sendToNotebook: (\n settings: CommandHistorySettings,\n forceNewNotebook?: boolean\n ) => void;\n table: CommandHistoryTable;\n commandHistoryStorage: CommandHistoryStorage;\n}\ninterface CommandHistoryState {\n actions: ItemAction[];\n historyActions: HistoryAction[];\n top: number;\n bottom: number;\n itemCount: number;\n items: CommandHistoryStorageItem[];\n offset: number;\n selectedRanges: Range[];\n searchText: string;\n debouncedSearchText: string;\n}\n\nclass CommandHistory extends Component<\n CommandHistoryProps,\n CommandHistoryState\n> {\n static ITEM_HEIGHT = 29;\n\n static MAX_SELECTION_COUNT = 10000;\n\n static SET_SEARCH_DEBOUNCE_MS = 150;\n\n static menuGroups = {\n send: ContextActions.groups.medium + 100,\n };\n\n static getCommandsFromViewport(\n items: CommandHistoryStorageItem[],\n offset: number,\n sortedRanges: Range[]\n ): string[] {\n const commands = [];\n for (let i = 0; i < sortedRanges.length; i += 1) {\n const range = sortedRanges[i];\n for (let j = range[0]; j <= range[1]; j += 1) {\n if (j >= offset && j < offset + items.length) {\n const { name } = items[j - offset];\n commands.push(name);\n }\n }\n }\n return commands;\n }\n\n static async getCommandsFromSnapshot(\n table: CommandHistoryTable,\n sortedRanges: Range[]\n ): Promise<string[]> {\n const items = await table.getSnapshot(sortedRanges);\n return [...items.values()].map(item => item.name);\n }\n\n constructor(props: CommandHistoryProps) {\n super(props);\n\n this.copySelectedCommands = this.copySelectedCommands.bind(this);\n this.createNotebook = this.createNotebook.bind(this);\n this.sendToConsole = this.sendToConsole.bind(this);\n this.renderItem = this.renderItem.bind(this);\n this.runInConsole = this.runInConsole.bind(this);\n this.sendToNotebook = this.sendToNotebook.bind(this);\n this.handleSelect = this.handleSelect.bind(this);\n this.handleSelectionChange = this.handleSelectionChange.bind(this);\n this.handleSearchChange = this.handleSearchChange.bind(this);\n this.handleViewportChange = this.handleViewportChange.bind(this);\n this.handleViewportUpdate = this.handleViewportUpdate.bind(this);\n\n this.itemActions = [\n {\n title: 'Copy Selection',\n description: 'Copy selected commands to clipboard',\n icon: vsFiles,\n shortcut: GLOBAL_SHORTCUTS.COPY,\n action: this.copySelectedCommands,\n group: ContextActions.groups.edit,\n },\n {\n title: 'Send to Console',\n description: 'Open selected commands in the console',\n icon: vsTerminal,\n shortcut: SHORTCUTS.COMMAND_HISTORY.SEND_TO_CONSOLE,\n action: this.sendToConsole,\n group: CommandHistory.menuGroups.send,\n order: 10,\n },\n {\n title: 'Run in Console',\n description: 'Run selected commands in the console',\n icon: vsPlay,\n shortcut: SHORTCUTS.COMMAND_HISTORY.RUN,\n action: this.runInConsole,\n group: CommandHistory.menuGroups.send,\n order: 10,\n },\n {\n title: 'Send to Active Notebook',\n description: 'Open selected commands in a notebook',\n icon: vsFileCode,\n shortcut: SHORTCUTS.COMMAND_HISTORY.SEND_TO_NOTEBOOK,\n action: this.sendToNotebook,\n group: CommandHistory.menuGroups.send,\n order: 20,\n },\n {\n title: 'Send to New Notebook',\n description: 'Open selected commands in a new notebook',\n icon: vsNewFile,\n action: this.createNotebook,\n group: CommandHistory.menuGroups.send,\n order: 30,\n },\n ];\n\n this.historyActions = [\n {\n title: 'Send to Console',\n icon: vsTerminal,\n selectionRequired: true,\n description: 'Open selected commands in the console',\n action: this.sendToConsole,\n },\n {\n title: 'Send to Notebook',\n icon: vsFileCode,\n selectionRequired: true,\n description: 'Open selected commands in a notebook',\n action: this.sendToNotebook,\n },\n ];\n\n this.pending = new Pending();\n this.searchInputRef = React.createRef();\n this.itemListRef = React.createRef();\n\n const { table } = props;\n\n this.state = {\n actions: [],\n historyActions: this.historyActions,\n top: 0,\n bottom: 0,\n itemCount: table.size,\n items: [],\n offset: 0,\n selectedRanges: [],\n searchText: '',\n debouncedSearchText: '',\n };\n }\n\n componentWillUnmount(): void {\n this.debouncedSearchChange.cancel();\n this.pending.cancel();\n }\n\n itemActions: ItemAction[];\n\n historyActions: HistoryAction[];\n\n pending: Pending;\n\n searchInputRef: RefObject<SearchInput>;\n\n itemListRef: React.RefObject<ItemList<CommandHistoryStorageItem>>;\n\n /**\n * Retrieves the selected commands as an array.\n * If they're not within the current viewport, will fetch them from the table\n * @returns Array of selected commands\n */\n async getSelectedCommands(): Promise<string[]> {\n const { items, offset, selectedRanges } = this.state;\n const ranges = selectedRanges.slice().sort((a, b) => a[0] - b[0]);\n\n if (ranges.length === 0) {\n return [];\n }\n if (\n ranges[0][0] >= offset &&\n ranges[ranges.length - 1][1] < offset + items.length\n ) {\n // All ranges are in the current viewport, just copy the data we've already got\n return CommandHistory.getCommandsFromViewport(items, offset, ranges);\n }\n const { table } = this.props;\n return this.pending.add(\n CommandHistory.getCommandsFromSnapshot(table, ranges)\n );\n }\n\n /**\n * Retrieves the text of all the currently selected commands, joined by a new line char\n * @returns The commands joined by \\n char\n */\n getSelectedCommandText(): Promise<string> {\n return this.getSelectedCommands().then(commands => commands.join('\\n'));\n }\n\n updateActions(): void {\n this.setState(state => {\n const { selectedRanges } = state;\n const selectedRowCount = selectedRanges.reduce(\n (count, range) => count + range[1] - range[0] + 1,\n 0\n );\n if (\n selectedRowCount > 0 &&\n selectedRowCount < CommandHistory.MAX_SELECTION_COUNT\n ) {\n log.debug('Updating actions', this.itemActions);\n return { actions: this.itemActions };\n }\n log.debug('Disabling actions', selectedRowCount);\n return { actions: [] };\n });\n }\n\n copySelectedCommands(): void {\n this.getSelectedCommandText().then(copyToClipboard).catch(log.error);\n }\n\n createNotebook(): void {\n this.getSelectedCommandText()\n .then(commandText => {\n const { language, sendToNotebook } = this.props;\n sendToNotebook({ value: commandText, language }, true);\n })\n .catch(log.error);\n }\n\n debouncedSearchChange = debounce((): void => {\n this.setState(({ searchText }) => ({\n debouncedSearchText: searchText,\n // clear selected range, as old selection could be filtered from list\n selectedRanges: [],\n }));\n }, CommandHistory.SET_SEARCH_DEBOUNCE_MS);\n\n sendToNotebook(): void {\n this.getSelectedCommandText()\n .then(commandText => {\n const { language, sendToNotebook } = this.props;\n sendToNotebook({ value: commandText, language });\n })\n .catch(log.error);\n }\n\n sendToConsole(): void {\n const { sendToConsole } = this.props;\n this.getSelectedCommandText().then(sendToConsole).catch(log.error);\n }\n\n runInConsole(): void {\n this.getSelectedCommandText()\n .then(commandText => {\n const { sendToConsole } = this.props;\n sendToConsole(commandText, true, true);\n })\n .catch(log.error);\n }\n\n handleSelect(index: number): void {\n const { sendToConsole } = this.props;\n const { items, offset } = this.state;\n if (index < offset || index >= offset + items.length) {\n log.error('Invalid index!', index);\n return;\n }\n\n const { name } = items[index - offset];\n sendToConsole(name);\n }\n\n handleSelectionChange(selectedRanges: Range[]): void {\n this.setState({ selectedRanges });\n this.updateActions();\n }\n\n handleViewportChange(top: number, bottom: number): void {\n this.setState({ top, bottom });\n }\n\n handleSearchChange(e: ChangeEvent<HTMLInputElement>): void {\n this.setState({ searchText: e.target.value });\n this.debouncedSearchChange();\n }\n\n handleViewportUpdate({\n items,\n offset,\n }: ViewportData<CommandHistoryStorageItem>): void {\n const { table } = this.props;\n const itemCount = table.size;\n this.setState({ items, itemCount, offset });\n }\n\n renderItem({\n item,\n itemIndex,\n isSelected,\n }: RenderItemProps<CommandHistoryStorageItem>): ReactElement {\n const { language, commandHistoryStorage } = this.props;\n return (\n <CommandHistoryItem\n isSelected={isSelected}\n item={item}\n language={language}\n commandHistoryStorage={commandHistoryStorage}\n />\n );\n }\n\n focus(): void {\n if (this.searchInputRef.current) {\n this.searchInputRef.current.focus();\n }\n }\n\n restoreScrollPosition(): void {\n this.itemListRef.current?.restoreScrollPosition();\n }\n\n render(): ReactElement {\n const { language, table } = this.props;\n const {\n actions,\n historyActions,\n searchText,\n debouncedSearchText,\n top,\n bottom,\n items,\n itemCount,\n offset,\n selectedRanges,\n } = this.state;\n const languageDisplayString =\n ConsoleConstants.LANGUAGE_MAP.get(language) ?? '';\n return (\n <div className=\"command-history\">\n <div className=\"command-history-search-bar\">\n <SearchInput\n ref={this.searchInputRef}\n value={searchText}\n placeholder={`${languageDisplayString} Command History`}\n onChange={this.handleSearchChange}\n />\n <CommandHistoryActions\n actions={historyActions}\n hasSelection={selectedRanges.length > 0}\n />\n </div>\n <div className=\"command-history-list\">\n <ItemList\n ref={this.itemListRef}\n itemCount={itemCount}\n items={items}\n offset={offset}\n selectedRanges={selectedRanges}\n onSelect={this.handleSelect}\n onSelectionChange={this.handleSelectionChange}\n onViewportChange={this.handleViewportChange}\n renderItem={this.renderItem}\n rowHeight={CommandHistory.ITEM_HEIGHT}\n isDoubleClickSelect\n isMultiSelect\n isStickyBottom\n />\n <CommandHistoryViewportUpdater\n table={table}\n top={top}\n bottom={bottom}\n search={debouncedSearchText}\n onUpdate={this.handleViewportUpdate}\n />\n <ContextActions actions={actions} />\n </div>\n </div>\n );\n }\n}\n\nexport default CommandHistory;\n"],"mappings":"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"}
1
+ {"version":3,"file":"CommandHistory.js","names":["React","Component","debounce","ContextActions","ItemList","SearchInput","GLOBAL_SHORTCUTS","vsFileCode","vsFiles","vsNewFile","vsPlay","vsTerminal","copyToClipboard","Pending","Log","CommandHistoryItem","CommandHistoryActions","ConsoleConstants","CommandHistoryViewportUpdater","SHORTCUTS","log","module","CommandHistory","getCommandsFromViewport","items","offset","sortedRanges","commands","i","length","range","j","name","push","getCommandsFromSnapshot","table","getSnapshot","values","map","item","constructor","props","setState","searchText","debouncedSearchText","selectedRanges","SET_SEARCH_DEBOUNCE_MS","copySelectedCommands","bind","createNotebook","sendToConsole","renderItem","runInConsole","sendToNotebook","handleSelect","handleSelectionChange","handleSearchChange","handleViewportChange","handleViewportUpdate","itemActions","title","description","icon","shortcut","COPY","action","group","groups","edit","COMMAND_HISTORY","SEND_TO_CONSOLE","menuGroups","send","order","RUN","SEND_TO_NOTEBOOK","historyActions","selectionRequired","pending","searchInputRef","createRef","itemListRef","state","actions","top","bottom","itemCount","size","componentWillUnmount","debouncedSearchChange","cancel","getSelectedCommands","ranges","slice","sort","a","b","add","getSelectedCommandText","then","join","updateActions","selectedRowCount","reduce","count","MAX_SELECTION_COUNT","debug","catch","error","commandText","language","value","index","e","target","itemIndex","isSelected","commandHistoryStorage","focus","current","restoreScrollPosition","render","languageDisplayString","LANGUAGE_MAP","get","ITEM_HEIGHT","medium"],"sources":["../../src/command-history/CommandHistory.tsx"],"sourcesContent":["import React, { ChangeEvent, Component, ReactElement, RefObject } from 'react';\nimport debounce from 'lodash.debounce';\nimport {\n ContextActions,\n ItemList,\n SearchInput,\n GLOBAL_SHORTCUTS,\n RenderItemProps,\n} from '@deephaven/components';\nimport { ViewportData } from '@deephaven/storage';\nimport {\n vsFileCode,\n vsFiles,\n vsNewFile,\n vsPlay,\n vsTerminal,\n} from '@deephaven/icons';\nimport { copyToClipboard, Pending, Range } from '@deephaven/utils';\nimport Log from '@deephaven/log';\nimport CommandHistoryItem from './CommandHistoryItem';\nimport CommandHistoryActions from './CommandHistoryActions';\nimport ConsoleConstants from '../common/ConsoleConstants';\n\nimport './CommandHistory.scss';\nimport CommandHistoryViewportUpdater from './CommandHistoryViewportUpdater';\nimport SHORTCUTS from '../ConsoleShortcuts';\nimport CommandHistoryStorage, {\n CommandHistoryStorageItem,\n CommandHistoryTable,\n} from './CommandHistoryStorage';\nimport { ItemAction, HistoryAction } from './CommandHistoryTypes';\n\nconst log = Log.module('CommandHistory');\n\nexport type CommandHistorySettings = {\n value: string;\n language: string;\n};\ninterface CommandHistoryProps {\n language: string;\n sendToConsole: (command: string, focus?: boolean, execute?: boolean) => void;\n sendToNotebook: (\n settings: CommandHistorySettings,\n forceNewNotebook?: boolean\n ) => void;\n table: CommandHistoryTable;\n commandHistoryStorage: CommandHistoryStorage;\n}\ninterface CommandHistoryState {\n actions: ItemAction[];\n historyActions: HistoryAction[];\n top: number;\n bottom: number;\n itemCount: number;\n items: CommandHistoryStorageItem[];\n offset: number;\n selectedRanges: Range[];\n searchText: string;\n debouncedSearchText: string;\n}\n\nclass CommandHistory extends Component<\n CommandHistoryProps,\n CommandHistoryState\n> {\n static ITEM_HEIGHT = 29;\n\n static MAX_SELECTION_COUNT = 10000;\n\n static SET_SEARCH_DEBOUNCE_MS = 150;\n\n static menuGroups = {\n send: ContextActions.groups.medium + 100,\n };\n\n static getCommandsFromViewport(\n items: CommandHistoryStorageItem[],\n offset: number,\n sortedRanges: Range[]\n ): string[] {\n const commands = [];\n for (let i = 0; i < sortedRanges.length; i += 1) {\n const range = sortedRanges[i];\n for (let j = range[0]; j <= range[1]; j += 1) {\n if (j >= offset && j < offset + items.length) {\n const { name } = items[j - offset];\n commands.push(name);\n }\n }\n }\n return commands;\n }\n\n static async getCommandsFromSnapshot(\n table: CommandHistoryTable,\n sortedRanges: Range[]\n ): Promise<string[]> {\n const items = await table.getSnapshot(sortedRanges);\n return [...items.values()].map(item => item.name);\n }\n\n constructor(props: CommandHistoryProps) {\n super(props);\n\n this.copySelectedCommands = this.copySelectedCommands.bind(this);\n this.createNotebook = this.createNotebook.bind(this);\n this.sendToConsole = this.sendToConsole.bind(this);\n this.renderItem = this.renderItem.bind(this);\n this.runInConsole = this.runInConsole.bind(this);\n this.sendToNotebook = this.sendToNotebook.bind(this);\n this.handleSelect = this.handleSelect.bind(this);\n this.handleSelectionChange = this.handleSelectionChange.bind(this);\n this.handleSearchChange = this.handleSearchChange.bind(this);\n this.handleViewportChange = this.handleViewportChange.bind(this);\n this.handleViewportUpdate = this.handleViewportUpdate.bind(this);\n\n this.itemActions = [\n {\n title: 'Copy Selection',\n description: 'Copy selected commands to clipboard',\n icon: vsFiles,\n shortcut: GLOBAL_SHORTCUTS.COPY,\n action: this.copySelectedCommands,\n group: ContextActions.groups.edit,\n },\n {\n title: 'Send to Console',\n description: 'Open selected commands in the console',\n icon: vsTerminal,\n shortcut: SHORTCUTS.COMMAND_HISTORY.SEND_TO_CONSOLE,\n action: this.sendToConsole,\n group: CommandHistory.menuGroups.send,\n order: 10,\n },\n {\n title: 'Run in Console',\n description: 'Run selected commands in the console',\n icon: vsPlay,\n shortcut: SHORTCUTS.COMMAND_HISTORY.RUN,\n action: this.runInConsole,\n group: CommandHistory.menuGroups.send,\n order: 10,\n },\n {\n title: 'Send to Active Notebook',\n description: 'Open selected commands in a notebook',\n icon: vsFileCode,\n shortcut: SHORTCUTS.COMMAND_HISTORY.SEND_TO_NOTEBOOK,\n action: this.sendToNotebook,\n group: CommandHistory.menuGroups.send,\n order: 20,\n },\n {\n title: 'Send to New Notebook',\n description: 'Open selected commands in a new notebook',\n icon: vsNewFile,\n action: this.createNotebook,\n group: CommandHistory.menuGroups.send,\n order: 30,\n },\n ];\n\n this.historyActions = [\n {\n title: 'Send to Console',\n icon: vsTerminal,\n selectionRequired: true,\n description: 'Open selected commands in the console',\n action: this.sendToConsole,\n },\n {\n title: 'Send to Notebook',\n icon: vsFileCode,\n selectionRequired: true,\n description: 'Open selected commands in a notebook',\n action: this.sendToNotebook,\n },\n ];\n\n this.pending = new Pending();\n this.searchInputRef = React.createRef();\n this.itemListRef = React.createRef();\n\n const { table } = props;\n\n this.state = {\n actions: [],\n historyActions: this.historyActions,\n top: 0,\n bottom: 0,\n itemCount: table.size,\n items: [],\n offset: 0,\n selectedRanges: [],\n searchText: '',\n debouncedSearchText: '',\n };\n }\n\n componentWillUnmount(): void {\n this.debouncedSearchChange.cancel();\n this.pending.cancel();\n }\n\n itemActions: ItemAction[];\n\n historyActions: HistoryAction[];\n\n pending: Pending;\n\n searchInputRef: RefObject<SearchInput>;\n\n itemListRef: React.RefObject<ItemList<CommandHistoryStorageItem>>;\n\n /**\n * Retrieves the selected commands as an array.\n * If they're not within the current viewport, will fetch them from the table\n * @returns Array of selected commands\n */\n async getSelectedCommands(): Promise<string[]> {\n const { items, offset, selectedRanges } = this.state;\n const ranges = selectedRanges.slice().sort((a, b) => a[0] - b[0]);\n\n if (ranges.length === 0) {\n return [];\n }\n if (\n ranges[0][0] >= offset &&\n ranges[ranges.length - 1][1] < offset + items.length\n ) {\n // All ranges are in the current viewport, just copy the data we've already got\n return CommandHistory.getCommandsFromViewport(items, offset, ranges);\n }\n const { table } = this.props;\n return this.pending.add(\n CommandHistory.getCommandsFromSnapshot(table, ranges)\n );\n }\n\n /**\n * Retrieves the text of all the currently selected commands, joined by a new line char\n * @returns The commands joined by \\n char\n */\n getSelectedCommandText(): Promise<string> {\n return this.getSelectedCommands().then(commands => commands.join('\\n'));\n }\n\n updateActions(): void {\n this.setState(state => {\n const { selectedRanges } = state;\n const selectedRowCount = selectedRanges.reduce(\n (count, range) => count + range[1] - range[0] + 1,\n 0\n );\n if (\n selectedRowCount > 0 &&\n selectedRowCount < CommandHistory.MAX_SELECTION_COUNT\n ) {\n log.debug('Updating actions', this.itemActions);\n return { actions: this.itemActions };\n }\n log.debug('Disabling actions', selectedRowCount);\n return { actions: [] };\n });\n }\n\n copySelectedCommands(): void {\n this.getSelectedCommandText().then(copyToClipboard).catch(log.error);\n }\n\n createNotebook(): void {\n this.getSelectedCommandText()\n .then(commandText => {\n const { language, sendToNotebook } = this.props;\n sendToNotebook({ value: commandText, language }, true);\n })\n .catch(log.error);\n }\n\n debouncedSearchChange = debounce((): void => {\n this.setState(({ searchText }) => ({\n debouncedSearchText: searchText,\n // clear selected range, as old selection could be filtered from list\n selectedRanges: [],\n }));\n }, CommandHistory.SET_SEARCH_DEBOUNCE_MS);\n\n sendToNotebook(): void {\n this.getSelectedCommandText()\n .then(commandText => {\n const { language, sendToNotebook } = this.props;\n sendToNotebook({ value: commandText, language });\n })\n .catch(log.error);\n }\n\n sendToConsole(): void {\n const { sendToConsole } = this.props;\n this.getSelectedCommandText().then(sendToConsole).catch(log.error);\n }\n\n runInConsole(): void {\n this.getSelectedCommandText()\n .then(commandText => {\n const { sendToConsole } = this.props;\n sendToConsole(commandText, true, true);\n })\n .catch(log.error);\n }\n\n handleSelect(index: number): void {\n const { sendToConsole } = this.props;\n const { items, offset } = this.state;\n if (index < offset || index >= offset + items.length) {\n log.error('Invalid index!', index);\n return;\n }\n\n const { name } = items[index - offset];\n sendToConsole(name);\n }\n\n handleSelectionChange(selectedRanges: Range[]): void {\n this.setState({ selectedRanges });\n this.updateActions();\n }\n\n handleViewportChange(top: number, bottom: number): void {\n this.setState({ top, bottom });\n }\n\n handleSearchChange(e: ChangeEvent<HTMLInputElement>): void {\n this.setState({ searchText: e.target.value });\n this.debouncedSearchChange();\n }\n\n handleViewportUpdate({\n items,\n offset,\n }: ViewportData<CommandHistoryStorageItem>): void {\n const { table } = this.props;\n const itemCount = table.size;\n this.setState({ items, itemCount, offset });\n }\n\n renderItem({\n item,\n itemIndex,\n isSelected,\n }: RenderItemProps<CommandHistoryStorageItem>): ReactElement {\n const { language, commandHistoryStorage } = this.props;\n return (\n <CommandHistoryItem\n isSelected={isSelected}\n item={item}\n language={language}\n commandHistoryStorage={commandHistoryStorage}\n />\n );\n }\n\n focus(): void {\n if (this.searchInputRef.current) {\n this.searchInputRef.current.focus();\n }\n }\n\n restoreScrollPosition(): void {\n this.itemListRef.current?.restoreScrollPosition();\n }\n\n render(): ReactElement {\n const { language, table } = this.props;\n const {\n actions,\n historyActions,\n searchText,\n debouncedSearchText,\n top,\n bottom,\n items,\n itemCount,\n offset,\n selectedRanges,\n } = this.state;\n const languageDisplayString =\n ConsoleConstants.LANGUAGE_MAP.get(language) ?? '';\n return (\n <div className=\"command-history\">\n <div className=\"command-history-search-bar\">\n <SearchInput\n ref={this.searchInputRef}\n value={searchText}\n placeholder={`${languageDisplayString} Command History`}\n onChange={this.handleSearchChange}\n />\n <CommandHistoryActions\n actions={historyActions}\n hasSelection={selectedRanges.length > 0}\n />\n </div>\n <div className=\"command-history-list\">\n <ItemList\n ref={this.itemListRef}\n itemCount={itemCount}\n items={items}\n offset={offset}\n selectedRanges={selectedRanges}\n onSelect={this.handleSelect}\n onSelectionChange={this.handleSelectionChange}\n onViewportChange={this.handleViewportChange}\n renderItem={this.renderItem}\n rowHeight={CommandHistory.ITEM_HEIGHT}\n isDoubleClickSelect\n isMultiSelect\n isStickyBottom\n />\n <CommandHistoryViewportUpdater\n table={table}\n top={top}\n bottom={bottom}\n search={debouncedSearchText}\n onUpdate={this.handleViewportUpdate}\n />\n <ContextActions actions={actions} />\n </div>\n </div>\n );\n }\n}\n\nexport default CommandHistory;\n"],"mappings":";;;;;AAAA,OAAOA,KAAK,IAAiBC,SAAS,QAAiC,OAAO;AAC9E,OAAOC,QAAQ,MAAM,iBAAiB;AACtC,SACEC,cAAc,EACdC,QAAQ,EACRC,WAAW,EACXC,gBAAgB,QAEX,uBAAuB;AAE9B,SACEC,UAAU,EACVC,OAAO,EACPC,SAAS,EACTC,MAAM,EACNC,UAAU,QACL,kBAAkB;AACzB,SAASC,eAAe,EAAEC,OAAO,QAAe,kBAAkB;AAClE,OAAOC,GAAG,MAAM,gBAAgB;AAAC,OAC1BC,kBAAkB;AAAA,OAClBC,qBAAqB;AAAA,OACrBC,gBAAgB;AAAA;AAAA,OAGhBC,6BAA6B;AAAA,OAC7BC,SAAS;AAAA;AAAA;AAOhB,IAAMC,GAAG,GAAGN,GAAG,CAACO,MAAM,CAAC,gBAAgB,CAAC;AA6BxC,MAAMC,cAAc,SAASrB,SAAS,CAGpC;EAWA,OAAOsB,uBAAuB,CAC5BC,KAAkC,EAClCC,MAAc,EACdC,YAAqB,EACX;IACV,IAAMC,QAAQ,GAAG,EAAE;IACnB,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGF,YAAY,CAACG,MAAM,EAAED,CAAC,IAAI,CAAC,EAAE;MAC/C,IAAME,KAAK,GAAGJ,YAAY,CAACE,CAAC,CAAC;MAC7B,KAAK,IAAIG,CAAC,GAAGD,KAAK,CAAC,CAAC,CAAC,EAAEC,CAAC,IAAID,KAAK,CAAC,CAAC,CAAC,EAAEC,CAAC,IAAI,CAAC,EAAE;QAC5C,IAAIA,CAAC,IAAIN,MAAM,IAAIM,CAAC,GAAGN,MAAM,GAAGD,KAAK,CAACK,MAAM,EAAE;UAC5C,IAAM;YAAEG;UAAK,CAAC,GAAGR,KAAK,CAACO,CAAC,GAAGN,MAAM,CAAC;UAClCE,QAAQ,CAACM,IAAI,CAACD,IAAI,CAAC;QACrB;MACF;IACF;IACA,OAAOL,QAAQ;EACjB;EAEA,OAAaO,uBAAuB,CAClCC,KAA0B,EAC1BT,YAAqB,EACF;IAAA;MACnB,IAAMF,KAAK,SAASW,KAAK,CAACC,WAAW,CAACV,YAAY,CAAC;MACnD,OAAO,CAAC,GAAGF,KAAK,CAACa,MAAM,EAAE,CAAC,CAACC,GAAG,CAACC,IAAI,IAAIA,IAAI,CAACP,IAAI,CAAC;IAAC;EACpD;EAEAQ,WAAW,CAACC,KAA0B,EAAE;IACtC,KAAK,CAACA,KAAK,CAAC;IAAC;IAAA;IAAA;IAAA;IAAA;IAAA,+CAiLSvC,QAAQ,CAAC,MAAY;MAC3C,IAAI,CAACwC,QAAQ,CAAC;QAAA,IAAC;UAAEC;QAAW,CAAC;QAAA,OAAM;UACjCC,mBAAmB,EAAED,UAAU;UAC/B;UACAE,cAAc,EAAE;QAClB,CAAC;MAAA,CAAC,CAAC;IACL,CAAC,EAAEvB,cAAc,CAACwB,sBAAsB,CAAC;IArLvC,IAAI,CAACC,oBAAoB,GAAG,IAAI,CAACA,oBAAoB,CAACC,IAAI,CAAC,IAAI,CAAC;IAChE,IAAI,CAACC,cAAc,GAAG,IAAI,CAACA,cAAc,CAACD,IAAI,CAAC,IAAI,CAAC;IACpD,IAAI,CAACE,aAAa,GAAG,IAAI,CAACA,aAAa,CAACF,IAAI,CAAC,IAAI,CAAC;IAClD,IAAI,CAACG,UAAU,GAAG,IAAI,CAACA,UAAU,CAACH,IAAI,CAAC,IAAI,CAAC;IAC5C,IAAI,CAACI,YAAY,GAAG,IAAI,CAACA,YAAY,CAACJ,IAAI,CAAC,IAAI,CAAC;IAChD,IAAI,CAACK,cAAc,GAAG,IAAI,CAACA,cAAc,CAACL,IAAI,CAAC,IAAI,CAAC;IACpD,IAAI,CAACM,YAAY,GAAG,IAAI,CAACA,YAAY,CAACN,IAAI,CAAC,IAAI,CAAC;IAChD,IAAI,CAACO,qBAAqB,GAAG,IAAI,CAACA,qBAAqB,CAACP,IAAI,CAAC,IAAI,CAAC;IAClE,IAAI,CAACQ,kBAAkB,GAAG,IAAI,CAACA,kBAAkB,CAACR,IAAI,CAAC,IAAI,CAAC;IAC5D,IAAI,CAACS,oBAAoB,GAAG,IAAI,CAACA,oBAAoB,CAACT,IAAI,CAAC,IAAI,CAAC;IAChE,IAAI,CAACU,oBAAoB,GAAG,IAAI,CAACA,oBAAoB,CAACV,IAAI,CAAC,IAAI,CAAC;IAEhE,IAAI,CAACW,WAAW,GAAG,CACjB;MACEC,KAAK,EAAE,gBAAgB;MACvBC,WAAW,EAAE,qCAAqC;MAClDC,IAAI,EAAEtD,OAAO;MACbuD,QAAQ,EAAEzD,gBAAgB,CAAC0D,IAAI;MAC/BC,MAAM,EAAE,IAAI,CAAClB,oBAAoB;MACjCmB,KAAK,EAAE/D,cAAc,CAACgE,MAAM,CAACC;IAC/B,CAAC,EACD;MACER,KAAK,EAAE,iBAAiB;MACxBC,WAAW,EAAE,uCAAuC;MACpDC,IAAI,EAAEnD,UAAU;MAChBoD,QAAQ,EAAE5C,SAAS,CAACkD,eAAe,CAACC,eAAe;MACnDL,MAAM,EAAE,IAAI,CAACf,aAAa;MAC1BgB,KAAK,EAAE5C,cAAc,CAACiD,UAAU,CAACC,IAAI;MACrCC,KAAK,EAAE;IACT,CAAC,EACD;MACEb,KAAK,EAAE,gBAAgB;MACvBC,WAAW,EAAE,sCAAsC;MACnDC,IAAI,EAAEpD,MAAM;MACZqD,QAAQ,EAAE5C,SAAS,CAACkD,eAAe,CAACK,GAAG;MACvCT,MAAM,EAAE,IAAI,CAACb,YAAY;MACzBc,KAAK,EAAE5C,cAAc,CAACiD,UAAU,CAACC,IAAI;MACrCC,KAAK,EAAE;IACT,CAAC,EACD;MACEb,KAAK,EAAE,yBAAyB;MAChCC,WAAW,EAAE,sCAAsC;MACnDC,IAAI,EAAEvD,UAAU;MAChBwD,QAAQ,EAAE5C,SAAS,CAACkD,eAAe,CAACM,gBAAgB;MACpDV,MAAM,EAAE,IAAI,CAACZ,cAAc;MAC3Ba,KAAK,EAAE5C,cAAc,CAACiD,UAAU,CAACC,IAAI;MACrCC,KAAK,EAAE;IACT,CAAC,EACD;MACEb,KAAK,EAAE,sBAAsB;MAC7BC,WAAW,EAAE,0CAA0C;MACvDC,IAAI,EAAErD,SAAS;MACfwD,MAAM,EAAE,IAAI,CAAChB,cAAc;MAC3BiB,KAAK,EAAE5C,cAAc,CAACiD,UAAU,CAACC,IAAI;MACrCC,KAAK,EAAE;IACT,CAAC,CACF;IAED,IAAI,CAACG,cAAc,GAAG,CACpB;MACEhB,KAAK,EAAE,iBAAiB;MACxBE,IAAI,EAAEnD,UAAU;MAChBkE,iBAAiB,EAAE,IAAI;MACvBhB,WAAW,EAAE,uCAAuC;MACpDI,MAAM,EAAE,IAAI,CAACf;IACf,CAAC,EACD;MACEU,KAAK,EAAE,kBAAkB;MACzBE,IAAI,EAAEvD,UAAU;MAChBsE,iBAAiB,EAAE,IAAI;MACvBhB,WAAW,EAAE,sCAAsC;MACnDI,MAAM,EAAE,IAAI,CAACZ;IACf,CAAC,CACF;IAED,IAAI,CAACyB,OAAO,GAAG,IAAIjE,OAAO,EAAE;IAC5B,IAAI,CAACkE,cAAc,gBAAG/E,KAAK,CAACgF,SAAS,EAAE;IACvC,IAAI,CAACC,WAAW,gBAAGjF,KAAK,CAACgF,SAAS,EAAE;IAEpC,IAAM;MAAE7C;IAAM,CAAC,GAAGM,KAAK;IAEvB,IAAI,CAACyC,KAAK,GAAG;MACXC,OAAO,EAAE,EAAE;MACXP,cAAc,EAAE,IAAI,CAACA,cAAc;MACnCQ,GAAG,EAAE,CAAC;MACNC,MAAM,EAAE,CAAC;MACTC,SAAS,EAAEnD,KAAK,CAACoD,IAAI;MACrB/D,KAAK,EAAE,EAAE;MACTC,MAAM,EAAE,CAAC;MACToB,cAAc,EAAE,EAAE;MAClBF,UAAU,EAAE,EAAE;MACdC,mBAAmB,EAAE;IACvB,CAAC;EACH;EAEA4C,oBAAoB,GAAS;IAC3B,IAAI,CAACC,qBAAqB,CAACC,MAAM,EAAE;IACnC,IAAI,CAACZ,OAAO,CAACY,MAAM,EAAE;EACvB;EAYA;AACF;AACA;AACA;AACA;EACQC,mBAAmB,GAAsB;IAAA;IAAA;MAC7C,IAAM;QAAEnE,KAAK;QAAEC,MAAM;QAAEoB;MAAe,CAAC,GAAG,KAAI,CAACqC,KAAK;MACpD,IAAMU,MAAM,GAAG/C,cAAc,CAACgD,KAAK,EAAE,CAACC,IAAI,CAAC,CAACC,CAAC,EAAEC,CAAC,KAAKD,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC;MAEjE,IAAIJ,MAAM,CAAC/D,MAAM,KAAK,CAAC,EAAE;QACvB,OAAO,EAAE;MACX;MACA,IACE+D,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAInE,MAAM,IACtBmE,MAAM,CAACA,MAAM,CAAC/D,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGJ,MAAM,GAAGD,KAAK,CAACK,MAAM,EACpD;QACA;QACA,OAAOP,cAAc,CAACC,uBAAuB,CAACC,KAAK,EAAEC,MAAM,EAAEmE,MAAM,CAAC;MACtE;MACA,IAAM;QAAEzD;MAAM,CAAC,GAAG,KAAI,CAACM,KAAK;MAC5B,OAAO,KAAI,CAACqC,OAAO,CAACmB,GAAG,CACrB3E,cAAc,CAACY,uBAAuB,CAACC,KAAK,EAAEyD,MAAM,CAAC,CACtD;IAAC;EACJ;;EAEA;AACF;AACA;AACA;EACEM,sBAAsB,GAAoB;IACxC,OAAO,IAAI,CAACP,mBAAmB,EAAE,CAACQ,IAAI,CAACxE,QAAQ,IAAIA,QAAQ,CAACyE,IAAI,CAAC,IAAI,CAAC,CAAC;EACzE;EAEAC,aAAa,GAAS;IACpB,IAAI,CAAC3D,QAAQ,CAACwC,KAAK,IAAI;MACrB,IAAM;QAAErC;MAAe,CAAC,GAAGqC,KAAK;MAChC,IAAMoB,gBAAgB,GAAGzD,cAAc,CAAC0D,MAAM,CAC5C,CAACC,KAAK,EAAE1E,KAAK,KAAK0E,KAAK,GAAG1E,KAAK,CAAC,CAAC,CAAC,GAAGA,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,EACjD,CAAC,CACF;MACD,IACEwE,gBAAgB,GAAG,CAAC,IACpBA,gBAAgB,GAAGhF,cAAc,CAACmF,mBAAmB,EACrD;QACArF,GAAG,CAACsF,KAAK,CAAC,kBAAkB,EAAE,IAAI,CAAC/C,WAAW,CAAC;QAC/C,OAAO;UAAEwB,OAAO,EAAE,IAAI,CAACxB;QAAY,CAAC;MACtC;MACAvC,GAAG,CAACsF,KAAK,CAAC,mBAAmB,EAAEJ,gBAAgB,CAAC;MAChD,OAAO;QAAEnB,OAAO,EAAE;MAAG,CAAC;IACxB,CAAC,CAAC;EACJ;EAEApC,oBAAoB,GAAS;IAC3B,IAAI,CAACmD,sBAAsB,EAAE,CAACC,IAAI,CAACvF,eAAe,CAAC,CAAC+F,KAAK,CAACvF,GAAG,CAACwF,KAAK,CAAC;EACtE;EAEA3D,cAAc,GAAS;IACrB,IAAI,CAACiD,sBAAsB,EAAE,CAC1BC,IAAI,CAACU,WAAW,IAAI;MACnB,IAAM;QAAEC,QAAQ;QAAEzD;MAAe,CAAC,GAAG,IAAI,CAACZ,KAAK;MAC/CY,cAAc,CAAC;QAAE0D,KAAK,EAAEF,WAAW;QAAEC;MAAS,CAAC,EAAE,IAAI,CAAC;IACxD,CAAC,CAAC,CACDH,KAAK,CAACvF,GAAG,CAACwF,KAAK,CAAC;EACrB;EAUAvD,cAAc,GAAS;IACrB,IAAI,CAAC6C,sBAAsB,EAAE,CAC1BC,IAAI,CAACU,WAAW,IAAI;MACnB,IAAM;QAAEC,QAAQ;QAAEzD;MAAe,CAAC,GAAG,IAAI,CAACZ,KAAK;MAC/CY,cAAc,CAAC;QAAE0D,KAAK,EAAEF,WAAW;QAAEC;MAAS,CAAC,CAAC;IAClD,CAAC,CAAC,CACDH,KAAK,CAACvF,GAAG,CAACwF,KAAK,CAAC;EACrB;EAEA1D,aAAa,GAAS;IACpB,IAAM;MAAEA;IAAc,CAAC,GAAG,IAAI,CAACT,KAAK;IACpC,IAAI,CAACyD,sBAAsB,EAAE,CAACC,IAAI,CAACjD,aAAa,CAAC,CAACyD,KAAK,CAACvF,GAAG,CAACwF,KAAK,CAAC;EACpE;EAEAxD,YAAY,GAAS;IACnB,IAAI,CAAC8C,sBAAsB,EAAE,CAC1BC,IAAI,CAACU,WAAW,IAAI;MACnB,IAAM;QAAE3D;MAAc,CAAC,GAAG,IAAI,CAACT,KAAK;MACpCS,aAAa,CAAC2D,WAAW,EAAE,IAAI,EAAE,IAAI,CAAC;IACxC,CAAC,CAAC,CACDF,KAAK,CAACvF,GAAG,CAACwF,KAAK,CAAC;EACrB;EAEAtD,YAAY,CAAC0D,KAAa,EAAQ;IAChC,IAAM;MAAE9D;IAAc,CAAC,GAAG,IAAI,CAACT,KAAK;IACpC,IAAM;MAAEjB,KAAK;MAAEC;IAAO,CAAC,GAAG,IAAI,CAACyD,KAAK;IACpC,IAAI8B,KAAK,GAAGvF,MAAM,IAAIuF,KAAK,IAAIvF,MAAM,GAAGD,KAAK,CAACK,MAAM,EAAE;MACpDT,GAAG,CAACwF,KAAK,CAAC,gBAAgB,EAAEI,KAAK,CAAC;MAClC;IACF;IAEA,IAAM;MAAEhF;IAAK,CAAC,GAAGR,KAAK,CAACwF,KAAK,GAAGvF,MAAM,CAAC;IACtCyB,aAAa,CAAClB,IAAI,CAAC;EACrB;EAEAuB,qBAAqB,CAACV,cAAuB,EAAQ;IACnD,IAAI,CAACH,QAAQ,CAAC;MAAEG;IAAe,CAAC,CAAC;IACjC,IAAI,CAACwD,aAAa,EAAE;EACtB;EAEA5C,oBAAoB,CAAC2B,GAAW,EAAEC,MAAc,EAAQ;IACtD,IAAI,CAAC3C,QAAQ,CAAC;MAAE0C,GAAG;MAAEC;IAAO,CAAC,CAAC;EAChC;EAEA7B,kBAAkB,CAACyD,CAAgC,EAAQ;IACzD,IAAI,CAACvE,QAAQ,CAAC;MAAEC,UAAU,EAAEsE,CAAC,CAACC,MAAM,CAACH;IAAM,CAAC,CAAC;IAC7C,IAAI,CAACtB,qBAAqB,EAAE;EAC9B;EAEA/B,oBAAoB,QAG8B;IAAA,IAH7B;MACnBlC,KAAK;MACLC;IACuC,CAAC;IACxC,IAAM;MAAEU;IAAM,CAAC,GAAG,IAAI,CAACM,KAAK;IAC5B,IAAM6C,SAAS,GAAGnD,KAAK,CAACoD,IAAI;IAC5B,IAAI,CAAC7C,QAAQ,CAAC;MAAElB,KAAK;MAAE8D,SAAS;MAAE7D;IAAO,CAAC,CAAC;EAC7C;EAEA0B,UAAU,QAImD;IAAA,IAJlD;MACTZ,IAAI;MACJ4E,SAAS;MACTC;IAC0C,CAAC;IAC3C,IAAM;MAAEN,QAAQ;MAAEO;IAAsB,CAAC,GAAG,IAAI,CAAC5E,KAAK;IACtD,oBACE,KAAC,kBAAkB;MACjB,UAAU,EAAE2E,UAAW;MACvB,IAAI,EAAE7E,IAAK;MACX,QAAQ,EAAEuE,QAAS;MACnB,qBAAqB,EAAEO;IAAsB,EAC7C;EAEN;EAEAC,KAAK,GAAS;IACZ,IAAI,IAAI,CAACvC,cAAc,CAACwC,OAAO,EAAE;MAC/B,IAAI,CAACxC,cAAc,CAACwC,OAAO,CAACD,KAAK,EAAE;IACrC;EACF;EAEAE,qBAAqB,GAAS;IAAA;IAC5B,6BAAI,CAACvC,WAAW,CAACsC,OAAO,0DAAxB,sBAA0BC,qBAAqB,EAAE;EACnD;EAEAC,MAAM,GAAiB;IAAA;IACrB,IAAM;MAAEX,QAAQ;MAAE3E;IAAM,CAAC,GAAG,IAAI,CAACM,KAAK;IACtC,IAAM;MACJ0C,OAAO;MACPP,cAAc;MACdjC,UAAU;MACVC,mBAAmB;MACnBwC,GAAG;MACHC,MAAM;MACN7D,KAAK;MACL8D,SAAS;MACT7D,MAAM;MACNoB;IACF,CAAC,GAAG,IAAI,CAACqC,KAAK;IACd,IAAMwC,qBAAqB,4BACzBzG,gBAAgB,CAAC0G,YAAY,CAACC,GAAG,CAACd,QAAQ,CAAC,yEAAI,EAAE;IACnD,oBACE;MAAK,SAAS,EAAC,iBAAiB;MAAA,wBAC9B;QAAK,SAAS,EAAC,4BAA4B;QAAA,wBACzC,KAAC,WAAW;UACV,GAAG,EAAE,IAAI,CAAC/B,cAAe;UACzB,KAAK,EAAEpC,UAAW;UAClB,WAAW,YAAK+E,qBAAqB,qBAAmB;UACxD,QAAQ,EAAE,IAAI,CAAClE;QAAmB,EAClC,eACF,KAAC,qBAAqB;UACpB,OAAO,EAAEoB,cAAe;UACxB,YAAY,EAAE/B,cAAc,CAAChB,MAAM,GAAG;QAAE,EACxC;MAAA,EACE,eACN;QAAK,SAAS,EAAC,sBAAsB;QAAA,wBACnC,KAAC,QAAQ;UACP,GAAG,EAAE,IAAI,CAACoD,WAAY;UACtB,SAAS,EAAEK,SAAU;UACrB,KAAK,EAAE9D,KAAM;UACb,MAAM,EAAEC,MAAO;UACf,cAAc,EAAEoB,cAAe;UAC/B,QAAQ,EAAE,IAAI,CAACS,YAAa;UAC5B,iBAAiB,EAAE,IAAI,CAACC,qBAAsB;UAC9C,gBAAgB,EAAE,IAAI,CAACE,oBAAqB;UAC5C,UAAU,EAAE,IAAI,CAACN,UAAW;UAC5B,SAAS,EAAE7B,cAAc,CAACuG,WAAY;UACtC,mBAAmB;UACnB,aAAa;UACb,cAAc;QAAA,EACd,eACF,KAAC,6BAA6B;UAC5B,KAAK,EAAE1F,KAAM;UACb,GAAG,EAAEiD,GAAI;UACT,MAAM,EAAEC,MAAO;UACf,MAAM,EAAEzC,mBAAoB;UAC5B,QAAQ,EAAE,IAAI,CAACc;QAAqB,EACpC,eACF,KAAC,cAAc;UAAC,OAAO,EAAEyB;QAAQ,EAAG;MAAA,EAChC;IAAA,EACF;EAEV;AACF;AAAC,gBAhXK7D,cAAc,iBAIG,EAAE;AAAA,gBAJnBA,cAAc,yBAMW,KAAK;AAAA,gBAN9BA,cAAc,4BAQc,GAAG;AAAA,gBAR/BA,cAAc,gBAUE;EAClBkD,IAAI,EAAErE,cAAc,CAACgE,MAAM,CAAC2D,MAAM,GAAG;AACvC,CAAC;AAsWH,eAAexG,cAAc"}
@@ -4,24 +4,27 @@ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
4
4
  import { Button } from '@deephaven/components';
5
5
  import { vsArrowLeft, vsCircleLargeFilled } from '@deephaven/icons';
6
6
  import "./CommandHistoryActions.css";
7
+ import { jsx as _jsx } from "react/jsx-runtime";
8
+ import { jsxs as _jsxs } from "react/jsx-runtime";
7
9
  class CommandHistoryActions extends Component {
8
10
  static itemKey(i, item) {
9
11
  return "".concat(item.title);
10
12
  }
11
13
  static renderContent(item) {
12
14
  if (item.selectionRequired !== undefined && item.selectionRequired) {
13
- return /*#__PURE__*/React.createElement("div", {
14
- className: "fa-md fa-layers"
15
- }, /*#__PURE__*/React.createElement(FontAwesomeIcon, {
16
- icon: vsCircleLargeFilled,
17
- mask: item.icon,
18
- transform: "right-5 down-5 shrink-4"
19
- }), /*#__PURE__*/React.createElement(FontAwesomeIcon, {
20
- icon: vsArrowLeft,
21
- transform: "shrink-3 right-7 down-6"
22
- }));
15
+ return /*#__PURE__*/_jsxs("div", {
16
+ className: "fa-md fa-layers",
17
+ children: [/*#__PURE__*/_jsx(FontAwesomeIcon, {
18
+ icon: vsCircleLargeFilled,
19
+ mask: item.icon,
20
+ transform: "right-5 down-5 shrink-4"
21
+ }), /*#__PURE__*/_jsx(FontAwesomeIcon, {
22
+ icon: vsArrowLeft,
23
+ transform: "shrink-3 right-7 down-6"
24
+ })]
25
+ });
23
26
  }
24
- return /*#__PURE__*/React.createElement(FontAwesomeIcon, {
27
+ return /*#__PURE__*/_jsx(FontAwesomeIcon, {
25
28
  icon: item.icon
26
29
  });
27
30
  }
@@ -30,17 +33,17 @@ class CommandHistoryActions extends Component {
30
33
  actions,
31
34
  hasSelection
32
35
  } = this.props;
33
- return /*#__PURE__*/React.createElement("div", {
34
- className: "command-history-actions"
35
- }, actions.map((item, index) => /*#__PURE__*/React.createElement(Button, {
36
- kind: "inline",
37
- className: classNames(item.className),
38
- key: CommandHistoryActions.itemKey(index, item),
39
- onClick: item.action,
40
- tooltip: item.description,
41
- disabled: item.selectionRequired !== undefined && item.selectionRequired && !hasSelection,
42
- icon: CommandHistoryActions.renderContent(item)
43
- })));
36
+ return /*#__PURE__*/_jsx("div", {
37
+ className: "command-history-actions",
38
+ children: actions.map((item, index) => /*#__PURE__*/_jsx(Button, {
39
+ kind: "inline",
40
+ className: classNames(item.className),
41
+ onClick: item.action,
42
+ tooltip: item.description,
43
+ disabled: item.selectionRequired !== undefined && item.selectionRequired && !hasSelection,
44
+ icon: CommandHistoryActions.renderContent(item)
45
+ }, CommandHistoryActions.itemKey(index, item)))
46
+ });
44
47
  }
45
48
  }
46
49
  export default CommandHistoryActions;
@@ -1 +1 @@
1
- {"version":3,"file":"CommandHistoryActions.js","names":["React","Component","classNames","FontAwesomeIcon","Button","vsArrowLeft","vsCircleLargeFilled","CommandHistoryActions","itemKey","i","item","title","renderContent","selectionRequired","undefined","icon","render","actions","hasSelection","props","map","index","className","action","description"],"sources":["../../src/command-history/CommandHistoryActions.tsx"],"sourcesContent":["import React, { Component, ReactElement } from 'react';\nimport classNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { Button } from '@deephaven/components';\nimport { vsArrowLeft, vsCircleLargeFilled } from '@deephaven/icons';\nimport './CommandHistoryActions.scss';\nimport { HistoryAction } from './CommandHistoryTypes';\n\ninterface CommandHistoryActionsProps {\n actions: HistoryAction[];\n hasSelection: boolean;\n}\n\nclass CommandHistoryActions extends Component<\n CommandHistoryActionsProps,\n Record<string, never>\n> {\n static itemKey(i: unknown, item: HistoryAction): string {\n return `${item.title}`;\n }\n\n static renderContent(item: HistoryAction): JSX.Element {\n if (item.selectionRequired !== undefined && item.selectionRequired) {\n return (\n <div className=\"fa-md fa-layers\">\n <FontAwesomeIcon\n icon={vsCircleLargeFilled}\n mask={item.icon}\n transform=\"right-5 down-5 shrink-4\"\n />\n <FontAwesomeIcon\n icon={vsArrowLeft}\n transform=\"shrink-3 right-7 down-6\"\n />\n </div>\n );\n }\n return <FontAwesomeIcon icon={item.icon} />;\n }\n\n render(): ReactElement {\n const { actions, hasSelection } = this.props;\n\n return (\n <div className=\"command-history-actions\">\n {actions.map((item, index) => (\n <Button\n kind=\"inline\"\n className={classNames(item.className)}\n key={CommandHistoryActions.itemKey(index, item)}\n onClick={item.action}\n tooltip={item.description}\n disabled={\n item.selectionRequired !== undefined &&\n item.selectionRequired &&\n !hasSelection\n }\n icon={CommandHistoryActions.renderContent(item)}\n />\n ))}\n </div>\n );\n }\n}\n\nexport default CommandHistoryActions;\n"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,SAAS,QAAsB,OAAO;AACtD,OAAOC,UAAU,MAAM,YAAY;AACnC,SAASC,eAAe,QAAQ,gCAAgC;AAChE,SAASC,MAAM,QAAQ,uBAAuB;AAC9C,SAASC,WAAW,EAAEC,mBAAmB,QAAQ,kBAAkB;AAAC;AASpE,MAAMC,qBAAqB,SAASN,SAAS,CAG3C;EACA,OAAOO,OAAO,CAACC,CAAU,EAAEC,IAAmB,EAAU;IACtD,iBAAUA,IAAI,CAACC,KAAK;EACtB;EAEA,OAAOC,aAAa,CAACF,IAAmB,EAAe;IACrD,IAAIA,IAAI,CAACG,iBAAiB,KAAKC,SAAS,IAAIJ,IAAI,CAACG,iBAAiB,EAAE;MAClE,oBACE;QAAK,SAAS,EAAC;MAAiB,gBAC9B,oBAAC,eAAe;QACd,IAAI,EAAEP,mBAAoB;QAC1B,IAAI,EAAEI,IAAI,CAACK,IAAK;QAChB,SAAS,EAAC;MAAyB,EACnC,eACF,oBAAC,eAAe;QACd,IAAI,EAAEV,WAAY;QAClB,SAAS,EAAC;MAAyB,EACnC,CACE;IAEV;IACA,oBAAO,oBAAC,eAAe;MAAC,IAAI,EAAEK,IAAI,CAACK;IAAK,EAAG;EAC7C;EAEAC,MAAM,GAAiB;IACrB,IAAM;MAAEC,OAAO;MAAEC;IAAa,CAAC,GAAG,IAAI,CAACC,KAAK;IAE5C,oBACE;MAAK,SAAS,EAAC;IAAyB,GACrCF,OAAO,CAACG,GAAG,CAAC,CAACV,IAAI,EAAEW,KAAK,kBACvB,oBAAC,MAAM;MACL,IAAI,EAAC,QAAQ;MACb,SAAS,EAAEnB,UAAU,CAACQ,IAAI,CAACY,SAAS,CAAE;MACtC,GAAG,EAAEf,qBAAqB,CAACC,OAAO,CAACa,KAAK,EAAEX,IAAI,CAAE;MAChD,OAAO,EAAEA,IAAI,CAACa,MAAO;MACrB,OAAO,EAAEb,IAAI,CAACc,WAAY;MAC1B,QAAQ,EACNd,IAAI,CAACG,iBAAiB,KAAKC,SAAS,IACpCJ,IAAI,CAACG,iBAAiB,IACtB,CAACK,YACF;MACD,IAAI,EAAEX,qBAAqB,CAACK,aAAa,CAACF,IAAI;IAAE,EAEnD,CAAC,CACE;EAEV;AACF;AAEA,eAAeH,qBAAqB"}
1
+ {"version":3,"file":"CommandHistoryActions.js","names":["React","Component","classNames","FontAwesomeIcon","Button","vsArrowLeft","vsCircleLargeFilled","CommandHistoryActions","itemKey","i","item","title","renderContent","selectionRequired","undefined","icon","render","actions","hasSelection","props","map","index","className","action","description"],"sources":["../../src/command-history/CommandHistoryActions.tsx"],"sourcesContent":["import React, { Component, ReactElement } from 'react';\nimport classNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { Button } from '@deephaven/components';\nimport { vsArrowLeft, vsCircleLargeFilled } from '@deephaven/icons';\nimport './CommandHistoryActions.scss';\nimport { HistoryAction } from './CommandHistoryTypes';\n\ninterface CommandHistoryActionsProps {\n actions: HistoryAction[];\n hasSelection: boolean;\n}\n\nclass CommandHistoryActions extends Component<\n CommandHistoryActionsProps,\n Record<string, never>\n> {\n static itemKey(i: unknown, item: HistoryAction): string {\n return `${item.title}`;\n }\n\n static renderContent(item: HistoryAction): JSX.Element {\n if (item.selectionRequired !== undefined && item.selectionRequired) {\n return (\n <div className=\"fa-md fa-layers\">\n <FontAwesomeIcon\n icon={vsCircleLargeFilled}\n mask={item.icon}\n transform=\"right-5 down-5 shrink-4\"\n />\n <FontAwesomeIcon\n icon={vsArrowLeft}\n transform=\"shrink-3 right-7 down-6\"\n />\n </div>\n );\n }\n return <FontAwesomeIcon icon={item.icon} />;\n }\n\n render(): ReactElement {\n const { actions, hasSelection } = this.props;\n\n return (\n <div className=\"command-history-actions\">\n {actions.map((item, index) => (\n <Button\n kind=\"inline\"\n className={classNames(item.className)}\n key={CommandHistoryActions.itemKey(index, item)}\n onClick={item.action}\n tooltip={item.description}\n disabled={\n item.selectionRequired !== undefined &&\n item.selectionRequired &&\n !hasSelection\n }\n icon={CommandHistoryActions.renderContent(item)}\n />\n ))}\n </div>\n );\n }\n}\n\nexport default CommandHistoryActions;\n"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,SAAS,QAAsB,OAAO;AACtD,OAAOC,UAAU,MAAM,YAAY;AACnC,SAASC,eAAe,QAAQ,gCAAgC;AAChE,SAASC,MAAM,QAAQ,uBAAuB;AAC9C,SAASC,WAAW,EAAEC,mBAAmB,QAAQ,kBAAkB;AAAC;AAAA;AAAA;AASpE,MAAMC,qBAAqB,SAASN,SAAS,CAG3C;EACA,OAAOO,OAAO,CAACC,CAAU,EAAEC,IAAmB,EAAU;IACtD,iBAAUA,IAAI,CAACC,KAAK;EACtB;EAEA,OAAOC,aAAa,CAACF,IAAmB,EAAe;IACrD,IAAIA,IAAI,CAACG,iBAAiB,KAAKC,SAAS,IAAIJ,IAAI,CAACG,iBAAiB,EAAE;MAClE,oBACE;QAAK,SAAS,EAAC,iBAAiB;QAAA,wBAC9B,KAAC,eAAe;UACd,IAAI,EAAEP,mBAAoB;UAC1B,IAAI,EAAEI,IAAI,CAACK,IAAK;UAChB,SAAS,EAAC;QAAyB,EACnC,eACF,KAAC,eAAe;UACd,IAAI,EAAEV,WAAY;UAClB,SAAS,EAAC;QAAyB,EACnC;MAAA,EACE;IAEV;IACA,oBAAO,KAAC,eAAe;MAAC,IAAI,EAAEK,IAAI,CAACK;IAAK,EAAG;EAC7C;EAEAC,MAAM,GAAiB;IACrB,IAAM;MAAEC,OAAO;MAAEC;IAAa,CAAC,GAAG,IAAI,CAACC,KAAK;IAE5C,oBACE;MAAK,SAAS,EAAC,yBAAyB;MAAA,UACrCF,OAAO,CAACG,GAAG,CAAC,CAACV,IAAI,EAAEW,KAAK,kBACvB,KAAC,MAAM;QACL,IAAI,EAAC,QAAQ;QACb,SAAS,EAAEnB,UAAU,CAACQ,IAAI,CAACY,SAAS,CAAE;QAEtC,OAAO,EAAEZ,IAAI,CAACa,MAAO;QACrB,OAAO,EAAEb,IAAI,CAACc,WAAY;QAC1B,QAAQ,EACNd,IAAI,CAACG,iBAAiB,KAAKC,SAAS,IACpCJ,IAAI,CAACG,iBAAiB,IACtB,CAACK,YACF;QACD,IAAI,EAAEX,qBAAqB,CAACK,aAAa,CAACF,IAAI;MAAE,GAR3CH,qBAAqB,CAACC,OAAO,CAACa,KAAK,EAAEX,IAAI,CAAC,CAUlD;IAAC,EACE;EAEV;AACF;AAEA,eAAeH,qBAAqB"}