Files
divkit/client/ios/DivKit/Actions/AnimatorActionHandler.swift
T
morevsavva 60062e637e supported animators.
commit_hash:81368398970aed31520e08d5ece3385ba8a1bb07
2024-10-15 16:29:06 +03:00

36 lines
1.3 KiB
Swift

import Foundation
final class AnimatorActionHandler {
private let animatorController: DivAnimatorController
init(animatorController: DivAnimatorController) {
self.animatorController = animatorController
}
func handle(_ action: DivActionAnimatorStart, context: DivActionHandlingContext) {
let resolver = context.expressionResolver
let startValue = action.startValue?.resolveVariableValue(resolver)
let endValue = action.endValue?.resolveVariableValue(resolver)
let duration = action.resolveDuration(resolver)
let startDelay = action.resolveStartDelay(resolver)
let repeatCount = action.repeatCount?.resolve(resolver)
let interpolator = action.resolveInterpolator(resolver)?.progressInterpolator
let direction = action.resolveDirection(resolver)?.direction
animatorController.startAnimator(
path: context.path,
id: action.animatorId,
startValue: startValue,
endValue: endValue,
duration: duration,
startDelay: startDelay,
direction: direction,
progressInterpolator: interpolator,
repeatCount: repeatCount
)
}
func handle(_ action: DivActionAnimatorStop, context: DivActionHandlingContext) {
animatorController.stopAnimator(path: context.path, id: action.animatorId)
}
}