class_docstr: Create a Layer Control with groups of overlays.
  
  Parameters
  ----------
  groups : dict
        A dictionary where the keys are group names and the values are lists
        of layer objects.
        e.g. {
            "Group 1": [layer1, layer2],
            "Group 2": [layer3, layer4]
          }
  exclusive_groups: bool, default True
       Whether to use radio buttons (default) or checkboxes.
       If you want to use both, use two separate instances of this class.
  **kwargs
      Additional (possibly inherited) options. See
      https://leafletjs.com/reference.html#control-layers
code: def __init__(self, groups, exclusive_groups=True, **kwargs):
      super().__init__()
      self._name = "GroupedLayerControl"
      self.options = parse_options(**kwargs)
      if exclusive_groups:
          self.options["exclusiveGroups"] = list(groups.keys())
      self.layers_untoggle = set()
      self.grouped_overlays = {}
      for group_name, sublist in groups.items():
          self.grouped_overlays[group_name] = {}
          for element in sublist:
              self.grouped_overlays[group_name][
                  element.layer_name
              ] = element.get_name()
              if not element.show:
                  self.layers_untoggle.add(element.get_name())
              # make sure the elements used in GroupedLayerControl
              # don't show up in the regular LayerControl.
              element.control = False
          if exclusive_groups:
              # only enable the first radio button
              for element in sublist[1:]:
                  self.layers_untoggle.add(element.get_name())
  
imports: from branca.element import MacroElement
  from jinja2 import Template
  from folium.elements import JSCSSMixin
  from folium.utilities import parse_options
label_desc: Use image node_id 1 to create a new GroupedLayerControl object from inherited base classes: JSCSSMixin, MacroElement with example: obj = GroupedLayerControl(groups, exclusive_groups)