diff options
| author | Maze Winther <mazewinther@gmail.com> | 2026-04-26 04:04:30 +0200 |
|---|---|---|
| committer | Maze Winther <mazewinther@gmail.com> | 2026-04-26 04:04:30 +0200 |
| commit | 0b7597b31fa956c7f3d4838923b545ba5e341422 (patch) | |
| tree | 6b360add6e4e22a422736bc9ddccdf13097bd044 /apps/web/src/animation/values.ts | |
| parent | 6a22a3ecbdff2d0e6a4c24c8db40bb86bc01b692 (diff) | |
| download | opencut-0b7597b31fa956c7f3d4838923b545ba5e341422.tar.gz | |
refactor: split animation helpers by domain
Diffstat (limited to 'apps/web/src/animation/values.ts')
| -rw-r--r-- | apps/web/src/animation/values.ts | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/apps/web/src/animation/values.ts b/apps/web/src/animation/values.ts new file mode 100644 index 00000000..7733ec4c --- /dev/null +++ b/apps/web/src/animation/values.ts @@ -0,0 +1,61 @@ +import type { + AnimationColorPropertyPath, + AnimationNumericPropertyPath, + ElementAnimations, +} from "./types"; +import { resolveAnimationPathValueAtTime } from "./resolve"; + +export function resolveOpacityAtTime({ + baseOpacity, + animations, + localTime, +}: { + baseOpacity: number; + animations: ElementAnimations | undefined; + localTime: number; +}): number { + return resolveAnimationPathValueAtTime({ + animations, + propertyPath: "opacity", + localTime: Math.max(0, localTime), + fallbackValue: baseOpacity, + }); +} + +export function resolveNumberAtTime({ + baseValue, + animations, + propertyPath, + localTime, +}: { + baseValue: number; + animations: ElementAnimations | undefined; + propertyPath: AnimationNumericPropertyPath; + localTime: number; +}): number { + return resolveAnimationPathValueAtTime({ + animations, + propertyPath, + localTime: Math.max(0, localTime), + fallbackValue: baseValue, + }); +} + +export function resolveColorAtTime({ + baseColor, + animations, + propertyPath, + localTime, +}: { + baseColor: string; + animations: ElementAnimations | undefined; + propertyPath: AnimationColorPropertyPath; + localTime: number; +}): string { + return resolveAnimationPathValueAtTime({ + animations, + propertyPath, + localTime: Math.max(0, localTime), + fallbackValue: baseColor, + }); +} |
