Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time



A Cytoscape.js extension to provide copy-paste utilities, distributed under The MIT License.


Click here for demo


    var cy = cytoscape({...});

    var cb = cy.clipboard(options);

cy.clipboard(options) Initializes extension & sets options.

cb.copy(eles [, id]) Copies eles and returns id of operation. If id is not specified, it will be assigned automatically.

cb.paste([id]) Pastes the copied elements which has id. If id is not specified, it will have the last operation's id.

Default Options

            var options = {

                // The following 4 options allow the user to provide custom behavior to
                // the extension. They can be used to maintain consistency of some data
                // when elements are duplicated.
                // These 4 options are set to null by default. The function prototypes
                // are provided below for explanation purpose only.

                // Function executed on the collection of elements being copied, before
                // they are serialized in the clipboard
                beforeCopy: function(eles) {},
                // Function executed on the clipboard just after the elements are copied.
                // clipboard is of the form: {nodes: json, edges: json}
                afterCopy: function(clipboard) {},
                // Function executed on the clipboard right before elements are pasted,
                // when they are still in the clipboard.
                beforePaste: function(clipboard) {},
                // Function executed on the collection of pasted elements, after they
                // are pasted.
                afterPaste: function(eles) {}

Default Undo Redo Actions"paste"[, { id: idOfOperation }]) Pastes operation. id is optional as is in cb.paste()


  • Cytoscape.js ^2.6.12 || ^3.0.0
  • jQuery ^1.3.2 || ^2.0.0 || ^3.0.0
  • cytoscape-undo-redo ^1.0.8 (optional)

Usage instructions

Download the library:

  • via npm: npm install cytoscape-clipboard,
  • via bower: bower install cytoscape-clipboard, or
  • via direct download in the repository (probably from a tag).

require() the library as appropriate for your project:


var cytoscape = require('cytoscape');
var jquery = require('jquery');
var clipboard = require('cytoscape-clipboard');

clipboard( cytoscape, jquery ); // register extension


require(['cytoscape', 'cytoscape-clipboard'], function( cytoscape, clipboard ){
  clipboard( cytoscape ); // register extension

Plain HTML/JS has the extension registered for you automatically, because no require() is needed.

Publishing instructions

This project is set up to automatically be published to npm and bower. To publish:

  1. Set the version number environment variable: export VERSION=1.2.3
  2. Publish: gulp publish
  3. If publishing to bower for the first time, you'll need to run bower register cytoscape-clipboard