@deephaven/dashboard-core-plugins 0.50.1-beta.2 → 0.50.1-beta.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/dist/PandasPlugin.d.ts +3 -2
  2. package/dist/PandasPlugin.d.ts.map +1 -1
  3. package/dist/PandasPlugin.js +19 -14
  4. package/dist/PandasPlugin.js.map +1 -1
  5. package/dist/PandasPluginConfig.d.ts +2 -2
  6. package/dist/PandasPluginConfig.d.ts.map +1 -1
  7. package/dist/PandasPluginConfig.js +8 -2
  8. package/dist/PandasPluginConfig.js.map +1 -1
  9. package/dist/WidgetLoaderPlugin.d.ts +17 -0
  10. package/dist/WidgetLoaderPlugin.d.ts.map +1 -0
  11. package/dist/WidgetLoaderPlugin.js +155 -0
  12. package/dist/WidgetLoaderPlugin.js.map +1 -0
  13. package/dist/WidgetLoaderPluginConfig.d.ts +4 -0
  14. package/dist/WidgetLoaderPluginConfig.d.ts.map +1 -0
  15. package/dist/WidgetLoaderPluginConfig.js +9 -0
  16. package/dist/WidgetLoaderPluginConfig.js.map +1 -0
  17. package/dist/index.d.ts +2 -0
  18. package/dist/index.d.ts.map +1 -1
  19. package/dist/index.js +2 -0
  20. package/dist/index.js.map +1 -1
  21. package/dist/panels/ChartPanel.d.ts +2 -2
  22. package/dist/panels/ConsolePanel.d.ts +5 -1
  23. package/dist/panels/ConsolePanel.d.ts.map +1 -1
  24. package/dist/panels/ConsolePanel.js +29 -4
  25. package/dist/panels/ConsolePanel.js.map +1 -1
  26. package/dist/panels/DropdownFilterPanel.d.ts +1 -1
  27. package/dist/panels/IrisGridPanel.d.ts +14 -9
  28. package/dist/panels/IrisGridPanel.d.ts.map +1 -1
  29. package/dist/panels/IrisGridPanel.js.map +1 -1
  30. package/dist/panels/Panel.d.ts +3 -2
  31. package/dist/panels/Panel.d.ts.map +1 -1
  32. package/dist/panels/Panel.js +14 -3
  33. package/dist/panels/Panel.js.map +1 -1
  34. package/dist/panels/WidgetPanel.d.ts +2 -2
  35. package/dist/panels/WidgetPanel.d.ts.map +1 -1
  36. package/dist/panels/WidgetPanel.js.map +1 -1
  37. package/dist/useHydrateGrid.d.ts +3 -2
  38. package/dist/useHydrateGrid.d.ts.map +1 -1
  39. package/dist/useHydrateGrid.js.map +1 -1
  40. package/package.json +24 -24
@@ -1,5 +1,6 @@
1
1
  /// <reference types="react" />
2
- import { DashboardPluginComponentProps } from '@deephaven/dashboard';
3
- export declare function PandasPlugin(props: DashboardPluginComponentProps): JSX.Element | null;
2
+ import { WidgetComponentProps } from '@deephaven/plugin';
3
+ import { PandasPanel } from './panels';
4
+ export declare const PandasPlugin: import("react").ForwardRefExoticComponent<WidgetComponentProps & import("react").RefAttributes<PandasPanel>>;
4
5
  export default PandasPlugin;
5
6
  //# sourceMappingURL=PandasPlugin.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"PandasPlugin.d.ts","sourceRoot":"","sources":["../src/PandasPlugin.tsx"],"names":[],"mappings":";AAAA,OAAO,EAEL,6BAA6B,EAE9B,MAAM,sBAAsB,CAAC;AAK9B,wBAAgB,YAAY,CAC1B,KAAK,EAAE,6BAA6B,GACnC,GAAG,CAAC,OAAO,GAAG,IAAI,CAcpB;AAED,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"PandasPlugin.d.ts","sourceRoot":"","sources":["../src/PandasPlugin.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAEzD,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAGvC,eAAO,MAAM,YAAY,8GAYxB,CAAC;AAIF,eAAe,YAAY,CAAC"}
@@ -1,19 +1,24 @@
1
- import { assertIsDashboardPluginProps, useDashboardPanel } from '@deephaven/dashboard';
2
- import { useApi } from '@deephaven/jsapi-bootstrap';
1
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
2
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
3
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
4
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
5
+ function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
6
+ import { forwardRef, useMemo } from 'react';
3
7
  import { PandasPanel } from "./panels/index.js";
4
8
  import useHydrateGrid from "./useHydrateGrid.js";
5
- export function PandasPlugin(props) {
6
- assertIsDashboardPluginProps(props);
7
- var dh = useApi();
9
+ import { jsx as _jsx } from "react/jsx-runtime";
10
+ export var PandasPlugin = /*#__PURE__*/forwardRef((props, ref) => {
8
11
  var hydrate = useHydrateGrid();
9
- useDashboardPanel({
10
- dashboardProps: props,
11
- componentName: PandasPanel.COMPONENT,
12
- component: PandasPanel,
13
- supportedTypes: dh.VariableType.PANDAS,
14
- hydrate
15
- });
16
- return null;
17
- }
12
+ var {
13
+ localDashboardId
14
+ } = props;
15
+ var hydratedProps = useMemo(() => hydrate(props, localDashboardId), [hydrate, props, localDashboardId]);
16
+
17
+ // eslint-disable-next-line react/jsx-props-no-spreading
18
+ return /*#__PURE__*/_jsx(PandasPanel, _objectSpread({
19
+ ref: ref
20
+ }, hydratedProps));
21
+ });
22
+ PandasPlugin.displayName = 'PandasPlugin';
18
23
  export default PandasPlugin;
19
24
  //# sourceMappingURL=PandasPlugin.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PandasPlugin.js","names":["assertIsDashboardPluginProps","useDashboardPanel","useApi","PandasPanel","useHydrateGrid","PandasPlugin","props","dh","hydrate","dashboardProps","componentName","COMPONENT","component","supportedTypes","VariableType","PANDAS"],"sources":["../src/PandasPlugin.tsx"],"sourcesContent":["import {\n assertIsDashboardPluginProps,\n DashboardPluginComponentProps,\n useDashboardPanel,\n} from '@deephaven/dashboard';\nimport { useApi } from '@deephaven/jsapi-bootstrap';\nimport { PandasPanel } from './panels';\nimport useHydrateGrid from './useHydrateGrid';\n\nexport function PandasPlugin(\n props: DashboardPluginComponentProps\n): JSX.Element | null {\n assertIsDashboardPluginProps(props);\n const dh = useApi();\n const hydrate = useHydrateGrid();\n\n useDashboardPanel({\n dashboardProps: props,\n componentName: PandasPanel.COMPONENT,\n component: PandasPanel,\n supportedTypes: dh.VariableType.PANDAS,\n hydrate,\n });\n\n return null;\n}\n\nexport default PandasPlugin;\n"],"mappings":"AAAA,SACEA,4BAA4B,EAE5BC,iBAAiB,QACZ,sBAAsB;AAC7B,SAASC,MAAM,QAAQ,4BAA4B;AAAC,SAC3CC,WAAW;AAAA,OACbC,cAAc;AAErB,OAAO,SAASC,YAAY,CAC1BC,KAAoC,EAChB;EACpBN,4BAA4B,CAACM,KAAK,CAAC;EACnC,IAAMC,EAAE,GAAGL,MAAM,EAAE;EACnB,IAAMM,OAAO,GAAGJ,cAAc,EAAE;EAEhCH,iBAAiB,CAAC;IAChBQ,cAAc,EAAEH,KAAK;IACrBI,aAAa,EAAEP,WAAW,CAACQ,SAAS;IACpCC,SAAS,EAAET,WAAW;IACtBU,cAAc,EAAEN,EAAE,CAACO,YAAY,CAACC,MAAM;IACtCP;EACF,CAAC,CAAC;EAEF,OAAO,IAAI;AACb;AAEA,eAAeH,YAAY"}
1
+ {"version":3,"file":"PandasPlugin.js","names":["forwardRef","useMemo","PandasPanel","useHydrateGrid","PandasPlugin","props","ref","hydrate","localDashboardId","hydratedProps","displayName"],"sources":["../src/PandasPlugin.tsx"],"sourcesContent":["import { DashboardPanelProps } from '@deephaven/dashboard';\nimport { WidgetComponentProps } from '@deephaven/plugin';\nimport { forwardRef, useMemo } from 'react';\nimport { PandasPanel } from './panels';\nimport useHydrateGrid from './useHydrateGrid';\n\nexport const PandasPlugin = forwardRef(\n (props: WidgetComponentProps, ref: React.Ref<PandasPanel>) => {\n const hydrate = useHydrateGrid<DashboardPanelProps>();\n const { localDashboardId } = props;\n const hydratedProps = useMemo(\n () => hydrate(props, localDashboardId),\n [hydrate, props, localDashboardId]\n );\n\n // eslint-disable-next-line react/jsx-props-no-spreading\n return <PandasPanel ref={ref} {...hydratedProps} />;\n }\n);\n\nPandasPlugin.displayName = 'PandasPlugin';\n\nexport default PandasPlugin;\n"],"mappings":";;;;;AAEA,SAASA,UAAU,EAAEC,OAAO,QAAQ,OAAO;AAAC,SACnCC,WAAW;AAAA,OACbC,cAAc;AAAA;AAErB,OAAO,IAAMC,YAAY,gBAAGJ,UAAU,CACpC,CAACK,KAA2B,EAAEC,GAA2B,KAAK;EAC5D,IAAMC,OAAO,GAAGJ,cAAc,EAAuB;EACrD,IAAM;IAAEK;EAAiB,CAAC,GAAGH,KAAK;EAClC,IAAMI,aAAa,GAAGR,OAAO,CAC3B,MAAMM,OAAO,CAACF,KAAK,EAAEG,gBAAgB,CAAC,EACtC,CAACD,OAAO,EAAEF,KAAK,EAAEG,gBAAgB,CAAC,CACnC;;EAED;EACA,oBAAO,KAAC,WAAW;IAAC,GAAG,EAAEF;EAAI,GAAKG,aAAa,EAAI;AACrD,CAAC,CACF;AAEDL,YAAY,CAACM,WAAW,GAAG,cAAc;AAEzC,eAAeN,YAAY"}
@@ -1,4 +1,4 @@
1
- import { DashboardPlugin } from '@deephaven/plugin';
2
- declare const PandasPluginConfig: DashboardPlugin;
1
+ import { WidgetPlugin } from '@deephaven/plugin';
2
+ declare const PandasPluginConfig: WidgetPlugin;
3
3
  export default PandasPluginConfig;
4
4
  //# sourceMappingURL=PandasPluginConfig.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"PandasPluginConfig.d.ts","sourceRoot":"","sources":["../src/PandasPluginConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGhE,QAAA,MAAM,kBAAkB,EAAE,eAIzB,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
1
+ {"version":3,"file":"PandasPluginConfig.d.ts","sourceRoot":"","sources":["../src/PandasPluginConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAI7D,QAAA,MAAM,kBAAkB,EAAE,YASzB,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
@@ -1,9 +1,15 @@
1
1
  import { PluginType } from '@deephaven/plugin';
2
+ import { dhPandas } from '@deephaven/icons';
2
3
  import PandasPlugin from "./PandasPlugin.js";
3
4
  var PandasPluginConfig = {
4
5
  name: 'PandasPlugin',
5
- type: PluginType.DASHBOARD_PLUGIN,
6
- component: PandasPlugin
6
+ title: 'Pandas',
7
+ type: PluginType.WIDGET_PLUGIN,
8
+ // TODO: #1573 Replace with actual base component and not just the panel plugin
9
+ component: PandasPlugin,
10
+ panelComponent: PandasPlugin,
11
+ supportedTypes: 'pandas.DataFrame',
12
+ icon: dhPandas
7
13
  };
8
14
  export default PandasPluginConfig;
9
15
  //# sourceMappingURL=PandasPluginConfig.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PandasPluginConfig.js","names":["PluginType","PandasPlugin","PandasPluginConfig","name","type","DASHBOARD_PLUGIN","component"],"sources":["../src/PandasPluginConfig.ts"],"sourcesContent":["import { PluginType, DashboardPlugin } from '@deephaven/plugin';\nimport PandasPlugin from './PandasPlugin';\n\nconst PandasPluginConfig: DashboardPlugin = {\n name: 'PandasPlugin',\n type: PluginType.DASHBOARD_PLUGIN,\n component: PandasPlugin,\n};\n\nexport default PandasPluginConfig;\n"],"mappings":"AAAA,SAASA,UAAU,QAAyB,mBAAmB;AAAC,OACzDC,YAAY;AAEnB,IAAMC,kBAAmC,GAAG;EAC1CC,IAAI,EAAE,cAAc;EACpBC,IAAI,EAAEJ,UAAU,CAACK,gBAAgB;EACjCC,SAAS,EAAEL;AACb,CAAC;AAED,eAAeC,kBAAkB"}
1
+ {"version":3,"file":"PandasPluginConfig.js","names":["PluginType","dhPandas","PandasPlugin","PandasPluginConfig","name","title","type","WIDGET_PLUGIN","component","panelComponent","supportedTypes","icon"],"sources":["../src/PandasPluginConfig.ts"],"sourcesContent":["import { PluginType, WidgetPlugin } from '@deephaven/plugin';\nimport { dhPandas } from '@deephaven/icons';\nimport PandasPlugin from './PandasPlugin';\n\nconst PandasPluginConfig: WidgetPlugin = {\n name: 'PandasPlugin',\n title: 'Pandas',\n type: PluginType.WIDGET_PLUGIN,\n // TODO: #1573 Replace with actual base component and not just the panel plugin\n component: PandasPlugin,\n panelComponent: PandasPlugin,\n supportedTypes: 'pandas.DataFrame',\n icon: dhPandas,\n};\n\nexport default PandasPluginConfig;\n"],"mappings":"AAAA,SAASA,UAAU,QAAsB,mBAAmB;AAC5D,SAASC,QAAQ,QAAQ,kBAAkB;AAAC,OACrCC,YAAY;AAEnB,IAAMC,kBAAgC,GAAG;EACvCC,IAAI,EAAE,cAAc;EACpBC,KAAK,EAAE,QAAQ;EACfC,IAAI,EAAEN,UAAU,CAACO,aAAa;EAC9B;EACAC,SAAS,EAAEN,YAAY;EACvBO,cAAc,EAAEP,YAAY;EAC5BQ,cAAc,EAAE,kBAAkB;EAClCC,IAAI,EAAEV;AACR,CAAC;AAED,eAAeE,kBAAkB"}
@@ -0,0 +1,17 @@
1
+ /// <reference types="react" />
2
+ import { DashboardPluginComponentProps, PanelProps } from '@deephaven/dashboard';
3
+ import { type WidgetPlugin } from '@deephaven/plugin';
4
+ export declare function WrapWidgetPlugin(plugin: WidgetPlugin): React.ForwardRefExoticComponent<PanelProps & React.RefAttributes<unknown>>;
5
+ /**
6
+ * Widget to automatically open any supported WidgetPlugin types as panels
7
+ * if the widget is emitted from the server as the result of executed code.
8
+ *
9
+ * Does not open panels for widgets that are not supported by any plugins.
10
+ * Does not open panels for widgets that are a component of a larger widget or UI element.
11
+ *
12
+ * @param props Dashboard plugin props
13
+ * @returns React element
14
+ */
15
+ export declare function WidgetLoaderPlugin(props: Partial<DashboardPluginComponentProps>): JSX.Element | null;
16
+ export default WidgetLoaderPlugin;
17
+ //# sourceMappingURL=WidgetLoaderPlugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WidgetLoaderPlugin.d.ts","sourceRoot":"","sources":["../src/WidgetLoaderPlugin.tsx"],"names":[],"mappings":";AAUA,OAAO,EAEL,6BAA6B,EAM7B,UAAU,EAEX,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAkB,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAMtE,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,YAAY,GACnB,KAAK,CAAC,yBAAyB,CAAC,UAAU,GAAG,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAmD5E;AAED;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,OAAO,CAAC,6BAA6B,CAAC,GAC5C,GAAG,CAAC,OAAO,GAAG,IAAI,CAqFpB;AAED,eAAe,kBAAkB,CAAC"}
@@ -0,0 +1,155 @@
1
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
2
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
3
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
4
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
5
+ function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
6
+ import { useMemo, useCallback, useEffect, forwardRef, useState } from 'react';
7
+ import shortid from 'shortid';
8
+ import { assertIsDashboardPluginProps, PanelEvent, LayoutUtils, useListener, canHaveRef } from '@deephaven/dashboard';
9
+ import { usePlugins } from '@deephaven/app-utils';
10
+ import { isWidgetPlugin } from '@deephaven/plugin';
11
+ import Log from '@deephaven/log';
12
+ import { WidgetPanel } from "./panels/index.js";
13
+ import { jsx as _jsx } from "react/jsx-runtime";
14
+ import { jsxs as _jsxs } from "react/jsx-runtime";
15
+ var log = Log.module('WidgetLoaderPlugin');
16
+ export function WrapWidgetPlugin(plugin) {
17
+ var _plugin$component$dis;
18
+ function Wrapper(props, ref) {
19
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
20
+ var C = plugin.component;
21
+ var {
22
+ metadata
23
+ } = props;
24
+ var [componentPanel, setComponentPanel] = useState();
25
+ var refCallback = useCallback(e => {
26
+ setComponentPanel(e);
27
+ if (typeof ref === 'function') {
28
+ ref(e);
29
+ } else if (ref != null) {
30
+ // eslint-disable-next-line no-param-reassign
31
+ ref.current = e;
32
+ }
33
+ }, [ref]);
34
+ var hasRef = canHaveRef(C);
35
+ return /*#__PURE__*/_jsxs(WidgetPanel, _objectSpread(_objectSpread({
36
+ widgetName: metadata === null || metadata === void 0 ? void 0 : metadata.name,
37
+ widgetType: plugin.title,
38
+ componentPanel: componentPanel
39
+ // eslint-disable-next-line react/jsx-props-no-spreading
40
+ }, props), {}, {
41
+ children: [hasRef ? /*#__PURE__*/_jsx(C
42
+ // eslint-disable-next-line react/jsx-props-no-spreading
43
+ , _objectSpread(_objectSpread({}, props), {}, {
44
+ ref: refCallback
45
+ })) : /*#__PURE__*/_jsx(C
46
+ // eslint-disable-next-line react/jsx-props-no-spreading
47
+ , _objectSpread({}, props)), ")"]
48
+ }));
49
+ }
50
+ Wrapper.displayName = "WidgetLoaderPlugin(".concat((_plugin$component$dis = plugin.component.displayName) !== null && _plugin$component$dis !== void 0 ? _plugin$component$dis : plugin.name, ")");
51
+ return /*#__PURE__*/forwardRef(Wrapper);
52
+ }
53
+
54
+ /**
55
+ * Widget to automatically open any supported WidgetPlugin types as panels
56
+ * if the widget is emitted from the server as the result of executed code.
57
+ *
58
+ * Does not open panels for widgets that are not supported by any plugins.
59
+ * Does not open panels for widgets that are a component of a larger widget or UI element.
60
+ *
61
+ * @param props Dashboard plugin props
62
+ * @returns React element
63
+ */
64
+ export function WidgetLoaderPlugin(props) {
65
+ var plugins = usePlugins();
66
+ var supportedTypes = useMemo(() => {
67
+ var typeMap = new Map();
68
+ plugins.forEach(plugin => {
69
+ if (!isWidgetPlugin(plugin)) {
70
+ return;
71
+ }
72
+ [plugin.supportedTypes].flat().forEach(supportedType => {
73
+ if (supportedType != null && supportedType !== '') {
74
+ if (typeMap.has(supportedType)) {
75
+ var _typeMap$get;
76
+ log.warn("Multiple WidgetPlugins handling type ".concat(supportedType, ". Replacing ").concat((_typeMap$get = typeMap.get(supportedType)) === null || _typeMap$get === void 0 ? void 0 : _typeMap$get.name, " with ").concat(plugin.name, " to handle ").concat(supportedType));
77
+ }
78
+ typeMap.set(supportedType, plugin);
79
+ }
80
+ });
81
+ });
82
+ return typeMap;
83
+ }, [plugins]);
84
+ assertIsDashboardPluginProps(props);
85
+ var {
86
+ id,
87
+ layout,
88
+ registerComponent
89
+ } = props;
90
+ var handlePanelOpen = useCallback(_ref => {
91
+ var _widget$title;
92
+ var {
93
+ dragEvent,
94
+ fetch,
95
+ panelId = shortid.generate(),
96
+ widget
97
+ } = _ref;
98
+ var {
99
+ id: widgetId,
100
+ type
101
+ } = widget;
102
+ var name = (_widget$title = widget.title) !== null && _widget$title !== void 0 ? _widget$title : widget.name;
103
+ var plugin = supportedTypes.get(type);
104
+ if (plugin == null) {
105
+ return;
106
+ }
107
+ var metadata = {
108
+ id: widgetId,
109
+ name,
110
+ type
111
+ };
112
+ var panelProps = {
113
+ localDashboardId: id,
114
+ metadata,
115
+ fetch
116
+ };
117
+ var config = {
118
+ type: 'react-component',
119
+ component: plugin.name,
120
+ props: panelProps,
121
+ title: name,
122
+ id: panelId
123
+ };
124
+ var {
125
+ root
126
+ } = layout;
127
+ LayoutUtils.openComponent({
128
+ root,
129
+ config,
130
+ dragEvent
131
+ });
132
+ }, [id, layout, supportedTypes]);
133
+ useEffect(() => {
134
+ var deregisterFns = [...new Set(supportedTypes.values())].map(plugin => {
135
+ var {
136
+ panelComponent
137
+ } = plugin;
138
+ if (panelComponent == null) {
139
+ return registerComponent(plugin.name, WrapWidgetPlugin(plugin));
140
+ }
141
+ return registerComponent(plugin.name, panelComponent);
142
+ });
143
+ return () => {
144
+ deregisterFns.forEach(deregister => deregister());
145
+ };
146
+ });
147
+
148
+ /**
149
+ * Listen for panel open events so we know when to open a panel
150
+ */
151
+ useListener(layout.eventHub, PanelEvent.OPEN, handlePanelOpen);
152
+ return null;
153
+ }
154
+ export default WidgetLoaderPlugin;
155
+ //# sourceMappingURL=WidgetLoaderPlugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WidgetLoaderPlugin.js","names":["useMemo","useCallback","useEffect","forwardRef","useState","shortid","assertIsDashboardPluginProps","PanelEvent","LayoutUtils","useListener","canHaveRef","usePlugins","isWidgetPlugin","Log","WidgetPanel","log","module","WrapWidgetPlugin","plugin","Wrapper","props","ref","C","component","metadata","componentPanel","setComponentPanel","refCallback","e","current","hasRef","name","title","displayName","WidgetLoaderPlugin","plugins","supportedTypes","typeMap","Map","forEach","flat","supportedType","has","warn","get","set","id","layout","registerComponent","handlePanelOpen","dragEvent","fetch","panelId","generate","widget","widgetId","type","panelProps","localDashboardId","config","root","openComponent","deregisterFns","Set","values","map","panelComponent","deregister","eventHub","OPEN"],"sources":["../src/WidgetLoaderPlugin.tsx"],"sourcesContent":["import {\n useMemo,\n useCallback,\n type ComponentType,\n useEffect,\n forwardRef,\n useState,\n} from 'react';\nimport type { ReactComponentConfig } from '@deephaven/golden-layout';\nimport shortid from 'shortid';\nimport {\n assertIsDashboardPluginProps,\n DashboardPluginComponentProps,\n DehydratedDashboardPanelProps,\n PanelEvent,\n PanelOpenEventDetail,\n LayoutUtils,\n useListener,\n PanelProps,\n canHaveRef,\n} from '@deephaven/dashboard';\nimport { usePlugins } from '@deephaven/app-utils';\nimport { isWidgetPlugin, type WidgetPlugin } from '@deephaven/plugin';\nimport Log from '@deephaven/log';\nimport { WidgetPanel } from './panels';\n\nconst log = Log.module('WidgetLoaderPlugin');\n\nexport function WrapWidgetPlugin(\n plugin: WidgetPlugin\n): React.ForwardRefExoticComponent<PanelProps & React.RefAttributes<unknown>> {\n function Wrapper(props: PanelProps, ref: React.ForwardedRef<unknown>) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const C = plugin.component as any;\n const { metadata } = props;\n const [componentPanel, setComponentPanel] = useState<ComponentType>();\n const refCallback = useCallback(\n (e: ComponentType) => {\n setComponentPanel(e);\n if (typeof ref === 'function') {\n ref(e);\n } else if (ref != null) {\n // eslint-disable-next-line no-param-reassign\n ref.current = e;\n }\n },\n [ref]\n );\n\n const hasRef = canHaveRef(C);\n\n return (\n <WidgetPanel\n widgetName={metadata?.name}\n widgetType={plugin.title}\n componentPanel={componentPanel}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...props}\n >\n {hasRef ? (\n <C\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...props}\n ref={refCallback}\n />\n ) : (\n <C\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...props}\n />\n )}\n )\n </WidgetPanel>\n );\n }\n\n Wrapper.displayName = `WidgetLoaderPlugin(${\n plugin.component.displayName ?? plugin.name\n })`;\n\n return forwardRef(Wrapper);\n}\n\n/**\n * Widget to automatically open any supported WidgetPlugin types as panels\n * if the widget is emitted from the server as the result of executed code.\n *\n * Does not open panels for widgets that are not supported by any plugins.\n * Does not open panels for widgets that are a component of a larger widget or UI element.\n *\n * @param props Dashboard plugin props\n * @returns React element\n */\nexport function WidgetLoaderPlugin(\n props: Partial<DashboardPluginComponentProps>\n): JSX.Element | null {\n const plugins = usePlugins();\n const supportedTypes = useMemo(() => {\n const typeMap = new Map<string, WidgetPlugin>();\n plugins.forEach(plugin => {\n if (!isWidgetPlugin(plugin)) {\n return;\n }\n\n [plugin.supportedTypes].flat().forEach(supportedType => {\n if (supportedType != null && supportedType !== '') {\n if (typeMap.has(supportedType)) {\n log.warn(\n `Multiple WidgetPlugins handling type ${supportedType}. Replacing ${typeMap.get(\n supportedType\n )?.name} with ${plugin.name} to handle ${supportedType}`\n );\n }\n typeMap.set(supportedType, plugin);\n }\n });\n });\n\n return typeMap;\n }, [plugins]);\n\n assertIsDashboardPluginProps(props);\n const { id, layout, registerComponent } = props;\n\n const handlePanelOpen = useCallback(\n ({\n dragEvent,\n fetch,\n panelId = shortid.generate(),\n widget,\n }: PanelOpenEventDetail) => {\n const { id: widgetId, type } = widget;\n const name = widget.title ?? widget.name;\n const plugin = supportedTypes.get(type);\n if (plugin == null) {\n return;\n }\n const metadata = { id: widgetId, name, type };\n const panelProps: DehydratedDashboardPanelProps & {\n fetch?: typeof fetch;\n } = {\n localDashboardId: id,\n metadata,\n fetch,\n };\n\n const config: ReactComponentConfig = {\n type: 'react-component',\n component: plugin.name,\n props: panelProps,\n title: name,\n id: panelId,\n };\n\n const { root } = layout;\n LayoutUtils.openComponent({ root, config, dragEvent });\n },\n [id, layout, supportedTypes]\n );\n\n useEffect(() => {\n const deregisterFns = [...new Set(supportedTypes.values())].map(plugin => {\n const { panelComponent } = plugin;\n if (panelComponent == null) {\n return registerComponent(plugin.name, WrapWidgetPlugin(plugin));\n }\n return registerComponent(plugin.name, panelComponent);\n });\n\n return () => {\n deregisterFns.forEach(deregister => deregister());\n };\n });\n\n /**\n * Listen for panel open events so we know when to open a panel\n */\n useListener(layout.eventHub, PanelEvent.OPEN, handlePanelOpen);\n\n return null;\n}\n\nexport default WidgetLoaderPlugin;\n"],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { DashboardPlugin } from '@deephaven/plugin';
2
+ declare const WidgetLoaderPluginConfig: DashboardPlugin;
3
+ export default WidgetLoaderPluginConfig;
4
+ //# sourceMappingURL=WidgetLoaderPluginConfig.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WidgetLoaderPluginConfig.d.ts","sourceRoot":"","sources":["../src/WidgetLoaderPluginConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGhE,QAAA,MAAM,wBAAwB,EAAE,eAI/B,CAAC;AAEF,eAAe,wBAAwB,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { PluginType } from '@deephaven/plugin';
2
+ import WidgetLoaderPlugin from "./WidgetLoaderPlugin.js";
3
+ var WidgetLoaderPluginConfig = {
4
+ name: 'WidgetLoaderPlugin',
5
+ type: PluginType.DASHBOARD_PLUGIN,
6
+ component: WidgetLoaderPlugin
7
+ };
8
+ export default WidgetLoaderPluginConfig;
9
+ //# sourceMappingURL=WidgetLoaderPluginConfig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WidgetLoaderPluginConfig.js","names":["PluginType","WidgetLoaderPlugin","WidgetLoaderPluginConfig","name","type","DASHBOARD_PLUGIN","component"],"sources":["../src/WidgetLoaderPluginConfig.ts"],"sourcesContent":["import { PluginType, DashboardPlugin } from '@deephaven/plugin';\nimport WidgetLoaderPlugin from './WidgetLoaderPlugin';\n\nconst WidgetLoaderPluginConfig: DashboardPlugin = {\n name: 'WidgetLoaderPlugin',\n type: PluginType.DASHBOARD_PLUGIN,\n component: WidgetLoaderPlugin,\n};\n\nexport default WidgetLoaderPluginConfig;\n"],"mappings":"AAAA,SAASA,UAAU,QAAyB,mBAAmB;AAAC,OACzDC,kBAAkB;AAEzB,IAAMC,wBAAyC,GAAG;EAChDC,IAAI,EAAE,oBAAoB;EAC1BC,IAAI,EAAEJ,UAAU,CAACK,gBAAgB;EACjCC,SAAS,EAAEL;AACb,CAAC;AAED,eAAeC,wBAAwB"}
package/dist/index.d.ts CHANGED
@@ -13,6 +13,8 @@ export { default as MarkdownPlugin } from './MarkdownPlugin';
13
13
  export { default as MarkdownPluginConfig } from './MarkdownPluginConfig';
14
14
  export { default as PandasPlugin } from './PandasPlugin';
15
15
  export { default as PandasPluginConfig } from './PandasPluginConfig';
16
+ export { default as WidgetLoaderPlugin } from './WidgetLoaderPlugin';
17
+ export { default as WidgetLoaderPluginConfig } from './WidgetLoaderPluginConfig';
16
18
  export { default as ControlType } from './controls/ControlType';
17
19
  export { default as LinkerUtils } from './linker/LinkerUtils';
18
20
  export type { Link } from './linker/LinkerUtils';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACjF,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AACzE,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAC9D,YAAY,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAExD,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACjF,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AACzE,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACjF,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAC9D,YAAY,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAExD,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC"}
package/dist/index.js CHANGED
@@ -13,6 +13,8 @@ export { default as MarkdownPlugin } from "./MarkdownPlugin.js";
13
13
  export { default as MarkdownPluginConfig } from "./MarkdownPluginConfig.js";
14
14
  export { default as PandasPlugin } from "./PandasPlugin.js";
15
15
  export { default as PandasPluginConfig } from "./PandasPluginConfig.js";
16
+ export { default as WidgetLoaderPlugin } from "./WidgetLoaderPlugin.js";
17
+ export { default as WidgetLoaderPluginConfig } from "./WidgetLoaderPluginConfig.js";
16
18
  export { default as ControlType } from "./controls/ControlType.js";
17
19
  export { default as LinkerUtils } from "./linker/LinkerUtils.js";
18
20
  export { default as ToolType } from "./linker/ToolType.js";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["default","ChartPlugin","ChartPluginConfig","ChartBuilderPlugin","ChartBuilderPluginConfig","ConsolePlugin","FilterPlugin","FilterPluginConfig","GridPlugin","GridPluginConfig","LinkerPlugin","LinkerPluginConfig","MarkdownPlugin","MarkdownPluginConfig","PandasPlugin","PandasPluginConfig","ControlType","LinkerUtils","ToolType"],"sources":["../src/index.ts"],"sourcesContent":["export { default as ChartPlugin } from './ChartPlugin';\nexport { default as ChartPluginConfig } from './ChartPluginConfig';\nexport { default as ChartBuilderPlugin } from './ChartBuilderPlugin';\nexport { default as ChartBuilderPluginConfig } from './ChartBuilderPluginConfig';\nexport { default as ConsolePlugin } from './ConsolePlugin';\nexport { default as FilterPlugin } from './FilterPlugin';\nexport { default as FilterPluginConfig } from './FilterPluginConfig';\nexport { default as GridPlugin } from './GridPlugin';\nexport { default as GridPluginConfig } from './GridPluginConfig';\nexport { default as LinkerPlugin } from './LinkerPlugin';\nexport { default as LinkerPluginConfig } from './LinkerPluginConfig';\nexport { default as MarkdownPlugin } from './MarkdownPlugin';\nexport { default as MarkdownPluginConfig } from './MarkdownPluginConfig';\nexport { default as PandasPlugin } from './PandasPlugin';\nexport { default as PandasPluginConfig } from './PandasPluginConfig';\nexport { default as ControlType } from './controls/ControlType';\nexport { default as LinkerUtils } from './linker/LinkerUtils';\nexport type { Link } from './linker/LinkerUtils';\nexport { default as ToolType } from './linker/ToolType';\n\nexport * from './events';\nexport * from './panels';\nexport * from './redux';\nexport * from './prop-types';\nexport * from './linker';\n"],"mappings":"SAASA,OAAO,IAAIC,WAAW;AAAA,SACtBD,OAAO,IAAIE,iBAAiB;AAAA,SAC5BF,OAAO,IAAIG,kBAAkB;AAAA,SAC7BH,OAAO,IAAII,wBAAwB;AAAA,SACnCJ,OAAO,IAAIK,aAAa;AAAA,SACxBL,OAAO,IAAIM,YAAY;AAAA,SACvBN,OAAO,IAAIO,kBAAkB;AAAA,SAC7BP,OAAO,IAAIQ,UAAU;AAAA,SACrBR,OAAO,IAAIS,gBAAgB;AAAA,SAC3BT,OAAO,IAAIU,YAAY;AAAA,SACvBV,OAAO,IAAIW,kBAAkB;AAAA,SAC7BX,OAAO,IAAIY,cAAc;AAAA,SACzBZ,OAAO,IAAIa,oBAAoB;AAAA,SAC/Bb,OAAO,IAAIc,YAAY;AAAA,SACvBd,OAAO,IAAIe,kBAAkB;AAAA,SAC7Bf,OAAO,IAAIgB,WAAW;AAAA,SACtBhB,OAAO,IAAIiB,WAAW;AAAA,SAEtBjB,OAAO,IAAIkB,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA"}
1
+ {"version":3,"file":"index.js","names":["default","ChartPlugin","ChartPluginConfig","ChartBuilderPlugin","ChartBuilderPluginConfig","ConsolePlugin","FilterPlugin","FilterPluginConfig","GridPlugin","GridPluginConfig","LinkerPlugin","LinkerPluginConfig","MarkdownPlugin","MarkdownPluginConfig","PandasPlugin","PandasPluginConfig","WidgetLoaderPlugin","WidgetLoaderPluginConfig","ControlType","LinkerUtils","ToolType"],"sources":["../src/index.ts"],"sourcesContent":["export { default as ChartPlugin } from './ChartPlugin';\nexport { default as ChartPluginConfig } from './ChartPluginConfig';\nexport { default as ChartBuilderPlugin } from './ChartBuilderPlugin';\nexport { default as ChartBuilderPluginConfig } from './ChartBuilderPluginConfig';\nexport { default as ConsolePlugin } from './ConsolePlugin';\nexport { default as FilterPlugin } from './FilterPlugin';\nexport { default as FilterPluginConfig } from './FilterPluginConfig';\nexport { default as GridPlugin } from './GridPlugin';\nexport { default as GridPluginConfig } from './GridPluginConfig';\nexport { default as LinkerPlugin } from './LinkerPlugin';\nexport { default as LinkerPluginConfig } from './LinkerPluginConfig';\nexport { default as MarkdownPlugin } from './MarkdownPlugin';\nexport { default as MarkdownPluginConfig } from './MarkdownPluginConfig';\nexport { default as PandasPlugin } from './PandasPlugin';\nexport { default as PandasPluginConfig } from './PandasPluginConfig';\nexport { default as WidgetLoaderPlugin } from './WidgetLoaderPlugin';\nexport { default as WidgetLoaderPluginConfig } from './WidgetLoaderPluginConfig';\nexport { default as ControlType } from './controls/ControlType';\nexport { default as LinkerUtils } from './linker/LinkerUtils';\nexport type { Link } from './linker/LinkerUtils';\nexport { default as ToolType } from './linker/ToolType';\n\nexport * from './events';\nexport * from './panels';\nexport * from './redux';\nexport * from './prop-types';\nexport * from './linker';\n"],"mappings":"SAASA,OAAO,IAAIC,WAAW;AAAA,SACtBD,OAAO,IAAIE,iBAAiB;AAAA,SAC5BF,OAAO,IAAIG,kBAAkB;AAAA,SAC7BH,OAAO,IAAII,wBAAwB;AAAA,SACnCJ,OAAO,IAAIK,aAAa;AAAA,SACxBL,OAAO,IAAIM,YAAY;AAAA,SACvBN,OAAO,IAAIO,kBAAkB;AAAA,SAC7BP,OAAO,IAAIQ,UAAU;AAAA,SACrBR,OAAO,IAAIS,gBAAgB;AAAA,SAC3BT,OAAO,IAAIU,YAAY;AAAA,SACvBV,OAAO,IAAIW,kBAAkB;AAAA,SAC7BX,OAAO,IAAIY,cAAc;AAAA,SACzBZ,OAAO,IAAIa,oBAAoB;AAAA,SAC/Bb,OAAO,IAAIc,YAAY;AAAA,SACvBd,OAAO,IAAIe,kBAAkB;AAAA,SAC7Bf,OAAO,IAAIgB,kBAAkB;AAAA,SAC7BhB,OAAO,IAAIiB,wBAAwB;AAAA,SACnCjB,OAAO,IAAIkB,WAAW;AAAA,SACtBlB,OAAO,IAAImB,WAAW;AAAA,SAEtBnB,OAAO,IAAIoB,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA"}
@@ -175,7 +175,7 @@ export declare class ChartPanel extends Component<ChartPanelProps, ChartPanelSta
175
175
  updateChart(): void;
176
176
  render(): ReactElement;
177
177
  }
178
- declare const ConnectedChartPanel: import("react-redux").ConnectedComponent<typeof ChartPanel, import("react-redux").Omit<Pick<ChartPanelProps, "glContainer" | "metadata" | "glEventHub" | "localDashboardId" | "inputFilters" | "links" | "makeModel" | "setActiveTool" | "setDashboardIsolatedLinkerPanelId" | "Plotly"> & Partial<Pick<ChartPanelProps, "source" | "columnSelectionValidator" | "settings" | "panelState" | "isLinkerActive" | "sourcePanel" | "containerRef">> & Partial<Pick<{
178
+ declare const ConnectedChartPanel: import("react-redux").ConnectedComponent<typeof ChartPanel, import("react-redux").Omit<Pick<ChartPanelProps, "glContainer" | "metadata" | "glEventHub" | "localDashboardId" | "inputFilters" | "links" | "makeModel" | "setActiveTool" | "setDashboardIsolatedLinkerPanelId" | "Plotly"> & Partial<Pick<ChartPanelProps, "source" | "settings" | "columnSelectionValidator" | "panelState" | "isLinkerActive" | "sourcePanel" | "containerRef">> & Partial<Pick<{
179
179
  columnSelectionValidator: null;
180
180
  isLinkerActive: boolean;
181
181
  source: null;
@@ -183,7 +183,7 @@ declare const ConnectedChartPanel: import("react-redux").ConnectedComponent<type
183
183
  panelState: null;
184
184
  settings: {};
185
185
  containerRef: null;
186
- }, never>>, "source" | "columnSelectionValidator" | "inputFilters" | "links" | "settings" | "setActiveTool" | "setDashboardIsolatedLinkerPanelId" | "isLinkerActive" | "sourcePanel" | "Plotly" | "containerRef"> & {
186
+ }, never>>, "source" | "settings" | "inputFilters" | "links" | "columnSelectionValidator" | "setActiveTool" | "setDashboardIsolatedLinkerPanelId" | "isLinkerActive" | "sourcePanel" | "Plotly" | "containerRef"> & {
187
187
  localDashboardId: string;
188
188
  metadata: {
189
189
  sourcePanelId?: string;
@@ -4,6 +4,7 @@ import { CommandHistoryStorage, Console } from '@deephaven/console';
4
4
  import { DashboardPanelProps } from '@deephaven/dashboard';
5
5
  import type { IdeSession, VariableDefinition } from '@deephaven/jsapi-types';
6
6
  import { SessionWrapper } from '@deephaven/jsapi-utils';
7
+ import { DeephavenPluginModuleMap } from '@deephaven/redux';
7
8
  import type { JSZipObject } from 'jszip';
8
9
  import './ConsolePanel.scss';
9
10
  interface ConsoleSettings {
@@ -20,6 +21,7 @@ interface ConsolePanelProps extends DashboardPanelProps {
20
21
  sessionWrapper: SessionWrapper;
21
22
  timeZone: string;
22
23
  unzip?: (file: File) => Promise<JSZipObject[]>;
24
+ plugins: DeephavenPluginModuleMap;
23
25
  }
24
26
  interface ConsolePanelState {
25
27
  consoleSettings: ConsoleSettings;
@@ -68,9 +70,11 @@ export declare class ConsolePanel extends PureComponent<ConsolePanelProps, Conso
68
70
  closeDisconnectedPanels(force?: boolean): void;
69
71
  savePanelState: import("lodash").DebouncedFunc<() => void>;
70
72
  updateDimensions(): void;
73
+ supportsType(type: string): boolean;
74
+ iconForType(type: string): JSX.Element;
71
75
  render(): ReactElement;
72
76
  }
73
- declare const ConnectedConsolePanel: import("react-redux").ConnectedComponent<typeof ConsolePanel, import("react-redux").Omit<React.ClassAttributes<ConsolePanel> & ConsolePanelProps, "timeZone" | "commandHistoryStorage" | "sessionWrapper"> & {
77
+ declare const ConnectedConsolePanel: import("react-redux").ConnectedComponent<typeof ConsolePanel, import("react-redux").Omit<React.ClassAttributes<ConsolePanel> & ConsolePanelProps, "timeZone" | "commandHistoryStorage" | "sessionWrapper" | "plugins"> & {
74
78
  localDashboardId: string;
75
79
  }>;
76
80
  export default ConnectedConsolePanel;
@@ -1 +1 @@
1
- {"version":3,"file":"ConsolePanel.d.ts","sourceRoot":"","sources":["../../src/panels/ConsolePanel.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ConsolePanel.d.ts","sourceRoot":"","sources":["../../src/panels/ConsolePanel.tsx"],"names":[],"mappings":"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"}
@@ -9,11 +9,12 @@ import React, { PureComponent } from 'react';
9
9
  import shortid from 'shortid';
10
10
  import debounce from 'lodash.debounce';
11
11
  import { connect } from 'react-redux';
12
- import { Console, ConsoleConstants, HeapUsage } from '@deephaven/console';
12
+ import { Console, ConsoleConstants, HeapUsage, ObjectIcon } from '@deephaven/console';
13
13
  import { PanelEvent } from '@deephaven/dashboard';
14
14
  import Log from '@deephaven/log';
15
- import { getCommandHistoryStorage, getTimeZone } from '@deephaven/redux';
15
+ import { getCommandHistoryStorage, getPlugins, getTimeZone } from '@deephaven/redux';
16
16
  import { assertNotNull } from '@deephaven/utils';
17
+ import { getIconForPlugin, pluginSupportsType } from '@deephaven/plugin';
17
18
  import { ConsoleEvent } from "../events/index.js";
18
19
  import Panel from "./Panel.js";
19
20
  import { getDashboardSessionWrapper } from "../redux/index.js";
@@ -54,6 +55,8 @@ export class ConsolePanel extends PureComponent {
54
55
  this.handleSettingsChange = this.handleSettingsChange.bind(this);
55
56
  this.handleShow = this.handleShow.bind(this);
56
57
  this.handlePanelMount = this.handlePanelMount.bind(this);
58
+ this.supportsType = this.supportsType.bind(this);
59
+ this.iconForType = this.iconForType.bind(this);
57
60
  this.consoleRef = /*#__PURE__*/React.createRef();
58
61
  var {
59
62
  panelState: initialPanelState
@@ -292,6 +295,25 @@ export class ConsolePanel extends PureComponent {
292
295
  var _this$consoleRef$curr3;
293
296
  (_this$consoleRef$curr3 = this.consoleRef.current) === null || _this$consoleRef$curr3 === void 0 ? void 0 : _this$consoleRef$curr3.updateDimensions();
294
297
  }
298
+ supportsType(type) {
299
+ var {
300
+ plugins
301
+ } = this.props;
302
+ return [...plugins.values()].some(plugin => pluginSupportsType(plugin, type));
303
+ }
304
+ iconForType(type) {
305
+ var {
306
+ plugins
307
+ } = this.props;
308
+ var plugin = [...plugins.values()].find(p => pluginSupportsType(p, type));
309
+ if (plugin != null) {
310
+ return getIconForPlugin(plugin);
311
+ }
312
+ // TODO: #1573 Remove this default and always return getIconForPlugin
313
+ return /*#__PURE__*/_jsx(ObjectIcon, {
314
+ type: type
315
+ });
316
+ }
295
317
  render() {
296
318
  var {
297
319
  commandHistoryStorage,
@@ -372,7 +394,9 @@ export class ConsolePanel extends PureComponent {
372
394
  scope: sessionId,
373
395
  timeZone: timeZone,
374
396
  objectMap: objectMap,
375
- unzip: unzip
397
+ unzip: unzip,
398
+ supportsType: this.supportsType,
399
+ iconForType: this.iconForType
376
400
  })
377
401
  });
378
402
  }
@@ -382,7 +406,8 @@ _defineProperty(ConsolePanel, "TITLE", 'Console');
382
406
  var mapStateToProps = (state, ownProps) => ({
383
407
  commandHistoryStorage: getCommandHistoryStorage(state),
384
408
  sessionWrapper: getDashboardSessionWrapper(state, ownProps.localDashboardId),
385
- timeZone: getTimeZone(state)
409
+ timeZone: getTimeZone(state),
410
+ plugins: getPlugins(state)
386
411
  });
387
412
  var ConnectedConsolePanel = connect(mapStateToProps, null, null, {
388
413
  forwardRef: true