@@ -94,7 +94,7 @@ var responsivelyLazy = typeof responsivelyLazy !== 'undefined' ? responsivelyLaz
9494 return ;
9595 }
9696 processLoadImageQueueLock = true ;
97- var maxSimultaneousImages = 5 ;
97+ var maxConcurrentImages = 3 ;
9898 loadImageQueue = loadImageQueue . filter ( function ( item ) { return item [ 2 ] !== 2 } ) ; // Remove completed
9999 for ( var i = 0 ; i < loadImageQueue . length ; i ++ ) { // Update visibility priority
100100 loadImageQueue [ i ] [ 4 ] = getVisibilityPriority ( loadImageQueue [ i ] [ 1 ] ) ;
@@ -104,7 +104,7 @@ var responsivelyLazy = typeof responsivelyLazy !== 'undefined' ? responsivelyLaz
104104 } ) ;
105105 var currentlyLoadingCount = loadImageQueue . filter ( function ( item ) { return item [ 3 ] === 1 } ) . length ;
106106 for ( var i = 0 ; i < loadImageQueue . length ; i ++ ) {
107- if ( currentlyLoadingCount >= maxSimultaneousImages ) {
107+ if ( currentlyLoadingCount >= maxConcurrentImages ) {
108108 break ;
109109 }
110110 var item = loadImageQueue [ i ] ;
@@ -209,7 +209,7 @@ var responsivelyLazy = typeof responsivelyLazy !== 'undefined' ? responsivelyLaz
209209 options = temp ;
210210 }
211211 }
212- var elementWidth = element . offsetWidth * ( typeof window . devicePixelRatio !== 'undefined' ? window . devicePixelRatio : 1 ) ;
212+ var elementWidth = element . getBoundingClientRect ( ) . width * ( typeof window . devicePixelRatio !== 'undefined' ? window . devicePixelRatio : 1 ) ;
213213
214214 var bestSelectedOption = null ;
215215 for ( var j = 0 ; j < options . length ; j ++ ) {
@@ -273,13 +273,15 @@ var responsivelyLazy = typeof responsivelyLazy !== 'undefined' ? responsivelyLaz
273273 windowHeight = window . innerHeight ;
274274 } ;
275275
276- var updateElement = function ( element ) {
276+ var updateElement = function ( element , options ) {
277277
278278 if ( typeof element . responsivelyLazyDone !== 'undefined' ) {
279279 return ;
280280 }
281281
282- if ( getVisibilityPriority ( element ) === 0 ) {
282+ var ignoreThreshold = typeof options . ignoreThreshold !== 'undefined' ? options . ignoreThreshold : false ;
283+
284+ if ( ! ignoreThreshold && getVisibilityPriority ( element ) === 0 ) {
283285 return ;
284286 }
285287
@@ -307,24 +309,29 @@ var responsivelyLazy = typeof responsivelyLazy !== 'undefined' ? responsivelyLaz
307309
308310 } ;
309311
310- var run = function ( element ) {
312+ var run = function ( element , options ) {
311313 if ( hasWebPSupport === null ) {
312314 return ;
313315 }
314316 if ( hasAVIFSupport === null ) {
315317 return ;
316318 }
319+ if ( typeof options === 'undefined' ) {
320+ options = { } ;
321+ }
317322 if ( debug ) {
318323 var timerLabel = 'responsivelyLazy::run' ;
319324 console . time ( timerLabel ) ;
320325 }
321- if ( typeof element !== 'undefined' ) {
322- updateElement ( elements [ i ] ) ;
326+ if ( typeof element !== 'undefined' && element !== null ) {
327+ if ( element . getAttribute ( 'data-responsively-lazy' ) !== null ) {
328+ updateElement ( element , options ) ;
329+ }
323330 } else {
324331 var elements = document . querySelectorAll ( '[data-responsively-lazy]' ) ;
325332 for ( var i = 0 ; i < elements . length ; i ++ ) {
326333 var element = elements [ i ] ;
327- updateElement ( elements [ i ] ) ;
334+ updateElement ( elements [ i ] , options ) ;
328335 }
329336 }
330337 if ( debug ) {
@@ -377,7 +384,7 @@ var responsivelyLazy = typeof responsivelyLazy !== 'undefined' ? responsivelyLaz
377384 for ( var i in entries ) {
378385 var entry = entries [ i ] ;
379386 if ( entry . intersectionRatio > 0 ) {
380- updateElement ( entry . target ) ;
387+ updateElement ( entry . target , { } ) ;
381388 }
382389 }
383390 } ) ;
0 commit comments