<div id="sigma-container"></div>
import Graph from "graphology";
import ForceSupervisor from "graphology-layout-force/worker";
import Sigma from "sigma";
import data from "../_data/data.json";
import { DEFAULT_STYLES } from "sigma/types";
const container = document.getElementById("sigma-container") as HTMLElement;
const graph = new Graph();
const renderer = new Sigma(graph, container, {
itemSizesReference: "positions",
getDraggedNodes: (node) => (graph.getNodeAttribute(node, "label").includes("b") ? [] : [node]),
size: (attributes) => attributes.size / 2,
labelVisibility: "visible",
backdropVisibility: "visible",
then: { cursor: "grabbing" },
// Force layout: pin nodes while they are being dragged
const layout = new ForceSupervisor(graph, {
isNodeFixed: (node) => renderer.getNodeState(node).isDragged,