/** * Velo Plot - Clipboard Module * * Provides clipboard operations for copying chart data to various formats. * Supports copying selected points, visible data, or all data. * * @module clipboard */ export type ClipboardFormat = 'tsv' | 'csv' | 'json' | 'markdown'; export interface ClipboardOptions { /** Output format (default: 'tsv' - Excel compatible) */ format?: ClipboardFormat; /** Include column headers (default: true) */ includeHeaders?: boolean; /** Decimal precision (default: 6) */ precision?: number; /** Use scientific notation for very large/small numbers (default: true) */ scientific?: boolean; /** Scientific notation threshold (default: 1e6) */ scientificThreshold?: number; /** Custom column separator (overrides format default) */ separator?: string; /** Custom line separator (default: '\n') */ lineSeparator?: string; /** Include series name in output (default: true for multi-series) */ includeSeriesName?: boolean; /** Custom header names */ headers?: { x?: string; y?: string; series?: string; }; } export interface ClipboardDataPoint { x: number; y: number; seriesId?: string; seriesName?: string; index?: number; } export interface ClipboardResult { /** Whether the copy was successful */ success: boolean; /** Number of points copied */ pointCount: number; /** Number of series included */ seriesCount: number; /** The formatted text that was copied */ text?: string; /** Error message if failed */ error?: string; } export declare class ClipboardManager { private defaultOptions; constructor(options?: Partial); /** * Copy data points to clipboard */ copyPoints(points: ClipboardDataPoint[], options?: Partial): Promise; /** * Copy series data to clipboard */ copySeries(seriesData: { id: string; name?: string; x: Float32Array | Float64Array; y: Float32Array | Float64Array; }[], options?: Partial): Promise; /** * Format data points to string */ formatPoints(points: ClipboardDataPoint[], options: ClipboardOptions): string; /** * Format as delimited text (TSV/CSV) */ private formatAsDelimited; /** * Format as JSON */ private formatAsJson; /** * Format as Markdown table */ private formatAsMarkdown; /** * Format a number for output */ private formatNumber; /** * Round a number to specified precision */ private roundNumber; /** * Write text to system clipboard */ private writeToClipboard; /** * Fallback clipboard copy using hidden textarea */ private fallbackCopyToClipboard; /** * Read from clipboard (for paste functionality) */ readFromClipboard(): Promise; /** * Parse clipboard text to data points */ parseClipboardData(text: string, format?: ClipboardFormat): ClipboardDataPoint[]; /** * Detect format from text content */ private detectFormat; /** * Parse JSON data */ private parseJson; /** * Set default options */ setDefaults(options: Partial): void; /** * Get current default options */ getDefaults(): ClipboardOptions; } /** * Get the global clipboard manager instance */ export declare function getClipboardManager(): ClipboardManager; /** * Copy data points to clipboard (convenience function) */ export declare function copyToClipboard(points: ClipboardDataPoint[], options?: Partial): Promise; /** * Format data as delimited string (without copying) */ export declare function formatData(points: ClipboardDataPoint[], options?: Partial): string;