Copy & Paste
JointJS+ provides a Clipboard plugin that enables the ability to copy and paste cells.
Installation
Access Clipboard via the ui namespace, and create an instance.
import { ui } from '@joint/plus';
const clipboard = new ui.Clipboard({ useLocalStorage: false });
There is also a UMD version available
Include joint.ui.clipboard.js in your HTML:
<script src="joint.js"></script>
<script src="joint.ui.clipboard.js"></script>
Access Clipboard through the joint.ui namespace:
const clipboard = new joint.ui.Clipboard({ useLocalStorage: false });
How does Clipboard work?
Clipboard enables the ability for users to copy and paste JointJS cells. Optionally, clipboard also supports storing
cells in HTML 5 localStorage so that the copy and pasting of cells works despite a browser tab being refreshed or
closed/reopened. Additionally, clipboard is also able to copy cells from one paper and paste them to another. However,
the determination of the targeted paper is left to the application layer.
Clipboard Setup
After creating an instance of Clipboard, the next step is hooking these methods to relevant user events.
import { ui } from '@joint/plus';
const clipboard = new ui.Clipboard({ useLocalStorage: false });
const selection = new ui.Selection({ paper: paper });
const keyboard = new ui.Keyboard;
keyboard.on('ctrl+c', () => clipboard.copyElements(selection.collection, paper.model));
keyboard.on('ctrl+x', () => clipboard.cutElements(selection.collection, paper.model));
keyboard.on('ctrl+v', () => clipboard.pasteCells(paper.model));
Note that the selection.collection is an mvc.Collection that stores the selected elements. The clipboard is probably
the best when used in combination with the Selection plugin.