react-virtual-renderer 1.0.5 → 1.0.7

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 (41) hide show
  1. package/README.md +56 -122
  2. package/dist/components/VirtualGrid.d.ts +2 -6
  3. package/dist/components/VirtualGrid.d.ts.map +1 -1
  4. package/dist/components/VirtualGrid.js +131 -143
  5. package/dist/components/VirtualGrid.js.map +1 -1
  6. package/dist/components/VirtualList.d.ts.map +1 -1
  7. package/dist/components/VirtualList.js +51 -29
  8. package/dist/components/VirtualList.js.map +1 -1
  9. package/dist/core/MeasurementSystem.d.ts +18 -24
  10. package/dist/core/MeasurementSystem.d.ts.map +1 -1
  11. package/dist/core/MeasurementSystem.js +100 -71
  12. package/dist/core/MeasurementSystem.js.map +1 -1
  13. package/dist/core/VirtualizationEngine.d.ts +9 -54
  14. package/dist/core/VirtualizationEngine.d.ts.map +1 -1
  15. package/dist/core/VirtualizationEngine.js +70 -153
  16. package/dist/core/VirtualizationEngine.js.map +1 -1
  17. package/dist/hooks/useInfiniteScroll.d.ts +28 -10
  18. package/dist/hooks/useInfiniteScroll.d.ts.map +1 -1
  19. package/dist/hooks/useInfiniteScroll.js +31 -14
  20. package/dist/hooks/useInfiniteScroll.js.map +1 -1
  21. package/dist/hooks/useLazyLoad.d.ts +32 -11
  22. package/dist/hooks/useLazyLoad.d.ts.map +1 -1
  23. package/dist/hooks/useLazyLoad.js +44 -21
  24. package/dist/hooks/useLazyLoad.js.map +1 -1
  25. package/dist/hooks/useScrollRestoration.d.ts +46 -5
  26. package/dist/hooks/useScrollRestoration.d.ts.map +1 -1
  27. package/dist/hooks/useScrollRestoration.js +138 -41
  28. package/dist/hooks/useScrollRestoration.js.map +1 -1
  29. package/dist/hooks/useVirtualList.js +1 -1
  30. package/dist/hooks/useVirtualList.js.map +1 -1
  31. package/dist/hooks/useVirtualizedSearch.d.ts +29 -29
  32. package/dist/hooks/useVirtualizedSearch.d.ts.map +1 -1
  33. package/dist/hooks/useVirtualizedSearch.js +63 -149
  34. package/dist/hooks/useVirtualizedSearch.js.map +1 -1
  35. package/dist/index.cjs.js +1 -1
  36. package/dist/index.cjs.js.map +1 -1
  37. package/dist/index.esm.js +1 -1
  38. package/dist/index.esm.js.map +1 -1
  39. package/dist/types.d.ts +28 -11
  40. package/dist/types.d.ts.map +1 -1
  41. package/package.json +5 -2
@@ -1,60 +1,157 @@
1
- import { useEffect, useRef, useCallback } from 'react';
2
- const SCROLL_POSITION_STORAGE_KEY = 'virtualize-scroll-positions';
1
+ import { useCallback, useEffect, useRef, } from 'react';
2
+ const DEFAULT_STORAGE_KEY = 'virtualize-scroll-positions';
3
3
  /**
4
- * Hook for restoring scroll position on navigation
5
- * Useful when navigating away and coming back to a list
4
+ * Shared cache across all hook instances.
6
5
  */
7
- export function useScrollRestoration(key, containerRef) {
8
- const positionMapRef = useRef(new Map());
9
- // Save scroll position to localStorage
6
+ const positionCache = new Map();
7
+ function isBrowser() {
8
+ return (typeof window !== 'undefined' &&
9
+ typeof document !== 'undefined');
10
+ }
11
+ export function useScrollRestoration(key, containerRef, { persist = true, storageKey = DEFAULT_STORAGE_KEY, storage, autoSave = false, maxEntries = 100, useRAF = true, enabled = true, onError, } = {}) {
12
+ const storageRef = useRef(storage ??
13
+ (isBrowser()
14
+ ? window.localStorage
15
+ : null));
16
+ /**
17
+ * Load cache once
18
+ */
19
+ useEffect(() => {
20
+ if (!enabled ||
21
+ !persist ||
22
+ !storageRef.current) {
23
+ return;
24
+ }
25
+ if (positionCache.size > 0)
26
+ return;
27
+ try {
28
+ const raw = storageRef.current.getItem(storageKey);
29
+ if (!raw)
30
+ return;
31
+ const positions = JSON.parse(raw);
32
+ positions.forEach((position) => {
33
+ positionCache.set(position.key, position);
34
+ });
35
+ }
36
+ catch (error) {
37
+ onError?.(error);
38
+ }
39
+ }, [
40
+ enabled,
41
+ persist,
42
+ storageKey,
43
+ onError,
44
+ ]);
45
+ const persistCache = useCallback(() => {
46
+ if (!persist ||
47
+ !storageRef.current) {
48
+ return;
49
+ }
50
+ try {
51
+ const positions = Array.from(positionCache.values())
52
+ .sort((a, b) => b.timestamp - a.timestamp)
53
+ .slice(0, maxEntries);
54
+ storageRef.current.setItem(storageKey, JSON.stringify(positions));
55
+ }
56
+ catch (error) {
57
+ onError?.(error);
58
+ }
59
+ }, [
60
+ persist,
61
+ storageKey,
62
+ maxEntries,
63
+ onError,
64
+ ]);
10
65
  const savePosition = useCallback(() => {
11
- if (!containerRef.current)
66
+ if (!enabled)
67
+ return;
68
+ const element = containerRef.current;
69
+ if (!element)
12
70
  return;
13
71
  const position = {
14
72
  key,
15
- offset: containerRef.current.scrollTop,
73
+ top: element.scrollTop,
74
+ left: element.scrollLeft,
16
75
  timestamp: Date.now(),
17
76
  };
18
- positionMapRef.current.set(key, position);
19
- // Persist to localStorage
20
- try {
21
- const positions = Array.from(positionMapRef.current.values());
22
- localStorage.setItem(SCROLL_POSITION_STORAGE_KEY, JSON.stringify(positions));
23
- }
24
- catch (e) {
25
- console.warn('Failed to save scroll position:', e);
26
- }
27
- }, [key, containerRef]);
28
- // Restore scroll position from localStorage
77
+ positionCache.set(key, position);
78
+ persistCache();
79
+ }, [
80
+ key,
81
+ containerRef,
82
+ enabled,
83
+ persistCache,
84
+ ]);
29
85
  const restorePosition = useCallback(() => {
30
- if (!containerRef.current)
86
+ if (!enabled)
31
87
  return;
32
- try {
33
- const stored = localStorage.getItem(SCROLL_POSITION_STORAGE_KEY);
34
- if (!stored)
88
+ const element = containerRef.current;
89
+ if (!element)
90
+ return;
91
+ const position = positionCache.get(key);
92
+ if (!position)
93
+ return;
94
+ const restore = () => {
95
+ if (!containerRef.current)
35
96
  return;
36
- const positions = JSON.parse(stored);
37
- const savedPosition = positions.find((p) => p.key === key);
38
- if (savedPosition) {
39
- // Restore with a small delay to ensure DOM is ready
40
- requestAnimationFrame(() => {
41
- if (containerRef.current) {
42
- containerRef.current.scrollTop = savedPosition.offset;
43
- }
44
- });
45
- }
46
- }
47
- catch (e) {
48
- console.warn('Failed to restore scroll position:', e);
49
- }
50
- }, [key, containerRef]);
51
- // Save on unmount, restore on mount
97
+ containerRef.current.scrollTop =
98
+ position.top;
99
+ containerRef.current.scrollLeft =
100
+ position.left;
101
+ };
102
+ if (useRAF) {
103
+ requestAnimationFrame(restore);
104
+ }
105
+ else {
106
+ restore();
107
+ }
108
+ }, [
109
+ key,
110
+ containerRef,
111
+ enabled,
112
+ useRAF,
113
+ ]);
114
+ /**
115
+ * Restore on mount.
116
+ */
52
117
  useEffect(() => {
118
+ if (!enabled)
119
+ return;
53
120
  restorePosition();
121
+ }, [enabled, restorePosition]);
122
+ /**
123
+ * Save on unmount.
124
+ */
125
+ useEffect(() => {
126
+ if (!enabled)
127
+ return;
54
128
  return () => {
55
129
  savePosition();
56
130
  };
57
- }, [restorePosition, savePosition]);
131
+ }, [enabled, savePosition]);
132
+ /**
133
+ * Optional auto-save mode.
134
+ */
135
+ useEffect(() => {
136
+ if (!enabled ||
137
+ !autoSave ||
138
+ !containerRef.current) {
139
+ return;
140
+ }
141
+ const element = containerRef.current;
142
+ const handleScroll = () => {
143
+ savePosition();
144
+ };
145
+ element.addEventListener('scroll', handleScroll, { passive: true });
146
+ return () => {
147
+ element.removeEventListener('scroll', handleScroll);
148
+ };
149
+ }, [
150
+ enabled,
151
+ autoSave,
152
+ savePosition,
153
+ containerRef,
154
+ ]);
58
155
  return {
59
156
  savePosition,
60
157
  restorePosition,
@@ -1 +1 @@
1
- {"version":3,"file":"useScrollRestoration.js","sourceRoot":"","sources":["../../src/hooks/useScrollRestoration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAQvD,MAAM,2BAA2B,GAAG,6BAA6B,CAAC;AAElE;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,GAAW,EAAE,YAA6C;IAC3F,MAAM,cAAc,GAAG,MAAM,CAA8B,IAAI,GAAG,EAAE,CAAC,CAAC;IAEtE,uCAAuC;IACvC,MAAM,YAAY,GAAG,WAAW,CAAC,GAAG,EAAE;QAClC,IAAI,CAAC,YAAY,CAAC,OAAO;YAAE,OAAO;QAElC,MAAM,QAAQ,GAAmB;YAC7B,GAAG;YACH,MAAM,EAAE,YAAY,CAAC,OAAO,CAAC,SAAS;YACtC,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACxB,CAAC;QAEF,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QAE1C,0BAA0B;QAC1B,IAAI,CAAC;YACD,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;YAC9D,YAAY,CAAC,OAAO,CAAC,2BAA2B,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC;QACjF,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACT,OAAO,CAAC,IAAI,CAAC,iCAAiC,EAAE,CAAC,CAAC,CAAC;QACvD,CAAC;IACL,CAAC,EAAE,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC;IAExB,4CAA4C;IAC5C,MAAM,eAAe,GAAG,WAAW,CAAC,GAAG,EAAE;QACrC,IAAI,CAAC,YAAY,CAAC,OAAO;YAAE,OAAO;QAElC,IAAI,CAAC;YACD,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC;YACjE,IAAI,CAAC,MAAM;gBAAE,OAAO;YAEpB,MAAM,SAAS,GAAqB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACvD,MAAM,aAAa,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;YAE3D,IAAI,aAAa,EAAE,CAAC;gBAChB,oDAAoD;gBACpD,qBAAqB,CAAC,GAAG,EAAE;oBACvB,IAAI,YAAY,CAAC,OAAO,EAAE,CAAC;wBACvB,YAAY,CAAC,OAAO,CAAC,SAAS,GAAG,aAAa,CAAC,MAAM,CAAC;oBAC1D,CAAC;gBACL,CAAC,CAAC,CAAC;YACP,CAAC;QACL,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACT,OAAO,CAAC,IAAI,CAAC,oCAAoC,EAAE,CAAC,CAAC,CAAC;QAC1D,CAAC;IACL,CAAC,EAAE,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC;IAExB,oCAAoC;IACpC,SAAS,CAAC,GAAG,EAAE;QACX,eAAe,EAAE,CAAC;QAElB,OAAO,GAAG,EAAE;YACR,YAAY,EAAE,CAAC;QACnB,CAAC,CAAC;IACN,CAAC,EAAE,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC,CAAC;IAEpC,OAAO;QACH,YAAY;QACZ,eAAe;KAClB,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"useScrollRestoration.js","sourceRoot":"","sources":["../../src/hooks/useScrollRestoration.ts"],"names":[],"mappings":"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"}
@@ -33,7 +33,7 @@ export function useVirtualList(params) {
33
33
  */
34
34
  useEffect(() => {
35
35
  const engine = engineRef.current;
36
- const visibleItems = engine.getVisibleItems(scrollOffset, containerHeight, items.length, overscan, scrollDirectionRef.current);
36
+ const visibleItems = engine.getVisibleItems(scrollOffset, containerHeight, items.length, overscan);
37
37
  const nextVirtualItems = visibleItems.map((item) => ({
38
38
  index: item.index,
39
39
  offset: item.offset,
@@ -1 +1 @@
1
- {"version":3,"file":"useVirtualList.js","sourceRoot":"","sources":["../../src/hooks/useVirtualList.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useVirtualList.js","sourceRoot":"","sources":["../../src/hooks/useVirtualList.ts"],"names":[],"mappings":"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"}
@@ -1,40 +1,40 @@
1
1
  import React from 'react';
2
- interface UseVirtualizedSearchParams<T> {
3
- items: T[];
2
+ export interface UseVirtualizedSearchParams<T> {
3
+ /**
4
+ * Source items.
5
+ */
6
+ items: readonly T[];
7
+ /**
8
+ * Search value.
9
+ */
4
10
  searchValue: string;
5
- searchFields: (keyof T)[];
6
- matchThreshold?: number;
11
+ /**
12
+ * Fields to search.
13
+ */
14
+ searchFields: readonly (keyof T)[];
15
+ /**
16
+ * Case-sensitive search.
17
+ * Default: false
18
+ */
7
19
  caseSensitive?: boolean;
8
- highlightColor?: string;
20
+ /**
21
+ * Enable deferred searching.
22
+ * Default: true
23
+ */
24
+ deferSearch?: boolean;
25
+ /**
26
+ * Optional custom matcher.
27
+ */
28
+ matcher?: (item: T, query: string) => boolean;
9
29
  }
10
- interface UseVirtualizedSearchReturn<T> {
30
+ export interface UseVirtualizedSearchReturn<T> {
11
31
  filteredItems: T[];
12
- highlightMatch: (text: string) => React.ReactNode;
13
32
  resultCount: number;
33
+ query: string;
14
34
  hasMatch: (item: T) => boolean;
15
35
  isSearching: boolean;
36
+ highlightMatch: (text: string) => React.ReactNode;
16
37
  }
17
- /**
18
- * Hook for efficient searching within virtualized lists
19
- * Filters items without re-measuring
20
- */
21
- export declare function useVirtualizedSearch<T>({ items, searchValue, searchFields, caseSensitive, highlightColor, }: UseVirtualizedSearchParams<T>): UseVirtualizedSearchReturn<T>;
38
+ export declare function useVirtualizedSearch<T>({ items, searchValue, searchFields, caseSensitive, deferSearch, matcher, }: UseVirtualizedSearchParams<T>): UseVirtualizedSearchReturn<T>;
22
39
  export default useVirtualizedSearch;
23
- interface UseVirtualizedSearchParams<T> {
24
- items: T[];
25
- searchValue: string;
26
- searchFields: (keyof T)[];
27
- caseSensitive?: boolean;
28
- }
29
- /**
30
- * Hook for efficient searching within virtualized lists
31
- * Returns filtered items and match detection
32
- * JSX rendering is handled in useVirtualizedSearch.tsx
33
- */
34
- export declare function virtualizedSearch<T>({ items, searchValue, searchFields, caseSensitive, }: UseVirtualizedSearchParams<T>): {
35
- filteredItems: T[];
36
- hasMatch: (item: T) => boolean;
37
- resultCount: number;
38
- query: string;
39
- };
40
40
  //# sourceMappingURL=useVirtualizedSearch.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useVirtualizedSearch.d.ts","sourceRoot":"","sources":["../../src/hooks/useVirtualizedSearch.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAiD,MAAM,OAAO,CAAC;AAEtE,UAAU,0BAA0B,CAAC,CAAC;IAClC,KAAK,EAAE,CAAC,EAAE,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,UAAU,0BAA0B,CAAC,CAAC;IAClC,aAAa,EAAE,CAAC,EAAE,CAAC;IACnB,cAAc,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,KAAK,CAAC,SAAS,CAAC;IAClD,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC;IAC/B,WAAW,EAAE,OAAO,CAAC;CACxB;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,EACpC,KAAK,EACL,WAAW,EACX,YAAY,EACZ,aAAqB,EACrB,cAA0B,GAC7B,EAAE,0BAA0B,CAAC,CAAC,CAAC,GAAG,0BAA0B,CAAC,CAAC,CAAC,CAuI/D;AAED,eAAe,oBAAoB,CAAC;AAEpC,UAAU,0BAA0B,CAAC,CAAC;IAClC,KAAK,EAAE,CAAC,EAAE,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;IAC1B,aAAa,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,EACjC,KAAK,EACL,WAAW,EACX,YAAY,EACZ,aAAqB,GACxB,EAAE,0BAA0B,CAAC,CAAC,CAAC;;qBA2BJ,CAAC,KAAG,OAAO;;;EA0BtC"}
1
+ {"version":3,"file":"useVirtualizedSearch.d.ts","sourceRoot":"","sources":["../../src/hooks/useVirtualizedSearch.tsx"],"names":[],"mappings":"AAAA,OAAO,KAIN,MAAM,OAAO,CAAC;AAEf,MAAM,WAAW,0BAA0B,CAAC,CAAC;IACzC;;OAEG;IACH,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC;IAEpB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,YAAY,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;IAEnC;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB;;OAEG;IACH,OAAO,CAAC,EAAE,CACN,IAAI,EAAE,CAAC,EACP,KAAK,EAAE,MAAM,KACZ,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,0BAA0B,CAAC,CAAC;IACzC,aAAa,EAAE,CAAC,EAAE,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC;IAC/B,WAAW,EAAE,OAAO,CAAC;IACrB,cAAc,EAAE,CACZ,IAAI,EAAE,MAAM,KACX,KAAK,CAAC,SAAS,CAAC;CACxB;AAoCD,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,EACpC,KAAK,EACL,WAAW,EACX,YAAY,EACZ,aAAqB,EACrB,WAAkB,EAClB,OAAO,GACV,EAAE,0BAA0B,CAAC,CAAC,CAAC,GAAG,0BAA0B,CAAC,CAAC,CAAC,CA+H/D;AAED,eAAe,oBAAoB,CAAC"}
@@ -1,168 +1,82 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
- import React, { useMemo, useCallback, useDeferredValue } from 'react';
3
- /**
4
- * Hook for efficient searching within virtualized lists
5
- * Filters items without re-measuring
6
- */
7
- export function useVirtualizedSearch({ items, searchValue, searchFields, caseSensitive = false, highlightColor = '#ffeb3b', }) {
8
- // FIX #1: Memoize the normalized query string
2
+ import React, { useMemo, useCallback, useDeferredValue, } from 'react';
3
+ function normalize(value, caseSensitive) {
4
+ return caseSensitive
5
+ ? value
6
+ : value.toLowerCase();
7
+ }
8
+ function defaultMatcher(item, query, searchFields, caseSensitive) {
9
+ return searchFields.some((field) => {
10
+ const value = item[field];
11
+ if (value === null ||
12
+ value === undefined) {
13
+ return false;
14
+ }
15
+ const normalizedValue = normalize(String(value).trim(), caseSensitive);
16
+ return normalizedValue.includes(query);
17
+ });
18
+ }
19
+ export function useVirtualizedSearch({ items, searchValue, searchFields, caseSensitive = false, deferSearch = true, matcher, }) {
9
20
  const normalizedQuery = useMemo(() => {
10
- const trimmed = searchValue.trim();
11
- return caseSensitive ? trimmed : trimmed.toLowerCase();
21
+ return normalize(searchValue.trim(), caseSensitive);
12
22
  }, [searchValue, caseSensitive]);
13
- // FIX #2: Memoize the regex pattern to avoid recompilation
14
- const queryPattern = useMemo(() => {
15
- if (!normalizedQuery)
16
- return null;
17
- try {
18
- const escaped = normalizedQuery.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
19
- return new RegExp(`(${escaped})`, caseSensitive ? 'g' : 'gi');
23
+ const deferredQuery = useDeferredValue(normalizedQuery);
24
+ const activeQuery = deferSearch
25
+ ? deferredQuery
26
+ : normalizedQuery;
27
+ const isSearching = deferSearch &&
28
+ deferredQuery !== normalizedQuery;
29
+ const itemMatcher = useCallback((item) => {
30
+ if (!activeQuery) {
31
+ return true;
20
32
  }
21
- catch (error) {
22
- console.warn('Invalid search pattern:', error);
23
- return null;
33
+ if (matcher) {
34
+ return matcher(item, activeQuery);
24
35
  }
25
- }, [normalizedQuery, caseSensitive]);
26
- // FIX #5: Use deferred value for non-blocking search
27
- const deferredQuery = useDeferredValue(normalizedQuery);
28
- const isSearching = deferredQuery !== normalizedQuery;
29
- // FIX #3 & #6: Improved filtering with proper error handling
36
+ return defaultMatcher(item, activeQuery, searchFields, caseSensitive);
37
+ }, [
38
+ activeQuery,
39
+ matcher,
40
+ searchFields,
41
+ caseSensitive,
42
+ ]);
30
43
  const filteredItems = useMemo(() => {
31
- if (!deferredQuery)
32
- return items;
33
- return items.filter((item) => {
34
- return searchFields.some((field) => {
35
- try {
36
- const value = item[field];
37
- if (value === null || value === undefined) {
38
- return false;
39
- }
40
- const stringValue = String(value).trim();
41
- if (!stringValue) {
42
- return false;
43
- }
44
- const normalizedValue = caseSensitive
45
- ? stringValue
46
- : stringValue.toLowerCase();
47
- return normalizedValue.includes(deferredQuery);
48
- }
49
- catch (error) {
50
- console.warn(`Error accessing field ${String(field)}:`, error);
51
- return false;
52
- }
53
- });
54
- });
55
- }, [items, deferredQuery, searchFields, caseSensitive]);
56
- // Helper function to check if item matches
57
- const hasMatch = useCallback((item) => {
58
- if (!deferredQuery)
59
- return true;
60
- return searchFields.some((field) => {
61
- try {
62
- const value = item[field];
63
- if (value === null || value === undefined)
64
- return false;
65
- const stringValue = String(value).trim();
66
- const normalizedValue = caseSensitive
67
- ? stringValue
68
- : stringValue.toLowerCase();
69
- return normalizedValue.includes(deferredQuery);
70
- }
71
- catch {
72
- return false;
73
- }
74
- });
75
- }, [deferredQuery, searchFields, caseSensitive]);
76
- // FIX #4 & #7: Improved highlighting with accessibility support
77
- const highlightMatch = useCallback((text) => {
78
- if (!normalizedQuery || !queryPattern)
79
- return text;
80
- if (!text)
44
+ if (!activeQuery) {
45
+ return [...items];
46
+ }
47
+ return items.filter(itemMatcher);
48
+ }, [
49
+ items,
50
+ activeQuery,
51
+ itemMatcher,
52
+ ]);
53
+ const hasMatch = useCallback((item) => itemMatcher(item), [itemMatcher]);
54
+ const highlightRegex = useMemo(() => {
55
+ if (!normalizedQuery) {
81
56
  return null;
82
- try {
83
- queryPattern.lastIndex = 0;
84
- const parts = String(text).split(queryPattern);
85
- return parts.map((part, index) => {
86
- // Even indices are non-matching parts
87
- if (index % 2 === 0) {
88
- return part ? (_jsx(React.Fragment, { children: part }, index)) : null;
89
- }
90
- // Odd indices are matching parts
91
- return (_jsx("mark", { style: {
92
- backgroundColor: highlightColor,
93
- padding: '0 2px',
94
- borderRadius: '2px',
95
- }, "aria-label": `Highlighted search result: ${part}`, children: part }, index));
96
- });
97
57
  }
98
- catch (error) {
99
- console.warn('Error highlighting match:', error);
58
+ const escaped = normalizedQuery.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
59
+ return new RegExp(`(${escaped})`, caseSensitive ? 'g' : 'gi');
60
+ }, [
61
+ normalizedQuery,
62
+ caseSensitive,
63
+ ]);
64
+ const highlightMatch = useCallback((text) => {
65
+ if (!text ||
66
+ !highlightRegex) {
100
67
  return text;
101
68
  }
102
- }, [normalizedQuery, queryPattern, highlightColor]);
69
+ const parts = text.split(highlightRegex);
70
+ return parts.map((part, index) => index % 2 === 1 ? (_jsx("mark", { children: part }, index)) : (_jsx(React.Fragment, { children: part }, index)));
71
+ }, [highlightRegex]);
103
72
  return {
104
73
  filteredItems,
105
- highlightMatch,
106
74
  resultCount: filteredItems.length,
75
+ query: activeQuery,
107
76
  hasMatch,
108
77
  isSearching,
78
+ highlightMatch,
109
79
  };
110
80
  }
111
81
  export default useVirtualizedSearch;
112
- /**
113
- * Hook for efficient searching within virtualized lists
114
- * Returns filtered items and match detection
115
- * JSX rendering is handled in useVirtualizedSearch.tsx
116
- */
117
- export function virtualizedSearch({ items, searchValue, searchFields, caseSensitive = false, }) {
118
- const normalizedQuery = searchValue.trim();
119
- const query = caseSensitive ? normalizedQuery : normalizedQuery.toLowerCase();
120
- const filteredItems = items.filter((item) => {
121
- if (!query)
122
- return true;
123
- return searchFields.some((field) => {
124
- try {
125
- const value = item[field];
126
- if (value === null || value === undefined)
127
- return false;
128
- const stringValue = String(value).trim();
129
- if (!stringValue)
130
- return false;
131
- const normalizedValue = caseSensitive
132
- ? stringValue
133
- : stringValue.toLowerCase();
134
- return normalizedValue.includes(query);
135
- }
136
- catch (error) {
137
- console.warn(`Error accessing field ${String(field)}:`, error);
138
- return false;
139
- }
140
- });
141
- });
142
- const hasMatch = (item) => {
143
- if (!query)
144
- return true;
145
- return searchFields.some((field) => {
146
- try {
147
- const value = item[field];
148
- if (value === null || value === undefined)
149
- return false;
150
- const stringValue = String(value).trim();
151
- const normalizedValue = caseSensitive
152
- ? stringValue
153
- : stringValue.toLowerCase();
154
- return normalizedValue.includes(query);
155
- }
156
- catch {
157
- return false;
158
- }
159
- });
160
- };
161
- return {
162
- filteredItems,
163
- hasMatch,
164
- resultCount: filteredItems.length,
165
- query,
166
- };
167
- }
168
82
  //# sourceMappingURL=useVirtualizedSearch.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useVirtualizedSearch.js","sourceRoot":"","sources":["../../src/hooks/useVirtualizedSearch.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useVirtualizedSearch.js","sourceRoot":"","sources":["../../src/hooks/useVirtualizedSearch.tsx"],"names":[],"mappings":"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"}