react-virtual-renderer 1.1.1 → 1.1.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.
@@ -1 +1 @@
1
- {"version":3,"file":"VirtualGrid.d.ts","sourceRoot":"","sources":["../../src/components/VirtualGrid.tsx"],"names":[],"mappings":"AAAA,OAAO,KAQN,MAAM,OAAO,CAAC;AAEf,OAAO,EAAE,gBAAgB,EAAiC,MAAM,UAAU,CAAC;AAE3E,eAAO,MAAM,WAAW,8FAgTvB,CAAC"}
1
+ {"version":3,"file":"VirtualGrid.d.ts","sourceRoot":"","sources":["../../src/components/VirtualGrid.tsx"],"names":[],"mappings":"AAAA,OAAO,KAQN,MAAM,OAAO,CAAC;AAEf,OAAO,EAAE,gBAAgB,EAAiC,MAAM,UAAU,CAAC;AAE3E,eAAO,MAAM,WAAW,8FAqTvB,CAAC"}
@@ -42,18 +42,19 @@ export const VirtualGrid = forwardRef(({ items, renderItem, itemKey, height = 60
42
42
  }
43
43
  return Math.max(1, Number(columnCount));
44
44
  }, [columnCount, containerWidth, gap]);
45
- // ✅ FIX 5: Proper column width calculation
46
45
  const colWidth = useMemo(() => {
47
46
  if (typeof columnWidth === "number") {
48
47
  return columnWidth;
49
48
  }
50
- if (columnWidth && typeof columnWidth === "function") {
51
- return columnWidth(0);
52
- }
53
- // Calculate: (containerWidth - totalGaps) / numberOfColumns
54
49
  const totalGapWidth = gap * Math.max(0, cols - 1);
55
- return Math.max(50, (containerWidth - totalGapWidth) / cols);
56
- }, [columnWidth, containerWidth, cols, gap]);
50
+ return Math.max(0, (containerWidth - totalGapWidth) /
51
+ cols);
52
+ }, [
53
+ containerWidth,
54
+ cols,
55
+ gap,
56
+ columnWidth,
57
+ ]);
57
58
  // ✅ FIX 6: Improved position calculation for masonry AND grid
58
59
  const positions = useMemo(() => {
59
60
  if (!isReady)
@@ -163,8 +164,8 @@ export const VirtualGrid = forwardRef(({ items, renderItem, itemKey, height = 60
163
164
  };
164
165
  const innerStyleComputed = {
165
166
  position: "relative",
166
- height: totalHeight || 1, // Ensure minimum height
167
- width: Math.max(0, cols * colWidth + (cols - 1) * gap),
167
+ height: totalHeight || 1,
168
+ width: "100%",
168
169
  ...innerStyle,
169
170
  };
170
171
  // ✅ FIX 12: Complete render logic
@@ -1 +1 @@
1
- {"version":3,"file":"VirtualGrid.js","sourceRoot":"","sources":["../../src/components/VirtualGrid.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"VirtualGrid.js","sourceRoot":"","sources":["../../src/components/VirtualGrid.tsx"],"names":[],"mappings":"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"}
@@ -1,19 +1,54 @@
1
1
  export declare class MeasurementSystem {
2
2
  private resizeObserver;
3
3
  private measurements;
4
+ /**
5
+ * NEW (additive): separate cache for width measurements, used
6
+ * only when an element is observed in 'horizontal' axis mode.
7
+ * Existing height-only consumers never populate or read this.
8
+ */
9
+ private widthMeasurements;
4
10
  private observedElements;
11
+ /**
12
+ * NEW (additive): tracks which axis each observed element
13
+ * should report on. Defaults to 'height' to preserve existing
14
+ * behavior for every caller that doesn't pass an axis.
15
+ */
16
+ private observedAxis;
5
17
  private pendingUpdates;
18
+ /**
19
+ * NEW (additive): pending width updates, flushed alongside
20
+ * height updates on the same RAF batch.
21
+ */
22
+ private pendingWidthUpdates;
6
23
  private rafId;
7
24
  private onMeasure;
25
+ /**
26
+ * NEW (additive): optional width callback. If not provided,
27
+ * width measurements are still tracked internally (available
28
+ * via getWidthMeasurement) but no callback fires - existing
29
+ * callers that only pass onMeasure are unaffected.
30
+ */
31
+ private onMeasureWidth;
8
32
  constructor();
9
33
  /**
10
- * Start measuring container
34
+ * Start measuring container.
35
+ *
36
+ * `onMeasureWidth` is optional and additive: existing callers
37
+ * that only pass `onMeasure` keep working exactly as before
38
+ * (height-only). Pass `onMeasureWidth` to also receive width
39
+ * updates for elements observed in 'width' axis mode.
11
40
  */
12
- startMeasuring(container: HTMLElement, onMeasure: (index: number, size: number) => void): void;
41
+ startMeasuring(container: HTMLElement, onMeasure: (index: number, size: number) => void, onMeasureWidth?: (index: number, size: number) => void): void;
13
42
  /**
14
- * Observe item
43
+ * Observe item.
44
+ *
45
+ * `axis` is optional and additive, defaulting to 'height' so
46
+ * every existing call site (which never passes a third arg)
47
+ * behaves exactly as before. Pass axis='width' for elements in
48
+ * a horizontal-scrolling list so contentRect.width is measured
49
+ * instead of contentRect.height.
15
50
  */
16
- observeItem(index: number, element: HTMLElement): void;
51
+ observeItem(index: number, element: HTMLElement, axis?: 'height' | 'width'): void;
17
52
  /**
18
53
  * Unobserve item
19
54
  */
@@ -27,15 +62,28 @@ export declare class MeasurementSystem {
27
62
  */
28
63
  private flushPendingUpdates;
29
64
  /**
30
- * Fallback measurement
65
+ * Fallback measurement.
66
+ *
67
+ * `axis` is optional and additive, defaulting to 'height' to
68
+ * preserve existing behavior for all current call sites.
31
69
  */
32
- syncMeasure(index: number, element: HTMLElement): void;
70
+ syncMeasure(index: number, element: HTMLElement, axis?: 'height' | 'width'): void;
33
71
  /**
34
72
  * Preserve measurements
35
73
  */
36
74
  stopMeasuring(): void;
37
75
  getMeasurement(index: number): number | undefined;
76
+ /**
77
+ * NEW (additive): mirrors getMeasurement() but for the width
78
+ * cache. Returns undefined for any index never observed in
79
+ * 'width' axis mode.
80
+ */
81
+ getWidthMeasurement(index: number): number | undefined;
38
82
  getAllMeasurements(): Map<number, number>;
83
+ /**
84
+ * NEW (additive): mirrors getAllMeasurements() for widths.
85
+ */
86
+ getAllWidthMeasurements(): Map<number, number>;
39
87
  clearPending(): void;
40
88
  /**
41
89
  * Explicit cache clear
@@ -1 +1 @@
1
- {"version":3,"file":"MeasurementSystem.d.ts","sourceRoot":"","sources":["../../src/core/MeasurementSystem.ts"],"names":[],"mappings":"AAAA,qBAAa,iBAAiB;IAC1B,OAAO,CAAC,cAAc,CAA+B;IAErD,OAAO,CAAC,YAAY,CAA6B;IAEjD,OAAO,CAAC,gBAAgB,CACe;IAEvC,OAAO,CAAC,cAAc,CACQ;IAE9B,OAAO,CAAC,KAAK,CAAuB;IAEpC,OAAO,CAAC,SAAS,CAEC;;IAclB;;OAEG;IACH,cAAc,CACV,SAAS,EAAE,WAAW,EACtB,SAAS,EAAE,CACP,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,KACX,IAAI,GACV,IAAI;IA4BP;;OAEG;IACH,WAAW,CACP,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,WAAW,GACrB,IAAI;IAmBP;;OAEG;IACH,aAAa,CACT,OAAO,EAAE,WAAW,GACrB,IAAI;IAUP;;OAEG;IACH,OAAO,CAAC,YAAY,CAwClB;IAEF;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAsB3B;;OAEG;IACH,WAAW,CACP,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,WAAW,GACrB,IAAI;IA+BP;;OAEG;IACH,aAAa,IAAI,IAAI;IAYrB,cAAc,CACV,KAAK,EAAE,MAAM,GACd,MAAM,GAAG,SAAS;IAMrB,kBAAkB,IAAI,GAAG,CACrB,MAAM,EACN,MAAM,CACT;IAMD,YAAY,IAAI,IAAI;IAIpB;;OAEG;IACH,iBAAiB,IAAI,IAAI;IAIzB,OAAO,IAAI,IAAI;CAWlB"}
1
+ {"version":3,"file":"MeasurementSystem.d.ts","sourceRoot":"","sources":["../../src/core/MeasurementSystem.ts"],"names":[],"mappings":"AAAA,qBAAa,iBAAiB;IAC1B,OAAO,CAAC,cAAc,CAA+B;IAErD,OAAO,CAAC,YAAY,CAA6B;IAEjD;;;;OAIG;IACH,OAAO,CAAC,iBAAiB,CAA6B;IAEtD,OAAO,CAAC,gBAAgB,CACe;IAEvC;;;;OAIG;IACH,OAAO,CAAC,YAAY,CAC+B;IAEnD,OAAO,CAAC,cAAc,CACQ;IAE9B;;;OAGG;IACH,OAAO,CAAC,mBAAmB,CACG;IAE9B,OAAO,CAAC,KAAK,CAAuB;IAEpC,OAAO,CAAC,SAAS,CAEC;IAElB;;;;;OAKG;IACH,OAAO,CAAC,cAAc,CAEJ;;IAclB;;;;;;;OAOG;IACH,cAAc,CACV,SAAS,EAAE,WAAW,EACtB,SAAS,EAAE,CACP,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,KACX,IAAI,EACT,cAAc,CAAC,EAAE,CACb,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,KACX,IAAI,GACV,IAAI;IA6BP;;;;;;;;OAQG;IACH,WAAW,CACP,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,WAAW,EACpB,IAAI,GAAE,QAAQ,GAAG,OAAkB,GACpC,IAAI;IAsBP;;OAEG;IACH,aAAa,CACT,OAAO,EAAE,WAAW,GACrB,IAAI;IAYP;;OAEG;IACH,OAAO,CAAC,YAAY,CAkElB;IAEF;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAiC3B;;;;;OAKG;IACH,WAAW,CACP,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,WAAW,EACpB,IAAI,GAAE,QAAQ,GAAG,OAAkB,GACpC,IAAI;IAwCP;;OAEG;IACH,aAAa,IAAI,IAAI;IAarB,cAAc,CACV,KAAK,EAAE,MAAM,GACd,MAAM,GAAG,SAAS;IAMrB;;;;OAIG;IACH,mBAAmB,CACf,KAAK,EAAE,MAAM,GACd,MAAM,GAAG,SAAS;IAIrB,kBAAkB,IAAI,GAAG,CACrB,MAAM,EACN,MAAM,CACT;IAMD;;OAEG;IACH,uBAAuB,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;IAI9C,YAAY,IAAI,IAAI;IAKpB;;OAEG;IACH,iBAAiB,IAAI,IAAI;IAKzB,OAAO,IAAI,IAAI;CAgBlB"}
@@ -12,18 +12,50 @@ export class MeasurementSystem {
12
12
  writable: true,
13
13
  value: new Map()
14
14
  });
15
+ /**
16
+ * NEW (additive): separate cache for width measurements, used
17
+ * only when an element is observed in 'horizontal' axis mode.
18
+ * Existing height-only consumers never populate or read this.
19
+ */
20
+ Object.defineProperty(this, "widthMeasurements", {
21
+ enumerable: true,
22
+ configurable: true,
23
+ writable: true,
24
+ value: new Map()
25
+ });
15
26
  Object.defineProperty(this, "observedElements", {
16
27
  enumerable: true,
17
28
  configurable: true,
18
29
  writable: true,
19
30
  value: new WeakMap()
20
31
  });
32
+ /**
33
+ * NEW (additive): tracks which axis each observed element
34
+ * should report on. Defaults to 'height' to preserve existing
35
+ * behavior for every caller that doesn't pass an axis.
36
+ */
37
+ Object.defineProperty(this, "observedAxis", {
38
+ enumerable: true,
39
+ configurable: true,
40
+ writable: true,
41
+ value: new WeakMap()
42
+ });
21
43
  Object.defineProperty(this, "pendingUpdates", {
22
44
  enumerable: true,
23
45
  configurable: true,
24
46
  writable: true,
25
47
  value: new Map()
26
48
  });
49
+ /**
50
+ * NEW (additive): pending width updates, flushed alongside
51
+ * height updates on the same RAF batch.
52
+ */
53
+ Object.defineProperty(this, "pendingWidthUpdates", {
54
+ enumerable: true,
55
+ configurable: true,
56
+ writable: true,
57
+ value: new Map()
58
+ });
27
59
  Object.defineProperty(this, "rafId", {
28
60
  enumerable: true,
29
61
  configurable: true,
@@ -36,6 +68,18 @@ export class MeasurementSystem {
36
68
  writable: true,
37
69
  value: null
38
70
  });
71
+ /**
72
+ * NEW (additive): optional width callback. If not provided,
73
+ * width measurements are still tracked internally (available
74
+ * via getWidthMeasurement) but no callback fires - existing
75
+ * callers that only pass onMeasure are unaffected.
76
+ */
77
+ Object.defineProperty(this, "onMeasureWidth", {
78
+ enumerable: true,
79
+ configurable: true,
80
+ writable: true,
81
+ value: null
82
+ });
39
83
  /**
40
84
  * ResizeObserver callback
41
85
  */
@@ -50,6 +94,16 @@ export class MeasurementSystem {
50
94
  if (index === undefined) {
51
95
  continue;
52
96
  }
97
+ const axis = this.observedAxis.get(element) ?? 'height';
98
+ if (axis === 'width') {
99
+ const widthSize = Math.round(entry.contentRect.width);
100
+ if (this.widthMeasurements.get(index) !==
101
+ widthSize) {
102
+ this.widthMeasurements.set(index, widthSize);
103
+ this.pendingWidthUpdates.set(index, widthSize);
104
+ }
105
+ continue;
106
+ }
53
107
  const size = Math.round(entry.contentRect.height);
54
108
  if (this.measurements.get(index) === size) {
55
109
  continue;
@@ -67,10 +121,16 @@ export class MeasurementSystem {
67
121
  }
68
122
  }
69
123
  /**
70
- * Start measuring container
124
+ * Start measuring container.
125
+ *
126
+ * `onMeasureWidth` is optional and additive: existing callers
127
+ * that only pass `onMeasure` keep working exactly as before
128
+ * (height-only). Pass `onMeasureWidth` to also receive width
129
+ * updates for elements observed in 'width' axis mode.
71
130
  */
72
- startMeasuring(container, onMeasure) {
131
+ startMeasuring(container, onMeasure, onMeasureWidth) {
73
132
  this.onMeasure = onMeasure;
133
+ this.onMeasureWidth = onMeasureWidth ?? null;
74
134
  const items = container.querySelectorAll('[data-virtualize-index]');
75
135
  items.forEach((item) => {
76
136
  const indexAttr = item.dataset.virtualizeIndex;
@@ -82,14 +142,21 @@ export class MeasurementSystem {
82
142
  });
83
143
  }
84
144
  /**
85
- * Observe item
145
+ * Observe item.
146
+ *
147
+ * `axis` is optional and additive, defaulting to 'height' so
148
+ * every existing call site (which never passes a third arg)
149
+ * behaves exactly as before. Pass axis='width' for elements in
150
+ * a horizontal-scrolling list so contentRect.width is measured
151
+ * instead of contentRect.height.
86
152
  */
87
- observeItem(index, element) {
153
+ observeItem(index, element, axis = 'height') {
88
154
  element.dataset.virtualizeIndex =
89
155
  String(index);
90
156
  this.observedElements.set(element, index);
157
+ this.observedAxis.set(element, axis);
91
158
  this.resizeObserver?.observe(element);
92
- this.syncMeasure(index, element);
159
+ this.syncMeasure(index, element, axis);
93
160
  }
94
161
  /**
95
162
  * Unobserve item
@@ -97,6 +164,7 @@ export class MeasurementSystem {
97
164
  unobserveItem(element) {
98
165
  this.resizeObserver?.unobserve(element);
99
166
  this.observedElements.delete(element);
167
+ this.observedAxis.delete(element);
100
168
  }
101
169
  /**
102
170
  * Batch updates using RAF
@@ -111,19 +179,34 @@ export class MeasurementSystem {
111
179
  this.onMeasure?.(index, size);
112
180
  });
113
181
  this.pendingUpdates.clear();
182
+ this.pendingWidthUpdates.forEach((size, index) => {
183
+ this.onMeasureWidth?.(index, size);
184
+ });
185
+ this.pendingWidthUpdates.clear();
114
186
  this.rafId = null;
115
187
  });
116
188
  }
117
189
  /**
118
- * Fallback measurement
190
+ * Fallback measurement.
191
+ *
192
+ * `axis` is optional and additive, defaulting to 'height' to
193
+ * preserve existing behavior for all current call sites.
119
194
  */
120
- syncMeasure(index, element) {
121
- const size = element.getBoundingClientRect()
122
- .height;
195
+ syncMeasure(index, element, axis = 'height') {
196
+ const rect = element.getBoundingClientRect();
197
+ const size = axis === 'width' ? rect.width : rect.height;
123
198
  if (size <= 0) {
124
199
  return;
125
200
  }
126
201
  const rounded = Math.round(size);
202
+ if (axis === 'width') {
203
+ if (this.widthMeasurements.get(index) === rounded) {
204
+ return;
205
+ }
206
+ this.widthMeasurements.set(index, rounded);
207
+ this.onMeasureWidth?.(index, rounded);
208
+ return;
209
+ }
127
210
  if (this.measurements.get(index) === rounded) {
128
211
  return;
129
212
  }
@@ -136,6 +219,7 @@ export class MeasurementSystem {
136
219
  stopMeasuring() {
137
220
  this.resizeObserver?.disconnect();
138
221
  this.pendingUpdates.clear();
222
+ this.pendingWidthUpdates.clear();
139
223
  if (this.rafId !== null) {
140
224
  cancelAnimationFrame(this.rafId);
141
225
  }
@@ -143,25 +227,45 @@ export class MeasurementSystem {
143
227
  getMeasurement(index) {
144
228
  return this.measurements.get(index);
145
229
  }
230
+ /**
231
+ * NEW (additive): mirrors getMeasurement() but for the width
232
+ * cache. Returns undefined for any index never observed in
233
+ * 'width' axis mode.
234
+ */
235
+ getWidthMeasurement(index) {
236
+ return this.widthMeasurements.get(index);
237
+ }
146
238
  getAllMeasurements() {
147
239
  return new Map(this.measurements);
148
240
  }
241
+ /**
242
+ * NEW (additive): mirrors getAllMeasurements() for widths.
243
+ */
244
+ getAllWidthMeasurements() {
245
+ return new Map(this.widthMeasurements);
246
+ }
149
247
  clearPending() {
150
248
  this.pendingUpdates.clear();
249
+ this.pendingWidthUpdates.clear();
151
250
  }
152
251
  /**
153
252
  * Explicit cache clear
154
253
  */
155
254
  clearMeasurements() {
156
255
  this.measurements.clear();
256
+ this.widthMeasurements.clear();
157
257
  }
158
258
  destroy() {
159
259
  this.stopMeasuring();
160
260
  this.measurements.clear();
161
261
  this.pendingUpdates.clear();
262
+ this.widthMeasurements.clear();
263
+ this.pendingWidthUpdates.clear();
162
264
  this.observedElements =
163
265
  new WeakMap();
266
+ this.observedAxis = new WeakMap();
164
267
  this.onMeasure = null;
268
+ this.onMeasureWidth = null;
165
269
  }
166
270
  }
167
271
  //# sourceMappingURL=MeasurementSystem.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MeasurementSystem.js","sourceRoot":"","sources":["../../src/core/MeasurementSystem.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MeasurementSystem.js","sourceRoot":"","sources":["../../src/core/MeasurementSystem.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,iBAAiB;IAiD1B;QAhDQ;;;;mBAAwC,IAAI;WAAC;QAE7C;;;;mBAAe,IAAI,GAAG,EAAkB;WAAC;QAEjD;;;;WAIG;QACK;;;;mBAAoB,IAAI,GAAG,EAAkB;WAAC;QAE9C;;;;mBACJ,IAAI,OAAO,EAAuB;WAAC;QAEvC;;;;WAIG;QACK;;;;mBACJ,IAAI,OAAO,EAAmC;WAAC;QAE3C;;;;mBACJ,IAAI,GAAG,EAAkB;WAAC;QAE9B;;;WAGG;QACK;;;;mBACJ,IAAI,GAAG,EAAkB;WAAC;QAEtB;;;;mBAAuB,IAAI;WAAC;QAE5B;;;;mBAEK,IAAI;WAAC;QAElB;;;;;WAKG;QACK;;;;mBAEK,IAAI;WAAC;QAiHlB;;WAEG;QACK;;;;mBAAe,CACnB,OAA8B,EAC1B,EAAE;gBACN,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;oBAC1B,MAAM,OAAO,GACT,KAAK,CAAC,MAAqB,CAAC;oBAEhC,MAAM,KAAK,GACP,IAAI,CAAC,gBAAgB,CAAC,GAAG,CACrB,OAAO,CACV,CAAC;oBAEN,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;wBACtB,SAAS;oBACb,CAAC;oBAED,MAAM,IAAI,GACN,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,QAAQ,CAAC;oBAE/C,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;wBACnB,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CACxB,KAAK,CAAC,WAAW,CAAC,KAAK,CAC1B,CAAC;wBAEF,IACI,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC;4BACjC,SAAS,EACX,CAAC;4BACC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CACtB,KAAK,EACL,SAAS,CACZ,CAAC;4BAEF,IAAI,CAAC,mBAAmB,CAAC,GAAG,CACxB,KAAK,EACL,SAAS,CACZ,CAAC;wBACN,CAAC;wBAED,SAAS;oBACb,CAAC;oBAED,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CACnB,KAAK,CAAC,WAAW,CAAC,MAAM,CAC3B,CAAC;oBAEF,IACI,IAAI,CAAC,YAAY,CAAC,GAAG,CACjB,KAAK,CACR,KAAK,IAAI,EACZ,CAAC;wBACC,SAAS;oBACb,CAAC;oBAED,IAAI,CAAC,YAAY,CAAC,GAAG,CACjB,KAAK,EACL,IAAI,CACP,CAAC;oBAEF,IAAI,CAAC,cAAc,CAAC,GAAG,CACnB,KAAK,EACL,IAAI,CACP,CAAC;gBACN,CAAC;gBAED,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC/B,CAAC;WAAC;QAnLE,IACI,OAAO,MAAM,KAAK,WAAW;YAC7B,gBAAgB,IAAI,MAAM,EAC5B,CAAC;YACC,IAAI,CAAC,cAAc;gBACf,IAAI,cAAc,CACd,IAAI,CAAC,YAAY,CACpB,CAAC;QACV,CAAC;IACL,CAAC;IAED;;;;;;;OAOG;IACH,cAAc,CACV,SAAsB,EACtB,SAGS,EACT,cAGS;QAET,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,cAAc,GAAG,cAAc,IAAI,IAAI,CAAC;QAE7C,MAAM,KAAK,GACP,SAAS,CAAC,gBAAgB,CACtB,yBAAyB,CAC5B,CAAC;QAEN,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YACnB,MAAM,SAAS,GACX,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC;YAEjC,IACI,SAAS,KAAK,SAAS,EACzB,CAAC;gBACC,OAAO;YACX,CAAC;YAED,MAAM,KAAK,GACP,MAAM,CAAC,SAAS,CAAC,CAAC;YAEtB,IAAI,CAAC,WAAW,CACZ,KAAK,EACL,IAAI,CACP,CAAC;QACN,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;;;;;;;OAQG;IACH,WAAW,CACP,KAAa,EACb,OAAoB,EACpB,OAA2B,QAAQ;QAEnC,OAAO,CAAC,OAAO,CAAC,eAAe;YAC3B,MAAM,CAAC,KAAK,CAAC,CAAC;QAElB,IAAI,CAAC,gBAAgB,CAAC,GAAG,CACrB,OAAO,EACP,KAAK,CACR,CAAC;QAEF,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAErC,IAAI,CAAC,cAAc,EAAE,OAAO,CACxB,OAAO,CACV,CAAC;QAEF,IAAI,CAAC,WAAW,CACZ,KAAK,EACL,OAAO,EACP,IAAI,CACP,CAAC;IACN,CAAC;IAED;;OAEG;IACH,aAAa,CACT,OAAoB;QAEpB,IAAI,CAAC,cAAc,EAAE,SAAS,CAC1B,OAAO,CACV,CAAC;QAEF,IAAI,CAAC,gBAAgB,CAAC,MAAM,CACxB,OAAO,CACV,CAAC;QAEF,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC;IAyED;;OAEG;IACK,mBAAmB;QACvB,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;YACtB,OAAO;QACX,CAAC;QAED,IAAI,CAAC,KAAK;YACN,qBAAqB,CAAC,GAAG,EAAE;gBACvB,IAAI,CAAC,cAAc,CAAC,OAAO,CACvB,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;oBACZ,IAAI,CAAC,SAAS,EAAE,CACZ,KAAK,EACL,IAAI,CACP,CAAC;gBACN,CAAC,CACJ,CAAC;gBAEF,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;gBAE5B,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAC5B,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;oBACZ,IAAI,CAAC,cAAc,EAAE,CACjB,KAAK,EACL,IAAI,CACP,CAAC;gBACN,CAAC,CACJ,CAAC;gBAEF,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,CAAC;gBAEjC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;YACtB,CAAC,CAAC,CAAC;IACX,CAAC;IAED;;;;;OAKG;IACH,WAAW,CACP,KAAa,EACb,OAAoB,EACpB,OAA2B,QAAQ;QAEnC,MAAM,IAAI,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC;QAC7C,MAAM,IAAI,GAAG,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;QAEzD,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC;YACZ,OAAO;QACX,CAAC;QAED,MAAM,OAAO,GACT,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAErB,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;YACnB,IAAI,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,OAAO,EAAE,CAAC;gBAChD,OAAO;YACX,CAAC;YAED,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YAC3C,IAAI,CAAC,cAAc,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YACtC,OAAO;QACX,CAAC;QAED,IACI,IAAI,CAAC,YAAY,CAAC,GAAG,CACjB,KAAK,CACR,KAAK,OAAO,EACf,CAAC;YACC,OAAO;QACX,CAAC;QAED,IAAI,CAAC,YAAY,CAAC,GAAG,CACjB,KAAK,EACL,OAAO,CACV,CAAC;QAEF,IAAI,CAAC,SAAS,EAAE,CACZ,KAAK,EACL,OAAO,CACV,CAAC;IACN,CAAC;IAED;;OAEG;IACH,aAAa;QACT,IAAI,CAAC,cAAc,EAAE,UAAU,EAAE,CAAC;QAElC,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;QAC5B,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,CAAC;QAEjC,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;YACtB,oBAAoB,CAChB,IAAI,CAAC,KAAK,CACb,CAAC;QACN,CAAC;IACL,CAAC;IAED,cAAc,CACV,KAAa;QAEb,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CACxB,KAAK,CACR,CAAC;IACN,CAAC;IAED;;;;OAIG;IACH,mBAAmB,CACf,KAAa;QAEb,OAAO,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC7C,CAAC;IAED,kBAAkB;QAId,OAAO,IAAI,GAAG,CACV,IAAI,CAAC,YAAY,CACpB,CAAC;IACN,CAAC;IAED;;OAEG;IACH,uBAAuB;QACnB,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAC3C,CAAC;IAED,YAAY;QACR,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;QAC5B,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,CAAC;IACrC,CAAC;IAED;;OAEG;IACH,iBAAiB;QACb,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;QAC1B,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC;IACnC,CAAC;IAED,OAAO;QACH,IAAI,CAAC,aAAa,EAAE,CAAC;QAErB,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;QAC1B,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;QAC5B,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC;QAC/B,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,CAAC;QAEjC,IAAI,CAAC,gBAAgB;YACjB,IAAI,OAAO,EAAE,CAAC;QAElB,IAAI,CAAC,YAAY,GAAG,IAAI,OAAO,EAAE,CAAC;QAElC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;IAC/B,CAAC;CACJ"}
@@ -8,6 +8,18 @@ export declare class VirtualizationEngine {
8
8
  constructor(estimatedItemSize?: number);
9
9
  setItemCount(count: number): void;
10
10
  recordItemSize(index: number, size: number): void;
11
+ /**
12
+ * NEW (additive): Invalidate cached measurements from `fromIndex`
13
+ * onward (inclusive), or all measurements if `fromIndex` is
14
+ * omitted. Affected indices fall back to `estimatedItemSize`
15
+ * until they are re-measured and recordItemSize() is called
16
+ * again for them.
17
+ *
18
+ * Does not remove items below fromIndex, and does not touch
19
+ * itemCount. Safe to call at any time; it only marks the
20
+ * prefix-sum cache dirty so the next read rebuilds it.
21
+ */
22
+ invalidateFrom(fromIndex?: number): void;
11
23
  private rebuildPrefix;
12
24
  getItemSize(index: number): number;
13
25
  getItemOffset(index: number): number;
@@ -1 +1 @@
1
- {"version":3,"file":"VirtualizationEngine.d.ts","sourceRoot":"","sources":["../../src/core/VirtualizationEngine.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,QAAQ,EACR,YAAY,EAEf,MAAM,UAAU,CAAC;AAElB,qBAAa,oBAAoB;IAC7B,OAAO,CAAC,WAAW,CAAwB;IAC3C,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,SAAS,CAAK;IAGtB,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,KAAK,CAAQ;gBAET,iBAAiB,SAAK;IAIlC,YAAY,CAAC,KAAK,EAAE,MAAM;IAK1B,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;IAO1C,OAAO,CAAC,aAAa;IAYrB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAIlC,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAKpC,YAAY,IAAI,MAAM;IAKtB,OAAO,CAAC,YAAY;IAkBpB,eAAe,CACX,YAAY,EAAE,MAAM,EACpB,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,EACjB,QAAQ,SAAI,GACb,YAAY;IAcf,eAAe,CACX,YAAY,EAAE,MAAM,EACpB,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,GACjB,QAAQ,EAAE;IAqBb,uBAAuB,CAAC,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,SAAS,GAAE,OAAO,GAAG,QAAQ,GAAG,KAAe;CAchH"}
1
+ {"version":3,"file":"VirtualizationEngine.d.ts","sourceRoot":"","sources":["../../src/core/VirtualizationEngine.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,QAAQ,EACR,YAAY,EAEf,MAAM,UAAU,CAAC;AAElB,qBAAa,oBAAoB;IAC7B,OAAO,CAAC,WAAW,CAAwB;IAC3C,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,SAAS,CAAK;IAGtB,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,KAAK,CAAQ;gBAET,iBAAiB,SAAK;IAIlC,YAAY,CAAC,KAAK,EAAE,MAAM;IAqB1B,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;IAO1C;;;;;;;;;;OAUG;IACH,cAAc,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI;IAqBxC,OAAO,CAAC,aAAa;IAYrB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAIlC,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAKpC,YAAY,IAAI,MAAM;IAKtB,OAAO,CAAC,YAAY;IAkBpB,eAAe,CACX,YAAY,EAAE,MAAM,EACpB,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,EACjB,QAAQ,SAAI,GACb,YAAY;IAcf,eAAe,CACX,YAAY,EAAE,MAAM,EACpB,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,GACjB,QAAQ,EAAE;IAqBb,uBAAuB,CAAC,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,SAAS,GAAE,OAAO,GAAG,QAAQ,GAAG,KAAe;CAchH"}
@@ -18,7 +18,7 @@ export class VirtualizationEngine {
18
18
  writable: true,
19
19
  value: 0
20
20
  });
21
- // 🔥 NEW: prefix sum cache (critical fix)
21
+ // prefix sum cache
22
22
  Object.defineProperty(this, "prefix", {
23
23
  enumerable: true,
24
24
  configurable: true,
@@ -34,6 +34,21 @@ export class VirtualizationEngine {
34
34
  this.estimatedItemSize = estimatedItemSize;
35
35
  }
36
36
  setItemCount(count) {
37
+ /**
38
+ * FIX: previously this unconditionally set `dirty = true`
39
+ * on every call, even when the count hadn't changed. Since
40
+ * getVisibleRange() calls setItemCount() on every single
41
+ * invocation (i.e. every scroll frame), that forced a full
42
+ * O(n) prefix-sum rebuild every frame regardless of whether
43
+ * anything actually changed.
44
+ *
45
+ * Now we only mark dirty when the count actually differs.
46
+ * Measurement updates still mark dirty via recordItemSize(),
47
+ * so cache invalidation on real changes is unaffected.
48
+ */
49
+ if (this.itemCount === count) {
50
+ return;
51
+ }
37
52
  this.itemCount = count;
38
53
  this.dirty = true;
39
54
  }
@@ -43,6 +58,34 @@ export class VirtualizationEngine {
43
58
  this.itemSizeMap[index] = size;
44
59
  this.dirty = true;
45
60
  }
61
+ /**
62
+ * NEW (additive): Invalidate cached measurements from `fromIndex`
63
+ * onward (inclusive), or all measurements if `fromIndex` is
64
+ * omitted. Affected indices fall back to `estimatedItemSize`
65
+ * until they are re-measured and recordItemSize() is called
66
+ * again for them.
67
+ *
68
+ * Does not remove items below fromIndex, and does not touch
69
+ * itemCount. Safe to call at any time; it only marks the
70
+ * prefix-sum cache dirty so the next read rebuilds it.
71
+ */
72
+ invalidateFrom(fromIndex) {
73
+ if (fromIndex === undefined) {
74
+ this.itemSizeMap = {};
75
+ this.dirty = true;
76
+ return;
77
+ }
78
+ if (fromIndex < 0) {
79
+ fromIndex = 0;
80
+ }
81
+ for (const key of Object.keys(this.itemSizeMap)) {
82
+ const index = Number(key);
83
+ if (index >= fromIndex) {
84
+ delete this.itemSizeMap[index];
85
+ }
86
+ }
87
+ this.dirty = true;
88
+ }
46
89
  rebuildPrefix() {
47
90
  let sum = 0;
48
91
  this.prefix = [0];
@@ -1 +1 @@
1
- {"version":3,"file":"VirtualizationEngine.js","sourceRoot":"","sources":["../../src/core/VirtualizationEngine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"VirtualizationEngine.js","sourceRoot":"","sources":["../../src/core/VirtualizationEngine.ts"],"names":[],"mappings":"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"}
@@ -1,34 +1,33 @@
1
1
  export interface UseInfiniteScrollParams {
2
2
  /**
3
- * Callback triggered when user reaches threshold.
3
+ * Callback triggered when user reaches threshold
4
4
  */
5
5
  onLoadMore: () => void | Promise<void>;
6
6
  /**
7
- * Distance from bottom before triggering load.
7
+ * Distance from bottom before triggering load
8
8
  * Default: 500px
9
9
  */
10
10
  threshold?: number;
11
11
  /**
12
- * External loading state.
12
+ * External loading state
13
13
  */
14
14
  isLoading?: boolean;
15
15
  /**
16
- * Enable/disable infinite scroll.
17
- * Default: true
16
+ * Enable / Disable infinite scroll
18
17
  */
19
18
  enabled?: boolean;
20
19
  }
21
20
  export interface UseInfiniteScrollReturn<T extends HTMLElement = HTMLDivElement> {
22
- containerRef: React.RefObject<T>;
21
+ containerRef: React.RefObject<T | null>;
23
22
  isAtBottom: boolean;
24
23
  isLoading: boolean;
25
24
  checkIfAtBottom: () => void;
26
25
  }
27
26
  /**
28
- * Infinite Scroll Hook
27
+ * useInfiniteScroll
29
28
  *
30
- * Automatically triggers `onLoadMore`
31
- * when user scrolls near the bottom.
29
+ * Automatically calls onLoadMore when the user
30
+ * scrolls near the bottom of a container.
32
31
  */
33
32
  export declare function useInfiniteScroll<T extends HTMLElement = HTMLDivElement>({ onLoadMore, threshold, isLoading, enabled, }: UseInfiniteScrollParams): UseInfiniteScrollReturn<T>;
34
33
  //# sourceMappingURL=useInfiniteScroll.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useInfiniteScroll.d.ts","sourceRoot":"","sources":["../../src/hooks/useInfiniteScroll.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,uBAAuB;IACpC;;OAEG;IACH,UAAU,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEvC;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,uBAAuB,CACpC,CAAC,SAAS,WAAW,GAAG,cAAc;IAEtC,YAAY,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IACjC,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,eAAe,EAAE,MAAM,IAAI,CAAC;CAC/B;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC7B,CAAC,SAAS,WAAW,GAAG,cAAc,EACxC,EACE,UAAU,EACV,SAAe,EACf,SAAiB,EACjB,OAAc,GACjB,EAAE,uBAAuB,GAAG,uBAAuB,CAAC,CAAC,CAAC,CAiFtD"}
1
+ {"version":3,"file":"useInfiniteScroll.d.ts","sourceRoot":"","sources":["../../src/hooks/useInfiniteScroll.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,uBAAuB;IACpC;;OAEG;IACH,UAAU,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEvC;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,uBAAuB,CACpC,CAAC,SAAS,WAAW,GAAG,cAAc;IAEtC,YAAY,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IACxC,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,eAAe,EAAE,MAAM,IAAI,CAAC;CAC/B;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC7B,CAAC,SAAS,WAAW,GAAG,cAAc,EACxC,EACE,UAAU,EACV,SAAe,EACf,SAAiB,EACjB,OAAc,GACjB,EAAE,uBAAuB,GAAG,uBAAuB,CAAC,CAAC,CAAC,CA6FtD"}