class_docstr: Mixin class for Cartesian 2D elements to add basic support for
  SelectionExpr streams.
class_docstr_tok: ["Mixin","class","for","Cartesian","2D","elements","to","add","basic","support","for","SelectionExpr","streams","."]
code: def _get_selection_expr_for_stream_value(self, **kwargs):
      from .geom import Rectangles
      from .path import Path
  
      if (
          kwargs.get("bounds") is None
          and kwargs.get("x_selection") is None
          and kwargs.get("geometry") is None
          and not kwargs.get("index")
      ):
          return None, None, Rectangles([]) * Path([])
  
      index_cols = kwargs.get("index_cols")
  
      dims = self._get_selection_dims()
      if kwargs.get("index") is not None and index_cols is not None:
          expr, _, _ = self._get_index_selection(
              kwargs["index"], index_cols
          )
          return expr, None, self._empty_region()
      elif self._skip(**kwargs):
          return None
      elif "bounds" in kwargs:
          expr, bbox, region = self._get_bounds_selection(
              *dims, **kwargs
          )
          return (
              expr,
              bbox,
              None if region is None else region * Path([]),
          )
      elif "geometry" in kwargs:
          expr, bbox, region = self._get_lasso_selection(
              *dims, **kwargs
          )
          return (
              expr,
              bbox,
              None if region is None else Rectangles([]) * region,
          )
  
imports: import sys
  import numpy
  import pandas
  from ..core import Dataset, NdOverlay, util
  from ..streams import Lasso, Selection1D, SelectionXY
  from ..util.transform import dim
  from .annotation import HSpan, VSpan
label_desc: Use image node_id 8 for calling the Selection2DExpr obj's underlying member method code with example usage: obj._get_selection_expr_for_stream_value() and returns: None,  None,  unknown, expr,  None,  self, None, expr,  bbox,  unknown, expr,  bbox,  unknown