@deephaven/console 0.22.3-deep-bot-test.14 → 0.23.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (123) hide show
  1. package/dist/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.d.ts +1 -1
  20. package/dist/command-history/CommandHistory.d.ts.map +1 -1
  21. package/dist/command-history/CommandHistory.js +1 -49
  22. package/dist/command-history/CommandHistory.js.map +1 -1
  23. package/dist/command-history/CommandHistoryActions.js +0 -6
  24. package/dist/command-history/CommandHistoryActions.js.map +1 -1
  25. package/dist/command-history/CommandHistoryItem.d.ts +4 -4
  26. package/dist/command-history/CommandHistoryItem.d.ts.map +1 -1
  27. package/dist/command-history/CommandHistoryItem.js +3 -6
  28. package/dist/command-history/CommandHistoryItem.js.map +1 -1
  29. package/dist/command-history/CommandHistoryItemTooltip.d.ts +1 -1
  30. package/dist/command-history/CommandHistoryItemTooltip.d.ts.map +1 -1
  31. package/dist/command-history/CommandHistoryItemTooltip.js +3 -28
  32. package/dist/command-history/CommandHistoryItemTooltip.js.map +1 -1
  33. package/dist/command-history/CommandHistoryTypes.d.ts +2 -2
  34. package/dist/command-history/CommandHistoryTypes.d.ts.map +1 -1
  35. package/dist/command-history/CommandHistoryViewportUpdater.d.ts +1 -1
  36. package/dist/command-history/CommandHistoryViewportUpdater.d.ts.map +1 -1
  37. package/dist/command-history/CommandHistoryViewportUpdater.js +0 -3
  38. package/dist/command-history/CommandHistoryViewportUpdater.js.map +1 -1
  39. package/dist/command-history/index.js.map +1 -1
  40. package/dist/common/Code.js +2 -11
  41. package/dist/common/Code.js.map +1 -1
  42. package/dist/common/ConsoleConstants.js +0 -2
  43. package/dist/common/ConsoleConstants.js.map +1 -1
  44. package/dist/common/ConsoleUtils.js +4 -19
  45. package/dist/common/ConsoleUtils.js.map +1 -1
  46. package/dist/common/ObjectIcon.d.ts +2 -2
  47. package/dist/common/ObjectIcon.d.ts.map +1 -1
  48. package/dist/common/ObjectIcon.js +2 -8
  49. package/dist/common/ObjectIcon.js.map +1 -1
  50. package/dist/common/index.js.map +1 -1
  51. package/dist/console-history/ConsoleHistory.js +0 -8
  52. package/dist/console-history/ConsoleHistory.js.map +1 -1
  53. package/dist/console-history/ConsoleHistoryItem.js +2 -25
  54. package/dist/console-history/ConsoleHistoryItem.js.map +1 -1
  55. package/dist/console-history/ConsoleHistoryItemResult.d.ts +7 -7
  56. package/dist/console-history/ConsoleHistoryItemResult.d.ts.map +1 -1
  57. package/dist/console-history/ConsoleHistoryItemResult.js +2 -4
  58. package/dist/console-history/ConsoleHistoryItemResult.js.map +1 -1
  59. package/dist/console-history/ConsoleHistoryResultErrorMessage.js +0 -22
  60. package/dist/console-history/ConsoleHistoryResultErrorMessage.js.map +1 -1
  61. package/dist/console-history/ConsoleHistoryResultInProgress.js +0 -13
  62. package/dist/console-history/ConsoleHistoryResultInProgress.js.map +1 -1
  63. package/dist/console-history/ConsoleHistoryTypes.d.ts +1 -1
  64. package/dist/console-history/ConsoleHistoryTypes.d.ts.map +1 -1
  65. package/dist/console-history/index.js.map +1 -1
  66. package/dist/csv/CsvFormats.d.ts +1 -1
  67. package/dist/csv/CsvFormats.d.ts.map +1 -1
  68. package/dist/csv/CsvFormats.js +0 -9
  69. package/dist/csv/CsvFormats.js.map +1 -1
  70. package/dist/csv/CsvInputBar.js +18 -51
  71. package/dist/csv/CsvInputBar.js.map +1 -1
  72. package/dist/csv/CsvOverlay.d.ts +2 -2
  73. package/dist/csv/CsvOverlay.d.ts.map +1 -1
  74. package/dist/csv/CsvOverlay.js +1 -41
  75. package/dist/csv/CsvOverlay.js.map +1 -1
  76. package/dist/csv/CsvParser.js +10 -73
  77. package/dist/csv/CsvParser.js.map +1 -1
  78. package/dist/csv/CsvTypeParser.js +15 -85
  79. package/dist/csv/CsvTypeParser.js.map +1 -1
  80. package/dist/csv/NewTableColumnTypes.js +0 -9
  81. package/dist/csv/NewTableColumnTypes.js.map +1 -1
  82. package/dist/index.d.ts +3 -2
  83. package/dist/index.d.ts.map +1 -1
  84. package/dist/index.js +3 -2
  85. package/dist/index.js.map +1 -1
  86. package/dist/log/LogLevel.d.ts +8 -8
  87. package/dist/log/LogLevel.js.map +1 -1
  88. package/dist/log/LogLevelMenuItem.js +0 -5
  89. package/dist/log/LogLevelMenuItem.js.map +1 -1
  90. package/dist/log/LogView.d.ts +2 -2
  91. package/dist/log/LogView.d.ts.map +1 -1
  92. package/dist/log/LogView.js +21 -108
  93. package/dist/log/LogView.js.map +1 -1
  94. package/dist/monaco/MonacoCompletionProvider.js +2 -14
  95. package/dist/monaco/MonacoCompletionProvider.js.map +1 -1
  96. package/dist/monaco/MonacoUtils.d.ts.map +1 -1
  97. package/dist/monaco/MonacoUtils.js +21 -49
  98. package/dist/monaco/MonacoUtils.js.map +1 -1
  99. package/dist/monaco/index.js.map +1 -1
  100. package/dist/monaco/lang/Language.d.ts +1 -1
  101. package/dist/monaco/lang/Language.d.ts.map +1 -1
  102. package/dist/monaco/lang/db.d.ts.map +1 -1
  103. package/dist/monaco/lang/db.js +22 -13
  104. package/dist/monaco/lang/db.js.map +1 -1
  105. package/dist/monaco/lang/groovy.d.ts.map +1 -1
  106. package/dist/monaco/lang/groovy.js +28 -15
  107. package/dist/monaco/lang/groovy.js.map +1 -1
  108. package/dist/monaco/lang/log.js +1 -0
  109. package/dist/monaco/lang/log.js.map +1 -1
  110. package/dist/monaco/lang/python.d.ts.map +1 -1
  111. package/dist/monaco/lang/python.js +30 -16
  112. package/dist/monaco/lang/python.js.map +1 -1
  113. package/dist/monaco/lang/scala.js +26 -13
  114. package/dist/monaco/lang/scala.js.map +1 -1
  115. package/dist/notebook/Editor.js +2 -21
  116. package/dist/notebook/Editor.js.map +1 -1
  117. package/dist/notebook/ScriptEditor.d.ts +1 -1
  118. package/dist/notebook/ScriptEditor.d.ts.map +1 -1
  119. package/dist/notebook/ScriptEditor.js +0 -57
  120. package/dist/notebook/ScriptEditor.js.map +1 -1
  121. package/dist/notebook/ScriptEditorUtils.js +1 -7
  122. package/dist/notebook/ScriptEditorUtils.js.map +1 -1
  123. 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
  /**
4
3
  * Script editor for large blocks of code
5
4
  */
@@ -13,19 +12,13 @@ import { MonacoCompletionProvider, MonacoUtils } from "../monaco/index.js";
13
12
  import "./ScriptEditor.css";
14
13
  import SHORTCUTS from "../ConsoleShortcuts.js";
15
14
  var log = Log.module('ScriptEditor');
16
-
17
15
  class ScriptEditor extends Component {
18
16
  constructor(props) {
19
17
  super(props);
20
-
21
18
  _defineProperty(this, "contextActionCleanups", void 0);
22
-
23
19
  _defineProperty(this, "completionCleanup", void 0);
24
-
25
20
  _defineProperty(this, "editor", void 0);
26
-
27
21
  _defineProperty(this, "editorComponent", void 0);
28
-
29
22
  this.handleEditorInitialized = this.handleEditorInitialized.bind(this);
30
23
  this.handleEditorWillDestroy = this.handleEditorWillDestroy.bind(this);
31
24
  this.handleRun = this.handleRun.bind(this);
@@ -37,39 +30,31 @@ class ScriptEditor extends Component {
37
30
  model: null
38
31
  };
39
32
  }
40
-
41
33
  componentDidMount() {
42
34
  ShortcutRegistry.addEventListener('onUpdate', this.updateShortcuts);
43
35
  }
44
-
45
36
  componentDidUpdate(prevProps) {
46
37
  var _prevProps$settings, _prevProps$settings2;
47
-
48
38
  var {
49
39
  sessionLanguage,
50
40
  settings
51
41
  } = this.props;
52
42
  var language = settings === null || settings === void 0 ? void 0 : settings.language;
53
43
  var languageChanged = language !== ((_prevProps$settings = prevProps.settings) === null || _prevProps$settings === void 0 ? void 0 : _prevProps$settings.language);
54
-
55
44
  if (languageChanged) {
56
45
  log.debug('Set language', language);
57
46
  this.setLanguage(language);
58
47
  }
59
-
60
48
  var sessionDisconnected = sessionLanguage == null && prevProps.sessionLanguage != null;
61
49
  var languageMatch = language === sessionLanguage;
62
50
  var prevLanguageMatch = ((_prevProps$settings2 = prevProps.settings) === null || _prevProps$settings2 === void 0 ? void 0 : _prevProps$settings2.language) === prevProps.sessionLanguage;
63
-
64
51
  if (sessionDisconnected || sessionLanguage !== undefined && prevLanguageMatch && !languageMatch) {
65
52
  // Session disconnected or language changed from matching the session language to non-matching
66
53
  log.debug('De-init completion and context actions');
67
54
  this.deInitContextActions();
68
55
  this.deInitCodeCompletion();
69
56
  }
70
-
71
57
  var sessionConnected = sessionLanguage != null && prevProps.sessionLanguage == null;
72
-
73
58
  if (sessionConnected && languageMatch || sessionLanguage !== undefined && !prevLanguageMatch && languageMatch) {
74
59
  // Session connected with a matching language or notebook language changed to matching
75
60
  log.debug('Init completion and context actions');
@@ -77,23 +62,18 @@ class ScriptEditor extends Component {
77
62
  this.initCodeCompletion();
78
63
  }
79
64
  }
80
-
81
65
  componentWillUnmount() {
82
66
  ShortcutRegistry.removeEventListener('onUpdate', this.updateShortcuts);
83
67
  }
84
-
85
68
  getValue() {
86
69
  if (this.editor) {
87
70
  return this.editor.getValue();
88
71
  }
89
-
90
72
  log.error('Editor not initialized');
91
73
  return null;
92
74
  }
93
-
94
75
  getSelectedCommand() {
95
76
  var _this$editor, _this$editor2;
96
-
97
77
  var range = (_this$editor = this.editor) === null || _this$editor === void 0 ? void 0 : _this$editor.getSelection();
98
78
  assertNotNull(range);
99
79
  var model = (_this$editor2 = this.editor) === null || _this$editor2 === void 0 ? void 0 : _this$editor2.getModel();
@@ -105,17 +85,14 @@ class ScriptEditor extends Component {
105
85
  var {
106
86
  endLineNumber
107
87
  } = range;
108
-
109
88
  if (endColumn === 1 && endLineNumber > startLineNumber) {
110
89
  endLineNumber -= 1;
111
90
  }
112
-
113
91
  var startLineMinColumn = model === null || model === void 0 ? void 0 : model.getLineMinColumn(startLineNumber);
114
92
  var endLineMaxColumn = model === null || model === void 0 ? void 0 : model.getLineMaxColumn(endLineNumber);
115
93
  var wholeLineRange = range.setStartPosition(startLineNumber, startLineMinColumn).setEndPosition(endLineNumber, endLineMaxColumn);
116
94
  return model === null || model === void 0 ? void 0 : model.getValueInRange(wholeLineRange);
117
95
  }
118
-
119
96
  handleEditorInitialized(innerEditor) {
120
97
  var {
121
98
  focusOnMount,
@@ -132,21 +109,16 @@ class ScriptEditor extends Component {
132
109
  });
133
110
  MonacoUtils.setEOL(innerEditor);
134
111
  MonacoUtils.registerPasteHandler(innerEditor);
135
-
136
112
  if (session != null && settings && sessionLanguage === settings.language) {
137
113
  this.initContextActions();
138
114
  this.initCodeCompletion();
139
115
  }
140
-
141
116
  innerEditor.onDidChangeModelContent(onChange);
142
-
143
117
  if (focusOnMount != null && focusOnMount) {
144
118
  innerEditor.focus();
145
119
  }
146
-
147
120
  onEditorInitialized(this.editor);
148
121
  }
149
-
150
122
  handleEditorWillDestroy(innerEditor) {
151
123
  log.debug('handleEditorWillDestroy');
152
124
  var {
@@ -160,18 +132,15 @@ class ScriptEditor extends Component {
160
132
  });
161
133
  this.editor = undefined;
162
134
  }
163
-
164
135
  handleRun() {
165
136
  var {
166
137
  onRunCommand
167
138
  } = this.props;
168
139
  var command = this.getValue();
169
-
170
140
  if (command != null) {
171
141
  onRunCommand(command);
172
142
  }
173
143
  }
174
-
175
144
  handleRunSelected() {
176
145
  var {
177
146
  onRunCommand
@@ -179,17 +148,14 @@ class ScriptEditor extends Component {
179
148
  var command = this.getSelectedCommand();
180
149
  onRunCommand(command);
181
150
  }
182
-
183
151
  initContextActions() {
184
152
  if (this.contextActionCleanups.length > 0) {
185
153
  log.error('Context actions already initialized.');
186
154
  return;
187
155
  }
188
-
189
156
  if (!this.editor) {
190
157
  return;
191
158
  }
192
-
193
159
  var cleanups = [];
194
160
  cleanups.push(this.editor.addAction({
195
161
  id: 'run-code',
@@ -213,107 +179,87 @@ class ScriptEditor extends Component {
213
179
  }));
214
180
  this.contextActionCleanups = cleanups;
215
181
  }
216
-
217
182
  deInitContextActions() {
218
183
  if (this.contextActionCleanups.length > 0) {
219
184
  this.contextActionCleanups.forEach(cleanup => cleanup.dispose());
220
185
  this.contextActionCleanups = [];
221
186
  }
222
187
  }
223
-
224
188
  updateShortcuts() {
225
189
  this.deInitContextActions();
226
190
  this.initContextActions();
227
191
  }
228
-
229
192
  initCodeCompletion() {
230
193
  if (this.completionCleanup != null) {
231
194
  log.error('Code completion already initialized.');
232
195
  return;
233
196
  }
234
-
235
197
  var {
236
198
  session
237
199
  } = this.props;
238
200
  log.debug('initCodeCompletion', this.editor, session);
239
-
240
201
  if (this.editor && session != null) {
241
202
  this.completionCleanup = MonacoUtils.openDocument(this.editor, session);
242
203
  }
243
204
  }
244
-
245
205
  deInitCodeCompletion() {
246
206
  var {
247
207
  session
248
208
  } = this.props;
249
209
  log.debug('deInitCodeCompletion', this.editor, session);
250
-
251
210
  if (this.completionCleanup) {
252
211
  this.completionCleanup.dispose();
253
212
  this.completionCleanup = undefined;
254
213
  }
255
-
256
214
  if (this.editor && session != null) {
257
215
  MonacoUtils.closeDocument(this.editor, session);
258
216
  }
259
217
  }
260
-
261
218
  append(text) {
262
219
  var focus = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
263
220
  assertNotNull(this.editor);
264
221
  var model = this.editor.getModel();
265
222
  assertNotNull(model);
266
223
  var currentText = model.getValue();
267
-
268
224
  if (currentText) {
269
225
  model.setValue("".concat(currentText, "\n").concat(text));
270
226
  } else {
271
227
  model.setValue("".concat(text));
272
228
  }
273
-
274
229
  var lastLine = model.getLineCount();
275
230
  var column = model.getLineLength(lastLine) + 1;
276
231
  this.editor.setPosition({
277
232
  lineNumber: lastLine,
278
233
  column
279
234
  });
280
-
281
235
  if (focus) {
282
236
  this.editor.focus();
283
237
  }
284
238
  }
285
-
286
239
  updateDimensions() {
287
240
  log.debug('updateDimensions');
288
-
289
241
  if (this.editor) {
290
242
  this.editor.layout();
291
243
  }
292
244
  }
293
-
294
245
  focus() {
295
246
  log.debug('focus');
296
-
297
247
  if (this.editor) {
298
248
  this.editor.focus();
299
249
  }
300
250
  }
301
-
302
251
  toggleFind() {
303
252
  if (this.editorComponent.current) {
304
253
  this.editorComponent.current.toggleFind();
305
254
  }
306
255
  }
307
-
308
256
  setLanguage(language) {
309
257
  if (this.editorComponent.current && language !== undefined) {
310
258
  this.editorComponent.current.setLanguage(language);
311
259
  }
312
260
  }
313
-
314
261
  render() {
315
262
  var _settings$language;
316
-
317
263
  var {
318
264
  error,
319
265
  isLoaded,
@@ -347,9 +293,7 @@ class ScriptEditor extends Component {
347
293
  session: session
348
294
  }))));
349
295
  }
350
-
351
296
  }
352
-
353
297
  _defineProperty(ScriptEditor, "defaultProps", {
354
298
  error: null,
355
299
  isLoading: false,
@@ -360,6 +304,5 @@ _defineProperty(ScriptEditor, "defaultProps", {
360
304
  onEditorWillDestroy: () => undefined,
361
305
  session: null
362
306
  });
363
-
364
307
  export default ScriptEditor;
365
308
  //# sourceMappingURL=ScriptEditor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ScriptEditor.js","names":["React","Component","LoadingOverlay","ShortcutRegistry","Log","assertNotNull","editor","Editor","MonacoCompletionProvider","MonacoUtils","SHORTCUTS","log","module","ScriptEditor","constructor","props","handleEditorInitialized","bind","handleEditorWillDestroy","handleRun","handleRunSelected","updateShortcuts","contextActionCleanups","editorComponent","createRef","state","model","componentDidMount","addEventListener","componentDidUpdate","prevProps","sessionLanguage","settings","language","languageChanged","debug","setLanguage","sessionDisconnected","languageMatch","prevLanguageMatch","undefined","deInitContextActions","deInitCodeCompletion","sessionConnected","initContextActions","initCodeCompletion","componentWillUnmount","removeEventListener","getValue","error","getSelectedCommand","range","getSelection","getModel","startLineNumber","endColumn","endLineNumber","startLineMinColumn","getLineMinColumn","endLineMaxColumn","getLineMaxColumn","wholeLineRange","setStartPosition","setEndPosition","getValueInRange","innerEditor","focusOnMount","onChange","onEditorInitialized","session","setState","setEOL","registerPasteHandler","onDidChangeModelContent","focus","onEditorWillDestroy","onRunCommand","command","length","cleanups","push","addAction","id","label","keybindings","getMonacoKeyCodeFromShortcut","NOTEBOOK","RUN","contextMenuGroupId","contextMenuOrder","run","RUN_SELECTED","forEach","cleanup","dispose","completionCleanup","openDocument","closeDocument","append","text","currentText","setValue","lastLine","getLineCount","column","getLineLength","setPosition","lineNumber","updateDimensions","layout","toggleFind","current","render","isLoaded","isLoading","errorMessage","editorLanguage","completionProviderEnabled"],"sources":["../../src/notebook/ScriptEditor.tsx"],"sourcesContent":["/**\n * Script editor for large blocks of code\n */\nimport React, { Component, ReactElement, RefObject } from 'react';\nimport { LoadingOverlay, ShortcutRegistry } from '@deephaven/components';\nimport Log from '@deephaven/log';\nimport { IdeSession } from '@deephaven/jsapi-shim';\nimport { assertNotNull } from '@deephaven/utils';\nimport { editor, IDisposable } from 'monaco-editor';\nimport Editor from './Editor';\nimport { MonacoCompletionProvider, MonacoUtils } from '../monaco';\nimport './ScriptEditor.scss';\nimport SHORTCUTS from '../ConsoleShortcuts';\n\nconst log = Log.module('ScriptEditor');\n\ninterface ScriptEditorProps {\n error?: { message?: string };\n isLoading: boolean;\n isLoaded: boolean;\n focusOnMount?: boolean;\n onChange: (e: editor.IModelContentChangedEvent) => void;\n onRunCommand: (command: string) => void;\n onEditorInitialized: (editor: editor.IStandaloneCodeEditor) => void;\n onEditorWillDestroy: (editor: editor.IStandaloneCodeEditor) => void;\n session: IdeSession;\n sessionLanguage?: string;\n settings?: editor.IStandaloneEditorConstructionOptions;\n}\n\ninterface ScriptEditorState {\n model: editor.ITextModel | null;\n}\n\nclass ScriptEditor extends Component<ScriptEditorProps, ScriptEditorState> {\n static defaultProps = {\n error: null,\n isLoading: false,\n isLoaded: false,\n focusOnMount: true,\n onChange: (): void => undefined,\n onEditorInitialized: (): void => undefined,\n onEditorWillDestroy: (): void => undefined,\n session: null,\n };\n\n constructor(props: ScriptEditorProps) {\n super(props);\n this.handleEditorInitialized = this.handleEditorInitialized.bind(this);\n this.handleEditorWillDestroy = this.handleEditorWillDestroy.bind(this);\n this.handleRun = this.handleRun.bind(this);\n this.handleRunSelected = this.handleRunSelected.bind(this);\n this.updateShortcuts = this.updateShortcuts.bind(this);\n\n this.contextActionCleanups = [];\n this.editorComponent = React.createRef();\n\n this.state = {\n model: null,\n };\n }\n\n componentDidMount(): void {\n ShortcutRegistry.addEventListener('onUpdate', this.updateShortcuts);\n }\n\n componentDidUpdate(prevProps: ScriptEditorProps): void {\n const { sessionLanguage, settings } = this.props;\n\n const language = settings?.language;\n\n const languageChanged = language !== prevProps.settings?.language;\n if (languageChanged) {\n log.debug('Set language', language);\n this.setLanguage(language);\n }\n\n const sessionDisconnected =\n sessionLanguage == null && prevProps.sessionLanguage != null;\n const languageMatch = language === sessionLanguage;\n const prevLanguageMatch =\n prevProps.settings?.language === prevProps.sessionLanguage;\n if (\n sessionDisconnected ||\n (sessionLanguage !== undefined && prevLanguageMatch && !languageMatch)\n ) {\n // Session disconnected or language changed from matching the session language to non-matching\n log.debug('De-init completion and context actions');\n this.deInitContextActions();\n this.deInitCodeCompletion();\n }\n\n const sessionConnected =\n sessionLanguage != null && prevProps.sessionLanguage == null;\n if (\n (sessionConnected && languageMatch) ||\n (sessionLanguage !== undefined && !prevLanguageMatch && languageMatch)\n ) {\n // Session connected with a matching language or notebook language changed to matching\n log.debug('Init completion and context actions');\n this.initContextActions();\n this.initCodeCompletion();\n }\n }\n\n componentWillUnmount(): void {\n ShortcutRegistry.removeEventListener('onUpdate', this.updateShortcuts);\n }\n\n contextActionCleanups: IDisposable[];\n\n completionCleanup?: IDisposable;\n\n editor?: editor.IStandaloneCodeEditor;\n\n editorComponent: RefObject<Editor>;\n\n getValue(): string | null {\n if (this.editor) {\n return this.editor.getValue();\n }\n log.error('Editor not initialized');\n return null;\n }\n\n getSelectedCommand(): string {\n const range = this.editor?.getSelection();\n assertNotNull(range);\n const model = this.editor?.getModel();\n assertNotNull(model);\n const { startLineNumber, endColumn } = range;\n let { endLineNumber } = range;\n if (endColumn === 1 && endLineNumber > startLineNumber) {\n endLineNumber -= 1;\n }\n const startLineMinColumn = model?.getLineMinColumn(startLineNumber);\n const endLineMaxColumn = model?.getLineMaxColumn(endLineNumber);\n const wholeLineRange = range\n .setStartPosition(startLineNumber, startLineMinColumn)\n .setEndPosition(endLineNumber, endLineMaxColumn);\n return model?.getValueInRange(wholeLineRange);\n }\n\n handleEditorInitialized(innerEditor: editor.IStandaloneCodeEditor): void {\n const {\n focusOnMount,\n onChange,\n onEditorInitialized,\n settings,\n session,\n sessionLanguage,\n } = this.props;\n\n log.debug('handleEditorInitialized', sessionLanguage, session, settings);\n\n this.editor = innerEditor;\n this.setState({ model: this.editor.getModel() });\n\n MonacoUtils.setEOL(innerEditor);\n MonacoUtils.registerPasteHandler(innerEditor);\n\n if (session != null && settings && sessionLanguage === settings.language) {\n this.initContextActions();\n this.initCodeCompletion();\n }\n\n innerEditor.onDidChangeModelContent(onChange);\n if (focusOnMount != null && focusOnMount) {\n innerEditor.focus();\n }\n\n onEditorInitialized(this.editor);\n }\n\n handleEditorWillDestroy(innerEditor: editor.IStandaloneCodeEditor): void {\n log.debug('handleEditorWillDestroy');\n const { onEditorWillDestroy } = this.props;\n onEditorWillDestroy(innerEditor);\n this.deInitContextActions();\n this.deInitCodeCompletion();\n this.setState({ model: null });\n this.editor = undefined;\n }\n\n handleRun(): void {\n const { onRunCommand } = this.props;\n const command = this.getValue();\n if (command != null) {\n onRunCommand(command);\n }\n }\n\n handleRunSelected(): void {\n const { onRunCommand } = this.props;\n const command = this.getSelectedCommand();\n onRunCommand(command);\n }\n\n initContextActions(): void {\n if (this.contextActionCleanups.length > 0) {\n log.error('Context actions already initialized.');\n return;\n }\n\n if (!this.editor) {\n return;\n }\n\n const cleanups = [];\n cleanups.push(\n this.editor.addAction({\n id: 'run-code',\n label: 'Run',\n keybindings: [\n MonacoUtils.getMonacoKeyCodeFromShortcut(SHORTCUTS.NOTEBOOK.RUN),\n ],\n contextMenuGroupId: 'navigation',\n contextMenuOrder: 1.5,\n\n run: () => {\n this.handleRun();\n },\n })\n );\n\n cleanups.push(\n this.editor.addAction({\n id: 'run-selected-code',\n label: 'Run Selected',\n keybindings: [\n MonacoUtils.getMonacoKeyCodeFromShortcut(\n SHORTCUTS.NOTEBOOK.RUN_SELECTED\n ),\n ],\n contextMenuGroupId: 'navigation',\n contextMenuOrder: 1.5,\n\n run: () => {\n this.handleRunSelected();\n },\n })\n );\n\n this.contextActionCleanups = cleanups;\n }\n\n deInitContextActions(): void {\n if (this.contextActionCleanups.length > 0) {\n this.contextActionCleanups.forEach(cleanup => cleanup.dispose());\n this.contextActionCleanups = [];\n }\n }\n\n updateShortcuts(): void {\n this.deInitContextActions();\n this.initContextActions();\n }\n\n initCodeCompletion(): void {\n if (this.completionCleanup != null) {\n log.error('Code completion already initialized.');\n return;\n }\n const { session } = this.props;\n log.debug('initCodeCompletion', this.editor, session);\n if (this.editor && session != null) {\n this.completionCleanup = MonacoUtils.openDocument(this.editor, session);\n }\n }\n\n deInitCodeCompletion(): void {\n const { session } = this.props;\n log.debug('deInitCodeCompletion', this.editor, session);\n if (this.completionCleanup) {\n this.completionCleanup.dispose();\n this.completionCleanup = undefined;\n }\n if (this.editor && session != null) {\n MonacoUtils.closeDocument(this.editor, session);\n }\n }\n\n append(text: string, focus = true): void {\n assertNotNull(this.editor);\n const model = this.editor.getModel();\n assertNotNull(model);\n const currentText = model.getValue();\n if (currentText) {\n model.setValue(`${currentText}\\n${text}`);\n } else {\n model.setValue(`${text}`);\n }\n\n const lastLine = model.getLineCount();\n const column = model.getLineLength(lastLine) + 1;\n\n this.editor.setPosition({ lineNumber: lastLine, column });\n\n if (focus) {\n this.editor.focus();\n }\n }\n\n updateDimensions(): void {\n log.debug('updateDimensions');\n if (this.editor) {\n this.editor.layout();\n }\n }\n\n focus(): void {\n log.debug('focus');\n if (this.editor) {\n this.editor.focus();\n }\n }\n\n toggleFind(): void {\n if (this.editorComponent.current) {\n this.editorComponent.current.toggleFind();\n }\n }\n\n setLanguage(language?: string): void {\n if (this.editorComponent.current && language !== undefined) {\n this.editorComponent.current.setLanguage(language);\n }\n }\n\n render(): ReactElement {\n const {\n error,\n isLoaded,\n isLoading,\n session,\n sessionLanguage,\n settings,\n } = this.props;\n const { model } = this.state;\n const errorMessage = error ? `Unable to open document. ${error}` : null;\n const editorLanguage = settings ? settings.language ?? null : null;\n const completionProviderEnabled =\n model && session && editorLanguage === sessionLanguage;\n\n return (\n <>\n {(error || isLoading) && (\n <div className=\"h-100 w-100 position-relative\">\n <LoadingOverlay\n errorMessage={errorMessage}\n isLoading={isLoading}\n isLoaded={isLoaded}\n />\n </div>\n )}\n\n {isLoaded && (\n <div className=\"h-100 w-100 script-editor\">\n {settings && (\n <>\n <Editor\n ref={this.editorComponent}\n settings={settings}\n onEditorInitialized={this.handleEditorInitialized}\n onEditorWillDestroy={this.handleEditorWillDestroy}\n />\n {completionProviderEnabled != null &&\n completionProviderEnabled && (\n <MonacoCompletionProvider\n model={model}\n language={editorLanguage}\n session={session}\n />\n )}\n </>\n )}\n </div>\n )}\n </>\n );\n }\n}\n\nexport default ScriptEditor;\n"],"mappings":"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"}
1
+ {"version":3,"file":"ScriptEditor.js","names":["React","Component","LoadingOverlay","ShortcutRegistry","Log","assertNotNull","editor","Editor","MonacoCompletionProvider","MonacoUtils","SHORTCUTS","log","module","ScriptEditor","constructor","props","handleEditorInitialized","bind","handleEditorWillDestroy","handleRun","handleRunSelected","updateShortcuts","contextActionCleanups","editorComponent","createRef","state","model","componentDidMount","addEventListener","componentDidUpdate","prevProps","sessionLanguage","settings","language","languageChanged","debug","setLanguage","sessionDisconnected","languageMatch","prevLanguageMatch","undefined","deInitContextActions","deInitCodeCompletion","sessionConnected","initContextActions","initCodeCompletion","componentWillUnmount","removeEventListener","getValue","error","getSelectedCommand","range","getSelection","getModel","startLineNumber","endColumn","endLineNumber","startLineMinColumn","getLineMinColumn","endLineMaxColumn","getLineMaxColumn","wholeLineRange","setStartPosition","setEndPosition","getValueInRange","innerEditor","focusOnMount","onChange","onEditorInitialized","session","setState","setEOL","registerPasteHandler","onDidChangeModelContent","focus","onEditorWillDestroy","onRunCommand","command","length","cleanups","push","addAction","id","label","keybindings","getMonacoKeyCodeFromShortcut","NOTEBOOK","RUN","contextMenuGroupId","contextMenuOrder","run","RUN_SELECTED","forEach","cleanup","dispose","completionCleanup","openDocument","closeDocument","append","text","currentText","setValue","lastLine","getLineCount","column","getLineLength","setPosition","lineNumber","updateDimensions","layout","toggleFind","current","render","isLoaded","isLoading","errorMessage","editorLanguage","completionProviderEnabled"],"sources":["../../src/notebook/ScriptEditor.tsx"],"sourcesContent":["/**\n * Script editor for large blocks of code\n */\nimport React, { Component, ReactElement, RefObject } from 'react';\nimport { LoadingOverlay, ShortcutRegistry } from '@deephaven/components';\nimport Log from '@deephaven/log';\nimport { IdeSession } from '@deephaven/jsapi-shim';\nimport { assertNotNull } from '@deephaven/utils';\nimport { editor, IDisposable } from 'monaco-editor';\nimport Editor from './Editor';\nimport { MonacoCompletionProvider, MonacoUtils } from '../monaco';\nimport './ScriptEditor.scss';\nimport SHORTCUTS from '../ConsoleShortcuts';\n\nconst log = Log.module('ScriptEditor');\n\ninterface ScriptEditorProps {\n error?: { message?: string };\n isLoading: boolean;\n isLoaded: boolean;\n focusOnMount?: boolean;\n onChange: (e: editor.IModelContentChangedEvent) => void;\n onRunCommand: (command: string) => void;\n onEditorInitialized: (editor: editor.IStandaloneCodeEditor) => void;\n onEditorWillDestroy: (editor: editor.IStandaloneCodeEditor) => void;\n session: IdeSession | null;\n sessionLanguage?: string;\n settings?: editor.IStandaloneEditorConstructionOptions;\n}\n\ninterface ScriptEditorState {\n model: editor.ITextModel | null;\n}\n\nclass ScriptEditor extends Component<ScriptEditorProps, ScriptEditorState> {\n static defaultProps = {\n error: null,\n isLoading: false,\n isLoaded: false,\n focusOnMount: true,\n onChange: (): void => undefined,\n onEditorInitialized: (): void => undefined,\n onEditorWillDestroy: (): void => undefined,\n session: null,\n };\n\n constructor(props: ScriptEditorProps) {\n super(props);\n this.handleEditorInitialized = this.handleEditorInitialized.bind(this);\n this.handleEditorWillDestroy = this.handleEditorWillDestroy.bind(this);\n this.handleRun = this.handleRun.bind(this);\n this.handleRunSelected = this.handleRunSelected.bind(this);\n this.updateShortcuts = this.updateShortcuts.bind(this);\n\n this.contextActionCleanups = [];\n this.editorComponent = React.createRef();\n\n this.state = {\n model: null,\n };\n }\n\n componentDidMount(): void {\n ShortcutRegistry.addEventListener('onUpdate', this.updateShortcuts);\n }\n\n componentDidUpdate(prevProps: ScriptEditorProps): void {\n const { sessionLanguage, settings } = this.props;\n\n const language = settings?.language;\n\n const languageChanged = language !== prevProps.settings?.language;\n if (languageChanged) {\n log.debug('Set language', language);\n this.setLanguage(language);\n }\n\n const sessionDisconnected =\n sessionLanguage == null && prevProps.sessionLanguage != null;\n const languageMatch = language === sessionLanguage;\n const prevLanguageMatch =\n prevProps.settings?.language === prevProps.sessionLanguage;\n if (\n sessionDisconnected ||\n (sessionLanguage !== undefined && prevLanguageMatch && !languageMatch)\n ) {\n // Session disconnected or language changed from matching the session language to non-matching\n log.debug('De-init completion and context actions');\n this.deInitContextActions();\n this.deInitCodeCompletion();\n }\n\n const sessionConnected =\n sessionLanguage != null && prevProps.sessionLanguage == null;\n if (\n (sessionConnected && languageMatch) ||\n (sessionLanguage !== undefined && !prevLanguageMatch && languageMatch)\n ) {\n // Session connected with a matching language or notebook language changed to matching\n log.debug('Init completion and context actions');\n this.initContextActions();\n this.initCodeCompletion();\n }\n }\n\n componentWillUnmount(): void {\n ShortcutRegistry.removeEventListener('onUpdate', this.updateShortcuts);\n }\n\n contextActionCleanups: IDisposable[];\n\n completionCleanup?: IDisposable;\n\n editor?: editor.IStandaloneCodeEditor;\n\n editorComponent: RefObject<Editor>;\n\n getValue(): string | null {\n if (this.editor) {\n return this.editor.getValue();\n }\n log.error('Editor not initialized');\n return null;\n }\n\n getSelectedCommand(): string {\n const range = this.editor?.getSelection();\n assertNotNull(range);\n const model = this.editor?.getModel();\n assertNotNull(model);\n const { startLineNumber, endColumn } = range;\n let { endLineNumber } = range;\n if (endColumn === 1 && endLineNumber > startLineNumber) {\n endLineNumber -= 1;\n }\n const startLineMinColumn = model?.getLineMinColumn(startLineNumber);\n const endLineMaxColumn = model?.getLineMaxColumn(endLineNumber);\n const wholeLineRange = range\n .setStartPosition(startLineNumber, startLineMinColumn)\n .setEndPosition(endLineNumber, endLineMaxColumn);\n return model?.getValueInRange(wholeLineRange);\n }\n\n handleEditorInitialized(innerEditor: editor.IStandaloneCodeEditor): void {\n const {\n focusOnMount,\n onChange,\n onEditorInitialized,\n settings,\n session,\n sessionLanguage,\n } = this.props;\n\n log.debug('handleEditorInitialized', sessionLanguage, session, settings);\n\n this.editor = innerEditor;\n this.setState({ model: this.editor.getModel() });\n\n MonacoUtils.setEOL(innerEditor);\n MonacoUtils.registerPasteHandler(innerEditor);\n\n if (session != null && settings && sessionLanguage === settings.language) {\n this.initContextActions();\n this.initCodeCompletion();\n }\n\n innerEditor.onDidChangeModelContent(onChange);\n if (focusOnMount != null && focusOnMount) {\n innerEditor.focus();\n }\n\n onEditorInitialized(this.editor);\n }\n\n handleEditorWillDestroy(innerEditor: editor.IStandaloneCodeEditor): void {\n log.debug('handleEditorWillDestroy');\n const { onEditorWillDestroy } = this.props;\n onEditorWillDestroy(innerEditor);\n this.deInitContextActions();\n this.deInitCodeCompletion();\n this.setState({ model: null });\n this.editor = undefined;\n }\n\n handleRun(): void {\n const { onRunCommand } = this.props;\n const command = this.getValue();\n if (command != null) {\n onRunCommand(command);\n }\n }\n\n handleRunSelected(): void {\n const { onRunCommand } = this.props;\n const command = this.getSelectedCommand();\n onRunCommand(command);\n }\n\n initContextActions(): void {\n if (this.contextActionCleanups.length > 0) {\n log.error('Context actions already initialized.');\n return;\n }\n\n if (!this.editor) {\n return;\n }\n\n const cleanups = [];\n cleanups.push(\n this.editor.addAction({\n id: 'run-code',\n label: 'Run',\n keybindings: [\n MonacoUtils.getMonacoKeyCodeFromShortcut(SHORTCUTS.NOTEBOOK.RUN),\n ],\n contextMenuGroupId: 'navigation',\n contextMenuOrder: 1.5,\n\n run: () => {\n this.handleRun();\n },\n })\n );\n\n cleanups.push(\n this.editor.addAction({\n id: 'run-selected-code',\n label: 'Run Selected',\n keybindings: [\n MonacoUtils.getMonacoKeyCodeFromShortcut(\n SHORTCUTS.NOTEBOOK.RUN_SELECTED\n ),\n ],\n contextMenuGroupId: 'navigation',\n contextMenuOrder: 1.5,\n\n run: () => {\n this.handleRunSelected();\n },\n })\n );\n\n this.contextActionCleanups = cleanups;\n }\n\n deInitContextActions(): void {\n if (this.contextActionCleanups.length > 0) {\n this.contextActionCleanups.forEach(cleanup => cleanup.dispose());\n this.contextActionCleanups = [];\n }\n }\n\n updateShortcuts(): void {\n this.deInitContextActions();\n this.initContextActions();\n }\n\n initCodeCompletion(): void {\n if (this.completionCleanup != null) {\n log.error('Code completion already initialized.');\n return;\n }\n const { session } = this.props;\n log.debug('initCodeCompletion', this.editor, session);\n if (this.editor && session != null) {\n this.completionCleanup = MonacoUtils.openDocument(this.editor, session);\n }\n }\n\n deInitCodeCompletion(): void {\n const { session } = this.props;\n log.debug('deInitCodeCompletion', this.editor, session);\n if (this.completionCleanup) {\n this.completionCleanup.dispose();\n this.completionCleanup = undefined;\n }\n if (this.editor && session != null) {\n MonacoUtils.closeDocument(this.editor, session);\n }\n }\n\n append(text: string, focus = true): void {\n assertNotNull(this.editor);\n const model = this.editor.getModel();\n assertNotNull(model);\n const currentText = model.getValue();\n if (currentText) {\n model.setValue(`${currentText}\\n${text}`);\n } else {\n model.setValue(`${text}`);\n }\n\n const lastLine = model.getLineCount();\n const column = model.getLineLength(lastLine) + 1;\n\n this.editor.setPosition({ lineNumber: lastLine, column });\n\n if (focus) {\n this.editor.focus();\n }\n }\n\n updateDimensions(): void {\n log.debug('updateDimensions');\n if (this.editor) {\n this.editor.layout();\n }\n }\n\n focus(): void {\n log.debug('focus');\n if (this.editor) {\n this.editor.focus();\n }\n }\n\n toggleFind(): void {\n if (this.editorComponent.current) {\n this.editorComponent.current.toggleFind();\n }\n }\n\n setLanguage(language?: string): void {\n if (this.editorComponent.current && language !== undefined) {\n this.editorComponent.current.setLanguage(language);\n }\n }\n\n render(): ReactElement {\n const {\n error,\n isLoaded,\n isLoading,\n session,\n sessionLanguage,\n settings,\n } = this.props;\n const { model } = this.state;\n const errorMessage = error ? `Unable to open document. ${error}` : null;\n const editorLanguage = settings ? settings.language ?? null : null;\n const completionProviderEnabled =\n model && session && editorLanguage === sessionLanguage;\n\n return (\n <>\n {(error || isLoading) && (\n <div className=\"h-100 w-100 position-relative\">\n <LoadingOverlay\n errorMessage={errorMessage}\n isLoading={isLoading}\n isLoaded={isLoaded}\n />\n </div>\n )}\n\n {isLoaded && (\n <div className=\"h-100 w-100 script-editor\">\n {settings && (\n <>\n <Editor\n ref={this.editorComponent}\n settings={settings}\n onEditorInitialized={this.handleEditorInitialized}\n onEditorWillDestroy={this.handleEditorWillDestroy}\n />\n {completionProviderEnabled != null &&\n completionProviderEnabled && (\n <MonacoCompletionProvider\n model={model}\n language={editorLanguage}\n session={session}\n />\n )}\n </>\n )}\n </div>\n )}\n </>\n );\n }\n}\n\nexport default ScriptEditor;\n"],"mappings":"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"}
@@ -3,7 +3,6 @@ var LANGUAGES = {
3
3
  python: 'Python',
4
4
  scala: 'Scala'
5
5
  };
6
-
7
6
  class ScriptEditorUtils {
8
7
  /** Get PQ script language from Monaco language
9
8
  * @paramlanguage Monaco language
@@ -12,6 +11,7 @@ class ScriptEditorUtils {
12
11
  static normalizeScriptLanguage(language) {
13
12
  return LANGUAGES[language] || null;
14
13
  }
14
+
15
15
  /**
16
16
  * Get a tooltip for disabled button based on the session status and language
17
17
  * @param isSessionConnected True if console session connected
@@ -20,21 +20,15 @@ class ScriptEditorUtils {
20
20
  * @param buttonLabel Button label to use in the tooltip message
21
21
  * @returns Tooltip message or `null` if the session is connected and language is matching
22
22
  */
23
-
24
-
25
23
  static getDisabledRunTooltip(isSessionConnected, isLanguageMatching, scriptLanguageLabel, buttonLabel) {
26
24
  if (!isSessionConnected) {
27
25
  return "Console session not connected \u2013 ".concat(buttonLabel, " disabled");
28
26
  }
29
-
30
27
  if (!isLanguageMatching) {
31
28
  return "".concat(scriptLanguageLabel, " doesn't match the session language \u2013 ").concat(buttonLabel, " disabled");
32
29
  }
33
-
34
30
  return null;
35
31
  }
36
-
37
32
  }
38
-
39
33
  export default ScriptEditorUtils;
40
34
  //# sourceMappingURL=ScriptEditorUtils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ScriptEditorUtils.js","names":["LANGUAGES","groovy","python","scala","ScriptEditorUtils","normalizeScriptLanguage","language","getDisabledRunTooltip","isSessionConnected","isLanguageMatching","scriptLanguageLabel","buttonLabel"],"sources":["../../src/notebook/ScriptEditorUtils.ts"],"sourcesContent":["const LANGUAGES = {\n groovy: 'Groovy',\n python: 'Python',\n scala: 'Scala',\n} as const;\n\nclass ScriptEditorUtils {\n /** Get PQ script language from Monaco language\n * @paramlanguage Monaco language\n * @returns PQ script language\n */\n static normalizeScriptLanguage(language: keyof typeof LANGUAGES): string {\n return LANGUAGES[language] || null;\n }\n\n /**\n * Get a tooltip for disabled button based on the session status and language\n * @param isSessionConnected True if console session connected\n * @param isLanguageMatching True if the script language is matching the session language\n * @param scriptLanguageLabel Language label to use in the tooltip message\n * @param buttonLabel Button label to use in the tooltip message\n * @returns Tooltip message or `null` if the session is connected and language is matching\n */\n static getDisabledRunTooltip(\n isSessionConnected: boolean,\n isLanguageMatching: boolean,\n scriptLanguageLabel: string,\n buttonLabel: string\n ): string | null {\n if (!isSessionConnected) {\n return `Console session not connected – ${buttonLabel} disabled`;\n }\n if (!isLanguageMatching) {\n return `${scriptLanguageLabel} doesn't match the session language – ${buttonLabel} disabled`;\n }\n return null;\n }\n}\n\nexport default ScriptEditorUtils;\n"],"mappings":"AAAA,IAAMA,SAAS,GAAG;EAChBC,MAAM,EAAE,QADQ;EAEhBC,MAAM,EAAE,QAFQ;EAGhBC,KAAK,EAAE;AAHS,CAAlB;;AAMA,MAAMC,iBAAN,CAAwB;EACtB;AACF;AACA;AACA;EACgC,OAAvBC,uBAAuB,CAACC,QAAD,EAA2C;IACvE,OAAON,SAAS,CAACM,QAAD,CAAT,IAAuB,IAA9B;EACD;EAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;;;EAC8B,OAArBC,qBAAqB,CAC1BC,kBAD0B,EAE1BC,kBAF0B,EAG1BC,mBAH0B,EAI1BC,WAJ0B,EAKX;IACf,IAAI,CAACH,kBAAL,EAAyB;MACvB,sDAA0CG,WAA1C;IACD;;IACD,IAAI,CAACF,kBAAL,EAAyB;MACvB,iBAAUC,mBAAV,wDAAsEC,WAAtE;IACD;;IACD,OAAO,IAAP;EACD;;AA9BqB;;AAiCxB,eAAeP,iBAAf"}
1
+ {"version":3,"file":"ScriptEditorUtils.js","names":["LANGUAGES","groovy","python","scala","ScriptEditorUtils","normalizeScriptLanguage","language","getDisabledRunTooltip","isSessionConnected","isLanguageMatching","scriptLanguageLabel","buttonLabel"],"sources":["../../src/notebook/ScriptEditorUtils.ts"],"sourcesContent":["const LANGUAGES = {\n groovy: 'Groovy',\n python: 'Python',\n scala: 'Scala',\n} as const;\n\nclass ScriptEditorUtils {\n /** Get PQ script language from Monaco language\n * @paramlanguage Monaco language\n * @returns PQ script language\n */\n static normalizeScriptLanguage(language: keyof typeof LANGUAGES): string {\n return LANGUAGES[language] || null;\n }\n\n /**\n * Get a tooltip for disabled button based on the session status and language\n * @param isSessionConnected True if console session connected\n * @param isLanguageMatching True if the script language is matching the session language\n * @param scriptLanguageLabel Language label to use in the tooltip message\n * @param buttonLabel Button label to use in the tooltip message\n * @returns Tooltip message or `null` if the session is connected and language is matching\n */\n static getDisabledRunTooltip(\n isSessionConnected: boolean,\n isLanguageMatching: boolean,\n scriptLanguageLabel: string,\n buttonLabel: string\n ): string | null {\n if (!isSessionConnected) {\n return `Console session not connected – ${buttonLabel} disabled`;\n }\n if (!isLanguageMatching) {\n return `${scriptLanguageLabel} doesn't match the session language – ${buttonLabel} disabled`;\n }\n return null;\n }\n}\n\nexport default ScriptEditorUtils;\n"],"mappings":"AAAA,IAAMA,SAAS,GAAG;EAChBC,MAAM,EAAE,QAAQ;EAChBC,MAAM,EAAE,QAAQ;EAChBC,KAAK,EAAE;AACT,CAAU;AAEV,MAAMC,iBAAiB,CAAC;EACtB;AACF;AACA;AACA;EACE,OAAOC,uBAAuB,CAACC,QAAgC,EAAU;IACvE,OAAON,SAAS,CAACM,QAAQ,CAAC,IAAI,IAAI;EACpC;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EACE,OAAOC,qBAAqB,CAC1BC,kBAA2B,EAC3BC,kBAA2B,EAC3BC,mBAA2B,EAC3BC,WAAmB,EACJ;IACf,IAAI,CAACH,kBAAkB,EAAE;MACvB,sDAA0CG,WAAW;IACvD;IACA,IAAI,CAACF,kBAAkB,EAAE;MACvB,iBAAUC,mBAAmB,wDAAyCC,WAAW;IACnF;IACA,OAAO,IAAI;EACb;AACF;AAEA,eAAeP,iBAAiB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@deephaven/console",
3
- "version": "0.22.3-deep-bot-test.14+c0d1d46",
3
+ "version": "0.23.0",
4
4
  "description": "Deephaven Console",
5
5
  "author": "Deephaven Data Labs LLC",
6
6
  "license": "Apache-2.0",
@@ -23,13 +23,13 @@
23
23
  "build:sass": "sass --embed-sources --load-path=../../node_modules ./src:./dist"
24
24
  },
25
25
  "dependencies": {
26
- "@deephaven/chart": "^0.22.3-deep-bot-test.14+c0d1d46",
27
- "@deephaven/components": "^0.22.3-deep-bot-test.14+c0d1d46",
28
- "@deephaven/icons": "^0.22.3-deep-bot-test.14+c0d1d46",
29
- "@deephaven/jsapi-shim": "^0.22.3-deep-bot-test.14+c0d1d46",
30
- "@deephaven/log": "^0.22.3-deep-bot-test.14+c0d1d46",
31
- "@deephaven/storage": "^0.22.3-deep-bot-test.14+c0d1d46",
32
- "@deephaven/utils": "^0.22.3-deep-bot-test.14+c0d1d46",
26
+ "@deephaven/chart": "^0.23.0",
27
+ "@deephaven/components": "^0.23.0",
28
+ "@deephaven/icons": "^0.23.0",
29
+ "@deephaven/jsapi-shim": "^0.23.0",
30
+ "@deephaven/log": "^0.23.0",
31
+ "@deephaven/storage": "^0.23.0",
32
+ "@deephaven/utils": "^0.23.0",
33
33
  "@fortawesome/react-fontawesome": "^0.1.18",
34
34
  "classnames": "^2.3.1",
35
35
  "lodash.debounce": "^4.0.8",
@@ -47,8 +47,8 @@
47
47
  "react-dom": "^17.x"
48
48
  },
49
49
  "devDependencies": {
50
- "@deephaven/mocks": "^0.22.3-deep-bot-test.14+c0d1d46",
51
- "@deephaven/tsconfig": "^0.22.3-deep-bot-test.14+c0d1d46"
50
+ "@deephaven/mocks": "^0.23.0",
51
+ "@deephaven/tsconfig": "^0.23.0"
52
52
  },
53
53
  "files": [
54
54
  "dist"
@@ -59,5 +59,5 @@
59
59
  "publishConfig": {
60
60
  "access": "public"
61
61
  },
62
- "gitHead": "c0d1d4666f35b21fc8601a6f59a348710f03ca13"
62
+ "gitHead": "94defbc26a5e0e2e3da3d71b5ae770c5bc8155e3"
63
63
  }