var SVGChartMixin = { calculateViewBoxWidth: function() { this.setState({ canvasWidth: this.refs.svg.getDOMNode().offsetWidth }); } }; var fontFamily = 'Helvetica Neue, Helvetica, sans-serif', fontSize = 16; function textWidth(str) { var svg = document.createElementNS('http://www.w3.org/2000/svg', "svg"); text = document.createElementNS('http://www.w3.org/2000/svg', "text"); svg.width = 500; svg.height = 500; svg.style.position = 'absolute'; svg.style.left = '-1000px'; text.appendChild(document.createTextNode(str)) text.style.fontFamily = fontFamily; text.style.fontSize = fontSize +'px'; svg.appendChild(text); document.body.appendChild(svg); var box = text.getBBox(); document.body.removeChild(svg); return box.width; }