modules/actions/scale.js (20 lines of code) (raw):
import { utilGetAllNodes } from '@id-sdk/util';
export function actionScale(ids, pivotLoc, scaleFactor, projection) {
return function(graph) {
return graph.update(function(graph) {
let point, radial;
utilGetAllNodes(ids, graph).forEach(function(node) {
point = projection(node.loc);
radial = [
point[0] - pivotLoc[0],
point[1] - pivotLoc[1]
];
point = [
pivotLoc[0] + (scaleFactor * radial[0]),
pivotLoc[1] + (scaleFactor * radial[1])
];
graph = graph.replace(node.move(projection.invert(point)));
});
});
};
}