function animate(time, nodesToAdd, svg) {
if (!config.startTime) {
config.startTime = time;
}
const progress = time - config.startTime;
const nodes = simulation.nodes()
update(svg, nodes, 'transition_by_default', {DURATION: 350})
const newNodes = [];
for (let i = 0; i < nodesToAdd.length; i++) {
const node = nodesToAdd[i];
if (node.delay < progress) {
newNodes.push(node)
nodesToAdd.splice(i, 1);
i--;
}
}
simulation.nodes(nodes.concat(newNodes))
.alpha(defaults.ALPHA)
.tick();
config.ticks++;
if (config.ticks < 500 || nodesToAdd.length > 0) {
config.animReqId = requestAnimationFrame((t) => animate(t, nodesToAdd, svg));
}
}