react-sigma
Version:
Lightweight but powerful library for drawing network graphs built on top of SigmaJS
76 lines (61 loc) • 3.36 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _react = _interopRequireDefault(require("react"));
require("../sigma/plugins.animate");
require("../sigma/layout.noverlap");
var _ReactSigmaLayoutPlugin = _interopRequireDefault(require("./ReactSigmaLayoutPlugin"));
var _propTypes = _interopRequireDefault(require("prop-types"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
/**
NOverlap component, starts noverlap sigma plugin once component is mounted.
It supposes that sigma graph is already in place, therefore component should not be
mounted while graph is unavailable. It can be used within Sigma component if graph is
preloaded, or within loader component, like LoadJSON.
@param {number} [nodeMargin=5] additional minimum space to apply around each and every node
@param {number} [scaleNodes=1.2] multiplier, larger nodes will have more space around
@param {number} [gridSize=20] number of rows and columns to use when dividing the nodes up into cell
@param {number} [permittedExpansion=1.1] maximum ratio to apply to the bounding box
@param {number} speed larger value increases the speed at the cost of precision
@param {number} maxIterations iterations to run the algorithm for before stopping it
@param {number} easing camera easing type for camera transition
@param {number} duration duration of the transition for the easing method
It accepts all the parameters of sigma.layout.noverlap plugin described on its github page:
[see sigma plugin page for more details](https://github.com/jacomyal/sigma.js/tree/master/plugins/sigma.layout.noverlap)
@example
<Sigma graph={data}>
<NOverlap gridSize={10} maxIterations={100}/>
</Sigma>
**/
const NOverlap = props => {
const s = props.sigma;
if (s) return /*#__PURE__*/_react.default.createElement(_ReactSigmaLayoutPlugin.default, _extends({
start: () => s.startNoverlap(),
config: options => s.configNoverlap(options),
stop: () => !!s && !!s.stopNoverlap && s.stopNoverlap()
}, props));
return null;
};
NOverlap.propTypes = {
nodes: _propTypes.default.arrayOf(function () {
return (typeof Sigma$Node === "function" ? _propTypes.default.instanceOf(Sigma$Node).isRequired : _propTypes.default.any.isRequired).apply(this, arguments);
}),
nodeMargin: _propTypes.default.number,
scaleNodes: _propTypes.default.number,
gridSize: _propTypes.default.number,
permittedExpansion: _propTypes.default.number,
speed: _propTypes.default.number,
maxIterations: _propTypes.default.number,
easing: function () {
return (typeof Sigma$Easing === "function" ? _propTypes.default.instanceOf(Sigma$Easing) : _propTypes.default.any).apply(this, arguments);
},
duration: _propTypes.default.number,
sigma: function () {
return (typeof sigma === "function" ? _propTypes.default.instanceOf(sigma) : _propTypes.default.any).apply(this, arguments);
}
};
var _default = NOverlap;
exports.default = _default;