Severian's picture
Upload 7464 files
c211499
raw
history blame contribute delete
975 Bytes
import { addHtmlLabel } from './add-html-label.js';
import { addSVGLabel } from './add-svg-label.js';
import { addTextLabel } from './add-text-label.js';
export { addLabel };
function addLabel(root, node, location) {
var label = node.label;
var labelSvg = root.append('g');
// Allow the label to be a string, a function that returns a DOM element, or
// a DOM element itself.
if (node.labelType === 'svg') {
addSVGLabel(labelSvg, node);
} else if (typeof label !== 'string' || node.labelType === 'html') {
addHtmlLabel(labelSvg, node);
} else {
addTextLabel(labelSvg, node);
}
var labelBBox = labelSvg.node().getBBox();
var y;
switch (location) {
case 'top':
y = -node.height / 2;
break;
case 'bottom':
y = node.height / 2 - labelBBox.height;
break;
default:
y = -labelBBox.height / 2;
}
labelSvg.attr('transform', 'translate(' + -labelBBox.width / 2 + ',' + y + ')');
return labelSvg;
}