@deephaven/dashboard-core-plugins 1.22.1 → 1.22.2-alpha-pivot-builder.0730ba6.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.
Files changed (105) hide show
  1. package/dist/ChartBuilderPlugin.js +8 -15
  2. package/dist/ChartBuilderPlugin.js.map +1 -1
  3. package/dist/ChartPanelPlugin.js +13 -6
  4. package/dist/ChartPanelPlugin.js.map +1 -1
  5. package/dist/ChartWidgetPlugin.js +11 -4
  6. package/dist/ChartWidgetPlugin.js.map +1 -1
  7. package/dist/ConsolePlugin.js +38 -46
  8. package/dist/ConsolePlugin.js.map +1 -1
  9. package/dist/FilterPlugin.js +63 -44
  10. package/dist/FilterPlugin.js.map +1 -1
  11. package/dist/GridPanelPlugin.js +3 -5
  12. package/dist/GridPanelPlugin.js.map +1 -1
  13. package/dist/GridWidgetPlugin.d.ts +18 -1
  14. package/dist/GridWidgetPlugin.d.ts.map +1 -1
  15. package/dist/GridWidgetPlugin.js +54 -30
  16. package/dist/GridWidgetPlugin.js.map +1 -1
  17. package/dist/LinkerPlugin.js +3 -5
  18. package/dist/LinkerPlugin.js.map +1 -1
  19. package/dist/MarkdownPlugin.js +18 -17
  20. package/dist/MarkdownPlugin.js.map +1 -1
  21. package/dist/PandasPanelPlugin.js +3 -5
  22. package/dist/PandasPanelPlugin.js.map +1 -1
  23. package/dist/PandasWidgetPlugin.js +3 -7
  24. package/dist/PandasWidgetPlugin.js.map +1 -1
  25. package/dist/TablePluginWrapper.js +8 -10
  26. package/dist/TablePluginWrapper.js.map +1 -1
  27. package/dist/WidgetLoaderPlugin.js +24 -29
  28. package/dist/WidgetLoaderPlugin.js.map +1 -1
  29. package/dist/controls/dropdown-filter/DropdownFilter.js +63 -79
  30. package/dist/controls/dropdown-filter/DropdownFilter.js.map +1 -1
  31. package/dist/controls/input-filter/InputFilter.js +32 -58
  32. package/dist/controls/input-filter/InputFilter.js.map +1 -1
  33. package/dist/controls/markdown/MarkdownContainer.js +4 -5
  34. package/dist/controls/markdown/MarkdownContainer.js.map +1 -1
  35. package/dist/controls/markdown/MarkdownEditor.js +7 -10
  36. package/dist/controls/markdown/MarkdownEditor.js.map +1 -1
  37. package/dist/controls/markdown/MarkdownStartPage.js +8 -12
  38. package/dist/controls/markdown/MarkdownStartPage.js.map +1 -1
  39. package/dist/linker/Linker.js +100 -192
  40. package/dist/linker/Linker.js.map +1 -1
  41. package/dist/linker/LinkerLink.js +23 -31
  42. package/dist/linker/LinkerLink.js.map +1 -1
  43. package/dist/linker/LinkerOverlayContent.js +65 -66
  44. package/dist/linker/LinkerOverlayContent.js.map +1 -1
  45. package/dist/linker/LinkerUtils.js +6 -14
  46. package/dist/linker/LinkerUtils.js.map +1 -1
  47. package/dist/panels/ChartColumnSelectorOverlay.js +4 -6
  48. package/dist/panels/ChartColumnSelectorOverlay.js.map +1 -1
  49. package/dist/panels/ChartFilterOverlay.js +7 -9
  50. package/dist/panels/ChartFilterOverlay.js.map +1 -1
  51. package/dist/panels/ChartPanel.js +136 -220
  52. package/dist/panels/ChartPanel.js.map +1 -1
  53. package/dist/panels/ChartPanelUtils.js +3 -4
  54. package/dist/panels/ChartPanelUtils.js.map +1 -1
  55. package/dist/panels/CommandHistoryPanel.js +33 -52
  56. package/dist/panels/CommandHistoryPanel.js.map +1 -1
  57. package/dist/panels/ConsolePanel.js +68 -130
  58. package/dist/panels/ConsolePanel.js.map +1 -1
  59. package/dist/panels/CorePanel.js +6 -18
  60. package/dist/panels/CorePanel.js.map +1 -1
  61. package/dist/panels/DropdownFilterPanel.js +109 -165
  62. package/dist/panels/DropdownFilterPanel.js.map +1 -1
  63. package/dist/panels/FileExplorerPanel.js +30 -55
  64. package/dist/panels/FileExplorerPanel.js.map +1 -1
  65. package/dist/panels/FilterSetManager.js +81 -141
  66. package/dist/panels/FilterSetManager.js.map +1 -1
  67. package/dist/panels/FilterSetManagerPanel.js +68 -87
  68. package/dist/panels/FilterSetManagerPanel.js.map +1 -1
  69. package/dist/panels/InputFilterPanel.js +45 -68
  70. package/dist/panels/InputFilterPanel.js.map +1 -1
  71. package/dist/panels/IrisGridPanel.d.ts +28 -6
  72. package/dist/panels/IrisGridPanel.d.ts.map +1 -1
  73. package/dist/panels/IrisGridPanel.js +224 -280
  74. package/dist/panels/IrisGridPanel.js.map +1 -1
  75. package/dist/panels/IrisGridPanelTooltip.js +1 -3
  76. package/dist/panels/IrisGridPanelTooltip.js.map +1 -1
  77. package/dist/panels/LogPanel.js +6 -13
  78. package/dist/panels/LogPanel.js.map +1 -1
  79. package/dist/panels/MarkdownNotebook.js +28 -50
  80. package/dist/panels/MarkdownNotebook.js.map +1 -1
  81. package/dist/panels/MarkdownPanel.js +19 -38
  82. package/dist/panels/MarkdownPanel.js.map +1 -1
  83. package/dist/panels/NotebookPanel.js +157 -292
  84. package/dist/panels/NotebookPanel.js.map +1 -1
  85. package/dist/panels/PandasPanel.js +5 -15
  86. package/dist/panels/PandasPanel.js.map +1 -1
  87. package/dist/panels/PandasReloadButton.js +1 -3
  88. package/dist/panels/PandasReloadButton.js.map +1 -1
  89. package/dist/panels/WidgetPanel.js +42 -51
  90. package/dist/panels/WidgetPanel.js.map +1 -1
  91. package/dist/panels/WidgetPanelTooltip.js +6 -10
  92. package/dist/panels/WidgetPanelTooltip.js.map +1 -1
  93. package/dist/useConfigureRuff.js +8 -9
  94. package/dist/useConfigureRuff.js.map +1 -1
  95. package/dist/useDashboardColumnFilters.js +4 -7
  96. package/dist/useDashboardColumnFilters.js.map +1 -1
  97. package/dist/useGridLinker.js +9 -16
  98. package/dist/useGridLinker.js.map +1 -1
  99. package/dist/useIrisGridModel.d.ts +2 -2
  100. package/dist/useIrisGridModel.d.ts.map +1 -1
  101. package/dist/useIrisGridModel.js +34 -6
  102. package/dist/useIrisGridModel.js.map +1 -1
  103. package/dist/useTablePlugin.js +27 -14
  104. package/dist/useTablePlugin.js.map +1 -1
  105. 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
- id,
17
- layout
18
- } = props;
15
+ var id = props.id,
16
+ layout = props.layout;
19
17
  var handleCreateChart = useCallback(_ref => {
20
- var {
21
- metadata,
22
- panelId = nanoid(),
23
- table
24
- } = _ref;
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,IAAM;IAAEC,EAAE;IAAEC;EAAO,CAAC,GAAGF,KAAK;EAE5B,IAAMG,iBAAiB,GAAGZ,WAAW,CACnCa,IAAA,IAYM;IAAA,IAZL;MACCC,QAAQ;MACRC,OAAO,GAAGV,MAAM,CAAC,CAAC;MAClBW;IASF,CAAC,GAAAH,IAAA;IACC,IAAM;MAAEI;IAAS,CAAC,GAAGH,QAAQ;IAC7B,IAAMI,UAAU;MAAA,IAAAC,KAAA,GAAAC,iBAAA,CAAG;QAAA,OAAYJ,KAAK;MAAA;MAAA,gBAA9BE,UAAUA,CAAA;QAAA,OAAAC,KAAA,CAAAE,KAAA,OAAAC,SAAA;MAAA;IAAA,GAAoB;IACpC,IAAMC,KAAK,GAAGtB,UAAU,CAACuB,iBAAiB,CAACP,QAAQ,CAAC;IAEpD,IAAMQ,MAAM,GAAG;MACbC,IAAI,EAAE,iBAA0B;MAChCC,SAAS,EAAEpB,UAAU,CAACqB,SAAS;MAC/BnB,KAAK,EAAE;QACLoB,gBAAgB,EAAEnB,EAAE;QACpBA,EAAE,EAAEK,OAAO;QACXD,QAAQ;QACRgB,KAAK,EAAEZ;MACT,CAAC;MACDK,KAAK;MACLb,EAAE,EAAEK;IACN,CAAC;IAED,IAAM;MAAEgB;IAAK,CAAC,GAAGpB,MAAM;IACvBR,WAAW,CAAC6B,aAAa,CAAC;MAAED,IAAI;MAAEN;IAAO,CAAC,CAAC;EAC7C,CAAC,EACD,CAACf,EAAE,EAAEC,MAAM,CACb,CAAC;EAEDP,WAAW,CAACO,MAAM,CAACsB,QAAQ,EAAE3B,aAAa,CAAC4B,YAAY,EAAEtB,iBAAiB,CAAC;EAE3E,OAAO,IAAI;AACb;AAEA,eAAeJ,kBAAkB","ignoreList":[]}
1
+ {"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":[]}
@@ -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
- fetch: panelFetch,
55
- metadata,
56
- localDashboardId
57
- } = props;
59
+ var panelFetch = props.fetch,
60
+ metadata = props.metadata,
61
+ localDashboardId = props.localDashboardId;
58
62
  assertNotNull(metadata);
59
- var [dh, error] = useDeferredApi(metadata);
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":"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","ignoreList":[]}
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":";;;;;;;;;;;;;AAAA,SAASA,UAAU,EAAEC,WAAW,QAAQ,OAAO;AAC/C,SAASC,cAAc,QAAQ,4BAA4B;AAC3D,SAA0BC,iBAAiB,QAAQ,kBAAkB;AAErE,SAASC,aAAa,QAAQ,sBAAsB;AACpD,SAASC,WAAW,EAAEC,KAAK,QAAQ,kBAAkB;AAErD,SAASC,aAAa,QAAQ,kBAAkB;AAAC,SAI/CC,2BAA2B,EAC3BC,yBAAyB;AAAA,OAEpBC,mBAAmB;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAAA,SAKXC,gBAAgBA,CAAAC,EAAA,EAAAC,GAAA,EAAAC,GAAA,EAAAC,GAAA;EAAA,OAAAC,iBAAA,CAAAC,KAAA,OAAAC,SAAA;AAAA;AAAA,SAAAF,kBAAA;EAAAA,iBAAA,GAAAG,iBAAA,CAA/B,WACEC,EAAiB,EACjBC,QAA4B,EAC5BC,UAA4D,EAC5DC,UAA8B,EACT;IACrB,IAAIC,QAAQ,GAAG,CAAC,CAAC;IACjB,IAAIC,SAAS,GAAG,EAAE;IAClB,IAAIC,aAAa,GAAG,CAAC,CAAC;IAEtB,IAAInB,yBAAyB,CAACc,QAAQ,CAAC,EAAE;MACvCG,QAAQ,GAAGH,QAAQ,CAACG,QAAQ;MAC5BC,SAAS,GAAGJ,QAAQ,CAACM,KAAK;MAC1BD,aAAa,GAAGL,QAAQ,CAACK,aAAa;IACxC;IACA,IAAIH,UAAU,IAAI,IAAI,EAAE;MACtB,IAAIA,UAAU,CAACG,aAAa,IAAI,IAAI,EAAE;QACpCA,aAAa,GAAGH,UAAU,CAACG,aAAa;MAC1C;MACA,IAAIH,UAAU,CAACI,KAAK,IAAI,IAAI,EAAE;QAC5BF,SAAS,GAAGF,UAAU,CAACI,KAAK;MAC9B;MACA,IAAIJ,UAAU,CAACC,QAAQ,IAAI,IAAI,EAAE;QAC/BA,QAAQ,GAAAI,aAAA,CAAAA,aAAA,KACHJ,QAAQ,GACRD,UAAU,CAACC,QAAQ,CACvB;MACH;IACF;IAEA,IAAIC,SAAS,IAAI,IAAI,IAAIA,SAAS,KAAK,EAAE,EAAE;MACzC,IAAME,KAAK,SAAUL,UAAU,CAAC,CAAkB;MAClD,IAAIpB,aAAa,CAACkB,EAAE,CAAC,CAACS,kBAAkB,CACtCF,KAAK,EACLD,aAAa,EACbvB,WAAW,CAACC,KAAK,CAAC0B,QAAQ,CAAC,CAAC,CAC9B,CAAC;MAED,OAAO7B,iBAAiB,CAAC8B,qBAAqB,CAACX,EAAE,EAAEI,QAAQ,EAAEG,KAAK,CAAC;IACrE;IAEA,IAAMK,MAAM,SAAUV,UAAU,CAAC,CAAwB;IAEzD,OAAOrB,iBAAiB,CAACgC,SAAS,CAACb,EAAE,EAAEI,QAAQ,EAAEQ,MAAM,CAAC;EAC1D,CAAC;EAAA,OAAAhB,iBAAA,CAAAC,KAAA,OAAAC,SAAA;AAAA;AAED,OAAO,IAAMgB,gBAAgB,gBAAGpC,UAAU,CACxC,CAACqC,KAA2C,EAAEC,GAA0B,KAAK;EAC3E,IAAMb,UAAU,GAAGjB,2BAA2B,CAAC6B,KAAK,CAAC,GAChDA,KAAK,CAAgCZ,UAAU,GAChDc,SAAS;EAEb,IAAef,UAAU,GAAiCa,KAAK,CAAvDG,KAAK;IAAcjB,QAAQ,GAAuBc,KAAK,CAApCd,QAAQ;IAAEkB,gBAAgB,GAAKJ,KAAK,CAA1BI,gBAAgB;EACrDlC,aAAa,CAACgB,QAAQ,CAAC;EACvB,IAAAmB,eAAA,GAAoBxC,cAAc,CAACqB,QAAQ,CAAC;IAAAoB,gBAAA,GAAAC,cAAA,CAAAF,eAAA;IAArCpB,EAAE,GAAAqB,gBAAA;IAAEE,KAAK,GAAAF,gBAAA;EAEhB,IAAMR,SAAS,GAAGlC,WAAW,cAAAoB,iBAAA,CAAC,aAAY;IACxC,IAAIwB,KAAK,IAAI,IAAI,EAAE;MACjB,MAAMA,KAAK;IACb;IACA,IAAIvB,EAAE,IAAI,IAAI,EAAE;MACd,OAAO,IAAIwB,OAAO,CAAa,MAAM;QACnC;MAAA,CACD,CAAC;IACJ;IACA,OAAOjC,gBAAgB,CACrBS,EAAE,EACFC,QAAQ,EACRC,UAAU,EACVC,UACF,CAAC;EACH,CAAC,GAAE,CAACH,EAAE,EAAEuB,KAAK,EAAEtB,QAAQ,EAAEC,UAAU,EAAEC,UAAU,CAAC,CAAC;EAEjD,oBACEb,IAAA,CAACF,mBAAmB,EAAAoB,aAAA,CAAAA,aAAA;IAClBQ,GAAG,EAAEA;IACL;EAAA,GACID,KAAK;IACTd,QAAQ,EAAEA,QAAS;IACnBkB,gBAAgB,EAAEA,gBAAiB;IACnCN,SAAS,EAAEA;EAAU,EACtB,CAAC;AAEN,CACF,CAAC;AAEDC,gBAAgB,CAACW,WAAW,GAAG,kBAAkB;AAEjD,eAAeX,gBAAgB","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 [model, setModel] = useState();
10
- var {
11
- fetch
12
- } = props;
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":";;AAAA,SAASA,SAAS,EAAEC,QAAQ,QAAQ,OAAO;AAC3C,SAASC,MAAM,QAAQ,4BAA4B;AACnD,SAASC,KAAK,EAAmBC,iBAAiB,QAAQ,kBAAkB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAI7E,OAAO,SAASC,iBAAiBA,CAC/BC,KAA2C,EACvB;EACpB,IAAMC,EAAE,GAAGP,MAAM,CAAC,CAAC;EACnB,IAAM,CAACQ,KAAK,EAAEC,QAAQ,CAAC,GAAGV,QAAQ,CAAa,CAAC;EAEhD,IAAM;IAAEW;EAAM,CAAC,GAAGJ,KAAK;EAEvBR,SAAS,CAAC,MAAM;IACd,IAAIa,SAAS,GAAG,KAAK;IAAC,SACPC,IAAIA,CAAA;MAAA,OAAAC,KAAA,CAAAC,KAAA,OAAAC,SAAA;IAAA;IAAA,SAAAF,MAAA;MAAAA,KAAA,GAAAG,iBAAA,CAAnB,aAAsB;QACpB,IAAMC,MAAM,SAAUP,KAAK,CAAC,CAA+B;QAC3D,IAAMQ,QAAQ,SAAShB,iBAAiB,CAACiB,SAAS,CAACZ,EAAE,EAAEa,SAAS,EAAEH,MAAM,CAAC;QAEzE,IAAI,CAACN,SAAS,EAAE;UACdF,QAAQ,CAACS,QAAQ,CAAC;QACpB;MACF,CAAC;MAAA,OAAAL,KAAA,CAAAC,KAAA,OAAAC,SAAA;IAAA;IAEDH,IAAI,CAAC,CAAC;IAEN,OAAO,MAAM;MACXD,SAAS,GAAG,IAAI;IAClB,CAAC;EACH,CAAC,EAAE,CAACJ,EAAE,EAAEG,KAAK,CAAC,CAAC;EAEf,OAAOF,KAAK,gBAAGJ,IAAA,CAACH,KAAK;IAACO,KAAK,EAAEA;EAAM,CAAE,CAAC,GAAG,IAAI;AAC/C;AAEA,eAAeH,iBAAiB","ignoreList":[]}
1
+ {"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":[]}
@@ -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
- id,
28
- hydrateConsole,
29
- layout,
30
- panelManager,
31
- registerComponent,
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 [openFileMap, setOpenFileMap] = useState(new Map());
37
- var [previewFileMap, setPreviewFileMap] = useState(new Map());
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
- id: panelId,
261
- settings,
262
- fileMetadata,
263
- session,
264
- sessionLanguage,
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 [previewId] = [...previewFileMap.values()];
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":"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","ignoreList":[]}