@twick/video-editor 0.15.19 → 0.15.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,7 +1,8 @@
1
- import { Track, TrackElement, Size } from '@twick/timeline';
1
+ import { Track, TrackElement, Size, ChapterMarker } from '@twick/timeline';
2
2
  import { ElementColors } from '../../helpers/types';
3
+ import { DropTarget } from '../../utils/drop-target';
3
4
 
4
- declare function TimelineView({ zoomLevel, selectedItem, duration, tracks, seekTrack, onAddTrack, onReorder, onItemSelect, onEmptyClick, onMarqueeSelect, onElementDrag, elementColors, selectedIds, playheadPositionPx, isPlayheadActive, onDropOnTimeline, videoResolution, enableDropOnTimeline, }: {
5
+ declare function TimelineView({ zoomLevel, selectedItem, duration, tracks, seekTrack, onAddTrack, onReorder, onItemSelect, onEmptyClick, onMarqueeSelect, onElementDrag, onElementDrop, onSeek, elementColors, selectedIds, playheadPositionPx, isPlayheadActive, onDropOnTimeline, videoResolution, enableDropOnTimeline, chapters, }: {
5
6
  zoomLevel: number;
6
7
  duration: number;
7
8
  tracks: Track[];
@@ -9,7 +10,7 @@ declare function TimelineView({ zoomLevel, selectedItem, duration, tracks, seekT
9
10
  seekTrack?: React.ReactNode;
10
11
  onAddTrack: () => void;
11
12
  onReorder: (tracks: Track[]) => void;
12
- onElementDrag: ({ element, dragType, updates, }: {
13
+ onElementDrag: (params: {
13
14
  element: TrackElement;
14
15
  dragType: string;
15
16
  updates: {
@@ -17,6 +18,15 @@ declare function TimelineView({ zoomLevel, selectedItem, duration, tracks, seekT
17
18
  end: number;
18
19
  };
19
20
  }) => void;
21
+ onElementDrop?: (params: {
22
+ element: TrackElement;
23
+ dragType: string;
24
+ updates: {
25
+ start: number;
26
+ end: number;
27
+ };
28
+ dropTarget: DropTarget | null;
29
+ }) => Promise<void>;
20
30
  onSeek: (time: number) => void;
21
31
  onItemSelect: (item: Track | TrackElement, event: React.MouseEvent) => void;
22
32
  onEmptyClick: () => void;
@@ -39,5 +49,6 @@ declare function TimelineView({ zoomLevel, selectedItem, duration, tracks, seekT
39
49
  videoResolution?: Size;
40
50
  /** Whether to enable drop-on-timeline */
41
51
  enableDropOnTimeline?: boolean;
52
+ chapters?: ChapterMarker[];
42
53
  }): import("react/jsx-runtime").JSX.Element;
43
54
  export default TimelineView;
@@ -1,5 +1,6 @@
1
1
  import { Track, TrackElement } from '@twick/timeline';
2
2
  import { ElementColors } from '../../helpers/types';
3
+ import { TrackElementDragPayload, DropPointer } from './track-element';
3
4
 
4
5
  interface TrackBaseProps {
5
6
  duration: number;
@@ -10,15 +11,9 @@ interface TrackBaseProps {
10
11
  selectedIds: Set<string>;
11
12
  allowOverlap?: boolean;
12
13
  onItemSelection: (element: TrackElement, event: React.MouseEvent) => void;
13
- onDrag: ({ element, dragType, updates, }: {
14
- element: TrackElement;
15
- dragType: string;
16
- updates: {
17
- start: number;
18
- end: number;
19
- };
20
- }) => void;
14
+ onDrag: (payload: TrackElementDragPayload, dropPointer?: DropPointer) => void;
15
+ onDragStateChange?: (isDragging: boolean, element?: TrackElement) => void;
21
16
  elementColors?: ElementColors;
22
17
  }
23
- declare const TrackBase: ({ duration, zoom, track, trackWidth, selectedItem, selectedIds, onItemSelection, onDrag, allowOverlap, elementColors, }: TrackBaseProps) => import("react/jsx-runtime").JSX.Element;
18
+ declare const TrackBase: ({ duration, zoom, track, trackWidth, selectedItem, selectedIds, onItemSelection, onDrag, allowOverlap, onDragStateChange, elementColors, }: TrackBaseProps) => import("react/jsx-runtime").JSX.Element;
24
19
  export default TrackBase;
@@ -1,6 +1,18 @@
1
1
  import { TrackElement } from '@twick/timeline';
2
2
  import { ElementColors } from '../../helpers/types';
3
3
 
4
+ export interface TrackElementDragPayload {
5
+ element: TrackElement;
6
+ dragType: string;
7
+ updates: {
8
+ start: number;
9
+ end: number;
10
+ };
11
+ }
12
+ export interface DropPointer {
13
+ clientX: number;
14
+ clientY: number;
15
+ }
4
16
  export declare const TrackElementView: React.FC<{
5
17
  element: TrackElement;
6
18
  selectedItem: TrackElement | null;
@@ -11,14 +23,8 @@ export declare const TrackElementView: React.FC<{
11
23
  prevEnd: number;
12
24
  allowOverlap: boolean;
13
25
  onSelection: (element: TrackElement, event: React.MouseEvent) => void;
14
- onDrag: ({ element, dragType, updates, }: {
15
- element: TrackElement;
16
- dragType: string;
17
- updates: {
18
- start: number;
19
- end: number;
20
- };
21
- }) => void;
26
+ onDrag: (payload: TrackElementDragPayload, dropPointer?: DropPointer) => void;
27
+ onDragStateChange?: (isDragging: boolean, element?: TrackElement) => void;
22
28
  elementColors?: ElementColors;
23
29
  }>;
24
30
  export default TrackElementView;
@@ -66,6 +66,7 @@ export interface ElementColors {
66
66
  filters: string;
67
67
  transition: string;
68
68
  animation: string;
69
+ effect?: string;
69
70
  }
70
71
  /**
71
72
  * Canvas behavior options for TwickEditor / TwickStudio.
@@ -0,0 +1,12 @@
1
+ export interface UseEdgeAutoScrollParams {
2
+ isActive: boolean;
3
+ getMouseClientX: () => number;
4
+ scrollContainerRef: React.RefObject<HTMLDivElement | null>;
5
+ contentWidth: number;
6
+ edgeThreshold?: number;
7
+ maxScrollSpeed?: number;
8
+ }
9
+ /**
10
+ * Auto-scrolls the timeline horizontally when the pointer is near the left/right edge during drag (OpenVideo-style).
11
+ */
12
+ export declare function useEdgeAutoScroll({ isActive, getMouseClientX, scrollContainerRef, contentWidth, edgeThreshold, maxScrollSpeed, }: UseEdgeAutoScrollParams): void;
@@ -30,6 +30,7 @@ export declare const usePlayerManager: ({ videoProps, canvasConfig, }: {
30
30
  updateCanvas: (seekTime: number, forceRefresh?: boolean) => void;
31
31
  buildCanvas: any;
32
32
  resizeCanvas: any;
33
+ setBackgroundColor: any;
33
34
  onPlayerUpdate: (event: CustomEvent) => void;
34
35
  playerUpdating: boolean;
35
36
  handleDropOnCanvas: (payload: CanvasDropPayload) => Promise<void>;
@@ -1,19 +1,31 @@
1
- import { TrackElement, Track } from '@twick/timeline';
1
+ import { TrackElement, Track, ProjectMetadata } from '@twick/timeline';
2
+ import { DropTarget } from '../utils/drop-target';
2
3
 
4
+ export interface ElementDropParams {
5
+ element: TrackElement;
6
+ dragType: string;
7
+ updates: {
8
+ start: number;
9
+ end: number;
10
+ };
11
+ dropTarget: DropTarget | null;
12
+ }
3
13
  interface TimelineManagerReturn {
4
14
  timelineData: {
5
15
  tracks: Track[];
6
16
  version: number;
17
+ metadata?: ProjectMetadata;
7
18
  } | null;
8
19
  onAddTrack: () => void;
9
- onElementDrag: ({ element, dragType, updates, }: {
20
+ onElementDrag: (params: {
21
+ element: TrackElement;
22
+ dragType: string;
10
23
  updates: {
11
24
  start: number;
12
25
  end: number;
13
26
  };
14
- element: TrackElement;
15
- dragType: string;
16
27
  }) => void;
28
+ onElementDrop: (params: ElementDropParams) => Promise<void>;
17
29
  onReorder: (reorderedItems: Track[]) => void;
18
30
  onSeek: (time: number) => void;
19
31
  onSelectionChange: (selectedItem: TrackElement | Track | null) => void;