chartAnimate = {
const wrapper = d3.create('div')
.style('height', `${height}px`)
.style('width', `${width}px`);
const handleNewLength = (newLength) => {
const newData = data.slice(0, newLength);
wrapper.selectAll('div')
.data(newData, d => d[0])
.join(
enter => enter.append('div')
.style('left', d => d.targetLeft)
.style('top', 0)
.transition()
.ease(d3.easeBounceOut)
.duration(3000)
.style('top', d => `${height-10-textSizeScale(d[1])}px`),
update => update,
exit => exit.remove()
)
.attr('width', `400px`)
.style('position', 'absolute')
.style('font-size', d => `${textSizeScale(d[1])}px`)
.attr('text-align', 'center')
.text(d => d[0]);
}
return Object.assign(wrapper.node(), { handleNewLength });
}