@codingfactory/mediables-vue 2.7.2 → 2.9.0

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.
Files changed (52) hide show
  1. package/dist/{PixiFrameExporter-n220y4aZ.cjs → PixiFrameExporter-COcgeYmj.cjs} +2 -2
  2. package/dist/{PixiFrameExporter-n220y4aZ.cjs.map → PixiFrameExporter-COcgeYmj.cjs.map} +1 -1
  3. package/dist/{PixiFrameExporter-C5RSaXvT.js → PixiFrameExporter-SiG3q5-_.js} +2 -2
  4. package/dist/{PixiFrameExporter-C5RSaXvT.js.map → PixiFrameExporter-SiG3q5-_.js.map} +1 -1
  5. package/dist/components/video/ui-v2/AssetRail.vue.d.ts +2 -0
  6. package/dist/components/video/ui-v2/AssetRailItem.vue.d.ts +7 -0
  7. package/dist/components/video/ui-v2/AudioMixerPanel.vue.d.ts +33 -0
  8. package/dist/components/video/ui-v2/CaptionSrtPanel.vue.d.ts +9 -0
  9. package/dist/components/video/ui-v2/DesktopInspectorSections.vue.d.ts +21 -0
  10. package/dist/components/video/ui-v2/DraftRecoveryBanner.vue.d.ts +12 -0
  11. package/dist/components/video/ui-v2/KeyframePresetPanel.vue.d.ts +26 -0
  12. package/dist/components/video/ui-v2/MobileClipSummary.vue.d.ts +4 -0
  13. package/dist/components/video/ui-v2/MobileToolPicker.vue.d.ts +3 -0
  14. package/dist/components/video/ui-v2/SplitPanelLayout.vue.d.ts +9 -5
  15. package/dist/components/video/ui-v2/TimelineTrackHeader.vue.d.ts +2 -0
  16. package/dist/composables/useClientVideoExport.d.ts +27 -0
  17. package/dist/composables/useLiveStream.d.ts +2 -2
  18. package/dist/composables/useRadialMenu.d.ts +1 -1
  19. package/dist/composables/useVideoEditor.d.ts +119 -7
  20. package/dist/composables/useVideoFilters.d.ts +4 -4
  21. package/dist/index-B6oyn6Pa.cjs +350 -0
  22. package/dist/index-B6oyn6Pa.cjs.map +1 -0
  23. package/dist/index-BGexNz7s.js +32993 -0
  24. package/dist/index-BGexNz7s.js.map +1 -0
  25. package/dist/mediables-vue.cjs +1 -1
  26. package/dist/mediables-vue.mjs +1 -1
  27. package/dist/render-page/assets/{index-aDRQNAjC.js → index-jZGmiMRr.js} +972 -159
  28. package/dist/render-page/index.html +1 -1
  29. package/dist/services/VideoJobClient.d.ts +1 -1
  30. package/dist/style.css +1 -1
  31. package/dist/types/api.d.ts +14 -0
  32. package/dist/types/video.d.ts +164 -5
  33. package/dist/video/project/audioMixerSchema.d.ts +152 -0
  34. package/dist/video/project/captionSrt.d.ts +23 -0
  35. package/dist/video/project/draftRecovery.d.ts +86 -0
  36. package/dist/video/project/exportPresets.d.ts +172 -0
  37. package/dist/video/project/index.d.ts +22 -0
  38. package/dist/video/project/keyframeAutomation.d.ts +91 -0
  39. package/dist/video/project/mediaSourceAnalysis.d.ts +127 -0
  40. package/dist/video/project/mediaSourceCache.d.ts +47 -0
  41. package/dist/video/project/recipeMigration.d.ts +26 -0
  42. package/dist/video/project/timelineSelection.d.ts +23 -0
  43. package/dist/video/project/timelineTransactions.d.ts +129 -0
  44. package/dist/video/project/visualLayerSchema.d.ts +238 -0
  45. package/dist/video-engine/adapters/AudioManager.d.ts +9 -0
  46. package/dist/video-engine/adapters/MediablesCompositionAdapter.d.ts +3 -0
  47. package/dist/video-engine/adapters/TextOverlayManager.d.ts +4 -2
  48. package/package.json +1 -1
  49. package/dist/index-B_7DfcKr.js +0 -29339
  50. package/dist/index-B_7DfcKr.js.map +0 -1
  51. package/dist/index-Dx7DOxwK.cjs +0 -342
  52. package/dist/index-Dx7DOxwK.cjs.map +0 -1
@@ -0,0 +1,238 @@
1
+ export type VisualLayerType = 'text' | 'caption' | 'shape' | 'image' | 'sticker' | 'svg' | 'adjustment';
2
+ export type BlendMode = 'normal' | 'multiply' | 'screen' | 'overlay' | 'darken' | 'lighten' | 'color-dodge' | 'color-burn' | 'hard-light' | 'soft-light' | 'difference' | 'exclusion';
3
+ export type TextAlign = 'left' | 'center' | 'right' | 'justify';
4
+ export type VerticalAlign = 'top' | 'middle' | 'bottom';
5
+ export type TextWrapMode = 'auto' | 'none' | 'manual';
6
+ export type CaptionSource = 'manual' | 'srt-import' | 'transcription';
7
+ export type CaptionStylePreset = 'default' | 'subtitle' | 'karaoke' | 'boxed' | 'minimal';
8
+ export type CaptionAnimationPreset = 'none' | 'fade' | 'pop' | 'word-highlight';
9
+ export type TransitionType = 'cut' | 'fade' | 'crossfade' | 'dip-to-black' | 'wipe-left' | 'wipe-right' | 'slide-left' | 'slide-right' | 'zoom';
10
+ export type EasingType = 'linear' | 'ease-in' | 'ease-out' | 'ease-in-out';
11
+ export type KeyframeEasing = EasingType | 'hold' | 'step';
12
+ export type KeyframeTargetProperty = 'transform.position.x' | 'transform.position.y' | 'transform.scale.x' | 'transform.scale.y' | 'transform.rotation' | 'opacity' | 'text.style.fontSize' | 'text.style.colorAlpha' | 'adjustment.intensity';
13
+ export type SchemaValidationErrorCode = 'empty-id' | 'empty-track-id' | 'invalid-time' | 'invalid-duration' | 'invalid-opacity' | 'invalid-transform' | 'invalid-caption-segment' | 'invalid-transition-boundary' | 'transition-overlap' | 'invalid-keyframe';
14
+ export declare class VisualLayerSchemaError extends Error {
15
+ readonly code: SchemaValidationErrorCode;
16
+ constructor(code: SchemaValidationErrorCode, message: string);
17
+ }
18
+ export interface LayerPoint {
19
+ x: number;
20
+ y: number;
21
+ }
22
+ export interface LayerTransform {
23
+ position: LayerPoint;
24
+ anchor: LayerPoint;
25
+ scale: LayerPoint;
26
+ rotation: number;
27
+ }
28
+ export interface MobileVisualCapabilityFlags {
29
+ canPreview: boolean;
30
+ canEdit: boolean;
31
+ canExport: boolean;
32
+ supportsKeyframeEditor: boolean;
33
+ supportsTransitionEditor: boolean;
34
+ }
35
+ export interface VisualFeatureCapabilityMatrix {
36
+ visualLayers: {
37
+ supportedTypes: VisualLayerType[];
38
+ maxLayerCount: number;
39
+ mobile: MobileVisualCapabilityFlags;
40
+ };
41
+ captions: {
42
+ supportsManualTracks: boolean;
43
+ supportsSrtImport: boolean;
44
+ supportsTranscription: boolean;
45
+ supportsWordTiming: boolean;
46
+ mobile: MobileVisualCapabilityFlags;
47
+ };
48
+ transitions: {
49
+ supportedTypes: TransitionType[];
50
+ mobile: MobileVisualCapabilityFlags;
51
+ };
52
+ keyframes: {
53
+ supportedProperties: KeyframeTargetProperty[];
54
+ mobile: MobileVisualCapabilityFlags;
55
+ };
56
+ }
57
+ export interface RichTextStyle {
58
+ fontFamily: string;
59
+ fontSize: number;
60
+ fontWeight: number;
61
+ fontStyle: 'normal' | 'italic';
62
+ color: string;
63
+ backgroundColor: string;
64
+ backgroundOpacity: number;
65
+ strokeColor: string;
66
+ strokeWidth: number;
67
+ shadowColor: string;
68
+ shadowBlur: number;
69
+ shadowOffsetX: number;
70
+ shadowOffsetY: number;
71
+ lineHeight: number;
72
+ letterSpacing: number;
73
+ textAlign: TextAlign;
74
+ verticalAlign: VerticalAlign;
75
+ }
76
+ export interface VisualLayerKeyframe {
77
+ id: string;
78
+ property: KeyframeTargetProperty;
79
+ time: number;
80
+ value: number;
81
+ easing: KeyframeEasing;
82
+ }
83
+ export interface BaseVisualLayerRecipe {
84
+ id: string;
85
+ type: VisualLayerType;
86
+ trackId: string;
87
+ startTime: number;
88
+ duration: number;
89
+ zIndex: number;
90
+ enabled: boolean;
91
+ blendMode: BlendMode;
92
+ opacity: number;
93
+ transform: LayerTransform;
94
+ capabilities?: MobileVisualCapabilityFlags;
95
+ keyframes?: VisualLayerKeyframe[];
96
+ }
97
+ export interface TextLayerRecipe extends BaseVisualLayerRecipe {
98
+ type: 'text';
99
+ text: {
100
+ content: string;
101
+ style: RichTextStyle;
102
+ wrap: TextWrapMode;
103
+ maxWidth?: number;
104
+ };
105
+ animation?: {
106
+ preset: 'none' | 'fade' | 'slide' | 'scale' | 'typewriter';
107
+ duration: number;
108
+ easing: EasingType;
109
+ };
110
+ }
111
+ export interface CaptionLayerRecipe extends BaseVisualLayerRecipe {
112
+ type: 'caption';
113
+ captionTrackId: string;
114
+ segmentIds?: string[];
115
+ }
116
+ export interface ShapeLayerRecipe extends BaseVisualLayerRecipe {
117
+ type: 'shape';
118
+ shape: {
119
+ kind: 'rectangle' | 'ellipse' | 'line';
120
+ fillColor: string;
121
+ strokeColor?: string;
122
+ strokeWidth?: number;
123
+ cornerRadius?: number;
124
+ };
125
+ }
126
+ export interface ImageLayerRecipe extends BaseVisualLayerRecipe {
127
+ type: 'image';
128
+ sourceRefId: string;
129
+ fit: 'contain' | 'cover' | 'stretch';
130
+ }
131
+ export interface StickerLayerRecipe extends BaseVisualLayerRecipe {
132
+ type: 'sticker';
133
+ sourceRefId: string;
134
+ label?: string;
135
+ }
136
+ export interface SvgLayerRecipe extends BaseVisualLayerRecipe {
137
+ type: 'svg';
138
+ sourceRefId?: string;
139
+ sanitizedMarkup?: string;
140
+ viewBox?: string;
141
+ }
142
+ export interface AdjustmentLayerRecipe extends BaseVisualLayerRecipe {
143
+ type: 'adjustment';
144
+ adjustment: {
145
+ kind: 'color' | 'blur' | 'vignette' | 'lut';
146
+ intensity: number;
147
+ };
148
+ }
149
+ export type VisualLayerRecipe = TextLayerRecipe | CaptionLayerRecipe | ShapeLayerRecipe | ImageLayerRecipe | StickerLayerRecipe | SvgLayerRecipe | AdjustmentLayerRecipe;
150
+ export interface CaptionWordRecipe {
151
+ id: string;
152
+ startTime: number;
153
+ endTime: number;
154
+ text: string;
155
+ }
156
+ export interface CaptionSegmentRecipe {
157
+ id: string;
158
+ startTime: number;
159
+ endTime: number;
160
+ text: string;
161
+ words?: CaptionWordRecipe[];
162
+ }
163
+ export interface CaptionTrackRecipe {
164
+ id: string;
165
+ source: CaptionSource;
166
+ language?: string;
167
+ stylePreset: CaptionStylePreset;
168
+ animation: CaptionAnimationPreset;
169
+ segments: CaptionSegmentRecipe[];
170
+ }
171
+ export interface TransitionParams {
172
+ direction?: 'left' | 'right' | 'up' | 'down';
173
+ color?: string;
174
+ softness?: number;
175
+ }
176
+ export interface TransitionRecipe {
177
+ id: string;
178
+ type: TransitionType;
179
+ fromClipId: string;
180
+ toClipId: string;
181
+ duration: number;
182
+ easing: EasingType;
183
+ cutTime?: number;
184
+ params?: TransitionParams;
185
+ }
186
+ export interface TransitionClipBoundary {
187
+ id: string;
188
+ timelineStart: number;
189
+ timelineEnd: number;
190
+ }
191
+ export interface NormalizedTransitionWindow {
192
+ transition: TransitionRecipe & {
193
+ cutTime: number;
194
+ };
195
+ fromWindow: {
196
+ clipId: string;
197
+ startTime: number;
198
+ endTime: number;
199
+ };
200
+ toWindow: {
201
+ clipId: string;
202
+ startTime: number;
203
+ endTime: number;
204
+ };
205
+ }
206
+ export type VisualLayerDefaultKey = 'zIndex' | 'enabled' | 'blendMode' | 'opacity' | 'transform' | 'capabilities' | 'keyframes';
207
+ export type TextLayerInput = Omit<TextLayerRecipe, VisualLayerDefaultKey | 'text'> & Partial<Pick<BaseVisualLayerRecipe, VisualLayerDefaultKey>> & {
208
+ text: {
209
+ content: string;
210
+ style?: Partial<RichTextStyle>;
211
+ wrap?: TextWrapMode;
212
+ maxWidth?: number;
213
+ };
214
+ };
215
+ export type CaptionLayerInput = Omit<CaptionLayerRecipe, VisualLayerDefaultKey> & Partial<Pick<BaseVisualLayerRecipe, VisualLayerDefaultKey>>;
216
+ export type ShapeLayerInput = Omit<ShapeLayerRecipe, VisualLayerDefaultKey> & Partial<Pick<BaseVisualLayerRecipe, VisualLayerDefaultKey>>;
217
+ export type ImageLayerInput = Omit<ImageLayerRecipe, VisualLayerDefaultKey> & Partial<Pick<BaseVisualLayerRecipe, VisualLayerDefaultKey>>;
218
+ export type StickerLayerInput = Omit<StickerLayerRecipe, VisualLayerDefaultKey> & Partial<Pick<BaseVisualLayerRecipe, VisualLayerDefaultKey>>;
219
+ export type SvgLayerInput = Omit<SvgLayerRecipe, VisualLayerDefaultKey> & Partial<Pick<BaseVisualLayerRecipe, VisualLayerDefaultKey>>;
220
+ export type AdjustmentLayerInput = Omit<AdjustmentLayerRecipe, VisualLayerDefaultKey> & Partial<Pick<BaseVisualLayerRecipe, VisualLayerDefaultKey>>;
221
+ export type VisualLayerInput = TextLayerInput | CaptionLayerInput | ShapeLayerInput | ImageLayerInput | StickerLayerInput | SvgLayerInput | AdjustmentLayerInput;
222
+ export interface CaptionTrackInput {
223
+ id: string;
224
+ source: CaptionSource;
225
+ language?: string;
226
+ stylePreset?: CaptionStylePreset;
227
+ animation?: CaptionAnimationPreset;
228
+ segments: CaptionSegmentRecipe[];
229
+ }
230
+ export declare const DEFAULT_LAYER_TRANSFORM: LayerTransform;
231
+ export declare const DEFAULT_RICH_TEXT_STYLE: RichTextStyle;
232
+ export declare const DEFAULT_MOBILE_VISUAL_CAPABILITIES: MobileVisualCapabilityFlags;
233
+ export declare const DEFAULT_VISUAL_FEATURE_CAPABILITIES: VisualFeatureCapabilityMatrix;
234
+ export declare function normalizeVisualLayer(layer: VisualLayerInput): VisualLayerRecipe;
235
+ export declare function normalizeCaptionTrack(track: CaptionTrackInput): CaptionTrackRecipe;
236
+ export declare function normalizeLayerKeyframes(keyframes: VisualLayerKeyframe[]): VisualLayerKeyframe[];
237
+ export declare function normalizeTransitionWindow(transition: TransitionRecipe, fromClip: TransitionClipBoundary, toClip: TransitionClipBoundary): NormalizedTransitionWindow;
238
+ export declare function validateTransitionWindowsDoNotOverlap(windows: NormalizedTransitionWindow[]): void;
@@ -39,6 +39,10 @@ export declare class AudioManager {
39
39
  * Add an audio track to the composition
40
40
  */
41
41
  addAudioTrack(config: AudioTrackConfig): Promise<string>;
42
+ private resolveAudioSource;
43
+ private createAudioClipConfig;
44
+ private findAudioTrack;
45
+ private removeClipFromTrack;
42
46
  /**
43
47
  * Create volume keyframes for fade effects
44
48
  */
@@ -47,6 +51,10 @@ export declare class AudioManager {
47
51
  * Update audio track volume
48
52
  */
49
53
  updateVolume(id: string, volume: number): Promise<void>;
54
+ /**
55
+ * Update an audio track's source, timing, fades, loop flag, or name.
56
+ */
57
+ updateAudioTrack(id: string, config: Partial<AudioTrackConfig>): Promise<void>;
50
58
  /**
51
59
  * Apply fade in effect to an audio track
52
60
  */
@@ -67,6 +75,7 @@ export declare class AudioManager {
67
75
  * Set master volume (affects all tracks)
68
76
  */
69
77
  setMasterVolume(volume: number): void;
78
+ private resolveLayerVolume;
70
79
  /**
71
80
  * Get master volume
72
81
  */
@@ -24,6 +24,9 @@ export declare class MediablesCompositionAdapter {
24
24
  attachPlayer(element: HTMLDivElement): Promise<void>;
25
25
  private setupResponsiveScaling;
26
26
  loadFromRecipe(recipe: VideoRecipe): Promise<void>;
27
+ private applyTransitionsToClips;
28
+ private mapTransitionType;
29
+ private mapTransitionEasing;
27
30
  private addTimelineClip;
28
31
  private addTextOverlay;
29
32
  private applyFiltersToClip;
@@ -38,6 +38,7 @@ export interface TextOverlayConfig {
38
38
  export declare class TextOverlayManager {
39
39
  private composition;
40
40
  private textClips;
41
+ private overlayConfigs;
41
42
  private fonts;
42
43
  private nextId;
43
44
  constructor(composition: Composition);
@@ -54,6 +55,8 @@ export declare class TextOverlayManager {
54
55
  * Add a text overlay to the composition
55
56
  */
56
57
  addTextOverlay(config: TextOverlayConfig): Promise<string>;
58
+ private buildTextClipConfig;
59
+ private applyPosition;
57
60
  /**
58
61
  * Apply animation to text clip configuration
59
62
  */
@@ -84,8 +87,7 @@ export declare class TextOverlayManager {
84
87
  /**
85
88
  * Create animated captions from transcript
86
89
  */
87
- addCaptions(transcript: any, // Would be core.Transcript type
88
- preset?: 'classic' | 'cascade' | 'guinea' | 'solar' | 'spotlight' | 'whisper', position?: {
90
+ addCaptions(transcript: core.Transcript, preset?: 'classic' | 'cascade' | 'guinea' | 'solar' | 'spotlight' | 'whisper', position?: {
89
91
  x?: string | number;
90
92
  y?: string | number;
91
93
  }): Promise<void>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@codingfactory/mediables-vue",
3
- "version": "2.7.2",
3
+ "version": "2.9.0",
4
4
  "publishConfig": {
5
5
  "access": "restricted"
6
6
  },