@deephaven/console 0.42.1-beta.1 → 0.42.1-beta.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/notebook/ScriptEditor.d.ts.map +1 -1
- package/dist/notebook/ScriptEditor.js +4 -3
- package/dist/notebook/ScriptEditor.js.map +1 -1
- package/dist/notebook/ScriptEditorUtils.d.ts +7 -0
- package/dist/notebook/ScriptEditorUtils.d.ts.map +1 -1
- package/dist/notebook/ScriptEditorUtils.js +18 -0
- package/dist/notebook/ScriptEditorUtils.js.map +1 -1
- package/package.json +12 -12
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScriptEditor.d.ts","sourceRoot":"","sources":["../../src/notebook/ScriptEditor.tsx"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAc,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGlE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEzD,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,MAAM,MAAM,UAAU,CAAC;AAE9B,OAAO,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"ScriptEditor.d.ts","sourceRoot":"","sources":["../../src/notebook/ScriptEditor.tsx"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAc,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGlE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEzD,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,MAAM,MAAM,UAAU,CAAC;AAE9B,OAAO,qBAAqB,CAAC;AAM7B,UAAU,iBAAiB;IACzB,KAAK,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7B,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;IAClB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,QAAQ,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,yBAAyB,KAAK,IAAI,CAAC;IACxD,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,mBAAmB,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,qBAAqB,KAAK,IAAI,CAAC;IACpE,mBAAmB,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,qBAAqB,KAAK,IAAI,CAAC;IACpE,OAAO,EAAE,UAAU,GAAG,IAAI,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC,oCAAoC,CAAC;CACxD;AAED,UAAU,iBAAiB;IACzB,KAAK,EAAE,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC;CACjC;AAED,cAAM,YAAa,SAAQ,SAAS,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;IACxE,MAAM,CAAC,YAAY;;;;;wBAKH,IAAI;mCACO,IAAI;mCACJ,IAAI;;MAE7B;gBAEU,KAAK,EAAE,iBAAiB;IAgBpC,iBAAiB,IAAI,IAAI;IAIzB,kBAAkB,CAAC,SAAS,EAAE,iBAAiB,GAAG,IAAI;IAuCtD,oBAAoB,IAAI,IAAI;IAI5B,qBAAqB,EAAE,WAAW,EAAE,CAAC;IAErC,iBAAiB,CAAC,EAAE,WAAW,CAAC;IAEhC,MAAM,CAAC,EAAE,MAAM,CAAC,qBAAqB,CAAC;IAEtC,eAAe,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;IAEnC,QAAQ,IAAI,MAAM,GAAG,IAAI;IAQzB,kBAAkB,IAAI,MAAM;IAmB5B,uBAAuB,CAAC,WAAW,EAAE,MAAM,CAAC,qBAAqB,GAAG,IAAI;IA+BxE,uBAAuB,CAAC,WAAW,EAAE,MAAM,CAAC,qBAAqB,GAAG,IAAI;IAUxE,SAAS,IAAI,IAAI;IAQjB,iBAAiB,IAAI,IAAI;IAMzB,kBAAkB,IAAI,IAAI;IAgD1B,oBAAoB,IAAI,IAAI;IAO5B,eAAe,IAAI,IAAI;IAKvB,kBAAkB,IAAI,IAAI;IAY1B,oBAAoB,IAAI,IAAI;IAY5B,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,UAAO,GAAG,IAAI;IAqBxC,gBAAgB,IAAI,IAAI;IAOxB,KAAK,IAAI,IAAI;IAOb,UAAU,IAAI,IAAI;IAMlB,WAAW,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI;IAMpC,MAAM,IAAI,YAAY;CAoDvB;AAED,eAAe,YAAY,CAAC"}
|
|
@@ -13,6 +13,7 @@ import Editor from "./Editor.js";
|
|
|
13
13
|
import { MonacoProviders, MonacoUtils } from "../monaco/index.js";
|
|
14
14
|
import "./ScriptEditor.css";
|
|
15
15
|
import SHORTCUTS from "../ConsoleShortcuts.js";
|
|
16
|
+
import ScriptEditorUtils from "./ScriptEditorUtils.js";
|
|
16
17
|
var log = Log.module('ScriptEditor');
|
|
17
18
|
class ScriptEditor extends Component {
|
|
18
19
|
constructor(props) {
|
|
@@ -90,10 +91,10 @@ class ScriptEditor extends Component {
|
|
|
90
91
|
if (endColumn === 1 && endLineNumber > startLineNumber) {
|
|
91
92
|
endLineNumber -= 1;
|
|
92
93
|
}
|
|
93
|
-
var startLineMinColumn = model
|
|
94
|
-
var endLineMaxColumn = model
|
|
94
|
+
var startLineMinColumn = model.getLineMinColumn(startLineNumber);
|
|
95
|
+
var endLineMaxColumn = model.getLineMaxColumn(endLineNumber);
|
|
95
96
|
var wholeLineRange = range.setStartPosition(startLineNumber, startLineMinColumn).setEndPosition(endLineNumber, endLineMaxColumn);
|
|
96
|
-
return model
|
|
97
|
+
return ScriptEditorUtils.outdentCode(model.getValueInRange(wholeLineRange));
|
|
97
98
|
}
|
|
98
99
|
handleEditorInitialized(innerEditor) {
|
|
99
100
|
var {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScriptEditor.js","names":["React","Component","LoadingOverlay","ShortcutRegistry","Log","assertNotNull","editor","Editor","MonacoProviders","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 type { IdeSession } from '@deephaven/jsapi-types';\nimport { assertNotNull } from '@deephaven/utils';\nimport { editor, IDisposable } from 'monaco-editor';\nimport Editor from './Editor';\nimport { MonacoProviders, 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 if (this.editor && session != null) {\n MonacoUtils.closeDocument(this.editor, session);\n }\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 <MonacoProviders\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":";;;AAAA;AACA;AACA;AACA,OAAOA,KAAK,IAAIC,SAAS,QAAiC,OAAO;AACjE,SAASC,cAAc,EAAEC,gBAAgB,QAAQ,uBAAuB;AACxE,OAAOC,GAAG,MAAM,gBAAgB;AAEhC,SAASC,aAAa,QAAQ,kBAAkB;AAChD,SAASC,MAAM,QAAqB,eAAe;AAAC,OAC7CC,MAAM;AAAA,SACJC,eAAe,EAAEC,WAAW;AAAA;AAAA,OAE9BC,SAAS;AAEhB,IAAMC,GAAG,GAAGP,GAAG,CAACQ,MAAM,CAAC,cAAc,CAAC;AAoBtC,MAAMC,YAAY,SAASZ,SAAS,CAAuC;EAYzEa,WAAW,CAACC,KAAwB,EAAE;IACpC,KAAK,CAACA,KAAK,CAAC;IAAC;IAAA;IAAA;IAAA;IACb,IAAI,CAACC,uBAAuB,GAAG,IAAI,CAACA,uBAAuB,CAACC,IAAI,CAAC,IAAI,CAAC;IACtE,IAAI,CAACC,uBAAuB,GAAG,IAAI,CAACA,uBAAuB,CAACD,IAAI,CAAC,IAAI,CAAC;IACtE,IAAI,CAACE,SAAS,GAAG,IAAI,CAACA,SAAS,CAACF,IAAI,CAAC,IAAI,CAAC;IAC1C,IAAI,CAACG,iBAAiB,GAAG,IAAI,CAACA,iBAAiB,CAACH,IAAI,CAAC,IAAI,CAAC;IAC1D,IAAI,CAACI,eAAe,GAAG,IAAI,CAACA,eAAe,CAACJ,IAAI,CAAC,IAAI,CAAC;IAEtD,IAAI,CAACK,qBAAqB,GAAG,EAAE;IAC/B,IAAI,CAACC,eAAe,gBAAGvB,KAAK,CAACwB,SAAS,EAAE;IAExC,IAAI,CAACC,KAAK,GAAG;MACXC,KAAK,EAAE;IACT,CAAC;EACH;EAEAC,iBAAiB,GAAS;IACxBxB,gBAAgB,CAACyB,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAACP,eAAe,CAAC;EACrE;EAEAQ,kBAAkB,CAACC,SAA4B,EAAQ;IAAA;IACrD,IAAM;MAAEC,eAAe;MAAEC;IAAS,CAAC,GAAG,IAAI,CAACjB,KAAK;IAEhD,IAAMkB,QAAQ,GAAGD,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAEC,QAAQ;IAEnC,IAAMC,eAAe,GAAGD,QAAQ,6BAAKH,SAAS,CAACE,QAAQ,wDAAlB,oBAAoBC,QAAQ;IACjE,IAAIC,eAAe,EAAE;MACnBvB,GAAG,CAACwB,KAAK,CAAC,cAAc,EAAEF,QAAQ,CAAC;MACnC,IAAI,CAACG,WAAW,CAACH,QAAQ,CAAC;IAC5B;IAEA,IAAMI,mBAAmB,GACvBN,eAAe,IAAI,IAAI,IAAID,SAAS,CAACC,eAAe,IAAI,IAAI;IAC9D,IAAMO,aAAa,GAAGL,QAAQ,KAAKF,eAAe;IAClD,IAAMQ,iBAAiB,GACrB,yBAAAT,SAAS,CAACE,QAAQ,yDAAlB,qBAAoBC,QAAQ,MAAKH,SAAS,CAACC,eAAe;IAC5D,IACEM,mBAAmB,IAClBN,eAAe,KAAKS,SAAS,IAAID,iBAAiB,IAAI,CAACD,aAAc,EACtE;MACA;MACA3B,GAAG,CAACwB,KAAK,CAAC,wCAAwC,CAAC;MACnD,IAAI,CAACM,oBAAoB,EAAE;MAC3B,IAAI,CAACC,oBAAoB,EAAE;IAC7B;IAEA,IAAMC,gBAAgB,GACpBZ,eAAe,IAAI,IAAI,IAAID,SAAS,CAACC,eAAe,IAAI,IAAI;IAC9D,IACGY,gBAAgB,IAAIL,aAAa,IACjCP,eAAe,KAAKS,SAAS,IAAI,CAACD,iBAAiB,IAAID,aAAc,EACtE;MACA;MACA3B,GAAG,CAACwB,KAAK,CAAC,qCAAqC,CAAC;MAChD,IAAI,CAACS,kBAAkB,EAAE;MACzB,IAAI,CAACC,kBAAkB,EAAE;IAC3B;EACF;EAEAC,oBAAoB,GAAS;IAC3B3C,gBAAgB,CAAC4C,mBAAmB,CAAC,UAAU,EAAE,IAAI,CAAC1B,eAAe,CAAC;EACxE;EAUA2B,QAAQ,GAAkB;IACxB,IAAI,IAAI,CAAC1C,MAAM,EAAE;MACf,OAAO,IAAI,CAACA,MAAM,CAAC0C,QAAQ,EAAE;IAC/B;IACArC,GAAG,CAACsC,KAAK,CAAC,wBAAwB,CAAC;IACnC,OAAO,IAAI;EACb;EAEAC,kBAAkB,GAAW;IAAA;IAC3B,IAAMC,KAAK,mBAAG,IAAI,CAAC7C,MAAM,iDAAX,aAAa8C,YAAY,EAAE;IACzC/C,aAAa,CAAC8C,KAAK,CAAC;IACpB,IAAMzB,KAAK,oBAAG,IAAI,CAACpB,MAAM,kDAAX,cAAa+C,QAAQ,EAAE;IACrChD,aAAa,CAACqB,KAAK,CAAC;IACpB,IAAM;MAAE4B,eAAe;MAAEC;IAAU,CAAC,GAAGJ,KAAK;IAC5C,IAAI;MAAEK;IAAc,CAAC,GAAGL,KAAK;IAC7B,IAAII,SAAS,KAAK,CAAC,IAAIC,aAAa,GAAGF,eAAe,EAAE;MACtDE,aAAa,IAAI,CAAC;IACpB;IACA,IAAMC,kBAAkB,GAAG/B,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEgC,gBAAgB,CAACJ,eAAe,CAAC;IACnE,IAAMK,gBAAgB,GAAGjC,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEkC,gBAAgB,CAACJ,aAAa,CAAC;IAC/D,IAAMK,cAAc,GAAGV,KAAK,CACzBW,gBAAgB,CAACR,eAAe,EAAEG,kBAAkB,CAAC,CACrDM,cAAc,CAACP,aAAa,EAAEG,gBAAgB,CAAC;IAClD,OAAOjC,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEsC,eAAe,CAACH,cAAc,CAAC;EAC/C;EAEA7C,uBAAuB,CAACiD,WAAyC,EAAQ;IACvE,IAAM;MACJC,YAAY;MACZC,QAAQ;MACRC,mBAAmB;MACnBpC,QAAQ;MACRqC,OAAO;MACPtC;IACF,CAAC,GAAG,IAAI,CAAChB,KAAK;IAEdJ,GAAG,CAACwB,KAAK,CAAC,yBAAyB,EAAEJ,eAAe,EAAEsC,OAAO,EAAErC,QAAQ,CAAC;IAExE,IAAI,CAAC1B,MAAM,GAAG2D,WAAW;IACzB,IAAI,CAACK,QAAQ,CAAC;MAAE5C,KAAK,EAAE,IAAI,CAACpB,MAAM,CAAC+C,QAAQ;IAAG,CAAC,CAAC;IAEhD5C,WAAW,CAAC8D,MAAM,CAACN,WAAW,CAAC;IAC/BxD,WAAW,CAAC+D,oBAAoB,CAACP,WAAW,CAAC;IAE7C,IAAII,OAAO,IAAI,IAAI,IAAIrC,QAAQ,IAAID,eAAe,KAAKC,QAAQ,CAACC,QAAQ,EAAE;MACxE,IAAI,CAACW,kBAAkB,EAAE;MACzB,IAAI,CAACC,kBAAkB,EAAE;IAC3B;IAEAoB,WAAW,CAACQ,uBAAuB,CAACN,QAAQ,CAAC;IAC7C,IAAID,YAAY,IAAI,IAAI,IAAIA,YAAY,EAAE;MACxCD,WAAW,CAACS,KAAK,EAAE;IACrB;IAEAN,mBAAmB,CAAC,IAAI,CAAC9D,MAAM,CAAC;EAClC;EAEAY,uBAAuB,CAAC+C,WAAyC,EAAQ;IACvEtD,GAAG,CAACwB,KAAK,CAAC,yBAAyB,CAAC;IACpC,IAAM;MAAEwC;IAAoB,CAAC,GAAG,IAAI,CAAC5D,KAAK;IAC1C4D,mBAAmB,CAACV,WAAW,CAAC;IAChC,IAAI,CAACxB,oBAAoB,EAAE;IAC3B,IAAI,CAACC,oBAAoB,EAAE;IAC3B,IAAI,CAAC4B,QAAQ,CAAC;MAAE5C,KAAK,EAAE;IAAK,CAAC,CAAC;IAC9B,IAAI,CAACpB,MAAM,GAAGkC,SAAS;EACzB;EAEArB,SAAS,GAAS;IAChB,IAAM;MAAEyD;IAAa,CAAC,GAAG,IAAI,CAAC7D,KAAK;IACnC,IAAM8D,OAAO,GAAG,IAAI,CAAC7B,QAAQ,EAAE;IAC/B,IAAI6B,OAAO,IAAI,IAAI,EAAE;MACnBD,YAAY,CAACC,OAAO,CAAC;IACvB;EACF;EAEAzD,iBAAiB,GAAS;IACxB,IAAM;MAAEwD;IAAa,CAAC,GAAG,IAAI,CAAC7D,KAAK;IACnC,IAAM8D,OAAO,GAAG,IAAI,CAAC3B,kBAAkB,EAAE;IACzC0B,YAAY,CAACC,OAAO,CAAC;EACvB;EAEAjC,kBAAkB,GAAS;IACzB,IAAI,IAAI,CAACtB,qBAAqB,CAACwD,MAAM,GAAG,CAAC,EAAE;MACzCnE,GAAG,CAACsC,KAAK,CAAC,sCAAsC,CAAC;MACjD;IACF;IAEA,IAAI,CAAC,IAAI,CAAC3C,MAAM,EAAE;MAChB;IACF;IAEA,IAAMyE,QAAQ,GAAG,EAAE;IACnBA,QAAQ,CAACC,IAAI,CACX,IAAI,CAAC1E,MAAM,CAAC2E,SAAS,CAAC;MACpBC,EAAE,EAAE,UAAU;MACdC,KAAK,EAAE,KAAK;MACZC,WAAW,EAAE,CACX3E,WAAW,CAAC4E,4BAA4B,CAAC3E,SAAS,CAAC4E,QAAQ,CAACC,GAAG,CAAC,CACjE;MACDC,kBAAkB,EAAE,YAAY;MAChCC,gBAAgB,EAAE,GAAG;MAErBC,GAAG,EAAE,MAAM;QACT,IAAI,CAACvE,SAAS,EAAE;MAClB;IACF,CAAC,CAAC,CACH;IAED4D,QAAQ,CAACC,IAAI,CACX,IAAI,CAAC1E,MAAM,CAAC2E,SAAS,CAAC;MACpBC,EAAE,EAAE,mBAAmB;MACvBC,KAAK,EAAE,cAAc;MACrBC,WAAW,EAAE,CACX3E,WAAW,CAAC4E,4BAA4B,CACtC3E,SAAS,CAAC4E,QAAQ,CAACK,YAAY,CAChC,CACF;MACDH,kBAAkB,EAAE,YAAY;MAChCC,gBAAgB,EAAE,GAAG;MAErBC,GAAG,EAAE,MAAM;QACT,IAAI,CAACtE,iBAAiB,EAAE;MAC1B;IACF,CAAC,CAAC,CACH;IAED,IAAI,CAACE,qBAAqB,GAAGyD,QAAQ;EACvC;EAEAtC,oBAAoB,GAAS;IAC3B,IAAI,IAAI,CAACnB,qBAAqB,CAACwD,MAAM,GAAG,CAAC,EAAE;MACzC,IAAI,CAACxD,qBAAqB,CAACsE,OAAO,CAACC,OAAO,IAAIA,OAAO,CAACC,OAAO,EAAE,CAAC;MAChE,IAAI,CAACxE,qBAAqB,GAAG,EAAE;IACjC;EACF;EAEAD,eAAe,GAAS;IACtB,IAAI,CAACoB,oBAAoB,EAAE;IAC3B,IAAI,CAACG,kBAAkB,EAAE;EAC3B;EAEAC,kBAAkB,GAAS;IACzB,IAAI,IAAI,CAACkD,iBAAiB,IAAI,IAAI,EAAE;MAClCpF,GAAG,CAACsC,KAAK,CAAC,sCAAsC,CAAC;MACjD;IACF;IACA,IAAM;MAAEoB;IAAQ,CAAC,GAAG,IAAI,CAACtD,KAAK;IAC9BJ,GAAG,CAACwB,KAAK,CAAC,oBAAoB,EAAE,IAAI,CAAC7B,MAAM,EAAE+D,OAAO,CAAC;IACrD,IAAI,IAAI,CAAC/D,MAAM,IAAI+D,OAAO,IAAI,IAAI,EAAE;MAClC,IAAI,CAAC0B,iBAAiB,GAAGtF,WAAW,CAACuF,YAAY,CAAC,IAAI,CAAC1F,MAAM,EAAE+D,OAAO,CAAC;IACzE;EACF;EAEA3B,oBAAoB,GAAS;IAC3B,IAAM;MAAE2B;IAAQ,CAAC,GAAG,IAAI,CAACtD,KAAK;IAC9BJ,GAAG,CAACwB,KAAK,CAAC,sBAAsB,EAAE,IAAI,CAAC7B,MAAM,EAAE+D,OAAO,CAAC;IACvD,IAAI,IAAI,CAAC0B,iBAAiB,EAAE;MAC1B,IAAI,CAACA,iBAAiB,CAACD,OAAO,EAAE;MAChC,IAAI,CAACC,iBAAiB,GAAGvD,SAAS;MAClC,IAAI,IAAI,CAAClC,MAAM,IAAI+D,OAAO,IAAI,IAAI,EAAE;QAClC5D,WAAW,CAACwF,aAAa,CAAC,IAAI,CAAC3F,MAAM,EAAE+D,OAAO,CAAC;MACjD;IACF;EACF;EAEA6B,MAAM,CAACC,IAAY,EAAsB;IAAA,IAApBzB,KAAK,uEAAG,IAAI;IAC/BrE,aAAa,CAAC,IAAI,CAACC,MAAM,CAAC;IAC1B,IAAMoB,KAAK,GAAG,IAAI,CAACpB,MAAM,CAAC+C,QAAQ,EAAE;IACpChD,aAAa,CAACqB,KAAK,CAAC;IACpB,IAAM0E,WAAW,GAAG1E,KAAK,CAACsB,QAAQ,EAAE;IACpC,IAAIoD,WAAW,EAAE;MACf1E,KAAK,CAAC2E,QAAQ,WAAID,WAAW,eAAKD,IAAI,EAAG;IAC3C,CAAC,MAAM;MACLzE,KAAK,CAAC2E,QAAQ,WAAIF,IAAI,EAAG;IAC3B;IAEA,IAAMG,QAAQ,GAAG5E,KAAK,CAAC6E,YAAY,EAAE;IACrC,IAAMC,MAAM,GAAG9E,KAAK,CAAC+E,aAAa,CAACH,QAAQ,CAAC,GAAG,CAAC;IAEhD,IAAI,CAAChG,MAAM,CAACoG,WAAW,CAAC;MAAEC,UAAU,EAAEL,QAAQ;MAAEE;IAAO,CAAC,CAAC;IAEzD,IAAI9B,KAAK,EAAE;MACT,IAAI,CAACpE,MAAM,CAACoE,KAAK,EAAE;IACrB;EACF;EAEAkC,gBAAgB,GAAS;IACvBjG,GAAG,CAACwB,KAAK,CAAC,kBAAkB,CAAC;IAC7B,IAAI,IAAI,CAAC7B,MAAM,EAAE;MACf,IAAI,CAACA,MAAM,CAACuG,MAAM,EAAE;IACtB;EACF;EAEAnC,KAAK,GAAS;IACZ/D,GAAG,CAACwB,KAAK,CAAC,OAAO,CAAC;IAClB,IAAI,IAAI,CAAC7B,MAAM,EAAE;MACf,IAAI,CAACA,MAAM,CAACoE,KAAK,EAAE;IACrB;EACF;EAEAoC,UAAU,GAAS;IACjB,IAAI,IAAI,CAACvF,eAAe,CAACwF,OAAO,EAAE;MAChC,IAAI,CAACxF,eAAe,CAACwF,OAAO,CAACD,UAAU,EAAE;IAC3C;EACF;EAEA1E,WAAW,CAACH,QAAiB,EAAQ;IACnC,IAAI,IAAI,CAACV,eAAe,CAACwF,OAAO,IAAI9E,QAAQ,KAAKO,SAAS,EAAE;MAC1D,IAAI,CAACjB,eAAe,CAACwF,OAAO,CAAC3E,WAAW,CAACH,QAAQ,CAAC;IACpD;EACF;EAEA+E,MAAM,GAAiB;IAAA;IACrB,IAAM;MACJ/D,KAAK;MACLgE,QAAQ;MACRC,SAAS;MACT7C,OAAO;MACPtC,eAAe;MACfC;IACF,CAAC,GAAG,IAAI,CAACjB,KAAK;IACd,IAAM;MAAEW;IAAM,CAAC,GAAG,IAAI,CAACD,KAAK;IAC5B,IAAM0F,YAAY,GAAGlE,KAAK,sCAA+BA,KAAK,IAAK,IAAI;IACvE,IAAMmE,cAAc,GAAGpF,QAAQ,yBAAGA,QAAQ,CAACC,QAAQ,mEAAI,IAAI,GAAG,IAAI;IAClE,IAAMoF,yBAAyB,GAC7B3F,KAAK,IAAI2C,OAAO,IAAI+C,cAAc,KAAKrF,eAAe;IAExD,oBACE,0CACG,CAACkB,KAAK,IAAIiE,SAAS,kBAClB;MAAK,SAAS,EAAC;IAA+B,gBAC5C,oBAAC,cAAc;MACb,YAAY,EAAEC,YAAa;MAC3B,SAAS,EAAED,SAAU;MACrB,QAAQ,EAAED;IAAS,EACnB,CAEL,EAEAA,QAAQ,iBACP;MAAK,SAAS,EAAC;IAA2B,GACvCjF,QAAQ,iBACP,uDACE,oBAAC,MAAM;MACL,GAAG,EAAE,IAAI,CAACT,eAAgB;MAC1B,QAAQ,EAAES,QAAS;MACnB,mBAAmB,EAAE,IAAI,CAAChB,uBAAwB;MAClD,mBAAmB,EAAE,IAAI,CAACE;IAAwB,EAClD,EACDmG,yBAAyB,IAAI,IAAI,IAChCA,yBAAyB,iBACvB,oBAAC,eAAe;MACd,KAAK,EAAE3F,KAAM;MACb,QAAQ,EAAE0F,cAAe;MACzB,OAAO,EAAE/C;IAAQ,EAEpB,CAEN,CAEJ,CACA;EAEP;AACF;AAAC,gBA3VKxD,YAAY,kBACM;EACpBoC,KAAK,EAAE,IAAI;EACXiE,SAAS,EAAE,KAAK;EAChBD,QAAQ,EAAE,KAAK;EACf/C,YAAY,EAAE,IAAI;EAClBC,QAAQ,EAAE,MAAY3B,SAAS;EAC/B4B,mBAAmB,EAAE,MAAY5B,SAAS;EAC1CmC,mBAAmB,EAAE,MAAYnC,SAAS;EAC1C6B,OAAO,EAAE;AACX,CAAC;AAmVH,eAAexD,YAAY"}
|
|
1
|
+
{"version":3,"file":"ScriptEditor.js","names":["React","Component","LoadingOverlay","ShortcutRegistry","Log","assertNotNull","editor","Editor","MonacoProviders","MonacoUtils","SHORTCUTS","ScriptEditorUtils","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","outdentCode","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 type { IdeSession } from '@deephaven/jsapi-types';\nimport { assertNotNull } from '@deephaven/utils';\nimport { editor, IDisposable } from 'monaco-editor';\nimport Editor from './Editor';\nimport { MonacoProviders, MonacoUtils } from '../monaco';\nimport './ScriptEditor.scss';\nimport SHORTCUTS from '../ConsoleShortcuts';\nimport ScriptEditorUtils from './ScriptEditorUtils';\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\n return ScriptEditorUtils.outdentCode(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 if (this.editor && session != null) {\n MonacoUtils.closeDocument(this.editor, session);\n }\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 <MonacoProviders\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":";;;AAAA;AACA;AACA;AACA,OAAOA,KAAK,IAAIC,SAAS,QAAiC,OAAO;AACjE,SAASC,cAAc,EAAEC,gBAAgB,QAAQ,uBAAuB;AACxE,OAAOC,GAAG,MAAM,gBAAgB;AAEhC,SAASC,aAAa,QAAQ,kBAAkB;AAChD,SAASC,MAAM,QAAqB,eAAe;AAAC,OAC7CC,MAAM;AAAA,SACJC,eAAe,EAAEC,WAAW;AAAA;AAAA,OAE9BC,SAAS;AAAA,OACTC,iBAAiB;AAExB,IAAMC,GAAG,GAAGR,GAAG,CAACS,MAAM,CAAC,cAAc,CAAC;AAoBtC,MAAMC,YAAY,SAASb,SAAS,CAAuC;EAYzEc,WAAW,CAACC,KAAwB,EAAE;IACpC,KAAK,CAACA,KAAK,CAAC;IAAC;IAAA;IAAA;IAAA;IACb,IAAI,CAACC,uBAAuB,GAAG,IAAI,CAACA,uBAAuB,CAACC,IAAI,CAAC,IAAI,CAAC;IACtE,IAAI,CAACC,uBAAuB,GAAG,IAAI,CAACA,uBAAuB,CAACD,IAAI,CAAC,IAAI,CAAC;IACtE,IAAI,CAACE,SAAS,GAAG,IAAI,CAACA,SAAS,CAACF,IAAI,CAAC,IAAI,CAAC;IAC1C,IAAI,CAACG,iBAAiB,GAAG,IAAI,CAACA,iBAAiB,CAACH,IAAI,CAAC,IAAI,CAAC;IAC1D,IAAI,CAACI,eAAe,GAAG,IAAI,CAACA,eAAe,CAACJ,IAAI,CAAC,IAAI,CAAC;IAEtD,IAAI,CAACK,qBAAqB,GAAG,EAAE;IAC/B,IAAI,CAACC,eAAe,gBAAGxB,KAAK,CAACyB,SAAS,EAAE;IAExC,IAAI,CAACC,KAAK,GAAG;MACXC,KAAK,EAAE;IACT,CAAC;EACH;EAEAC,iBAAiB,GAAS;IACxBzB,gBAAgB,CAAC0B,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAACP,eAAe,CAAC;EACrE;EAEAQ,kBAAkB,CAACC,SAA4B,EAAQ;IAAA;IACrD,IAAM;MAAEC,eAAe;MAAEC;IAAS,CAAC,GAAG,IAAI,CAACjB,KAAK;IAEhD,IAAMkB,QAAQ,GAAGD,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAEC,QAAQ;IAEnC,IAAMC,eAAe,GAAGD,QAAQ,6BAAKH,SAAS,CAACE,QAAQ,wDAAlB,oBAAoBC,QAAQ;IACjE,IAAIC,eAAe,EAAE;MACnBvB,GAAG,CAACwB,KAAK,CAAC,cAAc,EAAEF,QAAQ,CAAC;MACnC,IAAI,CAACG,WAAW,CAACH,QAAQ,CAAC;IAC5B;IAEA,IAAMI,mBAAmB,GACvBN,eAAe,IAAI,IAAI,IAAID,SAAS,CAACC,eAAe,IAAI,IAAI;IAC9D,IAAMO,aAAa,GAAGL,QAAQ,KAAKF,eAAe;IAClD,IAAMQ,iBAAiB,GACrB,yBAAAT,SAAS,CAACE,QAAQ,yDAAlB,qBAAoBC,QAAQ,MAAKH,SAAS,CAACC,eAAe;IAC5D,IACEM,mBAAmB,IAClBN,eAAe,KAAKS,SAAS,IAAID,iBAAiB,IAAI,CAACD,aAAc,EACtE;MACA;MACA3B,GAAG,CAACwB,KAAK,CAAC,wCAAwC,CAAC;MACnD,IAAI,CAACM,oBAAoB,EAAE;MAC3B,IAAI,CAACC,oBAAoB,EAAE;IAC7B;IAEA,IAAMC,gBAAgB,GACpBZ,eAAe,IAAI,IAAI,IAAID,SAAS,CAACC,eAAe,IAAI,IAAI;IAC9D,IACGY,gBAAgB,IAAIL,aAAa,IACjCP,eAAe,KAAKS,SAAS,IAAI,CAACD,iBAAiB,IAAID,aAAc,EACtE;MACA;MACA3B,GAAG,CAACwB,KAAK,CAAC,qCAAqC,CAAC;MAChD,IAAI,CAACS,kBAAkB,EAAE;MACzB,IAAI,CAACC,kBAAkB,EAAE;IAC3B;EACF;EAEAC,oBAAoB,GAAS;IAC3B5C,gBAAgB,CAAC6C,mBAAmB,CAAC,UAAU,EAAE,IAAI,CAAC1B,eAAe,CAAC;EACxE;EAUA2B,QAAQ,GAAkB;IACxB,IAAI,IAAI,CAAC3C,MAAM,EAAE;MACf,OAAO,IAAI,CAACA,MAAM,CAAC2C,QAAQ,EAAE;IAC/B;IACArC,GAAG,CAACsC,KAAK,CAAC,wBAAwB,CAAC;IACnC,OAAO,IAAI;EACb;EAEAC,kBAAkB,GAAW;IAAA;IAC3B,IAAMC,KAAK,mBAAG,IAAI,CAAC9C,MAAM,iDAAX,aAAa+C,YAAY,EAAE;IACzChD,aAAa,CAAC+C,KAAK,CAAC;IACpB,IAAMzB,KAAK,oBAAG,IAAI,CAACrB,MAAM,kDAAX,cAAagD,QAAQ,EAAE;IACrCjD,aAAa,CAACsB,KAAK,CAAC;IACpB,IAAM;MAAE4B,eAAe;MAAEC;IAAU,CAAC,GAAGJ,KAAK;IAC5C,IAAI;MAAEK;IAAc,CAAC,GAAGL,KAAK;IAC7B,IAAII,SAAS,KAAK,CAAC,IAAIC,aAAa,GAAGF,eAAe,EAAE;MACtDE,aAAa,IAAI,CAAC;IACpB;IACA,IAAMC,kBAAkB,GAAG/B,KAAK,CAACgC,gBAAgB,CAACJ,eAAe,CAAC;IAClE,IAAMK,gBAAgB,GAAGjC,KAAK,CAACkC,gBAAgB,CAACJ,aAAa,CAAC;IAC9D,IAAMK,cAAc,GAAGV,KAAK,CACzBW,gBAAgB,CAACR,eAAe,EAAEG,kBAAkB,CAAC,CACrDM,cAAc,CAACP,aAAa,EAAEG,gBAAgB,CAAC;IAElD,OAAOjD,iBAAiB,CAACsD,WAAW,CAACtC,KAAK,CAACuC,eAAe,CAACJ,cAAc,CAAC,CAAC;EAC7E;EAEA7C,uBAAuB,CAACkD,WAAyC,EAAQ;IACvE,IAAM;MACJC,YAAY;MACZC,QAAQ;MACRC,mBAAmB;MACnBrC,QAAQ;MACRsC,OAAO;MACPvC;IACF,CAAC,GAAG,IAAI,CAAChB,KAAK;IAEdJ,GAAG,CAACwB,KAAK,CAAC,yBAAyB,EAAEJ,eAAe,EAAEuC,OAAO,EAAEtC,QAAQ,CAAC;IAExE,IAAI,CAAC3B,MAAM,GAAG6D,WAAW;IACzB,IAAI,CAACK,QAAQ,CAAC;MAAE7C,KAAK,EAAE,IAAI,CAACrB,MAAM,CAACgD,QAAQ;IAAG,CAAC,CAAC;IAEhD7C,WAAW,CAACgE,MAAM,CAACN,WAAW,CAAC;IAC/B1D,WAAW,CAACiE,oBAAoB,CAACP,WAAW,CAAC;IAE7C,IAAII,OAAO,IAAI,IAAI,IAAItC,QAAQ,IAAID,eAAe,KAAKC,QAAQ,CAACC,QAAQ,EAAE;MACxE,IAAI,CAACW,kBAAkB,EAAE;MACzB,IAAI,CAACC,kBAAkB,EAAE;IAC3B;IAEAqB,WAAW,CAACQ,uBAAuB,CAACN,QAAQ,CAAC;IAC7C,IAAID,YAAY,IAAI,IAAI,IAAIA,YAAY,EAAE;MACxCD,WAAW,CAACS,KAAK,EAAE;IACrB;IAEAN,mBAAmB,CAAC,IAAI,CAAChE,MAAM,CAAC;EAClC;EAEAa,uBAAuB,CAACgD,WAAyC,EAAQ;IACvEvD,GAAG,CAACwB,KAAK,CAAC,yBAAyB,CAAC;IACpC,IAAM;MAAEyC;IAAoB,CAAC,GAAG,IAAI,CAAC7D,KAAK;IAC1C6D,mBAAmB,CAACV,WAAW,CAAC;IAChC,IAAI,CAACzB,oBAAoB,EAAE;IAC3B,IAAI,CAACC,oBAAoB,EAAE;IAC3B,IAAI,CAAC6B,QAAQ,CAAC;MAAE7C,KAAK,EAAE;IAAK,CAAC,CAAC;IAC9B,IAAI,CAACrB,MAAM,GAAGmC,SAAS;EACzB;EAEArB,SAAS,GAAS;IAChB,IAAM;MAAE0D;IAAa,CAAC,GAAG,IAAI,CAAC9D,KAAK;IACnC,IAAM+D,OAAO,GAAG,IAAI,CAAC9B,QAAQ,EAAE;IAC/B,IAAI8B,OAAO,IAAI,IAAI,EAAE;MACnBD,YAAY,CAACC,OAAO,CAAC;IACvB;EACF;EAEA1D,iBAAiB,GAAS;IACxB,IAAM;MAAEyD;IAAa,CAAC,GAAG,IAAI,CAAC9D,KAAK;IACnC,IAAM+D,OAAO,GAAG,IAAI,CAAC5B,kBAAkB,EAAE;IACzC2B,YAAY,CAACC,OAAO,CAAC;EACvB;EAEAlC,kBAAkB,GAAS;IACzB,IAAI,IAAI,CAACtB,qBAAqB,CAACyD,MAAM,GAAG,CAAC,EAAE;MACzCpE,GAAG,CAACsC,KAAK,CAAC,sCAAsC,CAAC;MACjD;IACF;IAEA,IAAI,CAAC,IAAI,CAAC5C,MAAM,EAAE;MAChB;IACF;IAEA,IAAM2E,QAAQ,GAAG,EAAE;IACnBA,QAAQ,CAACC,IAAI,CACX,IAAI,CAAC5E,MAAM,CAAC6E,SAAS,CAAC;MACpBC,EAAE,EAAE,UAAU;MACdC,KAAK,EAAE,KAAK;MACZC,WAAW,EAAE,CACX7E,WAAW,CAAC8E,4BAA4B,CAAC7E,SAAS,CAAC8E,QAAQ,CAACC,GAAG,CAAC,CACjE;MACDC,kBAAkB,EAAE,YAAY;MAChCC,gBAAgB,EAAE,GAAG;MAErBC,GAAG,EAAE,MAAM;QACT,IAAI,CAACxE,SAAS,EAAE;MAClB;IACF,CAAC,CAAC,CACH;IAED6D,QAAQ,CAACC,IAAI,CACX,IAAI,CAAC5E,MAAM,CAAC6E,SAAS,CAAC;MACpBC,EAAE,EAAE,mBAAmB;MACvBC,KAAK,EAAE,cAAc;MACrBC,WAAW,EAAE,CACX7E,WAAW,CAAC8E,4BAA4B,CACtC7E,SAAS,CAAC8E,QAAQ,CAACK,YAAY,CAChC,CACF;MACDH,kBAAkB,EAAE,YAAY;MAChCC,gBAAgB,EAAE,GAAG;MAErBC,GAAG,EAAE,MAAM;QACT,IAAI,CAACvE,iBAAiB,EAAE;MAC1B;IACF,CAAC,CAAC,CACH;IAED,IAAI,CAACE,qBAAqB,GAAG0D,QAAQ;EACvC;EAEAvC,oBAAoB,GAAS;IAC3B,IAAI,IAAI,CAACnB,qBAAqB,CAACyD,MAAM,GAAG,CAAC,EAAE;MACzC,IAAI,CAACzD,qBAAqB,CAACuE,OAAO,CAACC,OAAO,IAAIA,OAAO,CAACC,OAAO,EAAE,CAAC;MAChE,IAAI,CAACzE,qBAAqB,GAAG,EAAE;IACjC;EACF;EAEAD,eAAe,GAAS;IACtB,IAAI,CAACoB,oBAAoB,EAAE;IAC3B,IAAI,CAACG,kBAAkB,EAAE;EAC3B;EAEAC,kBAAkB,GAAS;IACzB,IAAI,IAAI,CAACmD,iBAAiB,IAAI,IAAI,EAAE;MAClCrF,GAAG,CAACsC,KAAK,CAAC,sCAAsC,CAAC;MACjD;IACF;IACA,IAAM;MAAEqB;IAAQ,CAAC,GAAG,IAAI,CAACvD,KAAK;IAC9BJ,GAAG,CAACwB,KAAK,CAAC,oBAAoB,EAAE,IAAI,CAAC9B,MAAM,EAAEiE,OAAO,CAAC;IACrD,IAAI,IAAI,CAACjE,MAAM,IAAIiE,OAAO,IAAI,IAAI,EAAE;MAClC,IAAI,CAAC0B,iBAAiB,GAAGxF,WAAW,CAACyF,YAAY,CAAC,IAAI,CAAC5F,MAAM,EAAEiE,OAAO,CAAC;IACzE;EACF;EAEA5B,oBAAoB,GAAS;IAC3B,IAAM;MAAE4B;IAAQ,CAAC,GAAG,IAAI,CAACvD,KAAK;IAC9BJ,GAAG,CAACwB,KAAK,CAAC,sBAAsB,EAAE,IAAI,CAAC9B,MAAM,EAAEiE,OAAO,CAAC;IACvD,IAAI,IAAI,CAAC0B,iBAAiB,EAAE;MAC1B,IAAI,CAACA,iBAAiB,CAACD,OAAO,EAAE;MAChC,IAAI,CAACC,iBAAiB,GAAGxD,SAAS;MAClC,IAAI,IAAI,CAACnC,MAAM,IAAIiE,OAAO,IAAI,IAAI,EAAE;QAClC9D,WAAW,CAAC0F,aAAa,CAAC,IAAI,CAAC7F,MAAM,EAAEiE,OAAO,CAAC;MACjD;IACF;EACF;EAEA6B,MAAM,CAACC,IAAY,EAAsB;IAAA,IAApBzB,KAAK,uEAAG,IAAI;IAC/BvE,aAAa,CAAC,IAAI,CAACC,MAAM,CAAC;IAC1B,IAAMqB,KAAK,GAAG,IAAI,CAACrB,MAAM,CAACgD,QAAQ,EAAE;IACpCjD,aAAa,CAACsB,KAAK,CAAC;IACpB,IAAM2E,WAAW,GAAG3E,KAAK,CAACsB,QAAQ,EAAE;IACpC,IAAIqD,WAAW,EAAE;MACf3E,KAAK,CAAC4E,QAAQ,WAAID,WAAW,eAAKD,IAAI,EAAG;IAC3C,CAAC,MAAM;MACL1E,KAAK,CAAC4E,QAAQ,WAAIF,IAAI,EAAG;IAC3B;IAEA,IAAMG,QAAQ,GAAG7E,KAAK,CAAC8E,YAAY,EAAE;IACrC,IAAMC,MAAM,GAAG/E,KAAK,CAACgF,aAAa,CAACH,QAAQ,CAAC,GAAG,CAAC;IAEhD,IAAI,CAAClG,MAAM,CAACsG,WAAW,CAAC;MAAEC,UAAU,EAAEL,QAAQ;MAAEE;IAAO,CAAC,CAAC;IAEzD,IAAI9B,KAAK,EAAE;MACT,IAAI,CAACtE,MAAM,CAACsE,KAAK,EAAE;IACrB;EACF;EAEAkC,gBAAgB,GAAS;IACvBlG,GAAG,CAACwB,KAAK,CAAC,kBAAkB,CAAC;IAC7B,IAAI,IAAI,CAAC9B,MAAM,EAAE;MACf,IAAI,CAACA,MAAM,CAACyG,MAAM,EAAE;IACtB;EACF;EAEAnC,KAAK,GAAS;IACZhE,GAAG,CAACwB,KAAK,CAAC,OAAO,CAAC;IAClB,IAAI,IAAI,CAAC9B,MAAM,EAAE;MACf,IAAI,CAACA,MAAM,CAACsE,KAAK,EAAE;IACrB;EACF;EAEAoC,UAAU,GAAS;IACjB,IAAI,IAAI,CAACxF,eAAe,CAACyF,OAAO,EAAE;MAChC,IAAI,CAACzF,eAAe,CAACyF,OAAO,CAACD,UAAU,EAAE;IAC3C;EACF;EAEA3E,WAAW,CAACH,QAAiB,EAAQ;IACnC,IAAI,IAAI,CAACV,eAAe,CAACyF,OAAO,IAAI/E,QAAQ,KAAKO,SAAS,EAAE;MAC1D,IAAI,CAACjB,eAAe,CAACyF,OAAO,CAAC5E,WAAW,CAACH,QAAQ,CAAC;IACpD;EACF;EAEAgF,MAAM,GAAiB;IAAA;IACrB,IAAM;MACJhE,KAAK;MACLiE,QAAQ;MACRC,SAAS;MACT7C,OAAO;MACPvC,eAAe;MACfC;IACF,CAAC,GAAG,IAAI,CAACjB,KAAK;IACd,IAAM;MAAEW;IAAM,CAAC,GAAG,IAAI,CAACD,KAAK;IAC5B,IAAM2F,YAAY,GAAGnE,KAAK,sCAA+BA,KAAK,IAAK,IAAI;IACvE,IAAMoE,cAAc,GAAGrF,QAAQ,yBAAGA,QAAQ,CAACC,QAAQ,mEAAI,IAAI,GAAG,IAAI;IAClE,IAAMqF,yBAAyB,GAC7B5F,KAAK,IAAI4C,OAAO,IAAI+C,cAAc,KAAKtF,eAAe;IAExD,oBACE,0CACG,CAACkB,KAAK,IAAIkE,SAAS,kBAClB;MAAK,SAAS,EAAC;IAA+B,gBAC5C,oBAAC,cAAc;MACb,YAAY,EAAEC,YAAa;MAC3B,SAAS,EAAED,SAAU;MACrB,QAAQ,EAAED;IAAS,EACnB,CAEL,EAEAA,QAAQ,iBACP;MAAK,SAAS,EAAC;IAA2B,GACvClF,QAAQ,iBACP,uDACE,oBAAC,MAAM;MACL,GAAG,EAAE,IAAI,CAACT,eAAgB;MAC1B,QAAQ,EAAES,QAAS;MACnB,mBAAmB,EAAE,IAAI,CAAChB,uBAAwB;MAClD,mBAAmB,EAAE,IAAI,CAACE;IAAwB,EAClD,EACDoG,yBAAyB,IAAI,IAAI,IAChCA,yBAAyB,iBACvB,oBAAC,eAAe;MACd,KAAK,EAAE5F,KAAM;MACb,QAAQ,EAAE2F,cAAe;MACzB,OAAO,EAAE/C;IAAQ,EAEpB,CAEN,CAEJ,CACA;EAEP;AACF;AAAC,gBA5VKzD,YAAY,kBACM;EACpBoC,KAAK,EAAE,IAAI;EACXkE,SAAS,EAAE,KAAK;EAChBD,QAAQ,EAAE,KAAK;EACf/C,YAAY,EAAE,IAAI;EAClBC,QAAQ,EAAE,MAAY5B,SAAS;EAC/B6B,mBAAmB,EAAE,MAAY7B,SAAS;EAC1CoC,mBAAmB,EAAE,MAAYpC,SAAS;EAC1C8B,OAAO,EAAE;AACX,CAAC;AAoVH,eAAezD,YAAY"}
|
|
@@ -18,6 +18,13 @@ declare class ScriptEditorUtils {
|
|
|
18
18
|
* @returns Tooltip message or `null` if the session is connected and language is matching
|
|
19
19
|
*/
|
|
20
20
|
static getDisabledRunTooltip(isSessionConnected: boolean, isLanguageMatching: boolean, scriptLanguageLabel: string, buttonLabel: string): string | null;
|
|
21
|
+
/**
|
|
22
|
+
* Outdent (opposite of indent) a string so the lowest indent level is 0
|
|
23
|
+
* Assumes each line is indented with the same characters (i.e. no mixed tabs/spaces)
|
|
24
|
+
* @param code The code to outdent
|
|
25
|
+
* @returns A code block where the minimum indent level of a line is 0
|
|
26
|
+
*/
|
|
27
|
+
static outdentCode(code: string): string;
|
|
21
28
|
}
|
|
22
29
|
export default ScriptEditorUtils;
|
|
23
30
|
//# sourceMappingURL=ScriptEditorUtils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScriptEditorUtils.d.ts","sourceRoot":"","sources":["../../src/notebook/ScriptEditorUtils.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,SAAS;;;;CAIL,CAAC;AAEX,cAAM,iBAAiB;IACrB;;;OAGG;IACH,MAAM,CAAC,uBAAuB,CAAC,QAAQ,EAAE,MAAM,OAAO,SAAS,GAAG,MAAM;IAIxE;;;;;;;OAOG;IACH,MAAM,CAAC,qBAAqB,CAC1B,kBAAkB,EAAE,OAAO,EAC3B,kBAAkB,EAAE,OAAO,EAC3B,mBAAmB,EAAE,MAAM,EAC3B,WAAW,EAAE,MAAM,GAClB,MAAM,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"ScriptEditorUtils.d.ts","sourceRoot":"","sources":["../../src/notebook/ScriptEditorUtils.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,SAAS;;;;CAIL,CAAC;AAEX,cAAM,iBAAiB;IACrB;;;OAGG;IACH,MAAM,CAAC,uBAAuB,CAAC,QAAQ,EAAE,MAAM,OAAO,SAAS,GAAG,MAAM;IAIxE;;;;;;;OAOG;IACH,MAAM,CAAC,qBAAqB,CAC1B,kBAAkB,EAAE,OAAO,EAC3B,kBAAkB,EAAE,OAAO,EAC3B,mBAAmB,EAAE,MAAM,EAC3B,WAAW,EAAE,MAAM,GAClB,MAAM,GAAG,IAAI;IAUhB;;;;;OAKG;IACH,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM;CAWhC;AAED,eAAe,iBAAiB,CAAC"}
|
|
@@ -29,6 +29,24 @@ class ScriptEditorUtils {
|
|
|
29
29
|
}
|
|
30
30
|
return null;
|
|
31
31
|
}
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Outdent (opposite of indent) a string so the lowest indent level is 0
|
|
35
|
+
* Assumes each line is indented with the same characters (i.e. no mixed tabs/spaces)
|
|
36
|
+
* @param code The code to outdent
|
|
37
|
+
* @returns A code block where the minimum indent level of a line is 0
|
|
38
|
+
*/
|
|
39
|
+
static outdentCode(code) {
|
|
40
|
+
var lines = code.split('\n');
|
|
41
|
+
var minIndent = lines.reduce((min, line) => {
|
|
42
|
+
var indentLength = line.length - line.trimStart().length;
|
|
43
|
+
if (indentLength === line.length) {
|
|
44
|
+
return min;
|
|
45
|
+
}
|
|
46
|
+
return indentLength < min ? indentLength : min;
|
|
47
|
+
}, Number.MAX_SAFE_INTEGER);
|
|
48
|
+
return lines.map(line => line.slice(minIndent)).join('\n');
|
|
49
|
+
}
|
|
32
50
|
}
|
|
33
51
|
export default ScriptEditorUtils;
|
|
34
52
|
//# 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,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,
|
|
1
|
+
{"version":3,"file":"ScriptEditorUtils.js","names":["LANGUAGES","groovy","python","scala","ScriptEditorUtils","normalizeScriptLanguage","language","getDisabledRunTooltip","isSessionConnected","isLanguageMatching","scriptLanguageLabel","buttonLabel","outdentCode","code","lines","split","minIndent","reduce","min","line","indentLength","length","trimStart","Number","MAX_SAFE_INTEGER","map","slice","join"],"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 /**\n * Outdent (opposite of indent) a string so the lowest indent level is 0\n * Assumes each line is indented with the same characters (i.e. no mixed tabs/spaces)\n * @param code The code to outdent\n * @returns A code block where the minimum indent level of a line is 0\n */\n static outdentCode(code: string) {\n const lines = code.split('\\n');\n const minIndent = lines.reduce((min, line) => {\n const indentLength = line.length - line.trimStart().length;\n if (indentLength === line.length) {\n return min;\n }\n return indentLength < min ? indentLength : min;\n }, Number.MAX_SAFE_INTEGER);\n return lines.map(line => line.slice(minIndent)).join('\\n');\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;;EAEA;AACF;AACA;AACA;AACA;AACA;EACE,OAAOC,WAAW,CAACC,IAAY,EAAE;IAC/B,IAAMC,KAAK,GAAGD,IAAI,CAACE,KAAK,CAAC,IAAI,CAAC;IAC9B,IAAMC,SAAS,GAAGF,KAAK,CAACG,MAAM,CAAC,CAACC,GAAG,EAAEC,IAAI,KAAK;MAC5C,IAAMC,YAAY,GAAGD,IAAI,CAACE,MAAM,GAAGF,IAAI,CAACG,SAAS,EAAE,CAACD,MAAM;MAC1D,IAAID,YAAY,KAAKD,IAAI,CAACE,MAAM,EAAE;QAChC,OAAOH,GAAG;MACZ;MACA,OAAOE,YAAY,GAAGF,GAAG,GAAGE,YAAY,GAAGF,GAAG;IAChD,CAAC,EAAEK,MAAM,CAACC,gBAAgB,CAAC;IAC3B,OAAOV,KAAK,CAACW,GAAG,CAACN,IAAI,IAAIA,IAAI,CAACO,KAAK,CAACV,SAAS,CAAC,CAAC,CAACW,IAAI,CAAC,IAAI,CAAC;EAC5D;AACF;AAEA,eAAevB,iBAAiB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@deephaven/console",
|
|
3
|
-
"version": "0.42.1-beta.
|
|
3
|
+
"version": "0.42.1-beta.4+154ccfcc",
|
|
4
4
|
"description": "Deephaven Console",
|
|
5
5
|
"author": "Deephaven Data Labs LLC",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -23,14 +23,14 @@
|
|
|
23
23
|
"build:sass": "sass --embed-sources --load-path=../../node_modules ./src:./dist"
|
|
24
24
|
},
|
|
25
25
|
"dependencies": {
|
|
26
|
-
"@deephaven/chart": "^0.42.1-beta.
|
|
27
|
-
"@deephaven/components": "^0.42.1-beta.
|
|
28
|
-
"@deephaven/icons": "^0.42.1-beta.
|
|
29
|
-
"@deephaven/jsapi-bootstrap": "^0.42.1-beta.
|
|
30
|
-
"@deephaven/jsapi-types": "^0.42.1-beta.
|
|
31
|
-
"@deephaven/log": "^0.42.1-beta.
|
|
32
|
-
"@deephaven/storage": "^0.42.1-beta.
|
|
33
|
-
"@deephaven/utils": "^0.42.1-beta.
|
|
26
|
+
"@deephaven/chart": "^0.42.1-beta.4+154ccfcc",
|
|
27
|
+
"@deephaven/components": "^0.42.1-beta.4+154ccfcc",
|
|
28
|
+
"@deephaven/icons": "^0.42.1-beta.4+154ccfcc",
|
|
29
|
+
"@deephaven/jsapi-bootstrap": "^0.42.1-beta.4+154ccfcc",
|
|
30
|
+
"@deephaven/jsapi-types": "^0.42.1-beta.4+154ccfcc",
|
|
31
|
+
"@deephaven/log": "^0.42.1-beta.4+154ccfcc",
|
|
32
|
+
"@deephaven/storage": "^0.42.1-beta.4+154ccfcc",
|
|
33
|
+
"@deephaven/utils": "^0.42.1-beta.4+154ccfcc",
|
|
34
34
|
"@fortawesome/react-fontawesome": "^0.2.0",
|
|
35
35
|
"classnames": "^2.3.1",
|
|
36
36
|
"linkifyjs": "^4.1.0",
|
|
@@ -49,8 +49,8 @@
|
|
|
49
49
|
"react-dom": "^17.x"
|
|
50
50
|
},
|
|
51
51
|
"devDependencies": {
|
|
52
|
-
"@deephaven/jsapi-shim": "^0.42.1-beta.
|
|
53
|
-
"@deephaven/mocks": "^0.42.1-beta.
|
|
52
|
+
"@deephaven/jsapi-shim": "^0.42.1-beta.4+154ccfcc",
|
|
53
|
+
"@deephaven/mocks": "^0.42.1-beta.4+154ccfcc"
|
|
54
54
|
},
|
|
55
55
|
"files": [
|
|
56
56
|
"dist"
|
|
@@ -61,5 +61,5 @@
|
|
|
61
61
|
"publishConfig": {
|
|
62
62
|
"access": "public"
|
|
63
63
|
},
|
|
64
|
-
"gitHead": "
|
|
64
|
+
"gitHead": "154ccfccd5a6f9996d67f0fcc71d031985bfd6a5"
|
|
65
65
|
}
|