import Foundation import SDWebImageSwiftUI import SwiftUI struct BrowserPlayerControls: View { enum Context { case browser, player } let content: Content let toolbar: Toolbar? init( context _: Context? = nil, @ViewBuilder toolbar: @escaping () -> Toolbar? = { nil }, @ViewBuilder content: @escaping () -> Content ) { self.content = content() self.toolbar = toolbar() } init( context: Context? = nil, @ViewBuilder content: @escaping () -> Content ) where Toolbar == EmptyView { self.init(context: context, toolbar: { EmptyView() }, content: content) } var body: some View { // TODO: remove #if DEBUG if #available(iOS 15.0, macOS 12.0, *) { Self._printChanges() } #endif return ZStack(alignment: .bottomLeading) { content .frame(maxHeight: .infinity) #if !os(tvOS) VStack(spacing: 0) { #if os(iOS) toolbar .frame(height: 35) .frame(maxWidth: .infinity) .borderTop(height: 0.4, color: Color("ControlsBorderColor")) .modifier(ControlBackgroundModifier()) #endif ControlsBar(fullScreen: .constant(false)) .edgesIgnoringSafeArea(.bottom) } #endif } } } struct PlayerControlsView_Previews: PreviewProvider { static var previews: some View { BrowserPlayerControls(context: .player, toolbar: { Button("Button") {} }) { BrowserPlayerControls { VStack { Spacer() TextField("A", text: .constant("abc")) Spacer() } } .offset(y: -100) } .injectFixtureEnvironmentObjects() } }