@deephaven/dashboard-core-plugins 0.19.2-beta.0 → 0.19.2-beta.4
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/ConsolePlugin.d.ts +4 -0
- package/dist/ConsolePlugin.d.ts.map +1 -1
- package/dist/ConsolePlugin.js +12 -12
- package/dist/ConsolePlugin.js.map +1 -1
- package/dist/MarkdownPlugin.d.ts.map +1 -1
- package/dist/MarkdownPlugin.js +3 -3
- package/dist/MarkdownPlugin.js.map +1 -1
- package/dist/controls/dropdown-filter/DropdownFilter.js +1 -1
- package/dist/controls/dropdown-filter/DropdownFilter.js.map +1 -1
- package/dist/controls/input-filter/InputFilter.d.ts.map +1 -1
- package/dist/controls/input-filter/InputFilter.js +1 -1
- package/dist/controls/input-filter/InputFilter.js.map +1 -1
- package/dist/controls/markdown/MarkdownContainer.js +1 -1
- package/dist/controls/markdown/MarkdownContainer.js.map +1 -1
- package/dist/controls/markdown/MarkdownEditor.d.ts.map +1 -1
- package/dist/controls/markdown/MarkdownEditor.js +1 -1
- package/dist/controls/markdown/MarkdownEditor.js.map +1 -1
- package/dist/linker/Linker.d.ts +1 -1
- package/dist/linker/Linker.d.ts.map +1 -1
- package/dist/linker/Linker.js +6 -6
- package/dist/linker/Linker.js.map +1 -1
- package/dist/linker/LinkerOverlayContent.js +1 -1
- package/dist/linker/LinkerOverlayContent.js.map +1 -1
- package/dist/linker/LinkerUtils.js +1 -1
- package/dist/linker/LinkerUtils.js.map +1 -1
- package/dist/panels/ChartFilterOverlay.d.ts.map +1 -1
- package/dist/panels/ChartFilterOverlay.js +2 -2
- package/dist/panels/ChartFilterOverlay.js.map +1 -1
- package/dist/panels/ChartPanel.d.ts.map +1 -1
- package/dist/panels/ChartPanel.js +6 -6
- package/dist/panels/ChartPanel.js.map +1 -1
- package/dist/panels/ConsolePanel.d.ts.map +1 -1
- package/dist/panels/ConsolePanel.js +6 -8
- package/dist/panels/ConsolePanel.js.map +1 -1
- package/dist/panels/DropdownFilterPanel.js +2 -2
- package/dist/panels/DropdownFilterPanel.js.map +1 -1
- package/dist/panels/FileExplorerPanel.js +1 -1
- package/dist/panels/FileExplorerPanel.js.map +1 -1
- package/dist/panels/FilterSetManager.js +1 -1
- package/dist/panels/FilterSetManager.js.map +1 -1
- package/dist/panels/InputFilterPanel.js +1 -1
- package/dist/panels/InputFilterPanel.js.map +1 -1
- package/dist/panels/IrisGridPanel.d.ts +1 -1
- package/dist/panels/IrisGridPanel.d.ts.map +1 -1
- package/dist/panels/IrisGridPanel.js +9 -11
- package/dist/panels/IrisGridPanel.js.map +1 -1
- package/dist/panels/LogPanel.js +2 -2
- package/dist/panels/LogPanel.js.map +1 -1
- package/dist/panels/MarkdownNotebook.d.ts +1 -1
- package/dist/panels/MarkdownNotebook.d.ts.map +1 -1
- package/dist/panels/MarkdownNotebook.js +3 -3
- package/dist/panels/MarkdownNotebook.js.map +1 -1
- package/dist/panels/MarkdownPanel.d.ts.map +1 -1
- package/dist/panels/MarkdownPanel.js +4 -4
- package/dist/panels/MarkdownPanel.js.map +1 -1
- package/dist/panels/NotebookPanel.d.ts.map +1 -1
- package/dist/panels/NotebookPanel.js +8 -10
- package/dist/panels/NotebookPanel.js.map +1 -1
- package/dist/panels/Panel.d.ts +1 -1
- package/dist/panels/Panel.d.ts.map +1 -1
- package/dist/panels/Panel.js +3 -3
- package/dist/panels/Panel.js.map +1 -1
- package/dist/panels/PanelContextMenu.d.ts.map +1 -1
- package/dist/panels/PanelContextMenu.js +8 -3
- package/dist/panels/PanelContextMenu.js.map +1 -1
- package/dist/panels/RenameDialog.d.ts.map +1 -1
- package/dist/panels/RenameDialog.js +2 -4
- package/dist/panels/RenameDialog.js.map +1 -1
- package/package.json +19 -19
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NotebookPanel.js","names":["React","Component","ReactDOM","memoize","connect","FontAwesomeIcon","BasicModal","ContextActions","DropdownMenu","Tooltip","GLOBAL_SHORTCUTS","ScriptEditor","ScriptEditorUtils","SHORTCUTS","FileUtils","NewItemModal","vsSave","vsKebabVertical","dhFileSearch","vsPlay","dhRunSelection","getFileStorage","classNames","debounce","Log","assertNotNull","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","tabInitOnce","shouldPromptClose","isDashboardActive","session","sessionLanguage","panelState","settings","value","language","fileMetadata","isPreview","hasFileId","itemName","hasPath","isUnsaved","changeCount","state","undefined","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","content","catch","save","saveContent","updateSavedChangeCount","saveFile","basename","remove","initialSettings","dehydratedValue","dehydratedSettings","copyName","getCopyFileName","createNotebook","e","debug2","removePreviewStatus","isUndoing","isRedoing","toggleFind","event","notebooksUrl","href","currentTarget","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","portal","find","createPortal","RUN","getDisplayText","RUN_SELECTED","POPPER_OPTIONS","placement","mapStateToProps","ownProps","sessionWrapper","localDashboardId","config","sessionConfig","type","forwardRef"],"sources":["../../src/panels/NotebookPanel.tsx"],"sourcesContent":["// Wrapper for the Notebook for use in a golden layout container\nimport React, { Component, MouseEvent, ReactElement } from 'react';\nimport ReactDOM from 'react-dom';\nimport memoize from 'memoize-one';\nimport { connect } from 'react-redux';\nimport type { editor } from 'monaco-editor';\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 {\n FileStorage,\n FileUtils,\n NewItemModal,\n File,\n} from '@deephaven/file-explorer';\nimport {\n vsSave,\n vsKebabVertical,\n dhFileSearch,\n vsPlay,\n dhRunSelection,\n} from '@deephaven/icons';\nimport { getFileStorage, RootState } from '@deephaven/redux';\nimport classNames from 'classnames';\nimport debounce from 'lodash.debounce';\nimport Log from '@deephaven/log';\nimport { assertNotNull, Pending, PromiseUtils } from '@deephaven/utils';\nimport type { Container, EventEmitter, Tab } from '@deephaven/golden-layout';\nimport { IdeSession } from '@deephaven/jsapi-shim';\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\ninterface Metadata {\n id: string;\n}\n\ninterface Settings {\n language: string;\n value: string | null;\n}\n\ninterface FileMetadata {\n itemName: string;\n id: string;\n}\n\ninterface PanelState {\n isPreview?: boolean;\n settings: Settings;\n fileMetadata: FileMetadata | null;\n}\n\ninterface NotebookPanelProps {\n fileStorage: FileStorage;\n glContainer: Container;\n glEventHub: EventEmitter;\n isDashboardActive: boolean;\n isPreview: boolean;\n metadata: Metadata;\n session: IdeSession;\n sessionLanguage: string;\n panelState: PanelState;\n notebooksUrl: string;\n}\n\ninterface NotebookPanelState {\n error?: {\n message?: string | undefined;\n };\n isDashboardActive: boolean;\n isFocused: boolean;\n isLoading: boolean;\n isLoaded: boolean;\n isPreview: boolean;\n\n savedChangeCount: number;\n changeCount: number;\n fileMetadata: FileMetadata | null;\n settings: Settings;\n\n session?: IdeSession;\n sessionLanguage?: string;\n\n // eslint-disable-next-line react/no-unused-state\n panelState: PanelState;\n\n showCloseModal: boolean;\n showSaveAsModal: boolean;\n\n scriptCode: string;\n\n itemName?: string;\n}\n\nclass NotebookPanel extends Component<NotebookPanelProps, NotebookPanelState> {\n static COMPONENT = 'NotebookPanel';\n\n static POPPER_OPTIONS = { placement: 'bottom-end' } as const;\n\n static DEFAULT_NAME = 'Untitled';\n\n static handleError(error: unknown): void {\n if (PromiseUtils.isCanceled(error)) {\n return;\n }\n log.error(error);\n }\n\n static defaultProps = {\n isDashboardActive: true,\n isPreview: false,\n session: null,\n sessionLanguage: null,\n };\n\n static languageFromFileName(fileName: string): string | null {\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: NotebookPanelProps) {\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\n this.tabInitOnce = false;\n this.shouldPromptClose = true;\n\n const { isDashboardActive, session, sessionLanguage, panelState } = props;\n\n let settings: { value: string | null; language: string } = {\n value: '',\n language: '',\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: undefined,\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(\n prevProps: NotebookPanelProps,\n prevState: NotebookPanelState\n ): void {\n const { isPreview } = this.state;\n if (isPreview !== prevState.isPreview) {\n this.setPreviewStatus();\n }\n }\n\n componentWillUnmount(): void {\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 pending: Pending;\n\n debouncedSavePanelState;\n\n debouncedLoad;\n\n notebook: ScriptEditor | null;\n\n tabTitleElement: Element | null;\n\n tabInitOnce: boolean;\n\n shouldPromptClose: boolean;\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: Tab): void {\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 return true;\n };\n }\n\n initTabClasses(tab: Tab) {\n const tabElement = tab.element.get(0);\n assertNotNull(tabElement);\n const titleElement = tabElement.querySelector('.lm_title');\n this.tabTitleElement = titleElement;\n titleElement?.classList.add('notebook-title');\n this.setPreviewStatus();\n }\n\n getNotebookValue(): string | null {\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(): void {\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: string): void {\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: FileMetadata, isPreview: boolean): void {\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: string, title: string): void {\n const { glEventHub } = this.props;\n glEventHub.emit(NotebookEvent.RENAME, id, title);\n }\n\n load() {\n const { fileMetadata, settings } = this.state;\n assertNotNull(fileMetadata);\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 Returns true if save has begun, false if user needed to be prompted\n */\n save(): boolean {\n const { fileMetadata } = this.state;\n if (fileMetadata && FileUtils.hasPath(fileMetadata.itemName)) {\n const content = this.getNotebookValue();\n if (content != null) {\n this.saveContent(fileMetadata.itemName, content);\n return true;\n }\n return false;\n }\n\n this.setState({ showSaveAsModal: true });\n return false;\n }\n\n /**\n * Update existing file content\n * @param filename The name of the file\n * @param content New file content\n */\n saveContent(filename: string, content: string): void {\n log.debug('saveContent', filename, content);\n this.updateSavedChangeCount();\n const { fileStorage } = this.props;\n this.pending\n .add(fileStorage.saveFile({ filename, content, basename: filename }))\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(): void {\n this.shouldPromptClose = false;\n this.setState({ showCloseModal: false });\n const { glContainer } = this.props;\n glContainer.close();\n }\n\n handleCloseSave(): void {\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(): void {\n this.shouldPromptClose = true;\n this.setState({ showCloseModal: false });\n }\n\n handleCopy(): void {\n const { fileMetadata, settings } = this.state;\n assertNotNull(fileMetadata);\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 ?? undefined);\n }\n\n handleEditorChange(e: editor.IModelContentChangedEvent): void {\n log.debug2('handleEditorChanged', e);\n\n this.removePreviewStatus();\n\n this.setState(state => {\n const { changeCount, savedChangeCount } = state;\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, savedChangeCount };\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, savedChangeCount };\n });\n this.debouncedSavePanelState();\n }\n\n handleFind() {\n if (this.notebook) {\n this.notebook.toggleFind();\n }\n }\n\n handleBlur(): void {\n log.debug('handleBlur');\n this.setState({ isFocused: false });\n }\n\n handleFocus(): void {\n log.debug('handleFocus');\n this.setState({ isFocused: true });\n }\n\n /**\n * @param event The click event from clicking on the link\n */\n handleLinkClick(event: MouseEvent<HTMLAnchorElement>) {\n const { notebooksUrl, session, sessionLanguage } = this.props;\n const { href } = event.currentTarget;\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: undefined,\n isLoaded: true,\n isLoading: false,\n });\n }\n\n handleLoadError(errorParam: { message?: string | undefined }) {\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: 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 oldMetadata &&\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: unknown) {\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: string): void {\n log.debug('handleSaveAsSubmit', name);\n const { fileMetadata } = this.state;\n if (!fileMetadata) {\n return;\n }\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: string, newName: string) {\n const { fileMetadata } = this.state;\n if (fileMetadata && fileMetadata.id === oldName) {\n this.setState({ fileMetadata: { id: newName, itemName: newName } });\n this.debouncedSavePanelState();\n }\n }\n\n handleResize(): void {\n this.notebook?.updateDimensions();\n }\n\n handleRunCommand(command?: string): void {\n this.runCommand(command);\n }\n\n handleRunAll(): void {\n if (!this.notebook) {\n log.error('Editor is not initialized.');\n return;\n }\n this.runCommand(this.notebook.getValue() ?? undefined);\n }\n\n handleRunSelected(): void {\n if (!this.notebook) {\n log.error('Editor is not initialized.');\n return;\n }\n this.runCommand(this.notebook.getSelectedCommand());\n }\n\n handleSessionOpened(\n session: IdeSession,\n { language }: { language: string }\n ): void {\n this.setState({\n session,\n sessionLanguage: language,\n });\n }\n\n handleSessionClosed(): void {\n this.setState({\n session: undefined,\n sessionLanguage: undefined,\n });\n }\n\n handleShow(): void {\n log.debug('handleShow');\n this.notebook?.updateDimensions();\n }\n\n handleShowRename(): void {\n this.setState({ showSaveAsModal: true });\n }\n\n handleTab(tab: Tab): void {\n log.debug('NotebookPanel tab event', tab);\n this.initTab(tab);\n }\n\n handleTabFocus(...args: unknown[]): void {\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(): void {\n log.debug('handleTabBlur');\n this.setState({\n isDashboardActive: false,\n });\n }\n\n handlePanelTabClick(): void {\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 src The link to transform\n * @returns String the transformed link\n */\n handleTransformLinkUri(src: string): string {\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(): void {\n requestAnimationFrame(() => {\n if (this.notebook) {\n this.notebook.focus();\n }\n });\n }\n\n createNotebook(\n itemName: string,\n language: string | undefined,\n content = ''\n ): void {\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?: string): void {\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(): void {\n this.setState(({ isPreview }) => {\n if (isPreview) {\n const { fileMetadata } = this.state;\n if (fileMetadata) {\n this.registerFileMetadata(fileMetadata, false);\n }\n return { isPreview: false };\n }\n return null;\n });\n }\n\n render(): ReactElement {\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 const portal = tab?.element.find('.lm_title_before').get(0);\n\n return (\n <>\n {portal &&\n ReactDOM.createPortal(\n <span\n className={classNames('editor-unsaved-indicator', {\n 'is-unsaved': changeCount !== savedChangeCount,\n })}\n />,\n portal // 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\nconst mapStateToProps = (\n state: RootState,\n ownProps: { localDashboardId: string }\n) => {\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
|
+
{"version":3,"file":"NotebookPanel.js","names":["React","Component","ReactDOM","memoize","connect","FontAwesomeIcon","BasicModal","ContextActions","DropdownMenu","Tooltip","GLOBAL_SHORTCUTS","ScriptEditor","ScriptEditorUtils","SHORTCUTS","FileUtils","NewItemModal","vsSave","vsKebabVertical","dhFileSearch","vsPlay","dhRunSelection","getFileStorage","classNames","debounce","Log","assertNotNull","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","tabInitOnce","shouldPromptClose","isDashboardActive","session","sessionLanguage","panelState","settings","value","language","fileMetadata","isPreview","hasFileId","hasPath","itemName","isUnsaved","length","changeCount","state","undefined","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","content","catch","save","saveContent","updateSavedChangeCount","saveFile","basename","remove","initialSettings","dehydratedValue","dehydratedSettings","copyName","getCopyFileName","createNotebook","e","debug2","removePreviewStatus","isUndoing","isRedoing","toggleFind","event","notebooksUrl","href","currentTarget","startsWith","stopPropagation","preventDefault","notebookPath","substring","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","portal","find","createPortal","RUN","getDisplayText","RUN_SELECTED","POPPER_OPTIONS","placement","mapStateToProps","ownProps","sessionWrapper","localDashboardId","config","sessionConfig","type","forwardRef"],"sources":["../../src/panels/NotebookPanel.tsx"],"sourcesContent":["// Wrapper for the Notebook for use in a golden layout container\nimport React, { Component, MouseEvent, ReactElement } from 'react';\nimport ReactDOM from 'react-dom';\nimport memoize from 'memoize-one';\nimport { connect } from 'react-redux';\nimport type { editor } from 'monaco-editor';\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 {\n FileStorage,\n FileUtils,\n NewItemModal,\n File,\n} from '@deephaven/file-explorer';\nimport {\n vsSave,\n vsKebabVertical,\n dhFileSearch,\n vsPlay,\n dhRunSelection,\n} from '@deephaven/icons';\nimport { getFileStorage, RootState } from '@deephaven/redux';\nimport classNames from 'classnames';\nimport debounce from 'lodash.debounce';\nimport Log from '@deephaven/log';\nimport { assertNotNull, Pending, PromiseUtils } from '@deephaven/utils';\nimport type { Container, EventEmitter, Tab } from '@deephaven/golden-layout';\nimport { IdeSession } from '@deephaven/jsapi-shim';\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\ninterface Metadata {\n id: string;\n}\n\ninterface Settings {\n language: string;\n value: string | null;\n}\n\ninterface FileMetadata {\n itemName: string;\n id: string;\n}\n\ninterface PanelState {\n isPreview?: boolean;\n settings: Settings;\n fileMetadata: FileMetadata | null;\n}\n\ninterface NotebookPanelProps {\n fileStorage: FileStorage;\n glContainer: Container;\n glEventHub: EventEmitter;\n isDashboardActive: boolean;\n isPreview: boolean;\n metadata: Metadata;\n session: IdeSession;\n sessionLanguage: string;\n panelState: PanelState;\n notebooksUrl: string;\n}\n\ninterface NotebookPanelState {\n error?: {\n message?: string | undefined;\n };\n isDashboardActive: boolean;\n isFocused: boolean;\n isLoading: boolean;\n isLoaded: boolean;\n isPreview: boolean;\n\n savedChangeCount: number;\n changeCount: number;\n fileMetadata: FileMetadata | null;\n settings: Settings;\n\n session?: IdeSession;\n sessionLanguage?: string;\n\n // eslint-disable-next-line react/no-unused-state\n panelState: PanelState;\n\n showCloseModal: boolean;\n showSaveAsModal: boolean;\n\n scriptCode: string;\n\n itemName?: string;\n}\n\nclass NotebookPanel extends Component<NotebookPanelProps, NotebookPanelState> {\n static COMPONENT = 'NotebookPanel';\n\n static POPPER_OPTIONS = { placement: 'bottom-end' } as const;\n\n static DEFAULT_NAME = 'Untitled';\n\n static handleError(error: unknown): void {\n if (PromiseUtils.isCanceled(error)) {\n return;\n }\n log.error(error);\n }\n\n static defaultProps = {\n isDashboardActive: true,\n isPreview: false,\n session: null,\n sessionLanguage: null,\n };\n\n static languageFromFileName(fileName: string): string | null {\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: NotebookPanelProps) {\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\n this.tabInitOnce = false;\n this.shouldPromptClose = true;\n\n const { isDashboardActive, session, sessionLanguage, panelState } = props;\n\n let settings: { value: string | null; language: string } = {\n value: '',\n language: '',\n };\n let fileMetadata = null;\n let { isPreview } = props;\n if (panelState != null) {\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 != null && 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 === true && settings.value != null) ||\n (!hasFileId && settings.value != null && settings.value.length > 0);\n const changeCount = isUnsaved ? 1 : 0;\n\n this.state = {\n error: undefined,\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 != null) this.initTab(tab);\n this.initNotebookContent();\n glEventHub.on(NotebookEvent.RENAME_FILE, this.handleRenameFile);\n glContainer.on('tabClicked', this.handlePanelTabClick);\n }\n\n componentDidUpdate(\n prevProps: NotebookPanelProps,\n prevState: NotebookPanelState\n ): void {\n const { isPreview } = this.state;\n if (isPreview !== prevState.isPreview) {\n this.setPreviewStatus();\n }\n }\n\n componentWillUnmount(): void {\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 pending: Pending;\n\n debouncedSavePanelState;\n\n debouncedLoad;\n\n notebook: ScriptEditor | null;\n\n tabTitleElement: Element | null;\n\n tabInitOnce: boolean;\n\n shouldPromptClose: boolean;\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: Tab): void {\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 return true;\n };\n }\n\n initTabClasses(tab: Tab) {\n const tabElement = tab.element.get(0);\n assertNotNull(tabElement);\n const titleElement = tabElement.querySelector('.lm_title');\n this.tabTitleElement = titleElement;\n titleElement?.classList.add('notebook-title');\n this.setPreviewStatus();\n }\n\n getNotebookValue(): string | null {\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(): void {\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: string): void {\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: FileMetadata, isPreview: boolean): void {\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: string, title: string): void {\n const { glEventHub } = this.props;\n glEventHub.emit(NotebookEvent.RENAME, id, title);\n }\n\n load() {\n const { fileMetadata, settings } = this.state;\n assertNotNull(fileMetadata);\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 Returns true if save has begun, false if user needed to be prompted\n */\n save(): boolean {\n const { fileMetadata } = this.state;\n if (fileMetadata && FileUtils.hasPath(fileMetadata.itemName)) {\n const content = this.getNotebookValue();\n if (content != null) {\n this.saveContent(fileMetadata.itemName, content);\n return true;\n }\n return false;\n }\n\n this.setState({ showSaveAsModal: true });\n return false;\n }\n\n /**\n * Update existing file content\n * @param filename The name of the file\n * @param content New file content\n */\n saveContent(filename: string, content: string): void {\n log.debug('saveContent', filename, content);\n this.updateSavedChangeCount();\n const { fileStorage } = this.props;\n this.pending\n .add(fileStorage.saveFile({ filename, content, basename: filename }))\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(): void {\n this.shouldPromptClose = false;\n this.setState({ showCloseModal: false });\n const { glContainer } = this.props;\n glContainer.close();\n }\n\n handleCloseSave(): void {\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(): void {\n this.shouldPromptClose = true;\n this.setState({ showCloseModal: false });\n }\n\n handleCopy(): void {\n const { fileMetadata, settings } = this.state;\n assertNotNull(fileMetadata);\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 ?? undefined);\n }\n\n handleEditorChange(e: editor.IModelContentChangedEvent): void {\n log.debug2('handleEditorChanged', e);\n\n this.removePreviewStatus();\n\n this.setState(state => {\n const { changeCount, savedChangeCount } = state;\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, savedChangeCount };\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, savedChangeCount };\n });\n this.debouncedSavePanelState();\n }\n\n handleFind() {\n if (this.notebook) {\n this.notebook.toggleFind();\n }\n }\n\n handleBlur(): void {\n log.debug('handleBlur');\n this.setState({ isFocused: false });\n }\n\n handleFocus(): void {\n log.debug('handleFocus');\n this.setState({ isFocused: true });\n }\n\n /**\n * @param event The click event from clicking on the link\n */\n handleLinkClick(event: MouseEvent<HTMLAnchorElement>) {\n const { notebooksUrl, session, sessionLanguage } = this.props;\n const { href } = event.currentTarget;\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: undefined,\n isLoaded: true,\n isLoading: false,\n });\n }\n\n handleLoadError(errorParam: { message?: string | undefined }) {\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: 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 oldMetadata &&\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: unknown) {\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: string): void {\n log.debug('handleSaveAsSubmit', name);\n const { fileMetadata } = this.state;\n if (!fileMetadata) {\n return;\n }\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: string, newName: string) {\n const { fileMetadata } = this.state;\n if (fileMetadata && fileMetadata.id === oldName) {\n this.setState({ fileMetadata: { id: newName, itemName: newName } });\n this.debouncedSavePanelState();\n }\n }\n\n handleResize(): void {\n this.notebook?.updateDimensions();\n }\n\n handleRunCommand(command?: string): void {\n this.runCommand(command);\n }\n\n handleRunAll(): void {\n if (!this.notebook) {\n log.error('Editor is not initialized.');\n return;\n }\n this.runCommand(this.notebook.getValue() ?? undefined);\n }\n\n handleRunSelected(): void {\n if (!this.notebook) {\n log.error('Editor is not initialized.');\n return;\n }\n this.runCommand(this.notebook.getSelectedCommand());\n }\n\n handleSessionOpened(\n session: IdeSession,\n { language }: { language: string }\n ): void {\n this.setState({\n session,\n sessionLanguage: language,\n });\n }\n\n handleSessionClosed(): void {\n this.setState({\n session: undefined,\n sessionLanguage: undefined,\n });\n }\n\n handleShow(): void {\n log.debug('handleShow');\n this.notebook?.updateDimensions();\n }\n\n handleShowRename(): void {\n this.setState({ showSaveAsModal: true });\n }\n\n handleTab(tab: Tab): void {\n log.debug('NotebookPanel tab event', tab);\n this.initTab(tab);\n }\n\n handleTabFocus(...args: unknown[]): void {\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(): void {\n log.debug('handleTabBlur');\n this.setState({\n isDashboardActive: false,\n });\n }\n\n handlePanelTabClick(): void {\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 src The link to transform\n * @returns String the transformed link\n */\n handleTransformLinkUri(src: string): string {\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 === undefined) {\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(): void {\n requestAnimationFrame(() => {\n if (this.notebook) {\n this.notebook.focus();\n }\n });\n }\n\n createNotebook(\n itemName: string,\n language: string | undefined,\n content = ''\n ): void {\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?: string): void {\n if (command === undefined) {\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(): void {\n this.setState(({ isPreview }) => {\n if (isPreview) {\n const { fileMetadata } = this.state;\n if (fileMetadata) {\n this.registerFileMetadata(fileMetadata, false);\n }\n return { isPreview: false };\n }\n return null;\n });\n }\n\n render(): ReactElement {\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 const portal = tab?.element.find('.lm_title_before').get(0);\n\n return (\n <>\n {portal &&\n ReactDOM.createPortal(\n <span\n className={classNames('editor-unsaved-indicator', {\n 'is-unsaved': changeCount !== savedChangeCount,\n })}\n />,\n portal // 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 != null && (\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 != null && (\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\nconst mapStateToProps = (\n state: RootState,\n ownProps: { localDashboardId: string }\n) => {\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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"}
|
package/dist/panels/Panel.d.ts
CHANGED
|
@@ -90,7 +90,7 @@ declare class Panel extends PureComponent<PanelProps, PanelState> {
|
|
|
90
90
|
handleCopyPanel(): void;
|
|
91
91
|
getCloneAction(): ContextAction;
|
|
92
92
|
getRenameAction(): ContextAction;
|
|
93
|
-
getAdditionActions: (this: any, actions: any, isClonable:
|
|
93
|
+
getAdditionActions: (this: any, actions: any, isClonable: boolean, isRenamable: boolean) => any[];
|
|
94
94
|
render(): ReactElement;
|
|
95
95
|
}
|
|
96
96
|
export default Panel;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Panel.d.ts","sourceRoot":"","sources":["../../src/panels/Panel.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"Panel.d.ts","sourceRoot":"","sources":["../../src/panels/Panel.tsx"],"names":[],"mappings":"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"}
|
package/dist/panels/Panel.js
CHANGED
|
@@ -103,7 +103,7 @@ class Panel extends PureComponent {
|
|
|
103
103
|
}
|
|
104
104
|
|
|
105
105
|
handleTab(tab) {
|
|
106
|
-
if (tab) {
|
|
106
|
+
if (tab != null) {
|
|
107
107
|
this.setState({
|
|
108
108
|
title: LayoutUtils.getTitleFromTab(tab)
|
|
109
109
|
});
|
|
@@ -299,7 +299,7 @@ class Panel extends PureComponent {
|
|
|
299
299
|
errorMessage: errorMessage,
|
|
300
300
|
isLoaded: isLoaded,
|
|
301
301
|
isLoading: isLoading
|
|
302
|
-
}), glTab && /*#__PURE__*/ReactDOM.createPortal( /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(PanelContextMenu, {
|
|
302
|
+
}), glTab != null && /*#__PURE__*/ReactDOM.createPortal( /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(PanelContextMenu, {
|
|
303
303
|
glContainer: glContainer,
|
|
304
304
|
additionalActions: this.getAdditionActions(additionalActions, isClonable, isRenamable)
|
|
305
305
|
}), isRenamable && /*#__PURE__*/React.createElement(RenameDialog, {
|
|
@@ -308,7 +308,7 @@ class Panel extends PureComponent {
|
|
|
308
308
|
itemType: "Panel",
|
|
309
309
|
onCancel: this.handleRenameCancel,
|
|
310
310
|
onSubmit: this.handleRenameSubmit
|
|
311
|
-
}), renderTabTooltip && /*#__PURE__*/React.createElement(Tooltip, {
|
|
311
|
+
}), renderTabTooltip != null && /*#__PURE__*/React.createElement(Tooltip, {
|
|
312
312
|
interactive: true,
|
|
313
313
|
options: {
|
|
314
314
|
placement: 'bottom'
|
package/dist/panels/Panel.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Panel.js","names":["React","PureComponent","ReactDOM","classNames","memoize","ContextActions","LoadingOverlay","Tooltip","LayoutUtils","PanelEvent","assertNotNull","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","event","FOCUS","onFocus","onBlur","onHide","onResize","session","onSessionClose","params","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","undefined"],"sources":["../../src/panels/Panel.tsx"],"sourcesContent":["import React, {\n Component,\n FocusEvent,\n FocusEventHandler,\n PureComponent,\n ReactElement,\n ReactNode,\n} from 'react';\nimport ReactDOM from 'react-dom';\nimport classNames from 'classnames';\nimport memoize from 'memoize-one';\nimport {\n ContextAction,\n ContextActions,\n LoadingOverlay,\n Tooltip,\n} from '@deephaven/components';\nimport { LayoutUtils, PanelEvent } from '@deephaven/dashboard';\nimport type {\n Container,\n EventEmitter,\n ReactComponentConfig,\n Tab,\n} from '@deephaven/golden-layout';\nimport { assertNotNull } from '@deephaven/utils';\nimport Log from '@deephaven/log';\nimport { IdeSession } from '@deephaven/jsapi-shim';\nimport { ConsoleEvent, InputFilterEvent, TabEvent } from '../events';\nimport PanelContextMenu from './PanelContextMenu';\nimport RenameDialog from './RenameDialog';\n\nconst log = Log.module('Panel');\n\ninterface PanelProps {\n componentPanel: Component;\n children: ReactNode;\n glContainer: Container;\n glEventHub: EventEmitter;\n className: string;\n onFocus: FocusEventHandler<HTMLDivElement>;\n onBlur: FocusEventHandler<HTMLDivElement>;\n onTab: (tab: Tab) => void;\n onTabClicked: (...args: unknown[]) => void;\n onClearAllFilters: (...args: unknown[]) => void;\n onHide: (...args: unknown[]) => void;\n onResize: (...args: unknown[]) => void;\n onSessionClose: (session: IdeSession) => void;\n onSessionOpen: (\n session: IdeSession,\n { language, sessionId }: { language: string; sessionId: string }\n ) => void;\n onBeforeShow: (...args: unknown[]) => void;\n onShow: (...args: unknown[]) => void;\n onTabBlur: (...args: unknown[]) => void;\n onTabFocus: (...args: unknown[]) => void;\n renderTabTooltip: () => ReactNode;\n additionalActions: ContextAction[];\n errorMessage: string;\n isLoading: boolean;\n isLoaded: boolean;\n isClonable: boolean;\n isRenamable: boolean;\n}\n\ninterface PanelState {\n title?: string | null;\n showRenameDialog: boolean;\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<PanelProps, PanelState> {\n static defaultProps = {\n className: '',\n onTab: (): void => undefined,\n onTabClicked: (): void => undefined,\n onClearAllFilters: (): void => undefined,\n onFocus: (): void => undefined,\n onBlur: (): void => undefined,\n onHide: (): void => undefined,\n onResize: (): void => undefined,\n onSessionClose: (): void => undefined,\n onSessionOpen: (): void => undefined,\n onBeforeShow: (): void => undefined,\n onShow: (): void => undefined,\n onTabBlur: (): void => undefined,\n onTabFocus: (): void => undefined,\n renderTabTooltip: null,\n additionalActions: [],\n errorMessage: null,\n isLoading: false,\n isLoaded: true,\n isClonable: false,\n isRenamable: false,\n };\n\n constructor(props: PanelProps) {\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(): void {\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(): void {\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: Tab): void {\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: unknown[]): void {\n const { onTabClicked } = this.props;\n onTabClicked(...args);\n }\n\n handleClearAllFilters(...args: unknown[]): void {\n const { onClearAllFilters } = this.props;\n onClearAllFilters(...args);\n }\n\n handleFocus(event: FocusEvent<HTMLDivElement>): void {\n const { componentPanel, glEventHub } = this.props;\n glEventHub.emit(PanelEvent.FOCUS, componentPanel);\n\n const { onFocus } = this.props;\n onFocus(event);\n }\n\n handleBlur(event: FocusEvent<HTMLDivElement>): void {\n const { onBlur } = this.props;\n onBlur(event);\n }\n\n handleHide(...args: unknown[]): void {\n const { onHide } = this.props;\n onHide(...args);\n }\n\n handleResize(...args: unknown[]): void {\n const { onResize } = this.props;\n onResize(...args);\n }\n\n handleSessionClosed(session: IdeSession): void {\n const { onSessionClose } = this.props;\n onSessionClose(session);\n }\n\n handleSessionOpened(\n session: IdeSession,\n params: { language: string; sessionId: string }\n ): void {\n const { onSessionOpen } = this.props;\n onSessionOpen(session, params);\n }\n\n handleBeforeShow(...args: unknown[]): void {\n const { onBeforeShow } = this.props;\n onBeforeShow(...args);\n }\n\n handleShow(...args: unknown[]): void {\n const { onShow } = this.props;\n onShow(...args);\n }\n\n handleTabBlur(...args: unknown[]): void {\n const { onTabBlur } = this.props;\n onTabBlur(...args);\n }\n\n handleTabFocus(...args: unknown[]): void {\n const { onTabFocus } = this.props;\n onTabFocus(...args);\n }\n\n handleRenameCancel(): void {\n this.setState({ showRenameDialog: false });\n }\n\n handleShowRenameDialog(): void {\n this.setState({ showRenameDialog: true });\n }\n\n handleRenameSubmit(newTitle: string): void {\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 assertNotNull(config);\n LayoutUtils.renameComponent(root, config, newTitle);\n }\n\n handleCopyPanel(): void {\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(\n root,\n config as ReactComponentConfig\n );\n if (cloneConfig !== null) {\n glEventHub.emit(PanelEvent.CLONED, this, cloneConfig);\n }\n }\n\n getCloneAction(): ContextAction {\n return {\n title: 'Copy Panel',\n order: 10,\n group: ContextActions.groups.high,\n action: this.handleCopyPanel,\n };\n }\n\n getRenameAction(): ContextAction {\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(): ReactElement {\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\nexport default Panel;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Panel.js","names":["React","PureComponent","ReactDOM","classNames","memoize","ContextActions","LoadingOverlay","Tooltip","LayoutUtils","PanelEvent","assertNotNull","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","event","FOCUS","onFocus","onBlur","onHide","onResize","session","onSessionClose","params","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","undefined"],"sources":["../../src/panels/Panel.tsx"],"sourcesContent":["import React, {\n Component,\n FocusEvent,\n FocusEventHandler,\n PureComponent,\n ReactElement,\n ReactNode,\n} from 'react';\nimport ReactDOM from 'react-dom';\nimport classNames from 'classnames';\nimport memoize from 'memoize-one';\nimport {\n ContextAction,\n ContextActions,\n LoadingOverlay,\n Tooltip,\n} from '@deephaven/components';\nimport { LayoutUtils, PanelEvent } from '@deephaven/dashboard';\nimport type {\n Container,\n EventEmitter,\n ReactComponentConfig,\n Tab,\n} from '@deephaven/golden-layout';\nimport { assertNotNull } from '@deephaven/utils';\nimport Log from '@deephaven/log';\nimport { IdeSession } from '@deephaven/jsapi-shim';\nimport { ConsoleEvent, InputFilterEvent, TabEvent } from '../events';\nimport PanelContextMenu from './PanelContextMenu';\nimport RenameDialog from './RenameDialog';\n\nconst log = Log.module('Panel');\n\ninterface PanelProps {\n componentPanel: Component;\n children: ReactNode;\n glContainer: Container;\n glEventHub: EventEmitter;\n className: string;\n onFocus: FocusEventHandler<HTMLDivElement>;\n onBlur: FocusEventHandler<HTMLDivElement>;\n onTab: (tab: Tab) => void;\n onTabClicked: (...args: unknown[]) => void;\n onClearAllFilters: (...args: unknown[]) => void;\n onHide: (...args: unknown[]) => void;\n onResize: (...args: unknown[]) => void;\n onSessionClose: (session: IdeSession) => void;\n onSessionOpen: (\n session: IdeSession,\n { language, sessionId }: { language: string; sessionId: string }\n ) => void;\n onBeforeShow: (...args: unknown[]) => void;\n onShow: (...args: unknown[]) => void;\n onTabBlur: (...args: unknown[]) => void;\n onTabFocus: (...args: unknown[]) => void;\n renderTabTooltip: () => ReactNode;\n additionalActions: ContextAction[];\n errorMessage: string;\n isLoading: boolean;\n isLoaded: boolean;\n isClonable: boolean;\n isRenamable: boolean;\n}\n\ninterface PanelState {\n title?: string | null;\n showRenameDialog: boolean;\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<PanelProps, PanelState> {\n static defaultProps = {\n className: '',\n onTab: (): void => undefined,\n onTabClicked: (): void => undefined,\n onClearAllFilters: (): void => undefined,\n onFocus: (): void => undefined,\n onBlur: (): void => undefined,\n onHide: (): void => undefined,\n onResize: (): void => undefined,\n onSessionClose: (): void => undefined,\n onSessionOpen: (): void => undefined,\n onBeforeShow: (): void => undefined,\n onShow: (): void => undefined,\n onTabBlur: (): void => undefined,\n onTabFocus: (): void => undefined,\n renderTabTooltip: null,\n additionalActions: [],\n errorMessage: null,\n isLoading: false,\n isLoaded: true,\n isClonable: false,\n isRenamable: false,\n };\n\n constructor(props: PanelProps) {\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(): void {\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(): void {\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: Tab): void {\n if (tab != null) {\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: unknown[]): void {\n const { onTabClicked } = this.props;\n onTabClicked(...args);\n }\n\n handleClearAllFilters(...args: unknown[]): void {\n const { onClearAllFilters } = this.props;\n onClearAllFilters(...args);\n }\n\n handleFocus(event: FocusEvent<HTMLDivElement>): void {\n const { componentPanel, glEventHub } = this.props;\n glEventHub.emit(PanelEvent.FOCUS, componentPanel);\n\n const { onFocus } = this.props;\n onFocus(event);\n }\n\n handleBlur(event: FocusEvent<HTMLDivElement>): void {\n const { onBlur } = this.props;\n onBlur(event);\n }\n\n handleHide(...args: unknown[]): void {\n const { onHide } = this.props;\n onHide(...args);\n }\n\n handleResize(...args: unknown[]): void {\n const { onResize } = this.props;\n onResize(...args);\n }\n\n handleSessionClosed(session: IdeSession): void {\n const { onSessionClose } = this.props;\n onSessionClose(session);\n }\n\n handleSessionOpened(\n session: IdeSession,\n params: { language: string; sessionId: string }\n ): void {\n const { onSessionOpen } = this.props;\n onSessionOpen(session, params);\n }\n\n handleBeforeShow(...args: unknown[]): void {\n const { onBeforeShow } = this.props;\n onBeforeShow(...args);\n }\n\n handleShow(...args: unknown[]): void {\n const { onShow } = this.props;\n onShow(...args);\n }\n\n handleTabBlur(...args: unknown[]): void {\n const { onTabBlur } = this.props;\n onTabBlur(...args);\n }\n\n handleTabFocus(...args: unknown[]): void {\n const { onTabFocus } = this.props;\n onTabFocus(...args);\n }\n\n handleRenameCancel(): void {\n this.setState({ showRenameDialog: false });\n }\n\n handleShowRenameDialog(): void {\n this.setState({ showRenameDialog: true });\n }\n\n handleRenameSubmit(newTitle: string): void {\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 assertNotNull(config);\n LayoutUtils.renameComponent(root, config, newTitle);\n }\n\n handleCopyPanel(): void {\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(\n root,\n config as ReactComponentConfig\n );\n if (cloneConfig !== null) {\n glEventHub.emit(PanelEvent.CLONED, this, cloneConfig);\n }\n }\n\n getCloneAction(): ContextAction {\n return {\n title: 'Copy Panel',\n order: 10,\n group: ContextActions.groups.high,\n action: this.handleCopyPanel,\n };\n }\n\n getRenameAction(): ContextAction {\n return {\n title: 'Rename',\n order: 10,\n group: ContextActions.groups.medium,\n action: this.handleShowRenameDialog,\n };\n }\n\n getAdditionActions = memoize(\n (actions, isClonable: boolean, isRenamable: boolean) => {\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\n render(): ReactElement {\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 != null &&\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 != null && (\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\nexport default Panel;\n"],"mappings":";;AAAA,OAAOA,KAAP,IAIEC,aAJF,QAOO,OAPP;AAQA,OAAOC,QAAP,MAAqB,WAArB;AACA,OAAOC,UAAP,MAAuB,YAAvB;AACA,OAAOC,OAAP,MAAoB,aAApB;AACA,SAEEC,cAFF,EAGEC,cAHF,EAIEC,OAJF,QAKO,uBALP;AAMA,SAASC,WAAT,EAAsBC,UAAtB,QAAwC,sBAAxC;AAOA,SAASC,aAAT,QAA8B,kBAA9B;AACA,OAAOC,GAAP,MAAgB,gBAAhB;SAESC,Y,EAAcC,gB,EAAkBC,Q;OAClCC,gB;OACAC,Y;AAEP,IAAMC,GAAG,GAAGN,GAAG,CAACO,MAAJ,CAAW,OAAX,CAAZ;;AAqCA;AACA;AACA;AACA;AACA;AACA,MAAMC,KAAN,SAAoBlB,aAApB,CAA0D;EAyBxDmB,WAAW,CAACC,KAAD,EAAoB;IAC7B,MAAMA,KAAN;;IAD6B,4CA0MVjB,OAAO,CAC1B,CAACkB,OAAD,EAAUC,UAAV,EAA+BC,WAA/B,KAAwD;MACtD,IAAMC,iBAAiB,GAAG,EAA1B;;MACA,IAAIF,UAAJ,EAAgB;QACdE,iBAAiB,CAACC,IAAlB,CAAuB,KAAKC,cAAL,EAAvB;MACD;;MACD,IAAIH,WAAJ,EAAiB;QACfC,iBAAiB,CAACC,IAAlB,CAAuB,KAAKE,eAAL,EAAvB;MACD;;MACD,OAAO,CAAC,GAAGH,iBAAJ,EAAuB,GAAGH,OAA1B,CAAP;IACD,CAVyB,CA1MG;;IAG7B,KAAKO,qBAAL,GAA6B,KAAKA,qBAAL,CAA2BC,IAA3B,CAAgC,IAAhC,CAA7B;IACA,KAAKC,eAAL,GAAuB,KAAKA,eAAL,CAAqBD,IAArB,CAA0B,IAA1B,CAAvB;IACA,KAAKE,WAAL,GAAmB,KAAKA,WAAL,CAAiBF,IAAjB,CAAsB,IAAtB,CAAnB;IACA,KAAKG,UAAL,GAAkB,KAAKA,UAAL,CAAgBH,IAAhB,CAAqB,IAArB,CAAlB;IACA,KAAKI,UAAL,GAAkB,KAAKA,UAAL,CAAgBJ,IAAhB,CAAqB,IAArB,CAAlB;IACA,KAAKK,YAAL,GAAoB,KAAKA,YAAL,CAAkBL,IAAlB,CAAuB,IAAvB,CAApB;IACA,KAAKM,mBAAL,GAA2B,KAAKA,mBAAL,CAAyBN,IAAzB,CAA8B,IAA9B,CAA3B;IACA,KAAKO,mBAAL,GAA2B,KAAKA,mBAAL,CAAyBP,IAAzB,CAA8B,IAA9B,CAA3B;IACA,KAAKQ,gBAAL,GAAwB,KAAKA,gBAAL,CAAsBR,IAAtB,CAA2B,IAA3B,CAAxB;IACA,KAAKS,UAAL,GAAkB,KAAKA,UAAL,CAAgBT,IAAhB,CAAqB,IAArB,CAAlB;IACA,KAAKU,aAAL,GAAqB,KAAKA,aAAL,CAAmBV,IAAnB,CAAwB,IAAxB,CAArB;IACA,KAAKW,cAAL,GAAsB,KAAKA,cAAL,CAAoBX,IAApB,CAAyB,IAAzB,CAAtB;IACA,KAAKY,kBAAL,GAA0B,KAAKA,kBAAL,CAAwBZ,IAAxB,CAA6B,IAA7B,CAA1B;IACA,KAAKa,kBAAL,GAA0B,KAAKA,kBAAL,CAAwBb,IAAxB,CAA6B,IAA7B,CAA1B;IACA,KAAKc,sBAAL,GAA8B,KAAKA,sBAAL,CAA4Bd,IAA5B,CAAiC,IAAjC,CAA9B;IACA,KAAKe,gBAAL,GAAwB,KAAKA,gBAAL,CAAsBf,IAAtB,CAA2B,IAA3B,CAAxB;IACA,KAAKgB,SAAL,GAAiB,KAAKA,SAAL,CAAehB,IAAf,CAAoB,IAApB,CAAjB;IAEA,IAAM;MAAEiB;IAAF,IAAkB,KAAK1B,KAA7B;IACA,KAAK2B,KAAL,GAAa;MACXC,KAAK,EAAEzC,WAAW,CAAC0C,qBAAZ,CAAkCH,WAAlC,CADI;MAEXI,gBAAgB,EAAE;IAFP,CAAb;EAID;;EAEDC,iBAAiB,GAAS;IACxB,IAAM;MAAEC,cAAF;MAAkBN,WAAlB;MAA+BO;IAA/B,IAA8C,KAAKjC,KAAzD;IAEA0B,WAAW,CAACQ,EAAZ,CAAe,QAAf,EAAyB,KAAKpB,YAA9B;IACAY,WAAW,CAACQ,EAAZ,CAAe,MAAf,EAAuB,KAAKjB,gBAA5B;IACAS,WAAW,CAACQ,EAAZ,CAAe,OAAf,EAAwB,KAAKhB,UAA7B;IACAQ,WAAW,CAACQ,EAAZ,CAAe,MAAf,EAAuB,KAAKrB,UAA5B;IACAa,WAAW,CAACQ,EAAZ,CAAe,KAAf,EAAsB,KAAKT,SAA3B;IACAC,WAAW,CAACQ,EAAZ,CAAe,YAAf,EAA6B,KAAKV,gBAAlC;IACAS,UAAU,CAACC,EAAX,CAAc3C,YAAY,CAAC4C,cAA3B,EAA2C,KAAKpB,mBAAhD;IACAkB,UAAU,CAACC,EAAX,CAAc3C,YAAY,CAAC6C,cAA3B,EAA2C,KAAKpB,mBAAhD;IACAiB,UAAU,CAACC,EAAX,CAAczC,QAAQ,CAAC4C,KAAvB,EAA8B,KAAKjB,cAAnC;IACAa,UAAU,CAACC,EAAX,CAAczC,QAAQ,CAAC6C,IAAvB,EAA6B,KAAKnB,aAAlC;IACAc,UAAU,CAACC,EAAX,CACE1C,gBAAgB,CAAC+C,iBADnB,EAEE,KAAK/B,qBAFP;IAKAyB,UAAU,CAACO,IAAX,CAAgBpD,UAAU,CAACqD,KAA3B,EAAkCT,cAAlC;EACD;;EAEDU,oBAAoB,GAAS;IAC3B,IAAM;MAAEV,cAAF;MAAkBN,WAAlB;MAA+BO;IAA/B,IAA8C,KAAKjC,KAAzD;IAEA0B,WAAW,CAACiB,GAAZ,CAAgB,QAAhB,EAA0B,KAAK7B,YAA/B;IACAY,WAAW,CAACiB,GAAZ,CAAgB,MAAhB,EAAwB,KAAK1B,gBAA7B;IACAS,WAAW,CAACiB,GAAZ,CAAgB,OAAhB,EAAyB,KAAKzB,UAA9B;IACAQ,WAAW,CAACiB,GAAZ,CAAgB,MAAhB,EAAwB,KAAK9B,UAA7B;IACAa,WAAW,CAACiB,GAAZ,CAAgB,KAAhB,EAAuB,KAAKlB,SAA5B;IACAC,WAAW,CAACiB,GAAZ,CAAgB,YAAhB,EAA8B,KAAKnB,gBAAnC;IACAS,UAAU,CAACU,GAAX,CAAepD,YAAY,CAAC4C,cAA5B,EAA4C,KAAKpB,mBAAjD;IACAkB,UAAU,CAACU,GAAX,CAAepD,YAAY,CAAC6C,cAA5B,EAA4C,KAAKpB,mBAAjD;IACAiB,UAAU,CAACU,GAAX,CAAelD,QAAQ,CAAC4C,KAAxB,EAA+B,KAAKjB,cAApC;IACAa,UAAU,CAACU,GAAX,CAAelD,QAAQ,CAAC6C,IAAxB,EAA8B,KAAKnB,aAAnC;IACAc,UAAU,CAACU,GAAX,CACEnD,gBAAgB,CAAC+C,iBADnB,EAEE,KAAK/B,qBAFP;IAKAyB,UAAU,CAACO,IAAX,CAAgBpD,UAAU,CAACwD,OAA3B,EAAoCZ,cAApC;EACD;;EAEDP,SAAS,CAACoB,GAAD,EAAiB;IACxB,IAAIA,GAAG,IAAI,IAAX,EAAiB;MACf,KAAKC,QAAL,CAAc;QACZlB,KAAK,EAAEzC,WAAW,CAAC4D,eAAZ,CAA4BF,GAA5B;MADK,CAAd;IAGD,CALuB,CAMxB;IACA;;;IACA,KAAKG,WAAL;IAEA,IAAM;MAAEC;IAAF,IAAY,KAAKjD,KAAvB;IACAiD,KAAK,CAACJ,GAAD,CAAL;EACD;;EAEDrB,gBAAgB,GAA2B;IACzC,IAAM;MAAE0B;IAAF,IAAmB,KAAKlD,KAA9B;IACAkD,YAAY,CAAC,YAAD,CAAZ;EACD;;EAED1C,qBAAqB,GAA2B;IAC9C,IAAM;MAAE2C;IAAF,IAAwB,KAAKnD,KAAnC;IACAmD,iBAAiB,CAAC,YAAD,CAAjB;EACD;;EAEDxC,WAAW,CAACyC,KAAD,EAA0C;IACnD,IAAM;MAAEpB,cAAF;MAAkBC;IAAlB,IAAiC,KAAKjC,KAA5C;IACAiC,UAAU,CAACO,IAAX,CAAgBpD,UAAU,CAACiE,KAA3B,EAAkCrB,cAAlC;IAEA,IAAM;MAAEsB;IAAF,IAAc,KAAKtD,KAAzB;IACAsD,OAAO,CAACF,KAAD,CAAP;EACD;;EAEDxC,UAAU,CAACwC,KAAD,EAA0C;IAClD,IAAM;MAAEG;IAAF,IAAa,KAAKvD,KAAxB;IACAuD,MAAM,CAACH,KAAD,CAAN;EACD;;EAEDvC,UAAU,GAA2B;IACnC,IAAM;MAAE2C;IAAF,IAAa,KAAKxD,KAAxB;IACAwD,MAAM,CAAC,YAAD,CAAN;EACD;;EAED1C,YAAY,GAA2B;IACrC,IAAM;MAAE2C;IAAF,IAAe,KAAKzD,KAA1B;IACAyD,QAAQ,CAAC,YAAD,CAAR;EACD;;EAED1C,mBAAmB,CAAC2C,OAAD,EAA4B;IAC7C,IAAM;MAAEC;IAAF,IAAqB,KAAK3D,KAAhC;IACA2D,cAAc,CAACD,OAAD,CAAd;EACD;;EAED1C,mBAAmB,CACjB0C,OADiB,EAEjBE,MAFiB,EAGX;IACN,IAAM;MAAEC;IAAF,IAAoB,KAAK7D,KAA/B;IACA6D,aAAa,CAACH,OAAD,EAAUE,MAAV,CAAb;EACD;;EAED3C,gBAAgB,GAA2B;IACzC,IAAM;MAAE6C;IAAF,IAAmB,KAAK9D,KAA9B;IACA8D,YAAY,CAAC,YAAD,CAAZ;EACD;;EAED5C,UAAU,GAA2B;IACnC,IAAM;MAAE6C;IAAF,IAAa,KAAK/D,KAAxB;IACA+D,MAAM,CAAC,YAAD,CAAN;EACD;;EAED5C,aAAa,GAA2B;IACtC,IAAM;MAAE6C;IAAF,IAAgB,KAAKhE,KAA3B;IACAgE,SAAS,CAAC,YAAD,CAAT;EACD;;EAED5C,cAAc,GAA2B;IACvC,IAAM;MAAE6C;IAAF,IAAiB,KAAKjE,KAA5B;IACAiE,UAAU,CAAC,YAAD,CAAV;EACD;;EAED5C,kBAAkB,GAAS;IACzB,KAAKyB,QAAL,CAAc;MAAEhB,gBAAgB,EAAE;IAApB,CAAd;EACD;;EAEDP,sBAAsB,GAAS;IAC7B,KAAKuB,QAAL,CAAc;MAAEhB,gBAAgB,EAAE;IAApB,CAAd;EACD;;EAEDR,kBAAkB,CAAC4C,QAAD,EAAyB;IACzC,IAAM;MAAExC;IAAF,IAAkB,KAAK1B,KAA7B;IACA,KAAK8C,QAAL,CAAc;MAAEhB,gBAAgB,EAAE,KAApB;MAA2BF,KAAK,EAAEsC;IAAlC,CAAd;IACA,IAAMC,IAAI,GAAGhF,WAAW,CAACiF,oBAAZ,CAAiC1C,WAAjC,CAAb;IACA,IAAM2C,MAAM,GAAGlF,WAAW,CAACmF,+BAAZ,CAA4C5C,WAA5C,CAAf;IACArC,aAAa,CAACgF,MAAD,CAAb;IACAlF,WAAW,CAACoF,eAAZ,CAA4BJ,IAA5B,EAAkCE,MAAlC,EAA0CH,QAA1C;EACD;;EAEDxD,eAAe,GAAS;IACtB,IAAM;MAAEgB,WAAF;MAAeO;IAAf,IAA8B,KAAKjC,KAAzC;IACA,IAAMmE,IAAI,GAAGhF,WAAW,CAACiF,oBAAZ,CAAiC1C,WAAjC,CAAb;IACA,IAAM2C,MAAM,GAAGlF,WAAW,CAACmF,+BAAZ,CAA4C5C,WAA5C,CAAf;;IACA,IAAI2C,MAAM,IAAI,IAAd,EAAoB;MAClBzE,GAAG,CAAC4E,KAAJ,CAAU,+CAAV,EAA2D9C,WAA3D;MACA;IACD;;IACD,IAAM+C,WAAW,GAAGtF,WAAW,CAACuF,cAAZ,CAClBP,IADkB,EAElBE,MAFkB,CAApB;;IAIA,IAAII,WAAW,KAAK,IAApB,EAA0B;MACxBxC,UAAU,CAACO,IAAX,CAAgBpD,UAAU,CAACuF,MAA3B,EAAmC,IAAnC,EAAyCF,WAAzC;IACD;EACF;;EAEDnE,cAAc,GAAkB;IAC9B,OAAO;MACLsB,KAAK,EAAE,YADF;MAELgD,KAAK,EAAE,EAFF;MAGLC,KAAK,EAAE7F,cAAc,CAAC8F,MAAf,CAAsBC,IAHxB;MAILC,MAAM,EAAE,KAAKtE;IAJR,CAAP;EAMD;;EAEDH,eAAe,GAAkB;IAC/B,OAAO;MACLqB,KAAK,EAAE,QADF;MAELgD,KAAK,EAAE,EAFF;MAGLC,KAAK,EAAE7F,cAAc,CAAC8F,MAAf,CAAsBG,MAHxB;MAILD,MAAM,EAAE,KAAKzD;IAJR,CAAP;EAMD;;EAeD2D,MAAM,GAAiB;IACrB,IAAM;MACJC,QADI;MAEJC,SAFI;MAGJC,gBAHI;MAIJ3D,WAJI;MAKJtB,iBALI;MAMJkF,YANI;MAOJC,QAPI;MAQJC,SARI;MASJtF,UATI;MAUJC;IAVI,IAWF,KAAKH,KAXT;IAYA,IAAM;MAAE6C,GAAG,EAAE4C;IAAP,IAAiB/D,WAAvB;IACA,IAAM;MAAEI,gBAAF;MAAoBF;IAApB,IAA8B,KAAKD,KAAzC;IAEA,oBACE;MACE,SAAS,EAAE7C,UAAU,CAAC,wBAAD,EAA2BsG,SAA3B,CADvB;MAEE,cAAc,EAAE,KAAKzE,WAFvB;MAGE,aAAa,EAAE,KAAKC;IAHtB,GAKGuE,QALH,eAME,oBAAC,cAAD;MACE,YAAY,EAAEG,YADhB;MAEE,QAAQ,EAAEC,QAFZ;MAGE,SAAS,EAAEC;IAHb,EANF,EAWGC,KAAK,IAAI,IAAT,iBACC5G,QAAQ,CAAC6G,YAAT,eACE,uDACE,oBAAC,gBAAD;MACE,WAAW,EAAEhE,WADf;MAEE,iBAAiB,EAAE,KAAKiE,kBAAL,CACjBvF,iBADiB,EAEjBF,UAFiB,EAGjBC,WAHiB;IAFrB,EADF,EASGA,WAAW,iBACV,oBAAC,YAAD;MACE,OAAO,EAAE2B,gBADX;MAEE,KAAK,EAAEF,KAFT;MAGE,QAAQ,EAAC,OAHX;MAIE,QAAQ,EAAE,KAAKP,kBAJjB;MAKE,QAAQ,EAAE,KAAKC;IALjB,EAVJ,EAkBG+D,gBAAgB,IAAI,IAApB,iBACC,oBAAC,OAAD;MACE,WAAW,MADb;MAEE,OAAO,EAAE;QACPO,SAAS,EAAE;MADJ,CAFX;MAKE,eAAe,EAAC;IALlB,GAOGP,gBAAgB,EAPnB,CAnBJ,CADF,EA+BEI,KAAK,CAACI,OAAN,CAAc,CAAd,CA/BF,CA+BmB;IA/BnB,CAZJ,CADF;EAgDD;;AAhTuD;;gBAApD/F,K,kBACkB;EACpBsF,SAAS,EAAE,EADS;EAEpBnC,KAAK,EAAE,MAAY6C,SAFC;EAGpB5C,YAAY,EAAE,MAAY4C,SAHN;EAIpB3C,iBAAiB,EAAE,MAAY2C,SAJX;EAKpBxC,OAAO,EAAE,MAAYwC,SALD;EAMpBvC,MAAM,EAAE,MAAYuC,SANA;EAOpBtC,MAAM,EAAE,MAAYsC,SAPA;EAQpBrC,QAAQ,EAAE,MAAYqC,SARF;EASpBnC,cAAc,EAAE,MAAYmC,SATR;EAUpBjC,aAAa,EAAE,MAAYiC,SAVP;EAWpBhC,YAAY,EAAE,MAAYgC,SAXN;EAYpB/B,MAAM,EAAE,MAAY+B,SAZA;EAapB9B,SAAS,EAAE,MAAY8B,SAbH;EAcpB7B,UAAU,EAAE,MAAY6B,SAdJ;EAepBT,gBAAgB,EAAE,IAfE;EAgBpBjF,iBAAiB,EAAE,EAhBC;EAiBpBkF,YAAY,EAAE,IAjBM;EAkBpBE,SAAS,EAAE,KAlBS;EAmBpBD,QAAQ,EAAE,IAnBU;EAoBpBrF,UAAU,EAAE,KApBQ;EAqBpBC,WAAW,EAAE;AArBO,C;;AAkTxB,eAAeL,KAAf"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PanelContextMenu.d.ts","sourceRoot":"","sources":["../../src/panels/PanelContextMenu.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAkB,MAAM,uBAAuB,CAAC;AACtE,OAAO,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,0BAA0B,CAAC;AAE/D,UAAU,qBAAqB;IAC7B,iBAAiB,EAAE,aAAa,EAAE,CAAC;IACnC,WAAW,EAAE,SAAS,CAAC;CACxB;AAOD,cAAM,gBAAiB,SAAQ,aAAa,CAC1C,qBAAqB,EACrB,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CACtB;IACC,MAAM,CAAC,YAAY;;MAEjB;gBAEU,KAAK,EAAE,qBAAqB;IAQxC,UAAU,IAAI,GAAG,EAAE;IAMnB,cAAc,IAAI,IAAI;IAKtB,kBAAkB,IAAI,IAAI;IAU1B,oBAAoB,IAAI,IAAI;IAiB5B,iBAAiB,IAAI,OAAO;
|
|
1
|
+
{"version":3,"file":"PanelContextMenu.d.ts","sourceRoot":"","sources":["../../src/panels/PanelContextMenu.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAkB,MAAM,uBAAuB,CAAC;AACtE,OAAO,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,0BAA0B,CAAC;AAE/D,UAAU,qBAAqB;IAC7B,iBAAiB,EAAE,aAAa,EAAE,CAAC;IACnC,WAAW,EAAE,SAAS,CAAC;CACxB;AAOD,cAAM,gBAAiB,SAAQ,aAAa,CAC1C,qBAAqB,EACrB,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CACtB;IACC,MAAM,CAAC,YAAY;;MAEjB;gBAEU,KAAK,EAAE,qBAAqB;IAQxC,UAAU,IAAI,GAAG,EAAE;IAMnB,cAAc,IAAI,IAAI;IAKtB,kBAAkB,IAAI,IAAI;IAU1B,oBAAoB,IAAI,IAAI;IAiB5B,iBAAiB,IAAI,OAAO;IAqB5B,WAAW,IAAI,OAAO;IActB,MAAM,IAAI,YAAY;CAmCvB;AAED,eAAe,gBAAgB,CAAC"}
|
|
@@ -71,7 +71,9 @@ class PanelContextMenu extends PureComponent {
|
|
|
71
71
|
break; // end when we get back to current id
|
|
72
72
|
}
|
|
73
73
|
|
|
74
|
-
|
|
74
|
+
var closable = Boolean((_tabs$i2 = tabs[i]) === null || _tabs$i2 === void 0 ? void 0 : (_tabs$i2$contentItem = _tabs$i2.contentItem) === null || _tabs$i2$contentItem === void 0 ? void 0 : (_tabs$i2$contentItem$ = _tabs$i2$contentItem.config) === null || _tabs$i2$contentItem$ === void 0 ? void 0 : _tabs$i2$contentItem$.isClosable);
|
|
75
|
+
|
|
76
|
+
if (closable) {
|
|
75
77
|
disabled = false;
|
|
76
78
|
break; // end if we find a closeable tab
|
|
77
79
|
}
|
|
@@ -87,7 +89,9 @@ class PanelContextMenu extends PureComponent {
|
|
|
87
89
|
for (var i = tabs.length - 1; i > 0; i -= 1) {
|
|
88
90
|
var _tabs$i3, _tabs$i3$contentItem, _tabs$i3$contentItem$;
|
|
89
91
|
|
|
90
|
-
|
|
92
|
+
var closable = Boolean((_tabs$i3 = tabs[i]) === null || _tabs$i3 === void 0 ? void 0 : (_tabs$i3$contentItem = _tabs$i3.contentItem) === null || _tabs$i3$contentItem === void 0 ? void 0 : (_tabs$i3$contentItem$ = _tabs$i3$contentItem.config) === null || _tabs$i3$contentItem$ === void 0 ? void 0 : _tabs$i3$contentItem$.isClosable);
|
|
93
|
+
|
|
94
|
+
if (closable) {
|
|
91
95
|
disabled = false;
|
|
92
96
|
break;
|
|
93
97
|
}
|
|
@@ -104,12 +108,13 @@ class PanelContextMenu extends PureComponent {
|
|
|
104
108
|
glContainer
|
|
105
109
|
} = this.props;
|
|
106
110
|
var contextActions = [...additionalActions];
|
|
111
|
+
var closable = (_glContainer$tab4 = glContainer.tab) === null || _glContainer$tab4 === void 0 ? void 0 : (_glContainer$tab4$con = _glContainer$tab4.contentItem) === null || _glContainer$tab4$con === void 0 ? void 0 : (_glContainer$tab4$con2 = _glContainer$tab4$con.config) === null || _glContainer$tab4$con2 === void 0 ? void 0 : _glContainer$tab4$con2.isClosable;
|
|
107
112
|
contextActions.push({
|
|
108
113
|
title: 'Close',
|
|
109
114
|
order: 10,
|
|
110
115
|
group: ContextActions.groups.low,
|
|
111
116
|
action: this.handleCloseTab,
|
|
112
|
-
disabled:
|
|
117
|
+
disabled: closable === undefined || !closable
|
|
113
118
|
}); // pushed as function so the disable check happens on run
|
|
114
119
|
|
|
115
120
|
contextActions.push(() => ({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PanelContextMenu.js","names":["React","PureComponent","ContextActions","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","push","title","order","group","groups","low","action"],"sources":["../../src/panels/PanelContextMenu.tsx"],"sourcesContent":["import React, { PureComponent, ReactElement } from 'react';\nimport { ContextAction, ContextActions } from '@deephaven/components';\nimport type { Container, Tab } from '@deephaven/golden-layout';\n\ninterface PanelContextMenuProps {\n additionalActions: ContextAction[];\n glContainer: Container;\n}\n\ninterface HasContainer {\n container: {\n close: () => void;\n };\n}\nclass PanelContextMenu extends PureComponent<\n PanelContextMenuProps,\n Record<string, never>\n> {\n static defaultProps = {\n additionalActions: [],\n };\n\n constructor(props: PanelContextMenuProps) {\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(): Tab[] {\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(): void {\n const { glContainer } = this.props;\n glContainer.close();\n }\n\n handleCloseTabsAll(): void {\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 =>\n ((tab?.contentItem as unknown) as HasContainer).container?.close()\n );\n }\n\n handleCloseTabsRight(): void {\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 as unknown) as HasContainer).container?.close();\n }\n }\n\n canCloseTabsRight(): boolean {\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
|
|
1
|
+
{"version":3,"file":"PanelContextMenu.js","names":["React","PureComponent","ContextActions","PanelContextMenu","constructor","props","handleCloseTab","bind","handleCloseTabsRight","handleCloseTabsAll","getAllTabs","glContainer","tab","header","tabs","close","forEach","contentItem","container","i","length","config","id","canCloseTabsRight","disabled","closable","Boolean","isClosable","canCloseAny","render","additionalActions","contextActions","push","title","order","group","groups","low","action","undefined"],"sources":["../../src/panels/PanelContextMenu.tsx"],"sourcesContent":["import React, { PureComponent, ReactElement } from 'react';\nimport { ContextAction, ContextActions } from '@deephaven/components';\nimport type { Container, Tab } from '@deephaven/golden-layout';\n\ninterface PanelContextMenuProps {\n additionalActions: ContextAction[];\n glContainer: Container;\n}\n\ninterface HasContainer {\n container: {\n close: () => void;\n };\n}\nclass PanelContextMenu extends PureComponent<\n PanelContextMenuProps,\n Record<string, never>\n> {\n static defaultProps = {\n additionalActions: [],\n };\n\n constructor(props: PanelContextMenuProps) {\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(): Tab[] {\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(): void {\n const { glContainer } = this.props;\n glContainer.close();\n }\n\n handleCloseTabsAll(): void {\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 =>\n ((tab?.contentItem as unknown) as HasContainer).container?.close()\n );\n }\n\n handleCloseTabsRight(): void {\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 as unknown) as HasContainer).container?.close();\n }\n }\n\n canCloseTabsRight(): boolean {\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 const closable = Boolean(tabs[i]?.contentItem?.config?.isClosable);\n if (closable) {\n disabled = false;\n break; // end if we find a closeable tab\n }\n }\n return disabled;\n }\n\n canCloseAny(): boolean {\n const tabs = this.getAllTabs();\n\n let disabled = true;\n for (let i = tabs.length - 1; i > 0; i -= 1) {\n const closable = Boolean(tabs[i]?.contentItem?.config?.isClosable);\n if (closable) {\n disabled = false;\n break;\n }\n }\n return disabled;\n }\n\n render(): ReactElement {\n const { additionalActions, glContainer } = this.props;\n\n const contextActions: (ContextAction | (() => ContextAction))[] = [\n ...additionalActions,\n ];\n\n const closable = glContainer.tab?.contentItem?.config?.isClosable;\n contextActions.push({\n title: 'Close',\n order: 10,\n group: ContextActions.groups.low,\n action: this.handleCloseTab,\n disabled: closable === undefined || !closable,\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\nexport default PanelContextMenu;\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RenameDialog.d.ts","sourceRoot":"","sources":["../../src/panels/RenameDialog.tsx"],"names":[],"mappings":"AAAA,OAAc,EACZ,WAAW,EACX,SAAS,EACT,aAAa,EACb,YAAY,EACZ,SAAS,EACV,MAAM,OAAO,CAAC;AAIf,UAAU,iBAAiB;IACzB,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAED,UAAU,iBAAiB;IACzB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,iBAAiB,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,aAAa,CACrD,iBAAiB,EACjB,iBAAiB,CAClB;IACC,MAAM,CAAC,YAAY;;;;;MAKjB;gBAEU,KAAK,EAAE,iBAAiB;IAkBpC,kBAAkB,CAAC,SAAS,EAAE,iBAAiB,GAAG,IAAI;IAYtD,cAAc,EAAE,SAAS,CAAC,gBAAgB,CAAC,CAAC;IAE5C,UAAU,IAAI,IAAI;IAKlB,wBAAwB,IAAI,IAAI;
|
|
1
|
+
{"version":3,"file":"RenameDialog.d.ts","sourceRoot":"","sources":["../../src/panels/RenameDialog.tsx"],"names":[],"mappings":"AAAA,OAAc,EACZ,WAAW,EACX,SAAS,EACT,aAAa,EACb,YAAY,EACZ,SAAS,EACV,MAAM,OAAO,CAAC;AAIf,UAAU,iBAAiB;IACzB,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAED,UAAU,iBAAiB;IACzB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,iBAAiB,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,aAAa,CACrD,iBAAiB,EACjB,iBAAiB,CAClB;IACC,MAAM,CAAC,YAAY;;;;;MAKjB;gBAEU,KAAK,EAAE,iBAAiB;IAkBpC,kBAAkB,CAAC,SAAS,EAAE,iBAAiB,GAAG,IAAI;IAYtD,cAAc,EAAE,SAAS,CAAC,gBAAgB,CAAC,CAAC;IAE5C,UAAU,IAAI,IAAI;IAKlB,wBAAwB,IAAI,IAAI;IAIhC,uBAAuB,CAAC,KAAK,EAAE,WAAW,CAAC,gBAAgB,CAAC,GAAG,IAAI;IAInE,kBAAkB,IAAI,IAAI;IAK1B,kBAAkB,CAAC,KAAK,EAAE,SAAS,CAAC,eAAe,CAAC,GAAG,IAAI;IAa3D,kBAAkB,IAAI,YAAY;IAyDlC,MAAM,IAAI,YAAY;CAkBvB"}
|
|
@@ -50,11 +50,9 @@ export default class RenameDialog extends PureComponent {
|
|
|
50
50
|
}
|
|
51
51
|
|
|
52
52
|
handleRenameDialogOpened() {
|
|
53
|
-
|
|
54
|
-
var _this$renameInputRef$;
|
|
53
|
+
var _this$renameInputRef, _this$renameInputRef$;
|
|
55
54
|
|
|
56
|
-
|
|
57
|
-
}
|
|
55
|
+
(_this$renameInputRef = this.renameInputRef) === null || _this$renameInputRef === void 0 ? void 0 : (_this$renameInputRef$ = _this$renameInputRef.current) === null || _this$renameInputRef$ === void 0 ? void 0 : _this$renameInputRef$.focus();
|
|
58
56
|
}
|
|
59
57
|
|
|
60
58
|
handleRenameInputChange(event) {
|