+
{
00:{length < 10 ? "0" + length.toString() : length.toString()}
{
{
/>
+
setDialogOpen(false)}
+ onOk={() => {
+ onDelete();
+ setDialogOpen(false);
+ }}
+ okText="Delete"
+ okColor="bg-brand-primary"
+ onCancel={() => setDialogOpen(false)}
+ />
>
);
};
diff --git a/app/pages/PageEnigma/comps/Timeline/Track.tsx b/app/pages/PageEnigma/comps/Timeline/Track.tsx
index eea8a20506..5290d67c7a 100644
--- a/app/pages/PageEnigma/comps/Timeline/Track.tsx
+++ b/app/pages/PageEnigma/comps/Timeline/Track.tsx
@@ -1,11 +1,12 @@
import { TrackClip } from "~/pages/PageEnigma/comps/Timeline/TrackClip";
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
import { faVolume, faVolumeSlash } from "@fortawesome/pro-solid-svg-icons";
-import { BaseClip } from "~/models/track";
-import { useContext } from "react";
-import { TrackContext } from "~/contexts/TrackContext/TrackContext";
+import { BaseClip } from "~/pages/PageEnigma/models/track";
+import { PointerEvent, useContext } from "react";
+import { TrackContext } from "~/pages/PageEnigma/contexts/TrackContext/TrackContext";
interface Props {
+ id: string;
clips: BaseClip[];
title: string;
style: "character" | "audio" | "camera" | "objects";
@@ -16,6 +17,7 @@ interface Props {
}
export const Track = ({
+ id,
clips,
toggleMute,
updateClip,
@@ -24,7 +26,8 @@ export const Track = ({
style,
type,
}: Props) => {
- const { length, setCanDrop, dragType } = useContext(TrackContext);
+ const { length, scale, setCanDrop, dragType, setDropId, setDropOffset } =
+ useContext(TrackContext);
const trackType = type ?? style;
function onPointerOver() {
@@ -32,6 +35,19 @@ export const Track = ({
return;
}
setCanDrop(true);
+ setDropId(id);
+ }
+
+ function onPointerMove(event: PointerEvent) {
+ if (dragType !== trackType) {
+ return;
+ }
+ const track = document.getElementById(`track-${trackType}-${id}`);
+ if (!track) {
+ return;
+ }
+ const position = track.getBoundingClientRect();
+ setDropOffset((event.clientX - position.x) / 4 / scale);
}
function onPointerLeave() {
if (dragType !== trackType) {
@@ -43,9 +59,11 @@ export const Track = ({
return (
{clips.map((clip, index) => (
{!!toggleMute && (