forceX = d => {
if (target == "centroid") {
return getCenter(d.state)[0];
} else if (target == "lean") {
let lean = leaningsByState.get(getState(d.state));
if (!lean) return width / 2;
if (lean.party == "D") {
return d3
.scaleLinear()
.domain(demExtent)
.range([width / 2, margin.left])(lean.value);
} else if (lean.party == "R") {
return d3
.scaleLinear()
.domain(repExtent)
.range([width / 2, width - margin.right])(lean.value);
}
} else if (target == "cartogram") {
let c = cartogramByState.get(getState(d.state));
return margin.left + x_column(c) + state_size;
} else if (target == "results2016") {
let c = cartogramByState.get(getState(d.state));
let r = results2016ByState.get(c.state_postal);
let lean = leaningsByState.get(getState(d.state));
if (!lean) return width / 2;
if (!r) return width / 2;
if (r.electoral_R) {
return d3
.scaleLinear()
.domain(repExtent)
.range([width / 2 + width / 6, width - margin.right - width / 10])(
lean.value
);
} else {
return d3
.scaleLinear()
.domain(demExtent)
.range([width / 2 - width / 6, margin.left + width / 10])(lean.value);
}
}
return d.tx;
}