# Leaflet mappers.
#
# Mappers translate between the database models and the leaflet definition.
services:
  _defaults:
    public: false


  # Map mapper
  netzmacht.contao_leaflet.mapper.map:
    class: Netzmacht\Contao\Leaflet\Mapper\MapMapper
    arguments:
      - '@netzmacht.contao_toolkit.repository_manager'
    tags:
      - { name: netzmacht.contao_leaflet.mapper }


  # Layer mappers
  netzmacht.contao_leaflet.mapper.tile_layer:
    class: Netzmacht\Contao\Leaflet\Mapper\Layer\TileLayerMapper
    tags:
      - { name: netzmacht.contao_leaflet.mapper }

  netzmacht.contao_leaflet.mapper.provider_layer:
    class: Netzmacht\Contao\Leaflet\Mapper\Layer\ProviderLayerMapper
    arguments:
      - '%netzmacht.contao_leaflet.providers%'
    tags:
      - { name: netzmacht.contao_leaflet.mapper }

  netzmacht.contao_leaflet.mapper.markers_layer:
    class: Netzmacht\Contao\Leaflet\Mapper\Layer\MarkersLayerMapper
    arguments:
      - '@netzmacht.contao_toolkit.repository_manager'
      - '@router'
    tags:
      - { name: netzmacht.contao_leaflet.mapper }

  netzmacht.contao_leaflet.mapper.group_layer:
    class: Netzmacht\Contao\Leaflet\Mapper\Layer\GroupLayerMapper
    arguments:
      - '@netzmacht.contao_toolkit.repository_manager'
    tags:
      - { name: netzmacht.contao_leaflet.mapper }

  netzmacht.contao_leaflet.mapper.vectors_layer:
    class: Netzmacht\Contao\Leaflet\Mapper\Layer\VectorsLayerMapper
    arguments:
      - '@netzmacht.contao_toolkit.repository_manager'
      - '@router'
    tags:
      - { name: netzmacht.contao_leaflet.mapper }

  netzmacht.contao_leaflet.mapper.reference_layer:
    class: Netzmacht\Contao\Leaflet\Mapper\Layer\ReferenceLayerMapper
    arguments:
      - '@netzmacht.contao_toolkit.repository_manager'
    tags:
      - { name: netzmacht.contao_leaflet.mapper }

  netzmacht.contao_leaflet.mapper.overpass_layer:
    class: Netzmacht\Contao\Leaflet\Mapper\Layer\OverpassLayerMapper
    arguments:
      - '@netzmacht.contao_toolkit.repository_manager'
    tags:
      - { name: netzmacht.contao_leaflet.mapper }

  netzmacht.contao_leaflet.mapper.marker_cluster_layer:
    class: Netzmacht\Contao\Leaflet\Mapper\Layer\MarkerClusterLayerMapper
    arguments:
      - '@netzmacht.contao_leaflet.map.assets'
      - '@netzmacht.contao_toolkit.repository_manager'
    tags:
      - { name: netzmacht.contao_leaflet.mapper }

  netzmacht.contao_leaflet.mapper.file_layer:
    class: Netzmacht\Contao\Leaflet\Mapper\Layer\FileLayerMapper
    arguments:
      - '@netzmacht.contao_toolkit.repository_manager'
      - '@netzmacht.contao_toolkit.contao.environment_adapter'
    tags:
      - { name: netzmacht.contao_leaflet.mapper }

  # Control mappers
  netzmacht.contao_leaflet.mapper.zoom_control:
    class: Netzmacht\Contao\Leaflet\Mapper\Control\ZoomControlMapper
    tags:
      - { name: netzmacht.contao_leaflet.mapper }

  netzmacht.contao_leaflet.mapper.scale_control:
    class: Netzmacht\Contao\Leaflet\Mapper\Control\ScaleControlMapper
    tags:
      - { name: netzmacht.contao_leaflet.mapper }

  netzmacht.contao_leaflet.mapper.layers_control:
    class: Netzmacht\Contao\Leaflet\Mapper\Control\LayersControlMapper
    tags:
      - { name: netzmacht.contao_leaflet.mapper }

  netzmacht.contao_leaflet.mapper.attribution_control:
    class: Netzmacht\Contao\Leaflet\Mapper\Control\AttributionControlMapper
    tags:
      - { name: netzmacht.contao_leaflet.mapper }

  netzmacht.contao_leaflet.mapper.loading_control:
    class: Netzmacht\Contao\Leaflet\Mapper\Control\LoadingControlMapper
    arguments:
      - '@netzmacht.contao_toolkit.repository_manager'
    tags:
      - { name: netzmacht.contao_leaflet.mapper }

  netzmacht.contao_leaflet.mapper.fullscreen_control:
    class: Netzmacht\Contao\Leaflet\Mapper\Control\FullscreenControlMapper
    tags:
      - { name: netzmacht.contao_leaflet.mapper }


  # Vector mappers
  netzmacht.contao_leaflet.mapper.polyline:
    class: Netzmacht\Contao\Leaflet\Mapper\Vector\PolylineMapper
    arguments:
      - '@netzmacht.contao_toolkit.repository_manager'
      - '@netzmacht.contao_leaflet.frontend.value_filter'
    tags:
      - { name: netzmacht.contao_leaflet.mapper }

  netzmacht.contao_leaflet.mapper.multi_polyline:
    class: Netzmacht\Contao\Leaflet\Mapper\Vector\MultiPolylineMapper
    arguments:
      - '@netzmacht.contao_toolkit.repository_manager'
      - '@netzmacht.contao_leaflet.frontend.value_filter'
    tags:
      - { name: netzmacht.contao_leaflet.mapper }

  netzmacht.contao_leaflet.mapper.polygon:
    class: Netzmacht\Contao\Leaflet\Mapper\Vector\PolygonMapper
    arguments:
      - '@netzmacht.contao_toolkit.repository_manager'
      - '@netzmacht.contao_leaflet.frontend.value_filter'
    tags:
      - { name: netzmacht.contao_leaflet.mapper }

  netzmacht.contao_leaflet.mapper.multi_polygon:
    class: Netzmacht\Contao\Leaflet\Mapper\Vector\MultiPolygonMapper
    arguments:
      - '@netzmacht.contao_toolkit.repository_manager'
      - '@netzmacht.contao_leaflet.frontend.value_filter'
    tags:
      - { name: netzmacht.contao_leaflet.mapper }

  netzmacht.contao_leaflet.mapper.circle:
    class: Netzmacht\Contao\Leaflet\Mapper\Vector\CircleMapper
    arguments:
      - '@netzmacht.contao_toolkit.repository_manager'
      - '@netzmacht.contao_leaflet.frontend.value_filter'
    tags:
      - { name: netzmacht.contao_leaflet.mapper }

  netzmacht.contao_leaflet.mapper.circle_mapper:
    class: Netzmacht\Contao\Leaflet\Mapper\Vector\CircleMarkerMapper
    arguments:
      - '@netzmacht.contao_toolkit.repository_manager'
      - '@netzmacht.contao_leaflet.frontend.value_filter'
    tags:
      - { name: netzmacht.contao_leaflet.mapper }

  netzmacht.contao_leaflet.mapper.rectangle_mapper:
    class: Netzmacht\Contao\Leaflet\Mapper\Vector\RectangleMapper
    arguments:
      - '@netzmacht.contao_toolkit.repository_manager'
      - '@netzmacht.contao_leaflet.frontend.value_filter'
    tags:
      - { name: netzmacht.contao_leaflet.mapper }


  # Miscellaneous mappers
  netzmacht.contao_leaflet.mapper.popup:
    class: Netzmacht\Contao\Leaflet\Mapper\UI\PopupMapper
    tags:
      - { name: netzmacht.contao_leaflet.mapper }

  netzmacht.contao_leaflet.mapper.image_icon:
    class: Netzmacht\Contao\Leaflet\Mapper\Type\ImageIconMapper
    arguments:
      - '@netzmacht.contao_toolkit.repository_manager'
    tags:
      - { name: netzmacht.contao_leaflet.mapper }

  netzmacht.contao_leaflet.mapper.div_icon:
    class: Netzmacht\Contao\Leaflet\Mapper\Type\DivIconMapper
    tags:
      - { name: netzmacht.contao_leaflet.mapper }

  netzmacht.contao_leaflet.mapper.extra_markers:
    class: Netzmacht\Contao\Leaflet\Mapper\Type\ExtraMarkersIconMapper
    tags:
      - { name: netzmacht.contao_leaflet.mapper }

  netzmacht.contao_leaflet.mapper.fixed_style:
    class: Netzmacht\Contao\Leaflet\Mapper\Style\FixedStyleMapper
    tags:
      - { name: netzmacht.contao_leaflet.mapper }

  netzmacht.contao_leaflet.mapper.marker:
    class: Netzmacht\Contao\Leaflet\Mapper\UI\MarkerMapper
    arguments:
      - '@netzmacht.contao_toolkit.repository_manager'
      - '@netzmacht.contao_leaflet.frontend.value_filter'
    tags:
      - { name: netzmacht.contao_leaflet.mapper }

