(feat) Add panning and zooming. Closes #29