Skip to content

Clipboard

ClipboardConfig (Extended from @revolist/revogrid)

Section titled “ClipboardConfig (Extended from @revolist/revogrid)”
interface ClipboardConfig {
/** Additional rich clipboard formats used by ClipboardPlugin. */
formats?: readonly ClipboardFormatHandler[];
/** Maximum decoded cells. Defaults to 1,000,000. */
maxCells?: number;
/** Maximum bytes inspected in one text representation. Defaults to 16 MiB. */
maxBytes?: number
}

HTMLRevoGridElementEventMap (Extended from global)

Section titled “HTMLRevoGridElementEventMap (Extended from global)”
interface HTMLRevoGridElementEventMap {
clipboardformaterror: ClipboardFormatDiagnostic
}

Browser-rich, Excel-compatible clipboard orchestration for RevoGrid Pro.

  • Optional DataGridFormattingPlugin: Uses DataGridFormattingPlugin when available to import and apply rich formatting.
class ClipboardPlugin {
registerFormat(handler: ClipboardFormatHandler): () => void;
registerMetadataContributor(contributor: ClipboardMetadataContributor): () => void;
}

Converts a value matrix into one dense clipboard-document range.

export function matrixToClipboardDocument(
matrix: readonly (readonly DataFormat[])[],
source = 'revogrid',
): ClipboardDocument;

Materializes positioned clipboard ranges as one dense value matrix.

export function clipboardDocumentToMatrix(document: ClipboardDocument): DataFormat[][];

Counts the rectangular cell capacity declared by a clipboard document.

export function countClipboardCells(document: ClipboardDocument);

Validates the supported clipboard document wire shape.

export function isClipboardDocument(value: unknown): value is ClipboardDocument;

export function createExcelHtmlClipboardFormat(
formatting?: ClipboardExcelFormattingAdapter,
): ClipboardFormatHandler;

export function createGenericHtmlClipboardFormat(
formatting?: ClipboardExcelFormattingAdapter,
): ClipboardFormatHandler;

export function extractCfHtml(value: string): string;

export function parseHtmlClipboard(
raw: string,
options: {
source: string;
maxBytes: number;
maxCells: number;
formatting?: ClipboardExcelFormattingAdapter;
},
): ClipboardDocument | null;

export function serializeExcelHtml(
document: ClipboardDocument,
formatting?: ClipboardExcelFormattingAdapter,
): string;

interface ClipboardExcelFormattingAdapter {
importFormat(declarations: readonly string[]): ClipboardCell['format'];
importValue(displayText: string, format?: ClipboardCell['format']): unknown;
exportFormat(format: NonNullable<ClipboardCell['format']>): string | undefined;
exportValue(
value: unknown,
format: NonNullable<ClipboardCell['format']>,
): { readonly value: unknown; readonly displayText: string }
}

Value-only default. ClipboardPlugin supplies the formatting runtime adapter.

excelHtmlClipboardFormat: ClipboardFormatHandler<any>;

Value-only default. ClipboardPlugin supplies the formatting runtime adapter.

genericHtmlClipboardFormat: ClipboardFormatHandler<any>;

export function parseDelimitedText(value: string, delimiter: string): string[][];

export function serializeDelimitedText(
matrix: readonly (readonly unknown[])[],
delimiter: string,
): string;

plainTextClipboardFormat: {
id: string;
mimeTypes: string[];
priority: number;
read: ({ transfer, maxBytes, maxCells }: ClipboardFormatReadContext) => ClipboardDocument<any>;
write: ({ document }: ClipboardFormatWriteContext<any>) => { type: string; data: string; }[];
};

class ClipboardFormatRegistry {
register(handler: ClipboardFormatHandler): () => void;
read(transfer: ClipboardDataReader, limits: { maxCells: number; maxBytes: number });
write(document: ClipboardDocument, transfer: ClipboardDataWriter): void;
}

Resolves clipboard limits and custom formats from the grid configuration.

export function resolveClipboardPluginConfig(
useClipboard: boolean | ClipboardConfig | undefined,
): ResolvedClipboardPluginConfig;

REVOGRID_CLIPBOARD_MIME: string;

REVOGRID_CLIPBOARD_VERSION: 2;

interface ClipboardCell {
readonly value: T;
readonly displayText?: string;
readonly formula?: string;
/** `null` explicitly copies an ordinary RevoGrid cell with no effective format. */
readonly format?: DataGridCellFormat | null;
readonly metadata?: Readonly<Record<string, unknown>>
}

interface ClipboardRange {
readonly row: number;
readonly col: number;
readonly width: number;
readonly height: number;
readonly cells: readonly ClipboardCell<T>[];
readonly merges?: readonly MergeData[];
readonly columnWidths?: readonly (number | undefined)[];
readonly rowHeights?: readonly (number | undefined)[];
readonly rowType?: DimensionRows;
readonly colType?: DimensionCols;
readonly metadata?: Readonly<Record<string, unknown>>
}

interface ClipboardDocument {
readonly version: typeof REVOGRID_CLIPBOARD_VERSION;
readonly source: string;
readonly ranges: readonly ClipboardRange<T>[];
readonly metadata?: Readonly<Record<string, unknown>>
}

interface ClipboardDataReader {
readonly types: readonly string[];
getData(type: string): string
}

interface ClipboardDataWriter {
setData(type: string, value: string): void
}

interface ClipboardFormatReadContext {
readonly transfer: ClipboardDataReader;
readonly maxCells: number;
readonly maxBytes: number
}

interface ClipboardFormatWriteContext {
readonly document: ClipboardDocument<T>
}

interface ClipboardRepresentation {
readonly type: string;
readonly data: string
}

interface ClipboardFormatHandler {
readonly id: string;
readonly mimeTypes: readonly string[];
readonly priority?: number;
canRead?(context: ClipboardFormatReadContext): boolean;
read(context: ClipboardFormatReadContext): ClipboardDocument<T> | null;
write?(context: ClipboardFormatWriteContext<T>): readonly ClipboardRepresentation[]
}

interface ClipboardMetadataCaptureContext {
readonly document: ClipboardDocument<T>;
readonly providers: PluginProviders
}

interface ClipboardMetadataApplyContext {
readonly document: ClipboardDocument<T>;
readonly providers: PluginProviders
}

interface ClipboardMetadataContributor {
readonly id: string;
capture?(context: ClipboardMetadataCaptureContext<T>): unknown;
apply?(metadata: unknown, context: ClipboardMetadataApplyContext<T>): void
}

interface ClipboardFormatDiagnostic {
readonly phase: 'read' | 'write' | 'metadata';
readonly handlerId: string;
readonly error: unknown
}

interface ClipboardPluginConfig {
readonly formats?: readonly ClipboardFormatHandler[];
readonly maxCells?: number;
readonly maxBytes?: number
}

interface ResolvedClipboardPluginConfig {
readonly formats: readonly ClipboardFormatHandler[];
readonly maxCells: number;
readonly maxBytes: number
}

Captures current grid selections as a rich clipboard document.

export function captureClipboardSelection(
context: ClipboardCaptureContext,
matrix?: DataFormat[][],
): ClipboardDocument | null;

Reads the active provider-backed selection as normalized clipboard coordinates.

export function getActiveClipboardSelection(
providers: PluginProviders,
): ClipboardSelection[] | null;

Returns the focused viewport cell used as the paste origin.

export function getClipboardPasteStart(
providers: PluginProviders,
): ClipboardPasteStart | null;

Converts viewport selections into offsets from their shared whole-grid origin.

export function getClipboardSelectionOffsets(
selections: readonly ClipboardSelection[],
providers: PluginProviders,
);

Creates a cached coordinate resolver for one copy or paste operation.

export function createClipboardCoordinateResolver(
providers: PluginProviders,
start: ClipboardPasteStart,
): ClipboardCoordinateResolver;

Visits every valid cell stored in a clipboard document without an intermediate array.

export function forEachClipboardDocumentCell(
document: ClipboardDocument,
visit: (entry: ClipboardDocumentCell) => boolean | void,
): boolean;

Returns the only stored document cell, or null when the count is not one.

export function getSingleClipboardDocumentCell(document: ClipboardDocument);

Resolves one row-major range cell into its document-relative offset.

export function getClipboardRangeCellOffset(
range: ClipboardRange,
index: number,
): ClipboardCellOffset | null;

Computes clipboard-document bounds in one pass.

export function getClipboardDocumentBounds(document: ClipboardDocument);

Counts the rectangular capacity declared by all clipboard ranges.

export function getClipboardCellCount(document: ClipboardDocument);

Flattens a matrix into a dense row-major clipboard range.

export function getClipboardMatrixData(
matrix: readonly (readonly DataFormat[])[],
);

Builds a dense value matrix from positioned clipboard ranges.

export function createClipboardMatrix(document: ClipboardDocument): DataFormat[][];

Resolves the absolute destination used to restore an Excel formula.

export function getClipboardFormulaDestination(
resolver: ClipboardCoordinateResolver,
range: ClipboardRange,
cellIndex: number,
);

Visits every projected destination for a one-cell range-fill paste.

export function forEachClipboardRangeFillCell(
selection: ClipboardSelection,
start: ClipboardPasteStart,
cell: ClipboardCell,
visit: (entry: ClipboardDocumentCell) => boolean | void,
): boolean;

Checks whether a managed paste outcome includes one resolved target.

export function clipboardOutcomeIncludesTarget(
detail: {
type?: DimensionRows;
data?: Record<number, Record<string, unknown>>;
} | undefined,
target: ClipboardResolvedPasteTarget,
);

Repositions clipboard merge metadata at a resolved viewport target.

export function createClipboardTargetMerge(
merge: MergeData,
target: ClipboardPasteStart,
): MergeData;

Converts an in-selection merge into clipboard-relative coordinates.

export function captureClipboardMerge(
merge: MergeData,
area: RangeArea,
rowType: DimensionRows,
colType: DimensionCols,
): MergeData | null;

Returns the inclusive paste bounds of a clipboard merge.

export function getClipboardMergeOffsets(
range: ClipboardRange,
merge: MergeData,
);

Visits every document-relative cell covered by a clipboard merge.

export function forEachClipboardMergeCell(
range: ClipboardRange,
merge: MergeData,
visit: (offset: ClipboardCellOffset) => boolean | void,
): boolean;

Checks whether two same-viewport merge rectangles overlap.

export function clipboardMergesOverlap(left: MergeData, right: MergeData);

export type ClipboardPasteStart = ViewportCellAddress;

export type ClipboardResolvedPasteTarget = ResolvedViewportCell;

export type ClipboardMetadataTargetFilter = (target: ClipboardResolvedPasteTarget) => boolean;

interface ClipboardSelection {
readonly rowType: DimensionRows;
readonly colType: DimensionCols;
readonly range: RangeArea
}

interface ClipboardCellOffset {
readonly rowOffset: number;
readonly colOffset: number
}

ClipboardDocumentCell (Extended from coordinates.ts)

Section titled “ClipboardDocumentCell (Extended from coordinates.ts)”
interface ClipboardDocumentCell {
readonly cell: ClipboardCell
}

Resolves clipboard offsets through one cached provider-coordinate snapshot.

interface ClipboardCoordinateResolver {
/** Converts a document offset into a whole-grid row and column. */
getAbsoluteCell(offset: ClipboardCellOffset): { readonly row: number; readonly column: number };
/** Reads cached source and item mappings for one viewport pair. */
getViewportSources(rowType: DimensionRows, colType: DimensionCols): ClipboardViewportSources | null;
/** Resolves a document offset to its model-backed grid cell. */
resolveTarget(offset: ClipboardCellOffset): ClipboardResolvedPasteTarget | null;
/** Resolves a document offset to its viewport-local address. */
resolveTargetAddress(offset: ClipboardCellOffset): ClipboardPasteStart | null;
/** Converts a resolved cell from visible indexes to physical source indexes. */
getPhysicalCellAddress(target: ClipboardResolvedPasteTarget): {
readonly row: number;
readonly column: number;
readonly rowType: DimensionRows;
readonly colType: DimensionCols;
};
/** Converts a resolved column from its visible index to its physical source index. */
getPhysicalColumnAddress(target: ClipboardResolvedPasteTarget): {
readonly column: number;
readonly colType: DimensionCols;
};
/** Returns the cached physical row source for readonly evaluation. */
getTargetRowSource(target: ClipboardResolvedPasteTarget): DataType[]
}

Finds the installed data-grid formatting runtime, when available.

export function resolveClipboardFormattingRuntime(
providers: PluginProviders,
): DataGridFormattingRuntime | undefined;

Applies rich clipboard formats to every accepted destination cell.

export function applyClipboardFormatting(
context: ClipboardFormattingContext,
document: ClipboardDocument,
start: ClipboardPasteStart,
targetFilter?: ClipboardMetadataTargetFilter,
): void;

Checks that pasted values match every effective destination editor domain.

export function isClipboardPasteValueCompatible(
context: ClipboardFormattingContext,
document: ClipboardDocument,
start: ClipboardPasteStart,
): boolean;

Rebases stored Excel R1C1 formulas against the current paste destination.

export function resolveClipboardPasteFormulas(
providers: PluginProviders,
document: ClipboardDocument,
start: ClipboardPasteStart,
): ClipboardDocument;

Checks provider readonly policy for one resolved clipboard destination.

export function isWritableClipboardTarget(
resolver: ClipboardCoordinateResolver,
target: ClipboardResolvedPasteTarget,
): boolean;

Converts multi-range rich data into the legacy sparse clipboard payload.

export function clipboardDocumentToSparsePayload(
document: ClipboardDocument,
): MultiRangeClipboardPayload | null;

Captures merges fully contained by one copied viewport range.

export function captureClipboardMerges(
revogrid: HTMLRevoGridElement,
area: RangeArea,
rowType: DimensionRows,
colType: DimensionCols,
);

Applies valid, writable clipboard merges at the paste destination.

export function applyClipboardStructure(
context: ClipboardStructureContext,
document: ClipboardDocument,
start: ClipboardPasteStart,
targetFilter?: ClipboardMetadataTargetFilter,
): void;

Convert browser-visible Excel R1C1 references into FormulaPlugin-compatible A1 references.

export function normalizeExcelClipboardFormula(
value: string,
rowIndex: number,
columnIndex: number,
): string;

Convert FormulaPlugin-compatible A1 references into Excel HTML R1C1 references.

export function toExcelClipboardFormula(
value: string,
rowIndex: number,
columnIndex: number,
): string;

export function cloneClipboardDocument(document: ClipboardDocument): ClipboardDocument;

revogridJsonClipboardFormat: {
id: string;
mimeTypes: string[];
priority: number;
read: ({ transfer, maxBytes, maxCells }: ClipboardFormatReadContext) => ClipboardDocument<any> | null;
write: ({ document }: ClipboardFormatWriteContext<any>) => { type: string; data: string; }[];
};