Maybe:

var zoomLevel;
if (evt.type === 'overflow') {
  zoomLevel = some maths...
} else if (evt.type === 'underflow') {
  zoomLevel = some other maths...
}

if (zoomLevel < MIN_ZOOM_LEVEL) {
  zoomLevel = MIN_ZOOM_LEVEL;
  toggle a class to apply the ellipsis and have margins at 0 
} else {
  toggle a class to unapply the ellipsis and with specific margins /scale based on the zoom level
}

If you do all this stuff on CSS based on some classes then you don't need to expose the BUTTON_WIDTH based to the component. What do you think ?