UNPKG

sigma

Version:

A JavaScript library dedicated to graph drawing.

57 lines (56 loc) 1.91 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.animateNodes = exports.ANIMATE_DEFAULTS = void 0; var index_1 = require("./index"); var easings_1 = __importDefault(require("./easings")); exports.ANIMATE_DEFAULTS = { easing: "quadraticInOut", duration: 150, }; /** * Function used to animate the nodes. */ function animateNodes(graph, targets, opts, callback) { var options = Object.assign({}, exports.ANIMATE_DEFAULTS, opts); var easing = typeof options.easing === "function" ? options.easing : easings_1.default[options.easing]; var start = Date.now(); var startPositions = {}; for (var node in targets) { var attrs = targets[node]; startPositions[node] = {}; for (var k in attrs) startPositions[node][k] = graph.getNodeAttribute(node, k); } var frame = null; var step = function () { var p = (Date.now() - start) / options.duration; if (p >= 1) { // Animation is done for (var node in targets) { var attrs = targets[node]; for (var k in attrs) graph.setNodeAttribute(node, k, attrs[k]); } if (typeof callback === "function") callback(); return; } p = easing(p); for (var node in targets) { var attrs = targets[node]; var s = startPositions[node]; for (var k in attrs) graph.setNodeAttribute(node, k, attrs[k] * p + s[k] * (1 - p)); } frame = index_1.requestFrame(step); }; step(); return function () { if (frame) index_1.cancelFrame(frame); }; } exports.animateNodes = animateNodes;