Clipboard plugin for Trellis — copy/paste table data as TSV, integrating with Excel and Google Sheets.
pnpm add @trellisjs/plugin-clipboardimport { createTrellis } from '@trellisjs/core';
import { createClipboardPlugin } from '@trellisjs/plugin-clipboard';
const trellis = createTrellis({
data,
columns,
plugins: [
createClipboardPlugin(),
],
});When used together with @trellisjs/plugin-selection, only selected rows are copied. If no rows are selected, all data is copied.
import { createSelectionPlugin } from '@trellisjs/plugin-selection';
import { createClipboardPlugin } from '@trellisjs/plugin-clipboard';
const trellis = createTrellis({
data,
columns,
plugins: [
createSelectionPlugin(),
createClipboardPlugin(),
],
});interface ClipboardPluginOptions {
copyHeaders?: boolean; // Include header row in copy (default: true)
delimiter?: '\t' | ','; // Field delimiter (default: '\t')
headerAccessor?: (col: ColumnDef) => string; // Custom header text
}| Event | Payload | Description |
|---|---|---|
clipboard:copied |
{ rows: DataRow[], text: string } |
Fired after data is written to clipboard |
clipboard:paste |
{ rows: Record<string, string>[], raw: string } |
Fired when TSV text is parsed from clipboard |
clipboard:error |
{ action: 'copy' | 'paste', error: Error } |
Fired on clipboard API failure |
| Event | Description |
|---|---|
clipboard:copy |
Trigger copy (no payload) |
clipboard:paste |
Trigger paste (no payload) |
- Ctrl/Cmd + C — Copy selected rows (or all data) to clipboard
- Ctrl/Cmd + V — Paste TSV text from clipboard
Copied text uses tab (\t) separated fields and newline (\n) separated rows, compatible with Excel and Google Sheets paste.
Paste parsing maps fields to columns by order and supports automatic header detection (case-insensitive match with column.header).
- Browser with
navigator.clipboardAPI (requires HTTPS or localhost)