// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- // Created by Sam Deane on 27/07/22. // All code (c) 2022 - present day, Elegant Chaos Limited. // -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- import SwiftUI struct ContentVisibilityTrackingModifier: ViewModifier { @EnvironmentObject var visibilityTracker: VisibilityTracker let id: ID func body(content: Content) -> some View { content .id(id) .background( GeometryReader { proxy in report(proxy: proxy) } ) } func report(proxy: GeometryProxy) -> Color { visibilityTracker.reportContentBounds(proxy.frame(in: .global), id: id) return Color.clear } } public extension View { func trackVisibility(id: ID) -> some View { self .modifier(ContentVisibilityTrackingModifier(id: id)) } }