<div id="sigma-container"></div>
import Graph from "graphology";
import Sigma from "sigma";
import { DEFAULT_STYLES } from "sigma/types";
import { registerControls } from "../_controls";
const container = document.getElementById("sigma-container") as HTMLElement;
const { fontFamily, baseLabelSize, labelSizeIncrement, labelAngle } = registerControls({
{ label: "Sans-serif", value: "sans-serif" },
{ label: "Serif", value: "serif" },
baseLabelSize: { type: "number", label: "Base label size", default: 8, min: 4, max: 48, step: 1 },
labelSizeIncrement: { type: "number", label: "Label size increment", default: 6, min: 0, max: 20, step: 1 },
labelAngle: { type: "number", label: "Label angle (°)", default: 0, min: -180, max: 180, step: 5 },
const graph = new Graph();
for (let i = 0; i < NODE_COUNT; i++) {
const size = baseLabelSize + i * labelSizeIncrement;
graph.addNode(`node-${i}`, {
new Sigma(graph, container, {
labelVisibility: "visible",
backdropVisibility: "visible",
labelSize: { attribute: "labelSize" },
labelAngle: () => (labelAngle * Math.PI) / 180,
itemSizesReference: "positions",
zoomToSizeRatioFunction: (x: number) => x,