@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.
- package/dist/FilterEvents.d.ts +86 -0
- package/dist/FilterEvents.d.ts.map +1 -0
- package/dist/FilterEvents.js +78 -0
- package/dist/FilterEvents.js.map +1 -0
- package/dist/FilterPlugin.d.ts +1 -12
- package/dist/FilterPlugin.d.ts.map +1 -1
- package/dist/FilterPlugin.js +30 -23
- package/dist/FilterPlugin.js.map +1 -1
- package/dist/GridWidgetPlugin.d.ts.map +1 -1
- package/dist/GridWidgetPlugin.js +22 -4
- package/dist/GridWidgetPlugin.js.map +1 -1
- package/dist/events/TabEventMap.d.ts +1 -1
- package/dist/events/TabEventMap.d.ts.map +1 -1
- package/dist/events/TabEventMap.js.map +1 -1
- package/dist/events/index.d.ts +7 -1
- package/dist/events/index.d.ts.map +1 -1
- package/dist/events/index.js +5 -1
- package/dist/events/index.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/linker/Linker.d.ts +3 -2
- package/dist/linker/Linker.d.ts.map +1 -1
- package/dist/linker/Linker.js +11 -2
- package/dist/linker/Linker.js.map +1 -1
- package/dist/linker/LinkerUtils.d.ts +2 -2
- package/dist/linker/LinkerUtils.d.ts.map +1 -1
- package/dist/linker/LinkerUtils.js.map +1 -1
- package/dist/panels/ChartPanel.d.ts +2 -2
- package/dist/panels/ChartPanel.d.ts.map +1 -1
- package/dist/panels/ChartPanel.js +4 -1
- package/dist/panels/ChartPanel.js.map +1 -1
- package/dist/panels/CommandHistoryPanel.js +1 -1
- package/dist/panels/CommandHistoryPanel.js.map +1 -1
- package/dist/panels/ConsolePanel.js +1 -1
- package/dist/panels/ConsolePanel.js.map +1 -1
- package/dist/panels/CorePanel.d.ts +13 -0
- package/dist/panels/CorePanel.d.ts.map +1 -0
- package/dist/panels/CorePanel.js +76 -0
- package/dist/panels/CorePanel.js.map +1 -0
- package/dist/panels/DropdownFilterPanel.d.ts +1 -1
- package/dist/panels/DropdownFilterPanel.d.ts.map +1 -1
- package/dist/panels/DropdownFilterPanel.js +7 -4
- package/dist/panels/DropdownFilterPanel.js.map +1 -1
- package/dist/panels/FileExplorerPanel.js +1 -1
- package/dist/panels/FileExplorerPanel.js.map +1 -1
- package/dist/panels/FilterSetManagerPanel.d.ts +2 -2
- package/dist/panels/FilterSetManagerPanel.js +1 -1
- package/dist/panels/FilterSetManagerPanel.js.map +1 -1
- package/dist/panels/InputFilterPanel.d.ts +2 -2
- package/dist/panels/InputFilterPanel.d.ts.map +1 -1
- package/dist/panels/InputFilterPanel.js +9 -5
- package/dist/panels/InputFilterPanel.js.map +1 -1
- package/dist/panels/IrisGridPanel.d.ts +2 -2
- package/dist/panels/IrisGridPanel.d.ts.map +1 -1
- package/dist/panels/IrisGridPanel.js +11 -4
- package/dist/panels/IrisGridPanel.js.map +1 -1
- package/dist/panels/LogPanel.d.ts +1 -1
- package/dist/panels/LogPanel.js +1 -1
- package/dist/panels/LogPanel.js.map +1 -1
- package/dist/panels/MarkdownPanel.d.ts +1 -1
- package/dist/panels/MarkdownPanel.js +1 -1
- package/dist/panels/MarkdownPanel.js.map +1 -1
- package/dist/panels/NotebookPanel.d.ts +1 -1
- package/dist/panels/NotebookPanel.js +1 -1
- package/dist/panels/NotebookPanel.js.map +1 -1
- package/dist/panels/WidgetPanel.d.ts +1 -1
- package/dist/panels/WidgetPanel.d.ts.map +1 -1
- package/dist/panels/WidgetPanel.js +1 -1
- package/dist/panels/WidgetPanel.js.map +1 -1
- package/dist/panels/index.d.ts +5 -1
- package/dist/panels/index.d.ts.map +1 -1
- package/dist/panels/index.js +7 -1
- package/dist/panels/index.js.map +1 -1
- package/dist/redux/selectors.d.ts +1 -1
- package/dist/redux/selectors.js.map +1 -1
- package/dist/useDashboardColumnFilters.d.ts +17 -0
- package/dist/useDashboardColumnFilters.d.ts.map +1 -0
- package/dist/useDashboardColumnFilters.js +59 -0
- package/dist/useDashboardColumnFilters.js.map +1 -0
- package/package.json +24 -24
- package/dist/events/TabEvent.d.ts +0 -6
- package/dist/events/TabEvent.d.ts.map +0 -1
- package/dist/events/TabEvent.js +0 -6
- package/dist/events/TabEvent.js.map +0 -1
- package/dist/panels/Panel.css +0 -5
- package/dist/panels/Panel.css.map +0 -1
- package/dist/panels/Panel.d.ts +0 -44
- package/dist/panels/Panel.d.ts.map +0 -1
- package/dist/panels/Panel.js +0 -333
- package/dist/panels/Panel.js.map +0 -1
- package/dist/panels/PanelContextMenu.d.ts +0 -30
- package/dist/panels/PanelContextMenu.d.ts.map +0 -1
- package/dist/panels/PanelContextMenu.js +0 -159
- package/dist/panels/PanelContextMenu.js.map +0 -1
- package/dist/panels/RenameDialog.d.ts +0 -34
- package/dist/panels/RenameDialog.d.ts.map +0 -1
- package/dist/panels/RenameDialog.js +0 -167
- 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"}
|
package/dist/FilterPlugin.d.ts
CHANGED
|
@@ -1,15 +1,4 @@
|
|
|
1
|
-
import { type DashboardPluginComponentProps
|
|
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,
|
|
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"}
|
package/dist/FilterPlugin.js
CHANGED
|
@@ -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()).
|
|
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()).
|
|
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
|
-
|
|
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
|
|
74
|
-
* @param
|
|
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((
|
|
77
|
-
log.debug2('handleFiltersChanged',
|
|
78
|
-
|
|
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((
|
|
82
|
-
log.debug2('handleTableChanged',
|
|
83
|
-
|
|
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
|
-
|
|
202
|
-
|
|
203
|
-
|
|
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);
|
package/dist/FilterPlugin.js.map
CHANGED
|
@@ -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;
|
|
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"}
|
package/dist/GridWidgetPlugin.js
CHANGED
|
@@ -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 {
|
|
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":";;;;;AAAA,SAASA,WAAW,EAAEC,OAAO,EAAEC,MAAM,QAAQ,OAAO;AACpD,SAEEC,kBAAkB,QACb,mBAAmB;AAE1B,SAGEC,QAAQ,EACRC,kBAAkB,
|
|
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 '
|
|
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,
|
|
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 '
|
|
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":""}
|
package/dist/events/index.d.ts
CHANGED
|
@@ -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
|
-
|
|
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":"
|
|
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"}
|
package/dist/events/index.js
CHANGED
|
@@ -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
|
-
|
|
9
|
+
/**
|
|
10
|
+
* @deprecated Use TabEvent from @deephaven/dashboard
|
|
11
|
+
*/
|
|
12
|
+
export var TabEvent = DashboardTabEvent;
|
|
9
13
|
//# sourceMappingURL=index.js.map
|
package/dist/events/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["default","ChartEvent","ConsoleEvent","InputFilterEvent","IrisGridEvent","MarkdownEvent","NotebookEvent","PandasEvent"
|
|
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';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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";
|