diff --git a/apps/web/src/components/editor/timeline-element.tsx b/apps/web/src/components/editor/timeline-element.tsx
index 2a704227..5f5a2c6d 100644
--- a/apps/web/src/components/editor/timeline-element.tsx
+++ b/apps/web/src/components/editor/timeline-element.tsx
@@ -25,7 +25,6 @@ import {
getTrackElementClasses,
TIMELINE_CONSTANTS,
getTrackHeight,
- calculateMediaTiling,
} from "@/constants/timeline-constants";
import {
DropdownMenu,
@@ -270,71 +269,45 @@ export function TimelineElement({
}
if (mediaItem.type === "image") {
- // Use utility function to calculate optimal tiling
- const tiling = calculateMediaTiling(elementWidth, track.type, "image");
+ // Calculate tile size based on 16:9 aspect ratio
+ const trackHeight = getTrackHeight(track.type);
+ const tileHeight = trackHeight - 8; // Account for padding
+ const tileWidth = tileHeight * (16 / 9);
return (
-
- {Array.from({ length: tiling.totalTiles }, (_, index) => {
- const isPartialTile =
- index === tiling.numCompleteTiles && tiling.showPartialTile;
- const tileWidthToUse = isPartialTile
- ? tiling.remainingWidth
- : tiling.tileWidth;
-
- return (
-
-

-
- );
- })}
-
+
{/* Show name overlay on the right if there's sufficient space */}
- {tiling.canShowOverlay && (
+ {elementWidth > tileWidth * 1.5 && (
{element.name}
diff --git a/apps/web/src/constants/timeline-constants.ts b/apps/web/src/constants/timeline-constants.ts
index 44773b84..92045c5e 100644
--- a/apps/web/src/constants/timeline-constants.ts
+++ b/apps/web/src/constants/timeline-constants.ts
@@ -104,54 +104,3 @@ export function snapTimeToFrame(time: number, fps: number): number {
export function getFrameDuration(fps: number): number {
return 1 / fps;
}
-
-// Media thumbnail tiling constants
-export const MEDIA_THUMBNAIL_CONSTANTS = {
- DEFAULT_ASPECT_RATIO: 16 / 9,
- IMAGE_PADDING: 8,
- VIDEO_PADDING: 16,
- PARTIAL_TILE_THRESHOLD_IMAGE: 0.2, // Show partial tile if >20% visible for images
- PARTIAL_TILE_THRESHOLD_VIDEO: 0.3, // Show partial tile if >30% visible for videos
- MIN_OVERLAY_WIDTH_RATIO: 1.5, // Minimum width ratio to show name overlay
-} as const;
-
-// Utility function to calculate media thumbnail tiling
-export function calculateMediaTiling(
- elementWidth: number,
- trackType: TrackType,
- mediaType: "image" | "video"
-) {
- const trackHeight = getTrackHeight(trackType);
- const aspectRatio = MEDIA_THUMBNAIL_CONSTANTS.DEFAULT_ASPECT_RATIO;
- const padding =
- mediaType === "image"
- ? MEDIA_THUMBNAIL_CONSTANTS.IMAGE_PADDING
- : MEDIA_THUMBNAIL_CONSTANTS.VIDEO_PADDING;
-
- const tileHeight = trackHeight - padding;
- const tileWidth = tileHeight * aspectRatio;
-
- // Calculate how many complete tiles we can fit
- const numCompleteTiles = Math.floor(elementWidth / tileWidth);
- const remainingWidth = elementWidth - numCompleteTiles * tileWidth;
-
- const threshold =
- mediaType === "image"
- ? MEDIA_THUMBNAIL_CONSTANTS.PARTIAL_TILE_THRESHOLD_IMAGE
- : MEDIA_THUMBNAIL_CONSTANTS.PARTIAL_TILE_THRESHOLD_VIDEO;
-
- const showPartialTile = remainingWidth > tileWidth * threshold;
- const totalTiles = numCompleteTiles + (showPartialTile ? 1 : 0);
-
- return {
- tileWidth,
- tileHeight,
- numCompleteTiles,
- remainingWidth,
- showPartialTile,
- totalTiles: Math.max(1, totalTiles), // Always show at least one tile
- canShowOverlay:
- elementWidth >
- tileWidth * MEDIA_THUMBNAIL_CONSTANTS.MIN_OVERLAY_WIDTH_RATIO,
- };
-}