summaryrefslogtreecommitdiff
path: root/apps/web/src/timeline/creation.ts
diff options
context:
space:
mode:
Diffstat (limited to 'apps/web/src/timeline/creation.ts')
-rw-r--r--apps/web/src/timeline/creation.ts17
1 files changed, 17 insertions, 0 deletions
diff --git a/apps/web/src/timeline/creation.ts b/apps/web/src/timeline/creation.ts
index 2ac7f246..2dec3186 100644
--- a/apps/web/src/timeline/creation.ts
+++ b/apps/web/src/timeline/creation.ts
@@ -1,3 +1,20 @@
import { TICKS_PER_SECOND } from "@/wasm/ticks";
export const DEFAULT_NEW_ELEMENT_DURATION = 5 * TICKS_PER_SECOND;
+
+/**
+ * Resolves the duration in ticks that a newly created timeline element
+ * should have, given an optional source duration in seconds.
+ *
+ * Falls back to {@link DEFAULT_NEW_ELEMENT_DURATION} when the source has
+ * no known duration (e.g. stickers, graphics, text, or media whose
+ * probe failed).
+ */
+export function toElementDurationTicks({
+ seconds,
+}: {
+ seconds: number | null | undefined;
+}): number {
+ if (seconds == null) return DEFAULT_NEW_ELEMENT_DURATION;
+ return Math.round(seconds * TICKS_PER_SECOND);
+}