ag-grid-url-sync 0.3.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/README.md +144 -14
  2. package/dist/core/ag-grid-url-sync.d.ts +13 -0
  3. package/dist/core/ag-grid-url-sync.js +10 -55
  4. package/dist/core/ag-grid-url-sync.js.map +1 -1
  5. package/dist/core/grid-integration.js +5 -67
  6. package/dist/core/grid-integration.js.map +1 -1
  7. package/dist/core/index.js +0 -5
  8. package/dist/core/index.js.map +1 -1
  9. package/dist/core/individual-params.d.ts +19 -0
  10. package/dist/core/individual-params.js +260 -0
  11. package/dist/core/individual-params.js.map +1 -0
  12. package/dist/core/serialization/formats.d.ts +8 -9
  13. package/dist/core/serialization/formats.js +63 -65
  14. package/dist/core/serialization/formats.js.map +1 -1
  15. package/dist/core/serialization/grouped.d.ts +10 -5
  16. package/dist/core/serialization/grouped.js +4 -51
  17. package/dist/core/serialization/grouped.js.map +1 -1
  18. package/dist/core/serialization/index.js +0 -4
  19. package/dist/core/serialization/index.js.map +1 -1
  20. package/dist/core/types.d.ts +42 -9
  21. package/dist/core/types.js +0 -118
  22. package/dist/core/types.js.map +1 -1
  23. package/dist/core/url-generator.d.ts +10 -7
  24. package/dist/core/url-generator.js +25 -165
  25. package/dist/core/url-generator.js.map +1 -1
  26. package/dist/core/url-parser.d.ts +19 -7
  27. package/dist/core/url-parser.js +28 -294
  28. package/dist/core/url-parser.js.map +1 -1
  29. package/dist/core/validation.d.ts +6 -6
  30. package/dist/core/validation.js +1 -78
  31. package/dist/core/validation.js.map +1 -1
  32. package/dist/core/view-storage.d.ts +63 -0
  33. package/dist/core/view-storage.js +112 -0
  34. package/dist/core/view-storage.js.map +1 -0
  35. package/dist/index.d.ts +1 -0
  36. package/dist/index.js +0 -6
  37. package/dist/index.js.map +1 -1
  38. package/dist/react/index.d.ts +1 -0
  39. package/dist/react/types.d.ts +103 -1
  40. package/dist/react/use-ag-grid-url-sync.js +406 -46
  41. package/dist/react/use-ag-grid-url-sync.js.map +1 -1
  42. package/package.json +98 -31
@@ -1,25 +1,137 @@
1
1
  import { useState, useEffect, useRef, useCallback, useMemo } from 'react';
2
2
  import { AGGridUrlSync } from '../core/ag-grid-url-sync.js';
3
3
  import { parseUrlFilters as parseFilters } from '../core/url-parser.js';
4
+ import { createViewStore } from '../core/view-storage.js';
4
5
  import { DEFAULT_CONFIG } from '../core/validation.js';
5
- /**
6
- * React hook for AG Grid URL synchronization
7
- *
8
- * @param gridApi - AG Grid API instance (can be null during initialization)
9
- * @param options - Configuration options for the hook
10
- * @returns Hook API for URL synchronization
11
- */
6
+ function sameViews(a, b) {
7
+ return a.length === b.length && JSON.stringify(a) === JSON.stringify(b);
8
+ }
9
+ function sameFilterModel(a, b) {
10
+ const keys = Object.keys(a);
11
+ return (keys.length === Object.keys(b).length &&
12
+ keys.every(key => JSON.stringify(a[key]) === JSON.stringify(b[key])));
13
+ }
14
+ function applicableModel(gridApi, model) {
15
+ if (typeof gridApi.getColumn !== 'function')
16
+ return model;
17
+ return Object.fromEntries(Object.entries(model).filter(([colId]) => gridApi.getColumn(colId)?.isFilterAllowed() ?? false));
18
+ }
19
+ function couldBeLanding(live, expected, before) {
20
+ return Object.keys(live).every(colId => Object.hasOwn(expected, colId) ||
21
+ (before !== null &&
22
+ Object.hasOwn(before, colId) &&
23
+ JSON.stringify(live[colId]) === JSON.stringify(before[colId])));
24
+ }
12
25
  export function useAGGridUrlSync(gridApi, options = {}) {
13
- const { autoApplyOnMount = false, enabledWhenReady = true, onError, ...coreOptions } = options;
14
- // Internal state
26
+ const { autoApplyOnMount = false, enabledWhenReady = true, onError, storageKey, ...coreOptions } = options;
15
27
  const [isReady, setIsReady] = useState(false);
16
28
  const [currentUrl, setCurrentUrl] = useState('');
17
29
  const [hasFilters, setHasFilters] = useState(false);
18
- // Refs to track state and prevent memory leaks
30
+ const viewStore = useMemo(() => (storageKey ? createViewStore(storageKey) : null), [storageKey]);
31
+ const [views, setViews] = useState([]);
32
+ const [activeViewId, setActiveViewId] = useState(null);
33
+ const activeViewIdRef = useRef(null);
34
+ const appliedModelRef = useRef(null);
35
+ const pendingWriteRef = useRef(null);
36
+ const writingRef = useRef(false);
37
+ const commitActiveViewId = useCallback((id) => {
38
+ activeViewIdRef.current = id;
39
+ setActiveViewId(id);
40
+ if (id === null) {
41
+ appliedModelRef.current = null;
42
+ pendingWriteRef.current = null;
43
+ }
44
+ }, []);
45
+ const applyModelToGrid = useCallback((api, model) => {
46
+ let before = null;
47
+ try {
48
+ before = api.getFilterModel() ?? {};
49
+ }
50
+ catch {
51
+ }
52
+ pendingWriteRef.current = {
53
+ before,
54
+ expected: applicableModel(api, model)
55
+ };
56
+ writingRef.current = true;
57
+ try {
58
+ api.setFilterModel(model);
59
+ }
60
+ catch (error) {
61
+ pendingWriteRef.current = null;
62
+ throw error;
63
+ }
64
+ finally {
65
+ writingRef.current = false;
66
+ }
67
+ if (!pendingWriteRef.current)
68
+ return;
69
+ let live = null;
70
+ try {
71
+ live = api.getFilterModel() ?? {};
72
+ }
73
+ catch {
74
+ }
75
+ if (live && (!before || !sameFilterModel(live, before))) {
76
+ pendingWriteRef.current = null;
77
+ appliedModelRef.current = live;
78
+ }
79
+ }, []);
80
+ const writeOverPendingView = useCallback((write) => {
81
+ const pending = pendingWriteRef.current;
82
+ if (!pending || !gridApi) {
83
+ write();
84
+ return;
85
+ }
86
+ const applied = appliedModelRef.current;
87
+ const activeId = activeViewIdRef.current;
88
+ let before = null;
89
+ try {
90
+ before = gridApi.getFilterModel() ?? {};
91
+ }
92
+ catch {
93
+ }
94
+ pendingWriteRef.current = null;
95
+ appliedModelRef.current = pending.expected;
96
+ const reinstate = () => {
97
+ if (pendingWriteRef.current || activeViewIdRef.current !== activeId) {
98
+ return;
99
+ }
100
+ pendingWriteRef.current = pending;
101
+ appliedModelRef.current = applied;
102
+ };
103
+ try {
104
+ write();
105
+ }
106
+ catch (error) {
107
+ reinstate();
108
+ throw error;
109
+ }
110
+ if (!before)
111
+ return;
112
+ try {
113
+ const live = gridApi.getFilterModel() ?? {};
114
+ if (sameFilterModel(live, before))
115
+ reinstate();
116
+ }
117
+ catch {
118
+ }
119
+ }, [gridApi]);
120
+ const syncViewsFromStore = useCallback(() => {
121
+ const nextViews = viewStore ? viewStore.listViews() : [];
122
+ setViews(prev => (sameViews(prev, nextViews) ? prev : nextViews));
123
+ }, [viewStore]);
19
124
  const urlSyncRef = useRef(null);
20
125
  const autoAppliedRef = useRef(false);
126
+ const urlAppliedRef = useRef(false);
21
127
  const lastGridApiRef = useRef(null);
22
- // Helper function to handle errors consistently
128
+ useEffect(() => {
129
+ syncViewsFromStore();
130
+ commitActiveViewId(null);
131
+ if (viewStore) {
132
+ autoAppliedRef.current = false;
133
+ }
134
+ }, [syncViewsFromStore, viewStore, commitActiveViewId]);
23
135
  const handleError = useCallback((error, context) => {
24
136
  const errorObj = error instanceof Error ? error : new Error(String(error));
25
137
  if (onError) {
@@ -29,16 +141,15 @@ export function useAGGridUrlSync(gridApi, options = {}) {
29
141
  console.error(`AG Grid URL Sync Error [${context}]:`, errorObj);
30
142
  }
31
143
  }, [onError]);
32
- // Initialize or update URL sync instance when grid API changes
33
144
  useEffect(() => {
34
145
  if (gridApi && enabledWhenReady) {
35
- // Clean up previous instance if grid API changed
36
146
  if (lastGridApiRef.current && lastGridApiRef.current !== gridApi) {
37
147
  urlSyncRef.current?.destroy();
38
148
  urlSyncRef.current = null;
39
149
  autoAppliedRef.current = false;
150
+ urlAppliedRef.current = false;
151
+ commitActiveViewId(null);
40
152
  }
41
- // Create new instance if needed
42
153
  if (!urlSyncRef.current) {
43
154
  try {
44
155
  urlSyncRef.current = new AGGridUrlSync(gridApi, coreOptions);
@@ -52,63 +163,173 @@ export function useAGGridUrlSync(gridApi, options = {}) {
52
163
  }
53
164
  }
54
165
  else {
55
- // Clean up when grid API is null or disabled
56
166
  if (urlSyncRef.current) {
57
167
  urlSyncRef.current.destroy();
58
168
  urlSyncRef.current = null;
59
169
  autoAppliedRef.current = false;
170
+ urlAppliedRef.current = false;
171
+ commitActiveViewId(null);
60
172
  }
61
173
  setIsReady(false);
62
174
  lastGridApiRef.current = null;
63
175
  }
64
- }, [gridApi, enabledWhenReady, coreOptions, handleError]);
65
- // Auto-apply URL filters on mount if enabled
176
+ }, [gridApi, enabledWhenReady, coreOptions, handleError, commitActiveViewId]);
177
+ const urlHasFilterParams = useCallback(() => {
178
+ if (typeof window === 'undefined')
179
+ return false;
180
+ const rawPrefix = coreOptions.paramPrefix || DEFAULT_CONFIG.paramPrefix;
181
+ const prefix = rawPrefix.endsWith('_') ? rawPrefix : `${rawPrefix}_`;
182
+ const groupedParam = coreOptions.groupedParam ?? DEFAULT_CONFIG.groupedParam;
183
+ const search = window.location.search;
184
+ const params = new URLSearchParams(search);
185
+ let hasFilterParam = false;
186
+ for (const key of params.keys()) {
187
+ if (key.startsWith(prefix) || key === groupedParam) {
188
+ hasFilterParam = true;
189
+ break;
190
+ }
191
+ }
192
+ if (!hasFilterParam)
193
+ return false;
194
+ const probeConfig = {
195
+ paramPrefix: coreOptions.paramPrefix ?? DEFAULT_CONFIG.paramPrefix,
196
+ maxValueLength: coreOptions.maxValueLength ?? DEFAULT_CONFIG.maxValueLength,
197
+ onParseError: () => { },
198
+ serialization: coreOptions.serialization ?? DEFAULT_CONFIG.serialization,
199
+ groupedParam: coreOptions.groupedParam ?? DEFAULT_CONFIG.groupedParam,
200
+ format: coreOptions.format ?? DEFAULT_CONFIG.format
201
+ };
202
+ try {
203
+ return Object.keys(parseFilters(search, probeConfig)).length > 0;
204
+ }
205
+ catch {
206
+ return false;
207
+ }
208
+ }, [coreOptions]);
66
209
  useEffect(() => {
67
210
  if (isReady &&
68
211
  autoApplyOnMount &&
69
212
  !autoAppliedRef.current &&
70
213
  urlSyncRef.current) {
214
+ autoAppliedRef.current = true;
71
215
  try {
72
- urlSyncRef.current.applyFromUrl();
73
- autoAppliedRef.current = true;
216
+ if (!viewStore ||
217
+ !gridApi ||
218
+ (!urlAppliedRef.current && urlHasFilterParams())) {
219
+ urlSyncRef.current.applyFromUrl();
220
+ if (viewStore && gridApi) {
221
+ urlAppliedRef.current = true;
222
+ }
223
+ commitActiveViewId(null);
224
+ try {
225
+ viewStore?.persistActiveViewId(null);
226
+ }
227
+ catch (error) {
228
+ handleError(error, 'auto-apply-filters');
229
+ }
230
+ return;
231
+ }
232
+ const storedId = viewStore.getActiveViewId();
233
+ const stored = storedId
234
+ ? viewStore.listViews().find(view => view.id === storedId)
235
+ : undefined;
236
+ if (stored) {
237
+ try {
238
+ applyModelToGrid(gridApi, stored.filterModel);
239
+ commitActiveViewId(stored.id);
240
+ }
241
+ catch (error) {
242
+ handleError(error, 'auto-apply-filters');
243
+ }
244
+ }
74
245
  }
75
246
  catch (error) {
76
247
  handleError(error, 'auto-apply-filters');
77
248
  coreOptions.onParseError?.(error);
78
249
  }
79
250
  }
80
- }, [isReady, autoApplyOnMount, coreOptions, handleError]);
81
- // Update current URL and filter state on filter changes
251
+ }, [
252
+ isReady,
253
+ autoApplyOnMount,
254
+ coreOptions,
255
+ handleError,
256
+ urlHasFilterParams,
257
+ viewStore,
258
+ gridApi,
259
+ commitActiveViewId,
260
+ applyModelToGrid
261
+ ]);
82
262
  useEffect(() => {
83
263
  if (!isReady || !urlSyncRef.current || !gridApi) {
84
264
  setCurrentUrl('');
85
265
  setHasFilters(false);
86
266
  return;
87
267
  }
88
- const updateState = () => {
268
+ const syncActiveViewToGrid = (fromEvent, source) => {
269
+ const activeId = activeViewIdRef.current;
270
+ let applied = appliedModelRef.current;
271
+ if (!pendingWriteRef.current && (!activeId || !applied || !viewStore)) {
272
+ return;
273
+ }
274
+ let live;
275
+ try {
276
+ live = gridApi.getFilterModel() ?? {};
277
+ }
278
+ catch {
279
+ return;
280
+ }
281
+ const pending = pendingWriteRef.current;
282
+ if (pending) {
283
+ if (!fromEvent)
284
+ return;
285
+ const inWrite = writingRef.current;
286
+ if (!inWrite &&
287
+ pending.before &&
288
+ sameFilterModel(live, pending.before)) {
289
+ return;
290
+ }
291
+ pendingWriteRef.current = null;
292
+ if (inWrite ||
293
+ (source === 'api' &&
294
+ couldBeLanding(live, pending.expected, pending.before)) ||
295
+ sameFilterModel(live, pending.expected)) {
296
+ appliedModelRef.current = live;
297
+ return;
298
+ }
299
+ applied = pending.expected;
300
+ }
301
+ if (!activeId || !applied || !viewStore)
302
+ return;
303
+ if (sameFilterModel(live, applied))
304
+ return;
305
+ commitActiveViewId(null);
89
306
  try {
90
- const newUrl = urlSyncRef.current.generateUrl();
91
- setCurrentUrl(newUrl);
92
- // Check if there are active filters by comparing query params
93
- const queryParams = urlSyncRef.current.getQueryParams();
94
- const searchParams = new URLSearchParams(queryParams);
95
- setHasFilters([...searchParams.entries()].length > 0);
307
+ if (viewStore.getActiveViewId() === activeId) {
308
+ viewStore.persistActiveViewId(null);
309
+ }
310
+ }
311
+ catch (error) {
312
+ handleError(error, 'filter-change');
313
+ }
314
+ };
315
+ const updateState = (fromEvent, source) => {
316
+ syncActiveViewToGrid(fromEvent, source);
317
+ try {
318
+ const { url, hasFilters } = urlSyncRef.current.getUrlState();
319
+ setCurrentUrl(url);
320
+ setHasFilters(hasFilters);
96
321
  }
97
322
  catch (error) {
98
323
  handleError(error, 'update-state');
99
324
  }
100
325
  };
101
- // Attach event listener for filter changes
102
- const onFilterChanged = () => updateState();
326
+ const onFilterChanged = (event) => updateState(true, event?.source);
103
327
  gridApi.addEventListener('filterChanged', onFilterChanged);
104
- // Initial state update
105
- updateState();
106
- // Cleanup event listener on unmount or gridApi change
328
+ updateState(false);
107
329
  return () => {
108
330
  gridApi.removeEventListener('filterChanged', onFilterChanged);
109
331
  };
110
- }, [isReady, gridApi, handleError]);
111
- // Cleanup on unmount
332
+ }, [isReady, gridApi, handleError, viewStore, commitActiveViewId]);
112
333
  useEffect(() => {
113
334
  return () => {
114
335
  if (urlSyncRef.current) {
@@ -117,7 +338,6 @@ export function useAGGridUrlSync(gridApi, options = {}) {
117
338
  }
118
339
  };
119
340
  }, []);
120
- // Memoized API methods
121
341
  const shareUrl = useCallback((baseUrl) => {
122
342
  if (!urlSyncRef.current) {
123
343
  return (baseUrl ?? (typeof window !== 'undefined' ? window.location.href : ''));
@@ -150,13 +370,14 @@ export function useAGGridUrlSync(gridApi, options = {}) {
150
370
  return;
151
371
  }
152
372
  try {
153
- urlSyncRef.current.applyFromUrl(url);
373
+ const sync = urlSyncRef.current;
374
+ writeOverPendingView(() => sync.applyFromUrl(url));
154
375
  }
155
376
  catch (error) {
156
377
  handleError(error, 'apply-url-filters');
157
378
  coreOptions.onParseError?.(error);
158
379
  }
159
- }, [coreOptions, handleError]);
380
+ }, [coreOptions, handleError, writeOverPendingView]);
160
381
  const clearFilters = useCallback(() => {
161
382
  if (!urlSyncRef.current) {
162
383
  const warningMessage = 'clearFilters called while the hook is not ready.';
@@ -165,15 +386,16 @@ export function useAGGridUrlSync(gridApi, options = {}) {
165
386
  return;
166
387
  }
167
388
  try {
168
- urlSyncRef.current.clearFilters();
389
+ const sync = urlSyncRef.current;
390
+ writeOverPendingView(() => sync.clearFilters());
169
391
  }
170
392
  catch (error) {
171
393
  handleError(error, 'clear-filters');
172
394
  }
173
- }, [handleError, coreOptions]);
395
+ }, [handleError, coreOptions, writeOverPendingView]);
174
396
  const parseUrlFilters = useCallback((url) => {
175
397
  if (!gridApi) {
176
- return {}; // Silently return empty state if grid API not available
398
+ return {};
177
399
  }
178
400
  try {
179
401
  const config = {
@@ -201,12 +423,13 @@ export function useAGGridUrlSync(gridApi, options = {}) {
201
423
  return;
202
424
  }
203
425
  try {
204
- urlSyncRef.current.applyFilters(filters);
426
+ const sync = urlSyncRef.current;
427
+ writeOverPendingView(() => sync.applyFilters(filters));
205
428
  }
206
429
  catch (error) {
207
430
  handleError(error, 'apply-filters');
208
431
  }
209
- }, [handleError, coreOptions]);
432
+ }, [handleError, coreOptions, writeOverPendingView]);
210
433
  const getFiltersAsFormat = useCallback((format) => {
211
434
  if (!urlSyncRef.current) {
212
435
  return '';
@@ -231,7 +454,134 @@ export function useAGGridUrlSync(gridApi, options = {}) {
231
454
  return DEFAULT_CONFIG.serialization;
232
455
  }
233
456
  }, [handleError]);
234
- // Return the hook API
457
+ const reportNotReady = useCallback((operation, context) => {
458
+ handleError(new Error(`${operation} called while the hook is not ready.`), context);
459
+ }, [handleError]);
460
+ const saveView = useCallback((name) => {
461
+ if (!viewStore || !enabledWhenReady) {
462
+ return null;
463
+ }
464
+ if (!urlSyncRef.current || !gridApi) {
465
+ reportNotReady('saveView', 'save-view');
466
+ return null;
467
+ }
468
+ try {
469
+ const view = viewStore.saveView(name, gridApi.getFilterModel());
470
+ syncViewsFromStore();
471
+ commitActiveViewId(view.id);
472
+ appliedModelRef.current = view.filterModel;
473
+ pendingWriteRef.current = null;
474
+ return view;
475
+ }
476
+ catch (error) {
477
+ handleError(error, 'save-view');
478
+ return null;
479
+ }
480
+ }, [
481
+ viewStore,
482
+ gridApi,
483
+ handleError,
484
+ syncViewsFromStore,
485
+ reportNotReady,
486
+ enabledWhenReady,
487
+ commitActiveViewId
488
+ ]);
489
+ const loadView = useCallback((id) => {
490
+ if (!viewStore || !enabledWhenReady) {
491
+ return;
492
+ }
493
+ if (!urlSyncRef.current || !gridApi) {
494
+ reportNotReady('loadView', 'load-view');
495
+ return;
496
+ }
497
+ try {
498
+ const previous = activeViewIdRef.current;
499
+ const previousApplied = appliedModelRef.current;
500
+ const rollBack = () => {
501
+ commitActiveViewId(previous);
502
+ appliedModelRef.current = previousApplied;
503
+ };
504
+ if (id == null) {
505
+ commitActiveViewId(null);
506
+ try {
507
+ applyModelToGrid(gridApi, {});
508
+ }
509
+ catch (error) {
510
+ rollBack();
511
+ throw error;
512
+ }
513
+ viewStore.persistActiveViewId(null);
514
+ return;
515
+ }
516
+ const view = viewStore
517
+ .listViews()
518
+ .find(candidate => candidate.id === id);
519
+ if (!view) {
520
+ syncViewsFromStore();
521
+ handleError(new Error(`No saved view with id "${id}"`), 'load-view');
522
+ return;
523
+ }
524
+ commitActiveViewId(view.id);
525
+ try {
526
+ applyModelToGrid(gridApi, view.filterModel);
527
+ }
528
+ catch (error) {
529
+ rollBack();
530
+ throw error;
531
+ }
532
+ if (activeViewIdRef.current === view.id) {
533
+ viewStore.persistActiveViewId(view.id);
534
+ }
535
+ }
536
+ catch (error) {
537
+ handleError(error, 'load-view');
538
+ }
539
+ }, [
540
+ gridApi,
541
+ viewStore,
542
+ handleError,
543
+ reportNotReady,
544
+ syncViewsFromStore,
545
+ enabledWhenReady,
546
+ commitActiveViewId,
547
+ applyModelToGrid
548
+ ]);
549
+ const deleteView = useCallback((id) => {
550
+ if (!viewStore || !enabledWhenReady) {
551
+ return;
552
+ }
553
+ try {
554
+ const wasActive = activeViewIdRef.current === id;
555
+ const view = viewStore.listViews().find(entry => entry.id === id);
556
+ const applied = appliedModelRef.current ?? view?.filterModel;
557
+ viewStore.deleteView(id);
558
+ syncViewsFromStore();
559
+ if (wasActive) {
560
+ commitActiveViewId(null);
561
+ }
562
+ if (wasActive && applied !== undefined && gridApi !== null) {
563
+ try {
564
+ const current = gridApi.getFilterModel();
565
+ if (current && sameFilterModel(current, applied)) {
566
+ gridApi.setFilterModel({});
567
+ }
568
+ }
569
+ catch (error) {
570
+ handleError(error, 'delete-view');
571
+ }
572
+ }
573
+ }
574
+ catch (error) {
575
+ handleError(error, 'delete-view');
576
+ }
577
+ }, [
578
+ viewStore,
579
+ gridApi,
580
+ handleError,
581
+ syncViewsFromStore,
582
+ enabledWhenReady,
583
+ commitActiveViewId
584
+ ]);
235
585
  return useMemo(() => ({
236
586
  shareUrl,
237
587
  getQueryParams,
@@ -243,7 +593,12 @@ export function useAGGridUrlSync(gridApi, options = {}) {
243
593
  parseUrlFilters,
244
594
  applyFilters,
245
595
  getFiltersAsFormat,
246
- getCurrentFormat
596
+ getCurrentFormat,
597
+ views,
598
+ activeViewId,
599
+ saveView,
600
+ loadView,
601
+ deleteView
247
602
  }), [
248
603
  shareUrl,
249
604
  getQueryParams,
@@ -255,7 +610,12 @@ export function useAGGridUrlSync(gridApi, options = {}) {
255
610
  parseUrlFilters,
256
611
  applyFilters,
257
612
  getFiltersAsFormat,
258
- getCurrentFormat
613
+ getCurrentFormat,
614
+ views,
615
+ activeViewId,
616
+ saveView,
617
+ loadView,
618
+ deleteView
259
619
  ]);
260
620
  }
261
621
  //# sourceMappingURL=use-ag-grid-url-sync.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-ag-grid-url-sync.js","sourceRoot":"","sources":["../../src/react/use-ag-grid-url-sync.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"use-ag-grid-url-sync.js","sourceRoot":"","sources":["../../src/react/use-ag-grid-url-sync.ts"],"names":[],"mappings":"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"}