Skip to main content
Version: 4.3

useClipboard()

function useClipboard(): ClipboardApi;

Copies, cuts, and pastes cells through the clipboard owned by the surrounding <Diagram clipboard>.

The returned ClipboardApi exposes the underlying ui.Clipboard instance plus graph-bound copyCells, cutCells, pasteCells, and pasteCellsAtPoint helpers that resolve cells (instances, records, ids, or an mvc.Collection) against the diagram graph for you. Like useGraphHistory, the clipboard model lives on the <Diagram>, so this hook throws when the feature was not enabled.

Returns

The ClipboardApi; always present when <Diagram clipboard> is enabled.

clearClipboard

readonly clearClipboard: (options?) => void;

Empties the clipboard, discarding any copied cells.

Parameters

ParameterType
options?BaseOptions

Returns

void


clipboard

readonly clipboard: Clipboard;

The underlying ui.Clipboard instance.


copyCells

readonly copyCells: (selection, options?) => Cell<Attributes<Selectors>, ModelSetOptions>[];

Copies the given cells, together with any links between them, into the clipboard. Accepts cells, records, ids, or an mvc.Collection, and returns the copied cells.

Parameters

ParameterType
selectionCopyInput
options?BaseOptions

Returns

Cell<Attributes<Selectors>, ModelSetOptions>[]


cutCells

readonly cutCells: (selection, options?) => Cell<Attributes<Selectors>, ModelSetOptions>[];

Copies the given cells into the clipboard and removes them, with their links, from the graph. Accepts cells, records, ids, or an mvc.Collection, and returns the cells that were cut.

Parameters

ParameterType
selectionCopyInput
options?CutElementsOptions

Returns

Cell<Attributes<Selectors>, ModelSetOptions>[]


isClipboardEmpty

readonly isClipboardEmpty: (options?) => boolean;

Returns true when the clipboard holds no cells.

Parameters

ParameterType
options?BaseOptions

Returns

boolean


pasteCells

readonly pasteCells: (options?) => Cell<Attributes<Selectors>, ModelSetOptions>[];

Pastes the clipboard contents into the graph and returns the newly added cells.

Parameters

ParameterType
options?PasteCellsOptions

Returns

Cell<Attributes<Selectors>, ModelSetOptions>[]


pasteCellsAtPoint

readonly pasteCellsAtPoint: (point, options?) => Cell<Attributes<Selectors>, ModelSetOptions>[];

Pastes the clipboard contents into the graph, positioned so a chosen point of the cells' bounding box lands at the given point - by default the box is centered on the point; pass options.origin to anchor a different bbox point. Returns the newly added cells.

Parameters

ParameterType
pointPlainPoint
options?PasteCellsAtPointOptions

Returns

Cell<Attributes<Selectors>, ModelSetOptions>[]

See

Clipboard

Throws

When the surrounding <Diagram> does not enable clipboard.

Example

import { useClipboard, useSelectionCollection } from '@joint/react-plus';

// Mount inside a <Diagram clipboard> to copy and paste the current selection.
function ClipboardControls() {
const { copyCells, pasteCells, isClipboardEmpty } = useClipboard();
const { collection } = useSelectionCollection();
return (
<>
<button onClick={() => copyCells(collection)}>Copy</button>
<button disabled={isClipboardEmpty()} onClick={() => pasteCells()}>Paste</button>
</>
);
}