@shotstack/shotstack-studio 1.4.1 → 1.5.1
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/index.d.ts +499 -0
- package/dist/shotstack-studio.es.js +4410 -1441
- package/dist/shotstack-studio.umd.js +8 -8
- package/package.json +2 -1
- package/readme.md +155 -12
package/dist/index.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { Container } from 'pixi.js';
|
|
1
2
|
import * as pixi from 'pixi.js';
|
|
2
3
|
import { z } from 'zod';
|
|
3
4
|
import * as zod from 'zod';
|
|
@@ -45,6 +46,7 @@ export declare class Canvas {
|
|
|
45
46
|
private readonly inspector;
|
|
46
47
|
private container?;
|
|
47
48
|
private background?;
|
|
49
|
+
private timeline?;
|
|
48
50
|
private minZoom;
|
|
49
51
|
private maxZoom;
|
|
50
52
|
private currentZoom;
|
|
@@ -54,14 +56,30 @@ export declare class Canvas {
|
|
|
54
56
|
centerEdit(): void;
|
|
55
57
|
zoomToFit(): void;
|
|
56
58
|
setZoom(zoom: number): void;
|
|
59
|
+
registerTimeline(timeline: Timeline): void;
|
|
57
60
|
private registerExtensions;
|
|
58
61
|
private configureApplication;
|
|
59
62
|
private onTick;
|
|
60
63
|
private configureStage;
|
|
61
64
|
private onClick;
|
|
65
|
+
private onBackgroundClick;
|
|
62
66
|
dispose(): void;
|
|
63
67
|
}
|
|
64
68
|
|
|
69
|
+
declare type Clip = zod.infer<typeof ClipSchema>;
|
|
70
|
+
|
|
71
|
+
declare type ClipConfig = z.infer<typeof ClipSchema>;
|
|
72
|
+
|
|
73
|
+
declare interface ClipInfo {
|
|
74
|
+
trackIndex: number;
|
|
75
|
+
clipIndex: number;
|
|
76
|
+
clipConfig: ClipConfig;
|
|
77
|
+
x: number;
|
|
78
|
+
y: number;
|
|
79
|
+
width: number;
|
|
80
|
+
height: number;
|
|
81
|
+
}
|
|
82
|
+
|
|
65
83
|
declare const ClipSchema: zod.ZodObject<{
|
|
66
84
|
asset: zod.ZodEffects<zod.ZodUnion<[zod.ZodObject<{
|
|
67
85
|
type: zod.ZodLiteral<"text">;
|
|
@@ -1241,6 +1259,34 @@ declare const ClipSchema: zod.ZodObject<{
|
|
|
1241
1259
|
|
|
1242
1260
|
declare type ClipType = z.infer<typeof ClipSchema>;
|
|
1243
1261
|
|
|
1262
|
+
declare type ClipType_2 = z.infer<typeof ClipSchema>;
|
|
1263
|
+
|
|
1264
|
+
declare type CommandContext = {
|
|
1265
|
+
getClips(): Player[];
|
|
1266
|
+
getTracks(): Player[][];
|
|
1267
|
+
getTrack(trackIndex: number): Player[] | null;
|
|
1268
|
+
getContainer(): Container;
|
|
1269
|
+
addPlayer(trackIdx: number, player: Player): Promise<void>;
|
|
1270
|
+
addPlayerToContainer(trackIdx: number, player: Player): void;
|
|
1271
|
+
createPlayerFromAssetType(clipConfiguration: ClipType_2): Player;
|
|
1272
|
+
queueDisposeClip(player: Player): void;
|
|
1273
|
+
disposeClips(): void;
|
|
1274
|
+
undeleteClip(trackIdx: number, clip: Player): void;
|
|
1275
|
+
setUpdatedClip(clip: Player): void;
|
|
1276
|
+
restoreClipConfiguration(clip: Player, previousConfig: ClipType_2): void;
|
|
1277
|
+
updateDuration(): void;
|
|
1278
|
+
emitEvent(name: string, data: unknown): void;
|
|
1279
|
+
findClipIndices(player: Player): {
|
|
1280
|
+
trackIndex: number;
|
|
1281
|
+
clipIndex: number;
|
|
1282
|
+
} | null;
|
|
1283
|
+
getClipAt(trackIndex: number, clipIndex: number): Player | null;
|
|
1284
|
+
getSelectedClip(): Player | null;
|
|
1285
|
+
setSelectedClip(clip: Player | null): void;
|
|
1286
|
+
movePlayerToTrackContainer(player: Player, fromTrackIdx: number, toTrackIdx: number): void;
|
|
1287
|
+
getEditState(): EditType_2;
|
|
1288
|
+
};
|
|
1289
|
+
|
|
1244
1290
|
export declare class Controls {
|
|
1245
1291
|
private edit;
|
|
1246
1292
|
private seekDistance;
|
|
@@ -1252,6 +1298,10 @@ export declare class Controls {
|
|
|
1252
1298
|
private handleKeyUp;
|
|
1253
1299
|
}
|
|
1254
1300
|
|
|
1301
|
+
declare type DeepPartial<T> = {
|
|
1302
|
+
[P in keyof T]?: T[P] extends object ? DeepPartial<T[P]> : T[P];
|
|
1303
|
+
};
|
|
1304
|
+
|
|
1255
1305
|
export declare class Edit extends Entity {
|
|
1256
1306
|
private static readonly ZIndexPadding;
|
|
1257
1307
|
assetLoader: AssetLoader;
|
|
@@ -1274,13 +1324,16 @@ export declare class Edit extends Entity {
|
|
|
1274
1324
|
getEdit(): EditType;
|
|
1275
1325
|
addClip(trackIdx: number, clip: ClipType): void;
|
|
1276
1326
|
getClip(trackIdx: number, clipIdx: number): ClipType | null;
|
|
1327
|
+
getPlayerClip(trackIdx: number, clipIdx: number): Player | null;
|
|
1277
1328
|
deleteClip(trackIdx: number, clipIdx: number): void;
|
|
1329
|
+
splitClip(trackIndex: number, clipIndex: number, splitTime: number): void;
|
|
1278
1330
|
addTrack(trackIdx: number, track: TrackType): void;
|
|
1279
1331
|
getTrack(trackIdx: number): TrackType | null;
|
|
1280
1332
|
deleteTrack(trackIdx: number): void;
|
|
1281
1333
|
getTotalDuration(): number;
|
|
1282
1334
|
undo(): void;
|
|
1283
1335
|
redo(): void;
|
|
1336
|
+
executeEditCommand(command: EditCommand): void | Promise<void>;
|
|
1284
1337
|
private executeCommand;
|
|
1285
1338
|
private createCommandContext;
|
|
1286
1339
|
private queueDisposeClip;
|
|
@@ -1289,10 +1342,34 @@ export declare class Edit extends Entity {
|
|
|
1289
1342
|
private unloadClipAssets;
|
|
1290
1343
|
protected clearClips(): void;
|
|
1291
1344
|
private updateTotalDuration;
|
|
1345
|
+
private addPlayerToContainer;
|
|
1346
|
+
private movePlayerToTrackContainer;
|
|
1292
1347
|
private createPlayerFromAssetType;
|
|
1293
1348
|
private addPlayer;
|
|
1349
|
+
selectClip(trackIndex: number, clipIndex: number): void;
|
|
1350
|
+
clearSelection(): void;
|
|
1351
|
+
isClipSelected(trackIndex: number, clipIndex: number): boolean;
|
|
1352
|
+
getSelectedClipInfo(): {
|
|
1353
|
+
trackIndex: number;
|
|
1354
|
+
clipIndex: number;
|
|
1355
|
+
player: Player;
|
|
1356
|
+
} | null;
|
|
1357
|
+
findClipIndices(player: Player): {
|
|
1358
|
+
trackIndex: number;
|
|
1359
|
+
clipIndex: number;
|
|
1360
|
+
} | null;
|
|
1361
|
+
getClipAt(trackIndex: number, clipIndex: number): Player | null;
|
|
1362
|
+
selectPlayer(player: Player): void;
|
|
1363
|
+
isPlayerSelected(player: Player): boolean;
|
|
1364
|
+
private setupIntentListeners;
|
|
1294
1365
|
}
|
|
1295
1366
|
|
|
1367
|
+
declare type EditCommand = {
|
|
1368
|
+
execute(context?: CommandContext): void | Promise<void>;
|
|
1369
|
+
undo?(context?: CommandContext): void | Promise<void>;
|
|
1370
|
+
readonly name: string;
|
|
1371
|
+
};
|
|
1372
|
+
|
|
1296
1373
|
declare const EditSchema: zod.ZodObject<{
|
|
1297
1374
|
timeline: zod.ZodObject<{
|
|
1298
1375
|
background: zod.ZodOptional<zod.ZodString>;
|
|
@@ -3494,6 +3571,10 @@ declare const EditSchema: zod.ZodObject<{
|
|
|
3494
3571
|
|
|
3495
3572
|
declare type EditType = z.infer<typeof EditSchema>;
|
|
3496
3573
|
|
|
3574
|
+
declare type EditType_2 = z.infer<typeof EditSchema>;
|
|
3575
|
+
|
|
3576
|
+
declare type EditType_3 = z.infer<typeof EditSchema>;
|
|
3577
|
+
|
|
3497
3578
|
declare abstract class Entity {
|
|
3498
3579
|
private readonly container;
|
|
3499
3580
|
constructor();
|
|
@@ -3513,11 +3594,329 @@ declare type EventPayloadMap<TPayload = any> = Record<string, TPayload>;
|
|
|
3513
3594
|
|
|
3514
3595
|
declare type Listener<TPayload = any> = (payload: TPayload) => void;
|
|
3515
3596
|
|
|
3597
|
+
/**
|
|
3598
|
+
* TODO: Move handles on UI level (screen space)
|
|
3599
|
+
* TODO: Handle overlapping frames - ex: length of a clip is 1.5s but there's an in (1s) and out (1s) transition
|
|
3600
|
+
* TODO: Scale X and Y needs to be implemented separately for getFitScale cover
|
|
3601
|
+
* TODO: Move animation effects and transitions out of player
|
|
3602
|
+
* TODO: On pointer down and custom keyframe, add a keyframe at the current time. Get current and time and push a keyframe into the state, and then reconfigure the keyframes.
|
|
3603
|
+
* TODO: Move bounding box to a separate entity
|
|
3604
|
+
*/
|
|
3605
|
+
declare abstract class Player extends Entity {
|
|
3606
|
+
private static readonly SnapThreshold;
|
|
3607
|
+
private static readonly DiscardedFrameCount;
|
|
3608
|
+
private static readonly ScaleHandleRadius;
|
|
3609
|
+
private static readonly RotationHandleRadius;
|
|
3610
|
+
private static readonly RotationHandleOffset;
|
|
3611
|
+
private static readonly OutlineWidth;
|
|
3612
|
+
private static readonly MinScale;
|
|
3613
|
+
private static readonly MaxScale;
|
|
3614
|
+
layer: number;
|
|
3615
|
+
shouldDispose: boolean;
|
|
3616
|
+
protected edit: Edit;
|
|
3617
|
+
clipConfiguration: Clip;
|
|
3618
|
+
private positionBuilder;
|
|
3619
|
+
private offsetXKeyframeBuilder?;
|
|
3620
|
+
private offsetYKeyframeBuilder?;
|
|
3621
|
+
private scaleKeyframeBuilder?;
|
|
3622
|
+
private opacityKeyframeBuilder?;
|
|
3623
|
+
private rotationKeyframeBuilder?;
|
|
3624
|
+
private outline;
|
|
3625
|
+
private topLeftScaleHandle;
|
|
3626
|
+
private topRightScaleHandle;
|
|
3627
|
+
private bottomLeftScaleHandle;
|
|
3628
|
+
private bottomRightScaleHandle;
|
|
3629
|
+
private rotationHandle;
|
|
3630
|
+
private isHovering;
|
|
3631
|
+
private isDragging;
|
|
3632
|
+
private dragOffset;
|
|
3633
|
+
private scaleDirection;
|
|
3634
|
+
private scaleStart;
|
|
3635
|
+
private scaleOffset;
|
|
3636
|
+
private isRotating;
|
|
3637
|
+
private rotationStart;
|
|
3638
|
+
private rotationOffset;
|
|
3639
|
+
private initialClipConfiguration;
|
|
3640
|
+
protected contentContainer: pixi.Container;
|
|
3641
|
+
constructor(edit: Edit, clipConfiguration: Clip);
|
|
3642
|
+
reconfigureAfterRestore(): void;
|
|
3643
|
+
protected configureKeyframes(): void;
|
|
3644
|
+
load(): Promise<void>;
|
|
3645
|
+
update(_: number, __: number): void;
|
|
3646
|
+
draw(): void;
|
|
3647
|
+
dispose(): void;
|
|
3648
|
+
getStart(): number;
|
|
3649
|
+
getLength(): number;
|
|
3650
|
+
getEnd(): number;
|
|
3651
|
+
getPlaybackTime(): number;
|
|
3652
|
+
abstract getSize(): Size;
|
|
3653
|
+
getOpacity(): number;
|
|
3654
|
+
getPosition(): Vector;
|
|
3655
|
+
getPivot(): Vector;
|
|
3656
|
+
protected getFitScale(): number;
|
|
3657
|
+
getScale(): number;
|
|
3658
|
+
protected getContainerScale(): Vector;
|
|
3659
|
+
getRotation(): number;
|
|
3660
|
+
isActive(): boolean;
|
|
3661
|
+
shouldDiscardFrame(): boolean;
|
|
3662
|
+
private onPointerStart;
|
|
3663
|
+
private onPointerMove;
|
|
3664
|
+
private onPointerUp;
|
|
3665
|
+
private onPointerOver;
|
|
3666
|
+
private onPointerOut;
|
|
3667
|
+
private clipHasPresets;
|
|
3668
|
+
private clipHasKeyframes;
|
|
3669
|
+
private hasStateChanged;
|
|
3670
|
+
}
|
|
3671
|
+
|
|
3672
|
+
declare interface SelectionBounds {
|
|
3673
|
+
x: number;
|
|
3674
|
+
y: number;
|
|
3675
|
+
width: number;
|
|
3676
|
+
height: number;
|
|
3677
|
+
cornerRadius: number;
|
|
3678
|
+
borderWidth: number;
|
|
3679
|
+
}
|
|
3680
|
+
|
|
3681
|
+
declare class SelectionOverlayRenderer {
|
|
3682
|
+
private overlay;
|
|
3683
|
+
private theme;
|
|
3684
|
+
private selectionGraphics;
|
|
3685
|
+
constructor(overlay: pixi.Container, theme: TimelineTheme);
|
|
3686
|
+
renderSelection(clipId: string, bounds: SelectionBounds, isSelected: boolean): void;
|
|
3687
|
+
clearSelection(clipId: string): void;
|
|
3688
|
+
clearAllSelections(): void;
|
|
3689
|
+
updateTheme(theme: TimelineTheme): void;
|
|
3690
|
+
getOverlay(): pixi.Container;
|
|
3691
|
+
dispose(): void;
|
|
3692
|
+
}
|
|
3693
|
+
|
|
3516
3694
|
declare type Size = {
|
|
3517
3695
|
width: number;
|
|
3518
3696
|
height: number;
|
|
3519
3697
|
};
|
|
3520
3698
|
|
|
3699
|
+
export declare class Timeline extends Entity {
|
|
3700
|
+
private edit;
|
|
3701
|
+
private currentEditType;
|
|
3702
|
+
private layout;
|
|
3703
|
+
private theme;
|
|
3704
|
+
private lastPlaybackTime;
|
|
3705
|
+
private static readonly TIMELINE_BUFFER_MULTIPLIER;
|
|
3706
|
+
private interaction;
|
|
3707
|
+
private dragPreviewManager;
|
|
3708
|
+
private viewportManager;
|
|
3709
|
+
private visualTrackManager;
|
|
3710
|
+
private eventHandler;
|
|
3711
|
+
private renderer;
|
|
3712
|
+
private featureManager;
|
|
3713
|
+
private optionsManager;
|
|
3714
|
+
constructor(edit: Edit, size: {
|
|
3715
|
+
width: number;
|
|
3716
|
+
height: number;
|
|
3717
|
+
}, themeOptions?: TimelineThemeOptions);
|
|
3718
|
+
private initializeManagers;
|
|
3719
|
+
load(): Promise<void>;
|
|
3720
|
+
private setupViewport;
|
|
3721
|
+
private setupTimelineFeatures;
|
|
3722
|
+
private recreateTimelineFeatures;
|
|
3723
|
+
setScroll(x: number, y: number): void;
|
|
3724
|
+
setZoom(zoom: number): void;
|
|
3725
|
+
getViewport(): {
|
|
3726
|
+
x: number;
|
|
3727
|
+
y: number;
|
|
3728
|
+
zoom: number;
|
|
3729
|
+
};
|
|
3730
|
+
getClipData(trackIndex: number, clipIndex: number): ClipConfig | null;
|
|
3731
|
+
getLayout(): TimelineLayout;
|
|
3732
|
+
getVisualTracks(): VisualTrack[];
|
|
3733
|
+
getEdit(): Edit;
|
|
3734
|
+
getExtendedTimelineWidth(): number;
|
|
3735
|
+
hideDragGhost(): void;
|
|
3736
|
+
showDragGhost(trackIndex: number, time: number, freeY?: number): void;
|
|
3737
|
+
setPlayheadTime(time: number): void;
|
|
3738
|
+
getPlayheadTime(): number;
|
|
3739
|
+
getActualEditDuration(): number;
|
|
3740
|
+
findClipAtPosition(x: number, y: number): ClipInfo | null;
|
|
3741
|
+
setTheme(themeOptions: TimelineThemeOptions): void;
|
|
3742
|
+
getTheme(): TimelineTheme;
|
|
3743
|
+
getCurrentEditType(): EditType_3 | null;
|
|
3744
|
+
getOptions(): TimelineOptions;
|
|
3745
|
+
setOptions(options: Partial<TimelineOptions>): void;
|
|
3746
|
+
getTimeDisplay(): {
|
|
3747
|
+
updateTimeDisplay(): void;
|
|
3748
|
+
};
|
|
3749
|
+
updateTime(time: number, emit?: boolean): void;
|
|
3750
|
+
get timeRange(): {
|
|
3751
|
+
startTime: number;
|
|
3752
|
+
endTime: number;
|
|
3753
|
+
};
|
|
3754
|
+
get viewportHeight(): number;
|
|
3755
|
+
get zoomLevelIndex(): number;
|
|
3756
|
+
zoomIn(): void;
|
|
3757
|
+
zoomOut(): void;
|
|
3758
|
+
private onZoomChanged;
|
|
3759
|
+
}
|
|
3760
|
+
|
|
3761
|
+
declare class TimelineLayout {
|
|
3762
|
+
private options;
|
|
3763
|
+
private theme?;
|
|
3764
|
+
static readonly TOOLBAR_HEIGHT_RATIO: 0.12;
|
|
3765
|
+
static readonly RULER_HEIGHT_RATIO: 0.133;
|
|
3766
|
+
static readonly TOOLBAR_HEIGHT_DEFAULT: 36;
|
|
3767
|
+
static readonly RULER_HEIGHT_DEFAULT: 40;
|
|
3768
|
+
static readonly TRACK_HEIGHT_DEFAULT: 80;
|
|
3769
|
+
static readonly CLIP_PADDING: 4;
|
|
3770
|
+
static readonly BORDER_WIDTH: 2;
|
|
3771
|
+
static readonly CORNER_RADIUS: 4;
|
|
3772
|
+
static readonly LABEL_PADDING: 8;
|
|
3773
|
+
static readonly TRACK_PADDING: 2;
|
|
3774
|
+
private config;
|
|
3775
|
+
constructor(options: Required<TimelineOptions>, theme?: TimelineTheme | undefined);
|
|
3776
|
+
private calculateLayout;
|
|
3777
|
+
get toolbarHeight(): number;
|
|
3778
|
+
get toolbarY(): number;
|
|
3779
|
+
get rulerHeight(): number;
|
|
3780
|
+
get trackHeight(): number;
|
|
3781
|
+
get rulerY(): number;
|
|
3782
|
+
get tracksY(): number;
|
|
3783
|
+
get gridY(): number;
|
|
3784
|
+
get playheadY(): number;
|
|
3785
|
+
get viewportY(): number;
|
|
3786
|
+
positionTrack(trackIndex: number): number;
|
|
3787
|
+
positionClip(startTime: number): number;
|
|
3788
|
+
calculateClipWidth(duration: number): number;
|
|
3789
|
+
calculateDropPosition(globalX: number, globalY: number): {
|
|
3790
|
+
track: number;
|
|
3791
|
+
time: number;
|
|
3792
|
+
x: number;
|
|
3793
|
+
y: number;
|
|
3794
|
+
};
|
|
3795
|
+
getTrackAtY(y: number): number;
|
|
3796
|
+
getTimeAtX(x: number): number;
|
|
3797
|
+
getXAtTime(time: number): number;
|
|
3798
|
+
getYAtTrack(trackIndex: number): number;
|
|
3799
|
+
getGridHeight(): number;
|
|
3800
|
+
getRulerWidth(): number;
|
|
3801
|
+
getGridWidth(): number;
|
|
3802
|
+
calculateViewportPosition(scrollX: number, scrollY: number): {
|
|
3803
|
+
x: number;
|
|
3804
|
+
y: number;
|
|
3805
|
+
};
|
|
3806
|
+
updateOptions(options: Required<TimelineOptions>, theme?: TimelineTheme): void;
|
|
3807
|
+
isPointInToolbar(_x: number, y: number): boolean;
|
|
3808
|
+
isPointInRuler(_x: number, y: number): boolean;
|
|
3809
|
+
isPointInTracks(_x: number, y: number): boolean;
|
|
3810
|
+
getVisibleTrackRange(scrollY: number, viewportHeight: number): {
|
|
3811
|
+
start: number;
|
|
3812
|
+
end: number;
|
|
3813
|
+
};
|
|
3814
|
+
}
|
|
3815
|
+
|
|
3816
|
+
declare interface TimelineOptions {
|
|
3817
|
+
width?: number;
|
|
3818
|
+
height?: number;
|
|
3819
|
+
pixelsPerSecond?: number;
|
|
3820
|
+
trackHeight?: number;
|
|
3821
|
+
backgroundColor?: number;
|
|
3822
|
+
antialias?: boolean;
|
|
3823
|
+
resolution?: number;
|
|
3824
|
+
}
|
|
3825
|
+
|
|
3826
|
+
export declare interface TimelineTheme {
|
|
3827
|
+
timeline: {
|
|
3828
|
+
background: number;
|
|
3829
|
+
divider: number;
|
|
3830
|
+
toolbar: {
|
|
3831
|
+
background: number;
|
|
3832
|
+
surface: number;
|
|
3833
|
+
hover: number;
|
|
3834
|
+
active: number;
|
|
3835
|
+
divider: number;
|
|
3836
|
+
icon: number;
|
|
3837
|
+
text: number;
|
|
3838
|
+
height: number;
|
|
3839
|
+
};
|
|
3840
|
+
ruler: {
|
|
3841
|
+
background: number;
|
|
3842
|
+
text: number;
|
|
3843
|
+
markers: number;
|
|
3844
|
+
height: number;
|
|
3845
|
+
};
|
|
3846
|
+
tracks: {
|
|
3847
|
+
surface: number;
|
|
3848
|
+
surfaceAlt: number;
|
|
3849
|
+
border: number;
|
|
3850
|
+
height: number;
|
|
3851
|
+
};
|
|
3852
|
+
clips: {
|
|
3853
|
+
video: number;
|
|
3854
|
+
audio: number;
|
|
3855
|
+
image: number;
|
|
3856
|
+
text: number;
|
|
3857
|
+
shape: number;
|
|
3858
|
+
html: number;
|
|
3859
|
+
luma: number;
|
|
3860
|
+
default: number;
|
|
3861
|
+
selected: number;
|
|
3862
|
+
radius: number;
|
|
3863
|
+
};
|
|
3864
|
+
playhead: number;
|
|
3865
|
+
snapGuide: number;
|
|
3866
|
+
dropZone: number;
|
|
3867
|
+
trackInsertion: number;
|
|
3868
|
+
};
|
|
3869
|
+
}
|
|
3870
|
+
|
|
3871
|
+
export declare interface TimelineThemeInput {
|
|
3872
|
+
timeline: {
|
|
3873
|
+
background: string;
|
|
3874
|
+
divider: string;
|
|
3875
|
+
toolbar: {
|
|
3876
|
+
background: string;
|
|
3877
|
+
surface: string;
|
|
3878
|
+
hover: string;
|
|
3879
|
+
active: string;
|
|
3880
|
+
divider: string;
|
|
3881
|
+
icon: string;
|
|
3882
|
+
text: string;
|
|
3883
|
+
height?: number;
|
|
3884
|
+
};
|
|
3885
|
+
ruler: {
|
|
3886
|
+
background: string;
|
|
3887
|
+
text: string;
|
|
3888
|
+
markers: string;
|
|
3889
|
+
height?: number;
|
|
3890
|
+
};
|
|
3891
|
+
tracks: {
|
|
3892
|
+
surface: string;
|
|
3893
|
+
surfaceAlt: string;
|
|
3894
|
+
border: string;
|
|
3895
|
+
height?: number;
|
|
3896
|
+
};
|
|
3897
|
+
clips: {
|
|
3898
|
+
video: string;
|
|
3899
|
+
audio: string;
|
|
3900
|
+
image: string;
|
|
3901
|
+
text: string;
|
|
3902
|
+
shape: string;
|
|
3903
|
+
html: string;
|
|
3904
|
+
luma: string;
|
|
3905
|
+
default: string;
|
|
3906
|
+
selected: string;
|
|
3907
|
+
radius?: number;
|
|
3908
|
+
};
|
|
3909
|
+
playhead: string;
|
|
3910
|
+
snapGuide: string;
|
|
3911
|
+
dropZone: string;
|
|
3912
|
+
trackInsertion: string;
|
|
3913
|
+
};
|
|
3914
|
+
}
|
|
3915
|
+
|
|
3916
|
+
declare interface TimelineThemeOptions {
|
|
3917
|
+
theme?: TimelineThemeInput | DeepPartial<TimelineThemeInput>;
|
|
3918
|
+
}
|
|
3919
|
+
|
|
3521
3920
|
declare const TrackSchema: zod.ZodObject<{
|
|
3522
3921
|
clips: zod.ZodArray<zod.ZodObject<{
|
|
3523
3922
|
asset: zod.ZodEffects<zod.ZodUnion<[zod.ZodObject<{
|
|
@@ -5011,6 +5410,13 @@ declare const TrackSchema: zod.ZodObject<{
|
|
|
5011
5410
|
|
|
5012
5411
|
declare type TrackType = z.infer<typeof TrackSchema>;
|
|
5013
5412
|
|
|
5413
|
+
declare type TrackType_2 = z.infer<typeof TrackSchema>;
|
|
5414
|
+
|
|
5415
|
+
declare type Vector = {
|
|
5416
|
+
x: number;
|
|
5417
|
+
y: number;
|
|
5418
|
+
};
|
|
5419
|
+
|
|
5014
5420
|
export declare class VideoExporter {
|
|
5015
5421
|
private readonly ffmpeg;
|
|
5016
5422
|
private isReady;
|
|
@@ -5027,4 +5433,97 @@ export declare class VideoExporter {
|
|
|
5027
5433
|
private removeProgressOverlay;
|
|
5028
5434
|
}
|
|
5029
5435
|
|
|
5436
|
+
declare class VisualClip extends Entity {
|
|
5437
|
+
private clipConfig;
|
|
5438
|
+
private options;
|
|
5439
|
+
private graphics;
|
|
5440
|
+
private background;
|
|
5441
|
+
private text;
|
|
5442
|
+
private selectionRenderer;
|
|
5443
|
+
private lastGlobalX;
|
|
5444
|
+
private lastGlobalY;
|
|
5445
|
+
private readonly CLIP_PADDING;
|
|
5446
|
+
private readonly BORDER_WIDTH;
|
|
5447
|
+
private get CORNER_RADIUS();
|
|
5448
|
+
constructor(clipConfig: ClipConfig, options: VisualClipOptions);
|
|
5449
|
+
load(): Promise<void>;
|
|
5450
|
+
private setupContainer;
|
|
5451
|
+
private setupGraphics;
|
|
5452
|
+
updateFromConfig(newConfig: ClipConfig): void;
|
|
5453
|
+
private setVisualState;
|
|
5454
|
+
private getEffectiveWidth;
|
|
5455
|
+
private drawClipBackground;
|
|
5456
|
+
private drawClipBorder;
|
|
5457
|
+
private updateSelectionState;
|
|
5458
|
+
private getClipColor;
|
|
5459
|
+
private getStateStyles;
|
|
5460
|
+
setSelected(selected: boolean): void;
|
|
5461
|
+
setDragging(dragging: boolean): void;
|
|
5462
|
+
setResizing(resizing: boolean): void;
|
|
5463
|
+
setPreviewWidth(width: number | null): void;
|
|
5464
|
+
setPixelsPerSecond(pixelsPerSecond: number): void;
|
|
5465
|
+
updateOptions(updates: Partial<VisualClipOptions>): void;
|
|
5466
|
+
getClipConfig(): ClipConfig;
|
|
5467
|
+
getOptions(): VisualClipOptions;
|
|
5468
|
+
getVisualState(): {
|
|
5469
|
+
mode: "normal" | "selected" | "dragging" | "resizing";
|
|
5470
|
+
previewWidth?: number;
|
|
5471
|
+
};
|
|
5472
|
+
getSelected(): boolean;
|
|
5473
|
+
getClipId(): string;
|
|
5474
|
+
getDragging(): boolean;
|
|
5475
|
+
getRightEdgeX(): number;
|
|
5476
|
+
}
|
|
5477
|
+
|
|
5478
|
+
declare interface VisualClipOptions {
|
|
5479
|
+
pixelsPerSecond: number;
|
|
5480
|
+
trackHeight: number;
|
|
5481
|
+
trackIndex: number;
|
|
5482
|
+
clipIndex: number;
|
|
5483
|
+
theme: TimelineTheme;
|
|
5484
|
+
selectionRenderer?: SelectionOverlayRenderer;
|
|
5485
|
+
}
|
|
5486
|
+
|
|
5487
|
+
declare class VisualTrack extends Entity {
|
|
5488
|
+
private clips;
|
|
5489
|
+
private options;
|
|
5490
|
+
private background;
|
|
5491
|
+
private readonly TRACK_PADDING;
|
|
5492
|
+
private readonly LABEL_PADDING;
|
|
5493
|
+
constructor(options: VisualTrackOptions);
|
|
5494
|
+
load(): Promise<void>;
|
|
5495
|
+
private setupContainer;
|
|
5496
|
+
rebuildFromTrackData(trackData: TrackType_2, pixelsPerSecond: number): void;
|
|
5497
|
+
private addClip;
|
|
5498
|
+
private clearAllClips;
|
|
5499
|
+
removeClip(clipIndex: number): void;
|
|
5500
|
+
updateClip(clipIndex: number, newClipConfig: ClipConfig): void;
|
|
5501
|
+
setPixelsPerSecond(pixelsPerSecond: number): void;
|
|
5502
|
+
setWidth(width: number): void;
|
|
5503
|
+
setTrackIndex(trackIndex: number): void;
|
|
5504
|
+
selectClip(clipIndex: number): void;
|
|
5505
|
+
clearAllSelections(): void;
|
|
5506
|
+
getSelectedClip(): VisualClip | null;
|
|
5507
|
+
getSelectedClipIndex(): number;
|
|
5508
|
+
getClips(): VisualClip[];
|
|
5509
|
+
getClip(clipIndex: number): VisualClip | null;
|
|
5510
|
+
getClipCount(): number;
|
|
5511
|
+
getTrackIndex(): number;
|
|
5512
|
+
getTrackHeight(): number;
|
|
5513
|
+
getOptions(): VisualTrackOptions;
|
|
5514
|
+
findClipAtPosition(x: number, y: number): {
|
|
5515
|
+
clip: VisualClip;
|
|
5516
|
+
clipIndex: number;
|
|
5517
|
+
} | null;
|
|
5518
|
+
}
|
|
5519
|
+
|
|
5520
|
+
declare interface VisualTrackOptions {
|
|
5521
|
+
pixelsPerSecond: number;
|
|
5522
|
+
trackHeight: number;
|
|
5523
|
+
trackIndex: number;
|
|
5524
|
+
width: number;
|
|
5525
|
+
theme: TimelineTheme;
|
|
5526
|
+
selectionRenderer?: SelectionOverlayRenderer;
|
|
5527
|
+
}
|
|
5528
|
+
|
|
5030
5529
|
export { }
|