/** * PRESENTATION EDITOR CORE * Slide-based collaborative presentation editor * * Features: * - Slide canvas rendering * - Element palette (shapes, images, text) * - Slide navigation and management * - Element positioning and alignment * - Animations and transitions * - Presentation mode with speaker notes */ export interface Point { x: number; y: number; } export interface Rect { x: number; y: number; width: number; height: number; } export interface ElementStyle { fill?: string; stroke?: string; strokeWidth?: number; opacity?: number; rotation?: number; shadow?: { offsetX: number; offsetY: number; blur: number; color: string; }; } export interface TextElement { type: 'text'; id: string; bounds: Rect; content: string; fontSize: number; fontFamily: string; fontWeight: 'normal' | 'bold'; textAlign: 'left' | 'center' | 'right'; textColor: string; style: ElementStyle; } export interface ShapeElement { type: 'shape'; id: string; shapeType: 'rectangle' | 'circle' | 'line' | 'polygon'; bounds: Rect; style: ElementStyle; } export interface ImageElement { type: 'image'; id: string; bounds: Rect; src: string; alt?: string; style: ElementStyle; } export type SlideElement = TextElement | ShapeElement | ImageElement; export interface Slide { id: string; title: string; layout: 'blank' | 'title-content' | 'title-only'; elements: SlideElement[]; backgroundColor?: string; backgroundImage?: string; notes?: string; transitionType?: 'fade' | 'slide' | 'zoom'; transitionDuration?: number; } export interface Presentation { id: string; title: string; slides: Slide[]; currentSlideIndex: number; theme?: { primaryColor: string; secondaryColor: string; fontFamily: string; }; } /** * Create new slide */ export declare function createSlide(id: string, title: string, layout: Slide['layout']): Slide; /** * Add element to slide */ export declare function addElement(slide: Slide, element: SlideElement): Slide; /** * Remove element from slide */ export declare function removeElement(slide: Slide, elementId: string): Slide; /** * Update element */ export declare function updateElement(slide: Slide, elementId: string, updates: Partial): Slide; /** * Move element */ export declare function moveElement(slide: Slide, elementId: string, newBounds: Rect): Slide; /** * Resize element */ export declare function resizeElement(slide: Slide, elementId: string, newBounds: Rect): Slide; /** * Rotate element */ export declare function rotateElement(slide: Slide, elementId: string, angle: number): Slide; /** * Align elements */ export declare function alignElements(slide: Slide, elementIds: string[], alignment: 'left' | 'center' | 'right' | 'top' | 'middle' | 'bottom'): Slide; /** * Group elements (for selection) */ export declare function selectElements(slide: Slide, elementIds: string[]): SlideElement[]; /** * Duplicate element */ export declare function duplicateElement(slide: Slide, elementId: string): Slide; /** * Bring element to front */ export declare function bringToFront(slide: Slide, elementId: string): Slide; /** * Send element to back */ export declare function sendToBack(slide: Slide, elementId: string): Slide; /** * Get element at point (for click detection) */ export declare function getElementAtPoint(slide: Slide, point: Point): SlideElement | undefined; /** * Create text element */ export declare function createTextElement(id: string, bounds: Rect, content: string): TextElement; /** * Create shape element */ export declare function createShapeElement(id: string, bounds: Rect, shapeType: ShapeElement['shapeType']): ShapeElement; /** * Create image element */ export declare function createImageElement(id: string, bounds: Rect, src: string): ImageElement; //# sourceMappingURL=presentation.d.ts.map