function dodgeHorizontal(ax, aw, bx, bw, pad) {
const delta = bx - ax;
const space = delta - 0.5 * (aw + bw) - pad;
let a = ax - aw / 2;
let b = bx - bw / 2;
if (delta < 0) {
throw new Error("a must be to the left of b");
}
if (space < 0) {
if (delta < pad) {
a = ax - aw;
b = bx;
}
else if (aw >= bw) {
const aExtra = Math.max(0, Math.min(-space, (aw - bw) / 2));
const abExtra = Math.max(0, -space - aExtra);
a -= aExtra + abExtra / 2;
b += abExtra / 2;
}
else {
const bExtra = Math.max(0, Math.min(-space, (bw - aw) / 2));
const baExtra = Math.max(0, -space - bExtra);
a -= baExtra / 2;
b += bExtra + baExtra / 2;
}
}
return {a, b}
}