@deephaven/dashboard-core-plugins 1.7.2-beta.1 → 1.7.2-beta.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ChartBuilderPlugin.js.map +1 -1
- package/dist/ChartBuilderPluginConfig.js.map +1 -1
- package/dist/ChartPanelPlugin.js +1 -1
- package/dist/ChartPanelPlugin.js.map +1 -1
- package/dist/ChartPluginConfig.js.map +1 -1
- package/dist/ChartWidgetPlugin.js.map +1 -1
- package/dist/ConsolePlugin.d.ts.map +1 -1
- package/dist/ConsolePlugin.js +12 -2
- package/dist/ConsolePlugin.js.map +1 -1
- package/dist/FilterEvents.js.map +1 -1
- package/dist/FilterPlugin.js +2 -2
- package/dist/FilterPlugin.js.map +1 -1
- package/dist/FilterPluginConfig.js.map +1 -1
- package/dist/GridPanelPlugin.js.map +1 -1
- package/dist/GridPluginConfig.js.map +1 -1
- package/dist/GridWidgetPlugin.js.map +1 -1
- package/dist/LinkerPlugin.js.map +1 -1
- package/dist/LinkerPluginConfig.js.map +1 -1
- package/dist/MarkdownPlugin.js +1 -1
- package/dist/MarkdownPlugin.js.map +1 -1
- package/dist/MarkdownPluginConfig.js.map +1 -1
- package/dist/PandasPanelPlugin.js.map +1 -1
- package/dist/PandasPluginConfig.js.map +1 -1
- package/dist/PandasWidgetPlugin.js.map +1 -1
- package/dist/TablePluginWrapper.js.map +1 -1
- package/dist/WidgetLoaderPlugin.js.map +1 -1
- package/dist/WidgetLoaderPluginConfig.js.map +1 -1
- package/dist/controls/ControlType.js.map +1 -1
- package/dist/controls/dropdown-filter/DropdownFilter.d.ts +1 -1
- package/dist/controls/dropdown-filter/DropdownFilter.d.ts.map +1 -1
- package/dist/controls/dropdown-filter/DropdownFilter.js +4 -6
- package/dist/controls/dropdown-filter/DropdownFilter.js.map +1 -1
- package/dist/controls/input-filter/InputFilter.js +1 -2
- package/dist/controls/input-filter/InputFilter.js.map +1 -1
- package/dist/controls/markdown/MarkdownContainer.js +1 -2
- package/dist/controls/markdown/MarkdownContainer.js.map +1 -1
- package/dist/controls/markdown/MarkdownEditor.js.map +1 -1
- package/dist/controls/markdown/MarkdownStartPage.js +1 -2
- package/dist/controls/markdown/MarkdownStartPage.js.map +1 -1
- package/dist/controls/markdown/MarkdownUtils.js.map +1 -1
- package/dist/events/ChartEvent.js +2 -0
- package/dist/events/ChartEvent.js.map +1 -1
- package/dist/events/ConsoleEvent.js.map +1 -1
- package/dist/events/InputFilterEvent.js +8 -0
- package/dist/events/InputFilterEvent.js.map +1 -1
- package/dist/events/IrisGridEvent.js +2 -0
- package/dist/events/IrisGridEvent.js.map +1 -1
- package/dist/events/MarkdownEvent.js.map +1 -1
- package/dist/events/NotebookEvent.js.map +1 -1
- package/dist/events/PQEvent.js.map +1 -1
- package/dist/events/PandasEvent.js +2 -0
- package/dist/events/PandasEvent.js.map +1 -1
- package/dist/events/TabEventMap.js.map +1 -1
- package/dist/events/index.js.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/linker/ColumnSelectionValidator.js.map +1 -1
- package/dist/linker/Linker.js +2 -2
- package/dist/linker/Linker.js.map +1 -1
- package/dist/linker/LinkerEvent.js.map +1 -1
- package/dist/linker/LinkerLink.js +1 -3
- package/dist/linker/LinkerLink.js.map +1 -1
- package/dist/linker/LinkerOverlayContent.js +1 -2
- package/dist/linker/LinkerOverlayContent.js.map +1 -1
- package/dist/linker/LinkerUtils.js.map +1 -1
- package/dist/linker/ToolType.js.map +1 -1
- package/dist/linker/index.js.map +1 -1
- package/dist/panels/ChartColumnSelectorOverlay.d.ts +0 -4
- package/dist/panels/ChartColumnSelectorOverlay.d.ts.map +1 -1
- package/dist/panels/ChartColumnSelectorOverlay.js +2 -7
- package/dist/panels/ChartColumnSelectorOverlay.js.map +1 -1
- package/dist/panels/ChartFilterOverlay.d.ts +0 -12
- package/dist/panels/ChartFilterOverlay.d.ts.map +1 -1
- package/dist/panels/ChartFilterOverlay.js +1 -13
- package/dist/panels/ChartFilterOverlay.js.map +1 -1
- package/dist/panels/ChartPanel.d.ts +10 -10
- package/dist/panels/ChartPanel.d.ts.map +1 -1
- package/dist/panels/ChartPanel.js +2 -4
- package/dist/panels/ChartPanel.js.map +1 -1
- package/dist/panels/ChartPanelUtils.js.map +1 -1
- package/dist/panels/CommandHistoryPanel.js +2 -4
- package/dist/panels/CommandHistoryPanel.js.map +1 -1
- package/dist/panels/ConsolePanel.d.ts +2 -1
- package/dist/panels/ConsolePanel.d.ts.map +1 -1
- package/dist/panels/ConsolePanel.js +11 -11
- package/dist/panels/ConsolePanel.js.map +1 -1
- package/dist/panels/CorePanel.js +3 -3
- package/dist/panels/CorePanel.js.map +1 -1
- package/dist/panels/DropdownFilterPanel.d.ts +2 -8
- package/dist/panels/DropdownFilterPanel.d.ts.map +1 -1
- package/dist/panels/DropdownFilterPanel.js +6 -6
- package/dist/panels/DropdownFilterPanel.js.map +1 -1
- package/dist/panels/FileExplorerPanel.d.ts +1 -7
- package/dist/panels/FileExplorerPanel.d.ts.map +1 -1
- package/dist/panels/FileExplorerPanel.js +1 -2
- package/dist/panels/FileExplorerPanel.js.map +1 -1
- package/dist/panels/FilterSetManager.js +12 -13
- package/dist/panels/FilterSetManager.js.map +1 -1
- package/dist/panels/FilterSetManagerPanel.d.ts +3 -3
- package/dist/panels/FilterSetManagerPanel.js +4 -4
- package/dist/panels/FilterSetManagerPanel.js.map +1 -1
- package/dist/panels/InputFilterPanel.d.ts +3 -3
- package/dist/panels/InputFilterPanel.js +4 -5
- package/dist/panels/InputFilterPanel.js.map +1 -1
- package/dist/panels/IrisGridPanel.d.ts +5 -5
- package/dist/panels/IrisGridPanel.d.ts.map +1 -1
- package/dist/panels/IrisGridPanel.js +14 -13
- package/dist/panels/IrisGridPanel.js.map +1 -1
- package/dist/panels/IrisGridPanelTooltip.js +1 -2
- package/dist/panels/IrisGridPanelTooltip.js.map +1 -1
- package/dist/panels/IrisGridPanelTypes.js.map +1 -1
- package/dist/panels/LogPanel.d.ts +3 -3
- package/dist/panels/LogPanel.d.ts.map +1 -1
- package/dist/panels/LogPanel.js +1 -3
- package/dist/panels/LogPanel.js.map +1 -1
- package/dist/panels/MarkdownNotebook.js +3 -4
- package/dist/panels/MarkdownNotebook.js.map +1 -1
- package/dist/panels/MarkdownPanel.d.ts +3 -3
- package/dist/panels/MarkdownPanel.js.map +1 -1
- package/dist/panels/MockFileStorage.js.map +1 -1
- package/dist/panels/MockFileStorageTable.js +1 -1
- package/dist/panels/MockFileStorageTable.js.map +1 -1
- package/dist/panels/NotebookPanel.d.ts +7 -9
- package/dist/panels/NotebookPanel.d.ts.map +1 -1
- package/dist/panels/NotebookPanel.js +8 -10
- package/dist/panels/NotebookPanel.js.map +1 -1
- package/dist/panels/PandasPanel.js +5 -6
- package/dist/panels/PandasPanel.js.map +1 -1
- package/dist/panels/PandasReloadButton.js +2 -3
- package/dist/panels/PandasReloadButton.js.map +1 -1
- package/dist/panels/WidgetPanel.js +2 -3
- package/dist/panels/WidgetPanel.js.map +1 -1
- package/dist/panels/WidgetPanelTooltip.js +1 -3
- package/dist/panels/WidgetPanelTooltip.js.map +1 -1
- package/dist/panels/WidgetPanelTypes.js.map +1 -1
- package/dist/panels/index.js.map +1 -1
- package/dist/prop-types/CommonPropTypes.js.map +1 -1
- package/dist/prop-types/UIPropTypes.js.map +1 -1
- package/dist/prop-types/index.js.map +1 -1
- package/dist/redux/actions.js.map +1 -1
- package/dist/redux/index.js.map +1 -1
- package/dist/redux/selectors.js.map +1 -1
- package/dist/useChartLinker.js.map +1 -1
- package/dist/useConfigureRuff.js.map +1 -1
- package/dist/useDashboardColumnFilters.js.map +1 -1
- package/dist/useGridLinker.js.map +1 -1
- package/dist/useHydrateGrid.js.map +1 -1
- package/dist/useIrisGridModel.js +2 -2
- package/dist/useIrisGridModel.js.map +1 -1
- package/dist/useLoadTablePlugin.js.map +1 -1
- package/dist/useTablePlugin.js +1 -1
- package/dist/useTablePlugin.js.map +1 -1
- package/package.json +24 -24
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChartBuilderPlugin.js","names":["useCallback","ChartUtils","assertIsDashboardPluginProps","LayoutUtils","useListener","nanoid","IrisGridEvent","ChartPanel","ChartBuilderPlugin","props","id","layout","handleCreateChart","_ref","metadata","panelId","table","settings","fetchTable","_ref2","_asyncToGenerator","apply","arguments","title","titleFromSettings","config","type","component","COMPONENT","localDashboardId","fetch","root","openComponent","eventHub","CREATE_CHART"],"sources":["../src/ChartBuilderPlugin.tsx"],"sourcesContent":["import { useCallback } from 'react';\nimport { type ChartModelSettings, ChartUtils } from '@deephaven/chart';\nimport {\n assertIsDashboardPluginProps,\n type DashboardPluginComponentProps,\n LayoutUtils,\n useListener,\n} from '@deephaven/dashboard';\nimport type { dh } from '@deephaven/jsapi-types';\nimport { nanoid } from 'nanoid';\nimport { IrisGridEvent } from './events';\nimport { ChartPanel } from './panels';\n\nexport type ChartBuilderPluginProps = Partial<DashboardPluginComponentProps>;\n\n/**\n * Listens for IrisGridEvent.CREATE_CHART and creates a chart from the settings provided\n * Requires the GridPlugin and ChartPlugin plugins to be loaded as well\n */\nexport function ChartBuilderPlugin(\n props: ChartBuilderPluginProps\n): JSX.Element | null {\n assertIsDashboardPluginProps(props);\n const { id, layout } = props;\n\n const handleCreateChart = useCallback(\n ({\n metadata,\n panelId = nanoid(),\n table,\n }: {\n metadata: {\n settings: ChartModelSettings;\n sourcePanelId: string;\n table: string;\n };\n panelId?: string;\n table: dh.Table;\n }) => {\n const { settings } = metadata;\n const fetchTable = async () => table;\n const title = ChartUtils.titleFromSettings(settings);\n\n const config = {\n type: 'react-component' as const,\n component: ChartPanel.COMPONENT,\n props: {\n localDashboardId: id,\n id: panelId,\n metadata,\n fetch: fetchTable,\n },\n title,\n id: panelId,\n };\n\n const { root } = layout;\n LayoutUtils.openComponent({ root, config });\n },\n [id, layout]\n );\n\n useListener(layout.eventHub, IrisGridEvent.CREATE_CHART, handleCreateChart);\n\n return null;\n}\n\nexport default ChartBuilderPlugin;\n"],"mappings":";;AAAA,SAASA,WAAW,QAAQ,OAAO;AACnC,SAAkCC,UAAU,QAAQ,kBAAkB;AACtE,SACEC,4BAA4B,EAE5BC,WAAW,EACXC,WAAW,QACN,sBAAsB;AAE7B,SAASC,MAAM,QAAQ,QAAQ;AAAC,SACvBC,aAAa;AAAA,SACbC,UAAU;AAInB;AACA;AACA;AACA;AACA,OAAO,SAASC,kBAAkBA,CAChCC,KAA8B,EACV;EACpBP,4BAA4B,CAACO,KAAK,CAAC;EACnC,IAAM;IAAEC,EAAE;IAAEC;EAAO,CAAC,GAAGF,KAAK;EAE5B,IAAMG,iBAAiB,GAAGZ,WAAW,CACnCa,IAAA,IAYM;IAAA,IAZL;MACCC,QAAQ;MACRC,OAAO,GAAGV,MAAM,CAAC,CAAC;MAClBW;IASF,CAAC,GAAAH,IAAA;IACC,IAAM;MAAEI;IAAS,CAAC,GAAGH,QAAQ;IAC7B,IAAMI,UAAU;MAAA,IAAAC,KAAA,GAAAC,iBAAA,CAAG;QAAA,OAAYJ,KAAK;MAAA;MAAA,gBAA9BE,UAAUA,CAAA;QAAA,OAAAC,KAAA,CAAAE,KAAA,OAAAC,SAAA;MAAA;IAAA,GAAoB;IACpC,IAAMC,KAAK,GAAGtB,UAAU,CAACuB,iBAAiB,CAACP,QAAQ,CAAC;IAEpD,IAAMQ,MAAM,GAAG;MACbC,IAAI,EAAE,iBAA0B;MAChCC,SAAS,EAAEpB,UAAU,CAACqB,SAAS;MAC/BnB,KAAK,EAAE;QACLoB,gBAAgB,EAAEnB,EAAE;QACpBA,EAAE,EAAEK,OAAO;QACXD,QAAQ;QACRgB,KAAK,EAAEZ;MACT,CAAC;MACDK,KAAK;MACLb,EAAE,EAAEK;IACN,CAAC;IAED,IAAM;MAAEgB;IAAK,CAAC,GAAGpB,MAAM;IACvBR,WAAW,CAAC6B,aAAa,CAAC;MAAED,IAAI;MAAEN;IAAO,CAAC,CAAC;EAC7C,CAAC,EACD,CAACf,EAAE,EAAEC,MAAM,CACb,CAAC;EAEDP,WAAW,CAACO,MAAM,CAACsB,QAAQ,EAAE3B,aAAa,CAAC4B,YAAY,EAAEtB,iBAAiB,CAAC;EAE3E,OAAO,IAAI;AACb;AAEA,eAAeJ,kBAAkB"}
|
|
1
|
+
{"version":3,"file":"ChartBuilderPlugin.js","names":["useCallback","ChartUtils","assertIsDashboardPluginProps","LayoutUtils","useListener","nanoid","IrisGridEvent","ChartPanel","ChartBuilderPlugin","props","id","layout","handleCreateChart","_ref","metadata","panelId","table","settings","fetchTable","_ref2","_asyncToGenerator","apply","arguments","title","titleFromSettings","config","type","component","COMPONENT","localDashboardId","fetch","root","openComponent","eventHub","CREATE_CHART"],"sources":["../src/ChartBuilderPlugin.tsx"],"sourcesContent":["import { useCallback } from 'react';\nimport { type ChartModelSettings, ChartUtils } from '@deephaven/chart';\nimport {\n assertIsDashboardPluginProps,\n type DashboardPluginComponentProps,\n LayoutUtils,\n useListener,\n} from '@deephaven/dashboard';\nimport type { dh } from '@deephaven/jsapi-types';\nimport { nanoid } from 'nanoid';\nimport { IrisGridEvent } from './events';\nimport { ChartPanel } from './panels';\n\nexport type ChartBuilderPluginProps = Partial<DashboardPluginComponentProps>;\n\n/**\n * Listens for IrisGridEvent.CREATE_CHART and creates a chart from the settings provided\n * Requires the GridPlugin and ChartPlugin plugins to be loaded as well\n */\nexport function ChartBuilderPlugin(\n props: ChartBuilderPluginProps\n): JSX.Element | null {\n assertIsDashboardPluginProps(props);\n const { id, layout } = props;\n\n const handleCreateChart = useCallback(\n ({\n metadata,\n panelId = nanoid(),\n table,\n }: {\n metadata: {\n settings: ChartModelSettings;\n sourcePanelId: string;\n table: string;\n };\n panelId?: string;\n table: dh.Table;\n }) => {\n const { settings } = metadata;\n const fetchTable = async () => table;\n const title = ChartUtils.titleFromSettings(settings);\n\n const config = {\n type: 'react-component' as const,\n component: ChartPanel.COMPONENT,\n props: {\n localDashboardId: id,\n id: panelId,\n metadata,\n fetch: fetchTable,\n },\n title,\n id: panelId,\n };\n\n const { root } = layout;\n LayoutUtils.openComponent({ root, config });\n },\n [id, layout]\n );\n\n useListener(layout.eventHub, IrisGridEvent.CREATE_CHART, handleCreateChart);\n\n return null;\n}\n\nexport default ChartBuilderPlugin;\n"],"mappings":";;AAAA,SAASA,WAAW,QAAQ,OAAO;AACnC,SAAkCC,UAAU,QAAQ,kBAAkB;AACtE,SACEC,4BAA4B,EAE5BC,WAAW,EACXC,WAAW,QACN,sBAAsB;AAE7B,SAASC,MAAM,QAAQ,QAAQ;AAAC,SACvBC,aAAa;AAAA,SACbC,UAAU;AAInB;AACA;AACA;AACA;AACA,OAAO,SAASC,kBAAkBA,CAChCC,KAA8B,EACV;EACpBP,4BAA4B,CAACO,KAAK,CAAC;EACnC,IAAM;IAAEC,EAAE;IAAEC;EAAO,CAAC,GAAGF,KAAK;EAE5B,IAAMG,iBAAiB,GAAGZ,WAAW,CACnCa,IAAA,IAYM;IAAA,IAZL;MACCC,QAAQ;MACRC,OAAO,GAAGV,MAAM,CAAC,CAAC;MAClBW;IASF,CAAC,GAAAH,IAAA;IACC,IAAM;MAAEI;IAAS,CAAC,GAAGH,QAAQ;IAC7B,IAAMI,UAAU;MAAA,IAAAC,KAAA,GAAAC,iBAAA,CAAG;QAAA,OAAYJ,KAAK;MAAA;MAAA,gBAA9BE,UAAUA,CAAA;QAAA,OAAAC,KAAA,CAAAE,KAAA,OAAAC,SAAA;MAAA;IAAA,GAAoB;IACpC,IAAMC,KAAK,GAAGtB,UAAU,CAACuB,iBAAiB,CAACP,QAAQ,CAAC;IAEpD,IAAMQ,MAAM,GAAG;MACbC,IAAI,EAAE,iBAA0B;MAChCC,SAAS,EAAEpB,UAAU,CAACqB,SAAS;MAC/BnB,KAAK,EAAE;QACLoB,gBAAgB,EAAEnB,EAAE;QACpBA,EAAE,EAAEK,OAAO;QACXD,QAAQ;QACRgB,KAAK,EAAEZ;MACT,CAAC;MACDK,KAAK;MACLb,EAAE,EAAEK;IACN,CAAC;IAED,IAAM;MAAEgB;IAAK,CAAC,GAAGpB,MAAM;IACvBR,WAAW,CAAC6B,aAAa,CAAC;MAAED,IAAI;MAAEN;IAAO,CAAC,CAAC;EAC7C,CAAC,EACD,CAACf,EAAE,EAAEC,MAAM,CACb,CAAC;EAEDP,WAAW,CAACO,MAAM,CAACsB,QAAQ,EAAE3B,aAAa,CAAC4B,YAAY,EAAEtB,iBAAiB,CAAC;EAE3E,OAAO,IAAI;AACb;AAEA,eAAeJ,kBAAkB","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChartBuilderPluginConfig.js","names":["PluginType","ChartBuilderPlugin","ChartBuilderPluginConfig","name","type","DASHBOARD_PLUGIN","component"],"sources":["../src/ChartBuilderPluginConfig.ts"],"sourcesContent":["import { PluginType, type DashboardPlugin } from '@deephaven/plugin';\nimport ChartBuilderPlugin from './ChartBuilderPlugin';\n\nconst ChartBuilderPluginConfig: DashboardPlugin = {\n name: 'ChartBuilderPlugin',\n type: PluginType.DASHBOARD_PLUGIN,\n component: ChartBuilderPlugin,\n};\n\nexport default ChartBuilderPluginConfig;\n"],"mappings":"AAAA,SAASA,UAAU,QAA8B,mBAAmB;AAAC,OAC9DC,kBAAkB;AAEzB,IAAMC,wBAAyC,GAAG;EAChDC,IAAI,EAAE,oBAAoB;EAC1BC,IAAI,EAAEJ,UAAU,CAACK,gBAAgB;EACjCC,SAAS,EAAEL;AACb,CAAC;AAED,eAAeC,wBAAwB"}
|
|
1
|
+
{"version":3,"file":"ChartBuilderPluginConfig.js","names":["PluginType","ChartBuilderPlugin","ChartBuilderPluginConfig","name","type","DASHBOARD_PLUGIN","component"],"sources":["../src/ChartBuilderPluginConfig.ts"],"sourcesContent":["import { PluginType, type DashboardPlugin } from '@deephaven/plugin';\nimport ChartBuilderPlugin from './ChartBuilderPlugin';\n\nconst ChartBuilderPluginConfig: DashboardPlugin = {\n name: 'ChartBuilderPlugin',\n type: PluginType.DASHBOARD_PLUGIN,\n component: ChartBuilderPlugin,\n};\n\nexport default ChartBuilderPluginConfig;\n"],"mappings":"AAAA,SAASA,UAAU,QAA8B,mBAAmB;AAAC,OAC9DC,kBAAkB;AAEzB,IAAMC,wBAAyC,GAAG;EAChDC,IAAI,EAAE,oBAAoB;EAC1BC,IAAI,EAAEJ,UAAU,CAACK,gBAAgB;EACjCC,SAAS,EAAEL;AACb,CAAC;AAED,eAAeC,wBAAwB","ignoreList":[]}
|
package/dist/ChartPanelPlugin.js
CHANGED
|
@@ -57,7 +57,7 @@ export var ChartPanelPlugin = /*#__PURE__*/forwardRef((props, ref) => {
|
|
|
57
57
|
} = props;
|
|
58
58
|
assertNotNull(metadata);
|
|
59
59
|
var [dh, error] = useDeferredApi(metadata);
|
|
60
|
-
var makeModel = useCallback(
|
|
60
|
+
var makeModel = useCallback(/*#__PURE__*/_asyncToGenerator(function* () {
|
|
61
61
|
if (error != null) {
|
|
62
62
|
throw error;
|
|
63
63
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChartPanelPlugin.js","names":["forwardRef","useCallback","useDeferredApi","ChartModelFactory","IrisGridUtils","getTimeZone","store","assertNotNull","isChartPanelDehydratedProps","isChartPanelTableMetadata","ConnectedChartPanel","jsx","_jsx","createChartModel","_x","_x2","_x3","_x4","_createChartModel","apply","arguments","_asyncToGenerator","dh","metadata","panelFetch","panelState","settings","tableName","tableSettings","table","_objectSpread","applyTableSettings","getState","makeModelFromSettings","figure","makeModel","ChartPanelPlugin","props","ref","undefined","fetch","localDashboardId","error","Promise","displayName"],"sources":["../src/ChartPanelPlugin.tsx"],"sourcesContent":["import { forwardRef, useCallback } from 'react';\nimport { useDeferredApi } from '@deephaven/jsapi-bootstrap';\nimport { type ChartModel, ChartModelFactory } from '@deephaven/chart';\nimport type { dh as DhType } from '@deephaven/jsapi-types';\nimport { IrisGridUtils } from '@deephaven/iris-grid';\nimport { getTimeZone, store } from '@deephaven/redux';\nimport { type WidgetPanelProps } from '@deephaven/plugin';\nimport { assertNotNull } from '@deephaven/utils';\nimport {\n type ChartPanelMetadata,\n type GLChartPanelState,\n isChartPanelDehydratedProps,\n isChartPanelTableMetadata,\n} from './panels';\nimport ConnectedChartPanel, {\n type ChartPanel,\n type ChartPanelProps,\n} from './panels/ChartPanel';\n\nasync function createChartModel(\n dh: typeof DhType,\n metadata: ChartPanelMetadata,\n panelFetch: () => Promise<DhType.plot.Figure | DhType.Table>,\n panelState?: GLChartPanelState\n): Promise<ChartModel> {\n let settings = {};\n let tableName = '';\n let tableSettings = {};\n\n if (isChartPanelTableMetadata(metadata)) {\n settings = metadata.settings;\n tableName = metadata.table;\n tableSettings = metadata.tableSettings;\n }\n if (panelState != null) {\n if (panelState.tableSettings != null) {\n tableSettings = panelState.tableSettings;\n }\n if (panelState.table != null) {\n tableName = panelState.table;\n }\n if (panelState.settings != null) {\n settings = {\n ...settings,\n ...panelState.settings,\n };\n }\n }\n\n if (tableName != null && tableName !== '') {\n const table = (await panelFetch()) as DhType.Table;\n new IrisGridUtils(dh).applyTableSettings(\n table,\n tableSettings,\n getTimeZone(store.getState())\n );\n\n return ChartModelFactory.makeModelFromSettings(dh, settings, table);\n }\n\n const figure = (await panelFetch()) as DhType.plot.Figure;\n\n return ChartModelFactory.makeModel(dh, settings, figure);\n}\n\nexport const ChartPanelPlugin = forwardRef(\n (props: WidgetPanelProps<DhType.plot.Figure>, ref: React.Ref<ChartPanel>) => {\n const panelState = isChartPanelDehydratedProps(props)\n ? (props as unknown as ChartPanelProps).panelState\n : undefined;\n\n const { fetch: panelFetch, metadata, localDashboardId } = props;\n assertNotNull(metadata);\n const [dh, error] = useDeferredApi(metadata);\n\n const makeModel = useCallback(async () => {\n if (error != null) {\n throw error;\n }\n if (dh == null) {\n return new Promise<ChartModel>(() => {\n // We don't have the API yet, just return an unresolved promise so it shows as loading\n });\n }\n return createChartModel(\n dh,\n metadata as ChartPanelMetadata,\n panelFetch,\n panelState\n );\n }, [dh, error, metadata, panelFetch, panelState]);\n\n return (\n <ConnectedChartPanel\n ref={ref}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...props}\n metadata={metadata}\n localDashboardId={localDashboardId}\n makeModel={makeModel}\n />\n );\n }\n);\n\nChartPanelPlugin.displayName = 'ChartPanelPlugin';\n\nexport default ChartPanelPlugin;\n"],"mappings":";;;;;;;AAAA,SAASA,UAAU,EAAEC,WAAW,QAAQ,OAAO;AAC/C,SAASC,cAAc,QAAQ,4BAA4B;AAC3D,SAA0BC,iBAAiB,QAAQ,kBAAkB;AAErE,SAASC,aAAa,QAAQ,sBAAsB;AACpD,SAASC,WAAW,EAAEC,KAAK,QAAQ,kBAAkB;AAErD,SAASC,aAAa,QAAQ,kBAAkB;AAAC,SAI/CC,2BAA2B,EAC3BC,yBAAyB;AAAA,OAEpBC,mBAAmB;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAAA,SAKXC,gBAAgBA,CAAAC,EAAA,EAAAC,GAAA,EAAAC,GAAA,EAAAC,GAAA;EAAA,OAAAC,iBAAA,CAAAC,KAAA,OAAAC,SAAA;AAAA;AAAA,SAAAF,kBAAA;EAAAA,iBAAA,GAAAG,iBAAA,CAA/B,WACEC,EAAiB,EACjBC,QAA4B,EAC5BC,UAA4D,EAC5DC,UAA8B,EACT;IACrB,IAAIC,QAAQ,GAAG,CAAC,CAAC;IACjB,IAAIC,SAAS,GAAG,EAAE;IAClB,IAAIC,aAAa,GAAG,CAAC,CAAC;IAEtB,IAAInB,yBAAyB,CAACc,QAAQ,CAAC,EAAE;MACvCG,QAAQ,GAAGH,QAAQ,CAACG,QAAQ;MAC5BC,SAAS,GAAGJ,QAAQ,CAACM,KAAK;MAC1BD,aAAa,GAAGL,QAAQ,CAACK,aAAa;IACxC;IACA,IAAIH,UAAU,IAAI,IAAI,EAAE;MACtB,IAAIA,UAAU,CAACG,aAAa,IAAI,IAAI,EAAE;QACpCA,aAAa,GAAGH,UAAU,CAACG,aAAa;MAC1C;MACA,IAAIH,UAAU,CAACI,KAAK,IAAI,IAAI,EAAE;QAC5BF,SAAS,GAAGF,UAAU,CAACI,KAAK;MAC9B;MACA,IAAIJ,UAAU,CAACC,QAAQ,IAAI,IAAI,EAAE;QAC/BA,QAAQ,GAAAI,aAAA,CAAAA,aAAA,KACHJ,QAAQ,GACRD,UAAU,CAACC,QAAQ,CACvB;MACH;IACF;IAEA,IAAIC,SAAS,IAAI,IAAI,IAAIA,SAAS,KAAK,EAAE,EAAE;MACzC,IAAME,KAAK,SAAUL,UAAU,CAAC,CAAkB;MAClD,IAAIpB,aAAa,CAACkB,EAAE,CAAC,CAACS,kBAAkB,CACtCF,KAAK,EACLD,aAAa,EACbvB,WAAW,CAACC,KAAK,CAAC0B,QAAQ,CAAC,CAAC,CAC9B,CAAC;MAED,OAAO7B,iBAAiB,CAAC8B,qBAAqB,CAACX,EAAE,EAAEI,QAAQ,EAAEG,KAAK,CAAC;IACrE;IAEA,IAAMK,MAAM,SAAUV,UAAU,CAAC,CAAwB;IAEzD,OAAOrB,iBAAiB,CAACgC,SAAS,CAACb,EAAE,EAAEI,QAAQ,EAAEQ,MAAM,CAAC;EAC1D,CAAC;EAAA,OAAAhB,iBAAA,CAAAC,KAAA,OAAAC,SAAA;AAAA;AAED,OAAO,IAAMgB,gBAAgB,gBAAGpC,UAAU,CACxC,CAACqC,KAA2C,EAAEC,GAA0B,KAAK;EAC3E,IAAMb,UAAU,GAAGjB,2BAA2B,CAAC6B,KAAK,CAAC,GAChDA,KAAK,CAAgCZ,UAAU,GAChDc,SAAS;EAEb,IAAM;IAAEC,KAAK,EAAEhB,UAAU;IAAED,QAAQ;IAAEkB;EAAiB,CAAC,GAAGJ,KAAK;EAC/D9B,aAAa,CAACgB,QAAQ,CAAC;EACvB,IAAM,CAACD,EAAE,EAAEoB,KAAK,CAAC,GAAGxC,cAAc,CAACqB,QAAQ,CAAC;EAE5C,IAAMY,SAAS,GAAGlC,WAAW,
|
|
1
|
+
{"version":3,"file":"ChartPanelPlugin.js","names":["forwardRef","useCallback","useDeferredApi","ChartModelFactory","IrisGridUtils","getTimeZone","store","assertNotNull","isChartPanelDehydratedProps","isChartPanelTableMetadata","ConnectedChartPanel","jsx","_jsx","createChartModel","_x","_x2","_x3","_x4","_createChartModel","apply","arguments","_asyncToGenerator","dh","metadata","panelFetch","panelState","settings","tableName","tableSettings","table","_objectSpread","applyTableSettings","getState","makeModelFromSettings","figure","makeModel","ChartPanelPlugin","props","ref","undefined","fetch","localDashboardId","error","Promise","displayName"],"sources":["../src/ChartPanelPlugin.tsx"],"sourcesContent":["import { forwardRef, useCallback } from 'react';\nimport { useDeferredApi } from '@deephaven/jsapi-bootstrap';\nimport { type ChartModel, ChartModelFactory } from '@deephaven/chart';\nimport type { dh as DhType } from '@deephaven/jsapi-types';\nimport { IrisGridUtils } from '@deephaven/iris-grid';\nimport { getTimeZone, store } from '@deephaven/redux';\nimport { type WidgetPanelProps } from '@deephaven/plugin';\nimport { assertNotNull } from '@deephaven/utils';\nimport {\n type ChartPanelMetadata,\n type GLChartPanelState,\n isChartPanelDehydratedProps,\n isChartPanelTableMetadata,\n} from './panels';\nimport ConnectedChartPanel, {\n type ChartPanel,\n type ChartPanelProps,\n} from './panels/ChartPanel';\n\nasync function createChartModel(\n dh: typeof DhType,\n metadata: ChartPanelMetadata,\n panelFetch: () => Promise<DhType.plot.Figure | DhType.Table>,\n panelState?: GLChartPanelState\n): Promise<ChartModel> {\n let settings = {};\n let tableName = '';\n let tableSettings = {};\n\n if (isChartPanelTableMetadata(metadata)) {\n settings = metadata.settings;\n tableName = metadata.table;\n tableSettings = metadata.tableSettings;\n }\n if (panelState != null) {\n if (panelState.tableSettings != null) {\n tableSettings = panelState.tableSettings;\n }\n if (panelState.table != null) {\n tableName = panelState.table;\n }\n if (panelState.settings != null) {\n settings = {\n ...settings,\n ...panelState.settings,\n };\n }\n }\n\n if (tableName != null && tableName !== '') {\n const table = (await panelFetch()) as DhType.Table;\n new IrisGridUtils(dh).applyTableSettings(\n table,\n tableSettings,\n getTimeZone(store.getState())\n );\n\n return ChartModelFactory.makeModelFromSettings(dh, settings, table);\n }\n\n const figure = (await panelFetch()) as DhType.plot.Figure;\n\n return ChartModelFactory.makeModel(dh, settings, figure);\n}\n\nexport const ChartPanelPlugin = forwardRef(\n (props: WidgetPanelProps<DhType.plot.Figure>, ref: React.Ref<ChartPanel>) => {\n const panelState = isChartPanelDehydratedProps(props)\n ? (props as unknown as ChartPanelProps).panelState\n : undefined;\n\n const { fetch: panelFetch, metadata, localDashboardId } = props;\n assertNotNull(metadata);\n const [dh, error] = useDeferredApi(metadata);\n\n const makeModel = useCallback(async () => {\n if (error != null) {\n throw error;\n }\n if (dh == null) {\n return new Promise<ChartModel>(() => {\n // We don't have the API yet, just return an unresolved promise so it shows as loading\n });\n }\n return createChartModel(\n dh,\n metadata as ChartPanelMetadata,\n panelFetch,\n panelState\n );\n }, [dh, error, metadata, panelFetch, panelState]);\n\n return (\n <ConnectedChartPanel\n ref={ref}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...props}\n metadata={metadata}\n localDashboardId={localDashboardId}\n makeModel={makeModel}\n />\n );\n }\n);\n\nChartPanelPlugin.displayName = 'ChartPanelPlugin';\n\nexport default ChartPanelPlugin;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChartPluginConfig.js","names":["PluginType","vsGraph","ChartWidgetPlugin","ChartPanelPlugin","ChartPluginConfig","name","title","type","WIDGET_PLUGIN","component","panelComponent","supportedTypes","icon"],"sources":["../src/ChartPluginConfig.ts"],"sourcesContent":["import { PluginType, type WidgetPlugin } from '@deephaven/plugin';\nimport { vsGraph } from '@deephaven/icons';\nimport type { dh } from '@deephaven/jsapi-types';\nimport { ChartWidgetPlugin } from './ChartWidgetPlugin';\nimport { ChartPanelPlugin } from './ChartPanelPlugin';\n\nconst ChartPluginConfig: WidgetPlugin<dh.plot.Figure> = {\n name: 'ChartPanel',\n title: 'Chart',\n type: PluginType.WIDGET_PLUGIN,\n component: ChartWidgetPlugin,\n panelComponent: ChartPanelPlugin,\n supportedTypes: 'Figure',\n icon: vsGraph,\n};\n\nexport default ChartPluginConfig;\n"],"mappings":"AAAA,SAASA,UAAU,QAA2B,mBAAmB;AACjE,SAASC,OAAO,QAAQ,kBAAkB;AAAC,SAElCC,iBAAiB;AAAA,SACjBC,gBAAgB;AAEzB,IAAMC,iBAA+C,GAAG;EACtDC,IAAI,EAAE,YAAY;EAClBC,KAAK,EAAE,OAAO;EACdC,IAAI,EAAEP,UAAU,CAACQ,aAAa;EAC9BC,SAAS,EAAEP,iBAAiB;EAC5BQ,cAAc,EAAEP,gBAAgB;EAChCQ,cAAc,EAAE,QAAQ;EACxBC,IAAI,EAAEX;AACR,CAAC;AAED,eAAeG,iBAAiB"}
|
|
1
|
+
{"version":3,"file":"ChartPluginConfig.js","names":["PluginType","vsGraph","ChartWidgetPlugin","ChartPanelPlugin","ChartPluginConfig","name","title","type","WIDGET_PLUGIN","component","panelComponent","supportedTypes","icon"],"sources":["../src/ChartPluginConfig.ts"],"sourcesContent":["import { PluginType, type WidgetPlugin } from '@deephaven/plugin';\nimport { vsGraph } from '@deephaven/icons';\nimport type { dh } from '@deephaven/jsapi-types';\nimport { ChartWidgetPlugin } from './ChartWidgetPlugin';\nimport { ChartPanelPlugin } from './ChartPanelPlugin';\n\nconst ChartPluginConfig: WidgetPlugin<dh.plot.Figure> = {\n name: 'ChartPanel',\n title: 'Chart',\n type: PluginType.WIDGET_PLUGIN,\n component: ChartWidgetPlugin,\n panelComponent: ChartPanelPlugin,\n supportedTypes: 'Figure',\n icon: vsGraph,\n};\n\nexport default ChartPluginConfig;\n"],"mappings":"AAAA,SAASA,UAAU,QAA2B,mBAAmB;AACjE,SAASC,OAAO,QAAQ,kBAAkB;AAAC,SAElCC,iBAAiB;AAAA,SACjBC,gBAAgB;AAEzB,IAAMC,iBAA+C,GAAG;EACtDC,IAAI,EAAE,YAAY;EAClBC,KAAK,EAAE,OAAO;EACdC,IAAI,EAAEP,UAAU,CAACQ,aAAa;EAC9BC,SAAS,EAAEP,iBAAiB;EAC5BQ,cAAc,EAAEP,gBAAgB;EAChCQ,cAAc,EAAE,QAAQ;EACxBC,IAAI,EAAEX;AACR,CAAC;AAED,eAAeG,iBAAiB","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChartWidgetPlugin.js","names":["useEffect","useState","useApi","Chart","ChartModelFactory","jsx","_jsx","ChartWidgetPlugin","props","dh","model","setModel","fetch","cancelled","init","_init","apply","arguments","_asyncToGenerator","figure","newModel","makeModel","undefined"],"sources":["../src/ChartWidgetPlugin.tsx"],"sourcesContent":["import { useEffect, useState } from 'react';\nimport { useApi } from '@deephaven/jsapi-bootstrap';\nimport { Chart, type ChartModel, ChartModelFactory } from '@deephaven/chart';\nimport type { dh } from '@deephaven/jsapi-types';\nimport { type WidgetComponentProps } from '@deephaven/plugin';\n\nexport function ChartWidgetPlugin(\n props: WidgetComponentProps<dh.plot.Figure>\n): JSX.Element | null {\n const dh = useApi();\n const [model, setModel] = useState<ChartModel>();\n\n const { fetch } = props;\n\n useEffect(() => {\n let cancelled = false;\n async function init() {\n const figure = (await fetch()) as unknown as dh.plot.Figure;\n const newModel = await ChartModelFactory.makeModel(dh, undefined, figure);\n\n if (!cancelled) {\n setModel(newModel);\n }\n }\n\n init();\n\n return () => {\n cancelled = true;\n };\n }, [dh, fetch]);\n\n return model ? <Chart model={model} /> : null;\n}\n\nexport default ChartWidgetPlugin;\n"],"mappings":";;AAAA,SAASA,SAAS,EAAEC,QAAQ,QAAQ,OAAO;AAC3C,SAASC,MAAM,QAAQ,4BAA4B;AACnD,SAASC,KAAK,EAAmBC,iBAAiB,QAAQ,kBAAkB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAI7E,OAAO,SAASC,iBAAiBA,CAC/BC,KAA2C,EACvB;EACpB,IAAMC,EAAE,GAAGP,MAAM,CAAC,CAAC;EACnB,IAAM,CAACQ,KAAK,EAAEC,QAAQ,CAAC,GAAGV,QAAQ,CAAa,CAAC;EAEhD,IAAM;IAAEW;EAAM,CAAC,GAAGJ,KAAK;EAEvBR,SAAS,CAAC,MAAM;IACd,IAAIa,SAAS,GAAG,KAAK;IAAC,SACPC,IAAIA,CAAA;MAAA,OAAAC,KAAA,CAAAC,KAAA,OAAAC,SAAA;IAAA;IAAA,SAAAF,MAAA;MAAAA,KAAA,GAAAG,iBAAA,CAAnB,aAAsB;QACpB,IAAMC,MAAM,SAAUP,KAAK,CAAC,CAA+B;QAC3D,IAAMQ,QAAQ,SAAShB,iBAAiB,CAACiB,SAAS,CAACZ,EAAE,EAAEa,SAAS,EAAEH,MAAM,CAAC;QAEzE,IAAI,CAACN,SAAS,EAAE;UACdF,QAAQ,CAACS,QAAQ,CAAC;QACpB;MACF,CAAC;MAAA,OAAAL,KAAA,CAAAC,KAAA,OAAAC,SAAA;IAAA;IAEDH,IAAI,CAAC,CAAC;IAEN,OAAO,MAAM;MACXD,SAAS,GAAG,IAAI;IAClB,CAAC;EACH,CAAC,EAAE,CAACJ,EAAE,EAAEG,KAAK,CAAC,CAAC;EAEf,OAAOF,KAAK,gBAAGJ,IAAA,CAACH,KAAK;IAACO,KAAK,EAAEA;EAAM,CAAE,CAAC,GAAG,IAAI;AAC/C;AAEA,eAAeH,iBAAiB"}
|
|
1
|
+
{"version":3,"file":"ChartWidgetPlugin.js","names":["useEffect","useState","useApi","Chart","ChartModelFactory","jsx","_jsx","ChartWidgetPlugin","props","dh","model","setModel","fetch","cancelled","init","_init","apply","arguments","_asyncToGenerator","figure","newModel","makeModel","undefined"],"sources":["../src/ChartWidgetPlugin.tsx"],"sourcesContent":["import { useEffect, useState } from 'react';\nimport { useApi } from '@deephaven/jsapi-bootstrap';\nimport { Chart, type ChartModel, ChartModelFactory } from '@deephaven/chart';\nimport type { dh } from '@deephaven/jsapi-types';\nimport { type WidgetComponentProps } from '@deephaven/plugin';\n\nexport function ChartWidgetPlugin(\n props: WidgetComponentProps<dh.plot.Figure>\n): JSX.Element | null {\n const dh = useApi();\n const [model, setModel] = useState<ChartModel>();\n\n const { fetch } = props;\n\n useEffect(() => {\n let cancelled = false;\n async function init() {\n const figure = (await fetch()) as unknown as dh.plot.Figure;\n const newModel = await ChartModelFactory.makeModel(dh, undefined, figure);\n\n if (!cancelled) {\n setModel(newModel);\n }\n }\n\n init();\n\n return () => {\n cancelled = true;\n };\n }, [dh, fetch]);\n\n return model ? <Chart model={model} /> : null;\n}\n\nexport default ChartWidgetPlugin;\n"],"mappings":";;AAAA,SAASA,SAAS,EAAEC,QAAQ,QAAQ,OAAO;AAC3C,SAASC,MAAM,QAAQ,4BAA4B;AACnD,SAASC,KAAK,EAAmBC,iBAAiB,QAAQ,kBAAkB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAI7E,OAAO,SAASC,iBAAiBA,CAC/BC,KAA2C,EACvB;EACpB,IAAMC,EAAE,GAAGP,MAAM,CAAC,CAAC;EACnB,IAAM,CAACQ,KAAK,EAAEC,QAAQ,CAAC,GAAGV,QAAQ,CAAa,CAAC;EAEhD,IAAM;IAAEW;EAAM,CAAC,GAAGJ,KAAK;EAEvBR,SAAS,CAAC,MAAM;IACd,IAAIa,SAAS,GAAG,KAAK;IAAC,SACPC,IAAIA,CAAA;MAAA,OAAAC,KAAA,CAAAC,KAAA,OAAAC,SAAA;IAAA;IAAA,SAAAF,MAAA;MAAAA,KAAA,GAAAG,iBAAA,CAAnB,aAAsB;QACpB,IAAMC,MAAM,SAAUP,KAAK,CAAC,CAA+B;QAC3D,IAAMQ,QAAQ,SAAShB,iBAAiB,CAACiB,SAAS,CAACZ,EAAE,EAAEa,SAAS,EAAEH,MAAM,CAAC;QAEzE,IAAI,CAACN,SAAS,EAAE;UACdF,QAAQ,CAACS,QAAQ,CAAC;QACpB;MACF,CAAC;MAAA,OAAAL,KAAA,CAAAC,KAAA,OAAAC,SAAA;IAAA;IAEDH,IAAI,CAAC,CAAC;IAEN,OAAO,MAAM;MACXD,SAAS,GAAG,IAAI;IAClB,CAAC;EACH,CAAC,EAAE,CAACJ,EAAE,EAAEG,KAAK,CAAC,CAAC;EAEf,OAAOF,KAAK,gBAAGJ,IAAA,CAACH,KAAK;IAACO,KAAK,EAAEA;EAAM,CAAE,CAAC,GAAG,IAAI;AAC/C;AAEA,eAAeH,iBAAiB","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConsolePlugin.d.ts","sourceRoot":"","sources":["../src/ConsolePlugin.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ConsolePlugin.d.ts","sourceRoot":"","sources":["../src/ConsolePlugin.tsx"],"names":[],"mappings":"AAIA,OAAO,EAEL,KAAK,6BAA6B,EAMlC,KAAK,oBAAoB,EAG1B,MAAM,sBAAsB,CAAC;AAgC9B,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,CAoiBpB;AAED,eAAe,aAAa,CAAC"}
|
package/dist/ConsolePlugin.js
CHANGED
|
@@ -202,6 +202,10 @@ export function ConsolePlugin(props) {
|
|
|
202
202
|
var {
|
|
203
203
|
id: fileId
|
|
204
204
|
} = fileMetadata;
|
|
205
|
+
if (fileId == null) {
|
|
206
|
+
log.warn('File ID is null, ignore close event');
|
|
207
|
+
return;
|
|
208
|
+
}
|
|
205
209
|
var panelId = null;
|
|
206
210
|
var isPreview = false;
|
|
207
211
|
if (openFileMap.has(fileId)) {
|
|
@@ -296,6 +300,12 @@ export function ConsolePlugin(props) {
|
|
|
296
300
|
focusPanelById(panelId);
|
|
297
301
|
return;
|
|
298
302
|
}
|
|
303
|
+
|
|
304
|
+
// Should never happen because getPanelForFileMetadata will create an ID by default
|
|
305
|
+
if (panelId == null) {
|
|
306
|
+
log.error('Panel ID for file metadata is null');
|
|
307
|
+
return;
|
|
308
|
+
}
|
|
299
309
|
var stack = LayoutUtils.getStackForComponentTypes(layout.root, [NotebookPanel.COMPONENT]);
|
|
300
310
|
var config = makeConfig({
|
|
301
311
|
id: panelId,
|
|
@@ -316,7 +326,7 @@ export function ConsolePlugin(props) {
|
|
|
316
326
|
var isPreview = !shouldFocus;
|
|
317
327
|
var panelId = isPreview && previewId ? previewId : getPanelIdForFileMetadata(fileMetadata);
|
|
318
328
|
if (panelId == null || panelId === '') {
|
|
319
|
-
throw new Error(
|
|
329
|
+
throw new Error("Unable to retrieve or create panelId for metadata: ".concat(JSON.stringify(fileMetadata)));
|
|
320
330
|
}
|
|
321
331
|
|
|
322
332
|
// If the file is already open, show it
|
|
@@ -348,7 +358,7 @@ export function ConsolePlugin(props) {
|
|
|
348
358
|
component: NotebookPanel.COMPONENT,
|
|
349
359
|
id: panelId
|
|
350
360
|
});
|
|
351
|
-
if (item && isComponent(item)) {
|
|
361
|
+
if (fileId != null && item && isComponent(item)) {
|
|
352
362
|
item.container.emit(NotebookEvent.PROMOTE_FROM_PREVIEW);
|
|
353
363
|
deletePreviewFileMapEntry(fileId);
|
|
354
364
|
addOpenFileMapEntry(fileId, panelId);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConsolePlugin.js","names":["assertIsDashboardPluginProps","DashboardUtils","LayoutUtils","useListener","usePanelRegistration","FileUtils","isComponent","Log","useCallback","useRef","useState","useDispatch","nanoid","ConsoleEvent","NotebookEvent","ConsolePanel","CommandHistoryPanel","FileExplorerPanel","LogPanel","NotebookPanel","setDashboardConsoleSettings","useConfigureRuff","log","module","isNotebookPanel","panel","notebook","undefined","assertIsConsolePluginProps","props","ConsolePlugin","id","hydrateConsole","layout","panelManager","registerComponent","notebooksUrl","notebookIndex","openFileMap","setOpenFileMap","Map","previewFileMap","setPreviewFileMap","dispatch","getConsolePanel","getLastUsedPanelOfType","addOpenFileMapEntry","key","value","map","set","deleteOpenFileMapEntry","delete","addPreviewFileMapEntry","deletePreviewFileMapEntry","handleSendCommand","command","focus","arguments","length","execute","trimmedCommand","trim","info","consolePanel","WrappedComponent","error","debug","addCommand","handleSettingsChanged","consoleSettings","getNotebookFileName","_ref","language","extension","title","concat","current","getPanelIdForFileMetadata","fileMetadata","createIfNecessary","fileId","has","get","renamePanel","panelId","newTitle","renameComponent","root","renameFilePanel","oldName","newName","debug2","getBaseName","showFilePanel","activateTab","registerFilePanel","isPreview","existingPanelId","itemName","unregisterFilePanel","closeFilePanel","options","closeComponent","getNotebookTitle","fileIsOpen","fileIsOpenAsPreview","focusPanelById","getOpenedPanelById","makeConfig","_ref2","settings","session","sessionLanguage","panelState","type","component","COMPONENT","isFocusOnShow","localDashboardId","metadata","createNotebook","stack","getStackForComponentTypes","config","openComponentInStack","selectNotebook","shouldFocus","isFileOpen","isFileOpenAsPreview","previewId","values","Error","getStackForConfig","item","getContentItemInStack","container","emit","PROMOTE_FROM_PREVIEW","sendToNotebook","notebookPanel","append","hydrateNotebook","panelProps","panelDashboardId","hydrate","_objectSpread","eventHub","SEND_COMMAND","SETTINGS_CHANGED","CLOSE_FILE","CREATE_NOTEBOOK","SELECT_NOTEBOOK","RENAME","RENAME_FILE","SEND_TO_NOTEBOOK","REGISTER_FILE","UNREGISTER_FILE"],"sources":["../src/ConsolePlugin.tsx"],"sourcesContent":["import { type ScriptEditor } from '@deephaven/console';\nimport {\n assertIsDashboardPluginProps,\n type DashboardPluginComponentProps,\n DashboardUtils,\n type DehydratedDashboardPanelProps,\n LayoutUtils,\n type PanelComponent,\n type PanelHydrateFunction,\n useListener,\n usePanelRegistration,\n} from '@deephaven/dashboard';\nimport { FileUtils } from '@deephaven/file-explorer';\nimport { type CloseOptions, isComponent } from '@deephaven/golden-layout';\nimport Log from '@deephaven/log';\nimport { useCallback, useRef, useState } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { nanoid } from 'nanoid';\nimport { ConsoleEvent, NotebookEvent } from './events';\nimport {\n ConsolePanel,\n CommandHistoryPanel,\n FileExplorerPanel,\n LogPanel,\n NotebookPanel,\n} from './panels';\nimport { setDashboardConsoleSettings } from './redux';\nimport useConfigureRuff from './useConfigureRuff';\n\nconst log = Log.module('ConsolePlugin');\n\ntype NotebookPanelComponent = PanelComponent & {\n notebook: ScriptEditor;\n focus: () => void;\n};\n\nfunction isNotebookPanel(\n panel: PanelComponent\n): panel is NotebookPanelComponent {\n return (panel as NotebookPanelComponent).notebook !== undefined;\n}\n\nexport type ConsolePluginProps = DashboardPluginComponentProps & {\n hydrateConsole?: PanelHydrateFunction;\n notebooksUrl: string;\n};\n\nfunction assertIsConsolePluginProps(\n props: Partial<ConsolePluginProps>\n): asserts props is ConsolePluginProps {\n assertIsDashboardPluginProps(props);\n}\n\nexport interface FileMetadata {\n id: string | null;\n itemName: string;\n}\n\nexport function ConsolePlugin(\n props: Partial<ConsolePluginProps>\n): JSX.Element | null {\n assertIsConsolePluginProps(props);\n const {\n id,\n hydrateConsole,\n layout,\n panelManager,\n registerComponent,\n notebooksUrl,\n } = props;\n const notebookIndex = useRef(0);\n // Map from file ID to panel ID\n const [openFileMap, setOpenFileMap] = useState(new Map<string, string>());\n const [previewFileMap, setPreviewFileMap] = useState(\n new Map<string, string>()\n );\n\n useConfigureRuff();\n\n const dispatch = useDispatch();\n\n const getConsolePanel = useCallback(\n () => panelManager.getLastUsedPanelOfType(ConsolePanel),\n [panelManager]\n );\n\n const addOpenFileMapEntry = useCallback(\n (key: string, value: string) => {\n setOpenFileMap(map => new Map(map.set(key, value)));\n },\n [setOpenFileMap]\n );\n\n const deleteOpenFileMapEntry = useCallback(\n (key: string) => {\n setOpenFileMap(map => {\n map.delete(key);\n return new Map(map);\n });\n },\n [setOpenFileMap]\n );\n\n const addPreviewFileMapEntry = useCallback(\n (key: string, value: string) => {\n setPreviewFileMap(map => new Map(map.set(key, value)));\n },\n [setPreviewFileMap]\n );\n\n const deletePreviewFileMapEntry = useCallback(\n (key: string) => {\n setPreviewFileMap(map => {\n map.delete(key);\n return new Map(map);\n });\n },\n [setPreviewFileMap]\n );\n\n const handleSendCommand = useCallback(\n (command: string, focus = true, execute = true) => {\n const trimmedCommand = command && command.trim();\n if (!trimmedCommand) {\n log.info('Ignoring empty code');\n } else {\n const consolePanel = getConsolePanel();\n if (\n !consolePanel ||\n !(consolePanel instanceof ConsolePanel.WrappedComponent)\n ) {\n log.error('Console panel not found');\n return;\n }\n log.debug('Send command: ', command, focus, execute);\n consolePanel.addCommand(command, focus, execute);\n }\n },\n [getConsolePanel]\n );\n\n const handleSettingsChanged = useCallback(\n consoleSettings => {\n dispatch(setDashboardConsoleSettings(id, consoleSettings));\n },\n [dispatch, id]\n );\n\n const getNotebookFileName = useCallback(({ language }) => {\n const extension = language === 'python' ? 'py' : language;\n let title = null;\n if (extension == null) {\n log.debug('No extension for language', language);\n title = `Untitled-${notebookIndex.current}`;\n } else {\n title = `Untitled-${notebookIndex.current}.${extension}`;\n }\n notebookIndex.current += 1;\n return title;\n }, []);\n\n const getPanelIdForFileMetadata = useCallback(\n (fileMetadata: FileMetadata, createIfNecessary = true) => {\n const { id: fileId } = fileMetadata;\n if (fileId != null && openFileMap.has(fileId)) {\n return openFileMap.get(fileId);\n }\n if (fileId != null && previewFileMap.has(fileId)) {\n return previewFileMap.get(fileId);\n }\n if (createIfNecessary as boolean) {\n return nanoid();\n }\n return undefined;\n },\n [openFileMap, previewFileMap]\n );\n\n const renamePanel = useCallback(\n (panelId, newTitle) => {\n LayoutUtils.renameComponent(layout.root, { id: panelId }, newTitle);\n },\n [layout.root]\n );\n\n const renameFilePanel = useCallback(\n (oldName, newName) => {\n log.debug('Rename file panel', oldName, newName);\n let panelId;\n if (openFileMap.has(oldName)) {\n panelId = openFileMap.get(oldName);\n deleteOpenFileMapEntry(oldName);\n if (panelId != null) {\n addOpenFileMapEntry(newName, panelId);\n }\n }\n if (previewFileMap.has(oldName)) {\n panelId = previewFileMap.get(oldName);\n deletePreviewFileMapEntry(oldName);\n if (panelId != null) {\n addPreviewFileMapEntry(newName, panelId);\n }\n }\n\n if (panelId === undefined) {\n log.debug2(`File ${oldName} isn't open, no need to rename the tab`);\n return;\n }\n\n renamePanel(panelId, FileUtils.getBaseName(newName));\n },\n [\n openFileMap,\n previewFileMap,\n renamePanel,\n addOpenFileMapEntry,\n addPreviewFileMapEntry,\n deleteOpenFileMapEntry,\n deletePreviewFileMapEntry,\n ]\n );\n\n /**\n * Show the panel for the given file metadata.\n * If the panel is not already open, then it just logs an error and does nothing.\n */\n const showFilePanel = useCallback(\n fileMetadata => {\n const panelId = getPanelIdForFileMetadata(fileMetadata, false);\n if (panelId == null) {\n log.error('Could not find panel id for file metadata', fileMetadata);\n return;\n }\n LayoutUtils.activateTab(layout.root, { id: panelId });\n },\n [getPanelIdForFileMetadata, layout.root]\n );\n\n const registerFilePanel = useCallback(\n (panelId, fileMetadata: FileMetadata, isPreview: boolean) => {\n log.debug('registerFilePanel', panelId, fileMetadata, isPreview);\n if (fileMetadata == null || fileMetadata.id == null) {\n log.debug('Ignore empty file id', fileMetadata);\n return;\n }\n const { id: fileId } = fileMetadata;\n if (isPreview) {\n addPreviewFileMapEntry(fileId, panelId);\n return;\n }\n if (openFileMap.has(fileId)) {\n const existingPanelId = openFileMap.get(fileId);\n if (panelId === existingPanelId) {\n log.debug(`Update tab title for file ${fileId}`);\n const { itemName } = fileMetadata;\n renameFilePanel(fileId, itemName);\n } else {\n log.error(\n `File ${fileId} already associated with a different tab ${existingPanelId}`\n );\n }\n return;\n }\n\n addOpenFileMapEntry(fileId, panelId);\n\n // De-register preview tab\n if (previewFileMap.has(fileId)) {\n deletePreviewFileMapEntry(fileId);\n }\n },\n [\n openFileMap,\n previewFileMap,\n renameFilePanel,\n addOpenFileMapEntry,\n addPreviewFileMapEntry,\n deletePreviewFileMapEntry,\n ]\n );\n\n const unregisterFilePanel = useCallback(\n (fileMetadata: FileMetadata, isPreview: boolean) => {\n log.debug('unregisterFileTab', fileMetadata, isPreview);\n if (fileMetadata == null || fileMetadata.id == null) {\n log.debug('Ignore empty file id', fileMetadata);\n return;\n }\n const { id: fileId } = fileMetadata;\n if (isPreview) {\n deletePreviewFileMapEntry(fileId);\n return;\n }\n deleteOpenFileMapEntry(fileId);\n },\n [deleteOpenFileMapEntry, deletePreviewFileMapEntry]\n );\n\n const closeFilePanel = useCallback(\n (fileMetadata, options?: CloseOptions) => {\n log.debug('closeFilePanel', fileMetadata);\n const { id: fileId } = fileMetadata;\n let panelId = null;\n let isPreview = false;\n if (openFileMap.has(fileId)) {\n panelId = openFileMap.get(fileId);\n } else if (previewFileMap.has(fileId)) {\n panelId = previewFileMap.get(fileId);\n isPreview = true;\n } else {\n log.debug(`File ${fileId} isn't open, ignore close event`);\n return;\n }\n unregisterFilePanel(fileMetadata, isPreview);\n LayoutUtils.closeComponent(layout.root, { id: panelId }, options);\n },\n [layout.root, openFileMap, previewFileMap, unregisterFilePanel]\n );\n\n const getNotebookTitle = useCallback(fileMetadata => {\n const { itemName } = fileMetadata;\n return FileUtils.getBaseName(itemName);\n }, []);\n\n const fileIsOpen = useCallback(\n (fileMetadata: FileMetadata) => {\n const { id: fileId } = fileMetadata;\n log.debug('fileIsOpen', fileMetadata, fileId, openFileMap);\n return fileId != null && openFileMap.has(fileId);\n },\n [openFileMap]\n );\n\n const fileIsOpenAsPreview = useCallback(\n fileMetadata => {\n const { id: fileId } = fileMetadata;\n log.debug('fileIsOpenAsPreview', fileMetadata, fileId, previewFileMap);\n return fileId != null && previewFileMap.has(fileId);\n },\n [previewFileMap]\n );\n\n /*\n * Attempts to focus the panel with the provided panelId\n */\n const focusPanelById = useCallback(\n panelId => {\n if (panelId == null) {\n return;\n }\n\n const panel = panelManager.getOpenedPanelById(panelId);\n if (panel && isNotebookPanel(panel)) {\n panel.focus();\n }\n },\n [panelManager]\n );\n\n const makeConfig = useCallback(\n ({\n id: panelId,\n settings,\n fileMetadata,\n session,\n sessionLanguage,\n isPreview = false,\n }) => {\n const panelState = {\n settings,\n fileMetadata,\n };\n const title = getNotebookTitle(fileMetadata);\n return {\n type: 'react-component' as const,\n component: NotebookPanel.COMPONENT,\n isFocusOnShow: false,\n props: {\n localDashboardId: id,\n metadata: { id: panelId },\n session,\n sessionLanguage,\n panelState,\n isPreview,\n notebooksUrl,\n },\n title,\n id: panelId,\n };\n },\n [getNotebookTitle, id, notebooksUrl]\n );\n\n const createNotebook = useCallback(\n (\n session,\n sessionLanguage,\n settings,\n fileMetadata = { id: null, itemName: getNotebookFileName(settings) }\n ) => {\n const panelId = getPanelIdForFileMetadata(fileMetadata);\n if (fileIsOpen(fileMetadata) && panelId != null) {\n log.debug('File is already open, focus panel');\n showFilePanel(fileMetadata);\n focusPanelById(panelId);\n return;\n }\n const stack = LayoutUtils.getStackForComponentTypes(layout.root, [\n NotebookPanel.COMPONENT,\n ]);\n const config = makeConfig({\n id: panelId,\n settings,\n fileMetadata,\n session,\n sessionLanguage,\n });\n log.debug('createNotebook', config, openFileMap);\n LayoutUtils.openComponentInStack(stack, config);\n },\n [\n fileIsOpen,\n focusPanelById,\n getNotebookFileName,\n getPanelIdForFileMetadata,\n layout.root,\n makeConfig,\n openFileMap,\n showFilePanel,\n ]\n );\n\n const selectNotebook = useCallback(\n (\n session,\n sessionLanguage,\n settings,\n fileMetadata,\n // linter recognizes shouldFocus as any if I don't specify boolean here\n // eslint-disable-next-line @typescript-eslint/no-inferrable-types\n shouldFocus: boolean = false\n ) => {\n log.debug('selectNotebook', fileMetadata, shouldFocus);\n const isFileOpen = fileIsOpen(fileMetadata);\n const isFileOpenAsPreview = fileIsOpenAsPreview(fileMetadata);\n\n const [previewId] = [...previewFileMap.values()];\n const isPreview = !shouldFocus;\n const panelId =\n isPreview && previewId\n ? previewId\n : getPanelIdForFileMetadata(fileMetadata);\n\n if (panelId == null || panelId === '') {\n throw new Error(\n 'Unable to retrieve or create panelId for metadata',\n fileMetadata\n );\n }\n\n // If the file is already open, show it\n if (isFileOpen || isFileOpenAsPreview) {\n showFilePanel(fileMetadata);\n } else {\n const stack = LayoutUtils.getStackForComponentTypes(layout.root, [\n NotebookPanel.COMPONENT,\n ]);\n\n const config = makeConfig({\n id: panelId,\n settings,\n fileMetadata,\n session,\n sessionLanguage,\n isPreview,\n });\n\n // This will replace the existing preview by panelId if needed\n LayoutUtils.openComponentInStack(stack, config);\n }\n\n // If the file is open as a preview and focused, promote to non-preview\n if (isFileOpenAsPreview && shouldFocus) {\n const fileId = fileMetadata.id;\n const stack = LayoutUtils.getStackForConfig(layout.root, {\n component: NotebookPanel.COMPONENT,\n id: panelId,\n });\n\n const item = LayoutUtils.getContentItemInStack(stack, {\n component: NotebookPanel.COMPONENT,\n id: panelId,\n });\n if (item && isComponent(item)) {\n item.container.emit(NotebookEvent.PROMOTE_FROM_PREVIEW);\n deletePreviewFileMapEntry(fileId);\n addOpenFileMapEntry(fileId, panelId);\n }\n }\n\n if (shouldFocus) {\n // Focus the tab if we're supposed to\n focusPanelById(panelId);\n }\n },\n [\n showFilePanel,\n fileIsOpen,\n fileIsOpenAsPreview,\n focusPanelById,\n getPanelIdForFileMetadata,\n layout.root,\n makeConfig,\n previewFileMap,\n deletePreviewFileMapEntry,\n addOpenFileMapEntry,\n ]\n );\n\n /** Attempts to send the text to a notebook matching the passed in settings */\n const sendToNotebook = useCallback(\n (session, sessionLanguage, settings = {}, createIfNecessary = true) => {\n const notebookPanel = panelManager.getLastUsedPanelOfType(NotebookPanel);\n if (notebookPanel && isNotebookPanel(notebookPanel)) {\n if (\n settings != null &&\n settings.value != null &&\n notebookPanel.notebook != null\n ) {\n notebookPanel.notebook.append(settings.value);\n }\n } else if (createIfNecessary as boolean) {\n createNotebook(session, sessionLanguage, settings);\n }\n },\n [createNotebook, panelManager]\n );\n\n const hydrateNotebook = useCallback(\n (\n panelProps: DehydratedDashboardPanelProps,\n panelDashboardId: string\n ): DehydratedDashboardPanelProps =>\n DashboardUtils.hydrate(\n {\n ...panelProps,\n notebooksUrl,\n },\n panelDashboardId\n ),\n [notebooksUrl]\n );\n\n usePanelRegistration(registerComponent, ConsolePanel, hydrateConsole);\n usePanelRegistration(registerComponent, CommandHistoryPanel);\n usePanelRegistration(registerComponent, FileExplorerPanel);\n usePanelRegistration(registerComponent, LogPanel);\n usePanelRegistration(registerComponent, NotebookPanel, hydrateNotebook);\n\n useListener(layout.eventHub, ConsoleEvent.SEND_COMMAND, handleSendCommand);\n useListener(\n layout.eventHub,\n ConsoleEvent.SETTINGS_CHANGED,\n handleSettingsChanged\n );\n useListener(layout.eventHub, NotebookEvent.CLOSE_FILE, closeFilePanel);\n useListener(layout.eventHub, NotebookEvent.CREATE_NOTEBOOK, createNotebook);\n useListener(layout.eventHub, NotebookEvent.SELECT_NOTEBOOK, selectNotebook);\n useListener(layout.eventHub, NotebookEvent.RENAME, renamePanel);\n useListener(layout.eventHub, NotebookEvent.RENAME_FILE, renameFilePanel);\n useListener(layout.eventHub, NotebookEvent.SEND_TO_NOTEBOOK, sendToNotebook);\n useListener(layout.eventHub, NotebookEvent.REGISTER_FILE, registerFilePanel);\n useListener(\n layout.eventHub,\n NotebookEvent.UNREGISTER_FILE,\n unregisterFilePanel\n );\n\n return null;\n}\n\nexport default ConsolePlugin;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ConsolePlugin.js","names":["assertIsDashboardPluginProps","DashboardUtils","LayoutUtils","useListener","usePanelRegistration","FileUtils","isComponent","Log","useCallback","useRef","useState","useDispatch","nanoid","ConsoleEvent","NotebookEvent","ConsolePanel","CommandHistoryPanel","FileExplorerPanel","LogPanel","NotebookPanel","setDashboardConsoleSettings","useConfigureRuff","log","module","isNotebookPanel","panel","notebook","undefined","assertIsConsolePluginProps","props","ConsolePlugin","id","hydrateConsole","layout","panelManager","registerComponent","notebooksUrl","notebookIndex","openFileMap","setOpenFileMap","Map","previewFileMap","setPreviewFileMap","dispatch","getConsolePanel","getLastUsedPanelOfType","addOpenFileMapEntry","key","value","map","set","deleteOpenFileMapEntry","delete","addPreviewFileMapEntry","deletePreviewFileMapEntry","handleSendCommand","command","focus","arguments","length","execute","trimmedCommand","trim","info","consolePanel","WrappedComponent","error","debug","addCommand","handleSettingsChanged","consoleSettings","getNotebookFileName","_ref","language","extension","title","concat","current","getPanelIdForFileMetadata","fileMetadata","createIfNecessary","fileId","has","get","renamePanel","panelId","newTitle","renameComponent","root","renameFilePanel","oldName","newName","debug2","getBaseName","showFilePanel","activateTab","registerFilePanel","isPreview","existingPanelId","itemName","unregisterFilePanel","closeFilePanel","options","warn","closeComponent","getNotebookTitle","fileIsOpen","fileIsOpenAsPreview","focusPanelById","getOpenedPanelById","makeConfig","_ref2","settings","session","sessionLanguage","panelState","type","component","COMPONENT","isFocusOnShow","localDashboardId","metadata","createNotebook","stack","getStackForComponentTypes","config","openComponentInStack","selectNotebook","shouldFocus","isFileOpen","isFileOpenAsPreview","previewId","values","Error","JSON","stringify","getStackForConfig","item","getContentItemInStack","container","emit","PROMOTE_FROM_PREVIEW","sendToNotebook","notebookPanel","append","hydrateNotebook","panelProps","panelDashboardId","hydrate","_objectSpread","eventHub","SEND_COMMAND","SETTINGS_CHANGED","CLOSE_FILE","CREATE_NOTEBOOK","SELECT_NOTEBOOK","RENAME","RENAME_FILE","SEND_TO_NOTEBOOK","REGISTER_FILE","UNREGISTER_FILE"],"sources":["../src/ConsolePlugin.tsx"],"sourcesContent":["import {\n type CommandHistorySettings,\n type ScriptEditor,\n} from '@deephaven/console';\nimport {\n assertIsDashboardPluginProps,\n type DashboardPluginComponentProps,\n DashboardUtils,\n type DehydratedPanelProps,\n type DehydratedDashboardPanelProps,\n LayoutUtils,\n type PanelComponent,\n type PanelHydrateFunction,\n useListener,\n usePanelRegistration,\n} from '@deephaven/dashboard';\nimport { FileUtils } from '@deephaven/file-explorer';\nimport { type CloseOptions, isComponent } from '@deephaven/golden-layout';\nimport { type dh } from '@deephaven/jsapi-types';\nimport Log from '@deephaven/log';\nimport { useCallback, useRef, useState } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { nanoid } from 'nanoid';\nimport { ConsoleEvent, NotebookEvent } from './events';\nimport {\n ConsolePanel,\n CommandHistoryPanel,\n FileExplorerPanel,\n LogPanel,\n NotebookPanel,\n} from './panels';\nimport { setDashboardConsoleSettings } from './redux';\nimport useConfigureRuff from './useConfigureRuff';\n\nconst log = Log.module('ConsolePlugin');\n\ntype NotebookPanelComponent = PanelComponent & {\n notebook: ScriptEditor;\n focus: () => void;\n};\n\nfunction isNotebookPanel(\n panel: PanelComponent\n): panel is NotebookPanelComponent {\n return (panel as NotebookPanelComponent).notebook !== undefined;\n}\n\nexport type ConsolePluginProps = DashboardPluginComponentProps & {\n hydrateConsole?: PanelHydrateFunction;\n notebooksUrl: string;\n};\n\nfunction assertIsConsolePluginProps(\n props: Partial<ConsolePluginProps>\n): asserts props is ConsolePluginProps {\n assertIsDashboardPluginProps(props);\n}\n\nexport interface FileMetadata {\n id: string | null;\n itemName: string;\n}\n\nexport function ConsolePlugin(\n props: Partial<ConsolePluginProps>\n): JSX.Element | null {\n assertIsConsolePluginProps(props);\n const {\n id,\n hydrateConsole,\n layout,\n panelManager,\n registerComponent,\n notebooksUrl,\n } = props;\n const notebookIndex = useRef(0);\n // Map from file ID to panel ID\n const [openFileMap, setOpenFileMap] = useState(new Map<string, string>());\n const [previewFileMap, setPreviewFileMap] = useState(\n new Map<string, string>()\n );\n\n useConfigureRuff();\n\n const dispatch = useDispatch();\n\n const getConsolePanel = useCallback(\n () => panelManager.getLastUsedPanelOfType(ConsolePanel),\n [panelManager]\n );\n\n const addOpenFileMapEntry = useCallback(\n (key: string, value: string) => {\n setOpenFileMap(map => new Map(map.set(key, value)));\n },\n [setOpenFileMap]\n );\n\n const deleteOpenFileMapEntry = useCallback(\n (key: string) => {\n setOpenFileMap(map => {\n map.delete(key);\n return new Map(map);\n });\n },\n [setOpenFileMap]\n );\n\n const addPreviewFileMapEntry = useCallback(\n (key: string, value: string) => {\n setPreviewFileMap(map => new Map(map.set(key, value)));\n },\n [setPreviewFileMap]\n );\n\n const deletePreviewFileMapEntry = useCallback(\n (key: string) => {\n setPreviewFileMap(map => {\n map.delete(key);\n return new Map(map);\n });\n },\n [setPreviewFileMap]\n );\n\n const handleSendCommand = useCallback(\n (command: string, focus = true, execute = true) => {\n const trimmedCommand = command && command.trim();\n if (!trimmedCommand) {\n log.info('Ignoring empty code');\n } else {\n const consolePanel = getConsolePanel();\n if (\n !consolePanel ||\n !(consolePanel instanceof ConsolePanel.WrappedComponent)\n ) {\n log.error('Console panel not found');\n return;\n }\n log.debug('Send command: ', command, focus, execute);\n consolePanel.addCommand(command, focus, execute);\n }\n },\n [getConsolePanel]\n );\n\n const handleSettingsChanged = useCallback(\n (consoleSettings: Record<string, unknown>) => {\n dispatch(setDashboardConsoleSettings(id, consoleSettings));\n },\n [dispatch, id]\n );\n\n const getNotebookFileName = useCallback(\n ({ language }: { language?: string }) => {\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 );\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) {\n return nanoid();\n }\n return undefined;\n },\n [openFileMap, previewFileMap]\n );\n\n const renamePanel = useCallback(\n (panelId: string, newTitle: string) => {\n LayoutUtils.renameComponent(layout.root, { id: panelId }, newTitle);\n },\n [layout.root]\n );\n\n const renameFilePanel = useCallback(\n (oldName: string, newName: string) => {\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: 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: string, fileMetadata: FileMetadata, isPreview: boolean) => {\n log.debug('registerFilePanel', panelId, fileMetadata, isPreview);\n if (fileMetadata == null || fileMetadata.id == null) {\n log.debug('Ignore empty file id', fileMetadata);\n return;\n }\n const { id: fileId } = fileMetadata;\n if (isPreview) {\n addPreviewFileMapEntry(fileId, panelId);\n return;\n }\n if (openFileMap.has(fileId)) {\n const existingPanelId = openFileMap.get(fileId);\n if (panelId === existingPanelId) {\n log.debug(`Update tab title for file ${fileId}`);\n const { itemName } = fileMetadata;\n renameFilePanel(fileId, itemName);\n } else {\n log.error(\n `File ${fileId} already associated with a different tab ${existingPanelId}`\n );\n }\n return;\n }\n\n addOpenFileMapEntry(fileId, panelId);\n\n // De-register preview tab\n if (previewFileMap.has(fileId)) {\n deletePreviewFileMapEntry(fileId);\n }\n },\n [\n openFileMap,\n previewFileMap,\n renameFilePanel,\n addOpenFileMapEntry,\n addPreviewFileMapEntry,\n deletePreviewFileMapEntry,\n ]\n );\n\n const unregisterFilePanel = useCallback(\n (fileMetadata: FileMetadata, isPreview: boolean) => {\n log.debug('unregisterFileTab', fileMetadata, isPreview);\n if (fileMetadata == null || fileMetadata.id == null) {\n log.debug('Ignore empty file id', fileMetadata);\n return;\n }\n const { id: fileId } = fileMetadata;\n if (isPreview) {\n deletePreviewFileMapEntry(fileId);\n return;\n }\n deleteOpenFileMapEntry(fileId);\n },\n [deleteOpenFileMapEntry, deletePreviewFileMapEntry]\n );\n\n const closeFilePanel = useCallback(\n (fileMetadata: FileMetadata, options?: CloseOptions) => {\n log.debug('closeFilePanel', fileMetadata);\n const { id: fileId } = fileMetadata;\n if (fileId == null) {\n log.warn('File ID is null, ignore close event');\n return;\n }\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: 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: 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: string) => {\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 id: string | undefined;\n settings: CommandHistorySettings;\n fileMetadata: FileMetadata;\n session: dh.IdeSession;\n sessionLanguage: string;\n isPreview?: boolean;\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: dh.IdeSession,\n sessionLanguage: string,\n settings: CommandHistorySettings,\n fileMetadata: FileMetadata = {\n id: null,\n itemName: getNotebookFileName(settings),\n }\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\n // Should never happen because getPanelForFileMetadata will create an ID by default\n if (panelId == null) {\n log.error('Panel ID for file metadata is null');\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: dh.IdeSession,\n sessionLanguage: string,\n settings: CommandHistorySettings,\n fileMetadata: FileMetadata,\n // linter recognizes shouldFocus as any if I don't specify boolean here\n // eslint-disable-next-line @typescript-eslint/no-inferrable-types\n shouldFocus: boolean = false\n ) => {\n log.debug('selectNotebook', fileMetadata, shouldFocus);\n const isFileOpen = fileIsOpen(fileMetadata);\n const isFileOpenAsPreview = fileIsOpenAsPreview(fileMetadata);\n\n const [previewId] = [...previewFileMap.values()];\n const isPreview = !shouldFocus;\n const panelId =\n isPreview && previewId\n ? previewId\n : getPanelIdForFileMetadata(fileMetadata);\n\n if (panelId == null || panelId === '') {\n throw new Error(\n `Unable to retrieve or create panelId for metadata: ${JSON.stringify(\n fileMetadata\n )}`\n );\n }\n\n // If the file is already open, show it\n if (isFileOpen || isFileOpenAsPreview) {\n showFilePanel(fileMetadata);\n } else {\n const stack = LayoutUtils.getStackForComponentTypes(layout.root, [\n NotebookPanel.COMPONENT,\n ]);\n\n const config = makeConfig({\n id: panelId,\n settings,\n fileMetadata,\n session,\n sessionLanguage,\n isPreview,\n });\n\n // This will replace the existing preview by panelId if needed\n LayoutUtils.openComponentInStack(stack, config);\n }\n\n // If the file is open as a preview and focused, promote to non-preview\n if (isFileOpenAsPreview && shouldFocus) {\n const fileId = fileMetadata.id;\n const stack = LayoutUtils.getStackForConfig(layout.root, {\n component: NotebookPanel.COMPONENT,\n id: panelId,\n });\n\n const item = LayoutUtils.getContentItemInStack(stack, {\n component: NotebookPanel.COMPONENT,\n id: panelId,\n });\n if (fileId != null && item && isComponent(item)) {\n item.container.emit(NotebookEvent.PROMOTE_FROM_PREVIEW);\n deletePreviewFileMapEntry(fileId);\n addOpenFileMapEntry(fileId, panelId);\n }\n }\n\n if (shouldFocus) {\n // Focus the tab if we're supposed to\n focusPanelById(panelId);\n }\n },\n [\n showFilePanel,\n fileIsOpen,\n fileIsOpenAsPreview,\n focusPanelById,\n getPanelIdForFileMetadata,\n layout.root,\n makeConfig,\n previewFileMap,\n deletePreviewFileMapEntry,\n addOpenFileMapEntry,\n ]\n );\n\n /** Attempts to send the text to a notebook matching the passed in settings */\n const sendToNotebook = useCallback(\n (\n session: dh.IdeSession,\n sessionLanguage: string,\n settings: CommandHistorySettings = {} as CommandHistorySettings,\n createIfNecessary = true\n ) => {\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) {\n createNotebook(session, sessionLanguage, settings);\n }\n },\n [createNotebook, panelManager]\n );\n\n const hydrateNotebook = useCallback(\n (\n panelProps: DehydratedPanelProps,\n panelDashboardId: string\n ): DehydratedDashboardPanelProps =>\n DashboardUtils.hydrate(\n {\n ...panelProps,\n notebooksUrl,\n },\n panelDashboardId\n ),\n [notebooksUrl]\n );\n\n usePanelRegistration(registerComponent, ConsolePanel, hydrateConsole);\n usePanelRegistration(registerComponent, CommandHistoryPanel);\n usePanelRegistration(registerComponent, FileExplorerPanel);\n usePanelRegistration(registerComponent, LogPanel);\n usePanelRegistration(registerComponent, NotebookPanel, hydrateNotebook);\n\n useListener(layout.eventHub, ConsoleEvent.SEND_COMMAND, handleSendCommand);\n useListener(\n layout.eventHub,\n ConsoleEvent.SETTINGS_CHANGED,\n handleSettingsChanged\n );\n useListener(layout.eventHub, NotebookEvent.CLOSE_FILE, closeFilePanel);\n useListener(layout.eventHub, NotebookEvent.CREATE_NOTEBOOK, createNotebook);\n useListener(layout.eventHub, NotebookEvent.SELECT_NOTEBOOK, selectNotebook);\n useListener(layout.eventHub, NotebookEvent.RENAME, renamePanel);\n useListener(layout.eventHub, NotebookEvent.RENAME_FILE, renameFilePanel);\n useListener(layout.eventHub, NotebookEvent.SEND_TO_NOTEBOOK, sendToNotebook);\n useListener(layout.eventHub, NotebookEvent.REGISTER_FILE, registerFilePanel);\n useListener(\n layout.eventHub,\n NotebookEvent.UNREGISTER_FILE,\n unregisterFilePanel\n );\n\n return null;\n}\n\nexport default ConsolePlugin;\n"],"mappings":"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","ignoreList":[]}
|
package/dist/FilterEvents.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FilterEvents.js","names":["makeEventFunctions","InputFilterEvent","filterColumnsChangedFns","COLUMNS_CHANGED","listenForFilterColumnsChanged","listen","emitFilterColumnsChanged","emit","useFilterColumnsChangedListener","useListener","filterTableChangedFns","TABLE_CHANGED","listenForFilterTableChanged","emitFilterTableChanged","useFilterTableChangedListener","filterChangedFns","FILTERS_CHANGED","listenForFilterChanged","emitFilterChanged","useFilterChangedListener"],"sources":["../src/FilterEvents.ts"],"sourcesContent":["import { makeEventFunctions } from '@deephaven/golden-layout';\nimport { type dh } from '@deephaven/jsapi-types';\nimport type { PanelId } from '@deephaven/dashboard';\nimport { InputFilterEvent } from './events';\nimport type { WidgetId } from './panels';\n\nexport type FilterColumnSourceId = PanelId | WidgetId;\n\nexport type FilterColumn = {\n name: string;\n type: string;\n};\n\nexport type FilterChangeEvent = FilterColumn & {\n value: string;\n timestamp: number;\n excludePanelIds?: string[];\n};\n\nconst filterColumnsChangedFns = makeEventFunctions<\n [\n sourceId: FilterColumnSourceId,\n columns: readonly { name: string; type: string }[] | null,\n ]\n>(InputFilterEvent.COLUMNS_CHANGED);\n\n/**\n * Listen for filter column changes\n * @param eventEmitter The event emitter to emit the event on\n * @param sourceId The source ID for the columns\n * @param columns The columns available for filtering or null to remove the filter for the sourceId\n */\nexport const listenForFilterColumnsChanged = filterColumnsChangedFns.listen;\n\n/**\n * Emit a filter columns changed event\n * @param eventEmitter The event emitter to emit the event on\n * @param sourceId The source ID for the columns\n * @param columns The columns available for filtering or null to remove the filter for the sourceId\n */\nexport const emitFilterColumnsChanged = filterColumnsChangedFns.emit;\n\n/**\n * Use a filter columns change event listener\n * @param eventEmitter The event emitter to emit the event on\n * @param sourceId The source ID for the columns\n * @param columns The columns available for filtering or null to remove the filter for the sourceId\n */\nexport const useFilterColumnsChangedListener =\n filterColumnsChangedFns.useListener;\n\nconst filterTableChangedFns = makeEventFunctions<\n [sourceId: FilterColumnSourceId, table: dh.Table | null]\n>(InputFilterEvent.TABLE_CHANGED);\n\n/**\n * Listen for filter table changes\n * @param eventEmitter The event emitter to emit the event on\n * @param sourceId The source ID for the table\n * @param table The table available for filtering or null to remove the table for the sourceId\n */\nexport const listenForFilterTableChanged = filterTableChangedFns.listen;\n\n/**\n * Emit a filter table changed event\n * @param eventEmitter The event emitter to emit the event on\n * @param sourceId The source ID for the table\n * @param table The table available for filtering or null to remove the table for the sourceId\n */\nexport const emitFilterTableChanged = filterTableChangedFns.emit;\n\n/**\n * Use a filter table change event listener\n * @param eventEmitter The event emitter to emit the event on\n * @param sourceId The source ID for the table\n * @param table The table available for filtering or null to remove the table for the sourceId\n */\nexport const useFilterTableChangedListener = filterTableChangedFns.useListener;\n\nconst filterChangedFns = makeEventFunctions<\n [\n sourceId: FilterColumnSourceId,\n filterChange: FilterChangeEvent | FilterChangeEvent[] | null,\n ]\n>(InputFilterEvent.FILTERS_CHANGED);\n\n/**\n * Listen for filter changes\n * @param eventEmitter The event emitter to emit the event on\n * @param sourceId The source ID for the filter\n * @param filterChange The filter change event or null to remove the filter for the sourceId\n */\nexport const listenForFilterChanged = filterChangedFns.listen;\n\n/**\n * Emit a filter change event\n * @param eventEmitter The event emitter to emit the event on\n * @param sourceId The source ID for the filter\n * @param filterChange The filter change event or null to remove the filter for the sourceId\n */\nexport const emitFilterChanged = filterChangedFns.emit;\n\n/**\n * Use a filter change event listener\n * @param eventEmitter The event emitter to emit the event on\n * @param sourceId The source ID for the filter\n * @param filterChange The filter change event or null to remove the filter for the sourceId\n */\nexport const useFilterChangedListener = filterChangedFns.useListener; // A panel or widget can have columns for filters\n"],"mappings":"AAAA,SAASA,kBAAkB,QAAQ,0BAA0B;AAAC,SAGrDC,gBAAgB;AAgBzB,IAAMC,uBAAuB,GAAGF,kBAAkB,CAKhDC,gBAAgB,CAACE,eAAe,CAAC;;AAEnC;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,IAAMC,6BAA6B,GAAGF,uBAAuB,CAACG,MAAM;;AAE3E;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,IAAMC,wBAAwB,GAAGJ,uBAAuB,CAACK,IAAI;;AAEpE;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,IAAMC,+BAA+B,GAC1CN,uBAAuB,CAACO,WAAW;AAErC,IAAMC,qBAAqB,GAAGV,kBAAkB,CAE9CC,gBAAgB,CAACU,aAAa,CAAC;;AAEjC;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,IAAMC,2BAA2B,GAAGF,qBAAqB,CAACL,MAAM;;AAEvE;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,IAAMQ,sBAAsB,GAAGH,qBAAqB,CAACH,IAAI;;AAEhE;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,IAAMO,6BAA6B,GAAGJ,qBAAqB,CAACD,WAAW;AAE9E,IAAMM,gBAAgB,GAAGf,kBAAkB,CAKzCC,gBAAgB,CAACe,eAAe,CAAC;;AAEnC;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,IAAMC,sBAAsB,GAAGF,gBAAgB,CAACV,MAAM;;AAE7D;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,IAAMa,iBAAiB,GAAGH,gBAAgB,CAACR,IAAI;;AAEtD;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,IAAMY,wBAAwB,GAAGJ,gBAAgB,CAACN,WAAW,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"FilterEvents.js","names":["makeEventFunctions","InputFilterEvent","filterColumnsChangedFns","COLUMNS_CHANGED","listenForFilterColumnsChanged","listen","emitFilterColumnsChanged","emit","useFilterColumnsChangedListener","useListener","filterTableChangedFns","TABLE_CHANGED","listenForFilterTableChanged","emitFilterTableChanged","useFilterTableChangedListener","filterChangedFns","FILTERS_CHANGED","listenForFilterChanged","emitFilterChanged","useFilterChangedListener"],"sources":["../src/FilterEvents.ts"],"sourcesContent":["import { makeEventFunctions } from '@deephaven/golden-layout';\nimport { type dh } from '@deephaven/jsapi-types';\nimport type { PanelId } from '@deephaven/dashboard';\nimport { InputFilterEvent } from './events';\nimport type { WidgetId } from './panels';\n\nexport type FilterColumnSourceId = PanelId | WidgetId;\n\nexport type FilterColumn = {\n name: string;\n type: string;\n};\n\nexport type FilterChangeEvent = FilterColumn & {\n value: string;\n timestamp: number;\n excludePanelIds?: string[];\n};\n\nconst filterColumnsChangedFns = makeEventFunctions<\n [\n sourceId: FilterColumnSourceId,\n columns: readonly { name: string; type: string }[] | null,\n ]\n>(InputFilterEvent.COLUMNS_CHANGED);\n\n/**\n * Listen for filter column changes\n * @param eventEmitter The event emitter to emit the event on\n * @param sourceId The source ID for the columns\n * @param columns The columns available for filtering or null to remove the filter for the sourceId\n */\nexport const listenForFilterColumnsChanged = filterColumnsChangedFns.listen;\n\n/**\n * Emit a filter columns changed event\n * @param eventEmitter The event emitter to emit the event on\n * @param sourceId The source ID for the columns\n * @param columns The columns available for filtering or null to remove the filter for the sourceId\n */\nexport const emitFilterColumnsChanged = filterColumnsChangedFns.emit;\n\n/**\n * Use a filter columns change event listener\n * @param eventEmitter The event emitter to emit the event on\n * @param sourceId The source ID for the columns\n * @param columns The columns available for filtering or null to remove the filter for the sourceId\n */\nexport const useFilterColumnsChangedListener =\n filterColumnsChangedFns.useListener;\n\nconst filterTableChangedFns = makeEventFunctions<\n [sourceId: FilterColumnSourceId, table: dh.Table | null]\n>(InputFilterEvent.TABLE_CHANGED);\n\n/**\n * Listen for filter table changes\n * @param eventEmitter The event emitter to emit the event on\n * @param sourceId The source ID for the table\n * @param table The table available for filtering or null to remove the table for the sourceId\n */\nexport const listenForFilterTableChanged = filterTableChangedFns.listen;\n\n/**\n * Emit a filter table changed event\n * @param eventEmitter The event emitter to emit the event on\n * @param sourceId The source ID for the table\n * @param table The table available for filtering or null to remove the table for the sourceId\n */\nexport const emitFilterTableChanged = filterTableChangedFns.emit;\n\n/**\n * Use a filter table change event listener\n * @param eventEmitter The event emitter to emit the event on\n * @param sourceId The source ID for the table\n * @param table The table available for filtering or null to remove the table for the sourceId\n */\nexport const useFilterTableChangedListener = filterTableChangedFns.useListener;\n\nconst filterChangedFns = makeEventFunctions<\n [\n sourceId: FilterColumnSourceId,\n filterChange: FilterChangeEvent | FilterChangeEvent[] | null,\n ]\n>(InputFilterEvent.FILTERS_CHANGED);\n\n/**\n * Listen for filter changes\n * @param eventEmitter The event emitter to emit the event on\n * @param sourceId The source ID for the filter\n * @param filterChange The filter change event or null to remove the filter for the sourceId\n */\nexport const listenForFilterChanged = filterChangedFns.listen;\n\n/**\n * Emit a filter change event\n * @param eventEmitter The event emitter to emit the event on\n * @param sourceId The source ID for the filter\n * @param filterChange The filter change event or null to remove the filter for the sourceId\n */\nexport const emitFilterChanged = filterChangedFns.emit;\n\n/**\n * Use a filter change event listener\n * @param eventEmitter The event emitter to emit the event on\n * @param sourceId The source ID for the filter\n * @param filterChange The filter change event or null to remove the filter for the sourceId\n */\nexport const useFilterChangedListener = filterChangedFns.useListener; // A panel or widget can have columns for filters\n"],"mappings":"AAAA,SAASA,kBAAkB,QAAQ,0BAA0B;AAAC,SAGrDC,gBAAgB;AAgBzB,IAAMC,uBAAuB,GAAGF,kBAAkB,CAKhDC,gBAAgB,CAACE,eAAe,CAAC;;AAEnC;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,IAAMC,6BAA6B,GAAGF,uBAAuB,CAACG,MAAM;;AAE3E;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,IAAMC,wBAAwB,GAAGJ,uBAAuB,CAACK,IAAI;;AAEpE;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,IAAMC,+BAA+B,GAC1CN,uBAAuB,CAACO,WAAW;AAErC,IAAMC,qBAAqB,GAAGV,kBAAkB,CAE9CC,gBAAgB,CAACU,aAAa,CAAC;;AAEjC;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,IAAMC,2BAA2B,GAAGF,qBAAqB,CAACL,MAAM;;AAEvE;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,IAAMQ,sBAAsB,GAAGH,qBAAqB,CAACH,IAAI;;AAEhE;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,IAAMO,6BAA6B,GAAGJ,qBAAqB,CAACD,WAAW;AAE9E,IAAMM,gBAAgB,GAAGf,kBAAkB,CAKzCC,gBAAgB,CAACe,eAAe,CAAC;;AAEnC;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,IAAMC,sBAAsB,GAAGF,gBAAgB,CAACV,MAAM;;AAE7D;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,IAAMa,iBAAiB,GAAGH,gBAAgB,CAACR,IAAI;;AAEtD;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,IAAMY,wBAAwB,GAAGJ,gBAAgB,CAACN,WAAW,CAAC,CAAC","ignoreList":[]}
|
package/dist/FilterPlugin.js
CHANGED
|
@@ -108,7 +108,7 @@ export function FilterPlugin(props) {
|
|
|
108
108
|
id = nanoid(),
|
|
109
109
|
focusElement = LayoutUtils.DEFAULT_FOCUS_SELECTOR,
|
|
110
110
|
createNewStack = false,
|
|
111
|
-
dragEvent =
|
|
111
|
+
dragEvent = undefined
|
|
112
112
|
} = _ref;
|
|
113
113
|
var config = {
|
|
114
114
|
type: 'react-component',
|
|
@@ -174,7 +174,7 @@ export function FilterPlugin(props) {
|
|
|
174
174
|
id = nanoid(),
|
|
175
175
|
focusElement = LayoutUtils.DEFAULT_FOCUS_SELECTOR,
|
|
176
176
|
createNewStack = false,
|
|
177
|
-
dragEvent =
|
|
177
|
+
dragEvent = undefined
|
|
178
178
|
} = _ref3;
|
|
179
179
|
var config = {
|
|
180
180
|
type: 'react-component',
|
package/dist/FilterPlugin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FilterPlugin.js","names":["useCallback","useEffect","useState","useDispatch","nanoid","assertIsDashboardPluginProps","LayoutUtils","PanelEvent","updateDashboardData","useListener","Log","TextUtils","InputFilterEvent","DropdownFilterPanel","FilterSetManagerPanel","InputFilterPanel","useFilterChangedListener","useFilterColumnsChangedListener","useFilterTableChangedListener","log","module","FilterPlugin","props","id","localDashboardId","layout","registerComponent","dispatch","panelColumns","Map","panelFilters","panelTables","sendUpdate","columns","Array","from","values","flat","sort","a","b","aName","toLower","name","bName","aType","type","bType","reduce","array","column","length","push","filters","timestamp","tableMap","debug","handleColumnsChanged","sourceId","debug2","delete","set","concat","handleFiltersChanged","handleTableChanged","table","handlePanelUnmount","panel","panelId","getIdFromPanel","handleOpenDropdown","_ref","title","metadata","panelState","focusElement","DEFAULT_FOCUS_SELECTOR","createNewStack","dragEvent","config","component","COMPONENT","root","openComponent","handleOpenInput","_ref2","undefined","handleOpenFilterSetManager","_ref3","registerComponentsAndReturnCleanup","cleanups","forEach","cleanup","eventHub","OPEN_DROPDOWN","OPEN_INPUT","OPEN_FILTER_SET_MANAGER","UNMOUNT"],"sources":["../src/FilterPlugin.tsx"],"sourcesContent":["import { useCallback, useEffect, useState } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { nanoid } from 'nanoid';\nimport {\n assertIsDashboardPluginProps,\n type DashboardPluginComponentProps,\n LayoutUtils,\n type PanelComponent,\n PanelEvent,\n updateDashboardData,\n useListener,\n} from '@deephaven/dashboard';\nimport Log from '@deephaven/log';\nimport { TextUtils } from '@deephaven/utils';\nimport { type dh } from '@deephaven/jsapi-types';\nimport { InputFilterEvent } from './events';\nimport {\n DropdownFilterPanel,\n FilterSetManagerPanel,\n InputFilterPanel,\n} from './panels';\nimport {\n type FilterColumn,\n type FilterChangeEvent,\n type FilterColumnSourceId,\n useFilterChangedListener,\n useFilterColumnsChangedListener,\n useFilterTableChangedListener,\n} from './FilterEvents';\n\nconst log = Log.module('FilterPlugin');\n\nexport type FilterPluginProps = Partial<DashboardPluginComponentProps>;\n\nexport function FilterPlugin(props: FilterPluginProps): JSX.Element | null {\n assertIsDashboardPluginProps(props);\n const { id: localDashboardId, layout, registerComponent } = props;\n const dispatch = useDispatch();\n const [panelColumns] = useState(\n () => new Map<FilterColumnSourceId, FilterColumn[]>()\n );\n const [panelFilters] = useState(\n () => new Map<FilterColumnSourceId, FilterChangeEvent[]>()\n );\n const [panelTables] = useState(\n () => new Map<FilterColumnSourceId, dh.Table>()\n );\n\n const sendUpdate = useCallback(() => {\n const columns = Array.from(panelColumns.values())\n .flat()\n .sort((a, b) => {\n const aName = TextUtils.toLower(a.name);\n const bName = TextUtils.toLower(b.name);\n if (aName !== bName) {\n return aName > bName ? 1 : -1;\n }\n\n const aType = TextUtils.toLower(a.type);\n const bType = TextUtils.toLower(b.type);\n if (aType !== bType) {\n return aType > bType ? 1 : -1;\n }\n\n return 0;\n })\n .reduce((array, column) => {\n if (\n array.length === 0 ||\n TextUtils.toLower(array[array.length - 1].name) !==\n TextUtils.toLower(column.name) ||\n TextUtils.toLower(array[array.length - 1].type) !==\n TextUtils.toLower(column.type)\n ) {\n array.push(column);\n }\n\n return array;\n }, [] as FilterColumn[]);\n\n const filters = Array.from(panelFilters.values())\n .flat()\n .sort((a, b) => a.timestamp - b.timestamp);\n const tableMap = new Map(panelTables);\n\n log.debug('sendUpdate', { columns, filters, tableMap });\n dispatch(\n updateDashboardData(localDashboardId, { columns, filters, tableMap })\n );\n }, [dispatch, localDashboardId, panelColumns, panelFilters, panelTables]);\n\n /**\n * Handler for the COLUMNS_CHANGED event.\n * @param sourceId The id of the component that's emitting the filter change\n * @param columns The columns in this panel. Null to clear the columns.\n */\n const handleColumnsChanged = useCallback(\n (\n sourceId: FilterColumnSourceId,\n columns: readonly FilterColumn[] | null\n ) => {\n log.debug2('handleColumnsChanged', sourceId, columns);\n if (columns == null) {\n panelColumns.delete(sourceId);\n } else {\n panelColumns.set(sourceId, ([] as FilterColumn[]).concat(columns));\n }\n sendUpdate();\n },\n [panelColumns, sendUpdate]\n );\n\n /**\n * Handler for the FILTERS_CHANGED event.\n * @param sourceId The id of the component that's emitting the filter change\n * @param filters The input filters set by the panel\n */\n const handleFiltersChanged = useCallback(\n (\n sourceId: FilterColumnSourceId,\n filters: FilterChangeEvent | FilterChangeEvent[] | null\n ) => {\n log.debug2('handleFiltersChanged', sourceId, filters);\n if (filters == null) {\n panelFilters.delete(sourceId);\n } else {\n panelFilters.set(\n sourceId,\n ([] as FilterChangeEvent[]).concat(filters ?? [])\n );\n }\n sendUpdate();\n },\n [panelFilters, sendUpdate]\n );\n\n const handleTableChanged = useCallback(\n (sourceId: FilterColumnSourceId, table: dh.Table | null) => {\n log.debug2('handleTableChanged', sourceId, table);\n if (table == null) {\n panelTables.delete(sourceId);\n } else {\n panelTables.set(sourceId, table);\n }\n sendUpdate();\n },\n [panelTables, sendUpdate]\n );\n\n const handlePanelUnmount = useCallback(\n (panel: PanelComponent) => {\n log.debug2('handlePanelUnmount', panel);\n const panelId = LayoutUtils.getIdFromPanel(panel);\n if (panelId != null) {\n panelColumns.delete(panelId);\n panelTables.delete(panelId);\n panelFilters.delete(panelId);\n }\n sendUpdate();\n },\n [panelColumns, panelFilters, panelTables, sendUpdate]\n );\n\n const handleOpenDropdown = useCallback(\n ({\n title = 'DropdownFilter',\n metadata = {},\n panelState = null,\n id = nanoid(),\n focusElement = LayoutUtils.DEFAULT_FOCUS_SELECTOR,\n createNewStack = false,\n dragEvent = null,\n }) => {\n const config = {\n type: 'react-component' as const,\n component: DropdownFilterPanel.COMPONENT,\n props: { id, metadata, panelState, localDashboardId },\n title,\n id,\n };\n\n const { root } = layout;\n LayoutUtils.openComponent({\n root,\n config,\n focusElement,\n createNewStack,\n dragEvent,\n });\n },\n [layout, localDashboardId]\n );\n\n const handleOpenInput = useCallback(\n ({\n title = 'InputFilter',\n metadata = {},\n panelState = null,\n id = nanoid(),\n focusElement = LayoutUtils.DEFAULT_FOCUS_SELECTOR,\n createNewStack = false,\n dragEvent = undefined,\n }) => {\n const config = {\n type: 'react-component' as const,\n component: InputFilterPanel.COMPONENT,\n props: { id, metadata, panelState, localDashboardId },\n title,\n id,\n };\n\n const { root } = layout;\n LayoutUtils.openComponent({\n root,\n config,\n focusElement,\n createNewStack,\n dragEvent,\n });\n },\n [layout, localDashboardId]\n );\n\n const handleOpenFilterSetManager = useCallback(\n ({\n title = 'FilterSets',\n metadata = {},\n panelState = null,\n id = nanoid(),\n focusElement = LayoutUtils.DEFAULT_FOCUS_SELECTOR,\n createNewStack = false,\n dragEvent = null,\n }) => {\n const config = {\n type: 'react-component' as const,\n component: FilterSetManagerPanel.COMPONENT,\n props: { id, metadata, panelState, localDashboardId },\n title,\n id,\n };\n\n const { root } = layout;\n LayoutUtils.openComponent({\n root,\n config,\n focusElement,\n createNewStack,\n dragEvent,\n });\n },\n [layout, localDashboardId]\n );\n\n useEffect(\n function registerComponentsAndReturnCleanup() {\n const cleanups = [\n registerComponent(DropdownFilterPanel.COMPONENT, DropdownFilterPanel),\n registerComponent(InputFilterPanel.COMPONENT, InputFilterPanel),\n registerComponent(\n FilterSetManagerPanel.COMPONENT,\n FilterSetManagerPanel\n ),\n ];\n\n return () => {\n cleanups.forEach(cleanup => cleanup());\n };\n },\n [registerComponent]\n );\n\n useFilterColumnsChangedListener(layout.eventHub, handleColumnsChanged);\n useFilterChangedListener(layout.eventHub, handleFiltersChanged);\n useFilterTableChangedListener(layout.eventHub, handleTableChanged);\n useListener(\n layout.eventHub,\n InputFilterEvent.OPEN_DROPDOWN,\n handleOpenDropdown\n );\n useListener(layout.eventHub, InputFilterEvent.OPEN_INPUT, handleOpenInput);\n useListener(\n layout.eventHub,\n InputFilterEvent.OPEN_FILTER_SET_MANAGER,\n handleOpenFilterSetManager\n );\n useListener(layout.eventHub, PanelEvent.UNMOUNT, handlePanelUnmount);\n\n return null;\n}\n\nexport default FilterPlugin;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"FilterPlugin.js","names":["useCallback","useEffect","useState","useDispatch","nanoid","assertIsDashboardPluginProps","LayoutUtils","PanelEvent","updateDashboardData","useListener","Log","TextUtils","InputFilterEvent","DropdownFilterPanel","FilterSetManagerPanel","InputFilterPanel","useFilterChangedListener","useFilterColumnsChangedListener","useFilterTableChangedListener","log","module","FilterPlugin","props","id","localDashboardId","layout","registerComponent","dispatch","panelColumns","Map","panelFilters","panelTables","sendUpdate","columns","Array","from","values","flat","sort","a","b","aName","toLower","name","bName","aType","type","bType","reduce","array","column","length","push","filters","timestamp","tableMap","debug","handleColumnsChanged","sourceId","debug2","delete","set","concat","handleFiltersChanged","handleTableChanged","table","handlePanelUnmount","panel","panelId","getIdFromPanel","handleOpenDropdown","_ref","title","metadata","panelState","focusElement","DEFAULT_FOCUS_SELECTOR","createNewStack","dragEvent","undefined","config","component","COMPONENT","root","openComponent","handleOpenInput","_ref2","handleOpenFilterSetManager","_ref3","registerComponentsAndReturnCleanup","cleanups","forEach","cleanup","eventHub","OPEN_DROPDOWN","OPEN_INPUT","OPEN_FILTER_SET_MANAGER","UNMOUNT"],"sources":["../src/FilterPlugin.tsx"],"sourcesContent":["import { useCallback, useEffect, useState } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { nanoid } from 'nanoid';\nimport {\n assertIsDashboardPluginProps,\n type DashboardPluginComponentProps,\n LayoutUtils,\n type PanelComponent,\n PanelEvent,\n updateDashboardData,\n useListener,\n} from '@deephaven/dashboard';\nimport Log from '@deephaven/log';\nimport { TextUtils } from '@deephaven/utils';\nimport { type dh } from '@deephaven/jsapi-types';\nimport { InputFilterEvent } from './events';\nimport {\n DropdownFilterPanel,\n FilterSetManagerPanel,\n InputFilterPanel,\n} from './panels';\nimport {\n type FilterColumn,\n type FilterChangeEvent,\n type FilterColumnSourceId,\n useFilterChangedListener,\n useFilterColumnsChangedListener,\n useFilterTableChangedListener,\n} from './FilterEvents';\n\nconst log = Log.module('FilterPlugin');\n\nexport type FilterPluginProps = Partial<DashboardPluginComponentProps>;\n\nexport function FilterPlugin(props: FilterPluginProps): JSX.Element | null {\n assertIsDashboardPluginProps(props);\n const { id: localDashboardId, layout, registerComponent } = props;\n const dispatch = useDispatch();\n const [panelColumns] = useState(\n () => new Map<FilterColumnSourceId, FilterColumn[]>()\n );\n const [panelFilters] = useState(\n () => new Map<FilterColumnSourceId, FilterChangeEvent[]>()\n );\n const [panelTables] = useState(\n () => new Map<FilterColumnSourceId, dh.Table>()\n );\n\n const sendUpdate = useCallback(() => {\n const columns = Array.from(panelColumns.values())\n .flat()\n .sort((a, b) => {\n const aName = TextUtils.toLower(a.name);\n const bName = TextUtils.toLower(b.name);\n if (aName !== bName) {\n return aName > bName ? 1 : -1;\n }\n\n const aType = TextUtils.toLower(a.type);\n const bType = TextUtils.toLower(b.type);\n if (aType !== bType) {\n return aType > bType ? 1 : -1;\n }\n\n return 0;\n })\n .reduce((array, column) => {\n if (\n array.length === 0 ||\n TextUtils.toLower(array[array.length - 1].name) !==\n TextUtils.toLower(column.name) ||\n TextUtils.toLower(array[array.length - 1].type) !==\n TextUtils.toLower(column.type)\n ) {\n array.push(column);\n }\n\n return array;\n }, [] as FilterColumn[]);\n\n const filters = Array.from(panelFilters.values())\n .flat()\n .sort((a, b) => a.timestamp - b.timestamp);\n const tableMap = new Map(panelTables);\n\n log.debug('sendUpdate', { columns, filters, tableMap });\n dispatch(\n updateDashboardData(localDashboardId, { columns, filters, tableMap })\n );\n }, [dispatch, localDashboardId, panelColumns, panelFilters, panelTables]);\n\n /**\n * Handler for the COLUMNS_CHANGED event.\n * @param sourceId The id of the component that's emitting the filter change\n * @param columns The columns in this panel. Null to clear the columns.\n */\n const handleColumnsChanged = useCallback(\n (\n sourceId: FilterColumnSourceId,\n columns: readonly FilterColumn[] | null\n ) => {\n log.debug2('handleColumnsChanged', sourceId, columns);\n if (columns == null) {\n panelColumns.delete(sourceId);\n } else {\n panelColumns.set(sourceId, ([] as FilterColumn[]).concat(columns));\n }\n sendUpdate();\n },\n [panelColumns, sendUpdate]\n );\n\n /**\n * Handler for the FILTERS_CHANGED event.\n * @param sourceId The id of the component that's emitting the filter change\n * @param filters The input filters set by the panel\n */\n const handleFiltersChanged = useCallback(\n (\n sourceId: FilterColumnSourceId,\n filters: FilterChangeEvent | FilterChangeEvent[] | null\n ) => {\n log.debug2('handleFiltersChanged', sourceId, filters);\n if (filters == null) {\n panelFilters.delete(sourceId);\n } else {\n panelFilters.set(\n sourceId,\n ([] as FilterChangeEvent[]).concat(filters ?? [])\n );\n }\n sendUpdate();\n },\n [panelFilters, sendUpdate]\n );\n\n const handleTableChanged = useCallback(\n (sourceId: FilterColumnSourceId, table: dh.Table | null) => {\n log.debug2('handleTableChanged', sourceId, table);\n if (table == null) {\n panelTables.delete(sourceId);\n } else {\n panelTables.set(sourceId, table);\n }\n sendUpdate();\n },\n [panelTables, sendUpdate]\n );\n\n const handlePanelUnmount = useCallback(\n (panel: PanelComponent) => {\n log.debug2('handlePanelUnmount', panel);\n const panelId = LayoutUtils.getIdFromPanel(panel);\n if (panelId != null) {\n panelColumns.delete(panelId);\n panelTables.delete(panelId);\n panelFilters.delete(panelId);\n }\n sendUpdate();\n },\n [panelColumns, panelFilters, panelTables, sendUpdate]\n );\n\n const handleOpenDropdown = useCallback(\n ({\n title = 'DropdownFilter',\n metadata = {},\n panelState = null,\n id = nanoid(),\n focusElement = LayoutUtils.DEFAULT_FOCUS_SELECTOR,\n createNewStack = false,\n dragEvent = undefined,\n }) => {\n const config = {\n type: 'react-component' as const,\n component: DropdownFilterPanel.COMPONENT,\n props: { id, metadata, panelState, localDashboardId },\n title,\n id,\n };\n\n const { root } = layout;\n LayoutUtils.openComponent({\n root,\n config,\n focusElement,\n createNewStack,\n dragEvent,\n });\n },\n [layout, localDashboardId]\n );\n\n const handleOpenInput = useCallback(\n ({\n title = 'InputFilter',\n metadata = {},\n panelState = null,\n id = nanoid(),\n focusElement = LayoutUtils.DEFAULT_FOCUS_SELECTOR,\n createNewStack = false,\n dragEvent = undefined,\n }) => {\n const config = {\n type: 'react-component' as const,\n component: InputFilterPanel.COMPONENT,\n props: { id, metadata, panelState, localDashboardId },\n title,\n id,\n };\n\n const { root } = layout;\n LayoutUtils.openComponent({\n root,\n config,\n focusElement,\n createNewStack,\n dragEvent,\n });\n },\n [layout, localDashboardId]\n );\n\n const handleOpenFilterSetManager = useCallback(\n ({\n title = 'FilterSets',\n metadata = {},\n panelState = null,\n id = nanoid(),\n focusElement = LayoutUtils.DEFAULT_FOCUS_SELECTOR,\n createNewStack = false,\n dragEvent = undefined,\n }) => {\n const config = {\n type: 'react-component' as const,\n component: FilterSetManagerPanel.COMPONENT,\n props: { id, metadata, panelState, localDashboardId },\n title,\n id,\n };\n\n const { root } = layout;\n LayoutUtils.openComponent({\n root,\n config,\n focusElement,\n createNewStack,\n dragEvent,\n });\n },\n [layout, localDashboardId]\n );\n\n useEffect(\n function registerComponentsAndReturnCleanup() {\n const cleanups = [\n registerComponent(DropdownFilterPanel.COMPONENT, DropdownFilterPanel),\n registerComponent(InputFilterPanel.COMPONENT, InputFilterPanel),\n registerComponent(\n FilterSetManagerPanel.COMPONENT,\n FilterSetManagerPanel\n ),\n ];\n\n return () => {\n cleanups.forEach(cleanup => cleanup());\n };\n },\n [registerComponent]\n );\n\n useFilterColumnsChangedListener(layout.eventHub, handleColumnsChanged);\n useFilterChangedListener(layout.eventHub, handleFiltersChanged);\n useFilterTableChangedListener(layout.eventHub, handleTableChanged);\n useListener(\n layout.eventHub,\n InputFilterEvent.OPEN_DROPDOWN,\n handleOpenDropdown\n );\n useListener(layout.eventHub, InputFilterEvent.OPEN_INPUT, handleOpenInput);\n useListener(\n layout.eventHub,\n InputFilterEvent.OPEN_FILTER_SET_MANAGER,\n handleOpenFilterSetManager\n );\n useListener(layout.eventHub, PanelEvent.UNMOUNT, handlePanelUnmount);\n\n return null;\n}\n\nexport default FilterPlugin;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FilterPluginConfig.js","names":["PluginType","FilterPlugin","FilterPluginConfig","name","type","DASHBOARD_PLUGIN","component"],"sources":["../src/FilterPluginConfig.ts"],"sourcesContent":["import { PluginType, type DashboardPlugin } from '@deephaven/plugin';\nimport FilterPlugin from './FilterPlugin';\n\nconst FilterPluginConfig: DashboardPlugin = {\n name: 'FilterPlugin',\n type: PluginType.DASHBOARD_PLUGIN,\n component: FilterPlugin,\n};\n\nexport default FilterPluginConfig;\n"],"mappings":"AAAA,SAASA,UAAU,QAA8B,mBAAmB;AAAC,OAC9DC,YAAY;AAEnB,IAAMC,kBAAmC,GAAG;EAC1CC,IAAI,EAAE,cAAc;EACpBC,IAAI,EAAEJ,UAAU,CAACK,gBAAgB;EACjCC,SAAS,EAAEL;AACb,CAAC;AAED,eAAeC,kBAAkB"}
|
|
1
|
+
{"version":3,"file":"FilterPluginConfig.js","names":["PluginType","FilterPlugin","FilterPluginConfig","name","type","DASHBOARD_PLUGIN","component"],"sources":["../src/FilterPluginConfig.ts"],"sourcesContent":["import { PluginType, type DashboardPlugin } from '@deephaven/plugin';\nimport FilterPlugin from './FilterPlugin';\n\nconst FilterPluginConfig: DashboardPlugin = {\n name: 'FilterPlugin',\n type: PluginType.DASHBOARD_PLUGIN,\n component: FilterPlugin,\n};\n\nexport default FilterPluginConfig;\n"],"mappings":"AAAA,SAASA,UAAU,QAA8B,mBAAmB;AAAC,OAC9DC,YAAY;AAEnB,IAAMC,kBAAmC,GAAG;EAC1CC,IAAI,EAAE,cAAc;EACpBC,IAAI,EAAEJ,UAAU,CAACK,gBAAgB;EACjCC,SAAS,EAAEL;AACb,CAAC;AAED,eAAeC,kBAAkB","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GridPanelPlugin.js","names":["forwardRef","useHydrateGrid","ConnectedIrisGridPanel","jsx","_jsx","GridPanelPlugin","props","ref","localDashboardId","fetch","metadata","hydratedProps","_objectSpread","displayName"],"sources":["../src/GridPanelPlugin.tsx"],"sourcesContent":["import { forwardRef } from 'react';\nimport { type WidgetPanelProps } from '@deephaven/plugin';\nimport { type dh } from '@deephaven/jsapi-types';\nimport useHydrateGrid from './useHydrateGrid';\nimport ConnectedIrisGridPanel, {\n type IrisGridPanel,\n} from './panels/IrisGridPanel';\n\nexport const GridPanelPlugin = forwardRef(\n (props: WidgetPanelProps<dh.Table>, ref: React.Ref<IrisGridPanel>) => {\n const { localDashboardId, fetch, metadata } = props;\n const hydratedProps = useHydrateGrid(fetch, localDashboardId, metadata);\n\n // eslint-disable-next-line react/jsx-props-no-spreading\n return <ConnectedIrisGridPanel ref={ref} {...props} {...hydratedProps} />;\n }\n);\n\nGridPanelPlugin.displayName = 'GridPanelPlugin';\n\nexport default GridPanelPlugin;\n"],"mappings":";;;;;AAAA,SAASA,UAAU,QAAQ,OAAO;AAAC,OAG5BC,cAAc;AAAA,OACdC,sBAAsB;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAI7B,OAAO,IAAMC,eAAe,gBAAGL,UAAU,CACvC,CAACM,KAAiC,EAAEC,GAA6B,KAAK;EACpE,IAAM;IAAEC,gBAAgB;IAAEC,KAAK;IAAEC;EAAS,CAAC,GAAGJ,KAAK;EACnD,IAAMK,aAAa,GAAGV,cAAc,CAACQ,KAAK,EAAED,gBAAgB,EAAEE,QAAQ,CAAC;;EAEvE;EACA,oBAAON,IAAA,CAACF,sBAAsB,EAAAU,aAAA,CAAAA,aAAA;IAACL,GAAG,EAAEA;EAAI,GAAKD,KAAK,GAAMK,aAAa,CAAG,CAAC;AAC3E,CACF,CAAC;AAEDN,eAAe,CAACQ,WAAW,GAAG,iBAAiB;AAE/C,eAAeR,eAAe"}
|
|
1
|
+
{"version":3,"file":"GridPanelPlugin.js","names":["forwardRef","useHydrateGrid","ConnectedIrisGridPanel","jsx","_jsx","GridPanelPlugin","props","ref","localDashboardId","fetch","metadata","hydratedProps","_objectSpread","displayName"],"sources":["../src/GridPanelPlugin.tsx"],"sourcesContent":["import { forwardRef } from 'react';\nimport { type WidgetPanelProps } from '@deephaven/plugin';\nimport { type dh } from '@deephaven/jsapi-types';\nimport useHydrateGrid from './useHydrateGrid';\nimport ConnectedIrisGridPanel, {\n type IrisGridPanel,\n} from './panels/IrisGridPanel';\n\nexport const GridPanelPlugin = forwardRef(\n (props: WidgetPanelProps<dh.Table>, ref: React.Ref<IrisGridPanel>) => {\n const { localDashboardId, fetch, metadata } = props;\n const hydratedProps = useHydrateGrid(fetch, localDashboardId, metadata);\n\n // eslint-disable-next-line react/jsx-props-no-spreading\n return <ConnectedIrisGridPanel ref={ref} {...props} {...hydratedProps} />;\n }\n);\n\nGridPanelPlugin.displayName = 'GridPanelPlugin';\n\nexport default GridPanelPlugin;\n"],"mappings":";;;;;AAAA,SAASA,UAAU,QAAQ,OAAO;AAAC,OAG5BC,cAAc;AAAA,OACdC,sBAAsB;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAI7B,OAAO,IAAMC,eAAe,gBAAGL,UAAU,CACvC,CAACM,KAAiC,EAAEC,GAA6B,KAAK;EACpE,IAAM;IAAEC,gBAAgB;IAAEC,KAAK;IAAEC;EAAS,CAAC,GAAGJ,KAAK;EACnD,IAAMK,aAAa,GAAGV,cAAc,CAACQ,KAAK,EAAED,gBAAgB,EAAEE,QAAQ,CAAC;;EAEvE;EACA,oBAAON,IAAA,CAACF,sBAAsB,EAAAU,aAAA,CAAAA,aAAA;IAACL,GAAG,EAAEA;EAAI,GAAKD,KAAK,GAAMK,aAAa,CAAG,CAAC;AAC3E,CACF,CAAC;AAEDN,eAAe,CAACQ,WAAW,GAAG,iBAAiB;AAE/C,eAAeR,eAAe","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GridPluginConfig.js","names":["PluginType","dhTable","GridWidgetPlugin","GridPanelPlugin","GridPluginConfig","name","title","type","WIDGET_PLUGIN","component","panelComponent","supportedTypes","icon"],"sources":["../src/GridPluginConfig.ts"],"sourcesContent":["import { PluginType, type WidgetPlugin } from '@deephaven/plugin';\nimport { dhTable } from '@deephaven/icons';\nimport { type dh } from '@deephaven/jsapi-types';\nimport { GridWidgetPlugin } from './GridWidgetPlugin';\nimport { GridPanelPlugin } from './GridPanelPlugin';\n\nconst GridPluginConfig: WidgetPlugin<dh.Table> = {\n name: 'IrisGridPanel',\n title: 'Table',\n type: PluginType.WIDGET_PLUGIN,\n component: GridWidgetPlugin,\n panelComponent: GridPanelPlugin,\n supportedTypes: [\n 'Table',\n 'TreeTable',\n 'HierarchicalTable',\n 'PartitionedTable',\n ],\n icon: dhTable,\n};\n\nexport default GridPluginConfig;\n"],"mappings":"AAAA,SAASA,UAAU,QAA2B,mBAAmB;AACjE,SAASC,OAAO,QAAQ,kBAAkB;AAAC,SAElCC,gBAAgB;AAAA,SAChBC,eAAe;AAExB,IAAMC,gBAAwC,GAAG;EAC/CC,IAAI,EAAE,eAAe;EACrBC,KAAK,EAAE,OAAO;EACdC,IAAI,EAAEP,UAAU,CAACQ,aAAa;EAC9BC,SAAS,EAAEP,gBAAgB;EAC3BQ,cAAc,EAAEP,eAAe;EAC/BQ,cAAc,EAAE,CACd,OAAO,EACP,WAAW,EACX,mBAAmB,EACnB,kBAAkB,CACnB;EACDC,IAAI,EAAEX;AACR,CAAC;AAED,eAAeG,gBAAgB"}
|
|
1
|
+
{"version":3,"file":"GridPluginConfig.js","names":["PluginType","dhTable","GridWidgetPlugin","GridPanelPlugin","GridPluginConfig","name","title","type","WIDGET_PLUGIN","component","panelComponent","supportedTypes","icon"],"sources":["../src/GridPluginConfig.ts"],"sourcesContent":["import { PluginType, type WidgetPlugin } from '@deephaven/plugin';\nimport { dhTable } from '@deephaven/icons';\nimport { type dh } from '@deephaven/jsapi-types';\nimport { GridWidgetPlugin } from './GridWidgetPlugin';\nimport { GridPanelPlugin } from './GridPanelPlugin';\n\nconst GridPluginConfig: WidgetPlugin<dh.Table> = {\n name: 'IrisGridPanel',\n title: 'Table',\n type: PluginType.WIDGET_PLUGIN,\n component: GridWidgetPlugin,\n panelComponent: GridPanelPlugin,\n supportedTypes: [\n 'Table',\n 'TreeTable',\n 'HierarchicalTable',\n 'PartitionedTable',\n ],\n icon: dhTable,\n};\n\nexport default GridPluginConfig;\n"],"mappings":"AAAA,SAASA,UAAU,QAA2B,mBAAmB;AACjE,SAASC,OAAO,QAAQ,kBAAkB;AAAC,SAElCC,gBAAgB;AAAA,SAChBC,eAAe;AAExB,IAAMC,gBAAwC,GAAG;EAC/CC,IAAI,EAAE,eAAe;EACrBC,KAAK,EAAE,OAAO;EACdC,IAAI,EAAEP,UAAU,CAACQ,aAAa;EAC9BC,SAAS,EAAEP,gBAAgB;EAC3BQ,cAAc,EAAEP,eAAe;EAC/BQ,cAAc,EAAE,CACd,OAAO,EACP,WAAW,EACX,mBAAmB,EACnB,kBAAkB,CACnB;EACDC,IAAI,EAAEX;AACR,CAAC;AAED,eAAeG,gBAAgB","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GridWidgetPlugin.js","names":["useCallback","useMemo","useRef","useState","usePersistentState","IrisGrid","IrisGridCacheUtils","IrisGridUtils","isIrisGridTableModelTemplate","useSelector","getSettings","LoadingOverlay","useLayoutManager","useListener","assertNotNull","getErrorMessage","useApi","useIrisGridModel","useDashboardColumnFilters","InputFilterEvent","useGridLinker","useTablePlugin","jsx","_jsx","GridWidgetPlugin","_ref","_model$columns","fetch","settings","eventHub","fetchResult","model","status","undefined","dh","irisGridUtils","state","setState","version","type","initialState","hydratedState","current","_objectSpread","hydrateIrisGridState","hydrateGridState","dehydrateIrisGridState","makeMemoizedCombinedGridStateDehydrator","handleIrisGridChange","irisGridState","gridState","newState","inputFilters","columns","table","irisGridRef","_useGridLinker","alwaysFetchColumns","linkerAlwaysFetchColumns","linkerProps","_objectWithoutProperties","_excluded","handleClearAllFilters","clearAllFilters","CLEAR_ALL_FILTERS","selection","setSelection","Plugin","customFilters","filterFetchColumns","onContextMenu","selectedRanges","columnSet","Set","isLoading","errorMessage","error","ref","onStateChange","onSelectionChanged","children"],"sources":["../src/GridWidgetPlugin.tsx"],"sourcesContent":["import { useCallback, useMemo, useRef, useState } from 'react';\nimport {\n type WidgetComponentProps,\n usePersistentState,\n} from '@deephaven/plugin';\nimport { type dh as DhType } from '@deephaven/jsapi-types';\nimport {\n type DehydratedGridState,\n type DehydratedIrisGridState,\n IrisGrid,\n IrisGridCacheUtils,\n type IrisGridState,\n type IrisGridType,\n IrisGridUtils,\n isIrisGridTableModelTemplate,\n} from '@deephaven/iris-grid';\nimport { useSelector } from 'react-redux';\nimport { getSettings, type RootState } from '@deephaven/redux';\nimport { LoadingOverlay } from '@deephaven/components';\nimport { useLayoutManager, useListener } from '@deephaven/dashboard';\nimport { assertNotNull, getErrorMessage } from '@deephaven/utils';\nimport { useApi } from '@deephaven/jsapi-bootstrap';\nimport { type GridRange, type GridState } from '@deephaven/grid';\nimport { useIrisGridModel } from './useIrisGridModel';\nimport useDashboardColumnFilters from './useDashboardColumnFilters';\nimport { InputFilterEvent } from './events';\nimport useGridLinker from './useGridLinker';\nimport { useTablePlugin } from './useTablePlugin';\n\nexport function GridWidgetPlugin({\n fetch,\n}: WidgetComponentProps<DhType.Table>): JSX.Element | null {\n const settings = useSelector(getSettings<RootState>);\n const { eventHub } = useLayoutManager();\n\n const fetchResult = useIrisGridModel(fetch);\n const model =\n fetchResult.status === 'success' ? fetchResult.model : undefined;\n\n const dh = useApi();\n const irisGridUtils = useMemo(() => new IrisGridUtils(dh), [dh]);\n\n const [state, setState] = usePersistentState<\n (DehydratedIrisGridState & DehydratedGridState) | undefined\n >(undefined, {\n version: 1,\n type: 'GridWidgetPlugin',\n });\n const initialState = useRef(state);\n const hydratedState = useMemo(() => {\n if (\n fetchResult.status !== 'success' ||\n initialState.current === undefined\n ) {\n return;\n }\n return {\n ...irisGridUtils.hydrateIrisGridState(\n fetchResult.model,\n initialState.current\n ),\n ...IrisGridUtils.hydrateGridState(\n fetchResult.model,\n initialState.current\n ),\n };\n }, [fetchResult, irisGridUtils]);\n\n const dehydrateIrisGridState = useMemo(\n () => IrisGridCacheUtils.makeMemoizedCombinedGridStateDehydrator(),\n []\n );\n\n const handleIrisGridChange = useCallback(\n (irisGridState: IrisGridState, gridState: GridState) => {\n if (\n fetchResult.status !== 'success' ||\n irisGridState == null ||\n gridState == null\n ) {\n return;\n }\n\n const newState = dehydrateIrisGridState(\n fetchResult.model,\n irisGridState,\n gridState\n );\n\n setState(newState);\n },\n [fetchResult, setState, dehydrateIrisGridState]\n );\n\n const inputFilters = useDashboardColumnFilters(\n model?.columns ?? null,\n model != null && isIrisGridTableModelTemplate(model)\n ? model.table\n : undefined\n );\n\n const irisGridRef = useRef<IrisGridType | null>(null);\n\n const { alwaysFetchColumns: linkerAlwaysFetchColumns, ...linkerProps } =\n useGridLinker(\n fetchResult.status === 'success' ? fetchResult.model : null,\n irisGridRef.current\n );\n\n const handleClearAllFilters = useCallback(() => {\n if (irisGridRef.current == null) {\n return;\n }\n irisGridRef.current.clearAllFilters();\n }, []);\n\n useListener(\n eventHub,\n InputFilterEvent.CLEAR_ALL_FILTERS,\n handleClearAllFilters\n );\n\n const [selection, setSelection] = useState<readonly GridRange[]>([]);\n\n const {\n Plugin,\n customFilters,\n alwaysFetchColumns: filterFetchColumns,\n onContextMenu,\n } = useTablePlugin({\n model,\n irisGridRef,\n irisGridUtils,\n selectedRanges: selection,\n });\n\n const alwaysFetchColumns = useMemo(() => {\n const columnSet = new Set([\n ...linkerAlwaysFetchColumns,\n ...filterFetchColumns,\n ]);\n return [...columnSet];\n }, [linkerAlwaysFetchColumns, filterFetchColumns]);\n\n if (fetchResult.status === 'loading') {\n return (\n <LoadingOverlay isLoading data-testid=\"grid-widget-plugin-loading\" />\n );\n }\n\n if (fetchResult.status === 'error') {\n return (\n <LoadingOverlay\n data-testid=\"grid-widget-plugin-loading-error\"\n errorMessage={getErrorMessage(fetchResult.error)}\n isLoading={false}\n />\n );\n }\n\n assertNotNull(model, 'Model should be defined when fetch is successful');\n\n return (\n <IrisGrid\n ref={irisGridRef}\n model={model}\n settings={settings}\n onStateChange={handleIrisGridChange}\n onSelectionChanged={setSelection}\n onContextMenu={onContextMenu}\n inputFilters={inputFilters}\n customFilters={customFilters}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...linkerProps}\n alwaysFetchColumns={alwaysFetchColumns}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...hydratedState}\n >\n {Plugin}\n </IrisGrid>\n );\n}\n\nexport default GridWidgetPlugin;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"GridWidgetPlugin.js","names":["useCallback","useMemo","useRef","useState","usePersistentState","IrisGrid","IrisGridCacheUtils","IrisGridUtils","isIrisGridTableModelTemplate","useSelector","getSettings","LoadingOverlay","useLayoutManager","useListener","assertNotNull","getErrorMessage","useApi","useIrisGridModel","useDashboardColumnFilters","InputFilterEvent","useGridLinker","useTablePlugin","jsx","_jsx","GridWidgetPlugin","_ref","_model$columns","fetch","settings","eventHub","fetchResult","model","status","undefined","dh","irisGridUtils","state","setState","version","type","initialState","hydratedState","current","_objectSpread","hydrateIrisGridState","hydrateGridState","dehydrateIrisGridState","makeMemoizedCombinedGridStateDehydrator","handleIrisGridChange","irisGridState","gridState","newState","inputFilters","columns","table","irisGridRef","_useGridLinker","alwaysFetchColumns","linkerAlwaysFetchColumns","linkerProps","_objectWithoutProperties","_excluded","handleClearAllFilters","clearAllFilters","CLEAR_ALL_FILTERS","selection","setSelection","Plugin","customFilters","filterFetchColumns","onContextMenu","selectedRanges","columnSet","Set","isLoading","errorMessage","error","ref","onStateChange","onSelectionChanged","children"],"sources":["../src/GridWidgetPlugin.tsx"],"sourcesContent":["import { useCallback, useMemo, useRef, useState } from 'react';\nimport {\n type WidgetComponentProps,\n usePersistentState,\n} from '@deephaven/plugin';\nimport { type dh as DhType } from '@deephaven/jsapi-types';\nimport {\n type DehydratedGridState,\n type DehydratedIrisGridState,\n IrisGrid,\n IrisGridCacheUtils,\n type IrisGridState,\n type IrisGridType,\n IrisGridUtils,\n isIrisGridTableModelTemplate,\n} from '@deephaven/iris-grid';\nimport { useSelector } from 'react-redux';\nimport { getSettings, type RootState } from '@deephaven/redux';\nimport { LoadingOverlay } from '@deephaven/components';\nimport { useLayoutManager, useListener } from '@deephaven/dashboard';\nimport { assertNotNull, getErrorMessage } from '@deephaven/utils';\nimport { useApi } from '@deephaven/jsapi-bootstrap';\nimport { type GridRange, type GridState } from '@deephaven/grid';\nimport { useIrisGridModel } from './useIrisGridModel';\nimport useDashboardColumnFilters from './useDashboardColumnFilters';\nimport { InputFilterEvent } from './events';\nimport useGridLinker from './useGridLinker';\nimport { useTablePlugin } from './useTablePlugin';\n\nexport function GridWidgetPlugin({\n fetch,\n}: WidgetComponentProps<DhType.Table>): JSX.Element | null {\n const settings = useSelector(getSettings<RootState>);\n const { eventHub } = useLayoutManager();\n\n const fetchResult = useIrisGridModel(fetch);\n const model =\n fetchResult.status === 'success' ? fetchResult.model : undefined;\n\n const dh = useApi();\n const irisGridUtils = useMemo(() => new IrisGridUtils(dh), [dh]);\n\n const [state, setState] = usePersistentState<\n (DehydratedIrisGridState & DehydratedGridState) | undefined\n >(undefined, {\n version: 1,\n type: 'GridWidgetPlugin',\n });\n const initialState = useRef(state);\n const hydratedState = useMemo(() => {\n if (\n fetchResult.status !== 'success' ||\n initialState.current === undefined\n ) {\n return;\n }\n return {\n ...irisGridUtils.hydrateIrisGridState(\n fetchResult.model,\n initialState.current\n ),\n ...IrisGridUtils.hydrateGridState(\n fetchResult.model,\n initialState.current\n ),\n };\n }, [fetchResult, irisGridUtils]);\n\n const dehydrateIrisGridState = useMemo(\n () => IrisGridCacheUtils.makeMemoizedCombinedGridStateDehydrator(),\n []\n );\n\n const handleIrisGridChange = useCallback(\n (irisGridState: IrisGridState, gridState: GridState) => {\n if (\n fetchResult.status !== 'success' ||\n irisGridState == null ||\n gridState == null\n ) {\n return;\n }\n\n const newState = dehydrateIrisGridState(\n fetchResult.model,\n irisGridState,\n gridState\n );\n\n setState(newState);\n },\n [fetchResult, setState, dehydrateIrisGridState]\n );\n\n const inputFilters = useDashboardColumnFilters(\n model?.columns ?? null,\n model != null && isIrisGridTableModelTemplate(model)\n ? model.table\n : undefined\n );\n\n const irisGridRef = useRef<IrisGridType | null>(null);\n\n const { alwaysFetchColumns: linkerAlwaysFetchColumns, ...linkerProps } =\n useGridLinker(\n fetchResult.status === 'success' ? fetchResult.model : null,\n irisGridRef.current\n );\n\n const handleClearAllFilters = useCallback(() => {\n if (irisGridRef.current == null) {\n return;\n }\n irisGridRef.current.clearAllFilters();\n }, []);\n\n useListener(\n eventHub,\n InputFilterEvent.CLEAR_ALL_FILTERS,\n handleClearAllFilters\n );\n\n const [selection, setSelection] = useState<readonly GridRange[]>([]);\n\n const {\n Plugin,\n customFilters,\n alwaysFetchColumns: filterFetchColumns,\n onContextMenu,\n } = useTablePlugin({\n model,\n irisGridRef,\n irisGridUtils,\n selectedRanges: selection,\n });\n\n const alwaysFetchColumns = useMemo(() => {\n const columnSet = new Set([\n ...linkerAlwaysFetchColumns,\n ...filterFetchColumns,\n ]);\n return [...columnSet];\n }, [linkerAlwaysFetchColumns, filterFetchColumns]);\n\n if (fetchResult.status === 'loading') {\n return (\n <LoadingOverlay isLoading data-testid=\"grid-widget-plugin-loading\" />\n );\n }\n\n if (fetchResult.status === 'error') {\n return (\n <LoadingOverlay\n data-testid=\"grid-widget-plugin-loading-error\"\n errorMessage={getErrorMessage(fetchResult.error)}\n isLoading={false}\n />\n );\n }\n\n assertNotNull(model, 'Model should be defined when fetch is successful');\n\n return (\n <IrisGrid\n ref={irisGridRef}\n model={model}\n settings={settings}\n onStateChange={handleIrisGridChange}\n onSelectionChanged={setSelection}\n onContextMenu={onContextMenu}\n inputFilters={inputFilters}\n customFilters={customFilters}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...linkerProps}\n alwaysFetchColumns={alwaysFetchColumns}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...hydratedState}\n >\n {Plugin}\n </IrisGrid>\n );\n}\n\nexport default GridWidgetPlugin;\n"],"mappings":"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","ignoreList":[]}
|
package/dist/LinkerPlugin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LinkerPlugin.js","names":["React","assertIsDashboardPluginProps","Linker","jsx","_jsx","LinkerPlugin","props","id","layout","panelManager","localDashboardId"],"sources":["../src/LinkerPlugin.tsx"],"sourcesContent":["import React from 'react';\nimport {\n assertIsDashboardPluginProps,\n type DashboardPluginComponentProps,\n} from '@deephaven/dashboard';\nimport Linker from './linker/Linker';\n\nexport type LinkerPluginProps = Partial<DashboardPluginComponentProps>;\n\nexport function LinkerPlugin(props: LinkerPluginProps): JSX.Element {\n assertIsDashboardPluginProps(props);\n const { id, layout, panelManager } = props;\n return (\n <Linker layout={layout} localDashboardId={id} panelManager={panelManager} />\n );\n}\n\nexport default LinkerPlugin;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SACEC,4BAA4B,QAEvB,sBAAsB;AAAC,OACvBC,MAAM;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAIb,OAAO,SAASC,YAAYA,CAACC,KAAwB,EAAe;EAClEL,4BAA4B,CAACK,KAAK,CAAC;EACnC,IAAM;IAAEC,EAAE;IAAEC,MAAM;IAAEC;EAAa,CAAC,GAAGH,KAAK;EAC1C,oBACEF,IAAA,CAACF,MAAM;IAACM,MAAM,EAAEA,MAAO;IAACE,gBAAgB,EAAEH,EAAG;IAACE,YAAY,EAAEA;EAAa,CAAE,CAAC;AAEhF;AAEA,eAAeJ,YAAY"}
|
|
1
|
+
{"version":3,"file":"LinkerPlugin.js","names":["React","assertIsDashboardPluginProps","Linker","jsx","_jsx","LinkerPlugin","props","id","layout","panelManager","localDashboardId"],"sources":["../src/LinkerPlugin.tsx"],"sourcesContent":["import React from 'react';\nimport {\n assertIsDashboardPluginProps,\n type DashboardPluginComponentProps,\n} from '@deephaven/dashboard';\nimport Linker from './linker/Linker';\n\nexport type LinkerPluginProps = Partial<DashboardPluginComponentProps>;\n\nexport function LinkerPlugin(props: LinkerPluginProps): JSX.Element {\n assertIsDashboardPluginProps(props);\n const { id, layout, panelManager } = props;\n return (\n <Linker layout={layout} localDashboardId={id} panelManager={panelManager} />\n );\n}\n\nexport default LinkerPlugin;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SACEC,4BAA4B,QAEvB,sBAAsB;AAAC,OACvBC,MAAM;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAIb,OAAO,SAASC,YAAYA,CAACC,KAAwB,EAAe;EAClEL,4BAA4B,CAACK,KAAK,CAAC;EACnC,IAAM;IAAEC,EAAE;IAAEC,MAAM;IAAEC;EAAa,CAAC,GAAGH,KAAK;EAC1C,oBACEF,IAAA,CAACF,MAAM;IAACM,MAAM,EAAEA,MAAO;IAACE,gBAAgB,EAAEH,EAAG;IAACE,YAAY,EAAEA;EAAa,CAAE,CAAC;AAEhF;AAEA,eAAeJ,YAAY","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LinkerPluginConfig.js","names":["PluginType","LinkerPlugin","LinkerPluginConfig","name","type","DASHBOARD_PLUGIN","component"],"sources":["../src/LinkerPluginConfig.ts"],"sourcesContent":["import { PluginType, type DashboardPlugin } from '@deephaven/plugin';\nimport LinkerPlugin from './LinkerPlugin';\n\nconst LinkerPluginConfig: DashboardPlugin = {\n name: 'LinkerPlugin',\n type: PluginType.DASHBOARD_PLUGIN,\n component: LinkerPlugin,\n};\n\nexport default LinkerPluginConfig;\n"],"mappings":"AAAA,SAASA,UAAU,QAA8B,mBAAmB;AAAC,OAC9DC,YAAY;AAEnB,IAAMC,kBAAmC,GAAG;EAC1CC,IAAI,EAAE,cAAc;EACpBC,IAAI,EAAEJ,UAAU,CAACK,gBAAgB;EACjCC,SAAS,EAAEL;AACb,CAAC;AAED,eAAeC,kBAAkB"}
|
|
1
|
+
{"version":3,"file":"LinkerPluginConfig.js","names":["PluginType","LinkerPlugin","LinkerPluginConfig","name","type","DASHBOARD_PLUGIN","component"],"sources":["../src/LinkerPluginConfig.ts"],"sourcesContent":["import { PluginType, type DashboardPlugin } from '@deephaven/plugin';\nimport LinkerPlugin from './LinkerPlugin';\n\nconst LinkerPluginConfig: DashboardPlugin = {\n name: 'LinkerPlugin',\n type: PluginType.DASHBOARD_PLUGIN,\n component: LinkerPlugin,\n};\n\nexport default LinkerPluginConfig;\n"],"mappings":"AAAA,SAASA,UAAU,QAA8B,mBAAmB;AAAC,OAC9DC,YAAY;AAEnB,IAAMC,kBAAmC,GAAG;EAC1CC,IAAI,EAAE,cAAc;EACpBC,IAAI,EAAEJ,UAAU,CAACK,gBAAgB;EACjCC,SAAS,EAAEL;AACb,CAAC;AAED,eAAeC,kBAAkB","ignoreList":[]}
|
package/dist/MarkdownPlugin.js
CHANGED
|
@@ -19,7 +19,7 @@ export function MarkdownPlugin(props) {
|
|
|
19
19
|
id: panelId = nanoid(),
|
|
20
20
|
focusElement = LayoutUtils.DEFAULT_FOCUS_SELECTOR,
|
|
21
21
|
createNewStack = false,
|
|
22
|
-
dragEvent =
|
|
22
|
+
dragEvent = undefined
|
|
23
23
|
} = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
24
24
|
var openedMarkdowns = panelManager.getOpenedPanelConfigsOfType(MarkdownPanel.COMPONENT);
|
|
25
25
|
var usedTitles = openedMarkdowns.map(markdown => {
|