@deephaven/console 0.11.1 → 0.11.2-beta.13

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.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/notebook/ScriptEditor.jsx"],"names":["React","Component","PropTypes","LoadingOverlay","ShortcutRegistry","Log","Editor","MonacoCompletionProvider","MonacoUtils","SHORTCUTS","log","module","ScriptEditor","constructor","props","handleEditorInitialized","bind","handleEditorWillDestroy","handleRun","handleRunSelected","updateShortcuts","contextActionCleanups","completionCleanup","editor","editorComponent","createRef","state","model","componentDidMount","addEventListener","componentDidUpdate","prevProps","sessionLanguage","settings","language","languageChanged","debug","setLanguage","sessionDisconnected","languageMatch","prevLanguageMatch","deInitContextActions","deInitCodeCompletion","sessionConnected","initContextActions","initCodeCompletion","componentWillUnmount","removeEventListener","getValue","error","getSelectedCommand","range","getSelection","getModel","startLineNumber","endLineNumber","startLineMinColumn","getLineMinColumn","endLineMaxColumn","getLineMaxColumn","wholeLineRange","setStartPosition","setEndPosition","getValueInRange","focusOnMount","onChange","session","setState","setEOL","registerPasteHandler","onDidChangeModelContent","focus","onRunCommand","command","length","cleanups","push","addAction","id","label","keybindings","getMonacoKeyCodeFromShortcut","NOTEBOOK","RUN","precondition","keybindingContext","contextMenuGroupId","contextMenuOrder","run","RUN_SELECTED","forEach","cleanup","dispose","openDocument","closeDocument","append","text","currentText","setValue","lastLine","getLineCount","column","getLineLength","setPosition","lineNumber","updateDimensions","layout","toggleFind","current","render","isLoaded","isLoading","errorMessage","editorLanguage","completionProviderEnabled","propTypes","shape","message","string","bool","func","isRequired","value","defaultProps"],"mappings":"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","sourcesContent":["/**\n * Script editor for large blocks of code\n */\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { LoadingOverlay, ShortcutRegistry } from '@deephaven/components';\nimport Log from '@deephaven/log';\nimport Editor from './Editor';\nimport { MonacoCompletionProvider, MonacoUtils } from '../monaco';\nimport './ScriptEditor.scss';\nimport SHORTCUTS from '../ConsoleShortcuts';\n\nconst log = Log.module('ScriptEditor');\n\nclass ScriptEditor extends Component {\n constructor(props) {\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.completionCleanup = null;\n this.editor = null;\n this.editorComponent = React.createRef();\n\n this.state = {\n model: null,\n };\n }\n\n componentDidMount() {\n ShortcutRegistry.addEventListener('onUpdate', this.updateShortcuts);\n }\n\n componentDidUpdate(prevProps) {\n const { sessionLanguage, settings } = this.props;\n const { language } = settings;\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 && 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 && !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() {\n ShortcutRegistry.removeEventListener('onUpdate', this.updateShortcuts);\n }\n\n getValue() {\n if (this.editor) {\n return this.editor.getValue();\n }\n log.error('Editor not initialized');\n return null;\n }\n\n getSelectedCommand() {\n const range = this.editor.getSelection();\n const model = this.editor.getModel();\n const { startLineNumber, endLineNumber } = range;\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(editor) {\n const {\n focusOnMount,\n onChange,\n settings,\n session,\n sessionLanguage,\n } = this.props;\n\n log.debug('handleEditorInitialized', sessionLanguage, session, settings);\n\n this.editor = editor;\n this.setState({ model: this.editor.getModel() });\n\n MonacoUtils.setEOL(editor);\n MonacoUtils.registerPasteHandler(editor);\n\n if (session && settings && sessionLanguage === settings.language) {\n this.initContextActions();\n this.initCodeCompletion();\n }\n\n editor.onDidChangeModelContent(onChange);\n if (focusOnMount) {\n editor.focus();\n }\n }\n\n handleEditorWillDestroy() {\n log.debug('handleEditorWillDestroy');\n this.deInitContextActions();\n this.deInitCodeCompletion();\n this.setState({ model: null });\n this.editor = null;\n }\n\n handleRun() {\n const { onRunCommand } = this.props;\n const command = this.getValue();\n onRunCommand(command);\n }\n\n handleRunSelected() {\n const { onRunCommand } = this.props;\n const command = this.getSelectedCommand();\n onRunCommand(command);\n }\n\n initContextActions() {\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 precondition: null,\n\n keybindingContext: null,\n contextMenuGroupId: 'navigation',\n contextMenuOrder: 1.5,\n\n run: () => {\n this.handleRun();\n return null;\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 precondition: null,\n keybindingContext: null,\n contextMenuGroupId: 'navigation',\n contextMenuOrder: 1.5,\n\n run: () => {\n this.handleRunSelected();\n return null;\n },\n })\n );\n\n this.contextActionCleanups = cleanups;\n }\n\n deInitContextActions() {\n if (this.contextActionCleanups.length > 0) {\n this.contextActionCleanups.forEach(cleanup => cleanup.dispose());\n this.contextActionCleanups = [];\n }\n }\n\n updateShortcuts() {\n this.deInitContextActions();\n this.initContextActions();\n }\n\n initCodeCompletion() {\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) {\n this.completionCleanup = MonacoUtils.openDocument(this.editor, session);\n }\n }\n\n deInitCodeCompletion() {\n const { session } = this.props;\n log.debug('deInitCodeCompletion', this.editor, session);\n if (this.completionCleanup) {\n this.completionCleanup.dispose();\n this.completionCleanup = null;\n }\n if (this.editor && session) {\n MonacoUtils.closeDocument(this.editor, session);\n }\n }\n\n append(text, focus = true) {\n const model = this.editor.getModel();\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() {\n log.debug('updateDimensions');\n if (this.editor) {\n this.editor.layout();\n }\n }\n\n focus() {\n log.debug('focus');\n if (this.editor) {\n this.editor.focus();\n }\n }\n\n toggleFind() {\n if (this.editorComponent.current) {\n this.editorComponent.current.toggleFind();\n }\n }\n\n setLanguage(language) {\n if (this.editorComponent.current) {\n this.editorComponent.current.setLanguage(language);\n }\n }\n\n render() {\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;\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 && (\n <MonacoCompletionProvider\n model={model}\n language={editorLanguage}\n session={session}\n />\n )}\n </>\n )}\n </div>\n )}\n </>\n );\n }\n}\n\nScriptEditor.propTypes = {\n error: PropTypes.shape({ message: PropTypes.string }),\n isLoading: PropTypes.bool,\n isLoaded: PropTypes.bool,\n focusOnMount: PropTypes.bool,\n onChange: PropTypes.func,\n onRunCommand: PropTypes.func.isRequired,\n session: PropTypes.shape({}),\n sessionLanguage: PropTypes.string,\n settings: PropTypes.shape({\n language: PropTypes.string,\n value: PropTypes.string,\n }),\n};\n\nScriptEditor.defaultProps = {\n error: null,\n isLoading: false,\n isLoaded: false,\n focusOnMount: true,\n onChange: () => {},\n session: null,\n sessionLanguage: null,\n settings: null,\n};\n\nexport default ScriptEditor;\n"],"file":"ScriptEditor.js"}
1
+ {"version":3,"sources":["../../src/notebook/ScriptEditor.jsx"],"names":["React","Component","PropTypes","LoadingOverlay","ShortcutRegistry","Log","Editor","MonacoCompletionProvider","MonacoUtils","SHORTCUTS","log","module","ScriptEditor","constructor","props","handleEditorInitialized","bind","handleEditorWillDestroy","handleRun","handleRunSelected","updateShortcuts","contextActionCleanups","completionCleanup","editor","editorComponent","createRef","state","model","componentDidMount","addEventListener","componentDidUpdate","prevProps","sessionLanguage","settings","language","languageChanged","debug","setLanguage","sessionDisconnected","languageMatch","prevLanguageMatch","deInitContextActions","deInitCodeCompletion","sessionConnected","initContextActions","initCodeCompletion","componentWillUnmount","removeEventListener","getValue","error","getSelectedCommand","range","getSelection","getModel","startLineNumber","endColumn","endLineNumber","startLineMinColumn","getLineMinColumn","endLineMaxColumn","getLineMaxColumn","wholeLineRange","setStartPosition","setEndPosition","getValueInRange","focusOnMount","onChange","session","setState","setEOL","registerPasteHandler","onDidChangeModelContent","focus","onRunCommand","command","length","cleanups","push","addAction","id","label","keybindings","getMonacoKeyCodeFromShortcut","NOTEBOOK","RUN","precondition","keybindingContext","contextMenuGroupId","contextMenuOrder","run","RUN_SELECTED","forEach","cleanup","dispose","openDocument","closeDocument","append","text","currentText","setValue","lastLine","getLineCount","column","getLineLength","setPosition","lineNumber","updateDimensions","layout","toggleFind","current","render","isLoaded","isLoading","errorMessage","editorLanguage","completionProviderEnabled","propTypes","shape","message","string","bool","func","isRequired","value","defaultProps"],"mappings":"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","sourcesContent":["/**\n * Script editor for large blocks of code\n */\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { LoadingOverlay, ShortcutRegistry } from '@deephaven/components';\nimport Log from '@deephaven/log';\nimport Editor from './Editor';\nimport { MonacoCompletionProvider, MonacoUtils } from '../monaco';\nimport './ScriptEditor.scss';\nimport SHORTCUTS from '../ConsoleShortcuts';\n\nconst log = Log.module('ScriptEditor');\n\nclass ScriptEditor extends Component {\n constructor(props) {\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.completionCleanup = null;\n this.editor = null;\n this.editorComponent = React.createRef();\n\n this.state = {\n model: null,\n };\n }\n\n componentDidMount() {\n ShortcutRegistry.addEventListener('onUpdate', this.updateShortcuts);\n }\n\n componentDidUpdate(prevProps) {\n const { sessionLanguage, settings } = this.props;\n const { language } = settings;\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 && 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 && !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() {\n ShortcutRegistry.removeEventListener('onUpdate', this.updateShortcuts);\n }\n\n getValue() {\n if (this.editor) {\n return this.editor.getValue();\n }\n log.error('Editor not initialized');\n return null;\n }\n\n getSelectedCommand() {\n const range = this.editor.getSelection();\n const model = this.editor.getModel();\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(editor) {\n const {\n focusOnMount,\n onChange,\n settings,\n session,\n sessionLanguage,\n } = this.props;\n\n log.debug('handleEditorInitialized', sessionLanguage, session, settings);\n\n this.editor = editor;\n this.setState({ model: this.editor.getModel() });\n\n MonacoUtils.setEOL(editor);\n MonacoUtils.registerPasteHandler(editor);\n\n if (session && settings && sessionLanguage === settings.language) {\n this.initContextActions();\n this.initCodeCompletion();\n }\n\n editor.onDidChangeModelContent(onChange);\n if (focusOnMount) {\n editor.focus();\n }\n }\n\n handleEditorWillDestroy() {\n log.debug('handleEditorWillDestroy');\n this.deInitContextActions();\n this.deInitCodeCompletion();\n this.setState({ model: null });\n this.editor = null;\n }\n\n handleRun() {\n const { onRunCommand } = this.props;\n const command = this.getValue();\n onRunCommand(command);\n }\n\n handleRunSelected() {\n const { onRunCommand } = this.props;\n const command = this.getSelectedCommand();\n onRunCommand(command);\n }\n\n initContextActions() {\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 precondition: null,\n\n keybindingContext: null,\n contextMenuGroupId: 'navigation',\n contextMenuOrder: 1.5,\n\n run: () => {\n this.handleRun();\n return null;\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 precondition: null,\n keybindingContext: null,\n contextMenuGroupId: 'navigation',\n contextMenuOrder: 1.5,\n\n run: () => {\n this.handleRunSelected();\n return null;\n },\n })\n );\n\n this.contextActionCleanups = cleanups;\n }\n\n deInitContextActions() {\n if (this.contextActionCleanups.length > 0) {\n this.contextActionCleanups.forEach(cleanup => cleanup.dispose());\n this.contextActionCleanups = [];\n }\n }\n\n updateShortcuts() {\n this.deInitContextActions();\n this.initContextActions();\n }\n\n initCodeCompletion() {\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) {\n this.completionCleanup = MonacoUtils.openDocument(this.editor, session);\n }\n }\n\n deInitCodeCompletion() {\n const { session } = this.props;\n log.debug('deInitCodeCompletion', this.editor, session);\n if (this.completionCleanup) {\n this.completionCleanup.dispose();\n this.completionCleanup = null;\n }\n if (this.editor && session) {\n MonacoUtils.closeDocument(this.editor, session);\n }\n }\n\n append(text, focus = true) {\n const model = this.editor.getModel();\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() {\n log.debug('updateDimensions');\n if (this.editor) {\n this.editor.layout();\n }\n }\n\n focus() {\n log.debug('focus');\n if (this.editor) {\n this.editor.focus();\n }\n }\n\n toggleFind() {\n if (this.editorComponent.current) {\n this.editorComponent.current.toggleFind();\n }\n }\n\n setLanguage(language) {\n if (this.editorComponent.current) {\n this.editorComponent.current.setLanguage(language);\n }\n }\n\n render() {\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;\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 && (\n <MonacoCompletionProvider\n model={model}\n language={editorLanguage}\n session={session}\n />\n )}\n </>\n )}\n </div>\n )}\n </>\n );\n }\n}\n\nScriptEditor.propTypes = {\n error: PropTypes.shape({ message: PropTypes.string }),\n isLoading: PropTypes.bool,\n isLoaded: PropTypes.bool,\n focusOnMount: PropTypes.bool,\n onChange: PropTypes.func,\n onRunCommand: PropTypes.func.isRequired,\n session: PropTypes.shape({}),\n sessionLanguage: PropTypes.string,\n settings: PropTypes.shape({\n language: PropTypes.string,\n value: PropTypes.string,\n }),\n};\n\nScriptEditor.defaultProps = {\n error: null,\n isLoading: false,\n isLoaded: false,\n focusOnMount: true,\n onChange: () => {},\n session: null,\n sessionLanguage: null,\n settings: null,\n};\n\nexport default ScriptEditor;\n"],"file":"ScriptEditor.js"}
package/package.json CHANGED
@@ -1,13 +1,14 @@
1
1
  {
2
2
  "name": "@deephaven/console",
3
- "version": "0.11.1",
3
+ "version": "0.11.2-beta.13+86de449",
4
4
  "description": "Deephaven Console",
5
5
  "author": "Deephaven Data Labs LLC",
6
6
  "license": "Apache-2.0",
7
7
  "type": "module",
8
8
  "repository": {
9
9
  "type": "git",
10
- "url": "https://github.com/deephaven/web-client-ui"
10
+ "url": "https://github.com/deephaven/web-client-ui.git",
11
+ "directory": "packages/console"
11
12
  },
12
13
  "main": "dist/index.js",
13
14
  "source": "src/index.js",
@@ -29,10 +30,10 @@
29
30
  "start": "cross-env NODE_ENV=development npm run watch"
30
31
  },
31
32
  "dependencies": {
32
- "@deephaven/icons": "^0.11.0",
33
- "@deephaven/jsapi-shim": "^0.11.0",
34
- "@deephaven/storage": "^0.11.1",
35
- "@deephaven/utils": "^0.11.0",
33
+ "@deephaven/icons": "^0.11.2-beta.13+86de449",
34
+ "@deephaven/jsapi-shim": "^0.11.2-beta.13+86de449",
35
+ "@deephaven/storage": "^0.11.2-beta.13+86de449",
36
+ "@deephaven/utils": "^0.11.2-beta.13+86de449",
36
37
  "@fortawesome/react-fontawesome": "^0.1.12",
37
38
  "classnames": "^2.3.1",
38
39
  "jszip": "3.2.2",
@@ -53,10 +54,10 @@
53
54
  },
54
55
  "devDependencies": {
55
56
  "@babel/cli": "^7.16.0",
56
- "@deephaven/components": "^0.11.0",
57
- "@deephaven/log": "^0.11.0",
58
- "@deephaven/mocks": "^0.11.0",
59
- "@deephaven/tsconfig": "^0.11.0",
57
+ "@deephaven/components": "^0.11.2-beta.13+86de449",
58
+ "@deephaven/log": "^0.11.2-beta.13+86de449",
59
+ "@deephaven/mocks": "^0.11.2-beta.13+86de449",
60
+ "@deephaven/tsconfig": "^0.11.2-beta.13+86de449",
60
61
  "@types/react": "^17.0.2",
61
62
  "@types/react-dom": "^17.0.2",
62
63
  "cross-env": "^7.0.2",
@@ -76,5 +77,5 @@
76
77
  "publishConfig": {
77
78
  "access": "public"
78
79
  },
79
- "gitHead": "4cafc84c183c436f982add964f1d56325291bc27"
80
+ "gitHead": "86de449cb19f7006618a1bf42b92f713104661e4"
80
81
  }