{
const wrapper = d3.select(DOM.element("div"));
const svg = wrapper.append("svg")
.attr("width", mapWidth)
.attr("height", mapHeight);
const g = svg.append("g");
g.selectAll("path")
.data(geoJsonUsa.features)
.enter().append("path")
.attr("fill", "#eee")
.attr("stroke", "#bbb")
.attr("d", d3.geoPath(projection));
const bar = svg.append("g")
.attr("class", "scale-bar-wrapper")
.call(scaleBarZoom);
svg.call(d3.zoom()
.scaleExtent([1, 10])
.translateExtent([[0, 0], [mapWidth, mapHeight]])
.on("zoom", event => {
const t = event.transform;
g.attr("transform", t);
scaleBarZoom.zoomFactor(t.k);
bar.call(scaleBarZoom);
})
);
wrapper.append("div")
.style("font-family", "sans-serif")
.style("font-size", "13px")
.style("color", "#555")
.text("You can zoom and pan this map.");
return wrapper.node();
}