code: def viewbox_mouse_event(self, event):
          
          if event.handled or not self.interactive:
              return
  
          # Scrolling
          BaseCamera.viewbox_mouse_event(self, event)
  
          if event.type == 'mouse_wheel':
              center = self._scene_transform.imap(event.pos)
              self.zoom((1 + self.zoom_factor) ** (-event.delta[1] * 30), center)
              event.handled = True
  
          elif event.type == 'mouse_move':
              if event.press_event is None:
                  return
  
              modifiers = event.mouse_event.modifiers
              p1 = event.mouse_event.press_event.pos
              p2 = event.mouse_event.pos
  
              if 1 in event.buttons and not modifiers:
                  # Translate
                  p1 = np.array(event.last_event.pos)[:2]
                  p2 = np.array(event.pos)[:2]
                  p1s = self._transform.imap(p1)
                  p2s = self._transform.imap(p2)
                  self.pan(p1s-p2s)
                  event.handled = True
              elif 2 in event.buttons and not modifiers:
                  # Zoom
                  p1c = np.array(event.last_event.pos)[:2]
                  p2c = np.array(event.pos)[:2]
                  scale = ((1 + self.zoom_factor) **
                           ((p1c-p2c) * np.array([1, -1])))
                  center = self._transform.imap(event.press_event.pos[:2])
                  self.zoom(scale, center)
                  event.handled = True
              else:
                  event.handled = False
          elif event.type == 'mouse_press':
              # accept the event if it is button 1 or 2.
              # This is required in order to receive future events
              event.handled = event.button in [1, 2]
          else:
              event.handled = False
docs: The SubScene received a mouse event; update transform
          accordingly.
  
          Parameters
          ----------
          event : instance of Event
              The event.