@deephaven/dashboard-core-plugins 0.9.2-beta.0 → 0.9.3-fix-fontawesome.2
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/ChartPlugin.d.ts +2 -2
- package/dist/ChartPlugin.d.ts.map +1 -1
- package/dist/ChartPlugin.js +5 -4
- package/dist/ChartPlugin.js.map +1 -1
- package/dist/ConsolePlugin.d.ts +2 -1
- package/dist/ConsolePlugin.d.ts.map +1 -1
- package/dist/ConsolePlugin.js +8 -7
- package/dist/ConsolePlugin.js.map +1 -1
- package/dist/FilterPlugin.d.ts +2 -1
- package/dist/FilterPlugin.d.ts.map +1 -1
- package/dist/FilterPlugin.js +10 -9
- package/dist/FilterPlugin.js.map +1 -1
- package/dist/GridPlugin.d.ts +2 -2
- package/dist/GridPlugin.d.ts.map +1 -1
- package/dist/GridPlugin.js +5 -4
- package/dist/GridPlugin.js.map +1 -1
- package/dist/LinkerPlugin.d.ts +2 -1
- package/dist/LinkerPlugin.d.ts.map +1 -1
- package/dist/LinkerPlugin.js +4 -2
- package/dist/LinkerPlugin.js.map +1 -1
- package/dist/MarkdownPlugin.d.ts +7 -1
- package/dist/MarkdownPlugin.d.ts.map +1 -1
- package/dist/MarkdownPlugin.js +6 -5
- package/dist/MarkdownPlugin.js.map +1 -1
- package/dist/PandasPlugin.d.ts +2 -2
- package/dist/PandasPlugin.d.ts.map +1 -1
- package/dist/PandasPlugin.js +5 -4
- package/dist/PandasPlugin.js.map +1 -1
- package/dist/controls/dropdown-filter/DropdownFilter.css.map +1 -1
- package/dist/controls/input-filter/InputFilter.css.map +1 -1
- package/dist/linker/LinkerOverlayContent.css.map +1 -1
- package/dist/panels/ConsolePanel.d.ts +4 -2
- package/dist/panels/ConsolePanel.d.ts.map +1 -1
- package/dist/panels/ConsolePanel.js +51 -16
- package/dist/panels/ConsolePanel.js.map +1 -1
- package/dist/panels/FilterSetManager.css.map +1 -1
- package/dist/panels/FilterSetManager.js +3 -4
- package/dist/panels/FilterSetManager.js.map +1 -1
- package/dist/panels/FilterSetManagerPanel.css.map +1 -1
- package/dist/panels/FilterSetManagerPanel.d.ts +1 -1
- package/dist/panels/FilterSetManagerPanel.d.ts.map +1 -1
- package/dist/panels/FilterSetManagerPanel.js +3 -20
- package/dist/panels/FilterSetManagerPanel.js.map +1 -1
- package/dist/panels/IrisGridPanel.d.ts +1 -1
- package/dist/panels/IrisGridPanel.d.ts.map +1 -1
- package/dist/panels/IrisGridPanel.js +15 -3
- package/dist/panels/IrisGridPanel.js.map +1 -1
- package/package.json +16 -16
package/dist/ChartPlugin.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import { DashboardPluginComponentProps, PanelHydrateFunction } from '@deephaven/dashboard';
|
|
3
|
-
export declare type
|
|
3
|
+
export declare type ChartPluginProps = Partial<DashboardPluginComponentProps> & {
|
|
4
4
|
hydrate: PanelHydrateFunction;
|
|
5
5
|
};
|
|
6
|
-
export declare const ChartPlugin: (
|
|
6
|
+
export declare const ChartPlugin: (props: ChartPluginProps) => JSX.Element;
|
|
7
7
|
export default ChartPlugin;
|
|
8
8
|
//# sourceMappingURL=ChartPlugin.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChartPlugin.d.ts","sourceRoot":"","sources":["../src/ChartPlugin.tsx"],"names":[],"mappings":";AAEA,OAAO,
|
|
1
|
+
{"version":3,"file":"ChartPlugin.d.ts","sourceRoot":"","sources":["../src/ChartPlugin.tsx"],"names":[],"mappings":";AAEA,OAAO,EAEL,6BAA6B,EAE7B,oBAAoB,EAErB,MAAM,sBAAsB,CAAC;AAK9B,oBAAY,gBAAgB,GAAG,OAAO,CAAC,6BAA6B,CAAC,GAAG;IACtE,OAAO,EAAE,oBAAoB,CAAC;CAC/B,CAAC;AAEF,eAAO,MAAM,WAAW,UAAW,gBAAgB,KAAG,WAoDrD,CAAC;AAEF,eAAe,WAAW,CAAC"}
|
package/dist/ChartPlugin.js
CHANGED
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
import React, { useCallback, useEffect } from 'react';
|
|
2
|
-
import {
|
|
2
|
+
import { assertIsDashboardPluginProps, LayoutUtils, useListener } from '@deephaven/dashboard';
|
|
3
3
|
import shortid from 'shortid';
|
|
4
4
|
import { ChartPanel } from "./panels/index.js";
|
|
5
5
|
import { ChartEvent } from "./events/index.js";
|
|
6
|
-
export var ChartPlugin =
|
|
6
|
+
export var ChartPlugin = props => {
|
|
7
|
+
assertIsDashboardPluginProps(props);
|
|
7
8
|
var {
|
|
8
9
|
id,
|
|
9
10
|
layout,
|
|
10
11
|
registerComponent,
|
|
11
|
-
hydrate
|
|
12
|
-
} =
|
|
12
|
+
hydrate
|
|
13
|
+
} = props;
|
|
13
14
|
var handleOpen = useCallback(function (title, makeModel) {
|
|
14
15
|
var metadata = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
15
16
|
var panelId = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : shortid.generate();
|
package/dist/ChartPlugin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/ChartPlugin.tsx"],"names":["React","useCallback","useEffect","
|
|
1
|
+
{"version":3,"sources":["../src/ChartPlugin.tsx"],"names":["React","useCallback","useEffect","assertIsDashboardPluginProps","LayoutUtils","useListener","shortid","ChartPanel","ChartEvent","ChartPlugin","props","id","layout","registerComponent","hydrate","handleOpen","title","makeModel","metadata","panelId","generate","dragEvent","config","type","component","COMPONENT","localDashboardId","root","openComponent","handleClose","closeComponent","cleanups","forEach","cleanup","eventHub","OPEN","CLOSE"],"mappings":"AAAA,OAAOA,KAAP,IAA2BC,WAA3B,EAAwCC,SAAxC,QAAyD,OAAzD;AAEA,SACEC,4BADF,EAGEC,WAHF,EAKEC,WALF,QAMO,sBANP;AAOA,OAAOC,OAAP,MAAoB,SAApB;SACSC,U;SACAC,U;AAMT,OAAO,IAAMC,WAAW,GAAIC,KAAD,IAA0C;AACnEP,EAAAA,4BAA4B,CAACO,KAAD,CAA5B;AACA,MAAM;AAAEC,IAAAA,EAAF;AAAMC,IAAAA,MAAN;AAAcC,IAAAA,iBAAd;AAAiCC,IAAAA;AAAjC,MAA6CJ,KAAnD;AACA,MAAMK,UAAU,GAAGd,WAAW,CAC5B,UACEe,KADF,EAEEC,SAFF,EAMK;AAAA,QAHHC,QAGG,uEAHiC,EAGjC;AAAA,QAFHC,OAEG,uEAFOb,OAAO,CAACc,QAAR,EAEP;AAAA,QADHC,SACG;AACH,QAAMC,MAAM,GAAG;AACbC,MAAAA,IAAI,EAAE,iBADO;AAEbC,MAAAA,SAAS,EAAEjB,UAAU,CAACkB,SAFT;AAGbf,MAAAA,KAAK,EAAE;AACLgB,QAAAA,gBAAgB,EAAEf,EADb;AAELA,QAAAA,EAAE,EAAEQ,OAFC;AAGLD,QAAAA,QAHK;AAILD,QAAAA;AAJK,OAHM;AASbD,MAAAA,KATa;AAUbL,MAAAA,EAAE,EAAEQ;AAVS,KAAf;AAaA,QAAM;AAAEQ,MAAAA;AAAF,QAAWf,MAAjB;AACAR,IAAAA,WAAW,CAACwB,aAAZ,CAA0B;AAAED,MAAAA,IAAF;AAAQL,MAAAA,MAAR;AAAgBD,MAAAA;AAAhB,KAA1B;AACD,GAvB2B,EAwB5B,CAACV,EAAD,EAAKC,MAAL,CAxB4B,CAA9B;AA2BA,MAAMiB,WAAW,GAAG5B,WAAW,CAC5BkB,OAAD,IAAqB;AACnB,QAAMG,MAAM,GAAG;AAAEE,MAAAA,SAAS,EAAEjB,UAAU,CAACkB,SAAxB;AAAmCd,MAAAA,EAAE,EAAEQ;AAAvC,KAAf;AACA,QAAM;AAAEQ,MAAAA;AAAF,QAAWf,MAAjB;AACAR,IAAAA,WAAW,CAAC0B,cAAZ,CAA2BH,IAA3B,EAAiCL,MAAjC;AACD,GAL4B,EAM7B,CAACV,MAAD,CAN6B,CAA/B;AASAV,EAAAA,SAAS,CAAC,MAAM;AACd,QAAM6B,QAAQ,GAAG,CACflB,iBAAiB,CAACN,UAAU,CAACkB,SAAZ,EAAuBlB,UAAvB,EAAmCO,OAAnC,CADF,CAAjB;AAGA,WAAO,MAAM;AACXiB,MAAAA,QAAQ,CAACC,OAAT,CAAiBC,OAAO,IAAIA,OAAO,EAAnC;AACD,KAFD;AAGD,GAPQ,EAON,CAACnB,OAAD,EAAUD,iBAAV,CAPM,CAAT;AASAR,EAAAA,WAAW,CAACO,MAAM,CAACsB,QAAR,EAAkB1B,UAAU,CAAC2B,IAA7B,EAAmCpB,UAAnC,CAAX;AACAV,EAAAA,WAAW,CAACO,MAAM,CAACsB,QAAR,EAAkB1B,UAAU,CAAC4B,KAA7B,EAAoCP,WAApC,CAAX;AAEA,sBAAO,yCAAP;AACD,CApDM;AAsDP,eAAepB,WAAf","sourcesContent":["import React, { DragEvent, useCallback, useEffect } from 'react';\nimport { ChartModel } from '@deephaven/chart';\nimport {\n assertIsDashboardPluginProps,\n DashboardPluginComponentProps,\n LayoutUtils,\n PanelHydrateFunction,\n useListener,\n} from '@deephaven/dashboard';\nimport shortid from 'shortid';\nimport { ChartPanel } from './panels';\nimport { ChartEvent } from './events';\n\nexport type ChartPluginProps = Partial<DashboardPluginComponentProps> & {\n hydrate: PanelHydrateFunction;\n};\n\nexport const ChartPlugin = (props: ChartPluginProps): JSX.Element => {\n assertIsDashboardPluginProps(props);\n const { id, layout, registerComponent, hydrate } = props;\n const handleOpen = useCallback(\n (\n title: string,\n makeModel: () => ChartModel,\n metadata: Record<string, unknown> = {},\n panelId = shortid.generate(),\n dragEvent?: DragEvent\n ) => {\n const config = {\n type: 'react-component',\n component: ChartPanel.COMPONENT,\n props: {\n localDashboardId: id,\n id: panelId,\n metadata,\n makeModel,\n },\n title,\n id: panelId,\n };\n\n const { root } = layout;\n LayoutUtils.openComponent({ root, config, dragEvent });\n },\n [id, layout]\n );\n\n const handleClose = useCallback(\n (panelId: string) => {\n const config = { component: ChartPanel.COMPONENT, id: panelId };\n const { root } = layout;\n LayoutUtils.closeComponent(root, config);\n },\n [layout]\n );\n\n useEffect(() => {\n const cleanups = [\n registerComponent(ChartPanel.COMPONENT, ChartPanel, hydrate),\n ];\n return () => {\n cleanups.forEach(cleanup => cleanup());\n };\n }, [hydrate, registerComponent]);\n\n useListener(layout.eventHub, ChartEvent.OPEN, handleOpen);\n useListener(layout.eventHub, ChartEvent.CLOSE, handleClose);\n\n return <></>;\n};\n\nexport default ChartPlugin;\n"],"file":"ChartPlugin.js"}
|
package/dist/ConsolePlugin.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import { DashboardPluginComponentProps } from '@deephaven/dashboard';
|
|
3
|
-
export declare
|
|
3
|
+
export declare type ConsolePluginProps = Partial<DashboardPluginComponentProps>;
|
|
4
|
+
export declare const ConsolePlugin: (props: ConsolePluginProps) => JSX.Element;
|
|
4
5
|
export default ConsolePlugin;
|
|
5
6
|
//# sourceMappingURL=ConsolePlugin.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConsolePlugin.d.ts","sourceRoot":"","sources":["../src/ConsolePlugin.tsx"],"names":[],"mappings":";AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"ConsolePlugin.d.ts","sourceRoot":"","sources":["../src/ConsolePlugin.tsx"],"names":[],"mappings":";AACA,OAAO,EAEL,6BAA6B,EAI9B,MAAM,sBAAsB,CAAC;AA6B9B,oBAAY,kBAAkB,GAAG,OAAO,CAAC,6BAA6B,CAAC,CAAC;AAExE,eAAO,MAAM,aAAa,UAAW,kBAAkB,KAAG,WA8azD,CAAC;AAEF,eAAe,aAAa,CAAC"}
|
package/dist/ConsolePlugin.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { LayoutUtils, useListener } from '@deephaven/dashboard';
|
|
1
|
+
import { assertIsDashboardPluginProps, LayoutUtils, useListener } from '@deephaven/dashboard';
|
|
2
2
|
import { FileUtils } from '@deephaven/file-explorer';
|
|
3
3
|
import Log from '@deephaven/log';
|
|
4
4
|
import React, { useCallback, useEffect, useRef, useState } from 'react';
|
|
@@ -13,13 +13,14 @@ function isNotebookPanel(panel) {
|
|
|
13
13
|
return panel.notebook !== undefined;
|
|
14
14
|
}
|
|
15
15
|
|
|
16
|
-
export var ConsolePlugin =
|
|
16
|
+
export var ConsolePlugin = props => {
|
|
17
|
+
assertIsDashboardPluginProps(props);
|
|
17
18
|
var {
|
|
18
19
|
id,
|
|
19
20
|
layout,
|
|
20
21
|
panelManager,
|
|
21
22
|
registerComponent
|
|
22
|
-
} =
|
|
23
|
+
} = props;
|
|
23
24
|
var notebookIndex = useRef(0); // Map from file ID to panel ID
|
|
24
25
|
|
|
25
26
|
var [openFileMap] = useState(new Map());
|
|
@@ -48,10 +49,10 @@ export var ConsolePlugin = _ref => {
|
|
|
48
49
|
var handleSettingsChanged = useCallback(consoleSettings => {
|
|
49
50
|
dispatch(setDashboardConsoleSettings(id, consoleSettings));
|
|
50
51
|
}, [dispatch, id]);
|
|
51
|
-
var getNotebookFileName = useCallback(
|
|
52
|
+
var getNotebookFileName = useCallback(_ref => {
|
|
52
53
|
var {
|
|
53
54
|
language
|
|
54
|
-
} =
|
|
55
|
+
} = _ref;
|
|
55
56
|
var extension = language === 'python' ? 'py' : language;
|
|
56
57
|
var title = null;
|
|
57
58
|
|
|
@@ -257,7 +258,7 @@ export var ConsolePlugin = _ref => {
|
|
|
257
258
|
panel.focus();
|
|
258
259
|
}
|
|
259
260
|
}, [panelManager]);
|
|
260
|
-
var makeConfig = useCallback(
|
|
261
|
+
var makeConfig = useCallback(_ref2 => {
|
|
261
262
|
var {
|
|
262
263
|
id: panelId,
|
|
263
264
|
settings,
|
|
@@ -265,7 +266,7 @@ export var ConsolePlugin = _ref => {
|
|
|
265
266
|
session,
|
|
266
267
|
sessionLanguage,
|
|
267
268
|
isPreview = false
|
|
268
|
-
} =
|
|
269
|
+
} = _ref2;
|
|
269
270
|
var panelState = {
|
|
270
271
|
settings,
|
|
271
272
|
fileMetadata
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/ConsolePlugin.tsx"],"names":["LayoutUtils","useListener","FileUtils","Log","React","useCallback","useEffect","useRef","useState","useDispatch","shortid","ConsoleEvent","NotebookEvent","ConsolePanel","CommandHistoryPanel","FileExplorerPanel","LogPanel","NotebookPanel","setDashboardConsoleSettings","log","module","isNotebookPanel","panel","notebook","undefined","ConsolePlugin","id","layout","panelManager","registerComponent","notebookIndex","openFileMap","Map","previewFileMap","dispatch","getConsolePanel","getLastUsedPanelOfType","handleSendCommand","command","focus","execute","trimmedCommand","trim","info","consolePanel","WrappedComponent","error","debug","addCommand","handleSettingsChanged","consoleSettings","getNotebookFileName","language","extension","title","current","getPanelIdForFileMetadata","fileMetadata","createIfNecessary","fileId","has","get","generate","renamePanel","panelId","newTitle","renameComponent","root","renameFilePanel","oldName","newName","delete","set","debug2","getBaseName","showFilePanel","activateTab","registerFilePanel","isPreview","existingPanelId","itemName","unregisterFilePanel","closeFilePanel","closeComponent","getNotebookTitle","fileIsOpen","fileIsOpenAsPreview","focusPanelById","getOpenedPanelById","makeConfig","settings","session","sessionLanguage","panelState","type","component","COMPONENT","isFocusOnShow","props","localDashboardId","metadata","createNotebook","stack","getStackForComponentTypes","config","openComponentInStack","selectNotebook","shouldFocus","isFileOpen","isFileOpenAsPreview","previewTabId","Array","from","values","getStackForConfig","sendToNotebook","notebookPanel","value","append","cleanups","forEach","cleanup","eventHub","SEND_COMMAND","SETTINGS_CHANGED","CLOSE_FILE","CREATE_NOTEBOOK","SELECT_NOTEBOOK","RENAME","RENAME_FILE","SEND_TO_NOTEBOOK","REGISTER_FILE","UNREGISTER_FILE"],"mappings":"AACA,SAEEA,WAFF,EAIEC,WAJF,QAKO,sBALP;AAMA,SAASC,SAAT,QAA0B,0BAA1B;AACA,OAAOC,GAAP,MAAgB,gBAAhB;AACA,OAAOC,KAAP,IAAgBC,WAAhB,EAA6BC,SAA7B,EAAwCC,MAAxC,EAAgDC,QAAhD,QAAgE,OAAhE;AACA,SAASC,WAAT,QAA4B,aAA5B;AACA,OAAOC,OAAP,MAAoB,SAApB;SACSC,Y,EAAcC,a;SAErBC,Y,EACAC,mB,EACAC,iB,EACAC,Q,EACAC,a;SAEOC,2B;AAET,IAAMC,GAAG,GAAGhB,GAAG,CAACiB,MAAJ,CAAW,eAAX,CAAZ;;AAOA,SAASC,eAAT,CACEC,KADF,EAEmC;AACjC,SAAQA,KAAD,CAAkCC,QAAlC,KAA+CC,SAAtD;AACD;;AAED,OAAO,IAAMC,aAAa,GAAG,QAKqB;AAAA,MALpB;AAC5BC,IAAAA,EAD4B;AAE5BC,IAAAA,MAF4B;AAG5BC,IAAAA,YAH4B;AAI5BC,IAAAA;AAJ4B,GAKoB;AAChD,MAAMC,aAAa,GAAGvB,MAAM,CAAC,CAAD,CAA5B,CADgD,CAEhD;;AACA,MAAM,CAACwB,WAAD,IAAgBvB,QAAQ,CAAC,IAAIwB,GAAJ,EAAD,CAA9B;AACA,MAAM,CAACC,cAAD,IAAmBzB,QAAQ,CAAC,IAAIwB,GAAJ,EAAD,CAAjC;AAEA,MAAME,QAAQ,GAAGzB,WAAW,EAA5B;AAEA,MAAM0B,eAAe,GAAG9B,WAAW,CACjC,MAAMuB,YAAY,CAACQ,sBAAb,CAAoCvB,YAApC,CAD2B,EAEjC,CAACe,YAAD,CAFiC,CAAnC;AAKA,MAAMS,iBAAiB,GAAGhC,WAAW,CACnC,UAACiC,OAAD,EAAmD;AAAA,QAAjCC,KAAiC,uEAAzB,IAAyB;AAAA,QAAnBC,OAAmB,uEAAT,IAAS;AACjD,QAAMC,cAAc,GAAGH,OAAO,IAAIA,OAAO,CAACI,IAAR,EAAlC;;AACA,QAAI,CAACD,cAAL,EAAqB;AACnBtB,MAAAA,GAAG,CAACwB,IAAJ,CAAS,qBAAT;AACD,KAFD,MAEO;AACL,UAAMC,YAAY,GAAGT,eAAe,EAApC;;AACA,UACE,CAACS,YAAD,IACA,EAAEA,YAAY,YAAY/B,YAAY,CAACgC,gBAAvC,CAFF,EAGE;AACA1B,QAAAA,GAAG,CAAC2B,KAAJ,CAAU,yBAAV;AACA;AACD;;AACD3B,MAAAA,GAAG,CAAC4B,KAAJ,CAAU,gBAAV,EAA4BT,OAA5B,EAAqCC,KAArC,EAA4CC,OAA5C;AACAI,MAAAA,YAAY,CAACI,UAAb,CAAwBV,OAAxB,EAAiCC,KAAjC,EAAwCC,OAAxC;AACD;AACF,GAjBkC,EAkBnC,CAACL,eAAD,CAlBmC,CAArC;AAqBA,MAAMc,qBAAqB,GAAG5C,WAAW,CACvC6C,eAAe,IAAI;AACjBhB,IAAAA,QAAQ,CAAChB,2BAA2B,CAACQ,EAAD,EAAKwB,eAAL,CAA5B,CAAR;AACD,GAHsC,EAIvC,CAAChB,QAAD,EAAWR,EAAX,CAJuC,CAAzC;AAOA,MAAMyB,mBAAmB,GAAG9C,WAAW,CAAC,SAAkB;AAAA,QAAjB;AAAE+C,MAAAA;AAAF,KAAiB;AACxD,QAAMC,SAAS,GAAGD,QAAQ,KAAK,QAAb,GAAwB,IAAxB,GAA+BA,QAAjD;AACA,QAAIE,KAAK,GAAG,IAAZ;;AACA,QAAI,CAACD,SAAL,EAAgB;AACdlC,MAAAA,GAAG,CAAC4B,KAAJ,CAAU,2BAAV,EAAuCK,QAAvC;AACAE,MAAAA,KAAK,sBAAexB,aAAa,CAACyB,OAA7B,CAAL;AACD,KAHD,MAGO;AACLD,MAAAA,KAAK,sBAAexB,aAAa,CAACyB,OAA7B,cAAwCF,SAAxC,CAAL;AACD;;AACDvB,IAAAA,aAAa,CAACyB,OAAd,IAAyB,CAAzB;AACA,WAAOD,KAAP;AACD,GAXsC,EAWpC,EAXoC,CAAvC;AAaA,MAAME,yBAAyB,GAAGnD,WAAW,CAC3C,UAACoD,YAAD,EAA4C;AAAA,QAA7BC,iBAA6B,uEAAT,IAAS;AAC1C,QAAM;AAAEhC,MAAAA,EAAE,EAAEiC;AAAN,QAAiBF,YAAvB;;AACA,QAAIE,MAAM,IAAI5B,WAAW,CAAC6B,GAAZ,CAAgBD,MAAhB,CAAd,EAAuC;AACrC,aAAO5B,WAAW,CAAC8B,GAAZ,CAAgBF,MAAhB,CAAP;AACD;;AACD,QAAIA,MAAM,IAAI1B,cAAc,CAAC2B,GAAf,CAAmBD,MAAnB,CAAd,EAA0C;AACxC,aAAO1B,cAAc,CAAC4B,GAAf,CAAmBF,MAAnB,CAAP;AACD;;AACD,QAAID,iBAAJ,EAAuB;AACrB,aAAOhD,OAAO,CAACoD,QAAR,EAAP;AACD;;AACD,WAAO,IAAP;AACD,GAb0C,EAc3C,CAAC/B,WAAD,EAAcE,cAAd,CAd2C,CAA7C;AAiBA,MAAM8B,WAAW,GAAG1D,WAAW,CAC7B,CAAC2D,OAAD,EAAUC,QAAV,KAAuB;AACrBjE,IAAAA,WAAW,CAACkE,eAAZ,CAA4BvC,MAAM,CAACwC,IAAnC,EAAyC;AAAEzC,MAAAA,EAAE,EAAEsC;AAAN,KAAzC,EAA0DC,QAA1D;AACD,GAH4B,EAI7B,CAACtC,MAAM,CAACwC,IAAR,CAJ6B,CAA/B;AAOA,MAAMC,eAAe,GAAG/D,WAAW,CACjC,CAACgE,OAAD,EAAUC,OAAV,KAAsB;AACpBnD,IAAAA,GAAG,CAAC4B,KAAJ,CAAU,mBAAV,EAA+BsB,OAA/B,EAAwCC,OAAxC;AACA,QAAIN,OAAJ;;AACA,QAAIjC,WAAW,CAAC6B,GAAZ,CAAgBS,OAAhB,CAAJ,EAA8B;AAC5BL,MAAAA,OAAO,GAAGjC,WAAW,CAAC8B,GAAZ,CAAgBQ,OAAhB,CAAV;AACAtC,MAAAA,WAAW,CAACwC,MAAZ,CAAmBF,OAAnB;;AACA,UAAIL,OAAO,IAAI,IAAf,EAAqB;AACnBjC,QAAAA,WAAW,CAACyC,GAAZ,CAAgBF,OAAhB,EAAyBN,OAAzB;AACD;AACF;;AACD,QAAI/B,cAAc,CAAC2B,GAAf,CAAmBS,OAAnB,CAAJ,EAAiC;AAC/BL,MAAAA,OAAO,GAAG/B,cAAc,CAAC4B,GAAf,CAAmBQ,OAAnB,CAAV;AACApC,MAAAA,cAAc,CAACsC,MAAf,CAAsBF,OAAtB;;AACA,UAAIL,OAAO,IAAI,IAAf,EAAqB;AACnB/B,QAAAA,cAAc,CAACuC,GAAf,CAAmBF,OAAnB,EAA4BN,OAA5B;AACD;AACF;;AAED,QAAI,CAACA,OAAL,EAAc;AACZ7C,MAAAA,GAAG,CAACsD,MAAJ,gBAAmBJ,OAAnB;AACA;AACD;;AAEDN,IAAAA,WAAW,CAACC,OAAD,EAAU9D,SAAS,CAACwE,WAAV,CAAsBJ,OAAtB,CAAV,CAAX;AACD,GAzBgC,EA0BjC,CAACvC,WAAD,EAAcE,cAAd,EAA8B8B,WAA9B,CA1BiC,CAAnC;AA6BA;AACF;AACA;AACA;;AACE,MAAMY,aAAa,GAAGtE,WAAW,CAC/BoD,YAAY,IAAI;AACd,QAAMO,OAAO,GAAGR,yBAAyB,CAACC,YAAD,EAAe,KAAf,CAAzC;;AACA,QAAIO,OAAO,IAAI,IAAf,EAAqB;AACnB7C,MAAAA,GAAG,CAAC2B,KAAJ,CAAU,2CAAV,EAAuDW,YAAvD;AACA;AACD;;AACDzD,IAAAA,WAAW,CAAC4E,WAAZ,CAAwBjD,MAAM,CAACwC,IAA/B,EAAqC;AAAEzC,MAAAA,EAAE,EAAEsC;AAAN,KAArC;AACD,GAR8B,EAS/B,CAACR,yBAAD,EAA4B7B,MAAM,CAACwC,IAAnC,CAT+B,CAAjC;AAYA,MAAMU,iBAAiB,GAAGxE,WAAW,CACnC,CAAC2D,OAAD,EAAUP,YAAV,EAAwBqB,SAAxB,KAAsC;AACpC3D,IAAAA,GAAG,CAAC4B,KAAJ,CAAU,mBAAV,EAA+BiB,OAA/B,EAAwCP,YAAxC,EAAsDqB,SAAtD;;AACA,QAAI,CAACrB,YAAD,IAAiB,CAACA,YAAY,CAAC/B,EAAnC,EAAuC;AACrCP,MAAAA,GAAG,CAAC4B,KAAJ,CAAU,sBAAV,EAAkCU,YAAlC;AACA;AACD;;AACD,QAAM;AAAE/B,MAAAA,EAAE,EAAEiC;AAAN,QAAiBF,YAAvB;;AACA,QAAIqB,SAAJ,EAAe;AACb7C,MAAAA,cAAc,CAACuC,GAAf,CAAmBb,MAAnB,EAA2BK,OAA3B;AACA;AACD;;AACD,QAAIjC,WAAW,CAAC6B,GAAZ,CAAgBD,MAAhB,CAAJ,EAA6B;AAC3B,UAAMoB,eAAe,GAAGhD,WAAW,CAAC8B,GAAZ,CAAgBF,MAAhB,CAAxB;;AACA,UAAIK,OAAO,KAAKe,eAAhB,EAAiC;AAC/B5D,QAAAA,GAAG,CAAC4B,KAAJ,qCAAuCY,MAAvC;AACA,YAAM;AAAEqB,UAAAA;AAAF,YAAevB,YAArB;AACAW,QAAAA,eAAe,CAACT,MAAD,EAASzD,SAAS,CAACwE,WAAV,CAAsBM,QAAtB,CAAT,CAAf;AACD,OAJD,MAIO;AACL7D,QAAAA,GAAG,CAAC2B,KAAJ,gBACUa,MADV,sDAC4DoB,eAD5D;AAGD;;AACD;AACD;;AAEDhD,IAAAA,WAAW,CAACyC,GAAZ,CAAgBb,MAAhB,EAAwBK,OAAxB,EAzBoC,CA2BpC;;AACA,QAAI/B,cAAc,CAAC2B,GAAf,CAAmBD,MAAnB,CAAJ,EAAgC;AAC9B1B,MAAAA,cAAc,CAACsC,MAAf,CAAsBZ,MAAtB;AACD;AACF,GAhCkC,EAiCnC,CAAC5B,WAAD,EAAcE,cAAd,EAA8BmC,eAA9B,CAjCmC,CAArC;AAoCA,MAAMa,mBAAmB,GAAG5E,WAAW,CACrC,CAACoD,YAAD,EAAeqB,SAAf,KAA6B;AAC3B;AACA;AACA;AACA;AACA;AACA3D,IAAAA,GAAG,CAAC4B,KAAJ,CAAU,mBAAV,EAA+BU,YAA/B,EAA6CqB,SAA7C;;AACA,QAAI,CAACrB,YAAD,IAAiB,CAACA,YAAY,CAAC/B,EAAnC,EAAuC;AACrCP,MAAAA,GAAG,CAAC4B,KAAJ,CAAU,sBAAV,EAAkCU,YAAlC;AACA;AACD;;AACD,QAAM;AAAE/B,MAAAA,EAAE,EAAEiC;AAAN,QAAiBF,YAAvB;;AACA,QAAIqB,SAAJ,EAAe;AACb7C,MAAAA,cAAc,CAACsC,MAAf,CAAsBZ,MAAtB;AACA;AACD;;AACD5B,IAAAA,WAAW,CAACwC,MAAZ,CAAmBZ,MAAnB;AACD,GAlBoC,EAmBrC,CAAC5B,WAAD,EAAcE,cAAd,CAnBqC,CAAvC;AAsBA,MAAMiD,cAAc,GAAG7E,WAAW,CAChCoD,YAAY,IAAI;AACdtC,IAAAA,GAAG,CAAC4B,KAAJ,CAAU,gBAAV,EAA4BU,YAA5B;AACA,QAAM;AAAE/B,MAAAA,EAAE,EAAEiC;AAAN,QAAiBF,YAAvB;AACA,QAAIO,OAAO,GAAG,IAAd;AACA,QAAIc,SAAS,GAAG,KAAhB;;AACA,QAAI/C,WAAW,CAAC6B,GAAZ,CAAgBD,MAAhB,CAAJ,EAA6B;AAC3BK,MAAAA,OAAO,GAAGjC,WAAW,CAAC8B,GAAZ,CAAgBF,MAAhB,CAAV;AACD,KAFD,MAEO,IAAI1B,cAAc,CAAC2B,GAAf,CAAmBD,MAAnB,CAAJ,EAAgC;AACrCK,MAAAA,OAAO,GAAG/B,cAAc,CAAC4B,GAAf,CAAmBF,MAAnB,CAAV;AACAmB,MAAAA,SAAS,GAAG,IAAZ;AACD,KAHM,MAGA;AACL3D,MAAAA,GAAG,CAAC4B,KAAJ,gBAAkBY,MAAlB;AACA;AACD;;AACDsB,IAAAA,mBAAmB,CAACxB,YAAD,EAAeqB,SAAf,CAAnB;AACA9E,IAAAA,WAAW,CAACmF,cAAZ,CAA2BxD,MAAM,CAACwC,IAAlC,EAAwC;AAAEzC,MAAAA,EAAE,EAAEsC;AAAN,KAAxC;AACD,GAjB+B,EAkBhC,CAACrC,MAAM,CAACwC,IAAR,EAAcpC,WAAd,EAA2BE,cAA3B,EAA2CgD,mBAA3C,CAlBgC,CAAlC;AAqBA,MAAMG,gBAAgB,GAAG/E,WAAW,CAACoD,YAAY,IAAI;AACnD,QAAM;AAAEuB,MAAAA;AAAF,QAAevB,YAArB;AACA,WAAOvD,SAAS,CAACwE,WAAV,CAAsBM,QAAtB,CAAP;AACD,GAHmC,EAGjC,EAHiC,CAApC;AAKA,MAAMK,UAAU,GAAGhF,WAAW,CAC5BoD,YAAY,IAAI;AACd,QAAM;AAAE/B,MAAAA,EAAE,EAAEiC;AAAN,QAAiBF,YAAvB;AACAtC,IAAAA,GAAG,CAAC4B,KAAJ,CAAU,YAAV,EAAwBU,YAAxB,EAAsCE,MAAtC,EAA8C5B,WAA9C;AACA,WAAO4B,MAAM,IAAI5B,WAAW,CAAC6B,GAAZ,CAAgBD,MAAhB,CAAjB;AACD,GAL2B,EAM5B,CAAC5B,WAAD,CAN4B,CAA9B;AASA,MAAMuD,mBAAmB,GAAGjF,WAAW,CACrCoD,YAAY,IAAI;AACd,QAAM;AAAE/B,MAAAA,EAAE,EAAEiC;AAAN,QAAiBF,YAAvB;AACAtC,IAAAA,GAAG,CAAC4B,KAAJ,CAAU,qBAAV,EAAiCU,YAAjC,EAA+CE,MAA/C,EAAuD1B,cAAvD;AACA,WAAO0B,MAAM,IAAI1B,cAAc,CAAC2B,GAAf,CAAmBD,MAAnB,CAAjB;AACD,GALoC,EAMrC,CAAC1B,cAAD,CANqC,CAAvC;AASA;AACF;AACA;;AACE,MAAMsD,cAAc,GAAGlF,WAAW,CAChC2D,OAAO,IAAI;AACT,QAAI,CAACA,OAAL,EAAc;AACZ;AACD;;AAED,QAAM1C,KAAK,GAAGM,YAAY,CAAC4D,kBAAb,CAAgCxB,OAAhC,CAAd;;AACA,QAAI1C,KAAK,IAAID,eAAe,CAACC,KAAD,CAA5B,EAAqC;AACnCA,MAAAA,KAAK,CAACiB,KAAN;AACD;AACF,GAV+B,EAWhC,CAACX,YAAD,CAXgC,CAAlC;AAcA,MAAM6D,UAAU,GAAGpF,WAAW,CAC5B,SAOM;AAAA,QAPL;AACCqB,MAAAA,EAAE,EAAEsC,OADL;AAEC0B,MAAAA,QAFD;AAGCjC,MAAAA,YAHD;AAICkC,MAAAA,OAJD;AAKCC,MAAAA,eALD;AAMCd,MAAAA,SAAS,GAAG;AANb,KAOK;AACJ,QAAMe,UAAU,GAAG;AACjBH,MAAAA,QADiB;AAEjBjC,MAAAA;AAFiB,KAAnB;AAIA,QAAMH,KAAK,GAAG8B,gBAAgB,CAAC3B,YAAD,CAA9B;AACA,WAAO;AACLqC,MAAAA,IAAI,EAAE,iBADD;AAELC,MAAAA,SAAS,EAAE9E,aAAa,CAAC+E,SAFpB;AAGLC,MAAAA,aAAa,EAAE,KAHV;AAILC,MAAAA,KAAK,EAAE;AACLC,QAAAA,gBAAgB,EAAEzE,EADb;AAEL0E,QAAAA,QAAQ,EAAE;AAAE1E,UAAAA,EAAE,EAAEsC;AAAN,SAFL;AAGL2B,QAAAA,OAHK;AAILC,QAAAA,eAJK;AAKLC,QAAAA,UALK;AAMLf,QAAAA;AANK,OAJF;AAYLxB,MAAAA,KAZK;AAaL5B,MAAAA,EAAE,EAAEsC;AAbC,KAAP;AAeD,GA7B2B,EA8B5B,CAACoB,gBAAD,EAAmB1D,EAAnB,CA9B4B,CAA9B;AAiCA,MAAM2E,cAAc,GAAGhG,WAAW,CAChC,UACEsF,OADF,EAEEC,eAFF,EAGEF,QAHF,EAKK;AAAA,QADHjC,YACG,uEADY;AAAE/B,MAAAA,EAAE,EAAE,IAAN;AAAYsD,MAAAA,QAAQ,EAAE7B,mBAAmB,CAACuC,QAAD;AAAzC,KACZ;AACH,QAAM1B,OAAO,GAAGR,yBAAyB,CAACC,YAAD,CAAzC;;AACA,QAAI4B,UAAU,CAAC5B,YAAD,CAAV,IAA4BO,OAAhC,EAAyC;AACvC7C,MAAAA,GAAG,CAAC4B,KAAJ,CAAU,mCAAV;AACA4B,MAAAA,aAAa,CAAClB,YAAD,CAAb;AACA8B,MAAAA,cAAc,CAACvB,OAAD,CAAd;AACA;AACD;;AACD,QAAMsC,KAAK,GAAGtG,WAAW,CAACuG,yBAAZ,CAAsC5E,MAAM,CAACwC,IAA7C,EAAmD,CAC/DlD,aAAa,CAAC+E,SADiD,CAAnD,CAAd;AAGA,QAAMQ,MAAM,GAAGf,UAAU,CAAC;AACxB/D,MAAAA,EAAE,EAAEsC,OADoB;AAExB0B,MAAAA,QAFwB;AAGxBjC,MAAAA,YAHwB;AAIxBkC,MAAAA,OAJwB;AAKxBC,MAAAA;AALwB,KAAD,CAAzB;AAOAzE,IAAAA,GAAG,CAAC4B,KAAJ,CAAU,gBAAV,EAA4ByD,MAA5B,EAAoCzE,WAApC;AACA/B,IAAAA,WAAW,CAACyG,oBAAZ,CAAiCH,KAAjC,EAAwCE,MAAxC;AACD,GA1B+B,EA2BhC,CACEnB,UADF,EAEEE,cAFF,EAGEpC,mBAHF,EAIEK,yBAJF,EAKE7B,MAAM,CAACwC,IALT,EAMEsB,UANF,EAOE1D,WAPF,EAQE4C,aARF,CA3BgC,CAAlC;AAuCA,MAAM+B,cAAc,GAAGrG,WAAW,CAChC,UAACsF,OAAD,EAAUC,eAAV,EAA2BF,QAA3B,EAAqCjC,YAArC,EAA2E;AAAA,QAAxBkD,WAAwB,uEAAV,KAAU;AACzExF,IAAAA,GAAG,CAAC4B,KAAJ,CAAU,gBAAV,EAA4BU,YAA5B,EAA0CkD,WAA1C;AACA,QAAMC,UAAU,GAAGvB,UAAU,CAAC5B,YAAD,CAA7B;AACA,QAAMoD,mBAAmB,GAAGvB,mBAAmB,CAAC7B,YAAD,CAA/C,CAHyE,CAKzE;;AACA,QAAImD,UAAJ,EAAgB;AACdjC,MAAAA,aAAa,CAAClB,YAAD,CAAb;;AACA,UAAIkD,WAAJ,EAAiB;AACf,YAAM3C,QAAO,GAAGR,yBAAyB,CAACC,YAAD,CAAzC;;AACA8B,QAAAA,cAAc,CAACvB,QAAD,CAAd;AACD;;AACD;AACD,KAbwE,CAezE;AACA;;;AACA,QAAI6C,mBAAmB,IAAI,CAACF,WAA5B,EAAyC;AACvChC,MAAAA,aAAa,CAAClB,YAAD,CAAb;AACA;AACD;;AAED,QAAM,CAACqD,YAAD,IAAiBC,KAAK,CAACC,IAAN,CAAW/E,cAAc,CAACgF,MAAf,EAAX,CAAvB;AACA,QAAIjD,OAAO,GAAG,IAAd;AACA,QAAIsC,KAAK,GAAG,IAAZ;;AACA,QAAIQ,YAAY,IAAI,IAApB,EAA0B;AACxB9C,MAAAA,OAAO,GAAG8C,YAAV;AACAR,MAAAA,KAAK,GAAGtG,WAAW,CAACkH,iBAAZ,CAA8BvF,MAAM,CAACwC,IAArC,EAA2C;AACjD4B,QAAAA,SAAS,EAAE9E,aAAa,CAAC+E,SADwB;AAEjDtE,QAAAA,EAAE,EAAEsC;AAF6C,OAA3C,CAAR;AAID;;AACD,QAAIsC,KAAK,IAAI,IAAb,EAAmB;AACjBtC,MAAAA,OAAO,GAAGR,yBAAyB,CAACC,YAAD,CAAnC;AACA6C,MAAAA,KAAK,GAAGtG,WAAW,CAACuG,yBAAZ,CAAsC5E,MAAM,CAACwC,IAA7C,EAAmD,CACzDlD,aAAa,CAAC+E,SAD2C,CAAnD,CAAR;AAGD;;AACD,QAAMQ,MAAM,GAAGf,UAAU,CAAC;AACxB/D,MAAAA,EAAE,EAAEsC,OADoB;AAExB0B,MAAAA,QAFwB;AAGxBjC,MAAAA,YAHwB;AAIxBkC,MAAAA,OAJwB;AAKxBC,MAAAA,eALwB;AAMxBd,MAAAA,SAAS,EAAE,CAAC6B;AANY,KAAD,CAAzB;AAQA3G,IAAAA,WAAW,CAACyG,oBAAZ,CAAiCH,KAAjC,EAAwCE,MAAxC;;AACA,QAAIG,WAAJ,EAAiB;AACf;AACApB,MAAAA,cAAc,CAACvB,OAAD,CAAd;AACD;AACF,GApD+B,EAqDhC,CACEW,aADF,EAEEU,UAFF,EAGEC,mBAHF,EAIEC,cAJF,EAKE/B,yBALF,EAME7B,MAAM,CAACwC,IANT,EAOEsB,UAPF,EAQExD,cARF,CArDgC,CAAlC;AAiEA;;AACA,MAAMkF,cAAc,GAAG9G,WAAW,CAChC,UAACsF,OAAD,EAAUC,eAAV,EAAuE;AAAA,QAA5CF,QAA4C,uEAAjC,EAAiC;AAAA,QAA7BhC,iBAA6B,uEAAT,IAAS;AACrE,QAAM0D,aAAa,GAAGxF,YAAY,CAACQ,sBAAb,CAAoCnB,aAApC,CAAtB;;AACA,QAAImG,aAAa,IAAI/F,eAAe,CAAC+F,aAAD,CAApC,EAAqD;AACnD,UAAI1B,QAAQ,IAAIA,QAAQ,CAAC2B,KAArB,IAA8BD,aAAa,CAAC7F,QAAhD,EAA0D;AACxD6F,QAAAA,aAAa,CAAC7F,QAAd,CAAuB+F,MAAvB,CAA8B5B,QAAQ,CAAC2B,KAAvC;AACD;AACF,KAJD,MAIO,IAAI3D,iBAAJ,EAAuB;AAC5B2C,MAAAA,cAAc,CAACV,OAAD,EAAUC,eAAV,EAA2BF,QAA3B,CAAd;AACD;AACF,GAV+B,EAWhC,CAACW,cAAD,EAAiBzE,YAAjB,CAXgC,CAAlC;AAcAtB,EAAAA,SAAS,CAAC,MAAM;AACd,QAAMiH,QAAQ,GAAG,CACf1F,iBAAiB,CAAChB,YAAY,CAACmF,SAAd,EAAyBnF,YAAzB,CADF,EAEfgB,iBAAiB,CAACf,mBAAmB,CAACkF,SAArB,EAAgClF,mBAAhC,CAFF,EAGfe,iBAAiB,CAACd,iBAAiB,CAACiF,SAAnB,EAA8BjF,iBAA9B,CAHF,EAIfc,iBAAiB,CAACb,QAAQ,CAACgF,SAAV,EAAqBhF,QAArB,CAJF,EAKfa,iBAAiB,CAACZ,aAAa,CAAC+E,SAAf,EAA0B/E,aAA1B,CALF,CAAjB;AAQA,WAAO,MAAM;AACXsG,MAAAA,QAAQ,CAACC,OAAT,CAAiBC,OAAO,IAAIA,OAAO,EAAnC;AACD,KAFD;AAGD,GAZQ,EAYN,CAAC5F,iBAAD,CAZM,CAAT;AAcA5B,EAAAA,WAAW,CAAC0B,MAAM,CAAC+F,QAAR,EAAkB/G,YAAY,CAACgH,YAA/B,EAA6CtF,iBAA7C,CAAX;AACApC,EAAAA,WAAW,CACT0B,MAAM,CAAC+F,QADE,EAET/G,YAAY,CAACiH,gBAFJ,EAGT3E,qBAHS,CAAX;AAKAhD,EAAAA,WAAW,CAAC0B,MAAM,CAAC+F,QAAR,EAAkB9G,aAAa,CAACiH,UAAhC,EAA4C3C,cAA5C,CAAX;AACAjF,EAAAA,WAAW,CAAC0B,MAAM,CAAC+F,QAAR,EAAkB9G,aAAa,CAACkH,eAAhC,EAAiDzB,cAAjD,CAAX;AACApG,EAAAA,WAAW,CAAC0B,MAAM,CAAC+F,QAAR,EAAkB9G,aAAa,CAACmH,eAAhC,EAAiDrB,cAAjD,CAAX;AACAzG,EAAAA,WAAW,CAAC0B,MAAM,CAAC+F,QAAR,EAAkB9G,aAAa,CAACoH,MAAhC,EAAwCjE,WAAxC,CAAX;AACA9D,EAAAA,WAAW,CAAC0B,MAAM,CAAC+F,QAAR,EAAkB9G,aAAa,CAACqH,WAAhC,EAA6C7D,eAA7C,CAAX;AACAnE,EAAAA,WAAW,CAAC0B,MAAM,CAAC+F,QAAR,EAAkB9G,aAAa,CAACsH,gBAAhC,EAAkDf,cAAlD,CAAX;AACAlH,EAAAA,WAAW,CAAC0B,MAAM,CAAC+F,QAAR,EAAkB9G,aAAa,CAACuH,aAAhC,EAA+CtD,iBAA/C,CAAX;AACA5E,EAAAA,WAAW,CACT0B,MAAM,CAAC+F,QADE,EAET9G,aAAa,CAACwH,eAFL,EAGTnD,mBAHS,CAAX;AAMA,sBAAO,yCAAP;AACD,CAjbM;AAmbP,eAAexD,aAAf","sourcesContent":["import { ScriptEditor } from '@deephaven/console';\nimport {\n DashboardPluginComponentProps,\n LayoutUtils,\n PanelComponent,\n useListener,\n} from '@deephaven/dashboard';\nimport { FileUtils } from '@deephaven/file-explorer';\nimport Log from '@deephaven/log';\nimport React, { useCallback, useEffect, useRef, useState } from 'react';\nimport { useDispatch } from 'react-redux';\nimport shortid from 'shortid';\nimport { ConsoleEvent, NotebookEvent } from './events';\nimport {\n ConsolePanel,\n CommandHistoryPanel,\n FileExplorerPanel,\n LogPanel,\n NotebookPanel,\n} from './panels';\nimport { setDashboardConsoleSettings } from './redux';\n\nconst log = Log.module('ConsolePlugin');\n\ntype NotebookPanelComponent = PanelComponent & {\n notebook: ScriptEditor;\n focus: () => void;\n};\n\nfunction isNotebookPanel(\n panel: PanelComponent\n): panel is NotebookPanelComponent {\n return (panel as NotebookPanelComponent).notebook !== undefined;\n}\n\nexport const ConsolePlugin = ({\n id,\n layout,\n panelManager,\n registerComponent,\n}: DashboardPluginComponentProps): JSX.Element => {\n const notebookIndex = useRef(0);\n // Map from file ID to panel ID\n const [openFileMap] = useState(new Map<string, string>());\n const [previewFileMap] = useState(new Map<string, string>());\n\n const dispatch = useDispatch();\n\n const getConsolePanel = useCallback(\n () => panelManager.getLastUsedPanelOfType(ConsolePanel),\n [panelManager]\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) {\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, createIfNecessary = true) => {\n const { id: fileId } = fileMetadata;\n if (fileId && openFileMap.has(fileId)) {\n return openFileMap.get(fileId);\n }\n if (fileId && previewFileMap.has(fileId)) {\n return previewFileMap.get(fileId);\n }\n if (createIfNecessary) {\n return shortid.generate();\n }\n return null;\n },\n [openFileMap, previewFileMap]\n );\n\n const renamePanel = useCallback(\n (panelId, newTitle) => {\n LayoutUtils.renameComponent(layout.root, { id: panelId }, newTitle);\n },\n [layout.root]\n );\n\n const renameFilePanel = useCallback(\n (oldName, newName) => {\n log.debug('Rename file panel', oldName, newName);\n let panelId;\n if (openFileMap.has(oldName)) {\n panelId = openFileMap.get(oldName);\n openFileMap.delete(oldName);\n if (panelId != null) {\n openFileMap.set(newName, panelId);\n }\n }\n if (previewFileMap.has(oldName)) {\n panelId = previewFileMap.get(oldName);\n previewFileMap.delete(oldName);\n if (panelId != null) {\n previewFileMap.set(newName, panelId);\n }\n }\n\n if (!panelId) {\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 [openFileMap, previewFileMap, renamePanel]\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, isPreview) => {\n log.debug('registerFilePanel', panelId, fileMetadata, isPreview);\n if (!fileMetadata || !fileMetadata.id) {\n log.debug('Ignore empty file id', fileMetadata);\n return;\n }\n const { id: fileId } = fileMetadata;\n if (isPreview) {\n previewFileMap.set(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, FileUtils.getBaseName(itemName));\n } else {\n log.error(\n `File ${fileId} already associated with a different tab ${existingPanelId}`\n );\n }\n return;\n }\n\n openFileMap.set(fileId, panelId);\n\n // De-register preview tab\n if (previewFileMap.has(fileId)) {\n previewFileMap.delete(fileId);\n }\n },\n [openFileMap, previewFileMap, renameFilePanel]\n );\n\n const unregisterFilePanel = useCallback(\n (fileMetadata, isPreview) => {\n // Note: unregister event is triggered AFTER new register when switching from preview to edit mode\n // due to the LayoutUtils implementation (new tab added before deleting the old one)\n // This doesn't cause any issues because previews and editable files are stored in different maps,\n // but this situation could be completely avoided by sending an event to the tab\n // to make it switch from preview to edit mode without re-mounting and re-registering\n log.debug('unregisterFileTab', fileMetadata, isPreview);\n if (!fileMetadata || !fileMetadata.id) {\n log.debug('Ignore empty file id', fileMetadata);\n return;\n }\n const { id: fileId } = fileMetadata;\n if (isPreview) {\n previewFileMap.delete(fileId);\n return;\n }\n openFileMap.delete(fileId);\n },\n [openFileMap, previewFileMap]\n );\n\n const closeFilePanel = useCallback(\n fileMetadata => {\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 });\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 => {\n const { id: fileId } = fileMetadata;\n log.debug('fileIsOpen', fileMetadata, fileId, openFileMap);\n return fileId && 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 && 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) {\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',\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 },\n title,\n id: panelId,\n };\n },\n [getNotebookTitle, id]\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) {\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 (session, sessionLanguage, settings, fileMetadata, shouldFocus = false) => {\n log.debug('selectNotebook', fileMetadata, shouldFocus);\n const isFileOpen = fileIsOpen(fileMetadata);\n const isFileOpenAsPreview = fileIsOpenAsPreview(fileMetadata);\n\n // If the file is already open, just show and focus it if necessary\n if (isFileOpen) {\n showFilePanel(fileMetadata);\n if (shouldFocus) {\n const panelId = getPanelIdForFileMetadata(fileMetadata);\n focusPanelById(panelId);\n }\n return;\n }\n\n // If the file is already open as a preview and we're not focusing it, just show it\n // If we're focusing it, that means we need to replace the panel anyway with a non-preview panel, so just fall into the logic below\n if (isFileOpenAsPreview && !shouldFocus) {\n showFilePanel(fileMetadata);\n return;\n }\n\n const [previewTabId] = Array.from(previewFileMap.values());\n let panelId = null;\n let stack = null;\n if (previewTabId != null) {\n panelId = previewTabId;\n stack = LayoutUtils.getStackForConfig(layout.root, {\n component: NotebookPanel.COMPONENT,\n id: panelId,\n });\n }\n if (stack == null) {\n panelId = getPanelIdForFileMetadata(fileMetadata);\n stack = LayoutUtils.getStackForComponentTypes(layout.root, [\n NotebookPanel.COMPONENT,\n ]);\n }\n const config = makeConfig({\n id: panelId,\n settings,\n fileMetadata,\n session,\n sessionLanguage,\n isPreview: !shouldFocus,\n });\n LayoutUtils.openComponentInStack(stack, config);\n if (shouldFocus) {\n // Focus the tab we just opened if we're supposed to\n focusPanelById(panelId);\n }\n },\n [\n showFilePanel,\n fileIsOpen,\n fileIsOpenAsPreview,\n focusPanelById,\n getPanelIdForFileMetadata,\n layout.root,\n makeConfig,\n previewFileMap,\n ]\n );\n\n /** Attempts to send the text to a notebook matching the passed in settings */\n const sendToNotebook = useCallback(\n (session, sessionLanguage, settings = {}, createIfNecessary = true) => {\n const notebookPanel = panelManager.getLastUsedPanelOfType(NotebookPanel);\n if (notebookPanel && isNotebookPanel(notebookPanel)) {\n if (settings && settings.value && notebookPanel.notebook) {\n notebookPanel.notebook.append(settings.value);\n }\n } else if (createIfNecessary) {\n createNotebook(session, sessionLanguage, settings);\n }\n },\n [createNotebook, panelManager]\n );\n\n useEffect(() => {\n const cleanups = [\n registerComponent(ConsolePanel.COMPONENT, ConsolePanel),\n registerComponent(CommandHistoryPanel.COMPONENT, CommandHistoryPanel),\n registerComponent(FileExplorerPanel.COMPONENT, FileExplorerPanel),\n registerComponent(LogPanel.COMPONENT, LogPanel),\n registerComponent(NotebookPanel.COMPONENT, NotebookPanel),\n ];\n\n return () => {\n cleanups.forEach(cleanup => cleanup());\n };\n }, [registerComponent]);\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 <></>;\n};\n\nexport default ConsolePlugin;\n"],"file":"ConsolePlugin.js"}
|
|
1
|
+
{"version":3,"sources":["../src/ConsolePlugin.tsx"],"names":["assertIsDashboardPluginProps","LayoutUtils","useListener","FileUtils","Log","React","useCallback","useEffect","useRef","useState","useDispatch","shortid","ConsoleEvent","NotebookEvent","ConsolePanel","CommandHistoryPanel","FileExplorerPanel","LogPanel","NotebookPanel","setDashboardConsoleSettings","log","module","isNotebookPanel","panel","notebook","undefined","ConsolePlugin","props","id","layout","panelManager","registerComponent","notebookIndex","openFileMap","Map","previewFileMap","dispatch","getConsolePanel","getLastUsedPanelOfType","handleSendCommand","command","focus","execute","trimmedCommand","trim","info","consolePanel","WrappedComponent","error","debug","addCommand","handleSettingsChanged","consoleSettings","getNotebookFileName","language","extension","title","current","getPanelIdForFileMetadata","fileMetadata","createIfNecessary","fileId","has","get","generate","renamePanel","panelId","newTitle","renameComponent","root","renameFilePanel","oldName","newName","delete","set","debug2","getBaseName","showFilePanel","activateTab","registerFilePanel","isPreview","existingPanelId","itemName","unregisterFilePanel","closeFilePanel","closeComponent","getNotebookTitle","fileIsOpen","fileIsOpenAsPreview","focusPanelById","getOpenedPanelById","makeConfig","settings","session","sessionLanguage","panelState","type","component","COMPONENT","isFocusOnShow","localDashboardId","metadata","createNotebook","stack","getStackForComponentTypes","config","openComponentInStack","selectNotebook","shouldFocus","isFileOpen","isFileOpenAsPreview","previewTabId","Array","from","values","getStackForConfig","sendToNotebook","notebookPanel","value","append","cleanups","forEach","cleanup","eventHub","SEND_COMMAND","SETTINGS_CHANGED","CLOSE_FILE","CREATE_NOTEBOOK","SELECT_NOTEBOOK","RENAME","RENAME_FILE","SEND_TO_NOTEBOOK","REGISTER_FILE","UNREGISTER_FILE"],"mappings":"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","sourcesContent":["import { ScriptEditor } from '@deephaven/console';\nimport {\n assertIsDashboardPluginProps,\n DashboardPluginComponentProps,\n LayoutUtils,\n PanelComponent,\n useListener,\n} from '@deephaven/dashboard';\nimport { FileUtils } from '@deephaven/file-explorer';\nimport Log from '@deephaven/log';\nimport React, { useCallback, useEffect, useRef, useState } from 'react';\nimport { useDispatch } from 'react-redux';\nimport shortid from 'shortid';\nimport { ConsoleEvent, NotebookEvent } from './events';\nimport {\n ConsolePanel,\n CommandHistoryPanel,\n FileExplorerPanel,\n LogPanel,\n NotebookPanel,\n} from './panels';\nimport { setDashboardConsoleSettings } from './redux';\n\nconst log = Log.module('ConsolePlugin');\n\ntype NotebookPanelComponent = PanelComponent & {\n notebook: ScriptEditor;\n focus: () => void;\n};\n\nfunction isNotebookPanel(\n panel: PanelComponent\n): panel is NotebookPanelComponent {\n return (panel as NotebookPanelComponent).notebook !== undefined;\n}\n\nexport type ConsolePluginProps = Partial<DashboardPluginComponentProps>;\n\nexport const ConsolePlugin = (props: ConsolePluginProps): JSX.Element => {\n assertIsDashboardPluginProps(props);\n const { id, layout, panelManager, registerComponent } = props;\n const notebookIndex = useRef(0);\n // Map from file ID to panel ID\n const [openFileMap] = useState(new Map<string, string>());\n const [previewFileMap] = useState(new Map<string, string>());\n\n const dispatch = useDispatch();\n\n const getConsolePanel = useCallback(\n () => panelManager.getLastUsedPanelOfType(ConsolePanel),\n [panelManager]\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) {\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, createIfNecessary = true) => {\n const { id: fileId } = fileMetadata;\n if (fileId && openFileMap.has(fileId)) {\n return openFileMap.get(fileId);\n }\n if (fileId && previewFileMap.has(fileId)) {\n return previewFileMap.get(fileId);\n }\n if (createIfNecessary) {\n return shortid.generate();\n }\n return null;\n },\n [openFileMap, previewFileMap]\n );\n\n const renamePanel = useCallback(\n (panelId, newTitle) => {\n LayoutUtils.renameComponent(layout.root, { id: panelId }, newTitle);\n },\n [layout.root]\n );\n\n const renameFilePanel = useCallback(\n (oldName, newName) => {\n log.debug('Rename file panel', oldName, newName);\n let panelId;\n if (openFileMap.has(oldName)) {\n panelId = openFileMap.get(oldName);\n openFileMap.delete(oldName);\n if (panelId != null) {\n openFileMap.set(newName, panelId);\n }\n }\n if (previewFileMap.has(oldName)) {\n panelId = previewFileMap.get(oldName);\n previewFileMap.delete(oldName);\n if (panelId != null) {\n previewFileMap.set(newName, panelId);\n }\n }\n\n if (!panelId) {\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 [openFileMap, previewFileMap, renamePanel]\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, isPreview) => {\n log.debug('registerFilePanel', panelId, fileMetadata, isPreview);\n if (!fileMetadata || !fileMetadata.id) {\n log.debug('Ignore empty file id', fileMetadata);\n return;\n }\n const { id: fileId } = fileMetadata;\n if (isPreview) {\n previewFileMap.set(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, FileUtils.getBaseName(itemName));\n } else {\n log.error(\n `File ${fileId} already associated with a different tab ${existingPanelId}`\n );\n }\n return;\n }\n\n openFileMap.set(fileId, panelId);\n\n // De-register preview tab\n if (previewFileMap.has(fileId)) {\n previewFileMap.delete(fileId);\n }\n },\n [openFileMap, previewFileMap, renameFilePanel]\n );\n\n const unregisterFilePanel = useCallback(\n (fileMetadata, isPreview) => {\n // Note: unregister event is triggered AFTER new register when switching from preview to edit mode\n // due to the LayoutUtils implementation (new tab added before deleting the old one)\n // This doesn't cause any issues because previews and editable files are stored in different maps,\n // but this situation could be completely avoided by sending an event to the tab\n // to make it switch from preview to edit mode without re-mounting and re-registering\n log.debug('unregisterFileTab', fileMetadata, isPreview);\n if (!fileMetadata || !fileMetadata.id) {\n log.debug('Ignore empty file id', fileMetadata);\n return;\n }\n const { id: fileId } = fileMetadata;\n if (isPreview) {\n previewFileMap.delete(fileId);\n return;\n }\n openFileMap.delete(fileId);\n },\n [openFileMap, previewFileMap]\n );\n\n const closeFilePanel = useCallback(\n fileMetadata => {\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 });\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 => {\n const { id: fileId } = fileMetadata;\n log.debug('fileIsOpen', fileMetadata, fileId, openFileMap);\n return fileId && 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 && 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) {\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',\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 },\n title,\n id: panelId,\n };\n },\n [getNotebookTitle, id]\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) {\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 (session, sessionLanguage, settings, fileMetadata, shouldFocus = false) => {\n log.debug('selectNotebook', fileMetadata, shouldFocus);\n const isFileOpen = fileIsOpen(fileMetadata);\n const isFileOpenAsPreview = fileIsOpenAsPreview(fileMetadata);\n\n // If the file is already open, just show and focus it if necessary\n if (isFileOpen) {\n showFilePanel(fileMetadata);\n if (shouldFocus) {\n const panelId = getPanelIdForFileMetadata(fileMetadata);\n focusPanelById(panelId);\n }\n return;\n }\n\n // If the file is already open as a preview and we're not focusing it, just show it\n // If we're focusing it, that means we need to replace the panel anyway with a non-preview panel, so just fall into the logic below\n if (isFileOpenAsPreview && !shouldFocus) {\n showFilePanel(fileMetadata);\n return;\n }\n\n const [previewTabId] = Array.from(previewFileMap.values());\n let panelId = null;\n let stack = null;\n if (previewTabId != null) {\n panelId = previewTabId;\n stack = LayoutUtils.getStackForConfig(layout.root, {\n component: NotebookPanel.COMPONENT,\n id: panelId,\n });\n }\n if (stack == null) {\n panelId = getPanelIdForFileMetadata(fileMetadata);\n stack = LayoutUtils.getStackForComponentTypes(layout.root, [\n NotebookPanel.COMPONENT,\n ]);\n }\n const config = makeConfig({\n id: panelId,\n settings,\n fileMetadata,\n session,\n sessionLanguage,\n isPreview: !shouldFocus,\n });\n LayoutUtils.openComponentInStack(stack, config);\n if (shouldFocus) {\n // Focus the tab we just opened if we're supposed to\n focusPanelById(panelId);\n }\n },\n [\n showFilePanel,\n fileIsOpen,\n fileIsOpenAsPreview,\n focusPanelById,\n getPanelIdForFileMetadata,\n layout.root,\n makeConfig,\n previewFileMap,\n ]\n );\n\n /** Attempts to send the text to a notebook matching the passed in settings */\n const sendToNotebook = useCallback(\n (session, sessionLanguage, settings = {}, createIfNecessary = true) => {\n const notebookPanel = panelManager.getLastUsedPanelOfType(NotebookPanel);\n if (notebookPanel && isNotebookPanel(notebookPanel)) {\n if (settings && settings.value && notebookPanel.notebook) {\n notebookPanel.notebook.append(settings.value);\n }\n } else if (createIfNecessary) {\n createNotebook(session, sessionLanguage, settings);\n }\n },\n [createNotebook, panelManager]\n );\n\n useEffect(() => {\n const cleanups = [\n registerComponent(ConsolePanel.COMPONENT, ConsolePanel),\n registerComponent(CommandHistoryPanel.COMPONENT, CommandHistoryPanel),\n registerComponent(FileExplorerPanel.COMPONENT, FileExplorerPanel),\n registerComponent(LogPanel.COMPONENT, LogPanel),\n registerComponent(NotebookPanel.COMPONENT, NotebookPanel),\n ];\n\n return () => {\n cleanups.forEach(cleanup => cleanup());\n };\n }, [registerComponent]);\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 <></>;\n};\n\nexport default ConsolePlugin;\n"],"file":"ConsolePlugin.js"}
|
package/dist/FilterPlugin.d.ts
CHANGED
|
@@ -9,6 +9,7 @@ export declare type FilterChangeEvent = Column & {
|
|
|
9
9
|
timestamp: number;
|
|
10
10
|
excludePanelIds?: string[];
|
|
11
11
|
};
|
|
12
|
-
export declare
|
|
12
|
+
export declare type FilterPluginProps = Partial<DashboardPluginComponentProps>;
|
|
13
|
+
export declare const FilterPlugin: (props: FilterPluginProps) => JSX.Element;
|
|
13
14
|
export default FilterPlugin;
|
|
14
15
|
//# sourceMappingURL=FilterPlugin.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FilterPlugin.d.ts","sourceRoot":"","sources":["../src/FilterPlugin.tsx"],"names":[],"mappings":";AAGA,OAAO,
|
|
1
|
+
{"version":3,"file":"FilterPlugin.d.ts","sourceRoot":"","sources":["../src/FilterPlugin.tsx"],"names":[],"mappings":";AAGA,OAAO,EAEL,6BAA6B,EAK9B,MAAM,sBAAsB,CAAC;AAY9B,aAAK,MAAM,GAAG;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,oBAAY,iBAAiB,GAAG,MAAM,GAAG;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;CAC5B,CAAC;AAEF,oBAAY,iBAAiB,GAAG,OAAO,CAAC,6BAA6B,CAAC,CAAC;AAMvE,eAAO,MAAM,YAAY,UAAW,iBAAiB,KAAG,WAwOvD,CAAC;AAEF,eAAe,YAAY,CAAC"}
|
package/dist/FilterPlugin.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React, { useCallback, useEffect, useState } from 'react';
|
|
2
2
|
import { useDispatch } from 'react-redux';
|
|
3
3
|
import shortid from 'shortid';
|
|
4
|
-
import { LayoutUtils, PanelEvent, updateDashboardData, useListener } from '@deephaven/dashboard';
|
|
4
|
+
import { assertIsDashboardPluginProps, LayoutUtils, PanelEvent, updateDashboardData, useListener } from '@deephaven/dashboard';
|
|
5
5
|
import Log from '@deephaven/log';
|
|
6
6
|
import { TextUtils } from '@deephaven/utils';
|
|
7
7
|
import { InputFilterEvent } from "./events/index.js";
|
|
@@ -12,12 +12,13 @@ function flattenArray(accumulator, currentValue) {
|
|
|
12
12
|
return accumulator.concat(currentValue);
|
|
13
13
|
}
|
|
14
14
|
|
|
15
|
-
export var FilterPlugin =
|
|
15
|
+
export var FilterPlugin = props => {
|
|
16
|
+
assertIsDashboardPluginProps(props);
|
|
16
17
|
var {
|
|
17
18
|
id: localDashboardId,
|
|
18
19
|
layout,
|
|
19
20
|
registerComponent
|
|
20
|
-
} =
|
|
21
|
+
} = props;
|
|
21
22
|
var dispatch = useDispatch();
|
|
22
23
|
var [panelColumns] = useState(() => new Map());
|
|
23
24
|
var [panelFilters] = useState(() => new Map());
|
|
@@ -93,7 +94,7 @@ export var FilterPlugin = _ref => {
|
|
|
93
94
|
panelTables.delete(LayoutUtils.getIdFromPanel(panel));
|
|
94
95
|
sendUpdate();
|
|
95
96
|
}, [panelColumns, panelFilters, panelTables, sendUpdate]);
|
|
96
|
-
var handleOpenDropdown = useCallback(
|
|
97
|
+
var handleOpenDropdown = useCallback(_ref => {
|
|
97
98
|
var {
|
|
98
99
|
title = 'DropdownFilter',
|
|
99
100
|
metadata = {},
|
|
@@ -102,7 +103,7 @@ export var FilterPlugin = _ref => {
|
|
|
102
103
|
focusElement = LayoutUtils.DEFAULT_FOCUS_SELECTOR,
|
|
103
104
|
createNewStack = false,
|
|
104
105
|
dragEvent = null
|
|
105
|
-
} =
|
|
106
|
+
} = _ref;
|
|
106
107
|
var config = {
|
|
107
108
|
type: 'react-component',
|
|
108
109
|
component: DropdownFilterPanel.COMPONENT,
|
|
@@ -126,7 +127,7 @@ export var FilterPlugin = _ref => {
|
|
|
126
127
|
dragEvent
|
|
127
128
|
});
|
|
128
129
|
}, [layout, localDashboardId]);
|
|
129
|
-
var handleOpenInput = useCallback(
|
|
130
|
+
var handleOpenInput = useCallback(_ref2 => {
|
|
130
131
|
var {
|
|
131
132
|
title = 'InputFilter',
|
|
132
133
|
metadata = {},
|
|
@@ -135,7 +136,7 @@ export var FilterPlugin = _ref => {
|
|
|
135
136
|
focusElement = LayoutUtils.DEFAULT_FOCUS_SELECTOR,
|
|
136
137
|
createNewStack = false,
|
|
137
138
|
dragEvent = null
|
|
138
|
-
} =
|
|
139
|
+
} = _ref2;
|
|
139
140
|
var config = {
|
|
140
141
|
type: 'react-component',
|
|
141
142
|
component: InputFilterPanel.COMPONENT,
|
|
@@ -159,7 +160,7 @@ export var FilterPlugin = _ref => {
|
|
|
159
160
|
dragEvent
|
|
160
161
|
});
|
|
161
162
|
}, [layout, localDashboardId]);
|
|
162
|
-
var handleOpenFilterSetManager = useCallback(
|
|
163
|
+
var handleOpenFilterSetManager = useCallback(_ref3 => {
|
|
163
164
|
var {
|
|
164
165
|
title = 'FilterSets',
|
|
165
166
|
metadata = {},
|
|
@@ -168,7 +169,7 @@ export var FilterPlugin = _ref => {
|
|
|
168
169
|
focusElement = LayoutUtils.DEFAULT_FOCUS_SELECTOR,
|
|
169
170
|
createNewStack = false,
|
|
170
171
|
dragEvent = null
|
|
171
|
-
} =
|
|
172
|
+
} = _ref3;
|
|
172
173
|
var config = {
|
|
173
174
|
type: 'react-component',
|
|
174
175
|
component: FilterSetManagerPanel.COMPONENT,
|
package/dist/FilterPlugin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/FilterPlugin.tsx"],"names":["React","useCallback","useEffect","useState","useDispatch","shortid","LayoutUtils","PanelEvent","updateDashboardData","useListener","Log","TextUtils","InputFilterEvent","DropdownFilterPanel","FilterSetManagerPanel","InputFilterPanel","log","module","flattenArray","accumulator","currentValue","concat","FilterPlugin","id","localDashboardId","layout","registerComponent","dispatch","panelColumns","Map","panelFilters","panelTables","sendUpdate","columns","Array","from","values","reduce","sort","a","b","aName","toLower","name","bName","aType","type","bType","array","column","length","push","filters","timestamp","tableMap","debug","handleColumnsChanged","panel","debug2","set","handleFiltersChanged","handleTableChanged","table","getIdFromPanel","handlePanelUnmount","delete","handleOpenDropdown","title","metadata","panelState","generate","focusElement","DEFAULT_FOCUS_SELECTOR","createNewStack","dragEvent","config","component","COMPONENT","props","root","openComponent","handleOpenInput","handleOpenFilterSetManager","cleanups","forEach","cleanup","eventHub","COLUMNS_CHANGED","FILTERS_CHANGED","TABLE_CHANGED","OPEN_DROPDOWN","OPEN_INPUT","OPEN_FILTER_SET_MANAGER","UNMOUNT"],"mappings":"AAAA,OAAOA,KAAP,IAA2BC,WAA3B,EAAwCC,SAAxC,EAAmDC,QAAnD,QAAmE,OAAnE;AACA,SAASC,WAAT,QAA4B,aAA5B;AACA,OAAOC,OAAP,MAAoB,SAApB;AACA,SAEEC,WAFF,EAGEC,UAHF,EAIEC,mBAJF,EAKEC,WALF,QAMO,sBANP;AAOA,OAAOC,GAAP,MAAgB,gBAAhB;AACA,SAASC,SAAT,QAA0B,kBAA1B;SACSC,gB;SAEPC,mB,EACAC,qB,EACAC,gB;AAGF,IAAMC,GAAG,GAAGN,GAAG,CAACO,MAAJ,CAAW,cAAX,CAAZ;;AAaA,SAASC,YAAT,CAAyBC,WAAzB,EAA2CC,YAA3C,EAAuE;AACrE,SAAOD,WAAW,CAACE,MAAZ,CAAmBD,YAAnB,CAAP;AACD;;AAED,OAAO,IAAME,YAAY,GAAG,QAIsB;AAAA,MAJrB;AAC3BC,IAAAA,EAAE,EAAEC,gBADuB;AAE3BC,IAAAA,MAF2B;AAG3BC,IAAAA;AAH2B,GAIqB;AAChD,MAAMC,QAAQ,GAAGvB,WAAW,EAA5B;AACA,MAAM,CAACwB,YAAD,IAAiBzB,QAAQ,CAAC,MAAM,IAAI0B,GAAJ,EAAP,CAA/B;AACA,MAAM,CAACC,YAAD,IAAiB3B,QAAQ,CAC7B,MAAM,IAAI0B,GAAJ,EADuB,CAA/B;AAGA,MAAM,CAACE,WAAD,IAAgB5B,QAAQ,CAAC,MAAM,IAAI0B,GAAJ,EAAP,CAA9B;AAEA,MAAMG,UAAU,GAAG/B,WAAW,CAAC,MAAM;AACnC,QAAMgC,OAAO,GAAGC,KAAK,CAACC,IAAN,CAAWP,YAAY,CAACQ,MAAb,EAAX,EACbC,MADa,CACNnB,YADM,EACQ,EADR,EAEboB,IAFa,CAER,CAACC,CAAD,EAAIC,CAAJ,KAAU;AACd,UAAMC,KAAK,GAAG9B,SAAS,CAAC+B,OAAV,CAAkBH,CAAC,CAACI,IAApB,CAAd;AACA,UAAMC,KAAK,GAAGjC,SAAS,CAAC+B,OAAV,CAAkBF,CAAC,CAACG,IAApB,CAAd;;AACA,UAAIF,KAAK,KAAKG,KAAd,EAAqB;AACnB,eAAOH,KAAK,GAAGG,KAAR,GAAgB,CAAhB,GAAoB,CAAC,CAA5B;AACD;;AAED,UAAMC,KAAK,GAAGlC,SAAS,CAAC+B,OAAV,CAAkBH,CAAC,CAACO,IAApB,CAAd;AACA,UAAMC,KAAK,GAAGpC,SAAS,CAAC+B,OAAV,CAAkBF,CAAC,CAACM,IAApB,CAAd;;AACA,UAAID,KAAK,KAAKE,KAAd,EAAqB;AACnB,eAAOF,KAAK,GAAGE,KAAR,GAAgB,CAAhB,GAAoB,CAAC,CAA5B;AACD;;AAED,aAAO,CAAP;AACD,KAhBa,EAiBbV,MAjBa,CAiBN,CAACW,KAAD,EAAQC,MAAR,KAAmB;AACzB,UACED,KAAK,CAACE,MAAN,KAAiB,CAAjB,IACAvC,SAAS,CAAC+B,OAAV,CAAkBM,KAAK,CAACA,KAAK,CAACE,MAAN,GAAe,CAAhB,CAAL,CAAwBP,IAA1C,MACEhC,SAAS,CAAC+B,OAAV,CAAkBO,MAAM,CAACN,IAAzB,CAFF,IAGAhC,SAAS,CAAC+B,OAAV,CAAkBM,KAAK,CAACA,KAAK,CAACE,MAAN,GAAe,CAAhB,CAAL,CAAwBJ,IAA1C,MACEnC,SAAS,CAAC+B,OAAV,CAAkBO,MAAM,CAACH,IAAzB,CALJ,EAME;AACAE,QAAAA,KAAK,CAACG,IAAN,CAAWF,MAAX;AACD;;AAED,aAAOD,KAAP;AACD,KA7Ba,EA6BX,EA7BW,CAAhB;AA+BA,QAAMI,OAAO,GAAGlB,KAAK,CAACC,IAAN,CAAWL,YAAY,CAACM,MAAb,EAAX,EACbC,MADa,CACNnB,YADM,EACQ,EADR,EAEboB,IAFa,CAER,CAACC,CAAD,EAAIC,CAAJ,KAAUD,CAAC,CAACc,SAAF,GAAcb,CAAC,CAACa,SAFlB,CAAhB;AAGA,QAAMC,QAAQ,GAAG,IAAIzB,GAAJ,CAAQE,WAAR,CAAjB;AAEAf,IAAAA,GAAG,CAACuC,KAAJ,CAAU,YAAV,EAAwB;AAAEtB,MAAAA,OAAF;AAAWmB,MAAAA,OAAX;AAAoBE,MAAAA;AAApB,KAAxB;AACA3B,IAAAA,QAAQ,CACNnB,mBAAmB,CAACgB,gBAAD,EAAmB;AAAES,MAAAA,OAAF;AAAWmB,MAAAA,OAAX;AAAoBE,MAAAA;AAApB,KAAnB,CADb,CAAR;AAGD,GAzC6B,EAyC3B,CAAC3B,QAAD,EAAWH,gBAAX,EAA6BI,YAA7B,EAA2CE,YAA3C,EAAyDC,WAAzD,CAzC2B,CAA9B;AA2CA;AACF;AACA;AACA;AACA;;AACE,MAAMyB,oBAAoB,GAAGvD,WAAW,CACtC,CAACwD,KAAD,EAAmBxB,OAAnB,KAA+B;AAC7BjB,IAAAA,GAAG,CAAC0C,MAAJ,CAAW,sBAAX,EAAmCD,KAAnC,EAA0CxB,OAA1C;AACAL,IAAAA,YAAY,CAAC+B,GAAb,CAAiBF,KAAjB,EAAwB,GAAGpC,MAAH,CAAUY,OAAV,CAAxB;AACAD,IAAAA,UAAU;AACX,GALqC,EAMtC,CAACJ,YAAD,EAAeI,UAAf,CANsC,CAAxC;AASA;AACF;AACA;AACA;AACA;;AACE,MAAM4B,oBAAoB,GAAG3D,WAAW,CACtC,CAACwD,KAAD,EAAQL,OAAR,KAAoB;AAClBpC,IAAAA,GAAG,CAAC0C,MAAJ,CAAW,sBAAX,EAAmCD,KAAnC,EAA0CL,OAA1C;AACAtB,IAAAA,YAAY,CAAC6B,GAAb,CAAiBF,KAAjB,EAAwB,GAAGpC,MAAH,CAAU+B,OAAV,CAAxB;AACApB,IAAAA,UAAU;AACX,GALqC,EAMtC,CAACF,YAAD,EAAeE,UAAf,CANsC,CAAxC;AASA,MAAM6B,kBAAkB,GAAG5D,WAAW,CACpC,CAACwD,KAAD,EAAQK,KAAR,KAAkB;AAChB9C,IAAAA,GAAG,CAAC0C,MAAJ,CAAW,oBAAX,EAAiCD,KAAjC,EAAwCK,KAAxC;AACA/B,IAAAA,WAAW,CAAC4B,GAAZ,CAAgBrD,WAAW,CAACyD,cAAZ,CAA2BN,KAA3B,CAAhB,EAAmDK,KAAnD;AACA9B,IAAAA,UAAU;AACX,GALmC,EAMpC,CAACD,WAAD,EAAcC,UAAd,CANoC,CAAtC;AASA,MAAMgC,kBAAkB,GAAG/D,WAAW,CACpCwD,KAAK,IAAI;AACPzC,IAAAA,GAAG,CAAC0C,MAAJ,CAAW,oBAAX,EAAiCD,KAAjC;AACA7B,IAAAA,YAAY,CAACqC,MAAb,CAAoBR,KAApB;AACA3B,IAAAA,YAAY,CAACmC,MAAb,CAAoBR,KAApB;AACA1B,IAAAA,WAAW,CAACkC,MAAZ,CAAmB3D,WAAW,CAACyD,cAAZ,CAA2BN,KAA3B,CAAnB;AACAzB,IAAAA,UAAU;AACX,GAPmC,EAQpC,CAACJ,YAAD,EAAeE,YAAf,EAA6BC,WAA7B,EAA0CC,UAA1C,CARoC,CAAtC;AAWA,MAAMkC,kBAAkB,GAAGjE,WAAW,CACpC,SAQM;AAAA,QARL;AACCkE,MAAAA,KAAK,GAAG,gBADT;AAECC,MAAAA,QAAQ,GAAG,EAFZ;AAGCC,MAAAA,UAAU,GAAG,IAHd;AAIC9C,MAAAA,EAAE,GAAGlB,OAAO,CAACiE,QAAR,EAJN;AAKCC,MAAAA,YAAY,GAAGjE,WAAW,CAACkE,sBAL5B;AAMCC,MAAAA,cAAc,GAAG,KANlB;AAOCC,MAAAA,SAAS,GAAG;AAPb,KAQK;AACJ,QAAMC,MAAM,GAAG;AACb7B,MAAAA,IAAI,EAAE,iBADO;AAEb8B,MAAAA,SAAS,EAAE/D,mBAAmB,CAACgE,SAFlB;AAGbC,MAAAA,KAAK,EAAE;AAAEvD,QAAAA,EAAF;AAAM6C,QAAAA,QAAN;AAAgBC,QAAAA,UAAhB;AAA4B7C,QAAAA;AAA5B,OAHM;AAIb2C,MAAAA,KAJa;AAKb5C,MAAAA;AALa,KAAf;AAQA,QAAM;AAAEwD,MAAAA;AAAF,QAAWtD,MAAjB;AACAnB,IAAAA,WAAW,CAAC0E,aAAZ,CAA0B;AACxBD,MAAAA,IADwB;AAExBJ,MAAAA,MAFwB;AAGxBJ,MAAAA,YAHwB;AAIxBE,MAAAA,cAJwB;AAKxBC,MAAAA;AALwB,KAA1B;AAOD,GA1BmC,EA2BpC,CAACjD,MAAD,EAASD,gBAAT,CA3BoC,CAAtC;AA8BA,MAAMyD,eAAe,GAAGhF,WAAW,CACjC,SAQM;AAAA,QARL;AACCkE,MAAAA,KAAK,GAAG,aADT;AAECC,MAAAA,QAAQ,GAAG,EAFZ;AAGCC,MAAAA,UAAU,GAAG,IAHd;AAIC9C,MAAAA,EAAE,GAAGlB,OAAO,CAACiE,QAAR,EAJN;AAKCC,MAAAA,YAAY,GAAGjE,WAAW,CAACkE,sBAL5B;AAMCC,MAAAA,cAAc,GAAG,KANlB;AAOCC,MAAAA,SAAS,GAAG;AAPb,KAQK;AACJ,QAAMC,MAAM,GAAG;AACb7B,MAAAA,IAAI,EAAE,iBADO;AAEb8B,MAAAA,SAAS,EAAE7D,gBAAgB,CAAC8D,SAFf;AAGbC,MAAAA,KAAK,EAAE;AAAEvD,QAAAA,EAAF;AAAM6C,QAAAA,QAAN;AAAgBC,QAAAA,UAAhB;AAA4B7C,QAAAA;AAA5B,OAHM;AAIb2C,MAAAA,KAJa;AAKb5C,MAAAA;AALa,KAAf;AAQA,QAAM;AAAEwD,MAAAA;AAAF,QAAWtD,MAAjB;AACAnB,IAAAA,WAAW,CAAC0E,aAAZ,CAA0B;AACxBD,MAAAA,IADwB;AAExBJ,MAAAA,MAFwB;AAGxBJ,MAAAA,YAHwB;AAIxBE,MAAAA,cAJwB;AAKxBC,MAAAA;AALwB,KAA1B;AAOD,GA1BgC,EA2BjC,CAACjD,MAAD,EAASD,gBAAT,CA3BiC,CAAnC;AA8BA,MAAM0D,0BAA0B,GAAGjF,WAAW,CAC5C,SAQM;AAAA,QARL;AACCkE,MAAAA,KAAK,GAAG,YADT;AAECC,MAAAA,QAAQ,GAAG,EAFZ;AAGCC,MAAAA,UAAU,GAAG,IAHd;AAIC9C,MAAAA,EAAE,GAAGlB,OAAO,CAACiE,QAAR,EAJN;AAKCC,MAAAA,YAAY,GAAGjE,WAAW,CAACkE,sBAL5B;AAMCC,MAAAA,cAAc,GAAG,KANlB;AAOCC,MAAAA,SAAS,GAAG;AAPb,KAQK;AACJ,QAAMC,MAAM,GAAG;AACb7B,MAAAA,IAAI,EAAE,iBADO;AAEb8B,MAAAA,SAAS,EAAE9D,qBAAqB,CAAC+D,SAFpB;AAGbC,MAAAA,KAAK,EAAE;AAAEvD,QAAAA,EAAF;AAAM6C,QAAAA,QAAN;AAAgBC,QAAAA,UAAhB;AAA4B7C,QAAAA;AAA5B,OAHM;AAIb2C,MAAAA,KAJa;AAKb5C,MAAAA;AALa,KAAf;AAQA,QAAM;AAAEwD,MAAAA;AAAF,QAAWtD,MAAjB;AACAnB,IAAAA,WAAW,CAAC0E,aAAZ,CAA0B;AACxBD,MAAAA,IADwB;AAExBJ,MAAAA,MAFwB;AAGxBJ,MAAAA,YAHwB;AAIxBE,MAAAA,cAJwB;AAKxBC,MAAAA;AALwB,KAA1B;AAOD,GA1B2C,EA2B5C,CAACjD,MAAD,EAASD,gBAAT,CA3B4C,CAA9C;AA8BAtB,EAAAA,SAAS,CAAC,MAAM;AACd,QAAMiF,QAAQ,GAAG,CACfzD,iBAAiB,CAACb,mBAAmB,CAACgE,SAArB,EAAgChE,mBAAhC,CADF,EAEfa,iBAAiB,CAACX,gBAAgB,CAAC8D,SAAlB,EAA6B9D,gBAA7B,CAFF,EAGfW,iBAAiB,CAACZ,qBAAqB,CAAC+D,SAAvB,EAAkC/D,qBAAlC,CAHF,CAAjB;AAMA,WAAO,MAAM;AACXqE,MAAAA,QAAQ,CAACC,OAAT,CAAiBC,OAAO,IAAIA,OAAO,EAAnC;AACD,KAFD;AAGD,GAVQ,EAUN,CAAC3D,iBAAD,CAVM,CAAT;AAYAjB,EAAAA,WAAW,CACTgB,MAAM,CAAC6D,QADE,EAET1E,gBAAgB,CAAC2E,eAFR,EAGT/B,oBAHS,CAAX;AAKA/C,EAAAA,WAAW,CACTgB,MAAM,CAAC6D,QADE,EAET1E,gBAAgB,CAAC4E,eAFR,EAGT5B,oBAHS,CAAX;AAKAnD,EAAAA,WAAW,CACTgB,MAAM,CAAC6D,QADE,EAET1E,gBAAgB,CAAC6E,aAFR,EAGT5B,kBAHS,CAAX;AAKApD,EAAAA,WAAW,CACTgB,MAAM,CAAC6D,QADE,EAET1E,gBAAgB,CAAC8E,aAFR,EAGTxB,kBAHS,CAAX;AAKAzD,EAAAA,WAAW,CAACgB,MAAM,CAAC6D,QAAR,EAAkB1E,gBAAgB,CAAC+E,UAAnC,EAA+CV,eAA/C,CAAX;AACAxE,EAAAA,WAAW,CACTgB,MAAM,CAAC6D,QADE,EAET1E,gBAAgB,CAACgF,uBAFR,EAGTV,0BAHS,CAAX;AAKAzE,EAAAA,WAAW,CAACgB,MAAM,CAAC6D,QAAR,EAAkB/E,UAAU,CAACsF,OAA7B,EAAsC7B,kBAAtC,CAAX;AAEA,sBAAO,yCAAP;AACD,CA1OM;AA4OP,eAAe1C,YAAf","sourcesContent":["import React, { Component, useCallback, useEffect, useState } from 'react';\nimport { useDispatch } from 'react-redux';\nimport shortid from 'shortid';\nimport {\n DashboardPluginComponentProps,\n LayoutUtils,\n PanelEvent,\n updateDashboardData,\n useListener,\n} from '@deephaven/dashboard';\nimport Log from '@deephaven/log';\nimport { TextUtils } from '@deephaven/utils';\nimport { InputFilterEvent } from './events';\nimport {\n DropdownFilterPanel,\n FilterSetManagerPanel,\n InputFilterPanel,\n} from './panels';\n\nconst log = Log.module('FilterPlugin');\n\ntype Column = {\n name: string;\n type: string;\n};\n\nexport type FilterChangeEvent = Column & {\n value: string;\n timestamp: number;\n excludePanelIds?: string[];\n};\n\nfunction flattenArray<T>(accumulator: T[], currentValue: T | T[]): T[] {\n return accumulator.concat(currentValue);\n}\n\nexport const FilterPlugin = ({\n id: localDashboardId,\n layout,\n registerComponent,\n}: DashboardPluginComponentProps): JSX.Element => {\n const dispatch = useDispatch();\n const [panelColumns] = useState(() => new Map<Component, Column[]>());\n const [panelFilters] = useState(\n () => new Map<Component, FilterChangeEvent[]>()\n );\n const [panelTables] = useState(() => new Map());\n\n const sendUpdate = useCallback(() => {\n const columns = Array.from(panelColumns.values())\n .reduce(flattenArray, [] as Column[])\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 Column[]);\n\n const filters = Array.from(panelFilters.values())\n .reduce(flattenArray, [] as FilterChangeEvent[])\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 panel The component that's emitting the filter change\n * @param {Column|Array<Column>} columns The columns in this panel\n */\n const handleColumnsChanged = useCallback(\n (panel: Component, columns) => {\n log.debug2('handleColumnsChanged', panel, columns);\n panelColumns.set(panel, [].concat(columns) as Column[]);\n sendUpdate();\n },\n [panelColumns, sendUpdate]\n );\n\n /**\n * Handler for the FILTERS_CHANGED event.\n * @param {Component} panel The component that's emitting the filter change\n * @param {FilterChangeEvent|Array<FilterChangeEvent>} filters The input filters set by the panel\n */\n const handleFiltersChanged = useCallback(\n (panel, filters) => {\n log.debug2('handleFiltersChanged', panel, filters);\n panelFilters.set(panel, [].concat(filters) as FilterChangeEvent[]);\n sendUpdate();\n },\n [panelFilters, sendUpdate]\n );\n\n const handleTableChanged = useCallback(\n (panel, table) => {\n log.debug2('handleTableChanged', panel, table);\n panelTables.set(LayoutUtils.getIdFromPanel(panel), table);\n sendUpdate();\n },\n [panelTables, sendUpdate]\n );\n\n const handlePanelUnmount = useCallback(\n panel => {\n log.debug2('handlePanelUnmount', panel);\n panelColumns.delete(panel);\n panelFilters.delete(panel);\n panelTables.delete(LayoutUtils.getIdFromPanel(panel));\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 = shortid.generate(),\n focusElement = LayoutUtils.DEFAULT_FOCUS_SELECTOR,\n createNewStack = false,\n dragEvent = null,\n }) => {\n const config = {\n type: 'react-component',\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 = shortid.generate(),\n focusElement = LayoutUtils.DEFAULT_FOCUS_SELECTOR,\n createNewStack = false,\n dragEvent = null,\n }) => {\n const config = {\n type: 'react-component',\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 = shortid.generate(),\n focusElement = LayoutUtils.DEFAULT_FOCUS_SELECTOR,\n createNewStack = false,\n dragEvent = null,\n }) => {\n const config = {\n type: 'react-component',\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 const cleanups = [\n registerComponent(DropdownFilterPanel.COMPONENT, DropdownFilterPanel),\n registerComponent(InputFilterPanel.COMPONENT, InputFilterPanel),\n registerComponent(FilterSetManagerPanel.COMPONENT, FilterSetManagerPanel),\n ];\n\n return () => {\n cleanups.forEach(cleanup => cleanup());\n };\n }, [registerComponent]);\n\n useListener(\n layout.eventHub,\n InputFilterEvent.COLUMNS_CHANGED,\n handleColumnsChanged\n );\n useListener(\n layout.eventHub,\n InputFilterEvent.FILTERS_CHANGED,\n handleFiltersChanged\n );\n useListener(\n layout.eventHub,\n InputFilterEvent.TABLE_CHANGED,\n handleTableChanged\n );\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 <></>;\n};\n\nexport default FilterPlugin;\n"],"file":"FilterPlugin.js"}
|
|
1
|
+
{"version":3,"sources":["../src/FilterPlugin.tsx"],"names":["React","useCallback","useEffect","useState","useDispatch","shortid","assertIsDashboardPluginProps","LayoutUtils","PanelEvent","updateDashboardData","useListener","Log","TextUtils","InputFilterEvent","DropdownFilterPanel","FilterSetManagerPanel","InputFilterPanel","log","module","flattenArray","accumulator","currentValue","concat","FilterPlugin","props","id","localDashboardId","layout","registerComponent","dispatch","panelColumns","Map","panelFilters","panelTables","sendUpdate","columns","Array","from","values","reduce","sort","a","b","aName","toLower","name","bName","aType","type","bType","array","column","length","push","filters","timestamp","tableMap","debug","handleColumnsChanged","panel","debug2","set","handleFiltersChanged","handleTableChanged","table","getIdFromPanel","handlePanelUnmount","delete","handleOpenDropdown","title","metadata","panelState","generate","focusElement","DEFAULT_FOCUS_SELECTOR","createNewStack","dragEvent","config","component","COMPONENT","root","openComponent","handleOpenInput","handleOpenFilterSetManager","cleanups","forEach","cleanup","eventHub","COLUMNS_CHANGED","FILTERS_CHANGED","TABLE_CHANGED","OPEN_DROPDOWN","OPEN_INPUT","OPEN_FILTER_SET_MANAGER","UNMOUNT"],"mappings":"AAAA,OAAOA,KAAP,IAA2BC,WAA3B,EAAwCC,SAAxC,EAAmDC,QAAnD,QAAmE,OAAnE;AACA,SAASC,WAAT,QAA4B,aAA5B;AACA,OAAOC,OAAP,MAAoB,SAApB;AACA,SACEC,4BADF,EAGEC,WAHF,EAIEC,UAJF,EAKEC,mBALF,EAMEC,WANF,QAOO,sBAPP;AAQA,OAAOC,GAAP,MAAgB,gBAAhB;AACA,SAASC,SAAT,QAA0B,kBAA1B;SACSC,gB;SAEPC,mB,EACAC,qB,EACAC,gB;AAGF,IAAMC,GAAG,GAAGN,GAAG,CAACO,MAAJ,CAAW,cAAX,CAAZ;;AAeA,SAASC,YAAT,CAAyBC,WAAzB,EAA2CC,YAA3C,EAAuE;AACrE,SAAOD,WAAW,CAACE,MAAZ,CAAmBD,YAAnB,CAAP;AACD;;AAED,OAAO,IAAME,YAAY,GAAIC,KAAD,IAA2C;AACrElB,EAAAA,4BAA4B,CAACkB,KAAD,CAA5B;AACA,MAAM;AAAEC,IAAAA,EAAE,EAAEC,gBAAN;AAAwBC,IAAAA,MAAxB;AAAgCC,IAAAA;AAAhC,MAAsDJ,KAA5D;AACA,MAAMK,QAAQ,GAAGzB,WAAW,EAA5B;AACA,MAAM,CAAC0B,YAAD,IAAiB3B,QAAQ,CAAC,MAAM,IAAI4B,GAAJ,EAAP,CAA/B;AACA,MAAM,CAACC,YAAD,IAAiB7B,QAAQ,CAC7B,MAAM,IAAI4B,GAAJ,EADuB,CAA/B;AAGA,MAAM,CAACE,WAAD,IAAgB9B,QAAQ,CAAC,MAAM,IAAI4B,GAAJ,EAAP,CAA9B;AAEA,MAAMG,UAAU,GAAGjC,WAAW,CAAC,MAAM;AACnC,QAAMkC,OAAO,GAAGC,KAAK,CAACC,IAAN,CAAWP,YAAY,CAACQ,MAAb,EAAX,EACbC,MADa,CACNpB,YADM,EACQ,EADR,EAEbqB,IAFa,CAER,CAACC,CAAD,EAAIC,CAAJ,KAAU;AACd,UAAMC,KAAK,GAAG/B,SAAS,CAACgC,OAAV,CAAkBH,CAAC,CAACI,IAApB,CAAd;AACA,UAAMC,KAAK,GAAGlC,SAAS,CAACgC,OAAV,CAAkBF,CAAC,CAACG,IAApB,CAAd;;AACA,UAAIF,KAAK,KAAKG,KAAd,EAAqB;AACnB,eAAOH,KAAK,GAAGG,KAAR,GAAgB,CAAhB,GAAoB,CAAC,CAA5B;AACD;;AAED,UAAMC,KAAK,GAAGnC,SAAS,CAACgC,OAAV,CAAkBH,CAAC,CAACO,IAApB,CAAd;AACA,UAAMC,KAAK,GAAGrC,SAAS,CAACgC,OAAV,CAAkBF,CAAC,CAACM,IAApB,CAAd;;AACA,UAAID,KAAK,KAAKE,KAAd,EAAqB;AACnB,eAAOF,KAAK,GAAGE,KAAR,GAAgB,CAAhB,GAAoB,CAAC,CAA5B;AACD;;AAED,aAAO,CAAP;AACD,KAhBa,EAiBbV,MAjBa,CAiBN,CAACW,KAAD,EAAQC,MAAR,KAAmB;AACzB,UACED,KAAK,CAACE,MAAN,KAAiB,CAAjB,IACAxC,SAAS,CAACgC,OAAV,CAAkBM,KAAK,CAACA,KAAK,CAACE,MAAN,GAAe,CAAhB,CAAL,CAAwBP,IAA1C,MACEjC,SAAS,CAACgC,OAAV,CAAkBO,MAAM,CAACN,IAAzB,CAFF,IAGAjC,SAAS,CAACgC,OAAV,CAAkBM,KAAK,CAACA,KAAK,CAACE,MAAN,GAAe,CAAhB,CAAL,CAAwBJ,IAA1C,MACEpC,SAAS,CAACgC,OAAV,CAAkBO,MAAM,CAACH,IAAzB,CALJ,EAME;AACAE,QAAAA,KAAK,CAACG,IAAN,CAAWF,MAAX;AACD;;AAED,aAAOD,KAAP;AACD,KA7Ba,EA6BX,EA7BW,CAAhB;AA+BA,QAAMI,OAAO,GAAGlB,KAAK,CAACC,IAAN,CAAWL,YAAY,CAACM,MAAb,EAAX,EACbC,MADa,CACNpB,YADM,EACQ,EADR,EAEbqB,IAFa,CAER,CAACC,CAAD,EAAIC,CAAJ,KAAUD,CAAC,CAACc,SAAF,GAAcb,CAAC,CAACa,SAFlB,CAAhB;AAGA,QAAMC,QAAQ,GAAG,IAAIzB,GAAJ,CAAQE,WAAR,CAAjB;AAEAhB,IAAAA,GAAG,CAACwC,KAAJ,CAAU,YAAV,EAAwB;AAAEtB,MAAAA,OAAF;AAAWmB,MAAAA,OAAX;AAAoBE,MAAAA;AAApB,KAAxB;AACA3B,IAAAA,QAAQ,CACNpB,mBAAmB,CAACiB,gBAAD,EAAmB;AAAES,MAAAA,OAAF;AAAWmB,MAAAA,OAAX;AAAoBE,MAAAA;AAApB,KAAnB,CADb,CAAR;AAGD,GAzC6B,EAyC3B,CAAC3B,QAAD,EAAWH,gBAAX,EAA6BI,YAA7B,EAA2CE,YAA3C,EAAyDC,WAAzD,CAzC2B,CAA9B;AA2CA;AACF;AACA;AACA;AACA;;AACE,MAAMyB,oBAAoB,GAAGzD,WAAW,CACtC,CAAC0D,KAAD,EAAmBxB,OAAnB,KAA+B;AAC7BlB,IAAAA,GAAG,CAAC2C,MAAJ,CAAW,sBAAX,EAAmCD,KAAnC,EAA0CxB,OAA1C;AACAL,IAAAA,YAAY,CAAC+B,GAAb,CAAiBF,KAAjB,EAAwB,GAAGrC,MAAH,CAAUa,OAAV,CAAxB;AACAD,IAAAA,UAAU;AACX,GALqC,EAMtC,CAACJ,YAAD,EAAeI,UAAf,CANsC,CAAxC;AASA;AACF;AACA;AACA;AACA;;AACE,MAAM4B,oBAAoB,GAAG7D,WAAW,CACtC,CAAC0D,KAAD,EAAQL,OAAR,KAAoB;AAClBrC,IAAAA,GAAG,CAAC2C,MAAJ,CAAW,sBAAX,EAAmCD,KAAnC,EAA0CL,OAA1C;AACAtB,IAAAA,YAAY,CAAC6B,GAAb,CAAiBF,KAAjB,EAAwB,GAAGrC,MAAH,CAAUgC,OAAV,CAAxB;AACApB,IAAAA,UAAU;AACX,GALqC,EAMtC,CAACF,YAAD,EAAeE,UAAf,CANsC,CAAxC;AASA,MAAM6B,kBAAkB,GAAG9D,WAAW,CACpC,CAAC0D,KAAD,EAAQK,KAAR,KAAkB;AAChB/C,IAAAA,GAAG,CAAC2C,MAAJ,CAAW,oBAAX,EAAiCD,KAAjC,EAAwCK,KAAxC;AACA/B,IAAAA,WAAW,CAAC4B,GAAZ,CAAgBtD,WAAW,CAAC0D,cAAZ,CAA2BN,KAA3B,CAAhB,EAAmDK,KAAnD;AACA9B,IAAAA,UAAU;AACX,GALmC,EAMpC,CAACD,WAAD,EAAcC,UAAd,CANoC,CAAtC;AASA,MAAMgC,kBAAkB,GAAGjE,WAAW,CACpC0D,KAAK,IAAI;AACP1C,IAAAA,GAAG,CAAC2C,MAAJ,CAAW,oBAAX,EAAiCD,KAAjC;AACA7B,IAAAA,YAAY,CAACqC,MAAb,CAAoBR,KAApB;AACA3B,IAAAA,YAAY,CAACmC,MAAb,CAAoBR,KAApB;AACA1B,IAAAA,WAAW,CAACkC,MAAZ,CAAmB5D,WAAW,CAAC0D,cAAZ,CAA2BN,KAA3B,CAAnB;AACAzB,IAAAA,UAAU;AACX,GAPmC,EAQpC,CAACJ,YAAD,EAAeE,YAAf,EAA6BC,WAA7B,EAA0CC,UAA1C,CARoC,CAAtC;AAWA,MAAMkC,kBAAkB,GAAGnE,WAAW,CACpC,QAQM;AAAA,QARL;AACCoE,MAAAA,KAAK,GAAG,gBADT;AAECC,MAAAA,QAAQ,GAAG,EAFZ;AAGCC,MAAAA,UAAU,GAAG,IAHd;AAIC9C,MAAAA,EAAE,GAAGpB,OAAO,CAACmE,QAAR,EAJN;AAKCC,MAAAA,YAAY,GAAGlE,WAAW,CAACmE,sBAL5B;AAMCC,MAAAA,cAAc,GAAG,KANlB;AAOCC,MAAAA,SAAS,GAAG;AAPb,KAQK;AACJ,QAAMC,MAAM,GAAG;AACb7B,MAAAA,IAAI,EAAE,iBADO;AAEb8B,MAAAA,SAAS,EAAEhE,mBAAmB,CAACiE,SAFlB;AAGbvD,MAAAA,KAAK,EAAE;AAAEC,QAAAA,EAAF;AAAM6C,QAAAA,QAAN;AAAgBC,QAAAA,UAAhB;AAA4B7C,QAAAA;AAA5B,OAHM;AAIb2C,MAAAA,KAJa;AAKb5C,MAAAA;AALa,KAAf;AAQA,QAAM;AAAEuD,MAAAA;AAAF,QAAWrD,MAAjB;AACApB,IAAAA,WAAW,CAAC0E,aAAZ,CAA0B;AACxBD,MAAAA,IADwB;AAExBH,MAAAA,MAFwB;AAGxBJ,MAAAA,YAHwB;AAIxBE,MAAAA,cAJwB;AAKxBC,MAAAA;AALwB,KAA1B;AAOD,GA1BmC,EA2BpC,CAACjD,MAAD,EAASD,gBAAT,CA3BoC,CAAtC;AA8BA,MAAMwD,eAAe,GAAGjF,WAAW,CACjC,SAQM;AAAA,QARL;AACCoE,MAAAA,KAAK,GAAG,aADT;AAECC,MAAAA,QAAQ,GAAG,EAFZ;AAGCC,MAAAA,UAAU,GAAG,IAHd;AAIC9C,MAAAA,EAAE,GAAGpB,OAAO,CAACmE,QAAR,EAJN;AAKCC,MAAAA,YAAY,GAAGlE,WAAW,CAACmE,sBAL5B;AAMCC,MAAAA,cAAc,GAAG,KANlB;AAOCC,MAAAA,SAAS,GAAG;AAPb,KAQK;AACJ,QAAMC,MAAM,GAAG;AACb7B,MAAAA,IAAI,EAAE,iBADO;AAEb8B,MAAAA,SAAS,EAAE9D,gBAAgB,CAAC+D,SAFf;AAGbvD,MAAAA,KAAK,EAAE;AAAEC,QAAAA,EAAF;AAAM6C,QAAAA,QAAN;AAAgBC,QAAAA,UAAhB;AAA4B7C,QAAAA;AAA5B,OAHM;AAIb2C,MAAAA,KAJa;AAKb5C,MAAAA;AALa,KAAf;AAQA,QAAM;AAAEuD,MAAAA;AAAF,QAAWrD,MAAjB;AACApB,IAAAA,WAAW,CAAC0E,aAAZ,CAA0B;AACxBD,MAAAA,IADwB;AAExBH,MAAAA,MAFwB;AAGxBJ,MAAAA,YAHwB;AAIxBE,MAAAA,cAJwB;AAKxBC,MAAAA;AALwB,KAA1B;AAOD,GA1BgC,EA2BjC,CAACjD,MAAD,EAASD,gBAAT,CA3BiC,CAAnC;AA8BA,MAAMyD,0BAA0B,GAAGlF,WAAW,CAC5C,SAQM;AAAA,QARL;AACCoE,MAAAA,KAAK,GAAG,YADT;AAECC,MAAAA,QAAQ,GAAG,EAFZ;AAGCC,MAAAA,UAAU,GAAG,IAHd;AAIC9C,MAAAA,EAAE,GAAGpB,OAAO,CAACmE,QAAR,EAJN;AAKCC,MAAAA,YAAY,GAAGlE,WAAW,CAACmE,sBAL5B;AAMCC,MAAAA,cAAc,GAAG,KANlB;AAOCC,MAAAA,SAAS,GAAG;AAPb,KAQK;AACJ,QAAMC,MAAM,GAAG;AACb7B,MAAAA,IAAI,EAAE,iBADO;AAEb8B,MAAAA,SAAS,EAAE/D,qBAAqB,CAACgE,SAFpB;AAGbvD,MAAAA,KAAK,EAAE;AAAEC,QAAAA,EAAF;AAAM6C,QAAAA,QAAN;AAAgBC,QAAAA,UAAhB;AAA4B7C,QAAAA;AAA5B,OAHM;AAIb2C,MAAAA,KAJa;AAKb5C,MAAAA;AALa,KAAf;AAQA,QAAM;AAAEuD,MAAAA;AAAF,QAAWrD,MAAjB;AACApB,IAAAA,WAAW,CAAC0E,aAAZ,CAA0B;AACxBD,MAAAA,IADwB;AAExBH,MAAAA,MAFwB;AAGxBJ,MAAAA,YAHwB;AAIxBE,MAAAA,cAJwB;AAKxBC,MAAAA;AALwB,KAA1B;AAOD,GA1B2C,EA2B5C,CAACjD,MAAD,EAASD,gBAAT,CA3B4C,CAA9C;AA8BAxB,EAAAA,SAAS,CAAC,MAAM;AACd,QAAMkF,QAAQ,GAAG,CACfxD,iBAAiB,CAACd,mBAAmB,CAACiE,SAArB,EAAgCjE,mBAAhC,CADF,EAEfc,iBAAiB,CAACZ,gBAAgB,CAAC+D,SAAlB,EAA6B/D,gBAA7B,CAFF,EAGfY,iBAAiB,CAACb,qBAAqB,CAACgE,SAAvB,EAAkChE,qBAAlC,CAHF,CAAjB;AAMA,WAAO,MAAM;AACXqE,MAAAA,QAAQ,CAACC,OAAT,CAAiBC,OAAO,IAAIA,OAAO,EAAnC;AACD,KAFD;AAGD,GAVQ,EAUN,CAAC1D,iBAAD,CAVM,CAAT;AAYAlB,EAAAA,WAAW,CACTiB,MAAM,CAAC4D,QADE,EAET1E,gBAAgB,CAAC2E,eAFR,EAGT9B,oBAHS,CAAX;AAKAhD,EAAAA,WAAW,CACTiB,MAAM,CAAC4D,QADE,EAET1E,gBAAgB,CAAC4E,eAFR,EAGT3B,oBAHS,CAAX;AAKApD,EAAAA,WAAW,CACTiB,MAAM,CAAC4D,QADE,EAET1E,gBAAgB,CAAC6E,aAFR,EAGT3B,kBAHS,CAAX;AAKArD,EAAAA,WAAW,CACTiB,MAAM,CAAC4D,QADE,EAET1E,gBAAgB,CAAC8E,aAFR,EAGTvB,kBAHS,CAAX;AAKA1D,EAAAA,WAAW,CAACiB,MAAM,CAAC4D,QAAR,EAAkB1E,gBAAgB,CAAC+E,UAAnC,EAA+CV,eAA/C,CAAX;AACAxE,EAAAA,WAAW,CACTiB,MAAM,CAAC4D,QADE,EAET1E,gBAAgB,CAACgF,uBAFR,EAGTV,0BAHS,CAAX;AAKAzE,EAAAA,WAAW,CAACiB,MAAM,CAAC4D,QAAR,EAAkB/E,UAAU,CAACsF,OAA7B,EAAsC5B,kBAAtC,CAAX;AAEA,sBAAO,yCAAP;AACD,CAxOM;AA0OP,eAAe3C,YAAf","sourcesContent":["import React, { Component, useCallback, useEffect, useState } from 'react';\nimport { useDispatch } from 'react-redux';\nimport shortid from 'shortid';\nimport {\n assertIsDashboardPluginProps,\n DashboardPluginComponentProps,\n LayoutUtils,\n PanelEvent,\n updateDashboardData,\n useListener,\n} from '@deephaven/dashboard';\nimport Log from '@deephaven/log';\nimport { TextUtils } from '@deephaven/utils';\nimport { InputFilterEvent } from './events';\nimport {\n DropdownFilterPanel,\n FilterSetManagerPanel,\n InputFilterPanel,\n} from './panels';\n\nconst log = Log.module('FilterPlugin');\n\ntype Column = {\n name: string;\n type: string;\n};\n\nexport type FilterChangeEvent = Column & {\n value: string;\n timestamp: number;\n excludePanelIds?: string[];\n};\n\nexport type FilterPluginProps = Partial<DashboardPluginComponentProps>;\n\nfunction flattenArray<T>(accumulator: T[], currentValue: T | T[]): T[] {\n return accumulator.concat(currentValue);\n}\n\nexport const FilterPlugin = (props: FilterPluginProps): JSX.Element => {\n assertIsDashboardPluginProps(props);\n const { id: localDashboardId, layout, registerComponent } = props;\n const dispatch = useDispatch();\n const [panelColumns] = useState(() => new Map<Component, Column[]>());\n const [panelFilters] = useState(\n () => new Map<Component, FilterChangeEvent[]>()\n );\n const [panelTables] = useState(() => new Map());\n\n const sendUpdate = useCallback(() => {\n const columns = Array.from(panelColumns.values())\n .reduce(flattenArray, [] as Column[])\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 Column[]);\n\n const filters = Array.from(panelFilters.values())\n .reduce(flattenArray, [] as FilterChangeEvent[])\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 panel The component that's emitting the filter change\n * @param {Column|Array<Column>} columns The columns in this panel\n */\n const handleColumnsChanged = useCallback(\n (panel: Component, columns) => {\n log.debug2('handleColumnsChanged', panel, columns);\n panelColumns.set(panel, [].concat(columns) as Column[]);\n sendUpdate();\n },\n [panelColumns, sendUpdate]\n );\n\n /**\n * Handler for the FILTERS_CHANGED event.\n * @param {Component} panel The component that's emitting the filter change\n * @param {FilterChangeEvent|Array<FilterChangeEvent>} filters The input filters set by the panel\n */\n const handleFiltersChanged = useCallback(\n (panel, filters) => {\n log.debug2('handleFiltersChanged', panel, filters);\n panelFilters.set(panel, [].concat(filters) as FilterChangeEvent[]);\n sendUpdate();\n },\n [panelFilters, sendUpdate]\n );\n\n const handleTableChanged = useCallback(\n (panel, table) => {\n log.debug2('handleTableChanged', panel, table);\n panelTables.set(LayoutUtils.getIdFromPanel(panel), table);\n sendUpdate();\n },\n [panelTables, sendUpdate]\n );\n\n const handlePanelUnmount = useCallback(\n panel => {\n log.debug2('handlePanelUnmount', panel);\n panelColumns.delete(panel);\n panelFilters.delete(panel);\n panelTables.delete(LayoutUtils.getIdFromPanel(panel));\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 = shortid.generate(),\n focusElement = LayoutUtils.DEFAULT_FOCUS_SELECTOR,\n createNewStack = false,\n dragEvent = null,\n }) => {\n const config = {\n type: 'react-component',\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 = shortid.generate(),\n focusElement = LayoutUtils.DEFAULT_FOCUS_SELECTOR,\n createNewStack = false,\n dragEvent = null,\n }) => {\n const config = {\n type: 'react-component',\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 = shortid.generate(),\n focusElement = LayoutUtils.DEFAULT_FOCUS_SELECTOR,\n createNewStack = false,\n dragEvent = null,\n }) => {\n const config = {\n type: 'react-component',\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 const cleanups = [\n registerComponent(DropdownFilterPanel.COMPONENT, DropdownFilterPanel),\n registerComponent(InputFilterPanel.COMPONENT, InputFilterPanel),\n registerComponent(FilterSetManagerPanel.COMPONENT, FilterSetManagerPanel),\n ];\n\n return () => {\n cleanups.forEach(cleanup => cleanup());\n };\n }, [registerComponent]);\n\n useListener(\n layout.eventHub,\n InputFilterEvent.COLUMNS_CHANGED,\n handleColumnsChanged\n );\n useListener(\n layout.eventHub,\n InputFilterEvent.FILTERS_CHANGED,\n handleFiltersChanged\n );\n useListener(\n layout.eventHub,\n InputFilterEvent.TABLE_CHANGED,\n handleTableChanged\n );\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 <></>;\n};\n\nexport default FilterPlugin;\n"],"file":"FilterPlugin.js"}
|
package/dist/GridPlugin.d.ts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { DashboardPluginComponentProps, PanelHydrateFunction } from '@deephaven/dashboard';
|
|
3
3
|
import { IrisGridThemeType } from '@deephaven/iris-grid';
|
|
4
|
-
export declare type
|
|
4
|
+
export declare type GridPluginProps = Partial<DashboardPluginComponentProps> & {
|
|
5
5
|
getDownloadWorker?: () => Promise<ServiceWorker>;
|
|
6
6
|
loadPlugin?: (name: string) => ReturnType<typeof React.forwardRef>;
|
|
7
7
|
hydrate: PanelHydrateFunction;
|
|
8
8
|
theme?: Partial<IrisGridThemeType>;
|
|
9
9
|
};
|
|
10
|
-
export declare const GridPlugin: (
|
|
10
|
+
export declare const GridPlugin: (props: GridPluginProps) => JSX.Element;
|
|
11
11
|
export default GridPlugin;
|
|
12
12
|
//# sourceMappingURL=GridPlugin.d.ts.map
|
package/dist/GridPlugin.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GridPlugin.d.ts","sourceRoot":"","sources":["../src/GridPlugin.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4C,MAAM,OAAO,CAAC;AACjE,OAAO,
|
|
1
|
+
{"version":3,"file":"GridPlugin.d.ts","sourceRoot":"","sources":["../src/GridPlugin.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4C,MAAM,OAAO,CAAC;AACjE,OAAO,EAEL,6BAA6B,EAE7B,oBAAoB,EAErB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAiB,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAKxE,oBAAY,eAAe,GAAG,OAAO,CAAC,6BAA6B,CAAC,GAAG;IACrE,iBAAiB,CAAC,EAAE,MAAM,OAAO,CAAC,aAAa,CAAC,CAAC;IACjD,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,UAAU,CAAC,OAAO,KAAK,CAAC,UAAU,CAAC,CAAC;IACnE,OAAO,EAAE,oBAAoB,CAAC;IAC9B,KAAK,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;CACpC,CAAC;AAEF,eAAO,MAAM,UAAU,UAAW,eAAe,KAAG,WA+DnD,CAAC;AAEF,eAAe,UAAU,CAAC"}
|
package/dist/GridPlugin.js
CHANGED
|
@@ -1,18 +1,19 @@
|
|
|
1
1
|
import React, { useCallback, useEffect } from 'react';
|
|
2
|
-
import {
|
|
2
|
+
import { assertIsDashboardPluginProps, LayoutUtils, useListener } from '@deephaven/dashboard';
|
|
3
3
|
import shortid from 'shortid';
|
|
4
4
|
import { IrisGridPanel } from "./panels/index.js";
|
|
5
5
|
import { IrisGridEvent } from "./events/index.js";
|
|
6
|
-
export var GridPlugin =
|
|
6
|
+
export var GridPlugin = props => {
|
|
7
|
+
assertIsDashboardPluginProps(props);
|
|
7
8
|
var {
|
|
8
9
|
getDownloadWorker,
|
|
9
10
|
loadPlugin,
|
|
10
11
|
id,
|
|
11
12
|
layout,
|
|
12
13
|
registerComponent,
|
|
13
|
-
hydrate
|
|
14
|
+
hydrate,
|
|
14
15
|
theme
|
|
15
|
-
} =
|
|
16
|
+
} = props;
|
|
16
17
|
var handleOpen = useCallback(function (title, makeModel) {
|
|
17
18
|
var metadata = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
18
19
|
var panelId = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : shortid.generate();
|
package/dist/GridPlugin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/GridPlugin.tsx"],"names":["React","useCallback","useEffect","
|
|
1
|
+
{"version":3,"sources":["../src/GridPlugin.tsx"],"names":["React","useCallback","useEffect","assertIsDashboardPluginProps","LayoutUtils","useListener","shortid","IrisGridPanel","IrisGridEvent","GridPlugin","props","getDownloadWorker","loadPlugin","id","layout","registerComponent","hydrate","theme","handleOpen","title","makeModel","metadata","panelId","generate","dragEvent","config","type","component","COMPONENT","localDashboardId","root","openComponent","handleClose","closeComponent","cleanups","forEach","cleanup","eventHub","OPEN_GRID","CLOSE_GRID"],"mappings":"AAAA,OAAOA,KAAP,IAA2BC,WAA3B,EAAwCC,SAAxC,QAAyD,OAAzD;AACA,SACEC,4BADF,EAGEC,WAHF,EAKEC,WALF,QAMO,sBANP;AAQA,OAAOC,OAAP,MAAoB,SAApB;SACSC,a;SACAC,a;AAST,OAAO,IAAMC,UAAU,GAAIC,KAAD,IAAyC;AACjEP,EAAAA,4BAA4B,CAACO,KAAD,CAA5B;AACA,MAAM;AACJC,IAAAA,iBADI;AAEJC,IAAAA,UAFI;AAGJC,IAAAA,EAHI;AAIJC,IAAAA,MAJI;AAKJC,IAAAA,iBALI;AAMJC,IAAAA,OANI;AAOJC,IAAAA;AAPI,MAQFP,KARJ;AASA,MAAMQ,UAAU,GAAGjB,WAAW,CAC5B,UACEkB,KADF,EAEEC,SAFF,EAMK;AAAA,QAHHC,QAGG,uEAHiC,EAGjC;AAAA,QAFHC,OAEG,uEAFOhB,OAAO,CAACiB,QAAR,EAEP;AAAA,QADHC,SACG;AACH,QAAMC,MAAM,GAAG;AACbC,MAAAA,IAAI,EAAE,iBADO;AAEbC,MAAAA,SAAS,EAAEpB,aAAa,CAACqB,SAFZ;AAGblB,MAAAA,KAAK,EAAE;AACLC,QAAAA,iBADK;AAELC,QAAAA,UAFK;AAGLiB,QAAAA,gBAAgB,EAAEhB,EAHb;AAILA,QAAAA,EAAE,EAAES,OAJC;AAKLD,QAAAA,QALK;AAMLD,QAAAA,SANK;AAOLH,QAAAA;AAPK,OAHM;AAYbE,MAAAA,KAZa;AAabN,MAAAA,EAAE,EAAES;AAbS,KAAf;AAgBA,QAAM;AAAEQ,MAAAA;AAAF,QAAWhB,MAAjB;AACAV,IAAAA,WAAW,CAAC2B,aAAZ,CAA0B;AAAED,MAAAA,IAAF;AAAQL,MAAAA,MAAR;AAAgBD,MAAAA;AAAhB,KAA1B;AACD,GA1B2B,EA2B5B,CAACb,iBAAD,EAAoBE,EAApB,EAAwBC,MAAxB,EAAgCF,UAAhC,EAA4CK,KAA5C,CA3B4B,CAA9B;AA8BA,MAAMe,WAAW,GAAG/B,WAAW,CAC5BqB,OAAD,IAAqB;AACnB,QAAMG,MAAM,GAAG;AAAEE,MAAAA,SAAS,EAAEpB,aAAa,CAACqB,SAA3B;AAAsCf,MAAAA,EAAE,EAAES;AAA1C,KAAf;AACA,QAAM;AAAEQ,MAAAA;AAAF,QAAWhB,MAAjB;AACAV,IAAAA,WAAW,CAAC6B,cAAZ,CAA2BH,IAA3B,EAAiCL,MAAjC;AACD,GAL4B,EAM7B,CAACX,MAAD,CAN6B,CAA/B;AASAZ,EAAAA,SAAS,CAAC,MAAM;AACd,QAAMgC,QAAQ,GAAG,CACfnB,iBAAiB,CAACR,aAAa,CAACqB,SAAf,EAA0BrB,aAA1B,EAAyCS,OAAzC,CADF,CAAjB;AAGA,WAAO,MAAM;AACXkB,MAAAA,QAAQ,CAACC,OAAT,CAAiBC,OAAO,IAAIA,OAAO,EAAnC;AACD,KAFD;AAGD,GAPQ,EAON,CAACpB,OAAD,EAAUD,iBAAV,CAPM,CAAT;AASAV,EAAAA,WAAW,CAACS,MAAM,CAACuB,QAAR,EAAkB7B,aAAa,CAAC8B,SAAhC,EAA2CpB,UAA3C,CAAX;AACAb,EAAAA,WAAW,CAACS,MAAM,CAACuB,QAAR,EAAkB7B,aAAa,CAAC+B,UAAhC,EAA4CP,WAA5C,CAAX;AAEA,sBAAO,yCAAP;AACD,CA/DM;AAiEP,eAAevB,UAAf","sourcesContent":["import React, { DragEvent, useCallback, useEffect } from 'react';\nimport {\n assertIsDashboardPluginProps,\n DashboardPluginComponentProps,\n LayoutUtils,\n PanelHydrateFunction,\n useListener,\n} from '@deephaven/dashboard';\nimport { IrisGridModel, IrisGridThemeType } from '@deephaven/iris-grid';\nimport shortid from 'shortid';\nimport { IrisGridPanel } from './panels';\nimport { IrisGridEvent } from './events';\n\nexport type GridPluginProps = Partial<DashboardPluginComponentProps> & {\n getDownloadWorker?: () => Promise<ServiceWorker>;\n loadPlugin?: (name: string) => ReturnType<typeof React.forwardRef>;\n hydrate: PanelHydrateFunction;\n theme?: Partial<IrisGridThemeType>;\n};\n\nexport const GridPlugin = (props: GridPluginProps): JSX.Element => {\n assertIsDashboardPluginProps(props);\n const {\n getDownloadWorker,\n loadPlugin,\n id,\n layout,\n registerComponent,\n hydrate,\n theme,\n } = props;\n const handleOpen = useCallback(\n (\n title: string,\n makeModel: () => IrisGridModel,\n metadata: Record<string, unknown> = {},\n panelId = shortid.generate(),\n dragEvent?: DragEvent\n ) => {\n const config = {\n type: 'react-component',\n component: IrisGridPanel.COMPONENT,\n props: {\n getDownloadWorker,\n loadPlugin,\n localDashboardId: id,\n id: panelId,\n metadata,\n makeModel,\n theme,\n },\n title,\n id: panelId,\n };\n\n const { root } = layout;\n LayoutUtils.openComponent({ root, config, dragEvent });\n },\n [getDownloadWorker, id, layout, loadPlugin, theme]\n );\n\n const handleClose = useCallback(\n (panelId: string) => {\n const config = { component: IrisGridPanel.COMPONENT, id: panelId };\n const { root } = layout;\n LayoutUtils.closeComponent(root, config);\n },\n [layout]\n );\n\n useEffect(() => {\n const cleanups = [\n registerComponent(IrisGridPanel.COMPONENT, IrisGridPanel, hydrate),\n ];\n return () => {\n cleanups.forEach(cleanup => cleanup());\n };\n }, [hydrate, registerComponent]);\n\n useListener(layout.eventHub, IrisGridEvent.OPEN_GRID, handleOpen);\n useListener(layout.eventHub, IrisGridEvent.CLOSE_GRID, handleClose);\n\n return <></>;\n};\n\nexport default GridPlugin;\n"],"file":"GridPlugin.js"}
|
package/dist/LinkerPlugin.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import { DashboardPluginComponentProps } from '@deephaven/dashboard';
|
|
3
|
-
export declare
|
|
3
|
+
export declare type LinkerPluginProps = Partial<DashboardPluginComponentProps>;
|
|
4
|
+
export declare const LinkerPlugin: (props: LinkerPluginProps) => JSX.Element;
|
|
4
5
|
export default LinkerPlugin;
|
|
5
6
|
//# sourceMappingURL=LinkerPlugin.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LinkerPlugin.d.ts","sourceRoot":"","sources":["../src/LinkerPlugin.tsx"],"names":[],"mappings":";AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"LinkerPlugin.d.ts","sourceRoot":"","sources":["../src/LinkerPlugin.tsx"],"names":[],"mappings":";AACA,OAAO,EAEL,6BAA6B,EAC9B,MAAM,sBAAsB,CAAC;AAG9B,oBAAY,iBAAiB,GAAG,OAAO,CAAC,6BAA6B,CAAC,CAAC;AAEvE,eAAO,MAAM,YAAY,UAAW,iBAAiB,KAAG,WAMvD,CAAC;AAEF,eAAe,YAAY,CAAC"}
|
package/dist/LinkerPlugin.js
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
+
import { assertIsDashboardPluginProps } from '@deephaven/dashboard';
|
|
2
3
|
import Linker from "./linker/Linker.js";
|
|
3
|
-
export var LinkerPlugin =
|
|
4
|
+
export var LinkerPlugin = props => {
|
|
5
|
+
assertIsDashboardPluginProps(props);
|
|
4
6
|
var {
|
|
5
7
|
id,
|
|
6
8
|
layout,
|
|
7
9
|
panelManager
|
|
8
|
-
} =
|
|
10
|
+
} = props;
|
|
9
11
|
return /*#__PURE__*/React.createElement(Linker, {
|
|
10
12
|
layout: layout,
|
|
11
13
|
localDashboardId: id,
|
package/dist/LinkerPlugin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/LinkerPlugin.tsx"],"names":["React","Linker","LinkerPlugin","id","layout","panelManager"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;
|
|
1
|
+
{"version":3,"sources":["../src/LinkerPlugin.tsx"],"names":["React","assertIsDashboardPluginProps","Linker","LinkerPlugin","props","id","layout","panelManager"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,SACEC,4BADF,QAGO,sBAHP;OAIOC,M;AAIP,OAAO,IAAMC,YAAY,GAAIC,KAAD,IAA2C;AACrEH,EAAAA,4BAA4B,CAACG,KAAD,CAA5B;AACA,MAAM;AAAEC,IAAAA,EAAF;AAAMC,IAAAA,MAAN;AAAcC,IAAAA;AAAd,MAA+BH,KAArC;AACA,sBACE,oBAAC,MAAD;AAAQ,IAAA,MAAM,EAAEE,MAAhB;AAAwB,IAAA,gBAAgB,EAAED,EAA1C;AAA8C,IAAA,YAAY,EAAEE;AAA5D,IADF;AAGD,CANM;AAQP,eAAeJ,YAAf","sourcesContent":["import React from 'react';\nimport {\n assertIsDashboardPluginProps,\n DashboardPluginComponentProps,\n} from '@deephaven/dashboard';\nimport Linker from './linker/Linker';\n\nexport type LinkerPluginProps = Partial<DashboardPluginComponentProps>;\n\nexport const 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"],"file":"LinkerPlugin.js"}
|
package/dist/MarkdownPlugin.d.ts
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import { DashboardPluginComponentProps } from '@deephaven/dashboard';
|
|
3
|
-
export declare
|
|
3
|
+
export declare type MarkdownPluginProps = Partial<DashboardPluginComponentProps>;
|
|
4
|
+
export declare type MarkdownComponentState = {
|
|
5
|
+
panelState?: {
|
|
6
|
+
content: string;
|
|
7
|
+
} | null;
|
|
8
|
+
};
|
|
9
|
+
export declare const MarkdownPlugin: (props: MarkdownPluginProps) => JSX.Element;
|
|
4
10
|
export default MarkdownPlugin;
|
|
5
11
|
//# sourceMappingURL=MarkdownPlugin.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MarkdownPlugin.d.ts","sourceRoot":"","sources":["../src/MarkdownPlugin.tsx"],"names":[],"mappings":";AAEA,OAAO,
|
|
1
|
+
{"version":3,"file":"MarkdownPlugin.d.ts","sourceRoot":"","sources":["../src/MarkdownPlugin.tsx"],"names":[],"mappings":";AAEA,OAAO,EAEL,6BAA6B,EAK9B,MAAM,sBAAsB,CAAC;AAK9B,oBAAY,mBAAmB,GAAG,OAAO,CAAC,6BAA6B,CAAC,CAAC;AAEzE,oBAAY,sBAAsB,GAAG;IACnC,UAAU,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CACzC,CAAC;AAEF,eAAO,MAAM,cAAc,UAAW,mBAAmB,KAAG,WAoF3D,CAAC;AAEF,eAAe,cAAc,CAAC"}
|