Diagramo-editor
A canvas backed vector-graphic diagram editing tool, with event listeners. Based on (Diagramo by Scriptoid)http://diagramo.com/.A Fully extendable library, define your own figures, primitives, events, etc.
Install
npm install diagramo-editor
Usage
Diagramo is a (primarily) client side library for diagram-editing. It can be used on the server with third-party canvas support.Basic usage/setup
var DIAGRAMO = require("diagramo-core");
var canvas = document.createElement("canvas");
canvas.id = "MyCanvas";
canvas.width = 100;
canvas.height = 100;
document.body.appendChild(canvas);
var diagramo = DIAGRAMO.getDiagramo(canvas);
var circle = new DIAGRAMO.SETS.basic.Circle(10,10);
var con = new DIAGRAMO.CONNECTORS.StraightConnector(new DIAGRAMO.Point(0,0), new DIAGRAMO.Point(10,10));
diagramo.addFigure(circle);
diagramo.addConnector(con);
diagramo.repaint();
Clicking on a figure/connector will select it and display a property editor with extendable properties. Dragging a connectionPoint will allow connecting figures to connectors.
Events
In addition to the basic events provided by diagramo-core, connection points expose: - beforeConnect - afterConnecttext.mouseDown(function(event){
this.style.fillStyle = "#ff0000";
});
Figures
Provides one set of basic figures underDIAGRAMO.SETS.basic
- Circle
- Diamond
- Ellipse
- Hexagon
- Image (requires dropzone)
- Octogon
- Parallelogram
- Pentagon
- Rectangle
- RightTriangle
- RoundedRectangle
- Square
- Text
- TriangleConnectors
Provides 4 types of Connectors underDIAGRAMO.CONNECTORS
- StraightConnector (point-to-point)
- MultiPointConnector (point-to-point)
- RightAngleConnector (best-path)
- OrganicConnector (best-path)Each connector by default exposes several properties to the editor
line style: - Solid - Dotted - Dashed - Squiggly (via a line-delegate)end shape (
DIAGRAMO.SETS.connectors
):
- Arrow
- TriangleConnectionPoint
Figures and connectors both provide ConnectionPoints which can be used to connect a figure to a connector. A figures connection points are visible whenever aProperty Editor
Placeholder - will improve property editor support in the near future.Currently the property editor is hard coded to expect a
<div id="editor"></div>
Styling can be achieved via CSS