@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.
- package/dist/components/timeline/timeline-view.d.ts +6 -1
- package/dist/components/track/audio-waveform.d.ts +6 -0
- package/dist/components/track/timeline-media-strip.d.ts +14 -0
- package/dist/components/track/track-base.d.ts +5 -1
- package/dist/components/track/track-element-context-menu.d.ts +16 -0
- package/dist/components/track/track-element.d.ts +6 -0
- package/dist/helpers/types.d.ts +1 -0
- package/dist/hooks/use-marquee-selection.d.ts +2 -1
- package/dist/hooks/use-timeline-drop.d.ts +2 -1
- package/dist/index.js +1369 -180
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1370 -181
- package/dist/index.mjs.map +1 -1
- package/dist/video-editor.css +67 -2
- package/package.json +5 -5
|
@@ -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,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;
|
package/dist/helpers/types.d.ts
CHANGED
|
@@ -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;
|