@deephaven/dashboard-core-plugins 0.32.1-demo.2 → 0.32.1-table-plugins.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. package/dist/ConsolePlugin.d.ts +0 -1
  2. package/dist/ConsolePlugin.d.ts.map +1 -1
  3. package/dist/ConsolePlugin.js +1 -1
  4. package/dist/ConsolePlugin.js.map +1 -1
  5. package/dist/GridPlugin.d.ts +3 -4
  6. package/dist/GridPlugin.d.ts.map +1 -1
  7. package/dist/GridPlugin.js +1 -1
  8. package/dist/GridPlugin.js.map +1 -1
  9. package/dist/linker/Linker.d.ts +2 -2
  10. package/dist/linker/Linker.d.ts.map +1 -1
  11. package/dist/linker/Linker.js +2 -1
  12. package/dist/linker/Linker.js.map +1 -1
  13. package/dist/linker/LinkerUtils.d.ts.map +1 -1
  14. package/dist/linker/LinkerUtils.js.map +1 -1
  15. package/dist/panels/ChartPanel.d.ts +2 -3
  16. package/dist/panels/ChartPanel.d.ts.map +1 -1
  17. package/dist/panels/ChartPanel.js +3 -4
  18. package/dist/panels/ChartPanel.js.map +1 -1
  19. package/dist/panels/ChartPanelUtils.d.ts +3 -0
  20. package/dist/panels/ChartPanelUtils.d.ts.map +1 -0
  21. package/dist/panels/ChartPanelUtils.js +5 -0
  22. package/dist/panels/ChartPanelUtils.js.map +1 -0
  23. package/dist/panels/CommandHistoryPanel.d.ts +2 -2
  24. package/dist/panels/CommandHistoryPanel.d.ts.map +1 -1
  25. package/dist/panels/CommandHistoryPanel.js +2 -1
  26. package/dist/panels/CommandHistoryPanel.js.map +1 -1
  27. package/dist/panels/ConsolePanel.d.ts +2 -2
  28. package/dist/panels/ConsolePanel.d.ts.map +1 -1
  29. package/dist/panels/ConsolePanel.js +2 -1
  30. package/dist/panels/ConsolePanel.js.map +1 -1
  31. package/dist/panels/DropdownFilterPanel.d.ts +2 -2
  32. package/dist/panels/DropdownFilterPanel.d.ts.map +1 -1
  33. package/dist/panels/DropdownFilterPanel.js +2 -1
  34. package/dist/panels/DropdownFilterPanel.js.map +1 -1
  35. package/dist/panels/FileExplorerPanel.d.ts +2 -2
  36. package/dist/panels/FileExplorerPanel.d.ts.map +1 -1
  37. package/dist/panels/FileExplorerPanel.js +2 -1
  38. package/dist/panels/FileExplorerPanel.js.map +1 -1
  39. package/dist/panels/FilterSetManagerPanel.d.ts +2 -2
  40. package/dist/panels/FilterSetManagerPanel.d.ts.map +1 -1
  41. package/dist/panels/FilterSetManagerPanel.js +2 -1
  42. package/dist/panels/FilterSetManagerPanel.js.map +1 -1
  43. package/dist/panels/InputFilterPanel.d.ts +2 -2
  44. package/dist/panels/InputFilterPanel.d.ts.map +1 -1
  45. package/dist/panels/InputFilterPanel.js +2 -1
  46. package/dist/panels/InputFilterPanel.js.map +1 -1
  47. package/dist/panels/IrisGridPanel.d.ts +64 -19
  48. package/dist/panels/IrisGridPanel.d.ts.map +1 -1
  49. package/dist/panels/IrisGridPanel.js +6 -5
  50. package/dist/panels/IrisGridPanel.js.map +1 -1
  51. package/dist/panels/LogPanel.d.ts +2 -2
  52. package/dist/panels/LogPanel.d.ts.map +1 -1
  53. package/dist/panels/LogPanel.js +2 -1
  54. package/dist/panels/LogPanel.js.map +1 -1
  55. package/dist/panels/MarkdownPanel.d.ts +2 -2
  56. package/dist/panels/MarkdownPanel.d.ts.map +1 -1
  57. package/dist/panels/MarkdownPanel.js +2 -1
  58. package/dist/panels/MarkdownPanel.js.map +1 -1
  59. package/dist/panels/NotebookPanel.d.ts +2 -4
  60. package/dist/panels/NotebookPanel.d.ts.map +1 -1
  61. package/dist/panels/NotebookPanel.js +3 -3
  62. package/dist/panels/NotebookPanel.js.map +1 -1
  63. package/dist/panels/index.d.ts +1 -0
  64. package/dist/panels/index.d.ts.map +1 -1
  65. package/dist/panels/index.js +1 -0
  66. package/dist/panels/index.js.map +1 -1
  67. package/package.json +22 -21
@@ -4,7 +4,6 @@ export type ConsolePluginProps = DashboardPluginComponentProps & {
4
4
  hydrateConsole?: PanelHydrateFunction;
5
5
  notebooksUrl: string;
6
6
  };
7
- export declare function assertIsConsolePluginProps(props: Partial<ConsolePluginProps>): asserts props is ConsolePluginProps;
8
7
  export interface FileMetadata {
9
8
  id: string | null;
10
9
  itemName: string;
@@ -1 +1 @@
1
- {"version":3,"file":"ConsolePlugin.d.ts","sourceRoot":"","sources":["../src/ConsolePlugin.tsx"],"names":[],"mappings":";AACA,OAAO,EAGL,6BAA6B,EAI7B,oBAAoB,EAGrB,MAAM,sBAAsB,CAAC;AA8B9B,MAAM,MAAM,kBAAkB,GAAG,6BAA6B,GAAG;IAC/D,cAAc,CAAC,EAAE,oBAAoB,CAAC;IACtC,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,OAAO,CAAC,kBAAkB,CAAC,GACjC,OAAO,CAAC,KAAK,IAAI,kBAAkB,CAErC;AAED,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,CAwgBpB;AAED,eAAe,aAAa,CAAC"}
1
+ {"version":3,"file":"ConsolePlugin.d.ts","sourceRoot":"","sources":["../src/ConsolePlugin.tsx"],"names":[],"mappings":";AACA,OAAO,EAGL,6BAA6B,EAI7B,oBAAoB,EAGrB,MAAM,sBAAsB,CAAC;AA8B9B,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,CAwgBpB;AAED,eAAe,aAAa,CAAC"}
@@ -16,7 +16,7 @@ var log = Log.module('ConsolePlugin');
16
16
  function isNotebookPanel(panel) {
17
17
  return panel.notebook !== undefined;
18
18
  }
19
- export function assertIsConsolePluginProps(props) {
19
+ function assertIsConsolePluginProps(props) {
20
20
  assertIsDashboardPluginProps(props);
21
21
  }
22
22
  export function ConsolePlugin(props) {
@@ -1 +1 @@
1
- {"version":3,"file":"ConsolePlugin.js","names":["assertIsDashboardPluginProps","DashboardUtils","LayoutUtils","useListener","FileUtils","Log","useCallback","useEffect","useRef","useState","useDispatch","shortid","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","dispatch","getConsolePanel","getLastUsedPanelOfType","addOpenFileMapEntry","key","value","map","set","deleteOpenFileMapEntry","delete","addPreviewFileMapEntry","deletePreviewFileMapEntry","handleSendCommand","command","focus","execute","trimmedCommand","trim","info","consolePanel","WrappedComponent","error","debug","addCommand","handleSettingsChanged","consoleSettings","getNotebookFileName","language","extension","title","current","getPanelIdForFileMetadata","fileMetadata","createIfNecessary","fileId","has","get","generate","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","settings","session","sessionLanguage","panelState","type","component","COMPONENT","isFocusOnShow","localDashboardId","metadata","createNotebook","stack","getStackForComponentTypes","config","openComponentInStack","selectNotebook","shouldFocus","isFileOpen","isFileOpenAsPreview","previewTabId","Array","from","values","getStackForConfig","sendToNotebook","notebookPanel","append","hydrateNotebook","panelProps","panelDashboardId","hydrate","registerComponentsAndReturnCleanup","cleanups","forEach","cleanup","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 { ScriptEditor } from '@deephaven/console';\nimport {\n assertIsDashboardPluginProps,\n DashboardPanelProps,\n DashboardPluginComponentProps,\n DashboardUtils,\n LayoutUtils,\n PanelComponent,\n PanelHydrateFunction,\n PanelProps,\n useListener,\n} from '@deephaven/dashboard';\nimport { FileUtils } from '@deephaven/file-explorer';\nimport { CloseOptions } from '@deephaven/golden-layout';\nimport Log from '@deephaven/log';\nimport { useCallback, useEffect, useRef, useState } from 'react';\nimport { useDispatch } from 'react-redux';\nimport shortid from 'shortid';\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\nexport function 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 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 shortid.generate();\n }\n return null;\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 // Note: unregister event is triggered AFTER new register when switching from preview to edit mode\n // due to the LayoutUtils implementation (new tab added before deleting the old one)\n // This doesn't cause any issues because previews and editable files are stored in different maps,\n // but this situation could be completely avoided by sending an event to the tab\n // to make it switch from preview to edit mode without re-mounting and re-registering\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 // If the file is already open, just show and focus it if necessary\n if (isFileOpen) {\n showFilePanel(fileMetadata);\n if (shouldFocus) {\n const panelId = getPanelIdForFileMetadata(fileMetadata);\n focusPanelById(panelId);\n }\n return;\n }\n\n // If the file is already open as a preview and we're not focusing it, just show it\n // If we're focusing it, that means we need to replace the panel anyway with a non-preview panel, so just fall into the logic below\n if (isFileOpenAsPreview && !shouldFocus) {\n showFilePanel(fileMetadata);\n return;\n }\n\n const [previewTabId] = Array.from(previewFileMap.values());\n let panelId = null;\n let stack = null;\n if (previewTabId != null) {\n panelId = previewTabId;\n stack = LayoutUtils.getStackForConfig(layout.root, {\n component: NotebookPanel.COMPONENT,\n id: panelId,\n });\n }\n if (stack == null) {\n panelId = getPanelIdForFileMetadata(fileMetadata);\n 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: !shouldFocus,\n });\n LayoutUtils.openComponentInStack(stack, config);\n if (shouldFocus) {\n // Focus the tab we just opened 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 ]\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 (panelProps: PanelProps, panelDashboardId: string): DashboardPanelProps =>\n DashboardUtils.hydrate(\n {\n ...panelProps,\n notebooksUrl,\n },\n panelDashboardId\n ),\n [notebooksUrl]\n );\n\n useEffect(\n function registerComponentsAndReturnCleanup() {\n const cleanups = [\n registerComponent(ConsolePanel.COMPONENT, ConsolePanel, hydrateConsole),\n registerComponent(CommandHistoryPanel.COMPONENT, CommandHistoryPanel),\n registerComponent(FileExplorerPanel.COMPONENT, FileExplorerPanel),\n registerComponent(LogPanel.COMPONENT, LogPanel),\n registerComponent(\n NotebookPanel.COMPONENT,\n NotebookPanel,\n hydrateNotebook\n ),\n ];\n\n return () => {\n cleanups.forEach(cleanup => cleanup());\n };\n },\n [registerComponent, hydrateConsole, hydrateNotebook]\n );\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","FileUtils","Log","useCallback","useEffect","useRef","useState","useDispatch","shortid","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","dispatch","getConsolePanel","getLastUsedPanelOfType","addOpenFileMapEntry","key","value","map","set","deleteOpenFileMapEntry","delete","addPreviewFileMapEntry","deletePreviewFileMapEntry","handleSendCommand","command","focus","execute","trimmedCommand","trim","info","consolePanel","WrappedComponent","error","debug","addCommand","handleSettingsChanged","consoleSettings","getNotebookFileName","language","extension","title","current","getPanelIdForFileMetadata","fileMetadata","createIfNecessary","fileId","has","get","generate","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","settings","session","sessionLanguage","panelState","type","component","COMPONENT","isFocusOnShow","localDashboardId","metadata","createNotebook","stack","getStackForComponentTypes","config","openComponentInStack","selectNotebook","shouldFocus","isFileOpen","isFileOpenAsPreview","previewTabId","Array","from","values","getStackForConfig","sendToNotebook","notebookPanel","append","hydrateNotebook","panelProps","panelDashboardId","hydrate","registerComponentsAndReturnCleanup","cleanups","forEach","cleanup","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 { ScriptEditor } from '@deephaven/console';\nimport {\n assertIsDashboardPluginProps,\n DashboardPanelProps,\n DashboardPluginComponentProps,\n DashboardUtils,\n LayoutUtils,\n PanelComponent,\n PanelHydrateFunction,\n PanelProps,\n useListener,\n} from '@deephaven/dashboard';\nimport { FileUtils } from '@deephaven/file-explorer';\nimport { CloseOptions } from '@deephaven/golden-layout';\nimport Log from '@deephaven/log';\nimport { useCallback, useEffect, useRef, useState } from 'react';\nimport { useDispatch } from 'react-redux';\nimport shortid from 'shortid';\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 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 shortid.generate();\n }\n return null;\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 // Note: unregister event is triggered AFTER new register when switching from preview to edit mode\n // due to the LayoutUtils implementation (new tab added before deleting the old one)\n // This doesn't cause any issues because previews and editable files are stored in different maps,\n // but this situation could be completely avoided by sending an event to the tab\n // to make it switch from preview to edit mode without re-mounting and re-registering\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 // If the file is already open, just show and focus it if necessary\n if (isFileOpen) {\n showFilePanel(fileMetadata);\n if (shouldFocus) {\n const panelId = getPanelIdForFileMetadata(fileMetadata);\n focusPanelById(panelId);\n }\n return;\n }\n\n // If the file is already open as a preview and we're not focusing it, just show it\n // If we're focusing it, that means we need to replace the panel anyway with a non-preview panel, so just fall into the logic below\n if (isFileOpenAsPreview && !shouldFocus) {\n showFilePanel(fileMetadata);\n return;\n }\n\n const [previewTabId] = Array.from(previewFileMap.values());\n let panelId = null;\n let stack = null;\n if (previewTabId != null) {\n panelId = previewTabId;\n stack = LayoutUtils.getStackForConfig(layout.root, {\n component: NotebookPanel.COMPONENT,\n id: panelId,\n });\n }\n if (stack == null) {\n panelId = getPanelIdForFileMetadata(fileMetadata);\n 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: !shouldFocus,\n });\n LayoutUtils.openComponentInStack(stack, config);\n if (shouldFocus) {\n // Focus the tab we just opened 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 ]\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 (panelProps: PanelProps, panelDashboardId: string): DashboardPanelProps =>\n DashboardUtils.hydrate(\n {\n ...panelProps,\n notebooksUrl,\n },\n panelDashboardId\n ),\n [notebooksUrl]\n );\n\n useEffect(\n function registerComponentsAndReturnCleanup() {\n const cleanups = [\n registerComponent(ConsolePanel.COMPONENT, ConsolePanel, hydrateConsole),\n registerComponent(CommandHistoryPanel.COMPONENT, CommandHistoryPanel),\n registerComponent(FileExplorerPanel.COMPONENT, FileExplorerPanel),\n registerComponent(LogPanel.COMPONENT, LogPanel),\n registerComponent(\n NotebookPanel.COMPONENT,\n NotebookPanel,\n hydrateNotebook\n ),\n ];\n\n return () => {\n cleanups.forEach(cleanup => cleanup());\n };\n },\n [registerComponent, hydrateConsole, hydrateNotebook]\n );\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,11 +1,10 @@
1
- import React from 'react';
1
+ /// <reference types="react" />
2
2
  import { DashboardPluginComponentProps, PanelHydrateFunction } from '@deephaven/dashboard';
3
3
  import { IrisGridThemeType } from '@deephaven/iris-grid';
4
- import { IrisGridPanelProps } from './panels';
5
- export declare const SUPPORTED_TYPES: string[];
4
+ import { IrisGridPanelProps, TablePlugin } from './panels';
6
5
  export type GridPluginProps = Partial<DashboardPluginComponentProps> & {
7
6
  getDownloadWorker?: () => Promise<ServiceWorker>;
8
- loadPlugin?: (name: string) => ReturnType<typeof React.forwardRef>;
7
+ loadPlugin?: (name: string) => TablePlugin;
9
8
  hydrate: PanelHydrateFunction<IrisGridPanelProps>;
10
9
  theme?: Partial<IrisGridThemeType>;
11
10
  };
@@ -1 +1 @@
1
- {"version":3,"file":"GridPlugin.d.ts","sourceRoot":"","sources":["../src/GridPlugin.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4C,MAAM,OAAO,CAAC;AACjE,OAAO,EAEL,6BAA6B,EAG7B,oBAAoB,EAErB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAwB,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAG/E,OAAO,EAAiB,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAE7D,eAAO,MAAM,eAAe,EAAE,MAAM,EAInC,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,OAAO,CAAC,6BAA6B,CAAC,GAAG;IACrE,iBAAiB,CAAC,EAAE,MAAM,OAAO,CAAC,aAAa,CAAC,CAAC;IACjD,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,UAAU,CAAC,OAAO,KAAK,CAAC,UAAU,CAAC,CAAC;IACnE,OAAO,EAAE,oBAAoB,CAAC,kBAAkB,CAAC,CAAC;IAClD,KAAK,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;CACpC,CAAC;AAEF,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,GAAG,GAAG,CAAC,OAAO,GAAG,IAAI,CAwErE;AAED,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"GridPlugin.d.ts","sourceRoot":"","sources":["../src/GridPlugin.tsx"],"names":[],"mappings":";AACA,OAAO,EAEL,6BAA6B,EAG7B,oBAAoB,EAErB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAwB,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAG/E,OAAO,EAAiB,kBAAkB,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAQ1E,MAAM,MAAM,eAAe,GAAG,OAAO,CAAC,6BAA6B,CAAC,GAAG;IACrE,iBAAiB,CAAC,EAAE,MAAM,OAAO,CAAC,aAAa,CAAC,CAAC;IACjD,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,WAAW,CAAC;IAC3C,OAAO,EAAE,oBAAoB,CAAC,kBAAkB,CAAC,CAAC;IAClD,KAAK,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;CACpC,CAAC;AAEF,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,GAAG,GAAG,CAAC,OAAO,GAAG,IAAI,CAwErE;AAED,eAAe,UAAU,CAAC"}
@@ -3,7 +3,7 @@ import { assertIsDashboardPluginProps, LayoutUtils, PanelEvent, useListener } fr
3
3
  import { IrisGridModelFactory } from '@deephaven/iris-grid';
4
4
  import shortid from 'shortid';
5
5
  import { IrisGridPanel } from "./panels/index.js";
6
- export var SUPPORTED_TYPES = [dh.VariableType.TABLE, dh.VariableType.TREETABLE, dh.VariableType.HIERARCHICALTABLE];
6
+ var SUPPORTED_TYPES = [dh.VariableType.TABLE, dh.VariableType.TREETABLE, dh.VariableType.HIERARCHICALTABLE];
7
7
  export function GridPlugin(props) {
8
8
  assertIsDashboardPluginProps(props);
9
9
  var {
@@ -1 +1 @@
1
- {"version":3,"file":"GridPlugin.js","names":["useCallback","useEffect","assertIsDashboardPluginProps","LayoutUtils","PanelEvent","useListener","IrisGridModelFactory","shortid","IrisGridPanel","SUPPORTED_TYPES","dh","VariableType","TABLE","TREETABLE","HIERARCHICALTABLE","GridPlugin","props","getDownloadWorker","loadPlugin","id","layout","registerComponent","hydrate","theme","handlePanelOpen","dragEvent","fetch","panelId","generate","widget","name","type","includes","metadata","table","makeModel","then","config","component","COMPONENT","localDashboardId","title","root","openComponent","registerComponentsAndReturnCleanup","cleanups","forEach","cleanup","eventHub","OPEN"],"sources":["../src/GridPlugin.tsx"],"sourcesContent":["import React, { DragEvent, useCallback, useEffect } from 'react';\nimport {\n assertIsDashboardPluginProps,\n DashboardPluginComponentProps,\n LayoutUtils,\n PanelEvent,\n PanelHydrateFunction,\n useListener,\n} from '@deephaven/dashboard';\nimport { IrisGridModelFactory, IrisGridThemeType } from '@deephaven/iris-grid';\nimport { Table, VariableDefinition } from '@deephaven/jsapi-shim';\nimport shortid from 'shortid';\nimport { IrisGridPanel, IrisGridPanelProps } from './panels';\n\nexport const SUPPORTED_TYPES: string[] = [\n dh.VariableType.TABLE,\n dh.VariableType.TREETABLE,\n dh.VariableType.HIERARCHICALTABLE,\n];\n\nexport type GridPluginProps = Partial<DashboardPluginComponentProps> & {\n getDownloadWorker?: () => Promise<ServiceWorker>;\n loadPlugin?: (name: string) => ReturnType<typeof React.forwardRef>;\n hydrate: PanelHydrateFunction<IrisGridPanelProps>;\n theme?: Partial<IrisGridThemeType>;\n};\n\nexport function GridPlugin(props: GridPluginProps): JSX.Element | null {\n assertIsDashboardPluginProps(props);\n const {\n getDownloadWorker,\n loadPlugin,\n id,\n layout,\n registerComponent,\n hydrate,\n theme,\n } = props;\n const handlePanelOpen = useCallback(\n ({\n dragEvent,\n fetch,\n panelId = shortid.generate(),\n widget,\n }: {\n dragEvent?: DragEvent;\n fetch: () => Promise<Table>;\n panelId?: string;\n widget: VariableDefinition;\n }) => {\n const { name, type } = widget;\n if (!SUPPORTED_TYPES.includes(type)) {\n return;\n }\n\n const metadata = { name, table: name, type: widget.type };\n const makeModel = () =>\n fetch().then((table: Table) => IrisGridModelFactory.makeModel(table));\n const config = {\n type: 'react-component' as const,\n component: IrisGridPanel.COMPONENT,\n props: {\n getDownloadWorker,\n loadPlugin,\n localDashboardId: id,\n id: panelId,\n metadata,\n makeModel,\n theme,\n },\n title: name,\n id: panelId,\n };\n\n const { root } = layout;\n LayoutUtils.openComponent({ root, config, dragEvent });\n },\n [getDownloadWorker, id, layout, loadPlugin, theme]\n );\n\n useEffect(\n function registerComponentsAndReturnCleanup() {\n const cleanups = [\n registerComponent(\n IrisGridPanel.COMPONENT,\n IrisGridPanel,\n hydrate as PanelHydrateFunction\n ),\n ];\n return () => {\n cleanups.forEach(cleanup => cleanup());\n };\n },\n [hydrate, registerComponent]\n );\n\n useListener(layout.eventHub, PanelEvent.OPEN, handlePanelOpen);\n\n return null;\n}\n\nexport default GridPlugin;\n"],"mappings":"AAAA,SAA2BA,WAAW,EAAEC,SAAS,QAAQ,OAAO;AAChE,SACEC,4BAA4B,EAE5BC,WAAW,EACXC,UAAU,EAEVC,WAAW,QACN,sBAAsB;AAC7B,SAASC,oBAAoB,QAA2B,sBAAsB;AAE9E,OAAOC,OAAO,MAAM,SAAS;AAAC,SACrBC,aAAa;AAEtB,OAAO,IAAMC,eAAyB,GAAG,CACvCC,EAAE,CAACC,YAAY,CAACC,KAAK,EACrBF,EAAE,CAACC,YAAY,CAACE,SAAS,EACzBH,EAAE,CAACC,YAAY,CAACG,iBAAiB,CAClC;AASD,OAAO,SAASC,UAAU,CAACC,KAAsB,EAAsB;EACrEd,4BAA4B,CAACc,KAAK,CAAC;EACnC,IAAM;IACJC,iBAAiB;IACjBC,UAAU;IACVC,EAAE;IACFC,MAAM;IACNC,iBAAiB;IACjBC,OAAO;IACPC;EACF,CAAC,GAAGP,KAAK;EACT,IAAMQ,eAAe,GAAGxB,WAAW,CACjC,QAUM;IAAA,IAVL;MACCyB,SAAS;MACTC,KAAK;MACLC,OAAO,GAAGpB,OAAO,CAACqB,QAAQ,EAAE;MAC5BC;IAMF,CAAC;IACC,IAAM;MAAEC,IAAI;MAAEC;IAAK,CAAC,GAAGF,MAAM;IAC7B,IAAI,CAACpB,eAAe,CAACuB,QAAQ,CAACD,IAAI,CAAC,EAAE;MACnC;IACF;IAEA,IAAME,QAAQ,GAAG;MAAEH,IAAI;MAAEI,KAAK,EAAEJ,IAAI;MAAEC,IAAI,EAAEF,MAAM,CAACE;IAAK,CAAC;IACzD,IAAMI,SAAS,GAAG,MAChBT,KAAK,EAAE,CAACU,IAAI,CAAEF,KAAY,IAAK5B,oBAAoB,CAAC6B,SAAS,CAACD,KAAK,CAAC,CAAC;IACvE,IAAMG,MAAM,GAAG;MACbN,IAAI,EAAE,iBAA0B;MAChCO,SAAS,EAAE9B,aAAa,CAAC+B,SAAS;MAClCvB,KAAK,EAAE;QACLC,iBAAiB;QACjBC,UAAU;QACVsB,gBAAgB,EAAErB,EAAE;QACpBA,EAAE,EAAEQ,OAAO;QACXM,QAAQ;QACRE,SAAS;QACTZ;MACF,CAAC;MACDkB,KAAK,EAAEX,IAAI;MACXX,EAAE,EAAEQ;IACN,CAAC;IAED,IAAM;MAAEe;IAAK,CAAC,GAAGtB,MAAM;IACvBjB,WAAW,CAACwC,aAAa,CAAC;MAAED,IAAI;MAAEL,MAAM;MAAEZ;IAAU,CAAC,CAAC;EACxD,CAAC,EACD,CAACR,iBAAiB,EAAEE,EAAE,EAAEC,MAAM,EAAEF,UAAU,EAAEK,KAAK,CAAC,CACnD;EAEDtB,SAAS,CACP,SAAS2C,kCAAkC,GAAG;IAC5C,IAAMC,QAAQ,GAAG,CACfxB,iBAAiB,CACfb,aAAa,CAAC+B,SAAS,EACvB/B,aAAa,EACbc,OAAO,CACR,CACF;IACD,OAAO,MAAM;MACXuB,QAAQ,CAACC,OAAO,CAACC,OAAO,IAAIA,OAAO,EAAE,CAAC;IACxC,CAAC;EACH,CAAC,EACD,CAACzB,OAAO,EAAED,iBAAiB,CAAC,CAC7B;EAEDhB,WAAW,CAACe,MAAM,CAAC4B,QAAQ,EAAE5C,UAAU,CAAC6C,IAAI,EAAEzB,eAAe,CAAC;EAE9D,OAAO,IAAI;AACb;AAEA,eAAeT,UAAU"}
1
+ {"version":3,"file":"GridPlugin.js","names":["useCallback","useEffect","assertIsDashboardPluginProps","LayoutUtils","PanelEvent","useListener","IrisGridModelFactory","shortid","IrisGridPanel","SUPPORTED_TYPES","dh","VariableType","TABLE","TREETABLE","HIERARCHICALTABLE","GridPlugin","props","getDownloadWorker","loadPlugin","id","layout","registerComponent","hydrate","theme","handlePanelOpen","dragEvent","fetch","panelId","generate","widget","name","type","includes","metadata","table","makeModel","then","config","component","COMPONENT","localDashboardId","title","root","openComponent","registerComponentsAndReturnCleanup","cleanups","forEach","cleanup","eventHub","OPEN"],"sources":["../src/GridPlugin.tsx"],"sourcesContent":["import { DragEvent, useCallback, useEffect } from 'react';\nimport {\n assertIsDashboardPluginProps,\n DashboardPluginComponentProps,\n LayoutUtils,\n PanelEvent,\n PanelHydrateFunction,\n useListener,\n} from '@deephaven/dashboard';\nimport { IrisGridModelFactory, IrisGridThemeType } from '@deephaven/iris-grid';\nimport { Table, VariableDefinition } from '@deephaven/jsapi-shim';\nimport shortid from 'shortid';\nimport { IrisGridPanel, IrisGridPanelProps, TablePlugin } from './panels';\n\nconst SUPPORTED_TYPES: string[] = [\n dh.VariableType.TABLE,\n dh.VariableType.TREETABLE,\n dh.VariableType.HIERARCHICALTABLE,\n];\n\nexport type GridPluginProps = Partial<DashboardPluginComponentProps> & {\n getDownloadWorker?: () => Promise<ServiceWorker>;\n loadPlugin?: (name: string) => TablePlugin;\n hydrate: PanelHydrateFunction<IrisGridPanelProps>;\n theme?: Partial<IrisGridThemeType>;\n};\n\nexport function GridPlugin(props: GridPluginProps): JSX.Element | null {\n assertIsDashboardPluginProps(props);\n const {\n getDownloadWorker,\n loadPlugin,\n id,\n layout,\n registerComponent,\n hydrate,\n theme,\n } = props;\n const handlePanelOpen = useCallback(\n ({\n dragEvent,\n fetch,\n panelId = shortid.generate(),\n widget,\n }: {\n dragEvent?: DragEvent;\n fetch: () => Promise<Table>;\n panelId?: string;\n widget: VariableDefinition;\n }) => {\n const { name, type } = widget;\n if (!SUPPORTED_TYPES.includes(type)) {\n return;\n }\n\n const metadata = { name, table: name, type: widget.type };\n const makeModel = () =>\n fetch().then((table: Table) => IrisGridModelFactory.makeModel(table));\n const config = {\n type: 'react-component' as const,\n component: IrisGridPanel.COMPONENT,\n props: {\n getDownloadWorker,\n loadPlugin,\n localDashboardId: id,\n id: panelId,\n metadata,\n makeModel,\n theme,\n },\n title: name,\n id: panelId,\n };\n\n const { root } = layout;\n LayoutUtils.openComponent({ root, config, dragEvent });\n },\n [getDownloadWorker, id, layout, loadPlugin, theme]\n );\n\n useEffect(\n function registerComponentsAndReturnCleanup() {\n const cleanups = [\n registerComponent(\n IrisGridPanel.COMPONENT,\n IrisGridPanel,\n hydrate as PanelHydrateFunction\n ),\n ];\n return () => {\n cleanups.forEach(cleanup => cleanup());\n };\n },\n [hydrate, registerComponent]\n );\n\n useListener(layout.eventHub, PanelEvent.OPEN, handlePanelOpen);\n\n return null;\n}\n\nexport default GridPlugin;\n"],"mappings":"AAAA,SAAoBA,WAAW,EAAEC,SAAS,QAAQ,OAAO;AACzD,SACEC,4BAA4B,EAE5BC,WAAW,EACXC,UAAU,EAEVC,WAAW,QACN,sBAAsB;AAC7B,SAASC,oBAAoB,QAA2B,sBAAsB;AAE9E,OAAOC,OAAO,MAAM,SAAS;AAAC,SACrBC,aAAa;AAEtB,IAAMC,eAAyB,GAAG,CAChCC,EAAE,CAACC,YAAY,CAACC,KAAK,EACrBF,EAAE,CAACC,YAAY,CAACE,SAAS,EACzBH,EAAE,CAACC,YAAY,CAACG,iBAAiB,CAClC;AASD,OAAO,SAASC,UAAU,CAACC,KAAsB,EAAsB;EACrEd,4BAA4B,CAACc,KAAK,CAAC;EACnC,IAAM;IACJC,iBAAiB;IACjBC,UAAU;IACVC,EAAE;IACFC,MAAM;IACNC,iBAAiB;IACjBC,OAAO;IACPC;EACF,CAAC,GAAGP,KAAK;EACT,IAAMQ,eAAe,GAAGxB,WAAW,CACjC,QAUM;IAAA,IAVL;MACCyB,SAAS;MACTC,KAAK;MACLC,OAAO,GAAGpB,OAAO,CAACqB,QAAQ,EAAE;MAC5BC;IAMF,CAAC;IACC,IAAM;MAAEC,IAAI;MAAEC;IAAK,CAAC,GAAGF,MAAM;IAC7B,IAAI,CAACpB,eAAe,CAACuB,QAAQ,CAACD,IAAI,CAAC,EAAE;MACnC;IACF;IAEA,IAAME,QAAQ,GAAG;MAAEH,IAAI;MAAEI,KAAK,EAAEJ,IAAI;MAAEC,IAAI,EAAEF,MAAM,CAACE;IAAK,CAAC;IACzD,IAAMI,SAAS,GAAG,MAChBT,KAAK,EAAE,CAACU,IAAI,CAAEF,KAAY,IAAK5B,oBAAoB,CAAC6B,SAAS,CAACD,KAAK,CAAC,CAAC;IACvE,IAAMG,MAAM,GAAG;MACbN,IAAI,EAAE,iBAA0B;MAChCO,SAAS,EAAE9B,aAAa,CAAC+B,SAAS;MAClCvB,KAAK,EAAE;QACLC,iBAAiB;QACjBC,UAAU;QACVsB,gBAAgB,EAAErB,EAAE;QACpBA,EAAE,EAAEQ,OAAO;QACXM,QAAQ;QACRE,SAAS;QACTZ;MACF,CAAC;MACDkB,KAAK,EAAEX,IAAI;MACXX,EAAE,EAAEQ;IACN,CAAC;IAED,IAAM;MAAEe;IAAK,CAAC,GAAGtB,MAAM;IACvBjB,WAAW,CAACwC,aAAa,CAAC;MAAED,IAAI;MAAEL,MAAM;MAAEZ;IAAU,CAAC,CAAC;EACxD,CAAC,EACD,CAACR,iBAAiB,EAAEE,EAAE,EAAEC,MAAM,EAAEF,UAAU,EAAEK,KAAK,CAAC,CACnD;EAEDtB,SAAS,CACP,SAAS2C,kCAAkC,GAAG;IAC5C,IAAMC,QAAQ,GAAG,CACfxB,iBAAiB,CACfb,aAAa,CAAC+B,SAAS,EACvB/B,aAAa,EACbc,OAAO,CACR,CACF;IACD,OAAO,MAAM;MACXuB,QAAQ,CAACC,OAAO,CAACC,OAAO,IAAIA,OAAO,EAAE,CAAC;IACxC,CAAC;EACH,CAAC,EACD,CAACzB,OAAO,EAAED,iBAAiB,CAAC,CAC7B;EAEDhB,WAAW,CAACe,MAAM,CAAC4B,QAAQ,EAAE5C,UAAU,CAAC6C,IAAI,EAAEzB,eAAe,CAAC;EAE9D,OAAO,IAAI;AACb;AAEA,eAAeT,UAAU"}
@@ -87,7 +87,7 @@ export declare class Linker extends Component<LinkerProps, LinkerState> {
87
87
  isColumnSelectionValid(panel: PanelComponent, tableColumn?: LinkColumn): boolean;
88
88
  render(): JSX.Element | null;
89
89
  }
90
- declare const _default: import("react-redux").ConnectedComponent<typeof Linker, import("react-redux").Omit<React.ClassAttributes<Linker> & OwnProps & StateProps & {
90
+ declare const ConnectedLinker: import("react-redux").ConnectedComponent<typeof Linker, import("react-redux").Omit<React.ClassAttributes<Linker> & OwnProps & StateProps & {
91
91
  setActiveTool: import("@deephaven/redux").PayloadActionCreator<string>;
92
92
  setDashboardLinks: (id: string, links: Link[]) => unknown;
93
93
  addDashboardLinks: (id: string, newLinks: Link[]) => unknown;
@@ -95,5 +95,5 @@ declare const _default: import("react-redux").ConnectedComponent<typeof Linker,
95
95
  setDashboardIsolatedLinkerPanelId: (id: string, isolatedLinkerPanelId: string | string[] | undefined) => unknown;
96
96
  setDashboardColumnSelectionValidator: (id: string, columnSelectionValidator: import("./ColumnSelectionValidator").ColumnSelectionValidator | undefined) => unknown;
97
97
  }, "links" | "activeTool" | "setActiveTool" | "setDashboardIsolatedLinkerPanelId" | "timeZone" | "isolatedLinkerPanelId" | "setDashboardLinks" | "addDashboardLinks" | "deleteDashboardLinks" | "setDashboardColumnSelectionValidator"> & OwnProps>;
98
- export default _default;
98
+ export default ConnectedLinker;
99
99
  //# sourceMappingURL=Linker.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Linker.d.ts","sourceRoot":"","sources":["../../src/linker/Linker.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Linker.d.ts","sourceRoot":"","sources":["../../src/linker/Linker.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACpD,OAAO,EAAW,cAAc,EAAE,MAAM,aAAa,CAAC;AAKtD,OAAO,EAEL,cAAc,EAEd,YAAY,EACb,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,YAAY,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAGL,UAAU,EAEX,MAAM,wBAAwB,CAAC;AAqBhC,OAAoB,EAElB,IAAI,EACJ,UAAU,EACV,aAAa,EACb,QAAQ,EAET,MAAM,eAAe,CAAC;AAIvB,UAAU,UAAU;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,QAAQ;IAChB,MAAM,EAAE,YAAY,CAAC;IACrB,YAAY,EAAE,YAAY,CAAC;IAC3B,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAYD,QAAA,MAAM,SAAS;;;;;;;YAOb,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,QAAQ,GAChC,UAAU,GACV,cAAc,CAAC,OAAO,SAAS,CAAC,CAAC;AAEnC,MAAM,MAAM,WAAW,GAAG;IACxB,cAAc,CAAC,EAAE,IAAI,CAAC;IACtB,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACzB,eAAe,EAAE,OAAO,CAAC;CAC1B,CAAC;AAEF,qBAAa,MAAO,SAAQ,SAAS,CAAC,WAAW,EAAE,WAAW,CAAC;gBACjD,KAAK,EAAE,WAAW;IA8B9B,iBAAiB,IAAI,IAAI;IAMzB,kBAAkB,CAAC,SAAS,EAAE,WAAW,GAAG,IAAI;IAchD,iBAAiB,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,GAAG,IAAI;IAItD,oBAAoB,IAAI,IAAI;IAK5B,cAAc,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI;IAoB1C,aAAa,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI;IAoBzC,KAAK,IAAI,IAAI;IAOb,YAAY,IAAI,IAAI;IASpB,UAAU,IAAI,IAAI;IAKlB,uBAAuB,CAAC,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI;IAIxE,wBAAwB,CAAC,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI;IAiCzE,oBAAoB,CAAC,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,IAAI;IAoBxE,sBAAsB,CAAC,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI;IAQvE;;;;;;OAMG;IACH,cAAc,CACZ,KAAK,EAAE,cAAc,EACrB,MAAM,EAAE,UAAU,EAClB,gBAAgB,UAAQ,EACxB,6BAA6B,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GAChD,IAAI;IA4FP,uBAAuB,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAmBzC;;;;OAIG;IACH,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,GAAG,IAAI;IAalE,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI;IAK7B,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,QAAQ,UAAQ,GAAG,IAAI;IAelD,qBAAqB,IAAI,IAAI;IAe7B,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAUvC,kBAAkB,CAAC,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,UAAU,GAAG,IAAI;IAwDpE,iBAAiB,CAAC,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAc3E,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAY9C,kBAAkB,IAAI,IAAI;IAI1B,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAOxC,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAIxC,kBAAkB,CAAC,QAAQ,EAAE,IAAI,EAAE,GAAG,IAAI;IAK1C,wBAAwB,IAAI,IAAI;IAIhC,iBAAiB,IAAI,IAAI;IAIzB,YAAY,IAAI,IAAI;IAMpB;;;OAGG;IACH,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAW5C,cAAc,UAEH,IAAI,EAAE,kBACG,IAAI,GAAG,SAAS,qBACb,MAAM,GAAG,SAAS,YAmBvC;IAEF,cAAc,IAAI,OAAO;IAKzB,yBAAyB,IAAI,IAAI;IAmBjC,wBAAwB,CACtB,cAAc,EAAE,IAAI,EACpB,IAAI,GAAE,QAAoB,GACzB,IAAI;IASP,sBAAsB,CACpB,KAAK,EAAE,cAAc,EACrB,WAAW,CAAC,EAAE,UAAU,GACvB,OAAO;IAiDV,MAAM,IAAI,GAAG,CAAC,OAAO,GAAG,IAAI;CAwC7B;AAED,QAAA,MAAM,eAAe;;;;;;;mPAAoB,CAAC;AAE1C,eAAe,eAAe,CAAC"}
@@ -701,5 +701,6 @@ export class Linker extends Component {
701
701
  })) : null;
702
702
  }
703
703
  }
704
- export default connector(Linker);
704
+ var ConnectedLinker = connector(Linker);
705
+ export default ConnectedLinker;
705
706
  //# sourceMappingURL=Linker.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Linker.js","names":["React","Component","connect","shortid","memoize","CSSTransition","ThemeExport","LayoutUtils","PanelEvent","DateTimeColumnFormatter","DateUtils","TableUtils","Log","Type","FilterType","getActiveTool","getTimeZone","setActiveTool","setActiveToolAction","getIsolatedLinkerPanelIdForDashboard","getLinksForDashboard","setDashboardLinks","setDashboardLinksAction","addDashboardLinks","addDashboardLinksAction","deleteDashboardLinks","deleteDashboardLinksAction","setDashboardIsolatedLinkerPanelId","setDashboardIsolatedLinkerPanelIdAction","setDashboardColumnSelectionValidator","setDashboardColumnSelectionValidatorAction","ToolType","ChartEvent","IrisGridEvent","InputFilterEvent","LinkerOverlayContent","LinkerUtils","isLinkablePanel","isLinkableColumn","log","module","mapState","state","ownProps","activeTool","isolatedLinkerPanelId","localDashboardId","links","timeZone","connector","Linker","constructor","props","linkInProgress","isolateForPanelId","combinedLinks","start","push","undefined","filter","link","panelId","end","handleCancel","bind","handleDone","handlePanelCloned","handleFilterColumnSelect","handleColumnsChanged","handlePanelClosed","handleLayoutStateChanged","handleAllLinksDeleted","handleLinkDeleted","handleLinksUpdated","handleChartColumnSelect","handleGridColumnSelect","handleUpdateValues","handleStateChange","handleExited","handleLinkSelected","handlePanelDragging","handlePanelDropped","isColumnSelectionValid","selectedIds","Set","isDraggingPanel","componentDidMount","layout","startListening","updateSelectionValidators","componentDidUpdate","prevProps","stopListening","DEFAULT","reset","componentDidCatch","error","info","componentWillUnmount","on","eventHub","COLUMN_SELECTED","DATA_SELECTED","STATE_CHANGED","CLONED","COLUMNS_CHANGED","CLOSE","CLOSED","DRAGGING","DROPPED","off","setState","panel","column","columnSelected","debug","isOverlayShown","getIdFromPanel","panelLinks","LINKER","length","columns","linksToDelete","findColumn","deleteLinks","debug2","isAlwaysEndPoint","overrideIsolatedLinkerPanelId","panelComponent","getComponentNameFromPanel","name","columnName","type","columnType","newLink","id","generate","isReversed","getLinkType","existingLinkPanelId","panelLinkEnd","operator","eq","addLinks","unsetFilterValueForLink","panelManager","endPanel","getOpenedPanelById","unsetFilterValue","setPanelFilterMap","filterMap","setFilterMap","clearAll","forEach","map","isolatedLinks","linkId","find","l","dataMap","panelFilterMap","Map","i","endPanelId","has","get","filterList","visibleIndex","startColumnIndex","isExpandable","isGrouped","value","text","isDateType","dateFilterFormatter","showTimeZone","showTSeparator","defaultDateTimeFormatString","FULL_DATE_FORMAT","format","set","cloneConfig","cloneId","linksToAdd","cloneLinksForPanel","componentId","deleteLinksForPanelId","newLinks","forceUpdate","updateLinkInProgressType","tableColumn","description","render","isLinkOverlayShown","disabled","linkerOverlayMessage","transitionMs","getCachedLinks"],"sources":["../../src/linker/Linker.tsx"],"sourcesContent":["import React, { Component, ErrorInfo } from 'react';\nimport { connect, ConnectedProps } from 'react-redux';\nimport shortid from 'shortid';\nimport memoize from 'memoize-one';\nimport { CSSTransition } from 'react-transition-group';\nimport { ThemeExport } from '@deephaven/components';\nimport {\n LayoutUtils,\n PanelComponent,\n PanelEvent,\n PanelManager,\n} from '@deephaven/dashboard';\nimport type GoldenLayout from '@deephaven/golden-layout';\nimport {\n DateTimeColumnFormatter,\n DateUtils,\n RowDataMap,\n TableUtils,\n} from '@deephaven/jsapi-utils';\nimport Log from '@deephaven/log';\nimport { Type as FilterType } from '@deephaven/filters';\nimport {\n getActiveTool,\n getTimeZone,\n setActiveTool as setActiveToolAction,\n RootState,\n} from '@deephaven/redux';\nimport {\n getIsolatedLinkerPanelIdForDashboard,\n getLinksForDashboard,\n setDashboardLinks as setDashboardLinksAction,\n addDashboardLinks as addDashboardLinksAction,\n deleteDashboardLinks as deleteDashboardLinksAction,\n setDashboardIsolatedLinkerPanelId as setDashboardIsolatedLinkerPanelIdAction,\n setDashboardColumnSelectionValidator as setDashboardColumnSelectionValidatorAction,\n} from '../redux';\nimport ToolType from './ToolType';\nimport { ChartEvent, IrisGridEvent, InputFilterEvent } from '../events';\nimport LinkerOverlayContent from './LinkerOverlayContent';\nimport LinkerUtils, {\n isLinkablePanel,\n Link,\n LinkColumn,\n LinkFilterMap,\n LinkType,\n isLinkableColumn,\n} from './LinkerUtils';\n\nconst log = Log.module('Linker');\n\ninterface StateProps {\n activeTool: string;\n isolatedLinkerPanelId?: string;\n links: Link[];\n timeZone: string;\n}\n\ninterface OwnProps {\n layout: GoldenLayout;\n panelManager: PanelManager;\n localDashboardId: string;\n}\n\nconst mapState = (state: RootState, ownProps: OwnProps): StateProps => ({\n activeTool: getActiveTool(state),\n isolatedLinkerPanelId: getIsolatedLinkerPanelIdForDashboard(\n state,\n ownProps.localDashboardId\n ),\n links: getLinksForDashboard(state, ownProps.localDashboardId),\n timeZone: getTimeZone(state),\n});\n\nconst connector = connect(mapState, {\n setActiveTool: setActiveToolAction,\n setDashboardLinks: setDashboardLinksAction,\n addDashboardLinks: addDashboardLinksAction,\n deleteDashboardLinks: deleteDashboardLinksAction,\n setDashboardIsolatedLinkerPanelId: setDashboardIsolatedLinkerPanelIdAction,\n setDashboardColumnSelectionValidator: setDashboardColumnSelectionValidatorAction,\n});\n\nexport type LinkerProps = OwnProps &\n StateProps &\n ConnectedProps<typeof connector>;\n\nexport type LinkerState = {\n linkInProgress?: Link;\n selectedIds: Set<string>;\n isDraggingPanel: boolean;\n};\n\nexport class Linker extends Component<LinkerProps, LinkerState> {\n constructor(props: LinkerProps) {\n super(props);\n\n this.handleCancel = this.handleCancel.bind(this);\n this.handleDone = this.handleDone.bind(this);\n this.handlePanelCloned = this.handlePanelCloned.bind(this);\n this.handleFilterColumnSelect = this.handleFilterColumnSelect.bind(this);\n this.handleColumnsChanged = this.handleColumnsChanged.bind(this);\n this.handlePanelClosed = this.handlePanelClosed.bind(this);\n this.handleLayoutStateChanged = this.handleLayoutStateChanged.bind(this);\n this.handleAllLinksDeleted = this.handleAllLinksDeleted.bind(this);\n this.handleLinkDeleted = this.handleLinkDeleted.bind(this);\n this.handleLinksUpdated = this.handleLinksUpdated.bind(this);\n this.handleChartColumnSelect = this.handleChartColumnSelect.bind(this);\n this.handleGridColumnSelect = this.handleGridColumnSelect.bind(this);\n this.handleUpdateValues = this.handleUpdateValues.bind(this);\n this.handleStateChange = this.handleStateChange.bind(this);\n this.handleExited = this.handleExited.bind(this);\n this.handleLinkSelected = this.handleLinkSelected.bind(this);\n this.handlePanelDragging = this.handlePanelDragging.bind(this);\n this.handlePanelDropped = this.handlePanelDropped.bind(this);\n this.isColumnSelectionValid = this.isColumnSelectionValid.bind(this);\n\n this.state = {\n linkInProgress: undefined,\n selectedIds: new Set<string>(),\n isDraggingPanel: false,\n };\n }\n\n componentDidMount(): void {\n const { layout } = this.props;\n this.startListening(layout);\n this.updateSelectionValidators();\n }\n\n componentDidUpdate(prevProps: LinkerProps): void {\n const { activeTool, layout } = this.props;\n if (layout !== prevProps.layout) {\n this.stopListening(prevProps.layout);\n this.startListening(layout);\n }\n if (activeTool !== prevProps.activeTool) {\n this.updateSelectionValidators();\n if (activeTool === ToolType.DEFAULT) {\n this.reset();\n }\n }\n }\n\n componentDidCatch(error: Error, info: ErrorInfo): void {\n log.error('componentDidCatch', error, info);\n }\n\n componentWillUnmount(): void {\n const { layout } = this.props;\n this.stopListening(layout);\n }\n\n startListening(layout: GoldenLayout): void {\n layout.on('stateChanged', this.handleLayoutStateChanged);\n\n const { eventHub } = layout;\n eventHub.on(IrisGridEvent.COLUMN_SELECTED, this.handleGridColumnSelect);\n eventHub.on(IrisGridEvent.DATA_SELECTED, this.handleUpdateValues);\n eventHub.on(IrisGridEvent.STATE_CHANGED, this.handleStateChange);\n eventHub.on(ChartEvent.COLUMN_SELECTED, this.handleChartColumnSelect);\n eventHub.on(PanelEvent.CLONED, this.handlePanelCloned);\n eventHub.on(\n InputFilterEvent.COLUMN_SELECTED,\n this.handleFilterColumnSelect\n );\n eventHub.on(InputFilterEvent.COLUMNS_CHANGED, this.handleColumnsChanged);\n eventHub.on(PanelEvent.CLOSE, this.handlePanelClosed);\n eventHub.on(PanelEvent.CLOSED, this.handlePanelClosed);\n eventHub.on(PanelEvent.DRAGGING, this.handlePanelDragging);\n eventHub.on(PanelEvent.DROPPED, this.handlePanelDropped);\n }\n\n stopListening(layout: GoldenLayout): void {\n layout.off('stateChanged', this.handleLayoutStateChanged);\n\n const { eventHub } = layout;\n eventHub.off(IrisGridEvent.COLUMN_SELECTED, this.handleGridColumnSelect);\n eventHub.off(IrisGridEvent.DATA_SELECTED, this.handleUpdateValues);\n eventHub.off(IrisGridEvent.STATE_CHANGED, this.handleStateChange);\n eventHub.off(ChartEvent.COLUMN_SELECTED, this.handleChartColumnSelect);\n eventHub.off(PanelEvent.CLONED, this.handlePanelCloned);\n eventHub.off(\n InputFilterEvent.COLUMN_SELECTED,\n this.handleFilterColumnSelect\n );\n eventHub.off(InputFilterEvent.COLUMNS_CHANGED, this.handleColumnsChanged);\n eventHub.off(PanelEvent.CLOSE, this.handlePanelClosed);\n eventHub.off(PanelEvent.CLOSED, this.handlePanelClosed);\n eventHub.off(PanelEvent.DRAGGING, this.handlePanelDragging);\n eventHub.off(PanelEvent.DROPPED, this.handlePanelDropped);\n }\n\n reset(): void {\n this.setState({\n linkInProgress: undefined,\n selectedIds: new Set<string>(),\n });\n }\n\n handleCancel(): void {\n const { linkInProgress } = this.state;\n if (linkInProgress == null) {\n const { setActiveTool } = this.props;\n setActiveTool(ToolType.DEFAULT);\n }\n this.setState({ linkInProgress: undefined });\n }\n\n handleDone(): void {\n const { setActiveTool } = this.props;\n setActiveTool(ToolType.DEFAULT);\n }\n\n handleChartColumnSelect(panel: PanelComponent, column: LinkColumn): void {\n this.columnSelected(panel, column, true);\n }\n\n handleFilterColumnSelect(panel: PanelComponent, column: LinkColumn): void {\n log.debug('handleFilterColumnSelect', this.isOverlayShown());\n const {\n links,\n localDashboardId,\n setActiveTool,\n setDashboardIsolatedLinkerPanelId,\n } = this.props;\n\n const panelId = LayoutUtils.getIdFromPanel(panel);\n const panelLinks = links.filter(\n link => link.start?.panelId === panelId || link.end?.panelId === panelId\n );\n\n if (!this.isOverlayShown() && panelId != null) {\n // Initial click on the filter source button with linker inactive\n // Show linker in isolated mode for panel\n setActiveTool(ToolType.LINKER);\n setDashboardIsolatedLinkerPanelId(localDashboardId, panelId);\n\n if (panelLinks.length === 0) {\n // Source not linked - start new link in isolated linker mode\n // Need to pass panelId for overrideIsolatedLinkerPanelId\n // as redux prop update at this point not yet propagated\n this.columnSelected(panel, column, true, panelId);\n }\n return;\n }\n\n // Filter source clicked with linker active\n this.columnSelected(panel, column, true);\n }\n\n handleColumnsChanged(panel: PanelComponent, columns: LinkColumn[]): void {\n log.debug('handleColumnsChanged', panel, columns);\n const { links } = this.props;\n const panelId = LayoutUtils.getIdFromPanel(panel);\n if (panelId == null) {\n log.error('Invalid panelId', panel);\n return;\n }\n // Delete links that start or end on non-existent column in the updated panel\n const linksToDelete = links.filter(\n ({ start, end }) =>\n (start.panelId === panelId &&\n LinkerUtils.findColumn(columns, start) == null) ||\n (end != null &&\n end.panelId === panelId &&\n LinkerUtils.findColumn(columns, end) == null)\n );\n this.deleteLinks(linksToDelete);\n }\n\n handleGridColumnSelect(panel: PanelComponent, column: LinkColumn): void {\n if (!isLinkableColumn(column)) {\n log.debug2('Column is not filterable');\n return;\n }\n this.columnSelected(panel, column);\n }\n\n /**\n * Track a column selection and build the link from it.\n * @param panel The panel component that is the source for the column selection\n * @param column The column that was selected\n * @param isAlwaysEndPoint True if the selection is always the end point, even if it's the first column selected. Defaults to false.\n * @param overrideIsolatedLinkerPanelId isolatedLinkerPanelId to use when method is called before prop changes propagate\n */\n columnSelected(\n panel: PanelComponent,\n column: LinkColumn,\n isAlwaysEndPoint = false,\n overrideIsolatedLinkerPanelId?: string | string[]\n ): void {\n if (overrideIsolatedLinkerPanelId === undefined && !this.isOverlayShown()) {\n return;\n }\n const { isolatedLinkerPanelId } = this.props;\n const { linkInProgress } = this.state;\n const panelId = LayoutUtils.getIdFromPanel(panel);\n if (panelId == null) {\n return;\n }\n const panelComponent = LayoutUtils.getComponentNameFromPanel(panel);\n const { name: columnName, type: columnType } = column;\n if (linkInProgress == null || linkInProgress.start == null) {\n const newLink: Link = {\n id: shortid.generate(),\n start: {\n panelId,\n panelComponent,\n columnName,\n columnType,\n },\n // Link starts with type Invalid as linking a source to itself is not allowed\n type: 'invalid',\n isReversed: isAlwaysEndPoint,\n };\n\n log.debug('starting link', newLink);\n\n this.setState({ linkInProgress: newLink });\n } else {\n const { links } = this.props;\n const { start, id, isReversed } = linkInProgress;\n const end = {\n panelId,\n panelComponent,\n columnName,\n columnType,\n };\n\n const type = LinkerUtils.getLinkType(\n isReversed !== undefined && isReversed ? end : start,\n isReversed !== undefined && isReversed ? start : end,\n overrideIsolatedLinkerPanelId ?? isolatedLinkerPanelId\n );\n\n switch (type) {\n case 'invalid':\n log.debug('Ignore invalid link connection', linkInProgress, end);\n return;\n case 'filterSource': {\n // filterSource links have a limit of 1 link per target\n // New link validation passed, delete existing links before adding the new one\n const existingLinkPanelId =\n isReversed !== undefined && isReversed\n ? start.panelId\n : end.panelId;\n // In cases with multiple targets per panel (i.e. chart filters)\n // links would have to be filtered by panelId and columnName and columnType\n const linksToDelete = links.filter(\n ({ end: panelLinkEnd }) =>\n panelLinkEnd?.panelId === existingLinkPanelId\n );\n this.deleteLinks(linksToDelete);\n break;\n }\n case 'tableLink':\n // No-op\n break;\n }\n\n // Create a completed link from link in progress\n const newLink: Link = {\n start: isReversed !== undefined && isReversed ? end : start,\n end: isReversed !== undefined && isReversed ? start : end,\n id,\n type,\n operator: FilterType.eq,\n };\n log.info('creating link', newLink);\n\n this.setState(\n { linkInProgress: undefined, selectedIds: new Set<string>([id]) },\n () => {\n // Adding link after updating state\n // otherwise both new link and linkInProgress could be rendered at the same time\n // resulting in \"multiple children with same key\" error\n this.addLinks([newLink]);\n }\n );\n }\n }\n\n unsetFilterValueForLink(link: Link): void {\n const { panelManager } = this.props;\n if (link.end) {\n const { end } = link;\n const { panelId, columnName, columnType } = end;\n const endPanel = panelManager.getOpenedPanelById(panelId);\n if (!endPanel) {\n log.debug(\n 'endPanel no longer exists, ignoring unsetFilterValue',\n panelId\n );\n } else if (isLinkablePanel(endPanel)) {\n endPanel.unsetFilterValue(columnName, columnType);\n } else {\n log.debug('endPanel.unsetFilterValue not implemented', endPanel);\n }\n }\n }\n\n /**\n * Set filters for a given panel ID\n * @param panelId ID of panel to set filters on\n * @param filterMap Map of column name to column type, text, and value\n */\n setPanelFilterMap(panelId: string, filterMap: LinkFilterMap): void {\n log.debug('Set filter data for panel:', panelId, filterMap);\n const { panelManager } = this.props;\n const panel = panelManager.getOpenedPanelById(panelId);\n if (!panel) {\n log.debug('panel no longer exists, ignoring setFilterMap', panelId);\n } else if (isLinkablePanel(panel)) {\n panel.setFilterMap(filterMap);\n } else {\n log.debug('panel.setFilterMap not implemented', panelId, panel);\n }\n }\n\n addLinks(links: Link[]): void {\n const { addDashboardLinks, localDashboardId } = this.props;\n addDashboardLinks(localDashboardId, links);\n }\n\n deleteLinks(links: Link[], clearAll = false): void {\n const { localDashboardId } = this.props;\n links.forEach(link => this.unsetFilterValueForLink(link));\n if (clearAll) {\n const { setDashboardLinks } = this.props;\n setDashboardLinks(localDashboardId, []);\n } else if (links.length > 0) {\n const { deleteDashboardLinks } = this.props;\n deleteDashboardLinks(\n localDashboardId,\n links.map(({ id }) => id)\n );\n }\n }\n\n handleAllLinksDeleted(): void {\n const { links, isolatedLinkerPanelId } = this.props;\n if (isolatedLinkerPanelId === undefined) {\n this.deleteLinks(links, true);\n } else {\n const isolatedLinks = links.filter(\n link =>\n link?.start?.panelId === isolatedLinkerPanelId ||\n link?.end?.panelId === isolatedLinkerPanelId\n );\n this.deleteLinks(isolatedLinks);\n }\n this.reset();\n }\n\n handleLinkDeleted(linkId: string): void {\n const { links } = this.props;\n const link = links.find(l => l.id === linkId);\n if (link) {\n this.deleteLinks([link]);\n } else {\n log.error('Unable to find link to delete', linkId);\n }\n }\n\n handleUpdateValues(panel: PanelComponent, dataMap: RowDataMap): void {\n const panelId = LayoutUtils.getIdFromPanel(panel);\n const { links, timeZone } = this.props;\n // Map of panel ID to filterMap\n const panelFilterMap = new Map();\n // Instead of setting filters one by one for each link,\n // combine them so they could be set in a single call per target panel\n for (let i = 0; i < links.length; i += 1) {\n const { start, end, operator } = links[i];\n if (start.panelId === panelId && end != null) {\n const { panelId: endPanelId, columnName, columnType } = end;\n // Map of column name to column type and filter value\n const filterMap = panelFilterMap.has(endPanelId)\n ? panelFilterMap.get(endPanelId)\n : new Map();\n const filterList =\n filterMap.has(columnName) === true\n ? filterMap.get(columnName).filterList\n : [];\n const {\n visibleIndex: startColumnIndex,\n isExpandable,\n isGrouped,\n } = dataMap[start.columnName];\n let { value } = dataMap[start.columnName];\n let text = `${value}`;\n if (value === null && isExpandable && isGrouped) {\n // Clear filter on empty rollup grouping columns\n value = undefined;\n }\n if (columnType != null && TableUtils.isDateType(columnType)) {\n const dateFilterFormatter = new DateTimeColumnFormatter({\n timeZone,\n showTimeZone: false,\n showTSeparator: true,\n defaultDateTimeFormatString: DateUtils.FULL_DATE_FORMAT,\n });\n // The values are Dates for dateType values, not string like everything else\n text = dateFilterFormatter.format(value as Date);\n }\n const filter = { operator, text, value, startColumnIndex };\n filterList.push(filter);\n filterMap.set(columnName, {\n columnType,\n filterList,\n });\n panelFilterMap.set(endPanelId, filterMap);\n }\n }\n\n // Apply combined filters to all target panels\n panelFilterMap.forEach((filterMap, endPanelId) => {\n this.setPanelFilterMap(endPanelId, filterMap);\n });\n }\n\n handlePanelCloned(panel: PanelComponent, cloneConfig: { id: string }): void {\n const { links } = this.props;\n const panelId = LayoutUtils.getIdFromPanel(panel);\n const cloneId = cloneConfig.id;\n if (panelId != null) {\n const linksToAdd = LinkerUtils.cloneLinksForPanel(\n links,\n panelId,\n cloneId\n );\n this.addLinks(linksToAdd);\n }\n }\n\n handlePanelDragging(componentId: string): void {\n const { links } = this.props;\n for (let i = 0; i < links.length; i += 1) {\n const link = links[i];\n const { start, end } = link;\n if (start.panelId === componentId || end?.panelId === componentId) {\n this.setState({ isDraggingPanel: true });\n return;\n }\n }\n }\n\n handlePanelDropped(): void {\n this.setState({ isDraggingPanel: false });\n }\n\n handlePanelClosed(panelId: string): void {\n // Delete links on PanelEvent.CLOSE and PanelEvent.CLOSED instead of UNMOUNT\n // because the panels can get unmounted on errors and we want to keep the links if that happens\n log.debug(`Panel ${panelId} closed, deleting links.`);\n this.deleteLinksForPanelId(panelId);\n }\n\n handleLinkSelected(linkId: string): void {\n this.setState({ selectedIds: new Set<string>([linkId]) });\n }\n\n handleLinksUpdated(newLinks: Link[]): void {\n const { localDashboardId, setDashboardLinks } = this.props;\n setDashboardLinks(localDashboardId, newLinks);\n }\n\n handleLayoutStateChanged(): void {\n this.forceUpdate();\n }\n\n handleStateChange(): void {\n this.forceUpdate();\n }\n\n handleExited(): void {\n // Has to be done after linker exit animation to avoid flashing non-isolated links\n const { localDashboardId, setDashboardIsolatedLinkerPanelId } = this.props;\n setDashboardIsolatedLinkerPanelId(localDashboardId, undefined);\n }\n\n /**\n * Delete all links for a provided panel ID. Needs to be done whenever a panel is closed or unmounted.\n * @param panelId The panel ID to delete links for\n */\n deleteLinksForPanelId(panelId: string): void {\n const { links } = this.props;\n for (let i = 0; i < links.length; i += 1) {\n const link = links[i];\n const { start, end, id } = link;\n if (start.panelId === panelId || end?.panelId === panelId) {\n this.handleLinkDeleted(id);\n }\n }\n }\n\n getCachedLinks = memoize(\n (\n links: Link[],\n linkInProgress: Link | undefined,\n isolateForPanelId: string | undefined\n ) => {\n const combinedLinks = [...links];\n\n if (linkInProgress != null && linkInProgress.start != null) {\n combinedLinks.push(linkInProgress);\n }\n\n if (isolateForPanelId !== undefined) {\n return combinedLinks.filter(\n link =>\n link?.start?.panelId === isolateForPanelId ||\n link?.end?.panelId === isolateForPanelId ||\n link?.end == null\n );\n }\n // Show all links in regular linker mode -- both isolated and not\n return combinedLinks;\n }\n );\n\n isOverlayShown(): boolean {\n const { activeTool } = this.props;\n return activeTool === ToolType.LINKER;\n }\n\n updateSelectionValidators(): void {\n const {\n activeTool,\n setDashboardColumnSelectionValidator,\n localDashboardId,\n } = this.props;\n switch (activeTool) {\n case ToolType.LINKER:\n setDashboardColumnSelectionValidator(\n localDashboardId,\n this.isColumnSelectionValid\n );\n break;\n default:\n setDashboardColumnSelectionValidator(localDashboardId, undefined);\n break;\n }\n }\n\n updateLinkInProgressType(\n linkInProgress: Link,\n type: LinkType = 'invalid'\n ): void {\n this.setState({\n linkInProgress: {\n ...linkInProgress,\n type,\n },\n });\n }\n\n isColumnSelectionValid(\n panel: PanelComponent,\n tableColumn?: LinkColumn\n ): boolean {\n const { linkInProgress } = this.state;\n const { isolatedLinkerPanelId } = this.props;\n\n if (tableColumn == null) {\n if (linkInProgress?.start != null) {\n // Link started, end point is not a valid target\n this.updateLinkInProgressType(linkInProgress);\n }\n return false;\n }\n\n // TODO: Use preview/original type property when core/#3358 is completed\n if (!isLinkableColumn(tableColumn)) {\n log.debug2('Column is not filterable', tableColumn.description);\n if (linkInProgress?.start != null) {\n this.updateLinkInProgressType(linkInProgress, 'invalid');\n }\n return false;\n }\n\n // Link not started yet - no need to update type\n if (linkInProgress?.start == null) {\n return true;\n }\n\n const { isReversed, start } = linkInProgress;\n const panelId = LayoutUtils.getIdFromPanel(panel);\n if (panelId == null) {\n return false;\n }\n\n const end = {\n panelId,\n panelComponent: LayoutUtils.getComponentNameFromPanel(panel),\n columnName: tableColumn.name,\n columnType: tableColumn.type,\n };\n\n const type =\n isReversed !== undefined && isReversed\n ? LinkerUtils.getLinkType(end, start, isolatedLinkerPanelId)\n : LinkerUtils.getLinkType(start, end, isolatedLinkerPanelId);\n\n this.updateLinkInProgressType(linkInProgress, type);\n\n return type !== 'invalid';\n }\n\n render(): JSX.Element | null {\n const { links, isolatedLinkerPanelId, panelManager } = this.props;\n const { linkInProgress, selectedIds, isDraggingPanel } = this.state;\n\n const isLinkOverlayShown = this.isOverlayShown();\n const disabled = linkInProgress != null && linkInProgress.start != null;\n const linkerOverlayMessage =\n isolatedLinkerPanelId === undefined\n ? 'Click a column source, then click a column target to create a filter link. The filter comparison operator used by a selected link can be changed. Delete a filter link by clicking the delete button or with alt+click. Click done when finished.'\n : 'Create a link between the source column button and a table column by clicking on one, then the other. Delete a filter link by clicking the delete button or with alt+click. Click done when finished.';\n\n return !isDraggingPanel ? (\n <CSSTransition\n in={isLinkOverlayShown}\n timeout={ThemeExport.transitionMs}\n classNames=\"fade\"\n mountOnEnter\n unmountOnExit\n onExited={this.handleExited}\n >\n <LinkerOverlayContent\n disabled={disabled}\n panelManager={panelManager}\n links={this.getCachedLinks(\n links,\n linkInProgress,\n isolatedLinkerPanelId\n )}\n selectedIds={selectedIds}\n messageText={linkerOverlayMessage}\n onLinkSelected={this.handleLinkSelected}\n onLinkDeleted={this.handleLinkDeleted}\n onAllLinksDeleted={this.handleAllLinksDeleted}\n onLinksUpdated={this.handleLinksUpdated}\n onDone={this.handleDone}\n onCancel={this.handleCancel}\n />\n </CSSTransition>\n ) : null;\n }\n}\n\nexport default connector(Linker);\n"],"mappings":"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"}
1
+ {"version":3,"file":"Linker.js","names":["React","Component","connect","shortid","memoize","CSSTransition","ThemeExport","LayoutUtils","PanelEvent","DateTimeColumnFormatter","DateUtils","TableUtils","Log","Type","FilterType","getActiveTool","getTimeZone","setActiveTool","setActiveToolAction","getIsolatedLinkerPanelIdForDashboard","getLinksForDashboard","setDashboardLinks","setDashboardLinksAction","addDashboardLinks","addDashboardLinksAction","deleteDashboardLinks","deleteDashboardLinksAction","setDashboardIsolatedLinkerPanelId","setDashboardIsolatedLinkerPanelIdAction","setDashboardColumnSelectionValidator","setDashboardColumnSelectionValidatorAction","ToolType","ChartEvent","IrisGridEvent","InputFilterEvent","LinkerOverlayContent","LinkerUtils","isLinkablePanel","isLinkableColumn","log","module","mapState","state","ownProps","activeTool","isolatedLinkerPanelId","localDashboardId","links","timeZone","connector","Linker","constructor","props","linkInProgress","isolateForPanelId","combinedLinks","start","push","undefined","filter","link","panelId","end","handleCancel","bind","handleDone","handlePanelCloned","handleFilterColumnSelect","handleColumnsChanged","handlePanelClosed","handleLayoutStateChanged","handleAllLinksDeleted","handleLinkDeleted","handleLinksUpdated","handleChartColumnSelect","handleGridColumnSelect","handleUpdateValues","handleStateChange","handleExited","handleLinkSelected","handlePanelDragging","handlePanelDropped","isColumnSelectionValid","selectedIds","Set","isDraggingPanel","componentDidMount","layout","startListening","updateSelectionValidators","componentDidUpdate","prevProps","stopListening","DEFAULT","reset","componentDidCatch","error","info","componentWillUnmount","on","eventHub","COLUMN_SELECTED","DATA_SELECTED","STATE_CHANGED","CLONED","COLUMNS_CHANGED","CLOSE","CLOSED","DRAGGING","DROPPED","off","setState","panel","column","columnSelected","debug","isOverlayShown","getIdFromPanel","panelLinks","LINKER","length","columns","linksToDelete","findColumn","deleteLinks","debug2","isAlwaysEndPoint","overrideIsolatedLinkerPanelId","panelComponent","getComponentNameFromPanel","name","columnName","type","columnType","newLink","id","generate","isReversed","getLinkType","existingLinkPanelId","panelLinkEnd","operator","eq","addLinks","unsetFilterValueForLink","panelManager","endPanel","getOpenedPanelById","unsetFilterValue","setPanelFilterMap","filterMap","setFilterMap","clearAll","forEach","map","isolatedLinks","linkId","find","l","dataMap","panelFilterMap","Map","i","endPanelId","has","get","filterList","visibleIndex","startColumnIndex","isExpandable","isGrouped","value","text","isDateType","dateFilterFormatter","showTimeZone","showTSeparator","defaultDateTimeFormatString","FULL_DATE_FORMAT","format","set","cloneConfig","cloneId","linksToAdd","cloneLinksForPanel","componentId","deleteLinksForPanelId","newLinks","forceUpdate","updateLinkInProgressType","tableColumn","description","render","isLinkOverlayShown","disabled","linkerOverlayMessage","transitionMs","getCachedLinks","ConnectedLinker"],"sources":["../../src/linker/Linker.tsx"],"sourcesContent":["import React, { Component, ErrorInfo } from 'react';\nimport { connect, ConnectedProps } from 'react-redux';\nimport shortid from 'shortid';\nimport memoize from 'memoize-one';\nimport { CSSTransition } from 'react-transition-group';\nimport { ThemeExport } from '@deephaven/components';\nimport {\n LayoutUtils,\n PanelComponent,\n PanelEvent,\n PanelManager,\n} from '@deephaven/dashboard';\nimport type GoldenLayout from '@deephaven/golden-layout';\nimport {\n DateTimeColumnFormatter,\n DateUtils,\n RowDataMap,\n TableUtils,\n} from '@deephaven/jsapi-utils';\nimport Log from '@deephaven/log';\nimport { Type as FilterType } from '@deephaven/filters';\nimport {\n getActiveTool,\n getTimeZone,\n setActiveTool as setActiveToolAction,\n RootState,\n} from '@deephaven/redux';\nimport {\n getIsolatedLinkerPanelIdForDashboard,\n getLinksForDashboard,\n setDashboardLinks as setDashboardLinksAction,\n addDashboardLinks as addDashboardLinksAction,\n deleteDashboardLinks as deleteDashboardLinksAction,\n setDashboardIsolatedLinkerPanelId as setDashboardIsolatedLinkerPanelIdAction,\n setDashboardColumnSelectionValidator as setDashboardColumnSelectionValidatorAction,\n} from '../redux';\nimport ToolType from './ToolType';\nimport { ChartEvent, IrisGridEvent, InputFilterEvent } from '../events';\nimport LinkerOverlayContent from './LinkerOverlayContent';\nimport LinkerUtils, {\n isLinkablePanel,\n Link,\n LinkColumn,\n LinkFilterMap,\n LinkType,\n isLinkableColumn,\n} from './LinkerUtils';\n\nconst log = Log.module('Linker');\n\ninterface StateProps {\n activeTool: string;\n isolatedLinkerPanelId?: string;\n links: Link[];\n timeZone: string;\n}\n\ninterface OwnProps {\n layout: GoldenLayout;\n panelManager: PanelManager;\n localDashboardId: string;\n}\n\nconst mapState = (state: RootState, ownProps: OwnProps): StateProps => ({\n activeTool: getActiveTool(state),\n isolatedLinkerPanelId: getIsolatedLinkerPanelIdForDashboard(\n state,\n ownProps.localDashboardId\n ),\n links: getLinksForDashboard(state, ownProps.localDashboardId),\n timeZone: getTimeZone(state),\n});\n\nconst connector = connect(mapState, {\n setActiveTool: setActiveToolAction,\n setDashboardLinks: setDashboardLinksAction,\n addDashboardLinks: addDashboardLinksAction,\n deleteDashboardLinks: deleteDashboardLinksAction,\n setDashboardIsolatedLinkerPanelId: setDashboardIsolatedLinkerPanelIdAction,\n setDashboardColumnSelectionValidator: setDashboardColumnSelectionValidatorAction,\n});\n\nexport type LinkerProps = OwnProps &\n StateProps &\n ConnectedProps<typeof connector>;\n\nexport type LinkerState = {\n linkInProgress?: Link;\n selectedIds: Set<string>;\n isDraggingPanel: boolean;\n};\n\nexport class Linker extends Component<LinkerProps, LinkerState> {\n constructor(props: LinkerProps) {\n super(props);\n\n this.handleCancel = this.handleCancel.bind(this);\n this.handleDone = this.handleDone.bind(this);\n this.handlePanelCloned = this.handlePanelCloned.bind(this);\n this.handleFilterColumnSelect = this.handleFilterColumnSelect.bind(this);\n this.handleColumnsChanged = this.handleColumnsChanged.bind(this);\n this.handlePanelClosed = this.handlePanelClosed.bind(this);\n this.handleLayoutStateChanged = this.handleLayoutStateChanged.bind(this);\n this.handleAllLinksDeleted = this.handleAllLinksDeleted.bind(this);\n this.handleLinkDeleted = this.handleLinkDeleted.bind(this);\n this.handleLinksUpdated = this.handleLinksUpdated.bind(this);\n this.handleChartColumnSelect = this.handleChartColumnSelect.bind(this);\n this.handleGridColumnSelect = this.handleGridColumnSelect.bind(this);\n this.handleUpdateValues = this.handleUpdateValues.bind(this);\n this.handleStateChange = this.handleStateChange.bind(this);\n this.handleExited = this.handleExited.bind(this);\n this.handleLinkSelected = this.handleLinkSelected.bind(this);\n this.handlePanelDragging = this.handlePanelDragging.bind(this);\n this.handlePanelDropped = this.handlePanelDropped.bind(this);\n this.isColumnSelectionValid = this.isColumnSelectionValid.bind(this);\n\n this.state = {\n linkInProgress: undefined,\n selectedIds: new Set<string>(),\n isDraggingPanel: false,\n };\n }\n\n componentDidMount(): void {\n const { layout } = this.props;\n this.startListening(layout);\n this.updateSelectionValidators();\n }\n\n componentDidUpdate(prevProps: LinkerProps): void {\n const { activeTool, layout } = this.props;\n if (layout !== prevProps.layout) {\n this.stopListening(prevProps.layout);\n this.startListening(layout);\n }\n if (activeTool !== prevProps.activeTool) {\n this.updateSelectionValidators();\n if (activeTool === ToolType.DEFAULT) {\n this.reset();\n }\n }\n }\n\n componentDidCatch(error: Error, info: ErrorInfo): void {\n log.error('componentDidCatch', error, info);\n }\n\n componentWillUnmount(): void {\n const { layout } = this.props;\n this.stopListening(layout);\n }\n\n startListening(layout: GoldenLayout): void {\n layout.on('stateChanged', this.handleLayoutStateChanged);\n\n const { eventHub } = layout;\n eventHub.on(IrisGridEvent.COLUMN_SELECTED, this.handleGridColumnSelect);\n eventHub.on(IrisGridEvent.DATA_SELECTED, this.handleUpdateValues);\n eventHub.on(IrisGridEvent.STATE_CHANGED, this.handleStateChange);\n eventHub.on(ChartEvent.COLUMN_SELECTED, this.handleChartColumnSelect);\n eventHub.on(PanelEvent.CLONED, this.handlePanelCloned);\n eventHub.on(\n InputFilterEvent.COLUMN_SELECTED,\n this.handleFilterColumnSelect\n );\n eventHub.on(InputFilterEvent.COLUMNS_CHANGED, this.handleColumnsChanged);\n eventHub.on(PanelEvent.CLOSE, this.handlePanelClosed);\n eventHub.on(PanelEvent.CLOSED, this.handlePanelClosed);\n eventHub.on(PanelEvent.DRAGGING, this.handlePanelDragging);\n eventHub.on(PanelEvent.DROPPED, this.handlePanelDropped);\n }\n\n stopListening(layout: GoldenLayout): void {\n layout.off('stateChanged', this.handleLayoutStateChanged);\n\n const { eventHub } = layout;\n eventHub.off(IrisGridEvent.COLUMN_SELECTED, this.handleGridColumnSelect);\n eventHub.off(IrisGridEvent.DATA_SELECTED, this.handleUpdateValues);\n eventHub.off(IrisGridEvent.STATE_CHANGED, this.handleStateChange);\n eventHub.off(ChartEvent.COLUMN_SELECTED, this.handleChartColumnSelect);\n eventHub.off(PanelEvent.CLONED, this.handlePanelCloned);\n eventHub.off(\n InputFilterEvent.COLUMN_SELECTED,\n this.handleFilterColumnSelect\n );\n eventHub.off(InputFilterEvent.COLUMNS_CHANGED, this.handleColumnsChanged);\n eventHub.off(PanelEvent.CLOSE, this.handlePanelClosed);\n eventHub.off(PanelEvent.CLOSED, this.handlePanelClosed);\n eventHub.off(PanelEvent.DRAGGING, this.handlePanelDragging);\n eventHub.off(PanelEvent.DROPPED, this.handlePanelDropped);\n }\n\n reset(): void {\n this.setState({\n linkInProgress: undefined,\n selectedIds: new Set<string>(),\n });\n }\n\n handleCancel(): void {\n const { linkInProgress } = this.state;\n if (linkInProgress == null) {\n const { setActiveTool } = this.props;\n setActiveTool(ToolType.DEFAULT);\n }\n this.setState({ linkInProgress: undefined });\n }\n\n handleDone(): void {\n const { setActiveTool } = this.props;\n setActiveTool(ToolType.DEFAULT);\n }\n\n handleChartColumnSelect(panel: PanelComponent, column: LinkColumn): void {\n this.columnSelected(panel, column, true);\n }\n\n handleFilterColumnSelect(panel: PanelComponent, column: LinkColumn): void {\n log.debug('handleFilterColumnSelect', this.isOverlayShown());\n const {\n links,\n localDashboardId,\n setActiveTool,\n setDashboardIsolatedLinkerPanelId,\n } = this.props;\n\n const panelId = LayoutUtils.getIdFromPanel(panel);\n const panelLinks = links.filter(\n link => link.start?.panelId === panelId || link.end?.panelId === panelId\n );\n\n if (!this.isOverlayShown() && panelId != null) {\n // Initial click on the filter source button with linker inactive\n // Show linker in isolated mode for panel\n setActiveTool(ToolType.LINKER);\n setDashboardIsolatedLinkerPanelId(localDashboardId, panelId);\n\n if (panelLinks.length === 0) {\n // Source not linked - start new link in isolated linker mode\n // Need to pass panelId for overrideIsolatedLinkerPanelId\n // as redux prop update at this point not yet propagated\n this.columnSelected(panel, column, true, panelId);\n }\n return;\n }\n\n // Filter source clicked with linker active\n this.columnSelected(panel, column, true);\n }\n\n handleColumnsChanged(panel: PanelComponent, columns: LinkColumn[]): void {\n log.debug('handleColumnsChanged', panel, columns);\n const { links } = this.props;\n const panelId = LayoutUtils.getIdFromPanel(panel);\n if (panelId == null) {\n log.error('Invalid panelId', panel);\n return;\n }\n // Delete links that start or end on non-existent column in the updated panel\n const linksToDelete = links.filter(\n ({ start, end }) =>\n (start.panelId === panelId &&\n LinkerUtils.findColumn(columns, start) == null) ||\n (end != null &&\n end.panelId === panelId &&\n LinkerUtils.findColumn(columns, end) == null)\n );\n this.deleteLinks(linksToDelete);\n }\n\n handleGridColumnSelect(panel: PanelComponent, column: LinkColumn): void {\n if (!isLinkableColumn(column)) {\n log.debug2('Column is not filterable');\n return;\n }\n this.columnSelected(panel, column);\n }\n\n /**\n * Track a column selection and build the link from it.\n * @param panel The panel component that is the source for the column selection\n * @param column The column that was selected\n * @param isAlwaysEndPoint True if the selection is always the end point, even if it's the first column selected. Defaults to false.\n * @param overrideIsolatedLinkerPanelId isolatedLinkerPanelId to use when method is called before prop changes propagate\n */\n columnSelected(\n panel: PanelComponent,\n column: LinkColumn,\n isAlwaysEndPoint = false,\n overrideIsolatedLinkerPanelId?: string | string[]\n ): void {\n if (overrideIsolatedLinkerPanelId === undefined && !this.isOverlayShown()) {\n return;\n }\n const { isolatedLinkerPanelId } = this.props;\n const { linkInProgress } = this.state;\n const panelId = LayoutUtils.getIdFromPanel(panel);\n if (panelId == null) {\n return;\n }\n const panelComponent = LayoutUtils.getComponentNameFromPanel(panel);\n const { name: columnName, type: columnType } = column;\n if (linkInProgress == null || linkInProgress.start == null) {\n const newLink: Link = {\n id: shortid.generate(),\n start: {\n panelId,\n panelComponent,\n columnName,\n columnType,\n },\n // Link starts with type Invalid as linking a source to itself is not allowed\n type: 'invalid',\n isReversed: isAlwaysEndPoint,\n };\n\n log.debug('starting link', newLink);\n\n this.setState({ linkInProgress: newLink });\n } else {\n const { links } = this.props;\n const { start, id, isReversed } = linkInProgress;\n const end = {\n panelId,\n panelComponent,\n columnName,\n columnType,\n };\n\n const type = LinkerUtils.getLinkType(\n isReversed !== undefined && isReversed ? end : start,\n isReversed !== undefined && isReversed ? start : end,\n overrideIsolatedLinkerPanelId ?? isolatedLinkerPanelId\n );\n\n switch (type) {\n case 'invalid':\n log.debug('Ignore invalid link connection', linkInProgress, end);\n return;\n case 'filterSource': {\n // filterSource links have a limit of 1 link per target\n // New link validation passed, delete existing links before adding the new one\n const existingLinkPanelId =\n isReversed !== undefined && isReversed\n ? start.panelId\n : end.panelId;\n // In cases with multiple targets per panel (i.e. chart filters)\n // links would have to be filtered by panelId and columnName and columnType\n const linksToDelete = links.filter(\n ({ end: panelLinkEnd }) =>\n panelLinkEnd?.panelId === existingLinkPanelId\n );\n this.deleteLinks(linksToDelete);\n break;\n }\n case 'tableLink':\n // No-op\n break;\n }\n\n // Create a completed link from link in progress\n const newLink: Link = {\n start: isReversed !== undefined && isReversed ? end : start,\n end: isReversed !== undefined && isReversed ? start : end,\n id,\n type,\n operator: FilterType.eq,\n };\n log.info('creating link', newLink);\n\n this.setState(\n { linkInProgress: undefined, selectedIds: new Set<string>([id]) },\n () => {\n // Adding link after updating state\n // otherwise both new link and linkInProgress could be rendered at the same time\n // resulting in \"multiple children with same key\" error\n this.addLinks([newLink]);\n }\n );\n }\n }\n\n unsetFilterValueForLink(link: Link): void {\n const { panelManager } = this.props;\n if (link.end) {\n const { end } = link;\n const { panelId, columnName, columnType } = end;\n const endPanel = panelManager.getOpenedPanelById(panelId);\n if (!endPanel) {\n log.debug(\n 'endPanel no longer exists, ignoring unsetFilterValue',\n panelId\n );\n } else if (isLinkablePanel(endPanel)) {\n endPanel.unsetFilterValue(columnName, columnType);\n } else {\n log.debug('endPanel.unsetFilterValue not implemented', endPanel);\n }\n }\n }\n\n /**\n * Set filters for a given panel ID\n * @param panelId ID of panel to set filters on\n * @param filterMap Map of column name to column type, text, and value\n */\n setPanelFilterMap(panelId: string, filterMap: LinkFilterMap): void {\n log.debug('Set filter data for panel:', panelId, filterMap);\n const { panelManager } = this.props;\n const panel = panelManager.getOpenedPanelById(panelId);\n if (!panel) {\n log.debug('panel no longer exists, ignoring setFilterMap', panelId);\n } else if (isLinkablePanel(panel)) {\n panel.setFilterMap(filterMap);\n } else {\n log.debug('panel.setFilterMap not implemented', panelId, panel);\n }\n }\n\n addLinks(links: Link[]): void {\n const { addDashboardLinks, localDashboardId } = this.props;\n addDashboardLinks(localDashboardId, links);\n }\n\n deleteLinks(links: Link[], clearAll = false): void {\n const { localDashboardId } = this.props;\n links.forEach(link => this.unsetFilterValueForLink(link));\n if (clearAll) {\n const { setDashboardLinks } = this.props;\n setDashboardLinks(localDashboardId, []);\n } else if (links.length > 0) {\n const { deleteDashboardLinks } = this.props;\n deleteDashboardLinks(\n localDashboardId,\n links.map(({ id }) => id)\n );\n }\n }\n\n handleAllLinksDeleted(): void {\n const { links, isolatedLinkerPanelId } = this.props;\n if (isolatedLinkerPanelId === undefined) {\n this.deleteLinks(links, true);\n } else {\n const isolatedLinks = links.filter(\n link =>\n link?.start?.panelId === isolatedLinkerPanelId ||\n link?.end?.panelId === isolatedLinkerPanelId\n );\n this.deleteLinks(isolatedLinks);\n }\n this.reset();\n }\n\n handleLinkDeleted(linkId: string): void {\n const { links } = this.props;\n const link = links.find(l => l.id === linkId);\n if (link) {\n this.deleteLinks([link]);\n } else {\n log.error('Unable to find link to delete', linkId);\n }\n }\n\n handleUpdateValues(panel: PanelComponent, dataMap: RowDataMap): void {\n const panelId = LayoutUtils.getIdFromPanel(panel);\n const { links, timeZone } = this.props;\n // Map of panel ID to filterMap\n const panelFilterMap = new Map();\n // Instead of setting filters one by one for each link,\n // combine them so they could be set in a single call per target panel\n for (let i = 0; i < links.length; i += 1) {\n const { start, end, operator } = links[i];\n if (start.panelId === panelId && end != null) {\n const { panelId: endPanelId, columnName, columnType } = end;\n // Map of column name to column type and filter value\n const filterMap = panelFilterMap.has(endPanelId)\n ? panelFilterMap.get(endPanelId)\n : new Map();\n const filterList =\n filterMap.has(columnName) === true\n ? filterMap.get(columnName).filterList\n : [];\n const {\n visibleIndex: startColumnIndex,\n isExpandable,\n isGrouped,\n } = dataMap[start.columnName];\n let { value } = dataMap[start.columnName];\n let text = `${value}`;\n if (value === null && isExpandable && isGrouped) {\n // Clear filter on empty rollup grouping columns\n value = undefined;\n }\n if (columnType != null && TableUtils.isDateType(columnType)) {\n const dateFilterFormatter = new DateTimeColumnFormatter({\n timeZone,\n showTimeZone: false,\n showTSeparator: true,\n defaultDateTimeFormatString: DateUtils.FULL_DATE_FORMAT,\n });\n // The values are Dates for dateType values, not string like everything else\n text = dateFilterFormatter.format(value as Date);\n }\n const filter = { operator, text, value, startColumnIndex };\n filterList.push(filter);\n filterMap.set(columnName, {\n columnType,\n filterList,\n });\n panelFilterMap.set(endPanelId, filterMap);\n }\n }\n\n // Apply combined filters to all target panels\n panelFilterMap.forEach((filterMap, endPanelId) => {\n this.setPanelFilterMap(endPanelId, filterMap);\n });\n }\n\n handlePanelCloned(panel: PanelComponent, cloneConfig: { id: string }): void {\n const { links } = this.props;\n const panelId = LayoutUtils.getIdFromPanel(panel);\n const cloneId = cloneConfig.id;\n if (panelId != null) {\n const linksToAdd = LinkerUtils.cloneLinksForPanel(\n links,\n panelId,\n cloneId\n );\n this.addLinks(linksToAdd);\n }\n }\n\n handlePanelDragging(componentId: string): void {\n const { links } = this.props;\n for (let i = 0; i < links.length; i += 1) {\n const link = links[i];\n const { start, end } = link;\n if (start.panelId === componentId || end?.panelId === componentId) {\n this.setState({ isDraggingPanel: true });\n return;\n }\n }\n }\n\n handlePanelDropped(): void {\n this.setState({ isDraggingPanel: false });\n }\n\n handlePanelClosed(panelId: string): void {\n // Delete links on PanelEvent.CLOSE and PanelEvent.CLOSED instead of UNMOUNT\n // because the panels can get unmounted on errors and we want to keep the links if that happens\n log.debug(`Panel ${panelId} closed, deleting links.`);\n this.deleteLinksForPanelId(panelId);\n }\n\n handleLinkSelected(linkId: string): void {\n this.setState({ selectedIds: new Set<string>([linkId]) });\n }\n\n handleLinksUpdated(newLinks: Link[]): void {\n const { localDashboardId, setDashboardLinks } = this.props;\n setDashboardLinks(localDashboardId, newLinks);\n }\n\n handleLayoutStateChanged(): void {\n this.forceUpdate();\n }\n\n handleStateChange(): void {\n this.forceUpdate();\n }\n\n handleExited(): void {\n // Has to be done after linker exit animation to avoid flashing non-isolated links\n const { localDashboardId, setDashboardIsolatedLinkerPanelId } = this.props;\n setDashboardIsolatedLinkerPanelId(localDashboardId, undefined);\n }\n\n /**\n * Delete all links for a provided panel ID. Needs to be done whenever a panel is closed or unmounted.\n * @param panelId The panel ID to delete links for\n */\n deleteLinksForPanelId(panelId: string): void {\n const { links } = this.props;\n for (let i = 0; i < links.length; i += 1) {\n const link = links[i];\n const { start, end, id } = link;\n if (start.panelId === panelId || end?.panelId === panelId) {\n this.handleLinkDeleted(id);\n }\n }\n }\n\n getCachedLinks = memoize(\n (\n links: Link[],\n linkInProgress: Link | undefined,\n isolateForPanelId: string | undefined\n ) => {\n const combinedLinks = [...links];\n\n if (linkInProgress != null && linkInProgress.start != null) {\n combinedLinks.push(linkInProgress);\n }\n\n if (isolateForPanelId !== undefined) {\n return combinedLinks.filter(\n link =>\n link?.start?.panelId === isolateForPanelId ||\n link?.end?.panelId === isolateForPanelId ||\n link?.end == null\n );\n }\n // Show all links in regular linker mode -- both isolated and not\n return combinedLinks;\n }\n );\n\n isOverlayShown(): boolean {\n const { activeTool } = this.props;\n return activeTool === ToolType.LINKER;\n }\n\n updateSelectionValidators(): void {\n const {\n activeTool,\n setDashboardColumnSelectionValidator,\n localDashboardId,\n } = this.props;\n switch (activeTool) {\n case ToolType.LINKER:\n setDashboardColumnSelectionValidator(\n localDashboardId,\n this.isColumnSelectionValid\n );\n break;\n default:\n setDashboardColumnSelectionValidator(localDashboardId, undefined);\n break;\n }\n }\n\n updateLinkInProgressType(\n linkInProgress: Link,\n type: LinkType = 'invalid'\n ): void {\n this.setState({\n linkInProgress: {\n ...linkInProgress,\n type,\n },\n });\n }\n\n isColumnSelectionValid(\n panel: PanelComponent,\n tableColumn?: LinkColumn\n ): boolean {\n const { linkInProgress } = this.state;\n const { isolatedLinkerPanelId } = this.props;\n\n if (tableColumn == null) {\n if (linkInProgress?.start != null) {\n // Link started, end point is not a valid target\n this.updateLinkInProgressType(linkInProgress);\n }\n return false;\n }\n\n // TODO: Use preview/original type property when core/#3358 is completed\n if (!isLinkableColumn(tableColumn)) {\n log.debug2('Column is not filterable', tableColumn.description);\n if (linkInProgress?.start != null) {\n this.updateLinkInProgressType(linkInProgress, 'invalid');\n }\n return false;\n }\n\n // Link not started yet - no need to update type\n if (linkInProgress?.start == null) {\n return true;\n }\n\n const { isReversed, start } = linkInProgress;\n const panelId = LayoutUtils.getIdFromPanel(panel);\n if (panelId == null) {\n return false;\n }\n\n const end = {\n panelId,\n panelComponent: LayoutUtils.getComponentNameFromPanel(panel),\n columnName: tableColumn.name,\n columnType: tableColumn.type,\n };\n\n const type =\n isReversed !== undefined && isReversed\n ? LinkerUtils.getLinkType(end, start, isolatedLinkerPanelId)\n : LinkerUtils.getLinkType(start, end, isolatedLinkerPanelId);\n\n this.updateLinkInProgressType(linkInProgress, type);\n\n return type !== 'invalid';\n }\n\n render(): JSX.Element | null {\n const { links, isolatedLinkerPanelId, panelManager } = this.props;\n const { linkInProgress, selectedIds, isDraggingPanel } = this.state;\n\n const isLinkOverlayShown = this.isOverlayShown();\n const disabled = linkInProgress != null && linkInProgress.start != null;\n const linkerOverlayMessage =\n isolatedLinkerPanelId === undefined\n ? 'Click a column source, then click a column target to create a filter link. The filter comparison operator used by a selected link can be changed. Delete a filter link by clicking the delete button or with alt+click. Click done when finished.'\n : 'Create a link between the source column button and a table column by clicking on one, then the other. Delete a filter link by clicking the delete button or with alt+click. Click done when finished.';\n\n return !isDraggingPanel ? (\n <CSSTransition\n in={isLinkOverlayShown}\n timeout={ThemeExport.transitionMs}\n classNames=\"fade\"\n mountOnEnter\n unmountOnExit\n onExited={this.handleExited}\n >\n <LinkerOverlayContent\n disabled={disabled}\n panelManager={panelManager}\n links={this.getCachedLinks(\n links,\n linkInProgress,\n isolatedLinkerPanelId\n )}\n selectedIds={selectedIds}\n messageText={linkerOverlayMessage}\n onLinkSelected={this.handleLinkSelected}\n onLinkDeleted={this.handleLinkDeleted}\n onAllLinksDeleted={this.handleAllLinksDeleted}\n onLinksUpdated={this.handleLinksUpdated}\n onDone={this.handleDone}\n onCancel={this.handleCancel}\n />\n </CSSTransition>\n ) : null;\n }\n}\n\nconst ConnectedLinker = connector(Linker);\n\nexport default ConnectedLinker;\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"LinkerUtils.d.ts","sourceRoot":"","sources":["../../src/linker/LinkerUtils.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LinkerUtils.d.ts","sourceRoot":"","sources":["../../src/linker/LinkerUtils.ts"],"names":[],"mappings":"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"}