class_docstr: Overlay selection display subclass for use with bokeh backend
code: def _build_element_layer(
      self, element, layer_color, layer_alpha, **opts
  ):
      backend_options = Store.options(backend="bokeh")
      el_name = type(element).name
      style_options = backend_options[(el_name,)]["style"]
      allowed = style_options.allowed_keywords
  
      merged_opts = {
          opt_name: layer_alpha
          for opt_name in allowed
          if "alpha" in opt_name
      }
      if el_name in ("HeatMap", "QuadMesh"):
          merged_opts = {
              k: v for k, v in merged_opts.items() if "line_" not in k
          }
      elif layer_color is None:
          # Keep current color (including color from cycle)
          for color_prop in self.color_props:
              current_color = element.opts.get(group="style")[0].get(
                  color_prop, None
              )
              if current_color:
                  merged_opts.update({color_prop: current_color})
      else:
          # set color
          merged_opts.update(self._get_color_kwarg(layer_color))
  
      for opt in ("cmap", "colorbar"):
          if opt in opts and opt in allowed:
              merged_opts[opt] = opts[opt]
  
      filtered = {k: v for k, v in merged_opts.items() if k in allowed}
      plot_opts = Store.lookup_options("bokeh", element, "plot").kwargs
      tools = plot_opts.get("tools", []) + ["box_select"]
      return element.opts(
          backend="bokeh", clone=True, tools=tools, **filtered
      )
  
file_path: holoviews/holoviews/plotting/bokeh/selection.py
imports: import numpy
  from ...core.options import Store
  from ...core.overlay import NdOverlay, Overlay
  from ...selection import OverlaySelectionDisplay, SelectionDisplay
label_desc: Use image node_id 1 for calling the BokehOverlaySelectionDisplay obj's underlying member method code with example usage: obj._build_element_layer(element, layer_color, layer_alpha) and returns: element