summaryrefslogtreecommitdiff
path: root/apps/web/src/lib/animation/resolve.ts
diff options
context:
space:
mode:
authorMaze <mazewinther@gmail.com>2026-04-06 01:13:14 +0200
committerMaze <mazewinther@gmail.com>2026-04-06 01:13:14 +0200
commitdedb13546a16235e7d6649961d0c9b235f62aa34 (patch)
tree08b6e14bf6b28b4c8dc8bc9f849246c75f921593 /apps/web/src/lib/animation/resolve.ts
parent099746633183cd061fc89a63aeb9fcfb909f6db2 (diff)
downloadopencut-dedb13546a16235e7d6649961d0c9b235f62aa34.tar.gz
feat: graphs popover
Diffstat (limited to 'apps/web/src/lib/animation/resolve.ts')
-rw-r--r--apps/web/src/lib/animation/resolve.ts20
1 files changed, 11 insertions, 9 deletions
diff --git a/apps/web/src/lib/animation/resolve.ts b/apps/web/src/lib/animation/resolve.ts
index 3de97026..67f4a487 100644
--- a/apps/web/src/lib/animation/resolve.ts
+++ b/apps/web/src/lib/animation/resolve.ts
@@ -1,5 +1,9 @@
import type {
+ AnimationColorPropertyPath,
+ AnimationNumericPropertyPath,
+ AnimationPath,
AnimationPropertyPath,
+ AnimationValueForPath,
ElementAnimations,
} from "@/lib/animation/types";
import type { Transform } from "@/lib/rendering";
@@ -96,7 +100,7 @@ export function resolveNumberAtTime({
}: {
baseValue: number;
animations: ElementAnimations | undefined;
- propertyPath: AnimationPropertyPath;
+ propertyPath: AnimationNumericPropertyPath;
localTime: number;
}): number {
return resolveAnimationPathValueAtTime({
@@ -115,7 +119,7 @@ export function resolveColorAtTime({
}: {
baseColor: string;
animations: ElementAnimations | undefined;
- propertyPath: AnimationPropertyPath;
+ propertyPath: AnimationColorPropertyPath;
localTime: number;
}): string {
return resolveAnimationPathValueAtTime({
@@ -126,19 +130,17 @@ export function resolveColorAtTime({
});
}
-export function resolveAnimationPathValueAtTime<
- T extends number | string | boolean | Transform["position"],
->({
+export function resolveAnimationPathValueAtTime<TPath extends AnimationPath>({
animations,
propertyPath,
localTime,
fallbackValue,
}: {
animations: ElementAnimations | undefined;
- propertyPath: string;
+ propertyPath: TPath;
localTime: number;
- fallbackValue: T;
-}): T {
+ fallbackValue: AnimationValueForPath<TPath>;
+}): AnimationValueForPath<TPath> {
const binding = animations?.bindings[propertyPath];
if (!binding) {
return fallbackValue;
@@ -170,5 +172,5 @@ export function resolveAnimationPathValueAtTime<
return (composeAnimationValue({
binding,
componentValues,
- }) ?? fallbackValue) as T;
+ }) ?? fallbackValue) as AnimationValueForPath<TPath>;
}