sigma
Version:
A JavaScript library aimed at visualizing graphs of thousands of nodes and edges.
112 lines (107 loc) • 3.42 kB
JavaScript
import { d as drawStraightEdgeLabel, b as drawDiscNodeLabel, c as drawDiscNodeHover, N as NodeCircleProgram, E as EdgeArrowProgram, e as EdgeRectangleProgram } from '../../dist/index-236c62ad.esm.js';
import { a as assign } from '../../dist/data-11df7124.esm.js';
import '../../dist/inherits-d1a1e29b.esm.js';
import '../../dist/colors-beb06eb2.esm.js';
/**
* Sigma.js Settings
* =================================
*
* The list of settings and some handy functions.
* @module
*/
/**
* Sigma.js settings
* =================================
*/
var DEFAULT_SETTINGS = {
// Performance
hideEdgesOnMove: false,
hideLabelsOnMove: false,
renderLabels: true,
renderEdgeLabels: false,
enableEdgeEvents: false,
// Component rendering
defaultNodeColor: "#999",
defaultNodeType: "circle",
defaultEdgeColor: "#ccc",
defaultEdgeType: "line",
labelFont: "Arial",
labelSize: 14,
labelWeight: "normal",
labelColor: {
color: "#000"
},
edgeLabelFont: "Arial",
edgeLabelSize: 14,
edgeLabelWeight: "normal",
edgeLabelColor: {
attribute: "color"
},
stagePadding: 30,
defaultDrawEdgeLabel: drawStraightEdgeLabel,
defaultDrawNodeLabel: drawDiscNodeLabel,
defaultDrawNodeHover: drawDiscNodeHover,
minEdgeThickness: 1.7,
antiAliasingFeather: 1,
// Mouse and touch settings
dragTimeout: 100,
draggedEventsTolerance: 3,
inertiaDuration: 200,
inertiaRatio: 3,
zoomDuration: 250,
zoomingRatio: 1.7,
doubleClickTimeout: 300,
doubleClickZoomingRatio: 2.2,
doubleClickZoomingDuration: 200,
tapMoveTolerance: 10,
// Size and scaling
zoomToSizeRatioFunction: Math.sqrt,
itemSizesReference: "screen",
autoRescale: true,
autoCenter: true,
// Labels
labelDensity: 1,
labelGridCellSize: 100,
labelRenderedSizeThreshold: 6,
// Reducers
nodeReducer: null,
edgeReducer: null,
// Features
zIndex: false,
minCameraRatio: null,
maxCameraRatio: null,
enableCameraZooming: true,
enableCameraPanning: true,
enableCameraRotation: true,
cameraPanBoundaries: null,
// Lifecycle
allowInvalidContainer: false,
// Program classes
nodeProgramClasses: {},
nodeHoverProgramClasses: {},
edgeProgramClasses: {}
};
var DEFAULT_NODE_PROGRAM_CLASSES = {
circle: NodeCircleProgram
};
var DEFAULT_EDGE_PROGRAM_CLASSES = {
arrow: EdgeArrowProgram,
line: EdgeRectangleProgram
};
function validateSettings(settings) {
if (typeof settings.labelDensity !== "number" || settings.labelDensity < 0) {
throw new Error("Settings: invalid `labelDensity`. Expecting a positive number.");
}
var minCameraRatio = settings.minCameraRatio,
maxCameraRatio = settings.maxCameraRatio;
if (typeof minCameraRatio === "number" && typeof maxCameraRatio === "number" && maxCameraRatio < minCameraRatio) {
throw new Error("Settings: invalid camera ratio boundaries. Expecting `maxCameraRatio` to be greater than `minCameraRatio`.");
}
}
function resolveSettings(settings) {
var resolvedSettings = assign({}, DEFAULT_SETTINGS, settings);
resolvedSettings.nodeProgramClasses = assign({}, DEFAULT_NODE_PROGRAM_CLASSES, resolvedSettings.nodeProgramClasses);
resolvedSettings.edgeProgramClasses = assign({}, DEFAULT_EDGE_PROGRAM_CLASSES, resolvedSettings.edgeProgramClasses);
return resolvedSettings;
}
export { DEFAULT_EDGE_PROGRAM_CLASSES, DEFAULT_NODE_PROGRAM_CLASSES, DEFAULT_SETTINGS, resolveSettings, validateSettings };