realtimecursor
Version:
Real-time collaboration system with cursor tracking and approval workflow
67 lines (66 loc) • 1.82 kB
TypeScript
import React from 'react';
export interface CursorProps {
x: number;
y: number;
user: {
name: string;
color: string;
};
}
export interface TextCursorProps {
textPosition: number;
content: string;
editorRef: React.RefObject<HTMLTextAreaElement | HTMLInputElement>;
user: {
name: string;
color: string;
};
}
export interface CursorOverlayProps {
cursors: Record<string, any>;
content?: string;
editorRef?: React.RefObject<HTMLTextAreaElement | HTMLInputElement>;
}
export interface CollaboratorInfo {
id: string;
name: string;
color: string;
socketId: string;
}
export interface CollaboratorsListProps {
collaborators: CollaboratorInfo[];
typingUsers?: string[];
}
/**
* Cursor component - displays a cursor at a specific position
*/
export declare const Cursor: React.FC<CursorProps>;
/**
* TextCursor component - displays a cursor at a specific text position
*/
export declare const TextCursor: React.FC<TextCursorProps>;
/**
* CursorOverlay component - displays all cursors
*/
export declare const CursorOverlay: React.FC<CursorOverlayProps>;
/**
* CollaboratorsList component - displays a list of collaborators
*/
export declare const CollaboratorsList: React.FC<CollaboratorsListProps>;
/**
* CollaborativeTextarea component - a textarea with real-time collaboration
*/
export declare const CollaborativeTextarea: React.FC<{
value: string;
onChange: (value: string) => void;
onCursorMove?: (position: {
x: number;
y: number;
textPosition?: number;
}) => void;
onCursorPositionChange?: (position: number) => void;
onTypingStatusChange?: (isTyping: boolean) => void;
className?: string;
style?: React.CSSProperties;
placeholder?: string;
}>;