react-virtual-renderer 1.0.3

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 (80) hide show
  1. package/README.md +170 -0
  2. package/dist/App.d.ts +3 -0
  3. package/dist/App.d.ts.map +1 -0
  4. package/dist/App.js +7 -0
  5. package/dist/App.js.map +1 -0
  6. package/dist/accessibility/a11y.d.ts +111 -0
  7. package/dist/accessibility/a11y.d.ts.map +1 -0
  8. package/dist/accessibility/a11y.js +254 -0
  9. package/dist/accessibility/a11y.js.map +1 -0
  10. package/dist/components/VirtualGrid.d.ts +8 -0
  11. package/dist/components/VirtualGrid.d.ts.map +1 -0
  12. package/dist/components/VirtualGrid.js +187 -0
  13. package/dist/components/VirtualGrid.js.map +1 -0
  14. package/dist/components/VirtualList.d.ts +8 -0
  15. package/dist/components/VirtualList.d.ts.map +1 -0
  16. package/dist/components/VirtualList.js +102 -0
  17. package/dist/components/VirtualList.js.map +1 -0
  18. package/dist/core/MeasurementSystem.d.ts +52 -0
  19. package/dist/core/MeasurementSystem.d.ts.map +1 -0
  20. package/dist/core/MeasurementSystem.js +138 -0
  21. package/dist/core/MeasurementSystem.js.map +1 -0
  22. package/dist/core/VirtualizationEngine.d.ts +65 -0
  23. package/dist/core/VirtualizationEngine.d.ts.map +1 -0
  24. package/dist/core/VirtualizationEngine.js +203 -0
  25. package/dist/core/VirtualizationEngine.js.map +1 -0
  26. package/dist/examples/AdvancedExamples.d.ts +24 -0
  27. package/dist/examples/AdvancedExamples.d.ts.map +1 -0
  28. package/dist/examples/AdvancedExamples.js +216 -0
  29. package/dist/examples/AdvancedExamples.js.map +1 -0
  30. package/dist/examples/Example.d.ts +26 -0
  31. package/dist/examples/Example.d.ts.map +1 -0
  32. package/dist/examples/Example.js +186 -0
  33. package/dist/examples/Example.js.map +1 -0
  34. package/dist/hooks/useInfiniteScroll.d.ts +17 -0
  35. package/dist/hooks/useInfiniteScroll.d.ts.map +1 -0
  36. package/dist/hooks/useInfiniteScroll.js +41 -0
  37. package/dist/hooks/useInfiniteScroll.js.map +1 -0
  38. package/dist/hooks/useLazyLoad.d.ts +16 -0
  39. package/dist/hooks/useLazyLoad.d.ts.map +1 -0
  40. package/dist/hooks/useLazyLoad.js +34 -0
  41. package/dist/hooks/useLazyLoad.js.map +1 -0
  42. package/dist/hooks/useScrollRestoration.d.ts +10 -0
  43. package/dist/hooks/useScrollRestoration.d.ts.map +1 -0
  44. package/dist/hooks/useScrollRestoration.js +63 -0
  45. package/dist/hooks/useScrollRestoration.js.map +1 -0
  46. package/dist/hooks/useVirtualList.d.ts +33 -0
  47. package/dist/hooks/useVirtualList.d.ts.map +1 -0
  48. package/dist/hooks/useVirtualList.js +226 -0
  49. package/dist/hooks/useVirtualList.js.map +1 -0
  50. package/dist/hooks/useVirtualizedSearch.d.ts +40 -0
  51. package/dist/hooks/useVirtualizedSearch.d.ts.map +1 -0
  52. package/dist/hooks/useVirtualizedSearch.js +168 -0
  53. package/dist/hooks/useVirtualizedSearch.js.map +1 -0
  54. package/dist/index.d.ts +11 -0
  55. package/dist/index.d.ts.map +1 -0
  56. package/dist/index.esm.js +11 -0
  57. package/dist/index.esm.js.map +1 -0
  58. package/dist/index.js +11 -0
  59. package/dist/index.js.map +1 -0
  60. package/dist/main.d.ts +2 -0
  61. package/dist/main.d.ts.map +1 -0
  62. package/dist/main.js +6 -0
  63. package/dist/main.js.map +1 -0
  64. package/dist/performance/metrics.d.ts +110 -0
  65. package/dist/performance/metrics.d.ts.map +1 -0
  66. package/dist/performance/metrics.js +310 -0
  67. package/dist/performance/metrics.js.map +1 -0
  68. package/dist/plugin.d.ts +182 -0
  69. package/dist/plugin.d.ts.map +1 -0
  70. package/dist/plugin.js +409 -0
  71. package/dist/plugin.js.map +1 -0
  72. package/dist/types.d.ts +84 -0
  73. package/dist/types.d.ts.map +1 -0
  74. package/dist/types.js +2 -0
  75. package/dist/types.js.map +1 -0
  76. package/dist/utils/helpers.d.ts +66 -0
  77. package/dist/utils/helpers.d.ts.map +1 -0
  78. package/dist/utils/helpers.js +166 -0
  79. package/dist/utils/helpers.js.map +1 -0
  80. package/package.json +111 -0
@@ -0,0 +1,166 @@
1
+ /**
2
+ * Binary search to find the item at a given scroll offset
3
+ */
4
+ export function binarySearch(offsets, target, low = 0, high = offsets.length - 1) {
5
+ while (low <= high) {
6
+ const mid = Math.floor((low + high) / 2);
7
+ const offset = offsets[mid];
8
+ if (offset === target) {
9
+ return mid;
10
+ }
11
+ else if (offset < target) {
12
+ low = mid + 1;
13
+ }
14
+ else {
15
+ high = mid - 1;
16
+ }
17
+ }
18
+ return Math.max(0, high);
19
+ }
20
+ /**
21
+ * Calculate range with overscan
22
+ */
23
+ export function getOverscanRange(startIndex, endIndex, overscan, itemCount) {
24
+ return {
25
+ start: Math.max(0, startIndex - overscan),
26
+ end: Math.min(itemCount - 1, endIndex + overscan),
27
+ };
28
+ }
29
+ /**
30
+ * Debounce function
31
+ */
32
+ export function debounce(fn, delay) {
33
+ let timeoutId = null;
34
+ return (...args) => {
35
+ if (timeoutId) {
36
+ clearTimeout(timeoutId);
37
+ }
38
+ timeoutId = setTimeout(() => {
39
+ fn(...args);
40
+ timeoutId = null;
41
+ }, delay);
42
+ };
43
+ }
44
+ /**
45
+ * Throttle function
46
+ */
47
+ export function throttle(fn, delay) {
48
+ let lastCall = 0;
49
+ let timeoutId = null;
50
+ return (...args) => {
51
+ const now = Date.now();
52
+ if (now - lastCall >= delay) {
53
+ fn(...args);
54
+ lastCall = now;
55
+ }
56
+ else if (!timeoutId) {
57
+ timeoutId = setTimeout(() => {
58
+ fn(...args);
59
+ lastCall = Date.now();
60
+ timeoutId = null;
61
+ }, delay - (now - lastCall));
62
+ }
63
+ };
64
+ }
65
+ /**
66
+ * Request animation frame wrapper
67
+ */
68
+ export function requestAnimationFrameWithFallback(callback) {
69
+ if (typeof window !== 'undefined' && 'requestAnimationFrame' in window) {
70
+ return window.requestAnimationFrame(callback);
71
+ }
72
+ // Fallback for environments without RAF
73
+ return setTimeout(callback, 16);
74
+ }
75
+ /**
76
+ * Cancel animation frame with fallback
77
+ */
78
+ export function cancelAnimationFrameWithFallback(id) {
79
+ if (typeof window !== 'undefined' && 'cancelAnimationFrame' in window) {
80
+ window.cancelAnimationFrame(id);
81
+ }
82
+ else {
83
+ clearTimeout(id);
84
+ }
85
+ }
86
+ /**
87
+ * Check if an element is visible in viewport
88
+ */
89
+ export function isElementInViewport(element, container) {
90
+ const elementRect = element.getBoundingClientRect();
91
+ const containerRect = container.getBoundingClientRect();
92
+ return (elementRect.top >= containerRect.top &&
93
+ elementRect.left >= containerRect.left &&
94
+ elementRect.bottom <= containerRect.bottom &&
95
+ elementRect.right <= containerRect.right);
96
+ }
97
+ /**
98
+ * Get scroll velocity
99
+ */
100
+ export function calculateScrollVelocity(currentOffset, previousOffset, deltaTime) {
101
+ if (deltaTime === 0)
102
+ return 0;
103
+ return Math.abs(currentOffset - previousOffset) / deltaTime;
104
+ }
105
+ /**
106
+ * Clamp a value between min and max
107
+ */
108
+ export function clamp(value, min, max) {
109
+ return Math.max(min, Math.min(max, value));
110
+ }
111
+ /**
112
+ * Check if ResizeObserver is supported
113
+ */
114
+ export function isResizeObserverSupported() {
115
+ return typeof window !== 'undefined' && 'ResizeObserver' in window;
116
+ }
117
+ /**
118
+ * Check if IntersectionObserver is supported
119
+ */
120
+ export function isIntersectionObserverSupported() {
121
+ return typeof window !== 'undefined' && 'IntersectionObserver' in window;
122
+ }
123
+ /**
124
+ * Smooth scroll to position
125
+ */
126
+ export function smoothScroll(element, targetScroll, duration = 300) {
127
+ return new Promise((resolve) => {
128
+ const startScroll = element.scrollTop;
129
+ const distance = targetScroll - startScroll;
130
+ const startTime = performance.now();
131
+ const easeInOutQuad = (t) => {
132
+ return t < 0.5 ? 2 * t * t : -1 + (4 - 2 * t) * t;
133
+ };
134
+ const scroll = (currentTime) => {
135
+ const elapsed = currentTime - startTime;
136
+ const progress = Math.min(elapsed / duration, 1);
137
+ const easeProgress = easeInOutQuad(progress);
138
+ element.scrollTop = startScroll + distance * easeProgress;
139
+ if (progress < 1) {
140
+ requestAnimationFrameWithFallback(scroll);
141
+ }
142
+ else {
143
+ resolve();
144
+ }
145
+ };
146
+ requestAnimationFrameWithFallback(scroll);
147
+ });
148
+ }
149
+ /**
150
+ * Create a unique key from index and item
151
+ */
152
+ export function createItemKey(index, item, keyGetter) {
153
+ if (keyGetter) {
154
+ return keyGetter(index, item);
155
+ }
156
+ return index;
157
+ }
158
+ /**
159
+ * Log virtualization stats (for debugging)
160
+ */
161
+ export function logVirtualizationStats(stats) {
162
+ if (typeof process !== 'undefined' && process.env.DEBUG_VIRTUALIZE) {
163
+ console.log(`[Virtualize] Items: ${stats.itemCount}, Visible: ${stats.visibleCount}, Rendered: ${stats.renderedCount}, Offset: ${stats.scrollOffset}/${stats.totalSize}`);
164
+ }
165
+ }
166
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/utils/helpers.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,111 @@
1
+ {
2
+ "name": "react-virtual-renderer",
3
+ "version": "1.0.3",
4
+ "description": "High-performance React virtualization library with dynamic sizing, bidirectional scrolling, and accessibility",
5
+ "author": "Rishabh Agarwal",
6
+ "license": "MIT",
7
+ "type": "module",
8
+ "sideEffects": false,
9
+ "main": "./dist/index.cjs",
10
+ "module": "./dist/index.esm.js",
11
+ "types": "./dist/index.d.ts",
12
+ "exports": {
13
+ ".": {
14
+ "types": "./dist/index.d.ts",
15
+ "import": "./dist/index.esm.js",
16
+ "require": "./dist/index.cjs"
17
+ },
18
+ "./performance": {
19
+ "types": "./dist/performance/metrics.d.ts",
20
+ "import": "./dist/performance/metrics.js"
21
+ },
22
+ "./accessibility": {
23
+ "types": "./dist/accessibility/a11y.d.ts",
24
+ "import": "./dist/accessibility/a11y.js"
25
+ }
26
+ },
27
+ "files": [
28
+ "dist",
29
+ "README.md",
30
+ "LICENSE"
31
+ ],
32
+ "engines": {
33
+ "node": ">=18"
34
+ },
35
+ "scripts": {
36
+ "build": "tsc && rollup -c",
37
+ "clean": "rm -rf dist",
38
+ "lint": "eslint src --ext .ts,.tsx",
39
+ "prepare": "npm run build",
40
+ "prepublishOnly": "npm run build"
41
+ },
42
+ "keywords": [
43
+ "react",
44
+ "react-virtual-renderer",
45
+ "react-virtualized",
46
+ "react-window",
47
+ "react-windowing",
48
+ "react-virtual-list",
49
+ "react-scroller",
50
+ "react-infinite-scroll",
51
+ "react-lazy-render",
52
+ "react-performance",
53
+ "virtualization",
54
+ "virtual-scroll",
55
+ "virtual-list",
56
+ "virtual-rendering",
57
+ "windowing",
58
+ "list-windowing",
59
+ "dom-windowing",
60
+ "infinite-scroll",
61
+ "lazy-loading",
62
+ "lazy-rendering",
63
+ "intersection-observer",
64
+ "large-list",
65
+ "large-dataset",
66
+ "big-data-ui",
67
+ "high-performance",
68
+ "dynamic-height",
69
+ "dynamic-sizing",
70
+ "variable-height",
71
+ "variable-size",
72
+ "grid",
73
+ "virtual-grid",
74
+ "masonry",
75
+ "masonry-layout",
76
+ "accessibility",
77
+ "a11y",
78
+ "wcag",
79
+ "aria",
80
+ "typescript",
81
+ "frontend",
82
+ "ui-performance"
83
+ ],
84
+ "repository": {
85
+ "type": "git",
86
+ "url": "git+https://github.com/rishabh-agarwal-business/virtualize.git"
87
+ },
88
+ "bugs": {
89
+ "url": "https://github.com/rishabh-agarwal-business/virtualize/issues"
90
+ },
91
+ "homepage": "https://github.com/rishabh-agarwal-business/virtualize#readme",
92
+ "peerDependencies": {
93
+ "react": "^18.0.0 || ^19.0.0",
94
+ "react-dom": "^18.0.0 || ^19.0.0"
95
+ },
96
+ "devDependencies": {
97
+ "@rollup/plugin-commonjs": "^29.0.3",
98
+ "@rollup/plugin-node-resolve": "^16.0.3",
99
+ "@rollup/plugin-terser": "^0.4.4",
100
+ "@rollup/plugin-typescript": "^12.3.0",
101
+ "@testing-library/react": "^13.0.0",
102
+ "@types/node": "^25.9.1",
103
+ "@types/react": "^18.3.0",
104
+ "@types/react-dom": "^18.3.0",
105
+ "jest": "^29.0.0",
106
+ "react": "^18.3.1",
107
+ "react-dom": "^18.3.1",
108
+ "rollup": "^4.50.0",
109
+ "typescript": "^5.9.2"
110
+ }
111
+ }