// // View.swift // Multihost // // Created by Uldis Zingis on 25/07/2022. // import SwiftUI extension View { func placeholder<Content: View>( when shouldShow: Bool, alignment: Alignment = .leading, @ViewBuilder placeholder: () -> Content) -> some View { ZStack(alignment: alignment) { placeholder().opacity(shouldShow ? 1 : 0) .frame(alignment: alignment) .padding(.leading, 10) self } } func onFirstAppear(_ action: @escaping () -> ()) -> some View { modifier(FirstAppear(action: action)) } } private struct FirstAppear: ViewModifier { let action: () -> () @State private var hasAppeared = false func body(content: Content) -> some View { content.onAppear { guard !hasAppeared else { return } hasAppeared = true action() } } }