@codingfactory/mediables-vue 2.8.0 → 2.9.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/PixiFrameExporter-DGTn9-uZ.cjs +2 -0
- package/dist/{PixiFrameExporter-CqKXaoCX.cjs.map → PixiFrameExporter-DGTn9-uZ.cjs.map} +1 -1
- package/dist/{PixiFrameExporter-BcywK0MP.js → PixiFrameExporter-qCsqARff.js} +60 -59
- package/dist/{PixiFrameExporter-BcywK0MP.js.map → PixiFrameExporter-qCsqARff.js.map} +1 -1
- package/dist/components/video/ui-v2/AssetRail.vue.d.ts +2 -0
- package/dist/components/video/ui-v2/AssetRailItem.vue.d.ts +7 -0
- package/dist/components/video/ui-v2/AudioMixerPanel.vue.d.ts +33 -0
- package/dist/components/video/ui-v2/CaptionSrtPanel.vue.d.ts +9 -0
- package/dist/components/video/ui-v2/DesktopInspectorSections.vue.d.ts +21 -0
- package/dist/components/video/ui-v2/DraftRecoveryBanner.vue.d.ts +12 -0
- package/dist/components/video/ui-v2/KeyframePresetPanel.vue.d.ts +26 -0
- package/dist/components/video/ui-v2/MobileClipSummary.vue.d.ts +4 -0
- package/dist/components/video/ui-v2/MobileToolPicker.vue.d.ts +3 -0
- package/dist/components/video/ui-v2/SplitPanelLayout.vue.d.ts +9 -5
- package/dist/components/video/ui-v2/TimelineTrackHeader.vue.d.ts +2 -0
- package/dist/composables/useClientVideoExport.d.ts +27 -0
- package/dist/composables/useLiveStream.d.ts +2 -2
- package/dist/composables/useRadialMenu.d.ts +1 -1
- package/dist/composables/useVideoEditor.d.ts +119 -7
- package/dist/composables/useVideoFilters.d.ts +4 -4
- package/dist/index-B8iY-eYF.js +33011 -0
- package/dist/index-B8iY-eYF.js.map +1 -0
- package/dist/index-EmUdY4EL.cjs +350 -0
- package/dist/index-EmUdY4EL.cjs.map +1 -0
- package/dist/mediables-vue.cjs +1 -1
- package/dist/mediables-vue.mjs +1 -1
- package/dist/render-page/assets/{index-y90zwXpc.js → index-jZGmiMRr.js} +991 -151
- package/dist/render-page/index.html +1 -1
- package/dist/services/VideoJobClient.d.ts +1 -1
- package/dist/style.css +1 -1
- package/dist/types/api.d.ts +14 -0
- package/dist/types/video.d.ts +164 -5
- package/dist/video/project/audioMixerSchema.d.ts +152 -0
- package/dist/video/project/captionSrt.d.ts +23 -0
- package/dist/video/project/draftRecovery.d.ts +86 -0
- package/dist/video/project/exportPresets.d.ts +172 -0
- package/dist/video/project/index.d.ts +22 -0
- package/dist/video/project/keyframeAutomation.d.ts +91 -0
- package/dist/video/project/mediaSourceAnalysis.d.ts +127 -0
- package/dist/video/project/mediaSourceCache.d.ts +47 -0
- package/dist/video/project/recipeMigration.d.ts +26 -0
- package/dist/video/project/timelineSelection.d.ts +23 -0
- package/dist/video/project/timelineTransactions.d.ts +129 -0
- package/dist/video/project/visualLayerSchema.d.ts +238 -0
- package/dist/video-engine/adapters/AudioManager.d.ts +9 -0
- package/dist/video-engine/adapters/MediablesCompositionAdapter.d.ts +3 -0
- package/dist/video-engine/adapters/TextOverlayManager.d.ts +4 -2
- package/package.json +1 -1
- package/dist/PixiFrameExporter-CqKXaoCX.cjs +0 -2
- package/dist/index-DNo3Kr1t.cjs +0 -342
- package/dist/index-DNo3Kr1t.cjs.map +0 -1
- package/dist/index-DpkdpuMs.js +0 -29327
- package/dist/index-DpkdpuMs.js.map +0 -1
|
@@ -1,14 +1,18 @@
|
|
|
1
|
-
declare var __VLS_1: {}, __VLS_3: {}, __VLS_5: {}, __VLS_7: {
|
|
1
|
+
declare var __VLS_1: {}, __VLS_3: {}, __VLS_5: {}, __VLS_7: {
|
|
2
|
+
isMobile: any;
|
|
3
|
+
}, __VLS_9: {}, __VLS_11: {};
|
|
2
4
|
type __VLS_Slots = {} & {
|
|
3
5
|
toolbar?: (props: typeof __VLS_1) => any;
|
|
4
6
|
} & {
|
|
5
|
-
|
|
7
|
+
assets?: (props: typeof __VLS_3) => any;
|
|
6
8
|
} & {
|
|
7
|
-
|
|
9
|
+
canvas?: (props: typeof __VLS_5) => any;
|
|
8
10
|
} & {
|
|
9
|
-
|
|
11
|
+
timeline?: (props: typeof __VLS_7) => any;
|
|
10
12
|
} & {
|
|
11
|
-
|
|
13
|
+
inspector?: (props: typeof __VLS_9) => any;
|
|
14
|
+
} & {
|
|
15
|
+
drawer?: (props: typeof __VLS_11) => any;
|
|
12
16
|
};
|
|
13
17
|
declare const __VLS_component: import("vue").ComponentOptionsBase<any, any, any, any, any, any, any, any, string, {}, {}, string, {}, {}, {}, string, import("vue").ComponentProvideOptions>;
|
|
14
18
|
declare const _default: __VLS_WithSlots<typeof __VLS_component, __VLS_Slots>;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { type Ref } from 'vue';
|
|
2
|
+
import type { VideoRecipe, WebGLExportPayload } from '../types/video';
|
|
3
|
+
export interface ClientVideoExportSettings {
|
|
4
|
+
quality?: string;
|
|
5
|
+
format?: string;
|
|
6
|
+
}
|
|
7
|
+
export interface ClientVideoExportPreview {
|
|
8
|
+
captureFrameAt?: (timeSeconds: number) => Promise<HTMLCanvasElement | null>;
|
|
9
|
+
ensureReadyForCapture?: () => Promise<boolean>;
|
|
10
|
+
duration?: number | {
|
|
11
|
+
value?: unknown;
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
export interface UseClientVideoExportOptions {
|
|
15
|
+
forcePixiPreview: Ref<boolean>;
|
|
16
|
+
getPreviewRef: () => ClientVideoExportPreview | null;
|
|
17
|
+
getSourceUrl: () => string;
|
|
18
|
+
setPlaying: (playing: boolean) => void;
|
|
19
|
+
}
|
|
20
|
+
export interface UseClientVideoExportReturn {
|
|
21
|
+
canExportClientSide: () => Promise<boolean>;
|
|
22
|
+
renderRecipeWithPixi: (recipe: VideoRecipe, settings?: ClientVideoExportSettings, onProgress?: (percent: number) => void) => Promise<WebGLExportPayload>;
|
|
23
|
+
cancelClientExport: () => void;
|
|
24
|
+
resetClientExport: () => void;
|
|
25
|
+
}
|
|
26
|
+
export declare function resolveClientExportDuration(recipe: VideoRecipe, fallbackDuration?: number): number;
|
|
27
|
+
export declare function useClientVideoExport(options: UseClientVideoExportOptions): UseClientVideoExportReturn;
|
|
@@ -22,7 +22,7 @@ export declare function useLiveStream(mediaUuid?: string): {
|
|
|
22
22
|
auto_record: boolean;
|
|
23
23
|
low_latency: boolean;
|
|
24
24
|
vod_media_uuid?: string | undefined;
|
|
25
|
-
metadata?: Record<string,
|
|
25
|
+
metadata?: Record<string, unknown> | undefined;
|
|
26
26
|
} | null, LiveStream | {
|
|
27
27
|
id: string;
|
|
28
28
|
media_uuid: string;
|
|
@@ -37,7 +37,7 @@ export declare function useLiveStream(mediaUuid?: string): {
|
|
|
37
37
|
auto_record: boolean;
|
|
38
38
|
low_latency: boolean;
|
|
39
39
|
vod_media_uuid?: string | undefined;
|
|
40
|
-
metadata?: Record<string,
|
|
40
|
+
metadata?: Record<string, unknown> | undefined;
|
|
41
41
|
} | null>;
|
|
42
42
|
lowLatency: import("vue").Ref<boolean, boolean>;
|
|
43
43
|
autoRecord: import("vue").Ref<boolean, boolean>;
|
|
@@ -40,7 +40,7 @@ export declare function useRadialMenu(): {
|
|
|
40
40
|
}>;
|
|
41
41
|
activeCategory: import("vue").ComputedRef<number | null>;
|
|
42
42
|
activeFilter: import("vue").ComputedRef<string | null>;
|
|
43
|
-
menuLevel: import("vue").ComputedRef<1 |
|
|
43
|
+
menuLevel: import("vue").ComputedRef<1 | 3 | 2>;
|
|
44
44
|
hoveredCategory: import("vue").Ref<number | null, number | null>;
|
|
45
45
|
filterCategories: FilterCategory[];
|
|
46
46
|
subMenuFilters: import("vue").ComputedRef<Filter[]>;
|
|
@@ -3,14 +3,16 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Core logic for video editing operations
|
|
5
5
|
*/
|
|
6
|
-
import type { VideoRecipe, VideoMedia, AppliedFilter, TextOverlayRecipe, AudioTrackRecipe } from '../types/video';
|
|
6
|
+
import type { VideoRecipe, TimelineClip, VideoMedia, AppliedFilter, TextOverlayRecipe, AudioTrackRecipe, TimelineTransitionRecipe, CaptionTrackRecipe, VisualLayerRecipe } from '../types/video';
|
|
7
7
|
import { MediablesCompositionAdapter } from '../video-engine/adapters/MediablesCompositionAdapter';
|
|
8
8
|
export declare function useVideoEditor(mediaUuid: string, initialRecipe?: VideoRecipe, initialMedia?: VideoMedia): {
|
|
9
|
-
currentFrame: import("vue").Ref<
|
|
9
|
+
currentFrame: import("vue").Ref<unknown, unknown>;
|
|
10
10
|
playheadPosition: import("vue").ComputedRef<number>;
|
|
11
11
|
timelineClips: import("vue").ComputedRef<{
|
|
12
12
|
id: string;
|
|
13
|
-
type: "
|
|
13
|
+
type: import("@/types").TimelineClipKind;
|
|
14
|
+
trackId?: string | undefined;
|
|
15
|
+
sourceRefId?: string | undefined;
|
|
14
16
|
timelineStart: number;
|
|
15
17
|
timelineEnd: number;
|
|
16
18
|
startTime?: number | undefined;
|
|
@@ -24,12 +26,38 @@ export declare function useVideoEditor(mediaUuid: string, initialRecipe?: VideoR
|
|
|
24
26
|
filters?: {
|
|
25
27
|
id: string;
|
|
26
28
|
filterId: string;
|
|
27
|
-
params:
|
|
29
|
+
params: import("@/types").FilterParamMap;
|
|
28
30
|
intensity: number;
|
|
29
31
|
ffmpegCommand?: string | undefined;
|
|
30
32
|
}[] | undefined;
|
|
31
33
|
thumbnail?: string | undefined;
|
|
32
34
|
label?: string | undefined;
|
|
35
|
+
waveformSamples?: readonly {
|
|
36
|
+
index: number;
|
|
37
|
+
time: number;
|
|
38
|
+
duration: number;
|
|
39
|
+
endTime: number;
|
|
40
|
+
peak: number;
|
|
41
|
+
rms: number;
|
|
42
|
+
channel: import("../video/project").WaveformChannel;
|
|
43
|
+
}[] | undefined;
|
|
44
|
+
filmstripFrames?: readonly {
|
|
45
|
+
id: string;
|
|
46
|
+
time: number;
|
|
47
|
+
duration: number | null;
|
|
48
|
+
uri: string;
|
|
49
|
+
width: number;
|
|
50
|
+
height: number;
|
|
51
|
+
aspectRatio: number;
|
|
52
|
+
cacheKey: string | null;
|
|
53
|
+
}[] | undefined;
|
|
54
|
+
keyframes?: readonly {
|
|
55
|
+
id: string;
|
|
56
|
+
target: "opacity" | "scale" | "x" | "y" | "rotation" | "audioVolume";
|
|
57
|
+
time: number;
|
|
58
|
+
value: number;
|
|
59
|
+
easing: import("../video/project").KeyframeAutomationEasing;
|
|
60
|
+
}[] | undefined;
|
|
33
61
|
url?: string | undefined;
|
|
34
62
|
muted?: boolean | undefined;
|
|
35
63
|
scale?: number | undefined;
|
|
@@ -42,12 +70,56 @@ export declare function useVideoEditor(mediaUuid: string, initialRecipe?: VideoR
|
|
|
42
70
|
scale?: number | undefined;
|
|
43
71
|
} | undefined;
|
|
44
72
|
}[]>;
|
|
73
|
+
tracks: import("vue").ComputedRef<{
|
|
74
|
+
id: string;
|
|
75
|
+
type: import("@/types").TimelineTrackType;
|
|
76
|
+
name: string;
|
|
77
|
+
order: number;
|
|
78
|
+
locked?: boolean | undefined;
|
|
79
|
+
hidden?: boolean | undefined;
|
|
80
|
+
muted?: boolean | undefined;
|
|
81
|
+
solo?: boolean | undefined;
|
|
82
|
+
height?: number | undefined;
|
|
83
|
+
clipIds?: string[] | undefined;
|
|
84
|
+
}[]>;
|
|
85
|
+
mediaSources: import("vue").ComputedRef<{
|
|
86
|
+
id: string;
|
|
87
|
+
type: import("@/types").TimelineClipSourceType;
|
|
88
|
+
mediaUuid?: string | undefined;
|
|
89
|
+
url?: string | undefined;
|
|
90
|
+
filename?: string | undefined;
|
|
91
|
+
mimeType?: string | undefined;
|
|
92
|
+
duration?: number | undefined;
|
|
93
|
+
width?: number | undefined;
|
|
94
|
+
height?: number | undefined;
|
|
95
|
+
frameRate?: number | undefined;
|
|
96
|
+
hasAudio?: boolean | undefined;
|
|
97
|
+
thumbnailUrl?: string | undefined;
|
|
98
|
+
isPrivate?: boolean | undefined;
|
|
99
|
+
metadata?: import("@/types").JsonObject | undefined;
|
|
100
|
+
}[]>;
|
|
101
|
+
transitions: import("vue").ComputedRef<{
|
|
102
|
+
id: string;
|
|
103
|
+
type: import("@/types").TimelineTransitionType;
|
|
104
|
+
fromClipId: string;
|
|
105
|
+
toClipId: string;
|
|
106
|
+
duration: number;
|
|
107
|
+
easing: import("@/types").TimelineTransitionEasing;
|
|
108
|
+
cutTime?: number | undefined;
|
|
109
|
+
params?: {
|
|
110
|
+
direction?: "left" | "right" | "up" | "down" | undefined;
|
|
111
|
+
color?: string | undefined;
|
|
112
|
+
softness?: number | undefined;
|
|
113
|
+
} | undefined;
|
|
114
|
+
}[]>;
|
|
45
115
|
totalDuration: import("vue").ComputedRef<number>;
|
|
46
116
|
hasChanges: import("vue").ComputedRef<boolean>;
|
|
47
117
|
isPlaying: import("vue").ComputedRef<boolean>;
|
|
48
118
|
selectedClip: import("vue").ComputedRef<{
|
|
49
119
|
id: string;
|
|
50
|
-
type: "
|
|
120
|
+
type: import("@/types").TimelineClipKind;
|
|
121
|
+
trackId?: string | undefined;
|
|
122
|
+
sourceRefId?: string | undefined;
|
|
51
123
|
timelineStart: number;
|
|
52
124
|
timelineEnd: number;
|
|
53
125
|
startTime?: number | undefined;
|
|
@@ -61,12 +133,38 @@ export declare function useVideoEditor(mediaUuid: string, initialRecipe?: VideoR
|
|
|
61
133
|
filters?: {
|
|
62
134
|
id: string;
|
|
63
135
|
filterId: string;
|
|
64
|
-
params:
|
|
136
|
+
params: import("@/types").FilterParamMap;
|
|
65
137
|
intensity: number;
|
|
66
138
|
ffmpegCommand?: string | undefined;
|
|
67
139
|
}[] | undefined;
|
|
68
140
|
thumbnail?: string | undefined;
|
|
69
141
|
label?: string | undefined;
|
|
142
|
+
waveformSamples?: readonly {
|
|
143
|
+
index: number;
|
|
144
|
+
time: number;
|
|
145
|
+
duration: number;
|
|
146
|
+
endTime: number;
|
|
147
|
+
peak: number;
|
|
148
|
+
rms: number;
|
|
149
|
+
channel: import("../video/project").WaveformChannel;
|
|
150
|
+
}[] | undefined;
|
|
151
|
+
filmstripFrames?: readonly {
|
|
152
|
+
id: string;
|
|
153
|
+
time: number;
|
|
154
|
+
duration: number | null;
|
|
155
|
+
uri: string;
|
|
156
|
+
width: number;
|
|
157
|
+
height: number;
|
|
158
|
+
aspectRatio: number;
|
|
159
|
+
cacheKey: string | null;
|
|
160
|
+
}[] | undefined;
|
|
161
|
+
keyframes?: readonly {
|
|
162
|
+
id: string;
|
|
163
|
+
target: "opacity" | "scale" | "x" | "y" | "rotation" | "audioVolume";
|
|
164
|
+
time: number;
|
|
165
|
+
value: number;
|
|
166
|
+
easing: import("../video/project").KeyframeAutomationEasing;
|
|
167
|
+
}[] | undefined;
|
|
70
168
|
url?: string | undefined;
|
|
71
169
|
muted?: boolean | undefined;
|
|
72
170
|
scale?: number | undefined;
|
|
@@ -90,10 +188,24 @@ export declare function useVideoEditor(mediaUuid: string, initialRecipe?: VideoR
|
|
|
90
188
|
handleClipSelect: (clipId: string | null) => void;
|
|
91
189
|
splitAtPlayhead: () => void;
|
|
92
190
|
deleteSelectedClip: () => void;
|
|
191
|
+
rippleDeleteClip: (clipId: string) => boolean;
|
|
192
|
+
rippleDeleteSelectedClip: () => boolean;
|
|
93
193
|
duplicateSelectedClip: () => void;
|
|
194
|
+
appendMediaSourceToTimeline: (sourceId: string) => TimelineClip | null;
|
|
195
|
+
replaceSelectedClipSource: (sourceId: string) => boolean;
|
|
196
|
+
removeMediaSource: (sourceId: string) => boolean;
|
|
197
|
+
toggleTrackLock: (trackId: string) => boolean;
|
|
198
|
+
toggleTrackHidden: (trackId: string) => boolean;
|
|
199
|
+
toggleTrackMuted: (trackId: string) => boolean;
|
|
200
|
+
toggleTrackSolo: (trackId: string) => boolean;
|
|
94
201
|
setFilters: (filters: AppliedFilter[]) => void;
|
|
95
202
|
setTextOverlays: (overlays: TextOverlayRecipe[]) => void;
|
|
96
203
|
setAudioTracks: (tracks: AudioTrackRecipe[]) => void;
|
|
204
|
+
setCaptionTracks: (tracks: CaptionTrackRecipe[]) => void;
|
|
205
|
+
setVisualLayers: (layers: VisualLayerRecipe[]) => void;
|
|
206
|
+
setTransitions: (transitions: TimelineTransitionRecipe[]) => void;
|
|
207
|
+
setClipKeyframes: (clipId: string, keyframes: NonNullable<TimelineClip["keyframes"]>) => void;
|
|
208
|
+
loadRecipe: (recipe: VideoRecipe) => void;
|
|
97
209
|
moveClip: (clipId: string, newStart: number) => void;
|
|
98
210
|
saveDraft: () => VideoRecipe;
|
|
99
211
|
clearHasChanges: () => void;
|
|
@@ -118,7 +230,7 @@ export declare function useVideoEditor(mediaUuid: string, initialRecipe?: VideoR
|
|
|
118
230
|
canRedo: import("vue").ComputedRef<boolean>;
|
|
119
231
|
initializeComposition: (width?: number, height?: number) => Promise<void>;
|
|
120
232
|
syncCompositionWithState: () => Promise<void>;
|
|
121
|
-
syncWithComposition: (_composition:
|
|
233
|
+
syncWithComposition: (_composition: unknown) => void;
|
|
122
234
|
convertToFrames: (seconds: number) => number;
|
|
123
235
|
convertToSeconds: (frames: number) => number;
|
|
124
236
|
seekToFrame: (frame: number) => void;
|
|
@@ -53,13 +53,13 @@ export declare function useVideoFilters(): {
|
|
|
53
53
|
activeFilters: import("vue").Ref<{
|
|
54
54
|
id: string;
|
|
55
55
|
filterId: string;
|
|
56
|
-
params:
|
|
56
|
+
params: import("@/types").FilterParamMap;
|
|
57
57
|
intensity: number;
|
|
58
58
|
ffmpegCommand?: string | undefined;
|
|
59
59
|
}[], AppliedFilter[] | {
|
|
60
60
|
id: string;
|
|
61
61
|
filterId: string;
|
|
62
|
-
params:
|
|
62
|
+
params: import("@/types").FilterParamMap;
|
|
63
63
|
intensity: number;
|
|
64
64
|
ffmpegCommand?: string | undefined;
|
|
65
65
|
}[]>;
|
|
@@ -147,13 +147,13 @@ export declare function useVideoFilters(): {
|
|
|
147
147
|
previewFilter: import("vue").Ref<{
|
|
148
148
|
id: string;
|
|
149
149
|
filterId: string;
|
|
150
|
-
params:
|
|
150
|
+
params: import("@/types").FilterParamMap;
|
|
151
151
|
intensity: number;
|
|
152
152
|
ffmpegCommand?: string | undefined;
|
|
153
153
|
} | null, AppliedFilter | {
|
|
154
154
|
id: string;
|
|
155
155
|
filterId: string;
|
|
156
|
-
params:
|
|
156
|
+
params: import("@/types").FilterParamMap;
|
|
157
157
|
intensity: number;
|
|
158
158
|
ffmpegCommand?: string | undefined;
|
|
159
159
|
} | null>;
|