| 123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- import util from '../util'
- /*
- * Attaches a text label to the specified root. Handles escape sequences.
- */
- function addTextLabel (root, node) {
- const domNode = root.append('text')
- const lines = processEscapeSequences(node.label).split('\n')
- for (let i = 0; i < lines.length; i += 1) {
- 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) {
- let newText = ''
- let escaped = false
- let ch = null
- for (let i = 0; i < text.length; i += 1) {
- 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
- }
- export default addTextLabel
|