UNPKG

ngxsmk-datatable

Version:

A powerful, feature-rich Angular datatable component with virtual scrolling, built for Angular 17+

137 lines (136 loc) 3.6 kB
import { OnDestroy } from '@angular/core'; import { Observable } from 'rxjs'; import { CollaborativeEditingConfig, CollaborativeOperation, CollaborativeUser, CollaborativeSession, CollaborativeConflict, CollaborativeCursor, CollaborativeSelection } from '../interfaces/collaborative-editing.interface'; import * as i0 from "@angular/core"; /** * Collaborative Editing Service * Enables real-time multi-user editing with WebSocket support */ export declare class CollaborativeEditingService implements OnDestroy { private websocket; private config; private reconnectAttempts; private readonly maxReconnectAttempts; private reconnectTimer; private presenceTimer?; private sessionSubject; private activeUsersSubject; private operationsSubject; private conflictsSubject; private connectionStatusSubject; readonly session$: Observable<CollaborativeSession | null>; readonly activeUsers$: Observable<CollaborativeUser[]>; readonly operations$: Observable<CollaborativeOperation>; readonly conflicts$: Observable<CollaborativeConflict>; readonly connectionStatus$: Observable<"error" | "connected" | "connecting" | "disconnected">; private operations; private currentVersion; constructor(); /** * Initialize collaborative editing */ initialize(config: CollaborativeEditingConfig): Promise<void>; /** * Connect to WebSocket server */ private connect; /** * Disconnect from WebSocket */ disconnect(): void; /** * Broadcast operation to other users */ broadcastOperation(operation: CollaborativeOperation): void; /** * Update cursor position */ updateCursor(cursor: CollaborativeCursor): void; /** * Update selection */ updateSelection(selection: CollaborativeSelection): void; /** * Request sync */ requestSync(): void; /** * Get active users */ getActiveUsers(): CollaborativeUser[]; /** * Get current session */ getSession(): CollaborativeSession | null; /** * Handle WebSocket open */ private handleOpen; /** * Handle WebSocket message */ private handleMessage; /** * Handle operation message */ private handleOperationMessage; /** * Handle presence message */ private handlePresenceMessage; /** * Handle cursor message */ private handleCursorMessage; /** * Handle selection message */ private handleSelectionMessage; /** * Handle join message */ private handleJoinMessage; /** * Handle leave message */ private handleLeaveMessage; /** * Handle sync message */ private handleSyncMessage; /** * Handle WebSocket error */ private handleError; /** * Handle WebSocket close */ private handleClose; /** * Attempt to reconnect */ private attemptReconnect; /** * Send message to WebSocket */ private sendMessage; /** * Start presence broadcast */ private startPresenceBroadcast; /** * Apply operational transformation */ private applyOperationalTransform; /** * Check if operations conflict */ private operationsConflict; /** * Generate random user color */ private generateUserColor; ngOnDestroy(): void; static ɵfac: i0.ɵɵFactoryDeclaration<CollaborativeEditingService, never>; static ɵprov: i0.ɵɵInjectableDeclaration<CollaborativeEditingService>; }