Severian's picture
Upload 7464 files
c211499
raw
history blame contribute delete
825 Bytes
import * as util from '../util.js';
export { addHtmlLabel };
function addHtmlLabel(root, node) {
var fo = root.append('foreignObject').attr('width', '100000');
var div = fo.append('xhtml:div');
div.attr('xmlns', 'http://www.w3.org/1999/xhtml');
var label = node.label;
switch (typeof label) {
case 'function':
div.insert(label);
break;
case 'object':
// Currently we assume this is a DOM object.
div.insert(function () {
return label;
});
break;
default:
div.html(label);
}
util.applyStyle(div, node.labelStyle);
div.style('display', 'inline-block');
// Fix for firefox
div.style('white-space', 'nowrap');
var client = div.node().getBoundingClientRect();
fo.attr('width', client.width).attr('height', client.height);
return fo;
}