@deephaven/dashboard-core-plugins 0.5.2-matplotlib.2 → 0.6.1-fixed-deps.2

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.
Files changed (176) hide show
  1. package/dist/ChartPlugin.js +25 -22
  2. package/dist/ChartPlugin.js.map +1 -1
  3. package/dist/ConsolePlugin.d.ts.map +1 -1
  4. package/dist/ConsolePlugin.js +130 -134
  5. package/dist/ConsolePlugin.js.map +1 -1
  6. package/dist/FilterPlugin.d.ts.map +1 -1
  7. package/dist/FilterPlugin.js +114 -116
  8. package/dist/FilterPlugin.js.map +1 -1
  9. package/dist/GridPlugin.js +29 -26
  10. package/dist/GridPlugin.js.map +1 -1
  11. package/dist/LinkerPlugin.js +7 -5
  12. package/dist/LinkerPlugin.js.map +1 -1
  13. package/dist/MarkdownPlugin.js +44 -45
  14. package/dist/MarkdownPlugin.js.map +1 -1
  15. package/dist/PandasPlugin.d.ts +5 -2
  16. package/dist/PandasPlugin.d.ts.map +1 -1
  17. package/dist/PandasPlugin.js +12 -12
  18. package/dist/PandasPlugin.js.map +1 -1
  19. package/dist/controls/ControlType.d.ts +1 -0
  20. package/dist/controls/ControlType.d.ts.map +1 -1
  21. package/dist/controls/ControlType.js +3 -5
  22. package/dist/controls/ControlType.js.map +1 -1
  23. package/dist/controls/dropdown-filter/DropdownFilter.d.ts +6 -0
  24. package/dist/controls/dropdown-filter/DropdownFilter.d.ts.map +1 -1
  25. package/dist/controls/dropdown-filter/DropdownFilter.js +356 -394
  26. package/dist/controls/dropdown-filter/DropdownFilter.js.map +1 -1
  27. package/dist/controls/input-filter/InputFilter.d.ts +6 -0
  28. package/dist/controls/input-filter/InputFilter.d.ts.map +1 -1
  29. package/dist/controls/input-filter/InputFilter.js +256 -270
  30. package/dist/controls/input-filter/InputFilter.js.map +1 -1
  31. package/dist/controls/markdown/MarkdownContainer.js +18 -56
  32. package/dist/controls/markdown/MarkdownContainer.js.map +1 -1
  33. package/dist/controls/markdown/MarkdownEditor.js +36 -75
  34. package/dist/controls/markdown/MarkdownEditor.js.map +1 -1
  35. package/dist/controls/markdown/MarkdownStartPage.js +93 -133
  36. package/dist/controls/markdown/MarkdownStartPage.js.map +1 -1
  37. package/dist/controls/markdown/MarkdownUtils.js +17 -32
  38. package/dist/controls/markdown/MarkdownUtils.js.map +1 -1
  39. package/dist/events/ChartEvent.js +1 -5
  40. package/dist/events/ChartEvent.js.map +1 -1
  41. package/dist/events/ConsoleEvent.js +1 -5
  42. package/dist/events/ConsoleEvent.js.map +1 -1
  43. package/dist/events/ControlEvent.js +1 -5
  44. package/dist/events/ControlEvent.js.map +1 -1
  45. package/dist/events/InputFilterEvent.d.ts +2 -0
  46. package/dist/events/InputFilterEvent.d.ts.map +1 -1
  47. package/dist/events/InputFilterEvent.js +3 -5
  48. package/dist/events/InputFilterEvent.js.map +1 -1
  49. package/dist/events/IrisGridEvent.js +1 -5
  50. package/dist/events/IrisGridEvent.js.map +1 -1
  51. package/dist/events/NotebookEvent.js +1 -5
  52. package/dist/events/NotebookEvent.js.map +1 -1
  53. package/dist/events/PQEvent.js +1 -5
  54. package/dist/events/PQEvent.js.map +1 -1
  55. package/dist/events/PandasEvent.js +1 -5
  56. package/dist/events/PandasEvent.js.map +1 -1
  57. package/dist/events/TabEvent.js +1 -5
  58. package/dist/events/TabEvent.js.map +1 -1
  59. package/dist/events/index.d.ts +0 -1
  60. package/dist/events/index.js +9 -10
  61. package/dist/events/index.js.map +1 -1
  62. package/dist/index.d.ts +0 -1
  63. package/dist/index.d.ts.map +1 -1
  64. package/dist/index.js +10 -11
  65. package/dist/index.js.map +1 -1
  66. package/dist/linker/Linker.d.ts +1 -1
  67. package/dist/linker/Linker.js +594 -606
  68. package/dist/linker/Linker.js.map +1 -1
  69. package/dist/linker/LinkerLink.js +92 -126
  70. package/dist/linker/LinkerLink.js.map +1 -1
  71. package/dist/linker/LinkerOverlayContent.js +162 -220
  72. package/dist/linker/LinkerOverlayContent.js.map +1 -1
  73. package/dist/linker/LinkerUtils.js +105 -114
  74. package/dist/linker/LinkerUtils.js.map +1 -1
  75. package/dist/panels/ChartColumnSelectorOverlay.js +19 -25
  76. package/dist/panels/ChartColumnSelectorOverlay.js.map +1 -1
  77. package/dist/panels/ChartFilterOverlay.js +18 -24
  78. package/dist/panels/ChartFilterOverlay.js.map +1 -1
  79. package/dist/panels/ChartPanel.d.ts +3 -0
  80. package/dist/panels/ChartPanel.d.ts.map +1 -1
  81. package/dist/panels/ChartPanel.js +839 -873
  82. package/dist/panels/ChartPanel.js.map +1 -1
  83. package/dist/panels/CommandHistoryPanel.d.ts.map +1 -1
  84. package/dist/panels/CommandHistoryPanel.js +160 -186
  85. package/dist/panels/CommandHistoryPanel.js.map +1 -1
  86. package/dist/panels/ConsolePanel.d.ts +1 -1
  87. package/dist/panels/ConsolePanel.d.ts.map +1 -1
  88. package/dist/panels/ConsolePanel.js +327 -374
  89. package/dist/panels/ConsolePanel.js.map +1 -1
  90. package/dist/panels/DropdownFilterPanel.d.ts +6 -0
  91. package/dist/panels/DropdownFilterPanel.d.ts.map +1 -1
  92. package/dist/panels/DropdownFilterPanel.js +537 -566
  93. package/dist/panels/DropdownFilterPanel.js.map +1 -1
  94. package/dist/panels/FileExplorerPanel.d.ts +6 -1
  95. package/dist/panels/FileExplorerPanel.d.ts.map +1 -1
  96. package/dist/panels/FileExplorerPanel.js +208 -210
  97. package/dist/panels/FileExplorerPanel.js.map +1 -1
  98. package/dist/panels/FilterSetManager.css +111 -0
  99. package/dist/panels/FilterSetManager.css.map +1 -0
  100. package/dist/panels/FilterSetManager.d.ts +66 -0
  101. package/dist/panels/FilterSetManager.d.ts.map +1 -0
  102. package/dist/panels/FilterSetManager.js +732 -0
  103. package/dist/panels/FilterSetManager.js.map +1 -0
  104. package/dist/panels/FilterSetManagerPanel.css +33 -0
  105. package/dist/panels/FilterSetManagerPanel.css.map +1 -0
  106. package/dist/panels/FilterSetManagerPanel.d.ts +69 -0
  107. package/dist/panels/FilterSetManagerPanel.d.ts.map +1 -0
  108. package/dist/panels/FilterSetManagerPanel.js +383 -0
  109. package/dist/panels/FilterSetManagerPanel.js.map +1 -0
  110. package/dist/panels/InputFilterPanel.d.ts +7 -0
  111. package/dist/panels/InputFilterPanel.d.ts.map +1 -1
  112. package/dist/panels/InputFilterPanel.js +198 -206
  113. package/dist/panels/InputFilterPanel.js.map +1 -1
  114. package/dist/panels/IrisGridPanel.d.ts +11 -3
  115. package/dist/panels/IrisGridPanel.d.ts.map +1 -1
  116. package/dist/panels/IrisGridPanel.js +779 -771
  117. package/dist/panels/IrisGridPanel.js.map +1 -1
  118. package/dist/panels/LogPanel.js +80 -116
  119. package/dist/panels/LogPanel.js.map +1 -1
  120. package/dist/panels/MarkdownPanel.js +165 -199
  121. package/dist/panels/MarkdownPanel.js.map +1 -1
  122. package/dist/panels/NotebookPanel.d.ts +3 -1
  123. package/dist/panels/NotebookPanel.d.ts.map +1 -1
  124. package/dist/panels/NotebookPanel.js +870 -862
  125. package/dist/panels/NotebookPanel.js.map +1 -1
  126. package/dist/panels/PandasPanel.js +56 -90
  127. package/dist/panels/PandasPanel.js.map +1 -1
  128. package/dist/panels/Panel.js +282 -313
  129. package/dist/panels/Panel.js.map +1 -1
  130. package/dist/panels/PanelContextMenu.js +107 -158
  131. package/dist/panels/PanelContextMenu.js.map +1 -1
  132. package/dist/panels/RenameDialog.js +144 -172
  133. package/dist/panels/RenameDialog.js.map +1 -1
  134. package/dist/panels/Shortcuts.js +1 -1
  135. package/dist/panels/Shortcuts.js.map +1 -1
  136. package/dist/panels/WidgetPanel.js +133 -163
  137. package/dist/panels/WidgetPanel.js.map +1 -1
  138. package/dist/panels/WidgetPanelTooltip.js +7 -5
  139. package/dist/panels/WidgetPanelTooltip.js.map +1 -1
  140. package/dist/panels/index.d.ts +1 -1
  141. package/dist/panels/index.js +16 -16
  142. package/dist/panels/index.js.map +1 -1
  143. package/dist/prop-types/CommonPropTypes.js +4 -8
  144. package/dist/prop-types/CommonPropTypes.js.map +1 -1
  145. package/dist/prop-types/UIPropTypes.js +6 -6
  146. package/dist/prop-types/UIPropTypes.js.map +1 -1
  147. package/dist/prop-types/index.js +2 -2
  148. package/dist/prop-types/index.js.map +1 -1
  149. package/dist/redux/actions.d.ts +1 -0
  150. package/dist/redux/actions.d.ts.map +1 -1
  151. package/dist/redux/actions.js +33 -54
  152. package/dist/redux/actions.js.map +1 -1
  153. package/dist/redux/index.js +6 -21
  154. package/dist/redux/index.js.map +1 -1
  155. package/dist/redux/reducers/index.js +2 -2
  156. package/dist/redux/reducers/index.js.map +1 -1
  157. package/dist/redux/reducers/sessionWrapper.js +1 -1
  158. package/dist/redux/reducers/sessionWrapper.js.map +1 -1
  159. package/dist/redux/selectors.d.ts +1 -0
  160. package/dist/redux/selectors.d.ts.map +1 -1
  161. package/dist/redux/selectors.js +22 -18
  162. package/dist/redux/selectors.js.map +1 -1
  163. package/dist/tsconfig.tsbuildinfo +1 -1
  164. package/package.json +27 -54
  165. package/dist/MatPlotLibPlugin.d.ts +0 -5
  166. package/dist/MatPlotLibPlugin.d.ts.map +0 -1
  167. package/dist/MatPlotLibPlugin.js +0 -45
  168. package/dist/MatPlotLibPlugin.js.map +0 -1
  169. package/dist/events/MatPlotLibEvent.d.ts +0 -5
  170. package/dist/events/MatPlotLibEvent.d.ts.map +0 -1
  171. package/dist/events/MatPlotLibEvent.js +0 -12
  172. package/dist/events/MatPlotLibEvent.js.map +0 -1
  173. package/dist/panels/MatPlotLibPanel.d.ts +0 -22
  174. package/dist/panels/MatPlotLibPanel.d.ts.map +0 -1
  175. package/dist/panels/MatPlotLibPanel.js +0 -123
  176. package/dist/panels/MatPlotLibPanel.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/panels/NotebookPanel.jsx"],"names":["React","Component","ReactDOM","PropTypes","memoize","connect","FontAwesomeIcon","BasicModal","ContextActions","DropdownMenu","Tooltip","GLOBAL_SHORTCUTS","ScriptEditor","ScriptEditorUtils","GLPropTypes","FileUtils","NewItemModal","vsSave","vsKebabVertical","dhFileSearch","vsPlay","vsRunAll","getFileStorage","classNames","debounce","Log","Pending","PromiseUtils","ConsoleEvent","NotebookEvent","getDashboardSessionWrapper","Panel","SHORTCUTS","log","module","DEBOUNCE_PANEL_STATE_UPDATE","NotebookPanel","props","title","icon","action","handleFind","group","groups","high","shortcut","NOTEBOOK","FIND","order","handleBlur","bind","handleCloseCancel","handleCloseDiscard","handleCloseSave","handleCopy","handleEditorChange","handleFocus","handleLoadSuccess","handleLoadError","handleRenameFile","handleResize","handleRunCommand","handleRunAll","handleRunSelected","handleSave","handleSaveAsCancel","handleSaveAsSubmit","handleSaveError","handleSaveSuccess","handleSessionOpened","handleSessionClosed","handleShow","handleShowRename","handleTab","handleTabFocus","handleTabBlur","pending","debouncedSavePanelState","savePanelState","debouncedLoad","load","notebook","tabTitleElement","unsavedIndicator","tabInitOnce","shouldPromptClose","isDashboardActive","session","sessionLanguage","panelState","settings","value","fileMetadata","isPreview","hasFileId","itemName","hasPath","isUnsaved","changeCount","state","error","isFocused","isLoading","isLoaded","savedChangeCount","showCloseModal","showSaveAsModal","scriptCode","debug","tab","glContainer","glEventHub","initTab","initNotebookContent","on","RENAME_FILE","prevProps","prevState","setPreviewStatus","flush","cancel","off","emit","UNREGISTER_FILE","initTabCloseOverride","initTabClasses","close","setState","tabElement","element","get","titleElement","querySelector","classList","add","notebookValue","getValue","id","registerFileMetadata","Error","CLOSE_FILE","metadata","tabId","REGISTER_FILE","RENAME","fileStorage","loadFile","then","loadedFile","filename","prevItemName","renameTab","getBaseName","updatedSettings","language","languageFromFileName","content","getNotebookValue","saveContent","updateSavedChangeCount","saveFile","remove","initialSettings","dehydratedValue","dehydratedSettings","save","copyName","getCopyFileName","createNotebook","e","debug2","isUndoing","isRedoing","toggleFind","errorParam","isCanceled","isTimedOut","file","oldMetadata","deleteFile","handleError","name","oldName","newName","updateDimensions","command","runCommand","getSelectedCommand","requestAnimationFrame","focus","isHidden","notebookSettings","CREATE_NOTEBOOK","SEND_COMMAND","focusOnMount","DEFAULT_NAME","isExistingItem","overflowActions","getOverflowActions","isSessionConnected","isLanguageMatching","runButtonsDisabled","toolbarDisabled","contextActions","SAVE","disabledRunButtonTooltip","getDisabledRunTooltip","disabledRunSelectedButtonTooltip","additionalActions","createPortal","find","RUN","getDisplayText","RUN_SELECTED","POPPER_OPTIONS","fileName","extension","getExtension","toLowerCase","placement","propTypes","shape","func","isRequired","Container","EventHub","bool","string","defaultProps","mapStateToProps","ownProps","sessionWrapper","localDashboardId","sessionConfig","config","type","forwardRef"],"mappings":"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","sourcesContent":["// Wrapper for the Notebook for use in a golden layout container\nimport React, { Component } from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport memoize from 'memoize-one';\nimport { connect } from 'react-redux';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {\n BasicModal,\n ContextActions,\n DropdownMenu,\n Tooltip,\n GLOBAL_SHORTCUTS,\n} from '@deephaven/components';\nimport { ScriptEditor, ScriptEditorUtils } from '@deephaven/console';\nimport { GLPropTypes } from '@deephaven/dashboard';\nimport { FileUtils, NewItemModal } from '@deephaven/file-explorer';\nimport {\n vsSave,\n vsKebabVertical,\n dhFileSearch,\n vsPlay,\n vsRunAll,\n} from '@deephaven/icons';\nimport { getFileStorage } from '@deephaven/redux';\nimport classNames from 'classnames';\nimport debounce from 'lodash.debounce';\nimport Log from '@deephaven/log';\nimport { Pending, PromiseUtils } from '@deephaven/utils';\nimport { ConsoleEvent, NotebookEvent } from '../events';\nimport { getDashboardSessionWrapper } from '../redux';\nimport Panel from './Panel';\nimport SHORTCUTS from './Shortcuts';\nimport './NotebookPanel.scss';\n\nconst log = Log.module('NotebookPanel');\n\nconst DEBOUNCE_PANEL_STATE_UPDATE = 400;\n\nclass NotebookPanel extends Component {\n static COMPONENT = 'NotebookPanel';\n\n static POPPER_OPTIONS = { placement: 'bottom-end' };\n\n static DEFAULT_NAME = 'Untitled';\n\n static handleError(error) {\n if (PromiseUtils.isCanceled(error)) {\n return;\n }\n log.error(error);\n }\n\n static languageFromFileName(fileName) {\n const extension = FileUtils.getExtension(fileName).toLowerCase();\n switch (extension) {\n case 'py':\n case 'python':\n return 'python';\n case 'groovy':\n return 'groovy';\n case 'scala':\n return 'scala';\n default:\n return null;\n }\n }\n\n constructor(props) {\n super(props);\n\n this.handleBlur = this.handleBlur.bind(this);\n this.handleCloseCancel = this.handleCloseCancel.bind(this);\n this.handleCloseDiscard = this.handleCloseDiscard.bind(this);\n this.handleCloseSave = this.handleCloseSave.bind(this);\n this.handleCopy = this.handleCopy.bind(this);\n this.handleEditorChange = this.handleEditorChange.bind(this);\n this.handleFind = this.handleFind.bind(this);\n this.handleFocus = this.handleFocus.bind(this);\n this.handleLoadSuccess = this.handleLoadSuccess.bind(this);\n this.handleLoadError = this.handleLoadError.bind(this);\n this.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\n this.handleShow = this.handleShow.bind(this);\n this.handleShowRename = this.handleShowRename.bind(this);\n this.handleTab = this.handleTab.bind(this);\n this.handleTabFocus = this.handleTabFocus.bind(this);\n this.handleTabBlur = this.handleTabBlur.bind(this);\n\n this.pending = new Pending();\n\n this.debouncedSavePanelState = debounce(\n this.savePanelState.bind(this),\n DEBOUNCE_PANEL_STATE_UPDATE\n );\n\n this.debouncedLoad = debounce(\n this.load.bind(this),\n DEBOUNCE_PANEL_STATE_UPDATE\n );\n\n this.notebook = null;\n\n this.tabTitleElement = null;\n this.unsavedIndicator = null;\n this.tabInitOnce = false;\n this.shouldPromptClose = true;\n\n const { isDashboardActive, session, sessionLanguage, panelState } = props;\n\n let settings = {\n value: '',\n };\n let fileMetadata = null;\n let { isPreview } = props;\n if (panelState) {\n ({\n fileMetadata = fileMetadata,\n isPreview = isPreview,\n settings = settings,\n } = panelState);\n }\n\n // Not showing the unsaved indicator for null file id and editor content === '',\n // may need to implement some other indication that this notebook has never been saved\n const hasFileId =\n fileMetadata.itemName && FileUtils.hasPath(fileMetadata.itemName);\n\n // Unsaved if file id != null and content != null\n // OR file id is null AND content is not null or ''\n const isUnsaved =\n (hasFileId && settings.value != null) || (!hasFileId && settings.value);\n const changeCount = isUnsaved ? 1 : 0;\n\n this.state = {\n error: null,\n isDashboardActive,\n isFocused: false,\n isLoading: true,\n isLoaded: false,\n isPreview,\n\n savedChangeCount: 0,\n changeCount,\n fileMetadata,\n settings,\n\n session,\n sessionLanguage,\n\n // eslint-disable-next-line react/no-unused-state\n panelState: {\n fileMetadata,\n settings,\n },\n\n showCloseModal: false,\n showSaveAsModal: false,\n\n scriptCode: '',\n };\n\n log.debug('constructor', props, this.state);\n }\n\n componentDidMount() {\n const {\n glContainer: { tab },\n glEventHub,\n } = this.props;\n if (tab) this.initTab(tab);\n this.initNotebookContent();\n glEventHub.on(NotebookEvent.RENAME_FILE, this.handleRenameFile);\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 { glEventHub } = this.props;\n\n const { fileMetadata, isPreview } = this.state;\n glEventHub.off(NotebookEvent.RENAME_FILE, this.handleRenameFile);\n glEventHub.emit(NotebookEvent.UNREGISTER_FILE, fileMetadata, isPreview);\n }\n\n // Called by TabEvent. Happens once when created, but also each time its moved.\n // when moved, need to re-init the unsaved indicators on title elements\n initTab(tab) {\n if (!this.tabInitOnce) {\n this.tabInitOnce = true;\n this.initTabCloseOverride();\n }\n this.initTabClasses(tab);\n }\n\n // override glContainer.close() with a custom closure that checks if needs saving\n initTabCloseOverride() {\n const { glContainer } = this.props;\n const close = glContainer.close.bind(glContainer);\n glContainer.close = () => {\n const { changeCount, savedChangeCount } = this.state;\n if (changeCount !== savedChangeCount && this.shouldPromptClose) {\n this.setState({ showCloseModal: true });\n } else {\n close();\n }\n };\n }\n\n initTabClasses(tab) {\n const tabElement = tab.element.get(0);\n const titleElement = tabElement.querySelector('.lm_title');\n this.tabTitleElement = titleElement;\n titleElement.classList.add('notebook-title');\n this.setPreviewStatus();\n }\n\n getNotebookValue() {\n const { changeCount, savedChangeCount, settings } = this.state;\n const { value } = settings;\n if (changeCount !== savedChangeCount && this.notebook) {\n const notebookValue = this.notebook.getValue();\n return notebookValue != null ? notebookValue : value;\n }\n return value;\n }\n\n initNotebookContent() {\n // Init from file,\n // fallback to content from settings for unsaved notebook\n const { fileMetadata, settings, isPreview } = this.state;\n if (fileMetadata && fileMetadata.id) {\n log.debug('Init content from file');\n this.registerFileMetadata(fileMetadata, isPreview);\n this.load();\n return;\n }\n if (settings.value != null) {\n log.debug('Use content passed in the settings prop');\n this.handleLoadSuccess();\n return;\n }\n // No settings, no metadata\n this.handleLoadError(new Error('Missing file metadata'));\n }\n\n closeFileTabById(id) {\n const { glEventHub } = this.props;\n glEventHub.emit(NotebookEvent.CLOSE_FILE, { id });\n }\n\n // Associate file id with the current tab\n // so the next time the file is opened this tab can be focused instead of opening a new tab\n registerFileMetadata(fileMetadata, isPreview) {\n const { glEventHub, metadata } = this.props;\n const { id: tabId } = metadata;\n glEventHub.emit(\n NotebookEvent.REGISTER_FILE,\n tabId,\n fileMetadata,\n isPreview\n );\n }\n\n renameTab(id, title) {\n const { glEventHub } = this.props;\n glEventHub.emit(NotebookEvent.RENAME, id, title);\n }\n\n load() {\n const { fileMetadata, settings } = this.state;\n const { id } = fileMetadata;\n const { fileStorage } = this.props;\n this.pending\n .add(fileStorage.loadFile(id))\n .then(loadedFile => {\n log.debug('Loaded file', loadedFile);\n const { filename: itemName } = loadedFile;\n const { itemName: prevItemName } = this.state;\n if (itemName !== prevItemName) {\n const { metadata } = this.props;\n const { id: tabId } = metadata;\n this.renameTab(tabId, FileUtils.getBaseName(itemName));\n }\n const updatedSettings = {\n ...settings,\n language: NotebookPanel.languageFromFileName(itemName),\n };\n if (settings.value == null) {\n updatedSettings.value = loadedFile.content;\n }\n this.setState({\n fileMetadata: { id: itemName, itemName },\n settings: updatedSettings,\n });\n this.debouncedSavePanelState();\n })\n .then(this.handleLoadSuccess)\n .catch(this.handleLoadError);\n }\n\n /**\n * Attempts to save the notebook.\n * @returns {boolean} Returns true if save has begun, false if user needed to be prompted\n */\n save() {\n const { fileMetadata } = this.state;\n if (fileMetadata && FileUtils.hasPath(fileMetadata.itemName)) {\n const content = this.getNotebookValue();\n this.saveContent(fileMetadata.itemName, content);\n return true;\n }\n\n this.setState({ showSaveAsModal: true });\n return false;\n }\n\n /**\n * Update existing file content\n * @param {string} filename The name of the file\n * @param {string} content New file content\n */\n saveContent(filename, content) {\n log.debug('saveContent', filename, content);\n this.updateSavedChangeCount();\n const { fileStorage } = this.props;\n this.pending\n .add(fileStorage.saveFile({ filename, content }))\n .then(this.handleSaveSuccess)\n .catch(this.handleSaveError);\n }\n\n updateSavedChangeCount() {\n this.setState(({ changeCount }) => ({ savedChangeCount: changeCount }));\n }\n\n setPreviewStatus() {\n if (!this.tabTitleElement) {\n return;\n }\n const { isPreview } = this.state;\n log.debug('setPreviewStatus', this.tabTitleElement, isPreview);\n if (isPreview) {\n this.tabTitleElement.classList.add('is-preview');\n } else {\n this.tabTitleElement.classList.remove('is-preview');\n }\n }\n\n getOverflowActions = memoize(() => [\n {\n title: 'Find',\n icon: dhFileSearch,\n action: this.handleFind,\n group: ContextActions.groups.high,\n shortcut: SHORTCUTS.NOTEBOOK.FIND,\n order: 10,\n },\n ]);\n\n savePanelState() {\n this.setState(state => {\n const {\n changeCount,\n savedChangeCount,\n fileMetadata,\n isPreview,\n settings: initialSettings,\n } = state;\n const value = this.getNotebookValue();\n // notebooks with no unsaved changes have value === null in dehydrated state\n // content will be loaded from file when hydrating\n const dehydratedValue = changeCount !== savedChangeCount ? value : null;\n const settings = {\n ...initialSettings,\n value,\n };\n const dehydratedSettings = {\n ...initialSettings,\n value: dehydratedValue,\n };\n const panelState = {\n settings: dehydratedSettings,\n fileMetadata,\n isPreview,\n };\n log.debug('Saving panel state', panelState);\n return {\n settings,\n // eslint-disable-next-line react/no-unused-state\n panelState,\n };\n });\n }\n\n handleCloseDiscard() {\n this.shouldPromptClose = false;\n this.setState({ showCloseModal: false });\n const { glContainer } = this.props;\n glContainer.close();\n }\n\n handleCloseSave() {\n this.shouldPromptClose = false;\n this.setState({ showCloseModal: false });\n if (this.save()) {\n const { glContainer } = this.props;\n glContainer.close();\n }\n }\n\n handleCloseCancel() {\n this.shouldPromptClose = true;\n this.setState({ showCloseModal: false });\n }\n\n handleCopy() {\n const { fileMetadata, settings } = this.state;\n const content = this.getNotebookValue();\n const { language } = settings;\n const { itemName } = fileMetadata;\n const copyName = FileUtils.getCopyFileName(itemName);\n log.debug('handleCopy', fileMetadata, itemName, copyName);\n this.createNotebook(copyName, language, content);\n }\n\n handleEditorChange(e) {\n log.debug2('handleEditorChanged', e);\n\n this.setState(({ isPreview }) => {\n if (isPreview) {\n const { fileMetadata } = this.state;\n this.registerFileMetadata(fileMetadata, false);\n return { isPreview: false };\n }\n return null;\n });\n\n this.setState(({ changeCount, savedChangeCount }) => {\n const { isUndoing, isRedoing } = e;\n if (isUndoing) {\n // Note that it's possible to undo past where the user last saved, if they save and then undo for example\n return { changeCount: changeCount - 1 };\n }\n\n if (!isRedoing && changeCount < savedChangeCount) {\n // We made another change after undoing some changes from the previous save\n // Just reset the saved counter to zero and increase the unchanged saves\n // It'll be set correctly on the next save\n return { changeCount: changeCount + 1, savedChangeCount: 0 };\n }\n\n return { changeCount: changeCount + 1 };\n });\n this.debouncedSavePanelState();\n }\n\n handleFind() {\n if (this.notebook) {\n this.notebook.toggleFind();\n }\n }\n\n handleBlur() {\n log.debug('handleBlur');\n this.setState({ isFocused: false });\n }\n\n handleFocus() {\n log.debug('handleFocus');\n this.setState({ isFocused: true });\n }\n\n handleLoadSuccess() {\n this.setState({\n error: null,\n isLoaded: true,\n isLoading: false,\n });\n }\n\n handleLoadError(errorParam) {\n let error = errorParam;\n if (PromiseUtils.isCanceled(error)) {\n return;\n }\n if (PromiseUtils.isTimedOut(error)) {\n error = new Error('File not found.');\n }\n log.error(error);\n this.setState({ error, isLoading: false });\n }\n\n handleSave() {\n log.debug('handleSave');\n this.save();\n }\n\n handleSaveSuccess(file) {\n const { fileStorage } = this.props;\n const fileMetadata = { id: file.filename, itemName: file.filename };\n const language = NotebookPanel.languageFromFileName(file.filename);\n this.setState(state => {\n const { fileMetadata: oldMetadata } = state;\n const settings = {\n ...state.settings,\n language,\n };\n log.debug('handleSaveSuccess', fileMetadata, oldMetadata, settings);\n if (\n FileUtils.hasPath(oldMetadata.itemName) &&\n oldMetadata.itemName !== fileMetadata.itemName\n ) {\n log.debug('handleSaveSuccess deleting old file', oldMetadata.itemName);\n fileStorage\n .deleteFile(oldMetadata.itemName)\n .catch(NotebookPanel.handleError);\n }\n return {\n fileMetadata,\n settings,\n isPreview: false,\n };\n });\n this.debouncedSavePanelState();\n this.registerFileMetadata(fileMetadata, false);\n }\n\n handleSaveError(error) {\n if (PromiseUtils.isCanceled(error)) {\n return;\n }\n // There was an error saving, just reset the savedChangeCount\n // It's possible if they undo changes they'll be back at the spot where it was last saved successfully,\n // But we may as well continue showing the error until they actually save again\n this.setState({ savedChangeCount: 0 });\n log.error(error);\n }\n\n handleSaveAsCancel() {\n this.setState({ showSaveAsModal: false });\n }\n\n handleSaveAsSubmit(name) {\n log.debug('handleSaveAsSubmit', name);\n const { fileMetadata } = this.state;\n const { itemName: prevItemName } = fileMetadata;\n const content = this.getNotebookValue();\n this.setState({\n showSaveAsModal: false,\n });\n\n if (FileUtils.getBaseName(prevItemName) !== FileUtils.getBaseName(name)) {\n const { metadata } = this.props;\n const { id: tabId } = metadata;\n this.renameTab(tabId, FileUtils.getBaseName(name));\n }\n\n this.saveContent(name, content);\n }\n\n handleRenameFile(oldName, newName) {\n const { fileMetadata } = this.state;\n if (fileMetadata.id === oldName) {\n this.setState({ fileMetadata: { id: newName, itemName: newName } });\n this.debouncedSavePanelState();\n }\n }\n\n handleResize() {\n if (this.notebook) {\n this.notebook.updateDimensions();\n }\n }\n\n handleRunCommand(command) {\n this.runCommand(command);\n }\n\n handleRunAll() {\n if (!this.notebook) {\n log.error('Editor is not initialized.');\n return;\n }\n this.runCommand(this.notebook.getValue());\n }\n\n handleRunSelected() {\n if (!this.notebook) {\n log.error('Editor is not initialized.');\n return;\n }\n this.runCommand(this.notebook.getSelectedCommand());\n }\n\n handleSessionOpened(session, { language }) {\n this.setState({\n session,\n sessionLanguage: language,\n });\n }\n\n handleSessionClosed() {\n this.setState({\n session: null,\n sessionLanguage: null,\n });\n }\n\n handleShow() {\n log.debug('handleShow');\n if (!this.notebook) {\n return;\n }\n this.notebook.updateDimensions();\n requestAnimationFrame(() => {\n if (this.notebook) {\n this.notebook.focus();\n }\n });\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() {\n log.debug('handleTabFocus');\n const { glContainer } = this.props;\n this.setState({\n isDashboardActive: true,\n });\n if (this.notebook && !glContainer.isHidden) {\n this.notebook.updateDimensions();\n this.notebook.focus();\n }\n }\n\n handleTabBlur() {\n log.debug('handleTabBlur');\n this.setState({\n isDashboardActive: false,\n });\n }\n\n createNotebook(itemName, language, content) {\n const { glEventHub } = this.props;\n const { session, sessionLanguage, settings } = this.state;\n const notebookSettings = {\n ...settings,\n language,\n value: content,\n };\n const fileMetadata = {\n id: null,\n itemName,\n };\n log.debug(\n 'handleCreateNotebook',\n session,\n sessionLanguage,\n notebookSettings,\n fileMetadata\n );\n glEventHub.emit(\n NotebookEvent.CREATE_NOTEBOOK,\n session,\n sessionLanguage,\n notebookSettings,\n fileMetadata\n );\n }\n\n runCommand(command) {\n if (!command) {\n log.debug('Ignoring empty command.');\n return;\n }\n const { glEventHub } = this.props;\n glEventHub.emit(ConsoleEvent.SEND_COMMAND, command, false, true);\n }\n\n render() {\n const {\n fileStorage,\n glContainer,\n glContainer: { tab },\n glEventHub,\n } = this.props;\n const {\n changeCount,\n savedChangeCount,\n error,\n isDashboardActive,\n isLoaded,\n isLoading,\n isPreview,\n fileMetadata,\n session,\n sessionLanguage,\n settings: initialSettings,\n showCloseModal,\n showSaveAsModal,\n } = this.state;\n // We don't want to steal focus if this isn't shown or it's just a preview\n const focusOnMount =\n isDashboardActive && !glContainer.isHidden && !isPreview;\n const itemName = fileMetadata?.itemName ?? NotebookPanel.DEFAULT_NAME;\n const isExistingItem = fileMetadata?.id != null;\n const overflowActions = this.getOverflowActions();\n const settings = {\n ...initialSettings,\n };\n const isSessionConnected = session != null;\n const isLanguageMatching = sessionLanguage === settings.language;\n const runButtonsDisabled =\n !isLoaded || !isSessionConnected || !isLanguageMatching;\n const toolbarDisabled = !isLoaded;\n const contextActions = [\n {\n action: this.handleSave,\n shortcut: GLOBAL_SHORTCUTS.SAVE,\n },\n ];\n const disabledRunButtonTooltip = ScriptEditorUtils.getDisabledRunTooltip(\n isSessionConnected,\n isLanguageMatching,\n 'Notebook extension',\n 'Run'\n );\n const disabledRunSelectedButtonTooltip = ScriptEditorUtils.getDisabledRunTooltip(\n isSessionConnected,\n isLanguageMatching,\n 'Notebook extension',\n 'Run Selected'\n );\n\n const additionalActions = [\n {\n title: isExistingItem ? 'Rename' : 'Save As…',\n order: 10,\n group: ContextActions.groups.high,\n action: this.handleShowRename,\n },\n {\n title: 'Copy File',\n action: this.handleCopy,\n group: ContextActions.groups.high,\n order: 20,\n },\n ];\n\n return (\n <>\n {tab &&\n ReactDOM.createPortal(\n <span\n className={classNames('editor-unsaved-indicator', {\n 'is-unsaved': changeCount !== savedChangeCount,\n })}\n />,\n tab.element.find('.lm_title_before').get(0) // tab.element is jquery element, we want a dom element\n )}\n\n <Panel\n className=\"notebook-container\"\n componentPanel={this}\n glContainer={glContainer}\n glEventHub={glEventHub}\n onTab={this.handleTab}\n onResize={this.handleResize}\n onShow={this.handleShow}\n onTabFocus={this.handleTabFocus}\n onTabBlur={this.handleTabBlur}\n onSessionOpen={this.handleSessionOpened}\n onSessionClose={this.handleSessionClosed}\n onFocus={this.handleFocus}\n onBlur={this.handleBlur}\n additionalActions={additionalActions}\n renderTabTooltip={() => itemName}\n >\n <div className=\"notebook-toolbar\">\n <span>\n <button\n type=\"button\"\n className=\"btn btn-link btn-link-icon btn-play\"\n onClick={this.handleRunAll}\n disabled={runButtonsDisabled}\n >\n <FontAwesomeIcon icon={vsRunAll} transform=\"grow-4\" />\n <Tooltip>Run {SHORTCUTS.NOTEBOOK.RUN.getDisplayText()}</Tooltip>\n </button>\n {disabledRunButtonTooltip && (\n <Tooltip>{disabledRunButtonTooltip}</Tooltip>\n )}\n </span>\n <span>\n <button\n type=\"button\"\n className=\"btn btn-link btn-link-icon btn-play\"\n onClick={this.handleRunSelected}\n disabled={runButtonsDisabled}\n >\n <FontAwesomeIcon icon={vsPlay} transform=\"grow-4\" />\n <Tooltip>\n Run Selected{' '}\n {SHORTCUTS.NOTEBOOK.RUN_SELECTED.getDisplayText()}\n </Tooltip>\n </button>\n {disabledRunSelectedButtonTooltip && (\n <Tooltip>{disabledRunSelectedButtonTooltip}</Tooltip>\n )}\n </span>\n <button\n type=\"button\"\n className=\"btn btn-link btn-link-icon mr-auto\"\n disabled={toolbarDisabled}\n onClick={this.handleSave}\n >\n <FontAwesomeIcon icon={vsSave} />\n <Tooltip>Save</Tooltip>\n </button>\n <button\n type=\"button\"\n className=\"btn btn-link btn-overflow btn-link-icon\"\n disabled={toolbarDisabled}\n >\n <FontAwesomeIcon icon={vsKebabVertical} />\n <Tooltip>More Actions...</Tooltip>\n <DropdownMenu\n actions={overflowActions}\n popperOptions={NotebookPanel.POPPER_OPTIONS}\n />\n </button>\n </div>\n <ScriptEditor\n isLoaded={isLoaded}\n isLoading={isLoading}\n error={error}\n onChange={this.handleEditorChange}\n onRunCommand={this.handleRunCommand}\n session={session}\n sessionLanguage={sessionLanguage}\n settings={settings}\n focusOnMount={focusOnMount}\n ref={notebook => {\n this.notebook = notebook;\n }}\n />\n <NewItemModal\n isOpen={showSaveAsModal}\n type=\"file\"\n defaultValue={itemName}\n title={isExistingItem ? 'Rename' : 'Save file as'}\n onSubmit={this.handleSaveAsSubmit}\n onCancel={this.handleSaveAsCancel}\n notifyOnExtensionChange\n storage={fileStorage}\n />\n <BasicModal\n isOpen={showCloseModal}\n headerText={`Do you want to save the changes you made to ${itemName}?`}\n bodyText=\"Your changes will be lost if you don't save them.\"\n onCancel={this.handleCloseCancel}\n onDiscard={this.handleCloseDiscard}\n onConfirm={this.handleCloseSave}\n discardButtonText=\"Discard Changes\"\n confirmButtonText=\"Save\"\n />\n <ContextActions actions={contextActions} />\n </Panel>\n </>\n );\n }\n}\n\nNotebookPanel.propTypes = {\n fileStorage: PropTypes.shape({\n deleteFile: PropTypes.func.isRequired,\n loadFile: PropTypes.func.isRequired,\n saveFile: PropTypes.func.isRequired,\n }).isRequired,\n glContainer: GLPropTypes.Container.isRequired,\n glEventHub: GLPropTypes.EventHub.isRequired,\n isDashboardActive: PropTypes.bool,\n isPreview: PropTypes.bool,\n metadata: PropTypes.shape({\n id: PropTypes.string.isRequired,\n }).isRequired,\n session: PropTypes.shape({}),\n sessionLanguage: PropTypes.string,\n panelState: PropTypes.shape({\n settings: PropTypes.shape({}),\n fileMetadata: PropTypes.shape({}),\n }).isRequired,\n};\n\nNotebookPanel.defaultProps = {\n isDashboardActive: true,\n isPreview: false,\n session: null,\n sessionLanguage: null,\n};\n\nconst mapStateToProps = (state, ownProps) => {\n const fileStorage = getFileStorage(state);\n const sessionWrapper = getDashboardSessionWrapper(\n state,\n ownProps.localDashboardId\n );\n const { session, config: sessionConfig } = sessionWrapper;\n const { type: sessionLanguage } = sessionConfig;\n return {\n fileStorage,\n session,\n sessionLanguage,\n };\n};\n\nexport default connect(mapStateToProps, null, null, { forwardRef: true })(\n NotebookPanel\n);\n"],"file":"NotebookPanel.js"}
1
+ {"version":3,"sources":["../../src/panels/NotebookPanel.jsx"],"names":["React","Component","ReactDOM","PropTypes","memoize","connect","FontAwesomeIcon","BasicModal","ContextActions","DropdownMenu","Tooltip","GLOBAL_SHORTCUTS","ScriptEditor","ScriptEditorUtils","GLPropTypes","FileUtils","NewItemModal","vsSave","vsKebabVertical","dhFileSearch","vsPlay","vsRunAll","getFileStorage","classNames","debounce","Log","Pending","PromiseUtils","ConsoleEvent","NotebookEvent","getDashboardSessionWrapper","Panel","SHORTCUTS","log","module","DEBOUNCE_PANEL_STATE_UPDATE","NotebookPanel","handleError","error","isCanceled","languageFromFileName","fileName","extension","getExtension","toLowerCase","constructor","props","title","icon","action","handleFind","group","groups","high","shortcut","NOTEBOOK","FIND","order","handleBlur","bind","handleCloseCancel","handleCloseDiscard","handleCloseSave","handleCopy","handleEditorChange","handleFocus","handleLoadSuccess","handleLoadError","handlePanelTabClick","handleRenameFile","handleResize","handleRunCommand","handleRunAll","handleRunSelected","handleSave","handleSaveAsCancel","handleSaveAsSubmit","handleSaveError","handleSaveSuccess","handleSessionOpened","handleSessionClosed","handleShow","handleShowRename","handleTab","handleTabFocus","handleTabBlur","pending","debouncedSavePanelState","savePanelState","debouncedLoad","load","notebook","tabTitleElement","unsavedIndicator","tabInitOnce","shouldPromptClose","isDashboardActive","session","sessionLanguage","panelState","settings","value","fileMetadata","isPreview","hasFileId","itemName","hasPath","isUnsaved","changeCount","state","isFocused","isLoading","isLoaded","savedChangeCount","showCloseModal","showSaveAsModal","scriptCode","debug","componentDidMount","glContainer","glEventHub","tab","initTab","initNotebookContent","on","RENAME_FILE","componentDidUpdate","prevProps","prevState","setPreviewStatus","componentWillUnmount","flush","cancel","off","emit","UNREGISTER_FILE","initTabCloseOverride","initTabClasses","close","setState","tabElement","element","get","titleElement","querySelector","classList","add","getNotebookValue","notebookValue","getValue","id","registerFileMetadata","Error","closeFileTabById","CLOSE_FILE","metadata","tabId","REGISTER_FILE","renameTab","RENAME","fileStorage","loadFile","then","loadedFile","filename","prevItemName","getBaseName","updatedSettings","language","content","catch","save","saveContent","updateSavedChangeCount","saveFile","remove","initialSettings","dehydratedValue","dehydratedSettings","copyName","getCopyFileName","createNotebook","e","debug2","isUndoing","isRedoing","toggleFind","errorParam","isTimedOut","file","oldMetadata","deleteFile","name","oldName","newName","updateDimensions","command","runCommand","getSelectedCommand","args","isHidden","focus","requestAnimationFrame","notebookSettings","CREATE_NOTEBOOK","SEND_COMMAND","render","focusOnMount","DEFAULT_NAME","isExistingItem","overflowActions","getOverflowActions","isSessionConnected","isLanguageMatching","runButtonsDisabled","toolbarDisabled","contextActions","SAVE","disabledRunButtonTooltip","getDisabledRunTooltip","disabledRunSelectedButtonTooltip","additionalActions","createPortal","find","RUN","getDisplayText","RUN_SELECTED","POPPER_OPTIONS","placement","propTypes","shape","func","isRequired","Container","EventHub","bool","string","defaultProps","mapStateToProps","ownProps","sessionWrapper","localDashboardId","config","sessionConfig","type","forwardRef"],"mappings":"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","sourcesContent":["// Wrapper for the Notebook for use in a golden layout container\nimport React, { Component } from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport memoize from 'memoize-one';\nimport { connect } from 'react-redux';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {\n BasicModal,\n ContextActions,\n DropdownMenu,\n Tooltip,\n GLOBAL_SHORTCUTS,\n} from '@deephaven/components';\nimport { ScriptEditor, ScriptEditorUtils } from '@deephaven/console';\nimport { GLPropTypes } from '@deephaven/dashboard';\nimport { FileUtils, NewItemModal } from '@deephaven/file-explorer';\nimport {\n vsSave,\n vsKebabVertical,\n dhFileSearch,\n vsPlay,\n vsRunAll,\n} from '@deephaven/icons';\nimport { getFileStorage } from '@deephaven/redux';\nimport classNames from 'classnames';\nimport debounce from 'lodash.debounce';\nimport Log from '@deephaven/log';\nimport { Pending, PromiseUtils } from '@deephaven/utils';\nimport { ConsoleEvent, NotebookEvent } from '../events';\nimport { getDashboardSessionWrapper } from '../redux';\nimport Panel from './Panel';\nimport SHORTCUTS from './Shortcuts';\nimport './NotebookPanel.scss';\n\nconst log = Log.module('NotebookPanel');\n\nconst DEBOUNCE_PANEL_STATE_UPDATE = 400;\n\nclass NotebookPanel extends Component {\n static COMPONENT = 'NotebookPanel';\n\n static POPPER_OPTIONS = { placement: 'bottom-end' };\n\n static DEFAULT_NAME = 'Untitled';\n\n static handleError(error) {\n if (PromiseUtils.isCanceled(error)) {\n return;\n }\n log.error(error);\n }\n\n static languageFromFileName(fileName) {\n const extension = FileUtils.getExtension(fileName).toLowerCase();\n switch (extension) {\n case 'py':\n case 'python':\n return 'python';\n case 'groovy':\n return 'groovy';\n case 'scala':\n return 'scala';\n default:\n return null;\n }\n }\n\n constructor(props) {\n super(props);\n\n this.handleBlur = this.handleBlur.bind(this);\n this.handleCloseCancel = this.handleCloseCancel.bind(this);\n this.handleCloseDiscard = this.handleCloseDiscard.bind(this);\n this.handleCloseSave = this.handleCloseSave.bind(this);\n this.handleCopy = this.handleCopy.bind(this);\n this.handleEditorChange = this.handleEditorChange.bind(this);\n this.handleFind = this.handleFind.bind(this);\n this.handleFocus = this.handleFocus.bind(this);\n this.handleLoadSuccess = this.handleLoadSuccess.bind(this);\n this.handleLoadError = this.handleLoadError.bind(this);\n this.handlePanelTabClick = this.handlePanelTabClick.bind(this);\n this.handleRenameFile = this.handleRenameFile.bind(this);\n this.handleResize = this.handleResize.bind(this);\n this.handleRunCommand = this.handleRunCommand.bind(this);\n this.handleRunAll = this.handleRunAll.bind(this);\n this.handleRunSelected = this.handleRunSelected.bind(this);\n this.handleSave = this.handleSave.bind(this);\n this.handleSaveAsCancel = this.handleSaveAsCancel.bind(this);\n this.handleSaveAsSubmit = this.handleSaveAsSubmit.bind(this);\n this.handleSaveError = this.handleSaveError.bind(this);\n this.handleSaveSuccess = this.handleSaveSuccess.bind(this);\n this.handleSessionOpened = this.handleSessionOpened.bind(this);\n this.handleSessionClosed = this.handleSessionClosed.bind(this);\n this.handleShow = this.handleShow.bind(this);\n this.handleShowRename = this.handleShowRename.bind(this);\n this.handleTab = this.handleTab.bind(this);\n this.handleTabFocus = this.handleTabFocus.bind(this);\n this.handleTabBlur = this.handleTabBlur.bind(this);\n\n this.pending = new Pending();\n\n this.debouncedSavePanelState = debounce(\n this.savePanelState.bind(this),\n DEBOUNCE_PANEL_STATE_UPDATE\n );\n\n this.debouncedLoad = debounce(\n this.load.bind(this),\n DEBOUNCE_PANEL_STATE_UPDATE\n );\n\n this.notebook = null;\n\n this.tabTitleElement = null;\n this.unsavedIndicator = null;\n this.tabInitOnce = false;\n this.shouldPromptClose = true;\n\n const { isDashboardActive, session, sessionLanguage, panelState } = props;\n\n let settings = {\n value: '',\n };\n let fileMetadata = null;\n let { isPreview } = props;\n if (panelState) {\n ({\n fileMetadata = fileMetadata,\n isPreview = isPreview,\n settings = settings,\n } = panelState);\n }\n\n // Not showing the unsaved indicator for null file id and editor content === '',\n // may need to implement some other indication that this notebook has never been saved\n const hasFileId =\n fileMetadata.itemName && FileUtils.hasPath(fileMetadata.itemName);\n\n // Unsaved if file id != null and content != null\n // OR file id is null AND content is not null or ''\n const isUnsaved =\n (hasFileId && settings.value != null) || (!hasFileId && settings.value);\n const changeCount = isUnsaved ? 1 : 0;\n\n this.state = {\n error: null,\n isDashboardActive,\n isFocused: false,\n isLoading: true,\n isLoaded: false,\n isPreview,\n\n savedChangeCount: 0,\n changeCount,\n fileMetadata,\n settings,\n\n session,\n sessionLanguage,\n\n // eslint-disable-next-line react/no-unused-state\n panelState: {\n fileMetadata,\n settings,\n },\n\n showCloseModal: false,\n showSaveAsModal: false,\n\n scriptCode: '',\n };\n\n log.debug('constructor', props, this.state);\n }\n\n componentDidMount() {\n const { glContainer, glEventHub } = this.props;\n const { tab } = glContainer;\n if (tab) this.initTab(tab);\n this.initNotebookContent();\n glEventHub.on(NotebookEvent.RENAME_FILE, this.handleRenameFile);\n glContainer.on('tabClicked', this.handlePanelTabClick);\n }\n\n componentDidUpdate(prevProps, prevState) {\n const { isPreview } = this.state;\n if (isPreview !== prevState.isPreview) {\n this.setPreviewStatus(isPreview);\n }\n }\n\n componentWillUnmount() {\n this.debouncedSavePanelState.flush();\n this.pending.cancel();\n\n const { glContainer, glEventHub } = this.props;\n\n const { fileMetadata, isPreview } = this.state;\n glEventHub.off(NotebookEvent.RENAME_FILE, this.handleRenameFile);\n glContainer.off('tabClicked', this.handlePanelTabClick);\n glEventHub.emit(NotebookEvent.UNREGISTER_FILE, fileMetadata, isPreview);\n }\n\n // Called by TabEvent. Happens once when created, but also each time its moved.\n // when moved, need to re-init the unsaved indicators on title elements\n initTab(tab) {\n if (!this.tabInitOnce) {\n this.tabInitOnce = true;\n this.initTabCloseOverride();\n }\n this.initTabClasses(tab);\n }\n\n // override glContainer.close() with a custom closure that checks if needs saving\n initTabCloseOverride() {\n const { glContainer } = this.props;\n const close = glContainer.close.bind(glContainer);\n glContainer.close = () => {\n const { changeCount, savedChangeCount } = this.state;\n if (changeCount !== savedChangeCount && this.shouldPromptClose) {\n this.setState({ showCloseModal: true });\n } else {\n close();\n }\n };\n }\n\n initTabClasses(tab) {\n const tabElement = tab.element.get(0);\n const titleElement = tabElement.querySelector('.lm_title');\n this.tabTitleElement = titleElement;\n titleElement.classList.add('notebook-title');\n this.setPreviewStatus();\n }\n\n getNotebookValue() {\n const { changeCount, savedChangeCount, settings } = this.state;\n const { value } = settings;\n if (changeCount !== savedChangeCount && this.notebook) {\n const notebookValue = this.notebook.getValue();\n return notebookValue != null ? notebookValue : value;\n }\n return value;\n }\n\n initNotebookContent() {\n // Init from file,\n // fallback to content from settings for unsaved notebook\n const { fileMetadata, settings, isPreview } = this.state;\n if (fileMetadata && fileMetadata.id) {\n log.debug('Init content from file');\n this.registerFileMetadata(fileMetadata, isPreview);\n this.load();\n return;\n }\n if (settings.value != null) {\n log.debug('Use content passed in the settings prop');\n this.handleLoadSuccess();\n return;\n }\n // No settings, no metadata\n this.handleLoadError(new Error('Missing file metadata'));\n }\n\n closeFileTabById(id) {\n const { glEventHub } = this.props;\n glEventHub.emit(NotebookEvent.CLOSE_FILE, { id });\n }\n\n // Associate file id with the current tab\n // so the next time the file is opened this tab can be focused instead of opening a new tab\n registerFileMetadata(fileMetadata, isPreview) {\n const { glEventHub, metadata } = this.props;\n const { id: tabId } = metadata;\n glEventHub.emit(\n NotebookEvent.REGISTER_FILE,\n tabId,\n fileMetadata,\n isPreview\n );\n }\n\n renameTab(id, title) {\n const { glEventHub } = this.props;\n glEventHub.emit(NotebookEvent.RENAME, id, title);\n }\n\n load() {\n const { fileMetadata, settings } = this.state;\n const { id } = fileMetadata;\n const { fileStorage } = this.props;\n this.pending\n .add(fileStorage.loadFile(id))\n .then(loadedFile => {\n log.debug('Loaded file', loadedFile);\n const { filename: itemName } = loadedFile;\n const { itemName: prevItemName } = this.state;\n if (itemName !== prevItemName) {\n const { metadata } = this.props;\n const { id: tabId } = metadata;\n this.renameTab(tabId, FileUtils.getBaseName(itemName));\n }\n const updatedSettings = {\n ...settings,\n language: NotebookPanel.languageFromFileName(itemName),\n };\n if (settings.value == null) {\n updatedSettings.value = loadedFile.content;\n }\n this.setState({\n fileMetadata: { id: itemName, itemName },\n settings: updatedSettings,\n });\n this.debouncedSavePanelState();\n })\n .then(this.handleLoadSuccess)\n .catch(this.handleLoadError);\n }\n\n /**\n * Attempts to save the notebook.\n * @returns {boolean} Returns true if save has begun, false if user needed to be prompted\n */\n save() {\n const { fileMetadata } = this.state;\n if (fileMetadata && FileUtils.hasPath(fileMetadata.itemName)) {\n const content = this.getNotebookValue();\n this.saveContent(fileMetadata.itemName, content);\n return true;\n }\n\n this.setState({ showSaveAsModal: true });\n return false;\n }\n\n /**\n * Update existing file content\n * @param {string} filename The name of the file\n * @param {string} content New file content\n */\n saveContent(filename, content) {\n log.debug('saveContent', filename, content);\n this.updateSavedChangeCount();\n const { fileStorage } = this.props;\n this.pending\n .add(fileStorage.saveFile({ filename, content }))\n .then(this.handleSaveSuccess)\n .catch(this.handleSaveError);\n }\n\n updateSavedChangeCount() {\n this.setState(({ changeCount }) => ({ savedChangeCount: changeCount }));\n }\n\n setPreviewStatus() {\n if (!this.tabTitleElement) {\n return;\n }\n const { isPreview } = this.state;\n log.debug('setPreviewStatus', this.tabTitleElement, isPreview);\n if (isPreview) {\n this.tabTitleElement.classList.add('is-preview');\n } else {\n this.tabTitleElement.classList.remove('is-preview');\n }\n }\n\n getOverflowActions = memoize(() => [\n {\n title: 'Find',\n icon: dhFileSearch,\n action: this.handleFind,\n group: ContextActions.groups.high,\n shortcut: SHORTCUTS.NOTEBOOK.FIND,\n order: 10,\n },\n ]);\n\n savePanelState() {\n this.setState(state => {\n const {\n changeCount,\n savedChangeCount,\n fileMetadata,\n isPreview,\n settings: initialSettings,\n } = state;\n const value = this.getNotebookValue();\n // notebooks with no unsaved changes have value === null in dehydrated state\n // content will be loaded from file when hydrating\n const dehydratedValue = changeCount !== savedChangeCount ? value : null;\n const settings = {\n ...initialSettings,\n value,\n };\n const dehydratedSettings = {\n ...initialSettings,\n value: dehydratedValue,\n };\n const panelState = {\n settings: dehydratedSettings,\n fileMetadata,\n isPreview,\n };\n log.debug('Saving panel state', panelState);\n return {\n settings,\n // eslint-disable-next-line react/no-unused-state\n panelState,\n };\n });\n }\n\n handleCloseDiscard() {\n this.shouldPromptClose = false;\n this.setState({ showCloseModal: false });\n const { glContainer } = this.props;\n glContainer.close();\n }\n\n handleCloseSave() {\n this.shouldPromptClose = false;\n this.setState({ showCloseModal: false });\n if (this.save()) {\n const { glContainer } = this.props;\n glContainer.close();\n }\n }\n\n handleCloseCancel() {\n this.shouldPromptClose = true;\n this.setState({ showCloseModal: false });\n }\n\n handleCopy() {\n const { fileMetadata, settings } = this.state;\n const content = this.getNotebookValue();\n const { language } = settings;\n const { itemName } = fileMetadata;\n const copyName = FileUtils.getCopyFileName(itemName);\n log.debug('handleCopy', fileMetadata, itemName, copyName);\n this.createNotebook(copyName, language, content);\n }\n\n handleEditorChange(e) {\n log.debug2('handleEditorChanged', e);\n\n this.setState(({ isPreview }) => {\n if (isPreview) {\n const { fileMetadata } = this.state;\n this.registerFileMetadata(fileMetadata, false);\n return { isPreview: false };\n }\n return null;\n });\n\n this.setState(({ changeCount, savedChangeCount }) => {\n const { isUndoing, isRedoing } = e;\n if (isUndoing) {\n // Note that it's possible to undo past where the user last saved, if they save and then undo for example\n return { changeCount: changeCount - 1 };\n }\n\n if (!isRedoing && changeCount < savedChangeCount) {\n // We made another change after undoing some changes from the previous save\n // Just reset the saved counter to zero and increase the unchanged saves\n // It'll be set correctly on the next save\n return { changeCount: changeCount + 1, savedChangeCount: 0 };\n }\n\n return { changeCount: changeCount + 1 };\n });\n this.debouncedSavePanelState();\n }\n\n handleFind() {\n if (this.notebook) {\n this.notebook.toggleFind();\n }\n }\n\n handleBlur() {\n log.debug('handleBlur');\n this.setState({ isFocused: false });\n }\n\n handleFocus() {\n log.debug('handleFocus');\n this.setState({ isFocused: true });\n }\n\n handleLoadSuccess() {\n this.setState({\n error: null,\n isLoaded: true,\n isLoading: false,\n });\n }\n\n handleLoadError(errorParam) {\n let error = errorParam;\n if (PromiseUtils.isCanceled(error)) {\n return;\n }\n if (PromiseUtils.isTimedOut(error)) {\n error = new Error('File not found.');\n }\n log.error(error);\n this.setState({ error, isLoading: false });\n }\n\n handleSave() {\n log.debug('handleSave');\n this.save();\n }\n\n handleSaveSuccess(file) {\n const { fileStorage } = this.props;\n const fileMetadata = { id: file.filename, itemName: file.filename };\n const language = NotebookPanel.languageFromFileName(file.filename);\n this.setState(state => {\n const { fileMetadata: oldMetadata } = state;\n const settings = {\n ...state.settings,\n language,\n };\n log.debug('handleSaveSuccess', fileMetadata, oldMetadata, settings);\n if (\n FileUtils.hasPath(oldMetadata.itemName) &&\n oldMetadata.itemName !== fileMetadata.itemName\n ) {\n log.debug('handleSaveSuccess deleting old file', oldMetadata.itemName);\n fileStorage\n .deleteFile(oldMetadata.itemName)\n .catch(NotebookPanel.handleError);\n }\n return {\n fileMetadata,\n settings,\n isPreview: false,\n };\n });\n this.debouncedSavePanelState();\n this.registerFileMetadata(fileMetadata, false);\n }\n\n handleSaveError(error) {\n if (PromiseUtils.isCanceled(error)) {\n return;\n }\n // There was an error saving, just reset the savedChangeCount\n // It's possible if they undo changes they'll be back at the spot where it was last saved successfully,\n // But we may as well continue showing the error until they actually save again\n this.setState({ savedChangeCount: 0 });\n log.error(error);\n }\n\n handleSaveAsCancel() {\n this.setState({ showSaveAsModal: false });\n }\n\n handleSaveAsSubmit(name) {\n log.debug('handleSaveAsSubmit', name);\n const { fileMetadata } = this.state;\n const { itemName: prevItemName } = fileMetadata;\n const content = this.getNotebookValue();\n this.setState({\n showSaveAsModal: false,\n });\n\n if (FileUtils.getBaseName(prevItemName) !== FileUtils.getBaseName(name)) {\n const { metadata } = this.props;\n const { id: tabId } = metadata;\n this.renameTab(tabId, FileUtils.getBaseName(name));\n }\n\n this.saveContent(name, content);\n }\n\n handleRenameFile(oldName, newName) {\n const { fileMetadata } = this.state;\n if (fileMetadata.id === oldName) {\n this.setState({ fileMetadata: { id: newName, itemName: newName } });\n this.debouncedSavePanelState();\n }\n }\n\n handleResize() {\n if (this.notebook) {\n this.notebook.updateDimensions();\n }\n }\n\n handleRunCommand(command) {\n this.runCommand(command);\n }\n\n handleRunAll() {\n if (!this.notebook) {\n log.error('Editor is not initialized.');\n return;\n }\n this.runCommand(this.notebook.getValue());\n }\n\n handleRunSelected() {\n if (!this.notebook) {\n log.error('Editor is not initialized.');\n return;\n }\n this.runCommand(this.notebook.getSelectedCommand());\n }\n\n handleSessionOpened(session, { language }) {\n this.setState({\n session,\n sessionLanguage: language,\n });\n }\n\n handleSessionClosed() {\n this.setState({\n session: null,\n sessionLanguage: null,\n });\n }\n\n handleShow() {\n log.debug('handleShow');\n if (!this.notebook) {\n return;\n }\n this.notebook.updateDimensions();\n }\n\n handleShowRename() {\n this.setState({ showSaveAsModal: true });\n }\n\n handleTab(tab) {\n log.debug('NotebookPanel tab event', tab);\n this.initTab(tab);\n }\n\n handleTabFocus(...args) {\n log.debug('handleTabFocus', ...args);\n const { glContainer } = this.props;\n this.setState({\n isDashboardActive: true,\n });\n if (this.notebook && !glContainer.isHidden) {\n this.notebook.updateDimensions();\n }\n }\n\n handleTabBlur() {\n log.debug('handleTabBlur');\n this.setState({\n isDashboardActive: false,\n });\n }\n\n handlePanelTabClick() {\n log.debug('handlePanelTabClick');\n this.focus();\n }\n\n focus() {\n requestAnimationFrame(() => {\n if (this.notebook) {\n this.notebook.focus();\n }\n });\n }\n\n createNotebook(itemName, language, content) {\n const { glEventHub } = this.props;\n const { session, sessionLanguage, settings } = this.state;\n const notebookSettings = {\n ...settings,\n language,\n value: content,\n };\n const fileMetadata = {\n id: null,\n itemName,\n };\n log.debug(\n 'handleCreateNotebook',\n session,\n sessionLanguage,\n notebookSettings,\n fileMetadata\n );\n glEventHub.emit(\n NotebookEvent.CREATE_NOTEBOOK,\n session,\n sessionLanguage,\n notebookSettings,\n fileMetadata\n );\n }\n\n runCommand(command) {\n if (!command) {\n log.debug('Ignoring empty command.');\n return;\n }\n const { glEventHub } = this.props;\n glEventHub.emit(ConsoleEvent.SEND_COMMAND, command, false, true);\n }\n\n render() {\n const {\n fileStorage,\n glContainer,\n glContainer: { tab },\n glEventHub,\n } = this.props;\n const {\n changeCount,\n savedChangeCount,\n error,\n isDashboardActive,\n isLoaded,\n isLoading,\n isPreview,\n fileMetadata,\n session,\n sessionLanguage,\n settings: initialSettings,\n showCloseModal,\n showSaveAsModal,\n } = this.state;\n // We don't want to steal focus if this isn't shown or it's just a preview\n const focusOnMount =\n isDashboardActive && !glContainer.isHidden && !isPreview;\n const itemName = fileMetadata?.itemName ?? NotebookPanel.DEFAULT_NAME;\n const isExistingItem = fileMetadata?.id != null;\n const overflowActions = this.getOverflowActions();\n const settings = {\n ...initialSettings,\n };\n const isSessionConnected = session != null;\n const isLanguageMatching = sessionLanguage === settings.language;\n const runButtonsDisabled =\n !isLoaded || !isSessionConnected || !isLanguageMatching;\n const toolbarDisabled = !isLoaded;\n const contextActions = [\n {\n action: this.handleSave,\n shortcut: GLOBAL_SHORTCUTS.SAVE,\n },\n ];\n const disabledRunButtonTooltip = ScriptEditorUtils.getDisabledRunTooltip(\n isSessionConnected,\n isLanguageMatching,\n 'Notebook extension',\n 'Run'\n );\n const disabledRunSelectedButtonTooltip = ScriptEditorUtils.getDisabledRunTooltip(\n isSessionConnected,\n isLanguageMatching,\n 'Notebook extension',\n 'Run Selected'\n );\n\n const additionalActions = [\n {\n title: isExistingItem ? 'Rename' : 'Save As…',\n order: 10,\n group: ContextActions.groups.high,\n action: this.handleShowRename,\n },\n {\n title: 'Copy File',\n action: this.handleCopy,\n group: ContextActions.groups.high,\n order: 20,\n },\n ];\n\n return (\n <>\n {tab &&\n ReactDOM.createPortal(\n <span\n className={classNames('editor-unsaved-indicator', {\n 'is-unsaved': changeCount !== savedChangeCount,\n })}\n />,\n tab.element.find('.lm_title_before').get(0) // tab.element is jquery element, we want a dom element\n )}\n\n <Panel\n className=\"notebook-container\"\n componentPanel={this}\n glContainer={glContainer}\n glEventHub={glEventHub}\n onTab={this.handleTab}\n onResize={this.handleResize}\n onShow={this.handleShow}\n onTabFocus={this.handleTabFocus}\n onTabBlur={this.handleTabBlur}\n onSessionOpen={this.handleSessionOpened}\n onSessionClose={this.handleSessionClosed}\n onFocus={this.handleFocus}\n onBlur={this.handleBlur}\n additionalActions={additionalActions}\n renderTabTooltip={() => itemName}\n >\n <div className=\"notebook-toolbar\">\n <span>\n <button\n type=\"button\"\n className=\"btn btn-link btn-link-icon btn-play\"\n onClick={this.handleRunAll}\n disabled={runButtonsDisabled}\n >\n <FontAwesomeIcon icon={vsRunAll} transform=\"grow-4\" />\n <Tooltip>Run {SHORTCUTS.NOTEBOOK.RUN.getDisplayText()}</Tooltip>\n </button>\n {disabledRunButtonTooltip && (\n <Tooltip>{disabledRunButtonTooltip}</Tooltip>\n )}\n </span>\n <span>\n <button\n type=\"button\"\n className=\"btn btn-link btn-link-icon btn-play\"\n onClick={this.handleRunSelected}\n disabled={runButtonsDisabled}\n >\n <FontAwesomeIcon icon={vsPlay} transform=\"grow-4\" />\n <Tooltip>\n Run Selected{' '}\n {SHORTCUTS.NOTEBOOK.RUN_SELECTED.getDisplayText()}\n </Tooltip>\n </button>\n {disabledRunSelectedButtonTooltip && (\n <Tooltip>{disabledRunSelectedButtonTooltip}</Tooltip>\n )}\n </span>\n <button\n type=\"button\"\n className=\"btn btn-link btn-link-icon mr-auto\"\n disabled={toolbarDisabled}\n onClick={this.handleSave}\n >\n <FontAwesomeIcon icon={vsSave} />\n <Tooltip>Save</Tooltip>\n </button>\n <button\n type=\"button\"\n className=\"btn btn-link btn-overflow btn-link-icon\"\n disabled={toolbarDisabled}\n >\n <FontAwesomeIcon icon={vsKebabVertical} />\n <Tooltip>More Actions...</Tooltip>\n <DropdownMenu\n actions={overflowActions}\n popperOptions={NotebookPanel.POPPER_OPTIONS}\n />\n </button>\n </div>\n <ScriptEditor\n isLoaded={isLoaded}\n isLoading={isLoading}\n error={error}\n onChange={this.handleEditorChange}\n onRunCommand={this.handleRunCommand}\n session={session}\n sessionLanguage={sessionLanguage}\n settings={settings}\n focusOnMount={focusOnMount}\n ref={notebook => {\n this.notebook = notebook;\n }}\n />\n <NewItemModal\n isOpen={showSaveAsModal}\n type=\"file\"\n defaultValue={itemName}\n title={isExistingItem ? 'Rename' : 'Save file as'}\n onSubmit={this.handleSaveAsSubmit}\n onCancel={this.handleSaveAsCancel}\n notifyOnExtensionChange\n storage={fileStorage}\n />\n <BasicModal\n isOpen={showCloseModal}\n headerText={`Do you want to save the changes you made to ${itemName}?`}\n bodyText=\"Your changes will be lost if you don't save them.\"\n onCancel={this.handleCloseCancel}\n onDiscard={this.handleCloseDiscard}\n onConfirm={this.handleCloseSave}\n discardButtonText=\"Discard Changes\"\n confirmButtonText=\"Save\"\n />\n <ContextActions actions={contextActions} />\n </Panel>\n </>\n );\n }\n}\n\nNotebookPanel.propTypes = {\n fileStorage: PropTypes.shape({\n deleteFile: PropTypes.func.isRequired,\n loadFile: PropTypes.func.isRequired,\n saveFile: PropTypes.func.isRequired,\n }).isRequired,\n glContainer: GLPropTypes.Container.isRequired,\n glEventHub: GLPropTypes.EventHub.isRequired,\n isDashboardActive: PropTypes.bool,\n isPreview: PropTypes.bool,\n metadata: PropTypes.shape({\n id: PropTypes.string.isRequired,\n }).isRequired,\n session: PropTypes.shape({}),\n sessionLanguage: PropTypes.string,\n panelState: PropTypes.shape({\n settings: PropTypes.shape({}),\n fileMetadata: PropTypes.shape({}),\n }).isRequired,\n};\n\nNotebookPanel.defaultProps = {\n isDashboardActive: true,\n isPreview: false,\n session: null,\n sessionLanguage: null,\n};\n\nconst mapStateToProps = (state, ownProps) => {\n const fileStorage = getFileStorage(state);\n const sessionWrapper = getDashboardSessionWrapper(\n state,\n ownProps.localDashboardId\n );\n const { session, config: sessionConfig } = sessionWrapper ?? {};\n const { type: sessionLanguage } = sessionConfig ?? {};\n return {\n fileStorage,\n session,\n sessionLanguage,\n };\n};\n\nexport default connect(mapStateToProps, null, null, { forwardRef: true })(\n NotebookPanel\n);\n"],"file":"NotebookPanel.js"}
@@ -1,27 +1,5 @@
1
- function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
2
-
3
1
  function _extends() { _extends = Object.assign || 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); }
4
2
 
5
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
6
-
7
- function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
8
-
9
- function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
10
-
11
- function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
12
-
13
- function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
14
-
15
- function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
16
-
17
- function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
18
-
19
- function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
20
-
21
- function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
22
-
23
- function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
24
-
25
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; }
26
4
 
27
5
  /* eslint-disable react/jsx-props-no-spreading */
@@ -32,91 +10,79 @@ import PropTypes from 'prop-types';
32
10
  import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
33
11
  import { dhRefresh } from '@deephaven/icons';
34
12
  import { Tooltip } from '@deephaven/components';
35
- import IrisGridPanel from './IrisGridPanel';
13
+ import IrisGridPanel from "./IrisGridPanel.js";
36
14
  import "./PandasPanel.css";
37
15
  /**
38
16
  * Wraps and IrisGridPanel to add a refresh button for Pandas.
39
17
  */
40
18
 
41
- var PandasPanel = /*#__PURE__*/function (_Component) {
42
- _inherits(PandasPanel, _Component);
43
-
44
- var _super = _createSuper(PandasPanel);
45
-
46
- function PandasPanel(props) {
47
- var _this;
48
-
49
- _classCallCheck(this, PandasPanel);
50
-
51
- _this = _super.call(this, props);
52
- _this.irisGridRef = /*#__PURE__*/React.createRef();
53
- _this.buttonRef = /*#__PURE__*/React.createRef();
54
- _this.handleReload = _this.handleReload.bind(_assertThisInitialized(_this));
55
- _this.handleGridStateChange = _this.handleGridStateChange.bind(_assertThisInitialized(_this));
56
- _this.handlePanelStateUpdate = _this.handlePanelStateUpdate.bind(_assertThisInitialized(_this));
57
- var panelState = props.panelState;
58
- _this.state = {
19
+ class PandasPanel extends Component {
20
+ constructor(props) {
21
+ super(props);
22
+ this.irisGridRef = /*#__PURE__*/React.createRef();
23
+ this.buttonRef = /*#__PURE__*/React.createRef();
24
+ this.handleReload = this.handleReload.bind(this);
25
+ this.handleGridStateChange = this.handleGridStateChange.bind(this);
26
+ this.handlePanelStateUpdate = this.handlePanelStateUpdate.bind(this);
27
+ var {
28
+ panelState
29
+ } = props;
30
+ this.state = {
59
31
  shouldFocusGrid: false,
60
- panelState: panelState // Dehydrated panel state that can load this panel
32
+ panelState // Dehydrated panel state that can load this panel
61
33
 
62
34
  };
63
- return _this;
64
35
  }
65
36
 
66
- _createClass(PandasPanel, [{
67
- key: "handleReload",
68
- value: function handleReload() {
69
- this.irisGridRef.current.initModel();
70
- this.buttonRef.current.blur();
71
- this.setState({
72
- shouldFocusGrid: true
73
- });
74
- }
75
- }, {
76
- key: "handleGridStateChange",
77
- value: function handleGridStateChange() {
78
- var _this$irisGridRef$cur, _this$irisGridRef$cur2, _this$irisGridRef$cur3;
37
+ handleReload() {
38
+ this.irisGridRef.current.initModel();
39
+ this.buttonRef.current.blur();
40
+ this.setState({
41
+ shouldFocusGrid: true
42
+ });
43
+ }
79
44
 
80
- var shouldFocusGrid = this.state.shouldFocusGrid;
45
+ handleGridStateChange() {
46
+ var _this$irisGridRef$cur, _this$irisGridRef$cur2, _this$irisGridRef$cur3;
81
47
 
82
- if (shouldFocusGrid && (_this$irisGridRef$cur = this.irisGridRef.current) !== null && _this$irisGridRef$cur !== void 0 && (_this$irisGridRef$cur2 = _this$irisGridRef$cur.irisGrid) !== null && _this$irisGridRef$cur2 !== void 0 && (_this$irisGridRef$cur3 = _this$irisGridRef$cur2.current) !== null && _this$irisGridRef$cur3 !== void 0 && _this$irisGridRef$cur3.grid) {
83
- this.irisGridRef.current.irisGrid.current.grid.focus();
84
- this.setState({
85
- shouldFocusGrid: false
86
- });
87
- }
88
- }
89
- }, {
90
- key: "handlePanelStateUpdate",
91
- value: function handlePanelStateUpdate(panelState) {
48
+ var {
49
+ shouldFocusGrid
50
+ } = this.state;
51
+
52
+ if (shouldFocusGrid && (_this$irisGridRef$cur = this.irisGridRef.current) !== null && _this$irisGridRef$cur !== void 0 && (_this$irisGridRef$cur2 = _this$irisGridRef$cur.irisGrid) !== null && _this$irisGridRef$cur2 !== void 0 && (_this$irisGridRef$cur3 = _this$irisGridRef$cur2.current) !== null && _this$irisGridRef$cur3 !== void 0 && _this$irisGridRef$cur3.grid) {
53
+ this.irisGridRef.current.irisGrid.current.grid.focus();
92
54
  this.setState({
93
- panelState: panelState
55
+ shouldFocusGrid: false
94
56
  });
95
57
  }
96
- }, {
97
- key: "render",
98
- value: function render() {
99
- var props = _extends({}, this.props);
58
+ }
100
59
 
101
- return /*#__PURE__*/React.createElement(IrisGridPanel, _extends({
102
- ref: this.irisGridRef,
103
- onStateChange: this.handleGridStateChange,
104
- onPanelStateUpdate: this.handlePanelStateUpdate
105
- }, props), /*#__PURE__*/React.createElement("button", {
106
- ref: this.buttonRef,
107
- type: "button",
108
- className: "btn btn-primary btn-pandas",
109
- onClick: this.handleReload
110
- }, "pandas dataframe", /*#__PURE__*/React.createElement("span", null, /*#__PURE__*/React.createElement(FontAwesomeIcon, {
111
- icon: dhRefresh,
112
- transform: "shrink-1",
113
- className: "mr-1"
114
- }), "Reload"), /*#__PURE__*/React.createElement(Tooltip, null, "Click to refresh pandas dataframe, updates do not occur automatically.")));
115
- }
116
- }]);
60
+ handlePanelStateUpdate(panelState) {
61
+ this.setState({
62
+ panelState
63
+ });
64
+ }
65
+
66
+ render() {
67
+ var props = _extends({}, this.props);
68
+
69
+ return /*#__PURE__*/React.createElement(IrisGridPanel, _extends({
70
+ ref: this.irisGridRef,
71
+ onStateChange: this.handleGridStateChange,
72
+ onPanelStateUpdate: this.handlePanelStateUpdate
73
+ }, props), /*#__PURE__*/React.createElement("button", {
74
+ ref: this.buttonRef,
75
+ type: "button",
76
+ className: "btn btn-primary btn-pandas",
77
+ onClick: this.handleReload
78
+ }, "pandas dataframe", /*#__PURE__*/React.createElement("span", null, /*#__PURE__*/React.createElement(FontAwesomeIcon, {
79
+ icon: dhRefresh,
80
+ transform: "shrink-1",
81
+ className: "mr-1"
82
+ }), "Reload"), /*#__PURE__*/React.createElement(Tooltip, null, "Click to refresh pandas dataframe, updates do not occur automatically.")));
83
+ }
117
84
 
118
- return PandasPanel;
119
- }(Component);
85
+ }
120
86
 
121
87
  _defineProperty(PandasPanel, "COMPONENT", 'PandasPanel');
122
88
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/panels/PandasPanel.jsx"],"names":["React","Component","PropTypes","FontAwesomeIcon","dhRefresh","Tooltip","IrisGridPanel","PandasPanel","props","irisGridRef","createRef","buttonRef","handleReload","bind","handleGridStateChange","handlePanelStateUpdate","panelState","state","shouldFocusGrid","current","initModel","blur","setState","irisGrid","grid","focus","propTypes","shape","defaultProps"],"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;AACA,OAAOC,aAAP,MAA0B,iBAA1B;AACA;AAEA;AACA;AACA;;IACMC,W;;;;;AAGJ,uBAAYC,KAAZ,EAAmB;AAAA;;AAAA;;AACjB,8BAAMA,KAAN;AAEA,UAAKC,WAAL,gBAAmBT,KAAK,CAACU,SAAN,EAAnB;AACA,UAAKC,SAAL,gBAAiBX,KAAK,CAACU,SAAN,EAAjB;AAEA,UAAKE,YAAL,GAAoB,MAAKA,YAAL,CAAkBC,IAAlB,+BAApB;AACA,UAAKC,qBAAL,GAA6B,MAAKA,qBAAL,CAA2BD,IAA3B,+BAA7B;AACA,UAAKE,sBAAL,GAA8B,MAAKA,sBAAL,CAA4BF,IAA5B,+BAA9B;AAEA,QAAQG,UAAR,GAAuBR,KAAvB,CAAQQ,UAAR;AACA,UAAKC,KAAL,GAAa;AACXC,MAAAA,eAAe,EAAE,KADN;AAEXF,MAAAA,UAAU,EAAVA,UAFW,CAEC;;AAFD,KAAb;AAXiB;AAelB;;;;WAED,wBAAe;AACb,WAAKP,WAAL,CAAiBU,OAAjB,CAAyBC,SAAzB;AACA,WAAKT,SAAL,CAAeQ,OAAf,CAAuBE,IAAvB;AACA,WAAKC,QAAL,CAAc;AACZJ,QAAAA,eAAe,EAAE;AADL,OAAd;AAGD;;;WAED,iCAAwB;AAAA;;AACtB,UAAQA,eAAR,GAA4B,KAAKD,KAAjC,CAAQC,eAAR;;AACA,UAAIA,eAAe,6BAAI,KAAKT,WAAL,CAAiBU,OAArB,4EAAI,sBAA0BI,QAA9B,6EAAI,uBAAoCJ,OAAxC,mDAAI,uBAA6CK,IAApE,EAA0E;AACxE,aAAKf,WAAL,CAAiBU,OAAjB,CAAyBI,QAAzB,CAAkCJ,OAAlC,CAA0CK,IAA1C,CAA+CC,KAA/C;AACA,aAAKH,QAAL,CAAc;AACZJ,UAAAA,eAAe,EAAE;AADL,SAAd;AAGD;AACF;;;WAED,gCAAuBF,UAAvB,EAAmC;AACjC,WAAKM,QAAL,CAAc;AACZN,QAAAA,UAAU,EAAVA;AADY,OAAd;AAGD;;;WAED,kBAAS;AACP,UAAWR,KAAX,gBAAqB,KAAKA,KAA1B;;AAEA,0BACE,oBAAC,aAAD;AACE,QAAA,GAAG,EAAE,KAAKC,WADZ;AAEE,QAAA,aAAa,EAAE,KAAKK,qBAFtB;AAGE,QAAA,kBAAkB,EAAE,KAAKC;AAH3B,SAIMP,KAJN,gBAME;AACE,QAAA,GAAG,EAAE,KAAKG,SADZ;AAEE,QAAA,IAAI,EAAC,QAFP;AAGE,QAAA,SAAS,EAAC,4BAHZ;AAIE,QAAA,OAAO,EAAE,KAAKC;AAJhB,0CAOE,+CACE,oBAAC,eAAD;AACE,QAAA,IAAI,EAAER,SADR;AAEE,QAAA,SAAS,EAAC,UAFZ;AAGE,QAAA,SAAS,EAAC;AAHZ,QADF,WAPF,eAeE,oBAAC,OAAD,iFAfF,CANF,CADF;AA6BD;;;;EA5EuBH,S;;gBAApBM,W,eACe,a;;AA8ErBA,WAAW,CAACmB,SAAZ,GAAwB;AACtBV,EAAAA,UAAU,EAAEd,SAAS,CAACyB,KAAV,CAAgB,EAAhB;AADU,CAAxB;AAIApB,WAAW,CAACqB,YAAZ,GAA2B;AACzBZ,EAAAA,UAAU,EAAE;AADa,CAA3B;AAIA,eAAeT,WAAf","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"],"file":"PandasPanel.js"}
1
+ {"version":3,"sources":["../../src/panels/PandasPanel.jsx"],"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"],"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;AAGlCO,EAAAA,WAAW,CAACC,KAAD,EAAQ;AACjB,UAAMA,KAAN;AAEA,SAAKC,WAAL,gBAAmBV,KAAK,CAACW,SAAN,EAAnB;AACA,SAAKC,SAAL,gBAAiBZ,KAAK,CAACW,SAAN,EAAjB;AAEA,SAAKE,YAAL,GAAoB,KAAKA,YAAL,CAAkBC,IAAlB,CAAuB,IAAvB,CAApB;AACA,SAAKC,qBAAL,GAA6B,KAAKA,qBAAL,CAA2BD,IAA3B,CAAgC,IAAhC,CAA7B;AACA,SAAKE,sBAAL,GAA8B,KAAKA,sBAAL,CAA4BF,IAA5B,CAAiC,IAAjC,CAA9B;AAEA,QAAM;AAAEG,MAAAA;AAAF,QAAiBR,KAAvB;AACA,SAAKS,KAAL,GAAa;AACXC,MAAAA,eAAe,EAAE,KADN;AAEXF,MAAAA,UAFW,CAEC;;AAFD,KAAb;AAID;;AAEDJ,EAAAA,YAAY,GAAG;AACb,SAAKH,WAAL,CAAiBU,OAAjB,CAAyBC,SAAzB;AACA,SAAKT,SAAL,CAAeQ,OAAf,CAAuBE,IAAvB;AACA,SAAKC,QAAL,CAAc;AACZJ,MAAAA,eAAe,EAAE;AADL,KAAd;AAGD;;AAEDJ,EAAAA,qBAAqB,GAAG;AAAA;;AACtB,QAAM;AAAEI,MAAAA;AAAF,QAAsB,KAAKD,KAAjC;;AACA,QAAIC,eAAe,6BAAI,KAAKT,WAAL,CAAiBU,OAArB,4EAAI,sBAA0BI,QAA9B,6EAAI,uBAAoCJ,OAAxC,mDAAI,uBAA6CK,IAApE,EAA0E;AACxE,WAAKf,WAAL,CAAiBU,OAAjB,CAAyBI,QAAzB,CAAkCJ,OAAlC,CAA0CK,IAA1C,CAA+CC,KAA/C;AACA,WAAKH,QAAL,CAAc;AACZJ,QAAAA,eAAe,EAAE;AADL,OAAd;AAGD;AACF;;AAEDH,EAAAA,sBAAsB,CAACC,UAAD,EAAa;AACjC,SAAKM,QAAL,CAAc;AACZN,MAAAA;AADY,KAAd;AAGD;;AAEDU,EAAAA,MAAM,GAAG;AACP,QAAWlB,KAAX,gBAAqB,KAAKA,KAA1B;;AAEA,wBACE,oBAAC,aAAD;AACE,MAAA,GAAG,EAAE,KAAKC,WADZ;AAEE,MAAA,aAAa,EAAE,KAAKK,qBAFtB;AAGE,MAAA,kBAAkB,EAAE,KAAKC;AAH3B,OAIMP,KAJN,gBAME;AACE,MAAA,GAAG,EAAE,KAAKG,SADZ;AAEE,MAAA,IAAI,EAAC,QAFP;AAGE,MAAA,SAAS,EAAC,4BAHZ;AAIE,MAAA,OAAO,EAAE,KAAKC;AAJhB,wCAOE,+CACE,oBAAC,eAAD;AACE,MAAA,IAAI,EAAET,SADR;AAEE,MAAA,SAAS,EAAC,UAFZ;AAGE,MAAA,SAAS,EAAC;AAHZ,MADF,WAPF,eAeE,oBAAC,OAAD,iFAfF,CANF,CADF;AA6BD;;AA5EiC;;gBAA9BG,W,eACe,a;;AA8ErBA,WAAW,CAACqB,SAAZ,GAAwB;AACtBX,EAAAA,UAAU,EAAEf,SAAS,CAAC2B,KAAV,CAAgB,EAAhB;AADU,CAAxB;AAIAtB,WAAW,CAACuB,YAAZ,GAA2B;AACzBb,EAAAA,UAAU,EAAE;AADa,CAA3B;AAIA,eAAeV,WAAf","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"],"file":"PandasPanel.js"}