summaryrefslogtreecommitdiff
path: root/apps/web/src/components
diff options
context:
space:
mode:
authorMaze Winther <mazewinther@gmail.com>2025-08-28 22:37:51 +0200
committerMaze Winther <mazewinther@gmail.com>2025-08-28 22:37:51 +0200
commita7d90f7eac90966920c750134d7de9b611b2c38f (patch)
treedb8a33eb12c6294cc0000caf05c600fe3c33069e /apps/web/src/components
parent70a9bfebb196d5c0bde35ce0a165b696bb9ae1d0 (diff)
downloadopencut-a7d90f7eac90966920c750134d7de9b611b2c38f.tar.gz
feat: copy/pasting for elements
Diffstat (limited to 'apps/web/src/components')
-rw-r--r--apps/web/src/components/editor/timeline/timeline-element.tsx10
1 files changed, 10 insertions, 0 deletions
diff --git a/apps/web/src/components/editor/timeline/timeline-element.tsx b/apps/web/src/components/editor/timeline/timeline-element.tsx
index 300c4c7b..677b9c61 100644
--- a/apps/web/src/components/editor/timeline/timeline-element.tsx
+++ b/apps/web/src/components/editor/timeline/timeline-element.tsx
@@ -51,6 +51,7 @@ export function TimelineElement({
rippleEditingEnabled,
toggleElementHidden,
toggleElementMuted,
+ copySelected,
} = useTimelineStore();
const { currentTime } = usePlaybackStore();
@@ -116,6 +117,11 @@ export function TimelineElement({
});
};
+ const handleElementCopyContext = (e: React.MouseEvent) => {
+ e.stopPropagation();
+ copySelected();
+ };
+
const handleElementDeleteContext = (e: React.MouseEvent) => {
e.stopPropagation();
if (rippleEditingEnabled) {
@@ -330,6 +336,10 @@ export function TimelineElement({
<Scissors className="h-4 w-4 mr-2" />
Split at playhead
</ContextMenuItem>
+ <ContextMenuItem onClick={handleElementCopyContext}>
+ <Copy className="h-4 w-4 mr-2" />
+ Copy element
+ </ContextMenuItem>
<ContextMenuItem onClick={handleToggleElementContext}>
{hasAudio ? (
isMuted ? (