@designcombo/video 0.1.15 → 0.1.17

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.
@@ -62,20 +62,30 @@ export interface ImageJSON extends BaseClipJSON {
62
62
  export interface TextStyleJSON {
63
63
  fontSize?: number;
64
64
  fontFamily?: string;
65
- fontWeight?: number;
65
+ fontWeight?: string | number;
66
66
  fontStyle?: string;
67
- color?: string;
67
+ color?: string | number | {
68
+ type: 'gradient';
69
+ x0: number;
70
+ y0: number;
71
+ x1: number;
72
+ y1: number;
73
+ colors: Array<{
74
+ ratio: number;
75
+ color: string | number;
76
+ }>;
77
+ };
68
78
  align?: 'left' | 'center' | 'right';
69
79
  fontUrl?: string;
70
80
  stroke?: {
71
- color: string;
81
+ color: string | number;
72
82
  width: number;
73
83
  join?: 'miter' | 'round' | 'bevel';
74
84
  cap?: 'butt' | 'round' | 'square';
75
85
  miterLimit?: number;
76
86
  };
77
87
  shadow?: {
78
- color: string;
88
+ color: string | number;
79
89
  alpha: number;
80
90
  blur: number;
81
91
  distance: number;
@@ -86,6 +96,8 @@ export interface TextStyleJSON {
86
96
  lineHeight?: number;
87
97
  letterSpacing?: number;
88
98
  textCase?: 'none' | 'uppercase' | 'lowercase' | 'title';
99
+ verticalAlign?: 'top' | 'center' | 'bottom';
100
+ wordsPerLine?: 'single' | 'multiple';
89
101
  }
90
102
  export interface TextJSON extends BaseClipJSON {
91
103
  type: 'Text';
@@ -139,6 +151,7 @@ export interface CaptionJSON extends BaseClipJSON {
139
151
  videoHeight?: number;
140
152
  fontUrl?: string;
141
153
  mediaId?: string;
154
+ wordsPerLine?: 'single' | 'multiple';
142
155
  }
143
156
  export interface EffectJSON extends BaseClipJSON {
144
157
  type: 'Effect';
@@ -29,7 +29,7 @@ export interface BaseSpriteEvents {
29
29
  *
30
30
  * @see {@link OffscreenSprite}
31
31
  */
32
- export declare abstract class BaseSprite extends EventEmitter<BaseSpriteEvents> {
32
+ export declare abstract class BaseSprite<T extends BaseSpriteEvents = BaseSpriteEvents> extends EventEmitter<T> {
33
33
  /**
34
34
  * Unique identifier for the sprite/clip
35
35
  */
@@ -65,25 +65,25 @@ export declare abstract class BaseSprite extends EventEmitter<BaseSpriteEvents>
65
65
  to: number;
66
66
  };
67
67
  constructor();
68
- private _left;
68
+ protected _left: number;
69
69
  /**
70
70
  * Left position (x coordinate)
71
71
  */
72
72
  get left(): number;
73
73
  set left(v: number);
74
- private _top;
74
+ protected _top: number;
75
75
  /**
76
76
  * Top position (y coordinate)
77
77
  */
78
78
  get top(): number;
79
79
  set top(v: number);
80
- private _width;
80
+ protected _width: number;
81
81
  /**
82
82
  * Width
83
83
  */
84
84
  get width(): number;
85
85
  set width(v: number);
86
- private _height;
86
+ protected _height: number;
87
87
  /**
88
88
  * Height
89
89
  */
@@ -17,11 +17,19 @@ export declare class TimelineModel {
17
17
  name: string;
18
18
  type: string;
19
19
  id?: string;
20
- }): StudioTrack;
20
+ }, index?: number): StudioTrack;
21
21
  /**
22
22
  * Remove a track and all its clips
23
23
  */
24
24
  removeTrack(trackId: string): Promise<void>;
25
+ /**
26
+ * Move a track to a new index
27
+ */
28
+ moveTrack(trackId: string, newIndex: number): Promise<void>;
29
+ /**
30
+ * Set the order of tracks by ID
31
+ */
32
+ setTrackOrder(trackIds: string[]): Promise<void>;
25
33
  /**
26
34
  * Add a Transition clip at the join where the selected clip starts.
27
35
  */
@@ -12,7 +12,7 @@ export declare class Transport {
12
12
  private playStartTime;
13
13
  private playStartTimestamp;
14
14
  private rafId;
15
- playbackElements: Map<IClip, PlaybackElementInfo>;
15
+ playbackElements: Map<IClip<import('../sprite/base-sprite').BaseSpriteEvents>, PlaybackElementInfo>;
16
16
  constructor(studio: Studio);
17
17
  setMaxDuration(duration: number): void;
18
18
  /**
package/dist/studio.d.ts CHANGED
@@ -43,6 +43,10 @@ export interface StudioEvents {
43
43
  };
44
44
  'track:added': {
45
45
  track: StudioTrack;
46
+ index?: number;
47
+ };
48
+ 'track:order-changed': {
49
+ tracks: StudioTrack[];
46
50
  };
47
51
  'track:removed': {
48
52
  trackId: string;
@@ -100,8 +104,8 @@ export declare class Studio extends EventEmitter<StudioEvents> {
100
104
  history: HistoryManager;
101
105
  pixiApp: Application | null;
102
106
  get tracks(): StudioTrack[];
103
- get clips(): IClip[];
104
- spriteRenderers: Map<IClip, PixiSpriteRenderer>;
107
+ get clips(): IClip<import('./sprite/base-sprite').BaseSpriteEvents>[];
108
+ spriteRenderers: Map<IClip<import('./sprite/base-sprite').BaseSpriteEvents>, PixiSpriteRenderer>;
105
109
  artboard: Container | null;
106
110
  clipContainer: Container | null;
107
111
  artboardMask: Graphics | null;
@@ -112,9 +116,9 @@ export declare class Studio extends EventEmitter<StudioEvents> {
112
116
  set selectedClips(val: Set<IClip>);
113
117
  get interactiveClips(): Set<IClip>;
114
118
  set interactiveClips(val: Set<IClip>);
115
- get playbackElements(): Map<IClip, import('./studio/transport').PlaybackElementInfo>;
116
- videoSprites: Map<IClip, Sprite>;
117
- clipListeners: Map<IClip, () => void>;
119
+ get playbackElements(): Map<IClip<import('./sprite/base-sprite').BaseSpriteEvents>, import('./studio/transport').PlaybackElementInfo>;
120
+ videoSprites: Map<IClip<import('./sprite/base-sprite').BaseSpriteEvents>, Sprite>;
121
+ clipListeners: Map<IClip<import('./sprite/base-sprite').BaseSpriteEvents>, () => void>;
118
122
  get isPlaying(): boolean;
119
123
  set isPlaying(val: boolean);
120
124
  get currentTime(): number;
@@ -178,6 +182,7 @@ export declare class Studio extends EventEmitter<StudioEvents> {
178
182
  /**
179
183
  * Update studio dimensions
180
184
  */
185
+ setSize(width: number, height: number): void;
181
186
  updateDimensions(width: number, height: number): void;
182
187
  private handleResize;
183
188
  private updateArtboardLayout;
@@ -203,8 +208,16 @@ export declare class Studio extends EventEmitter<StudioEvents> {
203
208
  name: string;
204
209
  type: string;
205
210
  id?: string;
206
- }): StudioTrack;
211
+ }, index?: number): StudioTrack;
207
212
  setTracks(tracks: StudioTrack[]): Promise<void>;
213
+ /**
214
+ * Move a track to a new index
215
+ */
216
+ moveTrack(trackId: string, newIndex: number): Promise<void>;
217
+ /**
218
+ * Set the order of tracks by ID
219
+ */
220
+ setTrackOrder(trackIds: string[]): Promise<void>;
208
221
  removeTrack(trackId: string): Promise<void>;
209
222
  /**
210
223
  * Get a clip by its ID
@@ -0,0 +1,41 @@
1
+ import { Point, Rectangle } from 'pixi.js';
2
+ export interface SnapGuide {
3
+ type: 'vertical' | 'horizontal';
4
+ position: number;
5
+ start: number;
6
+ end: number;
7
+ }
8
+ export interface SnapResult {
9
+ x: number | null;
10
+ y: number | null;
11
+ guides: SnapGuide[];
12
+ }
13
+ export declare class SnappingManager {
14
+ private artboardWidth;
15
+ private artboardHeight;
16
+ private scale;
17
+ static SNAP_THRESHOLD: number;
18
+ constructor(artboardWidth: number, artboardHeight: number, scale?: number);
19
+ updateContext(width: number, height: number, scale: number): void;
20
+ /**
21
+ * Snap a rectangle (bounds of the object) to artboard edges and center.
22
+ * returns delta (adjustment) needed for x and y
23
+ */
24
+ snapMove(current: Rectangle): {
25
+ dx: number;
26
+ dy: number;
27
+ guides: SnapGuide[];
28
+ };
29
+ /**
30
+ * Snap during scaling
31
+ * For now, simplistic implementation: snap the edges being moved.
32
+ */
33
+ snapResize(proposed: Rectangle): {
34
+ corrected: Rectangle;
35
+ guides: SnapGuide[];
36
+ };
37
+ snapPoint(point: Point): {
38
+ p: Point;
39
+ guides: SnapGuide[];
40
+ };
41
+ }
@@ -13,11 +13,15 @@ export declare class Transformer extends Container {
13
13
  group: Container[];
14
14
  centeredScaling?: boolean;
15
15
  clip?: any;
16
+ artboardWidth?: number;
17
+ artboardHeight?: number;
16
18
  };
17
19
  constructor(opts: {
18
20
  group: Container[];
19
21
  centeredScaling?: boolean;
20
22
  clip?: any;
23
+ artboardWidth?: number;
24
+ artboardHeight?: number;
21
25
  });
22
26
  /**
23
27
  * Public method to update transformer bounds without recreating it