@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.
- package/dist/PandasPlugin.d.ts +3 -2
- package/dist/PandasPlugin.d.ts.map +1 -1
- package/dist/PandasPlugin.js +19 -14
- package/dist/PandasPlugin.js.map +1 -1
- package/dist/PandasPluginConfig.d.ts +2 -2
- package/dist/PandasPluginConfig.d.ts.map +1 -1
- package/dist/PandasPluginConfig.js +8 -2
- package/dist/PandasPluginConfig.js.map +1 -1
- package/dist/WidgetLoaderPlugin.d.ts +17 -0
- package/dist/WidgetLoaderPlugin.d.ts.map +1 -0
- package/dist/WidgetLoaderPlugin.js +155 -0
- package/dist/WidgetLoaderPlugin.js.map +1 -0
- package/dist/WidgetLoaderPluginConfig.d.ts +4 -0
- package/dist/WidgetLoaderPluginConfig.d.ts.map +1 -0
- package/dist/WidgetLoaderPluginConfig.js +9 -0
- package/dist/WidgetLoaderPluginConfig.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/panels/ChartPanel.d.ts +2 -2
- package/dist/panels/ConsolePanel.d.ts +5 -1
- package/dist/panels/ConsolePanel.d.ts.map +1 -1
- package/dist/panels/ConsolePanel.js +29 -4
- package/dist/panels/ConsolePanel.js.map +1 -1
- package/dist/panels/DropdownFilterPanel.d.ts +1 -1
- package/dist/panels/IrisGridPanel.d.ts +14 -9
- package/dist/panels/IrisGridPanel.d.ts.map +1 -1
- package/dist/panels/IrisGridPanel.js.map +1 -1
- package/dist/panels/Panel.d.ts +3 -2
- package/dist/panels/Panel.d.ts.map +1 -1
- package/dist/panels/Panel.js +14 -3
- package/dist/panels/Panel.js.map +1 -1
- package/dist/panels/WidgetPanel.d.ts +2 -2
- package/dist/panels/WidgetPanel.d.ts.map +1 -1
- package/dist/panels/WidgetPanel.js.map +1 -1
- package/dist/useHydrateGrid.d.ts +3 -2
- package/dist/useHydrateGrid.d.ts.map +1 -1
- package/dist/useHydrateGrid.js.map +1 -1
- package/package.json +24 -24
package/dist/PandasPlugin.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
-
import {
|
|
3
|
-
|
|
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":";
|
|
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"}
|
package/dist/PandasPlugin.js
CHANGED
|
@@ -1,19 +1,24 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
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
|
-
|
|
6
|
-
|
|
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
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
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
|
package/dist/PandasPlugin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PandasPlugin.js","names":["
|
|
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 {
|
|
2
|
-
declare const PandasPluginConfig:
|
|
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,
|
|
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
|
-
|
|
6
|
-
|
|
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","
|
|
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 @@
|
|
|
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';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,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,
|
|
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" | "
|
|
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" | "
|
|
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":";AAEA,OAAO,KAAK,EAAE,EAAE,aAAa,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAItE,OAAO,EACL,qBAAqB,EACrB,OAAO,
|
|
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
|