function LayerGroupSelectorFactory()

in src/components/side-panel/map-style-panel/map-layer-selector.js [58:114]


function LayerGroupSelectorFactory() {
  const LayerGroupSelector = ({layers, editableLayers, onChange, topLayers}) => (
    <StyledInteractionPanel className="map-style__layer-group__selector">
      <div className="layer-group__header">
        <PanelLabel>
          <FormattedMessage id={'mapLayers.title'} />
        </PanelLabel>
      </div>
      <PanelContent className="map-style__layer-group">
        {editableLayers.map(slug => (
          <StyledLayerGroupItem className="layer-group__select" key={slug}>
            <PanelLabelWrapper>
              <PanelHeaderAction
                className="layer-group__visibility-toggle"
                id={`${slug}-toggle`}
                tooltip={layers[slug] ? 'tooltip.hide' : 'tooltip.show'}
                onClick={() =>
                  onChange({
                    visibleLayerGroups: {
                      ...layers,
                      [slug]: !layers[slug]
                    }
                  })
                }
                IconComponent={layers[slug] ? EyeSeen : EyeUnseen}
                active={layers[slug]}
                flush
              />
              <LayerLabel active={layers[slug]}>
                <FormattedMessage id={`mapLayers.${camelize(slug)}`} />
              </LayerLabel>
            </PanelLabelWrapper>
            <CenterFlexbox className="layer-group__bring-top">
              <PanelHeaderAction
                id={`${slug}-top`}
                tooltip="tooltip.moveToTop"
                disabled={!layers[slug]}
                IconComponent={Upload}
                active={topLayers[slug]}
                onClick={() =>
                  onChange({
                    topLayerGroups: {
                      ...topLayers,
                      [slug]: !topLayers[slug]
                    }
                  })
                }
              />
            </CenterFlexbox>
          </StyledLayerGroupItem>
        ))}
      </PanelContent>
    </StyledInteractionPanel>
  );

  return LayerGroupSelector;
}