import * as _ from 'lodash-es'; // Public utility functions export { isSubgraph, edgeToId, applyStyle, applyClass, applyTransition }; /* * Returns true if the specified node in the graph is a subgraph node. A * subgraph node is one that contains other nodes. */ function isSubgraph(g, v) { return !!g.children(v).length; } function edgeToId(e) { return escapeId(e.v) + ':' + escapeId(e.w) + ':' + escapeId(e.name); } var ID_DELIM = /:/g; function escapeId(str) { return str ? String(str).replace(ID_DELIM, '\\:') : ''; } function applyStyle(dom, styleFn) { if (styleFn) { dom.attr('style', styleFn); } } function applyClass(dom, classFn, otherClasses) { if (classFn) { dom.attr('class', classFn).attr('class', otherClasses + ' ' + dom.attr('class')); } } function applyTransition(selection, g) { var graph = g.graph(); if (_.isPlainObject(graph)) { var transition = graph.transition; if (_.isFunction(transition)) { return transition(selection); } } return selection; }