summaryrefslogtreecommitdiff
path: root/apps/web/src/lib/animation/graph-channels.ts
diff options
context:
space:
mode:
authorMaze Winther <mazewinther@gmail.com>2026-04-20 11:31:17 +0200
committerMaze Winther <mazewinther@gmail.com>2026-04-20 11:31:17 +0200
commit3e89d2998588f8e35c524e523ba2ee853f0f6475 (patch)
tree57221f96c1259b3b07e3ddf8c1adefc502b9d8eb /apps/web/src/lib/animation/graph-channels.ts
parent729d10592f4e802f91c555c309ff3ba4b119f843 (diff)
downloadopencut-3e89d2998588f8e35c524e523ba2ee853f0f6475.tar.gz
refactor: restructure files to their domains, new preview overlay system, and dep graph
Diffstat (limited to 'apps/web/src/lib/animation/graph-channels.ts')
-rw-r--r--apps/web/src/lib/animation/graph-channels.ts99
1 files changed, 0 insertions, 99 deletions
diff --git a/apps/web/src/lib/animation/graph-channels.ts b/apps/web/src/lib/animation/graph-channels.ts
deleted file mode 100644
index 19d53e27..00000000
--- a/apps/web/src/lib/animation/graph-channels.ts
+++ /dev/null
@@ -1,99 +0,0 @@
-import type {
- AnimationBindingInstance,
- AnimationPath,
- ElementAnimations,
- ScalarAnimationChannel,
- ScalarGraphChannel,
- ScalarGraphKeyframeContext,
-} from "@/lib/animation/types";
-
-export interface EditableScalarChannels {
- binding: AnimationBindingInstance;
- channels: ScalarGraphChannel[];
-}
-
-function isScalarAnimationChannel(
- channel: ElementAnimations["channels"][string],
-): channel is ScalarAnimationChannel {
- return channel?.kind === "scalar";
-}
-
-export function getEditableScalarChannels({
- animations,
- propertyPath,
-}: {
- animations: ElementAnimations | undefined;
- propertyPath: AnimationPath;
-}): EditableScalarChannels | null {
- const binding = animations?.bindings[propertyPath];
- if (!binding) {
- return null;
- }
-
- const channels = binding.components.flatMap((component) => {
- const channel = animations?.channels[component.channelId];
- if (!isScalarAnimationChannel(channel)) {
- return [];
- }
-
- return [
- {
- propertyPath,
- componentKey: component.key,
- channelId: component.channelId,
- channel,
- } satisfies ScalarGraphChannel,
- ];
- });
-
- return { binding, channels };
-}
-
-export function getEditableScalarChannel({
- animations,
- propertyPath,
- componentKey,
-}: {
- animations: ElementAnimations | undefined;
- propertyPath: AnimationPath;
- componentKey: string;
-}): ScalarGraphChannel | null {
- const result = getEditableScalarChannels({ animations, propertyPath });
- return result?.channels.find((channel) => channel.componentKey === componentKey) ?? null;
-}
-
-export function getScalarKeyframeContext({
- animations,
- propertyPath,
- componentKey,
- keyframeId,
-}: {
- animations: ElementAnimations | undefined;
- propertyPath: AnimationPath;
- componentKey: string;
- keyframeId: string;
-}): ScalarGraphKeyframeContext | null {
- const scalarChannel = getEditableScalarChannel({
- animations,
- propertyPath,
- componentKey,
- });
- if (!scalarChannel) {
- return null;
- }
-
- const keyframeIndex = scalarChannel.channel.keys.findIndex(
- (keyframe) => keyframe.id === keyframeId,
- );
- if (keyframeIndex < 0) {
- return null;
- }
-
- return {
- ...scalarChannel,
- keyframe: scalarChannel.channel.keys[keyframeIndex],
- keyframeIndex,
- previousKey: scalarChannel.channel.keys[keyframeIndex - 1] ?? null,
- nextKey: scalarChannel.channel.keys[keyframeIndex + 1] ?? null,
- };
-}