Canvas renderer now uses multiple canvas layers for performance; selection box placed in top layer. Layers only redrawn when they need to be. Architecture for layering completed. Code for separating dragged nodes to separate layer added, but awaits a function to find the edges E adjacent to a given nodeset N in O(e+n) time. This can be done with a hashtable given a way to obtain the connecting nodes for a given edge in O(1) time.
Canvas renderer now uses multiple canvas layers for performance; selection box placed in top layer. Layers only redrawn when they need to be. Architecture for layering completed. Code for separating dragged nodes to separate layer added, but awaits a function to find the edges E adjacent to a given nodeset N in O(e+n) time. This can be done with a hashtable given a way to obtain the connecting nodes for a given edge in O(1) time.

KonstantinShemyak/cytoscape.js,rlugojr/cytoscape.js,cytoscape/cytoscape.js,KonstantinShemyak/cytoscape.js,cytoscape/cytoscape.js,soomin-maeng/cytoscape.js,rlugojr/cytoscape.js,soomin-maeng/cytoscape.js