drawGraphOnDemand = {
return async (graph) => {
const canvas = createCanvas();
invalidation.then(() => {
canvas.destroy();
graph.onChanged = () => {};
});
await canvas.ready;
graph.getAllEdges().forEach((edge) => {
drawEdge(canvas, edge);
});
graph.getAllNodes().forEach((node) => {
drawNode(canvas, node);
});
graph.onChanged = (event) => {
event.changes.forEach((change) => {
if (change.type === "NodeAdded") {
const node = change.value;
drawNode(canvas, node);
} else if (change.type === "NodeRemoved") {
const node = change.value;
canvas.document.getElementById(node.id).remove();
} else if (change.type === "EdgeAdded") {
const edge = change.value;
drawEdge(canvas, edge);
} else if (change.type === "EdgeRemoved") {
const edge = change.value;
canvas.document.getElementById(edge.id).remove();
}
});
};
return canvas.getConfig().container;
};
}