@twick/video-editor 0.15.27 → 0.15.29

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.
@@ -2,7 +2,7 @@ import { Track, TrackElement, Size, ChapterMarker } from '@twick/timeline';
2
2
  import { ElementColors } from '../../helpers/types';
3
3
  import { DropTarget } from '../../utils/drop-target';
4
4
 
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
+ declare function TimelineView({ zoomLevel, selectedItem, duration, tracks, seekTrack, onAddTrack, onReorder, onItemSelect, onEmptyClick, onMarqueeSelect, onElementDrag, onElementDrop, onSeek, elementColors, selectedIds, playheadPositionPx, isPlayheadActive, onDropOnTimeline, videoResolution, enableDropOnTimeline, chapters, currentTime, onContextMenuTarget, onDeleteElement, onSplitElement, }: {
6
6
  zoomLevel: number;
7
7
  duration: number;
8
8
  tracks: Track[];
@@ -50,5 +50,10 @@ declare function TimelineView({ zoomLevel, selectedItem, duration, tracks, seekT
50
50
  /** Whether to enable drop-on-timeline */
51
51
  enableDropOnTimeline?: boolean;
52
52
  chapters?: ChapterMarker[];
53
+ /** Playhead time for clip context menu “split at playhead” */
54
+ currentTime?: number;
55
+ onContextMenuTarget?: (element: TrackElement) => void;
56
+ onDeleteElement?: (element: TrackElement) => void;
57
+ onSplitElement?: (element: TrackElement, splitTime: number) => void;
53
58
  }): import("react/jsx-runtime").JSX.Element;
54
59
  export default TimelineView;
@@ -0,0 +1,6 @@
1
+ export declare const AudioWaveform: React.FC<{
2
+ src?: string;
3
+ widthPx: number;
4
+ heightPx: number;
5
+ label?: string;
6
+ }>;
@@ -0,0 +1,14 @@
1
+ export declare const ImageTimelineStrip: React.FC<{
2
+ src: string;
3
+ widthPx: number;
4
+ heightPx: number;
5
+ }>;
6
+ export declare const VideoTimelineStrip: React.FC<{
7
+ src: string;
8
+ widthPx: number;
9
+ heightPx: number;
10
+ durationSec: number;
11
+ mediaOffsetSec?: number;
12
+ playbackRate?: number;
13
+ mediaDurationSec?: number;
14
+ }>;
@@ -14,6 +14,10 @@ interface TrackBaseProps {
14
14
  onDrag: (payload: TrackElementDragPayload, dropPointer?: DropPointer) => void;
15
15
  onDragStateChange?: (isDragging: boolean, element?: TrackElement) => void;
16
16
  elementColors?: ElementColors;
17
+ currentTime?: number;
18
+ onContextMenuTarget?: (element: TrackElement) => void;
19
+ onDeleteElement?: (element: TrackElement) => void;
20
+ onSplitElement?: (element: TrackElement, splitTime: number) => void;
17
21
  }
18
- declare const TrackBase: ({ duration, zoom, track, trackWidth, selectedItem, selectedIds, onItemSelection, onDrag, allowOverlap, onDragStateChange, elementColors, }: TrackBaseProps) => import("react/jsx-runtime").JSX.Element;
22
+ declare const TrackBase: ({ duration, zoom, track, trackWidth, selectedItem, selectedIds, onItemSelection, onDrag, allowOverlap, onDragStateChange, elementColors, currentTime, onContextMenuTarget, onDeleteElement, onSplitElement, }: TrackBaseProps) => import("react/jsx-runtime").JSX.Element;
19
23
  export default TrackBase;
@@ -0,0 +1,16 @@
1
+ import { default as React } from 'react';
2
+
3
+ export interface TrackElementContextMenuProps {
4
+ x: number;
5
+ y: number;
6
+ canSplit: boolean;
7
+ onSplit: () => void;
8
+ onDelete: () => void;
9
+ onClose: () => void;
10
+ }
11
+ /**
12
+ * Timeline clip context menu: split at playhead, delete.
13
+ * Uses the same styles as the canvas context menu; portals to document.body
14
+ * so it is not clipped by timeline overflow or motion transforms.
15
+ */
16
+ export declare const TrackElementContextMenu: React.FC<TrackElementContextMenuProps>;
@@ -26,5 +26,11 @@ export declare const TrackElementView: React.FC<{
26
26
  onDrag: (payload: TrackElementDragPayload, dropPointer?: DropPointer) => void;
27
27
  onDragStateChange?: (isDragging: boolean, element?: TrackElement) => void;
28
28
  elementColors?: ElementColors;
29
+ /** Playhead time (seconds); used for “Split at playhead” */
30
+ currentTime?: number;
31
+ /** Selects this element when opening the context menu */
32
+ onContextMenuTarget?: (element: TrackElement) => void;
33
+ onDeleteElement?: (element: TrackElement) => void;
34
+ onSplitElement?: (element: TrackElement, splitTime: number) => void;
29
35
  }>;
30
36
  export default TrackElementView;
@@ -135,6 +135,7 @@ export interface ElementColors {
135
135
  text: string;
136
136
  caption: string;
137
137
  icon: string;
138
+ emoji: string;
138
139
  circle: string;
139
140
  rect: string;
140
141
  element: string;
@@ -12,12 +12,13 @@ interface UseMarqueeSelectionOptions {
12
12
  labelWidth: number;
13
13
  trackCount: number;
14
14
  trackHeight: number;
15
+ separatorHeight?: number;
15
16
  tracks: Track[];
16
17
  containerRef: React.RefObject<HTMLDivElement | null>;
17
18
  onMarqueeSelect: (ids: Set<string>) => void;
18
19
  onEmptyClick: () => void;
19
20
  }
20
- export declare function useMarqueeSelection({ duration, zoomLevel, labelWidth, trackCount, trackHeight, tracks, containerRef, onMarqueeSelect, onEmptyClick, }: UseMarqueeSelectionOptions): {
21
+ export declare function useMarqueeSelection({ duration, zoomLevel, labelWidth, trackCount, trackHeight, separatorHeight, tracks, containerRef, onMarqueeSelect, onEmptyClick, }: UseMarqueeSelectionOptions): {
21
22
  marquee: MarqueeRect | null;
22
23
  handleMouseDown: (e: React.MouseEvent<HTMLDivElement>) => void;
23
24
  };
@@ -11,7 +11,7 @@ export interface DropPreview {
11
11
  * Hook for handling file drops on the timeline.
12
12
  * Computes drop position from coordinates and provides handlers for drag/drop.
13
13
  */
14
- export declare function useTimelineDrop({ containerRef, scrollContainerRef, tracks, duration, zoomLevel, labelWidth, trackHeight,
14
+ export declare function useTimelineDrop({ containerRef, scrollContainerRef, tracks, duration, zoomLevel, labelWidth, trackHeight, separatorHeight,
15
15
  /** Width of the track content area (timeline minus labels). Used for accurate time mapping. */
16
16
  trackContentWidth, onDrop, enabled, }: {
17
17
  containerRef: React.RefObject<HTMLElement | null>;
@@ -22,6 +22,7 @@ trackContentWidth, onDrop, enabled, }: {
22
22
  zoomLevel: number;
23
23
  labelWidth: number;
24
24
  trackHeight: number;
25
+ separatorHeight?: number;
25
26
  trackContentWidth?: number;
26
27
  onDrop: (params: {
27
28
  track: Track | null;