UNPKG

ems-editor

Version:

EMS Video Editor SDK - Universal JavaScript SDK for external video editor integration

191 lines (190 loc) 4.87 kB
/** * EMS Editor SDK - Simple and Reliable * Handles communication between external apps and iframe editor */ export interface EMSEditorConfig { serverUrl: string; sessionId?: string; } export interface WebSocketMessage { type: string; payload: any; sessionId?: string; } export interface AssetInfo { id: string | number; name: string; type: 'video' | 'audio' | 'image'; fileUrl: string; proxyUrl?: string; width?: number; height?: number; duration?: number; mamAssetId?: string | number; } export interface ImportFromAssetsResult { success: boolean; templateId: string; workspaceId: string; templateName: string; tracksCount: number; elementsCount: number; timestamp: string; error?: string; } export declare class EMSEditor { private config; private ws; private sessionId; private connected; private ready; private eventListeners; private iframe; constructor(config: EMSEditorConfig); private connect; private registerSession; private handleMessage; /** * Set iframe reference for the editor */ setIframe(iframe: HTMLIFrameElement): void; /** * Login to MAM system */ loginToMAM(mamConfig: any): Promise<void>; /** * Logout from MAM system */ logoutFromMAM(): Promise<void>; /** * Set theme (light or dark) */ setTheme(theme: 'light' | 'dark'): Promise<void>; /** * Update theme with preset theme ID or custom theme object */ updateTheme(themeId?: string, customTheme?: any): Promise<void>; /** * Customize theme with primary, secondary, background colors */ customizeTheme(themeConfig: { primary?: string; secondary?: string; background?: string; accent?: string; }): Promise<void>; /** * Generate color palette from base color */ private generateColorPalette; /** * Adjust color lightness */ private adjustColor; /** * Import template */ importTemplate(templateData: any): Promise<ImportFromAssetsResult>; /** * Import template from assets array - Auto-generates template with video/audio track separation */ importFromAssets(assets: AssetInfo[], options?: { name?: string; description?: string; width?: number; height?: number; fps?: number; backgroundColor?: string; }): Promise<ImportFromAssetsResult>; /** * Generate tracks from assets with proper video/audio separation */ private generateTracksFromAssets; /** * Find existing track or create new one */ private findOrCreateTrack; /** * Create video element with linking */ private createVideoElement; /** * Create audio element with linking */ private createAudioElement; /** * Create audio-only element */ private createAudioOnlyElement; /** * Create image element */ private createImageElement; /** * Calculate transform for asset positioning */ private calculateTransform; /** * Generate UUID */ private generateUUID; /** * Generate element ID */ private generateElementId; /** * Start render process */ startRender(renderOptions: any): Promise<void>; /** * Clear all workspaces/tabs in the editor */ clearWorkspaces(): Promise<void>; /** * Get list of all open workspaces in the editor */ getWorkspacesList(): Promise<any[]>; /** * MAM Upload Event Handlers */ /** * Track MAM upload progress for a specific job */ trackMAMUpload(jobId: string, callbacks?: { onProgress?: (progress: any) => void; onStageChange?: (stage: string, data: any) => void; onComplete?: (result: any) => void; onError?: (error: string) => void; }): { trackingId: string; stop: () => void; }; /** * Start render with MAM upload tracking */ startRenderWithMAMUpload(renderOptions: any, mamUploadCallbacks?: { onProgress?: (progress: any) => void; onStageChange?: (stage: string, data: any) => void; onComplete?: (result: any) => void; onError?: (error: string) => void; }): Promise<{ jobId?: string; tracker: { trackingId: string; stop: () => void; }; }>; isConnected(): boolean; isReady(): boolean; getSessionId(): string; on(event: string, listener: Function): void; off(event: string, listener: Function): void; once(event: string, listener: Function): void; private emit; private sendMessage; /** * Disconnect and cleanup */ destroy(): void; } export default EMSEditor;