Files
2026-04-14 15:33:19 +02:00

62 lines
1.7 KiB
Swift

import Foundation
import UIKit
import ComponentFlow
import Display
public extension ComponentTransition.Animation.Curve {
init(_ curve: ContainedViewLayoutTransitionCurve) {
switch curve {
case .linear:
self = .linear
case .easeInOut:
self = .easeInOut
case .easeIn:
self = .easeIn
case let .custom(a, b, c, d):
self = .custom(a, b, c, d)
case .customSpring:
self = .spring
case .spring:
self = .spring
}
}
var containedViewLayoutTransitionCurve: ContainedViewLayoutTransitionCurve {
switch self {
case .linear:
return .linear
case .easeInOut:
return .easeInOut
case .easeIn:
return .easeIn
case .spring:
return .spring
case let .custom(a, b, c, d):
return .custom(a, b, c, d)
case .bounce:
assertionFailure()
return .spring
}
}
}
public extension ComponentTransition {
init(_ transition: ContainedViewLayoutTransition) {
switch transition {
case .immediate:
self.init(animation: .none)
case let .animated(duration, curve):
self.init(animation: .curve(duration: duration, curve: ComponentTransition.Animation.Curve(curve)))
}
}
var containedViewLayoutTransition: ContainedViewLayoutTransition {
switch self.animation {
case .none:
return .immediate
case let .curve(duration, curve):
return .animated(duration: duration, curve: curve.containedViewLayoutTransitionCurve)
}
}
}