react-open-source-grid 1.5.0 → 1.5.2

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 (85) hide show
  1. package/dist/assets/components/AccessibilityDemo.d.ts +8 -0
  2. package/dist/assets/components/ApiReferencePage.d.ts +2 -0
  3. package/dist/assets/components/BenchmarkDemo.d.ts +2 -0
  4. package/dist/assets/components/CellRenderersDemo.d.ts +16 -0
  5. package/dist/assets/components/CodeBlock.d.ts +10 -0
  6. package/dist/assets/components/ColumnFiltersDemo.d.ts +5 -0
  7. package/dist/assets/components/CompleteApiReferencePage.d.ts +2 -0
  8. package/dist/assets/components/ContextMenuDemo.d.ts +12 -0
  9. package/dist/assets/components/DataGrid/ARCHITECTURE.md.d.ts +288 -0
  10. package/dist/assets/components/DataGrid/AdvancedFilterBuilder.d.ts +12 -0
  11. package/dist/assets/components/DataGrid/CellRenderers.d.ts +64 -0
  12. package/dist/assets/components/DataGrid/ColumnChooser.d.ts +12 -0
  13. package/dist/assets/components/DataGrid/ColumnFilters.d.ts +16 -0
  14. package/dist/assets/components/DataGrid/ContextMenu.d.ts +10 -0
  15. package/dist/assets/components/DataGrid/DataGrid.d.ts +22 -0
  16. package/dist/assets/components/DataGrid/DensityToggle.d.ts +23 -0
  17. package/dist/assets/components/DataGrid/DragHandle.d.ts +7 -0
  18. package/dist/assets/components/DataGrid/DraggableRow.d.ts +14 -0
  19. package/dist/assets/components/DataGrid/ExportMenu.d.ts +12 -0
  20. package/dist/assets/components/DataGrid/FacetedSearch.d.ts +29 -0
  21. package/dist/assets/components/DataGrid/FilteredSearchBar.d.ts +36 -0
  22. package/dist/assets/components/DataGrid/FocusTrap.d.ts +12 -0
  23. package/dist/assets/components/DataGrid/GridApiDemo.d.ts +6 -0
  24. package/dist/assets/components/DataGrid/GridBody.d.ts +42 -0
  25. package/dist/assets/components/DataGrid/GridFooter.d.ts +18 -0
  26. package/dist/assets/components/DataGrid/GridHeader.d.ts +18 -0
  27. package/dist/assets/components/DataGrid/GridPagination.d.ts +10 -0
  28. package/dist/assets/components/DataGrid/GroupByPanel.d.ts +9 -0
  29. package/dist/assets/components/DataGrid/GroupRow.d.ts +31 -0
  30. package/dist/assets/components/DataGrid/InfiniteScrollDataGrid.d.ts +39 -0
  31. package/dist/assets/components/DataGrid/LayoutPresetsManager.d.ts +11 -0
  32. package/dist/assets/components/DataGrid/MarketDataEngine.d.ts +165 -0
  33. package/dist/assets/components/DataGrid/MarketDataGrid.d.ts +33 -0
  34. package/dist/assets/components/DataGrid/MarketDataGridUtils.d.ts +13 -0
  35. package/dist/assets/components/DataGrid/ScreenReaderAnnouncer.d.ts +8 -0
  36. package/dist/assets/components/DataGrid/ServerSideDataSource.d.ts +136 -0
  37. package/dist/assets/components/DataGrid/ThemeSelector.d.ts +12 -0
  38. package/dist/assets/components/DataGrid/Tooltip.d.ts +15 -0
  39. package/dist/assets/components/DataGrid/TreeRow.d.ts +31 -0
  40. package/dist/assets/components/DataGrid/VirtualScroller.d.ts +35 -0
  41. package/dist/assets/components/DataGrid/WebSocketMockFeed.d.ts +121 -0
  42. package/dist/assets/components/DataGrid/aggregationUtils.d.ts +25 -0
  43. package/dist/assets/components/DataGrid/contextMenuUtils.d.ts +36 -0
  44. package/dist/assets/components/DataGrid/demos/TooltipDemo.d.ts +1 -0
  45. package/dist/assets/components/DataGrid/densityModes.d.ts +42 -0
  46. package/dist/assets/components/DataGrid/dragRowUtils.d.ts +98 -0
  47. package/dist/assets/components/DataGrid/exportUtils.d.ts +30 -0
  48. package/dist/assets/components/DataGrid/filterUtils.d.ts +17 -0
  49. package/dist/assets/components/DataGrid/gridApi.d.ts +142 -0
  50. package/dist/assets/components/DataGrid/gridApi.types.d.ts +348 -0
  51. package/dist/assets/components/DataGrid/gridReducer.d.ts +4 -0
  52. package/dist/assets/components/DataGrid/groupingUtils.d.ts +17 -0
  53. package/dist/assets/components/DataGrid/index.d.ts +41 -0
  54. package/dist/assets/components/DataGrid/layoutPersistence.d.ts +95 -0
  55. package/dist/assets/components/DataGrid/themes.d.ts +113 -0
  56. package/dist/assets/components/DataGrid/treeDataUtils.d.ts +97 -0
  57. package/dist/assets/components/DataGrid/types.d.ts +536 -0
  58. package/dist/assets/components/DataGrid/useContextMenu.d.ts +31 -0
  59. package/dist/assets/components/DataGrid/useDensityMode.d.ts +36 -0
  60. package/dist/assets/components/DataGrid/useFocusTrap.d.ts +14 -0
  61. package/dist/assets/components/DataGrid/useMarketData.d.ts +57 -0
  62. package/dist/assets/components/DataGrid/useScreenReaderAnnouncements.d.ts +23 -0
  63. package/dist/assets/components/DataGrid/useTooltip.d.ts +21 -0
  64. package/dist/assets/components/DemoGridPage.d.ts +2 -0
  65. package/dist/assets/components/DensityModeDemo.d.ts +12 -0
  66. package/dist/assets/components/FacetedSearchDemo.d.ts +8 -0
  67. package/dist/assets/components/FeatureGallery.d.ts +2 -0
  68. package/dist/assets/components/FilteredSearchDemo.d.ts +7 -0
  69. package/dist/assets/components/GridApiDemoPage.d.ts +2 -0
  70. package/dist/assets/components/HomePage.d.ts +1 -0
  71. package/dist/assets/components/InfiniteScrollDemo.d.ts +13 -0
  72. package/dist/assets/components/LayoutPersistenceDemo.d.ts +2 -0
  73. package/dist/assets/components/LiveMarketDemo.d.ts +18 -0
  74. package/dist/assets/components/MarketDataExamples.d.ts +42 -0
  75. package/dist/assets/components/RowDraggingDemo.d.ts +3 -0
  76. package/dist/assets/components/RowPinningDemo.d.ts +12 -0
  77. package/dist/assets/components/ThemesDemo.d.ts +17 -0
  78. package/dist/assets/components/TooltipDemo.d.ts +1 -0
  79. package/dist/assets/components/TreeDataDemo.d.ts +3 -0
  80. package/dist/assets/components/VirtualScrollDemo.d.ts +13 -0
  81. package/dist/assets/{index-BCK5Ko4P.js → index-bQ7aqGuU.js} +2 -2
  82. package/dist/assets/index.js +1 -1
  83. package/dist/assets/{layoutPersistence-BHB0W18y.js → layoutPersistence-B2lMGbE7.js} +1 -1
  84. package/dist/index.html +1 -1
  85. package/package.json +17 -4
@@ -0,0 +1,348 @@
1
+ /**
2
+ * Grid API Types
3
+ * AG Grid-inspired API surface for programmatic grid control
4
+ */
5
+ import type { Column, Row, FilterConfig, SortConfig, LayoutPreset } from './types';
6
+ /**
7
+ * Column key - can be field name or column index
8
+ */
9
+ export type ColKey = string | number;
10
+ /**
11
+ * Row node representing a single row in the grid with metadata
12
+ */
13
+ export interface RowNode<T = Row> {
14
+ /** Unique row ID */
15
+ id: string | number;
16
+ /** The actual row data */
17
+ data: T;
18
+ /** Row index in the current display order (after filter/sort) */
19
+ rowIndex: number;
20
+ /** Whether this row is currently selected */
21
+ selected: boolean;
22
+ /** For grouped rows */
23
+ group?: boolean;
24
+ /** For tree rows */
25
+ level?: number;
26
+ /** Parent node for tree/group */
27
+ parent?: RowNode<T> | null;
28
+ /** Child nodes for tree/group */
29
+ childrenAfterGroup?: RowNode<T>[];
30
+ /** Whether group/tree node is expanded */
31
+ expanded?: boolean;
32
+ /** Set selection state for this row */
33
+ setSelected(selected: boolean, clearOther?: boolean): void;
34
+ /** Set expanded state (for groups/tree) */
35
+ setExpanded?(expanded: boolean): void;
36
+ }
37
+ /**
38
+ * Row model providing access to grid data
39
+ */
40
+ export interface RowModel {
41
+ /** Total number of rows (before filter) */
42
+ getRowCount(): number;
43
+ /** Get row node at specific index (after filter/sort) */
44
+ getRow(index: number): RowNode | null;
45
+ /** Iterate through all rows */
46
+ forEachNode(callback: (node: RowNode, index: number) => void): void;
47
+ }
48
+ /**
49
+ * Column state for persistence
50
+ */
51
+ export interface ColumnState {
52
+ colId: string;
53
+ width?: number;
54
+ hide?: boolean;
55
+ pinned?: 'left' | 'right' | null;
56
+ sort?: 'asc' | 'desc' | null;
57
+ sortIndex?: number;
58
+ }
59
+ /**
60
+ * Parameters for refreshing cells
61
+ */
62
+ export interface RefreshCellsParams {
63
+ /** Specific row nodes to refresh */
64
+ rowNodes?: RowNode[];
65
+ /** Specific columns to refresh */
66
+ columns?: ColKey[];
67
+ /** Force refresh even if data hasn't changed */
68
+ force?: boolean;
69
+ }
70
+ /**
71
+ * Parameters for redrawing rows
72
+ */
73
+ export interface RedrawRowsParams {
74
+ /** Specific row nodes to redraw */
75
+ rowNodes?: RowNode[];
76
+ }
77
+ /**
78
+ * CSV export parameters
79
+ */
80
+ export interface CsvExportParams {
81
+ /** Filename for the export (without extension) */
82
+ fileName?: string;
83
+ /** Column keys to include (default: all visible) */
84
+ columnKeys?: ColKey[];
85
+ /** Skip column headers */
86
+ skipHeader?: boolean;
87
+ /** Skip column group headers */
88
+ skipColumnGroupHeaders?: boolean;
89
+ /** Skip pinned top rows */
90
+ skipPinnedTop?: boolean;
91
+ /** Skip pinned bottom rows */
92
+ skipPinnedBottom?: boolean;
93
+ /** Only export selected rows */
94
+ onlySelected?: boolean;
95
+ /** Only export filtered rows */
96
+ onlyFiltered?: boolean;
97
+ /** Custom column separator (default: ',') */
98
+ columnSeparator?: string;
99
+ /** Suppress quotes around values */
100
+ suppressQuotes?: boolean;
101
+ /** Custom value processor */
102
+ processCellCallback?: (params: {
103
+ value: unknown;
104
+ column: Column;
105
+ node: RowNode;
106
+ }) => string;
107
+ }
108
+ /**
109
+ * Excel export parameters
110
+ */
111
+ export interface ExcelExportParams extends CsvExportParams {
112
+ /** Sheet name */
113
+ sheetName?: string;
114
+ /** Author metadata */
115
+ author?: string;
116
+ }
117
+ /**
118
+ * Transaction for updating row data
119
+ */
120
+ export interface RowDataTransaction<T = Row> {
121
+ /** Rows to add */
122
+ add?: T[];
123
+ /** Rows to update (matched by ID) */
124
+ update?: T[];
125
+ /** Rows to remove (matched by ID) */
126
+ remove?: T[];
127
+ /** Index to add rows at */
128
+ addIndex?: number;
129
+ }
130
+ /**
131
+ * Result of a transaction
132
+ */
133
+ export interface RowNodeTransaction<T = Row> {
134
+ add: RowNode<T>[];
135
+ remove: RowNode<T>[];
136
+ update: RowNode<T>[];
137
+ }
138
+ /**
139
+ * Cell range for clipboard operations
140
+ */
141
+ export interface CellRange {
142
+ startRow: RowNode;
143
+ endRow: RowNode;
144
+ columns: Column[];
145
+ }
146
+ /**
147
+ * Parameters for starting cell editing
148
+ */
149
+ export interface StartEditingCellParams {
150
+ rowIndex: number;
151
+ colKey: ColKey;
152
+ /** Keyboard event that triggered editing */
153
+ key?: string;
154
+ /** Character to populate cell with */
155
+ charPress?: string;
156
+ }
157
+ /**
158
+ * Main Grid API Interface
159
+ * Provides programmatic access to grid functionality
160
+ */
161
+ export interface GridApi {
162
+ /** Replace all row data */
163
+ setRowData(rows: Row[]): void;
164
+ /** Apply a transaction to add/remove/update rows */
165
+ applyTransaction(transaction: RowDataTransaction): RowNodeTransaction;
166
+ /** Apply transaction asynchronously (for better performance with large datasets) */
167
+ applyTransactionAsync(transaction: RowDataTransaction): Promise<RowNodeTransaction>;
168
+ /** Get the row model */
169
+ getModel(): RowModel;
170
+ /** Get number of displayed rows (after filter/sort) */
171
+ getDisplayedRowCount(): number;
172
+ /** Get row node at specific display index */
173
+ getDisplayedRowAtIndex(index: number): RowNode | null;
174
+ /** Iterate through all row nodes */
175
+ forEachNode(callback: (node: RowNode, index: number) => void): void;
176
+ /** Iterate through nodes after filter */
177
+ forEachNodeAfterFilter(callback: (node: RowNode, index: number) => void): void;
178
+ /** Iterate through nodes after filter and sort */
179
+ forEachNodeAfterFilterAndSort(callback: (node: RowNode, index: number) => void): void;
180
+ /** Get first displayed row index */
181
+ getFirstDisplayedRow(): number;
182
+ /** Get last displayed row index */
183
+ getLastDisplayedRow(): number;
184
+ /** Get current column definitions */
185
+ getColumnDefs(): Column[];
186
+ /** Replace column definitions */
187
+ setColumnDefs(colDefs: Column[]): void;
188
+ /** Get all columns */
189
+ getAllColumns(): Column[];
190
+ /** Get displayed columns in center (not pinned) */
191
+ getDisplayedCenterColumns(): Column[];
192
+ /** Get displayed left pinned columns */
193
+ getDisplayedLeftColumns(): Column[];
194
+ /** Get displayed right pinned columns */
195
+ getDisplayedRightColumns(): Column[];
196
+ /** Show or hide a column */
197
+ setColumnVisible(key: ColKey, visible: boolean): void;
198
+ /** Show or hide multiple columns */
199
+ setColumnsVisible(keys: ColKey[], visible: boolean): void;
200
+ /** Pin or unpin a column */
201
+ setColumnPinned(key: ColKey, pinned: 'left' | 'right' | null): void;
202
+ /** Auto-size specific columns to fit content */
203
+ autoSizeColumns(keys?: ColKey[]): void;
204
+ /** Auto-size all columns to fit content */
205
+ autoSizeAllColumns(): void;
206
+ /** Move column to new position */
207
+ moveColumn(key: ColKey, toIndex: number): void;
208
+ /** Move columns to new positions */
209
+ moveColumns(keys: ColKey[], toIndex: number): void;
210
+ /** Get current column state */
211
+ getColumnState(): ColumnState[];
212
+ /** Apply column state (restore from saved state) */
213
+ applyColumnState(state: ColumnState[]): void;
214
+ /** Reset column state to initial */
215
+ resetColumnState(): void;
216
+ /** Get column by key */
217
+ getColumn(key: ColKey): Column | null;
218
+ /** Check if any filter is currently active */
219
+ isAnyFilterPresent(): boolean;
220
+ /** Get current filter model */
221
+ getFilterModel(): FilterConfig;
222
+ /** Set filter model */
223
+ setFilterModel(model: FilterConfig): void;
224
+ /** Trigger filter changed event */
225
+ onFilterChanged(): void;
226
+ /** Destroy filter for specific column */
227
+ destroyFilter(colKey: ColKey): void;
228
+ /** Get filter instance for a column */
229
+ getFilterInstance(colKey: ColKey): unknown;
230
+ /** Clear all filters */
231
+ clearAllFilters(): void;
232
+ /** Get current sort model */
233
+ getSortModel(): SortConfig[];
234
+ /** Set sort model */
235
+ setSortModel(model: SortConfig[]): void;
236
+ /** Trigger sort changed event */
237
+ onSortChanged(): void;
238
+ /** Clear all sorting */
239
+ clearAllSorting(): void;
240
+ /** Get selected row nodes */
241
+ getSelectedNodes(): RowNode[];
242
+ /** Get selected row data */
243
+ getSelectedRows(): Row[];
244
+ /** Select all rows */
245
+ selectAll(): void;
246
+ /** Deselect all rows */
247
+ deselectAll(): void;
248
+ /** Select all filtered rows */
249
+ selectAllFiltered(): void;
250
+ /** Deselect all filtered rows */
251
+ deselectAllFiltered(): void;
252
+ /** Get number of selected rows */
253
+ getSelectedRowCount(): number;
254
+ /** Ensure row index is visible in viewport */
255
+ ensureIndexVisible(index: number, position?: 'top' | 'middle' | 'bottom'): void;
256
+ /** Ensure row node is visible in viewport */
257
+ ensureNodeVisible(node: RowNode, position?: 'top' | 'middle' | 'bottom'): void;
258
+ /** Set focused cell */
259
+ setFocusedCell(rowIndex: number, colKey: ColKey): void;
260
+ /** Clear focused cell */
261
+ clearFocusedCell(): void;
262
+ /** Get currently focused cell */
263
+ getFocusedCell(): {
264
+ rowIndex: number;
265
+ column: Column;
266
+ } | null;
267
+ /** Start editing a cell */
268
+ startEditingCell(params: StartEditingCellParams): void;
269
+ /** Stop editing (save or cancel) */
270
+ stopEditing(cancel?: boolean): void;
271
+ /** Get cells currently being edited */
272
+ getEditingCells(): Array<{
273
+ rowIndex: number;
274
+ column: Column;
275
+ }>;
276
+ /** Re-render specific cells */
277
+ refreshCells(params?: RefreshCellsParams): void;
278
+ /** Re-render column headers */
279
+ refreshHeader(): void;
280
+ /** Refresh tool panel */
281
+ refreshToolPanel(): void;
282
+ /** Redraw rows (full re-render) */
283
+ redrawRows(params?: RedrawRowsParams): void;
284
+ /** Resize columns to fit grid width */
285
+ sizeColumnsToFit(): void;
286
+ /** Force layout recalculation */
287
+ doLayout(): void;
288
+ /** Export data as CSV file */
289
+ exportDataAsCsv(params?: CsvExportParams): void;
290
+ /** Get data as CSV string */
291
+ getDataAsCsv(params?: CsvExportParams): string;
292
+ /** Export data as Excel file */
293
+ exportDataAsExcel(params?: ExcelExportParams): void;
294
+ /** Copy selected rows to clipboard */
295
+ copySelectedRowsToClipboard(): void;
296
+ /** Copy selected range to clipboard */
297
+ copySelectedRangeToClipboard(): void;
298
+ /** Show loading overlay */
299
+ showLoadingOverlay(): void;
300
+ /** Show no rows overlay */
301
+ showNoRowsOverlay(): void;
302
+ /** Hide all overlays */
303
+ hideOverlay(): void;
304
+ /** Get current page */
305
+ paginationGetCurrentPage(): number;
306
+ /** Go to specific page */
307
+ paginationGoToPage(page: number): void;
308
+ /** Go to next page */
309
+ paginationGoToNextPage(): void;
310
+ /** Go to previous page */
311
+ paginationGoToPreviousPage(): void;
312
+ /** Get total number of pages */
313
+ paginationGetTotalPages(): number;
314
+ /** Get page size */
315
+ paginationGetPageSize(): number;
316
+ /** Set page size */
317
+ paginationSetPageSize(size: number): void;
318
+ /** Set columns to group by */
319
+ setRowGroupColumns(colKeys: ColKey[]): void;
320
+ /** Add column to grouping */
321
+ addRowGroupColumn(colKey: ColKey): void;
322
+ /** Remove column from grouping */
323
+ removeRowGroupColumn(colKey: ColKey): void;
324
+ /** Get columns used for grouping */
325
+ getRowGroupColumns(): Column[];
326
+ /** Expand all groups/tree nodes */
327
+ expandAll(): void;
328
+ /** Collapse all groups/tree nodes */
329
+ collapseAll(): void;
330
+ /** Expand specific node */
331
+ onGroupExpandedOrCollapsed(node?: RowNode): void;
332
+ /** Save current layout with name */
333
+ saveLayout(name: string): Promise<void>;
334
+ /** Load layout by name */
335
+ loadLayout(name: string): Promise<void>;
336
+ /** Get current layout state */
337
+ getLayoutState(): LayoutPreset['layout'];
338
+ /** Apply layout state */
339
+ applyLayoutState(layout: LayoutPreset['layout']): void;
340
+ /** Destroy grid and clean up resources */
341
+ destroy(): void;
342
+ /** Check if grid has been destroyed */
343
+ isDestroyed(): boolean;
344
+ /** Add event listener */
345
+ addEventListener(eventType: string, listener: (event: unknown) => void): void;
346
+ /** Remove event listener */
347
+ removeEventListener(eventType: string, listener: (event: unknown) => void): void;
348
+ }
@@ -0,0 +1,4 @@
1
+ import type { GridState, GridAction, Column } from './types';
2
+ export type { GridState, GridAction };
3
+ export declare const createInitialState: (columns: Column[], pageSize?: number) => GridState;
4
+ export declare const gridReducer: (state: GridState, action: GridAction) => GridState;
@@ -0,0 +1,17 @@
1
+ import type { Row, GroupedRow, AggregateFunction, ExpandedGroups } from './types';
2
+ /**
3
+ * Compute aggregate value for a group of rows
4
+ */
5
+ export declare const computeAggregate: (rows: Row[], field: string, func: AggregateFunction) => number;
6
+ /**
7
+ * Group rows by specified fields recursively
8
+ */
9
+ export declare const groupRows: (rows: Row[], groupByFields: string[], expandedGroups: ExpandedGroups, level?: number) => (Row | GroupedRow)[];
10
+ /**
11
+ * Flatten grouped rows for rendering
12
+ */
13
+ export declare const flattenGroupedRows: (groupedRows: (Row | GroupedRow)[]) => (Row | GroupedRow)[];
14
+ /**
15
+ * Check if a row is a grouped row
16
+ */
17
+ export declare const isGroupedRow: (row: Row | GroupedRow) => row is GroupedRow;
@@ -0,0 +1,41 @@
1
+ export { DataGrid } from './DataGrid';
2
+ export { VirtualScroller } from './VirtualScroller';
3
+ export type { GridApi, RowNode, RowModel, ColKey, ColumnState, RefreshCellsParams, RedrawRowsParams, CsvExportParams, ExcelExportParams, RowDataTransaction, RowNodeTransaction, CellRange, StartEditingCellParams, } from './gridApi.types';
4
+ export { GridApiImpl } from './gridApi';
5
+ export { ColumnChooser } from './ColumnChooser';
6
+ export { ExportMenu } from './ExportMenu';
7
+ export { ColumnFilters } from './ColumnFilters';
8
+ export { AdvancedFilterBuilder } from './AdvancedFilterBuilder';
9
+ export { FacetedSearch } from './FacetedSearch';
10
+ export type { FacetConfig, FacetedSearchProps } from './FacetedSearch';
11
+ export { FilteredSearchBar } from './FilteredSearchBar';
12
+ export type { SearchToken, FilterOption, FilteredSearchBarProps } from './FilteredSearchBar';
13
+ export { LayoutPresetsManager } from './LayoutPresetsManager';
14
+ export { InfiniteScrollDataGrid, ThemedInfiniteScrollDataGrid } from './InfiniteScrollDataGrid';
15
+ export { ServerSideDataSource, createMockServerDataSource } from './ServerSideDataSource';
16
+ export { ThemeSelector } from './ThemeSelector';
17
+ export { getTheme, getThemeNames, generateThemeCSS, quartzTheme, alpineTheme, materialTheme, darkTheme, themes } from './themes';
18
+ export type { ThemeName, GridTheme } from './themes';
19
+ export { DensityToggle } from './DensityToggle';
20
+ export { useDensityMode } from './useDensityMode';
21
+ export type { UseDensityModeOptions, UseDensityModeReturn } from './useDensityMode';
22
+ export { getDensityConfig, getDensityModes, getDensityLabel, generateDensityCSS, saveDensityMode, loadDensityMode, densityConfigs } from './densityModes';
23
+ export type { DensityMode, DensityConfig } from './densityModes';
24
+ export type { Column, Row, DataGridProps, GroupedRow, AggregateFunction, AggregateConfig, FooterConfig, VirtualScrollConfig, FilterType, FilterValue, FilterCondition, AdvancedFilterValue, FilterConfig, LayoutPreset, StorageStrategy, StorageAdapter, ServerConfig, UserProfileConfig, PersistenceConfig, TreeNode, TreeConfig, ExpandedNodes, RowPinConfig, ContextMenuItem, ContextMenuConfig, ContextMenuEvent, TooltipConfig, TooltipContent, TooltipPlacement } from './types';
25
+ export type { ServerSideDataSourceConfig, ServerSideRequest, ServerSideResponse } from './ServerSideDataSource';
26
+ export type { InfiniteScrollDataGridProps } from './InfiniteScrollDataGrid';
27
+ export { handleExport, exportToCSV, exportToXLSX, generateFilename } from './exportUtils';
28
+ export type { ExportFormat, ExportScope, ExcelStyling, ExportOptions } from './exportUtils';
29
+ export { LayoutPersistenceManager, LocalStorageAdapter, ServerAdapter, UserProfileAdapter, getStorageAdapter, generatePresetId, createPreset } from './layoutPersistence';
30
+ export { buildTreeFromFlat, flattenTree, toggleNodeExpansion, expandAllNodes, collapseAllNodes, getDescendantIds, getNodePath, getTreeDepth, countTreeNodes, filterTree, isTreeNode } from './treeDataUtils';
31
+ export { StatusChip, ProgressBar, IconCell, ImageCell, ButtonCell, BadgeCell, PriorityIndicator, Rating, CurrencyCell, } from './CellRenderers';
32
+ export { GridApiDemo } from './GridApiDemo';
33
+ export { MarketDataGrid } from './MarketDataGrid';
34
+ export type { MarketDataGridProps } from './MarketDataGrid';
35
+ export { MarketDataEngine, createMarketDataEngine } from './MarketDataEngine';
36
+ export type { CellUpdate as MarketCellUpdate, FlashAnimation as MarketFlashAnimation, MarketDataRow, MarketDataEngineConfig, RowUpdate } from './MarketDataEngine';
37
+ export { useMarketData } from './useMarketData';
38
+ export type { WebSocketConfig, MarketDataSubscription, ConnectionState, UseMarketDataOptions, UseMarketDataReturn } from './useMarketData';
39
+ export { WebSocketMockFeed, createMockFeed, createMockWebSocket } from './WebSocketMockFeed';
40
+ export type { MockMarketData, MockFeedConfig, MockWebSocket } from './WebSocketMockFeed';
41
+ export type { MarketDataConfig } from './types';
@@ -0,0 +1,95 @@
1
+ import type { LayoutPreset, StorageAdapter, ServerConfig, UserProfileConfig, PersistenceConfig } from './types';
2
+ /**
3
+ * LocalStorage Adapter
4
+ * Stores layout presets in browser's localStorage
5
+ */
6
+ export declare class LocalStorageAdapter implements StorageAdapter {
7
+ save(key: string, preset: LayoutPreset): Promise<void>;
8
+ load(key: string, presetId?: string): Promise<LayoutPreset | LayoutPreset[] | null>;
9
+ delete(key: string, presetId: string): Promise<void>;
10
+ list(key: string): Promise<LayoutPreset[]>;
11
+ }
12
+ /**
13
+ * Server Adapter
14
+ * Stores layout presets on a remote server via REST API
15
+ */
16
+ export declare class ServerAdapter implements StorageAdapter {
17
+ private config;
18
+ constructor(config: ServerConfig);
19
+ save(key: string, preset: LayoutPreset): Promise<void>;
20
+ load(key: string, presetId?: string): Promise<LayoutPreset | LayoutPreset[] | null>;
21
+ delete(key: string, presetId: string): Promise<void>;
22
+ list(key: string): Promise<LayoutPreset[]>;
23
+ }
24
+ /**
25
+ * User Profile Adapter
26
+ * Stores layout presets associated with a specific user
27
+ * Uses localStorage with user-specific keys by default, but can use custom adapter
28
+ */
29
+ export declare class UserProfileAdapter implements StorageAdapter {
30
+ private config;
31
+ private baseAdapter;
32
+ constructor(config: UserProfileConfig);
33
+ private getUserKey;
34
+ save(key: string, preset: LayoutPreset): Promise<void>;
35
+ load(key: string, presetId?: string): Promise<LayoutPreset | LayoutPreset[] | null>;
36
+ delete(key: string, presetId: string): Promise<void>;
37
+ list(key: string): Promise<LayoutPreset[]>;
38
+ }
39
+ /**
40
+ * Get storage adapter based on configuration
41
+ */
42
+ export declare function getStorageAdapter(config: PersistenceConfig): StorageAdapter;
43
+ /**
44
+ * Generate a unique ID for a preset
45
+ */
46
+ export declare function generatePresetId(): string;
47
+ /**
48
+ * Create a new layout preset from current grid state
49
+ */
50
+ export declare function createPreset(name: string, layout: LayoutPreset['layout'], description?: string, id?: string): LayoutPreset;
51
+ /**
52
+ * Layout Persistence Manager
53
+ * Main API for saving, loading, and managing layout presets
54
+ */
55
+ export declare class LayoutPersistenceManager {
56
+ private adapter;
57
+ private storageKey;
58
+ constructor(config: PersistenceConfig);
59
+ /**
60
+ * Save a layout preset
61
+ */
62
+ savePreset(preset: LayoutPreset): Promise<void>;
63
+ /**
64
+ * Load a specific preset by ID
65
+ */
66
+ loadPreset(presetId: string): Promise<LayoutPreset | null>;
67
+ /**
68
+ * Load the most recently updated preset
69
+ */
70
+ loadLastPreset(): Promise<LayoutPreset | null>;
71
+ /**
72
+ * Delete a preset
73
+ */
74
+ deletePreset(presetId: string): Promise<void>;
75
+ /**
76
+ * List all presets
77
+ */
78
+ listPresets(): Promise<LayoutPreset[]>;
79
+ /**
80
+ * Check if a preset exists
81
+ */
82
+ hasPreset(presetId: string): Promise<boolean>;
83
+ /**
84
+ * Save current layout as auto-save (with special ID)
85
+ */
86
+ autoSave(layout: LayoutPreset['layout']): Promise<void>;
87
+ /**
88
+ * Load auto-saved layout
89
+ */
90
+ loadAutoSave(): Promise<LayoutPreset | null>;
91
+ }
92
+ /**
93
+ * Debounce helper for auto-save functionality
94
+ */
95
+ export declare function debounce<T extends (...args: any[]) => any>(func: T, delay: number): (...args: Parameters<T>) => void;
@@ -0,0 +1,113 @@
1
+ /**
2
+ * DataGrid Theme System
3
+ * Provides multiple pre-built themes: Quartz, Alpine, Material, Dark
4
+ */
5
+ export type ThemeName = 'quartz' | 'alpine' | 'material' | 'dark' | 'nord' | 'dracula' | 'solarized-light' | 'solarized-dark' | 'monokai' | 'one-dark';
6
+ export interface GridTheme {
7
+ name: ThemeName;
8
+ displayName: string;
9
+ colors: {
10
+ background: string;
11
+ backgroundAlt: string;
12
+ headerBackground: string;
13
+ footerBackground: string;
14
+ border: string;
15
+ borderLight: string;
16
+ text: string;
17
+ textSecondary: string;
18
+ textInverse: string;
19
+ headerText: string;
20
+ hover: string;
21
+ active: string;
22
+ selected: string;
23
+ primary: string;
24
+ primaryHover: string;
25
+ primaryLight: string;
26
+ primaryDark: string;
27
+ primaryBackground: string;
28
+ textMuted: string;
29
+ borderHover: string;
30
+ success: string;
31
+ warning: string;
32
+ error: string;
33
+ info: string;
34
+ };
35
+ spacing: {
36
+ cellPadding: string;
37
+ headerPadding: string;
38
+ rowHeight: string;
39
+ };
40
+ typography: {
41
+ fontFamily: string;
42
+ fontSize: string;
43
+ fontSizeSmall: string;
44
+ fontWeight: string;
45
+ headerFontWeight: string;
46
+ };
47
+ borders: {
48
+ width: string;
49
+ radius: string;
50
+ style: string;
51
+ };
52
+ shadows: {
53
+ light: string;
54
+ medium: string;
55
+ heavy: string;
56
+ };
57
+ }
58
+ /**
59
+ * Quartz Theme - Modern white with clean aesthetics
60
+ */
61
+ export declare const quartzTheme: GridTheme;
62
+ /**
63
+ * Alpine Theme - Classic business with professional look
64
+ */
65
+ export declare const alpineTheme: GridTheme;
66
+ /**
67
+ * Material Theme - Material Design inspired
68
+ */
69
+ export declare const materialTheme: GridTheme;
70
+ /**
71
+ * Dark Theme - Dark mode for reduced eye strain
72
+ */
73
+ export declare const darkTheme: GridTheme;
74
+ /**
75
+ * Nord Theme - Cool, arctic-inspired colors
76
+ */
77
+ export declare const nordTheme: GridTheme;
78
+ /**
79
+ * Dracula Theme - Popular purple-tinted dark theme
80
+ */
81
+ export declare const draculaTheme: GridTheme;
82
+ /**
83
+ * Solarized Light Theme - Precision colors for readability
84
+ */
85
+ export declare const solarizedLightTheme: GridTheme;
86
+ /**
87
+ * Solarized Dark Theme - Dark variant of Solarized
88
+ */
89
+ export declare const solarizedDarkTheme: GridTheme;
90
+ /**
91
+ * Monokai Theme - Vibrant colors on dark background
92
+ */
93
+ export declare const monokaiTheme: GridTheme;
94
+ /**
95
+ * One Dark Theme - Atom's iconic dark theme
96
+ */
97
+ export declare const oneDarkTheme: GridTheme;
98
+ /**
99
+ * Theme registry - all available themes
100
+ */
101
+ export declare const themes: Record<ThemeName, GridTheme>;
102
+ /**
103
+ * Get theme by name
104
+ */
105
+ export declare function getTheme(themeName: ThemeName): GridTheme;
106
+ /**
107
+ * Get all available theme names
108
+ */
109
+ export declare function getThemeNames(): ThemeName[];
110
+ /**
111
+ * Generate CSS variables from theme
112
+ */
113
+ export declare function generateThemeCSS(theme: GridTheme): Record<string, string>;