Add tooltip `viewport` option, respect bounds of the viewport