ag-grid-url-sync 0.2.4 → 0.4.1

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 (39) hide show
  1. package/README.md +395 -23
  2. package/dist/core/ag-grid-url-sync.d.ts +16 -1
  3. package/dist/core/ag-grid-url-sync.js +19 -41
  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.d.ts +1 -0
  8. package/dist/core/index.js +1 -4
  9. package/dist/core/index.js.map +1 -1
  10. package/dist/core/serialization/formats.d.ts +29 -0
  11. package/dist/core/serialization/formats.js +68 -0
  12. package/dist/core/serialization/formats.js.map +1 -0
  13. package/dist/core/serialization/grouped.d.ts +36 -0
  14. package/dist/core/serialization/grouped.js +105 -0
  15. package/dist/core/serialization/grouped.js.map +1 -0
  16. package/dist/core/serialization/index.d.ts +7 -0
  17. package/dist/core/serialization/index.js +3 -0
  18. package/dist/core/serialization/index.js.map +1 -0
  19. package/dist/core/types.d.ts +75 -5
  20. package/dist/core/types.js +7 -115
  21. package/dist/core/types.js.map +1 -1
  22. package/dist/core/url-generator.js +44 -38
  23. package/dist/core/url-generator.js.map +1 -1
  24. package/dist/core/url-parser.js +8 -52
  25. package/dist/core/url-parser.js.map +1 -1
  26. package/dist/core/validation.d.ts +13 -2
  27. package/dist/core/validation.js +34 -72
  28. package/dist/core/validation.js.map +1 -1
  29. package/dist/core/view-storage.d.ts +63 -0
  30. package/dist/core/view-storage.js +112 -0
  31. package/dist/core/view-storage.js.map +1 -0
  32. package/dist/index.d.ts +3 -0
  33. package/dist/index.js +2 -5
  34. package/dist/index.js.map +1 -1
  35. package/dist/react/index.d.ts +1 -0
  36. package/dist/react/types.d.ts +108 -1
  37. package/dist/react/use-ag-grid-url-sync.js +440 -42
  38. package/dist/react/use-ag-grid-url-sync.js.map +1 -1
  39. package/package.json +101 -30
@@ -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,44 +163,165 @@ 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 groupedParams = new Set([
183
+ coreOptions.groupedParam ?? DEFAULT_CONFIG.groupedParam,
184
+ 'grid_filters',
185
+ 'filters'
186
+ ]);
187
+ const search = window.location.search;
188
+ const params = new URLSearchParams(search);
189
+ let hasFilterParam = false;
190
+ for (const key of params.keys()) {
191
+ if (key.startsWith(prefix) || groupedParams.has(key)) {
192
+ hasFilterParam = true;
193
+ break;
194
+ }
195
+ }
196
+ if (!hasFilterParam)
197
+ return false;
198
+ const probeConfig = {
199
+ gridApi: null,
200
+ paramPrefix: coreOptions.paramPrefix ?? DEFAULT_CONFIG.paramPrefix,
201
+ maxValueLength: coreOptions.maxValueLength ?? DEFAULT_CONFIG.maxValueLength,
202
+ onParseError: () => { },
203
+ serialization: coreOptions.serialization ?? DEFAULT_CONFIG.serialization,
204
+ groupedParam: coreOptions.groupedParam ?? DEFAULT_CONFIG.groupedParam,
205
+ format: coreOptions.format ?? DEFAULT_CONFIG.format
206
+ };
207
+ try {
208
+ return Object.keys(parseFilters(search, probeConfig)).length > 0;
209
+ }
210
+ catch {
211
+ return false;
212
+ }
213
+ }, [coreOptions]);
66
214
  useEffect(() => {
67
215
  if (isReady &&
68
216
  autoApplyOnMount &&
69
217
  !autoAppliedRef.current &&
70
218
  urlSyncRef.current) {
219
+ autoAppliedRef.current = true;
71
220
  try {
72
- urlSyncRef.current.applyFromUrl();
73
- autoAppliedRef.current = true;
221
+ if (!viewStore ||
222
+ !gridApi ||
223
+ (!urlAppliedRef.current && urlHasFilterParams())) {
224
+ urlSyncRef.current.applyFromUrl();
225
+ if (viewStore && gridApi) {
226
+ urlAppliedRef.current = true;
227
+ }
228
+ commitActiveViewId(null);
229
+ try {
230
+ viewStore?.persistActiveViewId(null);
231
+ }
232
+ catch (error) {
233
+ handleError(error, 'auto-apply-filters');
234
+ }
235
+ return;
236
+ }
237
+ const storedId = viewStore.getActiveViewId();
238
+ const stored = storedId
239
+ ? viewStore.listViews().find(view => view.id === storedId)
240
+ : undefined;
241
+ if (stored) {
242
+ try {
243
+ applyModelToGrid(gridApi, stored.filterModel);
244
+ commitActiveViewId(stored.id);
245
+ }
246
+ catch (error) {
247
+ handleError(error, 'auto-apply-filters');
248
+ }
249
+ }
74
250
  }
75
251
  catch (error) {
76
252
  handleError(error, 'auto-apply-filters');
77
253
  coreOptions.onParseError?.(error);
78
254
  }
79
255
  }
80
- }, [isReady, autoApplyOnMount, coreOptions, handleError]);
81
- // Update current URL and filter state on filter changes
256
+ }, [
257
+ isReady,
258
+ autoApplyOnMount,
259
+ coreOptions,
260
+ handleError,
261
+ urlHasFilterParams,
262
+ viewStore,
263
+ gridApi,
264
+ commitActiveViewId,
265
+ applyModelToGrid
266
+ ]);
82
267
  useEffect(() => {
83
268
  if (!isReady || !urlSyncRef.current || !gridApi) {
84
269
  setCurrentUrl('');
85
270
  setHasFilters(false);
86
271
  return;
87
272
  }
88
- const updateState = () => {
273
+ const syncActiveViewToGrid = (fromEvent, source) => {
274
+ const activeId = activeViewIdRef.current;
275
+ let applied = appliedModelRef.current;
276
+ if (!pendingWriteRef.current && (!activeId || !applied || !viewStore)) {
277
+ return;
278
+ }
279
+ let live;
280
+ try {
281
+ live = gridApi.getFilterModel() ?? {};
282
+ }
283
+ catch {
284
+ return;
285
+ }
286
+ const pending = pendingWriteRef.current;
287
+ if (pending) {
288
+ if (!fromEvent)
289
+ return;
290
+ const inWrite = writingRef.current;
291
+ if (!inWrite &&
292
+ pending.before &&
293
+ sameFilterModel(live, pending.before)) {
294
+ return;
295
+ }
296
+ pendingWriteRef.current = null;
297
+ if (inWrite ||
298
+ (source === 'api' &&
299
+ couldBeLanding(live, pending.expected, pending.before)) ||
300
+ sameFilterModel(live, pending.expected)) {
301
+ appliedModelRef.current = live;
302
+ return;
303
+ }
304
+ applied = pending.expected;
305
+ }
306
+ if (!activeId || !applied || !viewStore)
307
+ return;
308
+ if (sameFilterModel(live, applied))
309
+ return;
310
+ commitActiveViewId(null);
311
+ try {
312
+ if (viewStore.getActiveViewId() === activeId) {
313
+ viewStore.persistActiveViewId(null);
314
+ }
315
+ }
316
+ catch (error) {
317
+ handleError(error, 'filter-change');
318
+ }
319
+ };
320
+ const updateState = (fromEvent, source) => {
321
+ syncActiveViewToGrid(fromEvent, source);
89
322
  try {
90
323
  const newUrl = urlSyncRef.current.generateUrl();
91
324
  setCurrentUrl(newUrl);
92
- // Check if there are active filters by comparing query params
93
325
  const queryParams = urlSyncRef.current.getQueryParams();
94
326
  const searchParams = new URLSearchParams(queryParams);
95
327
  setHasFilters([...searchParams.entries()].length > 0);
@@ -98,17 +330,13 @@ export function useAGGridUrlSync(gridApi, options = {}) {
98
330
  handleError(error, 'update-state');
99
331
  }
100
332
  };
101
- // Attach event listener for filter changes
102
- const onFilterChanged = () => updateState();
333
+ const onFilterChanged = (event) => updateState(true, event?.source);
103
334
  gridApi.addEventListener('filterChanged', onFilterChanged);
104
- // Initial state update
105
- updateState();
106
- // Cleanup event listener on unmount or gridApi change
335
+ updateState(false);
107
336
  return () => {
108
337
  gridApi.removeEventListener('filterChanged', onFilterChanged);
109
338
  };
110
- }, [isReady, gridApi, handleError]);
111
- // Cleanup on unmount
339
+ }, [isReady, gridApi, handleError, viewStore, commitActiveViewId]);
112
340
  useEffect(() => {
113
341
  return () => {
114
342
  if (urlSyncRef.current) {
@@ -117,7 +345,6 @@ export function useAGGridUrlSync(gridApi, options = {}) {
117
345
  }
118
346
  };
119
347
  }, []);
120
- // Memoized API methods
121
348
  const shareUrl = useCallback((baseUrl) => {
122
349
  if (!urlSyncRef.current) {
123
350
  return (baseUrl ?? (typeof window !== 'undefined' ? window.location.href : ''));
@@ -150,13 +377,14 @@ export function useAGGridUrlSync(gridApi, options = {}) {
150
377
  return;
151
378
  }
152
379
  try {
153
- urlSyncRef.current.applyFromUrl(url);
380
+ const sync = urlSyncRef.current;
381
+ writeOverPendingView(() => sync.applyFromUrl(url));
154
382
  }
155
383
  catch (error) {
156
384
  handleError(error, 'apply-url-filters');
157
385
  coreOptions.onParseError?.(error);
158
386
  }
159
- }, [coreOptions, handleError]);
387
+ }, [coreOptions, handleError, writeOverPendingView]);
160
388
  const clearFilters = useCallback(() => {
161
389
  if (!urlSyncRef.current) {
162
390
  const warningMessage = 'clearFilters called while the hook is not ready.';
@@ -165,22 +393,26 @@ export function useAGGridUrlSync(gridApi, options = {}) {
165
393
  return;
166
394
  }
167
395
  try {
168
- urlSyncRef.current.clearFilters();
396
+ const sync = urlSyncRef.current;
397
+ writeOverPendingView(() => sync.clearFilters());
169
398
  }
170
399
  catch (error) {
171
400
  handleError(error, 'clear-filters');
172
401
  }
173
- }, [handleError, coreOptions]);
402
+ }, [handleError, coreOptions, writeOverPendingView]);
174
403
  const parseUrlFilters = useCallback((url) => {
175
404
  if (!gridApi) {
176
- return {}; // Silently return empty state if grid API not available
405
+ return {};
177
406
  }
178
407
  try {
179
408
  const config = {
180
409
  gridApi,
181
410
  paramPrefix: coreOptions.paramPrefix ?? DEFAULT_CONFIG.paramPrefix,
182
411
  maxValueLength: coreOptions.maxValueLength ?? DEFAULT_CONFIG.maxValueLength,
183
- onParseError: coreOptions.onParseError ?? (() => { })
412
+ onParseError: coreOptions.onParseError ?? (() => { }),
413
+ serialization: coreOptions.serialization ?? DEFAULT_CONFIG.serialization,
414
+ groupedParam: coreOptions.groupedParam ?? DEFAULT_CONFIG.groupedParam,
415
+ format: coreOptions.format ?? DEFAULT_CONFIG.format
184
416
  };
185
417
  return parseFilters(url, config);
186
418
  }
@@ -198,13 +430,165 @@ export function useAGGridUrlSync(gridApi, options = {}) {
198
430
  return;
199
431
  }
200
432
  try {
201
- urlSyncRef.current.applyFilters(filters);
433
+ const sync = urlSyncRef.current;
434
+ writeOverPendingView(() => sync.applyFilters(filters));
202
435
  }
203
436
  catch (error) {
204
437
  handleError(error, 'apply-filters');
205
438
  }
206
- }, [handleError, coreOptions]);
207
- // Return the hook API
439
+ }, [handleError, coreOptions, writeOverPendingView]);
440
+ const getFiltersAsFormat = useCallback((format) => {
441
+ if (!urlSyncRef.current) {
442
+ return '';
443
+ }
444
+ try {
445
+ return urlSyncRef.current.getFiltersAsFormat(format);
446
+ }
447
+ catch (error) {
448
+ handleError(error, 'get-filters-as-format');
449
+ return '';
450
+ }
451
+ }, [handleError]);
452
+ const getCurrentFormat = useCallback(() => {
453
+ if (!urlSyncRef.current) {
454
+ return DEFAULT_CONFIG.serialization;
455
+ }
456
+ try {
457
+ return urlSyncRef.current.getSerializationMode();
458
+ }
459
+ catch (error) {
460
+ handleError(error, 'get-current-format');
461
+ return DEFAULT_CONFIG.serialization;
462
+ }
463
+ }, [handleError]);
464
+ const reportNotReady = useCallback((operation, context) => {
465
+ handleError(new Error(`${operation} called while the hook is not ready.`), context);
466
+ }, [handleError]);
467
+ const saveView = useCallback((name) => {
468
+ if (!viewStore || !enabledWhenReady) {
469
+ return null;
470
+ }
471
+ if (!urlSyncRef.current || !gridApi) {
472
+ reportNotReady('saveView', 'save-view');
473
+ return null;
474
+ }
475
+ try {
476
+ const view = viewStore.saveView(name, gridApi.getFilterModel());
477
+ syncViewsFromStore();
478
+ commitActiveViewId(view.id);
479
+ appliedModelRef.current = view.filterModel;
480
+ pendingWriteRef.current = null;
481
+ return view;
482
+ }
483
+ catch (error) {
484
+ handleError(error, 'save-view');
485
+ return null;
486
+ }
487
+ }, [
488
+ viewStore,
489
+ gridApi,
490
+ handleError,
491
+ syncViewsFromStore,
492
+ reportNotReady,
493
+ enabledWhenReady,
494
+ commitActiveViewId
495
+ ]);
496
+ const loadView = useCallback((id) => {
497
+ if (!viewStore || !enabledWhenReady) {
498
+ return;
499
+ }
500
+ if (!urlSyncRef.current || !gridApi) {
501
+ reportNotReady('loadView', 'load-view');
502
+ return;
503
+ }
504
+ try {
505
+ const previous = activeViewIdRef.current;
506
+ const previousApplied = appliedModelRef.current;
507
+ const rollBack = () => {
508
+ commitActiveViewId(previous);
509
+ appliedModelRef.current = previousApplied;
510
+ };
511
+ if (id == null) {
512
+ commitActiveViewId(null);
513
+ try {
514
+ applyModelToGrid(gridApi, {});
515
+ }
516
+ catch (error) {
517
+ rollBack();
518
+ throw error;
519
+ }
520
+ viewStore.persistActiveViewId(null);
521
+ return;
522
+ }
523
+ const view = viewStore
524
+ .listViews()
525
+ .find(candidate => candidate.id === id);
526
+ if (!view) {
527
+ syncViewsFromStore();
528
+ handleError(new Error(`No saved view with id "${id}"`), 'load-view');
529
+ return;
530
+ }
531
+ commitActiveViewId(view.id);
532
+ try {
533
+ applyModelToGrid(gridApi, view.filterModel);
534
+ }
535
+ catch (error) {
536
+ rollBack();
537
+ throw error;
538
+ }
539
+ if (activeViewIdRef.current === view.id) {
540
+ viewStore.persistActiveViewId(view.id);
541
+ }
542
+ }
543
+ catch (error) {
544
+ handleError(error, 'load-view');
545
+ }
546
+ }, [
547
+ gridApi,
548
+ viewStore,
549
+ handleError,
550
+ reportNotReady,
551
+ syncViewsFromStore,
552
+ enabledWhenReady,
553
+ commitActiveViewId,
554
+ applyModelToGrid
555
+ ]);
556
+ const deleteView = useCallback((id) => {
557
+ if (!viewStore || !enabledWhenReady) {
558
+ return;
559
+ }
560
+ try {
561
+ const wasActive = activeViewIdRef.current === id;
562
+ const view = viewStore.listViews().find(entry => entry.id === id);
563
+ const applied = appliedModelRef.current ?? view?.filterModel;
564
+ viewStore.deleteView(id);
565
+ syncViewsFromStore();
566
+ if (wasActive) {
567
+ commitActiveViewId(null);
568
+ }
569
+ if (wasActive && applied !== undefined && gridApi !== null) {
570
+ try {
571
+ const current = gridApi.getFilterModel();
572
+ if (current && sameFilterModel(current, applied)) {
573
+ gridApi.setFilterModel({});
574
+ }
575
+ }
576
+ catch (error) {
577
+ handleError(error, 'delete-view');
578
+ }
579
+ }
580
+ }
581
+ catch (error) {
582
+ handleError(error, 'delete-view');
583
+ }
584
+ }, [
585
+ viewStore,
586
+ gridApi,
587
+ handleError,
588
+ syncViewsFromStore,
589
+ enabledWhenReady,
590
+ commitActiveViewId
591
+ ]);
208
592
  return useMemo(() => ({
209
593
  shareUrl,
210
594
  getQueryParams,
@@ -214,7 +598,14 @@ export function useAGGridUrlSync(gridApi, options = {}) {
214
598
  currentUrl,
215
599
  hasFilters,
216
600
  parseUrlFilters,
217
- applyFilters
601
+ applyFilters,
602
+ getFiltersAsFormat,
603
+ getCurrentFormat,
604
+ views,
605
+ activeViewId,
606
+ saveView,
607
+ loadView,
608
+ deleteView
218
609
  }), [
219
610
  shareUrl,
220
611
  getQueryParams,
@@ -224,7 +615,14 @@ export function useAGGridUrlSync(gridApi, options = {}) {
224
615
  currentUrl,
225
616
  hasFilters,
226
617
  parseUrlFilters,
227
- applyFilters
618
+ applyFilters,
619
+ getFiltersAsFormat,
620
+ getCurrentFormat,
621
+ views,
622
+ activeViewId,
623
+ saveView,
624
+ loadView,
625
+ deleteView
228
626
  ]);
229
627
  }
230
628
  //# 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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"}