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.