@deephaven/dashboard-core-plugins 0.8.2-beta.1 → 0.9.1-alpha.8
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/GridPlugin.d.ts +3 -1
- package/dist/GridPlugin.d.ts.map +1 -1
- package/dist/GridPlugin.js +5 -3
- package/dist/GridPlugin.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/linker/Linker.d.ts +4 -4
- package/dist/linker/Linker.d.ts.map +1 -1
- package/dist/linker/Linker.js +2 -1
- package/dist/linker/Linker.js.map +1 -1
- package/dist/panels/ChartPanel.d.ts +1 -1
- package/dist/panels/ChartPanel.d.ts.map +1 -1
- package/dist/panels/DropdownFilterPanel.d.ts +1 -1
- package/dist/panels/IrisGridPanel.d.ts +3 -0
- package/dist/panels/IrisGridPanel.d.ts.map +1 -1
- package/dist/panels/IrisGridPanel.js +8 -4
- package/dist/panels/IrisGridPanel.js.map +1 -1
- package/dist/panels/NotebookPanel.d.ts.map +1 -1
- package/dist/panels/NotebookPanel.js +1 -2
- package/dist/panels/NotebookPanel.js.map +1 -1
- package/dist/panels/index.d.ts +0 -1
- package/dist/panels/index.js +0 -1
- package/dist/panels/index.js.map +1 -1
- package/dist/redux/actions.d.ts +6 -6
- package/dist/redux/actions.d.ts.map +1 -1
- package/dist/redux/selectors.d.ts +9 -9
- package/dist/redux/selectors.d.ts.map +1 -1
- package/package.json +19 -19
- package/dist/panels/Shortcuts.d.ts +0 -10
- package/dist/panels/Shortcuts.d.ts.map +0 -1
- package/dist/panels/Shortcuts.js +0 -30
- package/dist/panels/Shortcuts.js.map +0 -1
- package/dist/tsconfig.tsbuildinfo +0 -1
|
@@ -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","GLPropTypes","FileUtils","NewItemModal","vsSave","vsKebabVertical","dhFileSearch","vsPlay","vsRunAll","getFileStorage","classNames","debounce","Log","Pending","PromiseUtils","ConsoleEvent","NotebookEvent","getDashboardSessionWrapper","Panel","SHORTCUTS","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","handleLoadSuccess","handleLoadError","handlePanelTabClick","handleRenameFile","handleResize","handleRunCommand","handleRunAll","handleRunSelected","handleSave","handleSaveAsCancel","handleSaveAsSubmit","handleSaveError","handleSaveSuccess","handleSessionOpened","handleSessionClosed","handleShow","handleShowRename","handleTab","handleTabFocus","handleTabBlur","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","isUndoing","isRedoing","toggleFind","errorParam","isTimedOut","file","oldMetadata","deleteFile","name","oldName","newName","updateDimensions","command","runCommand","getSelectedCommand","args","isHidden","focus","requestAnimationFrame","notebookSettings","CREATE_NOTEBOOK","SEND_COMMAND","render","focusOnMount","DEFAULT_NAME","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","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 } 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 SHORTCUTS from './Shortcuts';\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.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\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.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 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 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 if (this.notebook) {\n this.notebook.updateDimensions();\n }\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 if (!this.notebook) {\n return;\n }\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 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 const { glEventHub } = this.props;\n glEventHub.emit(ConsoleEvent.SEND_COMMAND, command, false, true);\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 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 <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>Run {SHORTCUTS.NOTEBOOK.RUN.getDisplayText()}</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 <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};\n\nNotebookPanel.defaultProps = {\n isDashboardActive: true,\n isPreview: false,\n session: null,\n sessionLanguage: null,\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","vsRunAll","getFileStorage","classNames","debounce","Log","Pending","PromiseUtils","ConsoleEvent","NotebookEvent","getDashboardSessionWrapper","Panel","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","handleLoadSuccess","handleLoadError","handlePanelTabClick","handleRenameFile","handleResize","handleRunCommand","handleRunAll","handleRunSelected","handleSave","handleSaveAsCancel","handleSaveAsSubmit","handleSaveError","handleSaveSuccess","handleSessionOpened","handleSessionClosed","handleShow","handleShowRename","handleTab","handleTabFocus","handleTabBlur","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","isUndoing","isRedoing","toggleFind","errorParam","isTimedOut","file","oldMetadata","deleteFile","name","oldName","newName","updateDimensions","command","runCommand","getSelectedCommand","args","isHidden","focus","requestAnimationFrame","notebookSettings","CREATE_NOTEBOOK","SEND_COMMAND","render","focusOnMount","DEFAULT_NAME","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","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 './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.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\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.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 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 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 if (this.notebook) {\n this.notebook.updateDimensions();\n }\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 if (!this.notebook) {\n return;\n }\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 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 const { glEventHub } = this.props;\n glEventHub.emit(ConsoleEvent.SEND_COMMAND, command, false, true);\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 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 <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>Run {SHORTCUTS.NOTEBOOK.RUN.getDisplayText()}</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 <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};\n\nNotebookPanel.defaultProps = {\n isDashboardActive: true,\n isPreview: false,\n session: null,\n sessionLanguage: null,\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/dist/panels/index.d.ts
CHANGED
|
@@ -13,5 +13,4 @@ export { default as PandasPanel } from "./PandasPanel";
|
|
|
13
13
|
export { default as Panel } from "./Panel";
|
|
14
14
|
export { default as WidgetPanel } from "./WidgetPanel";
|
|
15
15
|
export { default as WidgetPanelTooltip } from "./WidgetPanelTooltip";
|
|
16
|
-
export { default as SHORTCUTS } from "./Shortcuts";
|
|
17
16
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/panels/index.js
CHANGED
|
@@ -13,5 +13,4 @@ export { default as PandasPanel } from "./PandasPanel.js";
|
|
|
13
13
|
export { default as Panel } from "./Panel.js";
|
|
14
14
|
export { default as WidgetPanel } from "./WidgetPanel.js";
|
|
15
15
|
export { default as WidgetPanelTooltip } from "./WidgetPanelTooltip.js";
|
|
16
|
-
export { default as SHORTCUTS } from "./Shortcuts.js";
|
|
17
16
|
//# sourceMappingURL=index.js.map
|
package/dist/panels/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/panels/index.js"],"names":["default","ChartPanel","CommandHistoryPanel","ConsolePanel","DropdownFilterPanel","FileExplorerPanel","FilterSetManagerPanel","InputFilterPanel","IrisGridPanel","LogPanel","MarkdownPanel","NotebookPanel","PandasPanel","Panel","WidgetPanel","WidgetPanelTooltip"
|
|
1
|
+
{"version":3,"sources":["../../src/panels/index.js"],"names":["default","ChartPanel","CommandHistoryPanel","ConsolePanel","DropdownFilterPanel","FileExplorerPanel","FilterSetManagerPanel","InputFilterPanel","IrisGridPanel","LogPanel","MarkdownPanel","NotebookPanel","PandasPanel","Panel","WidgetPanel","WidgetPanelTooltip"],"mappings":"SAASA,OAAO,IAAIC,U;SACXD,OAAO,IAAIE,mB;SACXF,OAAO,IAAIG,Y;SACXH,OAAO,IAAII,mB;SACXJ,OAAO,IAAIK,iB;SACXL,OAAO,IAAIM,qB;SACXN,OAAO,IAAIO,gB;SACXP,OAAO,IAAIQ,a;SACXR,OAAO,IAAIS,Q;SACXT,OAAO,IAAIU,a;SACXV,OAAO,IAAIW,a;SACXX,OAAO,IAAIY,W;SACXZ,OAAO,IAAIa,K;SACXb,OAAO,IAAIc,W;SACXd,OAAO,IAAIe,kB","sourcesContent":["export { default as ChartPanel } from './ChartPanel';\nexport { default as CommandHistoryPanel } from './CommandHistoryPanel';\nexport { default as ConsolePanel } from './ConsolePanel';\nexport { default as DropdownFilterPanel } from './DropdownFilterPanel';\nexport { default as FileExplorerPanel } from './FileExplorerPanel';\nexport { default as FilterSetManagerPanel } from './FilterSetManagerPanel';\nexport { default as InputFilterPanel } from './InputFilterPanel';\nexport { default as IrisGridPanel } from './IrisGridPanel';\nexport { default as LogPanel } from './LogPanel';\nexport { default as MarkdownPanel } from './MarkdownPanel';\nexport { default as NotebookPanel } from './NotebookPanel';\nexport { default as PandasPanel } from './PandasPanel';\nexport { default as Panel } from './Panel';\nexport { default as WidgetPanel } from './WidgetPanel';\nexport { default as WidgetPanelTooltip } from './WidgetPanelTooltip';\n"],"file":"index.js"}
|
package/dist/redux/actions.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
export function setDashboardSessionWrapper(id: string, sessionWrapper:
|
|
2
|
-
export function setDashboardLinks(id: string, links:
|
|
3
|
-
export function addDashboardLinks(id: string, newLinks:
|
|
1
|
+
export function setDashboardSessionWrapper(id: string, sessionWrapper: SessionWrapper): (dispatch: any) => any;
|
|
2
|
+
export function setDashboardLinks(id: string, links: Link[]): (dispatch: any) => any;
|
|
3
|
+
export function addDashboardLinks(id: string, newLinks: Link[]): (dispatch: any, getState: any) => any;
|
|
4
4
|
export function deleteDashboardLinks(id: string, linkIds: string[]): (dispatch: any, getState: any) => any;
|
|
5
5
|
export function setDashboardIsolatedLinkerPanelId(id: string, isolatedLinkerPanelId: string | undefined): (dispatch: any) => any;
|
|
6
|
-
export function setDashboardColumnSelectionValidator(id: string, columnSelectionValidator:
|
|
7
|
-
export function setDashboardConsoleSettings(id: string, consoleSettings:
|
|
8
|
-
export function setDashboardFilterSets(id: string, filterSets:
|
|
6
|
+
export function setDashboardColumnSelectionValidator(id: string, columnSelectionValidator: ColumnSelectionValidator | undefined): (dispatch: any) => any;
|
|
7
|
+
export function setDashboardConsoleSettings(id: string, consoleSettings: ConsoleSettings): (dispatch: any) => any;
|
|
8
|
+
export function setDashboardFilterSets(id: string, filterSets: FilterSet[]): (dispatch: any) => any;
|
|
9
9
|
//# sourceMappingURL=actions.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../../src/redux/actions.js"],"names":[],"mappings":"AASO,+CAHI,MAAM
|
|
1
|
+
{"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../../src/redux/actions.js"],"names":[],"mappings":"AASO,+CAHI,MAAM,0DAIsC;AAOhD,sCAHI,MAAM,SACN,MAAM,0BAG6B;AAOvC,sCAHI,MAAM,YACN,MAAM,yCAahB;AAOM,yCAHI,MAAM,WACN,MAAM,EAAE,yCAMlB;AAOM,sDAHI,MAAM,yBACN,MAAM,GAAC,SAAS,0BAKkD;AAOtE,yDAHI,MAAM,4BACN,2BAAyB,SAAS,0BAMoB;AAO1D,gDAHI,MAAM,4DAIuC;AAOjD,2CAHI,MAAM,cACN,WAAW,0BAG6B"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
export function getColumnsForDashboard(store:
|
|
2
|
-
export function getFilterSetsForDashboard(store:
|
|
3
|
-
export function getInputFiltersForDashboard(store:
|
|
4
|
-
export function getTableMapForDashboard(store:
|
|
5
|
-
export function getIsolatedLinkerPanelIdForDashboard(store:
|
|
6
|
-
export function getLinksForDashboard(store:
|
|
7
|
-
export function getColumnSelectionValidatorForDashboard(store:
|
|
8
|
-
export function getDashboardConsoleSettings(store:
|
|
9
|
-
export function getDashboardSessionWrapper(store:
|
|
1
|
+
export function getColumnsForDashboard(store: Store, dashboardId: string): Column[];
|
|
2
|
+
export function getFilterSetsForDashboard(store: Store, dashboardId: string): FilterSet[];
|
|
3
|
+
export function getInputFiltersForDashboard(store: Store, dashboardId: string): FilterChangeEvent[];
|
|
4
|
+
export function getTableMapForDashboard(store: Store, dashboardId: string): Map<string, Table>;
|
|
5
|
+
export function getIsolatedLinkerPanelIdForDashboard(store: Store, dashboardId: string): string | undefined;
|
|
6
|
+
export function getLinksForDashboard(store: Store, dashboardId: string): Link[];
|
|
7
|
+
export function getColumnSelectionValidatorForDashboard(store: Store, dashboardId: string): ColumnSelectionValidator | undefined;
|
|
8
|
+
export function getDashboardConsoleSettings(store: Store, dashboardId: string): ConsoleSettings | undefined;
|
|
9
|
+
export function getDashboardSessionWrapper(store: Store, dashboardId: string): SessionWrapper | undefined;
|
|
10
10
|
//# sourceMappingURL=selectors.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"selectors.d.ts","sourceRoot":"","sources":["../../src/redux/selectors.js"],"names":[],"mappings":"AAWO,
|
|
1
|
+
{"version":3,"file":"selectors.d.ts","sourceRoot":"","sources":["../../src/redux/selectors.js"],"names":[],"mappings":"AAWO,kEAHI,MAAM,GACJ,QAAQ,CAGwC;AAQtD,qEAHI,MAAM,GACJ,WAAW,CAGwC;AAOzD,uEAHI,MAAM,GACJ,mBAAmB,CAG6B;AAOtD,mEAHI,MAAM,GACJ,IAAI,MAAM,QAAQ,CAG6B;AAOrD,gFAHI,MAAM,GACJ,MAAM,GAAC,SAAS,CAG+B;AAOrD,gEAHI,MAAM,GACJ,MAAM,CAGwC;AAOpD,mFAHI,MAAM,GACJ,2BAAyB,SAAS,CAGgB;AAOxD,uEAHI,MAAM,GACJ,kBAAgB,SAAS,CAGgB;AAQ/C,sEAHI,MAAM,GACJ,iBAAe,SAAS,CAGgB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@deephaven/dashboard-core-plugins",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.9.1-alpha.8+4816848",
|
|
4
4
|
"description": "Deephaven Dashboard Core Plugins",
|
|
5
5
|
"author": "Deephaven Data Labs LLC",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -34,15 +34,15 @@
|
|
|
34
34
|
"start": "cross-env NODE_ENV=development npm run watch"
|
|
35
35
|
},
|
|
36
36
|
"dependencies": {
|
|
37
|
-
"@deephaven/chart": "^0.
|
|
38
|
-
"@deephaven/console": "^0.
|
|
39
|
-
"@deephaven/dashboard": "^0.
|
|
40
|
-
"@deephaven/file-explorer": "^0.
|
|
41
|
-
"@deephaven/golden-layout": "^0.
|
|
42
|
-
"@deephaven/icons": "^0.
|
|
43
|
-
"@deephaven/iris-grid": "^0.
|
|
44
|
-
"@deephaven/jsapi-shim": "^0.
|
|
45
|
-
"@deephaven/utils": "^0.
|
|
37
|
+
"@deephaven/chart": "^0.9.1-alpha.8+4816848",
|
|
38
|
+
"@deephaven/console": "^0.9.1-alpha.8+4816848",
|
|
39
|
+
"@deephaven/dashboard": "^0.9.1-alpha.8+4816848",
|
|
40
|
+
"@deephaven/file-explorer": "^0.9.1-alpha.8+4816848",
|
|
41
|
+
"@deephaven/golden-layout": "^0.9.1-alpha.8+4816848",
|
|
42
|
+
"@deephaven/icons": "^0.9.1-alpha.8+4816848",
|
|
43
|
+
"@deephaven/iris-grid": "^0.9.1-alpha.8+4816848",
|
|
44
|
+
"@deephaven/jsapi-shim": "^0.9.1-alpha.8+4816848",
|
|
45
|
+
"@deephaven/utils": "^0.9.1-alpha.8+4816848",
|
|
46
46
|
"@fortawesome/react-fontawesome": "^0.1.12",
|
|
47
47
|
"classnames": "^2.3.1",
|
|
48
48
|
"deep-equal": "^2.0.4",
|
|
@@ -59,32 +59,32 @@
|
|
|
59
59
|
"peerDependencies": {
|
|
60
60
|
"@deephaven/components": "^0.4.0",
|
|
61
61
|
"@deephaven/log": "^0.4.0",
|
|
62
|
-
"@deephaven/redux": "^0.
|
|
62
|
+
"@deephaven/redux": "^0.8.1",
|
|
63
63
|
"react": "^16.0.0",
|
|
64
64
|
"react-dom": "^16.0.0",
|
|
65
65
|
"react-redux": "^7.2.4"
|
|
66
66
|
},
|
|
67
67
|
"devDependencies": {
|
|
68
68
|
"@babel/cli": "^7.16.0",
|
|
69
|
-
"@deephaven/components": "^0.
|
|
70
|
-
"@deephaven/log": "^0.
|
|
71
|
-
"@deephaven/mocks": "^0.
|
|
72
|
-
"@deephaven/redux": "^0.
|
|
73
|
-
"@deephaven/tsconfig": "^0.
|
|
69
|
+
"@deephaven/components": "^0.9.1-alpha.8+4816848",
|
|
70
|
+
"@deephaven/log": "^0.9.1-alpha.8+4816848",
|
|
71
|
+
"@deephaven/mocks": "^0.9.1-alpha.8+4816848",
|
|
72
|
+
"@deephaven/redux": "^0.9.1-alpha.8+4816848",
|
|
73
|
+
"@deephaven/tsconfig": "^0.9.1-alpha.8+4816848",
|
|
74
74
|
"@storybook/addon-actions": "^6.2.3",
|
|
75
75
|
"@storybook/addon-essentials": "^6.2.3",
|
|
76
76
|
"@storybook/addon-links": "^6.2.3",
|
|
77
77
|
"@storybook/react": "^6.2.3",
|
|
78
78
|
"@types/react": "^16.14.8",
|
|
79
79
|
"cross-env": "^7.0.2",
|
|
80
|
+
"follow-redirects": ">=1.14.7",
|
|
80
81
|
"identity-obj-proxy": "^3.0.0",
|
|
81
82
|
"npm-run-all": "^4.1.5",
|
|
82
83
|
"react": "^16.14.0",
|
|
83
84
|
"react-dom": "^16.14.0",
|
|
84
85
|
"react-redux": "^7.2.4",
|
|
85
86
|
"rimraf": "^3.0.2",
|
|
86
|
-
"sass": "1.32.13"
|
|
87
|
-
"typescript": "~4.3.2"
|
|
87
|
+
"sass": "1.32.13"
|
|
88
88
|
},
|
|
89
89
|
"files": [
|
|
90
90
|
"dist"
|
|
@@ -92,5 +92,5 @@
|
|
|
92
92
|
"publishConfig": {
|
|
93
93
|
"access": "public"
|
|
94
94
|
},
|
|
95
|
-
"gitHead": "
|
|
95
|
+
"gitHead": "481684819a21a2839b424d0dfce542b09bd8fd58"
|
|
96
96
|
}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
declare const SHORTCUTS: {
|
|
2
|
-
NOTEBOOK: {
|
|
3
|
-
name: string;
|
|
4
|
-
RUN: import("@deephaven/components").Shortcut;
|
|
5
|
-
RUN_SELECTED: import("@deephaven/components").Shortcut;
|
|
6
|
-
FIND: import("@deephaven/components").Shortcut;
|
|
7
|
-
};
|
|
8
|
-
};
|
|
9
|
-
export default SHORTCUTS;
|
|
10
|
-
//# sourceMappingURL=Shortcuts.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Shortcuts.d.ts","sourceRoot":"","sources":["../../src/panels/Shortcuts.ts"],"names":[],"mappings":"AA2BA,QAAA,MAAM,SAAS;;;;;;;CAEd,CAAC;AAEF,eAAe,SAAS,CAAC"}
|
package/dist/panels/Shortcuts.js
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import { ShortcutRegistry, KEY, MODIFIER } from '@deephaven/components';
|
|
2
|
-
var NOTEBOOK = {
|
|
3
|
-
name: 'Notebook',
|
|
4
|
-
RUN: ShortcutRegistry.createAndAdd({
|
|
5
|
-
id: 'NOTEBOOK.RUN',
|
|
6
|
-
name: 'Run',
|
|
7
|
-
shortcut: [MODIFIER.ALT, KEY.R],
|
|
8
|
-
macShortcut: [MODIFIER.OPTION, KEY.R],
|
|
9
|
-
isEditable: false
|
|
10
|
-
}),
|
|
11
|
-
RUN_SELECTED: ShortcutRegistry.createAndAdd({
|
|
12
|
-
id: 'NOTEBOOK.RUN_SELECTED',
|
|
13
|
-
name: 'Run Selected',
|
|
14
|
-
shortcut: [MODIFIER.ALT, MODIFIER.SHIFT, KEY.R],
|
|
15
|
-
macShortcut: [MODIFIER.OPTION, MODIFIER.SHIFT, KEY.R],
|
|
16
|
-
isEditable: false
|
|
17
|
-
}),
|
|
18
|
-
FIND: ShortcutRegistry.createAndAdd({
|
|
19
|
-
id: 'NOTEBOOK.FIND',
|
|
20
|
-
name: 'Find',
|
|
21
|
-
shortcut: [MODIFIER.CTRL, KEY.F],
|
|
22
|
-
macShortcut: [MODIFIER.CMD, KEY.F],
|
|
23
|
-
isEditable: false
|
|
24
|
-
})
|
|
25
|
-
};
|
|
26
|
-
var SHORTCUTS = {
|
|
27
|
-
NOTEBOOK
|
|
28
|
-
};
|
|
29
|
-
export default SHORTCUTS;
|
|
30
|
-
//# sourceMappingURL=Shortcuts.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/panels/Shortcuts.ts"],"names":["ShortcutRegistry","KEY","MODIFIER","NOTEBOOK","name","RUN","createAndAdd","id","shortcut","ALT","R","macShortcut","OPTION","isEditable","RUN_SELECTED","SHIFT","FIND","CTRL","F","CMD","SHORTCUTS"],"mappings":"AAAA,SAASA,gBAAT,EAA2BC,GAA3B,EAAgCC,QAAhC,QAAgD,uBAAhD;AAEA,IAAMC,QAAQ,GAAG;AACfC,EAAAA,IAAI,EAAE,UADS;AAEfC,EAAAA,GAAG,EAAEL,gBAAgB,CAACM,YAAjB,CAA8B;AACjCC,IAAAA,EAAE,EAAE,cAD6B;AAEjCH,IAAAA,IAAI,EAAE,KAF2B;AAGjCI,IAAAA,QAAQ,EAAE,CAACN,QAAQ,CAACO,GAAV,EAAeR,GAAG,CAACS,CAAnB,CAHuB;AAIjCC,IAAAA,WAAW,EAAE,CAACT,QAAQ,CAACU,MAAV,EAAkBX,GAAG,CAACS,CAAtB,CAJoB;AAKjCG,IAAAA,UAAU,EAAE;AALqB,GAA9B,CAFU;AASfC,EAAAA,YAAY,EAAEd,gBAAgB,CAACM,YAAjB,CAA8B;AAC1CC,IAAAA,EAAE,EAAE,uBADsC;AAE1CH,IAAAA,IAAI,EAAE,cAFoC;AAG1CI,IAAAA,QAAQ,EAAE,CAACN,QAAQ,CAACO,GAAV,EAAeP,QAAQ,CAACa,KAAxB,EAA+Bd,GAAG,CAACS,CAAnC,CAHgC;AAI1CC,IAAAA,WAAW,EAAE,CAACT,QAAQ,CAACU,MAAV,EAAkBV,QAAQ,CAACa,KAA3B,EAAkCd,GAAG,CAACS,CAAtC,CAJ6B;AAK1CG,IAAAA,UAAU,EAAE;AAL8B,GAA9B,CATC;AAgBfG,EAAAA,IAAI,EAAEhB,gBAAgB,CAACM,YAAjB,CAA8B;AAClCC,IAAAA,EAAE,EAAE,eAD8B;AAElCH,IAAAA,IAAI,EAAE,MAF4B;AAGlCI,IAAAA,QAAQ,EAAE,CAACN,QAAQ,CAACe,IAAV,EAAgBhB,GAAG,CAACiB,CAApB,CAHwB;AAIlCP,IAAAA,WAAW,EAAE,CAACT,QAAQ,CAACiB,GAAV,EAAelB,GAAG,CAACiB,CAAnB,CAJqB;AAKlCL,IAAAA,UAAU,EAAE;AALsB,GAA9B;AAhBS,CAAjB;AAyBA,IAAMO,SAAS,GAAG;AAChBjB,EAAAA;AADgB,CAAlB;AAIA,eAAeiB,SAAf","sourcesContent":["import { ShortcutRegistry, KEY, MODIFIER } from '@deephaven/components';\n\nconst NOTEBOOK = {\n name: 'Notebook',\n RUN: ShortcutRegistry.createAndAdd({\n id: 'NOTEBOOK.RUN',\n name: 'Run',\n shortcut: [MODIFIER.ALT, KEY.R],\n macShortcut: [MODIFIER.OPTION, KEY.R],\n isEditable: false,\n }),\n RUN_SELECTED: ShortcutRegistry.createAndAdd({\n id: 'NOTEBOOK.RUN_SELECTED',\n name: 'Run Selected',\n shortcut: [MODIFIER.ALT, MODIFIER.SHIFT, KEY.R],\n macShortcut: [MODIFIER.OPTION, MODIFIER.SHIFT, KEY.R],\n isEditable: false,\n }),\n FIND: ShortcutRegistry.createAndAdd({\n id: 'NOTEBOOK.FIND',\n name: 'Find',\n shortcut: [MODIFIER.CTRL, KEY.F],\n macShortcut: [MODIFIER.CMD, KEY.F],\n isEditable: false,\n }),\n};\n\nconst SHORTCUTS = {\n NOTEBOOK,\n};\n\nexport default SHORTCUTS;\n"],"file":"Shortcuts.js"}
|