in src/visual.ts [736:760]
private wrap(text, width): void {
text.each(function () {
let text: Selection<D3Element> = d3.select(this);
let words: string[] = text.text().split(/\s+/).reverse();
let word: string;
let line: string[] = [];
let lineNumber: number = 0;
let lineHeight: number = 1.1; // ems
let x: string = text.attr(TableHeatMap.AttrX);
let y: string = text.attr(TableHeatMap.AttrY);
let dy: number = parseFloat(text.attr(TableHeatMap.AttrDY));
let tspan: Selection<any> = text.text(null).append(TableHeatMap.HtmlObjTspan).attr(TableHeatMap.AttrX, x).attr(TableHeatMap.AttrY, y).attr(TableHeatMap.AttrDY, dy + "em");
while (word = words.pop()) {
line.push(word);
tspan.text(line.join(" "));
let tspannode: any = tspan.node(); // Fixing Typescript error: Property 'getComputedTextLength' does not exist on type 'Element'.
if (tspannode.getComputedTextLength() > width) {
line.pop();
tspan.text(line.join(" "));
line = [word];
tspan = text.append(TableHeatMap.HtmlObjTspan).attr(TableHeatMap.AttrX, x).attr(TableHeatMap.AttrY, y).attr(TableHeatMap.AttrDY, ++lineNumber * lineHeight + dy + "em").text(word);
}
}
});
}