@@ -531,31 +531,25 @@ let Map_ = {
531531 L_ . layers . data [ L_ . _layersOrdered [ i ] ] . type == 'vector' &&
532532 L_ . layers . data [ L_ . _layersOrdered [ i ] ] . name == layerObj . name
533533 ) {
534+ // Original
534535 if ( L_ . _layersBeingMade [ layerObj . name ] !== true ) {
535- const wasOn = L_ . layers . on [ layerObj . name ]
536-
537- if ( wasOn )
538- L_ . toggleLayer (
539- L_ . layers . data [ layerObj . name ] ,
540- skipOrderedBringToFront
541- ) // turn off if on
542-
543- // fake on
536+ // makeLayer now handles all layer swapping internally for refresh operations
544537 L_ . layers . on [ layerObj . name ] = true
545- await makeLayer ( layerObj , true , null , null , null , stopLoops )
538+ await makeLayer (
539+ layerObj ,
540+ true ,
541+ null ,
542+ null ,
543+ null ,
544+ stopLoops ,
545+ true
546+ )
546547 L_ . addVisible ( Map_ , [ layerObj . name ] )
547548
548- // turn off if was off
549- if ( wasOn ) L_ . layers . on [ layerObj . name ] = false
550- L_ . toggleLayer (
551- L_ . layers . data [ layerObj . name ] ,
552- skipOrderedBringToFront
553- ) // turn back on/off
554-
555549 L_ . enforceVisibilityCutoffs ( )
556550 } else {
557- console . error (
558- `ERROR - refreshLayer: Cannot make layer ${ layerObj . display_name } /${ layerObj . name } as it's already being made!`
551+ console . warn (
552+ `WARNING - refreshLayer: Cannot make layer ${ layerObj . display_name } /${ layerObj . name } as it's already being made!`
559553 )
560554 if ( typeof cb === 'function' ) cb ( )
561555 return false
@@ -677,7 +671,8 @@ async function makeLayer(
677671 forceGeoJSON ,
678672 id ,
679673 forceMake ,
680- stopLoops
674+ stopLoops ,
675+ isRefresh = false
681676) {
682677 return new Promise ( async ( resolve , reject ) => {
683678 const layerName = L_ . asLayerUUID ( layerObj . name )
@@ -700,7 +695,8 @@ async function makeLayer(
700695 layerObj ,
701696 evenIfOff ,
702697 null ,
703- forceGeoJSON
698+ forceGeoJSON ,
699+ isRefresh
704700 )
705701 break
706702 case 'velocity' :
@@ -874,7 +870,8 @@ async function makeVectorLayer(
874870 layerObj ,
875871 evenIfOff ,
876872 useEmptyGeoJSON ,
877- forceGeoJSON
873+ forceGeoJSON ,
874+ isRefresh = false
878875) {
879876 return new Promise ( ( resolve , reject ) => {
880877 if ( forceGeoJSON ) add ( forceGeoJSON )
@@ -947,9 +944,27 @@ async function makeVectorLayer(
947944 onEachFeatureDefault ,
948945 Map_
949946 )
947+
948+ // For refresh operations, toggle off old layer and handle seamless swap
949+ let wasOnForRefresh = false
950+ if (
951+ isRefresh &&
952+ L_ . layers . on [ layerObj . name ] &&
953+ L_ . layers . layer [ layerObj . name ] &&
954+ L_ . Map_ . map . hasLayer ( L_ . layers . layer [ layerObj . name ] )
955+ ) {
956+ wasOnForRefresh = true
957+ L_ . toggleLayer ( L_ . layers . data [ layerObj . name ] , true )
958+ }
959+
950960 L_ . layers . attachments [ layerObj . name ] = vl . sublayers
951961 L_ . layers . layer [ layerObj . name ] = vl . layer
952962
963+ // For refresh operations, turn the new layer back on if the old one was on
964+ if ( isRefresh && wasOnForRefresh ) {
965+ L_ . toggleLayer ( L_ . layers . data [ layerObj . name ] , true )
966+ }
967+
953968 d3 . selectAll ( '.' + F_ . getSafeName ( layerObj . name ) ) . data (
954969 data . features
955970 )
@@ -1770,21 +1785,27 @@ function makeVideoLayer(layerObj) {
17701785 )
17711786
17721787 // Add updateFilter function to video layer for CSS filter support
1773- L_ . layers . layer [ layerObj . name ] . updateFilter = function ( filterArray ) {
1788+ L_ . layers . layer [ layerObj . name ] . updateFilter = function ( filterArray ) {
17741789 const videoElement = this . getElement ( )
17751790 if ( videoElement ) {
17761791 let cssFilters = [ ]
17771792
1778- filterArray . forEach ( filter => {
1793+ filterArray . forEach ( ( filter ) => {
17791794 const [ property , value ] = filter . split ( ':' )
17801795 // Skip blend mode for videos - only handle CSS filters
17811796 if ( property !== 'mix-blend-mode' ) {
17821797 if ( property === 'saturate' ) {
1783- cssFilters . push ( `saturate(${ parseFloat ( value ) * 100 } %)` )
1798+ cssFilters . push (
1799+ `saturate(${ parseFloat ( value ) * 100 } %)`
1800+ )
17841801 } else if ( property === 'brightness' ) {
1785- cssFilters . push ( `brightness(${ parseFloat ( value ) * 100 } %)` )
1802+ cssFilters . push (
1803+ `brightness(${ parseFloat ( value ) * 100 } %)`
1804+ )
17861805 } else if ( property === 'contrast' ) {
1787- cssFilters . push ( `contrast(${ parseFloat ( value ) * 100 } %)` )
1806+ cssFilters . push (
1807+ `contrast(${ parseFloat ( value ) * 100 } %)`
1808+ )
17881809 }
17891810 }
17901811 } )
0 commit comments