class_docstr: A base class containing for the 2D browser.
  
  This class contains all backend-independent attributes and methods.
class_docstr_tok: ["A","base","class","containing","for","the","2D","browser",".","This","class","contains","all","backend-independent","attributes","and","methods","."]
docstr: Update the data after projectors (or bads) have changed.
docstr_tok: ["Update","the","data","after","projectors","(","or","bads",")","have","changed","."]
code: def _update_projector(self):
      """Update the data after projectors (or bads) have changed."""
      inds = np.where(self.mne.projs_on)[
          0
      ]  # doesn't include "active" projs
      # copy projs from full list (self.mne.projs) to info object
      with self.mne.info._unlock():
          self.mne.info["projs"] = [
              deepcopy(self.mne.projs[ix]) for ix in inds
          ]
      # compute the projection operator
      proj, wh_chs = _setup_plot_projector(
          self.mne.info,
          self.mne.noise_cov,
          True,
          self.mne.use_noise_cov,
      )
      self.mne.whitened_ch_names = list(wh_chs)
      self.mne.projector = proj
  
imports: import importlib
  from abc import ABC, abstractmethod
  from collections import OrderedDict
  from contextlib import contextmanager
  from copy import deepcopy
  from itertools import cycle
  import numpy
  from .._fiff.pick import _DATA_CH_TYPES_SPLIT
  from ..defaults import _handle_default
  from ..filter import _iir_filter, _overlap_add_filter
  from ..fixes import _compare_version
  from ..utils import _check_option, _get_stim_channel, _validate_type, get_config, logger, set_config, verbose
  from .backends._utils import VALID_BROWSE_BACKENDS
  from .utils import _get_color_list, _setup_plot_projector, _show_browser
label_desc: Use image node_id 5 for calling the BrowserBase obj's underlying member method code with example usage: obj._update_projector() without return types