@@ -1271,6 +1271,50 @@ test('lazy fast path: respects paddingStart + scrollMargin + gap', () => {
12711271 expect ( m [ 1 ] ! . size ) . toBe ( 40 )
12721272} )
12731273
1274+ test ( 'changing gap invalidates cached measurements' , ( ) => {
1275+ const baseOptions = {
1276+ count : 5 ,
1277+ estimateSize : ( ) => 50 ,
1278+ getScrollElement : ( ) => null ,
1279+ scrollToFn : vi . fn ( ) ,
1280+ observeElementRect : vi . fn ( ) ,
1281+ observeElementOffset : vi . fn ( ) ,
1282+ }
1283+ const v = new Virtualizer ( { ...baseOptions , gap : 0 } )
1284+ let m = v [ 'getMeasurements' ] ( )
1285+ expect ( m [ 1 ] ! . start ) . toBe ( 50 )
1286+ expect ( v . getTotalSize ( ) ) . toBe ( 250 )
1287+
1288+ v . setOptions ( { ...baseOptions , gap : 40 } )
1289+ m = v [ 'getMeasurements' ] ( )
1290+ // start(i) = i * (size + gap); previously stale starts survived a gap-only
1291+ // change because gap was missing from the measurement memo dependencies
1292+ expect ( m [ 1 ] ! . start ) . toBe ( 90 )
1293+ expect ( m [ 2 ] ! . start ) . toBe ( 180 )
1294+ expect ( v . getTotalSize ( ) ) . toBe ( 410 )
1295+ } )
1296+
1297+ test ( 'changing gap invalidates cached measurements (multi-lane)' , ( ) => {
1298+ const baseOptions = {
1299+ count : 4 ,
1300+ lanes : 2 ,
1301+ estimateSize : ( ) => 50 ,
1302+ getScrollElement : ( ) => null ,
1303+ scrollToFn : vi . fn ( ) ,
1304+ observeElementRect : vi . fn ( ) ,
1305+ observeElementOffset : vi . fn ( ) ,
1306+ }
1307+ const v = new Virtualizer ( { ...baseOptions , gap : 0 } )
1308+ let m = v [ 'getMeasurements' ] ( )
1309+ expect ( m [ 2 ] ! . start ) . toBe ( 50 )
1310+
1311+ v . setOptions ( { ...baseOptions , gap : 40 } )
1312+ m = v [ 'getMeasurements' ] ( )
1313+ // second row in each lane starts at prevInLane.end + gap
1314+ expect ( m [ 2 ] ! . start ) . toBe ( 90 )
1315+ expect ( m [ 3 ] ! . start ) . toBe ( 90 )
1316+ } )
1317+
12741318test ( 'lazy fast path: VirtualItem fields are correct' , ( ) => {
12751319 const v = new Virtualizer ( {
12761320 count : 3 ,
0 commit comments