counts = {
const counts = d3.rollup(data, d => d.length, d => d);
if (counts.size > maxItems) {
const sorted = Array.from(counts).sort((a,b) => d3.descending(a[1], b[1]));
const keysToRemove = new Set(sorted.slice(maxItems).map(d => d[0]));
const otherCount = d3.sum(sorted.filter(d => keysToRemove.has(d[0])).map(d => d[1]));
keysToRemove.forEach(k => counts.delete(k));
counts.set(otherName, otherCount);
}
return counts;
}