@deephaven/console 0.22.3-beta.15 → 0.22.3-beta.21

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 (108) hide show
  1. package/dist/Console.d.ts +3 -3
  2. package/dist/Console.d.ts.map +1 -1
  3. package/dist/Console.js +9 -114
  4. package/dist/Console.js.map +1 -1
  5. package/dist/ConsoleInput.js +14 -90
  6. package/dist/ConsoleInput.js.map +1 -1
  7. package/dist/ConsoleMenu.js +6 -25
  8. package/dist/ConsoleMenu.js.map +1 -1
  9. package/dist/ConsolePropTypes.js.map +1 -1
  10. package/dist/ConsoleShortcuts.js +1 -1
  11. package/dist/ConsoleShortcuts.js.map +1 -1
  12. package/dist/ConsoleStatusBar.js +0 -16
  13. package/dist/ConsoleStatusBar.js.map +1 -1
  14. package/dist/HeapUsage.d.ts +1 -1
  15. package/dist/HeapUsage.d.ts.map +1 -1
  16. package/dist/HeapUsage.js +2 -18
  17. package/dist/HeapUsage.js.map +1 -1
  18. package/dist/StoragePropTypes.js.map +1 -1
  19. package/dist/command-history/CommandHistory.js +1 -49
  20. package/dist/command-history/CommandHistory.js.map +1 -1
  21. package/dist/command-history/CommandHistoryActions.js +0 -6
  22. package/dist/command-history/CommandHistoryActions.js.map +1 -1
  23. package/dist/command-history/CommandHistoryItem.d.ts +4 -4
  24. package/dist/command-history/CommandHistoryItem.d.ts.map +1 -1
  25. package/dist/command-history/CommandHistoryItem.js +3 -6
  26. package/dist/command-history/CommandHistoryItem.js.map +1 -1
  27. package/dist/command-history/CommandHistoryItemTooltip.d.ts +1 -1
  28. package/dist/command-history/CommandHistoryItemTooltip.d.ts.map +1 -1
  29. package/dist/command-history/CommandHistoryItemTooltip.js +3 -28
  30. package/dist/command-history/CommandHistoryItemTooltip.js.map +1 -1
  31. package/dist/command-history/CommandHistoryViewportUpdater.js +0 -3
  32. package/dist/command-history/CommandHistoryViewportUpdater.js.map +1 -1
  33. package/dist/command-history/index.js.map +1 -1
  34. package/dist/common/Code.js +2 -11
  35. package/dist/common/Code.js.map +1 -1
  36. package/dist/common/ConsoleConstants.js +0 -2
  37. package/dist/common/ConsoleConstants.js.map +1 -1
  38. package/dist/common/ConsoleUtils.js +4 -19
  39. package/dist/common/ConsoleUtils.js.map +1 -1
  40. package/dist/common/ObjectIcon.d.ts +1 -1
  41. package/dist/common/ObjectIcon.d.ts.map +1 -1
  42. package/dist/common/ObjectIcon.js +2 -8
  43. package/dist/common/ObjectIcon.js.map +1 -1
  44. package/dist/common/index.js.map +1 -1
  45. package/dist/console-history/ConsoleHistory.js +0 -8
  46. package/dist/console-history/ConsoleHistory.js.map +1 -1
  47. package/dist/console-history/ConsoleHistoryItem.js +2 -25
  48. package/dist/console-history/ConsoleHistoryItem.js.map +1 -1
  49. package/dist/console-history/ConsoleHistoryItemResult.d.ts +6 -6
  50. package/dist/console-history/ConsoleHistoryItemResult.d.ts.map +1 -1
  51. package/dist/console-history/ConsoleHistoryItemResult.js +2 -4
  52. package/dist/console-history/ConsoleHistoryItemResult.js.map +1 -1
  53. package/dist/console-history/ConsoleHistoryResultErrorMessage.js +0 -22
  54. package/dist/console-history/ConsoleHistoryResultErrorMessage.js.map +1 -1
  55. package/dist/console-history/ConsoleHistoryResultInProgress.js +0 -13
  56. package/dist/console-history/ConsoleHistoryResultInProgress.js.map +1 -1
  57. package/dist/console-history/index.js.map +1 -1
  58. package/dist/csv/CsvFormats.js +0 -9
  59. package/dist/csv/CsvFormats.js.map +1 -1
  60. package/dist/csv/CsvInputBar.js +18 -51
  61. package/dist/csv/CsvInputBar.js.map +1 -1
  62. package/dist/csv/CsvOverlay.d.ts +2 -2
  63. package/dist/csv/CsvOverlay.d.ts.map +1 -1
  64. package/dist/csv/CsvOverlay.js +1 -41
  65. package/dist/csv/CsvOverlay.js.map +1 -1
  66. package/dist/csv/CsvParser.js +10 -73
  67. package/dist/csv/CsvParser.js.map +1 -1
  68. package/dist/csv/CsvTypeParser.js +15 -85
  69. package/dist/csv/CsvTypeParser.js.map +1 -1
  70. package/dist/csv/NewTableColumnTypes.js +0 -9
  71. package/dist/csv/NewTableColumnTypes.js.map +1 -1
  72. package/dist/index.d.ts +3 -2
  73. package/dist/index.d.ts.map +1 -1
  74. package/dist/index.js +3 -2
  75. package/dist/index.js.map +1 -1
  76. package/dist/log/LogLevel.js.map +1 -1
  77. package/dist/log/LogLevelMenuItem.js +0 -5
  78. package/dist/log/LogLevelMenuItem.js.map +1 -1
  79. package/dist/log/LogView.js +16 -106
  80. package/dist/log/LogView.js.map +1 -1
  81. package/dist/monaco/MonacoCompletionProvider.js +2 -14
  82. package/dist/monaco/MonacoCompletionProvider.js.map +1 -1
  83. package/dist/monaco/MonacoUtils.d.ts.map +1 -1
  84. package/dist/monaco/MonacoUtils.js +21 -49
  85. package/dist/monaco/MonacoUtils.js.map +1 -1
  86. package/dist/monaco/index.js.map +1 -1
  87. package/dist/monaco/lang/db.d.ts.map +1 -1
  88. package/dist/monaco/lang/db.js +22 -13
  89. package/dist/monaco/lang/db.js.map +1 -1
  90. package/dist/monaco/lang/groovy.d.ts.map +1 -1
  91. package/dist/monaco/lang/groovy.js +28 -15
  92. package/dist/monaco/lang/groovy.js.map +1 -1
  93. package/dist/monaco/lang/log.js +1 -0
  94. package/dist/monaco/lang/log.js.map +1 -1
  95. package/dist/monaco/lang/python.d.ts.map +1 -1
  96. package/dist/monaco/lang/python.js +30 -16
  97. package/dist/monaco/lang/python.js.map +1 -1
  98. package/dist/monaco/lang/scala.js +26 -13
  99. package/dist/monaco/lang/scala.js.map +1 -1
  100. package/dist/notebook/Editor.js +2 -21
  101. package/dist/notebook/Editor.js.map +1 -1
  102. package/dist/notebook/ScriptEditor.d.ts +1 -1
  103. package/dist/notebook/ScriptEditor.d.ts.map +1 -1
  104. package/dist/notebook/ScriptEditor.js +0 -57
  105. package/dist/notebook/ScriptEditor.js.map +1 -1
  106. package/dist/notebook/ScriptEditorUtils.js +1 -7
  107. package/dist/notebook/ScriptEditorUtils.js.map +1 -1
  108. package/package.json +11 -11
@@ -1,5 +1,4 @@
1
1
  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; }
2
-
3
2
  import React, { PureComponent } from 'react';
4
3
  import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
5
4
  import { Button, DropdownMenu, SearchInput, Tooltip } from '@deephaven/components';
@@ -9,13 +8,11 @@ import memoize from 'memoize-one';
9
8
  import "./ConsoleMenu.css";
10
9
  import ConsoleUtils from "./common/ConsoleUtils.js";
11
10
  var log = Log.module('ConsoleMenu');
12
-
13
11
  class ConsoleMenu extends PureComponent {
14
12
  static makeItemActions(objects, filterText, refCallback, changeCallback, openCallback) {
15
13
  if (objects.length === 0) {
16
14
  return [];
17
15
  }
18
-
19
16
  var searchAction = {
20
17
  menuElement: /*#__PURE__*/React.createElement(SearchInput, {
21
18
  value: filterText,
@@ -25,7 +22,6 @@ class ConsoleMenu extends PureComponent {
25
22
  })
26
23
  };
27
24
  var filteredItems = objects;
28
-
29
25
  if (filterText) {
30
26
  filteredItems = filteredItems.filter(_ref => {
31
27
  var {
@@ -34,7 +30,6 @@ class ConsoleMenu extends PureComponent {
34
30
  return title != null && title.toLowerCase().indexOf(filterText.toLowerCase()) >= 0;
35
31
  });
36
32
  }
37
-
38
33
  var openActions = filteredItems.map(object => ({
39
34
  title: object.title,
40
35
  action: () => {
@@ -43,28 +38,22 @@ class ConsoleMenu extends PureComponent {
43
38
  }));
44
39
  return [searchAction, ...openActions];
45
40
  }
46
-
47
41
  constructor(props) {
48
42
  super(props);
49
-
50
43
  _defineProperty(this, "tableSearchField", void 0);
51
-
52
44
  _defineProperty(this, "widgetSearchField", void 0);
53
-
54
45
  _defineProperty(this, "makeTableActions", memoize((objects, filterText, openObject) => {
55
46
  var tables = objects.filter(object => ConsoleUtils.isTableType(object.type));
56
47
  return ConsoleMenu.makeItemActions(tables, filterText, searchField => {
57
48
  this.tableSearchField = searchField;
58
49
  }, this.handleTableFilterChange, openObject);
59
50
  }));
60
-
61
51
  _defineProperty(this, "makeWidgetActions", memoize((objects, filterText, openObject) => {
62
52
  var widgets = objects.filter(object => ConsoleUtils.isWidgetType(object.type));
63
53
  return ConsoleMenu.makeItemActions(widgets, filterText, searchField => {
64
54
  this.widgetSearchField = searchField;
65
55
  }, this.handleWidgetFilterChange, openObject);
66
56
  }));
67
-
68
57
  this.handleTableFilterChange = this.handleTableFilterChange.bind(this);
69
58
  this.handleTableMenuClosed = this.handleTableMenuClosed.bind(this);
70
59
  this.handleTableMenuOpened = this.handleTableMenuOpened.bind(this);
@@ -76,45 +65,36 @@ class ConsoleMenu extends PureComponent {
76
65
  widgetFilterText: ''
77
66
  };
78
67
  }
79
-
80
68
  handleTableFilterChange(e) {
81
69
  log.debug('filtering tables...');
82
70
  this.setState({
83
71
  tableFilterText: e.target.value
84
72
  });
85
73
  }
86
-
87
74
  handleTableMenuClosed() {
88
75
  this.setState({
89
76
  tableFilterText: ''
90
77
  });
91
78
  }
92
-
93
79
  handleTableMenuOpened() {
94
80
  var _this$tableSearchFiel;
95
-
96
81
  (_this$tableSearchFiel = this.tableSearchField) === null || _this$tableSearchFiel === void 0 ? void 0 : _this$tableSearchFiel.focus();
97
82
  }
98
-
99
83
  handleWidgetFilterChange(e) {
100
84
  log.debug('filtering widgets...');
101
85
  this.setState({
102
86
  widgetFilterText: e.target.value
103
87
  });
104
88
  }
105
-
106
89
  handleWidgetMenuClosed() {
107
90
  this.setState({
108
91
  widgetFilterText: ''
109
92
  });
110
93
  }
111
-
112
94
  handleWidgetMenuOpened() {
113
95
  var _this$widgetSearchFie;
114
-
115
96
  (_this$widgetSearchFie = this.widgetSearchField) === null || _this$widgetSearchFie === void 0 ? void 0 : _this$widgetSearchFie.focus();
116
97
  }
117
-
118
98
  render() {
119
99
  var {
120
100
  overflowActions,
@@ -136,7 +116,8 @@ class ConsoleMenu extends PureComponent {
136
116
  kind: "ghost",
137
117
  className: "btn-link-icon",
138
118
  disabled: tableActions.length === 0,
139
- onClick: () => {// no-op: click is handled in `DropdownMenu`
119
+ onClick: () => {
120
+ // no-op: click is handled in `DropdownMenu`
140
121
  }
141
122
  }, /*#__PURE__*/React.createElement("div", {
142
123
  className: "fa-md fa-layers"
@@ -160,7 +141,8 @@ class ConsoleMenu extends PureComponent {
160
141
  kind: "ghost",
161
142
  className: "btn-link-icon",
162
143
  disabled: widgetActions.length === 0,
163
- onClick: () => {// no-op: click is handled in `DropdownMenu'
144
+ onClick: () => {
145
+ // no-op: click is handled in `DropdownMenu'
164
146
  }
165
147
  }, /*#__PURE__*/React.createElement("div", {
166
148
  className: "fa-md fa-layers"
@@ -185,15 +167,14 @@ class ConsoleMenu extends PureComponent {
185
167
  className: "btn-overflow btn-link-icon",
186
168
  icon: vsKebabVertical,
187
169
  tooltip: "More Actions...",
188
- onClick: () => {// no-op: click is handled in `DropdownMenu`
170
+ onClick: () => {
171
+ // no-op: click is handled in `DropdownMenu`
189
172
  }
190
173
  }, /*#__PURE__*/React.createElement(DropdownMenu, {
191
174
  actions: overflowActions,
192
175
  popperOptions: popperOptions
193
176
  })));
194
177
  }
195
-
196
178
  }
197
-
198
179
  export default ConsoleMenu;
199
180
  //# sourceMappingURL=ConsoleMenu.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ConsoleMenu.js","names":["React","PureComponent","FontAwesomeIcon","Button","DropdownMenu","SearchInput","Tooltip","dhTable","vsGraph","vsKebabVertical","vsTriangleDown","Log","memoize","ConsoleUtils","log","module","ConsoleMenu","makeItemActions","objects","filterText","refCallback","changeCallback","openCallback","length","searchAction","menuElement","filteredItems","filter","title","toLowerCase","indexOf","openActions","map","object","action","constructor","props","openObject","tables","isTableType","type","searchField","tableSearchField","handleTableFilterChange","widgets","isWidgetType","widgetSearchField","handleWidgetFilterChange","bind","handleTableMenuClosed","handleTableMenuOpened","handleWidgetMenuClosed","handleWidgetMenuOpened","state","tableFilterText","widgetFilterText","e","debug","setState","target","value","focus","render","overflowActions","tableActions","makeTableActions","widgetActions","makeWidgetActions","popperOptions","placement","initialKeyboardIndex"],"sources":["../src/ConsoleMenu.tsx"],"sourcesContent":["import React, {\n ChangeEvent,\n ChangeEventHandler,\n PureComponent,\n ReactElement,\n} from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {\n Button,\n DropdownAction,\n DropdownMenu,\n PopperOptions,\n SearchInput,\n Tooltip,\n} from '@deephaven/components';\nimport {\n dhTable,\n vsGraph,\n vsKebabVertical,\n vsTriangleDown,\n} from '@deephaven/icons';\nimport Log from '@deephaven/log';\nimport { VariableDefinition } from '@deephaven/jsapi-shim';\nimport memoize from 'memoize-one';\nimport './ConsoleMenu.scss';\nimport ConsoleUtils from './common/ConsoleUtils';\n\nconst log = Log.module('ConsoleMenu');\n\ninterface ConsoleMenuProps {\n openObject: (object: VariableDefinition) => void;\n objects: VariableDefinition[];\n overflowActions: () => DropdownAction[];\n}\n\ninterface ConsoleMenuState {\n tableFilterText: string;\n widgetFilterText: string;\n}\n\nclass ConsoleMenu extends PureComponent<ConsoleMenuProps, ConsoleMenuState> {\n static makeItemActions(\n objects: VariableDefinition[],\n filterText: string,\n refCallback: (ref: SearchInput) => void,\n changeCallback: ChangeEventHandler<HTMLInputElement>,\n openCallback: (object: VariableDefinition) => void\n ): DropdownAction[] {\n if (objects.length === 0) {\n return [];\n }\n\n const searchAction = {\n menuElement: (\n <SearchInput\n value={filterText}\n onChange={changeCallback}\n className=\"console-menu\"\n ref={refCallback}\n />\n ),\n };\n let filteredItems = objects;\n if (filterText) {\n filteredItems = filteredItems.filter(\n ({ title }: { title?: string }) =>\n title != null &&\n title.toLowerCase().indexOf(filterText.toLowerCase()) >= 0\n );\n }\n const openActions = filteredItems.map(object => ({\n title: object.title,\n action: () => {\n openCallback(object);\n },\n }));\n\n return [searchAction, ...openActions];\n }\n\n constructor(props: ConsoleMenuProps) {\n super(props);\n\n this.handleTableFilterChange = this.handleTableFilterChange.bind(this);\n this.handleTableMenuClosed = this.handleTableMenuClosed.bind(this);\n this.handleTableMenuOpened = this.handleTableMenuOpened.bind(this);\n this.handleWidgetFilterChange = this.handleWidgetFilterChange.bind(this);\n this.handleWidgetMenuClosed = this.handleWidgetMenuClosed.bind(this);\n this.handleWidgetMenuOpened = this.handleWidgetMenuOpened.bind(this);\n\n this.state = {\n tableFilterText: '',\n widgetFilterText: '',\n };\n }\n\n tableSearchField?: SearchInput;\n\n widgetSearchField?: SearchInput;\n\n makeTableActions = memoize(\n (\n objects: VariableDefinition[],\n filterText: string,\n openObject: (object: VariableDefinition) => void\n ): DropdownAction[] => {\n const tables = objects.filter(object =>\n ConsoleUtils.isTableType(object.type)\n );\n return ConsoleMenu.makeItemActions(\n tables,\n filterText,\n searchField => {\n this.tableSearchField = searchField;\n },\n this.handleTableFilterChange,\n openObject\n );\n }\n );\n\n makeWidgetActions = memoize(\n (\n objects: VariableDefinition[],\n filterText: string,\n openObject: (object: VariableDefinition) => void\n ): DropdownAction[] => {\n const widgets = objects.filter(object =>\n ConsoleUtils.isWidgetType(object.type)\n );\n return ConsoleMenu.makeItemActions(\n widgets,\n filterText,\n searchField => {\n this.widgetSearchField = searchField;\n },\n this.handleWidgetFilterChange,\n openObject\n );\n }\n );\n\n handleTableFilterChange(e: ChangeEvent<HTMLInputElement>): void {\n log.debug('filtering tables...');\n this.setState({ tableFilterText: e.target.value });\n }\n\n handleTableMenuClosed(): void {\n this.setState({ tableFilterText: '' });\n }\n\n handleTableMenuOpened(): void {\n this.tableSearchField?.focus();\n }\n\n handleWidgetFilterChange(e: ChangeEvent<HTMLInputElement>): void {\n log.debug('filtering widgets...');\n this.setState({ widgetFilterText: e.target.value });\n }\n\n handleWidgetMenuClosed(): void {\n this.setState({ widgetFilterText: '' });\n }\n\n handleWidgetMenuOpened(): void {\n this.widgetSearchField?.focus();\n }\n\n render(): ReactElement {\n const { overflowActions, objects, openObject } = this.props;\n const { tableFilterText, widgetFilterText } = this.state;\n const tableActions = this.makeTableActions(\n objects,\n tableFilterText,\n openObject\n );\n const widgetActions = this.makeWidgetActions(\n objects,\n widgetFilterText,\n openObject\n );\n const popperOptions: PopperOptions = { placement: 'bottom-end' };\n\n return (\n <div className=\"console-pane-menu\">\n <Button\n kind=\"ghost\"\n className=\"btn-link-icon\"\n disabled={tableActions.length === 0}\n onClick={() => {\n // no-op: click is handled in `DropdownMenu`\n }}\n >\n <div className=\"fa-md fa-layers\">\n <FontAwesomeIcon\n mask={dhTable}\n icon={vsTriangleDown}\n transform=\"right-5 down-5\"\n />\n <FontAwesomeIcon icon={vsTriangleDown} transform=\"right-8 down-6\" />\n </div>\n <Tooltip>Tables</Tooltip>\n <DropdownMenu\n key=\"table-actions \"\n actions={tableActions}\n onMenuOpened={this.handleTableMenuOpened}\n onMenuClosed={this.handleTableMenuClosed}\n options={{ initialKeyboardIndex: 1 }}\n popperOptions={popperOptions}\n />\n </Button>\n <Button\n kind=\"ghost\"\n className=\"btn-link-icon\"\n disabled={widgetActions.length === 0}\n onClick={() => {\n // no-op: click is handled in `DropdownMenu'\n }}\n >\n <div className=\"fa-md fa-layers\">\n <FontAwesomeIcon\n mask={vsGraph}\n icon={vsTriangleDown}\n transform=\"right-5 down-5\"\n />\n <FontAwesomeIcon icon={vsTriangleDown} transform=\"right-8 down-6\" />\n </div>\n <Tooltip>Widgets</Tooltip>\n <DropdownMenu\n key=\"table-actions\"\n actions={widgetActions}\n onMenuOpened={this.handleWidgetMenuOpened}\n onMenuClosed={this.handleWidgetMenuClosed}\n options={{ initialKeyboardIndex: 1 }}\n popperOptions={popperOptions}\n />\n </Button>\n <Button\n kind=\"ghost\"\n className=\"btn-overflow btn-link-icon\"\n icon={vsKebabVertical}\n tooltip=\"More Actions...\"\n onClick={() => {\n // no-op: click is handled in `DropdownMenu`\n }}\n >\n <DropdownMenu\n actions={overflowActions}\n popperOptions={popperOptions}\n />\n </Button>\n </div>\n );\n }\n}\n\nexport default ConsoleMenu;\n"],"mappings":"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"}
1
+ {"version":3,"file":"ConsoleMenu.js","names":["React","PureComponent","FontAwesomeIcon","Button","DropdownMenu","SearchInput","Tooltip","dhTable","vsGraph","vsKebabVertical","vsTriangleDown","Log","memoize","ConsoleUtils","log","module","ConsoleMenu","makeItemActions","objects","filterText","refCallback","changeCallback","openCallback","length","searchAction","menuElement","filteredItems","filter","title","toLowerCase","indexOf","openActions","map","object","action","constructor","props","openObject","tables","isTableType","type","searchField","tableSearchField","handleTableFilterChange","widgets","isWidgetType","widgetSearchField","handleWidgetFilterChange","bind","handleTableMenuClosed","handleTableMenuOpened","handleWidgetMenuClosed","handleWidgetMenuOpened","state","tableFilterText","widgetFilterText","e","debug","setState","target","value","focus","render","overflowActions","tableActions","makeTableActions","widgetActions","makeWidgetActions","popperOptions","placement","initialKeyboardIndex"],"sources":["../src/ConsoleMenu.tsx"],"sourcesContent":["import React, {\n ChangeEvent,\n ChangeEventHandler,\n PureComponent,\n ReactElement,\n} from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {\n Button,\n DropdownAction,\n DropdownMenu,\n PopperOptions,\n SearchInput,\n Tooltip,\n} from '@deephaven/components';\nimport {\n dhTable,\n vsGraph,\n vsKebabVertical,\n vsTriangleDown,\n} from '@deephaven/icons';\nimport Log from '@deephaven/log';\nimport { VariableDefinition } from '@deephaven/jsapi-shim';\nimport memoize from 'memoize-one';\nimport './ConsoleMenu.scss';\nimport ConsoleUtils from './common/ConsoleUtils';\n\nconst log = Log.module('ConsoleMenu');\n\ninterface ConsoleMenuProps {\n openObject: (object: VariableDefinition) => void;\n objects: VariableDefinition[];\n overflowActions: () => DropdownAction[];\n}\n\ninterface ConsoleMenuState {\n tableFilterText: string;\n widgetFilterText: string;\n}\n\nclass ConsoleMenu extends PureComponent<ConsoleMenuProps, ConsoleMenuState> {\n static makeItemActions(\n objects: VariableDefinition[],\n filterText: string,\n refCallback: (ref: SearchInput) => void,\n changeCallback: ChangeEventHandler<HTMLInputElement>,\n openCallback: (object: VariableDefinition) => void\n ): DropdownAction[] {\n if (objects.length === 0) {\n return [];\n }\n\n const searchAction = {\n menuElement: (\n <SearchInput\n value={filterText}\n onChange={changeCallback}\n className=\"console-menu\"\n ref={refCallback}\n />\n ),\n };\n let filteredItems = objects;\n if (filterText) {\n filteredItems = filteredItems.filter(\n ({ title }: { title?: string }) =>\n title != null &&\n title.toLowerCase().indexOf(filterText.toLowerCase()) >= 0\n );\n }\n const openActions = filteredItems.map(object => ({\n title: object.title,\n action: () => {\n openCallback(object);\n },\n }));\n\n return [searchAction, ...openActions];\n }\n\n constructor(props: ConsoleMenuProps) {\n super(props);\n\n this.handleTableFilterChange = this.handleTableFilterChange.bind(this);\n this.handleTableMenuClosed = this.handleTableMenuClosed.bind(this);\n this.handleTableMenuOpened = this.handleTableMenuOpened.bind(this);\n this.handleWidgetFilterChange = this.handleWidgetFilterChange.bind(this);\n this.handleWidgetMenuClosed = this.handleWidgetMenuClosed.bind(this);\n this.handleWidgetMenuOpened = this.handleWidgetMenuOpened.bind(this);\n\n this.state = {\n tableFilterText: '',\n widgetFilterText: '',\n };\n }\n\n tableSearchField?: SearchInput;\n\n widgetSearchField?: SearchInput;\n\n makeTableActions = memoize(\n (\n objects: VariableDefinition[],\n filterText: string,\n openObject: (object: VariableDefinition) => void\n ): DropdownAction[] => {\n const tables = objects.filter(object =>\n ConsoleUtils.isTableType(object.type)\n );\n return ConsoleMenu.makeItemActions(\n tables,\n filterText,\n searchField => {\n this.tableSearchField = searchField;\n },\n this.handleTableFilterChange,\n openObject\n );\n }\n );\n\n makeWidgetActions = memoize(\n (\n objects: VariableDefinition[],\n filterText: string,\n openObject: (object: VariableDefinition) => void\n ): DropdownAction[] => {\n const widgets = objects.filter(object =>\n ConsoleUtils.isWidgetType(object.type)\n );\n return ConsoleMenu.makeItemActions(\n widgets,\n filterText,\n searchField => {\n this.widgetSearchField = searchField;\n },\n this.handleWidgetFilterChange,\n openObject\n );\n }\n );\n\n handleTableFilterChange(e: ChangeEvent<HTMLInputElement>): void {\n log.debug('filtering tables...');\n this.setState({ tableFilterText: e.target.value });\n }\n\n handleTableMenuClosed(): void {\n this.setState({ tableFilterText: '' });\n }\n\n handleTableMenuOpened(): void {\n this.tableSearchField?.focus();\n }\n\n handleWidgetFilterChange(e: ChangeEvent<HTMLInputElement>): void {\n log.debug('filtering widgets...');\n this.setState({ widgetFilterText: e.target.value });\n }\n\n handleWidgetMenuClosed(): void {\n this.setState({ widgetFilterText: '' });\n }\n\n handleWidgetMenuOpened(): void {\n this.widgetSearchField?.focus();\n }\n\n render(): ReactElement {\n const { overflowActions, objects, openObject } = this.props;\n const { tableFilterText, widgetFilterText } = this.state;\n const tableActions = this.makeTableActions(\n objects,\n tableFilterText,\n openObject\n );\n const widgetActions = this.makeWidgetActions(\n objects,\n widgetFilterText,\n openObject\n );\n const popperOptions: PopperOptions = { placement: 'bottom-end' };\n\n return (\n <div className=\"console-pane-menu\">\n <Button\n kind=\"ghost\"\n className=\"btn-link-icon\"\n disabled={tableActions.length === 0}\n onClick={() => {\n // no-op: click is handled in `DropdownMenu`\n }}\n >\n <div className=\"fa-md fa-layers\">\n <FontAwesomeIcon\n mask={dhTable}\n icon={vsTriangleDown}\n transform=\"right-5 down-5\"\n />\n <FontAwesomeIcon icon={vsTriangleDown} transform=\"right-8 down-6\" />\n </div>\n <Tooltip>Tables</Tooltip>\n <DropdownMenu\n key=\"table-actions \"\n actions={tableActions}\n onMenuOpened={this.handleTableMenuOpened}\n onMenuClosed={this.handleTableMenuClosed}\n options={{ initialKeyboardIndex: 1 }}\n popperOptions={popperOptions}\n />\n </Button>\n <Button\n kind=\"ghost\"\n className=\"btn-link-icon\"\n disabled={widgetActions.length === 0}\n onClick={() => {\n // no-op: click is handled in `DropdownMenu'\n }}\n >\n <div className=\"fa-md fa-layers\">\n <FontAwesomeIcon\n mask={vsGraph}\n icon={vsTriangleDown}\n transform=\"right-5 down-5\"\n />\n <FontAwesomeIcon icon={vsTriangleDown} transform=\"right-8 down-6\" />\n </div>\n <Tooltip>Widgets</Tooltip>\n <DropdownMenu\n key=\"table-actions\"\n actions={widgetActions}\n onMenuOpened={this.handleWidgetMenuOpened}\n onMenuClosed={this.handleWidgetMenuClosed}\n options={{ initialKeyboardIndex: 1 }}\n popperOptions={popperOptions}\n />\n </Button>\n <Button\n kind=\"ghost\"\n className=\"btn-overflow btn-link-icon\"\n icon={vsKebabVertical}\n tooltip=\"More Actions...\"\n onClick={() => {\n // no-op: click is handled in `DropdownMenu`\n }}\n >\n <DropdownMenu\n actions={overflowActions}\n popperOptions={popperOptions}\n />\n </Button>\n </div>\n );\n }\n}\n\nexport default ConsoleMenu;\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ConsolePropTypes.js","names":["PropTypes","CommandHistoryItem","shape","id","string","isRequired","name","ConsolePropTypes","Object","freeze"],"sources":["../src/ConsolePropTypes.ts"],"sourcesContent":["import PropTypes from 'prop-types';\n\nconst CommandHistoryItem = PropTypes.shape({\n id: PropTypes.string.isRequired,\n name: PropTypes.string.isRequired,\n});\n\nconst ConsolePropTypes = Object.freeze({\n CommandHistoryItem,\n});\n\nexport default ConsolePropTypes;\n"],"mappings":"AAAA,OAAOA,SAAP,MAAsB,YAAtB;AAEA,IAAMC,kBAAkB,GAAGD,SAAS,CAACE,KAAV,CAAgB;EACzCC,EAAE,EAAEH,SAAS,CAACI,MAAV,CAAiBC,UADoB;EAEzCC,IAAI,EAAEN,SAAS,CAACI,MAAV,CAAiBC;AAFkB,CAAhB,CAA3B;AAKA,IAAME,gBAAgB,GAAGC,MAAM,CAACC,MAAP,CAAc;EACrCR;AADqC,CAAd,CAAzB;AAIA,eAAeM,gBAAf"}
1
+ {"version":3,"file":"ConsolePropTypes.js","names":["PropTypes","CommandHistoryItem","shape","id","string","isRequired","name","ConsolePropTypes","Object","freeze"],"sources":["../src/ConsolePropTypes.ts"],"sourcesContent":["import PropTypes from 'prop-types';\n\nconst CommandHistoryItem = PropTypes.shape({\n id: PropTypes.string.isRequired,\n name: PropTypes.string.isRequired,\n});\n\nconst ConsolePropTypes = Object.freeze({\n CommandHistoryItem,\n});\n\nexport default ConsolePropTypes;\n"],"mappings":"AAAA,OAAOA,SAAS,MAAM,YAAY;AAElC,IAAMC,kBAAkB,GAAGD,SAAS,CAACE,KAAK,CAAC;EACzCC,EAAE,EAAEH,SAAS,CAACI,MAAM,CAACC,UAAU;EAC/BC,IAAI,EAAEN,SAAS,CAACI,MAAM,CAACC;AACzB,CAAC,CAAC;AAEF,IAAME,gBAAgB,GAAGC,MAAM,CAACC,MAAM,CAAC;EACrCR;AACF,CAAC,CAAC;AAEF,eAAeM,gBAAgB"}
@@ -12,9 +12,9 @@ var CONSOLE = {
12
12
  name: 'Focus History',
13
13
  shortcut: [MODIFIER.CTRL, KEY.H],
14
14
  macShortcut: [MODIFIER.CTRL, MODIFIER.OPTION, KEY.H] // cmd+H is a system level shortcut on Mac, so use something else
15
-
16
15
  })
17
16
  };
17
+
18
18
  var COMMAND_HISTORY = {
19
19
  name: 'Command History',
20
20
  FOCUS_HISTORY: ShortcutRegistry.createAndAdd({
@@ -1 +1 @@
1
- {"version":3,"file":"ConsoleShortcuts.js","names":["ShortcutRegistry","KEY","MODIFIER","CONSOLE","name","CLEAR","createAndAdd","id","shortcut","CTRL","L","macShortcut","C","FOCUS_HISTORY","H","OPTION","COMMAND_HISTORY","SEND_TO_CONSOLE","ENTER","SEND_TO_NOTEBOOK","CMD","RUN","ALT","R","NOTEBOOK","RUN_SELECTED","SHIFT","FIND","F","isEditable","MINIMAP","M","WORDWRAP","Z","SHORTCUTS"],"sources":["../src/ConsoleShortcuts.ts"],"sourcesContent":["import { ShortcutRegistry, KEY, MODIFIER } from '@deephaven/components';\n\nconst CONSOLE = {\n name: 'Console',\n CLEAR: ShortcutRegistry.createAndAdd({\n id: 'CONSOLE.CLEAR',\n name: 'Clear',\n shortcut: [MODIFIER.CTRL, KEY.L],\n macShortcut: [MODIFIER.CTRL, KEY.C],\n }),\n FOCUS_HISTORY: ShortcutRegistry.createAndAdd({\n id: 'CONSOLE.FOCUS_HISTORY',\n name: 'Focus History',\n shortcut: [MODIFIER.CTRL, KEY.H],\n macShortcut: [MODIFIER.CTRL, MODIFIER.OPTION, KEY.H], // cmd+H is a system level shortcut on Mac, so use something else\n }),\n};\n\nconst COMMAND_HISTORY = {\n name: 'Command History',\n FOCUS_HISTORY: ShortcutRegistry.createAndAdd({\n id: 'COMMAND_HISTORY.FOCUS_HISTORY',\n name: 'Focus History Search',\n shortcut: [MODIFIER.CTRL, KEY.H],\n macShortcut: [MODIFIER.CTRL, MODIFIER.OPTION, KEY.H],\n }),\n SEND_TO_CONSOLE: ShortcutRegistry.createAndAdd({\n id: 'COMMAND_HISTORY.SEND_TO_CONSOLE',\n name: 'Send to Console',\n shortcut: [KEY.ENTER],\n macShortcut: [KEY.ENTER],\n }),\n SEND_TO_NOTEBOOK: ShortcutRegistry.createAndAdd({\n id: 'COMMAND_HISTORY.SEND_TO_NOTEBOOK',\n name: 'Send to Notebook',\n shortcut: [MODIFIER.CTRL, KEY.ENTER],\n macShortcut: [MODIFIER.CMD, KEY.ENTER],\n }),\n RUN: ShortcutRegistry.createAndAdd({\n id: 'COMMAND_HISTORY.RUN',\n name: 'Run',\n shortcut: [MODIFIER.ALT, KEY.R],\n macShortcut: [MODIFIER.OPTION, KEY.R],\n }),\n};\n\nconst NOTEBOOK = {\n name: 'Notebook',\n RUN: ShortcutRegistry.createAndAdd({\n id: 'NOTEBOOK.RUN',\n name: 'Run',\n shortcut: [MODIFIER.ALT, KEY.R],\n macShortcut: [MODIFIER.OPTION, KEY.R],\n }),\n RUN_SELECTED: ShortcutRegistry.createAndAdd({\n id: 'NOTEBOOK.RUN_SELECTED',\n name: 'Run Selected',\n shortcut: [MODIFIER.ALT, MODIFIER.SHIFT, KEY.R],\n macShortcut: [MODIFIER.OPTION, MODIFIER.SHIFT, KEY.R],\n }),\n FIND: ShortcutRegistry.createAndAdd({\n id: 'NOTEBOOK.FIND',\n name: 'Find',\n shortcut: [MODIFIER.CTRL, KEY.F],\n macShortcut: [MODIFIER.CMD, KEY.F],\n isEditable: false,\n }),\n MINIMAP: ShortcutRegistry.createAndAdd({\n id: 'NOTEBOOK.MINIMAP',\n name: 'Show Minimap',\n shortcut: [MODIFIER.ALT, KEY.M],\n macShortcut: [MODIFIER.OPTION, KEY.M],\n }),\n WORDWRAP: ShortcutRegistry.createAndAdd({\n id: 'NOTEBOOK.WORDWRAP',\n name: 'Word Wrap',\n shortcut: [MODIFIER.ALT, KEY.Z],\n macShortcut: [MODIFIER.OPTION, KEY.Z],\n }),\n};\n\nconst SHORTCUTS = {\n CONSOLE,\n COMMAND_HISTORY,\n NOTEBOOK,\n};\n\nexport default SHORTCUTS;\n"],"mappings":"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"}
1
+ {"version":3,"file":"ConsoleShortcuts.js","names":["ShortcutRegistry","KEY","MODIFIER","CONSOLE","name","CLEAR","createAndAdd","id","shortcut","CTRL","L","macShortcut","C","FOCUS_HISTORY","H","OPTION","COMMAND_HISTORY","SEND_TO_CONSOLE","ENTER","SEND_TO_NOTEBOOK","CMD","RUN","ALT","R","NOTEBOOK","RUN_SELECTED","SHIFT","FIND","F","isEditable","MINIMAP","M","WORDWRAP","Z","SHORTCUTS"],"sources":["../src/ConsoleShortcuts.ts"],"sourcesContent":["import { ShortcutRegistry, KEY, MODIFIER } from '@deephaven/components';\n\nconst CONSOLE = {\n name: 'Console',\n CLEAR: ShortcutRegistry.createAndAdd({\n id: 'CONSOLE.CLEAR',\n name: 'Clear',\n shortcut: [MODIFIER.CTRL, KEY.L],\n macShortcut: [MODIFIER.CTRL, KEY.C],\n }),\n FOCUS_HISTORY: ShortcutRegistry.createAndAdd({\n id: 'CONSOLE.FOCUS_HISTORY',\n name: 'Focus History',\n shortcut: [MODIFIER.CTRL, KEY.H],\n macShortcut: [MODIFIER.CTRL, MODIFIER.OPTION, KEY.H], // cmd+H is a system level shortcut on Mac, so use something else\n }),\n};\n\nconst COMMAND_HISTORY = {\n name: 'Command History',\n FOCUS_HISTORY: ShortcutRegistry.createAndAdd({\n id: 'COMMAND_HISTORY.FOCUS_HISTORY',\n name: 'Focus History Search',\n shortcut: [MODIFIER.CTRL, KEY.H],\n macShortcut: [MODIFIER.CTRL, MODIFIER.OPTION, KEY.H],\n }),\n SEND_TO_CONSOLE: ShortcutRegistry.createAndAdd({\n id: 'COMMAND_HISTORY.SEND_TO_CONSOLE',\n name: 'Send to Console',\n shortcut: [KEY.ENTER],\n macShortcut: [KEY.ENTER],\n }),\n SEND_TO_NOTEBOOK: ShortcutRegistry.createAndAdd({\n id: 'COMMAND_HISTORY.SEND_TO_NOTEBOOK',\n name: 'Send to Notebook',\n shortcut: [MODIFIER.CTRL, KEY.ENTER],\n macShortcut: [MODIFIER.CMD, KEY.ENTER],\n }),\n RUN: ShortcutRegistry.createAndAdd({\n id: 'COMMAND_HISTORY.RUN',\n name: 'Run',\n shortcut: [MODIFIER.ALT, KEY.R],\n macShortcut: [MODIFIER.OPTION, KEY.R],\n }),\n};\n\nconst NOTEBOOK = {\n name: 'Notebook',\n RUN: ShortcutRegistry.createAndAdd({\n id: 'NOTEBOOK.RUN',\n name: 'Run',\n shortcut: [MODIFIER.ALT, KEY.R],\n macShortcut: [MODIFIER.OPTION, KEY.R],\n }),\n RUN_SELECTED: ShortcutRegistry.createAndAdd({\n id: 'NOTEBOOK.RUN_SELECTED',\n name: 'Run Selected',\n shortcut: [MODIFIER.ALT, MODIFIER.SHIFT, KEY.R],\n macShortcut: [MODIFIER.OPTION, MODIFIER.SHIFT, KEY.R],\n }),\n FIND: ShortcutRegistry.createAndAdd({\n id: 'NOTEBOOK.FIND',\n name: 'Find',\n shortcut: [MODIFIER.CTRL, KEY.F],\n macShortcut: [MODIFIER.CMD, KEY.F],\n isEditable: false,\n }),\n MINIMAP: ShortcutRegistry.createAndAdd({\n id: 'NOTEBOOK.MINIMAP',\n name: 'Show Minimap',\n shortcut: [MODIFIER.ALT, KEY.M],\n macShortcut: [MODIFIER.OPTION, KEY.M],\n }),\n WORDWRAP: ShortcutRegistry.createAndAdd({\n id: 'NOTEBOOK.WORDWRAP',\n name: 'Word Wrap',\n shortcut: [MODIFIER.ALT, KEY.Z],\n macShortcut: [MODIFIER.OPTION, KEY.Z],\n }),\n};\n\nconst SHORTCUTS = {\n CONSOLE,\n COMMAND_HISTORY,\n NOTEBOOK,\n};\n\nexport default SHORTCUTS;\n"],"mappings":"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"}
@@ -1,5 +1,4 @@
1
1
  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; }
2
-
3
2
  import React, { PureComponent } from 'react';
4
3
  import classNames from 'classnames';
5
4
  import dh from '@deephaven/jsapi-shim';
@@ -10,9 +9,7 @@ import "./ConsoleStatusBar.css";
10
9
  export class ConsoleStatusBar extends PureComponent {
11
10
  constructor(props) {
12
11
  super(props);
13
-
14
12
  _defineProperty(this, "pending", void 0);
15
-
16
13
  this.handleCommandStarted = this.handleCommandStarted.bind(this);
17
14
  this.handleCommandCompleted = this.handleCommandCompleted.bind(this);
18
15
  this.pending = new Pending();
@@ -21,34 +18,28 @@ export class ConsoleStatusBar extends PureComponent {
21
18
  isCommandRunning: false
22
19
  };
23
20
  }
24
-
25
21
  componentDidMount() {
26
22
  this.startListening();
27
23
  }
28
-
29
24
  componentWillUnmount() {
30
25
  this.stopListening();
31
26
  this.cancelPendingPromises();
32
27
  }
33
-
34
28
  startListening() {
35
29
  var {
36
30
  session
37
31
  } = this.props;
38
32
  session.addEventListener(dh.IdeSession.EVENT_COMMANDSTARTED, this.handleCommandStarted);
39
33
  }
40
-
41
34
  stopListening() {
42
35
  var {
43
36
  session
44
37
  } = this.props;
45
38
  session.removeEventListener(dh.IdeSession.EVENT_COMMANDSTARTED, this.handleCommandStarted);
46
39
  }
47
-
48
40
  cancelPendingPromises() {
49
41
  this.pending.cancel();
50
42
  }
51
-
52
43
  handleCommandStarted(event) {
53
44
  var {
54
45
  result
@@ -58,7 +49,6 @@ export class ConsoleStatusBar extends PureComponent {
58
49
  isCommandRunning: true
59
50
  });
60
51
  }
61
-
62
52
  handleCommandCompleted(error) {
63
53
  // Don't update state if the promise was canceled
64
54
  if (!(error instanceof CanceledPromiseError)) {
@@ -67,7 +57,6 @@ export class ConsoleStatusBar extends PureComponent {
67
57
  });
68
58
  }
69
59
  }
70
-
71
60
  render() {
72
61
  var {
73
62
  children,
@@ -81,7 +70,6 @@ export class ConsoleStatusBar extends PureComponent {
81
70
  } = this.state;
82
71
  var statusIconClass = null;
83
72
  var tooltipText = null;
84
-
85
73
  if (isDisconnected) {
86
74
  statusIconClass = 'console-status-icon-disconnected';
87
75
  tooltipText = 'Worker is disconnected';
@@ -94,7 +82,6 @@ export class ConsoleStatusBar extends PureComponent {
94
82
  statusIconClass = 'console-status-icon-idle';
95
83
  tooltipText = 'Worker is idle';
96
84
  }
97
-
98
85
  return /*#__PURE__*/React.createElement("div", {
99
86
  className: "console-pane-status-bar"
100
87
  }, /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("div", {
@@ -105,12 +92,9 @@ export class ConsoleStatusBar extends PureComponent {
105
92
  objects: objects
106
93
  }));
107
94
  }
108
-
109
95
  }
110
-
111
96
  _defineProperty(ConsoleStatusBar, "defaultProps", {
112
97
  children: null
113
98
  });
114
-
115
99
  export default ConsoleStatusBar;
116
100
  //# sourceMappingURL=ConsoleStatusBar.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ConsoleStatusBar.js","names":["React","PureComponent","classNames","dh","Tooltip","CanceledPromiseError","Pending","ConsoleMenu","ConsoleStatusBar","constructor","props","handleCommandStarted","bind","handleCommandCompleted","pending","state","isDisconnected","isCommandRunning","componentDidMount","startListening","componentWillUnmount","stopListening","cancelPendingPromises","session","addEventListener","IdeSession","EVENT_COMMANDSTARTED","removeEventListener","cancel","event","result","detail","add","then","catch","error","setState","length","render","children","openObject","overflowActions","objects","statusIconClass","tooltipText"],"sources":["../src/ConsoleStatusBar.tsx"],"sourcesContent":["import React, { PureComponent, ReactElement, ReactNode } from 'react';\nimport classNames from 'classnames';\nimport dh, { IdeSession, VariableDefinition } from '@deephaven/jsapi-shim';\nimport { DropdownAction, Tooltip } from '@deephaven/components';\nimport { CanceledPromiseError, Pending } from '@deephaven/utils';\nimport ConsoleMenu from './ConsoleMenu';\nimport './ConsoleStatusBar.scss';\n\ninterface ConsoleStatusBarProps {\n children: ReactNode;\n session: IdeSession;\n openObject: (object: VariableDefinition) => void;\n objects: VariableDefinition[];\n overflowActions: () => DropdownAction[];\n}\n\ninterface ConsoleStatusBarState {\n isDisconnected: boolean;\n isCommandRunning: boolean;\n}\n\nexport class ConsoleStatusBar extends PureComponent<\n ConsoleStatusBarProps,\n ConsoleStatusBarState\n> {\n static defaultProps = {\n children: null,\n };\n\n constructor(props: ConsoleStatusBarProps) {\n super(props);\n\n this.handleCommandStarted = this.handleCommandStarted.bind(this);\n this.handleCommandCompleted = this.handleCommandCompleted.bind(this);\n\n this.pending = new Pending();\n\n this.state = {\n isDisconnected: false,\n isCommandRunning: false,\n };\n }\n\n componentDidMount(): void {\n this.startListening();\n }\n\n componentWillUnmount(): void {\n this.stopListening();\n this.cancelPendingPromises();\n }\n\n pending: Pending;\n\n startListening(): void {\n const { session } = this.props;\n session.addEventListener(\n dh.IdeSession.EVENT_COMMANDSTARTED,\n this.handleCommandStarted\n );\n }\n\n stopListening(): void {\n const { session } = this.props;\n session.removeEventListener(\n dh.IdeSession.EVENT_COMMANDSTARTED,\n this.handleCommandStarted\n );\n }\n\n cancelPendingPromises(): void {\n this.pending.cancel();\n }\n\n handleCommandStarted(event: CustomEvent): void {\n const { result } = event.detail;\n\n this.pending\n .add(result)\n .then(() => this.handleCommandCompleted(null))\n .catch(error => this.handleCommandCompleted(error));\n\n this.setState({\n isCommandRunning: true,\n });\n }\n\n handleCommandCompleted(error: unknown): void {\n // Don't update state if the promise was canceled\n if (!(error instanceof CanceledPromiseError)) {\n this.setState({\n isCommandRunning: this.pending.pending.length > 0,\n });\n }\n }\n\n render(): ReactElement {\n const { children, openObject, overflowActions, objects } = this.props;\n const { isDisconnected, isCommandRunning } = this.state;\n\n let statusIconClass = null;\n let tooltipText = null;\n\n if (isDisconnected) {\n statusIconClass = 'console-status-icon-disconnected';\n tooltipText = 'Worker is disconnected';\n } else if (isCommandRunning) {\n // Connected, Pending\n statusIconClass = 'console-status-icon-pending';\n tooltipText = 'Worker is busy';\n } else {\n // Connected, Idle\n statusIconClass = 'console-status-icon-idle';\n tooltipText = 'Worker is idle';\n }\n\n return (\n <div className=\"console-pane-status-bar\">\n <div>\n <div className={classNames('console-status-icon', statusIconClass)} />\n <Tooltip>{tooltipText}</Tooltip>\n </div>\n {children}\n <ConsoleMenu\n overflowActions={overflowActions}\n openObject={openObject}\n objects={objects}\n />\n </div>\n );\n }\n}\n\nexport default ConsoleStatusBar;\n"],"mappings":"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"}
1
+ {"version":3,"file":"ConsoleStatusBar.js","names":["React","PureComponent","classNames","dh","Tooltip","CanceledPromiseError","Pending","ConsoleMenu","ConsoleStatusBar","constructor","props","handleCommandStarted","bind","handleCommandCompleted","pending","state","isDisconnected","isCommandRunning","componentDidMount","startListening","componentWillUnmount","stopListening","cancelPendingPromises","session","addEventListener","IdeSession","EVENT_COMMANDSTARTED","removeEventListener","cancel","event","result","detail","add","then","catch","error","setState","length","render","children","openObject","overflowActions","objects","statusIconClass","tooltipText"],"sources":["../src/ConsoleStatusBar.tsx"],"sourcesContent":["import React, { PureComponent, ReactElement, ReactNode } from 'react';\nimport classNames from 'classnames';\nimport dh, { IdeSession, VariableDefinition } from '@deephaven/jsapi-shim';\nimport { DropdownAction, Tooltip } from '@deephaven/components';\nimport { CanceledPromiseError, Pending } from '@deephaven/utils';\nimport ConsoleMenu from './ConsoleMenu';\nimport './ConsoleStatusBar.scss';\n\ninterface ConsoleStatusBarProps {\n children: ReactNode;\n session: IdeSession;\n openObject: (object: VariableDefinition) => void;\n objects: VariableDefinition[];\n overflowActions: () => DropdownAction[];\n}\n\ninterface ConsoleStatusBarState {\n isDisconnected: boolean;\n isCommandRunning: boolean;\n}\n\nexport class ConsoleStatusBar extends PureComponent<\n ConsoleStatusBarProps,\n ConsoleStatusBarState\n> {\n static defaultProps = {\n children: null,\n };\n\n constructor(props: ConsoleStatusBarProps) {\n super(props);\n\n this.handleCommandStarted = this.handleCommandStarted.bind(this);\n this.handleCommandCompleted = this.handleCommandCompleted.bind(this);\n\n this.pending = new Pending();\n\n this.state = {\n isDisconnected: false,\n isCommandRunning: false,\n };\n }\n\n componentDidMount(): void {\n this.startListening();\n }\n\n componentWillUnmount(): void {\n this.stopListening();\n this.cancelPendingPromises();\n }\n\n pending: Pending;\n\n startListening(): void {\n const { session } = this.props;\n session.addEventListener(\n dh.IdeSession.EVENT_COMMANDSTARTED,\n this.handleCommandStarted\n );\n }\n\n stopListening(): void {\n const { session } = this.props;\n session.removeEventListener(\n dh.IdeSession.EVENT_COMMANDSTARTED,\n this.handleCommandStarted\n );\n }\n\n cancelPendingPromises(): void {\n this.pending.cancel();\n }\n\n handleCommandStarted(event: CustomEvent): void {\n const { result } = event.detail;\n\n this.pending\n .add(result)\n .then(() => this.handleCommandCompleted(null))\n .catch(error => this.handleCommandCompleted(error));\n\n this.setState({\n isCommandRunning: true,\n });\n }\n\n handleCommandCompleted(error: unknown): void {\n // Don't update state if the promise was canceled\n if (!(error instanceof CanceledPromiseError)) {\n this.setState({\n isCommandRunning: this.pending.pending.length > 0,\n });\n }\n }\n\n render(): ReactElement {\n const { children, openObject, overflowActions, objects } = this.props;\n const { isDisconnected, isCommandRunning } = this.state;\n\n let statusIconClass = null;\n let tooltipText = null;\n\n if (isDisconnected) {\n statusIconClass = 'console-status-icon-disconnected';\n tooltipText = 'Worker is disconnected';\n } else if (isCommandRunning) {\n // Connected, Pending\n statusIconClass = 'console-status-icon-pending';\n tooltipText = 'Worker is busy';\n } else {\n // Connected, Idle\n statusIconClass = 'console-status-icon-idle';\n tooltipText = 'Worker is idle';\n }\n\n return (\n <div className=\"console-pane-status-bar\">\n <div>\n <div className={classNames('console-status-icon', statusIconClass)} />\n <Tooltip>{tooltipText}</Tooltip>\n </div>\n {children}\n <ConsoleMenu\n overflowActions={overflowActions}\n openObject={openObject}\n objects={objects}\n />\n </div>\n );\n }\n}\n\nexport default ConsoleStatusBar;\n"],"mappings":"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"}
@@ -8,6 +8,6 @@ interface HeapUsageProps {
8
8
  bgMonitoring?: boolean;
9
9
  monitorDuration: number;
10
10
  }
11
- declare const HeapUsage: ({ connection, defaultUpdateInterval, hoverUpdateInterval, bgMonitoring, monitorDuration, }: HeapUsageProps) => ReactElement;
11
+ declare function HeapUsage({ connection, defaultUpdateInterval, hoverUpdateInterval, bgMonitoring, monitorDuration, }: HeapUsageProps): ReactElement;
12
12
  export default HeapUsage;
13
13
  //# sourceMappingURL=HeapUsage.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"HeapUsage.d.ts","sourceRoot":"","sources":["../src/HeapUsage.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAc,EAAuB,YAAY,EAAU,MAAM,OAAO,CAAC;AAEzE,OAAO,kBAAkB,CAAC;AAG1B,UAAU,cAAc;IACtB,UAAU,EAAE,gBAAgB,CAAC;IAC7B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,YAAY,CAAC,EAAE,OAAO,CAAC;IAGvB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,QAAA,MAAM,SAAS,+FAMZ,cAAc,KAAG,YAgLnB,CAAC;AAEF,eAAe,SAAS,CAAC"}
1
+ {"version":3,"file":"HeapUsage.d.ts","sourceRoot":"","sources":["../src/HeapUsage.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAc,EAAuB,YAAY,EAAU,MAAM,OAAO,CAAC;AAEzE,OAAO,kBAAkB,CAAC;AAG1B,UAAU,cAAc;IACtB,UAAU,EAAE,gBAAgB,CAAC;IAC7B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,YAAY,CAAC,EAAE,OAAO,CAAC;IAGvB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,iBAAS,SAAS,CAAC,EACjB,UAAU,EACV,qBAAqB,EACrB,mBAAmB,EACnB,YAAmB,EACnB,eAAe,GAChB,EAAE,cAAc,GAAG,YAAY,CAgL/B;AAED,eAAe,SAAS,CAAC"}
package/dist/HeapUsage.js CHANGED
@@ -1,16 +1,12 @@
1
1
  function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
2
-
3
2
  function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
4
-
5
3
  import { Tooltip } from '@deephaven/components';
6
4
  import React, { useEffect, useState, useRef } from 'react';
7
5
  import { Plot, ChartTheme } from '@deephaven/chart';
8
6
  import "./HeapUsage.css";
9
7
  import classNames from 'classnames';
10
-
11
- var HeapUsage = _ref => {
8
+ function HeapUsage(_ref) {
12
9
  var _timestamps2;
13
-
14
10
  var {
15
11
  connection,
16
12
  defaultUpdateInterval,
@@ -33,7 +29,6 @@ var HeapUsage = _ref => {
33
29
  var _ref2 = _asyncToGenerator(function* () {
34
30
  var newUsage = yield connection.getWorkerHeapInfo();
35
31
  setMemoryUsage(newUsage);
36
-
37
32
  if (bgMonitoring || isOpen) {
38
33
  var currentUsage = (newUsage.totalHeapSize - newUsage.freeMemory) / newUsage.maximumHeapSize;
39
34
  var currentTime = Date.now();
@@ -41,15 +36,11 @@ var HeapUsage = _ref => {
41
36
  timestamps: _timestamps,
42
37
  usages: _usages
43
38
  } = historyUsage.current;
44
-
45
39
  while (_timestamps.length !== 0 && currentTime - _timestamps[0] > monitorDuration * 1.5) {
46
40
  _timestamps.shift();
47
-
48
41
  _usages.shift();
49
42
  }
50
-
51
43
  _timestamps.push(currentTime);
52
-
53
44
  _usages.push(currentUsage);
54
45
  } else {
55
46
  historyUsage.current = {
@@ -58,21 +49,17 @@ var HeapUsage = _ref => {
58
49
  };
59
50
  }
60
51
  });
61
-
62
52
  return function fetchAndUpdate() {
63
53
  return _ref2.apply(this, arguments);
64
54
  };
65
55
  }();
66
-
67
56
  fetchAndUpdate();
68
57
  var updateUsage = setInterval(fetchAndUpdate, isOpen ? hoverUpdateInterval : defaultUpdateInterval);
69
58
  return () => {
70
59
  clearInterval(updateUsage);
71
60
  };
72
61
  }, [isOpen, hoverUpdateInterval, connection, defaultUpdateInterval, monitorDuration, bgMonitoring]);
73
-
74
62
  var toDecimalPlace = (num, dec) => Math.round(num * 10 ** dec) / 10 ** dec;
75
-
76
63
  var decimalPlace = 2;
77
64
  var GbToByte = 1024 ** 3;
78
65
  var {
@@ -84,7 +71,6 @@ var HeapUsage = _ref => {
84
71
  var totalHeapGB = toDecimalPlace(totalHeapSize / GbToByte, decimalPlace);
85
72
  var maxHeapGB = toDecimalPlace(maximumHeapSize / GbToByte, decimalPlace);
86
73
  var inUseGB = totalHeapGB - freeMemoryGB;
87
-
88
74
  var getRow = function getRow(text, size) {
89
75
  var bottomBorder = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
90
76
  return /*#__PURE__*/React.createElement("div", {
@@ -95,7 +81,6 @@ var HeapUsage = _ref => {
95
81
  className: "font-weight-bold"
96
82
  }, text), /*#__PURE__*/React.createElement("div", null, size));
97
83
  };
98
-
99
84
  var {
100
85
  timestamps,
101
86
  usages
@@ -173,7 +158,6 @@ var HeapUsage = _ref => {
173
158
  })), /*#__PURE__*/React.createElement("div", {
174
159
  className: "heap-utilisation-text"
175
160
  }, "% utilization over ", Math.round(monitorDuration / 1000 / 60), " min."))));
176
- };
177
-
161
+ }
178
162
  export default HeapUsage;
179
163
  //# sourceMappingURL=HeapUsage.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"HeapUsage.js","names":["Tooltip","React","useEffect","useState","useRef","Plot","ChartTheme","classNames","HeapUsage","connection","defaultUpdateInterval","hoverUpdateInterval","bgMonitoring","monitorDuration","memoryUsage","setMemoryUsage","freeMemory","maximumHeapSize","totalHeapSize","isOpen","setIsOpen","historyUsage","timestamps","usages","setUsageUpdateInterval","fetchAndUpdate","newUsage","getWorkerHeapInfo","currentUsage","currentTime","Date","now","current","length","shift","push","updateUsage","setInterval","clearInterval","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","legend","margin","l","t","r","b","plot_bgcolor","paper_bgcolor","colorway","xaxis","dtick","gridcolor","linecolor","range","linewidth","mirror","yaxis"],"sources":["../src/HeapUsage.tsx"],"sourcesContent":["import { Tooltip } from '@deephaven/components';\nimport { QueryConnectable } from '@deephaven/jsapi-shim';\nimport React, { useEffect, useState, ReactElement, useRef } from 'react';\nimport { Plot, ChartTheme } from '@deephaven/chart';\nimport './HeapUsage.scss';\nimport classNames from 'classnames';\n\ninterface HeapUsageProps {\n connection: QueryConnectable;\n defaultUpdateInterval: number;\n hoverUpdateInterval: number;\n bgMonitoring?: boolean;\n\n // in millis\n monitorDuration: number;\n}\n\nconst 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 useEffect(\n function setUsageUpdateInterval() {\n const fetchAndUpdate = async () => {\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 };\n fetchAndUpdate();\n\n const updateUsage = setInterval(\n fetchAndUpdate,\n isOpen ? hoverUpdateInterval : defaultUpdateInterval\n );\n return () => {\n clearInterval(updateUsage);\n };\n },\n [\n isOpen,\n hoverUpdateInterval,\n connection,\n defaultUpdateInterval,\n monitorDuration,\n bgMonitoring,\n ]\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 legend: false,\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":["Tooltip","React","useEffect","useState","useRef","Plot","ChartTheme","classNames","HeapUsage","connection","defaultUpdateInterval","hoverUpdateInterval","bgMonitoring","monitorDuration","memoryUsage","setMemoryUsage","freeMemory","maximumHeapSize","totalHeapSize","isOpen","setIsOpen","historyUsage","timestamps","usages","setUsageUpdateInterval","fetchAndUpdate","newUsage","getWorkerHeapInfo","currentUsage","currentTime","Date","now","current","length","shift","push","updateUsage","setInterval","clearInterval","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","legend","margin","l","t","r","b","plot_bgcolor","paper_bgcolor","colorway","xaxis","dtick","gridcolor","linecolor","range","linewidth","mirror","yaxis"],"sources":["../src/HeapUsage.tsx"],"sourcesContent":["import { Tooltip } from '@deephaven/components';\nimport { QueryConnectable } from '@deephaven/jsapi-shim';\nimport React, { useEffect, useState, ReactElement, useRef } from 'react';\nimport { Plot, ChartTheme } from '@deephaven/chart';\nimport './HeapUsage.scss';\nimport classNames from 'classnames';\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 useEffect(\n function setUsageUpdateInterval() {\n const fetchAndUpdate = async () => {\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 };\n fetchAndUpdate();\n\n const updateUsage = setInterval(\n fetchAndUpdate,\n isOpen ? hoverUpdateInterval : defaultUpdateInterval\n );\n return () => {\n clearInterval(updateUsage);\n };\n },\n [\n isOpen,\n hoverUpdateInterval,\n connection,\n defaultUpdateInterval,\n monitorDuration,\n bgMonitoring,\n ]\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 legend: false,\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 +1 @@
1
- {"version":3,"file":"StoragePropTypes.js","names":["PropTypes","CommandHistoryStorage","shape","addItem","func","isRequired","updateItem","getTable","CommandHistoryTable","size","number","getSnapshot","StoragePropTypes","Object","freeze"],"sources":["../src/StoragePropTypes.ts"],"sourcesContent":["import PropTypes from 'prop-types';\n\nconst CommandHistoryStorage = PropTypes.shape({\n addItem: PropTypes.func.isRequired,\n updateItem: PropTypes.func.isRequired,\n getTable: PropTypes.func.isRequired,\n});\n\nconst CommandHistoryTable = PropTypes.shape({\n size: PropTypes.number.isRequired,\n getSnapshot: PropTypes.func.isRequired,\n});\n\nconst StoragePropTypes = Object.freeze({\n CommandHistoryStorage,\n CommandHistoryTable,\n});\n\nexport default StoragePropTypes;\n"],"mappings":"AAAA,OAAOA,SAAP,MAAsB,YAAtB;AAEA,IAAMC,qBAAqB,GAAGD,SAAS,CAACE,KAAV,CAAgB;EAC5CC,OAAO,EAAEH,SAAS,CAACI,IAAV,CAAeC,UADoB;EAE5CC,UAAU,EAAEN,SAAS,CAACI,IAAV,CAAeC,UAFiB;EAG5CE,QAAQ,EAAEP,SAAS,CAACI,IAAV,CAAeC;AAHmB,CAAhB,CAA9B;AAMA,IAAMG,mBAAmB,GAAGR,SAAS,CAACE,KAAV,CAAgB;EAC1CO,IAAI,EAAET,SAAS,CAACU,MAAV,CAAiBL,UADmB;EAE1CM,WAAW,EAAEX,SAAS,CAACI,IAAV,CAAeC;AAFc,CAAhB,CAA5B;AAKA,IAAMO,gBAAgB,GAAGC,MAAM,CAACC,MAAP,CAAc;EACrCb,qBADqC;EAErCO;AAFqC,CAAd,CAAzB;AAKA,eAAeI,gBAAf"}
1
+ {"version":3,"file":"StoragePropTypes.js","names":["PropTypes","CommandHistoryStorage","shape","addItem","func","isRequired","updateItem","getTable","CommandHistoryTable","size","number","getSnapshot","StoragePropTypes","Object","freeze"],"sources":["../src/StoragePropTypes.ts"],"sourcesContent":["import PropTypes from 'prop-types';\n\nconst CommandHistoryStorage = PropTypes.shape({\n addItem: PropTypes.func.isRequired,\n updateItem: PropTypes.func.isRequired,\n getTable: PropTypes.func.isRequired,\n});\n\nconst CommandHistoryTable = PropTypes.shape({\n size: PropTypes.number.isRequired,\n getSnapshot: PropTypes.func.isRequired,\n});\n\nconst StoragePropTypes = Object.freeze({\n CommandHistoryStorage,\n CommandHistoryTable,\n});\n\nexport default StoragePropTypes;\n"],"mappings":"AAAA,OAAOA,SAAS,MAAM,YAAY;AAElC,IAAMC,qBAAqB,GAAGD,SAAS,CAACE,KAAK,CAAC;EAC5CC,OAAO,EAAEH,SAAS,CAACI,IAAI,CAACC,UAAU;EAClCC,UAAU,EAAEN,SAAS,CAACI,IAAI,CAACC,UAAU;EACrCE,QAAQ,EAAEP,SAAS,CAACI,IAAI,CAACC;AAC3B,CAAC,CAAC;AAEF,IAAMG,mBAAmB,GAAGR,SAAS,CAACE,KAAK,CAAC;EAC1CO,IAAI,EAAET,SAAS,CAACU,MAAM,CAACL,UAAU;EACjCM,WAAW,EAAEX,SAAS,CAACI,IAAI,CAACC;AAC9B,CAAC,CAAC;AAEF,IAAMO,gBAAgB,GAAGC,MAAM,CAACC,MAAM,CAAC;EACrCb,qBAAqB;EACrBO;AACF,CAAC,CAAC;AAEF,eAAeI,gBAAgB"}