created interactivity extensions for visualizer

ported the existing implementation, with some adjustments

test coverage is very much rudimentary, with hover and zoom not being
covered at all

note that this also introduces assumptions about the provider API, which
is yet to be implemented