ems-editor
Version:
EMS Video Editor SDK - Universal JavaScript SDK for external video editor integration
191 lines (190 loc) • 4.87 kB
TypeScript
/**
* 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;