@deephaven/dashboard-core-plugins 0.109.1-beta.6 → 0.109.1-beta.7

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 (43) hide show
  1. package/dist/FilterEvents.d.ts +86 -0
  2. package/dist/FilterEvents.d.ts.map +1 -0
  3. package/dist/FilterEvents.js +78 -0
  4. package/dist/FilterEvents.js.map +1 -0
  5. package/dist/FilterPlugin.d.ts +1 -12
  6. package/dist/FilterPlugin.d.ts.map +1 -1
  7. package/dist/FilterPlugin.js +30 -23
  8. package/dist/FilterPlugin.js.map +1 -1
  9. package/dist/GridWidgetPlugin.d.ts.map +1 -1
  10. package/dist/GridWidgetPlugin.js +22 -4
  11. package/dist/GridWidgetPlugin.js.map +1 -1
  12. package/dist/index.d.ts +1 -0
  13. package/dist/index.d.ts.map +1 -1
  14. package/dist/index.js +1 -0
  15. package/dist/index.js.map +1 -1
  16. package/dist/linker/Linker.d.ts +3 -2
  17. package/dist/linker/Linker.d.ts.map +1 -1
  18. package/dist/linker/Linker.js +11 -2
  19. package/dist/linker/Linker.js.map +1 -1
  20. package/dist/linker/LinkerUtils.d.ts +2 -2
  21. package/dist/linker/LinkerUtils.d.ts.map +1 -1
  22. package/dist/linker/LinkerUtils.js.map +1 -1
  23. package/dist/panels/ChartPanel.d.ts.map +1 -1
  24. package/dist/panels/ChartPanel.js +4 -1
  25. package/dist/panels/ChartPanel.js.map +1 -1
  26. package/dist/panels/DropdownFilterPanel.d.ts.map +1 -1
  27. package/dist/panels/DropdownFilterPanel.js +7 -4
  28. package/dist/panels/DropdownFilterPanel.js.map +1 -1
  29. package/dist/panels/FilterSetManagerPanel.js.map +1 -1
  30. package/dist/panels/InputFilterPanel.d.ts +1 -1
  31. package/dist/panels/InputFilterPanel.d.ts.map +1 -1
  32. package/dist/panels/InputFilterPanel.js +8 -4
  33. package/dist/panels/InputFilterPanel.js.map +1 -1
  34. package/dist/panels/IrisGridPanel.d.ts.map +1 -1
  35. package/dist/panels/IrisGridPanel.js +11 -4
  36. package/dist/panels/IrisGridPanel.js.map +1 -1
  37. package/dist/redux/selectors.d.ts +1 -1
  38. package/dist/redux/selectors.js.map +1 -1
  39. package/dist/useDashboardColumnFilters.d.ts +17 -0
  40. package/dist/useDashboardColumnFilters.d.ts.map +1 -0
  41. package/dist/useDashboardColumnFilters.js +59 -0
  42. package/dist/useDashboardColumnFilters.js.map +1 -0
  43. package/package.json +24 -24
@@ -0,0 +1,86 @@
1
+ import { type dh } from '@deephaven/jsapi-types';
2
+ import type { PanelId } from '@deephaven/dashboard';
3
+ import type { WidgetId } from './panels';
4
+ export type FilterColumnSourceId = PanelId | WidgetId;
5
+ export type FilterColumn = {
6
+ name: string;
7
+ type: string;
8
+ };
9
+ export type FilterChangeEvent = FilterColumn & {
10
+ value: string;
11
+ timestamp: number;
12
+ excludePanelIds?: string[];
13
+ };
14
+ /**
15
+ * Listen for filter column changes
16
+ * @param eventEmitter The event emitter to emit the event on
17
+ * @param sourceId The source ID for the columns
18
+ * @param columns The columns available for filtering or null to remove the filter for the sourceId
19
+ */
20
+ export declare const listenForFilterColumnsChanged: import("@deephaven/golden-layout").EventListenFunction<[sourceId: FilterColumnSourceId, columns: readonly {
21
+ name: string;
22
+ type: string;
23
+ }[] | null]>;
24
+ /**
25
+ * Emit a filter columns changed event
26
+ * @param eventEmitter The event emitter to emit the event on
27
+ * @param sourceId The source ID for the columns
28
+ * @param columns The columns available for filtering or null to remove the filter for the sourceId
29
+ */
30
+ export declare const emitFilterColumnsChanged: import("@deephaven/golden-layout").EventEmitFunction<[sourceId: FilterColumnSourceId, columns: readonly {
31
+ name: string;
32
+ type: string;
33
+ }[] | null]>;
34
+ /**
35
+ * Use a filter columns change event listener
36
+ * @param eventEmitter The event emitter to emit the event on
37
+ * @param sourceId The source ID for the columns
38
+ * @param columns The columns available for filtering or null to remove the filter for the sourceId
39
+ */
40
+ export declare const useFilterColumnsChangedListener: import("@deephaven/golden-layout").EventListenerHook<[sourceId: FilterColumnSourceId, columns: readonly {
41
+ name: string;
42
+ type: string;
43
+ }[] | null]>;
44
+ /**
45
+ * Listen for filter table changes
46
+ * @param eventEmitter The event emitter to emit the event on
47
+ * @param sourceId The source ID for the table
48
+ * @param table The table available for filtering or null to remove the table for the sourceId
49
+ */
50
+ export declare const listenForFilterTableChanged: import("@deephaven/golden-layout").EventListenFunction<[sourceId: FilterColumnSourceId, table: dh.Table | null]>;
51
+ /**
52
+ * Emit a filter table changed event
53
+ * @param eventEmitter The event emitter to emit the event on
54
+ * @param sourceId The source ID for the table
55
+ * @param table The table available for filtering or null to remove the table for the sourceId
56
+ */
57
+ export declare const emitFilterTableChanged: import("@deephaven/golden-layout").EventEmitFunction<[sourceId: FilterColumnSourceId, table: dh.Table | null]>;
58
+ /**
59
+ * Use a filter table change event listener
60
+ * @param eventEmitter The event emitter to emit the event on
61
+ * @param sourceId The source ID for the table
62
+ * @param table The table available for filtering or null to remove the table for the sourceId
63
+ */
64
+ export declare const useFilterTableChangedListener: import("@deephaven/golden-layout").EventListenerHook<[sourceId: FilterColumnSourceId, table: dh.Table | null]>;
65
+ /**
66
+ * Listen for filter changes
67
+ * @param eventEmitter The event emitter to emit the event on
68
+ * @param sourceId The source ID for the filter
69
+ * @param filterChange The filter change event or null to remove the filter for the sourceId
70
+ */
71
+ export declare const listenForFilterChanged: import("@deephaven/golden-layout").EventListenFunction<[sourceId: FilterColumnSourceId, filterChange: FilterChangeEvent | FilterChangeEvent[] | null]>;
72
+ /**
73
+ * Emit a filter change event
74
+ * @param eventEmitter The event emitter to emit the event on
75
+ * @param sourceId The source ID for the filter
76
+ * @param filterChange The filter change event or null to remove the filter for the sourceId
77
+ */
78
+ export declare const emitFilterChanged: import("@deephaven/golden-layout").EventEmitFunction<[sourceId: FilterColumnSourceId, filterChange: FilterChangeEvent | FilterChangeEvent[] | null]>;
79
+ /**
80
+ * Use a filter change event listener
81
+ * @param eventEmitter The event emitter to emit the event on
82
+ * @param sourceId The source ID for the filter
83
+ * @param filterChange The filter change event or null to remove the filter for the sourceId
84
+ */
85
+ export declare const useFilterChangedListener: import("@deephaven/golden-layout").EventListenerHook<[sourceId: FilterColumnSourceId, filterChange: FilterChangeEvent | FilterChangeEvent[] | null]>;
86
+ //# sourceMappingURL=FilterEvents.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FilterEvents.d.ts","sourceRoot":"","sources":["../src/FilterEvents.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAEpD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,MAAM,oBAAoB,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEtD,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG,YAAY,GAAG;IAC7C,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;CAC5B,CAAC;AASF;;;;;GAKG;AACH,eAAO,MAAM,6BAA6B;UAVZ,MAAM;UAAQ,MAAM;YAUyB,CAAC;AAE5E;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB;UAlBP,MAAM;UAAQ,MAAM;YAkBkB,CAAC;AAErE;;;;;GAKG;AACH,eAAO,MAAM,+BAA+B;UA1Bd,MAAM;UAAQ,MAAM;YA2Bb,CAAC;AAMtC;;;;;GAKG;AACH,eAAO,MAAM,2BAA2B,kHAA+B,CAAC;AAExE;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,gHAA6B,CAAC;AAEjE;;;;;GAKG;AACH,eAAO,MAAM,6BAA6B,gHAAoC,CAAC;AAS/E;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,wJAA0B,CAAC;AAE9D;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,sJAAwB,CAAC;AAEvD;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,sJAA+B,CAAC"}
@@ -0,0 +1,78 @@
1
+ import { makeEventFunctions } from '@deephaven/golden-layout';
2
+ import { InputFilterEvent } from "./events/index.js";
3
+ var filterColumnsChangedFns = makeEventFunctions(InputFilterEvent.COLUMNS_CHANGED);
4
+
5
+ /**
6
+ * Listen for filter column changes
7
+ * @param eventEmitter The event emitter to emit the event on
8
+ * @param sourceId The source ID for the columns
9
+ * @param columns The columns available for filtering or null to remove the filter for the sourceId
10
+ */
11
+ export var listenForFilterColumnsChanged = filterColumnsChangedFns.listen;
12
+
13
+ /**
14
+ * Emit a filter columns changed event
15
+ * @param eventEmitter The event emitter to emit the event on
16
+ * @param sourceId The source ID for the columns
17
+ * @param columns The columns available for filtering or null to remove the filter for the sourceId
18
+ */
19
+ export var emitFilterColumnsChanged = filterColumnsChangedFns.emit;
20
+
21
+ /**
22
+ * Use a filter columns change event listener
23
+ * @param eventEmitter The event emitter to emit the event on
24
+ * @param sourceId The source ID for the columns
25
+ * @param columns The columns available for filtering or null to remove the filter for the sourceId
26
+ */
27
+ export var useFilterColumnsChangedListener = filterColumnsChangedFns.useListener;
28
+ var filterTableChangedFns = makeEventFunctions(InputFilterEvent.TABLE_CHANGED);
29
+
30
+ /**
31
+ * Listen for filter table changes
32
+ * @param eventEmitter The event emitter to emit the event on
33
+ * @param sourceId The source ID for the table
34
+ * @param table The table available for filtering or null to remove the table for the sourceId
35
+ */
36
+ export var listenForFilterTableChanged = filterTableChangedFns.listen;
37
+
38
+ /**
39
+ * Emit a filter table changed event
40
+ * @param eventEmitter The event emitter to emit the event on
41
+ * @param sourceId The source ID for the table
42
+ * @param table The table available for filtering or null to remove the table for the sourceId
43
+ */
44
+ export var emitFilterTableChanged = filterTableChangedFns.emit;
45
+
46
+ /**
47
+ * Use a filter table change event listener
48
+ * @param eventEmitter The event emitter to emit the event on
49
+ * @param sourceId The source ID for the table
50
+ * @param table The table available for filtering or null to remove the table for the sourceId
51
+ */
52
+ export var useFilterTableChangedListener = filterTableChangedFns.useListener;
53
+ var filterChangedFns = makeEventFunctions(InputFilterEvent.FILTERS_CHANGED);
54
+
55
+ /**
56
+ * Listen for filter changes
57
+ * @param eventEmitter The event emitter to emit the event on
58
+ * @param sourceId The source ID for the filter
59
+ * @param filterChange The filter change event or null to remove the filter for the sourceId
60
+ */
61
+ export var listenForFilterChanged = filterChangedFns.listen;
62
+
63
+ /**
64
+ * Emit a filter change event
65
+ * @param eventEmitter The event emitter to emit the event on
66
+ * @param sourceId The source ID for the filter
67
+ * @param filterChange The filter change event or null to remove the filter for the sourceId
68
+ */
69
+ export var emitFilterChanged = filterChangedFns.emit;
70
+
71
+ /**
72
+ * Use a filter change event listener
73
+ * @param eventEmitter The event emitter to emit the event on
74
+ * @param sourceId The source ID for the filter
75
+ * @param filterChange The filter change event or null to remove the filter for the sourceId
76
+ */
77
+ export var useFilterChangedListener = filterChangedFns.useListener; // A panel or widget can have columns for filters
78
+ //# sourceMappingURL=FilterEvents.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FilterEvents.js","names":["makeEventFunctions","InputFilterEvent","filterColumnsChangedFns","COLUMNS_CHANGED","listenForFilterColumnsChanged","listen","emitFilterColumnsChanged","emit","useFilterColumnsChangedListener","useListener","filterTableChangedFns","TABLE_CHANGED","listenForFilterTableChanged","emitFilterTableChanged","useFilterTableChangedListener","filterChangedFns","FILTERS_CHANGED","listenForFilterChanged","emitFilterChanged","useFilterChangedListener"],"sources":["../src/FilterEvents.ts"],"sourcesContent":["import { makeEventFunctions } from '@deephaven/golden-layout';\nimport { type dh } from '@deephaven/jsapi-types';\nimport type { PanelId } from '@deephaven/dashboard';\nimport { InputFilterEvent } from './events';\nimport type { WidgetId } from './panels';\n\nexport type FilterColumnSourceId = PanelId | WidgetId;\n\nexport type FilterColumn = {\n name: string;\n type: string;\n};\n\nexport type FilterChangeEvent = FilterColumn & {\n value: string;\n timestamp: number;\n excludePanelIds?: string[];\n};\n\nconst filterColumnsChangedFns = makeEventFunctions<\n [\n sourceId: FilterColumnSourceId,\n columns: readonly { name: string; type: string }[] | null,\n ]\n>(InputFilterEvent.COLUMNS_CHANGED);\n\n/**\n * Listen for filter column changes\n * @param eventEmitter The event emitter to emit the event on\n * @param sourceId The source ID for the columns\n * @param columns The columns available for filtering or null to remove the filter for the sourceId\n */\nexport const listenForFilterColumnsChanged = filterColumnsChangedFns.listen;\n\n/**\n * Emit a filter columns changed event\n * @param eventEmitter The event emitter to emit the event on\n * @param sourceId The source ID for the columns\n * @param columns The columns available for filtering or null to remove the filter for the sourceId\n */\nexport const emitFilterColumnsChanged = filterColumnsChangedFns.emit;\n\n/**\n * Use a filter columns change event listener\n * @param eventEmitter The event emitter to emit the event on\n * @param sourceId The source ID for the columns\n * @param columns The columns available for filtering or null to remove the filter for the sourceId\n */\nexport const useFilterColumnsChangedListener =\n filterColumnsChangedFns.useListener;\n\nconst filterTableChangedFns = makeEventFunctions<\n [sourceId: FilterColumnSourceId, table: dh.Table | null]\n>(InputFilterEvent.TABLE_CHANGED);\n\n/**\n * Listen for filter table changes\n * @param eventEmitter The event emitter to emit the event on\n * @param sourceId The source ID for the table\n * @param table The table available for filtering or null to remove the table for the sourceId\n */\nexport const listenForFilterTableChanged = filterTableChangedFns.listen;\n\n/**\n * Emit a filter table changed event\n * @param eventEmitter The event emitter to emit the event on\n * @param sourceId The source ID for the table\n * @param table The table available for filtering or null to remove the table for the sourceId\n */\nexport const emitFilterTableChanged = filterTableChangedFns.emit;\n\n/**\n * Use a filter table change event listener\n * @param eventEmitter The event emitter to emit the event on\n * @param sourceId The source ID for the table\n * @param table The table available for filtering or null to remove the table for the sourceId\n */\nexport const useFilterTableChangedListener = filterTableChangedFns.useListener;\n\nconst filterChangedFns = makeEventFunctions<\n [\n sourceId: FilterColumnSourceId,\n filterChange: FilterChangeEvent | FilterChangeEvent[] | null,\n ]\n>(InputFilterEvent.FILTERS_CHANGED);\n\n/**\n * Listen for filter changes\n * @param eventEmitter The event emitter to emit the event on\n * @param sourceId The source ID for the filter\n * @param filterChange The filter change event or null to remove the filter for the sourceId\n */\nexport const listenForFilterChanged = filterChangedFns.listen;\n\n/**\n * Emit a filter change event\n * @param eventEmitter The event emitter to emit the event on\n * @param sourceId The source ID for the filter\n * @param filterChange The filter change event or null to remove the filter for the sourceId\n */\nexport const emitFilterChanged = filterChangedFns.emit;\n\n/**\n * Use a filter change event listener\n * @param eventEmitter The event emitter to emit the event on\n * @param sourceId The source ID for the filter\n * @param filterChange The filter change event or null to remove the filter for the sourceId\n */\nexport const useFilterChangedListener = filterChangedFns.useListener; // A panel or widget can have columns for filters\n"],"mappings":"AAAA,SAASA,kBAAkB,QAAQ,0BAA0B;AAAC,SAGrDC,gBAAgB;AAgBzB,IAAMC,uBAAuB,GAAGF,kBAAkB,CAKhDC,gBAAgB,CAACE,eAAe,CAAC;;AAEnC;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,IAAMC,6BAA6B,GAAGF,uBAAuB,CAACG,MAAM;;AAE3E;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,IAAMC,wBAAwB,GAAGJ,uBAAuB,CAACK,IAAI;;AAEpE;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,IAAMC,+BAA+B,GAC1CN,uBAAuB,CAACO,WAAW;AAErC,IAAMC,qBAAqB,GAAGV,kBAAkB,CAE9CC,gBAAgB,CAACU,aAAa,CAAC;;AAEjC;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,IAAMC,2BAA2B,GAAGF,qBAAqB,CAACL,MAAM;;AAEvE;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,IAAMQ,sBAAsB,GAAGH,qBAAqB,CAACH,IAAI;;AAEhE;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,IAAMO,6BAA6B,GAAGJ,qBAAqB,CAACD,WAAW;AAE9E,IAAMM,gBAAgB,GAAGf,kBAAkB,CAKzCC,gBAAgB,CAACe,eAAe,CAAC;;AAEnC;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,IAAMC,sBAAsB,GAAGF,gBAAgB,CAACV,MAAM;;AAE7D;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,IAAMa,iBAAiB,GAAGH,gBAAgB,CAACR,IAAI;;AAEtD;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,IAAMY,wBAAwB,GAAGJ,gBAAgB,CAACN,WAAW,CAAC,CAAC"}
@@ -1,15 +1,4 @@
1
- import { type DashboardPluginComponentProps, type PanelId } from '@deephaven/dashboard';
2
- import { type WidgetId } from './panels';
3
- type Column = {
4
- name: string;
5
- type: string;
6
- };
7
- export type FilterColumnSourceId = PanelId | WidgetId;
8
- export type FilterChangeEvent = Column & {
9
- value: string;
10
- timestamp: number;
11
- excludePanelIds?: string[];
12
- };
1
+ import { type DashboardPluginComponentProps } from '@deephaven/dashboard';
13
2
  export type FilterPluginProps = Partial<DashboardPluginComponentProps>;
14
3
  export declare function FilterPlugin(props: FilterPluginProps): JSX.Element | null;
15
4
  export default FilterPlugin;
@@ -1 +1 @@
1
- {"version":3,"file":"FilterPlugin.d.ts","sourceRoot":"","sources":["../src/FilterPlugin.tsx"],"names":[],"mappings":"AAGA,OAAO,EAEL,KAAK,6BAA6B,EAGlC,KAAK,OAAO,EAGb,MAAM,sBAAsB,CAAC;AAI9B,OAAO,EAIL,KAAK,QAAQ,EACd,MAAM,UAAU,CAAC;AAIlB,KAAK,MAAM,GAAG;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAGF,MAAM,MAAM,oBAAoB,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEtD,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG,OAAO,CAAC,6BAA6B,CAAC,CAAC;AAMvE,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,GAAG,CAAC,OAAO,GAAG,IAAI,CAmPzE;AAED,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"FilterPlugin.d.ts","sourceRoot":"","sources":["../src/FilterPlugin.tsx"],"names":[],"mappings":"AAGA,OAAO,EAEL,KAAK,6BAA6B,EAMnC,MAAM,sBAAsB,CAAC;AAqB9B,MAAM,MAAM,iBAAiB,GAAG,OAAO,CAAC,6BAA6B,CAAC,CAAC;AAEvE,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,GAAG,CAAC,OAAO,GAAG,IAAI,CA8PzE;AAED,eAAe,YAAY,CAAC"}
@@ -6,13 +6,8 @@ import Log from '@deephaven/log';
6
6
  import { TextUtils } from '@deephaven/utils';
7
7
  import { InputFilterEvent } from "./events/index.js";
8
8
  import { DropdownFilterPanel, FilterSetManagerPanel, InputFilterPanel } from "./panels/index.js";
9
+ import { useFilterChangedListener, useFilterColumnsChangedListener, useFilterTableChangedListener } from "./FilterEvents.js";
9
10
  var log = Log.module('FilterPlugin');
10
-
11
- // A panel or widget can have columns for filters
12
-
13
- function flattenArray(accumulator, currentValue) {
14
- return accumulator.concat(currentValue);
15
- }
16
11
  export function FilterPlugin(props) {
17
12
  assertIsDashboardPluginProps(props);
18
13
  var {
@@ -25,7 +20,7 @@ export function FilterPlugin(props) {
25
20
  var [panelFilters] = useState(() => new Map());
26
21
  var [panelTables] = useState(() => new Map());
27
22
  var sendUpdate = useCallback(() => {
28
- var columns = Array.from(panelColumns.values()).reduce(flattenArray, []).sort((a, b) => {
23
+ var columns = Array.from(panelColumns.values()).flat().sort((a, b) => {
29
24
  var aName = TextUtils.toLower(a.name);
30
25
  var bName = TextUtils.toLower(b.name);
31
26
  if (aName !== bName) {
@@ -43,7 +38,7 @@ export function FilterPlugin(props) {
43
38
  }
44
39
  return array;
45
40
  }, []);
46
- var filters = Array.from(panelFilters.values()).reduce(flattenArray, []).sort((a, b) => a.timestamp - b.timestamp);
41
+ var filters = Array.from(panelFilters.values()).flat().sort((a, b) => a.timestamp - b.timestamp);
47
42
  var tableMap = new Map(panelTables);
48
43
  log.debug('sendUpdate', {
49
44
  columns,
@@ -60,27 +55,39 @@ export function FilterPlugin(props) {
60
55
  /**
61
56
  * Handler for the COLUMNS_CHANGED event.
62
57
  * @param sourceId The id of the component that's emitting the filter change
63
- * @param columns The columns in this panel
58
+ * @param columns The columns in this panel. Null to clear the columns.
64
59
  */
65
60
  var handleColumnsChanged = useCallback((sourceId, columns) => {
66
61
  log.debug2('handleColumnsChanged', sourceId, columns);
67
- panelColumns.set(sourceId, [].concat(columns));
62
+ if (columns == null) {
63
+ panelColumns.delete(sourceId);
64
+ } else {
65
+ panelColumns.set(sourceId, [].concat(columns));
66
+ }
68
67
  sendUpdate();
69
68
  }, [panelColumns, sendUpdate]);
70
69
 
71
70
  /**
72
71
  * Handler for the FILTERS_CHANGED event.
73
- * @param {Component} panel The component that's emitting the filter change
74
- * @param {FilterChangeEvent|Array<FilterChangeEvent>} filters The input filters set by the panel
72
+ * @param sourceId The id of the component that's emitting the filter change
73
+ * @param filters The input filters set by the panel
75
74
  */
76
- var handleFiltersChanged = useCallback((panel, filters) => {
77
- log.debug2('handleFiltersChanged', panel, filters);
78
- panelFilters.set(panel, [].concat(filters));
75
+ var handleFiltersChanged = useCallback((sourceId, filters) => {
76
+ log.debug2('handleFiltersChanged', sourceId, filters);
77
+ if (filters == null) {
78
+ panelFilters.delete(sourceId);
79
+ } else {
80
+ panelFilters.set(sourceId, [].concat(filters !== null && filters !== void 0 ? filters : []));
81
+ }
79
82
  sendUpdate();
80
83
  }, [panelFilters, sendUpdate]);
81
- var handleTableChanged = useCallback((panel, table) => {
82
- log.debug2('handleTableChanged', panel, table);
83
- panelTables.set(LayoutUtils.getIdFromPanel(panel), table);
84
+ var handleTableChanged = useCallback((sourceId, table) => {
85
+ log.debug2('handleTableChanged', sourceId, table);
86
+ if (table == null) {
87
+ panelTables.delete(sourceId);
88
+ } else {
89
+ panelTables.set(sourceId, table);
90
+ }
84
91
  sendUpdate();
85
92
  }, [panelTables, sendUpdate]);
86
93
  var handlePanelUnmount = useCallback(panel => {
@@ -88,9 +95,9 @@ export function FilterPlugin(props) {
88
95
  var panelId = LayoutUtils.getIdFromPanel(panel);
89
96
  if (panelId != null) {
90
97
  panelColumns.delete(panelId);
98
+ panelTables.delete(panelId);
99
+ panelFilters.delete(panelId);
91
100
  }
92
- panelFilters.delete(panel);
93
- panelTables.delete(panelId);
94
101
  sendUpdate();
95
102
  }, [panelColumns, panelFilters, panelTables, sendUpdate]);
96
103
  var handleOpenDropdown = useCallback(_ref => {
@@ -198,9 +205,9 @@ export function FilterPlugin(props) {
198
205
  cleanups.forEach(cleanup => cleanup());
199
206
  };
200
207
  }, [registerComponent]);
201
- useListener(layout.eventHub, InputFilterEvent.COLUMNS_CHANGED, handleColumnsChanged);
202
- useListener(layout.eventHub, InputFilterEvent.FILTERS_CHANGED, handleFiltersChanged);
203
- useListener(layout.eventHub, InputFilterEvent.TABLE_CHANGED, handleTableChanged);
208
+ useFilterColumnsChangedListener(layout.eventHub, handleColumnsChanged);
209
+ useFilterChangedListener(layout.eventHub, handleFiltersChanged);
210
+ useFilterTableChangedListener(layout.eventHub, handleTableChanged);
204
211
  useListener(layout.eventHub, InputFilterEvent.OPEN_DROPDOWN, handleOpenDropdown);
205
212
  useListener(layout.eventHub, InputFilterEvent.OPEN_INPUT, handleOpenInput);
206
213
  useListener(layout.eventHub, InputFilterEvent.OPEN_FILTER_SET_MANAGER, handleOpenFilterSetManager);
@@ -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","log","module","flattenArray","accumulator","currentValue","concat","FilterPlugin","props","id","localDashboardId","layout","registerComponent","dispatch","panelColumns","Map","panelFilters","panelTables","sendUpdate","columns","Array","from","values","reduce","sort","a","b","aName","toLower","name","bName","aType","type","bType","array","column","length","push","filters","timestamp","tableMap","debug","handleColumnsChanged","sourceId","debug2","set","handleFiltersChanged","panel","handleTableChanged","table","getIdFromPanel","handlePanelUnmount","panelId","delete","handleOpenDropdown","_ref","title","metadata","panelState","focusElement","DEFAULT_FOCUS_SELECTOR","createNewStack","dragEvent","config","component","COMPONENT","root","openComponent","handleOpenInput","_ref2","undefined","handleOpenFilterSetManager","_ref3","registerComponentsAndReturnCleanup","cleanups","forEach","cleanup","eventHub","COLUMNS_CHANGED","FILTERS_CHANGED","TABLE_CHANGED","OPEN_DROPDOWN","OPEN_INPUT","OPEN_FILTER_SET_MANAGER","UNMOUNT"],"sources":["../src/FilterPlugin.tsx"],"sourcesContent":["import { type Component, useCallback, useEffect, useState } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { nanoid } from 'nanoid';\nimport {\n assertIsDashboardPluginProps,\n type DashboardPluginComponentProps,\n LayoutUtils,\n PanelEvent,\n type PanelId,\n updateDashboardData,\n useListener,\n} from '@deephaven/dashboard';\nimport Log from '@deephaven/log';\nimport { TextUtils } from '@deephaven/utils';\nimport { InputFilterEvent } from './events';\nimport {\n DropdownFilterPanel,\n FilterSetManagerPanel,\n InputFilterPanel,\n type WidgetId,\n} from './panels';\n\nconst log = Log.module('FilterPlugin');\n\ntype Column = {\n name: string;\n type: string;\n};\n\n// A panel or widget can have columns for filters\nexport type FilterColumnSourceId = PanelId | WidgetId;\n\nexport type FilterChangeEvent = Column & {\n value: string;\n timestamp: number;\n excludePanelIds?: string[];\n};\n\nexport type FilterPluginProps = Partial<DashboardPluginComponentProps>;\n\nfunction flattenArray<T>(accumulator: T[], currentValue: T | T[]): T[] {\n return accumulator.concat(currentValue);\n}\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, Column[]>()\n );\n const [panelFilters] = useState(\n () => new Map<Component, FilterChangeEvent[]>()\n );\n const [panelTables] = useState(() => new Map());\n\n const sendUpdate = useCallback(() => {\n const columns = Array.from(panelColumns.values())\n .reduce(flattenArray, [] as Column[])\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 Column[]);\n\n const filters = Array.from(panelFilters.values())\n .reduce(flattenArray, [] as FilterChangeEvent[])\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\n */\n const handleColumnsChanged = useCallback(\n (sourceId: FilterColumnSourceId, columns: Column | Column[]) => {\n log.debug2('handleColumnsChanged', sourceId, columns);\n panelColumns.set(sourceId, ([] as Column[]).concat(columns));\n sendUpdate();\n },\n [panelColumns, sendUpdate]\n );\n\n /**\n * Handler for the FILTERS_CHANGED event.\n * @param {Component} panel The component that's emitting the filter change\n * @param {FilterChangeEvent|Array<FilterChangeEvent>} filters The input filters set by the panel\n */\n const handleFiltersChanged = useCallback(\n (panel, filters) => {\n log.debug2('handleFiltersChanged', panel, filters);\n panelFilters.set(panel, [].concat(filters) as FilterChangeEvent[]);\n sendUpdate();\n },\n [panelFilters, sendUpdate]\n );\n\n const handleTableChanged = useCallback(\n (panel, table) => {\n log.debug2('handleTableChanged', panel, table);\n panelTables.set(LayoutUtils.getIdFromPanel(panel), table);\n sendUpdate();\n },\n [panelTables, sendUpdate]\n );\n\n const handlePanelUnmount = useCallback(\n panel => {\n log.debug2('handlePanelUnmount', panel);\n const panelId = LayoutUtils.getIdFromPanel(panel);\n if (panelId != null) {\n panelColumns.delete(panelId);\n }\n panelFilters.delete(panel);\n panelTables.delete(panelId);\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 = null,\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 = null,\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 useListener(\n layout.eventHub,\n InputFilterEvent.COLUMNS_CHANGED,\n handleColumnsChanged\n );\n useListener(\n layout.eventHub,\n InputFilterEvent.FILTERS_CHANGED,\n handleFiltersChanged\n );\n useListener(\n layout.eventHub,\n InputFilterEvent.TABLE_CHANGED,\n handleTableChanged\n );\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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"}
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","config","component","COMPONENT","root","openComponent","handleOpenInput","_ref2","undefined","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 = null,\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 = null,\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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"}
@@ -1 +1 @@
1
- {"version":3,"file":"GridWidgetPlugin.d.ts","sourceRoot":"","sources":["../src/GridWidgetPlugin.tsx"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,oBAAoB,EAE1B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,KAAK,EAAE,IAAI,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAiB3D,wBAAgB,gBAAgB,CAAC,EAC/B,KAAK,GACN,EAAE,oBAAoB,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,OAAO,GAAG,IAAI,CAmFzD;AAED,eAAe,gBAAgB,CAAC"}
1
+ {"version":3,"file":"GridWidgetPlugin.d.ts","sourceRoot":"","sources":["../src/GridWidgetPlugin.tsx"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,oBAAoB,EAE1B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,KAAK,EAAE,IAAI,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAsB3D,wBAAgB,gBAAgB,CAAC,EAC/B,KAAK,GACN,EAAE,oBAAoB,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,OAAO,GAAG,IAAI,CA6GzD;AAED,eAAe,gBAAgB,CAAC"}
@@ -5,19 +5,25 @@ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol"
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
6
  import { useCallback, useMemo, useRef } from 'react';
7
7
  import { usePersistentState } from '@deephaven/plugin';
8
- import { IrisGrid, IrisGridCacheUtils, IrisGridUtils } from '@deephaven/iris-grid';
8
+ import { IrisGrid, IrisGridCacheUtils, IrisGridUtils, isIrisGridTableModelTemplate } from '@deephaven/iris-grid';
9
9
  import { useSelector } from 'react-redux';
10
10
  import { getSettings } from '@deephaven/redux';
11
11
  import { LoadingOverlay } from '@deephaven/components';
12
- import { getErrorMessage } from '@deephaven/utils';
12
+ import { useLayoutManager, useListener } from '@deephaven/dashboard';
13
+ import { EMPTY_ARRAY, getErrorMessage } from '@deephaven/utils';
13
14
  import { useApi } from '@deephaven/jsapi-bootstrap';
14
15
  import { useIrisGridModel } from "./useIrisGridModel.js";
16
+ import useDashboardColumnFilters from "./useDashboardColumnFilters.js";
17
+ import { InputFilterEvent } from "./events/index.js";
15
18
  import { jsx as _jsx } from "react/jsx-runtime";
16
19
  export function GridWidgetPlugin(_ref) {
17
20
  var {
18
21
  fetch
19
22
  } = _ref;
20
23
  var settings = useSelector(getSettings);
24
+ var {
25
+ eventHub
26
+ } = useLayoutManager();
21
27
  var fetchResult = useIrisGridModel(fetch);
22
28
  var dh = useApi();
23
29
  var irisGridUtils = useMemo(() => new IrisGridUtils(dh), [dh]);
@@ -40,6 +46,15 @@ export function GridWidgetPlugin(_ref) {
40
46
  var newState = dehydrateIrisGridState(fetchResult.model, irisGridState, gridState);
41
47
  setState(newState);
42
48
  }, [fetchResult, setState, dehydrateIrisGridState]);
49
+ var inputFilters = useDashboardColumnFilters(fetchResult.status === 'success' ? fetchResult.model.columns : EMPTY_ARRAY, fetchResult.status === 'success' && isIrisGridTableModelTemplate(fetchResult.model) ? fetchResult.model.table : undefined);
50
+ var irisGridRef = useRef(null);
51
+ var handleClearAllFilters = useCallback(() => {
52
+ if (irisGridRef.current == null) {
53
+ return;
54
+ }
55
+ irisGridRef.current.clearAllFilters();
56
+ }, []);
57
+ useListener(eventHub, InputFilterEvent.CLEAR_ALL_FILTERS, handleClearAllFilters);
43
58
  if (fetchResult.status === 'loading') {
44
59
  return /*#__PURE__*/_jsx(LoadingOverlay, {
45
60
  isLoading: true
@@ -54,12 +69,15 @@ export function GridWidgetPlugin(_ref) {
54
69
  var {
55
70
  model
56
71
  } = fetchResult;
57
- return /*#__PURE__*/_jsx(IrisGrid, _objectSpread({
72
+ return /*#__PURE__*/_jsx(IrisGrid, _objectSpread(_objectSpread({
73
+ ref: irisGridRef,
58
74
  model: model,
59
75
  settings: settings,
60
76
  onStateChange: handleIrisGridChange
61
77
  // eslint-disable-next-line react/jsx-props-no-spreading
62
- }, hydratedState));
78
+ }, hydratedState), {}, {
79
+ inputFilters: inputFilters
80
+ }));
63
81
  }
64
82
  export default GridWidgetPlugin;
65
83
  //# sourceMappingURL=GridWidgetPlugin.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"GridWidgetPlugin.js","names":["useCallback","useMemo","useRef","usePersistentState","IrisGrid","IrisGridCacheUtils","IrisGridUtils","useSelector","getSettings","LoadingOverlay","getErrorMessage","useApi","useIrisGridModel","jsx","_jsx","GridWidgetPlugin","_ref","fetch","settings","fetchResult","dh","irisGridUtils","state","setState","undefined","version","type","initialState","hydratedState","status","current","_objectSpread","hydrateIrisGridState","model","hydrateGridState","dehydrateIrisGridState","makeMemoizedCombinedGridStateDehydrator","handleIrisGridChange","irisGridState","gridState","newState","isLoading","errorMessage","error","onStateChange"],"sources":["../src/GridWidgetPlugin.tsx"],"sourcesContent":["import { useCallback, useMemo, useRef } from 'react';\nimport {\n type WidgetComponentProps,\n usePersistentState,\n} 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 IrisGridUtils,\n} from '@deephaven/iris-grid';\nimport { useSelector } from 'react-redux';\nimport { getSettings, type RootState } from '@deephaven/redux';\nimport { LoadingOverlay } from '@deephaven/components';\nimport { getErrorMessage } from '@deephaven/utils';\nimport { useApi } from '@deephaven/jsapi-bootstrap';\nimport { type GridState } from '@deephaven/grid';\nimport { useIrisGridModel } from './useIrisGridModel';\n\nexport function GridWidgetPlugin({\n fetch,\n}: WidgetComponentProps<DhType.Table>): JSX.Element | null {\n const settings = useSelector(getSettings<RootState>);\n\n const fetchResult = useIrisGridModel(fetch);\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 if (fetchResult.status === 'loading') {\n return <LoadingOverlay isLoading />;\n }\n\n if (fetchResult.status === 'error') {\n return (\n <LoadingOverlay\n errorMessage={getErrorMessage(fetchResult.error)}\n isLoading={false}\n />\n );\n }\n\n const { model } = fetchResult;\n return (\n <IrisGrid\n model={model}\n settings={settings}\n onStateChange={handleIrisGridChange}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...hydratedState}\n />\n );\n}\n\nexport default GridWidgetPlugin;\n"],"mappings":"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"}
1
+ {"version":3,"file":"GridWidgetPlugin.js","names":["useCallback","useMemo","useRef","usePersistentState","IrisGrid","IrisGridCacheUtils","IrisGridUtils","isIrisGridTableModelTemplate","useSelector","getSettings","LoadingOverlay","useLayoutManager","useListener","EMPTY_ARRAY","getErrorMessage","useApi","useIrisGridModel","useDashboardColumnFilters","InputFilterEvent","jsx","_jsx","GridWidgetPlugin","_ref","fetch","settings","eventHub","fetchResult","dh","irisGridUtils","state","setState","undefined","version","type","initialState","hydratedState","status","current","_objectSpread","hydrateIrisGridState","model","hydrateGridState","dehydrateIrisGridState","makeMemoizedCombinedGridStateDehydrator","handleIrisGridChange","irisGridState","gridState","newState","inputFilters","columns","table","irisGridRef","handleClearAllFilters","clearAllFilters","CLEAR_ALL_FILTERS","isLoading","errorMessage","error","ref","onStateChange"],"sources":["../src/GridWidgetPlugin.tsx"],"sourcesContent":["import { useCallback, useMemo, useRef } from 'react';\nimport {\n type WidgetComponentProps,\n usePersistentState,\n} 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 IrisGridUtils,\n isIrisGridTableModelTemplate,\n} from '@deephaven/iris-grid';\nimport { useSelector } from 'react-redux';\nimport { getSettings, type RootState } from '@deephaven/redux';\nimport { LoadingOverlay } from '@deephaven/components';\nimport { useLayoutManager, useListener } from '@deephaven/dashboard';\nimport { EMPTY_ARRAY, getErrorMessage } from '@deephaven/utils';\nimport { useApi } from '@deephaven/jsapi-bootstrap';\nimport { type GridState } from '@deephaven/grid';\nimport { useIrisGridModel } from './useIrisGridModel';\nimport useDashboardColumnFilters from './useDashboardColumnFilters';\nimport { InputFilterEvent } from './events';\n\nexport function GridWidgetPlugin({\n fetch,\n}: WidgetComponentProps<DhType.Table>): JSX.Element | null {\n const settings = useSelector(getSettings<RootState>);\n const { eventHub } = useLayoutManager();\n\n const fetchResult = useIrisGridModel(fetch);\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 fetchResult.status === 'success' ? fetchResult.model.columns : EMPTY_ARRAY,\n fetchResult.status === 'success' &&\n isIrisGridTableModelTemplate(fetchResult.model)\n ? fetchResult.model.table\n : undefined\n );\n\n const irisGridRef = useRef<IrisGridType | null>(null);\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 if (fetchResult.status === 'loading') {\n return <LoadingOverlay isLoading />;\n }\n\n if (fetchResult.status === 'error') {\n return (\n <LoadingOverlay\n errorMessage={getErrorMessage(fetchResult.error)}\n isLoading={false}\n />\n );\n }\n\n const { model } = fetchResult;\n return (\n <IrisGrid\n ref={irisGridRef}\n model={model}\n settings={settings}\n onStateChange={handleIrisGridChange}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...hydratedState}\n inputFilters={inputFilters}\n />\n );\n}\n\nexport default GridWidgetPlugin;\n"],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -23,6 +23,7 @@ export { default as LinkerUtils } from './linker/LinkerUtils';
23
23
  export type { Link } from './linker/LinkerUtils';
24
24
  export { default as ToolType } from './linker/ToolType';
25
25
  export * from './useConfigureRuff';
26
+ export * from './useDashboardColumnFilters';
26
27
  export * from './useLoadTablePlugin';
27
28
  export * from './events';
28
29
  export * from './panels';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACjF,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AACzE,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACjF,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAC9D,YAAY,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AACxD,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AAErC,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACjF,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AACzE,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACjF,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAC9D,YAAY,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AACxD,cAAc,oBAAoB,CAAC;AACnC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,sBAAsB,CAAC;AAErC,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC"}
package/dist/index.js CHANGED
@@ -22,6 +22,7 @@ export { default as ControlType } from "./controls/ControlType.js";
22
22
  export { default as LinkerUtils } from "./linker/LinkerUtils.js";
23
23
  export { default as ToolType } from "./linker/ToolType.js";
24
24
  export * from "./useConfigureRuff.js";
25
+ export * from "./useDashboardColumnFilters.js";
25
26
  export * from "./useLoadTablePlugin.js";
26
27
  export * from "./events/index.js";
27
28
  export * from "./panels/index.js";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["default","ChartPanelPlugin","ChartWidgetPlugin","ChartPluginConfig","ChartBuilderPlugin","ChartBuilderPluginConfig","ConsolePlugin","FilterPlugin","FilterPluginConfig","GridPanelPlugin","GridWidgetPlugin","GridPluginConfig","LinkerPlugin","LinkerPluginConfig","MarkdownPlugin","MarkdownPluginConfig","PandasPanelPlugin","PandasWidgetPlugin","PandasPluginConfig","WidgetLoaderPlugin","WidgetLoaderPluginConfig","ControlType","LinkerUtils","ToolType"],"sources":["../src/index.ts"],"sourcesContent":["export { default as ChartPanelPlugin } from './ChartPanelPlugin';\nexport { default as ChartWidgetPlugin } from './ChartWidgetPlugin';\nexport { default as ChartPluginConfig } from './ChartPluginConfig';\nexport { default as ChartBuilderPlugin } from './ChartBuilderPlugin';\nexport { default as ChartBuilderPluginConfig } from './ChartBuilderPluginConfig';\nexport { default as ConsolePlugin } from './ConsolePlugin';\nexport { default as FilterPlugin } from './FilterPlugin';\nexport { default as FilterPluginConfig } from './FilterPluginConfig';\nexport { default as GridPanelPlugin } from './GridPanelPlugin';\nexport { default as GridWidgetPlugin } from './GridWidgetPlugin';\nexport { default as GridPluginConfig } from './GridPluginConfig';\nexport { default as LinkerPlugin } from './LinkerPlugin';\nexport { default as LinkerPluginConfig } from './LinkerPluginConfig';\nexport { default as MarkdownPlugin } from './MarkdownPlugin';\nexport { default as MarkdownPluginConfig } from './MarkdownPluginConfig';\nexport { default as PandasPanelPlugin } from './PandasPanelPlugin';\nexport { default as PandasWidgetPlugin } from './PandasWidgetPlugin';\nexport { default as PandasPluginConfig } from './PandasPluginConfig';\nexport { default as WidgetLoaderPlugin } from './WidgetLoaderPlugin';\nexport { default as WidgetLoaderPluginConfig } from './WidgetLoaderPluginConfig';\nexport { default as ControlType } from './controls/ControlType';\nexport { default as LinkerUtils } from './linker/LinkerUtils';\nexport type { Link } from './linker/LinkerUtils';\nexport { default as ToolType } from './linker/ToolType';\nexport * from './useConfigureRuff';\nexport * from './useLoadTablePlugin';\n\nexport * from './events';\nexport * from './panels';\nexport * from './redux';\nexport * from './prop-types';\nexport * from './linker';\n"],"mappings":"SAASA,OAAO,IAAIC,gBAAgB;AAAA,SAC3BD,OAAO,IAAIE,iBAAiB;AAAA,SAC5BF,OAAO,IAAIG,iBAAiB;AAAA,SAC5BH,OAAO,IAAII,kBAAkB;AAAA,SAC7BJ,OAAO,IAAIK,wBAAwB;AAAA,SACnCL,OAAO,IAAIM,aAAa;AAAA,SACxBN,OAAO,IAAIO,YAAY;AAAA,SACvBP,OAAO,IAAIQ,kBAAkB;AAAA,SAC7BR,OAAO,IAAIS,eAAe;AAAA,SAC1BT,OAAO,IAAIU,gBAAgB;AAAA,SAC3BV,OAAO,IAAIW,gBAAgB;AAAA,SAC3BX,OAAO,IAAIY,YAAY;AAAA,SACvBZ,OAAO,IAAIa,kBAAkB;AAAA,SAC7Bb,OAAO,IAAIc,cAAc;AAAA,SACzBd,OAAO,IAAIe,oBAAoB;AAAA,SAC/Bf,OAAO,IAAIgB,iBAAiB;AAAA,SAC5BhB,OAAO,IAAIiB,kBAAkB;AAAA,SAC7BjB,OAAO,IAAIkB,kBAAkB;AAAA,SAC7BlB,OAAO,IAAImB,kBAAkB;AAAA,SAC7BnB,OAAO,IAAIoB,wBAAwB;AAAA,SACnCpB,OAAO,IAAIqB,WAAW;AAAA,SACtBrB,OAAO,IAAIsB,WAAW;AAAA,SAEtBtB,OAAO,IAAIuB,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA"}
1
+ {"version":3,"file":"index.js","names":["default","ChartPanelPlugin","ChartWidgetPlugin","ChartPluginConfig","ChartBuilderPlugin","ChartBuilderPluginConfig","ConsolePlugin","FilterPlugin","FilterPluginConfig","GridPanelPlugin","GridWidgetPlugin","GridPluginConfig","LinkerPlugin","LinkerPluginConfig","MarkdownPlugin","MarkdownPluginConfig","PandasPanelPlugin","PandasWidgetPlugin","PandasPluginConfig","WidgetLoaderPlugin","WidgetLoaderPluginConfig","ControlType","LinkerUtils","ToolType"],"sources":["../src/index.ts"],"sourcesContent":["export { default as ChartPanelPlugin } from './ChartPanelPlugin';\nexport { default as ChartWidgetPlugin } from './ChartWidgetPlugin';\nexport { default as ChartPluginConfig } from './ChartPluginConfig';\nexport { default as ChartBuilderPlugin } from './ChartBuilderPlugin';\nexport { default as ChartBuilderPluginConfig } from './ChartBuilderPluginConfig';\nexport { default as ConsolePlugin } from './ConsolePlugin';\nexport { default as FilterPlugin } from './FilterPlugin';\nexport { default as FilterPluginConfig } from './FilterPluginConfig';\nexport { default as GridPanelPlugin } from './GridPanelPlugin';\nexport { default as GridWidgetPlugin } from './GridWidgetPlugin';\nexport { default as GridPluginConfig } from './GridPluginConfig';\nexport { default as LinkerPlugin } from './LinkerPlugin';\nexport { default as LinkerPluginConfig } from './LinkerPluginConfig';\nexport { default as MarkdownPlugin } from './MarkdownPlugin';\nexport { default as MarkdownPluginConfig } from './MarkdownPluginConfig';\nexport { default as PandasPanelPlugin } from './PandasPanelPlugin';\nexport { default as PandasWidgetPlugin } from './PandasWidgetPlugin';\nexport { default as PandasPluginConfig } from './PandasPluginConfig';\nexport { default as WidgetLoaderPlugin } from './WidgetLoaderPlugin';\nexport { default as WidgetLoaderPluginConfig } from './WidgetLoaderPluginConfig';\nexport { default as ControlType } from './controls/ControlType';\nexport { default as LinkerUtils } from './linker/LinkerUtils';\nexport type { Link } from './linker/LinkerUtils';\nexport { default as ToolType } from './linker/ToolType';\nexport * from './useConfigureRuff';\nexport * from './useDashboardColumnFilters';\nexport * from './useLoadTablePlugin';\n\nexport * from './events';\nexport * from './panels';\nexport * from './redux';\nexport * from './prop-types';\nexport * from './linker';\n"],"mappings":"SAASA,OAAO,IAAIC,gBAAgB;AAAA,SAC3BD,OAAO,IAAIE,iBAAiB;AAAA,SAC5BF,OAAO,IAAIG,iBAAiB;AAAA,SAC5BH,OAAO,IAAII,kBAAkB;AAAA,SAC7BJ,OAAO,IAAIK,wBAAwB;AAAA,SACnCL,OAAO,IAAIM,aAAa;AAAA,SACxBN,OAAO,IAAIO,YAAY;AAAA,SACvBP,OAAO,IAAIQ,kBAAkB;AAAA,SAC7BR,OAAO,IAAIS,eAAe;AAAA,SAC1BT,OAAO,IAAIU,gBAAgB;AAAA,SAC3BV,OAAO,IAAIW,gBAAgB;AAAA,SAC3BX,OAAO,IAAIY,YAAY;AAAA,SACvBZ,OAAO,IAAIa,kBAAkB;AAAA,SAC7Bb,OAAO,IAAIc,cAAc;AAAA,SACzBd,OAAO,IAAIe,oBAAoB;AAAA,SAC/Bf,OAAO,IAAIgB,iBAAiB;AAAA,SAC5BhB,OAAO,IAAIiB,kBAAkB;AAAA,SAC7BjB,OAAO,IAAIkB,kBAAkB;AAAA,SAC7BlB,OAAO,IAAImB,kBAAkB;AAAA,SAC7BnB,OAAO,IAAIoB,wBAAwB;AAAA,SACnCpB,OAAO,IAAIqB,WAAW;AAAA,SACtBrB,OAAO,IAAIsB,WAAW;AAAA,SAEtBtB,OAAO,IAAIuB,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA"}
@@ -5,7 +5,7 @@ import type GoldenLayout from '@deephaven/golden-layout';
5
5
  import { type RowDataMap } from '@deephaven/jsapi-utils';
6
6
  import type { dh as DhType } from '@deephaven/jsapi-types';
7
7
  import { type Link, type LinkColumn, type LinkFilterMap, type LinkType } from './LinkerUtils';
8
- import { type FilterColumnSourceId } from '../FilterPlugin';
8
+ import { type FilterColumnSourceId } from '../FilterEvents';
9
9
  interface StateProps {
10
10
  activeTool: string;
11
11
  dh: typeof DhType;
@@ -38,6 +38,7 @@ export declare class Linker extends Component<LinkerProps, LinkerState> {
38
38
  componentDidUpdate(prevProps: LinkerProps): void;
39
39
  componentDidCatch(error: Error, info: ErrorInfo): void;
40
40
  componentWillUnmount(): void;
41
+ private removerFns;
41
42
  startListening(layout: GoldenLayout): void;
42
43
  stopListening(layout: GoldenLayout): void;
43
44
  reset(): void;
@@ -45,7 +46,7 @@ export declare class Linker extends Component<LinkerProps, LinkerState> {
45
46
  handleDone(): void;
46
47
  handleChartColumnSelect(panel: PanelComponent, column: LinkColumn): void;
47
48
  handleFilterColumnSelect(panel: PanelComponent, column: LinkColumn): void;
48
- handleColumnsChanged(sourceId: FilterColumnSourceId, columns: LinkColumn[]): void;
49
+ handleColumnsChanged(sourceId: FilterColumnSourceId, columns: readonly LinkColumn[] | null): void;
49
50
  handleGridColumnSelect(panel: PanelComponent, column: LinkColumn): void;
50
51
  /**
51
52
  * Track a column selection and build the link from it.
@@ -1 +1 @@
1
- {"version":3,"file":"Linker.d.ts","sourceRoot":"","sources":["../../src/linker/Linker.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Linker.d.ts","sourceRoot":"","sources":["../../src/linker/Linker.tsx"],"names":[],"mappings":"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"}