@deephaven/dashboard-core-plugins 0.14.1-beta.1 → 0.14.2-beta.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.
|
@@ -15,7 +15,7 @@ import { BasicModal, ContextActions, DropdownMenu, Tooltip, GLOBAL_SHORTCUTS } f
|
|
|
15
15
|
import { ScriptEditor, ScriptEditorUtils, SHORTCUTS } from '@deephaven/console';
|
|
16
16
|
import { GLPropTypes } from '@deephaven/dashboard';
|
|
17
17
|
import { FileUtils, NewItemModal } from '@deephaven/file-explorer';
|
|
18
|
-
import { vsSave, vsKebabVertical, dhFileSearch, vsPlay,
|
|
18
|
+
import { vsSave, vsKebabVertical, dhFileSearch, vsPlay, dhRunSelection } from '@deephaven/icons';
|
|
19
19
|
import { getFileStorage } from '@deephaven/redux';
|
|
20
20
|
import classNames from 'classnames';
|
|
21
21
|
import debounce from 'lodash.debounce';
|
|
@@ -1023,7 +1023,7 @@ class NotebookPanel extends Component {
|
|
|
1023
1023
|
onClick: this.handleRunAll,
|
|
1024
1024
|
disabled: runButtonsDisabled
|
|
1025
1025
|
}, /*#__PURE__*/React.createElement(FontAwesomeIcon, {
|
|
1026
|
-
icon:
|
|
1026
|
+
icon: vsPlay,
|
|
1027
1027
|
transform: "grow-4"
|
|
1028
1028
|
}), /*#__PURE__*/React.createElement(Tooltip, null, "Run ", SHORTCUTS.NOTEBOOK.RUN.getDisplayText())), disabledRunButtonTooltip && /*#__PURE__*/React.createElement(Tooltip, null, disabledRunButtonTooltip)), /*#__PURE__*/React.createElement("span", null, /*#__PURE__*/React.createElement("button", {
|
|
1029
1029
|
type: "button",
|
|
@@ -1031,7 +1031,7 @@ class NotebookPanel extends Component {
|
|
|
1031
1031
|
onClick: this.handleRunSelected,
|
|
1032
1032
|
disabled: runButtonsDisabled
|
|
1033
1033
|
}, /*#__PURE__*/React.createElement(FontAwesomeIcon, {
|
|
1034
|
-
icon:
|
|
1034
|
+
icon: dhRunSelection,
|
|
1035
1035
|
transform: "grow-4"
|
|
1036
1036
|
}), /*#__PURE__*/React.createElement(Tooltip, null, "Run Selected", ' ', SHORTCUTS.NOTEBOOK.RUN_SELECTED.getDisplayText())), disabledRunSelectedButtonTooltip && /*#__PURE__*/React.createElement(Tooltip, null, disabledRunSelectedButtonTooltip)), /*#__PURE__*/React.createElement("button", {
|
|
1037
1037
|
type: "button",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/panels/NotebookPanel.jsx"],"names":["React","Component","ReactDOM","PropTypes","memoize","connect","FontAwesomeIcon","BasicModal","ContextActions","DropdownMenu","Tooltip","GLOBAL_SHORTCUTS","ScriptEditor","ScriptEditorUtils","SHORTCUTS","GLPropTypes","FileUtils","NewItemModal","vsSave","vsKebabVertical","dhFileSearch","vsPlay","vsRunAll","getFileStorage","classNames","debounce","Log","Pending","PromiseUtils","ConsoleEvent","NotebookEvent","getDashboardSessionWrapper","Panel","MarkdownNotebook","log","module","DEBOUNCE_PANEL_STATE_UPDATE","NotebookPanel","handleError","error","isCanceled","languageFromFileName","fileName","extension","getExtension","toLowerCase","constructor","props","title","icon","action","handleFind","group","groups","high","shortcut","NOTEBOOK","FIND","order","handleBlur","bind","handleCloseCancel","handleCloseDiscard","handleCloseSave","handleCopy","handleEditorChange","handleFocus","handleLinkClick","handleLoadSuccess","handleLoadError","handlePanelTabClick","handleRenameFile","handleResize","handleRunCommand","handleRunAll","handleRunSelected","handleSave","handleSaveAsCancel","handleSaveAsSubmit","handleSaveError","handleSaveSuccess","handleSessionOpened","handleSessionClosed","handleShow","handleShowRename","handleTab","handleTabFocus","handleTabBlur","handleTransformLinkUri","pending","debouncedSavePanelState","savePanelState","debouncedLoad","load","notebook","tabTitleElement","unsavedIndicator","tabInitOnce","shouldPromptClose","isDashboardActive","session","sessionLanguage","panelState","settings","value","fileMetadata","isPreview","hasFileId","itemName","hasPath","isUnsaved","changeCount","state","isFocused","isLoading","isLoaded","savedChangeCount","showCloseModal","showSaveAsModal","scriptCode","debug","componentDidMount","glContainer","glEventHub","tab","initTab","initNotebookContent","on","RENAME_FILE","componentDidUpdate","prevProps","prevState","setPreviewStatus","componentWillUnmount","flush","cancel","off","emit","UNREGISTER_FILE","initTabCloseOverride","initTabClasses","close","setState","tabElement","element","get","titleElement","querySelector","classList","add","getNotebookValue","notebookValue","getValue","id","registerFileMetadata","Error","closeFileTabById","CLOSE_FILE","metadata","tabId","REGISTER_FILE","renameTab","RENAME","fileStorage","loadFile","then","loadedFile","filename","prevItemName","getBaseName","updatedSettings","language","content","catch","save","saveContent","updateSavedChangeCount","saveFile","remove","initialSettings","dehydratedValue","dehydratedSettings","copyName","getCopyFileName","createNotebook","e","debug2","removePreviewStatus","isUndoing","isRedoing","toggleFind","event","notebooksUrl","href","target","startsWith","stopPropagation","preventDefault","notebookPath","substring","length","replace","notebookSettings","SELECT_NOTEBOOK","errorParam","isTimedOut","file","oldMetadata","deleteFile","name","oldName","newName","updateDimensions","command","runCommand","getSelectedCommand","args","isHidden","focus","src","endsWith","charAt","itemUri","URL","requestAnimationFrame","CREATE_NOTEBOOK","SEND_COMMAND","render","focusOnMount","DEFAULT_NAME","isMarkdown","isExistingItem","overflowActions","getOverflowActions","isSessionConnected","isLanguageMatching","runButtonsDisabled","toolbarDisabled","contextActions","SAVE","disabledRunButtonTooltip","getDisabledRunTooltip","disabledRunSelectedButtonTooltip","additionalActions","createPortal","find","RUN","getDisplayText","RUN_SELECTED","POPPER_OPTIONS","placement","propTypes","shape","func","isRequired","Container","EventHub","bool","string","defaultProps","process","env","REACT_APP_NOTEBOOKS_URL","window","location","mapStateToProps","ownProps","sessionWrapper","localDashboardId","config","sessionConfig","type","forwardRef"],"mappings":"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","sourcesContent":["// Wrapper for the Notebook for use in a golden layout container\nimport React, { Component } from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport memoize from 'memoize-one';\nimport { connect } from 'react-redux';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {\n BasicModal,\n ContextActions,\n DropdownMenu,\n Tooltip,\n GLOBAL_SHORTCUTS,\n} from '@deephaven/components';\nimport { ScriptEditor, ScriptEditorUtils, SHORTCUTS } from '@deephaven/console';\nimport { GLPropTypes } from '@deephaven/dashboard';\nimport { FileUtils, NewItemModal } from '@deephaven/file-explorer';\nimport {\n vsSave,\n vsKebabVertical,\n dhFileSearch,\n vsPlay,\n vsRunAll,\n} from '@deephaven/icons';\nimport { getFileStorage } from '@deephaven/redux';\nimport classNames from 'classnames';\nimport debounce from 'lodash.debounce';\nimport Log from '@deephaven/log';\nimport { Pending, PromiseUtils } from '@deephaven/utils';\nimport { ConsoleEvent, NotebookEvent } from '../events';\nimport { getDashboardSessionWrapper } from '../redux';\nimport Panel from './Panel';\nimport MarkdownNotebook from './MarkdownNotebook';\nimport './NotebookPanel.scss';\n\nconst log = Log.module('NotebookPanel');\n\nconst DEBOUNCE_PANEL_STATE_UPDATE = 400;\n\nclass NotebookPanel extends Component {\n static COMPONENT = 'NotebookPanel';\n\n static POPPER_OPTIONS = { placement: 'bottom-end' };\n\n static DEFAULT_NAME = 'Untitled';\n\n static handleError(error) {\n if (PromiseUtils.isCanceled(error)) {\n return;\n }\n log.error(error);\n }\n\n static languageFromFileName(fileName) {\n const extension = FileUtils.getExtension(fileName).toLowerCase();\n switch (extension) {\n case 'py':\n case 'python':\n return 'python';\n case 'groovy':\n return 'groovy';\n case 'scala':\n return 'scala';\n default:\n return null;\n }\n }\n\n constructor(props) {\n super(props);\n\n this.handleBlur = this.handleBlur.bind(this);\n this.handleCloseCancel = this.handleCloseCancel.bind(this);\n this.handleCloseDiscard = this.handleCloseDiscard.bind(this);\n this.handleCloseSave = this.handleCloseSave.bind(this);\n this.handleCopy = this.handleCopy.bind(this);\n this.handleEditorChange = this.handleEditorChange.bind(this);\n this.handleFind = this.handleFind.bind(this);\n this.handleFocus = this.handleFocus.bind(this);\n this.handleLinkClick = this.handleLinkClick.bind(this);\n this.handleLoadSuccess = this.handleLoadSuccess.bind(this);\n this.handleLoadError = this.handleLoadError.bind(this);\n this.handlePanelTabClick = this.handlePanelTabClick.bind(this);\n this.handleRenameFile = this.handleRenameFile.bind(this);\n this.handleResize = this.handleResize.bind(this);\n this.handleRunCommand = this.handleRunCommand.bind(this);\n this.handleRunAll = this.handleRunAll.bind(this);\n this.handleRunSelected = this.handleRunSelected.bind(this);\n this.handleSave = this.handleSave.bind(this);\n this.handleSaveAsCancel = this.handleSaveAsCancel.bind(this);\n this.handleSaveAsSubmit = this.handleSaveAsSubmit.bind(this);\n this.handleSaveError = this.handleSaveError.bind(this);\n this.handleSaveSuccess = this.handleSaveSuccess.bind(this);\n this.handleSessionOpened = this.handleSessionOpened.bind(this);\n this.handleSessionClosed = this.handleSessionClosed.bind(this);\n this.handleShow = this.handleShow.bind(this);\n this.handleShowRename = this.handleShowRename.bind(this);\n this.handleTab = this.handleTab.bind(this);\n this.handleTabFocus = this.handleTabFocus.bind(this);\n this.handleTabBlur = this.handleTabBlur.bind(this);\n this.handleTransformLinkUri = this.handleTransformLinkUri.bind(this);\n\n this.pending = new Pending();\n\n this.debouncedSavePanelState = debounce(\n this.savePanelState.bind(this),\n DEBOUNCE_PANEL_STATE_UPDATE\n );\n\n this.debouncedLoad = debounce(\n this.load.bind(this),\n DEBOUNCE_PANEL_STATE_UPDATE\n );\n\n this.notebook = null;\n\n this.tabTitleElement = null;\n this.unsavedIndicator = null;\n this.tabInitOnce = false;\n this.shouldPromptClose = true;\n\n const { isDashboardActive, session, sessionLanguage, panelState } = props;\n\n let settings = {\n value: '',\n };\n let fileMetadata = null;\n let { isPreview } = props;\n if (panelState) {\n ({\n fileMetadata = fileMetadata,\n isPreview = isPreview,\n settings = settings,\n } = panelState);\n }\n\n // Not showing the unsaved indicator for null file id and editor content === '',\n // may need to implement some other indication that this notebook has never been saved\n const hasFileId =\n fileMetadata.itemName && FileUtils.hasPath(fileMetadata.itemName);\n\n // Unsaved if file id != null and content != null\n // OR file id is null AND content is not null or ''\n const isUnsaved =\n (hasFileId && settings.value != null) || (!hasFileId && settings.value);\n const changeCount = isUnsaved ? 1 : 0;\n\n this.state = {\n error: null,\n isDashboardActive,\n isFocused: false,\n isLoading: true,\n isLoaded: false,\n isPreview,\n\n savedChangeCount: 0,\n changeCount,\n fileMetadata,\n settings,\n\n session,\n sessionLanguage,\n\n // eslint-disable-next-line react/no-unused-state\n panelState: {\n fileMetadata,\n settings,\n },\n\n showCloseModal: false,\n showSaveAsModal: false,\n\n scriptCode: '',\n };\n\n log.debug('constructor', props, this.state);\n }\n\n componentDidMount() {\n const { glContainer, glEventHub } = this.props;\n const { tab } = glContainer;\n if (tab) this.initTab(tab);\n this.initNotebookContent();\n glEventHub.on(NotebookEvent.RENAME_FILE, this.handleRenameFile);\n glContainer.on('tabClicked', this.handlePanelTabClick);\n }\n\n componentDidUpdate(prevProps, prevState) {\n const { isPreview } = this.state;\n if (isPreview !== prevState.isPreview) {\n this.setPreviewStatus(isPreview);\n }\n }\n\n componentWillUnmount() {\n this.debouncedSavePanelState.flush();\n this.pending.cancel();\n\n const { glContainer, glEventHub } = this.props;\n\n const { fileMetadata, isPreview } = this.state;\n glEventHub.off(NotebookEvent.RENAME_FILE, this.handleRenameFile);\n glContainer.off('tabClicked', this.handlePanelTabClick);\n glEventHub.emit(NotebookEvent.UNREGISTER_FILE, fileMetadata, isPreview);\n }\n\n // Called by TabEvent. Happens once when created, but also each time its moved.\n // when moved, need to re-init the unsaved indicators on title elements\n initTab(tab) {\n if (!this.tabInitOnce) {\n this.tabInitOnce = true;\n this.initTabCloseOverride();\n }\n this.initTabClasses(tab);\n }\n\n // override glContainer.close() with a custom closure that checks if needs saving\n initTabCloseOverride() {\n const { glContainer } = this.props;\n const close = glContainer.close.bind(glContainer);\n glContainer.close = () => {\n const { changeCount, savedChangeCount } = this.state;\n if (changeCount !== savedChangeCount && this.shouldPromptClose) {\n this.setState({ showCloseModal: true });\n } else {\n close();\n }\n };\n }\n\n initTabClasses(tab) {\n const tabElement = tab.element.get(0);\n const titleElement = tabElement.querySelector('.lm_title');\n this.tabTitleElement = titleElement;\n titleElement.classList.add('notebook-title');\n this.setPreviewStatus();\n }\n\n getNotebookValue() {\n const { changeCount, savedChangeCount, settings } = this.state;\n const { value } = settings;\n if (changeCount !== savedChangeCount && this.notebook) {\n const notebookValue = this.notebook.getValue();\n return notebookValue != null ? notebookValue : value;\n }\n return value;\n }\n\n initNotebookContent() {\n // Init from file,\n // fallback to content from settings for unsaved notebook\n const { fileMetadata, settings, isPreview } = this.state;\n if (fileMetadata && fileMetadata.id) {\n log.debug('Init content from file');\n this.registerFileMetadata(fileMetadata, isPreview);\n this.load();\n return;\n }\n if (settings.value != null) {\n log.debug('Use content passed in the settings prop');\n this.handleLoadSuccess();\n return;\n }\n // No settings, no metadata\n this.handleLoadError(new Error('Missing file metadata'));\n }\n\n closeFileTabById(id) {\n const { glEventHub } = this.props;\n glEventHub.emit(NotebookEvent.CLOSE_FILE, { id });\n }\n\n // Associate file id with the current tab\n // so the next time the file is opened this tab can be focused instead of opening a new tab\n registerFileMetadata(fileMetadata, isPreview) {\n const { glEventHub, metadata } = this.props;\n const { id: tabId } = metadata;\n glEventHub.emit(\n NotebookEvent.REGISTER_FILE,\n tabId,\n fileMetadata,\n isPreview\n );\n }\n\n renameTab(id, title) {\n const { glEventHub } = this.props;\n glEventHub.emit(NotebookEvent.RENAME, id, title);\n }\n\n load() {\n const { fileMetadata, settings } = this.state;\n const { id } = fileMetadata;\n const { fileStorage } = this.props;\n this.pending\n .add(fileStorage.loadFile(id))\n .then(loadedFile => {\n log.debug('Loaded file', loadedFile);\n const { filename: itemName } = loadedFile;\n const { itemName: prevItemName } = this.state;\n if (itemName !== prevItemName) {\n const { metadata } = this.props;\n const { id: tabId } = metadata;\n this.renameTab(tabId, FileUtils.getBaseName(itemName));\n }\n const updatedSettings = {\n ...settings,\n language: NotebookPanel.languageFromFileName(itemName),\n };\n if (settings.value == null) {\n updatedSettings.value = loadedFile.content;\n }\n this.setState({\n fileMetadata: { id: itemName, itemName },\n settings: updatedSettings,\n });\n this.debouncedSavePanelState();\n })\n .then(this.handleLoadSuccess)\n .catch(this.handleLoadError);\n }\n\n /**\n * Attempts to save the notebook.\n * @returns {boolean} Returns true if save has begun, false if user needed to be prompted\n */\n save() {\n const { fileMetadata } = this.state;\n if (fileMetadata && FileUtils.hasPath(fileMetadata.itemName)) {\n const content = this.getNotebookValue();\n this.saveContent(fileMetadata.itemName, content);\n return true;\n }\n\n this.setState({ showSaveAsModal: true });\n return false;\n }\n\n /**\n * Update existing file content\n * @param {string} filename The name of the file\n * @param {string} content New file content\n */\n saveContent(filename, content) {\n log.debug('saveContent', filename, content);\n this.updateSavedChangeCount();\n const { fileStorage } = this.props;\n this.pending\n .add(fileStorage.saveFile({ filename, content }))\n .then(this.handleSaveSuccess)\n .catch(this.handleSaveError);\n }\n\n updateSavedChangeCount() {\n this.setState(({ changeCount }) => ({ savedChangeCount: changeCount }));\n }\n\n setPreviewStatus() {\n if (!this.tabTitleElement) {\n return;\n }\n const { isPreview } = this.state;\n log.debug('setPreviewStatus', this.tabTitleElement, isPreview);\n if (isPreview) {\n this.tabTitleElement.classList.add('is-preview');\n } else {\n this.tabTitleElement.classList.remove('is-preview');\n }\n }\n\n getOverflowActions = memoize(() => [\n {\n title: 'Find',\n icon: dhFileSearch,\n action: this.handleFind,\n group: ContextActions.groups.high,\n shortcut: SHORTCUTS.NOTEBOOK.FIND,\n order: 10,\n },\n ]);\n\n savePanelState() {\n this.setState(state => {\n const {\n changeCount,\n savedChangeCount,\n fileMetadata,\n isPreview,\n settings: initialSettings,\n } = state;\n const value = this.getNotebookValue();\n // notebooks with no unsaved changes have value === null in dehydrated state\n // content will be loaded from file when hydrating\n const dehydratedValue = changeCount !== savedChangeCount ? value : null;\n const settings = {\n ...initialSettings,\n value,\n };\n const dehydratedSettings = {\n ...initialSettings,\n value: dehydratedValue,\n };\n const panelState = {\n settings: dehydratedSettings,\n fileMetadata,\n isPreview,\n };\n log.debug('Saving panel state', panelState);\n return {\n settings,\n // eslint-disable-next-line react/no-unused-state\n panelState,\n };\n });\n }\n\n handleCloseDiscard() {\n this.shouldPromptClose = false;\n this.setState({ showCloseModal: false });\n const { glContainer } = this.props;\n glContainer.close();\n }\n\n handleCloseSave() {\n this.shouldPromptClose = false;\n this.setState({ showCloseModal: false });\n if (this.save()) {\n const { glContainer } = this.props;\n glContainer.close();\n }\n }\n\n handleCloseCancel() {\n this.shouldPromptClose = true;\n this.setState({ showCloseModal: false });\n }\n\n handleCopy() {\n const { fileMetadata, settings } = this.state;\n const content = this.getNotebookValue();\n const { language } = settings;\n const { itemName } = fileMetadata;\n const copyName = FileUtils.getCopyFileName(itemName);\n log.debug('handleCopy', fileMetadata, itemName, copyName);\n this.createNotebook(copyName, language, content);\n }\n\n handleEditorChange(e) {\n log.debug2('handleEditorChanged', e);\n\n this.removePreviewStatus();\n\n this.setState(({ changeCount, savedChangeCount }) => {\n const { isUndoing, isRedoing } = e;\n if (isUndoing) {\n // Note that it's possible to undo past where the user last saved, if they save and then undo for example\n return { changeCount: changeCount - 1 };\n }\n\n if (!isRedoing && changeCount < savedChangeCount) {\n // We made another change after undoing some changes from the previous save\n // Just reset the saved counter to zero and increase the unchanged saves\n // It'll be set correctly on the next save\n return { changeCount: changeCount + 1, savedChangeCount: 0 };\n }\n\n return { changeCount: changeCount + 1 };\n });\n this.debouncedSavePanelState();\n }\n\n handleFind() {\n if (this.notebook) {\n this.notebook.toggleFind();\n }\n }\n\n handleBlur() {\n log.debug('handleBlur');\n this.setState({ isFocused: false });\n }\n\n handleFocus() {\n log.debug('handleFocus');\n this.setState({ isFocused: true });\n }\n\n /**\n * @param {MouseEvent} event The click event from clicking on the link\n */\n handleLinkClick(event) {\n const { notebooksUrl, session, sessionLanguage } = this.props;\n const { href } = event.target;\n if (!href || !href.startsWith(notebooksUrl)) {\n return;\n }\n\n event.stopPropagation();\n event.preventDefault();\n\n const notebookPath = `/${href.substring(notebooksUrl.length)}`.replace(\n /%20/g,\n ' '\n );\n if (notebookPath === '/') {\n log.debug('Ignoring invalid notebook link', notebookPath);\n return;\n }\n\n log.debug('Notebook link clicked, opening', notebookPath);\n\n const { glEventHub } = this.props;\n const notebookSettings = {\n value: null,\n language: sessionLanguage,\n };\n const fileMetadata = { id: notebookPath, itemName: notebookPath };\n glEventHub.emit(\n NotebookEvent.SELECT_NOTEBOOK,\n session,\n sessionLanguage,\n notebookSettings,\n fileMetadata\n );\n }\n\n handleLoadSuccess() {\n this.setState({\n error: null,\n isLoaded: true,\n isLoading: false,\n });\n }\n\n handleLoadError(errorParam) {\n let error = errorParam;\n if (PromiseUtils.isCanceled(error)) {\n return;\n }\n if (PromiseUtils.isTimedOut(error)) {\n error = new Error('File not found.');\n }\n log.error(error);\n this.setState({ error, isLoading: false });\n }\n\n handleSave() {\n log.debug('handleSave');\n this.save();\n }\n\n handleSaveSuccess(file) {\n const { fileStorage } = this.props;\n const fileMetadata = { id: file.filename, itemName: file.filename };\n const language = NotebookPanel.languageFromFileName(file.filename);\n this.setState(state => {\n const { fileMetadata: oldMetadata } = state;\n const settings = {\n ...state.settings,\n language,\n };\n log.debug('handleSaveSuccess', fileMetadata, oldMetadata, settings);\n if (\n FileUtils.hasPath(oldMetadata.itemName) &&\n oldMetadata.itemName !== fileMetadata.itemName\n ) {\n log.debug('handleSaveSuccess deleting old file', oldMetadata.itemName);\n fileStorage\n .deleteFile(oldMetadata.itemName)\n .catch(NotebookPanel.handleError);\n }\n return {\n fileMetadata,\n settings,\n isPreview: false,\n };\n });\n this.debouncedSavePanelState();\n this.registerFileMetadata(fileMetadata, false);\n }\n\n handleSaveError(error) {\n if (PromiseUtils.isCanceled(error)) {\n return;\n }\n // There was an error saving, just reset the savedChangeCount\n // It's possible if they undo changes they'll be back at the spot where it was last saved successfully,\n // But we may as well continue showing the error until they actually save again\n this.setState({ savedChangeCount: 0 });\n log.error(error);\n }\n\n handleSaveAsCancel() {\n this.setState({ showSaveAsModal: false });\n }\n\n handleSaveAsSubmit(name) {\n log.debug('handleSaveAsSubmit', name);\n const { fileMetadata } = this.state;\n const { itemName: prevItemName } = fileMetadata;\n const content = this.getNotebookValue();\n this.setState({\n showSaveAsModal: false,\n });\n\n if (FileUtils.getBaseName(prevItemName) !== FileUtils.getBaseName(name)) {\n const { metadata } = this.props;\n const { id: tabId } = metadata;\n this.renameTab(tabId, FileUtils.getBaseName(name));\n }\n\n this.saveContent(name, content);\n }\n\n handleRenameFile(oldName, newName) {\n const { fileMetadata } = this.state;\n if (fileMetadata.id === oldName) {\n this.setState({ fileMetadata: { id: newName, itemName: newName } });\n this.debouncedSavePanelState();\n }\n }\n\n handleResize() {\n this.notebook?.updateDimensions();\n }\n\n handleRunCommand(command) {\n this.runCommand(command);\n }\n\n handleRunAll() {\n if (!this.notebook) {\n log.error('Editor is not initialized.');\n return;\n }\n this.runCommand(this.notebook.getValue());\n }\n\n handleRunSelected() {\n if (!this.notebook) {\n log.error('Editor is not initialized.');\n return;\n }\n this.runCommand(this.notebook.getSelectedCommand());\n }\n\n handleSessionOpened(session, { language }) {\n this.setState({\n session,\n sessionLanguage: language,\n });\n }\n\n handleSessionClosed() {\n this.setState({\n session: null,\n sessionLanguage: null,\n });\n }\n\n handleShow() {\n log.debug('handleShow');\n this.notebook?.updateDimensions();\n }\n\n handleShowRename() {\n this.setState({ showSaveAsModal: true });\n }\n\n handleTab(tab) {\n log.debug('NotebookPanel tab event', tab);\n this.initTab(tab);\n }\n\n handleTabFocus(...args) {\n log.debug('handleTabFocus', ...args);\n const { glContainer } = this.props;\n this.setState({\n isDashboardActive: true,\n });\n if (this.notebook && !glContainer.isHidden) {\n this.notebook.updateDimensions();\n }\n }\n\n handleTabBlur() {\n log.debug('handleTabBlur');\n this.setState({\n isDashboardActive: false,\n });\n }\n\n handlePanelTabClick() {\n log.debug('handlePanelTabClick');\n this.focus();\n }\n\n /**\n * Transform the link URI to load from where the notebook is if it's relative\n * @param {String} src The link to transform\n * @returns String the transformed link\n */\n handleTransformLinkUri(src) {\n const { notebooksUrl } = this.props;\n const { fileMetadata } = this.state;\n\n if (src.endsWith('/')) {\n return src;\n }\n\n if (src.startsWith('/')) {\n return `${notebooksUrl}${src.substring(1)}`;\n }\n\n let itemName = fileMetadata?.itemName;\n if (!itemName) {\n return src;\n }\n if (itemName.charAt(0) === '/') {\n itemName = itemName.substring(1);\n }\n\n const itemUri = new URL(itemName, notebooksUrl);\n return new URL(src, itemUri).href;\n }\n\n focus() {\n requestAnimationFrame(() => {\n if (this.notebook) {\n this.notebook.focus();\n }\n });\n }\n\n createNotebook(itemName, language, content) {\n const { glEventHub } = this.props;\n const { session, sessionLanguage, settings } = this.state;\n const notebookSettings = {\n ...settings,\n language,\n value: content,\n };\n const fileMetadata = {\n id: null,\n itemName,\n };\n log.debug(\n 'handleCreateNotebook',\n session,\n sessionLanguage,\n notebookSettings,\n fileMetadata\n );\n glEventHub.emit(\n NotebookEvent.CREATE_NOTEBOOK,\n session,\n sessionLanguage,\n notebookSettings,\n fileMetadata\n );\n }\n\n runCommand(command) {\n if (!command) {\n log.debug('Ignoring empty command.');\n return;\n }\n\n this.removePreviewStatus();\n\n const { glEventHub } = this.props;\n glEventHub.emit(ConsoleEvent.SEND_COMMAND, command, false, true);\n }\n\n removePreviewStatus() {\n this.setState(({ isPreview }) => {\n if (isPreview) {\n const { fileMetadata } = this.state;\n this.registerFileMetadata(fileMetadata, false);\n return { isPreview: false };\n }\n return null;\n });\n }\n\n render() {\n const {\n fileStorage,\n glContainer,\n glContainer: { tab },\n glEventHub,\n } = this.props;\n const {\n changeCount,\n savedChangeCount,\n error,\n isDashboardActive,\n isLoaded,\n isLoading,\n isPreview,\n fileMetadata,\n session,\n sessionLanguage,\n settings: initialSettings,\n showCloseModal,\n showSaveAsModal,\n } = this.state;\n // We don't want to steal focus if this isn't shown or it's just a preview\n const focusOnMount =\n isDashboardActive && !glContainer.isHidden && !isPreview;\n const itemName = fileMetadata?.itemName ?? NotebookPanel.DEFAULT_NAME;\n const isMarkdown = itemName.endsWith('.md');\n const isExistingItem = fileMetadata?.id != null;\n const overflowActions = this.getOverflowActions();\n const settings = {\n ...initialSettings,\n };\n const isSessionConnected = session != null;\n const isLanguageMatching = sessionLanguage === settings.language;\n const runButtonsDisabled =\n !isLoaded || !isSessionConnected || !isLanguageMatching;\n const toolbarDisabled = !isLoaded;\n const contextActions = [\n {\n action: this.handleSave,\n shortcut: GLOBAL_SHORTCUTS.SAVE,\n },\n ];\n const disabledRunButtonTooltip = ScriptEditorUtils.getDisabledRunTooltip(\n isSessionConnected,\n isLanguageMatching,\n 'Notebook extension',\n 'Run'\n );\n const disabledRunSelectedButtonTooltip = ScriptEditorUtils.getDisabledRunTooltip(\n isSessionConnected,\n isLanguageMatching,\n 'Notebook extension',\n 'Run Selected'\n );\n\n const additionalActions = [\n {\n title: isExistingItem ? 'Rename' : 'Save As…',\n order: 10,\n group: ContextActions.groups.high,\n action: this.handleShowRename,\n },\n {\n title: 'Copy File',\n action: this.handleCopy,\n group: ContextActions.groups.high,\n order: 20,\n },\n ];\n\n return (\n <>\n {tab &&\n ReactDOM.createPortal(\n <span\n className={classNames('editor-unsaved-indicator', {\n 'is-unsaved': changeCount !== savedChangeCount,\n })}\n />,\n tab.element.find('.lm_title_before').get(0) // tab.element is jquery element, we want a dom element\n )}\n\n <Panel\n className=\"notebook-container\"\n componentPanel={this}\n glContainer={glContainer}\n glEventHub={glEventHub}\n onTab={this.handleTab}\n onResize={this.handleResize}\n onShow={this.handleShow}\n onTabFocus={this.handleTabFocus}\n onTabBlur={this.handleTabBlur}\n onSessionOpen={this.handleSessionOpened}\n onSessionClose={this.handleSessionClosed}\n onFocus={this.handleFocus}\n onBlur={this.handleBlur}\n additionalActions={additionalActions}\n renderTabTooltip={() => itemName}\n >\n {!isMarkdown && (\n <>\n <div className=\"notebook-toolbar\">\n <span>\n <button\n type=\"button\"\n className=\"btn btn-link btn-link-icon btn-play\"\n onClick={this.handleRunAll}\n disabled={runButtonsDisabled}\n >\n <FontAwesomeIcon icon={vsRunAll} transform=\"grow-4\" />\n <Tooltip>\n Run {SHORTCUTS.NOTEBOOK.RUN.getDisplayText()}\n </Tooltip>\n </button>\n {disabledRunButtonTooltip && (\n <Tooltip>{disabledRunButtonTooltip}</Tooltip>\n )}\n </span>\n <span>\n <button\n type=\"button\"\n className=\"btn btn-link btn-link-icon btn-play\"\n onClick={this.handleRunSelected}\n disabled={runButtonsDisabled}\n >\n <FontAwesomeIcon icon={vsPlay} transform=\"grow-4\" />\n <Tooltip>\n Run Selected{' '}\n {SHORTCUTS.NOTEBOOK.RUN_SELECTED.getDisplayText()}\n </Tooltip>\n </button>\n {disabledRunSelectedButtonTooltip && (\n <Tooltip>{disabledRunSelectedButtonTooltip}</Tooltip>\n )}\n </span>\n <button\n type=\"button\"\n className=\"btn btn-link btn-link-icon mr-auto\"\n disabled={toolbarDisabled}\n onClick={this.handleSave}\n >\n <FontAwesomeIcon icon={vsSave} />\n <Tooltip>Save</Tooltip>\n </button>\n <button\n type=\"button\"\n className=\"btn btn-link btn-overflow btn-link-icon\"\n disabled={toolbarDisabled}\n >\n <FontAwesomeIcon icon={vsKebabVertical} />\n <Tooltip>More Actions...</Tooltip>\n <DropdownMenu\n actions={overflowActions}\n popperOptions={NotebookPanel.POPPER_OPTIONS}\n />\n </button>\n </div>\n <ScriptEditor\n isLoaded={isLoaded}\n isLoading={isLoading}\n error={error}\n onChange={this.handleEditorChange}\n onRunCommand={this.handleRunCommand}\n session={session}\n sessionLanguage={sessionLanguage}\n settings={settings}\n focusOnMount={focusOnMount}\n ref={notebook => {\n this.notebook = notebook;\n }}\n />\n </>\n )}\n {isMarkdown && (\n <MarkdownNotebook\n content={settings.value}\n onLinkClick={this.handleLinkClick}\n onRunCode={this.handleRunCommand}\n transformImageUri={this.handleTransformLinkUri}\n transformLinkUri={this.handleTransformLinkUri}\n />\n )}\n <NewItemModal\n isOpen={showSaveAsModal}\n type=\"file\"\n defaultValue={itemName}\n title={isExistingItem ? 'Rename' : 'Save file as'}\n onSubmit={this.handleSaveAsSubmit}\n onCancel={this.handleSaveAsCancel}\n notifyOnExtensionChange\n storage={fileStorage}\n />\n <BasicModal\n isOpen={showCloseModal}\n headerText={`Do you want to save the changes you made to ${itemName}?`}\n bodyText=\"Your changes will be lost if you don't save them.\"\n onCancel={this.handleCloseCancel}\n onDiscard={this.handleCloseDiscard}\n onConfirm={this.handleCloseSave}\n discardButtonText=\"Discard Changes\"\n confirmButtonText=\"Save\"\n />\n <ContextActions actions={contextActions} />\n </Panel>\n </>\n );\n }\n}\n\nNotebookPanel.propTypes = {\n fileStorage: PropTypes.shape({\n deleteFile: PropTypes.func.isRequired,\n loadFile: PropTypes.func.isRequired,\n saveFile: PropTypes.func.isRequired,\n }).isRequired,\n glContainer: GLPropTypes.Container.isRequired,\n glEventHub: GLPropTypes.EventHub.isRequired,\n isDashboardActive: PropTypes.bool,\n isPreview: PropTypes.bool,\n metadata: PropTypes.shape({\n id: PropTypes.string.isRequired,\n }).isRequired,\n session: PropTypes.shape({}),\n sessionLanguage: PropTypes.string,\n panelState: PropTypes.shape({\n settings: PropTypes.shape({}),\n fileMetadata: PropTypes.shape({}),\n }).isRequired,\n notebooksUrl: PropTypes.string,\n};\n\nNotebookPanel.defaultProps = {\n isDashboardActive: true,\n isPreview: false,\n session: null,\n sessionLanguage: null,\n notebooksUrl: new URL(\n `${process.env.REACT_APP_NOTEBOOKS_URL}/`,\n window.location\n ).href,\n};\n\nconst mapStateToProps = (state, ownProps) => {\n const fileStorage = getFileStorage(state);\n const sessionWrapper = getDashboardSessionWrapper(\n state,\n ownProps.localDashboardId\n );\n const { session, config: sessionConfig } = sessionWrapper ?? {};\n const { type: sessionLanguage } = sessionConfig ?? {};\n return {\n fileStorage,\n session,\n sessionLanguage,\n };\n};\n\nexport default connect(mapStateToProps, null, null, { forwardRef: true })(\n NotebookPanel\n);\n"],"file":"NotebookPanel.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/panels/NotebookPanel.jsx"],"names":["React","Component","ReactDOM","PropTypes","memoize","connect","FontAwesomeIcon","BasicModal","ContextActions","DropdownMenu","Tooltip","GLOBAL_SHORTCUTS","ScriptEditor","ScriptEditorUtils","SHORTCUTS","GLPropTypes","FileUtils","NewItemModal","vsSave","vsKebabVertical","dhFileSearch","vsPlay","dhRunSelection","getFileStorage","classNames","debounce","Log","Pending","PromiseUtils","ConsoleEvent","NotebookEvent","getDashboardSessionWrapper","Panel","MarkdownNotebook","log","module","DEBOUNCE_PANEL_STATE_UPDATE","NotebookPanel","handleError","error","isCanceled","languageFromFileName","fileName","extension","getExtension","toLowerCase","constructor","props","title","icon","action","handleFind","group","groups","high","shortcut","NOTEBOOK","FIND","order","handleBlur","bind","handleCloseCancel","handleCloseDiscard","handleCloseSave","handleCopy","handleEditorChange","handleFocus","handleLinkClick","handleLoadSuccess","handleLoadError","handlePanelTabClick","handleRenameFile","handleResize","handleRunCommand","handleRunAll","handleRunSelected","handleSave","handleSaveAsCancel","handleSaveAsSubmit","handleSaveError","handleSaveSuccess","handleSessionOpened","handleSessionClosed","handleShow","handleShowRename","handleTab","handleTabFocus","handleTabBlur","handleTransformLinkUri","pending","debouncedSavePanelState","savePanelState","debouncedLoad","load","notebook","tabTitleElement","unsavedIndicator","tabInitOnce","shouldPromptClose","isDashboardActive","session","sessionLanguage","panelState","settings","value","fileMetadata","isPreview","hasFileId","itemName","hasPath","isUnsaved","changeCount","state","isFocused","isLoading","isLoaded","savedChangeCount","showCloseModal","showSaveAsModal","scriptCode","debug","componentDidMount","glContainer","glEventHub","tab","initTab","initNotebookContent","on","RENAME_FILE","componentDidUpdate","prevProps","prevState","setPreviewStatus","componentWillUnmount","flush","cancel","off","emit","UNREGISTER_FILE","initTabCloseOverride","initTabClasses","close","setState","tabElement","element","get","titleElement","querySelector","classList","add","getNotebookValue","notebookValue","getValue","id","registerFileMetadata","Error","closeFileTabById","CLOSE_FILE","metadata","tabId","REGISTER_FILE","renameTab","RENAME","fileStorage","loadFile","then","loadedFile","filename","prevItemName","getBaseName","updatedSettings","language","content","catch","save","saveContent","updateSavedChangeCount","saveFile","remove","initialSettings","dehydratedValue","dehydratedSettings","copyName","getCopyFileName","createNotebook","e","debug2","removePreviewStatus","isUndoing","isRedoing","toggleFind","event","notebooksUrl","href","target","startsWith","stopPropagation","preventDefault","notebookPath","substring","length","replace","notebookSettings","SELECT_NOTEBOOK","errorParam","isTimedOut","file","oldMetadata","deleteFile","name","oldName","newName","updateDimensions","command","runCommand","getSelectedCommand","args","isHidden","focus","src","endsWith","charAt","itemUri","URL","requestAnimationFrame","CREATE_NOTEBOOK","SEND_COMMAND","render","focusOnMount","DEFAULT_NAME","isMarkdown","isExistingItem","overflowActions","getOverflowActions","isSessionConnected","isLanguageMatching","runButtonsDisabled","toolbarDisabled","contextActions","SAVE","disabledRunButtonTooltip","getDisabledRunTooltip","disabledRunSelectedButtonTooltip","additionalActions","createPortal","find","RUN","getDisplayText","RUN_SELECTED","POPPER_OPTIONS","placement","propTypes","shape","func","isRequired","Container","EventHub","bool","string","defaultProps","process","env","REACT_APP_NOTEBOOKS_URL","window","location","mapStateToProps","ownProps","sessionWrapper","localDashboardId","config","sessionConfig","type","forwardRef"],"mappings":"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","sourcesContent":["// Wrapper for the Notebook for use in a golden layout container\nimport React, { Component } from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport memoize from 'memoize-one';\nimport { connect } from 'react-redux';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {\n BasicModal,\n ContextActions,\n DropdownMenu,\n Tooltip,\n GLOBAL_SHORTCUTS,\n} from '@deephaven/components';\nimport { ScriptEditor, ScriptEditorUtils, SHORTCUTS } from '@deephaven/console';\nimport { GLPropTypes } from '@deephaven/dashboard';\nimport { FileUtils, NewItemModal } from '@deephaven/file-explorer';\nimport {\n vsSave,\n vsKebabVertical,\n dhFileSearch,\n vsPlay,\n dhRunSelection,\n} from '@deephaven/icons';\nimport { getFileStorage } from '@deephaven/redux';\nimport classNames from 'classnames';\nimport debounce from 'lodash.debounce';\nimport Log from '@deephaven/log';\nimport { Pending, PromiseUtils } from '@deephaven/utils';\nimport { ConsoleEvent, NotebookEvent } from '../events';\nimport { getDashboardSessionWrapper } from '../redux';\nimport Panel from './Panel';\nimport MarkdownNotebook from './MarkdownNotebook';\nimport './NotebookPanel.scss';\n\nconst log = Log.module('NotebookPanel');\n\nconst DEBOUNCE_PANEL_STATE_UPDATE = 400;\n\nclass NotebookPanel extends Component {\n static COMPONENT = 'NotebookPanel';\n\n static POPPER_OPTIONS = { placement: 'bottom-end' };\n\n static DEFAULT_NAME = 'Untitled';\n\n static handleError(error) {\n if (PromiseUtils.isCanceled(error)) {\n return;\n }\n log.error(error);\n }\n\n static languageFromFileName(fileName) {\n const extension = FileUtils.getExtension(fileName).toLowerCase();\n switch (extension) {\n case 'py':\n case 'python':\n return 'python';\n case 'groovy':\n return 'groovy';\n case 'scala':\n return 'scala';\n default:\n return null;\n }\n }\n\n constructor(props) {\n super(props);\n\n this.handleBlur = this.handleBlur.bind(this);\n this.handleCloseCancel = this.handleCloseCancel.bind(this);\n this.handleCloseDiscard = this.handleCloseDiscard.bind(this);\n this.handleCloseSave = this.handleCloseSave.bind(this);\n this.handleCopy = this.handleCopy.bind(this);\n this.handleEditorChange = this.handleEditorChange.bind(this);\n this.handleFind = this.handleFind.bind(this);\n this.handleFocus = this.handleFocus.bind(this);\n this.handleLinkClick = this.handleLinkClick.bind(this);\n this.handleLoadSuccess = this.handleLoadSuccess.bind(this);\n this.handleLoadError = this.handleLoadError.bind(this);\n this.handlePanelTabClick = this.handlePanelTabClick.bind(this);\n this.handleRenameFile = this.handleRenameFile.bind(this);\n this.handleResize = this.handleResize.bind(this);\n this.handleRunCommand = this.handleRunCommand.bind(this);\n this.handleRunAll = this.handleRunAll.bind(this);\n this.handleRunSelected = this.handleRunSelected.bind(this);\n this.handleSave = this.handleSave.bind(this);\n this.handleSaveAsCancel = this.handleSaveAsCancel.bind(this);\n this.handleSaveAsSubmit = this.handleSaveAsSubmit.bind(this);\n this.handleSaveError = this.handleSaveError.bind(this);\n this.handleSaveSuccess = this.handleSaveSuccess.bind(this);\n this.handleSessionOpened = this.handleSessionOpened.bind(this);\n this.handleSessionClosed = this.handleSessionClosed.bind(this);\n this.handleShow = this.handleShow.bind(this);\n this.handleShowRename = this.handleShowRename.bind(this);\n this.handleTab = this.handleTab.bind(this);\n this.handleTabFocus = this.handleTabFocus.bind(this);\n this.handleTabBlur = this.handleTabBlur.bind(this);\n this.handleTransformLinkUri = this.handleTransformLinkUri.bind(this);\n\n this.pending = new Pending();\n\n this.debouncedSavePanelState = debounce(\n this.savePanelState.bind(this),\n DEBOUNCE_PANEL_STATE_UPDATE\n );\n\n this.debouncedLoad = debounce(\n this.load.bind(this),\n DEBOUNCE_PANEL_STATE_UPDATE\n );\n\n this.notebook = null;\n\n this.tabTitleElement = null;\n this.unsavedIndicator = null;\n this.tabInitOnce = false;\n this.shouldPromptClose = true;\n\n const { isDashboardActive, session, sessionLanguage, panelState } = props;\n\n let settings = {\n value: '',\n };\n let fileMetadata = null;\n let { isPreview } = props;\n if (panelState) {\n ({\n fileMetadata = fileMetadata,\n isPreview = isPreview,\n settings = settings,\n } = panelState);\n }\n\n // Not showing the unsaved indicator for null file id and editor content === '',\n // may need to implement some other indication that this notebook has never been saved\n const hasFileId =\n fileMetadata.itemName && FileUtils.hasPath(fileMetadata.itemName);\n\n // Unsaved if file id != null and content != null\n // OR file id is null AND content is not null or ''\n const isUnsaved =\n (hasFileId && settings.value != null) || (!hasFileId && settings.value);\n const changeCount = isUnsaved ? 1 : 0;\n\n this.state = {\n error: null,\n isDashboardActive,\n isFocused: false,\n isLoading: true,\n isLoaded: false,\n isPreview,\n\n savedChangeCount: 0,\n changeCount,\n fileMetadata,\n settings,\n\n session,\n sessionLanguage,\n\n // eslint-disable-next-line react/no-unused-state\n panelState: {\n fileMetadata,\n settings,\n },\n\n showCloseModal: false,\n showSaveAsModal: false,\n\n scriptCode: '',\n };\n\n log.debug('constructor', props, this.state);\n }\n\n componentDidMount() {\n const { glContainer, glEventHub } = this.props;\n const { tab } = glContainer;\n if (tab) this.initTab(tab);\n this.initNotebookContent();\n glEventHub.on(NotebookEvent.RENAME_FILE, this.handleRenameFile);\n glContainer.on('tabClicked', this.handlePanelTabClick);\n }\n\n componentDidUpdate(prevProps, prevState) {\n const { isPreview } = this.state;\n if (isPreview !== prevState.isPreview) {\n this.setPreviewStatus(isPreview);\n }\n }\n\n componentWillUnmount() {\n this.debouncedSavePanelState.flush();\n this.pending.cancel();\n\n const { glContainer, glEventHub } = this.props;\n\n const { fileMetadata, isPreview } = this.state;\n glEventHub.off(NotebookEvent.RENAME_FILE, this.handleRenameFile);\n glContainer.off('tabClicked', this.handlePanelTabClick);\n glEventHub.emit(NotebookEvent.UNREGISTER_FILE, fileMetadata, isPreview);\n }\n\n // Called by TabEvent. Happens once when created, but also each time its moved.\n // when moved, need to re-init the unsaved indicators on title elements\n initTab(tab) {\n if (!this.tabInitOnce) {\n this.tabInitOnce = true;\n this.initTabCloseOverride();\n }\n this.initTabClasses(tab);\n }\n\n // override glContainer.close() with a custom closure that checks if needs saving\n initTabCloseOverride() {\n const { glContainer } = this.props;\n const close = glContainer.close.bind(glContainer);\n glContainer.close = () => {\n const { changeCount, savedChangeCount } = this.state;\n if (changeCount !== savedChangeCount && this.shouldPromptClose) {\n this.setState({ showCloseModal: true });\n } else {\n close();\n }\n };\n }\n\n initTabClasses(tab) {\n const tabElement = tab.element.get(0);\n const titleElement = tabElement.querySelector('.lm_title');\n this.tabTitleElement = titleElement;\n titleElement.classList.add('notebook-title');\n this.setPreviewStatus();\n }\n\n getNotebookValue() {\n const { changeCount, savedChangeCount, settings } = this.state;\n const { value } = settings;\n if (changeCount !== savedChangeCount && this.notebook) {\n const notebookValue = this.notebook.getValue();\n return notebookValue != null ? notebookValue : value;\n }\n return value;\n }\n\n initNotebookContent() {\n // Init from file,\n // fallback to content from settings for unsaved notebook\n const { fileMetadata, settings, isPreview } = this.state;\n if (fileMetadata && fileMetadata.id) {\n log.debug('Init content from file');\n this.registerFileMetadata(fileMetadata, isPreview);\n this.load();\n return;\n }\n if (settings.value != null) {\n log.debug('Use content passed in the settings prop');\n this.handleLoadSuccess();\n return;\n }\n // No settings, no metadata\n this.handleLoadError(new Error('Missing file metadata'));\n }\n\n closeFileTabById(id) {\n const { glEventHub } = this.props;\n glEventHub.emit(NotebookEvent.CLOSE_FILE, { id });\n }\n\n // Associate file id with the current tab\n // so the next time the file is opened this tab can be focused instead of opening a new tab\n registerFileMetadata(fileMetadata, isPreview) {\n const { glEventHub, metadata } = this.props;\n const { id: tabId } = metadata;\n glEventHub.emit(\n NotebookEvent.REGISTER_FILE,\n tabId,\n fileMetadata,\n isPreview\n );\n }\n\n renameTab(id, title) {\n const { glEventHub } = this.props;\n glEventHub.emit(NotebookEvent.RENAME, id, title);\n }\n\n load() {\n const { fileMetadata, settings } = this.state;\n const { id } = fileMetadata;\n const { fileStorage } = this.props;\n this.pending\n .add(fileStorage.loadFile(id))\n .then(loadedFile => {\n log.debug('Loaded file', loadedFile);\n const { filename: itemName } = loadedFile;\n const { itemName: prevItemName } = this.state;\n if (itemName !== prevItemName) {\n const { metadata } = this.props;\n const { id: tabId } = metadata;\n this.renameTab(tabId, FileUtils.getBaseName(itemName));\n }\n const updatedSettings = {\n ...settings,\n language: NotebookPanel.languageFromFileName(itemName),\n };\n if (settings.value == null) {\n updatedSettings.value = loadedFile.content;\n }\n this.setState({\n fileMetadata: { id: itemName, itemName },\n settings: updatedSettings,\n });\n this.debouncedSavePanelState();\n })\n .then(this.handleLoadSuccess)\n .catch(this.handleLoadError);\n }\n\n /**\n * Attempts to save the notebook.\n * @returns {boolean} Returns true if save has begun, false if user needed to be prompted\n */\n save() {\n const { fileMetadata } = this.state;\n if (fileMetadata && FileUtils.hasPath(fileMetadata.itemName)) {\n const content = this.getNotebookValue();\n this.saveContent(fileMetadata.itemName, content);\n return true;\n }\n\n this.setState({ showSaveAsModal: true });\n return false;\n }\n\n /**\n * Update existing file content\n * @param {string} filename The name of the file\n * @param {string} content New file content\n */\n saveContent(filename, content) {\n log.debug('saveContent', filename, content);\n this.updateSavedChangeCount();\n const { fileStorage } = this.props;\n this.pending\n .add(fileStorage.saveFile({ filename, content }))\n .then(this.handleSaveSuccess)\n .catch(this.handleSaveError);\n }\n\n updateSavedChangeCount() {\n this.setState(({ changeCount }) => ({ savedChangeCount: changeCount }));\n }\n\n setPreviewStatus() {\n if (!this.tabTitleElement) {\n return;\n }\n const { isPreview } = this.state;\n log.debug('setPreviewStatus', this.tabTitleElement, isPreview);\n if (isPreview) {\n this.tabTitleElement.classList.add('is-preview');\n } else {\n this.tabTitleElement.classList.remove('is-preview');\n }\n }\n\n getOverflowActions = memoize(() => [\n {\n title: 'Find',\n icon: dhFileSearch,\n action: this.handleFind,\n group: ContextActions.groups.high,\n shortcut: SHORTCUTS.NOTEBOOK.FIND,\n order: 10,\n },\n ]);\n\n savePanelState() {\n this.setState(state => {\n const {\n changeCount,\n savedChangeCount,\n fileMetadata,\n isPreview,\n settings: initialSettings,\n } = state;\n const value = this.getNotebookValue();\n // notebooks with no unsaved changes have value === null in dehydrated state\n // content will be loaded from file when hydrating\n const dehydratedValue = changeCount !== savedChangeCount ? value : null;\n const settings = {\n ...initialSettings,\n value,\n };\n const dehydratedSettings = {\n ...initialSettings,\n value: dehydratedValue,\n };\n const panelState = {\n settings: dehydratedSettings,\n fileMetadata,\n isPreview,\n };\n log.debug('Saving panel state', panelState);\n return {\n settings,\n // eslint-disable-next-line react/no-unused-state\n panelState,\n };\n });\n }\n\n handleCloseDiscard() {\n this.shouldPromptClose = false;\n this.setState({ showCloseModal: false });\n const { glContainer } = this.props;\n glContainer.close();\n }\n\n handleCloseSave() {\n this.shouldPromptClose = false;\n this.setState({ showCloseModal: false });\n if (this.save()) {\n const { glContainer } = this.props;\n glContainer.close();\n }\n }\n\n handleCloseCancel() {\n this.shouldPromptClose = true;\n this.setState({ showCloseModal: false });\n }\n\n handleCopy() {\n const { fileMetadata, settings } = this.state;\n const content = this.getNotebookValue();\n const { language } = settings;\n const { itemName } = fileMetadata;\n const copyName = FileUtils.getCopyFileName(itemName);\n log.debug('handleCopy', fileMetadata, itemName, copyName);\n this.createNotebook(copyName, language, content);\n }\n\n handleEditorChange(e) {\n log.debug2('handleEditorChanged', e);\n\n this.removePreviewStatus();\n\n this.setState(({ changeCount, savedChangeCount }) => {\n const { isUndoing, isRedoing } = e;\n if (isUndoing) {\n // Note that it's possible to undo past where the user last saved, if they save and then undo for example\n return { changeCount: changeCount - 1 };\n }\n\n if (!isRedoing && changeCount < savedChangeCount) {\n // We made another change after undoing some changes from the previous save\n // Just reset the saved counter to zero and increase the unchanged saves\n // It'll be set correctly on the next save\n return { changeCount: changeCount + 1, savedChangeCount: 0 };\n }\n\n return { changeCount: changeCount + 1 };\n });\n this.debouncedSavePanelState();\n }\n\n handleFind() {\n if (this.notebook) {\n this.notebook.toggleFind();\n }\n }\n\n handleBlur() {\n log.debug('handleBlur');\n this.setState({ isFocused: false });\n }\n\n handleFocus() {\n log.debug('handleFocus');\n this.setState({ isFocused: true });\n }\n\n /**\n * @param {MouseEvent} event The click event from clicking on the link\n */\n handleLinkClick(event) {\n const { notebooksUrl, session, sessionLanguage } = this.props;\n const { href } = event.target;\n if (!href || !href.startsWith(notebooksUrl)) {\n return;\n }\n\n event.stopPropagation();\n event.preventDefault();\n\n const notebookPath = `/${href.substring(notebooksUrl.length)}`.replace(\n /%20/g,\n ' '\n );\n if (notebookPath === '/') {\n log.debug('Ignoring invalid notebook link', notebookPath);\n return;\n }\n\n log.debug('Notebook link clicked, opening', notebookPath);\n\n const { glEventHub } = this.props;\n const notebookSettings = {\n value: null,\n language: sessionLanguage,\n };\n const fileMetadata = { id: notebookPath, itemName: notebookPath };\n glEventHub.emit(\n NotebookEvent.SELECT_NOTEBOOK,\n session,\n sessionLanguage,\n notebookSettings,\n fileMetadata\n );\n }\n\n handleLoadSuccess() {\n this.setState({\n error: null,\n isLoaded: true,\n isLoading: false,\n });\n }\n\n handleLoadError(errorParam) {\n let error = errorParam;\n if (PromiseUtils.isCanceled(error)) {\n return;\n }\n if (PromiseUtils.isTimedOut(error)) {\n error = new Error('File not found.');\n }\n log.error(error);\n this.setState({ error, isLoading: false });\n }\n\n handleSave() {\n log.debug('handleSave');\n this.save();\n }\n\n handleSaveSuccess(file) {\n const { fileStorage } = this.props;\n const fileMetadata = { id: file.filename, itemName: file.filename };\n const language = NotebookPanel.languageFromFileName(file.filename);\n this.setState(state => {\n const { fileMetadata: oldMetadata } = state;\n const settings = {\n ...state.settings,\n language,\n };\n log.debug('handleSaveSuccess', fileMetadata, oldMetadata, settings);\n if (\n FileUtils.hasPath(oldMetadata.itemName) &&\n oldMetadata.itemName !== fileMetadata.itemName\n ) {\n log.debug('handleSaveSuccess deleting old file', oldMetadata.itemName);\n fileStorage\n .deleteFile(oldMetadata.itemName)\n .catch(NotebookPanel.handleError);\n }\n return {\n fileMetadata,\n settings,\n isPreview: false,\n };\n });\n this.debouncedSavePanelState();\n this.registerFileMetadata(fileMetadata, false);\n }\n\n handleSaveError(error) {\n if (PromiseUtils.isCanceled(error)) {\n return;\n }\n // There was an error saving, just reset the savedChangeCount\n // It's possible if they undo changes they'll be back at the spot where it was last saved successfully,\n // But we may as well continue showing the error until they actually save again\n this.setState({ savedChangeCount: 0 });\n log.error(error);\n }\n\n handleSaveAsCancel() {\n this.setState({ showSaveAsModal: false });\n }\n\n handleSaveAsSubmit(name) {\n log.debug('handleSaveAsSubmit', name);\n const { fileMetadata } = this.state;\n const { itemName: prevItemName } = fileMetadata;\n const content = this.getNotebookValue();\n this.setState({\n showSaveAsModal: false,\n });\n\n if (FileUtils.getBaseName(prevItemName) !== FileUtils.getBaseName(name)) {\n const { metadata } = this.props;\n const { id: tabId } = metadata;\n this.renameTab(tabId, FileUtils.getBaseName(name));\n }\n\n this.saveContent(name, content);\n }\n\n handleRenameFile(oldName, newName) {\n const { fileMetadata } = this.state;\n if (fileMetadata.id === oldName) {\n this.setState({ fileMetadata: { id: newName, itemName: newName } });\n this.debouncedSavePanelState();\n }\n }\n\n handleResize() {\n this.notebook?.updateDimensions();\n }\n\n handleRunCommand(command) {\n this.runCommand(command);\n }\n\n handleRunAll() {\n if (!this.notebook) {\n log.error('Editor is not initialized.');\n return;\n }\n this.runCommand(this.notebook.getValue());\n }\n\n handleRunSelected() {\n if (!this.notebook) {\n log.error('Editor is not initialized.');\n return;\n }\n this.runCommand(this.notebook.getSelectedCommand());\n }\n\n handleSessionOpened(session, { language }) {\n this.setState({\n session,\n sessionLanguage: language,\n });\n }\n\n handleSessionClosed() {\n this.setState({\n session: null,\n sessionLanguage: null,\n });\n }\n\n handleShow() {\n log.debug('handleShow');\n this.notebook?.updateDimensions();\n }\n\n handleShowRename() {\n this.setState({ showSaveAsModal: true });\n }\n\n handleTab(tab) {\n log.debug('NotebookPanel tab event', tab);\n this.initTab(tab);\n }\n\n handleTabFocus(...args) {\n log.debug('handleTabFocus', ...args);\n const { glContainer } = this.props;\n this.setState({\n isDashboardActive: true,\n });\n if (this.notebook && !glContainer.isHidden) {\n this.notebook.updateDimensions();\n }\n }\n\n handleTabBlur() {\n log.debug('handleTabBlur');\n this.setState({\n isDashboardActive: false,\n });\n }\n\n handlePanelTabClick() {\n log.debug('handlePanelTabClick');\n this.focus();\n }\n\n /**\n * Transform the link URI to load from where the notebook is if it's relative\n * @param {String} src The link to transform\n * @returns String the transformed link\n */\n handleTransformLinkUri(src) {\n const { notebooksUrl } = this.props;\n const { fileMetadata } = this.state;\n\n if (src.endsWith('/')) {\n return src;\n }\n\n if (src.startsWith('/')) {\n return `${notebooksUrl}${src.substring(1)}`;\n }\n\n let itemName = fileMetadata?.itemName;\n if (!itemName) {\n return src;\n }\n if (itemName.charAt(0) === '/') {\n itemName = itemName.substring(1);\n }\n\n const itemUri = new URL(itemName, notebooksUrl);\n return new URL(src, itemUri).href;\n }\n\n focus() {\n requestAnimationFrame(() => {\n if (this.notebook) {\n this.notebook.focus();\n }\n });\n }\n\n createNotebook(itemName, language, content) {\n const { glEventHub } = this.props;\n const { session, sessionLanguage, settings } = this.state;\n const notebookSettings = {\n ...settings,\n language,\n value: content,\n };\n const fileMetadata = {\n id: null,\n itemName,\n };\n log.debug(\n 'handleCreateNotebook',\n session,\n sessionLanguage,\n notebookSettings,\n fileMetadata\n );\n glEventHub.emit(\n NotebookEvent.CREATE_NOTEBOOK,\n session,\n sessionLanguage,\n notebookSettings,\n fileMetadata\n );\n }\n\n runCommand(command) {\n if (!command) {\n log.debug('Ignoring empty command.');\n return;\n }\n\n this.removePreviewStatus();\n\n const { glEventHub } = this.props;\n glEventHub.emit(ConsoleEvent.SEND_COMMAND, command, false, true);\n }\n\n removePreviewStatus() {\n this.setState(({ isPreview }) => {\n if (isPreview) {\n const { fileMetadata } = this.state;\n this.registerFileMetadata(fileMetadata, false);\n return { isPreview: false };\n }\n return null;\n });\n }\n\n render() {\n const {\n fileStorage,\n glContainer,\n glContainer: { tab },\n glEventHub,\n } = this.props;\n const {\n changeCount,\n savedChangeCount,\n error,\n isDashboardActive,\n isLoaded,\n isLoading,\n isPreview,\n fileMetadata,\n session,\n sessionLanguage,\n settings: initialSettings,\n showCloseModal,\n showSaveAsModal,\n } = this.state;\n // We don't want to steal focus if this isn't shown or it's just a preview\n const focusOnMount =\n isDashboardActive && !glContainer.isHidden && !isPreview;\n const itemName = fileMetadata?.itemName ?? NotebookPanel.DEFAULT_NAME;\n const isMarkdown = itemName.endsWith('.md');\n const isExistingItem = fileMetadata?.id != null;\n const overflowActions = this.getOverflowActions();\n const settings = {\n ...initialSettings,\n };\n const isSessionConnected = session != null;\n const isLanguageMatching = sessionLanguage === settings.language;\n const runButtonsDisabled =\n !isLoaded || !isSessionConnected || !isLanguageMatching;\n const toolbarDisabled = !isLoaded;\n const contextActions = [\n {\n action: this.handleSave,\n shortcut: GLOBAL_SHORTCUTS.SAVE,\n },\n ];\n const disabledRunButtonTooltip = ScriptEditorUtils.getDisabledRunTooltip(\n isSessionConnected,\n isLanguageMatching,\n 'Notebook extension',\n 'Run'\n );\n const disabledRunSelectedButtonTooltip = ScriptEditorUtils.getDisabledRunTooltip(\n isSessionConnected,\n isLanguageMatching,\n 'Notebook extension',\n 'Run Selected'\n );\n\n const additionalActions = [\n {\n title: isExistingItem ? 'Rename' : 'Save As…',\n order: 10,\n group: ContextActions.groups.high,\n action: this.handleShowRename,\n },\n {\n title: 'Copy File',\n action: this.handleCopy,\n group: ContextActions.groups.high,\n order: 20,\n },\n ];\n\n return (\n <>\n {tab &&\n ReactDOM.createPortal(\n <span\n className={classNames('editor-unsaved-indicator', {\n 'is-unsaved': changeCount !== savedChangeCount,\n })}\n />,\n tab.element.find('.lm_title_before').get(0) // tab.element is jquery element, we want a dom element\n )}\n\n <Panel\n className=\"notebook-container\"\n componentPanel={this}\n glContainer={glContainer}\n glEventHub={glEventHub}\n onTab={this.handleTab}\n onResize={this.handleResize}\n onShow={this.handleShow}\n onTabFocus={this.handleTabFocus}\n onTabBlur={this.handleTabBlur}\n onSessionOpen={this.handleSessionOpened}\n onSessionClose={this.handleSessionClosed}\n onFocus={this.handleFocus}\n onBlur={this.handleBlur}\n additionalActions={additionalActions}\n renderTabTooltip={() => itemName}\n >\n {!isMarkdown && (\n <>\n <div className=\"notebook-toolbar\">\n <span>\n <button\n type=\"button\"\n className=\"btn btn-link btn-link-icon btn-play\"\n onClick={this.handleRunAll}\n disabled={runButtonsDisabled}\n >\n <FontAwesomeIcon icon={vsPlay} transform=\"grow-4\" />\n <Tooltip>\n Run {SHORTCUTS.NOTEBOOK.RUN.getDisplayText()}\n </Tooltip>\n </button>\n {disabledRunButtonTooltip && (\n <Tooltip>{disabledRunButtonTooltip}</Tooltip>\n )}\n </span>\n <span>\n <button\n type=\"button\"\n className=\"btn btn-link btn-link-icon btn-play\"\n onClick={this.handleRunSelected}\n disabled={runButtonsDisabled}\n >\n <FontAwesomeIcon icon={dhRunSelection} transform=\"grow-4\" />\n <Tooltip>\n Run Selected{' '}\n {SHORTCUTS.NOTEBOOK.RUN_SELECTED.getDisplayText()}\n </Tooltip>\n </button>\n {disabledRunSelectedButtonTooltip && (\n <Tooltip>{disabledRunSelectedButtonTooltip}</Tooltip>\n )}\n </span>\n <button\n type=\"button\"\n className=\"btn btn-link btn-link-icon mr-auto\"\n disabled={toolbarDisabled}\n onClick={this.handleSave}\n >\n <FontAwesomeIcon icon={vsSave} />\n <Tooltip>Save</Tooltip>\n </button>\n <button\n type=\"button\"\n className=\"btn btn-link btn-overflow btn-link-icon\"\n disabled={toolbarDisabled}\n >\n <FontAwesomeIcon icon={vsKebabVertical} />\n <Tooltip>More Actions...</Tooltip>\n <DropdownMenu\n actions={overflowActions}\n popperOptions={NotebookPanel.POPPER_OPTIONS}\n />\n </button>\n </div>\n <ScriptEditor\n isLoaded={isLoaded}\n isLoading={isLoading}\n error={error}\n onChange={this.handleEditorChange}\n onRunCommand={this.handleRunCommand}\n session={session}\n sessionLanguage={sessionLanguage}\n settings={settings}\n focusOnMount={focusOnMount}\n ref={notebook => {\n this.notebook = notebook;\n }}\n />\n </>\n )}\n {isMarkdown && (\n <MarkdownNotebook\n content={settings.value}\n onLinkClick={this.handleLinkClick}\n onRunCode={this.handleRunCommand}\n transformImageUri={this.handleTransformLinkUri}\n transformLinkUri={this.handleTransformLinkUri}\n />\n )}\n <NewItemModal\n isOpen={showSaveAsModal}\n type=\"file\"\n defaultValue={itemName}\n title={isExistingItem ? 'Rename' : 'Save file as'}\n onSubmit={this.handleSaveAsSubmit}\n onCancel={this.handleSaveAsCancel}\n notifyOnExtensionChange\n storage={fileStorage}\n />\n <BasicModal\n isOpen={showCloseModal}\n headerText={`Do you want to save the changes you made to ${itemName}?`}\n bodyText=\"Your changes will be lost if you don't save them.\"\n onCancel={this.handleCloseCancel}\n onDiscard={this.handleCloseDiscard}\n onConfirm={this.handleCloseSave}\n discardButtonText=\"Discard Changes\"\n confirmButtonText=\"Save\"\n />\n <ContextActions actions={contextActions} />\n </Panel>\n </>\n );\n }\n}\n\nNotebookPanel.propTypes = {\n fileStorage: PropTypes.shape({\n deleteFile: PropTypes.func.isRequired,\n loadFile: PropTypes.func.isRequired,\n saveFile: PropTypes.func.isRequired,\n }).isRequired,\n glContainer: GLPropTypes.Container.isRequired,\n glEventHub: GLPropTypes.EventHub.isRequired,\n isDashboardActive: PropTypes.bool,\n isPreview: PropTypes.bool,\n metadata: PropTypes.shape({\n id: PropTypes.string.isRequired,\n }).isRequired,\n session: PropTypes.shape({}),\n sessionLanguage: PropTypes.string,\n panelState: PropTypes.shape({\n settings: PropTypes.shape({}),\n fileMetadata: PropTypes.shape({}),\n }).isRequired,\n notebooksUrl: PropTypes.string,\n};\n\nNotebookPanel.defaultProps = {\n isDashboardActive: true,\n isPreview: false,\n session: null,\n sessionLanguage: null,\n notebooksUrl: new URL(\n `${process.env.REACT_APP_NOTEBOOKS_URL}/`,\n window.location\n ).href,\n};\n\nconst mapStateToProps = (state, ownProps) => {\n const fileStorage = getFileStorage(state);\n const sessionWrapper = getDashboardSessionWrapper(\n state,\n ownProps.localDashboardId\n );\n const { session, config: sessionConfig } = sessionWrapper ?? {};\n const { type: sessionLanguage } = sessionConfig ?? {};\n return {\n fileStorage,\n session,\n sessionLanguage,\n };\n};\n\nexport default connect(mapStateToProps, null, null, { forwardRef: true })(\n NotebookPanel\n);\n"],"file":"NotebookPanel.js"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@deephaven/dashboard-core-plugins",
|
|
3
|
-
"version": "0.14.
|
|
3
|
+
"version": "0.14.2-beta.0+a3f37ab",
|
|
4
4
|
"description": "Deephaven Dashboard Core Plugins",
|
|
5
5
|
"author": "Deephaven Data Labs LLC",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -30,19 +30,19 @@
|
|
|
30
30
|
"start": "cross-env NODE_ENV=development npm run watch"
|
|
31
31
|
},
|
|
32
32
|
"dependencies": {
|
|
33
|
-
"@deephaven/chart": "^0.14.
|
|
34
|
-
"@deephaven/components": "^0.14.
|
|
35
|
-
"@deephaven/console": "^0.14.
|
|
36
|
-
"@deephaven/dashboard": "^0.14.
|
|
37
|
-
"@deephaven/file-explorer": "^0.14.
|
|
38
|
-
"@deephaven/golden-layout": "^0.14.
|
|
39
|
-
"@deephaven/icons": "^0.14.
|
|
40
|
-
"@deephaven/iris-grid": "^0.14.
|
|
41
|
-
"@deephaven/jsapi-shim": "^0.14.
|
|
42
|
-
"@deephaven/jsapi-utils": "^0.14.
|
|
43
|
-
"@deephaven/log": "^0.14.
|
|
44
|
-
"@deephaven/redux": "^0.14.
|
|
45
|
-
"@deephaven/utils": "^0.14.
|
|
33
|
+
"@deephaven/chart": "^0.14.2-beta.0+a3f37ab",
|
|
34
|
+
"@deephaven/components": "^0.14.2-beta.0+a3f37ab",
|
|
35
|
+
"@deephaven/console": "^0.14.2-beta.0+a3f37ab",
|
|
36
|
+
"@deephaven/dashboard": "^0.14.2-beta.0+a3f37ab",
|
|
37
|
+
"@deephaven/file-explorer": "^0.14.2-beta.0+a3f37ab",
|
|
38
|
+
"@deephaven/golden-layout": "^0.14.2-beta.0+a3f37ab",
|
|
39
|
+
"@deephaven/icons": "^0.14.2-beta.0+a3f37ab",
|
|
40
|
+
"@deephaven/iris-grid": "^0.14.2-beta.0+a3f37ab",
|
|
41
|
+
"@deephaven/jsapi-shim": "^0.14.2-beta.0+a3f37ab",
|
|
42
|
+
"@deephaven/jsapi-utils": "^0.14.2-beta.0+a3f37ab",
|
|
43
|
+
"@deephaven/log": "^0.14.2-beta.0+a3f37ab",
|
|
44
|
+
"@deephaven/redux": "^0.14.2-beta.0+a3f37ab",
|
|
45
|
+
"@deephaven/utils": "^0.14.2-beta.0+a3f37ab",
|
|
46
46
|
"@fortawesome/react-fontawesome": "^0.1.18",
|
|
47
47
|
"classnames": "^2.3.1",
|
|
48
48
|
"deep-equal": "^2.0.5",
|
|
@@ -63,8 +63,8 @@
|
|
|
63
63
|
"react-redux": "^7.2.4"
|
|
64
64
|
},
|
|
65
65
|
"devDependencies": {
|
|
66
|
-
"@deephaven/mocks": "^0.14.
|
|
67
|
-
"@deephaven/tsconfig": "^0.14.
|
|
66
|
+
"@deephaven/mocks": "^0.14.2-beta.0+a3f37ab",
|
|
67
|
+
"@deephaven/tsconfig": "^0.14.2-beta.0+a3f37ab"
|
|
68
68
|
},
|
|
69
69
|
"files": [
|
|
70
70
|
"dist"
|
|
@@ -72,5 +72,5 @@
|
|
|
72
72
|
"publishConfig": {
|
|
73
73
|
"access": "public"
|
|
74
74
|
},
|
|
75
|
-
"gitHead": "
|
|
75
|
+
"gitHead": "a3f37ab14f152eaf150d40fbdf5a70b82052f380"
|
|
76
76
|
}
|