Repository: airbnb/lottie-ios
File: Sources/Public/Animation/LottieView.swift (Swift)

Code before:
    .valueChanged(value: reloadAnimationTrigger) { _ in
      reloadAnimationTriggerDidChange()
    }
  }

  /// Returns a copy of this `LottieView` updated to have the specific configuration property
  /// applied to its represented `LottieAnimationView` whenever it is updated via the `updateUIView(...)`
  /// or `updateNSView(...)` methods.
  ///
  /// - note: This configuration will be applied on every SwiftUI render pass.
  ///         Be wary of applying heavy side-effects as configuration values.
  public func configure<Property>(
    _ property: ReferenceWritableKeyPath<LottieAnimationView, Property>,
    to value: Property)
    -> Self
  {
    configure { $0[keyPath: property] = value }
  }

  /// Returns a copy of this `LottieView` updated to have the specific configuration property
  /// applied to its represented `LottieAnimationView` whenever it is updated via the `updateUIView(...)`
  /// or `updateNSView(...)` methods.
  ///
  /// - note: This configuration will be applied on every SwiftUI render pass.
  ///         Be wary of applying heavy side-effects as configuration values.
  ///
  /// - note: If the `value` is already the currently-applied configuration value, it won't be applied
  public func configure<Property: Equatable>(
    _ property: ReferenceWritableKeyPath<LottieAnimationView, Property>,
    to value: Property)
    -> Self
  {
    configure {
      guard $0[keyPath: property] != value else { return }
      $0[keyPath: property] = value
    }
  }

  /// Returns a copy of this `LottieView` updated to have the given closure applied to its
  /// represented `LottieAnimationView` whenever it is updated via the `updateUIView(…)`
  /// or `updateNSView(…)` method.
  ///
  /// - note: This configuration closure will be executed on every SwiftUI render pass.
  ///         Be wary of applying heavy side-effects inside it.
  public func configure(_ configure: @escaping (LottieAnimationView) -> Void) -> Self {
    var copy = self
    copy.configurations.append { context in
      configure(context.view)
    }
    return copy
  }

Review comment (suggestion):
This note isn't necessary here because the value us only updated when the value changes

```suggestion
```

Code after:
    .valueChanged(value: reloadAnimationTrigger) { _ in
      reloadAnimationTriggerDidChange()
    }
  }

  /// Returns a copy of this `LottieView` updated to have the specific configuration property
  /// applied to its represented `LottieAnimationView` whenever it is updated via the `updateUIView(...)`
  /// or `updateNSView(...)` methods.
  ///
  /// - note: This configuration will be applied on every SwiftUI render pass.
  ///         Be wary of applying heavy side-effects as configuration values.
  public func configure<Property>(
    _ property: ReferenceWritableKeyPath<LottieAnimationView, Property>,
    to value: Property)
    -> Self
  {
    configure { $0[keyPath: property] = value }
  }

  /// Returns a copy of this `LottieView` updated to have the specific configuration property
  /// applied to its represented `LottieAnimationView` whenever it is updated via the `updateUIView(...)`
  /// or `updateNSView(...)` methods.
  ///
  /// - note: If the `value` is already the currently-applied configuration value, it won't be applied
  public func configure<Property: Equatable>(
    _ property: ReferenceWritableKeyPath<LottieAnimationView, Property>,
    to value: Property)
    -> Self
  {
    configure {
      guard $0[keyPath: property] != value else { return }
      $0[keyPath: property] = value
    }
  }

  /// Returns a copy of this `LottieView` updated to have the given closure applied to its
  /// represented `LottieAnimationView` whenever it is updated via the `updateUIView(…)`
  /// or `updateNSView(…)` method.
  ///
  /// - note: This configuration closure will be executed on every SwiftUI render pass.
  ///         Be wary of applying heavy side-effects inside it.
  public func configure(_ configure: @escaping (LottieAnimationView) -> Void) -> Self {
    var copy = self
    copy.configurations.append { context in
      configure(context.view)
    }
    return copy
  }

  /// Returns a copy of this view that can be resized by scaling its animation
  /// to always fit the size offered by its parent.