08-27-周三_17-09-29
This commit is contained in:
45
node_modules/dagre-d3-renderer/lib/label/add-text-label.js
generated
vendored
Normal file
45
node_modules/dagre-d3-renderer/lib/label/add-text-label.js
generated
vendored
Normal file
@@ -0,0 +1,45 @@
|
||||
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
|
Reference in New Issue
Block a user