@deephaven/dashboard-core-plugins 1.22.1-alpha-pivot-builder.0 → 1.22.2-alpha-pivot-builder.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ChartBuilderPlugin.js +8 -15
- package/dist/ChartBuilderPlugin.js.map +1 -1
- package/dist/ChartPanelPlugin.js +13 -6
- package/dist/ChartPanelPlugin.js.map +1 -1
- package/dist/ChartWidgetPlugin.js +11 -4
- package/dist/ChartWidgetPlugin.js.map +1 -1
- package/dist/ConsolePlugin.js +38 -46
- package/dist/ConsolePlugin.js.map +1 -1
- package/dist/FilterPlugin.js +63 -44
- package/dist/FilterPlugin.js.map +1 -1
- package/dist/GridPanelPlugin.js +3 -5
- package/dist/GridPanelPlugin.js.map +1 -1
- package/dist/GridWidgetPlugin.js +35 -29
- package/dist/GridWidgetPlugin.js.map +1 -1
- package/dist/LinkerPlugin.js +3 -5
- package/dist/LinkerPlugin.js.map +1 -1
- package/dist/MarkdownPlugin.js +18 -17
- package/dist/MarkdownPlugin.js.map +1 -1
- package/dist/PandasPanelPlugin.js +3 -5
- package/dist/PandasPanelPlugin.js.map +1 -1
- package/dist/PandasWidgetPlugin.js +3 -7
- package/dist/PandasWidgetPlugin.js.map +1 -1
- package/dist/TablePluginWrapper.js +8 -10
- package/dist/TablePluginWrapper.js.map +1 -1
- package/dist/WidgetLoaderPlugin.js +24 -29
- package/dist/WidgetLoaderPlugin.js.map +1 -1
- package/dist/controls/dropdown-filter/DropdownFilter.js +63 -79
- package/dist/controls/dropdown-filter/DropdownFilter.js.map +1 -1
- package/dist/controls/input-filter/InputFilter.js +32 -58
- package/dist/controls/input-filter/InputFilter.js.map +1 -1
- package/dist/controls/markdown/MarkdownContainer.js +4 -5
- package/dist/controls/markdown/MarkdownContainer.js.map +1 -1
- package/dist/controls/markdown/MarkdownEditor.js +7 -10
- package/dist/controls/markdown/MarkdownEditor.js.map +1 -1
- package/dist/controls/markdown/MarkdownStartPage.js +8 -12
- package/dist/controls/markdown/MarkdownStartPage.js.map +1 -1
- package/dist/linker/Linker.js +100 -192
- package/dist/linker/Linker.js.map +1 -1
- package/dist/linker/LinkerLink.js +23 -31
- package/dist/linker/LinkerLink.js.map +1 -1
- package/dist/linker/LinkerOverlayContent.js +65 -66
- package/dist/linker/LinkerOverlayContent.js.map +1 -1
- package/dist/linker/LinkerUtils.js +6 -14
- package/dist/linker/LinkerUtils.js.map +1 -1
- package/dist/panels/ChartColumnSelectorOverlay.js +4 -6
- package/dist/panels/ChartColumnSelectorOverlay.js.map +1 -1
- package/dist/panels/ChartFilterOverlay.js +7 -9
- package/dist/panels/ChartFilterOverlay.js.map +1 -1
- package/dist/panels/ChartPanel.js +136 -220
- package/dist/panels/ChartPanel.js.map +1 -1
- package/dist/panels/ChartPanelUtils.js +3 -4
- package/dist/panels/ChartPanelUtils.js.map +1 -1
- package/dist/panels/CommandHistoryPanel.js +33 -52
- package/dist/panels/CommandHistoryPanel.js.map +1 -1
- package/dist/panels/ConsolePanel.js +68 -130
- package/dist/panels/ConsolePanel.js.map +1 -1
- package/dist/panels/CorePanel.js +6 -18
- package/dist/panels/CorePanel.js.map +1 -1
- package/dist/panels/DropdownFilterPanel.js +109 -165
- package/dist/panels/DropdownFilterPanel.js.map +1 -1
- package/dist/panels/FileExplorerPanel.js +30 -55
- package/dist/panels/FileExplorerPanel.js.map +1 -1
- package/dist/panels/FilterSetManager.js +81 -141
- package/dist/panels/FilterSetManager.js.map +1 -1
- package/dist/panels/FilterSetManagerPanel.js +68 -87
- package/dist/panels/FilterSetManagerPanel.js.map +1 -1
- package/dist/panels/InputFilterPanel.js +45 -68
- package/dist/panels/InputFilterPanel.js.map +1 -1
- package/dist/panels/IrisGridPanel.js +197 -272
- package/dist/panels/IrisGridPanel.js.map +1 -1
- package/dist/panels/IrisGridPanelTooltip.js +1 -3
- package/dist/panels/IrisGridPanelTooltip.js.map +1 -1
- package/dist/panels/LogPanel.js +6 -13
- package/dist/panels/LogPanel.js.map +1 -1
- package/dist/panels/MarkdownNotebook.js +28 -50
- package/dist/panels/MarkdownNotebook.js.map +1 -1
- package/dist/panels/MarkdownPanel.js +19 -38
- package/dist/panels/MarkdownPanel.js.map +1 -1
- package/dist/panels/NotebookPanel.js +157 -292
- package/dist/panels/NotebookPanel.js.map +1 -1
- package/dist/panels/PandasPanel.js +5 -15
- package/dist/panels/PandasPanel.js.map +1 -1
- package/dist/panels/PandasReloadButton.js +1 -3
- package/dist/panels/PandasReloadButton.js.map +1 -1
- package/dist/panels/WidgetPanel.js +42 -51
- package/dist/panels/WidgetPanel.js.map +1 -1
- package/dist/panels/WidgetPanelTooltip.js +6 -10
- package/dist/panels/WidgetPanelTooltip.js.map +1 -1
- package/dist/useConfigureRuff.js +8 -9
- package/dist/useConfigureRuff.js.map +1 -1
- package/dist/useDashboardColumnFilters.js +4 -7
- package/dist/useDashboardColumnFilters.js.map +1 -1
- package/dist/useGridLinker.js +9 -16
- package/dist/useGridLinker.js.map +1 -1
- package/dist/useIrisGridModel.js +18 -3
- package/dist/useIrisGridModel.js.map +1 -1
- package/dist/useTablePlugin.js +27 -14
- package/dist/useTablePlugin.js.map +1 -1
- package/package.json +24 -24
|
@@ -12,19 +12,14 @@ import { ChartPanel } from "./panels/index.js";
|
|
|
12
12
|
*/
|
|
13
13
|
export function ChartBuilderPlugin(props) {
|
|
14
14
|
assertIsDashboardPluginProps(props);
|
|
15
|
-
var
|
|
16
|
-
|
|
17
|
-
layout
|
|
18
|
-
} = props;
|
|
15
|
+
var id = props.id,
|
|
16
|
+
layout = props.layout;
|
|
19
17
|
var handleCreateChart = useCallback(_ref => {
|
|
20
|
-
var
|
|
21
|
-
|
|
22
|
-
panelId = nanoid(),
|
|
23
|
-
table
|
|
24
|
-
|
|
25
|
-
var {
|
|
26
|
-
settings
|
|
27
|
-
} = metadata;
|
|
18
|
+
var metadata = _ref.metadata,
|
|
19
|
+
_ref$panelId = _ref.panelId,
|
|
20
|
+
panelId = _ref$panelId === void 0 ? nanoid() : _ref$panelId,
|
|
21
|
+
table = _ref.table;
|
|
22
|
+
var settings = metadata.settings;
|
|
28
23
|
var fetchTable = /*#__PURE__*/function () {
|
|
29
24
|
var _ref2 = _asyncToGenerator(function* () {
|
|
30
25
|
return table;
|
|
@@ -46,9 +41,7 @@ export function ChartBuilderPlugin(props) {
|
|
|
46
41
|
title,
|
|
47
42
|
id: panelId
|
|
48
43
|
};
|
|
49
|
-
var
|
|
50
|
-
root
|
|
51
|
-
} = layout;
|
|
44
|
+
var root = layout.root;
|
|
52
45
|
LayoutUtils.openComponent({
|
|
53
46
|
root,
|
|
54
47
|
config
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChartBuilderPlugin.js","names":["useCallback","ChartUtils","assertIsDashboardPluginProps","LayoutUtils","useListener","nanoid","IrisGridEvent","ChartPanel","ChartBuilderPlugin","props","id","layout","handleCreateChart","_ref","metadata","panelId","table","settings","fetchTable","_ref2","_asyncToGenerator","apply","arguments","title","titleFromSettings","config","type","component","COMPONENT","localDashboardId","fetch","root","openComponent","eventHub","CREATE_CHART"],"sources":["../src/ChartBuilderPlugin.tsx"],"sourcesContent":["import { useCallback } from 'react';\nimport { type ChartModelSettings, ChartUtils } from '@deephaven/chart';\nimport {\n assertIsDashboardPluginProps,\n type DashboardPluginComponentProps,\n LayoutUtils,\n useListener,\n} from '@deephaven/dashboard';\nimport type { dh } from '@deephaven/jsapi-types';\nimport { nanoid } from 'nanoid';\nimport { IrisGridEvent } from './events';\nimport { ChartPanel } from './panels';\n\nexport type ChartBuilderPluginProps = Partial<DashboardPluginComponentProps>;\n\n/**\n * Listens for IrisGridEvent.CREATE_CHART and creates a chart from the settings provided\n * Requires the GridPlugin and ChartPlugin plugins to be loaded as well\n */\nexport function ChartBuilderPlugin(\n props: ChartBuilderPluginProps\n): JSX.Element | null {\n assertIsDashboardPluginProps(props);\n const { id, layout } = props;\n\n const handleCreateChart = useCallback(\n ({\n metadata,\n panelId = nanoid(),\n table,\n }: {\n metadata: {\n settings: ChartModelSettings;\n sourcePanelId: string;\n table: string;\n };\n panelId?: string;\n table: dh.Table;\n }) => {\n const { settings } = metadata;\n const fetchTable = async () => table;\n const title = ChartUtils.titleFromSettings(settings);\n\n const config = {\n type: 'react-component' as const,\n component: ChartPanel.COMPONENT,\n props: {\n localDashboardId: id,\n id: panelId,\n metadata,\n fetch: fetchTable,\n },\n title,\n id: panelId,\n };\n\n const { root } = layout;\n LayoutUtils.openComponent({ root, config });\n },\n [id, layout]\n );\n\n useListener(layout.eventHub, IrisGridEvent.CREATE_CHART, handleCreateChart);\n\n return null;\n}\n\nexport default ChartBuilderPlugin;\n"],"mappings":";;AAAA,SAASA,WAAW,QAAQ,OAAO;AACnC,SAAkCC,UAAU,QAAQ,kBAAkB;AACtE,SACEC,4BAA4B,EAE5BC,WAAW,EACXC,WAAW,QACN,sBAAsB;AAE7B,SAASC,MAAM,QAAQ,QAAQ;AAAC,SACvBC,aAAa;AAAA,SACbC,UAAU;AAInB;AACA;AACA;AACA;AACA,OAAO,SAASC,kBAAkBA,CAChCC,KAA8B,EACV;EACpBP,4BAA4B,CAACO,KAAK,CAAC;EACnC,
|
|
1
|
+
{"version":3,"file":"ChartBuilderPlugin.js","names":["useCallback","ChartUtils","assertIsDashboardPluginProps","LayoutUtils","useListener","nanoid","IrisGridEvent","ChartPanel","ChartBuilderPlugin","props","id","layout","handleCreateChart","_ref","metadata","_ref$panelId","panelId","table","settings","fetchTable","_ref2","_asyncToGenerator","apply","arguments","title","titleFromSettings","config","type","component","COMPONENT","localDashboardId","fetch","root","openComponent","eventHub","CREATE_CHART"],"sources":["../src/ChartBuilderPlugin.tsx"],"sourcesContent":["import { useCallback } from 'react';\nimport { type ChartModelSettings, ChartUtils } from '@deephaven/chart';\nimport {\n assertIsDashboardPluginProps,\n type DashboardPluginComponentProps,\n LayoutUtils,\n useListener,\n} from '@deephaven/dashboard';\nimport type { dh } from '@deephaven/jsapi-types';\nimport { nanoid } from 'nanoid';\nimport { IrisGridEvent } from './events';\nimport { ChartPanel } from './panels';\n\nexport type ChartBuilderPluginProps = Partial<DashboardPluginComponentProps>;\n\n/**\n * Listens for IrisGridEvent.CREATE_CHART and creates a chart from the settings provided\n * Requires the GridPlugin and ChartPlugin plugins to be loaded as well\n */\nexport function ChartBuilderPlugin(\n props: ChartBuilderPluginProps\n): JSX.Element | null {\n assertIsDashboardPluginProps(props);\n const { id, layout } = props;\n\n const handleCreateChart = useCallback(\n ({\n metadata,\n panelId = nanoid(),\n table,\n }: {\n metadata: {\n settings: ChartModelSettings;\n sourcePanelId: string;\n table: string;\n };\n panelId?: string;\n table: dh.Table;\n }) => {\n const { settings } = metadata;\n const fetchTable = async () => table;\n const title = ChartUtils.titleFromSettings(settings);\n\n const config = {\n type: 'react-component' as const,\n component: ChartPanel.COMPONENT,\n props: {\n localDashboardId: id,\n id: panelId,\n metadata,\n fetch: fetchTable,\n },\n title,\n id: panelId,\n };\n\n const { root } = layout;\n LayoutUtils.openComponent({ root, config });\n },\n [id, layout]\n );\n\n useListener(layout.eventHub, IrisGridEvent.CREATE_CHART, handleCreateChart);\n\n return null;\n}\n\nexport default ChartBuilderPlugin;\n"],"mappings":";;AAAA,SAASA,WAAW,QAAQ,OAAO;AACnC,SAAkCC,UAAU,QAAQ,kBAAkB;AACtE,SACEC,4BAA4B,EAE5BC,WAAW,EACXC,WAAW,QACN,sBAAsB;AAE7B,SAASC,MAAM,QAAQ,QAAQ;AAAC,SACvBC,aAAa;AAAA,SACbC,UAAU;AAInB;AACA;AACA;AACA;AACA,OAAO,SAASC,kBAAkBA,CAChCC,KAA8B,EACV;EACpBP,4BAA4B,CAACO,KAAK,CAAC;EACnC,IAAQC,EAAE,GAAaD,KAAK,CAApBC,EAAE;IAAEC,MAAM,GAAKF,KAAK,CAAhBE,MAAM;EAElB,IAAMC,iBAAiB,GAAGZ,WAAW,CACnCa,IAAA,IAYM;IAAA,IAXJC,QAAQ,GAAAD,IAAA,CAARC,QAAQ;MAAAC,YAAA,GAAAF,IAAA,CACRG,OAAO;MAAPA,OAAO,GAAAD,YAAA,cAAGV,MAAM,CAAC,CAAC,GAAAU,YAAA;MAClBE,KAAK,GAAAJ,IAAA,CAALI,KAAK;IAUL,IAAQC,QAAQ,GAAKJ,QAAQ,CAArBI,QAAQ;IAChB,IAAMC,UAAU;MAAA,IAAAC,KAAA,GAAAC,iBAAA,CAAG;QAAA,OAAYJ,KAAK;MAAA;MAAA,gBAA9BE,UAAUA,CAAA;QAAA,OAAAC,KAAA,CAAAE,KAAA,OAAAC,SAAA;MAAA;IAAA,GAAoB;IACpC,IAAMC,KAAK,GAAGvB,UAAU,CAACwB,iBAAiB,CAACP,QAAQ,CAAC;IAEpD,IAAMQ,MAAM,GAAG;MACbC,IAAI,EAAE,iBAA0B;MAChCC,SAAS,EAAErB,UAAU,CAACsB,SAAS;MAC/BpB,KAAK,EAAE;QACLqB,gBAAgB,EAAEpB,EAAE;QACpBA,EAAE,EAAEM,OAAO;QACXF,QAAQ;QACRiB,KAAK,EAAEZ;MACT,CAAC;MACDK,KAAK;MACLd,EAAE,EAAEM;IACN,CAAC;IAED,IAAQgB,IAAI,GAAKrB,MAAM,CAAfqB,IAAI;IACZ7B,WAAW,CAAC8B,aAAa,CAAC;MAAED,IAAI;MAAEN;IAAO,CAAC,CAAC;EAC7C,CAAC,EACD,CAAChB,EAAE,EAAEC,MAAM,CACb,CAAC;EAEDP,WAAW,CAACO,MAAM,CAACuB,QAAQ,EAAE5B,aAAa,CAAC6B,YAAY,EAAEvB,iBAAiB,CAAC;EAE3E,OAAO,IAAI;AACb;AAEA,eAAeJ,kBAAkB","ignoreList":[]}
|
package/dist/ChartPanelPlugin.js
CHANGED
|
@@ -3,6 +3,12 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
|
|
|
3
3
|
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
4
4
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
5
5
|
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
6
|
+
function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
|
|
7
|
+
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
8
|
+
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
9
|
+
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
10
|
+
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
11
|
+
function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
|
|
6
12
|
function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }
|
|
7
13
|
function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; }
|
|
8
14
|
import { forwardRef, useCallback } from 'react';
|
|
@@ -50,13 +56,14 @@ function _createChartModel() {
|
|
|
50
56
|
}
|
|
51
57
|
export var ChartPanelPlugin = /*#__PURE__*/forwardRef((props, ref) => {
|
|
52
58
|
var panelState = isChartPanelDehydratedProps(props) ? props.panelState : undefined;
|
|
53
|
-
var
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
localDashboardId
|
|
57
|
-
} = props;
|
|
59
|
+
var panelFetch = props.fetch,
|
|
60
|
+
metadata = props.metadata,
|
|
61
|
+
localDashboardId = props.localDashboardId;
|
|
58
62
|
assertNotNull(metadata);
|
|
59
|
-
var
|
|
63
|
+
var _useDeferredApi = useDeferredApi(metadata),
|
|
64
|
+
_useDeferredApi2 = _slicedToArray(_useDeferredApi, 2),
|
|
65
|
+
dh = _useDeferredApi2[0],
|
|
66
|
+
error = _useDeferredApi2[1];
|
|
60
67
|
var makeModel = useCallback(/*#__PURE__*/_asyncToGenerator(function* () {
|
|
61
68
|
if (error != null) {
|
|
62
69
|
throw error;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChartPanelPlugin.js","names":["forwardRef","useCallback","useDeferredApi","ChartModelFactory","IrisGridUtils","getTimeZone","store","assertNotNull","isChartPanelDehydratedProps","isChartPanelTableMetadata","ConnectedChartPanel","jsx","_jsx","createChartModel","_x","_x2","_x3","_x4","_createChartModel","apply","arguments","_asyncToGenerator","dh","metadata","panelFetch","panelState","settings","tableName","tableSettings","table","_objectSpread","applyTableSettings","getState","makeModelFromSettings","figure","makeModel","ChartPanelPlugin","props","ref","undefined","fetch","localDashboardId","error","Promise","displayName"],"sources":["../src/ChartPanelPlugin.tsx"],"sourcesContent":["import { forwardRef, useCallback } from 'react';\nimport { useDeferredApi } from '@deephaven/jsapi-bootstrap';\nimport { type ChartModel, ChartModelFactory } from '@deephaven/chart';\nimport type { dh as DhType } from '@deephaven/jsapi-types';\nimport { IrisGridUtils } from '@deephaven/iris-grid';\nimport { getTimeZone, store } from '@deephaven/redux';\nimport { type WidgetPanelProps } from '@deephaven/plugin';\nimport { assertNotNull } from '@deephaven/utils';\nimport {\n type ChartPanelMetadata,\n type GLChartPanelState,\n isChartPanelDehydratedProps,\n isChartPanelTableMetadata,\n} from './panels';\nimport ConnectedChartPanel, {\n type ChartPanel,\n type ChartPanelProps,\n} from './panels/ChartPanel';\n\nasync function createChartModel(\n dh: typeof DhType,\n metadata: ChartPanelMetadata,\n panelFetch: () => Promise<DhType.plot.Figure | DhType.Table>,\n panelState?: GLChartPanelState\n): Promise<ChartModel> {\n let settings = {};\n let tableName = '';\n let tableSettings = {};\n\n if (isChartPanelTableMetadata(metadata)) {\n settings = metadata.settings;\n tableName = metadata.table;\n tableSettings = metadata.tableSettings;\n }\n if (panelState != null) {\n if (panelState.tableSettings != null) {\n tableSettings = panelState.tableSettings;\n }\n if (panelState.table != null) {\n tableName = panelState.table;\n }\n if (panelState.settings != null) {\n settings = {\n ...settings,\n ...panelState.settings,\n };\n }\n }\n\n if (tableName != null && tableName !== '') {\n const table = (await panelFetch()) as DhType.Table;\n new IrisGridUtils(dh).applyTableSettings(\n table,\n tableSettings,\n getTimeZone(store.getState())\n );\n\n return ChartModelFactory.makeModelFromSettings(dh, settings, table);\n }\n\n const figure = (await panelFetch()) as DhType.plot.Figure;\n\n return ChartModelFactory.makeModel(dh, settings, figure);\n}\n\nexport const ChartPanelPlugin = forwardRef(\n (props: WidgetPanelProps<DhType.plot.Figure>, ref: React.Ref<ChartPanel>) => {\n const panelState = isChartPanelDehydratedProps(props)\n ? (props as unknown as ChartPanelProps).panelState\n : undefined;\n\n const { fetch: panelFetch, metadata, localDashboardId } = props;\n assertNotNull(metadata);\n const [dh, error] = useDeferredApi(metadata);\n\n const makeModel = useCallback(async () => {\n if (error != null) {\n throw error;\n }\n if (dh == null) {\n return new Promise<ChartModel>(() => {\n // We don't have the API yet, just return an unresolved promise so it shows as loading\n });\n }\n return createChartModel(\n dh,\n metadata as ChartPanelMetadata,\n panelFetch,\n panelState\n );\n }, [dh, error, metadata, panelFetch, panelState]);\n\n return (\n <ConnectedChartPanel\n ref={ref}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...props}\n metadata={metadata}\n localDashboardId={localDashboardId}\n makeModel={makeModel}\n />\n );\n }\n);\n\nChartPanelPlugin.displayName = 'ChartPanelPlugin';\n\nexport default ChartPanelPlugin;\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"ChartPanelPlugin.js","names":["forwardRef","useCallback","useDeferredApi","ChartModelFactory","IrisGridUtils","getTimeZone","store","assertNotNull","isChartPanelDehydratedProps","isChartPanelTableMetadata","ConnectedChartPanel","jsx","_jsx","createChartModel","_x","_x2","_x3","_x4","_createChartModel","apply","arguments","_asyncToGenerator","dh","metadata","panelFetch","panelState","settings","tableName","tableSettings","table","_objectSpread","applyTableSettings","getState","makeModelFromSettings","figure","makeModel","ChartPanelPlugin","props","ref","undefined","fetch","localDashboardId","_useDeferredApi","_useDeferredApi2","_slicedToArray","error","Promise","displayName"],"sources":["../src/ChartPanelPlugin.tsx"],"sourcesContent":["import { forwardRef, useCallback } from 'react';\nimport { useDeferredApi } from '@deephaven/jsapi-bootstrap';\nimport { type ChartModel, ChartModelFactory } from '@deephaven/chart';\nimport type { dh as DhType } from '@deephaven/jsapi-types';\nimport { IrisGridUtils } from '@deephaven/iris-grid';\nimport { getTimeZone, store } from '@deephaven/redux';\nimport { type WidgetPanelProps } from '@deephaven/plugin';\nimport { assertNotNull } from '@deephaven/utils';\nimport {\n type ChartPanelMetadata,\n type GLChartPanelState,\n isChartPanelDehydratedProps,\n isChartPanelTableMetadata,\n} from './panels';\nimport ConnectedChartPanel, {\n type ChartPanel,\n type ChartPanelProps,\n} from './panels/ChartPanel';\n\nasync function createChartModel(\n dh: typeof DhType,\n metadata: ChartPanelMetadata,\n panelFetch: () => Promise<DhType.plot.Figure | DhType.Table>,\n panelState?: GLChartPanelState\n): Promise<ChartModel> {\n let settings = {};\n let tableName = '';\n let tableSettings = {};\n\n if (isChartPanelTableMetadata(metadata)) {\n settings = metadata.settings;\n tableName = metadata.table;\n tableSettings = metadata.tableSettings;\n }\n if (panelState != null) {\n if (panelState.tableSettings != null) {\n tableSettings = panelState.tableSettings;\n }\n if (panelState.table != null) {\n tableName = panelState.table;\n }\n if (panelState.settings != null) {\n settings = {\n ...settings,\n ...panelState.settings,\n };\n }\n }\n\n if (tableName != null && tableName !== '') {\n const table = (await panelFetch()) as DhType.Table;\n new IrisGridUtils(dh).applyTableSettings(\n table,\n tableSettings,\n getTimeZone(store.getState())\n );\n\n return ChartModelFactory.makeModelFromSettings(dh, settings, table);\n }\n\n const figure = (await panelFetch()) as DhType.plot.Figure;\n\n return ChartModelFactory.makeModel(dh, settings, figure);\n}\n\nexport const ChartPanelPlugin = forwardRef(\n (props: WidgetPanelProps<DhType.plot.Figure>, ref: React.Ref<ChartPanel>) => {\n const panelState = isChartPanelDehydratedProps(props)\n ? (props as unknown as ChartPanelProps).panelState\n : undefined;\n\n const { fetch: panelFetch, metadata, localDashboardId } = props;\n assertNotNull(metadata);\n const [dh, error] = useDeferredApi(metadata);\n\n const makeModel = useCallback(async () => {\n if (error != null) {\n throw error;\n }\n if (dh == null) {\n return new Promise<ChartModel>(() => {\n // We don't have the API yet, just return an unresolved promise so it shows as loading\n });\n }\n return createChartModel(\n dh,\n metadata as ChartPanelMetadata,\n panelFetch,\n panelState\n );\n }, [dh, error, metadata, panelFetch, panelState]);\n\n return (\n <ConnectedChartPanel\n ref={ref}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...props}\n metadata={metadata}\n localDashboardId={localDashboardId}\n makeModel={makeModel}\n />\n );\n }\n);\n\nChartPanelPlugin.displayName = 'ChartPanelPlugin';\n\nexport default ChartPanelPlugin;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,15 +1,22 @@
|
|
|
1
1
|
function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }
|
|
2
2
|
function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; }
|
|
3
|
+
function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
|
|
4
|
+
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
5
|
+
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
6
|
+
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
7
|
+
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
8
|
+
function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
|
|
3
9
|
import { useEffect, useState } from 'react';
|
|
4
10
|
import { useApi } from '@deephaven/jsapi-bootstrap';
|
|
5
11
|
import { Chart, ChartModelFactory } from '@deephaven/chart';
|
|
6
12
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
7
13
|
export function ChartWidgetPlugin(props) {
|
|
8
14
|
var dh = useApi();
|
|
9
|
-
var
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
15
|
+
var _useState = useState(),
|
|
16
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
17
|
+
model = _useState2[0],
|
|
18
|
+
setModel = _useState2[1];
|
|
19
|
+
var fetch = props.fetch;
|
|
13
20
|
useEffect(() => {
|
|
14
21
|
var cancelled = false;
|
|
15
22
|
function init() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChartWidgetPlugin.js","names":["useEffect","useState","useApi","Chart","ChartModelFactory","jsx","_jsx","ChartWidgetPlugin","props","dh","model","setModel","fetch","cancelled","init","_init","apply","arguments","_asyncToGenerator","figure","newModel","makeModel","undefined"],"sources":["../src/ChartWidgetPlugin.tsx"],"sourcesContent":["import { useEffect, useState } from 'react';\nimport { useApi } from '@deephaven/jsapi-bootstrap';\nimport { Chart, type ChartModel, ChartModelFactory } from '@deephaven/chart';\nimport type { dh } from '@deephaven/jsapi-types';\nimport { type WidgetComponentProps } from '@deephaven/plugin';\n\nexport function ChartWidgetPlugin(\n props: WidgetComponentProps<dh.plot.Figure>\n): JSX.Element | null {\n const dh = useApi();\n const [model, setModel] = useState<ChartModel>();\n\n const { fetch } = props;\n\n useEffect(() => {\n let cancelled = false;\n async function init() {\n const figure = (await fetch()) as unknown as dh.plot.Figure;\n const newModel = await ChartModelFactory.makeModel(dh, undefined, figure);\n\n if (!cancelled) {\n setModel(newModel);\n }\n }\n\n init();\n\n return () => {\n cancelled = true;\n };\n }, [dh, fetch]);\n\n return model ? <Chart model={model} /> : null;\n}\n\nexport default ChartWidgetPlugin;\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"ChartWidgetPlugin.js","names":["useEffect","useState","useApi","Chart","ChartModelFactory","jsx","_jsx","ChartWidgetPlugin","props","dh","_useState","_useState2","_slicedToArray","model","setModel","fetch","cancelled","init","_init","apply","arguments","_asyncToGenerator","figure","newModel","makeModel","undefined"],"sources":["../src/ChartWidgetPlugin.tsx"],"sourcesContent":["import { useEffect, useState } from 'react';\nimport { useApi } from '@deephaven/jsapi-bootstrap';\nimport { Chart, type ChartModel, ChartModelFactory } from '@deephaven/chart';\nimport type { dh } from '@deephaven/jsapi-types';\nimport { type WidgetComponentProps } from '@deephaven/plugin';\n\nexport function ChartWidgetPlugin(\n props: WidgetComponentProps<dh.plot.Figure>\n): JSX.Element | null {\n const dh = useApi();\n const [model, setModel] = useState<ChartModel>();\n\n const { fetch } = props;\n\n useEffect(() => {\n let cancelled = false;\n async function init() {\n const figure = (await fetch()) as unknown as dh.plot.Figure;\n const newModel = await ChartModelFactory.makeModel(dh, undefined, figure);\n\n if (!cancelled) {\n setModel(newModel);\n }\n }\n\n init();\n\n return () => {\n cancelled = true;\n };\n }, [dh, fetch]);\n\n return model ? <Chart model={model} /> : null;\n}\n\nexport default ChartWidgetPlugin;\n"],"mappings":";;;;;;;;AAAA,SAASA,SAAS,EAAEC,QAAQ,QAAQ,OAAO;AAC3C,SAASC,MAAM,QAAQ,4BAA4B;AACnD,SAASC,KAAK,EAAmBC,iBAAiB,QAAQ,kBAAkB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAI7E,OAAO,SAASC,iBAAiBA,CAC/BC,KAA2C,EACvB;EACpB,IAAMC,EAAE,GAAGP,MAAM,CAAC,CAAC;EACnB,IAAAQ,SAAA,GAA0BT,QAAQ,CAAa,CAAC;IAAAU,UAAA,GAAAC,cAAA,CAAAF,SAAA;IAAzCG,KAAK,GAAAF,UAAA;IAAEG,QAAQ,GAAAH,UAAA;EAEtB,IAAQI,KAAK,GAAKP,KAAK,CAAfO,KAAK;EAEbf,SAAS,CAAC,MAAM;IACd,IAAIgB,SAAS,GAAG,KAAK;IAAC,SACPC,IAAIA,CAAA;MAAA,OAAAC,KAAA,CAAAC,KAAA,OAAAC,SAAA;IAAA;IAAA,SAAAF,MAAA;MAAAA,KAAA,GAAAG,iBAAA,CAAnB,aAAsB;QACpB,IAAMC,MAAM,SAAUP,KAAK,CAAC,CAA+B;QAC3D,IAAMQ,QAAQ,SAASnB,iBAAiB,CAACoB,SAAS,CAACf,EAAE,EAAEgB,SAAS,EAAEH,MAAM,CAAC;QAEzE,IAAI,CAACN,SAAS,EAAE;UACdF,QAAQ,CAACS,QAAQ,CAAC;QACpB;MACF,CAAC;MAAA,OAAAL,KAAA,CAAAC,KAAA,OAAAC,SAAA;IAAA;IAEDH,IAAI,CAAC,CAAC;IAEN,OAAO,MAAM;MACXD,SAAS,GAAG,IAAI;IAClB,CAAC;EACH,CAAC,EAAE,CAACP,EAAE,EAAEM,KAAK,CAAC,CAAC;EAEf,OAAOF,KAAK,gBAAGP,IAAA,CAACH,KAAK;IAACU,KAAK,EAAEA;EAAM,CAAE,CAAC,GAAG,IAAI;AAC/C;AAEA,eAAeN,iBAAiB","ignoreList":[]}
|
package/dist/ConsolePlugin.js
CHANGED
|
@@ -3,6 +3,12 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
|
|
|
3
3
|
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
4
4
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
5
5
|
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
6
|
+
function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
|
|
7
|
+
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
8
|
+
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
9
|
+
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
10
|
+
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
11
|
+
function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
|
|
6
12
|
import { assertIsDashboardPluginProps, DashboardUtils, LayoutUtils, useListener, usePanelRegistration } from '@deephaven/dashboard';
|
|
7
13
|
import { FileUtils } from '@deephaven/file-explorer';
|
|
8
14
|
import { isComponent } from '@deephaven/golden-layout';
|
|
@@ -23,18 +29,22 @@ function assertIsConsolePluginProps(props) {
|
|
|
23
29
|
}
|
|
24
30
|
export function ConsolePlugin(props) {
|
|
25
31
|
assertIsConsolePluginProps(props);
|
|
26
|
-
var
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
notebooksUrl
|
|
33
|
-
} = props;
|
|
32
|
+
var id = props.id,
|
|
33
|
+
hydrateConsole = props.hydrateConsole,
|
|
34
|
+
layout = props.layout,
|
|
35
|
+
panelManager = props.panelManager,
|
|
36
|
+
registerComponent = props.registerComponent,
|
|
37
|
+
notebooksUrl = props.notebooksUrl;
|
|
34
38
|
var notebookIndex = useRef(0);
|
|
35
39
|
// Map from file ID to panel ID
|
|
36
|
-
var
|
|
37
|
-
|
|
40
|
+
var _useState = useState(new Map()),
|
|
41
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
42
|
+
openFileMap = _useState2[0],
|
|
43
|
+
setOpenFileMap = _useState2[1];
|
|
44
|
+
var _useState3 = useState(new Map()),
|
|
45
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
46
|
+
previewFileMap = _useState4[0],
|
|
47
|
+
setPreviewFileMap = _useState4[1];
|
|
38
48
|
useConfigureRuff();
|
|
39
49
|
var dispatch = useDispatch();
|
|
40
50
|
var getConsolePanel = useCallback(() => panelManager.getLastUsedPanelOfType(ConsolePanel), [panelManager]);
|
|
@@ -76,9 +86,7 @@ export function ConsolePlugin(props) {
|
|
|
76
86
|
dispatch(setDashboardConsoleSettings(id, consoleSettings));
|
|
77
87
|
}, [dispatch, id]);
|
|
78
88
|
var getNotebookFileName = useCallback(_ref => {
|
|
79
|
-
var
|
|
80
|
-
language
|
|
81
|
-
} = _ref;
|
|
89
|
+
var language = _ref.language;
|
|
82
90
|
var extension = language === 'python' ? 'py' : language;
|
|
83
91
|
var title = null;
|
|
84
92
|
if (extension == null) {
|
|
@@ -92,9 +100,7 @@ export function ConsolePlugin(props) {
|
|
|
92
100
|
}, []);
|
|
93
101
|
var getPanelIdForFileMetadata = useCallback(function (fileMetadata) {
|
|
94
102
|
var createIfNecessary = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
|
|
95
|
-
var
|
|
96
|
-
id: fileId
|
|
97
|
-
} = fileMetadata;
|
|
103
|
+
var fileId = fileMetadata.id;
|
|
98
104
|
if (fileId != null && openFileMap.has(fileId)) {
|
|
99
105
|
return openFileMap.get(fileId);
|
|
100
106
|
}
|
|
@@ -155,9 +161,7 @@ export function ConsolePlugin(props) {
|
|
|
155
161
|
log.debug('Ignore empty file id', fileMetadata);
|
|
156
162
|
return;
|
|
157
163
|
}
|
|
158
|
-
var
|
|
159
|
-
id: fileId
|
|
160
|
-
} = fileMetadata;
|
|
164
|
+
var fileId = fileMetadata.id;
|
|
161
165
|
if (isPreview) {
|
|
162
166
|
addPreviewFileMapEntry(fileId, panelId);
|
|
163
167
|
return;
|
|
@@ -166,9 +170,7 @@ export function ConsolePlugin(props) {
|
|
|
166
170
|
var existingPanelId = openFileMap.get(fileId);
|
|
167
171
|
if (panelId === existingPanelId) {
|
|
168
172
|
log.debug("Update tab title for file ".concat(fileId));
|
|
169
|
-
var
|
|
170
|
-
itemName
|
|
171
|
-
} = fileMetadata;
|
|
173
|
+
var itemName = fileMetadata.itemName;
|
|
172
174
|
renameFilePanel(fileId, itemName);
|
|
173
175
|
} else {
|
|
174
176
|
log.error("File ".concat(fileId, " already associated with a different tab ").concat(existingPanelId));
|
|
@@ -188,9 +190,7 @@ export function ConsolePlugin(props) {
|
|
|
188
190
|
log.debug('Ignore empty file id', fileMetadata);
|
|
189
191
|
return;
|
|
190
192
|
}
|
|
191
|
-
var
|
|
192
|
-
id: fileId
|
|
193
|
-
} = fileMetadata;
|
|
193
|
+
var fileId = fileMetadata.id;
|
|
194
194
|
if (isPreview) {
|
|
195
195
|
deletePreviewFileMapEntry(fileId);
|
|
196
196
|
return;
|
|
@@ -199,9 +199,7 @@ export function ConsolePlugin(props) {
|
|
|
199
199
|
}, [deleteOpenFileMapEntry, deletePreviewFileMapEntry]);
|
|
200
200
|
var closeFilePanel = useCallback((fileMetadata, options) => {
|
|
201
201
|
log.debug('closeFilePanel', fileMetadata);
|
|
202
|
-
var
|
|
203
|
-
id: fileId
|
|
204
|
-
} = fileMetadata;
|
|
202
|
+
var fileId = fileMetadata.id;
|
|
205
203
|
if (fileId == null) {
|
|
206
204
|
log.warn('File ID is null, ignore close event');
|
|
207
205
|
return;
|
|
@@ -223,22 +221,16 @@ export function ConsolePlugin(props) {
|
|
|
223
221
|
}, options);
|
|
224
222
|
}, [layout.root, openFileMap, previewFileMap, unregisterFilePanel]);
|
|
225
223
|
var getNotebookTitle = useCallback(fileMetadata => {
|
|
226
|
-
var
|
|
227
|
-
itemName
|
|
228
|
-
} = fileMetadata;
|
|
224
|
+
var itemName = fileMetadata.itemName;
|
|
229
225
|
return FileUtils.getBaseName(itemName);
|
|
230
226
|
}, []);
|
|
231
227
|
var fileIsOpen = useCallback(fileMetadata => {
|
|
232
|
-
var
|
|
233
|
-
id: fileId
|
|
234
|
-
} = fileMetadata;
|
|
228
|
+
var fileId = fileMetadata.id;
|
|
235
229
|
log.debug('fileIsOpen', fileMetadata, fileId, openFileMap);
|
|
236
230
|
return fileId != null && openFileMap.has(fileId);
|
|
237
231
|
}, [openFileMap]);
|
|
238
232
|
var fileIsOpenAsPreview = useCallback(fileMetadata => {
|
|
239
|
-
var
|
|
240
|
-
id: fileId
|
|
241
|
-
} = fileMetadata;
|
|
233
|
+
var fileId = fileMetadata.id;
|
|
242
234
|
log.debug('fileIsOpenAsPreview', fileMetadata, fileId, previewFileMap);
|
|
243
235
|
return fileId != null && previewFileMap.has(fileId);
|
|
244
236
|
}, [previewFileMap]);
|
|
@@ -256,14 +248,13 @@ export function ConsolePlugin(props) {
|
|
|
256
248
|
}
|
|
257
249
|
}, [panelManager]);
|
|
258
250
|
var makeConfig = useCallback(_ref2 => {
|
|
259
|
-
var
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
isPreview = false
|
|
266
|
-
} = _ref2;
|
|
251
|
+
var panelId = _ref2.id,
|
|
252
|
+
settings = _ref2.settings,
|
|
253
|
+
fileMetadata = _ref2.fileMetadata,
|
|
254
|
+
session = _ref2.session,
|
|
255
|
+
sessionLanguage = _ref2.sessionLanguage,
|
|
256
|
+
_ref2$isPreview = _ref2.isPreview,
|
|
257
|
+
isPreview = _ref2$isPreview === void 0 ? false : _ref2$isPreview;
|
|
267
258
|
var panelState = {
|
|
268
259
|
settings,
|
|
269
260
|
fileMetadata
|
|
@@ -322,7 +313,8 @@ export function ConsolePlugin(props) {
|
|
|
322
313
|
log.debug('selectNotebook', fileMetadata, shouldFocus);
|
|
323
314
|
var isFileOpen = fileIsOpen(fileMetadata);
|
|
324
315
|
var isFileOpenAsPreview = fileIsOpenAsPreview(fileMetadata);
|
|
325
|
-
var
|
|
316
|
+
var _ref3 = [...previewFileMap.values()],
|
|
317
|
+
previewId = _ref3[0];
|
|
326
318
|
var isPreview = !shouldFocus;
|
|
327
319
|
var panelId = isPreview && previewId ? previewId : getPanelIdForFileMetadata(fileMetadata);
|
|
328
320
|
if (panelId == null || panelId === '') {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConsolePlugin.js","names":["assertIsDashboardPluginProps","DashboardUtils","LayoutUtils","useListener","usePanelRegistration","FileUtils","isComponent","Log","useCallback","useRef","useState","useDispatch","nanoid","ConsoleEvent","NotebookEvent","ConsolePanel","CommandHistoryPanel","FileExplorerPanel","LogPanel","NotebookPanel","setDashboardConsoleSettings","useConfigureRuff","log","module","isNotebookPanel","panel","notebook","undefined","assertIsConsolePluginProps","props","ConsolePlugin","id","hydrateConsole","layout","panelManager","registerComponent","notebooksUrl","notebookIndex","openFileMap","setOpenFileMap","Map","previewFileMap","setPreviewFileMap","dispatch","getConsolePanel","getLastUsedPanelOfType","addOpenFileMapEntry","key","value","map","set","deleteOpenFileMapEntry","delete","addPreviewFileMapEntry","deletePreviewFileMapEntry","handleSendCommand","command","focus","arguments","length","execute","trimmedCommand","trim","info","consolePanel","WrappedComponent","error","debug","addCommand","handleSettingsChanged","consoleSettings","getNotebookFileName","_ref","language","extension","title","concat","current","getPanelIdForFileMetadata","fileMetadata","createIfNecessary","fileId","has","get","renamePanel","panelId","newTitle","renameComponent","root","renameFilePanel","oldName","newName","debug2","getBaseName","showFilePanel","activateTab","registerFilePanel","isPreview","existingPanelId","itemName","unregisterFilePanel","closeFilePanel","options","warn","closeComponent","getNotebookTitle","fileIsOpen","fileIsOpenAsPreview","focusPanelById","getOpenedPanelById","makeConfig","_ref2","settings","session","sessionLanguage","panelState","type","component","COMPONENT","isFocusOnShow","localDashboardId","metadata","createNotebook","stack","getStackForComponentTypes","config","openComponentInStack","selectNotebook","shouldFocus","isFileOpen","isFileOpenAsPreview","previewId","values","Error","JSON","stringify","getStackForConfig","item","getContentItemInStack","container","emit","PROMOTE_FROM_PREVIEW","sendToNotebook","notebookPanel","append","hydrateNotebook","panelProps","panelDashboardId","hydrate","_objectSpread","eventHub","SEND_COMMAND","SETTINGS_CHANGED","CLOSE_FILE","CREATE_NOTEBOOK","SELECT_NOTEBOOK","RENAME","RENAME_FILE","SEND_TO_NOTEBOOK","REGISTER_FILE","UNREGISTER_FILE"],"sources":["../src/ConsolePlugin.tsx"],"sourcesContent":["import {\n type CommandHistorySettings,\n type ScriptEditor,\n} from '@deephaven/console';\nimport {\n assertIsDashboardPluginProps,\n type DashboardPluginComponentProps,\n DashboardUtils,\n type DehydratedPanelProps,\n type DehydratedDashboardPanelProps,\n LayoutUtils,\n type PanelComponent,\n type PanelHydrateFunction,\n useListener,\n usePanelRegistration,\n} from '@deephaven/dashboard';\nimport { FileUtils } from '@deephaven/file-explorer';\nimport { type CloseOptions, isComponent } from '@deephaven/golden-layout';\nimport { type dh } from '@deephaven/jsapi-types';\nimport Log from '@deephaven/log';\nimport { useCallback, useRef, useState } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { nanoid } from 'nanoid';\nimport { ConsoleEvent, NotebookEvent } from './events';\nimport {\n ConsolePanel,\n CommandHistoryPanel,\n FileExplorerPanel,\n LogPanel,\n NotebookPanel,\n} from './panels';\nimport { setDashboardConsoleSettings } from './redux';\nimport useConfigureRuff from './useConfigureRuff';\n\nconst log = Log.module('ConsolePlugin');\n\ntype NotebookPanelComponent = PanelComponent & {\n notebook: ScriptEditor;\n focus: () => void;\n};\n\nfunction isNotebookPanel(\n panel: PanelComponent\n): panel is NotebookPanelComponent {\n return (panel as NotebookPanelComponent).notebook !== undefined;\n}\n\nexport type ConsolePluginProps = DashboardPluginComponentProps & {\n hydrateConsole?: PanelHydrateFunction;\n notebooksUrl: string;\n};\n\nfunction assertIsConsolePluginProps(\n props: Partial<ConsolePluginProps>\n): asserts props is ConsolePluginProps {\n assertIsDashboardPluginProps(props);\n}\n\nexport interface FileMetadata {\n id: string | null;\n itemName: string;\n}\n\nexport function ConsolePlugin(\n props: Partial<ConsolePluginProps>\n): JSX.Element | null {\n assertIsConsolePluginProps(props);\n const {\n id,\n hydrateConsole,\n layout,\n panelManager,\n registerComponent,\n notebooksUrl,\n } = props;\n const notebookIndex = useRef(0);\n // Map from file ID to panel ID\n const [openFileMap, setOpenFileMap] = useState(new Map<string, string>());\n const [previewFileMap, setPreviewFileMap] = useState(\n new Map<string, string>()\n );\n\n useConfigureRuff();\n\n const dispatch = useDispatch();\n\n const getConsolePanel = useCallback(\n () => panelManager.getLastUsedPanelOfType(ConsolePanel),\n [panelManager]\n );\n\n const addOpenFileMapEntry = useCallback(\n (key: string, value: string) => {\n setOpenFileMap(map => new Map(map.set(key, value)));\n },\n [setOpenFileMap]\n );\n\n const deleteOpenFileMapEntry = useCallback(\n (key: string) => {\n setOpenFileMap(map => {\n map.delete(key);\n return new Map(map);\n });\n },\n [setOpenFileMap]\n );\n\n const addPreviewFileMapEntry = useCallback(\n (key: string, value: string) => {\n setPreviewFileMap(map => new Map(map.set(key, value)));\n },\n [setPreviewFileMap]\n );\n\n const deletePreviewFileMapEntry = useCallback(\n (key: string) => {\n setPreviewFileMap(map => {\n map.delete(key);\n return new Map(map);\n });\n },\n [setPreviewFileMap]\n );\n\n const handleSendCommand = useCallback(\n (command: string, focus = true, execute = true) => {\n const trimmedCommand = command && command.trim();\n if (!trimmedCommand) {\n log.info('Ignoring empty code');\n } else {\n const consolePanel = getConsolePanel();\n if (\n !consolePanel ||\n !(consolePanel instanceof ConsolePanel.WrappedComponent)\n ) {\n log.error('Console panel not found');\n return;\n }\n log.debug('Send command: ', command, focus, execute);\n consolePanel.addCommand(command, focus, execute);\n }\n },\n [getConsolePanel]\n );\n\n const handleSettingsChanged = useCallback(\n (consoleSettings: Record<string, unknown>) => {\n dispatch(setDashboardConsoleSettings(id, consoleSettings));\n },\n [dispatch, id]\n );\n\n const getNotebookFileName = useCallback(\n ({ language }: { language?: string }) => {\n const extension = language === 'python' ? 'py' : language;\n let title = null;\n if (extension == null) {\n log.debug('No extension for language', language);\n title = `Untitled-${notebookIndex.current}`;\n } else {\n title = `Untitled-${notebookIndex.current}.${extension}`;\n }\n notebookIndex.current += 1;\n return title;\n },\n []\n );\n\n const getPanelIdForFileMetadata = useCallback(\n (fileMetadata: FileMetadata, createIfNecessary = true) => {\n const { id: fileId } = fileMetadata;\n if (fileId != null && openFileMap.has(fileId)) {\n return openFileMap.get(fileId);\n }\n if (fileId != null && previewFileMap.has(fileId)) {\n return previewFileMap.get(fileId);\n }\n if (createIfNecessary) {\n return nanoid();\n }\n return undefined;\n },\n [openFileMap, previewFileMap]\n );\n\n const renamePanel = useCallback(\n (panelId: string, newTitle: string) => {\n LayoutUtils.renameComponent(layout.root, { id: panelId }, newTitle);\n },\n [layout.root]\n );\n\n const renameFilePanel = useCallback(\n (oldName: string, newName: string) => {\n log.debug('Rename file panel', oldName, newName);\n let panelId;\n if (openFileMap.has(oldName)) {\n panelId = openFileMap.get(oldName);\n deleteOpenFileMapEntry(oldName);\n if (panelId != null) {\n addOpenFileMapEntry(newName, panelId);\n }\n }\n if (previewFileMap.has(oldName)) {\n panelId = previewFileMap.get(oldName);\n deletePreviewFileMapEntry(oldName);\n if (panelId != null) {\n addPreviewFileMapEntry(newName, panelId);\n }\n }\n\n if (panelId === undefined) {\n log.debug2(`File ${oldName} isn't open, no need to rename the tab`);\n return;\n }\n\n renamePanel(panelId, FileUtils.getBaseName(newName));\n },\n [\n openFileMap,\n previewFileMap,\n renamePanel,\n addOpenFileMapEntry,\n addPreviewFileMapEntry,\n deleteOpenFileMapEntry,\n deletePreviewFileMapEntry,\n ]\n );\n\n /**\n * Show the panel for the given file metadata.\n * If the panel is not already open, then it just logs an error and does nothing.\n */\n const showFilePanel = useCallback(\n (fileMetadata: FileMetadata) => {\n const panelId = getPanelIdForFileMetadata(fileMetadata, false);\n if (panelId == null) {\n log.error('Could not find panel id for file metadata', fileMetadata);\n return;\n }\n LayoutUtils.activateTab(layout.root, { id: panelId });\n },\n [getPanelIdForFileMetadata, layout.root]\n );\n\n const registerFilePanel = useCallback(\n (panelId: string, fileMetadata: FileMetadata, isPreview: boolean) => {\n log.debug('registerFilePanel', panelId, fileMetadata, isPreview);\n if (fileMetadata == null || fileMetadata.id == null) {\n log.debug('Ignore empty file id', fileMetadata);\n return;\n }\n const { id: fileId } = fileMetadata;\n if (isPreview) {\n addPreviewFileMapEntry(fileId, panelId);\n return;\n }\n if (openFileMap.has(fileId)) {\n const existingPanelId = openFileMap.get(fileId);\n if (panelId === existingPanelId) {\n log.debug(`Update tab title for file ${fileId}`);\n const { itemName } = fileMetadata;\n renameFilePanel(fileId, itemName);\n } else {\n log.error(\n `File ${fileId} already associated with a different tab ${existingPanelId}`\n );\n }\n return;\n }\n\n addOpenFileMapEntry(fileId, panelId);\n\n // De-register preview tab\n if (previewFileMap.has(fileId)) {\n deletePreviewFileMapEntry(fileId);\n }\n },\n [\n openFileMap,\n previewFileMap,\n renameFilePanel,\n addOpenFileMapEntry,\n addPreviewFileMapEntry,\n deletePreviewFileMapEntry,\n ]\n );\n\n const unregisterFilePanel = useCallback(\n (fileMetadata: FileMetadata, isPreview: boolean) => {\n log.debug('unregisterFileTab', fileMetadata, isPreview);\n if (fileMetadata == null || fileMetadata.id == null) {\n log.debug('Ignore empty file id', fileMetadata);\n return;\n }\n const { id: fileId } = fileMetadata;\n if (isPreview) {\n deletePreviewFileMapEntry(fileId);\n return;\n }\n deleteOpenFileMapEntry(fileId);\n },\n [deleteOpenFileMapEntry, deletePreviewFileMapEntry]\n );\n\n const closeFilePanel = useCallback(\n (fileMetadata: FileMetadata, options?: CloseOptions) => {\n log.debug('closeFilePanel', fileMetadata);\n const { id: fileId } = fileMetadata;\n if (fileId == null) {\n log.warn('File ID is null, ignore close event');\n return;\n }\n let panelId = null;\n let isPreview = false;\n if (openFileMap.has(fileId)) {\n panelId = openFileMap.get(fileId);\n } else if (previewFileMap.has(fileId)) {\n panelId = previewFileMap.get(fileId);\n isPreview = true;\n } else {\n log.debug(`File ${fileId} isn't open, ignore close event`);\n return;\n }\n unregisterFilePanel(fileMetadata, isPreview);\n LayoutUtils.closeComponent(layout.root, { id: panelId }, options);\n },\n [layout.root, openFileMap, previewFileMap, unregisterFilePanel]\n );\n\n const getNotebookTitle = useCallback((fileMetadata: FileMetadata) => {\n const { itemName } = fileMetadata;\n return FileUtils.getBaseName(itemName);\n }, []);\n\n const fileIsOpen = useCallback(\n (fileMetadata: FileMetadata) => {\n const { id: fileId } = fileMetadata;\n log.debug('fileIsOpen', fileMetadata, fileId, openFileMap);\n return fileId != null && openFileMap.has(fileId);\n },\n [openFileMap]\n );\n\n const fileIsOpenAsPreview = useCallback(\n (fileMetadata: FileMetadata) => {\n const { id: fileId } = fileMetadata;\n log.debug('fileIsOpenAsPreview', fileMetadata, fileId, previewFileMap);\n return fileId != null && previewFileMap.has(fileId);\n },\n [previewFileMap]\n );\n\n /*\n * Attempts to focus the panel with the provided panelId\n */\n const focusPanelById = useCallback(\n (panelId: string) => {\n if (panelId == null) {\n return;\n }\n\n const panel = panelManager.getOpenedPanelById(panelId);\n if (panel && isNotebookPanel(panel)) {\n panel.focus();\n }\n },\n [panelManager]\n );\n\n const makeConfig = useCallback(\n ({\n id: panelId,\n settings,\n fileMetadata,\n session,\n sessionLanguage,\n isPreview = false,\n }: {\n id: string | undefined;\n settings: CommandHistorySettings;\n fileMetadata: FileMetadata;\n session: dh.IdeSession;\n sessionLanguage: string;\n isPreview?: boolean;\n }) => {\n const panelState = {\n settings,\n fileMetadata,\n };\n const title = getNotebookTitle(fileMetadata);\n return {\n type: 'react-component' as const,\n component: NotebookPanel.COMPONENT,\n isFocusOnShow: false,\n props: {\n localDashboardId: id,\n metadata: { id: panelId },\n session,\n sessionLanguage,\n panelState,\n isPreview,\n notebooksUrl,\n },\n title,\n id: panelId,\n };\n },\n [getNotebookTitle, id, notebooksUrl]\n );\n\n const createNotebook = useCallback(\n (\n session: dh.IdeSession,\n sessionLanguage: string,\n settings: CommandHistorySettings,\n fileMetadata: FileMetadata = {\n id: null,\n itemName: getNotebookFileName(settings),\n }\n ) => {\n const panelId = getPanelIdForFileMetadata(fileMetadata);\n if (fileIsOpen(fileMetadata) && panelId != null) {\n log.debug('File is already open, focus panel');\n showFilePanel(fileMetadata);\n focusPanelById(panelId);\n return;\n }\n\n // Should never happen because getPanelForFileMetadata will create an ID by default\n if (panelId == null) {\n log.error('Panel ID for file metadata is null');\n return;\n }\n const stack = LayoutUtils.getStackForComponentTypes(layout.root, [\n NotebookPanel.COMPONENT,\n ]);\n const config = makeConfig({\n id: panelId,\n settings,\n fileMetadata,\n session,\n sessionLanguage,\n });\n log.debug('createNotebook', config, openFileMap);\n LayoutUtils.openComponentInStack(stack, config);\n },\n [\n fileIsOpen,\n focusPanelById,\n getNotebookFileName,\n getPanelIdForFileMetadata,\n layout.root,\n makeConfig,\n openFileMap,\n showFilePanel,\n ]\n );\n\n const selectNotebook = useCallback(\n (\n session: dh.IdeSession,\n sessionLanguage: string,\n settings: CommandHistorySettings,\n fileMetadata: FileMetadata,\n // linter recognizes shouldFocus as any if I don't specify boolean here\n // eslint-disable-next-line @typescript-eslint/no-inferrable-types\n shouldFocus: boolean = false\n ) => {\n log.debug('selectNotebook', fileMetadata, shouldFocus);\n const isFileOpen = fileIsOpen(fileMetadata);\n const isFileOpenAsPreview = fileIsOpenAsPreview(fileMetadata);\n\n const [previewId] = [...previewFileMap.values()];\n const isPreview = !shouldFocus;\n const panelId =\n isPreview && previewId\n ? previewId\n : getPanelIdForFileMetadata(fileMetadata);\n\n if (panelId == null || panelId === '') {\n throw new Error(\n `Unable to retrieve or create panelId for metadata: ${JSON.stringify(\n fileMetadata\n )}`\n );\n }\n\n // If the file is already open, show it\n if (isFileOpen || isFileOpenAsPreview) {\n showFilePanel(fileMetadata);\n } else {\n const stack = LayoutUtils.getStackForComponentTypes(layout.root, [\n NotebookPanel.COMPONENT,\n ]);\n\n const config = makeConfig({\n id: panelId,\n settings,\n fileMetadata,\n session,\n sessionLanguage,\n isPreview,\n });\n\n // This will replace the existing preview by panelId if needed\n LayoutUtils.openComponentInStack(stack, config);\n }\n\n // If the file is open as a preview and focused, promote to non-preview\n if (isFileOpenAsPreview && shouldFocus) {\n const fileId = fileMetadata.id;\n const stack = LayoutUtils.getStackForConfig(layout.root, {\n component: NotebookPanel.COMPONENT,\n id: panelId,\n });\n\n const item = LayoutUtils.getContentItemInStack(stack, {\n component: NotebookPanel.COMPONENT,\n id: panelId,\n });\n if (fileId != null && item && isComponent(item)) {\n item.container.emit(NotebookEvent.PROMOTE_FROM_PREVIEW);\n deletePreviewFileMapEntry(fileId);\n addOpenFileMapEntry(fileId, panelId);\n }\n }\n\n if (shouldFocus) {\n // Focus the tab if we're supposed to\n focusPanelById(panelId);\n }\n },\n [\n showFilePanel,\n fileIsOpen,\n fileIsOpenAsPreview,\n focusPanelById,\n getPanelIdForFileMetadata,\n layout.root,\n makeConfig,\n previewFileMap,\n deletePreviewFileMapEntry,\n addOpenFileMapEntry,\n ]\n );\n\n /** Attempts to send the text to a notebook matching the passed in settings */\n const sendToNotebook = useCallback(\n (\n session: dh.IdeSession,\n sessionLanguage: string,\n settings: CommandHistorySettings = {} as CommandHistorySettings,\n createIfNecessary = true\n ) => {\n const notebookPanel = panelManager.getLastUsedPanelOfType(NotebookPanel);\n if (notebookPanel && isNotebookPanel(notebookPanel)) {\n if (\n settings != null &&\n settings.value != null &&\n notebookPanel.notebook != null\n ) {\n notebookPanel.notebook.append(settings.value);\n }\n } else if (createIfNecessary) {\n createNotebook(session, sessionLanguage, settings);\n }\n },\n [createNotebook, panelManager]\n );\n\n const hydrateNotebook = useCallback(\n (\n panelProps: DehydratedPanelProps,\n panelDashboardId: string\n ): DehydratedDashboardPanelProps =>\n DashboardUtils.hydrate(\n {\n ...panelProps,\n notebooksUrl,\n },\n panelDashboardId\n ),\n [notebooksUrl]\n );\n\n usePanelRegistration(registerComponent, ConsolePanel, hydrateConsole);\n usePanelRegistration(registerComponent, CommandHistoryPanel);\n usePanelRegistration(registerComponent, FileExplorerPanel);\n usePanelRegistration(registerComponent, LogPanel);\n usePanelRegistration(registerComponent, NotebookPanel, hydrateNotebook);\n\n useListener(layout.eventHub, ConsoleEvent.SEND_COMMAND, handleSendCommand);\n useListener(\n layout.eventHub,\n ConsoleEvent.SETTINGS_CHANGED,\n handleSettingsChanged\n );\n useListener(layout.eventHub, NotebookEvent.CLOSE_FILE, closeFilePanel);\n useListener(layout.eventHub, NotebookEvent.CREATE_NOTEBOOK, createNotebook);\n useListener(layout.eventHub, NotebookEvent.SELECT_NOTEBOOK, selectNotebook);\n useListener(layout.eventHub, NotebookEvent.RENAME, renamePanel);\n useListener(layout.eventHub, NotebookEvent.RENAME_FILE, renameFilePanel);\n useListener(layout.eventHub, NotebookEvent.SEND_TO_NOTEBOOK, sendToNotebook);\n useListener(layout.eventHub, NotebookEvent.REGISTER_FILE, registerFilePanel);\n useListener(\n layout.eventHub,\n NotebookEvent.UNREGISTER_FILE,\n unregisterFilePanel\n );\n\n return null;\n}\n\nexport default ConsolePlugin;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"ConsolePlugin.js","names":["assertIsDashboardPluginProps","DashboardUtils","LayoutUtils","useListener","usePanelRegistration","FileUtils","isComponent","Log","useCallback","useRef","useState","useDispatch","nanoid","ConsoleEvent","NotebookEvent","ConsolePanel","CommandHistoryPanel","FileExplorerPanel","LogPanel","NotebookPanel","setDashboardConsoleSettings","useConfigureRuff","log","module","isNotebookPanel","panel","notebook","undefined","assertIsConsolePluginProps","props","ConsolePlugin","id","hydrateConsole","layout","panelManager","registerComponent","notebooksUrl","notebookIndex","_useState","Map","_useState2","_slicedToArray","openFileMap","setOpenFileMap","_useState3","_useState4","previewFileMap","setPreviewFileMap","dispatch","getConsolePanel","getLastUsedPanelOfType","addOpenFileMapEntry","key","value","map","set","deleteOpenFileMapEntry","delete","addPreviewFileMapEntry","deletePreviewFileMapEntry","handleSendCommand","command","focus","arguments","length","execute","trimmedCommand","trim","info","consolePanel","WrappedComponent","error","debug","addCommand","handleSettingsChanged","consoleSettings","getNotebookFileName","_ref","language","extension","title","concat","current","getPanelIdForFileMetadata","fileMetadata","createIfNecessary","fileId","has","get","renamePanel","panelId","newTitle","renameComponent","root","renameFilePanel","oldName","newName","debug2","getBaseName","showFilePanel","activateTab","registerFilePanel","isPreview","existingPanelId","itemName","unregisterFilePanel","closeFilePanel","options","warn","closeComponent","getNotebookTitle","fileIsOpen","fileIsOpenAsPreview","focusPanelById","getOpenedPanelById","makeConfig","_ref2","settings","session","sessionLanguage","_ref2$isPreview","panelState","type","component","COMPONENT","isFocusOnShow","localDashboardId","metadata","createNotebook","stack","getStackForComponentTypes","config","openComponentInStack","selectNotebook","shouldFocus","isFileOpen","isFileOpenAsPreview","_ref3","values","previewId","Error","JSON","stringify","getStackForConfig","item","getContentItemInStack","container","emit","PROMOTE_FROM_PREVIEW","sendToNotebook","notebookPanel","append","hydrateNotebook","panelProps","panelDashboardId","hydrate","_objectSpread","eventHub","SEND_COMMAND","SETTINGS_CHANGED","CLOSE_FILE","CREATE_NOTEBOOK","SELECT_NOTEBOOK","RENAME","RENAME_FILE","SEND_TO_NOTEBOOK","REGISTER_FILE","UNREGISTER_FILE"],"sources":["../src/ConsolePlugin.tsx"],"sourcesContent":["import {\n type CommandHistorySettings,\n type ScriptEditor,\n} from '@deephaven/console';\nimport {\n assertIsDashboardPluginProps,\n type DashboardPluginComponentProps,\n DashboardUtils,\n type DehydratedPanelProps,\n type DehydratedDashboardPanelProps,\n LayoutUtils,\n type PanelComponent,\n type PanelHydrateFunction,\n useListener,\n usePanelRegistration,\n} from '@deephaven/dashboard';\nimport { FileUtils } from '@deephaven/file-explorer';\nimport { type CloseOptions, isComponent } from '@deephaven/golden-layout';\nimport { type dh } from '@deephaven/jsapi-types';\nimport Log from '@deephaven/log';\nimport { useCallback, useRef, useState } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { nanoid } from 'nanoid';\nimport { ConsoleEvent, NotebookEvent } from './events';\nimport {\n ConsolePanel,\n CommandHistoryPanel,\n FileExplorerPanel,\n LogPanel,\n NotebookPanel,\n} from './panels';\nimport { setDashboardConsoleSettings } from './redux';\nimport useConfigureRuff from './useConfigureRuff';\n\nconst log = Log.module('ConsolePlugin');\n\ntype NotebookPanelComponent = PanelComponent & {\n notebook: ScriptEditor;\n focus: () => void;\n};\n\nfunction isNotebookPanel(\n panel: PanelComponent\n): panel is NotebookPanelComponent {\n return (panel as NotebookPanelComponent).notebook !== undefined;\n}\n\nexport type ConsolePluginProps = DashboardPluginComponentProps & {\n hydrateConsole?: PanelHydrateFunction;\n notebooksUrl: string;\n};\n\nfunction assertIsConsolePluginProps(\n props: Partial<ConsolePluginProps>\n): asserts props is ConsolePluginProps {\n assertIsDashboardPluginProps(props);\n}\n\nexport interface FileMetadata {\n id: string | null;\n itemName: string;\n}\n\nexport function ConsolePlugin(\n props: Partial<ConsolePluginProps>\n): JSX.Element | null {\n assertIsConsolePluginProps(props);\n const {\n id,\n hydrateConsole,\n layout,\n panelManager,\n registerComponent,\n notebooksUrl,\n } = props;\n const notebookIndex = useRef(0);\n // Map from file ID to panel ID\n const [openFileMap, setOpenFileMap] = useState(new Map<string, string>());\n const [previewFileMap, setPreviewFileMap] = useState(\n new Map<string, string>()\n );\n\n useConfigureRuff();\n\n const dispatch = useDispatch();\n\n const getConsolePanel = useCallback(\n () => panelManager.getLastUsedPanelOfType(ConsolePanel),\n [panelManager]\n );\n\n const addOpenFileMapEntry = useCallback(\n (key: string, value: string) => {\n setOpenFileMap(map => new Map(map.set(key, value)));\n },\n [setOpenFileMap]\n );\n\n const deleteOpenFileMapEntry = useCallback(\n (key: string) => {\n setOpenFileMap(map => {\n map.delete(key);\n return new Map(map);\n });\n },\n [setOpenFileMap]\n );\n\n const addPreviewFileMapEntry = useCallback(\n (key: string, value: string) => {\n setPreviewFileMap(map => new Map(map.set(key, value)));\n },\n [setPreviewFileMap]\n );\n\n const deletePreviewFileMapEntry = useCallback(\n (key: string) => {\n setPreviewFileMap(map => {\n map.delete(key);\n return new Map(map);\n });\n },\n [setPreviewFileMap]\n );\n\n const handleSendCommand = useCallback(\n (command: string, focus = true, execute = true) => {\n const trimmedCommand = command && command.trim();\n if (!trimmedCommand) {\n log.info('Ignoring empty code');\n } else {\n const consolePanel = getConsolePanel();\n if (\n !consolePanel ||\n !(consolePanel instanceof ConsolePanel.WrappedComponent)\n ) {\n log.error('Console panel not found');\n return;\n }\n log.debug('Send command: ', command, focus, execute);\n consolePanel.addCommand(command, focus, execute);\n }\n },\n [getConsolePanel]\n );\n\n const handleSettingsChanged = useCallback(\n (consoleSettings: Record<string, unknown>) => {\n dispatch(setDashboardConsoleSettings(id, consoleSettings));\n },\n [dispatch, id]\n );\n\n const getNotebookFileName = useCallback(\n ({ language }: { language?: string }) => {\n const extension = language === 'python' ? 'py' : language;\n let title = null;\n if (extension == null) {\n log.debug('No extension for language', language);\n title = `Untitled-${notebookIndex.current}`;\n } else {\n title = `Untitled-${notebookIndex.current}.${extension}`;\n }\n notebookIndex.current += 1;\n return title;\n },\n []\n );\n\n const getPanelIdForFileMetadata = useCallback(\n (fileMetadata: FileMetadata, createIfNecessary = true) => {\n const { id: fileId } = fileMetadata;\n if (fileId != null && openFileMap.has(fileId)) {\n return openFileMap.get(fileId);\n }\n if (fileId != null && previewFileMap.has(fileId)) {\n return previewFileMap.get(fileId);\n }\n if (createIfNecessary) {\n return nanoid();\n }\n return undefined;\n },\n [openFileMap, previewFileMap]\n );\n\n const renamePanel = useCallback(\n (panelId: string, newTitle: string) => {\n LayoutUtils.renameComponent(layout.root, { id: panelId }, newTitle);\n },\n [layout.root]\n );\n\n const renameFilePanel = useCallback(\n (oldName: string, newName: string) => {\n log.debug('Rename file panel', oldName, newName);\n let panelId;\n if (openFileMap.has(oldName)) {\n panelId = openFileMap.get(oldName);\n deleteOpenFileMapEntry(oldName);\n if (panelId != null) {\n addOpenFileMapEntry(newName, panelId);\n }\n }\n if (previewFileMap.has(oldName)) {\n panelId = previewFileMap.get(oldName);\n deletePreviewFileMapEntry(oldName);\n if (panelId != null) {\n addPreviewFileMapEntry(newName, panelId);\n }\n }\n\n if (panelId === undefined) {\n log.debug2(`File ${oldName} isn't open, no need to rename the tab`);\n return;\n }\n\n renamePanel(panelId, FileUtils.getBaseName(newName));\n },\n [\n openFileMap,\n previewFileMap,\n renamePanel,\n addOpenFileMapEntry,\n addPreviewFileMapEntry,\n deleteOpenFileMapEntry,\n deletePreviewFileMapEntry,\n ]\n );\n\n /**\n * Show the panel for the given file metadata.\n * If the panel is not already open, then it just logs an error and does nothing.\n */\n const showFilePanel = useCallback(\n (fileMetadata: FileMetadata) => {\n const panelId = getPanelIdForFileMetadata(fileMetadata, false);\n if (panelId == null) {\n log.error('Could not find panel id for file metadata', fileMetadata);\n return;\n }\n LayoutUtils.activateTab(layout.root, { id: panelId });\n },\n [getPanelIdForFileMetadata, layout.root]\n );\n\n const registerFilePanel = useCallback(\n (panelId: string, fileMetadata: FileMetadata, isPreview: boolean) => {\n log.debug('registerFilePanel', panelId, fileMetadata, isPreview);\n if (fileMetadata == null || fileMetadata.id == null) {\n log.debug('Ignore empty file id', fileMetadata);\n return;\n }\n const { id: fileId } = fileMetadata;\n if (isPreview) {\n addPreviewFileMapEntry(fileId, panelId);\n return;\n }\n if (openFileMap.has(fileId)) {\n const existingPanelId = openFileMap.get(fileId);\n if (panelId === existingPanelId) {\n log.debug(`Update tab title for file ${fileId}`);\n const { itemName } = fileMetadata;\n renameFilePanel(fileId, itemName);\n } else {\n log.error(\n `File ${fileId} already associated with a different tab ${existingPanelId}`\n );\n }\n return;\n }\n\n addOpenFileMapEntry(fileId, panelId);\n\n // De-register preview tab\n if (previewFileMap.has(fileId)) {\n deletePreviewFileMapEntry(fileId);\n }\n },\n [\n openFileMap,\n previewFileMap,\n renameFilePanel,\n addOpenFileMapEntry,\n addPreviewFileMapEntry,\n deletePreviewFileMapEntry,\n ]\n );\n\n const unregisterFilePanel = useCallback(\n (fileMetadata: FileMetadata, isPreview: boolean) => {\n log.debug('unregisterFileTab', fileMetadata, isPreview);\n if (fileMetadata == null || fileMetadata.id == null) {\n log.debug('Ignore empty file id', fileMetadata);\n return;\n }\n const { id: fileId } = fileMetadata;\n if (isPreview) {\n deletePreviewFileMapEntry(fileId);\n return;\n }\n deleteOpenFileMapEntry(fileId);\n },\n [deleteOpenFileMapEntry, deletePreviewFileMapEntry]\n );\n\n const closeFilePanel = useCallback(\n (fileMetadata: FileMetadata, options?: CloseOptions) => {\n log.debug('closeFilePanel', fileMetadata);\n const { id: fileId } = fileMetadata;\n if (fileId == null) {\n log.warn('File ID is null, ignore close event');\n return;\n }\n let panelId = null;\n let isPreview = false;\n if (openFileMap.has(fileId)) {\n panelId = openFileMap.get(fileId);\n } else if (previewFileMap.has(fileId)) {\n panelId = previewFileMap.get(fileId);\n isPreview = true;\n } else {\n log.debug(`File ${fileId} isn't open, ignore close event`);\n return;\n }\n unregisterFilePanel(fileMetadata, isPreview);\n LayoutUtils.closeComponent(layout.root, { id: panelId }, options);\n },\n [layout.root, openFileMap, previewFileMap, unregisterFilePanel]\n );\n\n const getNotebookTitle = useCallback((fileMetadata: FileMetadata) => {\n const { itemName } = fileMetadata;\n return FileUtils.getBaseName(itemName);\n }, []);\n\n const fileIsOpen = useCallback(\n (fileMetadata: FileMetadata) => {\n const { id: fileId } = fileMetadata;\n log.debug('fileIsOpen', fileMetadata, fileId, openFileMap);\n return fileId != null && openFileMap.has(fileId);\n },\n [openFileMap]\n );\n\n const fileIsOpenAsPreview = useCallback(\n (fileMetadata: FileMetadata) => {\n const { id: fileId } = fileMetadata;\n log.debug('fileIsOpenAsPreview', fileMetadata, fileId, previewFileMap);\n return fileId != null && previewFileMap.has(fileId);\n },\n [previewFileMap]\n );\n\n /*\n * Attempts to focus the panel with the provided panelId\n */\n const focusPanelById = useCallback(\n (panelId: string) => {\n if (panelId == null) {\n return;\n }\n\n const panel = panelManager.getOpenedPanelById(panelId);\n if (panel && isNotebookPanel(panel)) {\n panel.focus();\n }\n },\n [panelManager]\n );\n\n const makeConfig = useCallback(\n ({\n id: panelId,\n settings,\n fileMetadata,\n session,\n sessionLanguage,\n isPreview = false,\n }: {\n id: string | undefined;\n settings: CommandHistorySettings;\n fileMetadata: FileMetadata;\n session: dh.IdeSession;\n sessionLanguage: string;\n isPreview?: boolean;\n }) => {\n const panelState = {\n settings,\n fileMetadata,\n };\n const title = getNotebookTitle(fileMetadata);\n return {\n type: 'react-component' as const,\n component: NotebookPanel.COMPONENT,\n isFocusOnShow: false,\n props: {\n localDashboardId: id,\n metadata: { id: panelId },\n session,\n sessionLanguage,\n panelState,\n isPreview,\n notebooksUrl,\n },\n title,\n id: panelId,\n };\n },\n [getNotebookTitle, id, notebooksUrl]\n );\n\n const createNotebook = useCallback(\n (\n session: dh.IdeSession,\n sessionLanguage: string,\n settings: CommandHistorySettings,\n fileMetadata: FileMetadata = {\n id: null,\n itemName: getNotebookFileName(settings),\n }\n ) => {\n const panelId = getPanelIdForFileMetadata(fileMetadata);\n if (fileIsOpen(fileMetadata) && panelId != null) {\n log.debug('File is already open, focus panel');\n showFilePanel(fileMetadata);\n focusPanelById(panelId);\n return;\n }\n\n // Should never happen because getPanelForFileMetadata will create an ID by default\n if (panelId == null) {\n log.error('Panel ID for file metadata is null');\n return;\n }\n const stack = LayoutUtils.getStackForComponentTypes(layout.root, [\n NotebookPanel.COMPONENT,\n ]);\n const config = makeConfig({\n id: panelId,\n settings,\n fileMetadata,\n session,\n sessionLanguage,\n });\n log.debug('createNotebook', config, openFileMap);\n LayoutUtils.openComponentInStack(stack, config);\n },\n [\n fileIsOpen,\n focusPanelById,\n getNotebookFileName,\n getPanelIdForFileMetadata,\n layout.root,\n makeConfig,\n openFileMap,\n showFilePanel,\n ]\n );\n\n const selectNotebook = useCallback(\n (\n session: dh.IdeSession,\n sessionLanguage: string,\n settings: CommandHistorySettings,\n fileMetadata: FileMetadata,\n // linter recognizes shouldFocus as any if I don't specify boolean here\n // eslint-disable-next-line @typescript-eslint/no-inferrable-types\n shouldFocus: boolean = false\n ) => {\n log.debug('selectNotebook', fileMetadata, shouldFocus);\n const isFileOpen = fileIsOpen(fileMetadata);\n const isFileOpenAsPreview = fileIsOpenAsPreview(fileMetadata);\n\n const [previewId] = [...previewFileMap.values()];\n const isPreview = !shouldFocus;\n const panelId =\n isPreview && previewId\n ? previewId\n : getPanelIdForFileMetadata(fileMetadata);\n\n if (panelId == null || panelId === '') {\n throw new Error(\n `Unable to retrieve or create panelId for metadata: ${JSON.stringify(\n fileMetadata\n )}`\n );\n }\n\n // If the file is already open, show it\n if (isFileOpen || isFileOpenAsPreview) {\n showFilePanel(fileMetadata);\n } else {\n const stack = LayoutUtils.getStackForComponentTypes(layout.root, [\n NotebookPanel.COMPONENT,\n ]);\n\n const config = makeConfig({\n id: panelId,\n settings,\n fileMetadata,\n session,\n sessionLanguage,\n isPreview,\n });\n\n // This will replace the existing preview by panelId if needed\n LayoutUtils.openComponentInStack(stack, config);\n }\n\n // If the file is open as a preview and focused, promote to non-preview\n if (isFileOpenAsPreview && shouldFocus) {\n const fileId = fileMetadata.id;\n const stack = LayoutUtils.getStackForConfig(layout.root, {\n component: NotebookPanel.COMPONENT,\n id: panelId,\n });\n\n const item = LayoutUtils.getContentItemInStack(stack, {\n component: NotebookPanel.COMPONENT,\n id: panelId,\n });\n if (fileId != null && item && isComponent(item)) {\n item.container.emit(NotebookEvent.PROMOTE_FROM_PREVIEW);\n deletePreviewFileMapEntry(fileId);\n addOpenFileMapEntry(fileId, panelId);\n }\n }\n\n if (shouldFocus) {\n // Focus the tab if we're supposed to\n focusPanelById(panelId);\n }\n },\n [\n showFilePanel,\n fileIsOpen,\n fileIsOpenAsPreview,\n focusPanelById,\n getPanelIdForFileMetadata,\n layout.root,\n makeConfig,\n previewFileMap,\n deletePreviewFileMapEntry,\n addOpenFileMapEntry,\n ]\n );\n\n /** Attempts to send the text to a notebook matching the passed in settings */\n const sendToNotebook = useCallback(\n (\n session: dh.IdeSession,\n sessionLanguage: string,\n settings: CommandHistorySettings = {} as CommandHistorySettings,\n createIfNecessary = true\n ) => {\n const notebookPanel = panelManager.getLastUsedPanelOfType(NotebookPanel);\n if (notebookPanel && isNotebookPanel(notebookPanel)) {\n if (\n settings != null &&\n settings.value != null &&\n notebookPanel.notebook != null\n ) {\n notebookPanel.notebook.append(settings.value);\n }\n } else if (createIfNecessary) {\n createNotebook(session, sessionLanguage, settings);\n }\n },\n [createNotebook, panelManager]\n );\n\n const hydrateNotebook = useCallback(\n (\n panelProps: DehydratedPanelProps,\n panelDashboardId: string\n ): DehydratedDashboardPanelProps =>\n DashboardUtils.hydrate(\n {\n ...panelProps,\n notebooksUrl,\n },\n panelDashboardId\n ),\n [notebooksUrl]\n );\n\n usePanelRegistration(registerComponent, ConsolePanel, hydrateConsole);\n usePanelRegistration(registerComponent, CommandHistoryPanel);\n usePanelRegistration(registerComponent, FileExplorerPanel);\n usePanelRegistration(registerComponent, LogPanel);\n usePanelRegistration(registerComponent, NotebookPanel, hydrateNotebook);\n\n useListener(layout.eventHub, ConsoleEvent.SEND_COMMAND, handleSendCommand);\n useListener(\n layout.eventHub,\n ConsoleEvent.SETTINGS_CHANGED,\n handleSettingsChanged\n );\n useListener(layout.eventHub, NotebookEvent.CLOSE_FILE, closeFilePanel);\n useListener(layout.eventHub, NotebookEvent.CREATE_NOTEBOOK, createNotebook);\n useListener(layout.eventHub, NotebookEvent.SELECT_NOTEBOOK, selectNotebook);\n useListener(layout.eventHub, NotebookEvent.RENAME, renamePanel);\n useListener(layout.eventHub, NotebookEvent.RENAME_FILE, renameFilePanel);\n useListener(layout.eventHub, NotebookEvent.SEND_TO_NOTEBOOK, sendToNotebook);\n useListener(layout.eventHub, NotebookEvent.REGISTER_FILE, registerFilePanel);\n useListener(\n layout.eventHub,\n NotebookEvent.UNREGISTER_FILE,\n unregisterFilePanel\n );\n\n return null;\n}\n\nexport default ConsolePlugin;\n"],"mappings":";;;;;;;;;;;AAIA,SACEA,4BAA4B,EAE5BC,cAAc,EAGdC,WAAW,EAGXC,WAAW,EACXC,oBAAoB,QACf,sBAAsB;AAC7B,SAASC,SAAS,QAAQ,0BAA0B;AACpD,SAA4BC,WAAW,QAAQ,0BAA0B;AAEzE,OAAOC,GAAG,MAAM,gBAAgB;AAChC,SAASC,WAAW,EAAEC,MAAM,EAAEC,QAAQ,QAAQ,OAAO;AACrD,SAASC,WAAW,QAAQ,aAAa;AACzC,SAASC,MAAM,QAAQ,QAAQ;AAAC,SACvBC,YAAY,EAAEC,aAAa;AAAA,SAElCC,YAAY,EACZC,mBAAmB,EACnBC,iBAAiB,EACjBC,QAAQ,EACRC,aAAa;AAAA,SAENC,2BAA2B;AAAA,OAC7BC,gBAAgB;AAEvB,IAAMC,GAAG,GAAGf,GAAG,CAACgB,MAAM,CAAC,eAAe,CAAC;AAOvC,SAASC,eAAeA,CACtBC,KAAqB,EACY;EACjC,OAAQA,KAAK,CAA4BC,QAAQ,KAAKC,SAAS;AACjE;AAOA,SAASC,0BAA0BA,CACjCC,KAAkC,EACG;EACrC7B,4BAA4B,CAAC6B,KAAK,CAAC;AACrC;AAOA,OAAO,SAASC,aAAaA,CAC3BD,KAAkC,EACd;EACpBD,0BAA0B,CAACC,KAAK,CAAC;EACjC,IACEE,EAAE,GAMAF,KAAK,CANPE,EAAE;IACFC,cAAc,GAKZH,KAAK,CALPG,cAAc;IACdC,MAAM,GAIJJ,KAAK,CAJPI,MAAM;IACNC,YAAY,GAGVL,KAAK,CAHPK,YAAY;IACZC,iBAAiB,GAEfN,KAAK,CAFPM,iBAAiB;IACjBC,YAAY,GACVP,KAAK,CADPO,YAAY;EAEd,IAAMC,aAAa,GAAG5B,MAAM,CAAC,CAAC,CAAC;EAC/B;EACA,IAAA6B,SAAA,GAAsC5B,QAAQ,CAAC,IAAI6B,GAAG,CAAiB,CAAC,CAAC;IAAAC,UAAA,GAAAC,cAAA,CAAAH,SAAA;IAAlEI,WAAW,GAAAF,UAAA;IAAEG,cAAc,GAAAH,UAAA;EAClC,IAAAI,UAAA,GAA4ClC,QAAQ,CAClD,IAAI6B,GAAG,CAAiB,CAC1B,CAAC;IAAAM,UAAA,GAAAJ,cAAA,CAAAG,UAAA;IAFME,cAAc,GAAAD,UAAA;IAAEE,iBAAiB,GAAAF,UAAA;EAIxCxB,gBAAgB,CAAC,CAAC;EAElB,IAAM2B,QAAQ,GAAGrC,WAAW,CAAC,CAAC;EAE9B,IAAMsC,eAAe,GAAGzC,WAAW,CACjC,MAAM0B,YAAY,CAACgB,sBAAsB,CAACnC,YAAY,CAAC,EACvD,CAACmB,YAAY,CACf,CAAC;EAED,IAAMiB,mBAAmB,GAAG3C,WAAW,CACrC,CAAC4C,GAAW,EAAEC,KAAa,KAAK;IAC9BV,cAAc,CAACW,GAAG,IAAI,IAAIf,GAAG,CAACe,GAAG,CAACC,GAAG,CAACH,GAAG,EAAEC,KAAK,CAAC,CAAC,CAAC;EACrD,CAAC,EACD,CAACV,cAAc,CACjB,CAAC;EAED,IAAMa,sBAAsB,GAAGhD,WAAW,CACvC4C,GAAW,IAAK;IACfT,cAAc,CAACW,GAAG,IAAI;MACpBA,GAAG,CAACG,MAAM,CAACL,GAAG,CAAC;MACf,OAAO,IAAIb,GAAG,CAACe,GAAG,CAAC;IACrB,CAAC,CAAC;EACJ,CAAC,EACD,CAACX,cAAc,CACjB,CAAC;EAED,IAAMe,sBAAsB,GAAGlD,WAAW,CACxC,CAAC4C,GAAW,EAAEC,KAAa,KAAK;IAC9BN,iBAAiB,CAACO,GAAG,IAAI,IAAIf,GAAG,CAACe,GAAG,CAACC,GAAG,CAACH,GAAG,EAAEC,KAAK,CAAC,CAAC,CAAC;EACxD,CAAC,EACD,CAACN,iBAAiB,CACpB,CAAC;EAED,IAAMY,yBAAyB,GAAGnD,WAAW,CAC1C4C,GAAW,IAAK;IACfL,iBAAiB,CAACO,GAAG,IAAI;MACvBA,GAAG,CAACG,MAAM,CAACL,GAAG,CAAC;MACf,OAAO,IAAIb,GAAG,CAACe,GAAG,CAAC;IACrB,CAAC,CAAC;EACJ,CAAC,EACD,CAACP,iBAAiB,CACpB,CAAC;EAED,IAAMa,iBAAiB,GAAGpD,WAAW,CACnC,UAACqD,OAAe,EAAmC;IAAA,IAAjCC,KAAK,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAApC,SAAA,GAAAoC,SAAA,MAAG,IAAI;IAAA,IAAEE,OAAO,GAAAF,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAApC,SAAA,GAAAoC,SAAA,MAAG,IAAI;IAC5C,IAAMG,cAAc,GAAGL,OAAO,IAAIA,OAAO,CAACM,IAAI,CAAC,CAAC;IAChD,IAAI,CAACD,cAAc,EAAE;MACnB5C,GAAG,CAAC8C,IAAI,CAAC,qBAAqB,CAAC;IACjC,CAAC,MAAM;MACL,IAAMC,YAAY,GAAGpB,eAAe,CAAC,CAAC;MACtC,IACE,CAACoB,YAAY,IACb,EAAEA,YAAY,YAAYtD,YAAY,CAACuD,gBAAgB,CAAC,EACxD;QACAhD,GAAG,CAACiD,KAAK,CAAC,yBAAyB,CAAC;QACpC;MACF;MACAjD,GAAG,CAACkD,KAAK,CAAC,gBAAgB,EAAEX,OAAO,EAAEC,KAAK,EAAEG,OAAO,CAAC;MACpDI,YAAY,CAACI,UAAU,CAACZ,OAAO,EAAEC,KAAK,EAAEG,OAAO,CAAC;IAClD;EACF,CAAC,EACD,CAAChB,eAAe,CAClB,CAAC;EAED,IAAMyB,qBAAqB,GAAGlE,WAAW,CACtCmE,eAAwC,IAAK;IAC5C3B,QAAQ,CAAC5B,2BAA2B,CAACW,EAAE,EAAE4C,eAAe,CAAC,CAAC;EAC5D,CAAC,EACD,CAAC3B,QAAQ,EAAEjB,EAAE,CACf,CAAC;EAED,IAAM6C,mBAAmB,GAAGpE,WAAW,CACrCqE,IAAA,IAAyC;IAAA,IAAtCC,QAAQ,GAAAD,IAAA,CAARC,QAAQ;IACT,IAAMC,SAAS,GAAGD,QAAQ,KAAK,QAAQ,GAAG,IAAI,GAAGA,QAAQ;IACzD,IAAIE,KAAK,GAAG,IAAI;IAChB,IAAID,SAAS,IAAI,IAAI,EAAE;MACrBzD,GAAG,CAACkD,KAAK,CAAC,2BAA2B,EAAEM,QAAQ,CAAC;MAChDE,KAAK,eAAAC,MAAA,CAAe5C,aAAa,CAAC6C,OAAO,CAAE;IAC7C,CAAC,MAAM;MACLF,KAAK,eAAAC,MAAA,CAAe5C,aAAa,CAAC6C,OAAO,OAAAD,MAAA,CAAIF,SAAS,CAAE;IAC1D;IACA1C,aAAa,CAAC6C,OAAO,IAAI,CAAC;IAC1B,OAAOF,KAAK;EACd,CAAC,EACD,EACF,CAAC;EAED,IAAMG,yBAAyB,GAAG3E,WAAW,CAC3C,UAAC4E,YAA0B,EAA+B;IAAA,IAA7BC,iBAAiB,GAAAtB,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAApC,SAAA,GAAAoC,SAAA,MAAG,IAAI;IACnD,IAAYuB,MAAM,GAAKF,YAAY,CAA3BrD,EAAE;IACV,IAAIuD,MAAM,IAAI,IAAI,IAAI5C,WAAW,CAAC6C,GAAG,CAACD,MAAM,CAAC,EAAE;MAC7C,OAAO5C,WAAW,CAAC8C,GAAG,CAACF,MAAM,CAAC;IAChC;IACA,IAAIA,MAAM,IAAI,IAAI,IAAIxC,cAAc,CAACyC,GAAG,CAACD,MAAM,CAAC,EAAE;MAChD,OAAOxC,cAAc,CAAC0C,GAAG,CAACF,MAAM,CAAC;IACnC;IACA,IAAID,iBAAiB,EAAE;MACrB,OAAOzE,MAAM,CAAC,CAAC;IACjB;IACA,OAAOe,SAAS;EAClB,CAAC,EACD,CAACe,WAAW,EAAEI,cAAc,CAC9B,CAAC;EAED,IAAM2C,WAAW,GAAGjF,WAAW,CAC7B,CAACkF,OAAe,EAAEC,QAAgB,KAAK;IACrCzF,WAAW,CAAC0F,eAAe,CAAC3D,MAAM,CAAC4D,IAAI,EAAE;MAAE9D,EAAE,EAAE2D;IAAQ,CAAC,EAAEC,QAAQ,CAAC;EACrE,CAAC,EACD,CAAC1D,MAAM,CAAC4D,IAAI,CACd,CAAC;EAED,IAAMC,eAAe,GAAGtF,WAAW,CACjC,CAACuF,OAAe,EAAEC,OAAe,KAAK;IACpC1E,GAAG,CAACkD,KAAK,CAAC,mBAAmB,EAAEuB,OAAO,EAAEC,OAAO,CAAC;IAChD,IAAIN,OAAO;IACX,IAAIhD,WAAW,CAAC6C,GAAG,CAACQ,OAAO,CAAC,EAAE;MAC5BL,OAAO,GAAGhD,WAAW,CAAC8C,GAAG,CAACO,OAAO,CAAC;MAClCvC,sBAAsB,CAACuC,OAAO,CAAC;MAC/B,IAAIL,OAAO,IAAI,IAAI,EAAE;QACnBvC,mBAAmB,CAAC6C,OAAO,EAAEN,OAAO,CAAC;MACvC;IACF;IACA,IAAI5C,cAAc,CAACyC,GAAG,CAACQ,OAAO,CAAC,EAAE;MAC/BL,OAAO,GAAG5C,cAAc,CAAC0C,GAAG,CAACO,OAAO,CAAC;MACrCpC,yBAAyB,CAACoC,OAAO,CAAC;MAClC,IAAIL,OAAO,IAAI,IAAI,EAAE;QACnBhC,sBAAsB,CAACsC,OAAO,EAAEN,OAAO,CAAC;MAC1C;IACF;IAEA,IAAIA,OAAO,KAAK/D,SAAS,EAAE;MACzBL,GAAG,CAAC2E,MAAM,SAAAhB,MAAA,CAASc,OAAO,2CAAwC,CAAC;MACnE;IACF;IAEAN,WAAW,CAACC,OAAO,EAAErF,SAAS,CAAC6F,WAAW,CAACF,OAAO,CAAC,CAAC;EACtD,CAAC,EACD,CACEtD,WAAW,EACXI,cAAc,EACd2C,WAAW,EACXtC,mBAAmB,EACnBO,sBAAsB,EACtBF,sBAAsB,EACtBG,yBAAyB,CAE7B,CAAC;;EAED;AACF;AACA;AACA;EACE,IAAMwC,aAAa,GAAG3F,WAAW,CAC9B4E,YAA0B,IAAK;IAC9B,IAAMM,OAAO,GAAGP,yBAAyB,CAACC,YAAY,EAAE,KAAK,CAAC;IAC9D,IAAIM,OAAO,IAAI,IAAI,EAAE;MACnBpE,GAAG,CAACiD,KAAK,CAAC,2CAA2C,EAAEa,YAAY,CAAC;MACpE;IACF;IACAlF,WAAW,CAACkG,WAAW,CAACnE,MAAM,CAAC4D,IAAI,EAAE;MAAE9D,EAAE,EAAE2D;IAAQ,CAAC,CAAC;EACvD,CAAC,EACD,CAACP,yBAAyB,EAAElD,MAAM,CAAC4D,IAAI,CACzC,CAAC;EAED,IAAMQ,iBAAiB,GAAG7F,WAAW,CACnC,CAACkF,OAAe,EAAEN,YAA0B,EAAEkB,SAAkB,KAAK;IACnEhF,GAAG,CAACkD,KAAK,CAAC,mBAAmB,EAAEkB,OAAO,EAAEN,YAAY,EAAEkB,SAAS,CAAC;IAChE,IAAIlB,YAAY,IAAI,IAAI,IAAIA,YAAY,CAACrD,EAAE,IAAI,IAAI,EAAE;MACnDT,GAAG,CAACkD,KAAK,CAAC,sBAAsB,EAAEY,YAAY,CAAC;MAC/C;IACF;IACA,IAAYE,MAAM,GAAKF,YAAY,CAA3BrD,EAAE;IACV,IAAIuE,SAAS,EAAE;MACb5C,sBAAsB,CAAC4B,MAAM,EAAEI,OAAO,CAAC;MACvC;IACF;IACA,IAAIhD,WAAW,CAAC6C,GAAG,CAACD,MAAM,CAAC,EAAE;MAC3B,IAAMiB,eAAe,GAAG7D,WAAW,CAAC8C,GAAG,CAACF,MAAM,CAAC;MAC/C,IAAII,OAAO,KAAKa,eAAe,EAAE;QAC/BjF,GAAG,CAACkD,KAAK,8BAAAS,MAAA,CAA8BK,MAAM,CAAE,CAAC;QAChD,IAAQkB,QAAQ,GAAKpB,YAAY,CAAzBoB,QAAQ;QAChBV,eAAe,CAACR,MAAM,EAAEkB,QAAQ,CAAC;MACnC,CAAC,MAAM;QACLlF,GAAG,CAACiD,KAAK,SAAAU,MAAA,CACCK,MAAM,+CAAAL,MAAA,CAA4CsB,eAAe,CAC3E,CAAC;MACH;MACA;IACF;IAEApD,mBAAmB,CAACmC,MAAM,EAAEI,OAAO,CAAC;;IAEpC;IACA,IAAI5C,cAAc,CAACyC,GAAG,CAACD,MAAM,CAAC,EAAE;MAC9B3B,yBAAyB,CAAC2B,MAAM,CAAC;IACnC;EACF,CAAC,EACD,CACE5C,WAAW,EACXI,cAAc,EACdgD,eAAe,EACf3C,mBAAmB,EACnBO,sBAAsB,EACtBC,yBAAyB,CAE7B,CAAC;EAED,IAAM8C,mBAAmB,GAAGjG,WAAW,CACrC,CAAC4E,YAA0B,EAAEkB,SAAkB,KAAK;IAClDhF,GAAG,CAACkD,KAAK,CAAC,mBAAmB,EAAEY,YAAY,EAAEkB,SAAS,CAAC;IACvD,IAAIlB,YAAY,IAAI,IAAI,IAAIA,YAAY,CAACrD,EAAE,IAAI,IAAI,EAAE;MACnDT,GAAG,CAACkD,KAAK,CAAC,sBAAsB,EAAEY,YAAY,CAAC;MAC/C;IACF;IACA,IAAYE,MAAM,GAAKF,YAAY,CAA3BrD,EAAE;IACV,IAAIuE,SAAS,EAAE;MACb3C,yBAAyB,CAAC2B,MAAM,CAAC;MACjC;IACF;IACA9B,sBAAsB,CAAC8B,MAAM,CAAC;EAChC,CAAC,EACD,CAAC9B,sBAAsB,EAAEG,yBAAyB,CACpD,CAAC;EAED,IAAM+C,cAAc,GAAGlG,WAAW,CAChC,CAAC4E,YAA0B,EAAEuB,OAAsB,KAAK;IACtDrF,GAAG,CAACkD,KAAK,CAAC,gBAAgB,EAAEY,YAAY,CAAC;IACzC,IAAYE,MAAM,GAAKF,YAAY,CAA3BrD,EAAE;IACV,IAAIuD,MAAM,IAAI,IAAI,EAAE;MAClBhE,GAAG,CAACsF,IAAI,CAAC,qCAAqC,CAAC;MAC/C;IACF;IACA,IAAIlB,OAAO,GAAG,IAAI;IAClB,IAAIY,SAAS,GAAG,KAAK;IACrB,IAAI5D,WAAW,CAAC6C,GAAG,CAACD,MAAM,CAAC,EAAE;MAC3BI,OAAO,GAAGhD,WAAW,CAAC8C,GAAG,CAACF,MAAM,CAAC;IACnC,CAAC,MAAM,IAAIxC,cAAc,CAACyC,GAAG,CAACD,MAAM,CAAC,EAAE;MACrCI,OAAO,GAAG5C,cAAc,CAAC0C,GAAG,CAACF,MAAM,CAAC;MACpCgB,SAAS,GAAG,IAAI;IAClB,CAAC,MAAM;MACLhF,GAAG,CAACkD,KAAK,SAAAS,MAAA,CAASK,MAAM,oCAAiC,CAAC;MAC1D;IACF;IACAmB,mBAAmB,CAACrB,YAAY,EAAEkB,SAAS,CAAC;IAC5CpG,WAAW,CAAC2G,cAAc,CAAC5E,MAAM,CAAC4D,IAAI,EAAE;MAAE9D,EAAE,EAAE2D;IAAQ,CAAC,EAAEiB,OAAO,CAAC;EACnE,CAAC,EACD,CAAC1E,MAAM,CAAC4D,IAAI,EAAEnD,WAAW,EAAEI,cAAc,EAAE2D,mBAAmB,CAChE,CAAC;EAED,IAAMK,gBAAgB,GAAGtG,WAAW,CAAE4E,YAA0B,IAAK;IACnE,IAAQoB,QAAQ,GAAKpB,YAAY,CAAzBoB,QAAQ;IAChB,OAAOnG,SAAS,CAAC6F,WAAW,CAACM,QAAQ,CAAC;EACxC,CAAC,EAAE,EAAE,CAAC;EAEN,IAAMO,UAAU,GAAGvG,WAAW,CAC3B4E,YAA0B,IAAK;IAC9B,IAAYE,MAAM,GAAKF,YAAY,CAA3BrD,EAAE;IACVT,GAAG,CAACkD,KAAK,CAAC,YAAY,EAAEY,YAAY,EAAEE,MAAM,EAAE5C,WAAW,CAAC;IAC1D,OAAO4C,MAAM,IAAI,IAAI,IAAI5C,WAAW,CAAC6C,GAAG,CAACD,MAAM,CAAC;EAClD,CAAC,EACD,CAAC5C,WAAW,CACd,CAAC;EAED,IAAMsE,mBAAmB,GAAGxG,WAAW,CACpC4E,YAA0B,IAAK;IAC9B,IAAYE,MAAM,GAAKF,YAAY,CAA3BrD,EAAE;IACVT,GAAG,CAACkD,KAAK,CAAC,qBAAqB,EAAEY,YAAY,EAAEE,MAAM,EAAExC,cAAc,CAAC;IACtE,OAAOwC,MAAM,IAAI,IAAI,IAAIxC,cAAc,CAACyC,GAAG,CAACD,MAAM,CAAC;EACrD,CAAC,EACD,CAACxC,cAAc,CACjB,CAAC;;EAED;AACF;AACA;EACE,IAAMmE,cAAc,GAAGzG,WAAW,CAC/BkF,OAAe,IAAK;IACnB,IAAIA,OAAO,IAAI,IAAI,EAAE;MACnB;IACF;IAEA,IAAMjE,KAAK,GAAGS,YAAY,CAACgF,kBAAkB,CAACxB,OAAO,CAAC;IACtD,IAAIjE,KAAK,IAAID,eAAe,CAACC,KAAK,CAAC,EAAE;MACnCA,KAAK,CAACqC,KAAK,CAAC,CAAC;IACf;EACF,CAAC,EACD,CAAC5B,YAAY,CACf,CAAC;EAED,IAAMiF,UAAU,GAAG3G,WAAW,CAC5B4G,KAAA,IAcM;IAAA,IAbA1B,OAAO,GAAA0B,KAAA,CAAXrF,EAAE;MACFsF,QAAQ,GAAAD,KAAA,CAARC,QAAQ;MACRjC,YAAY,GAAAgC,KAAA,CAAZhC,YAAY;MACZkC,OAAO,GAAAF,KAAA,CAAPE,OAAO;MACPC,eAAe,GAAAH,KAAA,CAAfG,eAAe;MAAAC,eAAA,GAAAJ,KAAA,CACfd,SAAS;MAATA,SAAS,GAAAkB,eAAA,cAAG,KAAK,GAAAA,eAAA;IASjB,IAAMC,UAAU,GAAG;MACjBJ,QAAQ;MACRjC;IACF,CAAC;IACD,IAAMJ,KAAK,GAAG8B,gBAAgB,CAAC1B,YAAY,CAAC;IAC5C,OAAO;MACLsC,IAAI,EAAE,iBAA0B;MAChCC,SAAS,EAAExG,aAAa,CAACyG,SAAS;MAClCC,aAAa,EAAE,KAAK;MACpBhG,KAAK,EAAE;QACLiG,gBAAgB,EAAE/F,EAAE;QACpBgG,QAAQ,EAAE;UAAEhG,EAAE,EAAE2D;QAAQ,CAAC;QACzB4B,OAAO;QACPC,eAAe;QACfE,UAAU;QACVnB,SAAS;QACTlE;MACF,CAAC;MACD4C,KAAK;MACLjD,EAAE,EAAE2D;IACN,CAAC;EACH,CAAC,EACD,CAACoB,gBAAgB,EAAE/E,EAAE,EAAEK,YAAY,CACrC,CAAC;EAED,IAAM4F,cAAc,GAAGxH,WAAW,CAChC,UACE8G,OAAsB,EACtBC,eAAuB,EACvBF,QAAgC,EAK7B;IAAA,IAJHjC,YAA0B,GAAArB,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAApC,SAAA,GAAAoC,SAAA,MAAG;MAC3BhC,EAAE,EAAE,IAAI;MACRyE,QAAQ,EAAE5B,mBAAmB,CAACyC,QAAQ;IACxC,CAAC;IAED,IAAM3B,OAAO,GAAGP,yBAAyB,CAACC,YAAY,CAAC;IACvD,IAAI2B,UAAU,CAAC3B,YAAY,CAAC,IAAIM,OAAO,IAAI,IAAI,EAAE;MAC/CpE,GAAG,CAACkD,KAAK,CAAC,mCAAmC,CAAC;MAC9C2B,aAAa,CAACf,YAAY,CAAC;MAC3B6B,cAAc,CAACvB,OAAO,CAAC;MACvB;IACF;;IAEA;IACA,IAAIA,OAAO,IAAI,IAAI,EAAE;MACnBpE,GAAG,CAACiD,KAAK,CAAC,oCAAoC,CAAC;MAC/C;IACF;IACA,IAAM0D,KAAK,GAAG/H,WAAW,CAACgI,yBAAyB,CAACjG,MAAM,CAAC4D,IAAI,EAAE,CAC/D1E,aAAa,CAACyG,SAAS,CACxB,CAAC;IACF,IAAMO,MAAM,GAAGhB,UAAU,CAAC;MACxBpF,EAAE,EAAE2D,OAAO;MACX2B,QAAQ;MACRjC,YAAY;MACZkC,OAAO;MACPC;IACF,CAAC,CAAC;IACFjG,GAAG,CAACkD,KAAK,CAAC,gBAAgB,EAAE2D,MAAM,EAAEzF,WAAW,CAAC;IAChDxC,WAAW,CAACkI,oBAAoB,CAACH,KAAK,EAAEE,MAAM,CAAC;EACjD,CAAC,EACD,CACEpB,UAAU,EACVE,cAAc,EACdrC,mBAAmB,EACnBO,yBAAyB,EACzBlD,MAAM,CAAC4D,IAAI,EACXsB,UAAU,EACVzE,WAAW,EACXyD,aAAa,CAEjB,CAAC;EAED,IAAMkC,cAAc,GAAG7H,WAAW,CAChC,UACE8G,OAAsB,EACtBC,eAAuB,EACvBF,QAAgC,EAChCjC,YAA0B,EAIvB;IAAA,IADHkD,WAAoB,GAAAvE,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAApC,SAAA,GAAAoC,SAAA,MAAG,KAAK;IAE5BzC,GAAG,CAACkD,KAAK,CAAC,gBAAgB,EAAEY,YAAY,EAAEkD,WAAW,CAAC;IACtD,IAAMC,UAAU,GAAGxB,UAAU,CAAC3B,YAAY,CAAC;IAC3C,IAAMoD,mBAAmB,GAAGxB,mBAAmB,CAAC5B,YAAY,CAAC;IAE7D,IAAAqD,KAAA,GAAoB,CAAC,GAAG3F,cAAc,CAAC4F,MAAM,CAAC,CAAC,CAAC;MAAzCC,SAAS,GAAAF,KAAA;IAChB,IAAMnC,SAAS,GAAG,CAACgC,WAAW;IAC9B,IAAM5C,OAAO,GACXY,SAAS,IAAIqC,SAAS,GAClBA,SAAS,GACTxD,yBAAyB,CAACC,YAAY,CAAC;IAE7C,IAAIM,OAAO,IAAI,IAAI,IAAIA,OAAO,KAAK,EAAE,EAAE;MACrC,MAAM,IAAIkD,KAAK,uDAAA3D,MAAA,CACyC4D,IAAI,CAACC,SAAS,CAClE1D,YACF,CAAC,CACH,CAAC;IACH;;IAEA;IACA,IAAImD,UAAU,IAAIC,mBAAmB,EAAE;MACrCrC,aAAa,CAACf,YAAY,CAAC;IAC7B,CAAC,MAAM;MACL,IAAM6C,KAAK,GAAG/H,WAAW,CAACgI,yBAAyB,CAACjG,MAAM,CAAC4D,IAAI,EAAE,CAC/D1E,aAAa,CAACyG,SAAS,CACxB,CAAC;MAEF,IAAMO,MAAM,GAAGhB,UAAU,CAAC;QACxBpF,EAAE,EAAE2D,OAAO;QACX2B,QAAQ;QACRjC,YAAY;QACZkC,OAAO;QACPC,eAAe;QACfjB;MACF,CAAC,CAAC;;MAEF;MACApG,WAAW,CAACkI,oBAAoB,CAACH,KAAK,EAAEE,MAAM,CAAC;IACjD;;IAEA;IACA,IAAIK,mBAAmB,IAAIF,WAAW,EAAE;MACtC,IAAMhD,MAAM,GAAGF,YAAY,CAACrD,EAAE;MAC9B,IAAMkG,MAAK,GAAG/H,WAAW,CAAC6I,iBAAiB,CAAC9G,MAAM,CAAC4D,IAAI,EAAE;QACvD8B,SAAS,EAAExG,aAAa,CAACyG,SAAS;QAClC7F,EAAE,EAAE2D;MACN,CAAC,CAAC;MAEF,IAAMsD,IAAI,GAAG9I,WAAW,CAAC+I,qBAAqB,CAAChB,MAAK,EAAE;QACpDN,SAAS,EAAExG,aAAa,CAACyG,SAAS;QAClC7F,EAAE,EAAE2D;MACN,CAAC,CAAC;MACF,IAAIJ,MAAM,IAAI,IAAI,IAAI0D,IAAI,IAAI1I,WAAW,CAAC0I,IAAI,CAAC,EAAE;QAC/CA,IAAI,CAACE,SAAS,CAACC,IAAI,CAACrI,aAAa,CAACsI,oBAAoB,CAAC;QACvDzF,yBAAyB,CAAC2B,MAAM,CAAC;QACjCnC,mBAAmB,CAACmC,MAAM,EAAEI,OAAO,CAAC;MACtC;IACF;IAEA,IAAI4C,WAAW,EAAE;MACf;MACArB,cAAc,CAACvB,OAAO,CAAC;IACzB;EACF,CAAC,EACD,CACES,aAAa,EACbY,UAAU,EACVC,mBAAmB,EACnBC,cAAc,EACd9B,yBAAyB,EACzBlD,MAAM,CAAC4D,IAAI,EACXsB,UAAU,EACVrE,cAAc,EACda,yBAAyB,EACzBR,mBAAmB,CAEvB,CAAC;;EAED;EACA,IAAMkG,cAAc,GAAG7I,WAAW,CAChC,UACE8G,OAAsB,EACtBC,eAAuB,EAGpB;IAAA,IAFHF,QAAgC,GAAAtD,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAApC,SAAA,GAAAoC,SAAA,MAAG,CAAC,CAAC;IAAA,IACrCsB,iBAAiB,GAAAtB,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAApC,SAAA,GAAAoC,SAAA,MAAG,IAAI;IAExB,IAAMuF,aAAa,GAAGpH,YAAY,CAACgB,sBAAsB,CAAC/B,aAAa,CAAC;IACxE,IAAImI,aAAa,IAAI9H,eAAe,CAAC8H,aAAa,CAAC,EAAE;MACnD,IACEjC,QAAQ,IAAI,IAAI,IAChBA,QAAQ,CAAChE,KAAK,IAAI,IAAI,IACtBiG,aAAa,CAAC5H,QAAQ,IAAI,IAAI,EAC9B;QACA4H,aAAa,CAAC5H,QAAQ,CAAC6H,MAAM,CAAClC,QAAQ,CAAChE,KAAK,CAAC;MAC/C;IACF,CAAC,MAAM,IAAIgC,iBAAiB,EAAE;MAC5B2C,cAAc,CAACV,OAAO,EAAEC,eAAe,EAAEF,QAAQ,CAAC;IACpD;EACF,CAAC,EACD,CAACW,cAAc,EAAE9F,YAAY,CAC/B,CAAC;EAED,IAAMsH,eAAe,GAAGhJ,WAAW,CACjC,CACEiJ,UAAgC,EAChCC,gBAAwB,KAExBzJ,cAAc,CAAC0J,OAAO,CAAAC,aAAA,CAAAA,aAAA,KAEfH,UAAU;IACbrH;EAAY,IAEdsH,gBACF,CAAC,EACH,CAACtH,YAAY,CACf,CAAC;EAEDhC,oBAAoB,CAAC+B,iBAAiB,EAAEpB,YAAY,EAAEiB,cAAc,CAAC;EACrE5B,oBAAoB,CAAC+B,iBAAiB,EAAEnB,mBAAmB,CAAC;EAC5DZ,oBAAoB,CAAC+B,iBAAiB,EAAElB,iBAAiB,CAAC;EAC1Db,oBAAoB,CAAC+B,iBAAiB,EAAEjB,QAAQ,CAAC;EACjDd,oBAAoB,CAAC+B,iBAAiB,EAAEhB,aAAa,EAAEqI,eAAe,CAAC;EAEvErJ,WAAW,CAAC8B,MAAM,CAAC4H,QAAQ,EAAEhJ,YAAY,CAACiJ,YAAY,EAAElG,iBAAiB,CAAC;EAC1EzD,WAAW,CACT8B,MAAM,CAAC4H,QAAQ,EACfhJ,YAAY,CAACkJ,gBAAgB,EAC7BrF,qBACF,CAAC;EACDvE,WAAW,CAAC8B,MAAM,CAAC4H,QAAQ,EAAE/I,aAAa,CAACkJ,UAAU,EAAEtD,cAAc,CAAC;EACtEvG,WAAW,CAAC8B,MAAM,CAAC4H,QAAQ,EAAE/I,aAAa,CAACmJ,eAAe,EAAEjC,cAAc,CAAC;EAC3E7H,WAAW,CAAC8B,MAAM,CAAC4H,QAAQ,EAAE/I,aAAa,CAACoJ,eAAe,EAAE7B,cAAc,CAAC;EAC3ElI,WAAW,CAAC8B,MAAM,CAAC4H,QAAQ,EAAE/I,aAAa,CAACqJ,MAAM,EAAE1E,WAAW,CAAC;EAC/DtF,WAAW,CAAC8B,MAAM,CAAC4H,QAAQ,EAAE/I,aAAa,CAACsJ,WAAW,EAAEtE,eAAe,CAAC;EACxE3F,WAAW,CAAC8B,MAAM,CAAC4H,QAAQ,EAAE/I,aAAa,CAACuJ,gBAAgB,EAAEhB,cAAc,CAAC;EAC5ElJ,WAAW,CAAC8B,MAAM,CAAC4H,QAAQ,EAAE/I,aAAa,CAACwJ,aAAa,EAAEjE,iBAAiB,CAAC;EAC5ElG,WAAW,CACT8B,MAAM,CAAC4H,QAAQ,EACf/I,aAAa,CAACyJ,eAAe,EAC7B9D,mBACF,CAAC;EAED,OAAO,IAAI;AACb;AAEA,eAAe3E,aAAa","ignoreList":[]}
|