function hover(g, svg) {
const tooltip = new Tooltip();
g
.style("cursor", "pointer")
.on("touchstart", event => event.preventDefault())
.on("pointerenter", (event, d) => {
tooltip.position(...tooltipOffset(tooltip, d3.pointer(event), width, height));
const path = d.names.join(" → ");
tooltip.show(`${path}`, tooltipKeyValue(tooltipKey, formatTooltipValue(d.value), d));
})
.on("pointermove", function(event, d) {
const path = d.names.join(" → ");
tooltip.show(`${path}`, tooltipKeyValue(tooltipKey, formatTooltipValue(d.value), d));
let [x, y] = tooltipOffset(tooltip, d3.pointer(event), width, height);
tooltip.position(x, y);
this.releasePointerCapture(event.pointerId);
g.filter(d => d.names.join(" → ") === path)
.attr("stroke-opacity", 1);
})
.on("pointerout", () => {
tooltip.hide();
g.attr("stroke-opacity", 0.7);
});
svg.append(() => tooltip.node);
}