UNPKG

react-sigma

Version:

Lightweight but powerful library for drawing network graphs built on top of SigmaJS

69 lines (55 loc) 2.42 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _react = _interopRequireDefault(require("react")); require("../sigma/sigma.plugins.dragNodes"); var _propTypes = _interopRequireDefault(require("prop-types")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } /** * * DragNodes component, exposing the dragNodes plugin. * * When this plugin is active, individual nodes can be dragged around on * the canvas. The plugin fires various events during dragging and dropping. * * This plugin is not compatible with the WebGL renderer. * * @param {Sigma$EventHandler} onStartdrag provide callback for "startdrag" event, fired at the beginning of the drag. * @param {Sigma$EventHandler} onDrag provide callback for "drag" event, fired while the node is dragged. * @param {Sigma$EventHandler} onDrop provide callback for "drop" event, fired at the end of the drag if the node has been dragged. * @param {Sigma$EventHandler} onDragend provide callback for "dragend" event, fired at the end of the drag. * **/ class DragNodes extends _react.default.Component { constructor(props) { super(props); _defineProperty(this, "render", () => null); if (this.props.sigma) { const dragListener = sigma.plugins.dragNodes(this.props.sigma, this.props.sigma.renderers[0]); DragNodes.bindHandlers(props, dragListener); } } static bindHandlers(handlers, dragListener) { // Adapted from Sigma component ["startdrag", "drag", "drop", "dragend"].forEach(event => { let handler = "on" + event[0].toUpperCase() + event.substr(1); if (handlers[handler]) { dragListener.bind(event, handlers[handler]); } }); } } _defineProperty(DragNodes, "propTypes", { sigma: function () { return (typeof sigma === "function" ? _propTypes.default.instanceOf(sigma) : _propTypes.default.any).apply(this, arguments); }, onStartdrag: _propTypes.default.func, onDrag: _propTypes.default.func, onDrop: _propTypes.default.func, onDragend: _propTypes.default.func }); var _default = DragNodes; exports.default = _default;