@@ -153,11 +153,21 @@ export default function useHooks({
153153 [ hiddenLayerIds , hiddenLayers ] ,
154154 ) ;
155155
156- const layersRef = useGet ( layers ) ;
156+ const derivedLayers = useMemo ( ( ) => {
157+ return layers ?. map ( l => {
158+ const hidden = isHidden ?.( l . id ) ;
159+ return {
160+ ...l ,
161+ visible : hidden ? ! hidden : l . visible ,
162+ } ;
163+ } ) ;
164+ } , [ isHidden , layers ] ) ;
165+
166+ const layersRef = useGet ( derivedLayers ) ;
157167 const [ tempLayers , setTempLayers ] = useState < Layer [ ] > ( [ ] ) ;
158168 const tempLayersRef = useRef < Layer [ ] > ( [ ] ) ;
159169 const flattenedLayers = useMemo ( ( ) : Layer [ ] => {
160- const newLayers = [ ...flattenLayers ( layers ?? [ ] ) , ...flattenLayers ( tempLayers ) ] ;
170+ const newLayers = [ ...flattenLayers ( derivedLayers ?? [ ] ) , ...flattenLayers ( tempLayers ) ] ;
161171 // apply overrides
162172 return newLayers . map ( l => {
163173 const ol : any = overriddenLayers . find ( ll => ll . id === l . id ) ;
@@ -179,7 +189,7 @@ export default function useHooks({
179189
180190 return res ;
181191 } ) ;
182- } , [ tempLayers , layers , overriddenLayers ] ) ;
192+ } , [ derivedLayers , tempLayers , overriddenLayers ] ) ;
183193
184194 const getComputedLayer = useAtomValue (
185195 useMemo (
@@ -623,7 +633,7 @@ export default function useHooks({
623633 useLayoutEffect ( ( ) => {
624634 const ids = new Set < string > ( ) ;
625635
626- walkLayers ( layers ?? [ ] , l => {
636+ walkLayers ( derivedLayers ?? [ ] , l => {
627637 ids . add ( l . id ) ;
628638 if ( ! atomMap . has ( l . id ) ) {
629639 atomMap . set ( l . id , computeAtom ( ) ) ;
@@ -643,8 +653,8 @@ export default function useHooks({
643653 overriddenLayersRef . current = updated ;
644654 setOverridenLayers ( updated ) ;
645655
646- prevLayers . current = layers ;
647- } , [ atomMap , layers , layerMap , lazyLayerMap , setOverridenLayers , showLayer ] ) ;
656+ prevLayers . current = derivedLayers ;
657+ } , [ atomMap , layerMap , lazyLayerMap , setOverridenLayers , showLayer , derivedLayers ] ) ;
648658
649659 useEffect ( ( ) => {
650660 if ( ! requestingRenderMode || requestingRenderMode . current === FORCE_REQUEST_RENDER ) return ;
0 commit comments