module import { Attributes } from "graphology-types" ; import drawLabel from "./rendering/canvas/label" ; import drawHover from "./rendering/canvas/hover" ; import drawEdgeLabel from "./rendering/canvas/edge-label" ; import { EdgeDisplayData , NodeDisplayData } from "./types" ; import CircleNodeProgram from "./rendering/webgl/programs/node.fast" ; import LineEdgeProgram from "./rendering/webgl/programs/edge" ; import ArrowEdgeProgram from "./rendering/webgl/programs/edge.arrow" ; import { EdgeProgramConstructor } from "./rendering/webgl/programs/common/edge" ; import { NodeProgramConstructor } from "./rendering/webgl/programs/common/node" ; export function validateSettings ( settings ) { if ( typeof settings . labelDensity !== "number" || settings . labelDensity < 0 ) { throw new Error ( "Settings: invalid `labelDensity`. Expecting a positive number." ) ; } const { minCameraRatio , maxCameraRatio } = settings ; if ( typeof minCameraRatio === "number" && typeof maxCameraRatio === "number" && maxCameraRatio < minCameraRatio ) { throw new Error ( "Settings: invalid camera ratio boundaries. Expecting `maxCameraRatio` to be greater than `minCameraRatio`." ) ; } } /**
 * Sigma.js settings
 * =================================
 */ export interface Settings { hideEdgesOnMove : boolean ; hideLabelsOnMove : boolean ; renderLabels : boolean ; renderEdgeLabels : boolean ; enableEdgeClickEvents : boolean ; enableEdgeWheelEvents : boolean ; enableEdgeHoverEvents : boolean | "debounce" ; defaultNodeColor : string ; defaultNodeType : string ; defaultEdgeColor : string ; defaultEdgeType : string ; labelFont : string ; labelSize : number ; labelWeight : string ; labelColor : { attribute : string ; color ? : string ; } | { color : string ; attribute ? : undefined ; } ; edgeLabelFont : string ; edgeLabelSize : number ; edgeLabelWeight : string ; edgeLabelColor : { attribute : string ; color ? : string ; } | { color : string ; attribute ? : undefined ; } ; stagePadding : number ; labelDensity : number ; labelGridCellSize : number ; labelRenderedSizeThreshold : number ; nodeReducer : null | ( ( node : string , data : Attributes ) => Partial < NodeDisplayData > ) ; edgeReducer : null | ( ( edge : string , data : Attributes ) => Partial < EdgeDisplayData > ) ; zIndex : boolean ; minCameraRatio : null | number ; maxCameraRatio : null | number ; labelRenderer : typeof drawLabel ; hoverRenderer : typeof drawHover ; edgeLabelRenderer : typeof drawEdgeLabel ; nodeProgramClasses : { [ key ] : NodeProgramConstructor ; } ; edgeProgramClasses : { [ key ] : EdgeProgramConstructor ; } ; } export const DEFAULT_SETTINGS = { hideEdgesOnMove : false , hideLabelsOnMove : false , renderLabels : true , renderEdgeLabels : false , enableEdgeClickEvents : false , enableEdgeWheelEvents : false , enableEdgeHoverEvents : false , 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 , labelDensity : 0.07 , labelGridCellSize : 60 , labelRenderedSizeThreshold : 6 , nodeReducer : null , edgeReducer : null , zIndex : false , minCameraRatio : null , maxCameraRatio : null , labelRenderer : drawLabel , hoverRenderer : drawHover , edgeLabelRenderer : drawEdgeLabel , nodeProgramClasses : { circle : CircleNodeProgram , } , edgeProgramClasses : { arrow : ArrowEdgeProgram , line : LineEdgeProgram , } , } ;