@deephaven/dashboard-core-plugins 0.97.1-beta.7 → 0.98.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.
- package/dist/ConsolePlugin.d.ts.map +1 -1
- package/dist/ConsolePlugin.js +4 -17
- package/dist/ConsolePlugin.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/panels/NotebookPanel.d.ts.map +1 -1
- package/dist/panels/NotebookPanel.js +6 -6
- package/dist/panels/NotebookPanel.js.map +1 -1
- package/dist/useConfigureRuff.d.ts +8 -0
- package/dist/useConfigureRuff.d.ts.map +1 -0
- package/dist/useConfigureRuff.js +27 -0
- package/dist/useConfigureRuff.js.map +1 -0
- package/package.json +24 -24
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConsolePlugin.d.ts","sourceRoot":"","sources":["../src/ConsolePlugin.tsx"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,6BAA6B,EAKlC,KAAK,oBAAoB,
|
|
1
|
+
{"version":3,"file":"ConsolePlugin.d.ts","sourceRoot":"","sources":["../src/ConsolePlugin.tsx"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,6BAA6B,EAKlC,KAAK,oBAAoB,EAG1B,MAAM,sBAAsB,CAAC;AA+B9B,MAAM,MAAM,kBAAkB,GAAG,6BAA6B,GAAG;IAC/D,cAAc,CAAC,EAAE,oBAAoB,CAAC;IACtC,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAQF,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,aAAa,CAC3B,KAAK,EAAE,OAAO,CAAC,kBAAkB,CAAC,GACjC,GAAG,CAAC,OAAO,GAAG,IAAI,CAugBpB;AAED,eAAe,aAAa,CAAC"}
|
package/dist/ConsolePlugin.js
CHANGED
|
@@ -3,18 +3,17 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
|
|
|
3
3
|
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
4
4
|
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
|
|
5
5
|
function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
6
|
-
import {
|
|
7
|
-
import { assertIsDashboardPluginProps, DashboardUtils, LayoutUtils, useAppSelector, useListener, usePanelRegistration } from '@deephaven/dashboard';
|
|
6
|
+
import { assertIsDashboardPluginProps, DashboardUtils, LayoutUtils, useListener, usePanelRegistration } from '@deephaven/dashboard';
|
|
8
7
|
import { FileUtils } from '@deephaven/file-explorer';
|
|
9
8
|
import { isComponent } from '@deephaven/golden-layout';
|
|
10
9
|
import Log from '@deephaven/log';
|
|
11
|
-
import {
|
|
12
|
-
import { useCallback, useEffect, useRef, useState } from 'react';
|
|
10
|
+
import { useCallback, useRef, useState } from 'react';
|
|
13
11
|
import { useDispatch } from 'react-redux';
|
|
14
12
|
import { nanoid } from 'nanoid';
|
|
15
13
|
import { ConsoleEvent, NotebookEvent } from "./events/index.js";
|
|
16
14
|
import { ConsolePanel, CommandHistoryPanel, FileExplorerPanel, LogPanel, NotebookPanel } from "./panels/index.js";
|
|
17
15
|
import { setDashboardConsoleSettings } from "./redux/index.js";
|
|
16
|
+
import useConfigureRuff from "./useConfigureRuff.js";
|
|
18
17
|
var log = Log.module('ConsolePlugin');
|
|
19
18
|
function isNotebookPanel(panel) {
|
|
20
19
|
return panel.notebook !== undefined;
|
|
@@ -36,19 +35,7 @@ export function ConsolePlugin(props) {
|
|
|
36
35
|
// Map from file ID to panel ID
|
|
37
36
|
var [openFileMap, setOpenFileMap] = useState(new Map());
|
|
38
37
|
var [previewFileMap, setPreviewFileMap] = useState(new Map());
|
|
39
|
-
|
|
40
|
-
python: {
|
|
41
|
-
linter = {}
|
|
42
|
-
} = {}
|
|
43
|
-
} = useAppSelector(getNotebookSettings);
|
|
44
|
-
var {
|
|
45
|
-
isEnabled: ruffEnabled = false,
|
|
46
|
-
config: ruffConfig
|
|
47
|
-
} = linter;
|
|
48
|
-
useEffect(function setRuffSettings() {
|
|
49
|
-
MonacoProviders.isRuffEnabled = ruffEnabled;
|
|
50
|
-
MonacoProviders.setRuffSettings(ruffConfig);
|
|
51
|
-
}, [ruffEnabled, ruffConfig]);
|
|
38
|
+
useConfigureRuff();
|
|
52
39
|
var dispatch = useDispatch();
|
|
53
40
|
var getConsolePanel = useCallback(() => panelManager.getLastUsedPanelOfType(ConsolePanel), [panelManager]);
|
|
54
41
|
var addOpenFileMapEntry = useCallback((key, value) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConsolePlugin.js","names":["MonacoProviders","assertIsDashboardPluginProps","DashboardUtils","LayoutUtils","useAppSelector","useListener","usePanelRegistration","FileUtils","isComponent","Log","getNotebookSettings","useCallback","useEffect","useRef","useState","useDispatch","nanoid","ConsoleEvent","NotebookEvent","ConsolePanel","CommandHistoryPanel","FileExplorerPanel","LogPanel","NotebookPanel","setDashboardConsoleSettings","log","module","isNotebookPanel","panel","notebook","undefined","assertIsConsolePluginProps","props","ConsolePlugin","id","hydrateConsole","layout","panelManager","registerComponent","notebooksUrl","notebookIndex","openFileMap","setOpenFileMap","Map","previewFileMap","setPreviewFileMap","python","linter","isEnabled","ruffEnabled","config","ruffConfig","setRuffSettings","isRuffEnabled","dispatch","getConsolePanel","getLastUsedPanelOfType","addOpenFileMapEntry","key","value","map","set","deleteOpenFileMapEntry","delete","addPreviewFileMapEntry","deletePreviewFileMapEntry","handleSendCommand","command","focus","arguments","length","execute","trimmedCommand","trim","info","consolePanel","WrappedComponent","error","debug","addCommand","handleSettingsChanged","consoleSettings","getNotebookFileName","_ref","language","extension","title","concat","current","getPanelIdForFileMetadata","fileMetadata","createIfNecessary","fileId","has","get","renamePanel","panelId","newTitle","renameComponent","root","renameFilePanel","oldName","newName","debug2","getBaseName","showFilePanel","activateTab","registerFilePanel","isPreview","existingPanelId","itemName","unregisterFilePanel","closeFilePanel","options","closeComponent","getNotebookTitle","fileIsOpen","fileIsOpenAsPreview","focusPanelById","getOpenedPanelById","makeConfig","_ref2","settings","session","sessionLanguage","panelState","type","component","COMPONENT","isFocusOnShow","localDashboardId","metadata","createNotebook","stack","getStackForComponentTypes","openComponentInStack","selectNotebook","shouldFocus","isFileOpen","isFileOpenAsPreview","previewId","values","Error","getStackForConfig","item","getContentItemInStack","container","emit","PROMOTE_FROM_PREVIEW","sendToNotebook","notebookPanel","append","hydrateNotebook","panelProps","panelDashboardId","hydrate","_objectSpread","eventHub","SEND_COMMAND","SETTINGS_CHANGED","CLOSE_FILE","CREATE_NOTEBOOK","SELECT_NOTEBOOK","RENAME","RENAME_FILE","SEND_TO_NOTEBOOK","REGISTER_FILE","UNREGISTER_FILE"],"sources":["../src/ConsolePlugin.tsx"],"sourcesContent":["import { MonacoProviders, type ScriptEditor } from '@deephaven/console';\nimport {\n assertIsDashboardPluginProps,\n type DashboardPluginComponentProps,\n DashboardUtils,\n type DehydratedDashboardPanelProps,\n LayoutUtils,\n type PanelComponent,\n type PanelHydrateFunction,\n useAppSelector,\n useListener,\n usePanelRegistration,\n} from '@deephaven/dashboard';\nimport { FileUtils } from '@deephaven/file-explorer';\nimport { type CloseOptions, isComponent } from '@deephaven/golden-layout';\nimport Log from '@deephaven/log';\nimport { getNotebookSettings } from '@deephaven/redux';\nimport { useCallback, useEffect, useRef, useState } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { nanoid } from 'nanoid';\nimport { ConsoleEvent, NotebookEvent } from './events';\nimport {\n ConsolePanel,\n CommandHistoryPanel,\n FileExplorerPanel,\n LogPanel,\n NotebookPanel,\n} from './panels';\nimport { setDashboardConsoleSettings } from './redux';\n\nconst log = Log.module('ConsolePlugin');\n\ntype NotebookPanelComponent = PanelComponent & {\n notebook: ScriptEditor;\n focus: () => void;\n};\n\nfunction isNotebookPanel(\n panel: PanelComponent\n): panel is NotebookPanelComponent {\n return (panel as NotebookPanelComponent).notebook !== undefined;\n}\n\nexport type ConsolePluginProps = DashboardPluginComponentProps & {\n hydrateConsole?: PanelHydrateFunction;\n notebooksUrl: string;\n};\n\nfunction assertIsConsolePluginProps(\n props: Partial<ConsolePluginProps>\n): asserts props is ConsolePluginProps {\n assertIsDashboardPluginProps(props);\n}\n\nexport interface FileMetadata {\n id: string | null;\n itemName: string;\n}\n\nexport function ConsolePlugin(\n props: Partial<ConsolePluginProps>\n): JSX.Element | null {\n assertIsConsolePluginProps(props);\n const {\n id,\n hydrateConsole,\n layout,\n panelManager,\n registerComponent,\n notebooksUrl,\n } = props;\n const notebookIndex = useRef(0);\n // Map from file ID to panel ID\n const [openFileMap, setOpenFileMap] = useState(new Map<string, string>());\n const [previewFileMap, setPreviewFileMap] = useState(\n new Map<string, string>()\n );\n\n const { python: { linter = {} } = {} } = useAppSelector(getNotebookSettings);\n const { isEnabled: ruffEnabled = false, config: ruffConfig } = linter;\n useEffect(\n function setRuffSettings() {\n MonacoProviders.isRuffEnabled = ruffEnabled;\n MonacoProviders.setRuffSettings(ruffConfig);\n },\n [ruffEnabled, ruffConfig]\n );\n\n const dispatch = useDispatch();\n\n const getConsolePanel = useCallback(\n () => panelManager.getLastUsedPanelOfType(ConsolePanel),\n [panelManager]\n );\n\n const addOpenFileMapEntry = useCallback(\n (key: string, value: string) => {\n setOpenFileMap(map => new Map(map.set(key, value)));\n },\n [setOpenFileMap]\n );\n\n const deleteOpenFileMapEntry = useCallback(\n (key: string) => {\n setOpenFileMap(map => {\n map.delete(key);\n return new Map(map);\n });\n },\n [setOpenFileMap]\n );\n\n const addPreviewFileMapEntry = useCallback(\n (key: string, value: string) => {\n setPreviewFileMap(map => new Map(map.set(key, value)));\n },\n [setPreviewFileMap]\n );\n\n const deletePreviewFileMapEntry = useCallback(\n (key: string) => {\n setPreviewFileMap(map => {\n map.delete(key);\n return new Map(map);\n });\n },\n [setPreviewFileMap]\n );\n\n const handleSendCommand = useCallback(\n (command: string, focus = true, execute = true) => {\n const trimmedCommand = command && command.trim();\n if (!trimmedCommand) {\n log.info('Ignoring empty code');\n } else {\n const consolePanel = getConsolePanel();\n if (\n !consolePanel ||\n !(consolePanel instanceof ConsolePanel.WrappedComponent)\n ) {\n log.error('Console panel not found');\n return;\n }\n log.debug('Send command: ', command, focus, execute);\n consolePanel.addCommand(command, focus, execute);\n }\n },\n [getConsolePanel]\n );\n\n const handleSettingsChanged = useCallback(\n consoleSettings => {\n dispatch(setDashboardConsoleSettings(id, consoleSettings));\n },\n [dispatch, id]\n );\n\n const getNotebookFileName = useCallback(({ language }) => {\n const extension = language === 'python' ? 'py' : language;\n let title = null;\n if (extension == null) {\n log.debug('No extension for language', language);\n title = `Untitled-${notebookIndex.current}`;\n } else {\n title = `Untitled-${notebookIndex.current}.${extension}`;\n }\n notebookIndex.current += 1;\n return title;\n }, []);\n\n const getPanelIdForFileMetadata = useCallback(\n (fileMetadata: FileMetadata, createIfNecessary = true) => {\n const { id: fileId } = fileMetadata;\n if (fileId != null && openFileMap.has(fileId)) {\n return openFileMap.get(fileId);\n }\n if (fileId != null && previewFileMap.has(fileId)) {\n return previewFileMap.get(fileId);\n }\n if (createIfNecessary as boolean) {\n return nanoid();\n }\n return undefined;\n },\n [openFileMap, previewFileMap]\n );\n\n const renamePanel = useCallback(\n (panelId, newTitle) => {\n LayoutUtils.renameComponent(layout.root, { id: panelId }, newTitle);\n },\n [layout.root]\n );\n\n const renameFilePanel = useCallback(\n (oldName, newName) => {\n log.debug('Rename file panel', oldName, newName);\n let panelId;\n if (openFileMap.has(oldName)) {\n panelId = openFileMap.get(oldName);\n deleteOpenFileMapEntry(oldName);\n if (panelId != null) {\n addOpenFileMapEntry(newName, panelId);\n }\n }\n if (previewFileMap.has(oldName)) {\n panelId = previewFileMap.get(oldName);\n deletePreviewFileMapEntry(oldName);\n if (panelId != null) {\n addPreviewFileMapEntry(newName, panelId);\n }\n }\n\n if (panelId === undefined) {\n log.debug2(`File ${oldName} isn't open, no need to rename the tab`);\n return;\n }\n\n renamePanel(panelId, FileUtils.getBaseName(newName));\n },\n [\n openFileMap,\n previewFileMap,\n renamePanel,\n addOpenFileMapEntry,\n addPreviewFileMapEntry,\n deleteOpenFileMapEntry,\n deletePreviewFileMapEntry,\n ]\n );\n\n /**\n * Show the panel for the given file metadata.\n * If the panel is not already open, then it just logs an error and does nothing.\n */\n const showFilePanel = useCallback(\n fileMetadata => {\n const panelId = getPanelIdForFileMetadata(fileMetadata, false);\n if (panelId == null) {\n log.error('Could not find panel id for file metadata', fileMetadata);\n return;\n }\n LayoutUtils.activateTab(layout.root, { id: panelId });\n },\n [getPanelIdForFileMetadata, layout.root]\n );\n\n const registerFilePanel = useCallback(\n (panelId, fileMetadata: FileMetadata, isPreview: boolean) => {\n log.debug('registerFilePanel', panelId, fileMetadata, isPreview);\n if (fileMetadata == null || fileMetadata.id == null) {\n log.debug('Ignore empty file id', fileMetadata);\n return;\n }\n const { id: fileId } = fileMetadata;\n if (isPreview) {\n addPreviewFileMapEntry(fileId, panelId);\n return;\n }\n if (openFileMap.has(fileId)) {\n const existingPanelId = openFileMap.get(fileId);\n if (panelId === existingPanelId) {\n log.debug(`Update tab title for file ${fileId}`);\n const { itemName } = fileMetadata;\n renameFilePanel(fileId, itemName);\n } else {\n log.error(\n `File ${fileId} already associated with a different tab ${existingPanelId}`\n );\n }\n return;\n }\n\n addOpenFileMapEntry(fileId, panelId);\n\n // De-register preview tab\n if (previewFileMap.has(fileId)) {\n deletePreviewFileMapEntry(fileId);\n }\n },\n [\n openFileMap,\n previewFileMap,\n renameFilePanel,\n addOpenFileMapEntry,\n addPreviewFileMapEntry,\n deletePreviewFileMapEntry,\n ]\n );\n\n const unregisterFilePanel = useCallback(\n (fileMetadata: FileMetadata, isPreview: boolean) => {\n log.debug('unregisterFileTab', fileMetadata, isPreview);\n if (fileMetadata == null || fileMetadata.id == null) {\n log.debug('Ignore empty file id', fileMetadata);\n return;\n }\n const { id: fileId } = fileMetadata;\n if (isPreview) {\n deletePreviewFileMapEntry(fileId);\n return;\n }\n deleteOpenFileMapEntry(fileId);\n },\n [deleteOpenFileMapEntry, deletePreviewFileMapEntry]\n );\n\n const closeFilePanel = useCallback(\n (fileMetadata, options?: CloseOptions) => {\n log.debug('closeFilePanel', fileMetadata);\n const { id: fileId } = fileMetadata;\n let panelId = null;\n let isPreview = false;\n if (openFileMap.has(fileId)) {\n panelId = openFileMap.get(fileId);\n } else if (previewFileMap.has(fileId)) {\n panelId = previewFileMap.get(fileId);\n isPreview = true;\n } else {\n log.debug(`File ${fileId} isn't open, ignore close event`);\n return;\n }\n unregisterFilePanel(fileMetadata, isPreview);\n LayoutUtils.closeComponent(layout.root, { id: panelId }, options);\n },\n [layout.root, openFileMap, previewFileMap, unregisterFilePanel]\n );\n\n const getNotebookTitle = useCallback(fileMetadata => {\n const { itemName } = fileMetadata;\n return FileUtils.getBaseName(itemName);\n }, []);\n\n const fileIsOpen = useCallback(\n (fileMetadata: FileMetadata) => {\n const { id: fileId } = fileMetadata;\n log.debug('fileIsOpen', fileMetadata, fileId, openFileMap);\n return fileId != null && openFileMap.has(fileId);\n },\n [openFileMap]\n );\n\n const fileIsOpenAsPreview = useCallback(\n fileMetadata => {\n const { id: fileId } = fileMetadata;\n log.debug('fileIsOpenAsPreview', fileMetadata, fileId, previewFileMap);\n return fileId != null && previewFileMap.has(fileId);\n },\n [previewFileMap]\n );\n\n /*\n * Attempts to focus the panel with the provided panelId\n */\n const focusPanelById = useCallback(\n panelId => {\n if (panelId == null) {\n return;\n }\n\n const panel = panelManager.getOpenedPanelById(panelId);\n if (panel && isNotebookPanel(panel)) {\n panel.focus();\n }\n },\n [panelManager]\n );\n\n const makeConfig = useCallback(\n ({\n id: panelId,\n settings,\n fileMetadata,\n session,\n sessionLanguage,\n isPreview = false,\n }) => {\n const panelState = {\n settings,\n fileMetadata,\n };\n const title = getNotebookTitle(fileMetadata);\n return {\n type: 'react-component' as const,\n component: NotebookPanel.COMPONENT,\n isFocusOnShow: false,\n props: {\n localDashboardId: id,\n metadata: { id: panelId },\n session,\n sessionLanguage,\n panelState,\n isPreview,\n notebooksUrl,\n },\n title,\n id: panelId,\n };\n },\n [getNotebookTitle, id, notebooksUrl]\n );\n\n const createNotebook = useCallback(\n (\n session,\n sessionLanguage,\n settings,\n fileMetadata = { id: null, itemName: getNotebookFileName(settings) }\n ) => {\n const panelId = getPanelIdForFileMetadata(fileMetadata);\n if (fileIsOpen(fileMetadata) && panelId != null) {\n log.debug('File is already open, focus panel');\n showFilePanel(fileMetadata);\n focusPanelById(panelId);\n return;\n }\n const stack = LayoutUtils.getStackForComponentTypes(layout.root, [\n NotebookPanel.COMPONENT,\n ]);\n const config = makeConfig({\n id: panelId,\n settings,\n fileMetadata,\n session,\n sessionLanguage,\n });\n log.debug('createNotebook', config, openFileMap);\n LayoutUtils.openComponentInStack(stack, config);\n },\n [\n fileIsOpen,\n focusPanelById,\n getNotebookFileName,\n getPanelIdForFileMetadata,\n layout.root,\n makeConfig,\n openFileMap,\n showFilePanel,\n ]\n );\n\n const selectNotebook = useCallback(\n (\n session,\n sessionLanguage,\n settings,\n fileMetadata,\n // linter recognizes shouldFocus as any if I don't specify boolean here\n // eslint-disable-next-line @typescript-eslint/no-inferrable-types\n shouldFocus: boolean = false\n ) => {\n log.debug('selectNotebook', fileMetadata, shouldFocus);\n const isFileOpen = fileIsOpen(fileMetadata);\n const isFileOpenAsPreview = fileIsOpenAsPreview(fileMetadata);\n\n const [previewId] = [...previewFileMap.values()];\n const isPreview = !shouldFocus;\n const panelId =\n isPreview && previewId\n ? previewId\n : getPanelIdForFileMetadata(fileMetadata);\n\n if (panelId == null || panelId === '') {\n throw new Error(\n 'Unable to retrieve or create panelId for metadata',\n fileMetadata\n );\n }\n\n // If the file is already open, show it\n if (isFileOpen || isFileOpenAsPreview) {\n showFilePanel(fileMetadata);\n } else {\n const stack = LayoutUtils.getStackForComponentTypes(layout.root, [\n NotebookPanel.COMPONENT,\n ]);\n\n const config = makeConfig({\n id: panelId,\n settings,\n fileMetadata,\n session,\n sessionLanguage,\n isPreview,\n });\n\n // This will replace the existing preview by panelId if needed\n LayoutUtils.openComponentInStack(stack, config);\n }\n\n // If the file is open as a preview and focused, promote to non-preview\n if (isFileOpenAsPreview && shouldFocus) {\n const fileId = fileMetadata.id;\n const stack = LayoutUtils.getStackForConfig(layout.root, {\n component: NotebookPanel.COMPONENT,\n id: panelId,\n });\n\n const item = LayoutUtils.getContentItemInStack(stack, {\n component: NotebookPanel.COMPONENT,\n id: panelId,\n });\n if (item && isComponent(item)) {\n item.container.emit(NotebookEvent.PROMOTE_FROM_PREVIEW);\n deletePreviewFileMapEntry(fileId);\n addOpenFileMapEntry(fileId, panelId);\n }\n }\n\n if (shouldFocus) {\n // Focus the tab if we're supposed to\n focusPanelById(panelId);\n }\n },\n [\n showFilePanel,\n fileIsOpen,\n fileIsOpenAsPreview,\n focusPanelById,\n getPanelIdForFileMetadata,\n layout.root,\n makeConfig,\n previewFileMap,\n deletePreviewFileMapEntry,\n addOpenFileMapEntry,\n ]\n );\n\n /** Attempts to send the text to a notebook matching the passed in settings */\n const sendToNotebook = useCallback(\n (session, sessionLanguage, settings = {}, createIfNecessary = true) => {\n const notebookPanel = panelManager.getLastUsedPanelOfType(NotebookPanel);\n if (notebookPanel && isNotebookPanel(notebookPanel)) {\n if (\n settings != null &&\n settings.value != null &&\n notebookPanel.notebook != null\n ) {\n notebookPanel.notebook.append(settings.value);\n }\n } else if (createIfNecessary as boolean) {\n createNotebook(session, sessionLanguage, settings);\n }\n },\n [createNotebook, panelManager]\n );\n\n const hydrateNotebook = useCallback(\n (\n panelProps: DehydratedDashboardPanelProps,\n panelDashboardId: string\n ): DehydratedDashboardPanelProps =>\n DashboardUtils.hydrate(\n {\n ...panelProps,\n notebooksUrl,\n },\n panelDashboardId\n ),\n [notebooksUrl]\n );\n\n usePanelRegistration(registerComponent, ConsolePanel, hydrateConsole);\n usePanelRegistration(registerComponent, CommandHistoryPanel);\n usePanelRegistration(registerComponent, FileExplorerPanel);\n usePanelRegistration(registerComponent, LogPanel);\n usePanelRegistration(registerComponent, NotebookPanel, hydrateNotebook);\n\n useListener(layout.eventHub, ConsoleEvent.SEND_COMMAND, handleSendCommand);\n useListener(\n layout.eventHub,\n ConsoleEvent.SETTINGS_CHANGED,\n handleSettingsChanged\n );\n useListener(layout.eventHub, NotebookEvent.CLOSE_FILE, closeFilePanel);\n useListener(layout.eventHub, NotebookEvent.CREATE_NOTEBOOK, createNotebook);\n useListener(layout.eventHub, NotebookEvent.SELECT_NOTEBOOK, selectNotebook);\n useListener(layout.eventHub, NotebookEvent.RENAME, renamePanel);\n useListener(layout.eventHub, NotebookEvent.RENAME_FILE, renameFilePanel);\n useListener(layout.eventHub, NotebookEvent.SEND_TO_NOTEBOOK, sendToNotebook);\n useListener(layout.eventHub, NotebookEvent.REGISTER_FILE, registerFilePanel);\n useListener(\n layout.eventHub,\n NotebookEvent.UNREGISTER_FILE,\n unregisterFilePanel\n );\n\n return null;\n}\n\nexport default ConsolePlugin;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ConsolePlugin.js","names":["assertIsDashboardPluginProps","DashboardUtils","LayoutUtils","useListener","usePanelRegistration","FileUtils","isComponent","Log","useCallback","useRef","useState","useDispatch","nanoid","ConsoleEvent","NotebookEvent","ConsolePanel","CommandHistoryPanel","FileExplorerPanel","LogPanel","NotebookPanel","setDashboardConsoleSettings","useConfigureRuff","log","module","isNotebookPanel","panel","notebook","undefined","assertIsConsolePluginProps","props","ConsolePlugin","id","hydrateConsole","layout","panelManager","registerComponent","notebooksUrl","notebookIndex","openFileMap","setOpenFileMap","Map","previewFileMap","setPreviewFileMap","dispatch","getConsolePanel","getLastUsedPanelOfType","addOpenFileMapEntry","key","value","map","set","deleteOpenFileMapEntry","delete","addPreviewFileMapEntry","deletePreviewFileMapEntry","handleSendCommand","command","focus","arguments","length","execute","trimmedCommand","trim","info","consolePanel","WrappedComponent","error","debug","addCommand","handleSettingsChanged","consoleSettings","getNotebookFileName","_ref","language","extension","title","concat","current","getPanelIdForFileMetadata","fileMetadata","createIfNecessary","fileId","has","get","renamePanel","panelId","newTitle","renameComponent","root","renameFilePanel","oldName","newName","debug2","getBaseName","showFilePanel","activateTab","registerFilePanel","isPreview","existingPanelId","itemName","unregisterFilePanel","closeFilePanel","options","closeComponent","getNotebookTitle","fileIsOpen","fileIsOpenAsPreview","focusPanelById","getOpenedPanelById","makeConfig","_ref2","settings","session","sessionLanguage","panelState","type","component","COMPONENT","isFocusOnShow","localDashboardId","metadata","createNotebook","stack","getStackForComponentTypes","config","openComponentInStack","selectNotebook","shouldFocus","isFileOpen","isFileOpenAsPreview","previewId","values","Error","getStackForConfig","item","getContentItemInStack","container","emit","PROMOTE_FROM_PREVIEW","sendToNotebook","notebookPanel","append","hydrateNotebook","panelProps","panelDashboardId","hydrate","_objectSpread","eventHub","SEND_COMMAND","SETTINGS_CHANGED","CLOSE_FILE","CREATE_NOTEBOOK","SELECT_NOTEBOOK","RENAME","RENAME_FILE","SEND_TO_NOTEBOOK","REGISTER_FILE","UNREGISTER_FILE"],"sources":["../src/ConsolePlugin.tsx"],"sourcesContent":["import { type ScriptEditor } from '@deephaven/console';\nimport {\n assertIsDashboardPluginProps,\n type DashboardPluginComponentProps,\n DashboardUtils,\n type DehydratedDashboardPanelProps,\n LayoutUtils,\n type PanelComponent,\n type PanelHydrateFunction,\n useListener,\n usePanelRegistration,\n} from '@deephaven/dashboard';\nimport { FileUtils } from '@deephaven/file-explorer';\nimport { type CloseOptions, isComponent } from '@deephaven/golden-layout';\nimport Log from '@deephaven/log';\nimport { useCallback, useRef, useState } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { nanoid } from 'nanoid';\nimport { ConsoleEvent, NotebookEvent } from './events';\nimport {\n ConsolePanel,\n CommandHistoryPanel,\n FileExplorerPanel,\n LogPanel,\n NotebookPanel,\n} from './panels';\nimport { setDashboardConsoleSettings } from './redux';\nimport useConfigureRuff from './useConfigureRuff';\n\nconst log = Log.module('ConsolePlugin');\n\ntype NotebookPanelComponent = PanelComponent & {\n notebook: ScriptEditor;\n focus: () => void;\n};\n\nfunction isNotebookPanel(\n panel: PanelComponent\n): panel is NotebookPanelComponent {\n return (panel as NotebookPanelComponent).notebook !== undefined;\n}\n\nexport type ConsolePluginProps = DashboardPluginComponentProps & {\n hydrateConsole?: PanelHydrateFunction;\n notebooksUrl: string;\n};\n\nfunction assertIsConsolePluginProps(\n props: Partial<ConsolePluginProps>\n): asserts props is ConsolePluginProps {\n assertIsDashboardPluginProps(props);\n}\n\nexport interface FileMetadata {\n id: string | null;\n itemName: string;\n}\n\nexport function ConsolePlugin(\n props: Partial<ConsolePluginProps>\n): JSX.Element | null {\n assertIsConsolePluginProps(props);\n const {\n id,\n hydrateConsole,\n layout,\n panelManager,\n registerComponent,\n notebooksUrl,\n } = props;\n const notebookIndex = useRef(0);\n // Map from file ID to panel ID\n const [openFileMap, setOpenFileMap] = useState(new Map<string, string>());\n const [previewFileMap, setPreviewFileMap] = useState(\n new Map<string, string>()\n );\n\n useConfigureRuff();\n\n const dispatch = useDispatch();\n\n const getConsolePanel = useCallback(\n () => panelManager.getLastUsedPanelOfType(ConsolePanel),\n [panelManager]\n );\n\n const addOpenFileMapEntry = useCallback(\n (key: string, value: string) => {\n setOpenFileMap(map => new Map(map.set(key, value)));\n },\n [setOpenFileMap]\n );\n\n const deleteOpenFileMapEntry = useCallback(\n (key: string) => {\n setOpenFileMap(map => {\n map.delete(key);\n return new Map(map);\n });\n },\n [setOpenFileMap]\n );\n\n const addPreviewFileMapEntry = useCallback(\n (key: string, value: string) => {\n setPreviewFileMap(map => new Map(map.set(key, value)));\n },\n [setPreviewFileMap]\n );\n\n const deletePreviewFileMapEntry = useCallback(\n (key: string) => {\n setPreviewFileMap(map => {\n map.delete(key);\n return new Map(map);\n });\n },\n [setPreviewFileMap]\n );\n\n const handleSendCommand = useCallback(\n (command: string, focus = true, execute = true) => {\n const trimmedCommand = command && command.trim();\n if (!trimmedCommand) {\n log.info('Ignoring empty code');\n } else {\n const consolePanel = getConsolePanel();\n if (\n !consolePanel ||\n !(consolePanel instanceof ConsolePanel.WrappedComponent)\n ) {\n log.error('Console panel not found');\n return;\n }\n log.debug('Send command: ', command, focus, execute);\n consolePanel.addCommand(command, focus, execute);\n }\n },\n [getConsolePanel]\n );\n\n const handleSettingsChanged = useCallback(\n consoleSettings => {\n dispatch(setDashboardConsoleSettings(id, consoleSettings));\n },\n [dispatch, id]\n );\n\n const getNotebookFileName = useCallback(({ language }) => {\n const extension = language === 'python' ? 'py' : language;\n let title = null;\n if (extension == null) {\n log.debug('No extension for language', language);\n title = `Untitled-${notebookIndex.current}`;\n } else {\n title = `Untitled-${notebookIndex.current}.${extension}`;\n }\n notebookIndex.current += 1;\n return title;\n }, []);\n\n const getPanelIdForFileMetadata = useCallback(\n (fileMetadata: FileMetadata, createIfNecessary = true) => {\n const { id: fileId } = fileMetadata;\n if (fileId != null && openFileMap.has(fileId)) {\n return openFileMap.get(fileId);\n }\n if (fileId != null && previewFileMap.has(fileId)) {\n return previewFileMap.get(fileId);\n }\n if (createIfNecessary as boolean) {\n return nanoid();\n }\n return undefined;\n },\n [openFileMap, previewFileMap]\n );\n\n const renamePanel = useCallback(\n (panelId, newTitle) => {\n LayoutUtils.renameComponent(layout.root, { id: panelId }, newTitle);\n },\n [layout.root]\n );\n\n const renameFilePanel = useCallback(\n (oldName, newName) => {\n log.debug('Rename file panel', oldName, newName);\n let panelId;\n if (openFileMap.has(oldName)) {\n panelId = openFileMap.get(oldName);\n deleteOpenFileMapEntry(oldName);\n if (panelId != null) {\n addOpenFileMapEntry(newName, panelId);\n }\n }\n if (previewFileMap.has(oldName)) {\n panelId = previewFileMap.get(oldName);\n deletePreviewFileMapEntry(oldName);\n if (panelId != null) {\n addPreviewFileMapEntry(newName, panelId);\n }\n }\n\n if (panelId === undefined) {\n log.debug2(`File ${oldName} isn't open, no need to rename the tab`);\n return;\n }\n\n renamePanel(panelId, FileUtils.getBaseName(newName));\n },\n [\n openFileMap,\n previewFileMap,\n renamePanel,\n addOpenFileMapEntry,\n addPreviewFileMapEntry,\n deleteOpenFileMapEntry,\n deletePreviewFileMapEntry,\n ]\n );\n\n /**\n * Show the panel for the given file metadata.\n * If the panel is not already open, then it just logs an error and does nothing.\n */\n const showFilePanel = useCallback(\n fileMetadata => {\n const panelId = getPanelIdForFileMetadata(fileMetadata, false);\n if (panelId == null) {\n log.error('Could not find panel id for file metadata', fileMetadata);\n return;\n }\n LayoutUtils.activateTab(layout.root, { id: panelId });\n },\n [getPanelIdForFileMetadata, layout.root]\n );\n\n const registerFilePanel = useCallback(\n (panelId, fileMetadata: FileMetadata, isPreview: boolean) => {\n log.debug('registerFilePanel', panelId, fileMetadata, isPreview);\n if (fileMetadata == null || fileMetadata.id == null) {\n log.debug('Ignore empty file id', fileMetadata);\n return;\n }\n const { id: fileId } = fileMetadata;\n if (isPreview) {\n addPreviewFileMapEntry(fileId, panelId);\n return;\n }\n if (openFileMap.has(fileId)) {\n const existingPanelId = openFileMap.get(fileId);\n if (panelId === existingPanelId) {\n log.debug(`Update tab title for file ${fileId}`);\n const { itemName } = fileMetadata;\n renameFilePanel(fileId, itemName);\n } else {\n log.error(\n `File ${fileId} already associated with a different tab ${existingPanelId}`\n );\n }\n return;\n }\n\n addOpenFileMapEntry(fileId, panelId);\n\n // De-register preview tab\n if (previewFileMap.has(fileId)) {\n deletePreviewFileMapEntry(fileId);\n }\n },\n [\n openFileMap,\n previewFileMap,\n renameFilePanel,\n addOpenFileMapEntry,\n addPreviewFileMapEntry,\n deletePreviewFileMapEntry,\n ]\n );\n\n const unregisterFilePanel = useCallback(\n (fileMetadata: FileMetadata, isPreview: boolean) => {\n log.debug('unregisterFileTab', fileMetadata, isPreview);\n if (fileMetadata == null || fileMetadata.id == null) {\n log.debug('Ignore empty file id', fileMetadata);\n return;\n }\n const { id: fileId } = fileMetadata;\n if (isPreview) {\n deletePreviewFileMapEntry(fileId);\n return;\n }\n deleteOpenFileMapEntry(fileId);\n },\n [deleteOpenFileMapEntry, deletePreviewFileMapEntry]\n );\n\n const closeFilePanel = useCallback(\n (fileMetadata, options?: CloseOptions) => {\n log.debug('closeFilePanel', fileMetadata);\n const { id: fileId } = fileMetadata;\n let panelId = null;\n let isPreview = false;\n if (openFileMap.has(fileId)) {\n panelId = openFileMap.get(fileId);\n } else if (previewFileMap.has(fileId)) {\n panelId = previewFileMap.get(fileId);\n isPreview = true;\n } else {\n log.debug(`File ${fileId} isn't open, ignore close event`);\n return;\n }\n unregisterFilePanel(fileMetadata, isPreview);\n LayoutUtils.closeComponent(layout.root, { id: panelId }, options);\n },\n [layout.root, openFileMap, previewFileMap, unregisterFilePanel]\n );\n\n const getNotebookTitle = useCallback(fileMetadata => {\n const { itemName } = fileMetadata;\n return FileUtils.getBaseName(itemName);\n }, []);\n\n const fileIsOpen = useCallback(\n (fileMetadata: FileMetadata) => {\n const { id: fileId } = fileMetadata;\n log.debug('fileIsOpen', fileMetadata, fileId, openFileMap);\n return fileId != null && openFileMap.has(fileId);\n },\n [openFileMap]\n );\n\n const fileIsOpenAsPreview = useCallback(\n fileMetadata => {\n const { id: fileId } = fileMetadata;\n log.debug('fileIsOpenAsPreview', fileMetadata, fileId, previewFileMap);\n return fileId != null && previewFileMap.has(fileId);\n },\n [previewFileMap]\n );\n\n /*\n * Attempts to focus the panel with the provided panelId\n */\n const focusPanelById = useCallback(\n panelId => {\n if (panelId == null) {\n return;\n }\n\n const panel = panelManager.getOpenedPanelById(panelId);\n if (panel && isNotebookPanel(panel)) {\n panel.focus();\n }\n },\n [panelManager]\n );\n\n const makeConfig = useCallback(\n ({\n id: panelId,\n settings,\n fileMetadata,\n session,\n sessionLanguage,\n isPreview = false,\n }) => {\n const panelState = {\n settings,\n fileMetadata,\n };\n const title = getNotebookTitle(fileMetadata);\n return {\n type: 'react-component' as const,\n component: NotebookPanel.COMPONENT,\n isFocusOnShow: false,\n props: {\n localDashboardId: id,\n metadata: { id: panelId },\n session,\n sessionLanguage,\n panelState,\n isPreview,\n notebooksUrl,\n },\n title,\n id: panelId,\n };\n },\n [getNotebookTitle, id, notebooksUrl]\n );\n\n const createNotebook = useCallback(\n (\n session,\n sessionLanguage,\n settings,\n fileMetadata = { id: null, itemName: getNotebookFileName(settings) }\n ) => {\n const panelId = getPanelIdForFileMetadata(fileMetadata);\n if (fileIsOpen(fileMetadata) && panelId != null) {\n log.debug('File is already open, focus panel');\n showFilePanel(fileMetadata);\n focusPanelById(panelId);\n return;\n }\n const stack = LayoutUtils.getStackForComponentTypes(layout.root, [\n NotebookPanel.COMPONENT,\n ]);\n const config = makeConfig({\n id: panelId,\n settings,\n fileMetadata,\n session,\n sessionLanguage,\n });\n log.debug('createNotebook', config, openFileMap);\n LayoutUtils.openComponentInStack(stack, config);\n },\n [\n fileIsOpen,\n focusPanelById,\n getNotebookFileName,\n getPanelIdForFileMetadata,\n layout.root,\n makeConfig,\n openFileMap,\n showFilePanel,\n ]\n );\n\n const selectNotebook = useCallback(\n (\n session,\n sessionLanguage,\n settings,\n fileMetadata,\n // linter recognizes shouldFocus as any if I don't specify boolean here\n // eslint-disable-next-line @typescript-eslint/no-inferrable-types\n shouldFocus: boolean = false\n ) => {\n log.debug('selectNotebook', fileMetadata, shouldFocus);\n const isFileOpen = fileIsOpen(fileMetadata);\n const isFileOpenAsPreview = fileIsOpenAsPreview(fileMetadata);\n\n const [previewId] = [...previewFileMap.values()];\n const isPreview = !shouldFocus;\n const panelId =\n isPreview && previewId\n ? previewId\n : getPanelIdForFileMetadata(fileMetadata);\n\n if (panelId == null || panelId === '') {\n throw new Error(\n 'Unable to retrieve or create panelId for metadata',\n fileMetadata\n );\n }\n\n // If the file is already open, show it\n if (isFileOpen || isFileOpenAsPreview) {\n showFilePanel(fileMetadata);\n } else {\n const stack = LayoutUtils.getStackForComponentTypes(layout.root, [\n NotebookPanel.COMPONENT,\n ]);\n\n const config = makeConfig({\n id: panelId,\n settings,\n fileMetadata,\n session,\n sessionLanguage,\n isPreview,\n });\n\n // This will replace the existing preview by panelId if needed\n LayoutUtils.openComponentInStack(stack, config);\n }\n\n // If the file is open as a preview and focused, promote to non-preview\n if (isFileOpenAsPreview && shouldFocus) {\n const fileId = fileMetadata.id;\n const stack = LayoutUtils.getStackForConfig(layout.root, {\n component: NotebookPanel.COMPONENT,\n id: panelId,\n });\n\n const item = LayoutUtils.getContentItemInStack(stack, {\n component: NotebookPanel.COMPONENT,\n id: panelId,\n });\n if (item && isComponent(item)) {\n item.container.emit(NotebookEvent.PROMOTE_FROM_PREVIEW);\n deletePreviewFileMapEntry(fileId);\n addOpenFileMapEntry(fileId, panelId);\n }\n }\n\n if (shouldFocus) {\n // Focus the tab if we're supposed to\n focusPanelById(panelId);\n }\n },\n [\n showFilePanel,\n fileIsOpen,\n fileIsOpenAsPreview,\n focusPanelById,\n getPanelIdForFileMetadata,\n layout.root,\n makeConfig,\n previewFileMap,\n deletePreviewFileMapEntry,\n addOpenFileMapEntry,\n ]\n );\n\n /** Attempts to send the text to a notebook matching the passed in settings */\n const sendToNotebook = useCallback(\n (session, sessionLanguage, settings = {}, createIfNecessary = true) => {\n const notebookPanel = panelManager.getLastUsedPanelOfType(NotebookPanel);\n if (notebookPanel && isNotebookPanel(notebookPanel)) {\n if (\n settings != null &&\n settings.value != null &&\n notebookPanel.notebook != null\n ) {\n notebookPanel.notebook.append(settings.value);\n }\n } else if (createIfNecessary as boolean) {\n createNotebook(session, sessionLanguage, settings);\n }\n },\n [createNotebook, panelManager]\n );\n\n const hydrateNotebook = useCallback(\n (\n panelProps: DehydratedDashboardPanelProps,\n panelDashboardId: string\n ): DehydratedDashboardPanelProps =>\n DashboardUtils.hydrate(\n {\n ...panelProps,\n notebooksUrl,\n },\n panelDashboardId\n ),\n [notebooksUrl]\n );\n\n usePanelRegistration(registerComponent, ConsolePanel, hydrateConsole);\n usePanelRegistration(registerComponent, CommandHistoryPanel);\n usePanelRegistration(registerComponent, FileExplorerPanel);\n usePanelRegistration(registerComponent, LogPanel);\n usePanelRegistration(registerComponent, NotebookPanel, hydrateNotebook);\n\n useListener(layout.eventHub, ConsoleEvent.SEND_COMMAND, handleSendCommand);\n useListener(\n layout.eventHub,\n ConsoleEvent.SETTINGS_CHANGED,\n handleSettingsChanged\n );\n useListener(layout.eventHub, NotebookEvent.CLOSE_FILE, closeFilePanel);\n useListener(layout.eventHub, NotebookEvent.CREATE_NOTEBOOK, createNotebook);\n useListener(layout.eventHub, NotebookEvent.SELECT_NOTEBOOK, selectNotebook);\n useListener(layout.eventHub, NotebookEvent.RENAME, renamePanel);\n useListener(layout.eventHub, NotebookEvent.RENAME_FILE, renameFilePanel);\n useListener(layout.eventHub, NotebookEvent.SEND_TO_NOTEBOOK, sendToNotebook);\n useListener(layout.eventHub, NotebookEvent.REGISTER_FILE, registerFilePanel);\n useListener(\n layout.eventHub,\n NotebookEvent.UNREGISTER_FILE,\n unregisterFilePanel\n );\n\n return null;\n}\n\nexport default ConsolePlugin;\n"],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -22,6 +22,7 @@ export { default as ControlType } from './controls/ControlType';
|
|
|
22
22
|
export { default as LinkerUtils } from './linker/LinkerUtils';
|
|
23
23
|
export type { Link } from './linker/LinkerUtils';
|
|
24
24
|
export { default as ToolType } from './linker/ToolType';
|
|
25
|
+
export * from './useConfigureRuff';
|
|
25
26
|
export * from './useLoadTablePlugin';
|
|
26
27
|
export * from './events';
|
|
27
28
|
export * from './panels';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACjF,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AACzE,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACjF,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAC9D,YAAY,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AACxD,cAAc,sBAAsB,CAAC;AAErC,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACjF,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AACzE,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACjF,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAC9D,YAAY,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AACxD,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AAErC,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -21,6 +21,7 @@ export { default as WidgetLoaderPluginConfig } from "./WidgetLoaderPluginConfig.
|
|
|
21
21
|
export { default as ControlType } from "./controls/ControlType.js";
|
|
22
22
|
export { default as LinkerUtils } from "./linker/LinkerUtils.js";
|
|
23
23
|
export { default as ToolType } from "./linker/ToolType.js";
|
|
24
|
+
export * from "./useConfigureRuff.js";
|
|
24
25
|
export * from "./useLoadTablePlugin.js";
|
|
25
26
|
export * from "./events/index.js";
|
|
26
27
|
export * from "./panels/index.js";
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["default","ChartPanelPlugin","ChartWidgetPlugin","ChartPluginConfig","ChartBuilderPlugin","ChartBuilderPluginConfig","ConsolePlugin","FilterPlugin","FilterPluginConfig","GridPanelPlugin","GridWidgetPlugin","GridPluginConfig","LinkerPlugin","LinkerPluginConfig","MarkdownPlugin","MarkdownPluginConfig","PandasPanelPlugin","PandasWidgetPlugin","PandasPluginConfig","WidgetLoaderPlugin","WidgetLoaderPluginConfig","ControlType","LinkerUtils","ToolType"],"sources":["../src/index.ts"],"sourcesContent":["export { default as ChartPanelPlugin } from './ChartPanelPlugin';\nexport { default as ChartWidgetPlugin } from './ChartWidgetPlugin';\nexport { default as ChartPluginConfig } from './ChartPluginConfig';\nexport { default as ChartBuilderPlugin } from './ChartBuilderPlugin';\nexport { default as ChartBuilderPluginConfig } from './ChartBuilderPluginConfig';\nexport { default as ConsolePlugin } from './ConsolePlugin';\nexport { default as FilterPlugin } from './FilterPlugin';\nexport { default as FilterPluginConfig } from './FilterPluginConfig';\nexport { default as GridPanelPlugin } from './GridPanelPlugin';\nexport { default as GridWidgetPlugin } from './GridWidgetPlugin';\nexport { default as GridPluginConfig } from './GridPluginConfig';\nexport { default as LinkerPlugin } from './LinkerPlugin';\nexport { default as LinkerPluginConfig } from './LinkerPluginConfig';\nexport { default as MarkdownPlugin } from './MarkdownPlugin';\nexport { default as MarkdownPluginConfig } from './MarkdownPluginConfig';\nexport { default as PandasPanelPlugin } from './PandasPanelPlugin';\nexport { default as PandasWidgetPlugin } from './PandasWidgetPlugin';\nexport { default as PandasPluginConfig } from './PandasPluginConfig';\nexport { default as WidgetLoaderPlugin } from './WidgetLoaderPlugin';\nexport { default as WidgetLoaderPluginConfig } from './WidgetLoaderPluginConfig';\nexport { default as ControlType } from './controls/ControlType';\nexport { default as LinkerUtils } from './linker/LinkerUtils';\nexport type { Link } from './linker/LinkerUtils';\nexport { default as ToolType } from './linker/ToolType';\nexport * from './useLoadTablePlugin';\n\nexport * from './events';\nexport * from './panels';\nexport * from './redux';\nexport * from './prop-types';\nexport * from './linker';\n"],"mappings":"SAASA,OAAO,IAAIC,gBAAgB;AAAA,SAC3BD,OAAO,IAAIE,iBAAiB;AAAA,SAC5BF,OAAO,IAAIG,iBAAiB;AAAA,SAC5BH,OAAO,IAAII,kBAAkB;AAAA,SAC7BJ,OAAO,IAAIK,wBAAwB;AAAA,SACnCL,OAAO,IAAIM,aAAa;AAAA,SACxBN,OAAO,IAAIO,YAAY;AAAA,SACvBP,OAAO,IAAIQ,kBAAkB;AAAA,SAC7BR,OAAO,IAAIS,eAAe;AAAA,SAC1BT,OAAO,IAAIU,gBAAgB;AAAA,SAC3BV,OAAO,IAAIW,gBAAgB;AAAA,SAC3BX,OAAO,IAAIY,YAAY;AAAA,SACvBZ,OAAO,IAAIa,kBAAkB;AAAA,SAC7Bb,OAAO,IAAIc,cAAc;AAAA,SACzBd,OAAO,IAAIe,oBAAoB;AAAA,SAC/Bf,OAAO,IAAIgB,iBAAiB;AAAA,SAC5BhB,OAAO,IAAIiB,kBAAkB;AAAA,SAC7BjB,OAAO,IAAIkB,kBAAkB;AAAA,SAC7BlB,OAAO,IAAImB,kBAAkB;AAAA,SAC7BnB,OAAO,IAAIoB,wBAAwB;AAAA,SACnCpB,OAAO,IAAIqB,WAAW;AAAA,SACtBrB,OAAO,IAAIsB,WAAW;AAAA,SAEtBtB,OAAO,IAAIuB,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["default","ChartPanelPlugin","ChartWidgetPlugin","ChartPluginConfig","ChartBuilderPlugin","ChartBuilderPluginConfig","ConsolePlugin","FilterPlugin","FilterPluginConfig","GridPanelPlugin","GridWidgetPlugin","GridPluginConfig","LinkerPlugin","LinkerPluginConfig","MarkdownPlugin","MarkdownPluginConfig","PandasPanelPlugin","PandasWidgetPlugin","PandasPluginConfig","WidgetLoaderPlugin","WidgetLoaderPluginConfig","ControlType","LinkerUtils","ToolType"],"sources":["../src/index.ts"],"sourcesContent":["export { default as ChartPanelPlugin } from './ChartPanelPlugin';\nexport { default as ChartWidgetPlugin } from './ChartWidgetPlugin';\nexport { default as ChartPluginConfig } from './ChartPluginConfig';\nexport { default as ChartBuilderPlugin } from './ChartBuilderPlugin';\nexport { default as ChartBuilderPluginConfig } from './ChartBuilderPluginConfig';\nexport { default as ConsolePlugin } from './ConsolePlugin';\nexport { default as FilterPlugin } from './FilterPlugin';\nexport { default as FilterPluginConfig } from './FilterPluginConfig';\nexport { default as GridPanelPlugin } from './GridPanelPlugin';\nexport { default as GridWidgetPlugin } from './GridWidgetPlugin';\nexport { default as GridPluginConfig } from './GridPluginConfig';\nexport { default as LinkerPlugin } from './LinkerPlugin';\nexport { default as LinkerPluginConfig } from './LinkerPluginConfig';\nexport { default as MarkdownPlugin } from './MarkdownPlugin';\nexport { default as MarkdownPluginConfig } from './MarkdownPluginConfig';\nexport { default as PandasPanelPlugin } from './PandasPanelPlugin';\nexport { default as PandasWidgetPlugin } from './PandasWidgetPlugin';\nexport { default as PandasPluginConfig } from './PandasPluginConfig';\nexport { default as WidgetLoaderPlugin } from './WidgetLoaderPlugin';\nexport { default as WidgetLoaderPluginConfig } from './WidgetLoaderPluginConfig';\nexport { default as ControlType } from './controls/ControlType';\nexport { default as LinkerUtils } from './linker/LinkerUtils';\nexport type { Link } from './linker/LinkerUtils';\nexport { default as ToolType } from './linker/ToolType';\nexport * from './useConfigureRuff';\nexport * from './useLoadTablePlugin';\n\nexport * from './events';\nexport * from './panels';\nexport * from './redux';\nexport * from './prop-types';\nexport * from './linker';\n"],"mappings":"SAASA,OAAO,IAAIC,gBAAgB;AAAA,SAC3BD,OAAO,IAAIE,iBAAiB;AAAA,SAC5BF,OAAO,IAAIG,iBAAiB;AAAA,SAC5BH,OAAO,IAAII,kBAAkB;AAAA,SAC7BJ,OAAO,IAAIK,wBAAwB;AAAA,SACnCL,OAAO,IAAIM,aAAa;AAAA,SACxBN,OAAO,IAAIO,YAAY;AAAA,SACvBP,OAAO,IAAIQ,kBAAkB;AAAA,SAC7BR,OAAO,IAAIS,eAAe;AAAA,SAC1BT,OAAO,IAAIU,gBAAgB;AAAA,SAC3BV,OAAO,IAAIW,gBAAgB;AAAA,SAC3BX,OAAO,IAAIY,YAAY;AAAA,SACvBZ,OAAO,IAAIa,kBAAkB;AAAA,SAC7Bb,OAAO,IAAIc,cAAc;AAAA,SACzBd,OAAO,IAAIe,oBAAoB;AAAA,SAC/Bf,OAAO,IAAIgB,iBAAiB;AAAA,SAC5BhB,OAAO,IAAIiB,kBAAkB;AAAA,SAC7BjB,OAAO,IAAIkB,kBAAkB;AAAA,SAC7BlB,OAAO,IAAImB,kBAAkB;AAAA,SAC7BnB,OAAO,IAAIoB,wBAAwB;AAAA,SACnCpB,OAAO,IAAIqB,WAAW;AAAA,SACtBrB,OAAO,IAAIsB,WAAW;AAAA,SAEtBtB,OAAO,IAAIuB,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NotebookPanel.d.ts","sourceRoot":"","sources":["../../src/panels/NotebookPanel.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,KAAK,YAAY,EAAkB,MAAM,OAAO,CAAC;AAI5E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,EAOL,KAAK,cAAc,EAEpB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,
|
|
1
|
+
{"version":3,"file":"NotebookPanel.d.ts","sourceRoot":"","sources":["../../src/panels/NotebookPanel.tsx"],"names":[],"mappings":"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"}
|
|
@@ -12,7 +12,7 @@ import memoize from 'memoize-one';
|
|
|
12
12
|
import { connect } from 'react-redux';
|
|
13
13
|
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
|
|
14
14
|
import { BasicModal, ContextActions, DropdownMenu, Tooltip, GLOBAL_SHORTCUTS, Button, LoadingOverlay } from '@deephaven/components';
|
|
15
|
-
import { ScriptEditor, ScriptEditorUtils, SHORTCUTS } from '@deephaven/console';
|
|
15
|
+
import { MonacoUtils, ScriptEditor, ScriptEditorUtils, SHORTCUTS } from '@deephaven/console';
|
|
16
16
|
import { FileUtils, NewItemModal } from '@deephaven/file-explorer';
|
|
17
17
|
import { vsSave, vsKebabVertical, dhFileSearch, vsPlay, dhRunSelection, vsCheck, vsCopy, dhICursor, vsTrash } from '@deephaven/icons';
|
|
18
18
|
import { getFileStorage, updateNotebookSettings as updateNotebookSettingsAction, getNotebookSettings } from '@deephaven/redux';
|
|
@@ -928,15 +928,15 @@ class NotebookPanel extends Component {
|
|
|
928
928
|
this.saveContent(name, content);
|
|
929
929
|
}
|
|
930
930
|
canFormat() {
|
|
931
|
-
var _this$notebook
|
|
932
|
-
return ((_this$notebook = this.notebook) === null || _this$notebook === void 0 ? void 0 :
|
|
931
|
+
var _this$notebook;
|
|
932
|
+
return ((_this$notebook = this.notebook) === null || _this$notebook === void 0 ? void 0 : _this$notebook.editor) != null ? MonacoUtils.canFormat(this.notebook.editor) : false;
|
|
933
933
|
}
|
|
934
934
|
handleFormat() {
|
|
935
935
|
var _this4 = this;
|
|
936
936
|
return _asyncToGenerator(function* () {
|
|
937
|
-
|
|
938
|
-
|
|
939
|
-
yield
|
|
937
|
+
var _this4$notebook;
|
|
938
|
+
if (((_this4$notebook = _this4.notebook) === null || _this4$notebook === void 0 ? void 0 : _this4$notebook.editor) != null) {
|
|
939
|
+
yield MonacoUtils.formatDocument(_this4.notebook.editor);
|
|
940
940
|
}
|
|
941
941
|
})();
|
|
942
942
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NotebookPanel.js","names":["React","Component","Suspense","lazy","ReactDOM","memoize","connect","FontAwesomeIcon","BasicModal","ContextActions","DropdownMenu","Tooltip","GLOBAL_SHORTCUTS","Button","LoadingOverlay","ScriptEditor","ScriptEditorUtils","SHORTCUTS","FileUtils","NewItemModal","vsSave","vsKebabVertical","dhFileSearch","vsPlay","dhRunSelection","vsCheck","vsCopy","dhICursor","vsTrash","getFileStorage","updateNotebookSettings","updateNotebookSettingsAction","getNotebookSettings","classNames","debounce","PanelEvent","Log","assertNotNull","Pending","PromiseUtils","ConsoleEvent","NotebookEvent","getDashboardSessionWrapper","Panel","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","MarkdownNotebook","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","formatOnSave","actions","title","icon","action","handleFind","group","groups","high","shortcut","NOTEBOOK","FIND","order","handleCopy","medium","handleShowRename","handleDelete","undefined","handleMinimapChange","low","MINIMAP","handleWordWrapChange","WORDWRAP","canFormat","push","handleFormat","handleFormatOnSaveChange","handleCloseCancel","bind","handleCloseDiscard","handleCloseSave","handleDeleteConfirm","handleDeleteCancel","handleEditorInitialized","handleEditorWillDestroy","handleEditorChange","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","isLoading","isLoaded","savedChangeCount","showCloseModal","showDeleteModal","showSaveAsModal","scriptCode","debug","componentDidMount","glContainer","glEventHub","tab","initTab","initNotebookContent","on","RENAME_FILE","DROPPED","PROMOTE_FROM_PREVIEW","componentDidUpdate","prevProps","prevState","notebookSettings","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","SELECT_NOTEBOOK","_this2","fileExists","deleteFile","innerEditor","editor","e","debug2","isUndoing","isRedoing","toggleFind","updateOptions","_notebookSettings$isM","newSettings","_notebookSettings$for","event","notebooksUrl","href","currentTarget","startsWith","stopPropagation","preventDefault","notebookPath","substring","replace","errorParam","isTimedOut","_this3","file","_NotebookPanel$langua2","oldMetadata","name","_this$getNotebookValu","isOverwrite","arguments","_this$notebook","_this$notebook$editor","_this$notebook$editor2","getAction","isSupported","_this4","_this4$notebook","_this4$notebook$edito","_this4$notebook$edito2","run","oldName","newName","curPanelState","JSON","stringify","_this$notebook2","updateDimensions","command","runCommand","_this$notebook$getVal","getSelectedCommand","_ref2","_this$notebook3","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","_notebookSettings$isM2","_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","renderTabTooltip","kind","onClick","disabled","transform","tooltip","RUN","getDisplayText","RUN_SELECTED","popperOptions","POPPER_OPTIONS","onChange","onRunCommand","onEditorInitialized","onEditorWillDestroy","ref","fallback","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, type ReactElement, Suspense, lazy } 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 type DropdownAction,\n LoadingOverlay,\n} from '@deephaven/components';\nimport { ScriptEditor, ScriptEditorUtils, SHORTCUTS } from '@deephaven/console';\nimport {\n type FileStorage,\n FileUtils,\n NewItemModal,\n type 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 updateNotebookSettings as updateNotebookSettingsAction,\n type RootState,\n type WorkspaceSettings,\n getNotebookSettings,\n} from '@deephaven/redux';\nimport classNames from 'classnames';\nimport debounce from 'lodash.debounce';\nimport {\n type DashboardPanelProps,\n PanelEvent,\n type 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 { dh } from '@deephaven/jsapi-types';\nimport { ConsoleEvent, NotebookEvent } from '../events';\nimport { getDashboardSessionWrapper } from '../redux';\nimport Panel from './Panel';\nimport './NotebookPanel.scss';\n\nconst MarkdownNotebook = lazy(() => import('./MarkdownNotebook'));\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 formatOnSave?: 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 NotebookPanelMappedProps {\n notebookSettings: NotebookSetting;\n fileStorage: FileStorage;\n session?: dh.IdeSession;\n sessionLanguage?: string;\n}\n\ninterface NotebookPanelProps\n extends DashboardPanelProps,\n NotebookPanelMappedProps {\n isDashboardActive: boolean;\n isPreview: boolean;\n metadata: Metadata;\n panelState: PanelState;\n notebooksUrl: string;\n updateNotebookSettings: (\n settings: Partial<WorkspaceSettings['notebookSettings']>\n ) => void;\n}\n\ninterface NotebookPanelState {\n error?: {\n message?: string | undefined;\n };\n isDashboardActive: 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?: dh.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 formatOnSave: boolean;\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 notebookSettings: { 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.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.handleFormatOnSaveChange = this.handleFormatOnSaveChange.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.handleFormat = this.handleFormat.bind(this);\n this.canFormat = this.canFormat.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 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 formatOnSave: false,\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 { notebookSettings } = 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 notebookSettings.isMinimapEnabled !==\n prevProps.notebookSettings.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 (\n isMinimapEnabled: boolean,\n isWordWrapEnabled: boolean,\n formatOnSave: boolean\n ) => {\n const actions: DropdownAction[] = [\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 if (this.canFormat()) {\n actions.push({\n title: 'Format Document',\n action: this.handleFormat,\n group: ContextActions.groups.low,\n order: 10,\n });\n actions.push({\n title: 'Format on Save',\n icon: formatOnSave ? vsCheck : undefined,\n action: this.handleFormatOnSaveChange,\n group: ContextActions.groups.low,\n order: 15,\n });\n }\n\n return actions;\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 { notebookSettings } = this.props;\n this.editor.updateOptions({\n minimap: { enabled: notebookSettings.isMinimapEnabled },\n });\n }\n }\n\n handleMinimapChange(): void {\n const { notebookSettings, updateNotebookSettings } = this.props;\n const newSettings = {\n isMinimapEnabled: !(notebookSettings.isMinimapEnabled ?? false),\n };\n updateNotebookSettings(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 handleFormatOnSaveChange(): void {\n const { notebookSettings, updateNotebookSettings } = this.props;\n const newSettings = {\n formatOnSave: !(notebookSettings.formatOnSave ?? false),\n };\n updateNotebookSettings(newSettings);\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 async handleSave(): Promise<void> {\n log.debug('handleSave');\n const { notebookSettings } = this.props;\n const { formatOnSave = false } = notebookSettings;\n if (formatOnSave) {\n await this.handleFormat();\n }\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 canFormat(): boolean {\n return (\n this.notebook?.editor\n ?.getAction('editor.action.formatDocument')\n ?.isSupported() === true\n );\n }\n\n async handleFormat(): Promise<void> {\n if (this.canFormat()) {\n await this.notebook?.editor\n ?.getAction('editor.action.formatDocument')\n ?.run();\n }\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: dh.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 { notebookSettings } = this.props;\n const { isMinimapEnabled, formatOnSave } = notebookSettings;\n const { settings: initialSettings } = this.state;\n return this.getOverflowActions(\n isMinimapEnabled ?? false,\n this.getSettings(initialSettings, isMinimapEnabled ?? false).wordWrap ===\n 'on',\n formatOnSave ?? false\n );\n }\n\n render(): ReactElement {\n const {\n fileStorage,\n glContainer,\n glContainer: { tab },\n glEventHub,\n notebookSettings,\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 notebookSettings.isMinimapEnabled ?? false\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 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 <Suspense fallback={<LoadingOverlay />}>\n <MarkdownNotebook\n content={settings.value ?? ''}\n onLinkClick={this.handleLinkClick}\n onRunCode={this.handleRunCommand}\n transformImageUri={this.handleTransformLinkUri}\n transformLinkUri={this.handleTransformLinkUri}\n />\n </Suspense>\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): NotebookPanelMappedProps => {\n const fileStorage = getFileStorage(state);\n const notebookSettings = getNotebookSettings(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 notebookSettings,\n session,\n sessionLanguage,\n };\n};\n\nconst ConnectedNotebookPanel = connect(\n mapStateToProps,\n {\n updateNotebookSettings: updateNotebookSettingsAction,\n },\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","Suspense","lazy","ReactDOM","memoize","connect","FontAwesomeIcon","BasicModal","ContextActions","DropdownMenu","Tooltip","GLOBAL_SHORTCUTS","Button","LoadingOverlay","MonacoUtils","ScriptEditor","ScriptEditorUtils","SHORTCUTS","FileUtils","NewItemModal","vsSave","vsKebabVertical","dhFileSearch","vsPlay","dhRunSelection","vsCheck","vsCopy","dhICursor","vsTrash","getFileStorage","updateNotebookSettings","updateNotebookSettingsAction","getNotebookSettings","classNames","debounce","PanelEvent","Log","assertNotNull","Pending","PromiseUtils","ConsoleEvent","NotebookEvent","getDashboardSessionWrapper","Panel","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","MarkdownNotebook","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","formatOnSave","actions","title","icon","action","handleFind","group","groups","high","shortcut","NOTEBOOK","FIND","order","handleCopy","medium","handleShowRename","handleDelete","undefined","handleMinimapChange","low","MINIMAP","handleWordWrapChange","WORDWRAP","canFormat","push","handleFormat","handleFormatOnSaveChange","handleCloseCancel","bind","handleCloseDiscard","handleCloseSave","handleDeleteConfirm","handleDeleteCancel","handleEditorInitialized","handleEditorWillDestroy","handleEditorChange","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","isLoading","isLoaded","savedChangeCount","showCloseModal","showDeleteModal","showSaveAsModal","scriptCode","debug","componentDidMount","glContainer","glEventHub","tab","initTab","initNotebookContent","on","RENAME_FILE","DROPPED","PROMOTE_FROM_PREVIEW","componentDidUpdate","prevProps","prevState","notebookSettings","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","SELECT_NOTEBOOK","_this2","fileExists","deleteFile","innerEditor","editor","e","debug2","isUndoing","isRedoing","toggleFind","updateOptions","_notebookSettings$isM","newSettings","_notebookSettings$for","event","notebooksUrl","href","currentTarget","startsWith","stopPropagation","preventDefault","notebookPath","substring","replace","errorParam","isTimedOut","_this3","file","_NotebookPanel$langua2","oldMetadata","name","_this$getNotebookValu","isOverwrite","arguments","_this$notebook","_this4","_this4$notebook","formatDocument","oldName","newName","curPanelState","JSON","stringify","_this$notebook2","updateDimensions","command","runCommand","_this$notebook$getVal","getSelectedCommand","_ref2","_this$notebook3","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","_notebookSettings$isM2","_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","renderTabTooltip","kind","onClick","disabled","transform","tooltip","RUN","getDisplayText","RUN_SELECTED","popperOptions","POPPER_OPTIONS","onChange","onRunCommand","onEditorInitialized","onEditorWillDestroy","ref","fallback","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, type ReactElement, Suspense, lazy } 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 type DropdownAction,\n LoadingOverlay,\n} from '@deephaven/components';\nimport {\n MonacoUtils,\n ScriptEditor,\n ScriptEditorUtils,\n SHORTCUTS,\n} from '@deephaven/console';\nimport {\n type FileStorage,\n FileUtils,\n NewItemModal,\n type 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 updateNotebookSettings as updateNotebookSettingsAction,\n type RootState,\n type WorkspaceSettings,\n getNotebookSettings,\n} from '@deephaven/redux';\nimport classNames from 'classnames';\nimport debounce from 'lodash.debounce';\nimport {\n type DashboardPanelProps,\n PanelEvent,\n type 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 { dh } from '@deephaven/jsapi-types';\nimport { ConsoleEvent, NotebookEvent } from '../events';\nimport { getDashboardSessionWrapper } from '../redux';\nimport Panel from './Panel';\nimport './NotebookPanel.scss';\n\nconst MarkdownNotebook = lazy(() => import('./MarkdownNotebook'));\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 formatOnSave?: 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 NotebookPanelMappedProps {\n notebookSettings: NotebookSetting;\n fileStorage: FileStorage;\n session?: dh.IdeSession;\n sessionLanguage?: string;\n}\n\ninterface NotebookPanelProps\n extends DashboardPanelProps,\n NotebookPanelMappedProps {\n isDashboardActive: boolean;\n isPreview: boolean;\n metadata: Metadata;\n panelState: PanelState;\n notebooksUrl: string;\n updateNotebookSettings: (\n settings: Partial<WorkspaceSettings['notebookSettings']>\n ) => void;\n}\n\ninterface NotebookPanelState {\n error?: {\n message?: string | undefined;\n };\n isDashboardActive: 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?: dh.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 formatOnSave: boolean;\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 notebookSettings: { 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.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.handleFormatOnSaveChange = this.handleFormatOnSaveChange.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.handleFormat = this.handleFormat.bind(this);\n this.canFormat = this.canFormat.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 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 formatOnSave: false,\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 { notebookSettings } = 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 notebookSettings.isMinimapEnabled !==\n prevProps.notebookSettings.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 (\n isMinimapEnabled: boolean,\n isWordWrapEnabled: boolean,\n formatOnSave: boolean\n ) => {\n const actions: DropdownAction[] = [\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 if (this.canFormat()) {\n actions.push({\n title: 'Format Document',\n action: this.handleFormat,\n group: ContextActions.groups.low,\n order: 10,\n });\n actions.push({\n title: 'Format on Save',\n icon: formatOnSave ? vsCheck : undefined,\n action: this.handleFormatOnSaveChange,\n group: ContextActions.groups.low,\n order: 15,\n });\n }\n\n return actions;\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 { notebookSettings } = this.props;\n this.editor.updateOptions({\n minimap: { enabled: notebookSettings.isMinimapEnabled },\n });\n }\n }\n\n handleMinimapChange(): void {\n const { notebookSettings, updateNotebookSettings } = this.props;\n const newSettings = {\n isMinimapEnabled: !(notebookSettings.isMinimapEnabled ?? false),\n };\n updateNotebookSettings(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 handleFormatOnSaveChange(): void {\n const { notebookSettings, updateNotebookSettings } = this.props;\n const newSettings = {\n formatOnSave: !(notebookSettings.formatOnSave ?? false),\n };\n updateNotebookSettings(newSettings);\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 async handleSave(): Promise<void> {\n log.debug('handleSave');\n const { notebookSettings } = this.props;\n const { formatOnSave = false } = notebookSettings;\n if (formatOnSave) {\n await this.handleFormat();\n }\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 canFormat(): boolean {\n return this.notebook?.editor != null\n ? MonacoUtils.canFormat(this.notebook.editor)\n : false;\n }\n\n async handleFormat(): Promise<void> {\n if (this.notebook?.editor != null) {\n await MonacoUtils.formatDocument(this.notebook.editor);\n }\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: dh.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 { notebookSettings } = this.props;\n const { isMinimapEnabled, formatOnSave } = notebookSettings;\n const { settings: initialSettings } = this.state;\n return this.getOverflowActions(\n isMinimapEnabled ?? false,\n this.getSettings(initialSettings, isMinimapEnabled ?? false).wordWrap ===\n 'on',\n formatOnSave ?? false\n );\n }\n\n render(): ReactElement {\n const {\n fileStorage,\n glContainer,\n glContainer: { tab },\n glEventHub,\n notebookSettings,\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 notebookSettings.isMinimapEnabled ?? false\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 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 <Suspense fallback={<LoadingOverlay />}>\n <MarkdownNotebook\n content={settings.value ?? ''}\n onLinkClick={this.handleLinkClick}\n onRunCode={this.handleRunCommand}\n transformImageUri={this.handleTransformLinkUri}\n transformLinkUri={this.handleTransformLinkUri}\n />\n </Suspense>\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): NotebookPanelMappedProps => {\n const fileStorage = getFileStorage(state);\n const notebookSettings = getNotebookSettings(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 notebookSettings,\n session,\n sessionLanguage,\n };\n};\n\nconst ConnectedNotebookPanel = connect(\n mapStateToProps,\n {\n updateNotebookSettings: updateNotebookSettingsAction,\n },\n null,\n { forwardRef: true }\n)(NotebookPanel);\n\nexport default ConnectedNotebookPanel;\n"],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hook to configure Ruff settings in Monaco.
|
|
3
|
+
* The enabled status and settings are read from redux.
|
|
4
|
+
* Any changes to the redux values will be applied to the Monaco providers.
|
|
5
|
+
*/
|
|
6
|
+
export declare function useConfigureRuff(): void;
|
|
7
|
+
export default useConfigureRuff;
|
|
8
|
+
//# sourceMappingURL=useConfigureRuff.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useConfigureRuff.d.ts","sourceRoot":"","sources":["../src/useConfigureRuff.ts"],"names":[],"mappings":"AAKA;;;;GAIG;AACH,wBAAgB,gBAAgB,IAAI,IAAI,CAUvC;AAED,eAAe,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { useEffect } from 'react';
|
|
2
|
+
import { MonacoProviders } from '@deephaven/console';
|
|
3
|
+
import { useAppSelector } from '@deephaven/dashboard';
|
|
4
|
+
import { getNotebookSettings } from '@deephaven/redux';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Hook to configure Ruff settings in Monaco.
|
|
8
|
+
* The enabled status and settings are read from redux.
|
|
9
|
+
* Any changes to the redux values will be applied to the Monaco providers.
|
|
10
|
+
*/
|
|
11
|
+
export function useConfigureRuff() {
|
|
12
|
+
var {
|
|
13
|
+
python: {
|
|
14
|
+
linter = {}
|
|
15
|
+
} = {}
|
|
16
|
+
} = useAppSelector(getNotebookSettings);
|
|
17
|
+
var {
|
|
18
|
+
isEnabled: ruffEnabled = false,
|
|
19
|
+
config: ruffConfig
|
|
20
|
+
} = linter;
|
|
21
|
+
useEffect(function setRuffSettings() {
|
|
22
|
+
MonacoProviders.isRuffEnabled = ruffEnabled;
|
|
23
|
+
MonacoProviders.setRuffSettings(ruffConfig); // Also inits Ruff if needed
|
|
24
|
+
}, [ruffEnabled, ruffConfig]);
|
|
25
|
+
}
|
|
26
|
+
export default useConfigureRuff;
|
|
27
|
+
//# sourceMappingURL=useConfigureRuff.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useConfigureRuff.js","names":["useEffect","MonacoProviders","useAppSelector","getNotebookSettings","useConfigureRuff","python","linter","isEnabled","ruffEnabled","config","ruffConfig","setRuffSettings","isRuffEnabled"],"sources":["../src/useConfigureRuff.ts"],"sourcesContent":["import { useEffect } from 'react';\nimport { MonacoProviders } from '@deephaven/console';\nimport { useAppSelector } from '@deephaven/dashboard';\nimport { getNotebookSettings } from '@deephaven/redux';\n\n/**\n * Hook to configure Ruff settings in Monaco.\n * The enabled status and settings are read from redux.\n * Any changes to the redux values will be applied to the Monaco providers.\n */\nexport function useConfigureRuff(): void {\n const { python: { linter = {} } = {} } = useAppSelector(getNotebookSettings);\n const { isEnabled: ruffEnabled = false, config: ruffConfig } = linter;\n useEffect(\n function setRuffSettings() {\n MonacoProviders.isRuffEnabled = ruffEnabled;\n MonacoProviders.setRuffSettings(ruffConfig); // Also inits Ruff if needed\n },\n [ruffEnabled, ruffConfig]\n );\n}\n\nexport default useConfigureRuff;\n"],"mappings":"AAAA,SAASA,SAAS,QAAQ,OAAO;AACjC,SAASC,eAAe,QAAQ,oBAAoB;AACpD,SAASC,cAAc,QAAQ,sBAAsB;AACrD,SAASC,mBAAmB,QAAQ,kBAAkB;;AAEtD;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,gBAAgBA,CAAA,EAAS;EACvC,IAAM;IAAEC,MAAM,EAAE;MAAEC,MAAM,GAAG,CAAC;IAAE,CAAC,GAAG,CAAC;EAAE,CAAC,GAAGJ,cAAc,CAACC,mBAAmB,CAAC;EAC5E,IAAM;IAAEI,SAAS,EAAEC,WAAW,GAAG,KAAK;IAAEC,MAAM,EAAEC;EAAW,CAAC,GAAGJ,MAAM;EACrEN,SAAS,CACP,SAASW,eAAeA,CAAA,EAAG;IACzBV,eAAe,CAACW,aAAa,GAAGJ,WAAW;IAC3CP,eAAe,CAACU,eAAe,CAACD,UAAU,CAAC,CAAC,CAAC;EAC/C,CAAC,EACD,CAACF,WAAW,EAAEE,UAAU,CAC1B,CAAC;AACH;AAEA,eAAeN,gBAAgB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@deephaven/dashboard-core-plugins",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.98.0",
|
|
4
4
|
"description": "Deephaven Dashboard Core Plugins",
|
|
5
5
|
"author": "Deephaven Data Labs LLC",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -22,26 +22,26 @@
|
|
|
22
22
|
"build:sass": "sass --embed-sources --load-path=../../node_modules ./src:./dist"
|
|
23
23
|
},
|
|
24
24
|
"dependencies": {
|
|
25
|
-
"@deephaven/chart": "^0.
|
|
26
|
-
"@deephaven/components": "^0.
|
|
27
|
-
"@deephaven/console": "^0.
|
|
28
|
-
"@deephaven/dashboard": "^0.
|
|
29
|
-
"@deephaven/file-explorer": "^0.
|
|
30
|
-
"@deephaven/filters": "^0.
|
|
31
|
-
"@deephaven/golden-layout": "^0.
|
|
32
|
-
"@deephaven/grid": "^0.
|
|
33
|
-
"@deephaven/icons": "^0.
|
|
34
|
-
"@deephaven/iris-grid": "^0.
|
|
35
|
-
"@deephaven/jsapi-bootstrap": "^0.
|
|
36
|
-
"@deephaven/jsapi-components": "^0.
|
|
25
|
+
"@deephaven/chart": "^0.98.0",
|
|
26
|
+
"@deephaven/components": "^0.98.0",
|
|
27
|
+
"@deephaven/console": "^0.98.0",
|
|
28
|
+
"@deephaven/dashboard": "^0.98.0",
|
|
29
|
+
"@deephaven/file-explorer": "^0.98.0",
|
|
30
|
+
"@deephaven/filters": "^0.98.0",
|
|
31
|
+
"@deephaven/golden-layout": "^0.98.0",
|
|
32
|
+
"@deephaven/grid": "^0.98.0",
|
|
33
|
+
"@deephaven/icons": "^0.98.0",
|
|
34
|
+
"@deephaven/iris-grid": "^0.98.0",
|
|
35
|
+
"@deephaven/jsapi-bootstrap": "^0.98.0",
|
|
36
|
+
"@deephaven/jsapi-components": "^0.98.0",
|
|
37
37
|
"@deephaven/jsapi-types": "^1.0.0-dev0.34.0",
|
|
38
|
-
"@deephaven/jsapi-utils": "^0.
|
|
39
|
-
"@deephaven/log": "^0.
|
|
40
|
-
"@deephaven/plugin": "^0.
|
|
41
|
-
"@deephaven/react-hooks": "^0.
|
|
42
|
-
"@deephaven/redux": "^0.
|
|
43
|
-
"@deephaven/storage": "^0.
|
|
44
|
-
"@deephaven/utils": "^0.
|
|
38
|
+
"@deephaven/jsapi-utils": "^0.98.0",
|
|
39
|
+
"@deephaven/log": "^0.98.0",
|
|
40
|
+
"@deephaven/plugin": "^0.98.0",
|
|
41
|
+
"@deephaven/react-hooks": "^0.98.0",
|
|
42
|
+
"@deephaven/redux": "^0.98.0",
|
|
43
|
+
"@deephaven/storage": "^0.98.0",
|
|
44
|
+
"@deephaven/utils": "^0.98.0",
|
|
45
45
|
"@fortawesome/react-fontawesome": "^0.2.0",
|
|
46
46
|
"classnames": "^2.3.1",
|
|
47
47
|
"fast-deep-equal": "^3.1.3",
|
|
@@ -65,9 +65,9 @@
|
|
|
65
65
|
"react-redux": "^7.2.4"
|
|
66
66
|
},
|
|
67
67
|
"devDependencies": {
|
|
68
|
-
"@deephaven/jsapi-shim": "^0.
|
|
69
|
-
"@deephaven/mocks": "^0.
|
|
70
|
-
"@deephaven/test-utils": "^0.
|
|
68
|
+
"@deephaven/jsapi-shim": "^0.98.0",
|
|
69
|
+
"@deephaven/mocks": "^0.98.0",
|
|
70
|
+
"@deephaven/test-utils": "^0.98.0"
|
|
71
71
|
},
|
|
72
72
|
"files": [
|
|
73
73
|
"dist",
|
|
@@ -79,5 +79,5 @@
|
|
|
79
79
|
"publishConfig": {
|
|
80
80
|
"access": "public"
|
|
81
81
|
},
|
|
82
|
-
"gitHead": "
|
|
82
|
+
"gitHead": "414e652776357a25f002042e6223cdf716172422"
|
|
83
83
|
}
|