@deephaven/dashboard-core-plugins 0.57.2-beta.0 → 0.58.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/dist/controls/dropdown-filter/DropdownFilter.css +1 -1
  2. package/dist/controls/dropdown-filter/DropdownFilter.css.map +1 -1
  3. package/dist/controls/input-filter/InputFilter.css +1 -1
  4. package/dist/controls/input-filter/InputFilter.css.map +1 -1
  5. package/dist/controls/markdown/MarkdownStartPage.js +1 -1
  6. package/dist/controls/markdown/MarkdownStartPage.js.map +1 -1
  7. package/dist/linker/LinkerLink.css +5 -5
  8. package/dist/linker/LinkerLink.css.map +1 -1
  9. package/dist/linker/LinkerOverlayContent.css +8 -11
  10. package/dist/linker/LinkerOverlayContent.css.map +1 -1
  11. package/dist/linker/LinkerOverlayContent.d.ts.map +1 -1
  12. package/dist/linker/LinkerOverlayContent.js +1 -0
  13. package/dist/linker/LinkerOverlayContent.js.map +1 -1
  14. package/dist/panels/ChartFilterOverlay.css.map +1 -1
  15. package/dist/panels/CommandHistoryPanel.css.map +1 -1
  16. package/dist/panels/ConsolePanel.css.map +1 -1
  17. package/dist/panels/ConsolePanel.d.ts.map +1 -1
  18. package/dist/panels/ConsolePanel.js +8 -16
  19. package/dist/panels/ConsolePanel.js.map +1 -1
  20. package/dist/panels/FilterSetManager.css +1 -1
  21. package/dist/panels/FilterSetManager.css.map +1 -1
  22. package/dist/panels/IrisGridPanel.css +4 -0
  23. package/dist/panels/IrisGridPanel.css.map +1 -1
  24. package/dist/panels/IrisGridPanel.d.ts.map +1 -1
  25. package/dist/panels/IrisGridPanel.js +1 -0
  26. package/dist/panels/IrisGridPanel.js.map +1 -1
  27. package/dist/panels/LogPanel.css.map +1 -1
  28. package/dist/panels/MarkdownNotebook.css.map +1 -1
  29. package/dist/panels/MarkdownPanel.css.map +1 -1
  30. package/dist/panels/NotebookPanel.css +3 -15
  31. package/dist/panels/NotebookPanel.css.map +1 -1
  32. package/dist/panels/NotebookPanel.js +1 -1
  33. package/dist/panels/NotebookPanel.js.map +1 -1
  34. package/dist/panels/PandasPanel.css.map +1 -1
  35. package/dist/panels/WidgetPanel.css.map +1 -1
  36. package/dist/panels/WidgetPanelTooltip.css.map +1 -1
  37. package/package.json +24 -24
@@ -1 +1 @@
1
- {"version":3,"file":"NotebookPanel.js","names":["React","Component","ReactDOM","memoize","connect","FontAwesomeIcon","BasicModal","ContextActions","DropdownMenu","Tooltip","GLOBAL_SHORTCUTS","Button","ScriptEditor","ScriptEditorUtils","SHORTCUTS","FileUtils","NewItemModal","vsSave","vsKebabVertical","dhFileSearch","vsPlay","dhRunSelection","vsCheck","vsCopy","dhICursor","vsTrash","getFileStorage","updateSettings","updateSettingsAction","getDefaultNotebookSettings","classNames","debounce","PanelEvent","Log","assertNotNull","Pending","PromiseUtils","ConsoleEvent","NotebookEvent","getDashboardSessionWrapper","Panel","MarkdownNotebook","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","log","module","DEBOUNCE_PANEL_STATE_UPDATE","NotebookPanel","handleError","error","isCanceled","unsavedNotebookCount","document","querySelectorAll","concat","UNSAVED_INDICATOR_CLASS_NAME","UNSAVED_STATUS_CLASS_NAME","length","languageFromFileName","fileName","extension","getExtension","toLowerCase","constructor","props","_defineProperty","initialSettings","isMinimapEnabled","_objectSpread","minimap","enabled","isWordWrapEnabled","title","icon","action","handleFind","group","groups","high","shortcut","NOTEBOOK","FIND","order","handleCopy","medium","handleShowRename","handleDelete","undefined","handleMinimapChange","low","MINIMAP","handleWordWrapChange","WORDWRAP","handleBlur","bind","handleCloseCancel","handleCloseDiscard","handleCloseSave","handleDeleteConfirm","handleDeleteCancel","handleEditorInitialized","handleEditorWillDestroy","handleEditorChange","handleFocus","handleLinkClick","handleLoadSuccess","handleLoadError","handlePanelDropped","handleRenameFile","handleResize","handleRunCommand","handleRunAll","handleRunSelected","handleSave","handleSaveAsCancel","handleSaveAsSubmit","handleSaveError","handleSaveSuccess","handleSessionOpened","handleSessionClosed","handleShow","handleTab","handleTabBlur","handleTabClick","handleTabFocus","handleTransformLinkUri","handleOverwrite","handlePreviewPromotion","getDropdownOverflowActions","pending","debouncedSavePanelState","savePanelState","debouncedLoad","load","notebook","tabTitleElement","tabInitOnce","isDashboardActive","session","sessionLanguage","panelState","settings","value","language","wordWrap","fileMetadata","isPreview","hasFileId","hasPath","itemName","isUnsaved","changeCount","state","isFocused","isLoading","isLoaded","savedChangeCount","showCloseModal","showDeleteModal","showSaveAsModal","scriptCode","debug","componentDidMount","glContainer","glEventHub","tab","initTab","initNotebookContent","on","RENAME_FILE","DROPPED","PROMOTE_FROM_PREVIEW","componentDidUpdate","prevProps","prevState","defaultNotebookSettings","setPreviewStatus","updateEditorWordWrap","updateEditorMinimap","componentWillUnmount","flush","cancel","off","emit","UNREGISTER_FILE","initTabCloseOverride","initTabClasses","beforeClose","options","force","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","_NotebookPanel$langua","filename","prevItemName","getBaseName","updatedSettings","content","catch","save","saveContent","updateSavedChangeCount","saveFile","basename","_ref","remove","removePreviewStatus","dehydratedValue","dehydratedSettings","close","focus","_this","_asyncToGenerator","copyName","getUniqueCopyFileName","copyFile","newFileMetadata","notebookSettings","SELECT_NOTEBOOK","_this2","fileExists","deleteFile","innerEditor","editor","e","debug2","isUndoing","isRedoing","toggleFind","updateOptions","newSettings","event","notebooksUrl","href","currentTarget","startsWith","stopPropagation","preventDefault","notebookPath","substring","replace","errorParam","isTimedOut","file","_NotebookPanel$langua2","oldMetadata","name","_this$getNotebookValu","isOverwrite","arguments","oldName","newName","curPanelState","JSON","stringify","_this$notebook","updateDimensions","command","runCommand","_this$notebook$getVal","getSelectedCommand","_ref2","_this$notebook2","droppedId","forceUpdate","_len","args","Array","_key","isHidden","detail","src","endsWith","charAt","itemUri","URL","requestAnimationFrame","createNotebook","CREATE_NOTEBOOK","SEND_COMMAND","_ref3","getOverflowActions","getSettings","render","_fileMetadata$itemNam","_settings$value","focusOnMount","DEFAULT_NAME","isMarkdown","isExistingItem","isSessionConnected","isLanguageMatching","runButtonsDisabled","toolbarDisabled","contextActions","SAVE","disabledRunButtonTooltip","getDisabledRunTooltip","disabledRunSelectedButtonTooltip","additionalActions","portal","find","children","createPortal","className","componentPanel","onTab","onResize","onShow","onTabClicked","onTabFocus","onTabBlur","onSessionOpen","onSessionClose","onFocus","onBlur","renderTabTooltip","kind","onClick","disabled","transform","tooltip","RUN","getDisplayText","RUN_SELECTED","actions","popperOptions","POPPER_OPTIONS","onChange","onRunCommand","onEditorInitialized","onEditorWillDestroy","ref","onLinkClick","onRunCode","transformImageUri","transformLinkUri","isOpen","type","defaultValue","onSubmit","onCancel","notifyOnExtensionChange","storage","headerText","bodyText","onConfirm","confirmButtonText","onDiscard","discardButtonText","placement","mapStateToProps","ownProps","sessionWrapper","localDashboardId","config","sessionConfig","ConnectedNotebookPanel","forwardRef"],"sources":["../../src/panels/NotebookPanel.tsx"],"sourcesContent":["// Wrapper for the Notebook for use in a golden layout container\nimport React, { Component, 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 Button,\n DropdownAction,\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 vsCheck,\n vsCopy,\n dhICursor,\n vsTrash,\n} from '@deephaven/icons';\nimport {\n getFileStorage,\n updateSettings as updateSettingsAction,\n RootState,\n WorkspaceSettings,\n getDefaultNotebookSettings,\n} from '@deephaven/redux';\nimport classNames from 'classnames';\nimport debounce from 'lodash.debounce';\nimport {\n DashboardPanelProps,\n PanelEvent,\n PanelMetadata,\n} from '@deephaven/dashboard';\nimport Log from '@deephaven/log';\nimport { assertNotNull, Pending, PromiseUtils } from '@deephaven/utils';\nimport type { Tab, CloseOptions } from '@deephaven/golden-layout';\nimport type { IdeSession } from '@deephaven/jsapi-types';\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 extends PanelMetadata {\n id: string;\n}\ninterface NotebookSetting {\n isMinimapEnabled: boolean;\n}\n\ninterface FileMetadata {\n itemName: string;\n id: string;\n}\n\ninterface PanelState {\n isPreview?: boolean;\n settings: editor.IStandaloneEditorConstructionOptions;\n fileMetadata: FileMetadata | null;\n}\n\ninterface NotebookPanelProps extends DashboardPanelProps {\n fileStorage: FileStorage;\n isDashboardActive: boolean;\n isPreview: boolean;\n metadata: Metadata;\n session: IdeSession;\n sessionLanguage: string;\n panelState: PanelState;\n notebooksUrl: string;\n defaultNotebookSettings: NotebookSetting;\n updateSettings: (settings: Partial<WorkspaceSettings>) => void;\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: editor.IStandaloneEditorConstructionOptions;\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 showDeleteModal: 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 UNSAVED_INDICATOR_CLASS_NAME = 'editor-unsaved-indicator';\n\n static UNSAVED_STATUS_CLASS_NAME = 'is-unsaved';\n\n static handleError(error: unknown): void {\n if (PromiseUtils.isCanceled(error)) {\n return;\n }\n log.error(error);\n }\n\n /**\n * Returns number of unsaved notebooks.\n */\n static unsavedNotebookCount(): number {\n return document.querySelectorAll(\n `.${NotebookPanel.UNSAVED_INDICATOR_CLASS_NAME}.${NotebookPanel.UNSAVED_STATUS_CLASS_NAME}`\n ).length;\n }\n\n static defaultProps = {\n isDashboardActive: true,\n isPreview: false,\n session: null,\n sessionLanguage: null,\n defaultNotebookSettings: { isMinimapEnabled: true },\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.handleDelete = this.handleDelete.bind(this);\n this.handleDeleteConfirm = this.handleDeleteConfirm.bind(this);\n this.handleDeleteCancel = this.handleDeleteCancel.bind(this);\n this.handleEditorInitialized = this.handleEditorInitialized.bind(this);\n this.handleEditorWillDestroy = this.handleEditorWillDestroy.bind(this);\n this.handleEditorChange = this.handleEditorChange.bind(this);\n this.handleFind = this.handleFind.bind(this);\n this.handleMinimapChange = this.handleMinimapChange.bind(this);\n this.handleWordWrapChange = this.handleWordWrapChange.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.handlePanelDropped = this.handlePanelDropped.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.handleTabBlur = this.handleTabBlur.bind(this);\n this.handleTabClick = this.handleTabClick.bind(this);\n this.handleTabFocus = this.handleTabFocus.bind(this);\n this.handleTransformLinkUri = this.handleTransformLinkUri.bind(this);\n this.handleOverwrite = this.handleOverwrite.bind(this);\n this.handlePreviewPromotion = this.handlePreviewPromotion.bind(this);\n this.getDropdownOverflowActions =\n this.getDropdownOverflowActions.bind(this);\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\n const { isDashboardActive, session, sessionLanguage, panelState } = props;\n\n let settings: editor.IStandaloneEditorConstructionOptions = {\n value: '',\n language: '',\n wordWrap: 'off',\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 showDeleteModal: false,\n showSaveAsModal: false,\n\n scriptCode: '',\n };\n\n log.debug('constructor', props, this.state);\n }\n\n componentDidMount(): void {\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 glEventHub.on(PanelEvent.DROPPED, this.handlePanelDropped);\n glContainer.on(\n NotebookEvent.PROMOTE_FROM_PREVIEW,\n this.handlePreviewPromotion\n );\n }\n\n componentDidUpdate(\n prevProps: NotebookPanelProps,\n prevState: NotebookPanelState\n ): void {\n const { isPreview, settings } = this.state;\n const { wordWrap } = settings;\n const { defaultNotebookSettings } = this.props;\n if (isPreview !== prevState.isPreview) {\n this.setPreviewStatus();\n }\n if (wordWrap !== prevState.settings.wordWrap) {\n this.updateEditorWordWrap();\n this.debouncedSavePanelState();\n }\n if (\n defaultNotebookSettings.isMinimapEnabled !==\n prevProps.defaultNotebookSettings.isMinimapEnabled\n ) {\n this.updateEditorMinimap();\n }\n }\n\n componentWillUnmount(): void {\n this.debouncedSavePanelState.flush();\n this.pending.cancel();\n\n const { glEventHub, glContainer } = this.props;\n\n const { fileMetadata, isPreview } = this.state;\n glEventHub.off(NotebookEvent.RENAME_FILE, this.handleRenameFile);\n glEventHub.off(PanelEvent.DROPPED, this.handlePanelDropped);\n glContainer.off(\n NotebookEvent.PROMOTE_FROM_PREVIEW,\n this.handlePreviewPromotion\n );\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 editor?: editor.IStandaloneCodeEditor;\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 /**\n * Adds a beforeClose handler to check if a notebook needs to be saved\n * Call panel close with force if the check can be skipped\n *\n * Note that firing a close event manually may trigger before state update occurs\n * In those instances, use force\n */\n initTabCloseOverride(): void {\n const { glContainer } = this.props;\n glContainer.beforeClose((options?: CloseOptions) => {\n if (options?.force === true) {\n return true;\n }\n\n const { changeCount, savedChangeCount } = this.state;\n if (changeCount !== savedChangeCount) {\n this.setState({ showCloseModal: true });\n return false;\n }\n\n return true;\n });\n }\n\n initTabClasses(tab: Tab): void {\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 | undefined {\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(): void {\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 if (settings.wordWrap === undefined) {\n settings.wordWrap = 'off';\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 !== undefined) {\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(): void {\n this.setState(({ changeCount }) => ({ savedChangeCount: changeCount }));\n }\n\n setPreviewStatus(): void {\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 handlePreviewPromotion(): void {\n this.removePreviewStatus();\n }\n\n getSettings = memoize(\n (\n initialSettings: editor.IStandaloneEditorConstructionOptions,\n isMinimapEnabled: boolean\n ): editor.IStandaloneEditorConstructionOptions => ({\n ...initialSettings,\n minimap: { enabled: isMinimapEnabled },\n })\n );\n\n getOverflowActions = memoize(\n (isMinimapEnabled: boolean, isWordWrapEnabled: boolean) => [\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 title: 'Copy File',\n icon: vsCopy,\n action: this.handleCopy,\n group: ContextActions.groups.medium,\n order: 20,\n },\n {\n title: 'Rename File',\n icon: dhICursor,\n action: this.handleShowRename,\n group: ContextActions.groups.medium,\n order: 30,\n },\n {\n title: 'Delete File',\n icon: vsTrash,\n action: this.handleDelete,\n group: ContextActions.groups.medium,\n order: 40,\n },\n {\n title: 'Show Minimap',\n icon: isMinimapEnabled ? vsCheck : undefined,\n action: this.handleMinimapChange,\n group: ContextActions.groups.low,\n shortcut: SHORTCUTS.NOTEBOOK.MINIMAP,\n order: 20,\n },\n {\n title: 'Word Wrap',\n icon: isWordWrapEnabled ? vsCheck : undefined,\n action: this.handleWordWrapChange,\n group: ContextActions.groups.low,\n shortcut: SHORTCUTS.NOTEBOOK.WORDWRAP,\n order: 30,\n },\n ]\n );\n\n savePanelState(): void {\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 =\n changeCount !== savedChangeCount ? value : undefined;\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.setState({ showCloseModal: false });\n const { glContainer } = this.props;\n glContainer.close({ force: true });\n }\n\n handleCloseSave(): void {\n this.setState({ showCloseModal: false });\n if (this.save()) {\n const { glContainer } = this.props;\n glContainer.close({ force: true });\n }\n }\n\n handleCloseCancel(): void {\n this.setState({ showCloseModal: false });\n }\n\n /**\n * Closes overwritten tabs\n * @param fileName The name of the file to be overwritten\n */\n handleOverwrite(fileName: string): void {\n const { glEventHub } = this.props;\n\n glEventHub.emit(\n NotebookEvent.CLOSE_FILE,\n {\n id: fileName,\n itemName: fileName,\n },\n { force: true }\n );\n\n this.focus();\n }\n\n async handleCopy(): Promise<void> {\n const { fileStorage, glEventHub, session } = this.props;\n const { fileMetadata, settings } = this.state;\n assertNotNull(fileMetadata);\n const { language } = settings;\n const { itemName } = fileMetadata;\n const copyName = await FileUtils.getUniqueCopyFileName(\n fileStorage,\n itemName\n );\n log.debug('handleCopy', fileMetadata, itemName, copyName);\n await fileStorage.copyFile(itemName, copyName);\n const newFileMetadata = { id: copyName, itemName: copyName };\n const notebookSettings = {\n value: null,\n language,\n };\n glEventHub.emit(\n NotebookEvent.SELECT_NOTEBOOK,\n session,\n language,\n notebookSettings,\n newFileMetadata,\n true\n );\n }\n\n handleDelete(): void {\n log.debug('handleDelete, pending confirmation');\n this.setState({ showDeleteModal: true });\n }\n\n async handleDeleteConfirm(): Promise<void> {\n const { fileStorage, glContainer, glEventHub } = this.props;\n const { fileMetadata } = this.state;\n\n log.debug('handleDeleteConfirm', fileMetadata?.itemName);\n this.setState({ showDeleteModal: false });\n\n if (!fileMetadata) {\n return;\n }\n\n if (\n FileUtils.hasPath(fileMetadata.itemName) &&\n // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions\n (await FileUtils.fileExists(fileStorage, fileMetadata.itemName))\n ) {\n glEventHub.emit(NotebookEvent.CLOSE_FILE, fileMetadata, { force: true });\n fileStorage.deleteFile(fileMetadata.itemName);\n } else {\n glContainer.close({ force: true });\n }\n }\n\n handleDeleteCancel(): void {\n this.setState({ showDeleteModal: false });\n }\n\n handleEditorInitialized(innerEditor: editor.IStandaloneCodeEditor): void {\n this.editor = innerEditor;\n }\n\n handleEditorWillDestroy(): void {\n this.editor = 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(): void {\n if (this.notebook) {\n this.notebook.toggleFind();\n }\n }\n\n updateEditorMinimap(): void {\n if (this.editor) {\n const { defaultNotebookSettings } = this.props;\n this.editor.updateOptions({\n minimap: { enabled: defaultNotebookSettings.isMinimapEnabled },\n });\n }\n }\n\n handleMinimapChange(): void {\n const { defaultNotebookSettings, updateSettings } = this.props;\n const newSettings = {\n defaultNotebookSettings: {\n isMinimapEnabled: !defaultNotebookSettings.isMinimapEnabled,\n },\n };\n updateSettings(newSettings);\n }\n\n updateEditorWordWrap(): void {\n if (this.editor) {\n const { settings } = this.state;\n const { wordWrap } = settings;\n this.editor.updateOptions({\n wordWrap,\n });\n }\n }\n\n handleWordWrapChange(): void {\n if (this.editor) {\n this.setState(prevState => {\n const { settings } = prevState;\n const wordWrap = settings.wordWrap === 'on' ? 'off' : 'on';\n return {\n settings: {\n ...settings,\n wordWrap,\n },\n };\n });\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: React.MouseEvent<HTMLAnchorElement>): void {\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(): void {\n this.setState({\n error: undefined,\n isLoaded: true,\n isLoading: false,\n });\n }\n\n handleLoadError(errorParam: { message?: string | undefined }): void {\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(): void {\n log.debug('handleSave');\n this.save();\n }\n\n handleSaveSuccess(file: File): void {\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): void {\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(): void {\n this.setState({ showSaveAsModal: false });\n }\n\n handleSaveAsSubmit(name: string, isOverwrite = false): void {\n if (isOverwrite) {\n this.handleOverwrite(name);\n }\n\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(\n oldName: string,\n newName: string,\n panelState?: PanelState\n ): void {\n const { fileMetadata, panelState: curPanelState } = this.state;\n const { glContainer } = this.props;\n\n if (\n fileMetadata?.itemName === `/${newName}` &&\n panelState &&\n JSON.stringify(curPanelState) !== JSON.stringify(panelState)\n ) {\n glContainer.close();\n return;\n }\n\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 handlePanelDropped(droppedId: string): void {\n const {\n metadata: { id },\n } = this.props;\n // re-render necessary for portal after being dropped\n if (droppedId === id) this.forceUpdate();\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 handleTabClick(e: MouseEvent): void {\n log.debug('handle NotebookPanel tab click');\n this.focus();\n if (e.detail === 2) {\n this.removePreviewStatus();\n }\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 || 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 getDropdownOverflowActions(): DropdownAction[] {\n const { defaultNotebookSettings } = this.props;\n const { settings: initialSettings } = this.state;\n return this.getOverflowActions(\n defaultNotebookSettings.isMinimapEnabled,\n this.getSettings(\n initialSettings,\n defaultNotebookSettings.isMinimapEnabled\n ).wordWrap === 'on'\n );\n }\n\n render(): ReactElement {\n const {\n fileStorage,\n glContainer,\n glContainer: { tab },\n glEventHub,\n defaultNotebookSettings,\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 showDeleteModal,\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 settings = this.getSettings(\n initialSettings,\n defaultNotebookSettings.isMinimapEnabled\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 action: this.handleMinimapChange,\n shortcut: SHORTCUTS.NOTEBOOK.MINIMAP,\n },\n {\n action: this.handleWordWrapChange,\n shortcut: SHORTCUTS.NOTEBOOK.WORDWRAP,\n },\n ];\n const disabledRunButtonTooltip = ScriptEditorUtils.getDisabledRunTooltip(\n isSessionConnected,\n isLanguageMatching,\n 'Notebook extension',\n 'Run'\n );\n const disabledRunSelectedButtonTooltip =\n 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 != null &&\n ReactDOM.createPortal(\n <span\n className={classNames(\n NotebookPanel.UNSAVED_INDICATOR_CLASS_NAME,\n {\n [NotebookPanel.UNSAVED_STATUS_CLASS_NAME]:\n changeCount !== savedChangeCount,\n }\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 onTabClicked={this.handleTabClick}\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 kind=\"ghost\"\n className=\"btn-play\"\n onClick={this.handleRunAll}\n disabled={runButtonsDisabled}\n icon={<FontAwesomeIcon icon={vsPlay} transform=\"grow-4\" />}\n tooltip={`Run ${SHORTCUTS.NOTEBOOK.RUN.getDisplayText()}`}\n aria-label=\"Run\"\n />\n {disabledRunButtonTooltip != null && (\n <Tooltip>{disabledRunButtonTooltip}</Tooltip>\n )}\n </span>\n <span>\n <Button\n kind=\"ghost\"\n className=\"btn-play\"\n onClick={this.handleRunSelected}\n disabled={runButtonsDisabled}\n icon={\n <FontAwesomeIcon\n icon={dhRunSelection}\n transform=\"grow-4\"\n />\n }\n tooltip={`Run Selected ${SHORTCUTS.NOTEBOOK.RUN_SELECTED.getDisplayText()}`}\n aria-label=\"Run Selected\"\n />\n {disabledRunSelectedButtonTooltip != null && (\n <Tooltip>{disabledRunSelectedButtonTooltip}</Tooltip>\n )}\n </span>\n <Button\n kind=\"ghost\"\n className=\"mr-auto\"\n disabled={toolbarDisabled}\n onClick={this.handleSave}\n icon={vsSave}\n tooltip={`Save ${GLOBAL_SHORTCUTS.SAVE.getDisplayText()}`}\n aria-label=\"Save\"\n />\n <Button\n kind=\"ghost\"\n className=\"btn-overflow btn-link-icon\"\n disabled={toolbarDisabled}\n icon={vsKebabVertical}\n tooltip=\"More Actions...\"\n onClick={() => {\n // no-op: click is handled in `DropdownMenu`\n }}\n >\n <DropdownMenu\n actions={this.getDropdownOverflowActions}\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 onEditorInitialized={this.handleEditorInitialized}\n onEditorWillDestroy={this.handleEditorWillDestroy}\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={showDeleteModal}\n headerText={`Are you sure you want to delete \"${itemName}\"?`}\n bodyText=\"You cannot undo this action.\"\n onCancel={this.handleDeleteCancel}\n onConfirm={this.handleDeleteConfirm}\n confirmButtonText=\"Delete\"\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): Pick<\n NotebookPanelProps,\n 'defaultNotebookSettings' | 'fileStorage' | 'session' | 'sessionLanguage'\n> => {\n const fileStorage = getFileStorage(state);\n const defaultNotebookSettings = getDefaultNotebookSettings(state);\n const sessionWrapper = getDashboardSessionWrapper(\n state,\n ownProps.localDashboardId\n );\n\n const { session, config: sessionConfig } = sessionWrapper ?? {};\n const { type: sessionLanguage } = sessionConfig ?? {};\n return {\n fileStorage,\n defaultNotebookSettings: defaultNotebookSettings as NotebookSetting,\n session,\n sessionLanguage,\n };\n};\n\nconst ConnectedNotebookPanel = connect(\n mapStateToProps,\n { updateSettings: updateSettingsAction },\n null,\n { forwardRef: true }\n)(NotebookPanel);\n\nexport default ConnectedNotebookPanel;\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","Button","ScriptEditor","ScriptEditorUtils","SHORTCUTS","FileUtils","NewItemModal","vsSave","vsKebabVertical","dhFileSearch","vsPlay","dhRunSelection","vsCheck","vsCopy","dhICursor","vsTrash","getFileStorage","updateSettings","updateSettingsAction","getDefaultNotebookSettings","classNames","debounce","PanelEvent","Log","assertNotNull","Pending","PromiseUtils","ConsoleEvent","NotebookEvent","getDashboardSessionWrapper","Panel","MarkdownNotebook","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","log","module","DEBOUNCE_PANEL_STATE_UPDATE","NotebookPanel","handleError","error","isCanceled","unsavedNotebookCount","document","querySelectorAll","concat","UNSAVED_INDICATOR_CLASS_NAME","UNSAVED_STATUS_CLASS_NAME","length","languageFromFileName","fileName","extension","getExtension","toLowerCase","constructor","props","_defineProperty","initialSettings","isMinimapEnabled","_objectSpread","minimap","enabled","isWordWrapEnabled","title","icon","action","handleFind","group","groups","high","shortcut","NOTEBOOK","FIND","order","handleCopy","medium","handleShowRename","handleDelete","undefined","handleMinimapChange","low","MINIMAP","handleWordWrapChange","WORDWRAP","handleBlur","bind","handleCloseCancel","handleCloseDiscard","handleCloseSave","handleDeleteConfirm","handleDeleteCancel","handleEditorInitialized","handleEditorWillDestroy","handleEditorChange","handleFocus","handleLinkClick","handleLoadSuccess","handleLoadError","handlePanelDropped","handleRenameFile","handleResize","handleRunCommand","handleRunAll","handleRunSelected","handleSave","handleSaveAsCancel","handleSaveAsSubmit","handleSaveError","handleSaveSuccess","handleSessionOpened","handleSessionClosed","handleShow","handleTab","handleTabBlur","handleTabClick","handleTabFocus","handleTransformLinkUri","handleOverwrite","handlePreviewPromotion","getDropdownOverflowActions","pending","debouncedSavePanelState","savePanelState","debouncedLoad","load","notebook","tabTitleElement","tabInitOnce","isDashboardActive","session","sessionLanguage","panelState","settings","value","language","wordWrap","fileMetadata","isPreview","hasFileId","hasPath","itemName","isUnsaved","changeCount","state","isFocused","isLoading","isLoaded","savedChangeCount","showCloseModal","showDeleteModal","showSaveAsModal","scriptCode","debug","componentDidMount","glContainer","glEventHub","tab","initTab","initNotebookContent","on","RENAME_FILE","DROPPED","PROMOTE_FROM_PREVIEW","componentDidUpdate","prevProps","prevState","defaultNotebookSettings","setPreviewStatus","updateEditorWordWrap","updateEditorMinimap","componentWillUnmount","flush","cancel","off","emit","UNREGISTER_FILE","initTabCloseOverride","initTabClasses","beforeClose","options","force","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","_NotebookPanel$langua","filename","prevItemName","getBaseName","updatedSettings","content","catch","save","saveContent","updateSavedChangeCount","saveFile","basename","_ref","remove","removePreviewStatus","dehydratedValue","dehydratedSettings","close","focus","_this","_asyncToGenerator","copyName","getUniqueCopyFileName","copyFile","newFileMetadata","notebookSettings","SELECT_NOTEBOOK","_this2","fileExists","deleteFile","innerEditor","editor","e","debug2","isUndoing","isRedoing","toggleFind","updateOptions","newSettings","event","notebooksUrl","href","currentTarget","startsWith","stopPropagation","preventDefault","notebookPath","substring","replace","errorParam","isTimedOut","file","_NotebookPanel$langua2","oldMetadata","name","_this$getNotebookValu","isOverwrite","arguments","oldName","newName","curPanelState","JSON","stringify","_this$notebook","updateDimensions","command","runCommand","_this$notebook$getVal","getSelectedCommand","_ref2","_this$notebook2","droppedId","forceUpdate","_len","args","Array","_key","isHidden","detail","src","endsWith","charAt","itemUri","URL","requestAnimationFrame","createNotebook","CREATE_NOTEBOOK","SEND_COMMAND","_ref3","getOverflowActions","getSettings","render","_fileMetadata$itemNam","_settings$value","focusOnMount","DEFAULT_NAME","isMarkdown","isExistingItem","isSessionConnected","isLanguageMatching","runButtonsDisabled","toolbarDisabled","contextActions","SAVE","disabledRunButtonTooltip","getDisabledRunTooltip","disabledRunSelectedButtonTooltip","additionalActions","portal","find","children","createPortal","className","componentPanel","onTab","onResize","onShow","onTabClicked","onTabFocus","onTabBlur","onSessionOpen","onSessionClose","onFocus","onBlur","renderTabTooltip","kind","onClick","disabled","transform","tooltip","RUN","getDisplayText","RUN_SELECTED","actions","popperOptions","POPPER_OPTIONS","onChange","onRunCommand","onEditorInitialized","onEditorWillDestroy","ref","onLinkClick","onRunCode","transformImageUri","transformLinkUri","isOpen","type","defaultValue","onSubmit","onCancel","notifyOnExtensionChange","storage","headerText","bodyText","onConfirm","confirmButtonText","onDiscard","discardButtonText","placement","mapStateToProps","ownProps","sessionWrapper","localDashboardId","config","sessionConfig","ConnectedNotebookPanel","forwardRef"],"sources":["../../src/panels/NotebookPanel.tsx"],"sourcesContent":["// Wrapper for the Notebook for use in a golden layout container\nimport React, { Component, 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 Button,\n DropdownAction,\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 vsCheck,\n vsCopy,\n dhICursor,\n vsTrash,\n} from '@deephaven/icons';\nimport {\n getFileStorage,\n updateSettings as updateSettingsAction,\n RootState,\n WorkspaceSettings,\n getDefaultNotebookSettings,\n} from '@deephaven/redux';\nimport classNames from 'classnames';\nimport debounce from 'lodash.debounce';\nimport {\n DashboardPanelProps,\n PanelEvent,\n PanelMetadata,\n} from '@deephaven/dashboard';\nimport Log from '@deephaven/log';\nimport { assertNotNull, Pending, PromiseUtils } from '@deephaven/utils';\nimport type { Tab, CloseOptions } from '@deephaven/golden-layout';\nimport type { IdeSession } from '@deephaven/jsapi-types';\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 extends PanelMetadata {\n id: string;\n}\ninterface NotebookSetting {\n isMinimapEnabled: boolean;\n}\n\ninterface FileMetadata {\n itemName: string;\n id: string;\n}\n\ninterface PanelState {\n isPreview?: boolean;\n settings: editor.IStandaloneEditorConstructionOptions;\n fileMetadata: FileMetadata | null;\n}\n\ninterface NotebookPanelProps extends DashboardPanelProps {\n fileStorage: FileStorage;\n isDashboardActive: boolean;\n isPreview: boolean;\n metadata: Metadata;\n session: IdeSession;\n sessionLanguage: string;\n panelState: PanelState;\n notebooksUrl: string;\n defaultNotebookSettings: NotebookSetting;\n updateSettings: (settings: Partial<WorkspaceSettings>) => void;\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: editor.IStandaloneEditorConstructionOptions;\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 showDeleteModal: 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 UNSAVED_INDICATOR_CLASS_NAME = 'editor-unsaved-indicator';\n\n static UNSAVED_STATUS_CLASS_NAME = 'is-unsaved';\n\n static handleError(error: unknown): void {\n if (PromiseUtils.isCanceled(error)) {\n return;\n }\n log.error(error);\n }\n\n /**\n * Returns number of unsaved notebooks.\n */\n static unsavedNotebookCount(): number {\n return document.querySelectorAll(\n `.${NotebookPanel.UNSAVED_INDICATOR_CLASS_NAME}.${NotebookPanel.UNSAVED_STATUS_CLASS_NAME}`\n ).length;\n }\n\n static defaultProps = {\n isDashboardActive: true,\n isPreview: false,\n session: null,\n sessionLanguage: null,\n defaultNotebookSettings: { isMinimapEnabled: true },\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.handleDelete = this.handleDelete.bind(this);\n this.handleDeleteConfirm = this.handleDeleteConfirm.bind(this);\n this.handleDeleteCancel = this.handleDeleteCancel.bind(this);\n this.handleEditorInitialized = this.handleEditorInitialized.bind(this);\n this.handleEditorWillDestroy = this.handleEditorWillDestroy.bind(this);\n this.handleEditorChange = this.handleEditorChange.bind(this);\n this.handleFind = this.handleFind.bind(this);\n this.handleMinimapChange = this.handleMinimapChange.bind(this);\n this.handleWordWrapChange = this.handleWordWrapChange.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.handlePanelDropped = this.handlePanelDropped.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.handleTabBlur = this.handleTabBlur.bind(this);\n this.handleTabClick = this.handleTabClick.bind(this);\n this.handleTabFocus = this.handleTabFocus.bind(this);\n this.handleTransformLinkUri = this.handleTransformLinkUri.bind(this);\n this.handleOverwrite = this.handleOverwrite.bind(this);\n this.handlePreviewPromotion = this.handlePreviewPromotion.bind(this);\n this.getDropdownOverflowActions =\n this.getDropdownOverflowActions.bind(this);\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\n const { isDashboardActive, session, sessionLanguage, panelState } = props;\n\n let settings: editor.IStandaloneEditorConstructionOptions = {\n value: '',\n language: '',\n wordWrap: 'off',\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 showDeleteModal: false,\n showSaveAsModal: false,\n\n scriptCode: '',\n };\n\n log.debug('constructor', props, this.state);\n }\n\n componentDidMount(): void {\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 glEventHub.on(PanelEvent.DROPPED, this.handlePanelDropped);\n glContainer.on(\n NotebookEvent.PROMOTE_FROM_PREVIEW,\n this.handlePreviewPromotion\n );\n }\n\n componentDidUpdate(\n prevProps: NotebookPanelProps,\n prevState: NotebookPanelState\n ): void {\n const { isPreview, settings } = this.state;\n const { wordWrap } = settings;\n const { defaultNotebookSettings } = this.props;\n if (isPreview !== prevState.isPreview) {\n this.setPreviewStatus();\n }\n if (wordWrap !== prevState.settings.wordWrap) {\n this.updateEditorWordWrap();\n this.debouncedSavePanelState();\n }\n if (\n defaultNotebookSettings.isMinimapEnabled !==\n prevProps.defaultNotebookSettings.isMinimapEnabled\n ) {\n this.updateEditorMinimap();\n }\n }\n\n componentWillUnmount(): void {\n this.debouncedSavePanelState.flush();\n this.pending.cancel();\n\n const { glEventHub, glContainer } = this.props;\n\n const { fileMetadata, isPreview } = this.state;\n glEventHub.off(NotebookEvent.RENAME_FILE, this.handleRenameFile);\n glEventHub.off(PanelEvent.DROPPED, this.handlePanelDropped);\n glContainer.off(\n NotebookEvent.PROMOTE_FROM_PREVIEW,\n this.handlePreviewPromotion\n );\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 editor?: editor.IStandaloneCodeEditor;\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 /**\n * Adds a beforeClose handler to check if a notebook needs to be saved\n * Call panel close with force if the check can be skipped\n *\n * Note that firing a close event manually may trigger before state update occurs\n * In those instances, use force\n */\n initTabCloseOverride(): void {\n const { glContainer } = this.props;\n glContainer.beforeClose((options?: CloseOptions) => {\n if (options?.force === true) {\n return true;\n }\n\n const { changeCount, savedChangeCount } = this.state;\n if (changeCount !== savedChangeCount) {\n this.setState({ showCloseModal: true });\n return false;\n }\n\n return true;\n });\n }\n\n initTabClasses(tab: Tab): void {\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 | undefined {\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(): void {\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 if (settings.wordWrap === undefined) {\n settings.wordWrap = 'off';\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 !== undefined) {\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(): void {\n this.setState(({ changeCount }) => ({ savedChangeCount: changeCount }));\n }\n\n setPreviewStatus(): void {\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 handlePreviewPromotion(): void {\n this.removePreviewStatus();\n }\n\n getSettings = memoize(\n (\n initialSettings: editor.IStandaloneEditorConstructionOptions,\n isMinimapEnabled: boolean\n ): editor.IStandaloneEditorConstructionOptions => ({\n ...initialSettings,\n minimap: { enabled: isMinimapEnabled },\n })\n );\n\n getOverflowActions = memoize(\n (isMinimapEnabled: boolean, isWordWrapEnabled: boolean) => [\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 title: 'Copy File',\n icon: vsCopy,\n action: this.handleCopy,\n group: ContextActions.groups.medium,\n order: 20,\n },\n {\n title: 'Rename File',\n icon: dhICursor,\n action: this.handleShowRename,\n group: ContextActions.groups.medium,\n order: 30,\n },\n {\n title: 'Delete File',\n icon: vsTrash,\n action: this.handleDelete,\n group: ContextActions.groups.medium,\n order: 40,\n },\n {\n title: 'Show Minimap',\n icon: isMinimapEnabled ? vsCheck : undefined,\n action: this.handleMinimapChange,\n group: ContextActions.groups.low,\n shortcut: SHORTCUTS.NOTEBOOK.MINIMAP,\n order: 20,\n },\n {\n title: 'Word Wrap',\n icon: isWordWrapEnabled ? vsCheck : undefined,\n action: this.handleWordWrapChange,\n group: ContextActions.groups.low,\n shortcut: SHORTCUTS.NOTEBOOK.WORDWRAP,\n order: 30,\n },\n ]\n );\n\n savePanelState(): void {\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 =\n changeCount !== savedChangeCount ? value : undefined;\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.setState({ showCloseModal: false });\n const { glContainer } = this.props;\n glContainer.close({ force: true });\n }\n\n handleCloseSave(): void {\n this.setState({ showCloseModal: false });\n if (this.save()) {\n const { glContainer } = this.props;\n glContainer.close({ force: true });\n }\n }\n\n handleCloseCancel(): void {\n this.setState({ showCloseModal: false });\n }\n\n /**\n * Closes overwritten tabs\n * @param fileName The name of the file to be overwritten\n */\n handleOverwrite(fileName: string): void {\n const { glEventHub } = this.props;\n\n glEventHub.emit(\n NotebookEvent.CLOSE_FILE,\n {\n id: fileName,\n itemName: fileName,\n },\n { force: true }\n );\n\n this.focus();\n }\n\n async handleCopy(): Promise<void> {\n const { fileStorage, glEventHub, session } = this.props;\n const { fileMetadata, settings } = this.state;\n assertNotNull(fileMetadata);\n const { language } = settings;\n const { itemName } = fileMetadata;\n const copyName = await FileUtils.getUniqueCopyFileName(\n fileStorage,\n itemName\n );\n log.debug('handleCopy', fileMetadata, itemName, copyName);\n await fileStorage.copyFile(itemName, copyName);\n const newFileMetadata = { id: copyName, itemName: copyName };\n const notebookSettings = {\n value: null,\n language,\n };\n glEventHub.emit(\n NotebookEvent.SELECT_NOTEBOOK,\n session,\n language,\n notebookSettings,\n newFileMetadata,\n true\n );\n }\n\n handleDelete(): void {\n log.debug('handleDelete, pending confirmation');\n this.setState({ showDeleteModal: true });\n }\n\n async handleDeleteConfirm(): Promise<void> {\n const { fileStorage, glContainer, glEventHub } = this.props;\n const { fileMetadata } = this.state;\n\n log.debug('handleDeleteConfirm', fileMetadata?.itemName);\n this.setState({ showDeleteModal: false });\n\n if (!fileMetadata) {\n return;\n }\n\n if (\n FileUtils.hasPath(fileMetadata.itemName) &&\n // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions\n (await FileUtils.fileExists(fileStorage, fileMetadata.itemName))\n ) {\n glEventHub.emit(NotebookEvent.CLOSE_FILE, fileMetadata, { force: true });\n fileStorage.deleteFile(fileMetadata.itemName);\n } else {\n glContainer.close({ force: true });\n }\n }\n\n handleDeleteCancel(): void {\n this.setState({ showDeleteModal: false });\n }\n\n handleEditorInitialized(innerEditor: editor.IStandaloneCodeEditor): void {\n this.editor = innerEditor;\n }\n\n handleEditorWillDestroy(): void {\n this.editor = 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(): void {\n if (this.notebook) {\n this.notebook.toggleFind();\n }\n }\n\n updateEditorMinimap(): void {\n if (this.editor) {\n const { defaultNotebookSettings } = this.props;\n this.editor.updateOptions({\n minimap: { enabled: defaultNotebookSettings.isMinimapEnabled },\n });\n }\n }\n\n handleMinimapChange(): void {\n const { defaultNotebookSettings, updateSettings } = this.props;\n const newSettings = {\n defaultNotebookSettings: {\n isMinimapEnabled: !defaultNotebookSettings.isMinimapEnabled,\n },\n };\n updateSettings(newSettings);\n }\n\n updateEditorWordWrap(): void {\n if (this.editor) {\n const { settings } = this.state;\n const { wordWrap } = settings;\n this.editor.updateOptions({\n wordWrap,\n });\n }\n }\n\n handleWordWrapChange(): void {\n if (this.editor) {\n this.setState(prevState => {\n const { settings } = prevState;\n const wordWrap = settings.wordWrap === 'on' ? 'off' : 'on';\n return {\n settings: {\n ...settings,\n wordWrap,\n },\n };\n });\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: React.MouseEvent<HTMLAnchorElement>): void {\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(): void {\n this.setState({\n error: undefined,\n isLoaded: true,\n isLoading: false,\n });\n }\n\n handleLoadError(errorParam: { message?: string | undefined }): void {\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(): void {\n log.debug('handleSave');\n this.save();\n }\n\n handleSaveSuccess(file: File): void {\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): void {\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(): void {\n this.setState({ showSaveAsModal: false });\n }\n\n handleSaveAsSubmit(name: string, isOverwrite = false): void {\n if (isOverwrite) {\n this.handleOverwrite(name);\n }\n\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(\n oldName: string,\n newName: string,\n panelState?: PanelState\n ): void {\n const { fileMetadata, panelState: curPanelState } = this.state;\n const { glContainer } = this.props;\n\n if (\n fileMetadata?.itemName === `/${newName}` &&\n panelState &&\n JSON.stringify(curPanelState) !== JSON.stringify(panelState)\n ) {\n glContainer.close();\n return;\n }\n\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 handlePanelDropped(droppedId: string): void {\n const {\n metadata: { id },\n } = this.props;\n // re-render necessary for portal after being dropped\n if (droppedId === id) this.forceUpdate();\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 handleTabClick(e: MouseEvent): void {\n log.debug('handle NotebookPanel tab click');\n this.focus();\n if (e.detail === 2) {\n this.removePreviewStatus();\n }\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 || 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 getDropdownOverflowActions(): DropdownAction[] {\n const { defaultNotebookSettings } = this.props;\n const { settings: initialSettings } = this.state;\n return this.getOverflowActions(\n defaultNotebookSettings.isMinimapEnabled,\n this.getSettings(\n initialSettings,\n defaultNotebookSettings.isMinimapEnabled\n ).wordWrap === 'on'\n );\n }\n\n render(): ReactElement {\n const {\n fileStorage,\n glContainer,\n glContainer: { tab },\n glEventHub,\n defaultNotebookSettings,\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 showDeleteModal,\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 settings = this.getSettings(\n initialSettings,\n defaultNotebookSettings.isMinimapEnabled\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 action: this.handleMinimapChange,\n shortcut: SHORTCUTS.NOTEBOOK.MINIMAP,\n },\n {\n action: this.handleWordWrapChange,\n shortcut: SHORTCUTS.NOTEBOOK.WORDWRAP,\n },\n ];\n const disabledRunButtonTooltip = ScriptEditorUtils.getDisabledRunTooltip(\n isSessionConnected,\n isLanguageMatching,\n 'Notebook extension',\n 'Run'\n );\n const disabledRunSelectedButtonTooltip =\n 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 != null &&\n ReactDOM.createPortal(\n <span\n className={classNames(\n NotebookPanel.UNSAVED_INDICATOR_CLASS_NAME,\n {\n [NotebookPanel.UNSAVED_STATUS_CLASS_NAME]:\n changeCount !== savedChangeCount,\n }\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 onTabClicked={this.handleTabClick}\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 kind=\"ghost\"\n className=\"btn-play\"\n onClick={this.handleRunAll}\n disabled={runButtonsDisabled}\n icon={<FontAwesomeIcon icon={vsPlay} transform=\"grow-4\" />}\n tooltip={`Run ${SHORTCUTS.NOTEBOOK.RUN.getDisplayText()}`}\n aria-label=\"Run\"\n />\n {disabledRunButtonTooltip != null && (\n <Tooltip>{disabledRunButtonTooltip}</Tooltip>\n )}\n </span>\n <span>\n <Button\n kind=\"ghost\"\n className=\"btn-play\"\n onClick={this.handleRunSelected}\n disabled={runButtonsDisabled}\n icon={\n <FontAwesomeIcon\n icon={dhRunSelection}\n transform=\"grow-4\"\n />\n }\n tooltip={`Run Selected ${SHORTCUTS.NOTEBOOK.RUN_SELECTED.getDisplayText()}`}\n aria-label=\"Run Selected\"\n />\n {disabledRunSelectedButtonTooltip != null && (\n <Tooltip>{disabledRunSelectedButtonTooltip}</Tooltip>\n )}\n </span>\n <Button\n kind=\"ghost\"\n className=\"mr-auto\"\n disabled={toolbarDisabled}\n onClick={this.handleSave}\n icon={vsSave}\n tooltip={`Save ${GLOBAL_SHORTCUTS.SAVE.getDisplayText()}`}\n aria-label=\"Save\"\n />\n <Button\n kind=\"ghost\"\n className=\"btn-overflow\"\n disabled={toolbarDisabled}\n icon={vsKebabVertical}\n tooltip=\"More Actions...\"\n onClick={() => {\n // no-op: click is handled in `DropdownMenu`\n }}\n >\n <DropdownMenu\n actions={this.getDropdownOverflowActions}\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 onEditorInitialized={this.handleEditorInitialized}\n onEditorWillDestroy={this.handleEditorWillDestroy}\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={showDeleteModal}\n headerText={`Are you sure you want to delete \"${itemName}\"?`}\n bodyText=\"You cannot undo this action.\"\n onCancel={this.handleDeleteCancel}\n onConfirm={this.handleDeleteConfirm}\n confirmButtonText=\"Delete\"\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): Pick<\n NotebookPanelProps,\n 'defaultNotebookSettings' | 'fileStorage' | 'session' | 'sessionLanguage'\n> => {\n const fileStorage = getFileStorage(state);\n const defaultNotebookSettings = getDefaultNotebookSettings(state);\n const sessionWrapper = getDashboardSessionWrapper(\n state,\n ownProps.localDashboardId\n );\n\n const { session, config: sessionConfig } = sessionWrapper ?? {};\n const { type: sessionLanguage } = sessionConfig ?? {};\n return {\n fileStorage,\n defaultNotebookSettings: defaultNotebookSettings as NotebookSetting,\n session,\n sessionLanguage,\n };\n};\n\nconst ConnectedNotebookPanel = connect(\n mapStateToProps,\n { updateSettings: updateSettingsAction },\n null,\n { forwardRef: true }\n)(NotebookPanel);\n\nexport default ConnectedNotebookPanel;\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sourceRoot":"","sources":["../../../../node_modules/@deephaven/components/scss/custom.scss","../../src/panels/PandasPanel.scss","../../../../node_modules/@deephaven/components/scss/bootstrap_overrides.scss"],"names":[],"mappings":"AAAA;ACEA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA,kBCoFa;EDnFb;EACA","file":"PandasPanel.css","sourcesContent":["/* stylelint-disable scss/at-import-no-partial-leading-underscore */\n// Consumers should be able to resolve bootstrap/ to node_modules/bootstrap\n\n//Make bootstrap functions available for use in overrides\n@import 'bootstrap/scss/_functions.scss';\n@import './bootstrap_overrides.scss';\n\n//_variable imports come after bootstrap default overrides,\n// makes all other variables and mixins from bootstrap available\n/// with just importing customer.scss\n@import 'bootstrap/scss/_variables.scss';\n@import 'bootstrap/scss/_mixins.scss';\n\n//New variables come after imports\n@import './new_variables.scss';\n","@import '@deephaven/components/scss/custom.scss';\n\n.btn-pandas {\n width: 100%;\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n justify-content: space-between;\n align-content: center;\n padding: $spacer-1 $spacer-2;\n background-color: $primary-dark;\n border: none;\n border-radius: 0;\n}\n","// Styling overrides for bootstrap\n@use 'sass:map';\n\n// Override / set color variables\n$red: var(--dh-color-visual-red);\n$orange: var(--dh-color-visual-orange);\n$yellow: var(--dh-color-visual-yellow);\n$green: var(--dh-color-visual-green);\n$blue: var(--dh-color-visual-blue);\n$purple: var(--dh-color-visual-purple);\n\n//Define our Gray scale\n$gray-100: var(--dh-color-gray-900, #fcfcfa);\n$gray-200: var(--dh-color-gray-800);\n$gray-300: var(--dh-color-gray-700);\n$gray-400: var(--dh-color-gray-600);\n$gray-500: var(--dh-color-gray-500);\n// intentional duplicate, scale doesn't line up otherwise\n// as we have gray-850 and spectrum doesn't and it is needed\n$gray-600: var(--dh-color-gray-500);\n$gray-700: var(--dh-color-gray-400);\n$gray-800: var(--dh-color-gray-300);\n$gray-850: var(--dh-color-gray-200);\n$gray-900: var(--dh-color-gray-75);\n$black: var(--dh-color-black, #1a171a);\n$white: var(--dh-color-white, #f0f0ee);\n\n//Define some UI colors\n$interfacegray: var(--dh-color-content-bg, #2d2a2e);\n$interfaceblue: var(--dh-color-accent-bg);\n$interfacewhite: $white;\n$interfaceblack: $black;\n$content-bg: var(--dh-color-content-bg, #2d2a2e);\n$background: var(--dh-color-bg);\n$foreground: var(--dh-color-fg);\n\n// Extend default Bootstrap $grays map\n$grays-custom: (\n '850': $gray-850,\n);\n$grays: () !default;\n$grays: map-merge($grays, $grays-custom);\n\n// Extend default Bootstrap $colors map\n$colors-custom: (\n 'black': $black,\n);\n$colors: () !default;\n$colors: map-merge($colors, $colors-custom);\n\n// Override default Bootstrap $theme-colors map by mapping each key to itself.\n// These will then be re-mapped inside of `button-outline-variant` and\n// `button-outline-variant` mixins in `bootstrap_override_mixins_buttons.scss`\n$theme-colors-self-map: ();\n@each $key\n in (\n 'primary',\n 'secondary',\n 'success',\n 'info',\n 'warning',\n 'danger',\n 'light',\n 'dark'\n )\n{\n $theme-colors-self-map: map.set($theme-colors-self-map, $key, $key);\n}\n$theme-colors: () !default;\n$theme-colors: map-merge($theme-colors, $theme-colors-self-map);\n\n// Used by bootstrap_override_mixins_buttons.scss to map Bootstrap colors to\n// DH semantic colors\n$bootstrap-dh-semantic-map: (\n 'primary': 'accent',\n 'secondary': 'neutral',\n 'success': 'positive',\n 'info': 'info',\n 'warning': 'notice',\n 'danger': 'negative',\n // We shouldn't be using these, but mapping so they work with our custom\n // `color-yiq` mixin. If we find a way to remove $light + $dark that are\n // defined in Bootstrap _variables.scss, we should remove these\n 'light': 'neutral',\n 'dark': 'neutral',\n);\n\n//Set default colors\n$body-bg: $black;\n$body-color: $interfacewhite;\n\n// Set brand colors\n$primary: var(--dh-color-accent-bg);\n$primary-hover: var(--dh-color-accent-hover-bg);\n$primary-dark: var(--dh-color-accent-down-bg);\n$primary-light: var(--dh-color-accent-1100);\n$secondary: var(--dh-color-neutral-bg);\n$secondary-hover: var(--dh-color-neutral-hover-bg);\n$success: $green;\n$info: $yellow;\n$warning: $orange;\n$danger: var(--dh-color-negative-bg);\n$danger-hover: var(--dh-color-negative-hover-bg);\n// We really don't want to use $light or $dark variables, but Bootstrap defines\n// them in _variables.scss. Explicitly setting them to ensure we are in control\n// of their values. If we can find a way to remove them, we should\n$light: var(--dh-color-gray-light);\n$dark: var(--dh-color-gray-dark);\n// Bootstrap doesn't define $mid, and we want to move away from this particular\n// semantic. Should be deleted by #1635\n$mid: var(--dh-color-gray-mid);\n\n$semantic-colors: (\n 'primary-hover': $primary-hover,\n 'primary-light': $primary-light,\n 'primary-dark': $primary-dark,\n 'mid': $mid,\n 'content-bg': $interfacegray,\n 'background': $interfaceblack,\n 'foreground': $interfacewhite,\n 'secondary-hover': $secondary-hover,\n 'danger-hover': $danger-hover,\n);\n\n$component-active-bg: $primary;\n$theme-color-interval: 9%;\n$yiq-contrasted-threshold: 180;\n\n// Override fonts\n$font-family-sans-serif:\n 'Fira Sans',\n -apple-system,\n blinkmacsystemfont,\n 'Segoe UI',\n 'Roboto',\n 'Helvetica Neue',\n arial,\n sans-serif; //fira sans then native system ui fallbacks\n$font-family-monospace: 'Fira Mono', menlo, monaco, consolas, 'Liberation Mono',\n 'Courier New', monospace;\n$font-family-base: $font-family-sans-serif;\n\n$headings-font-weight: 400;\n\n//Text overides\n$text-muted: $gray-400;\n\n//Style Selection highlight color\n$text-select-color: var(--dh-color-text-highlight);\n\n//Grid variables, same value as default just making easily accessible\n$grid-gutter-width: 30px;\n\n//Visual Overrides\n$border-radius: 4px;\n$box-shadow: 0 0.1rem 1rem hsla(var(--dh-color-black-hsl), 0.45); //because our UI is so dark, we need darker default shadows\n$box-shadow-900: 0 0.1rem 1rem hsla(var(--dh-color-true-black-hsl), 0.45); //darkest shadow for $black popups over $black UI\n\n//Override Btn\n$btn-border-radius: 4rem;\n$btn-padding-x: 1.5rem;\n$btn-transition:\n color 0.12s ease-in-out,\n background-color 0.12s ease-in-out,\n border-color 0.12s ease-in-out,\n box-shadow 0.12s ease-in-out; //default 0.15 is too long\n$btn-border-width: 2px;\n$btn-font-weight: var(--spectrum-global-font-weight-bold);\n\n//Override Inputs\n$input-bg: var(--dh-color-input-bg);\n$input-disabled-bg: var(--dh-color-input-disabled-bg);\n$input-color: var(--dh-color-input-fg);\n$input-border-color: var(--dh-color-input-border);\n$input-placeholder-color: var(--dh-color-input-placeholder);\n$input-focus-border-color: var(--dh-color-input-focus-border);\n\n$input-btn-focus-width: 0.2rem;\n$input-btn-focus-color: hsla(var(--dh-color-accent-hsl), 0.35);\n$input-btn-focus-box-shadow: 0 0 0 $input-btn-focus-width $input-btn-focus-color;\n\n//checkbox\n$custom-control-indicator-bg: $gray-600;\n$custom-control-indicator-active-bg: var(--dh-color-accent-1100);\n$custom-control-indicator-bg-size: 75% 75%;\n$custom-control-indicator-disabled-bg: $gray-800;\n$custom-control-indicator-checked-disabled-bg: $gray-800;\n$custom-control-label-disabled-color: $gray-400;\n\n// The $custom-select-indicator variable is used by Bootstrap to provide the\n// icon for the select dropdown. Inline svgs can't use CSS variables, so we hard\n// code the color to #929192 (the default value of --dh-color-gray-600). PR #1651\n// overrides this icon altogether for known dropdowns, so technically we may not\n// need this, but it's here in case there are any remaining instances.\n$custom-select-indicator-color: #929192;\n$custom-select-bg-size: 16px 16px;\n//dhSort icon encoded\n$custom-select-indicator: str-replace(\n url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='#{$custom-select-indicator-color}' d='M4 7l-.4-.8 4-3.7h.8l4 3.7-.4.8H4zm0 2l-.4.8 4 3.7h.8l4-3.7L12 9H4z'/%3E%3C/svg%3E\"),\n '#',\n '%23'\n);\n$custom-select-focus-box-shadow: $input-btn-focus-box-shadow;\n$custom-select-disabled-color: $gray-500;\n$custom-select-disabled-bg: $gray-800;\n\n//modal\n$modal-content-bg: $gray-200;\n$modal-content-border-width: 0;\n$modal-md: 550px;\n\n// Toast notification\n$toast-bg: var(--dh-color-accent-100);\n$toast-color: var(--dh-color-text);\n$toast-error-bg: var(--dh-color-negative-bg);\n$toast-error-color: var(--dh-color-text);\n\n//tooltips\n$tooltip-bg: var(--dh-color-tooltip-bg);\n$tooltip-color: var(--dh-color-tooltip-fg);\n$tooltip-box-shadow: 0 0.1rem 1.5rem 0.1rem var(--dh-color-tooltip-box-shadow);\n\n//drowdowns\n$dropdown-bg: $gray-600;\n$dropdown-link-color: $foreground;\n$dropdown-link-hover-color: $foreground;\n$dropdown-link-hover-bg: $primary;\n$dropdown-divider-bg: $gray-700;\n\n//context menus\n$contextmenu-bg: $gray-600;\n$contextmenu-color: $foreground;\n$contextmenu-disabled-color: $text-muted;\n$contextmenu-keyboard-selected-bg: hsla(var(--dh-color-accent-hsl), 0.5);\n$contextmenu-selected-bg: $primary;\n$contextmenu-selected-color: $foreground;\n\n//links\n$link-color: $gray-400;\n$link-hover-color: $foreground;\n\n//progress-bar\n$progress-bg: $gray-600;\n$progress-border-radius: 1rem;\n\n// Set global options\n$enable-shadows: false;\n$enable-gradients: false;\n$enable-print-styles: false; //I don't think anyone should expect to \"print\" this app.\n\n// Transition times\n$transition: 0.15s;\n$transition-mid: 0.2s;\n$transition-long: 0.3s;\n$transition-slow: 0.6s;\n\n//form-validation icon, uses vsWarning icon encoded here as svg\n$form-feedback-icon-invalid-color: $danger;\n$form-feedback-icon-invalid: str-replace(\n url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Cg fill='none'%3E%3Cg fill='#{$form-feedback-icon-invalid-color}'%3E%3Cpath d='M7.56 1h.88l6.54 12.26-.44.74H1.44L1 13.26 7.56 1zM8 2.28 2.28 13H13.7L8 2.28zM8.625 12v-1h-1.25v1h1.25zm-1.25-2V6h1.25v4h-1.25z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E \"),\n '#',\n '%23'\n);\n\n// This section of variables is not consumed directly by DH, but they need to be\n// defined for sass to compile _variables\n$table-dark-bg: $gray-800;\n$table-dark-accent-bg: var(--dh-color-highlight-hover);\n$table-dark-hover-bg: var(--dh-color-highlight-active);\n$table-dark-border-color: $gray-700;\n$popover-bg: var(--dh-color-tooltip-bg);\n$popover-border-color: var(--dh-color-overlay-modal-bg);\n$popover-header-bg: #000;\n$popover-arrow-outer-color: var(--dh-color-dropshadow);\n$custom-range-thumb-active-bg: var(--dh-color-accent-1100);\n"]}
1
+ {"version":3,"sourceRoot":"","sources":["../../../../node_modules/@deephaven/components/scss/custom.scss","../../src/panels/PandasPanel.scss","../../../../node_modules/@deephaven/components/scss/bootstrap_overrides.scss"],"names":[],"mappings":"AAAA;ACEA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA,kBCoFa;EDnFb;EACA","file":"PandasPanel.css","sourcesContent":["/* stylelint-disable scss/at-import-no-partial-leading-underscore */\n// Consumers should be able to resolve bootstrap/ to node_modules/bootstrap\n\n//Make bootstrap functions available for use in overrides\n@import 'bootstrap/scss/_functions.scss';\n@import './bootstrap_overrides.scss';\n\n//_variable imports come after bootstrap default overrides,\n// makes all other variables and mixins from bootstrap available\n/// with just importing customer.scss\n@import 'bootstrap/scss/_variables.scss';\n@import 'bootstrap/scss/_mixins.scss';\n\n//New variables come after imports\n@import './new_variables.scss';\n","@import '@deephaven/components/scss/custom.scss';\n\n.btn-pandas {\n width: 100%;\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n justify-content: space-between;\n align-content: center;\n padding: $spacer-1 $spacer-2;\n background-color: $primary-dark;\n border: none;\n border-radius: 0;\n}\n","// Styling overrides for bootstrap\n@use 'sass:map';\n\n// Override / set color variables\n$red: var(--dh-color-visual-red);\n$orange: var(--dh-color-visual-orange);\n$yellow: var(--dh-color-visual-yellow);\n$green: var(--dh-color-visual-green);\n$blue: var(--dh-color-visual-blue);\n$purple: var(--dh-color-visual-purple);\n\n//Define our Gray scale\n$gray-100: var(--dh-color-gray-900, #fcfcfa);\n$gray-200: var(--dh-color-gray-800);\n$gray-300: var(--dh-color-gray-700);\n$gray-400: var(--dh-color-gray-600);\n$gray-500: var(--dh-color-gray-500);\n// intentional duplicate, scale doesn't line up otherwise\n// as we have gray-850 and spectrum doesn't and it is needed\n$gray-600: var(--dh-color-gray-500);\n$gray-700: var(--dh-color-gray-400);\n$gray-800: var(--dh-color-gray-300);\n$gray-850: var(--dh-color-gray-200);\n$gray-900: var(--dh-color-gray-75);\n$black: var(--dh-color-black, #1a171a);\n$white: var(--dh-color-white, #f0f0ee);\n\n//Define some UI colors\n$interfacegray: var(--dh-color-content-bg, #2d2a2e);\n$interfaceblue: var(--dh-color-accent-bg);\n$interfacewhite: $white;\n$interfaceblack: $black;\n$content-bg: var(--dh-color-content-bg, #2d2a2e);\n$background: var(--dh-color-bg);\n$foreground: var(--dh-color-fg);\n\n// Extend default Bootstrap $grays map\n$grays-custom: (\n '850': $gray-850,\n);\n$grays: () !default;\n$grays: map-merge($grays, $grays-custom);\n\n// Extend default Bootstrap $colors map\n$colors-custom: (\n 'black': $black,\n);\n$colors: () !default;\n$colors: map-merge($colors, $colors-custom);\n\n// Override default Bootstrap $theme-colors map by mapping each key to itself.\n// These will then be re-mapped inside of `button-outline-variant` and\n// `button-outline-variant` mixins in `bootstrap_override_mixins_buttons.scss`\n$theme-colors-self-map: ();\n@each $key\n in (\n 'primary',\n 'secondary',\n 'success',\n 'info',\n 'warning',\n 'danger',\n 'light',\n 'dark'\n )\n{\n $theme-colors-self-map: map.set($theme-colors-self-map, $key, $key);\n}\n$theme-colors: () !default;\n$theme-colors: map-merge($theme-colors, $theme-colors-self-map);\n\n// Used by bootstrap_override_mixins_buttons.scss to map Bootstrap colors to\n// DH semantic colors\n$bootstrap-dh-semantic-map: (\n 'primary': 'accent',\n 'secondary': 'neutral',\n 'success': 'positive',\n 'info': 'info',\n 'warning': 'notice',\n 'danger': 'negative',\n // We shouldn't be using these, but mapping so they work with our custom\n // `color-yiq` mixin. If we find a way to remove $light + $dark that are\n // defined in Bootstrap _variables.scss, we should remove these\n 'light': 'neutral',\n 'dark': 'neutral',\n);\n\n//Set default colors\n$body-bg: $black;\n$body-color: $interfacewhite;\n\n// Set brand colors\n$primary: var(--dh-color-accent-bg);\n$primary-hover: var(--dh-color-accent-hover-bg);\n$primary-dark: var(--dh-color-accent-down-bg);\n$primary-light: var(--dh-color-accent-1100);\n$secondary: var(--dh-color-neutral-bg);\n$secondary-hover: var(--dh-color-neutral-hover-bg);\n$success: $green;\n$info: $yellow;\n$warning: $orange;\n$danger: var(--dh-color-negative-bg);\n$danger-hover: var(--dh-color-negative-hover-bg);\n// We really don't want to use $light or $dark variables, but Bootstrap defines\n// them in _variables.scss. Explicitly setting them to ensure we are in control\n// of their values. If we can find a way to remove them, we should\n$light: var(--dh-color-gray-light);\n$dark: var(--dh-color-gray-dark);\n// Bootstrap doesn't define $mid, and we want to move away from this particular\n// semantic. Should be deleted by #1635\n$mid: var(--dh-color-gray-mid);\n\n$semantic-colors: (\n 'primary-hover': $primary-hover,\n 'primary-light': $primary-light,\n 'primary-dark': $primary-dark,\n 'mid': $mid,\n 'content-bg': $interfacegray,\n 'background': $interfaceblack,\n 'foreground': $interfacewhite,\n 'secondary-hover': $secondary-hover,\n 'danger-hover': $danger-hover,\n);\n\n$component-active-bg: $primary;\n$theme-color-interval: 9%;\n$yiq-contrasted-threshold: 180;\n\n// Override fonts\n$font-family-sans-serif:\n 'Fira Sans',\n -apple-system,\n blinkmacsystemfont,\n 'Segoe UI',\n 'Roboto',\n 'Helvetica Neue',\n arial,\n sans-serif; //fira sans then native system ui fallbacks\n$font-family-monospace: 'Fira Mono', menlo, monaco, consolas, 'Liberation Mono',\n 'Courier New', monospace;\n$font-family-base: $font-family-sans-serif;\n\n$headings-font-weight: 400;\n\n//Text overides\n$text-muted: $gray-400;\n\n//Style Selection highlight color\n$text-select-color: var(--dh-color-text-highlight);\n\n//Grid variables, same value as default just making easily accessible\n$grid-gutter-width: 30px;\n\n//Visual Overrides\n$border-radius: 4px;\n$box-shadow: 0 0.1rem 1rem var(--dh-color-dropshadow);\n\n//Override Btn\n$btn-border-radius: 4rem;\n$btn-padding-x: 1.5rem;\n$btn-transition:\n color 0.12s ease-in-out,\n background-color 0.12s ease-in-out,\n border-color 0.12s ease-in-out,\n box-shadow 0.12s ease-in-out; //default 0.15 is too long\n$btn-border-width: 2px;\n$btn-font-weight: var(--spectrum-global-font-weight-bold);\n$btn-line-height: 1.3;\n\n//Override Inputs\n$input-bg: var(--dh-color-input-bg);\n$input-disabled-bg: var(--dh-color-input-disabled-bg);\n$input-color: var(--dh-color-input-fg);\n$input-border-color: var(--dh-color-input-border);\n$input-placeholder-color: var(--dh-color-input-placeholder);\n$input-focus-border-color: var(--dh-color-input-focus-border);\n\n$input-btn-focus-width: 0.2rem;\n$input-btn-focus-color: hsla(var(--dh-color-accent-hsl), 0.35);\n$input-btn-focus-box-shadow: 0 0 0 $input-btn-focus-width $input-btn-focus-color;\n$input-btn-line-height: 1.3;\n// Bootstrap uses a calc expression to determine the input height (calc(line-height + 2*padding-y + border)).\n// The padding-y value has to be in rem to match units. Using 0.4214rem with 1.3\n// line height gets us to 31.99px vs Spectrum's 32px.\n$input-btn-padding-y: 0.4214rem;\n\n//checkbox\n$custom-control-indicator-bg: var(--dh-color-input-bg);\n$custom-control-indicator-border-color: var(--dh-color-input-border);\n$custom-checkbox-indicator-border-radius: 2px;\n$custom-control-indicator-border-width: 2px;\n$custom-control-indicator-active-bg: var(--dh-color-input-bg);\n$custom-control-indicator-active-border-color: var(--dh-color-input-fg);\n$custom-control-indicator-checked-bg: var(--dh-color-input-fg);\n$custom-control-indicator-checked-color: black; // used as mask fill color\n$custom-checkbox-indicator-indeterminate-bg: var(--dh-color-input-fg);\n$custom-control-indicator-bg-size: 75% 75%;\n$custom-control-indicator-disabled-bg: var(--dh-color-input-disabled-bg);\n$custom-control-indicator-checked-disabled-bg: var(\n --dh-color-input-disabled-bg\n);\n$custom-control-label-disabled-color: var(--dh-color-input-disabled-fg);\n\n// The $custom-select-indicator variable is used by Bootstrap to provide the\n// icon for the select dropdown. Inline svgs can't use CSS variables, so we hard\n// code the color to #929192 (the default value of --dh-color-gray-600). PR #1651\n// overrides this icon altogether for known dropdowns, so technically we may not\n// need this, but it's here in case there are any remaining instances.\n$custom-select-indicator-color: #929192;\n$custom-select-bg: var(--dh-color-selector-bg);\n$custom-select-bg-size: 16px 16px;\n//dhSort icon encoded\n$custom-select-indicator: str-replace(\n url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='#{$custom-select-indicator-color}' d='M4 7l-.4-.8 4-3.7h.8l4 3.7-.4.8H4zm0 2l-.4.8 4 3.7h.8l4-3.7L12 9H4z'/%3E%3C/svg%3E\"),\n '#',\n '%23'\n);\n$custom-select-focus-box-shadow: $input-btn-focus-box-shadow;\n$custom-select-disabled-color: $gray-500;\n$custom-select-disabled-bg: $gray-800;\n\n//modal\n$modal-content-bg: $content-bg;\n$modal-content-border-width: 0;\n$modal-md: 550px;\n$close-color: var(--dh-color-text);\n$close-text-shadow: none;\n\n// Toast notification\n$toast-bg: var(--dh-color-accent-100);\n$toast-color: var(--dh-color-text);\n$toast-error-bg: var(--dh-color-negative-bg);\n$toast-error-color: var(--dh-color-text);\n\n//tooltips\n$tooltip-bg: var(--dh-color-tooltip-bg);\n$tooltip-color: var(--dh-color-tooltip-fg);\n$tooltip-box-shadow: 0 0.1rem 1.5rem 0.1rem var(--dh-color-tooltip-box-shadow);\n\n//drowdowns\n$dropdown-bg: $gray-600;\n$dropdown-link-color: $foreground;\n$dropdown-link-hover-color: $foreground;\n$dropdown-link-hover-bg: $primary;\n$dropdown-divider-bg: $gray-700;\n\n//context menus\n$contextmenu-bg: var(--dh-color-popover-bg);\n$contextmenu-color: var(--dh-color-text);\n$contextmenu-disabled-color: var(--dh-color-input-disabled-fg);\n$contextmenu-keyboard-selected-bg: var(--dh-color-keyboard-selected-bg);\n$contextmenu-selected-bg: var(--dh-color-item-list-hover-bg);\n$contextmenu-selected-color: var(--dh-color-item-list-selected-fg);\n\n//hr\n$hr-border-color: var(--dh-color-hr);\n\n//links\n$link-color: $gray-400;\n$link-hover-color: $foreground;\n\n//progress-bar\n$progress-bg: $gray-600;\n$progress-border-radius: 1rem;\n\n// Set global options\n$enable-shadows: false;\n$enable-gradients: false;\n$enable-print-styles: false; //I don't think anyone should expect to \"print\" this app.\n\n// Transition times\n$transition: 0.15s;\n$transition-mid: 0.2s;\n$transition-long: 0.3s;\n$transition-slow: 0.6s;\n\n//form-validation icon, uses vsWarning icon encoded here as svg\n$form-feedback-icon-invalid-color: $danger;\n$form-feedback-icon-invalid: str-replace(\n url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Cg fill='none'%3E%3Cg fill='#{$form-feedback-icon-invalid-color}'%3E%3Cpath d='M7.56 1h.88l6.54 12.26-.44.74H1.44L1 13.26 7.56 1zM8 2.28 2.28 13H13.7L8 2.28zM8.625 12v-1h-1.25v1h1.25zm-1.25-2V6h1.25v4h-1.25z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E \"),\n '#',\n '%23'\n);\n\n// This section of variables is not consumed directly by DH, but they need to be\n// defined for sass to compile _variables\n$table-dark-bg: $gray-800;\n$table-dark-accent-bg: var(--dh-color-highlight-hover);\n$table-dark-hover-bg: var(--dh-color-highlight-active);\n$table-dark-border-color: $gray-700;\n$popover-bg: var(--dh-color-tooltip-bg);\n$popover-border-color: var(--dh-color-overlay-modal-bg);\n$popover-header-bg: #000;\n$popover-arrow-outer-color: var(--dh-color-dropshadow);\n$custom-range-thumb-active-bg: var(--dh-color-accent-1100);\n"]}
@@ -1 +1 @@
1
- {"version":3,"sourceRoot":"","sources":["../../../../node_modules/@deephaven/components/scss/custom.scss","../../src/panels/WidgetPanel.scss","../../../../node_modules/@deephaven/components/scss/bootstrap_overrides.scss"],"names":[],"mappings":"AAAA;ACEA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,OCGS;EDFT;EACA;EACA","file":"WidgetPanel.css","sourcesContent":["/* stylelint-disable scss/at-import-no-partial-leading-underscore */\n// Consumers should be able to resolve bootstrap/ to node_modules/bootstrap\n\n//Make bootstrap functions available for use in overrides\n@import 'bootstrap/scss/_functions.scss';\n@import './bootstrap_overrides.scss';\n\n//_variable imports come after bootstrap default overrides,\n// makes all other variables and mixins from bootstrap available\n/// with just importing customer.scss\n@import 'bootstrap/scss/_variables.scss';\n@import 'bootstrap/scss/_mixins.scss';\n\n//New variables come after imports\n@import './new_variables.scss';\n","@import '@deephaven/components/scss/custom.scss';\n\n.query-status-bar {\n position: absolute;\n bottom: 0;\n left: 0;\n z-index: 30;\n text-align: left;\n display: block;\n padding: 3px 5px;\n background: hsla(var(--dh-color-content-bg-hsl), 0.95);\n color: $gray-300;\n border-top: 1px solid $gray-500;\n border-right: 1px solid $gray-500;\n min-width: 400px;\n}\n","// Styling overrides for bootstrap\n@use 'sass:map';\n\n// Override / set color variables\n$red: var(--dh-color-visual-red);\n$orange: var(--dh-color-visual-orange);\n$yellow: var(--dh-color-visual-yellow);\n$green: var(--dh-color-visual-green);\n$blue: var(--dh-color-visual-blue);\n$purple: var(--dh-color-visual-purple);\n\n//Define our Gray scale\n$gray-100: var(--dh-color-gray-900, #fcfcfa);\n$gray-200: var(--dh-color-gray-800);\n$gray-300: var(--dh-color-gray-700);\n$gray-400: var(--dh-color-gray-600);\n$gray-500: var(--dh-color-gray-500);\n// intentional duplicate, scale doesn't line up otherwise\n// as we have gray-850 and spectrum doesn't and it is needed\n$gray-600: var(--dh-color-gray-500);\n$gray-700: var(--dh-color-gray-400);\n$gray-800: var(--dh-color-gray-300);\n$gray-850: var(--dh-color-gray-200);\n$gray-900: var(--dh-color-gray-75);\n$black: var(--dh-color-black, #1a171a);\n$white: var(--dh-color-white, #f0f0ee);\n\n//Define some UI colors\n$interfacegray: var(--dh-color-content-bg, #2d2a2e);\n$interfaceblue: var(--dh-color-accent-bg);\n$interfacewhite: $white;\n$interfaceblack: $black;\n$content-bg: var(--dh-color-content-bg, #2d2a2e);\n$background: var(--dh-color-bg);\n$foreground: var(--dh-color-fg);\n\n// Extend default Bootstrap $grays map\n$grays-custom: (\n '850': $gray-850,\n);\n$grays: () !default;\n$grays: map-merge($grays, $grays-custom);\n\n// Extend default Bootstrap $colors map\n$colors-custom: (\n 'black': $black,\n);\n$colors: () !default;\n$colors: map-merge($colors, $colors-custom);\n\n// Override default Bootstrap $theme-colors map by mapping each key to itself.\n// These will then be re-mapped inside of `button-outline-variant` and\n// `button-outline-variant` mixins in `bootstrap_override_mixins_buttons.scss`\n$theme-colors-self-map: ();\n@each $key\n in (\n 'primary',\n 'secondary',\n 'success',\n 'info',\n 'warning',\n 'danger',\n 'light',\n 'dark'\n )\n{\n $theme-colors-self-map: map.set($theme-colors-self-map, $key, $key);\n}\n$theme-colors: () !default;\n$theme-colors: map-merge($theme-colors, $theme-colors-self-map);\n\n// Used by bootstrap_override_mixins_buttons.scss to map Bootstrap colors to\n// DH semantic colors\n$bootstrap-dh-semantic-map: (\n 'primary': 'accent',\n 'secondary': 'neutral',\n 'success': 'positive',\n 'info': 'info',\n 'warning': 'notice',\n 'danger': 'negative',\n // We shouldn't be using these, but mapping so they work with our custom\n // `color-yiq` mixin. If we find a way to remove $light + $dark that are\n // defined in Bootstrap _variables.scss, we should remove these\n 'light': 'neutral',\n 'dark': 'neutral',\n);\n\n//Set default colors\n$body-bg: $black;\n$body-color: $interfacewhite;\n\n// Set brand colors\n$primary: var(--dh-color-accent-bg);\n$primary-hover: var(--dh-color-accent-hover-bg);\n$primary-dark: var(--dh-color-accent-down-bg);\n$primary-light: var(--dh-color-accent-1100);\n$secondary: var(--dh-color-neutral-bg);\n$secondary-hover: var(--dh-color-neutral-hover-bg);\n$success: $green;\n$info: $yellow;\n$warning: $orange;\n$danger: var(--dh-color-negative-bg);\n$danger-hover: var(--dh-color-negative-hover-bg);\n// We really don't want to use $light or $dark variables, but Bootstrap defines\n// them in _variables.scss. Explicitly setting them to ensure we are in control\n// of their values. If we can find a way to remove them, we should\n$light: var(--dh-color-gray-light);\n$dark: var(--dh-color-gray-dark);\n// Bootstrap doesn't define $mid, and we want to move away from this particular\n// semantic. Should be deleted by #1635\n$mid: var(--dh-color-gray-mid);\n\n$semantic-colors: (\n 'primary-hover': $primary-hover,\n 'primary-light': $primary-light,\n 'primary-dark': $primary-dark,\n 'mid': $mid,\n 'content-bg': $interfacegray,\n 'background': $interfaceblack,\n 'foreground': $interfacewhite,\n 'secondary-hover': $secondary-hover,\n 'danger-hover': $danger-hover,\n);\n\n$component-active-bg: $primary;\n$theme-color-interval: 9%;\n$yiq-contrasted-threshold: 180;\n\n// Override fonts\n$font-family-sans-serif:\n 'Fira Sans',\n -apple-system,\n blinkmacsystemfont,\n 'Segoe UI',\n 'Roboto',\n 'Helvetica Neue',\n arial,\n sans-serif; //fira sans then native system ui fallbacks\n$font-family-monospace: 'Fira Mono', menlo, monaco, consolas, 'Liberation Mono',\n 'Courier New', monospace;\n$font-family-base: $font-family-sans-serif;\n\n$headings-font-weight: 400;\n\n//Text overides\n$text-muted: $gray-400;\n\n//Style Selection highlight color\n$text-select-color: var(--dh-color-text-highlight);\n\n//Grid variables, same value as default just making easily accessible\n$grid-gutter-width: 30px;\n\n//Visual Overrides\n$border-radius: 4px;\n$box-shadow: 0 0.1rem 1rem hsla(var(--dh-color-black-hsl), 0.45); //because our UI is so dark, we need darker default shadows\n$box-shadow-900: 0 0.1rem 1rem hsla(var(--dh-color-true-black-hsl), 0.45); //darkest shadow for $black popups over $black UI\n\n//Override Btn\n$btn-border-radius: 4rem;\n$btn-padding-x: 1.5rem;\n$btn-transition:\n color 0.12s ease-in-out,\n background-color 0.12s ease-in-out,\n border-color 0.12s ease-in-out,\n box-shadow 0.12s ease-in-out; //default 0.15 is too long\n$btn-border-width: 2px;\n$btn-font-weight: var(--spectrum-global-font-weight-bold);\n\n//Override Inputs\n$input-bg: var(--dh-color-input-bg);\n$input-disabled-bg: var(--dh-color-input-disabled-bg);\n$input-color: var(--dh-color-input-fg);\n$input-border-color: var(--dh-color-input-border);\n$input-placeholder-color: var(--dh-color-input-placeholder);\n$input-focus-border-color: var(--dh-color-input-focus-border);\n\n$input-btn-focus-width: 0.2rem;\n$input-btn-focus-color: hsla(var(--dh-color-accent-hsl), 0.35);\n$input-btn-focus-box-shadow: 0 0 0 $input-btn-focus-width $input-btn-focus-color;\n\n//checkbox\n$custom-control-indicator-bg: $gray-600;\n$custom-control-indicator-active-bg: var(--dh-color-accent-1100);\n$custom-control-indicator-bg-size: 75% 75%;\n$custom-control-indicator-disabled-bg: $gray-800;\n$custom-control-indicator-checked-disabled-bg: $gray-800;\n$custom-control-label-disabled-color: $gray-400;\n\n// The $custom-select-indicator variable is used by Bootstrap to provide the\n// icon for the select dropdown. Inline svgs can't use CSS variables, so we hard\n// code the color to #929192 (the default value of --dh-color-gray-600). PR #1651\n// overrides this icon altogether for known dropdowns, so technically we may not\n// need this, but it's here in case there are any remaining instances.\n$custom-select-indicator-color: #929192;\n$custom-select-bg-size: 16px 16px;\n//dhSort icon encoded\n$custom-select-indicator: str-replace(\n url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='#{$custom-select-indicator-color}' d='M4 7l-.4-.8 4-3.7h.8l4 3.7-.4.8H4zm0 2l-.4.8 4 3.7h.8l4-3.7L12 9H4z'/%3E%3C/svg%3E\"),\n '#',\n '%23'\n);\n$custom-select-focus-box-shadow: $input-btn-focus-box-shadow;\n$custom-select-disabled-color: $gray-500;\n$custom-select-disabled-bg: $gray-800;\n\n//modal\n$modal-content-bg: $gray-200;\n$modal-content-border-width: 0;\n$modal-md: 550px;\n\n// Toast notification\n$toast-bg: var(--dh-color-accent-100);\n$toast-color: var(--dh-color-text);\n$toast-error-bg: var(--dh-color-negative-bg);\n$toast-error-color: var(--dh-color-text);\n\n//tooltips\n$tooltip-bg: var(--dh-color-tooltip-bg);\n$tooltip-color: var(--dh-color-tooltip-fg);\n$tooltip-box-shadow: 0 0.1rem 1.5rem 0.1rem var(--dh-color-tooltip-box-shadow);\n\n//drowdowns\n$dropdown-bg: $gray-600;\n$dropdown-link-color: $foreground;\n$dropdown-link-hover-color: $foreground;\n$dropdown-link-hover-bg: $primary;\n$dropdown-divider-bg: $gray-700;\n\n//context menus\n$contextmenu-bg: $gray-600;\n$contextmenu-color: $foreground;\n$contextmenu-disabled-color: $text-muted;\n$contextmenu-keyboard-selected-bg: hsla(var(--dh-color-accent-hsl), 0.5);\n$contextmenu-selected-bg: $primary;\n$contextmenu-selected-color: $foreground;\n\n//links\n$link-color: $gray-400;\n$link-hover-color: $foreground;\n\n//progress-bar\n$progress-bg: $gray-600;\n$progress-border-radius: 1rem;\n\n// Set global options\n$enable-shadows: false;\n$enable-gradients: false;\n$enable-print-styles: false; //I don't think anyone should expect to \"print\" this app.\n\n// Transition times\n$transition: 0.15s;\n$transition-mid: 0.2s;\n$transition-long: 0.3s;\n$transition-slow: 0.6s;\n\n//form-validation icon, uses vsWarning icon encoded here as svg\n$form-feedback-icon-invalid-color: $danger;\n$form-feedback-icon-invalid: str-replace(\n url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Cg fill='none'%3E%3Cg fill='#{$form-feedback-icon-invalid-color}'%3E%3Cpath d='M7.56 1h.88l6.54 12.26-.44.74H1.44L1 13.26 7.56 1zM8 2.28 2.28 13H13.7L8 2.28zM8.625 12v-1h-1.25v1h1.25zm-1.25-2V6h1.25v4h-1.25z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E \"),\n '#',\n '%23'\n);\n\n// This section of variables is not consumed directly by DH, but they need to be\n// defined for sass to compile _variables\n$table-dark-bg: $gray-800;\n$table-dark-accent-bg: var(--dh-color-highlight-hover);\n$table-dark-hover-bg: var(--dh-color-highlight-active);\n$table-dark-border-color: $gray-700;\n$popover-bg: var(--dh-color-tooltip-bg);\n$popover-border-color: var(--dh-color-overlay-modal-bg);\n$popover-header-bg: #000;\n$popover-arrow-outer-color: var(--dh-color-dropshadow);\n$custom-range-thumb-active-bg: var(--dh-color-accent-1100);\n"]}
1
+ {"version":3,"sourceRoot":"","sources":["../../../../node_modules/@deephaven/components/scss/custom.scss","../../src/panels/WidgetPanel.scss","../../../../node_modules/@deephaven/components/scss/bootstrap_overrides.scss"],"names":[],"mappings":"AAAA;ACEA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,OCGS;EDFT;EACA;EACA","file":"WidgetPanel.css","sourcesContent":["/* stylelint-disable scss/at-import-no-partial-leading-underscore */\n// Consumers should be able to resolve bootstrap/ to node_modules/bootstrap\n\n//Make bootstrap functions available for use in overrides\n@import 'bootstrap/scss/_functions.scss';\n@import './bootstrap_overrides.scss';\n\n//_variable imports come after bootstrap default overrides,\n// makes all other variables and mixins from bootstrap available\n/// with just importing customer.scss\n@import 'bootstrap/scss/_variables.scss';\n@import 'bootstrap/scss/_mixins.scss';\n\n//New variables come after imports\n@import './new_variables.scss';\n","@import '@deephaven/components/scss/custom.scss';\n\n.query-status-bar {\n position: absolute;\n bottom: 0;\n left: 0;\n z-index: 30;\n text-align: left;\n display: block;\n padding: 3px 5px;\n background: hsla(var(--dh-color-content-bg-hsl), 0.95);\n color: $gray-300;\n border-top: 1px solid $gray-500;\n border-right: 1px solid $gray-500;\n min-width: 400px;\n}\n","// Styling overrides for bootstrap\n@use 'sass:map';\n\n// Override / set color variables\n$red: var(--dh-color-visual-red);\n$orange: var(--dh-color-visual-orange);\n$yellow: var(--dh-color-visual-yellow);\n$green: var(--dh-color-visual-green);\n$blue: var(--dh-color-visual-blue);\n$purple: var(--dh-color-visual-purple);\n\n//Define our Gray scale\n$gray-100: var(--dh-color-gray-900, #fcfcfa);\n$gray-200: var(--dh-color-gray-800);\n$gray-300: var(--dh-color-gray-700);\n$gray-400: var(--dh-color-gray-600);\n$gray-500: var(--dh-color-gray-500);\n// intentional duplicate, scale doesn't line up otherwise\n// as we have gray-850 and spectrum doesn't and it is needed\n$gray-600: var(--dh-color-gray-500);\n$gray-700: var(--dh-color-gray-400);\n$gray-800: var(--dh-color-gray-300);\n$gray-850: var(--dh-color-gray-200);\n$gray-900: var(--dh-color-gray-75);\n$black: var(--dh-color-black, #1a171a);\n$white: var(--dh-color-white, #f0f0ee);\n\n//Define some UI colors\n$interfacegray: var(--dh-color-content-bg, #2d2a2e);\n$interfaceblue: var(--dh-color-accent-bg);\n$interfacewhite: $white;\n$interfaceblack: $black;\n$content-bg: var(--dh-color-content-bg, #2d2a2e);\n$background: var(--dh-color-bg);\n$foreground: var(--dh-color-fg);\n\n// Extend default Bootstrap $grays map\n$grays-custom: (\n '850': $gray-850,\n);\n$grays: () !default;\n$grays: map-merge($grays, $grays-custom);\n\n// Extend default Bootstrap $colors map\n$colors-custom: (\n 'black': $black,\n);\n$colors: () !default;\n$colors: map-merge($colors, $colors-custom);\n\n// Override default Bootstrap $theme-colors map by mapping each key to itself.\n// These will then be re-mapped inside of `button-outline-variant` and\n// `button-outline-variant` mixins in `bootstrap_override_mixins_buttons.scss`\n$theme-colors-self-map: ();\n@each $key\n in (\n 'primary',\n 'secondary',\n 'success',\n 'info',\n 'warning',\n 'danger',\n 'light',\n 'dark'\n )\n{\n $theme-colors-self-map: map.set($theme-colors-self-map, $key, $key);\n}\n$theme-colors: () !default;\n$theme-colors: map-merge($theme-colors, $theme-colors-self-map);\n\n// Used by bootstrap_override_mixins_buttons.scss to map Bootstrap colors to\n// DH semantic colors\n$bootstrap-dh-semantic-map: (\n 'primary': 'accent',\n 'secondary': 'neutral',\n 'success': 'positive',\n 'info': 'info',\n 'warning': 'notice',\n 'danger': 'negative',\n // We shouldn't be using these, but mapping so they work with our custom\n // `color-yiq` mixin. If we find a way to remove $light + $dark that are\n // defined in Bootstrap _variables.scss, we should remove these\n 'light': 'neutral',\n 'dark': 'neutral',\n);\n\n//Set default colors\n$body-bg: $black;\n$body-color: $interfacewhite;\n\n// Set brand colors\n$primary: var(--dh-color-accent-bg);\n$primary-hover: var(--dh-color-accent-hover-bg);\n$primary-dark: var(--dh-color-accent-down-bg);\n$primary-light: var(--dh-color-accent-1100);\n$secondary: var(--dh-color-neutral-bg);\n$secondary-hover: var(--dh-color-neutral-hover-bg);\n$success: $green;\n$info: $yellow;\n$warning: $orange;\n$danger: var(--dh-color-negative-bg);\n$danger-hover: var(--dh-color-negative-hover-bg);\n// We really don't want to use $light or $dark variables, but Bootstrap defines\n// them in _variables.scss. Explicitly setting them to ensure we are in control\n// of their values. If we can find a way to remove them, we should\n$light: var(--dh-color-gray-light);\n$dark: var(--dh-color-gray-dark);\n// Bootstrap doesn't define $mid, and we want to move away from this particular\n// semantic. Should be deleted by #1635\n$mid: var(--dh-color-gray-mid);\n\n$semantic-colors: (\n 'primary-hover': $primary-hover,\n 'primary-light': $primary-light,\n 'primary-dark': $primary-dark,\n 'mid': $mid,\n 'content-bg': $interfacegray,\n 'background': $interfaceblack,\n 'foreground': $interfacewhite,\n 'secondary-hover': $secondary-hover,\n 'danger-hover': $danger-hover,\n);\n\n$component-active-bg: $primary;\n$theme-color-interval: 9%;\n$yiq-contrasted-threshold: 180;\n\n// Override fonts\n$font-family-sans-serif:\n 'Fira Sans',\n -apple-system,\n blinkmacsystemfont,\n 'Segoe UI',\n 'Roboto',\n 'Helvetica Neue',\n arial,\n sans-serif; //fira sans then native system ui fallbacks\n$font-family-monospace: 'Fira Mono', menlo, monaco, consolas, 'Liberation Mono',\n 'Courier New', monospace;\n$font-family-base: $font-family-sans-serif;\n\n$headings-font-weight: 400;\n\n//Text overides\n$text-muted: $gray-400;\n\n//Style Selection highlight color\n$text-select-color: var(--dh-color-text-highlight);\n\n//Grid variables, same value as default just making easily accessible\n$grid-gutter-width: 30px;\n\n//Visual Overrides\n$border-radius: 4px;\n$box-shadow: 0 0.1rem 1rem var(--dh-color-dropshadow);\n\n//Override Btn\n$btn-border-radius: 4rem;\n$btn-padding-x: 1.5rem;\n$btn-transition:\n color 0.12s ease-in-out,\n background-color 0.12s ease-in-out,\n border-color 0.12s ease-in-out,\n box-shadow 0.12s ease-in-out; //default 0.15 is too long\n$btn-border-width: 2px;\n$btn-font-weight: var(--spectrum-global-font-weight-bold);\n$btn-line-height: 1.3;\n\n//Override Inputs\n$input-bg: var(--dh-color-input-bg);\n$input-disabled-bg: var(--dh-color-input-disabled-bg);\n$input-color: var(--dh-color-input-fg);\n$input-border-color: var(--dh-color-input-border);\n$input-placeholder-color: var(--dh-color-input-placeholder);\n$input-focus-border-color: var(--dh-color-input-focus-border);\n\n$input-btn-focus-width: 0.2rem;\n$input-btn-focus-color: hsla(var(--dh-color-accent-hsl), 0.35);\n$input-btn-focus-box-shadow: 0 0 0 $input-btn-focus-width $input-btn-focus-color;\n$input-btn-line-height: 1.3;\n// Bootstrap uses a calc expression to determine the input height (calc(line-height + 2*padding-y + border)).\n// The padding-y value has to be in rem to match units. Using 0.4214rem with 1.3\n// line height gets us to 31.99px vs Spectrum's 32px.\n$input-btn-padding-y: 0.4214rem;\n\n//checkbox\n$custom-control-indicator-bg: var(--dh-color-input-bg);\n$custom-control-indicator-border-color: var(--dh-color-input-border);\n$custom-checkbox-indicator-border-radius: 2px;\n$custom-control-indicator-border-width: 2px;\n$custom-control-indicator-active-bg: var(--dh-color-input-bg);\n$custom-control-indicator-active-border-color: var(--dh-color-input-fg);\n$custom-control-indicator-checked-bg: var(--dh-color-input-fg);\n$custom-control-indicator-checked-color: black; // used as mask fill color\n$custom-checkbox-indicator-indeterminate-bg: var(--dh-color-input-fg);\n$custom-control-indicator-bg-size: 75% 75%;\n$custom-control-indicator-disabled-bg: var(--dh-color-input-disabled-bg);\n$custom-control-indicator-checked-disabled-bg: var(\n --dh-color-input-disabled-bg\n);\n$custom-control-label-disabled-color: var(--dh-color-input-disabled-fg);\n\n// The $custom-select-indicator variable is used by Bootstrap to provide the\n// icon for the select dropdown. Inline svgs can't use CSS variables, so we hard\n// code the color to #929192 (the default value of --dh-color-gray-600). PR #1651\n// overrides this icon altogether for known dropdowns, so technically we may not\n// need this, but it's here in case there are any remaining instances.\n$custom-select-indicator-color: #929192;\n$custom-select-bg: var(--dh-color-selector-bg);\n$custom-select-bg-size: 16px 16px;\n//dhSort icon encoded\n$custom-select-indicator: str-replace(\n url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='#{$custom-select-indicator-color}' d='M4 7l-.4-.8 4-3.7h.8l4 3.7-.4.8H4zm0 2l-.4.8 4 3.7h.8l4-3.7L12 9H4z'/%3E%3C/svg%3E\"),\n '#',\n '%23'\n);\n$custom-select-focus-box-shadow: $input-btn-focus-box-shadow;\n$custom-select-disabled-color: $gray-500;\n$custom-select-disabled-bg: $gray-800;\n\n//modal\n$modal-content-bg: $content-bg;\n$modal-content-border-width: 0;\n$modal-md: 550px;\n$close-color: var(--dh-color-text);\n$close-text-shadow: none;\n\n// Toast notification\n$toast-bg: var(--dh-color-accent-100);\n$toast-color: var(--dh-color-text);\n$toast-error-bg: var(--dh-color-negative-bg);\n$toast-error-color: var(--dh-color-text);\n\n//tooltips\n$tooltip-bg: var(--dh-color-tooltip-bg);\n$tooltip-color: var(--dh-color-tooltip-fg);\n$tooltip-box-shadow: 0 0.1rem 1.5rem 0.1rem var(--dh-color-tooltip-box-shadow);\n\n//drowdowns\n$dropdown-bg: $gray-600;\n$dropdown-link-color: $foreground;\n$dropdown-link-hover-color: $foreground;\n$dropdown-link-hover-bg: $primary;\n$dropdown-divider-bg: $gray-700;\n\n//context menus\n$contextmenu-bg: var(--dh-color-popover-bg);\n$contextmenu-color: var(--dh-color-text);\n$contextmenu-disabled-color: var(--dh-color-input-disabled-fg);\n$contextmenu-keyboard-selected-bg: var(--dh-color-keyboard-selected-bg);\n$contextmenu-selected-bg: var(--dh-color-item-list-hover-bg);\n$contextmenu-selected-color: var(--dh-color-item-list-selected-fg);\n\n//hr\n$hr-border-color: var(--dh-color-hr);\n\n//links\n$link-color: $gray-400;\n$link-hover-color: $foreground;\n\n//progress-bar\n$progress-bg: $gray-600;\n$progress-border-radius: 1rem;\n\n// Set global options\n$enable-shadows: false;\n$enable-gradients: false;\n$enable-print-styles: false; //I don't think anyone should expect to \"print\" this app.\n\n// Transition times\n$transition: 0.15s;\n$transition-mid: 0.2s;\n$transition-long: 0.3s;\n$transition-slow: 0.6s;\n\n//form-validation icon, uses vsWarning icon encoded here as svg\n$form-feedback-icon-invalid-color: $danger;\n$form-feedback-icon-invalid: str-replace(\n url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Cg fill='none'%3E%3Cg fill='#{$form-feedback-icon-invalid-color}'%3E%3Cpath d='M7.56 1h.88l6.54 12.26-.44.74H1.44L1 13.26 7.56 1zM8 2.28 2.28 13H13.7L8 2.28zM8.625 12v-1h-1.25v1h1.25zm-1.25-2V6h1.25v4h-1.25z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E \"),\n '#',\n '%23'\n);\n\n// This section of variables is not consumed directly by DH, but they need to be\n// defined for sass to compile _variables\n$table-dark-bg: $gray-800;\n$table-dark-accent-bg: var(--dh-color-highlight-hover);\n$table-dark-hover-bg: var(--dh-color-highlight-active);\n$table-dark-border-color: $gray-700;\n$popover-bg: var(--dh-color-tooltip-bg);\n$popover-border-color: var(--dh-color-overlay-modal-bg);\n$popover-header-bg: #000;\n$popover-arrow-outer-color: var(--dh-color-dropshadow);\n$custom-range-thumb-active-bg: var(--dh-color-accent-1100);\n"]}