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

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 (100) 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/events/TabEventMap.d.ts +1 -1
  13. package/dist/events/TabEventMap.d.ts.map +1 -1
  14. package/dist/events/TabEventMap.js.map +1 -1
  15. package/dist/events/index.d.ts +7 -1
  16. package/dist/events/index.d.ts.map +1 -1
  17. package/dist/events/index.js +5 -1
  18. package/dist/events/index.js.map +1 -1
  19. package/dist/index.d.ts +1 -0
  20. package/dist/index.d.ts.map +1 -1
  21. package/dist/index.js +1 -0
  22. package/dist/index.js.map +1 -1
  23. package/dist/linker/Linker.d.ts +3 -2
  24. package/dist/linker/Linker.d.ts.map +1 -1
  25. package/dist/linker/Linker.js +11 -2
  26. package/dist/linker/Linker.js.map +1 -1
  27. package/dist/linker/LinkerUtils.d.ts +2 -2
  28. package/dist/linker/LinkerUtils.d.ts.map +1 -1
  29. package/dist/linker/LinkerUtils.js.map +1 -1
  30. package/dist/panels/ChartPanel.d.ts +2 -2
  31. package/dist/panels/ChartPanel.d.ts.map +1 -1
  32. package/dist/panels/ChartPanel.js +4 -1
  33. package/dist/panels/ChartPanel.js.map +1 -1
  34. package/dist/panels/CommandHistoryPanel.js +1 -1
  35. package/dist/panels/CommandHistoryPanel.js.map +1 -1
  36. package/dist/panels/ConsolePanel.js +1 -1
  37. package/dist/panels/ConsolePanel.js.map +1 -1
  38. package/dist/panels/CorePanel.d.ts +13 -0
  39. package/dist/panels/CorePanel.d.ts.map +1 -0
  40. package/dist/panels/CorePanel.js +76 -0
  41. package/dist/panels/CorePanel.js.map +1 -0
  42. package/dist/panels/DropdownFilterPanel.d.ts +1 -1
  43. package/dist/panels/DropdownFilterPanel.d.ts.map +1 -1
  44. package/dist/panels/DropdownFilterPanel.js +7 -4
  45. package/dist/panels/DropdownFilterPanel.js.map +1 -1
  46. package/dist/panels/FileExplorerPanel.js +1 -1
  47. package/dist/panels/FileExplorerPanel.js.map +1 -1
  48. package/dist/panels/FilterSetManagerPanel.d.ts +2 -2
  49. package/dist/panels/FilterSetManagerPanel.js +1 -1
  50. package/dist/panels/FilterSetManagerPanel.js.map +1 -1
  51. package/dist/panels/InputFilterPanel.d.ts +2 -2
  52. package/dist/panels/InputFilterPanel.d.ts.map +1 -1
  53. package/dist/panels/InputFilterPanel.js +9 -5
  54. package/dist/panels/InputFilterPanel.js.map +1 -1
  55. package/dist/panels/IrisGridPanel.d.ts +2 -2
  56. package/dist/panels/IrisGridPanel.d.ts.map +1 -1
  57. package/dist/panels/IrisGridPanel.js +11 -4
  58. package/dist/panels/IrisGridPanel.js.map +1 -1
  59. package/dist/panels/LogPanel.d.ts +1 -1
  60. package/dist/panels/LogPanel.js +1 -1
  61. package/dist/panels/LogPanel.js.map +1 -1
  62. package/dist/panels/MarkdownPanel.d.ts +1 -1
  63. package/dist/panels/MarkdownPanel.js +1 -1
  64. package/dist/panels/MarkdownPanel.js.map +1 -1
  65. package/dist/panels/NotebookPanel.d.ts +1 -1
  66. package/dist/panels/NotebookPanel.js +1 -1
  67. package/dist/panels/NotebookPanel.js.map +1 -1
  68. package/dist/panels/WidgetPanel.d.ts +1 -1
  69. package/dist/panels/WidgetPanel.d.ts.map +1 -1
  70. package/dist/panels/WidgetPanel.js +1 -1
  71. package/dist/panels/WidgetPanel.js.map +1 -1
  72. package/dist/panels/index.d.ts +5 -1
  73. package/dist/panels/index.d.ts.map +1 -1
  74. package/dist/panels/index.js +7 -1
  75. package/dist/panels/index.js.map +1 -1
  76. package/dist/redux/selectors.d.ts +1 -1
  77. package/dist/redux/selectors.js.map +1 -1
  78. package/dist/useDashboardColumnFilters.d.ts +17 -0
  79. package/dist/useDashboardColumnFilters.d.ts.map +1 -0
  80. package/dist/useDashboardColumnFilters.js +59 -0
  81. package/dist/useDashboardColumnFilters.js.map +1 -0
  82. package/package.json +24 -24
  83. package/dist/events/TabEvent.d.ts +0 -6
  84. package/dist/events/TabEvent.d.ts.map +0 -1
  85. package/dist/events/TabEvent.js +0 -6
  86. package/dist/events/TabEvent.js.map +0 -1
  87. package/dist/panels/Panel.css +0 -5
  88. package/dist/panels/Panel.css.map +0 -1
  89. package/dist/panels/Panel.d.ts +0 -44
  90. package/dist/panels/Panel.d.ts.map +0 -1
  91. package/dist/panels/Panel.js +0 -333
  92. package/dist/panels/Panel.js.map +0 -1
  93. package/dist/panels/PanelContextMenu.d.ts +0 -30
  94. package/dist/panels/PanelContextMenu.d.ts.map +0 -1
  95. package/dist/panels/PanelContextMenu.js +0 -159
  96. package/dist/panels/PanelContextMenu.js.map +0 -1
  97. package/dist/panels/RenameDialog.d.ts +0 -34
  98. package/dist/panels/RenameDialog.d.ts.map +0 -1
  99. package/dist/panels/RenameDialog.js +0 -167
  100. package/dist/panels/RenameDialog.js.map +0 -1
@@ -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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"}
@@ -1,5 +1,5 @@
1
1
  import { type ValueOf } from '@deephaven/utils';
2
- import type TabEvent from './TabEvent';
2
+ import { type TabEvent } from '@deephaven/dashboard';
3
3
  export type TabEventType = ValueOf<typeof TabEvent>;
4
4
  export interface TabEventMap extends Record<TabEventType, (...args: never[]) => void> {
5
5
  [TabEvent.focus]: () => void;
@@ -1 +1 @@
1
- {"version":3,"file":"TabEventMap.d.ts","sourceRoot":"","sources":["../../src/events/TabEventMap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,KAAK,QAAQ,MAAM,YAAY,CAAC;AAEvC,MAAM,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,QAAQ,CAAC,CAAC;AAEpD,MAAM,WAAW,WACf,SAAQ,MAAM,CAAC,YAAY,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,IAAI,CAAC;IACxD,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,IAAI,CAAC;IAC7B,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,IAAI,CAAC;CAC7B;AAED,eAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"TabEventMap.d.ts","sourceRoot":"","sources":["../../src/events/TabEventMap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAErD,MAAM,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,QAAQ,CAAC,CAAC;AAEpD,MAAM,WAAW,WACf,SAAQ,MAAM,CAAC,YAAY,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,IAAI,CAAC;IACxD,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,IAAI,CAAC;IAC7B,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,IAAI,CAAC;CAC7B;AAED,eAAe,WAAW,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"TabEventMap.js","names":[],"sources":["../../src/events/TabEventMap.ts"],"sourcesContent":["import { type ValueOf } from '@deephaven/utils';\nimport type TabEvent from './TabEvent';\n\nexport type TabEventType = ValueOf<typeof TabEvent>;\n\nexport interface TabEventMap\n extends Record<TabEventType, (...args: never[]) => void> {\n [TabEvent.focus]: () => void;\n [TabEvent.blur]: () => void;\n}\n\nexport default TabEventMap;\n"],"mappings":""}
1
+ {"version":3,"file":"TabEventMap.js","names":[],"sources":["../../src/events/TabEventMap.ts"],"sourcesContent":["import { type ValueOf } from '@deephaven/utils';\nimport { type TabEvent } from '@deephaven/dashboard';\n\nexport type TabEventType = ValueOf<typeof TabEvent>;\n\nexport interface TabEventMap\n extends Record<TabEventType, (...args: never[]) => void> {\n [TabEvent.focus]: () => void;\n [TabEvent.blur]: () => void;\n}\n\nexport default TabEventMap;\n"],"mappings":""}
@@ -5,5 +5,11 @@ export { default as IrisGridEvent } from './IrisGridEvent';
5
5
  export { default as MarkdownEvent } from './MarkdownEvent';
6
6
  export { default as NotebookEvent } from './NotebookEvent';
7
7
  export { default as PandasEvent } from './PandasEvent';
8
- export { default as TabEvent } from './TabEvent';
8
+ /**
9
+ * @deprecated Use TabEvent from @deephaven/dashboard
10
+ */
11
+ export declare const TabEvent: Readonly<{
12
+ focus: "TabEvent.focus";
13
+ blur: "TabEvent.blur";
14
+ }>;
9
15
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/events/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/events/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC;AAEvD;;GAEG;AACH,eAAO,MAAM,QAAQ;;;EAAoB,CAAC"}
@@ -1,3 +1,4 @@
1
+ import { TabEvent as DashboardTabEvent } from '@deephaven/dashboard';
1
2
  export { default as ChartEvent } from "./ChartEvent.js";
2
3
  export { default as ConsoleEvent } from "./ConsoleEvent.js";
3
4
  export { default as InputFilterEvent } from "./InputFilterEvent.js";
@@ -5,5 +6,8 @@ export { default as IrisGridEvent } from "./IrisGridEvent.js";
5
6
  export { default as MarkdownEvent } from "./MarkdownEvent.js";
6
7
  export { default as NotebookEvent } from "./NotebookEvent.js";
7
8
  export { default as PandasEvent } from "./PandasEvent.js";
8
- export { default as TabEvent } from "./TabEvent.js";
9
+ /**
10
+ * @deprecated Use TabEvent from @deephaven/dashboard
11
+ */
12
+ export var TabEvent = DashboardTabEvent;
9
13
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["default","ChartEvent","ConsoleEvent","InputFilterEvent","IrisGridEvent","MarkdownEvent","NotebookEvent","PandasEvent","TabEvent"],"sources":["../../src/events/index.ts"],"sourcesContent":["export { default as ChartEvent } from './ChartEvent';\nexport { default as ConsoleEvent } from './ConsoleEvent';\nexport { default as InputFilterEvent } from './InputFilterEvent';\nexport { default as IrisGridEvent } from './IrisGridEvent';\nexport { default as MarkdownEvent } from './MarkdownEvent';\nexport { default as NotebookEvent } from './NotebookEvent';\nexport { default as PandasEvent } from './PandasEvent';\nexport { default as TabEvent } from './TabEvent';\n"],"mappings":"SAASA,OAAO,IAAIC,UAAU;AAAA,SACrBD,OAAO,IAAIE,YAAY;AAAA,SACvBF,OAAO,IAAIG,gBAAgB;AAAA,SAC3BH,OAAO,IAAII,aAAa;AAAA,SACxBJ,OAAO,IAAIK,aAAa;AAAA,SACxBL,OAAO,IAAIM,aAAa;AAAA,SACxBN,OAAO,IAAIO,WAAW;AAAA,SACtBP,OAAO,IAAIQ,QAAQ"}
1
+ {"version":3,"file":"index.js","names":["TabEvent","DashboardTabEvent","default","ChartEvent","ConsoleEvent","InputFilterEvent","IrisGridEvent","MarkdownEvent","NotebookEvent","PandasEvent"],"sources":["../../src/events/index.ts"],"sourcesContent":["import { TabEvent as DashboardTabEvent } from '@deephaven/dashboard';\n\nexport { default as ChartEvent } from './ChartEvent';\nexport { default as ConsoleEvent } from './ConsoleEvent';\nexport { default as InputFilterEvent } from './InputFilterEvent';\nexport { default as IrisGridEvent } from './IrisGridEvent';\nexport { default as MarkdownEvent } from './MarkdownEvent';\nexport { default as NotebookEvent } from './NotebookEvent';\nexport { default as PandasEvent } from './PandasEvent';\n\n/**\n * @deprecated Use TabEvent from @deephaven/dashboard\n */\nexport const TabEvent = DashboardTabEvent;\n"],"mappings":"AAAA,SAASA,QAAQ,IAAIC,iBAAiB,QAAQ,sBAAsB;AAAC,SAE5DC,OAAO,IAAIC,UAAU;AAAA,SACrBD,OAAO,IAAIE,YAAY;AAAA,SACvBF,OAAO,IAAIG,gBAAgB;AAAA,SAC3BH,OAAO,IAAII,aAAa;AAAA,SACxBJ,OAAO,IAAIK,aAAa;AAAA,SACxBL,OAAO,IAAIM,aAAa;AAAA,SACxBN,OAAO,IAAIO,WAAW;AAE/B;AACA;AACA;AACA,OAAO,IAAMT,QAAQ,GAAGC,iBAAiB"}
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";