UNPKG

claritykit-svelte

Version:

A comprehensive Svelte component library focused on accessibility, ADHD-optimized design, developer experience, and full SSR compatibility

121 lines 4.17 kB
import type { CollaborativeUser, ChartAnnotation } from './CollaborativeChart.svelte'; /** * Generate a random user color from a predefined palette */ export declare function generateUserColor(): string; /** * Generate a unique room ID for collaboration */ export declare function generateRoomId(prefix?: string): string; /** * Validate and sanitize user input for collaboration */ export declare function sanitizeUserInput(input: string): string; /** * Calculate relative position from absolute coordinates */ export declare function getRelativePosition(clientX: number, clientY: number, container: HTMLElement): { x: number; y: number; }; /** * Throttle function calls for performance */ export declare function throttle<T extends (...args: any[]) => any>(func: T, delay: number): (...args: Parameters<T>) => void; /** * Debounce function calls */ export declare function debounce<T extends (...args: any[]) => any>(func: T, delay: number): (...args: Parameters<T>) => void; /** * Create a conflict-free replicated data type (CRDT) for chart data */ export declare class ChartDataCRDT { private data; private timestamps; set(key: string, value: any, timestamp?: number): boolean; get(key: string): any; delete(key: string, timestamp?: number): boolean; getAll(): Record<string, any>; merge(other: ChartDataCRDT): void; serialize(): string; static deserialize(serialized: string): ChartDataCRDT; } /** * Conflict resolution strategies for collaborative editing */ export declare const ConflictResolution: { /** * Last-writer-wins strategy */ lastWriterWins: (local: any, remote: any, localTime: number, remoteTime: number) => any; /** * Merge arrays by concatenating and removing duplicates */ mergeArrays: (local: any[], remote: any[]) => any[]; /** * Merge objects by combining properties */ mergeObjects: (local: Record<string, any>, remote: Record<string, any>) => { [x: string]: any; }; }; /** * Presence awareness utilities */ export declare class PresenceManager { private users; private callbacks; addUser(user: CollaborativeUser): void; updateUser(userId: string, updates: Partial<CollaborativeUser>): void; removeUser(userId: string): void; getUsers(): CollaborativeUser[]; getActiveUsers(timeoutMs?: number): CollaborativeUser[]; subscribe(callback: (users: CollaborativeUser[]) => void): () => void; private notifyCallbacks; cleanupInactiveUsers(timeoutMs?: number): void; } /** * Annotation synchronization utilities */ export declare class AnnotationSync { private annotations; addAnnotation(annotation: ChartAnnotation): void; updateAnnotation(id: string, updates: Partial<ChartAnnotation>): boolean; removeAnnotation(id: string): boolean; getAnnotations(): ChartAnnotation[]; getAnnotationsByUser(userId: string): ChartAnnotation[]; getAnnotationsByType(type: ChartAnnotation['type']): ChartAnnotation[]; clearUserAnnotations(userId: string): void; serialize(): string; deserialize(serialized: string): void; } /** * Connection quality monitoring */ export declare class ConnectionMonitor { private latencyHistory; private maxHistorySize; private callbacks; recordLatency(latency: number): void; getAverageLatency(): number; getConnectionQuality(): 'good' | 'fair' | 'poor'; subscribe(callback: (quality: 'good' | 'fair' | 'poor') => void): () => void; private notifyCallbacks; } /** * Operational Transform (OT) utilities for text-based annotations */ export declare class TextOperationTransform { static transform(op1: TextOperation, op2: TextOperation): [TextOperation, TextOperation]; } export interface TextOperation { type: 'insert' | 'delete' | 'retain'; position: number; text?: string; length?: number; } /** * Export utilities for collaborative sessions */ export declare function exportCollaborativeSession(data: any[], annotations: ChartAnnotation[], users: CollaborativeUser[], metadata: Record<string, any>): string; //# sourceMappingURL=collaboration-utils.d.ts.map