import ComponentLibrary
import Foundation
import SwiftUI

struct AnnounceSlideImage: View {
    @Binding var isAtFinalPostion: Bool
    let image: Image
    let startPosition: CGPoint
    let endPosition: CGPoint
    let startRotation: Double
    let endRotation: Double

    var body: some View {
        Color.clear
            .frame(width: 96.0, height: 128.0)
            .background {
                image
                    .resizable()
                    .aspectRatio(contentMode: .fill)
            }
            .clipShape(.rect(cornerRadius: 8.0))
            .rotationEffect(.degrees(animationRotation), anchor: .center)
            .offset(x: animationOffset.x, y: animationOffset.y)
            .opacity(animationOpacity)
    }
}

private extension AnnounceSlideImage {
    var animationOffset: CGPoint {
        if isAtFinalPostion {
            return .init(x: endPosition.x, y: endPosition.y)
        } else {
            return .init(x: startPosition.x, y: startPosition.y)
        }
    }

    var animationRotation: Double {
        return isAtFinalPostion ? endRotation : startRotation
    }

    var animationOpacity: Double {
        return isAtFinalPostion ? 1.0 : .zero
    }
}
