| // Copyright 2023 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| import SwiftUI |
| |
| extension View { |
| /// Applies the given transform if the given condition evaluates to `true`. |
| /// - Parameters: |
| /// - condition: The condition to evaluate. |
| /// - transform: The transform to apply to the source `View`. |
| /// - Returns: Either the original `View` or the modified `View` if the condition is `true`. |
| @ViewBuilder public func `if`<Content: View>(_ condition: Bool, transform: (Self) -> Content) |
| -> some View |
| { |
| if condition { |
| transform(self) |
| } else { |
| self |
| } |
| } |
| |
| /// Applies the given transform if the given condition is non nil. |
| /// - Parameters: |
| /// - condition: The value to check for nil. |
| /// - transform: The transform to apply to the source `View` if `value` is |
| /// non-nil. |
| /// - Returns: Either the original `View` or the modified `View` if the value |
| /// is `nil`. |
| @ViewBuilder public func `ifLet`<Content: View, Value>( |
| _ value: Value?, transform: (Self, Value) -> Content |
| ) |
| -> some View |
| { |
| if let value = value { |
| transform(self, value) |
| } else { |
| self |
| } |
| } |
| } |