From cb2a7484ed3c6797a33acc2d4ab21130f8f00008 Mon Sep 17 00:00:00 2001 From: Maze Winther Date: Sun, 22 Jun 2025 14:50:22 +0200 Subject: add drag and drop to the timeline --- apps/web/src/components/editor/media-panel.tsx | 59 ++++++-------------------- 1 file changed, 12 insertions(+), 47 deletions(-) (limited to 'apps/web/src/components/editor/media-panel.tsx') diff --git a/apps/web/src/components/editor/media-panel.tsx b/apps/web/src/components/editor/media-panel.tsx index 1e5aa465..565a4e7d 100644 --- a/apps/web/src/components/editor/media-panel.tsx +++ b/apps/web/src/components/editor/media-panel.tsx @@ -2,14 +2,20 @@ import { Button } from "../ui/button"; import { AspectRatio } from "../ui/aspect-ratio"; +import { DragOverlay } from "../ui/drag-overlay"; import { useMediaStore } from "@/stores/media-store"; -import { Plus, Image, Video, Music, Upload } from "lucide-react"; -import { useState, useRef } from "react"; +import { Plus, Image, Video, Music } from "lucide-react"; +import { useDragDrop } from "@/hooks/use-drag-drop"; export function MediaPanel() { const { mediaItems, addMediaItem } = useMediaStore(); - const [isDragOver, setIsDragOver] = useState(false); - const dragCounterRef = useRef(0); + + const { isDragOver, dragProps } = useDragDrop({ + onDrop: (files) => { + // TODO: Handle file drop functionality + console.log("Files dropped on media panel:", files); + }, + }); const handleAddSampleMedia = () => { // Just for testing - add a sample media item @@ -30,55 +36,14 @@ export function MediaPanel() { } }; - const handleDragEnter = (e: React.DragEvent) => { - e.preventDefault(); - dragCounterRef.current += 1; - if (!isDragOver) { - setIsDragOver(true); - } - }; - - const handleDragOver = (e: React.DragEvent) => { - e.preventDefault(); - }; - - const handleDragLeave = (e: React.DragEvent) => { - e.preventDefault(); - dragCounterRef.current -= 1; - if (dragCounterRef.current === 0) { - setIsDragOver(false); - } - }; - - const handleDrop = (e: React.DragEvent) => { - e.preventDefault(); - setIsDragOver(false); - dragCounterRef.current = 0; - // TODO: Handle file drop functionality - }; - return (
- {/* Drag Overlay */} - {isDragOver && ( -
-
- -

Drop files here

-

- Images, videos, and audio files -

-
-
- )} +
{/* Media Grid */} -- cgit v1.3.1