import * as util from '../util.js'; export { addTextLabel }; /* * Attaches a text label to the specified root. Handles escape sequences. */ function addTextLabel(root, node) { var domNode = root.append('text'); var lines = processEscapeSequences(node.label).split('\n'); for (var i = 0; i < lines.length; i++) { domNode .append('tspan') .attr('xml:space', 'preserve') .attr('dy', '1em') .attr('x', '1') .text(lines[i]); } util.applyStyle(domNode, node.labelStyle); return domNode; } function processEscapeSequences(text) { var newText = ''; var escaped = false; var ch; for (var i = 0; i < text.length; ++i) { ch = text[i]; if (escaped) { switch (ch) { case 'n': newText += '\n'; break; default: newText += ch; } escaped = false; } else if (ch === '\\') { escaped = true; } else { newText += ch; } } return newText; }