@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.
Files changed (99) 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.js +35 -29
  14. package/dist/GridWidgetPlugin.js.map +1 -1
  15. package/dist/LinkerPlugin.js +3 -5
  16. package/dist/LinkerPlugin.js.map +1 -1
  17. package/dist/MarkdownPlugin.js +18 -17
  18. package/dist/MarkdownPlugin.js.map +1 -1
  19. package/dist/PandasPanelPlugin.js +3 -5
  20. package/dist/PandasPanelPlugin.js.map +1 -1
  21. package/dist/PandasWidgetPlugin.js +3 -7
  22. package/dist/PandasWidgetPlugin.js.map +1 -1
  23. package/dist/TablePluginWrapper.js +8 -10
  24. package/dist/TablePluginWrapper.js.map +1 -1
  25. package/dist/WidgetLoaderPlugin.js +24 -29
  26. package/dist/WidgetLoaderPlugin.js.map +1 -1
  27. package/dist/controls/dropdown-filter/DropdownFilter.js +63 -79
  28. package/dist/controls/dropdown-filter/DropdownFilter.js.map +1 -1
  29. package/dist/controls/input-filter/InputFilter.js +32 -58
  30. package/dist/controls/input-filter/InputFilter.js.map +1 -1
  31. package/dist/controls/markdown/MarkdownContainer.js +4 -5
  32. package/dist/controls/markdown/MarkdownContainer.js.map +1 -1
  33. package/dist/controls/markdown/MarkdownEditor.js +7 -10
  34. package/dist/controls/markdown/MarkdownEditor.js.map +1 -1
  35. package/dist/controls/markdown/MarkdownStartPage.js +8 -12
  36. package/dist/controls/markdown/MarkdownStartPage.js.map +1 -1
  37. package/dist/linker/Linker.js +100 -192
  38. package/dist/linker/Linker.js.map +1 -1
  39. package/dist/linker/LinkerLink.js +23 -31
  40. package/dist/linker/LinkerLink.js.map +1 -1
  41. package/dist/linker/LinkerOverlayContent.js +65 -66
  42. package/dist/linker/LinkerOverlayContent.js.map +1 -1
  43. package/dist/linker/LinkerUtils.js +6 -14
  44. package/dist/linker/LinkerUtils.js.map +1 -1
  45. package/dist/panels/ChartColumnSelectorOverlay.js +4 -6
  46. package/dist/panels/ChartColumnSelectorOverlay.js.map +1 -1
  47. package/dist/panels/ChartFilterOverlay.js +7 -9
  48. package/dist/panels/ChartFilterOverlay.js.map +1 -1
  49. package/dist/panels/ChartPanel.js +136 -220
  50. package/dist/panels/ChartPanel.js.map +1 -1
  51. package/dist/panels/ChartPanelUtils.js +3 -4
  52. package/dist/panels/ChartPanelUtils.js.map +1 -1
  53. package/dist/panels/CommandHistoryPanel.js +33 -52
  54. package/dist/panels/CommandHistoryPanel.js.map +1 -1
  55. package/dist/panels/ConsolePanel.js +68 -130
  56. package/dist/panels/ConsolePanel.js.map +1 -1
  57. package/dist/panels/CorePanel.js +6 -18
  58. package/dist/panels/CorePanel.js.map +1 -1
  59. package/dist/panels/DropdownFilterPanel.js +109 -165
  60. package/dist/panels/DropdownFilterPanel.js.map +1 -1
  61. package/dist/panels/FileExplorerPanel.js +30 -55
  62. package/dist/panels/FileExplorerPanel.js.map +1 -1
  63. package/dist/panels/FilterSetManager.js +81 -141
  64. package/dist/panels/FilterSetManager.js.map +1 -1
  65. package/dist/panels/FilterSetManagerPanel.js +68 -87
  66. package/dist/panels/FilterSetManagerPanel.js.map +1 -1
  67. package/dist/panels/InputFilterPanel.js +45 -68
  68. package/dist/panels/InputFilterPanel.js.map +1 -1
  69. package/dist/panels/IrisGridPanel.js +197 -272
  70. package/dist/panels/IrisGridPanel.js.map +1 -1
  71. package/dist/panels/IrisGridPanelTooltip.js +1 -3
  72. package/dist/panels/IrisGridPanelTooltip.js.map +1 -1
  73. package/dist/panels/LogPanel.js +6 -13
  74. package/dist/panels/LogPanel.js.map +1 -1
  75. package/dist/panels/MarkdownNotebook.js +28 -50
  76. package/dist/panels/MarkdownNotebook.js.map +1 -1
  77. package/dist/panels/MarkdownPanel.js +19 -38
  78. package/dist/panels/MarkdownPanel.js.map +1 -1
  79. package/dist/panels/NotebookPanel.js +157 -292
  80. package/dist/panels/NotebookPanel.js.map +1 -1
  81. package/dist/panels/PandasPanel.js +5 -15
  82. package/dist/panels/PandasPanel.js.map +1 -1
  83. package/dist/panels/PandasReloadButton.js +1 -3
  84. package/dist/panels/PandasReloadButton.js.map +1 -1
  85. package/dist/panels/WidgetPanel.js +42 -51
  86. package/dist/panels/WidgetPanel.js.map +1 -1
  87. package/dist/panels/WidgetPanelTooltip.js +6 -10
  88. package/dist/panels/WidgetPanelTooltip.js.map +1 -1
  89. package/dist/useConfigureRuff.js +8 -9
  90. package/dist/useConfigureRuff.js.map +1 -1
  91. package/dist/useDashboardColumnFilters.js +4 -7
  92. package/dist/useDashboardColumnFilters.js.map +1 -1
  93. package/dist/useGridLinker.js +9 -16
  94. package/dist/useGridLinker.js.map +1 -1
  95. package/dist/useIrisGridModel.js +18 -3
  96. package/dist/useIrisGridModel.js.map +1 -1
  97. package/dist/useTablePlugin.js +27 -14
  98. package/dist/useTablePlugin.js.map +1 -1
  99. package/package.json +24 -24
@@ -1,3 +1,9 @@
1
+ function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
2
+ 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."); }
3
+ 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; } }
4
+ 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; }
5
+ 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; } }
6
+ function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
1
7
  import { useCallback, useEffect, useState } from 'react';
2
8
  import { useDispatch } from 'react-redux';
3
9
  import { nanoid } from 'nanoid';
@@ -10,15 +16,19 @@ import { useFilterChangedListener, useFilterColumnsChangedListener, useFilterTab
10
16
  var log = Log.module('FilterPlugin');
11
17
  export function FilterPlugin(props) {
12
18
  assertIsDashboardPluginProps(props);
13
- var {
14
- id: localDashboardId,
15
- layout,
16
- registerComponent
17
- } = props;
19
+ var localDashboardId = props.id,
20
+ layout = props.layout,
21
+ registerComponent = props.registerComponent;
18
22
  var dispatch = useDispatch();
19
- var [panelColumns] = useState(() => new Map());
20
- var [panelFilters] = useState(() => new Map());
21
- var [panelTables] = useState(() => new Map());
23
+ var _useState = useState(() => new Map()),
24
+ _useState2 = _slicedToArray(_useState, 1),
25
+ panelColumns = _useState2[0];
26
+ var _useState3 = useState(() => new Map()),
27
+ _useState4 = _slicedToArray(_useState3, 1),
28
+ panelFilters = _useState4[0];
29
+ var _useState5 = useState(() => new Map()),
30
+ _useState6 = _slicedToArray(_useState5, 1),
31
+ panelTables = _useState6[0];
22
32
  var sendUpdate = useCallback(() => {
23
33
  var columns = Array.from(panelColumns.values()).flat().sort((a, b) => {
24
34
  var aName = TextUtils.toLower(a.name);
@@ -101,15 +111,20 @@ export function FilterPlugin(props) {
101
111
  sendUpdate();
102
112
  }, [panelColumns, panelFilters, panelTables, sendUpdate]);
103
113
  var handleOpenDropdown = useCallback(_ref => {
104
- var {
105
- title = 'DropdownFilter',
106
- metadata = {},
107
- panelState = null,
108
- id = nanoid(),
109
- focusElement = LayoutUtils.DEFAULT_FOCUS_SELECTOR,
110
- createNewStack = false,
111
- dragEvent = undefined
112
- } = _ref;
114
+ var _ref$title = _ref.title,
115
+ title = _ref$title === void 0 ? 'DropdownFilter' : _ref$title,
116
+ _ref$metadata = _ref.metadata,
117
+ metadata = _ref$metadata === void 0 ? {} : _ref$metadata,
118
+ _ref$panelState = _ref.panelState,
119
+ panelState = _ref$panelState === void 0 ? null : _ref$panelState,
120
+ _ref$id = _ref.id,
121
+ id = _ref$id === void 0 ? nanoid() : _ref$id,
122
+ _ref$focusElement = _ref.focusElement,
123
+ focusElement = _ref$focusElement === void 0 ? LayoutUtils.DEFAULT_FOCUS_SELECTOR : _ref$focusElement,
124
+ _ref$createNewStack = _ref.createNewStack,
125
+ createNewStack = _ref$createNewStack === void 0 ? false : _ref$createNewStack,
126
+ _ref$dragEvent = _ref.dragEvent,
127
+ dragEvent = _ref$dragEvent === void 0 ? undefined : _ref$dragEvent;
113
128
  var config = {
114
129
  type: 'react-component',
115
130
  component: DropdownFilterPanel.COMPONENT,
@@ -122,9 +137,7 @@ export function FilterPlugin(props) {
122
137
  title,
123
138
  id
124
139
  };
125
- var {
126
- root
127
- } = layout;
140
+ var root = layout.root;
128
141
  LayoutUtils.openComponent({
129
142
  root,
130
143
  config,
@@ -134,15 +147,20 @@ export function FilterPlugin(props) {
134
147
  });
135
148
  }, [layout, localDashboardId]);
136
149
  var handleOpenInput = useCallback(_ref2 => {
137
- var {
138
- title = 'InputFilter',
139
- metadata = {},
140
- panelState = null,
141
- id = nanoid(),
142
- focusElement = LayoutUtils.DEFAULT_FOCUS_SELECTOR,
143
- createNewStack = false,
144
- dragEvent = undefined
145
- } = _ref2;
150
+ var _ref2$title = _ref2.title,
151
+ title = _ref2$title === void 0 ? 'InputFilter' : _ref2$title,
152
+ _ref2$metadata = _ref2.metadata,
153
+ metadata = _ref2$metadata === void 0 ? {} : _ref2$metadata,
154
+ _ref2$panelState = _ref2.panelState,
155
+ panelState = _ref2$panelState === void 0 ? null : _ref2$panelState,
156
+ _ref2$id = _ref2.id,
157
+ id = _ref2$id === void 0 ? nanoid() : _ref2$id,
158
+ _ref2$focusElement = _ref2.focusElement,
159
+ focusElement = _ref2$focusElement === void 0 ? LayoutUtils.DEFAULT_FOCUS_SELECTOR : _ref2$focusElement,
160
+ _ref2$createNewStack = _ref2.createNewStack,
161
+ createNewStack = _ref2$createNewStack === void 0 ? false : _ref2$createNewStack,
162
+ _ref2$dragEvent = _ref2.dragEvent,
163
+ dragEvent = _ref2$dragEvent === void 0 ? undefined : _ref2$dragEvent;
146
164
  var config = {
147
165
  type: 'react-component',
148
166
  component: InputFilterPanel.COMPONENT,
@@ -155,9 +173,7 @@ export function FilterPlugin(props) {
155
173
  title,
156
174
  id
157
175
  };
158
- var {
159
- root
160
- } = layout;
176
+ var root = layout.root;
161
177
  LayoutUtils.openComponent({
162
178
  root,
163
179
  config,
@@ -167,15 +183,20 @@ export function FilterPlugin(props) {
167
183
  });
168
184
  }, [layout, localDashboardId]);
169
185
  var handleOpenFilterSetManager = useCallback(_ref3 => {
170
- var {
171
- title = 'FilterSets',
172
- metadata = {},
173
- panelState = null,
174
- id = nanoid(),
175
- focusElement = LayoutUtils.DEFAULT_FOCUS_SELECTOR,
176
- createNewStack = false,
177
- dragEvent = undefined
178
- } = _ref3;
186
+ var _ref3$title = _ref3.title,
187
+ title = _ref3$title === void 0 ? 'FilterSets' : _ref3$title,
188
+ _ref3$metadata = _ref3.metadata,
189
+ metadata = _ref3$metadata === void 0 ? {} : _ref3$metadata,
190
+ _ref3$panelState = _ref3.panelState,
191
+ panelState = _ref3$panelState === void 0 ? null : _ref3$panelState,
192
+ _ref3$id = _ref3.id,
193
+ id = _ref3$id === void 0 ? nanoid() : _ref3$id,
194
+ _ref3$focusElement = _ref3.focusElement,
195
+ focusElement = _ref3$focusElement === void 0 ? LayoutUtils.DEFAULT_FOCUS_SELECTOR : _ref3$focusElement,
196
+ _ref3$createNewStack = _ref3.createNewStack,
197
+ createNewStack = _ref3$createNewStack === void 0 ? false : _ref3$createNewStack,
198
+ _ref3$dragEvent = _ref3.dragEvent,
199
+ dragEvent = _ref3$dragEvent === void 0 ? undefined : _ref3$dragEvent;
179
200
  var config = {
180
201
  type: 'react-component',
181
202
  component: FilterSetManagerPanel.COMPONENT,
@@ -188,9 +209,7 @@ export function FilterPlugin(props) {
188
209
  title,
189
210
  id
190
211
  };
191
- var {
192
- root
193
- } = layout;
212
+ var root = layout.root;
194
213
  LayoutUtils.openComponent({
195
214
  root,
196
215
  config,
@@ -1 +1 @@
1
- {"version":3,"file":"FilterPlugin.js","names":["useCallback","useEffect","useState","useDispatch","nanoid","assertIsDashboardPluginProps","LayoutUtils","PanelEvent","updateDashboardData","useListener","Log","TextUtils","InputFilterEvent","DropdownFilterPanel","FilterSetManagerPanel","InputFilterPanel","useFilterChangedListener","useFilterColumnsChangedListener","useFilterTableChangedListener","log","module","FilterPlugin","props","id","localDashboardId","layout","registerComponent","dispatch","panelColumns","Map","panelFilters","panelTables","sendUpdate","columns","Array","from","values","flat","sort","a","b","aName","toLower","name","bName","aType","type","bType","reduce","array","column","length","push","filters","timestamp","tableMap","debug","handleColumnsChanged","sourceId","debug2","delete","set","concat","handleFiltersChanged","handleTableChanged","table","handlePanelUnmount","panel","panelId","getIdFromPanel","handleOpenDropdown","_ref","title","metadata","panelState","focusElement","DEFAULT_FOCUS_SELECTOR","createNewStack","dragEvent","undefined","config","component","COMPONENT","root","openComponent","handleOpenInput","_ref2","handleOpenFilterSetManager","_ref3","registerComponentsAndReturnCleanup","cleanups","forEach","cleanup","eventHub","OPEN_DROPDOWN","OPEN_INPUT","OPEN_FILTER_SET_MANAGER","UNMOUNT"],"sources":["../src/FilterPlugin.tsx"],"sourcesContent":["import { useCallback, useEffect, useState } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { nanoid } from 'nanoid';\nimport {\n assertIsDashboardPluginProps,\n type DashboardPluginComponentProps,\n LayoutUtils,\n type PanelComponent,\n PanelEvent,\n updateDashboardData,\n useListener,\n} from '@deephaven/dashboard';\nimport Log from '@deephaven/log';\nimport { TextUtils } from '@deephaven/utils';\nimport { type dh } from '@deephaven/jsapi-types';\nimport { InputFilterEvent } from './events';\nimport {\n DropdownFilterPanel,\n FilterSetManagerPanel,\n InputFilterPanel,\n} from './panels';\nimport {\n type FilterColumn,\n type FilterChangeEvent,\n type FilterColumnSourceId,\n useFilterChangedListener,\n useFilterColumnsChangedListener,\n useFilterTableChangedListener,\n} from './FilterEvents';\n\nconst log = Log.module('FilterPlugin');\n\nexport type FilterPluginProps = Partial<DashboardPluginComponentProps>;\n\nexport function FilterPlugin(props: FilterPluginProps): JSX.Element | null {\n assertIsDashboardPluginProps(props);\n const { id: localDashboardId, layout, registerComponent } = props;\n const dispatch = useDispatch();\n const [panelColumns] = useState(\n () => new Map<FilterColumnSourceId, FilterColumn[]>()\n );\n const [panelFilters] = useState(\n () => new Map<FilterColumnSourceId, FilterChangeEvent[]>()\n );\n const [panelTables] = useState(\n () => new Map<FilterColumnSourceId, dh.Table>()\n );\n\n const sendUpdate = useCallback(() => {\n const columns = Array.from(panelColumns.values())\n .flat()\n .sort((a, b) => {\n const aName = TextUtils.toLower(a.name);\n const bName = TextUtils.toLower(b.name);\n if (aName !== bName) {\n return aName > bName ? 1 : -1;\n }\n\n const aType = TextUtils.toLower(a.type);\n const bType = TextUtils.toLower(b.type);\n if (aType !== bType) {\n return aType > bType ? 1 : -1;\n }\n\n return 0;\n })\n .reduce((array, column) => {\n if (\n array.length === 0 ||\n TextUtils.toLower(array[array.length - 1].name) !==\n TextUtils.toLower(column.name) ||\n TextUtils.toLower(array[array.length - 1].type) !==\n TextUtils.toLower(column.type)\n ) {\n array.push(column);\n }\n\n return array;\n }, [] as FilterColumn[]);\n\n const filters = Array.from(panelFilters.values())\n .flat()\n .sort((a, b) => a.timestamp - b.timestamp);\n const tableMap = new Map(panelTables);\n\n log.debug('sendUpdate', { columns, filters, tableMap });\n dispatch(\n updateDashboardData(localDashboardId, { columns, filters, tableMap })\n );\n }, [dispatch, localDashboardId, panelColumns, panelFilters, panelTables]);\n\n /**\n * Handler for the COLUMNS_CHANGED event.\n * @param sourceId The id of the component that's emitting the filter change\n * @param columns The columns in this panel. Null to clear the columns.\n */\n const handleColumnsChanged = useCallback(\n (\n sourceId: FilterColumnSourceId,\n columns: readonly FilterColumn[] | null\n ) => {\n log.debug2('handleColumnsChanged', sourceId, columns);\n if (columns == null) {\n panelColumns.delete(sourceId);\n } else {\n panelColumns.set(sourceId, ([] as FilterColumn[]).concat(columns));\n }\n sendUpdate();\n },\n [panelColumns, sendUpdate]\n );\n\n /**\n * Handler for the FILTERS_CHANGED event.\n * @param sourceId The id of the component that's emitting the filter change\n * @param filters The input filters set by the panel\n */\n const handleFiltersChanged = useCallback(\n (\n sourceId: FilterColumnSourceId,\n filters: FilterChangeEvent | FilterChangeEvent[] | null\n ) => {\n log.debug2('handleFiltersChanged', sourceId, filters);\n if (filters == null) {\n panelFilters.delete(sourceId);\n } else {\n panelFilters.set(\n sourceId,\n ([] as FilterChangeEvent[]).concat(filters ?? [])\n );\n }\n sendUpdate();\n },\n [panelFilters, sendUpdate]\n );\n\n const handleTableChanged = useCallback(\n (sourceId: FilterColumnSourceId, table: dh.Table | null) => {\n log.debug2('handleTableChanged', sourceId, table);\n if (table == null) {\n panelTables.delete(sourceId);\n } else {\n panelTables.set(sourceId, table);\n }\n sendUpdate();\n },\n [panelTables, sendUpdate]\n );\n\n const handlePanelUnmount = useCallback(\n (panel: PanelComponent) => {\n log.debug2('handlePanelUnmount', panel);\n const panelId = LayoutUtils.getIdFromPanel(panel);\n if (panelId != null) {\n panelColumns.delete(panelId);\n panelTables.delete(panelId);\n panelFilters.delete(panelId);\n }\n sendUpdate();\n },\n [panelColumns, panelFilters, panelTables, sendUpdate]\n );\n\n const handleOpenDropdown = useCallback(\n ({\n title = 'DropdownFilter',\n metadata = {},\n panelState = null,\n id = nanoid(),\n focusElement = LayoutUtils.DEFAULT_FOCUS_SELECTOR,\n createNewStack = false,\n dragEvent = undefined,\n }) => {\n const config = {\n type: 'react-component' as const,\n component: DropdownFilterPanel.COMPONENT,\n props: { id, metadata, panelState, localDashboardId },\n title,\n id,\n };\n\n const { root } = layout;\n LayoutUtils.openComponent({\n root,\n config,\n focusElement,\n createNewStack,\n dragEvent,\n });\n },\n [layout, localDashboardId]\n );\n\n const handleOpenInput = useCallback(\n ({\n title = 'InputFilter',\n metadata = {},\n panelState = null,\n id = nanoid(),\n focusElement = LayoutUtils.DEFAULT_FOCUS_SELECTOR,\n createNewStack = false,\n dragEvent = undefined,\n }) => {\n const config = {\n type: 'react-component' as const,\n component: InputFilterPanel.COMPONENT,\n props: { id, metadata, panelState, localDashboardId },\n title,\n id,\n };\n\n const { root } = layout;\n LayoutUtils.openComponent({\n root,\n config,\n focusElement,\n createNewStack,\n dragEvent,\n });\n },\n [layout, localDashboardId]\n );\n\n const handleOpenFilterSetManager = useCallback(\n ({\n title = 'FilterSets',\n metadata = {},\n panelState = null,\n id = nanoid(),\n focusElement = LayoutUtils.DEFAULT_FOCUS_SELECTOR,\n createNewStack = false,\n dragEvent = undefined,\n }) => {\n const config = {\n type: 'react-component' as const,\n component: FilterSetManagerPanel.COMPONENT,\n props: { id, metadata, panelState, localDashboardId },\n title,\n id,\n };\n\n const { root } = layout;\n LayoutUtils.openComponent({\n root,\n config,\n focusElement,\n createNewStack,\n dragEvent,\n });\n },\n [layout, localDashboardId]\n );\n\n useEffect(\n function registerComponentsAndReturnCleanup() {\n const cleanups = [\n registerComponent(DropdownFilterPanel.COMPONENT, DropdownFilterPanel),\n registerComponent(InputFilterPanel.COMPONENT, InputFilterPanel),\n registerComponent(\n FilterSetManagerPanel.COMPONENT,\n FilterSetManagerPanel\n ),\n ];\n\n return () => {\n cleanups.forEach(cleanup => cleanup());\n };\n },\n [registerComponent]\n );\n\n useFilterColumnsChangedListener(layout.eventHub, handleColumnsChanged);\n useFilterChangedListener(layout.eventHub, handleFiltersChanged);\n useFilterTableChangedListener(layout.eventHub, handleTableChanged);\n useListener(\n layout.eventHub,\n InputFilterEvent.OPEN_DROPDOWN,\n handleOpenDropdown\n );\n useListener(layout.eventHub, InputFilterEvent.OPEN_INPUT, handleOpenInput);\n useListener(\n layout.eventHub,\n InputFilterEvent.OPEN_FILTER_SET_MANAGER,\n handleOpenFilterSetManager\n );\n useListener(layout.eventHub, PanelEvent.UNMOUNT, handlePanelUnmount);\n\n return null;\n}\n\nexport default FilterPlugin;\n"],"mappings":"AAAA,SAASA,WAAW,EAAEC,SAAS,EAAEC,QAAQ,QAAQ,OAAO;AACxD,SAASC,WAAW,QAAQ,aAAa;AACzC,SAASC,MAAM,QAAQ,QAAQ;AAC/B,SACEC,4BAA4B,EAE5BC,WAAW,EAEXC,UAAU,EACVC,mBAAmB,EACnBC,WAAW,QACN,sBAAsB;AAC7B,OAAOC,GAAG,MAAM,gBAAgB;AAChC,SAASC,SAAS,QAAQ,kBAAkB;AAAC,SAEpCC,gBAAgB;AAAA,SAEvBC,mBAAmB,EACnBC,qBAAqB,EACrBC,gBAAgB;AAAA,SAMhBC,wBAAwB,EACxBC,+BAA+B,EAC/BC,6BAA6B;AAG/B,IAAMC,GAAG,GAAGT,GAAG,CAACU,MAAM,CAAC,cAAc,CAAC;AAItC,OAAO,SAASC,YAAYA,CAACC,KAAwB,EAAsB;EACzEjB,4BAA4B,CAACiB,KAAK,CAAC;EACnC,IAAM;IAAEC,EAAE,EAAEC,gBAAgB;IAAEC,MAAM;IAAEC;EAAkB,CAAC,GAAGJ,KAAK;EACjE,IAAMK,QAAQ,GAAGxB,WAAW,CAAC,CAAC;EAC9B,IAAM,CAACyB,YAAY,CAAC,GAAG1B,QAAQ,CAC7B,MAAM,IAAI2B,GAAG,CAAuC,CACtD,CAAC;EACD,IAAM,CAACC,YAAY,CAAC,GAAG5B,QAAQ,CAC7B,MAAM,IAAI2B,GAAG,CAA4C,CAC3D,CAAC;EACD,IAAM,CAACE,WAAW,CAAC,GAAG7B,QAAQ,CAC5B,MAAM,IAAI2B,GAAG,CAAiC,CAChD,CAAC;EAED,IAAMG,UAAU,GAAGhC,WAAW,CAAC,MAAM;IACnC,IAAMiC,OAAO,GAAGC,KAAK,CAACC,IAAI,CAACP,YAAY,CAACQ,MAAM,CAAC,CAAC,CAAC,CAC9CC,IAAI,CAAC,CAAC,CACNC,IAAI,CAAC,CAACC,CAAC,EAAEC,CAAC,KAAK;MACd,IAAMC,KAAK,GAAG9B,SAAS,CAAC+B,OAAO,CAACH,CAAC,CAACI,IAAI,CAAC;MACvC,IAAMC,KAAK,GAAGjC,SAAS,CAAC+B,OAAO,CAACF,CAAC,CAACG,IAAI,CAAC;MACvC,IAAIF,KAAK,KAAKG,KAAK,EAAE;QACnB,OAAOH,KAAK,GAAGG,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC;MAC/B;MAEA,IAAMC,KAAK,GAAGlC,SAAS,CAAC+B,OAAO,CAACH,CAAC,CAACO,IAAI,CAAC;MACvC,IAAMC,KAAK,GAAGpC,SAAS,CAAC+B,OAAO,CAACF,CAAC,CAACM,IAAI,CAAC;MACvC,IAAID,KAAK,KAAKE,KAAK,EAAE;QACnB,OAAOF,KAAK,GAAGE,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC;MAC/B;MAEA,OAAO,CAAC;IACV,CAAC,CAAC,CACDC,MAAM,CAAC,CAACC,KAAK,EAAEC,MAAM,KAAK;MACzB,IACED,KAAK,CAACE,MAAM,KAAK,CAAC,IAClBxC,SAAS,CAAC+B,OAAO,CAACO,KAAK,CAACA,KAAK,CAACE,MAAM,GAAG,CAAC,CAAC,CAACR,IAAI,CAAC,KAC7ChC,SAAS,CAAC+B,OAAO,CAACQ,MAAM,CAACP,IAAI,CAAC,IAChChC,SAAS,CAAC+B,OAAO,CAACO,KAAK,CAACA,KAAK,CAACE,MAAM,GAAG,CAAC,CAAC,CAACL,IAAI,CAAC,KAC7CnC,SAAS,CAAC+B,OAAO,CAACQ,MAAM,CAACJ,IAAI,CAAC,EAChC;QACAG,KAAK,CAACG,IAAI,CAACF,MAAM,CAAC;MACpB;MAEA,OAAOD,KAAK;IACd,CAAC,EAAE,EAAoB,CAAC;IAE1B,IAAMI,OAAO,GAAGnB,KAAK,CAACC,IAAI,CAACL,YAAY,CAACM,MAAM,CAAC,CAAC,CAAC,CAC9CC,IAAI,CAAC,CAAC,CACNC,IAAI,CAAC,CAACC,CAAC,EAAEC,CAAC,KAAKD,CAAC,CAACe,SAAS,GAAGd,CAAC,CAACc,SAAS,CAAC;IAC5C,IAAMC,QAAQ,GAAG,IAAI1B,GAAG,CAACE,WAAW,CAAC;IAErCZ,GAAG,CAACqC,KAAK,CAAC,YAAY,EAAE;MAAEvB,OAAO;MAAEoB,OAAO;MAAEE;IAAS,CAAC,CAAC;IACvD5B,QAAQ,CACNnB,mBAAmB,CAACgB,gBAAgB,EAAE;MAAES,OAAO;MAAEoB,OAAO;MAAEE;IAAS,CAAC,CACtE,CAAC;EACH,CAAC,EAAE,CAAC5B,QAAQ,EAAEH,gBAAgB,EAAEI,YAAY,EAAEE,YAAY,EAAEC,WAAW,CAAC,CAAC;;EAEzE;AACF;AACA;AACA;AACA;EACE,IAAM0B,oBAAoB,GAAGzD,WAAW,CACtC,CACE0D,QAA8B,EAC9BzB,OAAuC,KACpC;IACHd,GAAG,CAACwC,MAAM,CAAC,sBAAsB,EAAED,QAAQ,EAAEzB,OAAO,CAAC;IACrD,IAAIA,OAAO,IAAI,IAAI,EAAE;MACnBL,YAAY,CAACgC,MAAM,CAACF,QAAQ,CAAC;IAC/B,CAAC,MAAM;MACL9B,YAAY,CAACiC,GAAG,CAACH,QAAQ,EAAG,EAAE,CAAoBI,MAAM,CAAC7B,OAAO,CAAC,CAAC;IACpE;IACAD,UAAU,CAAC,CAAC;EACd,CAAC,EACD,CAACJ,YAAY,EAAEI,UAAU,CAC3B,CAAC;;EAED;AACF;AACA;AACA;AACA;EACE,IAAM+B,oBAAoB,GAAG/D,WAAW,CACtC,CACE0D,QAA8B,EAC9BL,OAAuD,KACpD;IACHlC,GAAG,CAACwC,MAAM,CAAC,sBAAsB,EAAED,QAAQ,EAAEL,OAAO,CAAC;IACrD,IAAIA,OAAO,IAAI,IAAI,EAAE;MACnBvB,YAAY,CAAC8B,MAAM,CAACF,QAAQ,CAAC;IAC/B,CAAC,MAAM;MACL5B,YAAY,CAAC+B,GAAG,CACdH,QAAQ,EACP,EAAE,CAAyBI,MAAM,CAACT,OAAO,aAAPA,OAAO,cAAPA,OAAO,GAAI,EAAE,CAClD,CAAC;IACH;IACArB,UAAU,CAAC,CAAC;EACd,CAAC,EACD,CAACF,YAAY,EAAEE,UAAU,CAC3B,CAAC;EAED,IAAMgC,kBAAkB,GAAGhE,WAAW,CACpC,CAAC0D,QAA8B,EAAEO,KAAsB,KAAK;IAC1D9C,GAAG,CAACwC,MAAM,CAAC,oBAAoB,EAAED,QAAQ,EAAEO,KAAK,CAAC;IACjD,IAAIA,KAAK,IAAI,IAAI,EAAE;MACjBlC,WAAW,CAAC6B,MAAM,CAACF,QAAQ,CAAC;IAC9B,CAAC,MAAM;MACL3B,WAAW,CAAC8B,GAAG,CAACH,QAAQ,EAAEO,KAAK,CAAC;IAClC;IACAjC,UAAU,CAAC,CAAC;EACd,CAAC,EACD,CAACD,WAAW,EAAEC,UAAU,CAC1B,CAAC;EAED,IAAMkC,kBAAkB,GAAGlE,WAAW,CACnCmE,KAAqB,IAAK;IACzBhD,GAAG,CAACwC,MAAM,CAAC,oBAAoB,EAAEQ,KAAK,CAAC;IACvC,IAAMC,OAAO,GAAG9D,WAAW,CAAC+D,cAAc,CAACF,KAAK,CAAC;IACjD,IAAIC,OAAO,IAAI,IAAI,EAAE;MACnBxC,YAAY,CAACgC,MAAM,CAACQ,OAAO,CAAC;MAC5BrC,WAAW,CAAC6B,MAAM,CAACQ,OAAO,CAAC;MAC3BtC,YAAY,CAAC8B,MAAM,CAACQ,OAAO,CAAC;IAC9B;IACApC,UAAU,CAAC,CAAC;EACd,CAAC,EACD,CAACJ,YAAY,EAAEE,YAAY,EAAEC,WAAW,EAAEC,UAAU,CACtD,CAAC;EAED,IAAMsC,kBAAkB,GAAGtE,WAAW,CACpCuE,IAAA,IAQM;IAAA,IARL;MACCC,KAAK,GAAG,gBAAgB;MACxBC,QAAQ,GAAG,CAAC,CAAC;MACbC,UAAU,GAAG,IAAI;MACjBnD,EAAE,GAAGnB,MAAM,CAAC,CAAC;MACbuE,YAAY,GAAGrE,WAAW,CAACsE,sBAAsB;MACjDC,cAAc,GAAG,KAAK;MACtBC,SAAS,GAAGC;IACd,CAAC,GAAAR,IAAA;IACC,IAAMS,MAAM,GAAG;MACblC,IAAI,EAAE,iBAA0B;MAChCmC,SAAS,EAAEpE,mBAAmB,CAACqE,SAAS;MACxC5D,KAAK,EAAE;QAAEC,EAAE;QAAEkD,QAAQ;QAAEC,UAAU;QAAElD;MAAiB,CAAC;MACrDgD,KAAK;MACLjD;IACF,CAAC;IAED,IAAM;MAAE4D;IAAK,CAAC,GAAG1D,MAAM;IACvBnB,WAAW,CAAC8E,aAAa,CAAC;MACxBD,IAAI;MACJH,MAAM;MACNL,YAAY;MACZE,cAAc;MACdC;IACF,CAAC,CAAC;EACJ,CAAC,EACD,CAACrD,MAAM,EAAED,gBAAgB,CAC3B,CAAC;EAED,IAAM6D,eAAe,GAAGrF,WAAW,CACjCsF,KAAA,IAQM;IAAA,IARL;MACCd,KAAK,GAAG,aAAa;MACrBC,QAAQ,GAAG,CAAC,CAAC;MACbC,UAAU,GAAG,IAAI;MACjBnD,EAAE,GAAGnB,MAAM,CAAC,CAAC;MACbuE,YAAY,GAAGrE,WAAW,CAACsE,sBAAsB;MACjDC,cAAc,GAAG,KAAK;MACtBC,SAAS,GAAGC;IACd,CAAC,GAAAO,KAAA;IACC,IAAMN,MAAM,GAAG;MACblC,IAAI,EAAE,iBAA0B;MAChCmC,SAAS,EAAElE,gBAAgB,CAACmE,SAAS;MACrC5D,KAAK,EAAE;QAAEC,EAAE;QAAEkD,QAAQ;QAAEC,UAAU;QAAElD;MAAiB,CAAC;MACrDgD,KAAK;MACLjD;IACF,CAAC;IAED,IAAM;MAAE4D;IAAK,CAAC,GAAG1D,MAAM;IACvBnB,WAAW,CAAC8E,aAAa,CAAC;MACxBD,IAAI;MACJH,MAAM;MACNL,YAAY;MACZE,cAAc;MACdC;IACF,CAAC,CAAC;EACJ,CAAC,EACD,CAACrD,MAAM,EAAED,gBAAgB,CAC3B,CAAC;EAED,IAAM+D,0BAA0B,GAAGvF,WAAW,CAC5CwF,KAAA,IAQM;IAAA,IARL;MACChB,KAAK,GAAG,YAAY;MACpBC,QAAQ,GAAG,CAAC,CAAC;MACbC,UAAU,GAAG,IAAI;MACjBnD,EAAE,GAAGnB,MAAM,CAAC,CAAC;MACbuE,YAAY,GAAGrE,WAAW,CAACsE,sBAAsB;MACjDC,cAAc,GAAG,KAAK;MACtBC,SAAS,GAAGC;IACd,CAAC,GAAAS,KAAA;IACC,IAAMR,MAAM,GAAG;MACblC,IAAI,EAAE,iBAA0B;MAChCmC,SAAS,EAAEnE,qBAAqB,CAACoE,SAAS;MAC1C5D,KAAK,EAAE;QAAEC,EAAE;QAAEkD,QAAQ;QAAEC,UAAU;QAAElD;MAAiB,CAAC;MACrDgD,KAAK;MACLjD;IACF,CAAC;IAED,IAAM;MAAE4D;IAAK,CAAC,GAAG1D,MAAM;IACvBnB,WAAW,CAAC8E,aAAa,CAAC;MACxBD,IAAI;MACJH,MAAM;MACNL,YAAY;MACZE,cAAc;MACdC;IACF,CAAC,CAAC;EACJ,CAAC,EACD,CAACrD,MAAM,EAAED,gBAAgB,CAC3B,CAAC;EAEDvB,SAAS,CACP,SAASwF,kCAAkCA,CAAA,EAAG;IAC5C,IAAMC,QAAQ,GAAG,CACfhE,iBAAiB,CAACb,mBAAmB,CAACqE,SAAS,EAAErE,mBAAmB,CAAC,EACrEa,iBAAiB,CAACX,gBAAgB,CAACmE,SAAS,EAAEnE,gBAAgB,CAAC,EAC/DW,iBAAiB,CACfZ,qBAAqB,CAACoE,SAAS,EAC/BpE,qBACF,CAAC,CACF;IAED,OAAO,MAAM;MACX4E,QAAQ,CAACC,OAAO,CAACC,OAAO,IAAIA,OAAO,CAAC,CAAC,CAAC;IACxC,CAAC;EACH,CAAC,EACD,CAAClE,iBAAiB,CACpB,CAAC;EAEDT,+BAA+B,CAACQ,MAAM,CAACoE,QAAQ,EAAEpC,oBAAoB,CAAC;EACtEzC,wBAAwB,CAACS,MAAM,CAACoE,QAAQ,EAAE9B,oBAAoB,CAAC;EAC/D7C,6BAA6B,CAACO,MAAM,CAACoE,QAAQ,EAAE7B,kBAAkB,CAAC;EAClEvD,WAAW,CACTgB,MAAM,CAACoE,QAAQ,EACfjF,gBAAgB,CAACkF,aAAa,EAC9BxB,kBACF,CAAC;EACD7D,WAAW,CAACgB,MAAM,CAACoE,QAAQ,EAAEjF,gBAAgB,CAACmF,UAAU,EAAEV,eAAe,CAAC;EAC1E5E,WAAW,CACTgB,MAAM,CAACoE,QAAQ,EACfjF,gBAAgB,CAACoF,uBAAuB,EACxCT,0BACF,CAAC;EACD9E,WAAW,CAACgB,MAAM,CAACoE,QAAQ,EAAEtF,UAAU,CAAC0F,OAAO,EAAE/B,kBAAkB,CAAC;EAEpE,OAAO,IAAI;AACb;AAEA,eAAe7C,YAAY","ignoreList":[]}
1
+ {"version":3,"file":"FilterPlugin.js","names":["useCallback","useEffect","useState","useDispatch","nanoid","assertIsDashboardPluginProps","LayoutUtils","PanelEvent","updateDashboardData","useListener","Log","TextUtils","InputFilterEvent","DropdownFilterPanel","FilterSetManagerPanel","InputFilterPanel","useFilterChangedListener","useFilterColumnsChangedListener","useFilterTableChangedListener","log","module","FilterPlugin","props","localDashboardId","id","layout","registerComponent","dispatch","_useState","Map","_useState2","_slicedToArray","panelColumns","_useState3","_useState4","panelFilters","_useState5","_useState6","panelTables","sendUpdate","columns","Array","from","values","flat","sort","a","b","aName","toLower","name","bName","aType","type","bType","reduce","array","column","length","push","filters","timestamp","tableMap","debug","handleColumnsChanged","sourceId","debug2","delete","set","concat","handleFiltersChanged","handleTableChanged","table","handlePanelUnmount","panel","panelId","getIdFromPanel","handleOpenDropdown","_ref","_ref$title","title","_ref$metadata","metadata","_ref$panelState","panelState","_ref$id","_ref$focusElement","focusElement","DEFAULT_FOCUS_SELECTOR","_ref$createNewStack","createNewStack","_ref$dragEvent","dragEvent","undefined","config","component","COMPONENT","root","openComponent","handleOpenInput","_ref2","_ref2$title","_ref2$metadata","_ref2$panelState","_ref2$id","_ref2$focusElement","_ref2$createNewStack","_ref2$dragEvent","handleOpenFilterSetManager","_ref3","_ref3$title","_ref3$metadata","_ref3$panelState","_ref3$id","_ref3$focusElement","_ref3$createNewStack","_ref3$dragEvent","registerComponentsAndReturnCleanup","cleanups","forEach","cleanup","eventHub","OPEN_DROPDOWN","OPEN_INPUT","OPEN_FILTER_SET_MANAGER","UNMOUNT"],"sources":["../src/FilterPlugin.tsx"],"sourcesContent":["import { useCallback, useEffect, useState } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { nanoid } from 'nanoid';\nimport {\n assertIsDashboardPluginProps,\n type DashboardPluginComponentProps,\n LayoutUtils,\n type PanelComponent,\n PanelEvent,\n updateDashboardData,\n useListener,\n} from '@deephaven/dashboard';\nimport Log from '@deephaven/log';\nimport { TextUtils } from '@deephaven/utils';\nimport { type dh } from '@deephaven/jsapi-types';\nimport { InputFilterEvent } from './events';\nimport {\n DropdownFilterPanel,\n FilterSetManagerPanel,\n InputFilterPanel,\n} from './panels';\nimport {\n type FilterColumn,\n type FilterChangeEvent,\n type FilterColumnSourceId,\n useFilterChangedListener,\n useFilterColumnsChangedListener,\n useFilterTableChangedListener,\n} from './FilterEvents';\n\nconst log = Log.module('FilterPlugin');\n\nexport type FilterPluginProps = Partial<DashboardPluginComponentProps>;\n\nexport function FilterPlugin(props: FilterPluginProps): JSX.Element | null {\n assertIsDashboardPluginProps(props);\n const { id: localDashboardId, layout, registerComponent } = props;\n const dispatch = useDispatch();\n const [panelColumns] = useState(\n () => new Map<FilterColumnSourceId, FilterColumn[]>()\n );\n const [panelFilters] = useState(\n () => new Map<FilterColumnSourceId, FilterChangeEvent[]>()\n );\n const [panelTables] = useState(\n () => new Map<FilterColumnSourceId, dh.Table>()\n );\n\n const sendUpdate = useCallback(() => {\n const columns = Array.from(panelColumns.values())\n .flat()\n .sort((a, b) => {\n const aName = TextUtils.toLower(a.name);\n const bName = TextUtils.toLower(b.name);\n if (aName !== bName) {\n return aName > bName ? 1 : -1;\n }\n\n const aType = TextUtils.toLower(a.type);\n const bType = TextUtils.toLower(b.type);\n if (aType !== bType) {\n return aType > bType ? 1 : -1;\n }\n\n return 0;\n })\n .reduce((array, column) => {\n if (\n array.length === 0 ||\n TextUtils.toLower(array[array.length - 1].name) !==\n TextUtils.toLower(column.name) ||\n TextUtils.toLower(array[array.length - 1].type) !==\n TextUtils.toLower(column.type)\n ) {\n array.push(column);\n }\n\n return array;\n }, [] as FilterColumn[]);\n\n const filters = Array.from(panelFilters.values())\n .flat()\n .sort((a, b) => a.timestamp - b.timestamp);\n const tableMap = new Map(panelTables);\n\n log.debug('sendUpdate', { columns, filters, tableMap });\n dispatch(\n updateDashboardData(localDashboardId, { columns, filters, tableMap })\n );\n }, [dispatch, localDashboardId, panelColumns, panelFilters, panelTables]);\n\n /**\n * Handler for the COLUMNS_CHANGED event.\n * @param sourceId The id of the component that's emitting the filter change\n * @param columns The columns in this panel. Null to clear the columns.\n */\n const handleColumnsChanged = useCallback(\n (\n sourceId: FilterColumnSourceId,\n columns: readonly FilterColumn[] | null\n ) => {\n log.debug2('handleColumnsChanged', sourceId, columns);\n if (columns == null) {\n panelColumns.delete(sourceId);\n } else {\n panelColumns.set(sourceId, ([] as FilterColumn[]).concat(columns));\n }\n sendUpdate();\n },\n [panelColumns, sendUpdate]\n );\n\n /**\n * Handler for the FILTERS_CHANGED event.\n * @param sourceId The id of the component that's emitting the filter change\n * @param filters The input filters set by the panel\n */\n const handleFiltersChanged = useCallback(\n (\n sourceId: FilterColumnSourceId,\n filters: FilterChangeEvent | FilterChangeEvent[] | null\n ) => {\n log.debug2('handleFiltersChanged', sourceId, filters);\n if (filters == null) {\n panelFilters.delete(sourceId);\n } else {\n panelFilters.set(\n sourceId,\n ([] as FilterChangeEvent[]).concat(filters ?? [])\n );\n }\n sendUpdate();\n },\n [panelFilters, sendUpdate]\n );\n\n const handleTableChanged = useCallback(\n (sourceId: FilterColumnSourceId, table: dh.Table | null) => {\n log.debug2('handleTableChanged', sourceId, table);\n if (table == null) {\n panelTables.delete(sourceId);\n } else {\n panelTables.set(sourceId, table);\n }\n sendUpdate();\n },\n [panelTables, sendUpdate]\n );\n\n const handlePanelUnmount = useCallback(\n (panel: PanelComponent) => {\n log.debug2('handlePanelUnmount', panel);\n const panelId = LayoutUtils.getIdFromPanel(panel);\n if (panelId != null) {\n panelColumns.delete(panelId);\n panelTables.delete(panelId);\n panelFilters.delete(panelId);\n }\n sendUpdate();\n },\n [panelColumns, panelFilters, panelTables, sendUpdate]\n );\n\n const handleOpenDropdown = useCallback(\n ({\n title = 'DropdownFilter',\n metadata = {},\n panelState = null,\n id = nanoid(),\n focusElement = LayoutUtils.DEFAULT_FOCUS_SELECTOR,\n createNewStack = false,\n dragEvent = undefined,\n }) => {\n const config = {\n type: 'react-component' as const,\n component: DropdownFilterPanel.COMPONENT,\n props: { id, metadata, panelState, localDashboardId },\n title,\n id,\n };\n\n const { root } = layout;\n LayoutUtils.openComponent({\n root,\n config,\n focusElement,\n createNewStack,\n dragEvent,\n });\n },\n [layout, localDashboardId]\n );\n\n const handleOpenInput = useCallback(\n ({\n title = 'InputFilter',\n metadata = {},\n panelState = null,\n id = nanoid(),\n focusElement = LayoutUtils.DEFAULT_FOCUS_SELECTOR,\n createNewStack = false,\n dragEvent = undefined,\n }) => {\n const config = {\n type: 'react-component' as const,\n component: InputFilterPanel.COMPONENT,\n props: { id, metadata, panelState, localDashboardId },\n title,\n id,\n };\n\n const { root } = layout;\n LayoutUtils.openComponent({\n root,\n config,\n focusElement,\n createNewStack,\n dragEvent,\n });\n },\n [layout, localDashboardId]\n );\n\n const handleOpenFilterSetManager = useCallback(\n ({\n title = 'FilterSets',\n metadata = {},\n panelState = null,\n id = nanoid(),\n focusElement = LayoutUtils.DEFAULT_FOCUS_SELECTOR,\n createNewStack = false,\n dragEvent = undefined,\n }) => {\n const config = {\n type: 'react-component' as const,\n component: FilterSetManagerPanel.COMPONENT,\n props: { id, metadata, panelState, localDashboardId },\n title,\n id,\n };\n\n const { root } = layout;\n LayoutUtils.openComponent({\n root,\n config,\n focusElement,\n createNewStack,\n dragEvent,\n });\n },\n [layout, localDashboardId]\n );\n\n useEffect(\n function registerComponentsAndReturnCleanup() {\n const cleanups = [\n registerComponent(DropdownFilterPanel.COMPONENT, DropdownFilterPanel),\n registerComponent(InputFilterPanel.COMPONENT, InputFilterPanel),\n registerComponent(\n FilterSetManagerPanel.COMPONENT,\n FilterSetManagerPanel\n ),\n ];\n\n return () => {\n cleanups.forEach(cleanup => cleanup());\n };\n },\n [registerComponent]\n );\n\n useFilterColumnsChangedListener(layout.eventHub, handleColumnsChanged);\n useFilterChangedListener(layout.eventHub, handleFiltersChanged);\n useFilterTableChangedListener(layout.eventHub, handleTableChanged);\n useListener(\n layout.eventHub,\n InputFilterEvent.OPEN_DROPDOWN,\n handleOpenDropdown\n );\n useListener(layout.eventHub, InputFilterEvent.OPEN_INPUT, handleOpenInput);\n useListener(\n layout.eventHub,\n InputFilterEvent.OPEN_FILTER_SET_MANAGER,\n handleOpenFilterSetManager\n );\n useListener(layout.eventHub, PanelEvent.UNMOUNT, handlePanelUnmount);\n\n return null;\n}\n\nexport default FilterPlugin;\n"],"mappings":"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","ignoreList":[]}
@@ -8,11 +8,9 @@ import useHydrateGrid from "./useHydrateGrid.js";
8
8
  import ConnectedIrisGridPanel from "./panels/IrisGridPanel.js";
9
9
  import { jsx as _jsx } from "react/jsx-runtime";
10
10
  export var GridPanelPlugin = /*#__PURE__*/forwardRef((props, ref) => {
11
- var {
12
- localDashboardId,
13
- fetch,
14
- metadata
15
- } = props;
11
+ var localDashboardId = props.localDashboardId,
12
+ fetch = props.fetch,
13
+ metadata = props.metadata;
16
14
  var hydratedProps = useHydrateGrid(fetch, localDashboardId, metadata);
17
15
 
18
16
  // eslint-disable-next-line react/jsx-props-no-spreading
@@ -1 +1 @@
1
- {"version":3,"file":"GridPanelPlugin.js","names":["forwardRef","useHydrateGrid","ConnectedIrisGridPanel","jsx","_jsx","GridPanelPlugin","props","ref","localDashboardId","fetch","metadata","hydratedProps","_objectSpread","displayName"],"sources":["../src/GridPanelPlugin.tsx"],"sourcesContent":["import { forwardRef } from 'react';\nimport { type WidgetPanelProps } from '@deephaven/plugin';\nimport { type dh } from '@deephaven/jsapi-types';\nimport useHydrateGrid from './useHydrateGrid';\nimport ConnectedIrisGridPanel, {\n type IrisGridPanel,\n} from './panels/IrisGridPanel';\n\nexport const GridPanelPlugin = forwardRef(\n (props: WidgetPanelProps<dh.Table>, ref: React.Ref<IrisGridPanel>) => {\n const { localDashboardId, fetch, metadata } = props;\n const hydratedProps = useHydrateGrid(fetch, localDashboardId, metadata);\n\n // eslint-disable-next-line react/jsx-props-no-spreading\n return <ConnectedIrisGridPanel ref={ref} {...props} {...hydratedProps} />;\n }\n);\n\nGridPanelPlugin.displayName = 'GridPanelPlugin';\n\nexport default GridPanelPlugin;\n"],"mappings":";;;;;AAAA,SAASA,UAAU,QAAQ,OAAO;AAAC,OAG5BC,cAAc;AAAA,OACdC,sBAAsB;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAI7B,OAAO,IAAMC,eAAe,gBAAGL,UAAU,CACvC,CAACM,KAAiC,EAAEC,GAA6B,KAAK;EACpE,IAAM;IAAEC,gBAAgB;IAAEC,KAAK;IAAEC;EAAS,CAAC,GAAGJ,KAAK;EACnD,IAAMK,aAAa,GAAGV,cAAc,CAACQ,KAAK,EAAED,gBAAgB,EAAEE,QAAQ,CAAC;;EAEvE;EACA,oBAAON,IAAA,CAACF,sBAAsB,EAAAU,aAAA,CAAAA,aAAA;IAACL,GAAG,EAAEA;EAAI,GAAKD,KAAK,GAAMK,aAAa,CAAG,CAAC;AAC3E,CACF,CAAC;AAEDN,eAAe,CAACQ,WAAW,GAAG,iBAAiB;AAE/C,eAAeR,eAAe","ignoreList":[]}
1
+ {"version":3,"file":"GridPanelPlugin.js","names":["forwardRef","useHydrateGrid","ConnectedIrisGridPanel","jsx","_jsx","GridPanelPlugin","props","ref","localDashboardId","fetch","metadata","hydratedProps","_objectSpread","displayName"],"sources":["../src/GridPanelPlugin.tsx"],"sourcesContent":["import { forwardRef } from 'react';\nimport { type WidgetPanelProps } from '@deephaven/plugin';\nimport { type dh } from '@deephaven/jsapi-types';\nimport useHydrateGrid from './useHydrateGrid';\nimport ConnectedIrisGridPanel, {\n type IrisGridPanel,\n} from './panels/IrisGridPanel';\n\nexport const GridPanelPlugin = forwardRef(\n (props: WidgetPanelProps<dh.Table>, ref: React.Ref<IrisGridPanel>) => {\n const { localDashboardId, fetch, metadata } = props;\n const hydratedProps = useHydrateGrid(fetch, localDashboardId, metadata);\n\n // eslint-disable-next-line react/jsx-props-no-spreading\n return <ConnectedIrisGridPanel ref={ref} {...props} {...hydratedProps} />;\n }\n);\n\nGridPanelPlugin.displayName = 'GridPanelPlugin';\n\nexport default GridPanelPlugin;\n"],"mappings":";;;;;AAAA,SAASA,UAAU,QAAQ,OAAO;AAAC,OAG5BC,cAAc;AAAA,OACdC,sBAAsB;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAI7B,OAAO,IAAMC,eAAe,gBAAGL,UAAU,CACvC,CAACM,KAAiC,EAAEC,GAA6B,KAAK;EACpE,IAAQC,gBAAgB,GAAsBF,KAAK,CAA3CE,gBAAgB;IAAEC,KAAK,GAAeH,KAAK,CAAzBG,KAAK;IAAEC,QAAQ,GAAKJ,KAAK,CAAlBI,QAAQ;EACzC,IAAMC,aAAa,GAAGV,cAAc,CAACQ,KAAK,EAAED,gBAAgB,EAAEE,QAAQ,CAAC;;EAEvE;EACA,oBAAON,IAAA,CAACF,sBAAsB,EAAAU,aAAA,CAAAA,aAAA;IAACL,GAAG,EAAEA;EAAI,GAAKD,KAAK,GAAMK,aAAa,CAAG,CAAC;AAC3E,CACF,CAAC;AAEDN,eAAe,CAACQ,WAAW,GAAG,iBAAiB;AAE/C,eAAeR,eAAe","ignoreList":[]}
@@ -6,6 +6,12 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
6
6
  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; }
7
7
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
8
8
  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); }
9
+ function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
10
+ 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."); }
11
+ 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; } }
12
+ 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; }
13
+ 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; } }
14
+ function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
9
15
  import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
10
16
  import { IrisGrid, IrisGridCacheUtils, IrisGridUtils, isIrisGridTableModelTemplate } from '@deephaven/iris-grid';
11
17
  import { useSelector } from 'react-redux';
@@ -22,17 +28,14 @@ import { useTablePlugin } from "./useTablePlugin.js";
22
28
  import { jsx as _jsx } from "react/jsx-runtime";
23
29
  export function GridWidgetPlugin(_ref) {
24
30
  var _model$columns;
25
- var {
26
- fetch,
27
- transformTableOptions,
28
- transformModel,
29
- irisGridProps,
30
- onModelChanged
31
- } = _ref;
31
+ var fetch = _ref.fetch,
32
+ transformTableOptions = _ref.transformTableOptions,
33
+ transformModel = _ref.transformModel,
34
+ irisGridProps = _ref.irisGridProps,
35
+ onModelChanged = _ref.onModelChanged;
32
36
  var settings = useSelector(getSettings);
33
- var {
34
- eventHub
35
- } = useLayoutManager();
37
+ var _useLayoutManager = useLayoutManager(),
38
+ eventHub = _useLayoutManager.eventHub;
36
39
  var fetchResult = useIrisGridModel(fetch, transformModel);
37
40
  var model = fetchResult.status === 'success' ? fetchResult.model : undefined;
38
41
 
@@ -44,10 +47,13 @@ export function GridWidgetPlugin(_ref) {
44
47
  }, [model, onModelChanged]);
45
48
  var dh = useApi();
46
49
  var irisGridUtils = useMemo(() => new IrisGridUtils(dh), [dh]);
47
- var [state, setState] = usePersistentState(undefined, {
48
- version: 1,
49
- type: 'GridWidgetPlugin'
50
- });
50
+ var _usePersistentState = usePersistentState(undefined, {
51
+ version: 1,
52
+ type: 'GridWidgetPlugin'
53
+ }),
54
+ _usePersistentState2 = _slicedToArray(_usePersistentState, 2),
55
+ state = _usePersistentState2[0],
56
+ setState = _usePersistentState2[1];
51
57
  var initialState = useRef(state);
52
58
  var hydratedState = useMemo(() => {
53
59
  if (fetchResult.status !== 'success' || initialState.current === undefined) {
@@ -66,9 +72,7 @@ export function GridWidgetPlugin(_ref) {
66
72
  var inputFilters = useDashboardColumnFilters((_model$columns = model === null || model === void 0 ? void 0 : model.columns) !== null && _model$columns !== void 0 ? _model$columns : null, model != null && isIrisGridTableModelTemplate(model) ? model.table : undefined);
67
73
  var irisGridRef = useRef(null);
68
74
  var _useGridLinker = useGridLinker(fetchResult.status === 'success' ? fetchResult.model : null, irisGridRef.current),
69
- {
70
- alwaysFetchColumns: linkerAlwaysFetchColumns
71
- } = _useGridLinker,
75
+ linkerAlwaysFetchColumns = _useGridLinker.alwaysFetchColumns,
72
76
  linkerProps = _objectWithoutProperties(_useGridLinker, _excluded);
73
77
  var handleClearAllFilters = useCallback(() => {
74
78
  if (irisGridRef.current == null) {
@@ -77,18 +81,20 @@ export function GridWidgetPlugin(_ref) {
77
81
  irisGridRef.current.clearAllFilters();
78
82
  }, []);
79
83
  useListener(eventHub, InputFilterEvent.CLEAR_ALL_FILTERS, handleClearAllFilters);
80
- var [selection, setSelection] = useState([]);
81
- var {
82
- Plugin,
83
- customFilters,
84
- alwaysFetchColumns: filterFetchColumns,
85
- onContextMenu
86
- } = useTablePlugin({
87
- model,
88
- irisGridRef,
89
- irisGridUtils,
90
- selectedRanges: selection
91
- });
84
+ var _useState = useState([]),
85
+ _useState2 = _slicedToArray(_useState, 2),
86
+ selection = _useState2[0],
87
+ setSelection = _useState2[1];
88
+ var _useTablePlugin = useTablePlugin({
89
+ model,
90
+ irisGridRef,
91
+ irisGridUtils,
92
+ selectedRanges: selection
93
+ }),
94
+ Plugin = _useTablePlugin.Plugin,
95
+ customFilters = _useTablePlugin.customFilters,
96
+ filterFetchColumns = _useTablePlugin.alwaysFetchColumns,
97
+ onContextMenu = _useTablePlugin.onContextMenu;
92
98
  var alwaysFetchColumns = useMemo(() => {
93
99
  var columnSet = new Set([...linkerAlwaysFetchColumns, ...filterFetchColumns]);
94
100
  return [...columnSet];
@@ -1 +1 @@
1
- {"version":3,"file":"GridWidgetPlugin.js","names":["useCallback","useEffect","useMemo","useRef","useState","IrisGrid","IrisGridCacheUtils","IrisGridUtils","isIrisGridTableModelTemplate","useSelector","getSettings","LoadingOverlay","useLayoutManager","useListener","usePersistentState","assertNotNull","getErrorMessage","useApi","useIrisGridModel","useDashboardColumnFilters","InputFilterEvent","useGridLinker","useTablePlugin","jsx","_jsx","GridWidgetPlugin","_ref","_model$columns","fetch","transformTableOptions","transformModel","irisGridProps","onModelChanged","settings","eventHub","fetchResult","model","status","undefined","dh","irisGridUtils","state","setState","version","type","initialState","hydratedState","current","_objectSpread","hydrateIrisGridState","hydrateGridState","dehydrateIrisGridState","makeMemoizedCombinedGridStateDehydrator","handleIrisGridChange","irisGridState","gridState","newState","inputFilters","columns","table","irisGridRef","_useGridLinker","alwaysFetchColumns","linkerAlwaysFetchColumns","linkerProps","_objectWithoutProperties","_excluded","handleClearAllFilters","clearAllFilters","CLEAR_ALL_FILTERS","selection","setSelection","Plugin","customFilters","filterFetchColumns","onContextMenu","selectedRanges","columnSet","Set","isLoading","errorMessage","error","ref","onStateChange","onSelectionChanged","children"],"sources":["../src/GridWidgetPlugin.tsx"],"sourcesContent":["import { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { type WidgetComponentProps } from '@deephaven/plugin';\nimport { type dh as DhType } from '@deephaven/jsapi-types';\nimport {\n type DehydratedGridState,\n type DehydratedIrisGridState,\n IrisGrid,\n IrisGridCacheUtils,\n type IrisGridState,\n type IrisGridType,\n type IrisGridViewProps,\n IrisGridUtils,\n isIrisGridTableModelTemplate,\n type IrisGridModel,\n type IrisGridTableOptionsWidgetProps,\n type IrisGridModelWidgetProps,\n} from '@deephaven/iris-grid';\nimport { useSelector } from 'react-redux';\nimport { getSettings, type RootState } from '@deephaven/redux';\nimport { LoadingOverlay } from '@deephaven/components';\nimport {\n useLayoutManager,\n useListener,\n usePersistentState,\n} from '@deephaven/dashboard';\nimport { assertNotNull, getErrorMessage } from '@deephaven/utils';\nimport { useApi } from '@deephaven/jsapi-bootstrap';\nimport { type GridRange, type GridState } from '@deephaven/grid';\nimport { useIrisGridModel } from './useIrisGridModel';\nimport useDashboardColumnFilters from './useDashboardColumnFilters';\nimport { InputFilterEvent } from './events';\nimport useGridLinker from './useGridLinker';\nimport { useTablePlugin } from './useTablePlugin';\n\nexport function GridWidgetPlugin({\n fetch,\n transformTableOptions,\n transformModel,\n irisGridProps,\n onModelChanged,\n}: WidgetComponentProps<DhType.Table> &\n IrisGridTableOptionsWidgetProps &\n IrisGridModelWidgetProps & {\n /**\n * View-concern overrides (theme, renderer, mouse handlers, metric\n * calculator) forwarded as a single bag to `<IrisGrid>`. Lets a plugin\n * contribute presentation without this host knowing each concern by name.\n */\n irisGridProps?: Partial<IrisGridViewProps>;\n /** Called once the model is built, so middleware can observe it. */\n onModelChanged?: (model: IrisGridModel) => void;\n }): JSX.Element | null {\n const settings = useSelector(getSettings<RootState>);\n const { eventHub } = useLayoutManager();\n\n const fetchResult = useIrisGridModel(fetch, transformModel);\n const model =\n fetchResult.status === 'success' ? fetchResult.model : undefined;\n\n // Notify observers (e.g. middleware) when the built model changes.\n useEffect(() => {\n if (model != null) {\n onModelChanged?.(model);\n }\n }, [model, onModelChanged]);\n\n const dh = useApi();\n const irisGridUtils = useMemo(() => new IrisGridUtils(dh), [dh]);\n\n const [state, setState] = usePersistentState<\n (DehydratedIrisGridState & DehydratedGridState) | undefined\n >(undefined, {\n version: 1,\n type: 'GridWidgetPlugin',\n });\n const initialState = useRef(state);\n const hydratedState = useMemo(() => {\n if (\n fetchResult.status !== 'success' ||\n initialState.current === undefined\n ) {\n return;\n }\n return {\n ...irisGridUtils.hydrateIrisGridState(\n fetchResult.model,\n initialState.current\n ),\n ...IrisGridUtils.hydrateGridState(\n fetchResult.model,\n initialState.current\n ),\n };\n }, [fetchResult, irisGridUtils]);\n\n const dehydrateIrisGridState = useMemo(\n () => IrisGridCacheUtils.makeMemoizedCombinedGridStateDehydrator(),\n []\n );\n\n const handleIrisGridChange = useCallback(\n (irisGridState: IrisGridState, gridState: GridState) => {\n if (\n fetchResult.status !== 'success' ||\n irisGridState == null ||\n gridState == null\n ) {\n return;\n }\n\n const newState = dehydrateIrisGridState(\n fetchResult.model,\n irisGridState,\n gridState\n );\n\n setState(newState);\n },\n [fetchResult, setState, dehydrateIrisGridState]\n );\n\n const inputFilters = useDashboardColumnFilters(\n model?.columns ?? null,\n model != null && isIrisGridTableModelTemplate(model)\n ? model.table\n : undefined\n );\n\n const irisGridRef = useRef<IrisGridType | null>(null);\n\n const { alwaysFetchColumns: linkerAlwaysFetchColumns, ...linkerProps } =\n useGridLinker(\n fetchResult.status === 'success' ? fetchResult.model : null,\n irisGridRef.current\n );\n\n const handleClearAllFilters = useCallback(() => {\n if (irisGridRef.current == null) {\n return;\n }\n irisGridRef.current.clearAllFilters();\n }, []);\n\n useListener(\n eventHub,\n InputFilterEvent.CLEAR_ALL_FILTERS,\n handleClearAllFilters\n );\n\n const [selection, setSelection] = useState<readonly GridRange[]>([]);\n\n const {\n Plugin,\n customFilters,\n alwaysFetchColumns: filterFetchColumns,\n onContextMenu,\n } = useTablePlugin({\n model,\n irisGridRef,\n irisGridUtils,\n selectedRanges: selection,\n });\n\n const alwaysFetchColumns = useMemo(() => {\n const columnSet = new Set([\n ...linkerAlwaysFetchColumns,\n ...filterFetchColumns,\n ]);\n return [...columnSet];\n }, [linkerAlwaysFetchColumns, filterFetchColumns]);\n\n if (fetchResult.status === 'loading') {\n return (\n <LoadingOverlay isLoading data-testid=\"grid-widget-plugin-loading\" />\n );\n }\n\n if (fetchResult.status === 'error') {\n return (\n <LoadingOverlay\n data-testid=\"grid-widget-plugin-loading-error\"\n errorMessage={getErrorMessage(fetchResult.error)}\n isLoading={false}\n />\n );\n }\n\n assertNotNull(model, 'Model should be defined when fetch is successful');\n\n return (\n <IrisGrid\n ref={irisGridRef}\n model={model}\n settings={settings}\n onStateChange={handleIrisGridChange}\n onSelectionChanged={setSelection}\n onContextMenu={onContextMenu}\n inputFilters={inputFilters}\n customFilters={customFilters}\n transformTableOptions={transformTableOptions}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...irisGridProps}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...linkerProps}\n alwaysFetchColumns={alwaysFetchColumns}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...hydratedState}\n >\n {Plugin}\n </IrisGrid>\n );\n}\n\nexport default GridWidgetPlugin;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"GridWidgetPlugin.js","names":["useCallback","useEffect","useMemo","useRef","useState","IrisGrid","IrisGridCacheUtils","IrisGridUtils","isIrisGridTableModelTemplate","useSelector","getSettings","LoadingOverlay","useLayoutManager","useListener","usePersistentState","assertNotNull","getErrorMessage","useApi","useIrisGridModel","useDashboardColumnFilters","InputFilterEvent","useGridLinker","useTablePlugin","jsx","_jsx","GridWidgetPlugin","_ref","_model$columns","fetch","transformTableOptions","transformModel","irisGridProps","onModelChanged","settings","_useLayoutManager","eventHub","fetchResult","model","status","undefined","dh","irisGridUtils","_usePersistentState","version","type","_usePersistentState2","_slicedToArray","state","setState","initialState","hydratedState","current","_objectSpread","hydrateIrisGridState","hydrateGridState","dehydrateIrisGridState","makeMemoizedCombinedGridStateDehydrator","handleIrisGridChange","irisGridState","gridState","newState","inputFilters","columns","table","irisGridRef","_useGridLinker","linkerAlwaysFetchColumns","alwaysFetchColumns","linkerProps","_objectWithoutProperties","_excluded","handleClearAllFilters","clearAllFilters","CLEAR_ALL_FILTERS","_useState","_useState2","selection","setSelection","_useTablePlugin","selectedRanges","Plugin","customFilters","filterFetchColumns","onContextMenu","columnSet","Set","isLoading","errorMessage","error","ref","onStateChange","onSelectionChanged","children"],"sources":["../src/GridWidgetPlugin.tsx"],"sourcesContent":["import { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { type WidgetComponentProps } from '@deephaven/plugin';\nimport { type dh as DhType } from '@deephaven/jsapi-types';\nimport {\n type DehydratedGridState,\n type DehydratedIrisGridState,\n IrisGrid,\n IrisGridCacheUtils,\n type IrisGridState,\n type IrisGridType,\n type IrisGridViewProps,\n IrisGridUtils,\n isIrisGridTableModelTemplate,\n type IrisGridModel,\n type IrisGridTableOptionsWidgetProps,\n type IrisGridModelWidgetProps,\n} from '@deephaven/iris-grid';\nimport { useSelector } from 'react-redux';\nimport { getSettings, type RootState } from '@deephaven/redux';\nimport { LoadingOverlay } from '@deephaven/components';\nimport {\n useLayoutManager,\n useListener,\n usePersistentState,\n} from '@deephaven/dashboard';\nimport { assertNotNull, getErrorMessage } from '@deephaven/utils';\nimport { useApi } from '@deephaven/jsapi-bootstrap';\nimport { type GridRange, type GridState } from '@deephaven/grid';\nimport { useIrisGridModel } from './useIrisGridModel';\nimport useDashboardColumnFilters from './useDashboardColumnFilters';\nimport { InputFilterEvent } from './events';\nimport useGridLinker from './useGridLinker';\nimport { useTablePlugin } from './useTablePlugin';\n\nexport function GridWidgetPlugin({\n fetch,\n transformTableOptions,\n transformModel,\n irisGridProps,\n onModelChanged,\n}: WidgetComponentProps<DhType.Table> &\n IrisGridTableOptionsWidgetProps &\n IrisGridModelWidgetProps & {\n /**\n * View-concern overrides (theme, renderer, mouse handlers, metric\n * calculator) forwarded as a single bag to `<IrisGrid>`. Lets a plugin\n * contribute presentation without this host knowing each concern by name.\n */\n irisGridProps?: Partial<IrisGridViewProps>;\n /** Called once the model is built, so middleware can observe it. */\n onModelChanged?: (model: IrisGridModel) => void;\n }): JSX.Element | null {\n const settings = useSelector(getSettings<RootState>);\n const { eventHub } = useLayoutManager();\n\n const fetchResult = useIrisGridModel(fetch, transformModel);\n const model =\n fetchResult.status === 'success' ? fetchResult.model : undefined;\n\n // Notify observers (e.g. middleware) when the built model changes.\n useEffect(() => {\n if (model != null) {\n onModelChanged?.(model);\n }\n }, [model, onModelChanged]);\n\n const dh = useApi();\n const irisGridUtils = useMemo(() => new IrisGridUtils(dh), [dh]);\n\n const [state, setState] = usePersistentState<\n (DehydratedIrisGridState & DehydratedGridState) | undefined\n >(undefined, {\n version: 1,\n type: 'GridWidgetPlugin',\n });\n const initialState = useRef(state);\n const hydratedState = useMemo(() => {\n if (\n fetchResult.status !== 'success' ||\n initialState.current === undefined\n ) {\n return;\n }\n return {\n ...irisGridUtils.hydrateIrisGridState(\n fetchResult.model,\n initialState.current\n ),\n ...IrisGridUtils.hydrateGridState(\n fetchResult.model,\n initialState.current\n ),\n };\n }, [fetchResult, irisGridUtils]);\n\n const dehydrateIrisGridState = useMemo(\n () => IrisGridCacheUtils.makeMemoizedCombinedGridStateDehydrator(),\n []\n );\n\n const handleIrisGridChange = useCallback(\n (irisGridState: IrisGridState, gridState: GridState) => {\n if (\n fetchResult.status !== 'success' ||\n irisGridState == null ||\n gridState == null\n ) {\n return;\n }\n\n const newState = dehydrateIrisGridState(\n fetchResult.model,\n irisGridState,\n gridState\n );\n\n setState(newState);\n },\n [fetchResult, setState, dehydrateIrisGridState]\n );\n\n const inputFilters = useDashboardColumnFilters(\n model?.columns ?? null,\n model != null && isIrisGridTableModelTemplate(model)\n ? model.table\n : undefined\n );\n\n const irisGridRef = useRef<IrisGridType | null>(null);\n\n const { alwaysFetchColumns: linkerAlwaysFetchColumns, ...linkerProps } =\n useGridLinker(\n fetchResult.status === 'success' ? fetchResult.model : null,\n irisGridRef.current\n );\n\n const handleClearAllFilters = useCallback(() => {\n if (irisGridRef.current == null) {\n return;\n }\n irisGridRef.current.clearAllFilters();\n }, []);\n\n useListener(\n eventHub,\n InputFilterEvent.CLEAR_ALL_FILTERS,\n handleClearAllFilters\n );\n\n const [selection, setSelection] = useState<readonly GridRange[]>([]);\n\n const {\n Plugin,\n customFilters,\n alwaysFetchColumns: filterFetchColumns,\n onContextMenu,\n } = useTablePlugin({\n model,\n irisGridRef,\n irisGridUtils,\n selectedRanges: selection,\n });\n\n const alwaysFetchColumns = useMemo(() => {\n const columnSet = new Set([\n ...linkerAlwaysFetchColumns,\n ...filterFetchColumns,\n ]);\n return [...columnSet];\n }, [linkerAlwaysFetchColumns, filterFetchColumns]);\n\n if (fetchResult.status === 'loading') {\n return (\n <LoadingOverlay isLoading data-testid=\"grid-widget-plugin-loading\" />\n );\n }\n\n if (fetchResult.status === 'error') {\n return (\n <LoadingOverlay\n data-testid=\"grid-widget-plugin-loading-error\"\n errorMessage={getErrorMessage(fetchResult.error)}\n isLoading={false}\n />\n );\n }\n\n assertNotNull(model, 'Model should be defined when fetch is successful');\n\n return (\n <IrisGrid\n ref={irisGridRef}\n model={model}\n settings={settings}\n onStateChange={handleIrisGridChange}\n onSelectionChanged={setSelection}\n onContextMenu={onContextMenu}\n inputFilters={inputFilters}\n customFilters={customFilters}\n transformTableOptions={transformTableOptions}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...irisGridProps}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...linkerProps}\n alwaysFetchColumns={alwaysFetchColumns}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...hydratedState}\n >\n {Plugin}\n </IrisGrid>\n );\n}\n\nexport default GridWidgetPlugin;\n"],"mappings":";;;;;;;;;;;;;;AAAA,SAASA,WAAW,EAAEC,SAAS,EAAEC,OAAO,EAAEC,MAAM,EAAEC,QAAQ,QAAQ,OAAO;AAGzE,SAGEC,QAAQ,EACRC,kBAAkB,EAIlBC,aAAa,EACbC,4BAA4B,QAIvB,sBAAsB;AAC7B,SAASC,WAAW,QAAQ,aAAa;AACzC,SAASC,WAAW,QAAwB,kBAAkB;AAC9D,SAASC,cAAc,QAAQ,uBAAuB;AACtD,SACEC,gBAAgB,EAChBC,WAAW,EACXC,kBAAkB,QACb,sBAAsB;AAC7B,SAASC,aAAa,EAAEC,eAAe,QAAQ,kBAAkB;AACjE,SAASC,MAAM,QAAQ,4BAA4B;AAAC,SAE3CC,gBAAgB;AAAA,OAClBC,yBAAyB;AAAA,SACvBC,gBAAgB;AAAA,OAClBC,aAAa;AAAA,SACXC,cAAc;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAEvB,OAAO,SAASC,gBAAgBA,CAAAC,IAAA,EAiBP;EAAA,IAAAC,cAAA;EAAA,IAhBvBC,KAAK,GAAAF,IAAA,CAALE,KAAK;IACLC,qBAAqB,GAAAH,IAAA,CAArBG,qBAAqB;IACrBC,cAAc,GAAAJ,IAAA,CAAdI,cAAc;IACdC,aAAa,GAAAL,IAAA,CAAbK,aAAa;IACbC,cAAc,GAAAN,IAAA,CAAdM,cAAc;EAad,IAAMC,QAAQ,GAAGxB,WAAW,CAACC,WAAsB,CAAC;EACpD,IAAAwB,iBAAA,GAAqBtB,gBAAgB,CAAC,CAAC;IAA/BuB,QAAQ,GAAAD,iBAAA,CAARC,QAAQ;EAEhB,IAAMC,WAAW,GAAGlB,gBAAgB,CAACU,KAAK,EAAEE,cAAc,CAAC;EAC3D,IAAMO,KAAK,GACTD,WAAW,CAACE,MAAM,KAAK,SAAS,GAAGF,WAAW,CAACC,KAAK,GAAGE,SAAS;;EAElE;EACAtC,SAAS,CAAC,MAAM;IACd,IAAIoC,KAAK,IAAI,IAAI,EAAE;MACjBL,cAAc,aAAdA,cAAc,eAAdA,cAAc,CAAGK,KAAK,CAAC;IACzB;EACF,CAAC,EAAE,CAACA,KAAK,EAAEL,cAAc,CAAC,CAAC;EAE3B,IAAMQ,EAAE,GAAGvB,MAAM,CAAC,CAAC;EACnB,IAAMwB,aAAa,GAAGvC,OAAO,CAAC,MAAM,IAAIK,aAAa,CAACiC,EAAE,CAAC,EAAE,CAACA,EAAE,CAAC,CAAC;EAEhE,IAAAE,mBAAA,GAA0B5B,kBAAkB,CAE1CyB,SAAS,EAAE;MACXI,OAAO,EAAE,CAAC;MACVC,IAAI,EAAE;IACR,CAAC,CAAC;IAAAC,oBAAA,GAAAC,cAAA,CAAAJ,mBAAA;IALKK,KAAK,GAAAF,oBAAA;IAAEG,QAAQ,GAAAH,oBAAA;EAMtB,IAAMI,YAAY,GAAG9C,MAAM,CAAC4C,KAAK,CAAC;EAClC,IAAMG,aAAa,GAAGhD,OAAO,CAAC,MAAM;IAClC,IACEkC,WAAW,CAACE,MAAM,KAAK,SAAS,IAChCW,YAAY,CAACE,OAAO,KAAKZ,SAAS,EAClC;MACA;IACF;IACA,OAAAa,aAAA,CAAAA,aAAA,KACKX,aAAa,CAACY,oBAAoB,CACnCjB,WAAW,CAACC,KAAK,EACjBY,YAAY,CAACE,OACf,CAAC,GACE5C,aAAa,CAAC+C,gBAAgB,CAC/BlB,WAAW,CAACC,KAAK,EACjBY,YAAY,CAACE,OACf,CAAC;EAEL,CAAC,EAAE,CAACf,WAAW,EAAEK,aAAa,CAAC,CAAC;EAEhC,IAAMc,sBAAsB,GAAGrD,OAAO,CACpC,MAAMI,kBAAkB,CAACkD,uCAAuC,CAAC,CAAC,EAClE,EACF,CAAC;EAED,IAAMC,oBAAoB,GAAGzD,WAAW,CACtC,CAAC0D,aAA4B,EAAEC,SAAoB,KAAK;IACtD,IACEvB,WAAW,CAACE,MAAM,KAAK,SAAS,IAChCoB,aAAa,IAAI,IAAI,IACrBC,SAAS,IAAI,IAAI,EACjB;MACA;IACF;IAEA,IAAMC,QAAQ,GAAGL,sBAAsB,CACrCnB,WAAW,CAACC,KAAK,EACjBqB,aAAa,EACbC,SACF,CAAC;IAEDX,QAAQ,CAACY,QAAQ,CAAC;EACpB,CAAC,EACD,CAACxB,WAAW,EAAEY,QAAQ,EAAEO,sBAAsB,CAChD,CAAC;EAED,IAAMM,YAAY,GAAG1C,yBAAyB,EAAAQ,cAAA,GAC5CU,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEyB,OAAO,cAAAnC,cAAA,cAAAA,cAAA,GAAI,IAAI,EACtBU,KAAK,IAAI,IAAI,IAAI7B,4BAA4B,CAAC6B,KAAK,CAAC,GAChDA,KAAK,CAAC0B,KAAK,GACXxB,SACN,CAAC;EAED,IAAMyB,WAAW,GAAG7D,MAAM,CAAsB,IAAI,CAAC;EAErD,IAAA8D,cAAA,GACE5C,aAAa,CACXe,WAAW,CAACE,MAAM,KAAK,SAAS,GAAGF,WAAW,CAACC,KAAK,GAAG,IAAI,EAC3D2B,WAAW,CAACb,OACd,CAAC;IAJyBe,wBAAwB,GAAAD,cAAA,CAA5CE,kBAAkB;IAA+BC,WAAW,GAAAC,wBAAA,CAAAJ,cAAA,EAAAK,SAAA;EAMpE,IAAMC,qBAAqB,GAAGvE,WAAW,CAAC,MAAM;IAC9C,IAAIgE,WAAW,CAACb,OAAO,IAAI,IAAI,EAAE;MAC/B;IACF;IACAa,WAAW,CAACb,OAAO,CAACqB,eAAe,CAAC,CAAC;EACvC,CAAC,EAAE,EAAE,CAAC;EAEN3D,WAAW,CACTsB,QAAQ,EACRf,gBAAgB,CAACqD,iBAAiB,EAClCF,qBACF,CAAC;EAED,IAAAG,SAAA,GAAkCtE,QAAQ,CAAuB,EAAE,CAAC;IAAAuE,UAAA,GAAA7B,cAAA,CAAA4B,SAAA;IAA7DE,SAAS,GAAAD,UAAA;IAAEE,YAAY,GAAAF,UAAA;EAE9B,IAAAG,eAAA,GAKIxD,cAAc,CAAC;MACjBe,KAAK;MACL2B,WAAW;MACXvB,aAAa;MACbsC,cAAc,EAAEH;IAClB,CAAC,CAAC;IATAI,MAAM,GAAAF,eAAA,CAANE,MAAM;IACNC,aAAa,GAAAH,eAAA,CAAbG,aAAa;IACOC,kBAAkB,GAAAJ,eAAA,CAAtCX,kBAAkB;IAClBgB,aAAa,GAAAL,eAAA,CAAbK,aAAa;EAQf,IAAMhB,kBAAkB,GAAGjE,OAAO,CAAC,MAAM;IACvC,IAAMkF,SAAS,GAAG,IAAIC,GAAG,CAAC,CACxB,GAAGnB,wBAAwB,EAC3B,GAAGgB,kBAAkB,CACtB,CAAC;IACF,OAAO,CAAC,GAAGE,SAAS,CAAC;EACvB,CAAC,EAAE,CAAClB,wBAAwB,EAAEgB,kBAAkB,CAAC,CAAC;EAElD,IAAI9C,WAAW,CAACE,MAAM,KAAK,SAAS,EAAE;IACpC,oBACEd,IAAA,CAACb,cAAc;MAAC2E,SAAS;MAAC,eAAY;IAA4B,CAAE,CAAC;EAEzE;EAEA,IAAIlD,WAAW,CAACE,MAAM,KAAK,OAAO,EAAE;IAClC,oBACEd,IAAA,CAACb,cAAc;MACb,eAAY,kCAAkC;MAC9C4E,YAAY,EAAEvE,eAAe,CAACoB,WAAW,CAACoD,KAAK,CAAE;MACjDF,SAAS,EAAE;IAAM,CAClB,CAAC;EAEN;EAEAvE,aAAa,CAACsB,KAAK,EAAE,kDAAkD,CAAC;EAExE,oBACEb,IAAA,CAACnB,QAAQ,EAAA+C,aAAA,CAAAA,aAAA,CAAAA,aAAA,CAAAA,aAAA;IACPqC,GAAG,EAAEzB,WAAY;IACjB3B,KAAK,EAAEA,KAAM;IACbJ,QAAQ,EAAEA,QAAS;IACnByD,aAAa,EAAEjC,oBAAqB;IACpCkC,kBAAkB,EAAEd,YAAa;IACjCM,aAAa,EAAEA,aAAc;IAC7BtB,YAAY,EAAEA,YAAa;IAC3BoB,aAAa,EAAEA,aAAc;IAC7BpD,qBAAqB,EAAEA;IACvB;EAAA,GACIE,aAAa,GAEbqC,WAAW;IACfD,kBAAkB,EAAEA;IACpB;EAAA,GACIjB,aAAa;IAAA0C,QAAA,EAEhBZ;EAAM,EACC,CAAC;AAEf;AAEA,eAAevD,gBAAgB","ignoreList":[]}
@@ -4,11 +4,9 @@ import Linker from "./linker/Linker.js";
4
4
  import { jsx as _jsx } from "react/jsx-runtime";
5
5
  export function LinkerPlugin(props) {
6
6
  assertIsDashboardPluginProps(props);
7
- var {
8
- id,
9
- layout,
10
- panelManager
11
- } = props;
7
+ var id = props.id,
8
+ layout = props.layout,
9
+ panelManager = props.panelManager;
12
10
  return /*#__PURE__*/_jsx(Linker, {
13
11
  layout: layout,
14
12
  localDashboardId: id,
@@ -1 +1 @@
1
- {"version":3,"file":"LinkerPlugin.js","names":["React","assertIsDashboardPluginProps","Linker","jsx","_jsx","LinkerPlugin","props","id","layout","panelManager","localDashboardId"],"sources":["../src/LinkerPlugin.tsx"],"sourcesContent":["import React from 'react';\nimport {\n assertIsDashboardPluginProps,\n type DashboardPluginComponentProps,\n} from '@deephaven/dashboard';\nimport Linker from './linker/Linker';\n\nexport type LinkerPluginProps = Partial<DashboardPluginComponentProps>;\n\nexport function LinkerPlugin(props: LinkerPluginProps): JSX.Element {\n assertIsDashboardPluginProps(props);\n const { id, layout, panelManager } = props;\n return (\n <Linker layout={layout} localDashboardId={id} panelManager={panelManager} />\n );\n}\n\nexport default LinkerPlugin;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SACEC,4BAA4B,QAEvB,sBAAsB;AAAC,OACvBC,MAAM;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAIb,OAAO,SAASC,YAAYA,CAACC,KAAwB,EAAe;EAClEL,4BAA4B,CAACK,KAAK,CAAC;EACnC,IAAM;IAAEC,EAAE;IAAEC,MAAM;IAAEC;EAAa,CAAC,GAAGH,KAAK;EAC1C,oBACEF,IAAA,CAACF,MAAM;IAACM,MAAM,EAAEA,MAAO;IAACE,gBAAgB,EAAEH,EAAG;IAACE,YAAY,EAAEA;EAAa,CAAE,CAAC;AAEhF;AAEA,eAAeJ,YAAY","ignoreList":[]}
1
+ {"version":3,"file":"LinkerPlugin.js","names":["React","assertIsDashboardPluginProps","Linker","jsx","_jsx","LinkerPlugin","props","id","layout","panelManager","localDashboardId"],"sources":["../src/LinkerPlugin.tsx"],"sourcesContent":["import React from 'react';\nimport {\n assertIsDashboardPluginProps,\n type DashboardPluginComponentProps,\n} from '@deephaven/dashboard';\nimport Linker from './linker/Linker';\n\nexport type LinkerPluginProps = Partial<DashboardPluginComponentProps>;\n\nexport function LinkerPlugin(props: LinkerPluginProps): JSX.Element {\n assertIsDashboardPluginProps(props);\n const { id, layout, panelManager } = props;\n return (\n <Linker layout={layout} localDashboardId={id} panelManager={panelManager} />\n );\n}\n\nexport default LinkerPlugin;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SACEC,4BAA4B,QAEvB,sBAAsB;AAAC,OACvBC,MAAM;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAIb,OAAO,SAASC,YAAYA,CAACC,KAAwB,EAAe;EAClEL,4BAA4B,CAACK,KAAK,CAAC;EACnC,IAAQC,EAAE,GAA2BD,KAAK,CAAlCC,EAAE;IAAEC,MAAM,GAAmBF,KAAK,CAA9BE,MAAM;IAAEC,YAAY,GAAKH,KAAK,CAAtBG,YAAY;EAChC,oBACEL,IAAA,CAACF,MAAM;IAACM,MAAM,EAAEA,MAAO;IAACE,gBAAgB,EAAEH,EAAG;IAACE,YAAY,EAAEA;EAAa,CAAE,CAAC;AAEhF;AAEA,eAAeJ,YAAY","ignoreList":[]}
@@ -6,21 +6,24 @@ import MarkdownUtils from "./controls/markdown/MarkdownUtils.js";
6
6
  import MarkdownEvent from "./events/MarkdownEvent.js";
7
7
  export function MarkdownPlugin(props) {
8
8
  assertIsDashboardPluginProps(props);
9
- var {
10
- id,
11
- layout,
12
- panelManager,
13
- registerComponent
14
- } = props;
9
+ var id = props.id,
10
+ layout = props.layout,
11
+ panelManager = props.panelManager,
12
+ registerComponent = props.registerComponent;
15
13
  var handleOpen = useCallback(function () {
16
- var {
17
- title = '',
18
- metadata = {},
19
- id: panelId = nanoid(),
20
- focusElement = LayoutUtils.DEFAULT_FOCUS_SELECTOR,
21
- createNewStack = false,
22
- dragEvent = undefined
23
- } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
14
+ var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
15
+ _ref$title = _ref.title,
16
+ title = _ref$title === void 0 ? '' : _ref$title,
17
+ _ref$metadata = _ref.metadata,
18
+ metadata = _ref$metadata === void 0 ? {} : _ref$metadata,
19
+ _ref$id = _ref.id,
20
+ panelId = _ref$id === void 0 ? nanoid() : _ref$id,
21
+ _ref$focusElement = _ref.focusElement,
22
+ focusElement = _ref$focusElement === void 0 ? LayoutUtils.DEFAULT_FOCUS_SELECTOR : _ref$focusElement,
23
+ _ref$createNewStack = _ref.createNewStack,
24
+ createNewStack = _ref$createNewStack === void 0 ? false : _ref$createNewStack,
25
+ _ref$dragEvent = _ref.dragEvent,
26
+ dragEvent = _ref$dragEvent === void 0 ? undefined : _ref$dragEvent;
24
27
  var openedMarkdowns = panelManager.getOpenedPanelConfigsOfType(MarkdownPanel.COMPONENT);
25
28
  var usedTitles = openedMarkdowns.map(markdown => {
26
29
  var _markdown$title;
@@ -42,9 +45,7 @@ export function MarkdownPlugin(props) {
42
45
  title: panelTitle,
43
46
  id: panelId
44
47
  };
45
- var {
46
- root
47
- } = layout;
48
+ var root = layout.root;
48
49
  LayoutUtils.openComponent({
49
50
  root,
50
51
  config,
@@ -1 +1 @@
1
- {"version":3,"file":"MarkdownPlugin.js","names":["useCallback","useEffect","nanoid","assertIsDashboardPluginProps","LayoutUtils","useListener","MarkdownPanel","MarkdownUtils","MarkdownEvent","MarkdownPlugin","props","id","layout","panelManager","registerComponent","handleOpen","title","metadata","panelId","focusElement","DEFAULT_FOCUS_SELECTOR","createNewStack","dragEvent","undefined","arguments","length","openedMarkdowns","getOpenedPanelConfigsOfType","COMPONENT","usedTitles","map","markdown","_markdown$title","panelTitle","getNewMarkdownTitle","content","config","type","component","panelState","localDashboardId","root","openComponent","registerComponentsAndReturnCleanup","cleanups","forEach","cleanup","eventHub","OPEN"],"sources":["../src/MarkdownPlugin.tsx"],"sourcesContent":["import { useCallback, useEffect } from 'react';\nimport { nanoid } from 'nanoid';\nimport {\n assertIsDashboardPluginProps,\n type DashboardPluginComponentProps,\n LayoutUtils,\n useListener,\n} from '@deephaven/dashboard';\nimport { MarkdownPanel } from './panels';\nimport MarkdownUtils from './controls/markdown/MarkdownUtils';\nimport MarkdownEvent from './events/MarkdownEvent';\n\nexport type MarkdownPluginProps = Partial<DashboardPluginComponentProps>;\n\nexport type MarkdownComponentState = {\n panelState?: { content: string } | null;\n};\n\nexport function MarkdownPlugin(props: MarkdownPluginProps): JSX.Element | null {\n assertIsDashboardPluginProps(props);\n const { id, layout, panelManager, registerComponent } = props;\n\n const handleOpen = useCallback(\n ({\n title = '',\n metadata = {},\n id: panelId = nanoid(),\n focusElement = LayoutUtils.DEFAULT_FOCUS_SELECTOR,\n createNewStack = false,\n dragEvent = undefined,\n } = {}) => {\n const openedMarkdowns = panelManager.getOpenedPanelConfigsOfType(\n MarkdownPanel.COMPONENT\n );\n const usedTitles = openedMarkdowns.map(markdown => markdown.title ?? '');\n const panelTitle =\n title != null && title !== ''\n ? title\n : MarkdownUtils.getNewMarkdownTitle(usedTitles);\n const content = null;\n const config = {\n type: 'react-component' as const,\n component: MarkdownPanel.COMPONENT,\n props: {\n id: panelId,\n metadata,\n panelState: { content },\n localDashboardId: id,\n },\n title: panelTitle,\n id: panelId,\n };\n\n const { root } = layout;\n LayoutUtils.openComponent({\n root,\n config,\n focusElement,\n createNewStack,\n dragEvent,\n });\n },\n [id, layout, panelManager]\n );\n\n useEffect(\n function registerComponentsAndReturnCleanup() {\n const cleanups = [\n registerComponent(MarkdownPanel.COMPONENT, MarkdownPanel),\n ];\n\n return () => {\n cleanups.forEach(cleanup => cleanup());\n };\n },\n [registerComponent]\n );\n\n useListener(layout.eventHub, MarkdownEvent.OPEN, handleOpen);\n\n return null;\n}\n\nexport default MarkdownPlugin;\n"],"mappings":"AAAA,SAASA,WAAW,EAAEC,SAAS,QAAQ,OAAO;AAC9C,SAASC,MAAM,QAAQ,QAAQ;AAC/B,SACEC,4BAA4B,EAE5BC,WAAW,EACXC,WAAW,QACN,sBAAsB;AAAC,SACrBC,aAAa;AAAA,OACfC,aAAa;AAAA,OACbC,aAAa;AAQpB,OAAO,SAASC,cAAcA,CAACC,KAA0B,EAAsB;EAC7EP,4BAA4B,CAACO,KAAK,CAAC;EACnC,IAAM;IAAEC,EAAE;IAAEC,MAAM;IAAEC,YAAY;IAAEC;EAAkB,CAAC,GAAGJ,KAAK;EAE7D,IAAMK,UAAU,GAAGf,WAAW,CAC5B,YAOW;IAAA,IAPV;MACCgB,KAAK,GAAG,EAAE;MACVC,QAAQ,GAAG,CAAC,CAAC;MACbN,EAAE,EAAEO,OAAO,GAAGhB,MAAM,CAAC,CAAC;MACtBiB,YAAY,GAAGf,WAAW,CAACgB,sBAAsB;MACjDC,cAAc,GAAG,KAAK;MACtBC,SAAS,GAAGC;IACd,CAAC,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAD,SAAA,GAAAC,SAAA,MAAG,CAAC,CAAC;IACJ,IAAME,eAAe,GAAGb,YAAY,CAACc,2BAA2B,CAC9DrB,aAAa,CAACsB,SAChB,CAAC;IACD,IAAMC,UAAU,GAAGH,eAAe,CAACI,GAAG,CAACC,QAAQ;MAAA,IAAAC,eAAA;MAAA,QAAAA,eAAA,GAAID,QAAQ,CAACf,KAAK,cAAAgB,eAAA,cAAAA,eAAA,GAAI,EAAE;IAAA,EAAC;IACxE,IAAMC,UAAU,GACdjB,KAAK,IAAI,IAAI,IAAIA,KAAK,KAAK,EAAE,GACzBA,KAAK,GACLT,aAAa,CAAC2B,mBAAmB,CAACL,UAAU,CAAC;IACnD,IAAMM,OAAO,GAAG,IAAI;IACpB,IAAMC,MAAM,GAAG;MACbC,IAAI,EAAE,iBAA0B;MAChCC,SAAS,EAAEhC,aAAa,CAACsB,SAAS;MAClClB,KAAK,EAAE;QACLC,EAAE,EAAEO,OAAO;QACXD,QAAQ;QACRsB,UAAU,EAAE;UAAEJ;QAAQ,CAAC;QACvBK,gBAAgB,EAAE7B;MACpB,CAAC;MACDK,KAAK,EAAEiB,UAAU;MACjBtB,EAAE,EAAEO;IACN,CAAC;IAED,IAAM;MAAEuB;IAAK,CAAC,GAAG7B,MAAM;IACvBR,WAAW,CAACsC,aAAa,CAAC;MACxBD,IAAI;MACJL,MAAM;MACNjB,YAAY;MACZE,cAAc;MACdC;IACF,CAAC,CAAC;EACJ,CAAC,EACD,CAACX,EAAE,EAAEC,MAAM,EAAEC,YAAY,CAC3B,CAAC;EAEDZ,SAAS,CACP,SAAS0C,kCAAkCA,CAAA,EAAG;IAC5C,IAAMC,QAAQ,GAAG,CACf9B,iBAAiB,CAACR,aAAa,CAACsB,SAAS,EAAEtB,aAAa,CAAC,CAC1D;IAED,OAAO,MAAM;MACXsC,QAAQ,CAACC,OAAO,CAACC,OAAO,IAAIA,OAAO,CAAC,CAAC,CAAC;IACxC,CAAC;EACH,CAAC,EACD,CAAChC,iBAAiB,CACpB,CAAC;EAEDT,WAAW,CAACO,MAAM,CAACmC,QAAQ,EAAEvC,aAAa,CAACwC,IAAI,EAAEjC,UAAU,CAAC;EAE5D,OAAO,IAAI;AACb;AAEA,eAAeN,cAAc","ignoreList":[]}
1
+ {"version":3,"file":"MarkdownPlugin.js","names":["useCallback","useEffect","nanoid","assertIsDashboardPluginProps","LayoutUtils","useListener","MarkdownPanel","MarkdownUtils","MarkdownEvent","MarkdownPlugin","props","id","layout","panelManager","registerComponent","handleOpen","_ref","arguments","length","undefined","_ref$title","title","_ref$metadata","metadata","_ref$id","panelId","_ref$focusElement","focusElement","DEFAULT_FOCUS_SELECTOR","_ref$createNewStack","createNewStack","_ref$dragEvent","dragEvent","openedMarkdowns","getOpenedPanelConfigsOfType","COMPONENT","usedTitles","map","markdown","_markdown$title","panelTitle","getNewMarkdownTitle","content","config","type","component","panelState","localDashboardId","root","openComponent","registerComponentsAndReturnCleanup","cleanups","forEach","cleanup","eventHub","OPEN"],"sources":["../src/MarkdownPlugin.tsx"],"sourcesContent":["import { useCallback, useEffect } from 'react';\nimport { nanoid } from 'nanoid';\nimport {\n assertIsDashboardPluginProps,\n type DashboardPluginComponentProps,\n LayoutUtils,\n useListener,\n} from '@deephaven/dashboard';\nimport { MarkdownPanel } from './panels';\nimport MarkdownUtils from './controls/markdown/MarkdownUtils';\nimport MarkdownEvent from './events/MarkdownEvent';\n\nexport type MarkdownPluginProps = Partial<DashboardPluginComponentProps>;\n\nexport type MarkdownComponentState = {\n panelState?: { content: string } | null;\n};\n\nexport function MarkdownPlugin(props: MarkdownPluginProps): JSX.Element | null {\n assertIsDashboardPluginProps(props);\n const { id, layout, panelManager, registerComponent } = props;\n\n const handleOpen = useCallback(\n ({\n title = '',\n metadata = {},\n id: panelId = nanoid(),\n focusElement = LayoutUtils.DEFAULT_FOCUS_SELECTOR,\n createNewStack = false,\n dragEvent = undefined,\n } = {}) => {\n const openedMarkdowns = panelManager.getOpenedPanelConfigsOfType(\n MarkdownPanel.COMPONENT\n );\n const usedTitles = openedMarkdowns.map(markdown => markdown.title ?? '');\n const panelTitle =\n title != null && title !== ''\n ? title\n : MarkdownUtils.getNewMarkdownTitle(usedTitles);\n const content = null;\n const config = {\n type: 'react-component' as const,\n component: MarkdownPanel.COMPONENT,\n props: {\n id: panelId,\n metadata,\n panelState: { content },\n localDashboardId: id,\n },\n title: panelTitle,\n id: panelId,\n };\n\n const { root } = layout;\n LayoutUtils.openComponent({\n root,\n config,\n focusElement,\n createNewStack,\n dragEvent,\n });\n },\n [id, layout, panelManager]\n );\n\n useEffect(\n function registerComponentsAndReturnCleanup() {\n const cleanups = [\n registerComponent(MarkdownPanel.COMPONENT, MarkdownPanel),\n ];\n\n return () => {\n cleanups.forEach(cleanup => cleanup());\n };\n },\n [registerComponent]\n );\n\n useListener(layout.eventHub, MarkdownEvent.OPEN, handleOpen);\n\n return null;\n}\n\nexport default MarkdownPlugin;\n"],"mappings":"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","ignoreList":[]}
@@ -8,11 +8,9 @@ import { PandasPanel } from "./panels/index.js";
8
8
  import useHydrateGrid from "./useHydrateGrid.js";
9
9
  import { jsx as _jsx } from "react/jsx-runtime";
10
10
  export var PandasPanelPlugin = /*#__PURE__*/forwardRef((props, ref) => {
11
- var {
12
- localDashboardId,
13
- fetch,
14
- metadata
15
- } = props;
11
+ var localDashboardId = props.localDashboardId,
12
+ fetch = props.fetch,
13
+ metadata = props.metadata;
16
14
  var hydratedProps = useHydrateGrid(fetch, localDashboardId, metadata);
17
15
  return (
18
16
  /*#__PURE__*/
@@ -1 +1 @@
1
- {"version":3,"file":"PandasPanelPlugin.js","names":["forwardRef","PandasPanel","useHydrateGrid","jsx","_jsx","PandasPanelPlugin","props","ref","localDashboardId","fetch","metadata","hydratedProps","_objectSpread","displayName"],"sources":["../src/PandasPanelPlugin.tsx"],"sourcesContent":["import { forwardRef } from 'react';\nimport { type WidgetPanelProps } from '@deephaven/plugin';\nimport { type dh } from '@deephaven/jsapi-types';\nimport { PandasPanel } from './panels';\nimport useHydrateGrid from './useHydrateGrid';\n\nexport const PandasPanelPlugin = forwardRef(\n (props: WidgetPanelProps<dh.Table>, ref: React.Ref<PandasPanel>) => {\n const { localDashboardId, fetch, metadata } = props;\n const hydratedProps = useHydrateGrid(fetch, localDashboardId, metadata);\n\n return (\n // eslint-disable-next-line react/jsx-props-no-spreading\n <PandasPanel ref={ref} {...props} {...hydratedProps} />\n );\n }\n);\n\nPandasPanelPlugin.displayName = 'PandasPanelPlugin';\n\nexport default PandasPanelPlugin;\n"],"mappings":";;;;;AAAA,SAASA,UAAU,QAAQ,OAAO;AAAC,SAG1BC,WAAW;AAAA,OACbC,cAAc;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAErB,OAAO,IAAMC,iBAAiB,gBAAGL,UAAU,CACzC,CAACM,KAAiC,EAAEC,GAA2B,KAAK;EAClE,IAAM;IAAEC,gBAAgB;IAAEC,KAAK;IAAEC;EAAS,CAAC,GAAGJ,KAAK;EACnD,IAAMK,aAAa,GAAGT,cAAc,CAACO,KAAK,EAAED,gBAAgB,EAAEE,QAAQ,CAAC;EAEvE;IAAA;IACE;IACAN,IAAA,CAACH,WAAW,EAAAW,aAAA,CAAAA,aAAA;MAACL,GAAG,EAAEA;IAAI,GAAKD,KAAK,GAAMK,aAAa,CAAG;EAAC;AAE3D,CACF,CAAC;AAEDN,iBAAiB,CAACQ,WAAW,GAAG,mBAAmB;AAEnD,eAAeR,iBAAiB","ignoreList":[]}
1
+ {"version":3,"file":"PandasPanelPlugin.js","names":["forwardRef","PandasPanel","useHydrateGrid","jsx","_jsx","PandasPanelPlugin","props","ref","localDashboardId","fetch","metadata","hydratedProps","_objectSpread","displayName"],"sources":["../src/PandasPanelPlugin.tsx"],"sourcesContent":["import { forwardRef } from 'react';\nimport { type WidgetPanelProps } from '@deephaven/plugin';\nimport { type dh } from '@deephaven/jsapi-types';\nimport { PandasPanel } from './panels';\nimport useHydrateGrid from './useHydrateGrid';\n\nexport const PandasPanelPlugin = forwardRef(\n (props: WidgetPanelProps<dh.Table>, ref: React.Ref<PandasPanel>) => {\n const { localDashboardId, fetch, metadata } = props;\n const hydratedProps = useHydrateGrid(fetch, localDashboardId, metadata);\n\n return (\n // eslint-disable-next-line react/jsx-props-no-spreading\n <PandasPanel ref={ref} {...props} {...hydratedProps} />\n );\n }\n);\n\nPandasPanelPlugin.displayName = 'PandasPanelPlugin';\n\nexport default PandasPanelPlugin;\n"],"mappings":";;;;;AAAA,SAASA,UAAU,QAAQ,OAAO;AAAC,SAG1BC,WAAW;AAAA,OACbC,cAAc;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAErB,OAAO,IAAMC,iBAAiB,gBAAGL,UAAU,CACzC,CAACM,KAAiC,EAAEC,GAA2B,KAAK;EAClE,IAAQC,gBAAgB,GAAsBF,KAAK,CAA3CE,gBAAgB;IAAEC,KAAK,GAAeH,KAAK,CAAzBG,KAAK;IAAEC,QAAQ,GAAKJ,KAAK,CAAlBI,QAAQ;EACzC,IAAMC,aAAa,GAAGT,cAAc,CAACO,KAAK,EAAED,gBAAgB,EAAEE,QAAQ,CAAC;EAEvE;IAAA;IACE;IACAN,IAAA,CAACH,WAAW,EAAAW,aAAA,CAAAA,aAAA;MAACL,GAAG,EAAEA;IAAI,GAAKD,KAAK,GAAMK,aAAa,CAAG;EAAC;AAE3D,CACF,CAAC;AAEDN,iBAAiB,CAACQ,WAAW,GAAG,mBAAmB;AAEnD,eAAeR,iBAAiB","ignoreList":[]}
@@ -5,9 +5,7 @@ import { PandasReloadButton } from "./panels/PandasReloadButton.js";
5
5
  import { useIrisGridModel } from "./useIrisGridModel.js";
6
6
  import { jsx as _jsx } from "react/jsx-runtime";
7
7
  export function PandasWidgetPlugin(_ref) {
8
- var {
9
- fetch
10
- } = _ref;
8
+ var fetch = _ref.fetch;
11
9
  var fetchResult = useIrisGridModel(fetch);
12
10
  if (fetchResult.status === 'loading') {
13
11
  return /*#__PURE__*/_jsx(LoadingOverlay, {
@@ -22,10 +20,8 @@ export function PandasWidgetPlugin(_ref) {
22
20
  "data-testid": "pandas-widget-plugin-loading-error"
23
21
  });
24
22
  }
25
- var {
26
- model,
27
- reload
28
- } = fetchResult;
23
+ var model = fetchResult.model,
24
+ reload = fetchResult.reload;
29
25
  return /*#__PURE__*/_jsx(IrisGrid, {
30
26
  model: model,
31
27
  children: /*#__PURE__*/_jsx(PandasReloadButton, {