function hover(segments, svg) {
const tooltip = new Tooltip();
segments
.style("cursor", "pointer")
.on("touchstart", (event) => event.preventDefault())
.on("pointerenter", (event, d) => {
tooltip.position(
...tooltipOffset(tooltip, d3.pointer(event), width / 2, height / 2)
);
const formattedProportion = d3.format(".0%")(d.data[proportion_value]);
tooltip.show(
d.data[key],
tooltipKeyValue(
tooltipKey.toUpperCase(),
formattedProportion +
` (${formatTooltipValue(d.data[value])} ${value_unit})`,
d
)
);
})
.on("pointermove", function (event) {
let [x, y] = tooltipOffset(
tooltip,
d3.pointer(event),
width / 2,
height / 2
);
tooltip.position(x, y);
this.releasePointerCapture(event.pointerId);
})
.on("pointerout", () => tooltip.hide());
svg.append(() => tooltip.node);
}