@deephaven/dashboard-core-plugins 0.15.5-beta.0 → 0.15.5-vite.12
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/ChartBuilderPlugin.js.map +1 -1
- package/dist/ChartPlugin.js.map +1 -1
- package/dist/ConsolePlugin.d.ts +1 -0
- package/dist/ConsolePlugin.d.ts.map +1 -1
- package/dist/ConsolePlugin.js +5 -3
- package/dist/ConsolePlugin.js.map +1 -1
- package/dist/FilterPlugin.js.map +1 -1
- package/dist/GridPlugin.js.map +1 -1
- package/dist/LinkerPlugin.js.map +1 -1
- package/dist/MarkdownPlugin.js.map +1 -1
- package/dist/PandasPlugin.js.map +1 -1
- package/dist/controls/ControlType.js.map +1 -1
- package/dist/controls/dropdown-filter/DropdownFilter.js.map +1 -1
- package/dist/controls/input-filter/InputFilter.js.map +1 -1
- package/dist/controls/markdown/MarkdownContainer.js.map +1 -1
- package/dist/controls/markdown/MarkdownEditor.js.map +1 -1
- package/dist/controls/markdown/MarkdownStartPage.js.map +1 -1
- package/dist/controls/markdown/MarkdownUtils.js.map +1 -1
- package/dist/events/ChartEvent.js.map +1 -1
- package/dist/events/ConsoleEvent.js.map +1 -1
- package/dist/events/InputFilterEvent.js.map +1 -1
- package/dist/events/IrisGridEvent.js.map +1 -1
- package/dist/events/MarkdownEvent.js.map +1 -1
- package/dist/events/NotebookEvent.js.map +1 -1
- package/dist/events/PQEvent.js.map +1 -1
- package/dist/events/PandasEvent.js.map +1 -1
- package/dist/events/TabEvent.js.map +1 -1
- package/dist/events/index.js.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/linker/Linker.js.map +1 -1
- package/dist/linker/LinkerLink.js.map +1 -1
- package/dist/linker/LinkerOverlayContent.js.map +1 -1
- package/dist/linker/LinkerUtils.js.map +1 -1
- package/dist/linker/ToolType.js.map +1 -1
- package/dist/panels/ChartColumnSelectorOverlay.js.map +1 -1
- package/dist/panels/ChartFilterOverlay.js.map +1 -1
- package/dist/panels/ChartPanel.js.map +1 -1
- package/dist/panels/CommandHistoryPanel.js.map +1 -1
- package/dist/panels/ConsolePanel.js.map +1 -1
- package/dist/panels/DropdownFilterPanel.js.map +1 -1
- package/dist/panels/FileExplorerPanel.js.map +1 -1
- package/dist/panels/FilterSetManager.js.map +1 -1
- package/dist/panels/FilterSetManagerPanel.js.map +1 -1
- package/dist/panels/InputFilterPanel.js.map +1 -1
- package/dist/panels/IrisGridPanel.js.map +1 -1
- package/dist/panels/LogPanel.js.map +1 -1
- package/dist/panels/MarkdownNotebook.js.map +1 -1
- package/dist/panels/MarkdownPanel.js.map +1 -1
- package/dist/panels/NotebookPanel.d.ts +1 -3
- package/dist/panels/NotebookPanel.js +2 -3
- package/dist/panels/NotebookPanel.js.map +1 -1
- package/dist/panels/PandasPanel.js +1 -1
- package/dist/panels/PandasPanel.js.map +1 -1
- package/dist/panels/Panel.js.map +1 -1
- package/dist/panels/PanelContextMenu.js.map +1 -1
- package/dist/panels/RenameDialog.js.map +1 -1
- package/dist/panels/WidgetPanel.js.map +1 -1
- package/dist/panels/WidgetPanelTooltip.js.map +1 -1
- package/dist/panels/index.js.map +1 -1
- package/dist/prop-types/CommonPropTypes.js.map +1 -1
- package/dist/prop-types/UIPropTypes.js.map +1 -1
- package/dist/prop-types/index.js.map +1 -1
- package/dist/redux/actionTypes.js.map +1 -1
- package/dist/redux/actions.js.map +1 -1
- package/dist/redux/index.js.map +1 -1
- package/dist/redux/reducers/index.js.map +1 -1
- package/dist/redux/reducers/sessionWrapper.js.map +1 -1
- package/dist/redux/selectors.js.map +1 -1
- package/package.json +17 -18
|
@@ -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","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"}
|
|
1
|
+
{"version":3,"file":"NotebookPanel.js","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","mapStateToProps","ownProps","sessionWrapper","localDashboardId","config","sessionConfig","type","forwardRef"],"sources":["../../src/panels/NotebookPanel.jsx"],"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.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"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
function _extends() { _extends = Object.assign
|
|
1
|
+
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
2
2
|
|
|
3
3
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
4
4
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"PandasPanel.js","names":["React","Component","PropTypes","FontAwesomeIcon","dhRefresh","Tooltip","IrisGridPanel","PandasPanel","constructor","props","irisGridRef","createRef","buttonRef","handleReload","bind","handleGridStateChange","handlePanelStateUpdate","panelState","state","shouldFocusGrid","current","initModel","blur","setState","irisGrid","grid","focus","render","propTypes","shape","defaultProps"],"sources":["../../src/panels/PandasPanel.jsx"],"sourcesContent":["/* eslint-disable react/jsx-props-no-spreading */\n/* eslint-disable react/no-unused-state */\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { dhRefresh } from '@deephaven/icons';\nimport { Tooltip } from '@deephaven/components';\nimport IrisGridPanel from './IrisGridPanel';\nimport './PandasPanel.scss';\n\n/**\n * Wraps and IrisGridPanel to add a refresh button for Pandas.\n */\nclass PandasPanel extends Component {\n static COMPONENT = 'PandasPanel';\n\n constructor(props) {\n super(props);\n\n this.irisGridRef = React.createRef();\n this.buttonRef = React.createRef();\n\n this.handleReload = this.handleReload.bind(this);\n this.handleGridStateChange = this.handleGridStateChange.bind(this);\n this.handlePanelStateUpdate = this.handlePanelStateUpdate.bind(this);\n\n const { panelState } = props;\n this.state = {\n shouldFocusGrid: false,\n panelState, // Dehydrated panel state that can load this panel\n };\n }\n\n handleReload() {\n this.irisGridRef.current.initModel();\n this.buttonRef.current.blur();\n this.setState({\n shouldFocusGrid: true,\n });\n }\n\n handleGridStateChange() {\n const { shouldFocusGrid } = this.state;\n if (shouldFocusGrid && this.irisGridRef.current?.irisGrid?.current?.grid) {\n this.irisGridRef.current.irisGrid.current.grid.focus();\n this.setState({\n shouldFocusGrid: false,\n });\n }\n }\n\n handlePanelStateUpdate(panelState) {\n this.setState({\n panelState,\n });\n }\n\n render() {\n const { ...props } = this.props;\n\n return (\n <IrisGridPanel\n ref={this.irisGridRef}\n onStateChange={this.handleGridStateChange}\n onPanelStateUpdate={this.handlePanelStateUpdate}\n {...props}\n >\n <button\n ref={this.buttonRef}\n type=\"button\"\n className=\"btn btn-primary btn-pandas\"\n onClick={this.handleReload}\n >\n pandas dataframe\n <span>\n <FontAwesomeIcon\n icon={dhRefresh}\n transform=\"shrink-1\"\n className=\"mr-1\"\n />\n Reload\n </span>\n <Tooltip>\n Click to refresh pandas dataframe, updates do not occur\n automatically.\n </Tooltip>\n </button>\n </IrisGridPanel>\n );\n }\n}\n\nPandasPanel.propTypes = {\n panelState: PropTypes.shape({}),\n};\n\nPandasPanel.defaultProps = {\n panelState: null,\n};\n\nexport default PandasPanel;\n"],"mappings":";;;;AAAA;;AACA;AACA,OAAOA,KAAP,IAAgBC,SAAhB,QAAiC,OAAjC;AACA,OAAOC,SAAP,MAAsB,YAAtB;AACA,SAASC,eAAT,QAAgC,gCAAhC;AACA,SAASC,SAAT,QAA0B,kBAA1B;AACA,SAASC,OAAT,QAAwB,uBAAxB;OACOC,a;;AAGP;AACA;AACA;;AACA,MAAMC,WAAN,SAA0BN,SAA1B,CAAoC;EAGlCO,WAAW,CAACC,KAAD,EAAQ;IACjB,MAAMA,KAAN;IAEA,KAAKC,WAAL,gBAAmBV,KAAK,CAACW,SAAN,EAAnB;IACA,KAAKC,SAAL,gBAAiBZ,KAAK,CAACW,SAAN,EAAjB;IAEA,KAAKE,YAAL,GAAoB,KAAKA,YAAL,CAAkBC,IAAlB,CAAuB,IAAvB,CAApB;IACA,KAAKC,qBAAL,GAA6B,KAAKA,qBAAL,CAA2BD,IAA3B,CAAgC,IAAhC,CAA7B;IACA,KAAKE,sBAAL,GAA8B,KAAKA,sBAAL,CAA4BF,IAA5B,CAAiC,IAAjC,CAA9B;IAEA,IAAM;MAAEG;IAAF,IAAiBR,KAAvB;IACA,KAAKS,KAAL,GAAa;MACXC,eAAe,EAAE,KADN;MAEXF,UAFW,CAEC;;IAFD,CAAb;EAID;;EAEDJ,YAAY,GAAG;IACb,KAAKH,WAAL,CAAiBU,OAAjB,CAAyBC,SAAzB;IACA,KAAKT,SAAL,CAAeQ,OAAf,CAAuBE,IAAvB;IACA,KAAKC,QAAL,CAAc;MACZJ,eAAe,EAAE;IADL,CAAd;EAGD;;EAEDJ,qBAAqB,GAAG;IAAA;;IACtB,IAAM;MAAEI;IAAF,IAAsB,KAAKD,KAAjC;;IACA,IAAIC,eAAe,6BAAI,KAAKT,WAAL,CAAiBU,OAArB,4EAAI,sBAA0BI,QAA9B,6EAAI,uBAAoCJ,OAAxC,mDAAI,uBAA6CK,IAApE,EAA0E;MACxE,KAAKf,WAAL,CAAiBU,OAAjB,CAAyBI,QAAzB,CAAkCJ,OAAlC,CAA0CK,IAA1C,CAA+CC,KAA/C;MACA,KAAKH,QAAL,CAAc;QACZJ,eAAe,EAAE;MADL,CAAd;IAGD;EACF;;EAEDH,sBAAsB,CAACC,UAAD,EAAa;IACjC,KAAKM,QAAL,CAAc;MACZN;IADY,CAAd;EAGD;;EAEDU,MAAM,GAAG;IACP,kBAAqB,KAAKlB,KAA1B;IAAA,IAAWA,KAAX;;IAEA,oBACE,oBAAC,aAAD;MACE,GAAG,EAAE,KAAKC,WADZ;MAEE,aAAa,EAAE,KAAKK,qBAFtB;MAGE,kBAAkB,EAAE,KAAKC;IAH3B,GAIMP,KAJN,gBAME;MACE,GAAG,EAAE,KAAKG,SADZ;MAEE,IAAI,EAAC,QAFP;MAGE,SAAS,EAAC,4BAHZ;MAIE,OAAO,EAAE,KAAKC;IAJhB,oCAOE,+CACE,oBAAC,eAAD;MACE,IAAI,EAAET,SADR;MAEE,SAAS,EAAC,UAFZ;MAGE,SAAS,EAAC;IAHZ,EADF,WAPF,eAeE,oBAAC,OAAD,iFAfF,CANF,CADF;EA6BD;;AA5EiC;;gBAA9BG,W,eACe,a;;AA8ErBA,WAAW,CAACqB,SAAZ,GAAwB;EACtBX,UAAU,EAAEf,SAAS,CAAC2B,KAAV,CAAgB,EAAhB;AADU,CAAxB;AAIAtB,WAAW,CAACuB,YAAZ,GAA2B;EACzBb,UAAU,EAAE;AADa,CAA3B;AAIA,eAAeV,WAAf"}
|
package/dist/panels/Panel.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/panels/Panel.jsx"],"names":["React","Component","PureComponent","ReactDOM","PropTypes","classNames","memoize","ContextActions","LoadingOverlay","Tooltip","GLPropTypes","LayoutUtils","PanelEvent","Log","ConsoleEvent","InputFilterEvent","TabEvent","PanelContextMenu","RenameDialog","log","module","Panel","constructor","props","actions","isClonable","isRenamable","additionalActions","push","getCloneAction","getRenameAction","handleClearAllFilters","bind","handleCopyPanel","handleFocus","handleBlur","handleHide","handleResize","handleSessionClosed","handleSessionOpened","handleBeforeShow","handleShow","handleTabBlur","handleTabFocus","handleRenameCancel","handleRenameSubmit","handleShowRenameDialog","handleTabClicked","handleTab","glContainer","state","title","getTitleFromContainer","showRenameDialog","componentDidMount","componentPanel","glEventHub","on","SESSION_CLOSED","SESSION_OPENED","focus","blur","CLEAR_ALL_FILTERS","emit","MOUNT","componentWillUnmount","off","UNMOUNT","tab","setState","getTitleFromTab","forceUpdate","onTab","onTabClicked","onClearAllFilters","FOCUS","onFocus","onBlur","onHide","onResize","onSessionClose","onSessionOpen","onBeforeShow","onShow","onTabBlur","onTabFocus","newTitle","root","getRootFromContainer","config","getComponentConfigFromContainer","renameComponent","error","cloneConfig","cloneComponent","CLONED","order","group","groups","high","action","medium","render","children","className","renderTabTooltip","errorMessage","isLoaded","isLoading","glTab","createPortal","getAdditionActions","placement","element","propTypes","instanceOf","isRequired","node","Container","EventHub","string","func","oneOfType","array","bool","defaultProps"],"mappings":"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","sourcesContent":["import React, { Component, PureComponent } from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport memoize from 'memoize-one';\nimport { ContextActions, LoadingOverlay, Tooltip } from '@deephaven/components';\nimport { GLPropTypes, LayoutUtils, PanelEvent } from '@deephaven/dashboard';\nimport Log from '@deephaven/log';\nimport { ConsoleEvent, InputFilterEvent, TabEvent } from '../events';\nimport PanelContextMenu from './PanelContextMenu';\nimport RenameDialog from './RenameDialog';\n\nconst log = Log.module('Panel');\n\n/**\n * Generic panel component that emits mount/unmount/focus events.\n * Also wires up some triggers for common events:\n * Focus, Resize, Show, Session open/close, client disconnect/reconnect.\n */\nclass Panel extends PureComponent {\n constructor(props) {\n super(props);\n\n this.handleClearAllFilters = this.handleClearAllFilters.bind(this);\n this.handleCopyPanel = this.handleCopyPanel.bind(this);\n this.handleFocus = this.handleFocus.bind(this);\n this.handleBlur = this.handleBlur.bind(this);\n this.handleHide = this.handleHide.bind(this);\n this.handleResize = this.handleResize.bind(this);\n this.handleSessionClosed = this.handleSessionClosed.bind(this);\n this.handleSessionOpened = this.handleSessionOpened.bind(this);\n this.handleBeforeShow = this.handleBeforeShow.bind(this);\n this.handleShow = this.handleShow.bind(this);\n this.handleTabBlur = this.handleTabBlur.bind(this);\n this.handleTabFocus = this.handleTabFocus.bind(this);\n this.handleRenameCancel = this.handleRenameCancel.bind(this);\n this.handleRenameSubmit = this.handleRenameSubmit.bind(this);\n this.handleShowRenameDialog = this.handleShowRenameDialog.bind(this);\n this.handleTabClicked = this.handleTabClicked.bind(this);\n this.handleTab = this.handleTab.bind(this);\n\n const { glContainer } = this.props;\n this.state = {\n title: LayoutUtils.getTitleFromContainer(glContainer),\n showRenameDialog: false,\n };\n }\n\n componentDidMount() {\n const { componentPanel, glContainer, glEventHub } = this.props;\n\n glContainer.on('resize', this.handleResize);\n glContainer.on('show', this.handleBeforeShow);\n glContainer.on('shown', this.handleShow);\n glContainer.on('hide', this.handleHide);\n glContainer.on('tab', this.handleTab);\n glContainer.on('tabClicked', this.handleTabClicked);\n glEventHub.on(ConsoleEvent.SESSION_CLOSED, this.handleSessionClosed);\n glEventHub.on(ConsoleEvent.SESSION_OPENED, this.handleSessionOpened);\n glEventHub.on(TabEvent.focus, this.handleTabFocus);\n glEventHub.on(TabEvent.blur, this.handleTabBlur);\n glEventHub.on(\n InputFilterEvent.CLEAR_ALL_FILTERS,\n this.handleClearAllFilters\n );\n\n glEventHub.emit(PanelEvent.MOUNT, componentPanel);\n }\n\n componentWillUnmount() {\n const { componentPanel, glContainer, glEventHub } = this.props;\n\n glContainer.off('resize', this.handleResize);\n glContainer.off('show', this.handleBeforeShow);\n glContainer.off('shown', this.handleShow);\n glContainer.off('hide', this.handleHide);\n glContainer.off('tab', this.handleTab);\n glContainer.off('tabClicked', this.handleTabClicked);\n glEventHub.off(ConsoleEvent.SESSION_CLOSED, this.handleSessionClosed);\n glEventHub.off(ConsoleEvent.SESSION_OPENED, this.handleSessionOpened);\n glEventHub.off(TabEvent.focus, this.handleTabFocus);\n glEventHub.off(TabEvent.blur, this.handleTabBlur);\n glEventHub.off(\n InputFilterEvent.CLEAR_ALL_FILTERS,\n this.handleClearAllFilters\n );\n\n glEventHub.emit(PanelEvent.UNMOUNT, componentPanel);\n }\n\n handleTab(tab) {\n if (tab) {\n this.setState({\n title: LayoutUtils.getTitleFromTab(tab),\n });\n }\n // render after move can happen before tab event, glTab could be null\n // when tab event is emitted, force a render update\n this.forceUpdate();\n\n const { onTab } = this.props;\n onTab(tab);\n }\n\n handleTabClicked(...args) {\n const { onTabClicked } = this.props;\n onTabClicked(...args);\n }\n\n handleClearAllFilters(...args) {\n const { onClearAllFilters } = this.props;\n onClearAllFilters(...args);\n }\n\n handleFocus(...args) {\n const { componentPanel, glEventHub } = this.props;\n glEventHub.emit(PanelEvent.FOCUS, componentPanel);\n\n const { onFocus } = this.props;\n onFocus(...args);\n }\n\n handleBlur(...args) {\n const { onBlur } = this.props;\n onBlur(...args);\n }\n\n handleHide(...args) {\n const { onHide } = this.props;\n onHide(...args);\n }\n\n handleResize(...args) {\n const { onResize } = this.props;\n onResize(...args);\n }\n\n handleSessionClosed(...args) {\n const { onSessionClose } = this.props;\n onSessionClose(...args);\n }\n\n handleSessionOpened(...args) {\n const { onSessionOpen } = this.props;\n onSessionOpen(...args);\n }\n\n handleBeforeShow(...args) {\n const { onBeforeShow } = this.props;\n onBeforeShow(...args);\n }\n\n handleShow(...args) {\n const { onShow } = this.props;\n onShow(...args);\n }\n\n handleTabBlur(...args) {\n const { onTabBlur } = this.props;\n onTabBlur(...args);\n }\n\n handleTabFocus(...args) {\n const { onTabFocus } = this.props;\n onTabFocus(...args);\n }\n\n handleRenameCancel() {\n this.setState({ showRenameDialog: false });\n }\n\n handleShowRenameDialog() {\n this.setState({ showRenameDialog: true });\n }\n\n handleRenameSubmit(newTitle) {\n const { glContainer } = this.props;\n this.setState({ showRenameDialog: false, title: newTitle });\n const root = LayoutUtils.getRootFromContainer(glContainer);\n const config = LayoutUtils.getComponentConfigFromContainer(glContainer);\n LayoutUtils.renameComponent(root, config, newTitle);\n }\n\n handleCopyPanel() {\n const { glContainer, glEventHub } = this.props;\n const root = LayoutUtils.getRootFromContainer(glContainer);\n const config = LayoutUtils.getComponentConfigFromContainer(glContainer);\n if (config == null) {\n log.error('Could not get component config from container', glContainer);\n return;\n }\n const cloneConfig = LayoutUtils.cloneComponent(root, config);\n if (cloneConfig !== null) {\n glEventHub.emit(PanelEvent.CLONED, this, cloneConfig);\n }\n }\n\n getCloneAction() {\n return {\n title: 'Copy Panel',\n order: 10,\n group: ContextActions.groups.high,\n action: this.handleCopyPanel,\n };\n }\n\n getRenameAction() {\n return {\n title: 'Rename',\n order: 10,\n group: ContextActions.groups.medium,\n action: this.handleShowRenameDialog,\n };\n }\n\n getAdditionActions = memoize((actions, isClonable, isRenamable) => {\n const additionalActions = [];\n if (isClonable) {\n additionalActions.push(this.getCloneAction());\n }\n if (isRenamable) {\n additionalActions.push(this.getRenameAction());\n }\n return [...additionalActions, ...actions];\n });\n\n render() {\n const {\n children,\n className,\n renderTabTooltip,\n glContainer,\n additionalActions,\n errorMessage,\n isLoaded,\n isLoading,\n isClonable,\n isRenamable,\n } = this.props;\n const { tab: glTab } = glContainer;\n const { showRenameDialog, title } = this.state;\n\n return (\n <div\n className={classNames('h-100 w-100 iris-panel', className)}\n onFocusCapture={this.handleFocus}\n onBlurCapture={this.handleBlur}\n >\n {children}\n <LoadingOverlay\n errorMessage={errorMessage}\n isLoaded={isLoaded}\n isLoading={isLoading}\n />\n {glTab &&\n ReactDOM.createPortal(\n <>\n <PanelContextMenu\n glContainer={glContainer}\n additionalActions={this.getAdditionActions(\n additionalActions,\n isClonable,\n isRenamable\n )}\n />\n {isRenamable && (\n <RenameDialog\n isShown={showRenameDialog}\n value={title}\n itemType=\"Panel\"\n onCancel={this.handleRenameCancel}\n onSubmit={this.handleRenameSubmit}\n />\n )}\n {renderTabTooltip && (\n <Tooltip\n interactive\n options={{\n placement: 'bottom',\n }}\n popperClassName=\"panel-tab-popper\"\n >\n {renderTabTooltip()}\n </Tooltip>\n )}\n </>,\n glTab.element[0] // tab.element is jquery element, we want a dom element\n )}\n </div>\n );\n }\n}\n\nPanel.propTypes = {\n componentPanel: PropTypes.instanceOf(Component).isRequired,\n children: PropTypes.node.isRequired,\n glContainer: GLPropTypes.Container.isRequired,\n glEventHub: GLPropTypes.EventHub.isRequired,\n className: PropTypes.string,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func,\n onTab: PropTypes.func,\n onTabClicked: PropTypes.func,\n onClearAllFilters: PropTypes.func,\n onHide: PropTypes.func,\n onResize: PropTypes.func,\n onSessionClose: PropTypes.func,\n onSessionOpen: PropTypes.func,\n onBeforeShow: PropTypes.func,\n onShow: PropTypes.func,\n onTabBlur: PropTypes.func,\n onTabFocus: PropTypes.func,\n renderTabTooltip: PropTypes.func,\n additionalActions: PropTypes.oneOfType([PropTypes.array, PropTypes.func]),\n errorMessage: PropTypes.string,\n isLoading: PropTypes.bool,\n isLoaded: PropTypes.bool,\n isClonable: PropTypes.bool,\n isRenamable: PropTypes.bool,\n};\n\nPanel.defaultProps = {\n className: '',\n onTab: () => {},\n onTabClicked: () => {},\n onClearAllFilters: () => {},\n onFocus: () => {},\n onBlur: () => {},\n onHide: () => {},\n onResize: () => {},\n onSessionClose: () => {},\n onSessionOpen: () => {},\n onBeforeShow: () => {},\n onShow: () => {},\n onTabBlur: () => {},\n onTabFocus: () => {},\n renderTabTooltip: null,\n additionalActions: [],\n errorMessage: null,\n isLoading: false,\n isLoaded: true,\n isClonable: false,\n isRenamable: false,\n};\n\nexport default Panel;\n"],"file":"Panel.js"}
|
|
1
|
+
{"version":3,"file":"Panel.js","names":["React","Component","PureComponent","ReactDOM","PropTypes","classNames","memoize","ContextActions","LoadingOverlay","Tooltip","GLPropTypes","LayoutUtils","PanelEvent","Log","ConsoleEvent","InputFilterEvent","TabEvent","PanelContextMenu","RenameDialog","log","module","Panel","constructor","props","actions","isClonable","isRenamable","additionalActions","push","getCloneAction","getRenameAction","handleClearAllFilters","bind","handleCopyPanel","handleFocus","handleBlur","handleHide","handleResize","handleSessionClosed","handleSessionOpened","handleBeforeShow","handleShow","handleTabBlur","handleTabFocus","handleRenameCancel","handleRenameSubmit","handleShowRenameDialog","handleTabClicked","handleTab","glContainer","state","title","getTitleFromContainer","showRenameDialog","componentDidMount","componentPanel","glEventHub","on","SESSION_CLOSED","SESSION_OPENED","focus","blur","CLEAR_ALL_FILTERS","emit","MOUNT","componentWillUnmount","off","UNMOUNT","tab","setState","getTitleFromTab","forceUpdate","onTab","onTabClicked","onClearAllFilters","FOCUS","onFocus","onBlur","onHide","onResize","onSessionClose","onSessionOpen","onBeforeShow","onShow","onTabBlur","onTabFocus","newTitle","root","getRootFromContainer","config","getComponentConfigFromContainer","renameComponent","error","cloneConfig","cloneComponent","CLONED","order","group","groups","high","action","medium","render","children","className","renderTabTooltip","errorMessage","isLoaded","isLoading","glTab","createPortal","getAdditionActions","placement","element","propTypes","instanceOf","isRequired","node","Container","EventHub","string","func","oneOfType","array","bool","defaultProps"],"sources":["../../src/panels/Panel.jsx"],"sourcesContent":["import React, { Component, PureComponent } from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport memoize from 'memoize-one';\nimport { ContextActions, LoadingOverlay, Tooltip } from '@deephaven/components';\nimport { GLPropTypes, LayoutUtils, PanelEvent } from '@deephaven/dashboard';\nimport Log from '@deephaven/log';\nimport { ConsoleEvent, InputFilterEvent, TabEvent } from '../events';\nimport PanelContextMenu from './PanelContextMenu';\nimport RenameDialog from './RenameDialog';\n\nconst log = Log.module('Panel');\n\n/**\n * Generic panel component that emits mount/unmount/focus events.\n * Also wires up some triggers for common events:\n * Focus, Resize, Show, Session open/close, client disconnect/reconnect.\n */\nclass Panel extends PureComponent {\n constructor(props) {\n super(props);\n\n this.handleClearAllFilters = this.handleClearAllFilters.bind(this);\n this.handleCopyPanel = this.handleCopyPanel.bind(this);\n this.handleFocus = this.handleFocus.bind(this);\n this.handleBlur = this.handleBlur.bind(this);\n this.handleHide = this.handleHide.bind(this);\n this.handleResize = this.handleResize.bind(this);\n this.handleSessionClosed = this.handleSessionClosed.bind(this);\n this.handleSessionOpened = this.handleSessionOpened.bind(this);\n this.handleBeforeShow = this.handleBeforeShow.bind(this);\n this.handleShow = this.handleShow.bind(this);\n this.handleTabBlur = this.handleTabBlur.bind(this);\n this.handleTabFocus = this.handleTabFocus.bind(this);\n this.handleRenameCancel = this.handleRenameCancel.bind(this);\n this.handleRenameSubmit = this.handleRenameSubmit.bind(this);\n this.handleShowRenameDialog = this.handleShowRenameDialog.bind(this);\n this.handleTabClicked = this.handleTabClicked.bind(this);\n this.handleTab = this.handleTab.bind(this);\n\n const { glContainer } = this.props;\n this.state = {\n title: LayoutUtils.getTitleFromContainer(glContainer),\n showRenameDialog: false,\n };\n }\n\n componentDidMount() {\n const { componentPanel, glContainer, glEventHub } = this.props;\n\n glContainer.on('resize', this.handleResize);\n glContainer.on('show', this.handleBeforeShow);\n glContainer.on('shown', this.handleShow);\n glContainer.on('hide', this.handleHide);\n glContainer.on('tab', this.handleTab);\n glContainer.on('tabClicked', this.handleTabClicked);\n glEventHub.on(ConsoleEvent.SESSION_CLOSED, this.handleSessionClosed);\n glEventHub.on(ConsoleEvent.SESSION_OPENED, this.handleSessionOpened);\n glEventHub.on(TabEvent.focus, this.handleTabFocus);\n glEventHub.on(TabEvent.blur, this.handleTabBlur);\n glEventHub.on(\n InputFilterEvent.CLEAR_ALL_FILTERS,\n this.handleClearAllFilters\n );\n\n glEventHub.emit(PanelEvent.MOUNT, componentPanel);\n }\n\n componentWillUnmount() {\n const { componentPanel, glContainer, glEventHub } = this.props;\n\n glContainer.off('resize', this.handleResize);\n glContainer.off('show', this.handleBeforeShow);\n glContainer.off('shown', this.handleShow);\n glContainer.off('hide', this.handleHide);\n glContainer.off('tab', this.handleTab);\n glContainer.off('tabClicked', this.handleTabClicked);\n glEventHub.off(ConsoleEvent.SESSION_CLOSED, this.handleSessionClosed);\n glEventHub.off(ConsoleEvent.SESSION_OPENED, this.handleSessionOpened);\n glEventHub.off(TabEvent.focus, this.handleTabFocus);\n glEventHub.off(TabEvent.blur, this.handleTabBlur);\n glEventHub.off(\n InputFilterEvent.CLEAR_ALL_FILTERS,\n this.handleClearAllFilters\n );\n\n glEventHub.emit(PanelEvent.UNMOUNT, componentPanel);\n }\n\n handleTab(tab) {\n if (tab) {\n this.setState({\n title: LayoutUtils.getTitleFromTab(tab),\n });\n }\n // render after move can happen before tab event, glTab could be null\n // when tab event is emitted, force a render update\n this.forceUpdate();\n\n const { onTab } = this.props;\n onTab(tab);\n }\n\n handleTabClicked(...args) {\n const { onTabClicked } = this.props;\n onTabClicked(...args);\n }\n\n handleClearAllFilters(...args) {\n const { onClearAllFilters } = this.props;\n onClearAllFilters(...args);\n }\n\n handleFocus(...args) {\n const { componentPanel, glEventHub } = this.props;\n glEventHub.emit(PanelEvent.FOCUS, componentPanel);\n\n const { onFocus } = this.props;\n onFocus(...args);\n }\n\n handleBlur(...args) {\n const { onBlur } = this.props;\n onBlur(...args);\n }\n\n handleHide(...args) {\n const { onHide } = this.props;\n onHide(...args);\n }\n\n handleResize(...args) {\n const { onResize } = this.props;\n onResize(...args);\n }\n\n handleSessionClosed(...args) {\n const { onSessionClose } = this.props;\n onSessionClose(...args);\n }\n\n handleSessionOpened(...args) {\n const { onSessionOpen } = this.props;\n onSessionOpen(...args);\n }\n\n handleBeforeShow(...args) {\n const { onBeforeShow } = this.props;\n onBeforeShow(...args);\n }\n\n handleShow(...args) {\n const { onShow } = this.props;\n onShow(...args);\n }\n\n handleTabBlur(...args) {\n const { onTabBlur } = this.props;\n onTabBlur(...args);\n }\n\n handleTabFocus(...args) {\n const { onTabFocus } = this.props;\n onTabFocus(...args);\n }\n\n handleRenameCancel() {\n this.setState({ showRenameDialog: false });\n }\n\n handleShowRenameDialog() {\n this.setState({ showRenameDialog: true });\n }\n\n handleRenameSubmit(newTitle) {\n const { glContainer } = this.props;\n this.setState({ showRenameDialog: false, title: newTitle });\n const root = LayoutUtils.getRootFromContainer(glContainer);\n const config = LayoutUtils.getComponentConfigFromContainer(glContainer);\n LayoutUtils.renameComponent(root, config, newTitle);\n }\n\n handleCopyPanel() {\n const { glContainer, glEventHub } = this.props;\n const root = LayoutUtils.getRootFromContainer(glContainer);\n const config = LayoutUtils.getComponentConfigFromContainer(glContainer);\n if (config == null) {\n log.error('Could not get component config from container', glContainer);\n return;\n }\n const cloneConfig = LayoutUtils.cloneComponent(root, config);\n if (cloneConfig !== null) {\n glEventHub.emit(PanelEvent.CLONED, this, cloneConfig);\n }\n }\n\n getCloneAction() {\n return {\n title: 'Copy Panel',\n order: 10,\n group: ContextActions.groups.high,\n action: this.handleCopyPanel,\n };\n }\n\n getRenameAction() {\n return {\n title: 'Rename',\n order: 10,\n group: ContextActions.groups.medium,\n action: this.handleShowRenameDialog,\n };\n }\n\n getAdditionActions = memoize((actions, isClonable, isRenamable) => {\n const additionalActions = [];\n if (isClonable) {\n additionalActions.push(this.getCloneAction());\n }\n if (isRenamable) {\n additionalActions.push(this.getRenameAction());\n }\n return [...additionalActions, ...actions];\n });\n\n render() {\n const {\n children,\n className,\n renderTabTooltip,\n glContainer,\n additionalActions,\n errorMessage,\n isLoaded,\n isLoading,\n isClonable,\n isRenamable,\n } = this.props;\n const { tab: glTab } = glContainer;\n const { showRenameDialog, title } = this.state;\n\n return (\n <div\n className={classNames('h-100 w-100 iris-panel', className)}\n onFocusCapture={this.handleFocus}\n onBlurCapture={this.handleBlur}\n >\n {children}\n <LoadingOverlay\n errorMessage={errorMessage}\n isLoaded={isLoaded}\n isLoading={isLoading}\n />\n {glTab &&\n ReactDOM.createPortal(\n <>\n <PanelContextMenu\n glContainer={glContainer}\n additionalActions={this.getAdditionActions(\n additionalActions,\n isClonable,\n isRenamable\n )}\n />\n {isRenamable && (\n <RenameDialog\n isShown={showRenameDialog}\n value={title}\n itemType=\"Panel\"\n onCancel={this.handleRenameCancel}\n onSubmit={this.handleRenameSubmit}\n />\n )}\n {renderTabTooltip && (\n <Tooltip\n interactive\n options={{\n placement: 'bottom',\n }}\n popperClassName=\"panel-tab-popper\"\n >\n {renderTabTooltip()}\n </Tooltip>\n )}\n </>,\n glTab.element[0] // tab.element is jquery element, we want a dom element\n )}\n </div>\n );\n }\n}\n\nPanel.propTypes = {\n componentPanel: PropTypes.instanceOf(Component).isRequired,\n children: PropTypes.node.isRequired,\n glContainer: GLPropTypes.Container.isRequired,\n glEventHub: GLPropTypes.EventHub.isRequired,\n className: PropTypes.string,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func,\n onTab: PropTypes.func,\n onTabClicked: PropTypes.func,\n onClearAllFilters: PropTypes.func,\n onHide: PropTypes.func,\n onResize: PropTypes.func,\n onSessionClose: PropTypes.func,\n onSessionOpen: PropTypes.func,\n onBeforeShow: PropTypes.func,\n onShow: PropTypes.func,\n onTabBlur: PropTypes.func,\n onTabFocus: PropTypes.func,\n renderTabTooltip: PropTypes.func,\n additionalActions: PropTypes.oneOfType([PropTypes.array, PropTypes.func]),\n errorMessage: PropTypes.string,\n isLoading: PropTypes.bool,\n isLoaded: PropTypes.bool,\n isClonable: PropTypes.bool,\n isRenamable: PropTypes.bool,\n};\n\nPanel.defaultProps = {\n className: '',\n onTab: () => {},\n onTabClicked: () => {},\n onClearAllFilters: () => {},\n onFocus: () => {},\n onBlur: () => {},\n onHide: () => {},\n onResize: () => {},\n onSessionClose: () => {},\n onSessionOpen: () => {},\n onBeforeShow: () => {},\n onShow: () => {},\n onTabBlur: () => {},\n onTabFocus: () => {},\n renderTabTooltip: null,\n additionalActions: [],\n errorMessage: null,\n isLoading: false,\n isLoaded: true,\n isClonable: false,\n isRenamable: false,\n};\n\nexport default Panel;\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"PanelContextMenu.js","names":["React","PureComponent","PropTypes","ContextActions","GLPropTypes","PanelContextMenu","constructor","props","handleCloseTab","bind","handleCloseTabsRight","handleCloseTabsAll","getAllTabs","glContainer","tab","header","tabs","close","forEach","contentItem","container","i","length","config","id","canCloseTabsRight","disabled","isClosable","canCloseAny","render","additionalActions","contextActions","concat","push","title","order","group","groups","low","action","propTypes","oneOfType","array","func","Container","isRequired","defaultProps"],"sources":["../../src/panels/PanelContextMenu.jsx"],"sourcesContent":["import React, { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\nimport { ContextActions } from '@deephaven/components';\nimport { GLPropTypes } from '@deephaven/dashboard';\n\nclass PanelContextMenu extends PureComponent {\n constructor(props) {\n super(props);\n\n this.handleCloseTab = this.handleCloseTab.bind(this);\n this.handleCloseTabsRight = this.handleCloseTabsRight.bind(this);\n this.handleCloseTabsAll = this.handleCloseTabsAll.bind(this);\n }\n\n getAllTabs() {\n // return a clone of the tabs array, or returns empty array if null\n const { glContainer } = this.props;\n return [...(glContainer?.tab?.header?.tabs ?? [])];\n }\n\n handleCloseTab() {\n const { glContainer } = this.props;\n glContainer.close();\n }\n\n handleCloseTabsAll() {\n const tabs = this.getAllTabs();\n\n // No need to check if isClosable, golden-layout returns\n // false when attempting to close tabs that you can't\n tabs.forEach(tab => tab?.contentItem?.container?.close());\n }\n\n handleCloseTabsRight() {\n const { glContainer } = this.props;\n const tabs = this.getAllTabs();\n\n for (let i = tabs.length - 1; i > 0; i -= 1) {\n if (\n tabs[i].contentItem?.config?.id ===\n glContainer.tab?.contentItem?.config?.id\n ) {\n break; // end when we get back to current id\n }\n\n // eslint-disable-next-line no-unused-expressions\n tabs[i]?.contentItem?.container?.close();\n }\n }\n\n canCloseTabsRight() {\n const { glContainer } = this.props;\n const tabs = this.getAllTabs();\n\n let disabled = true;\n for (let i = tabs.length - 1; i > 0; i -= 1) {\n if (\n tabs[i].contentItem?.config?.id ===\n glContainer.tab?.contentItem?.config?.id\n ) {\n break; // end when we get back to current id\n }\n if (tabs[i]?.contentItem?.config?.isClosable) {\n disabled = false;\n break; // end if we find a closeable tab\n }\n }\n return disabled;\n }\n\n canCloseAny() {\n const tabs = this.getAllTabs();\n\n let disabled = true;\n for (let i = tabs.length - 1; i > 0; i -= 1) {\n if (tabs[i]?.contentItem?.config?.isClosable) {\n disabled = false;\n break;\n }\n }\n return disabled;\n }\n\n render() {\n const { additionalActions, glContainer } = this.props;\n\n const contextActions = [].concat(additionalActions);\n\n contextActions.push({\n title: 'Close',\n order: 10,\n group: ContextActions.groups.low,\n action: this.handleCloseTab,\n disabled: !glContainer.tab?.contentItem?.config?.isClosable,\n });\n\n // pushed as function so the disable check happens on run\n contextActions.push(() => ({\n title: 'Close Tabs to Right',\n order: 20,\n group: ContextActions.groups.low,\n action: this.handleCloseTabsRight,\n disabled: this.canCloseTabsRight(),\n }));\n\n contextActions.push(() => ({\n title: 'Close All',\n order: 30,\n group: ContextActions.groups.low,\n action: this.handleCloseTabsAll,\n disabled: this.canCloseAny(),\n }));\n\n return <ContextActions actions={contextActions} />;\n }\n}\n\nPanelContextMenu.propTypes = {\n additionalActions: PropTypes.oneOfType([PropTypes.array, PropTypes.func]),\n glContainer: GLPropTypes.Container.isRequired,\n};\n\nPanelContextMenu.defaultProps = {\n additionalActions: [],\n};\n\nexport default PanelContextMenu;\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"RenameDialog.js","names":["React","PureComponent","PropTypes","classNames","Popper","RenameDialog","constructor","props","handleRenameDialogOpened","bind","handleRenameInputChange","handleRenameCancel","handleRenameSubmit","renameInputRef","createRef","value","state","valueWasValidated","componentDidUpdate","prevProps","isShown","prevIsShown","resetState","setState","current","focus","event","target","onCancel","stopPropagation","preventDefault","newTitle","trim","onSubmit","renderRenameDialog","isShared","isOwner","itemType","render","placement","modifiers","preventOverflow","boundariesElement","propTypes","bool","isRequired","string","func","defaultProps"],"sources":["../../src/panels/RenameDialog.jsx"],"sourcesContent":["import React, { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { Popper } from '@deephaven/components';\n\nexport default class RenameDialog extends PureComponent {\n constructor(props) {\n super(props);\n\n this.handleRenameDialogOpened = this.handleRenameDialogOpened.bind(this);\n this.handleRenameInputChange = this.handleRenameInputChange.bind(this);\n this.handleRenameCancel = this.handleRenameCancel.bind(this);\n this.handleRenameSubmit = this.handleRenameSubmit.bind(this);\n\n this.renameInputRef = React.createRef();\n\n const { value } = props;\n\n this.state = {\n value,\n valueWasValidated: false,\n };\n }\n\n componentDidUpdate(prevProps) {\n const { isShown: prevIsShown } = prevProps;\n const { isShown } = this.props;\n // Reset the state on dialog shown and not on the `value` prop change\n // so the input keeps the internal value while the dialog is open.\n // Useful in case the `value` prop update is triggered externally\n // i.e. by someone else renaming the same shared dashboard\n if (isShown && !prevIsShown) {\n this.resetState();\n }\n }\n\n resetState() {\n const { value } = this.props;\n this.setState({ value, valueWasValidated: false });\n }\n\n handleRenameDialogOpened() {\n if (this.renameInputRef) {\n this.renameInputRef.current.focus();\n }\n }\n\n handleRenameInputChange(event) {\n this.setState({ value: event.target.value });\n }\n\n handleRenameCancel() {\n const { onCancel } = this.props;\n onCancel();\n }\n\n handleRenameSubmit(event) {\n event.stopPropagation();\n event.preventDefault();\n const { value } = this.state;\n const newTitle = value.trim();\n if (newTitle !== '') {\n const { onSubmit } = this.props;\n onSubmit(newTitle);\n } else {\n this.setState({ value: newTitle, valueWasValidated: true });\n }\n }\n\n renderRenameDialog() {\n const { isShared, isOwner, itemType } = this.props;\n const { value, valueWasValidated } = this.state;\n\n return (\n <form\n className={classNames('p-3', { 'was-validated': valueWasValidated })}\n onSubmit={this.handleRenameSubmit}\n noValidate\n role=\"presentation\"\n onMouseDown={event => {\n // block events in the NewTabScreen ItemList\n event.stopPropagation();\n }}\n onMouseUp={event => {\n event.stopPropagation();\n }}\n >\n <div className=\"form-group\">\n <label htmlFor={`rename-dialog-${itemType}-input`}>\n Rename {itemType}\n </label>\n <input\n type=\"text\"\n className=\"form-control\"\n id={`rename-dialog-${itemType}-input`}\n value={value}\n ref={this.renameInputRef}\n onChange={this.handleRenameInputChange}\n required\n />\n <div className=\"invalid-feedback\">\n {itemType} name cannot be empty\n </div>\n {(isShared || !isOwner) && (\n <div className=\"pt-2\">\n Renaming this {itemType} will rename for all users.\n </div>\n )}\n </div>\n\n <div className=\"text-right\">\n <button\n type=\"button\"\n className=\"btn btn-outline-primary mr-2\"\n onClick={this.handleRenameCancel}\n >\n Cancel\n </button>\n <button type=\"submit\" className=\"btn btn-primary\">\n Rename\n </button>\n </div>\n </form>\n );\n }\n\n render() {\n const { isShown, onCancel } = this.props;\n return (\n <Popper\n isShown={isShown}\n onEntered={this.handleRenameDialogOpened}\n onExited={onCancel}\n options={{\n placement: 'bottom',\n modifiers: { preventOverflow: { boundariesElement: 'viewport' } },\n }}\n interactive\n closeOnBlur\n >\n {this.renderRenameDialog()}\n </Popper>\n );\n }\n}\n\nRenameDialog.propTypes = {\n isShared: PropTypes.bool,\n isOwner: PropTypes.bool,\n isShown: PropTypes.bool.isRequired,\n itemType: PropTypes.string,\n onSubmit: PropTypes.func.isRequired,\n onCancel: PropTypes.func.isRequired,\n value: PropTypes.string,\n};\n\nRenameDialog.defaultProps = {\n isShared: false,\n isOwner: true,\n itemType: 'Item',\n};\n\nRenameDialog.defaultProps = {\n value: '',\n};\n"],"mappings":"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"}
|